From 91ff2e7740c3f0ed298306baf05bc09d67cb8dc2 Mon Sep 17 00:00:00 2001 From: wilson Date: Fri, 17 Apr 2026 08:57:01 +0100 Subject: [PATCH] chore: [frontend] Continue removing traces of the shadcn components --- frontend/components.json | 20 -- frontend/package.json | 10 +- frontend/pnpm-lock.yaml | 415 ++++++++++++++++++-------------------- frontend/src/app.css | 418 +++++++++++++++++++++++++++++++++++++-- frontend/vite.config.ts | 56 +++--- 5 files changed, 623 insertions(+), 296 deletions(-) delete mode 100644 frontend/components.json diff --git a/frontend/components.json b/frontend/components.json deleted file mode 100644 index 44fad99..0000000 --- a/frontend/components.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "https://shadcn-svelte.com/schema.json", - "tailwind": { - "css": "src/app.css", - "baseColor": "neutral" - }, - "aliases": { - "components": "$lib/components", - "utils": "$lib/utils", - "ui": "$lib/components/ui", - "hooks": "$lib/hooks", - "lib": "$lib" - }, - "typescript": true, - "registry": "https://shadcn-svelte.com/registry", - "style": "vega", - "iconLibrary": "lucide", - "menuColor": "default", - "menuAccent": "subtle" -} diff --git a/frontend/package.json b/frontend/package.json index 81a2f7f..6a1e433 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -21,14 +21,12 @@ "@eslint/js": "latest", "@fontsource-variable/inter": "^5.2.8", "@hey-api/openapi-ts": "0.94.4", - "@internationalized/date": "^3.12.1", "@lucide/svelte": "^1.8.0", "@sveltejs/adapter-node": "^5.5.4", - "@sveltejs/kit": "^2.50.2", + "@sveltejs/kit": "^2.57.1", "@sveltejs/vite-plugin-svelte": "^6.2.4", "@types/node": "^22", "@vitest/browser-playwright": "^4.1.0", - "bits-ui": "^2.17.3", "clsx": "^2.1.1", "eslint": "^9.39.2", "eslint-config-prettier": "^10.1.8", @@ -37,22 +35,18 @@ "playwright": "^1.58.2", "prettier": "^3.8.1", "prettier-plugin-svelte": "^3.4.1", - "shadcn-svelte": "^1.2.7", "svelte": "^5.51.0", "svelte-check": "^4.4.2", - "tailwind-merge": "^3.5.0", - "tailwind-variants": "^3.2.2", "tw-animate-css": "^1.4.0", "typescript": "^5.9.3", "typescript-eslint": "^8.54.0", - "vite": "^7.3.1", + "vite": "^7.3.2", "vitest": "^4.1.0", "vitest-browser-svelte": "^2.0.2" }, "dependencies": { "deepl-node": "^1.24.0", "jose": "^6.2.2", - "tailwindcss": "^4.2.2", "valibot": "^1.3.1" } } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 9ac9245..a52da37 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -14,9 +14,6 @@ importers: jose: specifier: ^6.2.2 version: 6.2.2 - tailwindcss: - specifier: ^4.2.2 - version: 4.2.2 valibot: specifier: ^1.3.1 version: 1.3.1(typescript@5.9.3) @@ -33,30 +30,24 @@ importers: '@hey-api/openapi-ts': specifier: 0.94.4 version: 0.94.4(typescript@5.9.3) - '@internationalized/date': - specifier: ^3.12.1 - version: 3.12.1 '@lucide/svelte': specifier: ^1.8.0 version: 1.8.0(svelte@5.54.1) '@sveltejs/adapter-node': specifier: ^5.5.4 - version: 5.5.4(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1))) + version: 5.5.4(@sveltejs/kit@2.57.1(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0))) '@sveltejs/kit': - specifier: ^2.50.2 - version: 2.55.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)) + specifier: ^2.57.1 + version: 2.57.1(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)) '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)) + version: 6.2.4(svelte@5.54.1)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)) '@types/node': specifier: ^22 version: 22.19.15 '@vitest/browser-playwright': specifier: ^4.1.0 - version: 4.1.0(playwright@1.58.2)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1))(vitest@4.1.0) - bits-ui: - specifier: ^2.17.3 - version: 2.17.3(@internationalized/date@3.12.1)(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1) + version: 4.1.0(playwright@1.58.2)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0))(vitest@4.1.0) clsx: specifier: ^2.1.1 version: 2.1.1 @@ -81,21 +72,12 @@ importers: prettier-plugin-svelte: specifier: ^3.4.1 version: 3.5.1(prettier@3.8.1)(svelte@5.54.1) - shadcn-svelte: - specifier: ^1.2.7 - version: 1.2.7(svelte@5.54.1) svelte: specifier: ^5.51.0 version: 5.54.1 svelte-check: specifier: ^4.4.2 - version: 4.4.5(picomatch@4.0.3)(svelte@5.54.1)(typescript@5.9.3) - tailwind-merge: - specifier: ^3.5.0 - version: 3.5.0 - tailwind-variants: - specifier: ^3.2.2 - version: 3.2.2(tailwind-merge@3.5.0)(tailwindcss@4.2.2) + version: 4.4.5(picomatch@4.0.4)(svelte@5.54.1)(typescript@5.9.3) tw-animate-css: specifier: ^1.4.0 version: 1.4.0 @@ -106,11 +88,11 @@ importers: specifier: ^8.54.0 version: 8.57.1(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) vite: - specifier: ^7.3.1 - version: 7.3.1(@types/node@22.19.15)(jiti@2.6.1) + specifier: ^7.3.2 + version: 7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0) vitest: specifier: ^4.1.0 - version: 4.1.0(@types/node@22.19.15)(@vitest/browser-playwright@4.1.0)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)) + version: 4.1.0(@types/node@22.19.15)(@vitest/browser-playwright@4.1.0)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)) vitest-browser-svelte: specifier: ^2.0.2 version: 2.1.0(svelte@5.54.1)(vitest@4.1.0) @@ -327,15 +309,6 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@floating-ui/core@1.7.5': - resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==} - - '@floating-ui/dom@1.7.6': - resolution: {integrity: sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==} - - '@floating-ui/utils@0.2.11': - resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==} - '@fontsource-variable/inter@5.2.8': resolution: {integrity: sha512-kOfP2D+ykbcX/P3IFnokOhVRNoTozo5/JxhAIVYLpea/UBmCQ/YWPBfWIDuBImXX/15KH+eKh4xpEUyS2sQQGQ==} @@ -377,9 +350,6 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@internationalized/date@3.12.1': - resolution: {integrity: sha512-6IedsVWXyq4P9Tj+TxuU8WGWM70hYLl12nbYU8jkikVpa6WXapFazPUcHUMDMoWftIDE2ILDkFFte6W2nFCkRQ==} - '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} @@ -599,15 +569,15 @@ packages: peerDependencies: '@sveltejs/kit': ^2.4.0 - '@sveltejs/kit@2.55.0': - resolution: {integrity: sha512-MdFRjevVxmAknf2NbaUkDF16jSIzXMWd4Nfah0Qp8TtQVoSp3bV4jKt8mX7z7qTUTWvgSaxtR0EG5WJf53gcuA==} + '@sveltejs/kit@2.57.1': + resolution: {integrity: sha512-VRdSbB96cI1EnRh09CqmnQqP/YJvET5buj8S6k7CxaJqBJD4bw4fRKDjcarAj/eX9k2eHifQfDH8NtOh+ZxxPw==} engines: {node: '>=18.13'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.0.0 '@sveltejs/vite-plugin-svelte': ^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0 || ^7.0.0 svelte: ^4.0.0 || ^5.0.0-next.0 - typescript: ^5.3.3 + typescript: ^5.3.3 || ^6.0.0 vite: ^5.0.3 || ^6.0.0 || ^7.0.0-beta.0 || ^8.0.0 peerDependenciesMeta: '@opentelemetry/api': @@ -630,9 +600,6 @@ packages: svelte: ^5.0.0 vite: ^6.3.0 || ^7.0.0 - '@swc/helpers@0.5.21': - resolution: {integrity: sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==} - '@testing-library/svelte-core@1.0.0': resolution: {integrity: sha512-VkUePoLV6oOYwSUvX6ShA8KLnJqZiYMIbP2JW2t0GLWLkJxKGvuH5qrrZBV/X7cXFnLGuFQEC7RheYiZOW68KQ==} engines: {node: '>=16'} @@ -815,13 +782,6 @@ packages: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} - bits-ui@2.17.3: - resolution: {integrity: sha512-Bef41uY9U2jaBJHPhcPvmBNkGec5Wx2z6eioDsTmsaR2vH4QoaOcPi75gzCG3+/2TNr6v/qBwzgWNPYCxNtrEA==} - engines: {node: '>=20'} - peerDependencies: - '@internationalized/date': ^3.8.1 - svelte: ^5.33.0 - brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -962,13 +922,13 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - destr@2.0.5: resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + devalue@5.6.4: resolution: {integrity: sha512-Gp6rDldRsFh/7XuouDbxMH3Mx8GMCcgzIb1pDTvNyn8pZGQ22u+Wa+lGV9dQCltFQ7uVw0MhRyb8XDskNFOReA==} @@ -1219,9 +1179,6 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - inline-style-parser@0.2.7: - resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} - is-core-module@2.16.1: resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==} engines: {node: '>= 0.4'} @@ -1298,6 +1255,80 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + libc: [musl] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -1316,10 +1347,6 @@ packages: resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} engines: {node: '>= 0.6.0'} - lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true - magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -1419,6 +1446,10 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + pkg-types@2.3.0: resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} @@ -1527,15 +1558,6 @@ packages: resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} engines: {node: '>=18'} - runed@0.35.1: - resolution: {integrity: sha512-2F4Q/FZzbeJTFdIS/PuOoPRSm92sA2LhzTnv6FXhCoENb3huf5+fDuNOg1LNvGOouy3u/225qxmuJvcV3IZK5Q==} - peerDependencies: - '@sveltejs/kit': ^2.21.0 - svelte: ^5.7.0 - peerDependenciesMeta: - '@sveltejs/kit': - optional: true - sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} @@ -1553,12 +1575,6 @@ packages: set-cookie-parser@3.1.0: resolution: {integrity: sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==} - shadcn-svelte@1.2.7: - resolution: {integrity: sha512-mWuQk4H4gtV+J2wJQ7nEPKNnB/v86AALFryZU0SSM7ChHmJJMZ1kH+qIuxYKrXm9vOOOcSWHRsWzPDB71DnjYA==} - hasBin: true - peerDependencies: - svelte: ^5.0.0 - shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -1588,9 +1604,6 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - style-to-object@1.0.14: - resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} - supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -1616,35 +1629,10 @@ packages: svelte: optional: true - svelte-toolbelt@0.10.6: - resolution: {integrity: sha512-YWuX+RE+CnWYx09yseAe4ZVMM7e7GRFZM6OYWpBKOb++s+SQ8RBIMMe+Bs/CznBMc0QPLjr+vDBxTAkozXsFXQ==} - engines: {node: '>=18', pnpm: '>=8.7.0'} - peerDependencies: - svelte: ^5.30.2 - svelte@5.54.1: resolution: {integrity: sha512-ow8tncN097Ty8U1H+C3bM1xNlsCbnO2UZeN0lWBnv8f3jKho7QTTQ2LWbMXrPQDodLjH91n4kpNnLolyRhVE6A==} engines: {node: '>=18'} - tabbable@6.4.0: - resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} - - tailwind-merge@3.5.0: - resolution: {integrity: sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==} - - tailwind-variants@3.2.2: - resolution: {integrity: sha512-Mi4kHeMTLvKlM98XPnK+7HoBPmf4gygdFmqQPaDivc3DpYS6aIY6KiG/PgThrGvii5YZJqRsPz0aPyhoFzmZgg==} - engines: {node: '>=16.x', pnpm: '>=7.x'} - peerDependencies: - tailwind-merge: '>=3.0.0' - tailwindcss: '*' - peerDependenciesMeta: - tailwind-merge: - optional: true - - tailwindcss@4.2.2: - resolution: {integrity: sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q==} - tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} @@ -1670,9 +1658,6 @@ packages: peerDependencies: typescript: '>=4.8.4' - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - tw-animate-css@1.4.0: resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==} @@ -1713,8 +1698,8 @@ packages: typescript: optional: true - vite@7.3.1: - resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + vite@7.3.2: + resolution: {integrity: sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -1981,17 +1966,6 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 - '@floating-ui/core@1.7.5': - dependencies: - '@floating-ui/utils': 0.2.11 - - '@floating-ui/dom@1.7.6': - dependencies: - '@floating-ui/core': 1.7.5 - '@floating-ui/utils': 0.2.11 - - '@floating-ui/utils@0.2.11': {} - '@fontsource-variable/inter@5.2.8': {} '@hey-api/codegen-core@0.7.4': @@ -2048,10 +2022,6 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@internationalized/date@3.12.1': - dependencies: - '@swc/helpers': 0.5.21 - '@jridgewell/gen-mapping@0.3.13': dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -2200,19 +2170,19 @@ snapshots: dependencies: acorn: 8.16.0 - '@sveltejs/adapter-node@5.5.4(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))': + '@sveltejs/adapter-node@5.5.4(@sveltejs/kit@2.57.1(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)))': dependencies: '@rollup/plugin-commonjs': 29.0.2(rollup@4.60.0) '@rollup/plugin-json': 6.1.0(rollup@4.60.0) '@rollup/plugin-node-resolve': 16.0.3(rollup@4.60.0) - '@sveltejs/kit': 2.55.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)) + '@sveltejs/kit': 2.57.1(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)) rollup: 4.60.0 - '@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1))': + '@sveltejs/kit@2.57.1(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0))': dependencies: '@standard-schema/spec': 1.1.0 '@sveltejs/acorn-typescript': 1.0.9(acorn@8.16.0) - '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)) + '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.54.1)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)) '@types/cookie': 0.6.0 acorn: 8.16.0 cookie: 0.6.0 @@ -2224,30 +2194,26 @@ snapshots: set-cookie-parser: 3.1.0 sirv: 3.0.2 svelte: 5.54.1 - vite: 7.3.1(@types/node@22.19.15)(jiti@2.6.1) + vite: 7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0) optionalDependencies: typescript: 5.9.3 - '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1))': + '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)))(svelte@5.54.1)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)) + '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.54.1)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)) obug: 2.1.1 svelte: 5.54.1 - vite: 7.3.1(@types/node@22.19.15)(jiti@2.6.1) + vite: 7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0) - '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1))': + '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)) + '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)))(svelte@5.54.1)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)) deepmerge: 4.3.1 magic-string: 0.30.21 obug: 2.1.1 svelte: 5.54.1 - vite: 7.3.1(@types/node@22.19.15)(jiti@2.6.1) - vitefu: 1.1.2(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)) - - '@swc/helpers@0.5.21': - dependencies: - tslib: 2.8.1 + vite: 7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0) + vitefu: 1.1.2(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)) '@testing-library/svelte-core@1.0.0(svelte@5.54.1)': dependencies: @@ -2365,29 +2331,29 @@ snapshots: '@typescript-eslint/types': 8.57.1 eslint-visitor-keys: 5.0.1 - '@vitest/browser-playwright@4.1.0(playwright@1.58.2)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1))(vitest@4.1.0)': + '@vitest/browser-playwright@4.1.0(playwright@1.58.2)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0))(vitest@4.1.0)': dependencies: - '@vitest/browser': 4.1.0(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1))(vitest@4.1.0) - '@vitest/mocker': 4.1.0(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)) + '@vitest/browser': 4.1.0(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0))(vitest@4.1.0) + '@vitest/mocker': 4.1.0(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)) playwright: 1.58.2 tinyrainbow: 3.1.0 - vitest: 4.1.0(@types/node@22.19.15)(@vitest/browser-playwright@4.1.0)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)) + vitest: 4.1.0(@types/node@22.19.15)(@vitest/browser-playwright@4.1.0)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser@4.1.0(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1))(vitest@4.1.0)': + '@vitest/browser@4.1.0(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0))(vitest@4.1.0)': dependencies: '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.0(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)) + '@vitest/mocker': 4.1.0(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)) '@vitest/utils': 4.1.0 magic-string: 0.30.21 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.0 - vitest: 4.1.0(@types/node@22.19.15)(@vitest/browser-playwright@4.1.0)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)) + vitest: 4.1.0(@types/node@22.19.15)(@vitest/browser-playwright@4.1.0)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)) ws: 8.20.0 transitivePeerDependencies: - bufferutil @@ -2404,13 +2370,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.0(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1))': + '@vitest/mocker@4.1.0(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0))': dependencies: '@vitest/spy': 4.1.0 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@22.19.15)(jiti@2.6.1) + vite: 7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0) '@vitest/pretty-format@4.1.0': dependencies: @@ -2479,19 +2445,6 @@ snapshots: balanced-match@4.0.4: {} - bits-ui@2.17.3(@internationalized/date@3.12.1)(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1): - dependencies: - '@floating-ui/core': 1.7.5 - '@floating-ui/dom': 1.7.6 - '@internationalized/date': 3.12.1 - esm-env: 1.2.2 - runed: 0.35.1(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1) - svelte: 5.54.1 - svelte-toolbelt: 0.10.6(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1) - tabbable: 6.4.0 - transitivePeerDependencies: - - '@sveltejs/kit' - brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -2616,10 +2569,11 @@ snapshots: delayed-stream@1.0.0: {} - dequal@2.0.3: {} - destr@2.0.5: {} + detect-libc@2.1.2: + optional: true + devalue@5.6.4: {} dotenv@17.3.1: {} @@ -2797,6 +2751,10 @@ snapshots: optionalDependencies: picomatch: 4.0.3 + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -2905,8 +2863,6 @@ snapshots: imurmurhash@0.1.4: {} - inline-style-parser@0.2.7: {} - is-core-module@2.16.1: dependencies: hasown: 2.0.2 @@ -2968,6 +2924,56 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + optional: true + lilconfig@2.1.0: {} locate-character@3.0.0: {} @@ -2980,8 +2986,6 @@ snapshots: loglevel@1.9.2: {} - lz-string@1.5.0: {} - magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -3068,6 +3072,8 @@ snapshots: picomatch@4.0.3: {} + picomatch@4.0.4: {} + pkg-types@2.3.0: dependencies: confbox: 0.2.4 @@ -3177,15 +3183,6 @@ snapshots: run-applescript@7.1.0: {} - runed@0.35.1(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1): - dependencies: - dequal: 2.0.3 - esm-env: 1.2.2 - lz-string: 1.5.0 - svelte: 5.54.1 - optionalDependencies: - '@sveltejs/kit': 2.55.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)) - sade@1.8.1: dependencies: mri: 1.2.0 @@ -3196,14 +3193,6 @@ snapshots: set-cookie-parser@3.1.0: {} - shadcn-svelte@1.2.7(svelte@5.54.1): - dependencies: - commander: 14.0.3 - node-fetch-native: 1.6.7 - postcss: 8.5.8 - svelte: 5.54.1 - tailwind-merge: 3.5.0 - shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -3226,21 +3215,17 @@ snapshots: strip-json-comments@3.1.1: {} - style-to-object@1.0.14: - dependencies: - inline-style-parser: 0.2.7 - supports-color@7.2.0: dependencies: has-flag: 4.0.0 supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.4.5(picomatch@4.0.3)(svelte@5.54.1)(typescript@5.9.3): + svelte-check@4.4.5(picomatch@4.0.4)(svelte@5.54.1)(typescript@5.9.3): dependencies: '@jridgewell/trace-mapping': 0.3.31 chokidar: 4.0.3 - fdir: 6.5.0(picomatch@4.0.3) + fdir: 6.5.0(picomatch@4.0.4) picocolors: 1.1.1 sade: 1.8.1 svelte: 5.54.1 @@ -3260,15 +3245,6 @@ snapshots: optionalDependencies: svelte: 5.54.1 - svelte-toolbelt@0.10.6(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1): - dependencies: - clsx: 2.1.1 - runed: 0.35.1(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.54.1)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1)(typescript@5.9.3)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)))(svelte@5.54.1) - style-to-object: 1.0.14 - svelte: 5.54.1 - transitivePeerDependencies: - - '@sveltejs/kit' - svelte@5.54.1: dependencies: '@jridgewell/remapping': 2.3.5 @@ -3288,18 +3264,6 @@ snapshots: magic-string: 0.30.21 zimmerframe: 1.1.4 - tabbable@6.4.0: {} - - tailwind-merge@3.5.0: {} - - tailwind-variants@3.2.2(tailwind-merge@3.5.0)(tailwindcss@4.2.2): - dependencies: - tailwindcss: 4.2.2 - optionalDependencies: - tailwind-merge: 3.5.0 - - tailwindcss@4.2.2: {} - tinybench@2.9.0: {} tinyexec@1.0.4: {} @@ -3317,8 +3281,6 @@ snapshots: dependencies: typescript: 5.9.3 - tslib@2.8.1: {} - tw-animate-css@1.4.0: {} type-check@0.4.0: @@ -3352,11 +3314,11 @@ snapshots: optionalDependencies: typescript: 5.9.3 - vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1): + vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0): dependencies: esbuild: 0.27.4 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 postcss: 8.5.8 rollup: 4.60.0 tinyglobby: 0.2.15 @@ -3364,22 +3326,23 @@ snapshots: '@types/node': 22.19.15 fsevents: 2.3.3 jiti: 2.6.1 + lightningcss: 1.32.0 - vitefu@1.1.2(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)): + vitefu@1.1.2(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)): optionalDependencies: - vite: 7.3.1(@types/node@22.19.15)(jiti@2.6.1) + vite: 7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0) vitest-browser-svelte@2.1.0(svelte@5.54.1)(vitest@4.1.0): dependencies: '@playwright/test': 1.58.2 '@testing-library/svelte-core': 1.0.0(svelte@5.54.1) svelte: 5.54.1 - vitest: 4.1.0(@types/node@22.19.15)(@vitest/browser-playwright@4.1.0)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)) + vitest: 4.1.0(@types/node@22.19.15)(@vitest/browser-playwright@4.1.0)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)) - vitest@4.1.0(@types/node@22.19.15)(@vitest/browser-playwright@4.1.0)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)): + vitest@4.1.0(@types/node@22.19.15)(@vitest/browser-playwright@4.1.0)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)): dependencies: '@vitest/expect': 4.1.0 - '@vitest/mocker': 4.1.0(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1)) + '@vitest/mocker': 4.1.0(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0)) '@vitest/pretty-format': 4.1.0 '@vitest/runner': 4.1.0 '@vitest/snapshot': 4.1.0 @@ -3396,11 +3359,11 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 7.3.1(@types/node@22.19.15)(jiti@2.6.1) + vite: 7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.19.15 - '@vitest/browser-playwright': 4.1.0(playwright@1.58.2)(vite@7.3.1(@types/node@22.19.15)(jiti@2.6.1))(vitest@4.1.0) + '@vitest/browser-playwright': 4.1.0(playwright@1.58.2)(vite@7.3.2(@types/node@22.19.15)(jiti@2.6.1)(lightningcss@1.32.0))(vitest@4.1.0) transitivePeerDependencies: - msw diff --git a/frontend/src/app.css b/frontend/src/app.css index 336acbe..38214a2 100644 --- a/frontend/src/app.css +++ b/frontend/src/app.css @@ -1,15 +1,405 @@ -@import "tw-animate-css"; -@import "shadcn-svelte/tailwind.css"; -@import "@fontsource-variable/inter"; +/* ========================================================================== + Design System: The Editorial Stillness + ========================================================================== */ -@layer base { - * { - @apply border-border outline-ring/50; - } - body { - @apply bg-background text-foreground; - } - html { - @apply font-sans; - } -} \ No newline at end of file +/* -------------------------------------------------------------------------- + Fonts + -------------------------------------------------------------------------- */ + +@font-face { + font-family: archivo; /* set name */ + src: url('/fonts/Archivo-Medium.woff2'); /* url of the font */ + font-weight: 500; +} + +@font-face { + font-family: archivo; /* set name */ + src: url('/fonts/Archivo-Regular.woff2'); /* url of the font */ + font-weight: normal; +} + +/* -------------------------------------------------------------------------- + Design Tokens + -------------------------------------------------------------------------- */ + +:root { + /* --- Color: Primary --- */ + --color-primary: #516356; + --color-on-primary: #e9fded; + --color-primary-container: #c8d8c8; + --color-on-primary-container: #2f342e; + + /* --- Color: Secondary --- */ + --color-secondary-container: #dde4de; + --color-on-secondary-container: #2f342e; + + /* --- Color: Surface Hierarchy (light → dark = elevated → recessed) --- */ + --color-surface-container-lowest: #ffffff; /* most elevated */ + --color-surface-container-low: #f4f4ef; + --color-surface: #faf9f5; /* base */ + --color-surface-container: #eeede9; + --color-surface-container-high: #e8e8e3; + --color-surface-container-highest: #e2e1dd; + --color-surface-dim: #d6dcd2; /* recessed utility */ + + /* --- Color: On-Surface --- */ + --color-on-surface: #2f342e; /* replaces pure black */ + --color-on-surface-variant: #5c605b; + + /* --- Color: Outline --- */ + --color-outline: #8c908b; + --color-outline-variant: #afb3ac; /* use at 20% opacity as "ghost border" */ + + /* --- Typography: Font Families --- */ + --font-display: 'archivo', sans-serif; + --font-body: 'Newsreader', serif; + --font-label: 'Inter', sans-serif; + + /* --- Typography: Scale --- */ + --text-display-lg: 3.5rem; /* article titles */ + --text-display-md: 2.75rem; + --text-display-sm: 2.25rem; + --text-headline-lg: 1.875rem; + --text-headline-md: 1.5rem; + --text-headline-sm: 1.25rem; + --text-title-lg: 1.125rem; + --text-title-md: 1rem; + --text-body-xl: 1.25rem; /* long-form reading standard */ + --text-body-lg: 1rem; + --text-body-md: 0.9375rem; + --text-body-sm: 0.875rem; + --text-label-lg: 0.875rem; + --text-label-md: 0.75rem; /* metadata, all-caps */ + --text-label-sm: 0.6875rem; + + /* --- Typography: Weights --- */ + --weight-light: 300; + --weight-regular: 400; + --weight-medium: 500; + --weight-semibold: 600; + --weight-bold: 700; + + /* --- Typography: Line Height --- */ + --leading-tight: 1.2; + --leading-snug: 1.375; + --leading-normal: 1.5; + --leading-relaxed: 1.6; /* "Digital Paper" body text minimum */ + --leading-loose: 1.8; + + /* --- Typography: Letter Spacing --- */ + --tracking-tight: -0.025em; + --tracking-normal: 0em; + --tracking-wide: 0.05rem; /* label-md metadata */ + --tracking-wider: 0.08rem; + + /* --- Spacing Scale (base-4) --- */ + --space-1: 0.25rem; /* 4px */ + --space-2: 0.5rem; /* 8px */ + --space-3: 1rem; /* 16px — list item separation */ + --space-4: 1.4rem; /* ~22px — list item group separation */ + --space-5: 1.75rem; /* 28px */ + --space-6: 2rem; /* 32px */ + --space-8: 3rem; /* 48px */ + --space-10: 4rem; /* 64px */ + --space-12: 4.5rem; /* 72px */ + --space-16: 5.5rem; /* 88px — top-of-page breathability */ + + /* --- Border Radius --- */ + --radius-xs: 0.125rem; + --radius-sm: 0.25rem; + --radius-md: 0.375rem; /* primary button */ + --radius-lg: 0.75rem; + --radius-xl: 1.25rem; + --radius-full: 9999px; + + /* --- Elevation: Ambient "Tonal Shadow" --- */ + --shadow-tonal-sm: 0 4px 16px 0 color-mix(in srgb, var(--color-on-surface) 5%, transparent); + --shadow-tonal-md: 0 8px 32px 0 color-mix(in srgb, var(--color-on-surface) 5%, transparent); + + /* --- Motion --- */ + --duration-fast: 100ms; + --duration-normal: 200ms; + --duration-slow: 400ms; + --ease-standard: cubic-bezier(0.2, 0, 0, 1); + + /* --- Glass / Frosted Effect --- */ + --glass-bg: color-mix(in srgb, var(--color-surface) 80%, transparent); + --glass-blur: 24px; +} + +/* -------------------------------------------------------------------------- + Reset & Base + -------------------------------------------------------------------------- */ + +*, +*::before, +*::after { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html { + font-size: 16px; + -webkit-text-size-adjust: 100%; + scroll-behavior: smooth; +} + +body { + font-family: var(--font-body); + font-size: var(--text-body-lg); + font-weight: var(--weight-regular); + line-height: var(--leading-relaxed); + color: var(--color-on-surface); + background-color: var(--color-surface); + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +/* -------------------------------------------------------------------------- + Typography Utilities + -------------------------------------------------------------------------- */ + +.display-lg { + font-family: var(--font-display); + font-size: var(--text-display-lg); + font-weight: var(--weight-bold); + line-height: var(--leading-tight); + letter-spacing: var(--tracking-tight); +} + +.headline-md { + font-family: var(--font-display); + font-size: var(--text-headline-md); + font-weight: var(--weight-semibold); + line-height: var(--leading-snug); +} + +.label-md { + font-family: var(--font-label); + font-size: var(--text-label-md); + font-weight: var(--weight-medium); + letter-spacing: var(--tracking-wide); + text-transform: uppercase; +} + +.link { + color: var(--color-primary); + text-decoration: none; + font-weight: var(--weight-medium); + transition: opacity var(--duration-fast) var(--ease-standard); +} + +.link:hover { + opacity: 0.7; +} + +/* -------------------------------------------------------------------------- + Component: Form + -------------------------------------------------------------------------- */ + +.form { + display: flex; + flex-direction: column; + gap: var(--space-4); +} + +.form-header { + margin-bottom: var(--space-6); +} + +.form-eyebrow { + font-family: var(--font-label); + font-size: var(--text-label-md); + font-weight: var(--weight-medium); + letter-spacing: var(--tracking-wide); + text-transform: uppercase; + color: var(--color-on-surface-variant); + margin-bottom: var(--space-1); +} + +.form-title { + font-family: var(--font-display); + font-size: var(--text-headline-lg); + font-weight: var(--weight-semibold); + line-height: var(--leading-snug); + color: var(--color-on-surface); +} + +.form-footer { + display: flex; + align-items: center; + gap: var(--space-2); + margin-top: var(--space-6); + font-family: var(--font-label); + font-size: var(--text-body-sm); + color: var(--color-on-surface-variant); +} + +/* -------------------------------------------------------------------------- + Component: Button + -------------------------------------------------------------------------- */ + +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: var(--space-2); + padding: var(--space-2) var(--space-4); + border: none; + border-radius: var(--radius-md); + font-family: var(--font-display); + font-size: var(--text-label-lg); + font-weight: var(--weight-medium); + letter-spacing: var(--tracking-wide); + cursor: pointer; + text-decoration: none; + transition: + opacity var(--duration-normal) var(--ease-standard), + background-color var(--duration-normal) var(--ease-standard); +} + +.btn-primary { + background-color: var(--color-primary); + color: var(--color-on-primary); +} + +.btn-primary:hover { + opacity: 0.88; +} + +.btn-secondary { + background-color: var(--color-secondary-container); + color: var(--color-on-secondary-container); +} + +.btn-ghost { + background: none; + color: var(--color-primary); + padding-inline: var(--space-2); +} + +/* -------------------------------------------------------------------------- + Component: Input + -------------------------------------------------------------------------- */ + +.field { + display: flex; + flex-direction: column; + gap: var(--space-1); +} + +.field-label { + font-family: var(--font-label); + font-size: var(--text-label-md); + font-weight: var(--weight-medium); + letter-spacing: var(--tracking-wide); + text-transform: uppercase; + color: var(--color-on-surface-variant); +} + +.field-input { + background-color: var(--color-surface-container-high); + color: var(--color-on-surface); + border: none; + border-bottom: 1px solid color-mix(in srgb, var(--color-outline-variant) 20%, transparent); + border-radius: var(--radius-sm) var(--radius-sm) 0 0; + padding: var(--space-2) var(--space-3); + font-family: var(--font-body); + font-size: var(--text-body-lg); + line-height: var(--leading-normal); + outline: none; + width: 100%; + transition: border-color var(--duration-fast) var(--ease-standard); +} + +.field-disabled { + font-family: var(--font-body); + font-size: var(--text-body-lg); + color: var(--color-on-surface-variant); + padding: var(--space-2) var(--space-3); + background-color: var(--color-surface-container); + border-radius: var(--radius-sm) var(--radius-sm) 0 0; + border-bottom: 1px solid color-mix(in srgb, var(--color-outline-variant) 20%, transparent); +} + +.field-input::placeholder { + color: var(--color-outline-variant); +} + +.field-input:focus { + border-bottom: 2px solid var(--color-primary); +} + +.field-select { + background-color: var(--color-surface-container-high); + color: var(--color-on-surface); + border: none; + border-bottom: 1px solid color-mix(in srgb, var(--color-outline-variant) 20%, transparent); + border-radius: var(--radius-sm) var(--radius-sm) 0 0; + padding: var(--space-2) var(--space-8) var(--space-2) var(--space-3); + font-family: var(--font-body); + font-size: var(--text-body-lg); + line-height: var(--leading-normal); + outline: none; + width: 100%; + cursor: pointer; + appearance: none; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%235c605b' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); + background-repeat: no-repeat; + background-position: right var(--space-3) center; + transition: border-color var(--duration-fast) var(--ease-standard); +} + +.field-select:focus { + border-bottom: 2px solid var(--color-primary); +} + +.field-textarea { + background-color: var(--color-surface-container-high); + color: var(--color-on-surface); + border: none; + border-bottom: 1px solid color-mix(in srgb, var(--color-outline-variant) 20%, transparent); + border-radius: var(--radius-sm) var(--radius-sm) 0 0; + padding: var(--space-2) var(--space-3); + font-family: var(--font-body); + font-size: var(--text-body-lg); + line-height: var(--leading-relaxed); + outline: none; + width: 100%; + min-height: 14rem; + resize: vertical; + transition: border-color var(--duration-fast) var(--ease-standard); +} + +.field-textarea::placeholder { + color: var(--color-outline-variant); +} + +.field-textarea:focus { + border-bottom: 2px solid var(--color-primary); +} + +.field-hint { + font-family: var(--font-label); + font-size: var(--text-label-md); + color: var(--color-on-surface-variant); + margin-top: var(--space-1); +} + +/* -------------------------------------------------------------------------- + Component: Alert + -------------------------------------------------------------------------- */ + +.alert { + padding: var(--space-3); + border-radius: var(--radius-md); + font-family: var(--font-label); + font-size: var(--text-body-sm); +} + +.alert-error { + background-color: color-mix(in srgb, #b3261e 10%, var(--color-surface)); + color: #b3261e; + border-left: 3px solid #b3261e; +} diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 62cfde4..282a635 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -3,33 +3,33 @@ import { playwright } from '@vitest/browser-playwright'; import { sveltekit } from '@sveltejs/kit/vite'; export default defineConfig({ - plugins: [sveltekit()], - test: { - expect: { requireAssertions: true }, - projects: [ - { - extends: './vite.config.ts', - test: { - name: 'client', - browser: { - enabled: true, - provider: playwright(), - instances: [{ browser: 'chromium', headless: true }] - }, - include: ['src/**/*.svelte.{test,spec}.{js,ts}'], - exclude: ['src/lib/server/**'] - } - }, + plugins: [sveltekit()], + test: { + expect: { requireAssertions: true }, + projects: [ + { + extends: './vite.config.ts', + test: { + name: 'client', + browser: { + enabled: true, + provider: playwright(), + instances: [{ browser: 'chromium', headless: true }] + }, + include: ['src/**/*.svelte.{test,spec}.{js,ts}'], + exclude: ['src/lib/server/**'] + } + }, - { - extends: './vite.config.ts', - test: { - name: 'server', - environment: 'node', - include: ['src/**/*.{test,spec}.{js,ts}'], - exclude: ['src/**/*.svelte.{test,spec}.{js,ts}'] - } - } - ] - } + { + extends: './vite.config.ts', + test: { + name: 'server', + environment: 'node', + include: ['src/**/*.{test,spec}.{js,ts}'], + exclude: ['src/**/*.svelte.{test,spec}.{js,ts}'] + } + } + ] + } });