diff --git a/package-lock.json b/package-lock.json index ea0b97f46..a8a5f288a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,28 +8,27 @@ "name": "tutors", "version": "0.0.1", "devDependencies": { - "@auth/core": "^0.37.3", - "@auth/sveltekit": "^1.7.3", - "@floating-ui/dom": "^1.6.12", + "@auth/core": "^0.37.4", + "@auth/sveltekit": "^1.7.4", "@iconify/svelte": "^4.0.2", "@iktakahiro/markdown-it-katex": "^4.0.1", - "@skeletonlabs/skeleton": "^2.10.3", - "@skeletonlabs/tw-plugin": "^0.4.0", + "@skeletonlabs/skeleton": "^3.0.0-next.9", + "@skeletonlabs/skeleton-svelte": "^1.0.0-next.14", "@supabase/supabase-js": "^2.46.1", - "@sveltejs/adapter-auto": "^3.0.0", + "@sveltejs/adapter-auto": "^3.3.1", "@sveltejs/adapter-netlify": "^4.3.6", - "@sveltejs/kit": "^2.0.0", - "@sveltejs/vite-plugin-svelte": "^4.0.0", + "@sveltejs/kit": "^2.8.4", + "@sveltejs/vite-plugin-svelte": "^4.0.2", "@tailwindcss/forms": "^0.5.9", "@tailwindcss/typography": "^0.5.15", - "@types/eslint": "^9.6.0", - "@types/node": "^22.9.0", + "@types/eslint": "^9.6.1", + "@types/node": "^22.10.0", "autoprefixer": "^10.4.20", - "eslint": "^9.7.0", + "eslint": "^9.15.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-svelte": "^2.36.0", + "eslint-plugin-svelte": "^2.46.0", "file-saver": "^2.0.5", - "globals": "^15.0.0", + "globals": "^15.12.0", "highlight.js": "^11.10.0", "markdown-it": "^14.1.0", "markdown-it-anchor": "^9.2.0", @@ -43,15 +42,15 @@ "markdown-it-table-of-contents": "^0.8.0", "partysocket": "^1.0.2", "pdfjs-dist": "^4.8.69", - "prettier": "^3.3.2", - "prettier-plugin-svelte": "^3.2.6", - "prettier-plugin-tailwindcss": "^0.6.5", - "svelte": "^5.0.0", - "svelte-check": "^4.0.0", - "tailwindcss": "^3.4.9", - "typescript": "^5.0.0", - "typescript-eslint": "^8.0.0", - "vite": "^5.0.3" + "prettier": "^3.4.0", + "prettier-plugin-svelte": "^3.3.2", + "prettier-plugin-tailwindcss": "^0.6.9", + "svelte": "^5.2.8", + "svelte-check": "^4.1.0", + "tailwindcss": "^3.4.15", + "typescript": "^5.7.2", + "typescript-eslint": "^8.16.0", + "vite": "^5.4.11" } }, "node_modules/@alloc/quick-lru": { @@ -82,14 +81,13 @@ } }, "node_modules/@auth/core": { - "version": "0.37.3", - "resolved": "https://registry.npmjs.org/@auth/core/-/core-0.37.3.tgz", - "integrity": "sha512-qcffDLwxB9iUYH8GHq68w/KU8jtjAbjjk9xnpoKhjX3+QcntaQ2MKVSkTTocmA6ElpL5vK2xR9CXfQ98dvGnyg==", + "version": "0.37.4", + "resolved": "https://registry.npmjs.org/@auth/core/-/core-0.37.4.tgz", + "integrity": "sha512-HOXJwXWXQRhbBDHlMU0K/6FT1v+wjtzdKhsNg0ZN7/gne6XPsIrjZ4daMcFnbq0Z/vsAbYBinQhhua0d77v7qw==", "dev": true, "license": "ISC", "dependencies": { "@panva/hkdf": "^1.2.1", - "cookie": "1.0.1", "jose": "^5.9.6", "oauth4webapi": "^3.1.1", "preact": "10.24.3", @@ -112,24 +110,14 @@ } } }, - "node_modules/@auth/core/node_modules/cookie": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.1.tgz", - "integrity": "sha512-Xd8lFX4LM9QEEwxQpF9J9NTUh8pmdJO0cyRJhFiDoLTk2eH8FXlRv2IFGYVadZpqI3j8fhNrSdKCeYPxiAhLXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/@auth/sveltekit": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@auth/sveltekit/-/sveltekit-1.7.3.tgz", - "integrity": "sha512-L+sTmbgRqbTi/PEYr8iTswEEeEXTq6DPJRUt62lQq4e9c55WY6I2ZAY60dnKVEmLXQiBWEmABolOGghJz+3Pbw==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@auth/sveltekit/-/sveltekit-1.7.4.tgz", + "integrity": "sha512-jerujN2T6txrVGcblhWrB75sBbtub3v2U1DM9+8W3MOOSfhFdlCLEW+Uow8qAGZzsnTE2WmvcMkXeGd7r2jl5A==", "dev": true, "license": "ISC", "dependencies": { - "@auth/core": "0.37.3", + "@auth/core": "0.37.4", "set-cookie-parser": "^2.7.0" }, "peerDependencies": { @@ -585,9 +573,9 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", - "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", + "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -600,9 +588,9 @@ } }, "node_modules/@eslint/core": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", - "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.9.0.tgz", + "integrity": "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==", "dev": true, "license": "Apache-2.0", "engines": { @@ -610,9 +598,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", - "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dev": true, "license": "MIT", "dependencies": { @@ -647,9 +635,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz", - "integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.15.0.tgz", + "integrity": "sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==", "dev": true, "license": "MIT", "engines": { @@ -667,9 +655,9 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.2.tgz", - "integrity": "sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", + "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -689,17 +677,6 @@ "@floating-ui/utils": "^0.2.8" } }, - "node_modules/@floating-ui/dom": { - "version": "1.6.12", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz", - "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.8" - } - }, "node_modules/@floating-ui/utils": { "version": "0.2.8", "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", @@ -760,9 +737,9 @@ } }, "node_modules/@humanwhocodes/retry": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.0.tgz", - "integrity": "sha512-xnRgu9DxZbkWak/te3fcytNyp8MTbuiZIaueg2rgEvBuN55n04nwLYLU9TX/VVlusc9L2ZNXi99nUFNkHXtr5g==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", + "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1203,33 +1180,58 @@ ] }, "node_modules/@skeletonlabs/skeleton": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@skeletonlabs/skeleton/-/skeleton-2.10.3.tgz", - "integrity": "sha512-O1RecF68zEVvZl3GgRS4emqWMUIQLHvTOFoqGOw/2OXCPE06IxUQrHQf2hnxCPxtGZNXY2YX8UNV38l+eH8GNQ==", + "version": "3.0.0-next.9", + "resolved": "https://registry.npmjs.org/@skeletonlabs/skeleton/-/skeleton-3.0.0-next.9.tgz", + "integrity": "sha512-xZxXkKgdTGeWPVLH7oQEYd7T9yLJ4p9gm8JS7egJzTzR/iC+n52Pez4LzWVYtPo+cUz4HUDEFREuLEeNfzypcg==", "dev": true, "license": "MIT", "dependencies": { - "esm-env": "1.0.0" + "postcss-js": "4.0.1", + "postcss-selector-parser": "^7.0.0" }, "peerDependencies": { - "svelte": "^3.56.0 || ^4.0.0 || ^5.0.0" + "tailwindcss": ">=3.0.0" } }, - "node_modules/@skeletonlabs/skeleton/node_modules/esm-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", - "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==", - "dev": true, - "license": "MIT" + "node_modules/@skeletonlabs/skeleton-svelte": { + "version": "1.0.0-next.14", + "resolved": "https://registry.npmjs.org/@skeletonlabs/skeleton-svelte/-/skeleton-svelte-1.0.0-next.14.tgz", + "integrity": "sha512-sGVzDdhFCdf1u911DDbu2eex+L1bczMGSSWdvy4LbxtPjrFnQUFsN2+6CUteK7PuFuOyIERnS4BWqwSDxk2FNg==", + "dev": true, + "dependencies": { + "@zag-js/accordion": "^0.75.0", + "@zag-js/avatar": "^0.75.0", + "@zag-js/combobox": "^0.75.0", + "@zag-js/dialog": "^0.75.0", + "@zag-js/file-upload": "^0.75.0", + "@zag-js/pagination": "^0.75.0", + "@zag-js/popover": "^0.75.0", + "@zag-js/progress": "^0.75.0", + "@zag-js/radio-group": "^0.75.0", + "@zag-js/rating-group": "^0.75.0", + "@zag-js/slider": "^0.75.0", + "@zag-js/svelte": "^0.75.0", + "@zag-js/switch": "^0.75.0", + "@zag-js/tabs": "^0.75.0", + "@zag-js/tags-input": "^0.75.0", + "@zag-js/tooltip": "^0.75.0" + }, + "peerDependencies": { + "svelte": "^5.0.0" + } }, - "node_modules/@skeletonlabs/tw-plugin": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@skeletonlabs/tw-plugin/-/tw-plugin-0.4.0.tgz", - "integrity": "sha512-v6Y4deBq9ByRx3kTRGgekhhYkWEYgNNNu8UXOwJngCStB7w8SwmbNFSeHkluxMbgCgMnJyp220EMpw9nj/rEsQ==", + "node_modules/@skeletonlabs/skeleton/node_modules/postcss-selector-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", + "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", "dev": true, "license": "MIT", - "peerDependencies": { - "tailwindcss": ">=3.0.0" + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" } }, "node_modules/@supabase/auth-js": { @@ -1342,9 +1344,9 @@ } }, "node_modules/@sveltejs/kit": { - "version": "2.7.5", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.7.5.tgz", - "integrity": "sha512-8WIrVch2Ze2Rq3eIMPTqIIRFPM2zGQcGKHim2z43KVRdgdtYWBugAQ7nemH9ATnzlvbgztk6hwhEZOi8A8ZOPg==", + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.8.4.tgz", + "integrity": "sha512-oDSBHPokbP2iaQlHiEWAkVLsIugsXve8YtABtlyHBUljA63Wgx0UtV8MSOQOGpRft1M+Cd5rzer+0SFlppQwOg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -1375,9 +1377,9 @@ } }, "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-4.0.0.tgz", - "integrity": "sha512-kpVJwF+gNiMEsoHaw+FJL76IYiwBikkxYU83+BpqQLdVMff19KeRKLd2wisS8niNBMJ2omv5gG+iGDDwd8jzag==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-4.0.2.tgz", + "integrity": "sha512-Y9r/fWy539XlAC7+5wfNJ4zH6TygUYoQ0Eegzp0zDDqhJ54+92gOyOX1l4MO1cJSx0O+Gp13YePT5XEa3+kX0w==", "dev": true, "license": "MIT", "dependencies": { @@ -1504,13 +1506,13 @@ "peer": true }, "node_modules/@types/node": { - "version": "22.9.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", - "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", + "version": "22.10.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.0.tgz", + "integrity": "sha512-XC70cRZVElFHfIUB40FgZOBbgJYFKKMa5nb9lxcwYstFG/Mi+/Y0bGS+rs6Dmhmkpq4pnNiLiuZAbc02YCOnmA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.19.8" + "undici-types": "~6.20.0" } }, "node_modules/@types/phoenix": { @@ -1531,17 +1533,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.13.0.tgz", - "integrity": "sha512-nQtBLiZYMUPkclSeC3id+x4uVd1SGtHuElTxL++SfP47jR0zfkZBJHc+gL4qPsgTuypz0k8Y2GheaDYn6Gy3rg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.16.0.tgz", + "integrity": "sha512-5YTHKV8MYlyMI6BaEG7crQ9BhSc8RxzshOReKwZwRWN0+XvvTOm+L/UYLCYxFpfwYuAAqhxiq4yae0CMFwbL7Q==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.13.0", - "@typescript-eslint/type-utils": "8.13.0", - "@typescript-eslint/utils": "8.13.0", - "@typescript-eslint/visitor-keys": "8.13.0", + "@typescript-eslint/scope-manager": "8.16.0", + "@typescript-eslint/type-utils": "8.16.0", + "@typescript-eslint/utils": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -1565,16 +1567,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.13.0.tgz", - "integrity": "sha512-w0xp+xGg8u/nONcGw1UXAr6cjCPU1w0XVyBs6Zqaj5eLmxkKQAByTdV/uGgNN5tVvN/kKpoQlP2cL7R+ajZZIQ==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.16.0.tgz", + "integrity": "sha512-D7DbgGFtsqIPIFMPJwCad9Gfi/hC0PWErRRHFnaCWoEDYi5tQUDiJCTmGUbBiLzjqAck4KcXt9Ayj0CNlIrF+w==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "8.13.0", - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/typescript-estree": "8.13.0", - "@typescript-eslint/visitor-keys": "8.13.0", + "@typescript-eslint/scope-manager": "8.16.0", + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/typescript-estree": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.0", "debug": "^4.3.4" }, "engines": { @@ -1594,14 +1596,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.13.0.tgz", - "integrity": "sha512-XsGWww0odcUT0gJoBZ1DeulY1+jkaHUciUq4jKNv4cpInbvvrtDoyBH9rE/n2V29wQJPk8iCH1wipra9BhmiMA==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.16.0.tgz", + "integrity": "sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/visitor-keys": "8.13.0" + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1612,14 +1614,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.13.0.tgz", - "integrity": "sha512-Rqnn6xXTR316fP4D2pohZenJnp+NwQ1mo7/JM+J1LWZENSLkJI8ID8QNtlvFeb0HnFSK94D6q0cnMX6SbE5/vA==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.16.0.tgz", + "integrity": "sha512-IqZHGG+g1XCWX9NyqnI/0CX5LL8/18awQqmkZSl2ynn8F76j579dByc0jhfVSnSnhf7zv76mKBQv9HQFKvDCgg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.13.0", - "@typescript-eslint/utils": "8.13.0", + "@typescript-eslint/typescript-estree": "8.16.0", + "@typescript-eslint/utils": "8.16.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -1630,6 +1632,9 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, "peerDependenciesMeta": { "typescript": { "optional": true @@ -1637,9 +1642,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.13.0.tgz", - "integrity": "sha512-4cyFErJetFLckcThRUFdReWJjVsPCqyBlJTi6IDEpc1GWCIIZRFxVppjWLIMcQhNGhdWJJRYFHpHoDWvMlDzng==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.16.0.tgz", + "integrity": "sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ==", "dev": true, "license": "MIT", "engines": { @@ -1651,14 +1656,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.13.0.tgz", - "integrity": "sha512-v7SCIGmVsRK2Cy/LTLGN22uea6SaUIlpBcO/gnMGT/7zPtxp90bphcGf4fyrCQl3ZtiBKqVTG32hb668oIYy1g==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.16.0.tgz", + "integrity": "sha512-E2+9IzzXMc1iaBy9zmo+UYvluE3TW7bCGWSF41hVWUE01o8nzr1rvOQYSxelxr6StUvRcTMe633eY8mXASMaNw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/visitor-keys": "8.13.0", + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/visitor-keys": "8.16.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -1706,16 +1711,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.13.0.tgz", - "integrity": "sha512-A1EeYOND6Uv250nybnLZapeXpYMl8tkzYUxqmoKAWnI4sei3ihf2XdZVd+vVOmHGcp3t+P7yRrNsyyiXTvShFQ==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.16.0.tgz", + "integrity": "sha512-C1zRy/mOL8Pj157GiX4kaw7iyRLKfJXBR3L82hk5kS/GyHcOFmy4YUq/zfZti72I9wnuQtA/+xzft4wCC8PJdA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.13.0", - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/typescript-estree": "8.13.0" + "@typescript-eslint/scope-manager": "8.16.0", + "@typescript-eslint/types": "8.16.0", + "@typescript-eslint/typescript-estree": "8.16.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1726,17 +1731,22 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.13.0.tgz", - "integrity": "sha512-7N/+lztJqH4Mrf0lb10R/CbI1EaAMMGyF5y0oJvFoAhafwgiRA7TXyd8TFn8FC8k5y2dTsYogg238qavRGNnlw==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.16.0.tgz", + "integrity": "sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.13.0", - "eslint-visitor-keys": "^3.4.3" + "@typescript-eslint/types": "8.16.0", + "eslint-visitor-keys": "^4.2.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1746,19 +1756,497 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/@zag-js/accordion": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/accordion/-/accordion-0.75.0.tgz", + "integrity": "sha512-ZqwI4/EO6lA8fRSce7MvATDVniea6TruA3XsBeb/KyDVea360laIJYKeo5giZJR5MEsNqOmmDIK2Uzkcq1uUnA==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.75.0", + "@zag-js/core": "0.75.0", + "@zag-js/dom-event": "0.75.0", + "@zag-js/dom-query": "0.75.0", + "@zag-js/types": "0.75.0", + "@zag-js/utils": "0.75.0" + } + }, + "node_modules/@zag-js/anatomy": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/anatomy/-/anatomy-0.75.0.tgz", + "integrity": "sha512-YtVz2387Xy3cXeL86/jWtZ+NT9wojFsXZbOnRoXG5P5QaiD7tKeWYWJZBzxNBPYfWhSy1N93cAxhL65xJah1Qw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@zag-js/aria-hidden": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/aria-hidden/-/aria-hidden-0.75.0.tgz", + "integrity": "sha512-CjZGQycYVNFSYffI7IsBvTd2rLGPTLpJvP9gDAPCR9pQpyTauI2teDi7TZry12Cybmtimj3emq2L23hPcfnm3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "aria-hidden": "1.2.4" + } + }, + "node_modules/@zag-js/auto-resize": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/auto-resize/-/auto-resize-0.75.0.tgz", + "integrity": "sha512-nCP6jIkROG1qW8juBgQZ4WuFhP80ZHq4Vl4h5nTzxvHtePJ6+JG9YyjZWg3CTBaasiLXkcKH33L8Hf2ZQiNuqg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/dom-query": "0.75.0" + } + }, + "node_modules/@zag-js/avatar": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/avatar/-/avatar-0.75.0.tgz", + "integrity": "sha512-20LKdAFi/Nozb526gutfH9nGMk0GEkbCYe0zcBchVm/IC69V3VBttJthc2nVxjaEEdkZ14b2ZTeEtWbRSDbJzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.75.0", + "@zag-js/core": "0.75.0", + "@zag-js/dom-query": "0.75.0", + "@zag-js/types": "0.75.0", + "@zag-js/utils": "0.75.0" + } + }, + "node_modules/@zag-js/collection": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/collection/-/collection-0.75.0.tgz", + "integrity": "sha512-XcUzc7Dqy32CibI1T9Fwfcf3aJuvyD5eMIAnBMCY9ktgImCjbG3q9pvG+2G9wTmiPow+dJWbb0ZTTaevhY3asw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/utils": "0.75.0" + } + }, + "node_modules/@zag-js/combobox": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/combobox/-/combobox-0.75.0.tgz", + "integrity": "sha512-5rxQGmMTJXg4WRQ1BIAXYGT7lZ1H3Sbh7UO/p999hC9oVMUrYU5sH9jfJPKhJvfOQTSHQdARBdz7V96IPjr3BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.75.0", + "@zag-js/aria-hidden": "0.75.0", + "@zag-js/collection": "0.75.0", + "@zag-js/core": "0.75.0", + "@zag-js/dismissable": "0.75.0", + "@zag-js/dom-event": "0.75.0", + "@zag-js/dom-query": "0.75.0", + "@zag-js/popper": "0.75.0", + "@zag-js/types": "0.75.0", + "@zag-js/utils": "0.75.0" + } + }, + "node_modules/@zag-js/core": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/core/-/core-0.75.0.tgz", + "integrity": "sha512-nkfHHWLTHiHW/hvk/O4y9sbtxE5Bxbj1vetElAlXqCDrQMgqNGOBEtxcjQVX65CJMjx1wHHcjG7lV0JOY6cpCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/store": "0.75.0", + "@zag-js/utils": "0.75.0", + "klona": "2.0.6" + } + }, + "node_modules/@zag-js/dialog": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/dialog/-/dialog-0.75.0.tgz", + "integrity": "sha512-wYtedDPT8y3fHT5lO4BAOxjtrePowFsB3nCNpupxxsMlozjAbDNI+DHp/CvFLcCAYbPvce8DSnT/y/1fy0LYIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.75.0", + "@zag-js/aria-hidden": "0.75.0", + "@zag-js/core": "0.75.0", + "@zag-js/dismissable": "0.75.0", + "@zag-js/dom-query": "0.75.0", + "@zag-js/remove-scroll": "0.75.0", + "@zag-js/types": "0.75.0", + "@zag-js/utils": "0.75.0", + "focus-trap": "7.6.0" + } + }, + "node_modules/@zag-js/dismissable": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/dismissable/-/dismissable-0.75.0.tgz", + "integrity": "sha512-s+VK/9xtx7md7iKy/StrYCUUKegFwkecWIO/K/U52gQN3UdCQRX9bjvENI3LVzzme6XEBz91b3O8K83bfG4Ojw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/dom-event": "0.75.0", + "@zag-js/dom-query": "0.75.0", + "@zag-js/interact-outside": "0.75.0", + "@zag-js/utils": "0.75.0" + } + }, + "node_modules/@zag-js/dom-event": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/dom-event/-/dom-event-0.75.0.tgz", + "integrity": "sha512-xPgalQ6fvVH9JKaCEdNCWJGp+0+AHM7DvTXe1PVgvuBb7//QBGzYaEUhhmdt3LXyG79o7RaIEVEgGTjwH2vDTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/dom-query": "0.75.0", + "@zag-js/text-selection": "0.75.0", + "@zag-js/types": "0.75.0" + } + }, + "node_modules/@zag-js/dom-query": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/dom-query/-/dom-query-0.75.0.tgz", + "integrity": "sha512-PrCX29VbxKW4YQCAo6juttlwW563Os03dId/0V7WCN4daj+ocpI169mMm/XxgXfI9kgebZuYvY9ngIJeHdJHSA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@zag-js/element-rect": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/element-rect/-/element-rect-0.75.0.tgz", + "integrity": "sha512-r9BTJL2kVPcyIxY7ZWewaCbfMSWhMYoSjK6ImgAZYpjApdk9cNspMkQl3m/felbBSsFDRp+DcLmadLlhqY6m7Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@zag-js/element-size": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/element-size/-/element-size-0.75.0.tgz", + "integrity": "sha512-N1t36zdLvL5B+6aFU95cIlyw2HqxgP8Wq5dWAPZDn3ATH3r6/Yv8kYZFvf0ACfORDv/uInByEPXta1+QE418yg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@zag-js/file-upload": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/file-upload/-/file-upload-0.75.0.tgz", + "integrity": "sha512-Xn14aOZ2u5UuJjrOtZpxV9Lqcqv6bOjlcu/iU6PI76JpPdI0/AaVXU7CYItLrPBbUsctBsjYW79/HOcHqZwhLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.75.0", + "@zag-js/core": "0.75.0", + "@zag-js/dom-query": "0.75.0", + "@zag-js/file-utils": "0.75.0", + "@zag-js/i18n-utils": "0.75.0", + "@zag-js/types": "0.75.0", + "@zag-js/utils": "0.75.0" + } + }, + "node_modules/@zag-js/file-utils": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/file-utils/-/file-utils-0.75.0.tgz", + "integrity": "sha512-ORCEM0LN516luYmF4PYegieksNWolDlcZ1jiiLSXr6ylTyUNYFmPDs/UFByZx4FsXgRTu2FJMAaG6jBRpp50dQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/i18n-utils": "0.75.0" + } + }, + "node_modules/@zag-js/focus-visible": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/focus-visible/-/focus-visible-0.75.0.tgz", + "integrity": "sha512-2Uin+VcveAT+dwD02Krn1L+cCA6U/YHGQeu8SJ9H06hnqjzVqE2maeHc6tyTqH0K1wQKvWHZFcWIpfF64QviMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/dom-query": "0.75.0" + } + }, + "node_modules/@zag-js/form-utils": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/form-utils/-/form-utils-0.75.0.tgz", + "integrity": "sha512-IXyUzpY/e+80e6UWmBmtIS5wJ3elxWR6smO6Ot0FLcN5HWabfxdY7op1OLrd6czj/VVC0zD+UGwCG6yasUYTyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@zag-js/i18n-utils": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/i18n-utils/-/i18n-utils-0.75.0.tgz", + "integrity": "sha512-5mIVuSmEfK/9Pk66R5Njbxu9l+PqUfRYrtr9HJItW8ijjmIrISfW9D0xRazKcVExVarYuHEk6Fzk1nsJnzqZmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/dom-query": "0.75.0" + } + }, + "node_modules/@zag-js/interact-outside": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/interact-outside/-/interact-outside-0.75.0.tgz", + "integrity": "sha512-F3+BMMx57EaY1CPW7007MEJCBe3hgR1NJuDzvDmqPyjy+M0BwNzd7Tqg5YxaDSuvAA4r71AlxqRpBU5RNh44lA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/dom-event": "0.75.0", + "@zag-js/dom-query": "0.75.0", + "@zag-js/utils": "0.75.0" + } + }, + "node_modules/@zag-js/live-region": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/live-region/-/live-region-0.75.0.tgz", + "integrity": "sha512-x5C3us0UyjGAzg0QV6EvwSuAuO0RxWevlSvEFRzFCi3VVG35FyqF4eryN8iP6kfRdeZrJFJnjzX5p0Gj1C6Mkw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@zag-js/numeric-range": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/numeric-range/-/numeric-range-0.75.0.tgz", + "integrity": "sha512-8xbFhC1RIj5AwoZ2hr+E5H+/Jx9AoDAU8rPm1slD8eV+21ACqMqRCWtKwk+9lsueT4ZksBjnkTL+ou/ru5J0qQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@zag-js/pagination": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/pagination/-/pagination-0.75.0.tgz", + "integrity": "sha512-oW3Y0y+lchNU1JVBfF7gsU2G+3B4hkNnOa8rjNY3ONgVM95EauAaAdsv2eopfPykFyVUntGi7xYvQqtUYCrKRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.75.0", + "@zag-js/core": "0.75.0", + "@zag-js/dom-query": "0.75.0", + "@zag-js/types": "0.75.0", + "@zag-js/utils": "0.75.0" + } + }, + "node_modules/@zag-js/popover": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/popover/-/popover-0.75.0.tgz", + "integrity": "sha512-wQLHfVGBFq34clGFI9+duGkMKwhtrrHlOjBnFLZIIPMUWiBY1WaU2XKycPKEW1bYK65u8e0yRv9dH+Z4oOYCVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.75.0", + "@zag-js/aria-hidden": "0.75.0", + "@zag-js/core": "0.75.0", + "@zag-js/dismissable": "0.75.0", + "@zag-js/dom-query": "0.75.0", + "@zag-js/popper": "0.75.0", + "@zag-js/remove-scroll": "0.75.0", + "@zag-js/types": "0.75.0", + "@zag-js/utils": "0.75.0", + "focus-trap": "7.6.0" + } + }, + "node_modules/@zag-js/popper": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/popper/-/popper-0.75.0.tgz", + "integrity": "sha512-B3Xlb+iH+Xux086XmWkpxG/tL4dyO9XbOFrQj1AuHkPC4Bgfc6DGPC1yGnHLdlYYm1Yyv8SR5LvPLyv4e1Ogcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "1.6.11", + "@zag-js/dom-query": "0.75.0", + "@zag-js/utils": "0.75.0" + } + }, + "node_modules/@zag-js/popper/node_modules/@floating-ui/dom": { + "version": "1.6.11", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.11.tgz", + "integrity": "sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.8" + } + }, + "node_modules/@zag-js/progress": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/progress/-/progress-0.75.0.tgz", + "integrity": "sha512-kCEPtx6R2RVLq/RT7Fa19DJP9VecfH6dyRvWa5W3iOsT4kpGYYRGQI0q4e32hmK/D4iIFPQeaK1vtmo6O7JSFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.75.0", + "@zag-js/core": "0.75.0", + "@zag-js/dom-query": "0.75.0", + "@zag-js/types": "0.75.0", + "@zag-js/utils": "0.75.0" + } + }, + "node_modules/@zag-js/radio-group": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/radio-group/-/radio-group-0.75.0.tgz", + "integrity": "sha512-mctay6B5TxuuUGgwhoqd586DXLhQu/EYP2FLoRYhStKD0wU/LbmvYob8EYMC9arQhv1DQS+Wa712sQc2/Uuw+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.75.0", + "@zag-js/core": "0.75.0", + "@zag-js/dom-query": "0.75.0", + "@zag-js/element-rect": "0.75.0", + "@zag-js/focus-visible": "0.75.0", + "@zag-js/form-utils": "0.75.0", + "@zag-js/types": "0.75.0", + "@zag-js/utils": "0.75.0" + } + }, + "node_modules/@zag-js/rating-group": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/rating-group/-/rating-group-0.75.0.tgz", + "integrity": "sha512-zfBeXETzOpaAzsZQf9Wd6CtaQ4F4/g7L04aj+eX9OP3VmHBHNwoe8SA/dNUJNB4QIoQeCpC2NQOiPtEV68ZENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.75.0", + "@zag-js/core": "0.75.0", + "@zag-js/dom-event": "0.75.0", + "@zag-js/dom-query": "0.75.0", + "@zag-js/form-utils": "0.75.0", + "@zag-js/types": "0.75.0", + "@zag-js/utils": "0.75.0" + } + }, + "node_modules/@zag-js/remove-scroll": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/remove-scroll/-/remove-scroll-0.75.0.tgz", + "integrity": "sha512-atbqJevyvuVQ8ydTGtlweNvpaBj+lqv0QQaC9mjIXbndPNF2/9PKx9cXZINUG1bfdQ2DN3BSzWlrSn05DOmj3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/dom-query": "0.75.0" + } + }, + "node_modules/@zag-js/slider": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/slider/-/slider-0.75.0.tgz", + "integrity": "sha512-xW/SVaxcR4EisoMW0MImtiK8+DJWmpQ7dhb9kn+GwQ+heonUnIHh3ChvKboK+Nv/86J/sCIuUUcX8zz85FhXJg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.75.0", + "@zag-js/core": "0.75.0", + "@zag-js/dom-event": "0.75.0", + "@zag-js/dom-query": "0.75.0", + "@zag-js/element-size": "0.75.0", + "@zag-js/form-utils": "0.75.0", + "@zag-js/numeric-range": "0.75.0", + "@zag-js/types": "0.75.0", + "@zag-js/utils": "0.75.0" + } + }, + "node_modules/@zag-js/store": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/store/-/store-0.75.0.tgz", + "integrity": "sha512-kAzqLKfCLRIYfnsLuQdHOdrIwBdO4nqJ6kjCYlWvhSe81oDWCrC5MY2fv7mIYFjW+ZPpH3xmgGvj5ugqfAsqoA==", + "dev": true, + "license": "MIT", + "dependencies": { + "proxy-compare": "3.0.0" + } + }, + "node_modules/@zag-js/svelte": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/svelte/-/svelte-0.75.0.tgz", + "integrity": "sha512-MK4TX4vTg04cLYv8f7a7waIS0FzWjXLMe8mHeTg8Je/Pj6BKRZdXVdv5wHy8le7l+To8vOZjOQKFo61yjAuzyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/core": "0.75.0", + "@zag-js/types": "0.75.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "svelte": "^5.0.0-next.1" + } + }, + "node_modules/@zag-js/switch": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/switch/-/switch-0.75.0.tgz", + "integrity": "sha512-A1TCQa43HYtIl5iNJ96FG7taW9isN39AhDd33CEoqyr4VH2iMNtkzRhkf9VxLQHWuOsommoVD1faUWlHObeBlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.75.0", + "@zag-js/core": "0.75.0", + "@zag-js/dom-event": "0.75.0", + "@zag-js/dom-query": "0.75.0", + "@zag-js/focus-visible": "0.75.0", + "@zag-js/form-utils": "0.75.0", + "@zag-js/types": "0.75.0", + "@zag-js/utils": "0.75.0" + } + }, + "node_modules/@zag-js/tabs": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/tabs/-/tabs-0.75.0.tgz", + "integrity": "sha512-F7OYMWeayWWkG3KRsM0n6hdnRq7b4pY/cEJ9OAG0Fz4PFq2dD6cLDsC/hBhiR5TUmKK9G0+orTXxijB2Uqc1cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.75.0", + "@zag-js/core": "0.75.0", + "@zag-js/dom-event": "0.75.0", + "@zag-js/dom-query": "0.75.0", + "@zag-js/element-rect": "0.75.0", + "@zag-js/types": "0.75.0", + "@zag-js/utils": "0.75.0" } }, + "node_modules/@zag-js/tags-input": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/tags-input/-/tags-input-0.75.0.tgz", + "integrity": "sha512-nZjJuxzs4bOA8KqLWWKHDF9cTwdfIhtvbFGvoOuqxyCqLpLo2kgfwOnRSiny0MrYo0GY+drNcHIqFiznh0OOUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.75.0", + "@zag-js/auto-resize": "0.75.0", + "@zag-js/core": "0.75.0", + "@zag-js/dom-event": "0.75.0", + "@zag-js/dom-query": "0.75.0", + "@zag-js/form-utils": "0.75.0", + "@zag-js/interact-outside": "0.75.0", + "@zag-js/live-region": "0.75.0", + "@zag-js/types": "0.75.0", + "@zag-js/utils": "0.75.0" + } + }, + "node_modules/@zag-js/text-selection": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/text-selection/-/text-selection-0.75.0.tgz", + "integrity": "sha512-ZSbX6bb8b75DAg8zGPiEfHGn2d72991vAIvojqzCI1tRG7KpAL66XVurkR/m+MmPoH5fYESB7JstgBD8+n2MtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/dom-query": "0.75.0" + } + }, + "node_modules/@zag-js/tooltip": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/tooltip/-/tooltip-0.75.0.tgz", + "integrity": "sha512-K4GD6J7bo/BOsFIAAfQ2StF8kZA/DwRLjEPIaie3SlX5rGDu+NtwcREXhJ+CyZq4RvkhI4W6LEpWPXIGZePRYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@zag-js/anatomy": "0.75.0", + "@zag-js/core": "0.75.0", + "@zag-js/dom-event": "0.75.0", + "@zag-js/dom-query": "0.75.0", + "@zag-js/focus-visible": "0.75.0", + "@zag-js/popper": "0.75.0", + "@zag-js/types": "0.75.0", + "@zag-js/utils": "0.75.0" + } + }, + "node_modules/@zag-js/types": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/types/-/types-0.75.0.tgz", + "integrity": "sha512-NG2wJeFzgSX7TKg015r1nxV3oSy9RJ94iQpoQLv66hH5XDvAJbV4jCf0yAo8awwK+5x8Opz3awJrGVnbo0B/eQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "3.1.3" + } + }, + "node_modules/@zag-js/utils": { + "version": "0.75.0", + "resolved": "https://registry.npmjs.org/@zag-js/utils/-/utils-0.75.0.tgz", + "integrity": "sha512-68zu+3zBs5QtgYcdcoUOpYMdyf5tecoaNbttjAR3Xnmgva3PYnS/l08ZnV8wyGvixGFSRg1gJNZfWFm2WGCmIw==", + "dev": true, + "license": "MIT" + }, "node_modules/acorn": { "version": "8.14.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", @@ -1886,6 +2374,19 @@ "dev": true, "license": "Python-2.0" }, + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/aria-query": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", @@ -2229,9 +2730,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -2256,6 +2757,13 @@ "node": ">=4" } }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "license": "MIT" + }, "node_modules/debug": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", @@ -2456,27 +2964,27 @@ } }, "node_modules/eslint": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz", - "integrity": "sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==", + "version": "9.15.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.15.0.tgz", + "integrity": "sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.18.0", - "@eslint/core": "^0.7.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.14.0", - "@eslint/plugin-kit": "^0.2.0", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.9.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.15.0", + "@eslint/plugin-kit": "^0.2.3", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.0", + "@humanwhocodes/retry": "^0.4.1", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.5", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.2.0", @@ -2495,8 +3003,7 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" @@ -2877,6 +3384,16 @@ "dev": true, "license": "ISC" }, + "node_modules/focus-trap": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.0.tgz", + "integrity": "sha512-1td0l3pMkWJLFipobUcGaf+5DTY4PLDDrcqoSaKP8ediO/CoWCCYk/fT/Y2A4e6TNB+Sh6clRJCjOPPnKoNHnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tabbable": "^6.2.0" + } + }, "node_modules/foreground-child": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", @@ -3235,13 +3752,13 @@ } }, "node_modules/is-reference": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", - "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "*" + "@types/estree": "^1.0.6" } }, "node_modules/isexe": { @@ -3361,6 +3878,16 @@ "node": ">=6" } }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, "node_modules/known-css-properties": { "version": "0.35.0", "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.35.0.tgz", @@ -4342,9 +4869,9 @@ } }, "node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.0.tgz", + "integrity": "sha512-/OXNZcLyWkfo13ofOW5M7SLh+k5pnIs07owXK2teFpnfaOEcycnSy7HQxldaVX1ZP/7Q8oO1eDuQJNwbomQq5Q==", "dev": true, "license": "MIT", "bin": { @@ -4358,9 +4885,9 @@ } }, "node_modules/prettier-plugin-svelte": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.2.7.tgz", - "integrity": "sha512-/Dswx/ea0lV34If1eDcG3nulQ63YNr5KPDfMsjbdtpSWOxKKJ7nAc2qlVuYwEvCr4raIuredNoR7K4JCkmTGaQ==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-svelte/-/prettier-plugin-svelte-3.3.2.tgz", + "integrity": "sha512-kRPjH8wSj2iu+dO+XaUv4vD8qr5mdDmlak3IT/7AOgGIMRG86z/EHOLauFcClKEnOUf4A4nOA7sre5KrJD4Raw==", "dev": true, "license": "MIT", "peerDependencies": { @@ -4369,9 +4896,9 @@ } }, "node_modules/prettier-plugin-tailwindcss": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.8.tgz", - "integrity": "sha512-dGu3kdm7SXPkiW4nzeWKCl3uoImdd5CTZEJGxyypEPL37Wj0HT2pLqjrvSei1nTeuQfO4PUfjeW5cTUNRLZ4sA==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.9.tgz", + "integrity": "sha512-r0i3uhaZAXYP0At5xGfJH876W3HHGHDp+LCRUJrs57PBeQ6mYHMwr25KH8NPX44F2yGTvdnH7OqCshlQx183Eg==", "dev": true, "license": "MIT", "engines": { @@ -4447,6 +4974,13 @@ } } }, + "node_modules/proxy-compare": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-3.0.0.tgz", + "integrity": "sha512-y44MCkgtZUCT9tZGuE278fB7PWVf7fRYy0vbRXAts2o5F0EfC4fIQrvQQGBJo1WJbFcVLXzApOscyJuZqHQc1w==", + "dev": true, + "license": "MIT" + }, "node_modules/pump": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", @@ -4998,9 +5532,9 @@ } }, "node_modules/svelte": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.1.9.tgz", - "integrity": "sha512-nzq+PPKGS2PoEWDjAcXSrKSbXmmmOAxd6dAz1IhRusUpVkFS6DMELWPyBPGwu6TpO/gsgtFXwX0M4+pAR5gzKw==", + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.2.8.tgz", + "integrity": "sha512-VU7a01XwnFi6wXVkH5QY3FYXRZWrhsWZhaE8AYU6UeYZdslE3TFgQq6+HLrbMjOLkVhdKt74NGHYbhFeErQQ6g==", "dev": true, "license": "MIT", "dependencies": { @@ -5013,7 +5547,7 @@ "axobject-query": "^4.1.0", "esm-env": "^1.0.0", "esrap": "^1.2.2", - "is-reference": "^3.0.2", + "is-reference": "^3.0.3", "locate-character": "^3.0.0", "magic-string": "^0.30.11", "zimmerframe": "^1.1.2" @@ -5023,9 +5557,9 @@ } }, "node_modules/svelte-check": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.0.5.tgz", - "integrity": "sha512-icBTBZ3ibBaywbXUat3cK6hB5Du+Kq9Z8CRuyLmm64XIe2/r+lQcbuBx/IQgsbrC+kT2jQ0weVpZSSRIPwB6jQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.1.0.tgz", + "integrity": "sha512-AflEZYqI578KuDZcpcorPSf597LStxlkN7XqXi38u09zlHODVKd7c+7OuubGzbhgGRUqNTdQCZ+Ga96iRXEf2g==", "dev": true, "license": "MIT", "dependencies": { @@ -5122,35 +5656,42 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "dev": true, + "license": "MIT" + }, "node_modules/tailwindcss": { - "version": "3.4.14", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.14.tgz", - "integrity": "sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==", + "version": "3.4.15", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.15.tgz", + "integrity": "sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw==", "dev": true, "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", - "chokidar": "^3.5.3", + "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "fast-glob": "^3.3.0", + "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "jiti": "^1.21.0", + "jiti": "^1.21.6", "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", @@ -5332,13 +5873,6 @@ "node": ">=6" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -5404,9 +5938,9 @@ "license": "MIT" }, "node_modules/ts-api-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz", - "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.2.tgz", + "integrity": "sha512-ZF5gQIQa/UmzfvxbHZI3JXN0/Jt+vnAfAviNRAMc491laiK6YCLpCW9ft8oaCRFOTxCZtUTE6XB0ZQAe3olntw==", "dev": true, "license": "MIT", "engines": { @@ -5423,6 +5957,13 @@ "dev": true, "license": "Apache-2.0" }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -5451,9 +5992,9 @@ } }, "node_modules/typescript": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5465,15 +6006,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.13.0.tgz", - "integrity": "sha512-vIMpDRJrQd70au2G8w34mPps0ezFSPMEX4pXkTzUkrNbRX+36ais2ksGWN0esZL+ZMaFJEneOBHzCgSqle7DHw==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.16.0.tgz", + "integrity": "sha512-wDkVmlY6O2do4V+lZd0GtRfbtXbeD0q9WygwXXSJnC1xorE8eqyC2L1tJimqpSeFrOzRlYtWnUp/uzgHQOgfBQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.13.0", - "@typescript-eslint/parser": "8.13.0", - "@typescript-eslint/utils": "8.13.0" + "@typescript-eslint/eslint-plugin": "8.16.0", + "@typescript-eslint/parser": "8.16.0", + "@typescript-eslint/utils": "8.16.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5482,6 +6023,9 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" + }, "peerDependenciesMeta": { "typescript": { "optional": true @@ -5496,9 +6040,9 @@ "license": "MIT" }, "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "dev": true, "license": "MIT" }, @@ -5551,9 +6095,9 @@ "license": "MIT" }, "node_modules/vite": { - "version": "5.4.10", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz", - "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==", + "version": "5.4.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", + "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 4001859fd..c2b9dcc7c 100644 --- a/package.json +++ b/package.json @@ -12,28 +12,27 @@ "lint": "prettier --check . && eslint ." }, "devDependencies": { - "@auth/core": "^0.37.3", - "@auth/sveltekit": "^1.7.3", - "@floating-ui/dom": "^1.6.12", + "@auth/core": "^0.37.4", + "@auth/sveltekit": "^1.7.4", "@iconify/svelte": "^4.0.2", "@iktakahiro/markdown-it-katex": "^4.0.1", - "@skeletonlabs/skeleton": "^2.10.3", - "@skeletonlabs/tw-plugin": "^0.4.0", + "@skeletonlabs/skeleton": "^3.0.0-next.9", + "@skeletonlabs/skeleton-svelte": "^1.0.0-next.14", "@supabase/supabase-js": "^2.46.1", - "@sveltejs/adapter-auto": "^3.0.0", + "@sveltejs/adapter-auto": "^3.3.1", "@sveltejs/adapter-netlify": "^4.3.6", - "@sveltejs/kit": "^2.0.0", - "@sveltejs/vite-plugin-svelte": "^4.0.0", + "@sveltejs/kit": "^2.8.4", + "@sveltejs/vite-plugin-svelte": "^4.0.2", "@tailwindcss/forms": "^0.5.9", "@tailwindcss/typography": "^0.5.15", - "@types/eslint": "^9.6.0", - "@types/node": "^22.9.0", + "@types/eslint": "^9.6.1", + "@types/node": "^22.10.0", "autoprefixer": "^10.4.20", - "eslint": "^9.7.0", + "eslint": "^9.15.0", "eslint-config-prettier": "^9.1.0", - "eslint-plugin-svelte": "^2.36.0", + "eslint-plugin-svelte": "^2.46.0", "file-saver": "^2.0.5", - "globals": "^15.0.0", + "globals": "^15.12.0", "highlight.js": "^11.10.0", "markdown-it": "^14.1.0", "markdown-it-anchor": "^9.2.0", @@ -47,14 +46,14 @@ "markdown-it-table-of-contents": "^0.8.0", "partysocket": "^1.0.2", "pdfjs-dist": "^4.8.69", - "prettier": "^3.3.2", - "prettier-plugin-svelte": "^3.2.6", - "prettier-plugin-tailwindcss": "^0.6.5", - "svelte": "^5.0.0", - "svelte-check": "^4.0.0", - "tailwindcss": "^3.4.9", - "typescript": "^5.0.0", - "typescript-eslint": "^8.0.0", - "vite": "^5.0.3" + "prettier": "^3.4.0", + "prettier-plugin-svelte": "^3.3.2", + "prettier-plugin-tailwindcss": "^0.6.9", + "svelte": "^5.2.8", + "svelte-check": "^4.1.0", + "tailwindcss": "^3.4.15", + "typescript": "^5.7.2", + "typescript-eslint": "^8.16.0", + "vite": "^5.4.11" } } diff --git a/src/app.css b/src/app.css deleted file mode 100644 index 76fcadcc0..000000000 --- a/src/app.css +++ /dev/null @@ -1,3 +0,0 @@ -@import "tailwindcss/base"; -@import "tailwindcss/components"; -@import "tailwindcss/utilities"; diff --git a/src/app.html b/src/app.html index 97434d27b..83ed53dac 100644 --- a/src/app.html +++ b/src/app.html @@ -16,6 +16,7 @@ href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet" /> + diff --git a/src/app.postcss b/src/app.postcss new file mode 100644 index 000000000..f3fef8333 --- /dev/null +++ b/src/app.postcss @@ -0,0 +1,9 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; +@tailwind variants; + +html, +body { + @apply h-full overflow-hidden; +} diff --git a/src/lib/runes.ts b/src/lib/runes.ts index 3b1feb672..8854aaa31 100644 --- a/src/lib/runes.ts +++ b/src/lib/runes.ts @@ -2,10 +2,22 @@ import type { Lo, Course } from "$lib/services/models/lo-types"; import { rune } from "./services/utils/runes.svelte"; export const transitionKey = rune(""); + export const layout = rune("expanded"); +export const lightMode = rune("light"); +export const currentTheme = rune("tutors"); export const currentLo = rune(null); export const currentCourse = rune(null); export const courseUrl = rune(""); export const currentLabStepIndex = rune(0); -export const currentTheme = rune("tutors"); + +export const cardHeight = rune("380px"); +export const headingText = rune("!text-lg font-semibold"); +export const cardWidths = rune("w-60 h-[21rem]"); +export const iconHeight = rune("140"); +export const imageHeight = rune("h-32"); +export const textSize = rune("text-base"); +export const avatarWidth = rune("w-12"); + +export const animationDelay = rune(200); diff --git a/src/lib/services/connect.svelte.ts b/src/lib/services/connect.svelte.ts index 00140e49f..16117ba38 100644 --- a/src/lib/services/connect.svelte.ts +++ b/src/lib/services/connect.svelte.ts @@ -74,8 +74,16 @@ export const tutorsConnectService: TutorsConnectService = { } }, - deleteCourseVisit(courseId: string) { - this.profile.deleteCourseVisit(courseId); + async favouriteCourse(courseId: string) { + await this.profile.favouriteCourse(courseId); + }, + + async unfavouriteCourse(courseId: string) { + await this.profile.unfavouriteCourse(courseId); + }, + + async deleteCourseVisit(courseId: string) { + await this.profile.deleteCourseVisit(courseId); }, getCourseVisits(): Promise { diff --git a/src/lib/services/models/course-utils.ts b/src/lib/services/models/course-utils.ts index f6051cef6..823805f3d 100644 --- a/src/lib/services/models/course-utils.ts +++ b/src/lib/services/models/course-utils.ts @@ -1,4 +1,4 @@ -import { addIcon } from "$lib/ui/themes/styles/icon-lib.svelte"; +import { themeService } from "$lib/ui/themes/theme-controller.svelte"; import type { Composite, Course, IconNav, Lo, LoType, Topic } from "./lo-types"; import { filterByType, setShowHide } from "./lo-utils"; @@ -51,7 +51,7 @@ export function createCompanions(course: Course) { if (course.properties.companions) { for (const [key, value] of Object.entries(course.properties.companions)) { const companion: any = value; - addIcon(key, companion.icon); + themeService.addIcon(key, companion.icon); course.companions.bar.push({ link: companion.link, type: key, diff --git a/src/lib/services/models/live-lab.ts b/src/lib/services/models/live-lab.ts index f3b36bbd5..55f67afda 100644 --- a/src/lib/services/models/live-lab.ts +++ b/src/lib/services/models/live-lab.ts @@ -9,8 +9,8 @@ function getKeyIndex(map: Map, targetKey: string) { } function truncate(input: string) { - if (input?.length > 16) { - return input.substring(0, 15) + "..."; + if (input?.length > 24) { + return input.substring(0, 20) + "..."; } return input; } @@ -77,7 +77,7 @@ export class LiveLab { const prevTitle = prevChapter ? truncate(this.chaptersTitles.get(prevChapter.shortTitle)) : ""; if (prevTitle) number = this.autoNumber ? prevChapter.shortTitle + ": " : ""; this.horizontalNavbarHtml = prevChapter - ? `   ${number}${prevTitle} ` + ? `   ${number}${prevTitle} ` : ""; number = ""; @@ -87,7 +87,7 @@ export class LiveLab { // @ts-ignore const nextTitle = nextChapter ? truncate(this.chaptersTitles.get(nextChapter.shortTitle)) : ""; this.horizontalNavbarHtml += nextChapter - ? ` ${number}${nextTitle}  ` : ""; diff --git a/src/lib/services/models/lo-types.ts b/src/lib/services/models/lo-types.ts index e3cce8019..8ec8b9b12 100644 --- a/src/lib/services/models/lo-types.ts +++ b/src/lib/services/models/lo-types.ts @@ -54,6 +54,13 @@ export type IconNavBar = { bar: IconNav[]; }; +export type IconLib = Record; + +export type Theme = { + name: string; + icons: IconLib; +}; + export interface LearningRecord { date: Date; pageLoads: number; diff --git a/src/lib/services/models/markdown-utils.ts b/src/lib/services/models/markdown-utils.ts index 8d4c2d558..a5f9ab347 100644 --- a/src/lib/services/models/markdown-utils.ts +++ b/src/lib/services/models/markdown-utils.ts @@ -93,9 +93,12 @@ function filter(src: string, url: string): string { let filtered = replaceAll(src, "./img\\/", `img/`); filtered = replaceAll(filtered, "img\\/", `https://${url}/img/`); filtered = replaceAll(filtered, "./archives\\/", `archives/`); - filtered = replaceAll(filtered, "archives\\/", `https://${url}/archives/`); - filtered = replaceAll(filtered, "./archive\\/(?!refs)", `archive/`); - filtered = replaceAll(filtered, "archive\\/(?!refs)", `https://${url}/archive/`); + + //filtered = replaceAll(filtered, "archives\\/", `https://${url}/archives/`); + filtered = replaceAll(filtered, "(? c.id === course.courseId); if (visit) { visit.visits++; @@ -31,18 +35,36 @@ export const localStorageProfile: ProfileStore = { } this.courseVisits.unshift(courseVisit); } - if (browser) localStorage.courseVisits = JSON.stringify(this.courseVisits); + this.save(); }, deleteCourseVisit(courseId: string) { + this.reload(); this.courseVisits = this.courseVisits.filter((c) => c.id !== courseId); if (browser) localStorage.courseVisits = JSON.stringify(this.courseVisits); + this.save(); }, getCourseVisits(): Promise { - if (browser && localStorage.courseVisits) { - this.courseVisits = JSON.parse(localStorage.courseVisits); - } + this.reload(); return this.courseVisits; + }, + + favouriteCourse(courseId: string) { + this.reload(); + const courseVisit = this.courseVisits.find((c) => c.id === courseId); + if (courseVisit) { + courseVisit.favourite = true; + } + this.save(); + }, + + unfavouriteCourse(courseId: string) { + this.reload(); + const courseVisit = this.courseVisits.find((c) => c.id === courseId); + if (courseVisit) { + courseVisit.favourite = false; + } + this.save(); } }; diff --git a/src/lib/services/profiles/supabaseProfile.svelte.ts b/src/lib/services/profiles/supabaseProfile.svelte.ts index 147457954..59224275e 100644 --- a/src/lib/services/profiles/supabaseProfile.svelte.ts +++ b/src/lib/services/profiles/supabaseProfile.svelte.ts @@ -63,5 +63,23 @@ export const supabaseProfile: ProfileStore = { async getCourseVisits(): Promise { await this.reload(); return this.courseVisits; + }, + + async favouriteCourse(courseId: string) { + await this.reload(); + const course = this.courseVisits.find((c) => c.id === courseId); + if (course) { + course.favourite = true; + } + await this.save(); + }, + + async unfavouriteCourse(courseId: string) { + await this.reload(); + const course = this.courseVisits.find((c) => c.id === courseId); + if (course) { + course.favourite = false; + } + await this.save(); } }; diff --git a/src/lib/services/types.svelte.ts b/src/lib/services/types.svelte.ts index 93969c699..befacca34 100644 --- a/src/lib/services/types.svelte.ts +++ b/src/lib/services/types.svelte.ts @@ -18,6 +18,7 @@ export type CourseVisit = { credits: string; visits?: number; private: boolean; + favourite: boolean; }; export interface LoUser { @@ -43,6 +44,19 @@ export class LoRecord { } } +export interface CardDetails { + route: string; + title: string; + type: string; + subtitle1?: string; + subtitle2?: string; + summary?: string; + icon?: IconType; + img?: string; + student?: LoUser; + video?: string; +} + export interface CourseService { courses: Map; labs: Map; @@ -62,6 +76,8 @@ export interface ProfileStore { reload(): void; save(): void; logCourseVisit(course: Course): void; + favouriteCourse(courseId: string): void; + unfavouriteCourse(courseId: string): void; deleteCourseVisit(courseId: string): void; getCourseVisits(): Promise; } @@ -81,6 +97,8 @@ export interface TutorsConnectService { courseVisit(course: Course, user: TutorsId): void; deleteCourseVisit(courseId: string): void; getCourseVisits(): Promise; + favouriteCourse(courseId: string): void; + unfavouriteCourse(courseId: string): void; learningEvent(params: Record): void; startTimer(): void; diff --git a/src/lib/ui/TutorsShell.svelte b/src/lib/ui/TutorsShell.svelte new file mode 100644 index 000000000..eeaa0a8a4 --- /dev/null +++ b/src/lib/ui/TutorsShell.svelte @@ -0,0 +1,25 @@ + + +
+
+ + {#if currentCourse?.value} + + {/if} +
+
+ {@render children()} +
+
+
+
+
diff --git a/src/lib/ui/animations.ts b/src/lib/ui/animations.ts deleted file mode 100644 index 1ab7064b8..000000000 --- a/src/lib/ui/animations.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { cubicInOut, cubicOut } from "svelte/easing"; - -export const cardTransition = () => { - return { - css: (t: string) => { - return `transform: scale(${t}); `; - }, - easing: cubicInOut, - baseScale: 0.5, - duration: 250, - delay: 250 - }; -}; - -export const talkTransition = () => { - return { - css: (t: string) => { - return `transform: scale(${t}); `; - }, - easing: cubicOut, - baseScale: 0.5, - duration: 200, - delay: 200 - }; -}; - -export const viewDelay = 500; diff --git a/src/lib/ui/app-shells/CourseShell.svelte b/src/lib/ui/app-shells/CourseShell.svelte deleted file mode 100644 index f75ffdc58..000000000 --- a/src/lib/ui/app-shells/CourseShell.svelte +++ /dev/null @@ -1,36 +0,0 @@ - - - - - {#snippet header()} - - - {/snippet} - - {#key transitionKey.value} -
-
-
-
- {@render children()} -
-
-
- {/key} - - {#snippet pageFooter()} -