diff --git a/webapp/.prettierrc b/webapp/.prettierrc index 4f18a0f..98a1202 100644 --- a/webapp/.prettierrc +++ b/webapp/.prettierrc @@ -6,7 +6,15 @@ "singleQuote": true, "printWidth": 100, "plugins": [ - "prettier-plugin-svelte" + "prettier-plugin-svelte", + "prettier-plugin-tailwindcss", + "@ianvs/prettier-plugin-sort-imports" ], - "svelteIndentScriptAndStyle": false + "svelteIndentScriptAndStyle": false, + "tailwindStylesheet": "./src/app.css", + "tailwindFunctions": ["clsx", "twMerge", "cn"], + "importOrder": ["", "", "^~icons/", "^$lib/", "^[./]"], + "importOrderParserPlugins": ["typescript"], + "importOrderTypeScriptVersion": "5.9.2", + "importOrderCaseSensitive": true } diff --git a/webapp/components.json b/webapp/components.json index 5e0a61c..646708c 100644 --- a/webapp/components.json +++ b/webapp/components.json @@ -1,16 +1,16 @@ { - "$schema": "https://shadcn-svelte.com/schema.json", - "tailwind": { - "css": "src/app.css", - "baseColor": "stone" - }, - "aliases": { - "components": "$lib/components", - "utils": "$lib/utils", - "ui": "$lib/components/ui", - "hooks": "$lib/hooks", - "lib": "$lib" - }, - "typescript": true, - "registry": "https://shadcn-svelte.com/registry" + "$schema": "https://shadcn-svelte.com/schema.json", + "tailwind": { + "css": "src/app.css", + "baseColor": "stone" + }, + "aliases": { + "components": "$lib/components", + "utils": "$lib/utils", + "ui": "$lib/components/ui", + "hooks": "$lib/hooks", + "lib": "$lib" + }, + "typescript": true, + "registry": "https://shadcn-svelte.com/registry" } diff --git a/webapp/index.html b/webapp/index.html index b1b437d..b9353cd 100644 --- a/webapp/index.html +++ b/webapp/index.html @@ -1,4 +1,4 @@ - + @@ -7,12 +7,18 @@ - + - + Write to Inkclip diff --git a/webapp/package.json b/webapp/package.json index acd2823..0898538 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -10,13 +10,14 @@ }, "devDependencies": { "@fontsource-variable/ibm-plex-sans": "^5.2.8", - "@iconify/json": "^2.2.427", + "@ianvs/prettier-plugin-sort-imports": "^4.7.0", + "@iconify/json": "^2.2.428", "@internationalized/date": "^3.10.1", - "@lucide/svelte": "^0.561.0", + "@lucide/svelte": "^0.562.0", "@sveltejs/vite-plugin-svelte": "^6.2.4", "@tailwindcss/vite": "^4.1.18", "@tsconfig/svelte": "^5.0.6", - "@types/node": "^22.19.5", + "@types/node": "^24.10.8", "@types/w3c-web-hid": "^1.0.6", "@variegated-coffee/serde-postcard-ts": "^0.1.4", "autoprefixer": "^10.4.23", @@ -25,16 +26,17 @@ "mode-watcher": "^1.1.0", "prettier": "^3.7.4", "prettier-plugin-svelte": "^3.4.1", - "svelte": "^5.46.1", + "prettier-plugin-tailwindcss": "^0.7.2", + "svelte": "^5.46.3", "svelte-sonner": "^1.0.7", "tailwind-merge": "^3.4.0", "tailwind-variants": "^3.2.2", "tailwindcss": "^4.1.18", "tw-animate-css": "^1.4.0", "typescript": "^5.9.3", - "unplugin-icons": "^22.5.0", + "unplugin-icons": "^23.0.1", "vite": "^7.3.1", - "wrangler": "^4.58.0" + "wrangler": "^4.59.1" }, "packageManager": "pnpm@10.27.0+sha512.72d699da16b1179c14ba9e64dc71c9a40988cbdc65c264cb0e489db7de917f20dcf4d64d8723625f2969ba52d4b7e2a1170682d9ac2a5dcaeaab732b7e16f04a" } diff --git a/webapp/pnpm-lock.yaml b/webapp/pnpm-lock.yaml index 7a299e7..c3fd9b5 100644 --- a/webapp/pnpm-lock.yaml +++ b/webapp/pnpm-lock.yaml @@ -11,27 +11,30 @@ importers: '@fontsource-variable/ibm-plex-sans': specifier: ^5.2.8 version: 5.2.8 + '@ianvs/prettier-plugin-sort-imports': + specifier: ^4.7.0 + version: 4.7.0(prettier@3.7.4) '@iconify/json': - specifier: ^2.2.427 - version: 2.2.427 + specifier: ^2.2.428 + version: 2.2.428 '@internationalized/date': specifier: ^3.10.1 version: 3.10.1 '@lucide/svelte': - specifier: ^0.561.0 - version: 0.561.0(svelte@5.46.1) + specifier: ^0.562.0 + version: 0.562.0(svelte@5.46.3) '@sveltejs/vite-plugin-svelte': specifier: ^6.2.4 - version: 6.2.4(svelte@5.46.1)(vite@7.3.1(@types/node@22.19.5)(jiti@2.6.1)(lightningcss@1.30.2)) + version: 6.2.4(svelte@5.46.3)(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(lightningcss@1.30.2)) '@tailwindcss/vite': specifier: ^4.1.18 - version: 4.1.18(vite@7.3.1(@types/node@22.19.5)(jiti@2.6.1)(lightningcss@1.30.2)) + version: 4.1.18(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(lightningcss@1.30.2)) '@tsconfig/svelte': specifier: ^5.0.6 version: 5.0.6 '@types/node': - specifier: ^22.19.5 - version: 22.19.5 + specifier: ^24.10.8 + version: 24.10.8 '@types/w3c-web-hid': specifier: ^1.0.6 version: 1.0.6 @@ -43,25 +46,28 @@ importers: version: 10.4.23(postcss@8.5.6) bits-ui: specifier: ^2.15.4 - version: 2.15.4(@internationalized/date@3.10.1)(svelte@5.46.1) + version: 2.15.4(@internationalized/date@3.10.1)(svelte@5.46.3) clsx: specifier: ^2.1.1 version: 2.1.1 mode-watcher: specifier: ^1.1.0 - version: 1.1.0(svelte@5.46.1) + version: 1.1.0(svelte@5.46.3) prettier: specifier: ^3.7.4 version: 3.7.4 prettier-plugin-svelte: specifier: ^3.4.1 - version: 3.4.1(prettier@3.7.4)(svelte@5.46.1) + version: 3.4.1(prettier@3.7.4)(svelte@5.46.3) + prettier-plugin-tailwindcss: + specifier: ^0.7.2 + version: 0.7.2(@ianvs/prettier-plugin-sort-imports@4.7.0(prettier@3.7.4))(prettier-plugin-svelte@3.4.1(prettier@3.7.4)(svelte@5.46.3))(prettier@3.7.4) svelte: - specifier: ^5.46.1 - version: 5.46.1 + specifier: ^5.46.3 + version: 5.46.3 svelte-sonner: specifier: ^1.0.7 - version: 1.0.7(svelte@5.46.1) + version: 1.0.7(svelte@5.46.3) tailwind-merge: specifier: ^3.4.0 version: 3.4.0 @@ -78,26 +84,63 @@ importers: specifier: ^5.9.3 version: 5.9.3 unplugin-icons: - specifier: ^22.5.0 - version: 22.5.0(svelte@5.46.1) + specifier: ^23.0.1 + version: 23.0.1(svelte@5.46.3) vite: specifier: ^7.3.1 - version: 7.3.1(@types/node@22.19.5)(jiti@2.6.1)(lightningcss@1.30.2) + version: 7.3.1(@types/node@24.10.8)(jiti@2.6.1)(lightningcss@1.30.2) wrangler: - specifier: ^4.58.0 - version: 4.58.0 + specifier: ^4.59.1 + version: 4.59.1 packages: '@antfu/install-pkg@1.1.0': resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + '@babel/code-frame@7.28.6': + resolution: {integrity: sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.28.6': + resolution: {integrity: sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.28.0': + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.27.1': + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.28.6': + resolution: {integrity: sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.28.6': + resolution: {integrity: sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.28.6': + resolution: {integrity: sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==} + engines: {node: '>=6.9.0'} + '@cloudflare/kv-asset-handler@0.4.1': resolution: {integrity: sha512-Nu8ahitGFFJztxUml9oD/DLb7Z28C8cd8F46IVQ7y5Btz575pvMY8AqZsXkX7Gds29eCKdMgIHjIvzskHgPSFg==} engines: {node: '>=18.0.0'} - '@cloudflare/unenv-preset@2.8.0': - resolution: {integrity: sha512-oIAu6EdQ4zJuPwwKr9odIEqd8AV96z1aqi3RBEA4iKaJ+Vd3fvuI6m5EDC7/QCv+oaPIhy1SkYBYxmD09N+oZg==} + '@cloudflare/unenv-preset@2.9.0': + resolution: {integrity: sha512-99nEvuOTCGGGRNaIat8UVVXJ27aZK+U09SYDp0kVjQLwC9wyxcrQ28IqLwrQq2DjWLmBI1+UalGJzdPqYgPlRw==} peerDependencies: unenv: 2.0.0-rc.24 workerd: ^1.20251202.0 @@ -105,32 +148,32 @@ packages: workerd: optional: true - '@cloudflare/workerd-darwin-64@1.20260107.1': - resolution: {integrity: sha512-Srwe/IukVppkMU2qTndkFaKCmZBI7CnZoq4Y0U0gD/8158VGzMREHTqCii4IcCeHifwrtDqTWu8EcA1VBKI4mg==} + '@cloudflare/workerd-darwin-64@1.20260111.0': + resolution: {integrity: sha512-UGAjrGLev2/CMLZy7b+v1NIXA4Hupc/QJBFlJwMqldywMcJ/iEqvuUYYuVI2wZXuXeWkgmgFP87oFDQsg78YTQ==} engines: {node: '>=16'} cpu: [x64] os: [darwin] - '@cloudflare/workerd-darwin-arm64@1.20260107.1': - resolution: {integrity: sha512-aAYwU7zXW+UZFh/a4vHP5cs1ulTOcDRLzwU9547yKad06RlZ6ioRm7ovjdYvdqdmbI8mPd99v4LN9gMmecazQw==} + '@cloudflare/workerd-darwin-arm64@1.20260111.0': + resolution: {integrity: sha512-YFAZwidLCQVa6rKCCaiWrhA+eh87a7MUhyd9lat3KSbLBAGpYM+ORpyTXpi2Gjm3j6Mp1e/wtzcFTSeMIy2UqA==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] - '@cloudflare/workerd-linux-64@1.20260107.1': - resolution: {integrity: sha512-Wh7xWtFOkk6WY3CXe3lSqZ1anMkFcwy+qOGIjtmvQ/3nCOaG34vKNwPIE9iwryPupqkSuDmEqkosI1UUnSTh1A==} + '@cloudflare/workerd-linux-64@1.20260111.0': + resolution: {integrity: sha512-zx1GW6FwfOBjCV7QUCRzGRkViUtn3Is/zaaVPmm57xyy9sjtInx6/SdeBr2Y45tx9AnOP1CnaOFFdmH1P7VIEg==} engines: {node: '>=16'} cpu: [x64] os: [linux] - '@cloudflare/workerd-linux-arm64@1.20260107.1': - resolution: {integrity: sha512-NI0/5rdssdZZKYHxNG4umTmMzODByq86vSCEk8u4HQbGhRCQo7rV1eXn84ntSBdyWBzWdYGISCbeZMsgfIjSTg==} + '@cloudflare/workerd-linux-arm64@1.20260111.0': + resolution: {integrity: sha512-wFVKxNvCyjRaAcgiSnJNJAmIos3p3Vv6Uhf4pFUZ9JIxr69GNlLWlm9SdCPvtwNFAjzSoDaKzDwjj5xqpuCS6Q==} engines: {node: '>=16'} cpu: [arm64] os: [linux] - '@cloudflare/workerd-windows-64@1.20260107.1': - resolution: {integrity: sha512-gmBMqs606Gd/IhBEBPSL/hJAqy2L8IyPUjKtoqd/Ccy7GQxbSc0rYlRkxbQ9YzmqnuhrTVYvXuLscyWrpmAJkw==} + '@cloudflare/workerd-windows-64@1.20260111.0': + resolution: {integrity: sha512-zWgd77L7OI1BxgBbG+2gybDahIMgPX5iNo6e3LqcEz1Xm3KfiqgnDyMBcxeQ7xDrj7fHUGAlc//QnKvDchuUoQ==} engines: {node: '>=16'} cpu: [x64] os: [win32] @@ -466,8 +509,26 @@ packages: '@fontsource-variable/ibm-plex-sans@5.2.8': resolution: {integrity: sha512-n5PF2iFa0CZT0QYTPzxvZ39opC9LnU0zdoRccoADbs+Dtsd+lbXOZF7RNuIPHcQX1dKjF63sxnRImQIB5eD0Ag==} - '@iconify/json@2.2.427': - resolution: {integrity: sha512-QyFXZmAzOvYbDInKKpDgPJJNWB6oXKuAFxzRTXeIEzRP1q/E9GJidvyg5f/Tt3KE8gEP+RVD2793tUn1foFbcw==} + '@ianvs/prettier-plugin-sort-imports@4.7.0': + resolution: {integrity: sha512-soa2bPUJAFruLL4z/CnMfSEKGznm5ebz29fIa9PxYtu8HHyLKNE1NXAs6dylfw1jn/ilEIfO2oLLN6uAafb7DA==} + peerDependencies: + '@prettier/plugin-oxc': ^0.0.4 + '@vue/compiler-sfc': 2.7.x || 3.x + content-tag: ^4.0.0 + prettier: 2 || 3 || ^4.0.0-0 + prettier-plugin-ember-template-tag: ^2.1.0 + peerDependenciesMeta: + '@prettier/plugin-oxc': + optional: true + '@vue/compiler-sfc': + optional: true + content-tag: + optional: true + prettier-plugin-ember-template-tag: + optional: true + + '@iconify/json@2.2.428': + resolution: {integrity: sha512-HPfpZMJAfU3hBRUqD522/Ukf/AKNb7OCEMm6BeuQLF0CHx5TAz9mRuVDBYMg+LZOKye1ocrxBjOgdyCu0GlVbA==} '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -475,107 +536,139 @@ packages: '@iconify/utils@3.1.0': resolution: {integrity: sha512-Zlzem1ZXhI1iHeeERabLNzBHdOa4VhQbqAcOQaMKuTuyZCpwKbC2R4Dd0Zo3g9EAc+Y4fiarO8HIHRAth7+skw==} - '@img/sharp-darwin-arm64@0.33.5': - resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} + '@img/colour@1.0.0': + resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} + engines: {node: '>=18'} + + '@img/sharp-darwin-arm64@0.34.5': + resolution: {integrity: sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.33.5': - resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} + '@img/sharp-darwin-x64@0.34.5': + resolution: {integrity: sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.0.4': - resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} + '@img/sharp-libvips-darwin-arm64@1.2.4': + resolution: {integrity: sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.0.4': - resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} + '@img/sharp-libvips-darwin-x64@1.2.4': + resolution: {integrity: sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.0.4': - resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} + '@img/sharp-libvips-linux-arm64@1.2.4': + resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linux-arm@1.0.5': - resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} + '@img/sharp-libvips-linux-arm@1.2.4': + resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==} cpu: [arm] os: [linux] - '@img/sharp-libvips-linux-s390x@1.0.4': - resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} + '@img/sharp-libvips-linux-ppc64@1.2.4': + resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==} + cpu: [ppc64] + os: [linux] + + '@img/sharp-libvips-linux-riscv64@1.2.4': + resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==} + cpu: [riscv64] + os: [linux] + + '@img/sharp-libvips-linux-s390x@1.2.4': + resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==} cpu: [s390x] os: [linux] - '@img/sharp-libvips-linux-x64@1.0.4': - resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} + '@img/sharp-libvips-linux-x64@1.2.4': + resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==} cpu: [x64] os: [linux] - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': - resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==} cpu: [arm64] os: [linux] - '@img/sharp-libvips-linuxmusl-x64@1.0.4': - resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==} cpu: [x64] os: [linux] - '@img/sharp-linux-arm64@0.33.5': - resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} + '@img/sharp-linux-arm64@0.34.5': + resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linux-arm@0.33.5': - resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} + '@img/sharp-linux-arm@0.34.5': + resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm] os: [linux] - '@img/sharp-linux-s390x@0.33.5': - resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} + '@img/sharp-linux-ppc64@0.34.5': + resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [ppc64] + os: [linux] + + '@img/sharp-linux-riscv64@0.34.5': + resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [riscv64] + os: [linux] + + '@img/sharp-linux-s390x@0.34.5': + resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [s390x] os: [linux] - '@img/sharp-linux-x64@0.33.5': - resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} + '@img/sharp-linux-x64@0.34.5': + resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-linuxmusl-arm64@0.33.5': - resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} + '@img/sharp-linuxmusl-arm64@0.34.5': + resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [arm64] os: [linux] - '@img/sharp-linuxmusl-x64@0.33.5': - resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} + '@img/sharp-linuxmusl-x64@0.34.5': + resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [linux] - '@img/sharp-wasm32@0.33.5': - resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} + '@img/sharp-wasm32@0.34.5': + resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [wasm32] - '@img/sharp-win32-ia32@0.33.5': - resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} + '@img/sharp-win32-arm64@0.34.5': + resolution: {integrity: sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==} + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} + cpu: [arm64] + os: [win32] + + '@img/sharp-win32-ia32@0.34.5': + resolution: {integrity: sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.33.5': - resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} + '@img/sharp-win32-x64@0.34.5': + resolution: {integrity: sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} cpu: [x64] os: [win32] @@ -602,8 +695,8 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - '@lucide/svelte@0.561.0': - resolution: {integrity: sha512-vofKV2UFVrKE6I4ewKJ3dfCXSV6iP6nWVmiM83MLjsU91EeJcEg7LoWUABLp/aOTxj1HQNbJD1f3g3L0JQgH9A==} + '@lucide/svelte@0.562.0': + resolution: {integrity: sha512-wDMULwtTFN2Sc/TFBm6gfuVCNb4Y5P9LDrwxNnUbV52+IEU7NXZmvxwXoz+vrrpad6Xupq+Hw5eUlqIHEGhouw==} peerDependencies: svelte: ^5 @@ -867,8 +960,8 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} - '@types/node@22.19.5': - resolution: {integrity: sha512-HfF8+mYcHPcPypui3w3mvzuIErlNOh2OAG+BCeBZCEwyiD5ls2SiCwEyT47OELtf7M3nHxBdu0FsmzdKxkN52Q==} + '@types/node@24.10.8': + resolution: {integrity: sha512-r0bBaXu5Swb05doFYO2kTWHMovJnNVbCsII0fhesM8bNRlLhXIuckley4a2DaD+vOdmm5G+zGkQZAPZsF80+YQ==} '@types/w3c-web-hid@1.0.6': resolution: {integrity: sha512-IWyssXmRDo6K7s31dxf+U+x/XUWuVsl9qUIYbJmpUHPcTv/COfBCKw/F0smI45+gPV34brjyP30BFcIsHgYWLA==} @@ -932,20 +1025,6 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - color-string@1.9.1: - resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} - - color@4.2.3: - resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} - engines: {node: '>=12.5.0'} - confbox@0.1.8: resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} @@ -1043,9 +1122,6 @@ packages: inline-style-parser@0.2.7: resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} - is-arrayish@0.3.4: - resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} - is-reference@3.0.3: resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} @@ -1053,6 +1129,14 @@ packages: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + kleur@4.1.5: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} @@ -1146,8 +1230,8 @@ packages: engines: {node: '>=10.0.0'} hasBin: true - miniflare@4.20260107.0: - resolution: {integrity: sha512-X93sXczqbBq9ixoM6jnesmdTqp+4baVC/aM/DuPpRS0LK0XtcqaO75qPzNEvDEzBAHxwMAWRIum/9hg32YB8iA==} + miniflare@4.20260111.0: + resolution: {integrity: sha512-pUsbDlumPaTzliA+J9HMAM74nLR8wqpCQNOESximab51jAfvL7ZaP5Npzh4PWNV0Jfq28tlqazakuJcw6w5qlA==} engines: {node: '>=18.0.0'} hasBin: true @@ -1208,6 +1292,61 @@ packages: prettier: ^3.0.0 svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0 + prettier-plugin-tailwindcss@0.7.2: + resolution: {integrity: sha512-LkphyK3Fw+q2HdMOoiEHWf93fNtYJwfamoKPl7UwtjFQdei/iIBoX11G6j706FzN3ymX9mPVi97qIY8328vdnA==} + engines: {node: '>=20.19'} + peerDependencies: + '@ianvs/prettier-plugin-sort-imports': '*' + '@prettier/plugin-hermes': '*' + '@prettier/plugin-oxc': '*' + '@prettier/plugin-pug': '*' + '@shopify/prettier-plugin-liquid': '*' + '@trivago/prettier-plugin-sort-imports': '*' + '@zackad/prettier-plugin-twig': '*' + prettier: ^3.0 + prettier-plugin-astro: '*' + prettier-plugin-css-order: '*' + prettier-plugin-jsdoc: '*' + prettier-plugin-marko: '*' + prettier-plugin-multiline-arrays: '*' + prettier-plugin-organize-attributes: '*' + prettier-plugin-organize-imports: '*' + prettier-plugin-sort-imports: '*' + prettier-plugin-svelte: '*' + peerDependenciesMeta: + '@ianvs/prettier-plugin-sort-imports': + optional: true + '@prettier/plugin-hermes': + optional: true + '@prettier/plugin-oxc': + optional: true + '@prettier/plugin-pug': + optional: true + '@shopify/prettier-plugin-liquid': + optional: true + '@trivago/prettier-plugin-sort-imports': + optional: true + '@zackad/prettier-plugin-twig': + optional: true + prettier-plugin-astro: + optional: true + prettier-plugin-css-order: + optional: true + prettier-plugin-jsdoc: + optional: true + prettier-plugin-marko: + optional: true + prettier-plugin-multiline-arrays: + optional: true + prettier-plugin-organize-attributes: + optional: true + prettier-plugin-organize-imports: + optional: true + prettier-plugin-sort-imports: + optional: true + prettier-plugin-svelte: + optional: true + prettier@3.7.4: resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} engines: {node: '>=14'} @@ -1250,13 +1389,10 @@ packages: engines: {node: '>=10'} hasBin: true - sharp@0.33.5: - resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} + sharp@0.34.5: + resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} - simple-swizzle@0.2.4: - resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} - source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -1289,8 +1425,8 @@ packages: peerDependencies: svelte: ^5.0.0 - svelte@5.46.1: - resolution: {integrity: sha512-ynjfCHD3nP2el70kN5Pmg37sSi0EjOm9FgHYQdC4giWG/hzO3AatzXXJJgP305uIhGQxSufJLuYWtkY8uK/8RA==} + svelte@5.46.3: + resolution: {integrity: sha512-Y5juST3x+/ySty5tYJCVWa6Corkxpt25bUZQHqOceg9xfMUtDsFx6rCsG6cYf1cA6vzDi66HIvaki0byZZX95A==} engines: {node: '>=18'} tabbable@6.4.0: @@ -1338,8 +1474,8 @@ packages: ufo@1.6.2: resolution: {integrity: sha512-heMioaxBcG9+Znsda5Q8sQbWnLJSl98AFDXTO80wELWEzX3hordXsTdxrIfMQoO9IY1MEnoGoPjpoKpMj+Yx0Q==} - undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} undici@7.14.0: resolution: {integrity: sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ==} @@ -1348,15 +1484,13 @@ packages: unenv@2.0.0-rc.24: resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} - unplugin-icons@22.5.0: - resolution: {integrity: sha512-MBlMtT5RuMYZy4TZgqUL2OTtOdTUVsS1Mhj6G1pEzMlFJlEnq6mhUfoIt45gBWxHcsOdXJDWLg3pRZ+YmvAVWQ==} + unplugin-icons@23.0.1: + resolution: {integrity: sha512-rv0XEJepajKzDLvRUWASM8K+8+/CCfZn2jtogXqg6RIp7kpatRc/aFrVJn8ANQA09e++lPEEv9yX8cC9enc+QQ==} peerDependencies: '@svgr/core': '>=7.0.0' '@svgx/core': ^1.0.1 - '@vue/compiler-sfc': ^3.0.2 || ^2.7.0 + '@vue/compiler-sfc': ^3.0.2 svelte: ^3.0.0 || ^4.0.0 || ^5.0.0 - vue-template-compiler: ^2.6.12 - vue-template-es2015-compiler: ^1.9.0 peerDependenciesMeta: '@svgr/core': optional: true @@ -1366,10 +1500,6 @@ packages: optional: true svelte: optional: true - vue-template-compiler: - optional: true - vue-template-es2015-compiler: - optional: true unplugin@2.3.11: resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} @@ -1432,17 +1562,17 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - workerd@1.20260107.1: - resolution: {integrity: sha512-4ylAQJDdJZdMAUl2SbJgTa77YHpa88l6qmhiuCLNactP933+rifs7I0w1DslhUIFgydArUX5dNLAZnZhT7Bh7g==} + workerd@1.20260111.0: + resolution: {integrity: sha512-ov6Pt4k6d/ALfJja/EIHohT9IrY/f6GAa0arWEPat2qekp78xHbVM7jSxNWAMbaE7ZmnQQIFEGD1ZhAWZmQKIg==} engines: {node: '>=16'} hasBin: true - wrangler@4.58.0: - resolution: {integrity: sha512-Jm6EYtlt8iUcznOCPSMYC54DYkwrMNESzbH0Vh3GFHv/7XVw5gBC13YJAB+nWMRGJ+6B2dMzy/NVQS4ONL51Pw==} + wrangler@4.59.1: + resolution: {integrity: sha512-5DddGSNxHd6dOjREWTDQdovQlZ1Lh80NNRXZFQ4/CrK3fNyVIBj9tqCs9pmXMNrKQ/AnKNeYzEs/l1kr8rHhOg==} engines: {node: '>=20.0.0'} hasBin: true peerDependencies: - '@cloudflare/workers-types': ^4.20260107.1 + '@cloudflare/workers-types': ^4.20260111.0 peerDependenciesMeta: '@cloudflare/workers-types': optional: true @@ -1478,29 +1608,76 @@ snapshots: package-manager-detector: 1.6.0 tinyexec: 1.0.2 + '@babel/code-frame@7.28.6': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/generator@7.28.6': + dependencies: + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-globals@7.28.0': {} + + '@babel/helper-string-parser@7.27.1': {} + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/parser@7.28.6': + dependencies: + '@babel/types': 7.28.6 + + '@babel/template@7.28.6': + dependencies: + '@babel/code-frame': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/types': 7.28.6 + + '@babel/traverse@7.28.6': + dependencies: + '@babel/code-frame': 7.28.6 + '@babel/generator': 7.28.6 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.6 + '@babel/template': 7.28.6 + '@babel/types': 7.28.6 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.28.6': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@cloudflare/kv-asset-handler@0.4.1': dependencies: mime: 3.0.0 - '@cloudflare/unenv-preset@2.8.0(unenv@2.0.0-rc.24)(workerd@1.20260107.1)': + '@cloudflare/unenv-preset@2.9.0(unenv@2.0.0-rc.24)(workerd@1.20260111.0)': dependencies: unenv: 2.0.0-rc.24 optionalDependencies: - workerd: 1.20260107.1 + workerd: 1.20260111.0 - '@cloudflare/workerd-darwin-64@1.20260107.1': + '@cloudflare/workerd-darwin-64@1.20260111.0': optional: true - '@cloudflare/workerd-darwin-arm64@1.20260107.1': + '@cloudflare/workerd-darwin-arm64@1.20260111.0': optional: true - '@cloudflare/workerd-linux-64@1.20260107.1': + '@cloudflare/workerd-linux-64@1.20260111.0': optional: true - '@cloudflare/workerd-linux-arm64@1.20260107.1': + '@cloudflare/workerd-linux-arm64@1.20260111.0': optional: true - '@cloudflare/workerd-windows-64@1.20260107.1': + '@cloudflare/workerd-windows-64@1.20260111.0': optional: true '@cspotcode/source-map-support@0.8.1': @@ -1681,7 +1858,18 @@ snapshots: '@fontsource-variable/ibm-plex-sans@5.2.8': {} - '@iconify/json@2.2.427': + '@ianvs/prettier-plugin-sort-imports@4.7.0(prettier@3.7.4)': + dependencies: + '@babel/generator': 7.28.6 + '@babel/parser': 7.28.6 + '@babel/traverse': 7.28.6 + '@babel/types': 7.28.6 + prettier: 3.7.4 + semver: 7.7.3 + transitivePeerDependencies: + - supports-color + + '@iconify/json@2.2.428': dependencies: '@iconify/types': 2.0.0 pathe: 2.0.3 @@ -1694,79 +1882,100 @@ snapshots: '@iconify/types': 2.0.0 mlly: 1.8.0 - '@img/sharp-darwin-arm64@0.33.5': + '@img/colour@1.0.0': {} + + '@img/sharp-darwin-arm64@0.34.5': optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.0.4 + '@img/sharp-libvips-darwin-arm64': 1.2.4 optional: true - '@img/sharp-darwin-x64@0.33.5': + '@img/sharp-darwin-x64@0.34.5': optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.0.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 optional: true - '@img/sharp-libvips-darwin-arm64@1.0.4': + '@img/sharp-libvips-darwin-arm64@1.2.4': optional: true - '@img/sharp-libvips-darwin-x64@1.0.4': + '@img/sharp-libvips-darwin-x64@1.2.4': optional: true - '@img/sharp-libvips-linux-arm64@1.0.4': + '@img/sharp-libvips-linux-arm64@1.2.4': optional: true - '@img/sharp-libvips-linux-arm@1.0.5': + '@img/sharp-libvips-linux-arm@1.2.4': optional: true - '@img/sharp-libvips-linux-s390x@1.0.4': + '@img/sharp-libvips-linux-ppc64@1.2.4': optional: true - '@img/sharp-libvips-linux-x64@1.0.4': + '@img/sharp-libvips-linux-riscv64@1.2.4': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': + '@img/sharp-libvips-linux-s390x@1.2.4': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.0.4': + '@img/sharp-libvips-linux-x64@1.2.4': optional: true - '@img/sharp-linux-arm64@0.33.5': + '@img/sharp-libvips-linuxmusl-arm64@1.2.4': + optional: true + + '@img/sharp-libvips-linuxmusl-x64@1.2.4': + optional: true + + '@img/sharp-linux-arm64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.0.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 optional: true - '@img/sharp-linux-arm@0.33.5': + '@img/sharp-linux-arm@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.0.5 + '@img/sharp-libvips-linux-arm': 1.2.4 optional: true - '@img/sharp-linux-s390x@0.33.5': + '@img/sharp-linux-ppc64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.0.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 optional: true - '@img/sharp-linux-x64@0.33.5': + '@img/sharp-linux-riscv64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.0.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 optional: true - '@img/sharp-linuxmusl-arm64@0.33.5': + '@img/sharp-linux-s390x@0.34.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 optional: true - '@img/sharp-linuxmusl-x64@0.33.5': + '@img/sharp-linux-x64@0.34.5': optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.0.4 + '@img/sharp-libvips-linux-x64': 1.2.4 optional: true - '@img/sharp-wasm32@0.33.5': + '@img/sharp-linuxmusl-arm64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + optional: true + + '@img/sharp-linuxmusl-x64@0.34.5': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + optional: true + + '@img/sharp-wasm32@0.34.5': dependencies: '@emnapi/runtime': 1.8.1 optional: true - '@img/sharp-win32-ia32@0.33.5': + '@img/sharp-win32-arm64@0.34.5': optional: true - '@img/sharp-win32-x64@0.33.5': + '@img/sharp-win32-ia32@0.34.5': + optional: true + + '@img/sharp-win32-x64@0.34.5': optional: true '@internationalized/date@3.10.1': @@ -1797,9 +2006,9 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@lucide/svelte@0.561.0(svelte@5.46.1)': + '@lucide/svelte@0.562.0(svelte@5.46.3)': dependencies: - svelte: 5.46.1 + svelte: 5.46.3 '@poppinss/colors@4.1.6': dependencies: @@ -1896,22 +2105,22 @@ snapshots: dependencies: acorn: 8.15.0 - '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.46.1)(vite@7.3.1(@types/node@22.19.5)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.46.1)(vite@7.3.1(@types/node@22.19.5)(jiti@2.6.1)(lightningcss@1.30.2))': + '@sveltejs/vite-plugin-svelte-inspector@5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.46.3)(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.46.3)(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(lightningcss@1.30.2))': dependencies: - '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.46.1)(vite@7.3.1(@types/node@22.19.5)(jiti@2.6.1)(lightningcss@1.30.2)) + '@sveltejs/vite-plugin-svelte': 6.2.4(svelte@5.46.3)(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(lightningcss@1.30.2)) obug: 2.1.1 - svelte: 5.46.1 - vite: 7.3.1(@types/node@22.19.5)(jiti@2.6.1)(lightningcss@1.30.2) + svelte: 5.46.3 + vite: 7.3.1(@types/node@24.10.8)(jiti@2.6.1)(lightningcss@1.30.2) - '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.46.1)(vite@7.3.1(@types/node@22.19.5)(jiti@2.6.1)(lightningcss@1.30.2))': + '@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.46.3)(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(lightningcss@1.30.2))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.46.1)(vite@7.3.1(@types/node@22.19.5)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.46.1)(vite@7.3.1(@types/node@22.19.5)(jiti@2.6.1)(lightningcss@1.30.2)) + '@sveltejs/vite-plugin-svelte-inspector': 5.0.2(@sveltejs/vite-plugin-svelte@6.2.4(svelte@5.46.3)(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(lightningcss@1.30.2)))(svelte@5.46.3)(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(lightningcss@1.30.2)) deepmerge: 4.3.1 magic-string: 0.30.21 obug: 2.1.1 - svelte: 5.46.1 - vite: 7.3.1(@types/node@22.19.5)(jiti@2.6.1)(lightningcss@1.30.2) - vitefu: 1.1.1(vite@7.3.1(@types/node@22.19.5)(jiti@2.6.1)(lightningcss@1.30.2)) + svelte: 5.46.3 + vite: 7.3.1(@types/node@24.10.8)(jiti@2.6.1)(lightningcss@1.30.2) + vitefu: 1.1.1(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(lightningcss@1.30.2)) '@swc/helpers@0.5.18': dependencies: @@ -1978,20 +2187,20 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18 '@tailwindcss/oxide-win32-x64-msvc': 4.1.18 - '@tailwindcss/vite@4.1.18(vite@7.3.1(@types/node@22.19.5)(jiti@2.6.1)(lightningcss@1.30.2))': + '@tailwindcss/vite@4.1.18(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(lightningcss@1.30.2))': dependencies: '@tailwindcss/node': 4.1.18 '@tailwindcss/oxide': 4.1.18 tailwindcss: 4.1.18 - vite: 7.3.1(@types/node@22.19.5)(jiti@2.6.1)(lightningcss@1.30.2) + vite: 7.3.1(@types/node@24.10.8)(jiti@2.6.1)(lightningcss@1.30.2) '@tsconfig/svelte@5.0.6': {} '@types/estree@1.0.8': {} - '@types/node@22.19.5': + '@types/node@24.10.8': dependencies: - undici-types: 6.21.0 + undici-types: 7.16.0 '@types/w3c-web-hid@1.0.6': {} @@ -2018,15 +2227,15 @@ snapshots: baseline-browser-mapping@2.9.14: {} - bits-ui@2.15.4(@internationalized/date@3.10.1)(svelte@5.46.1): + bits-ui@2.15.4(@internationalized/date@3.10.1)(svelte@5.46.3): dependencies: '@floating-ui/core': 1.7.3 '@floating-ui/dom': 1.7.4 '@internationalized/date': 3.10.1 esm-env: 1.2.2 - runed: 0.35.1(svelte@5.46.1) - svelte: 5.46.1 - svelte-toolbelt: 0.10.6(svelte@5.46.1) + runed: 0.35.1(svelte@5.46.3) + svelte: 5.46.3 + svelte-toolbelt: 0.10.6(svelte@5.46.3) tabbable: 6.4.0 transitivePeerDependencies: - '@sveltejs/kit' @@ -2045,22 +2254,6 @@ snapshots: clsx@2.1.1: {} - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - color-string@1.9.1: - dependencies: - color-name: 1.1.4 - simple-swizzle: 0.2.4 - - color@4.2.3: - dependencies: - color-convert: 2.0.1 - color-string: 1.9.1 - confbox@0.1.8: {} confbox@0.2.2: {} @@ -2173,14 +2366,16 @@ snapshots: inline-style-parser@0.2.7: {} - is-arrayish@0.3.4: {} - is-reference@3.0.3: dependencies: '@types/estree': 1.0.8 jiti@2.6.1: {} + js-tokens@4.0.0: {} + + jsesc@3.1.0: {} + kleur@4.1.5: {} lightningcss-android-arm64@1.30.2: @@ -2248,17 +2443,17 @@ snapshots: mime@3.0.0: {} - miniflare@4.20260107.0: + miniflare@4.20260111.0: dependencies: '@cspotcode/source-map-support': 0.8.1 acorn: 8.14.0 acorn-walk: 8.3.2 exit-hook: 2.2.1 glob-to-regexp: 0.4.1 - sharp: 0.33.5 + sharp: 0.34.5 stoppable: 1.1.0 undici: 7.14.0 - workerd: 1.20260107.1 + workerd: 1.20260111.0 ws: 8.18.0 youch: 4.1.0-beta.10 zod: 3.25.76 @@ -2273,11 +2468,11 @@ snapshots: pkg-types: 1.3.1 ufo: 1.6.2 - mode-watcher@1.1.0(svelte@5.46.1): + mode-watcher@1.1.0(svelte@5.46.3): dependencies: - runed: 0.25.0(svelte@5.46.1) - svelte: 5.46.1 - svelte-toolbelt: 0.7.1(svelte@5.46.1) + runed: 0.25.0(svelte@5.46.3) + svelte: 5.46.3 + svelte-toolbelt: 0.7.1(svelte@5.46.3) ms@2.1.3: {} @@ -2317,10 +2512,17 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - prettier-plugin-svelte@3.4.1(prettier@3.7.4)(svelte@5.46.1): + prettier-plugin-svelte@3.4.1(prettier@3.7.4)(svelte@5.46.3): dependencies: prettier: 3.7.4 - svelte: 5.46.1 + svelte: 5.46.3 + + prettier-plugin-tailwindcss@0.7.2(@ianvs/prettier-plugin-sort-imports@4.7.0(prettier@3.7.4))(prettier-plugin-svelte@3.4.1(prettier@3.7.4)(svelte@5.46.3))(prettier@3.7.4): + dependencies: + prettier: 3.7.4 + optionalDependencies: + '@ianvs/prettier-plugin-sort-imports': 4.7.0(prettier@3.7.4) + prettier-plugin-svelte: 3.4.1(prettier@3.7.4)(svelte@5.46.3) prettier@3.7.4: {} @@ -2357,59 +2559,60 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.55.1 fsevents: 2.3.3 - runed@0.23.4(svelte@5.46.1): + runed@0.23.4(svelte@5.46.3): dependencies: esm-env: 1.2.2 - svelte: 5.46.1 + svelte: 5.46.3 - runed@0.25.0(svelte@5.46.1): + runed@0.25.0(svelte@5.46.3): dependencies: esm-env: 1.2.2 - svelte: 5.46.1 + svelte: 5.46.3 - runed@0.28.0(svelte@5.46.1): + runed@0.28.0(svelte@5.46.3): dependencies: esm-env: 1.2.2 - svelte: 5.46.1 + svelte: 5.46.3 - runed@0.35.1(svelte@5.46.1): + runed@0.35.1(svelte@5.46.3): dependencies: dequal: 2.0.3 esm-env: 1.2.2 lz-string: 1.5.0 - svelte: 5.46.1 + svelte: 5.46.3 semver@7.7.3: {} - sharp@0.33.5: + sharp@0.34.5: dependencies: - color: 4.2.3 + '@img/colour': 1.0.0 detect-libc: 2.1.2 semver: 7.7.3 optionalDependencies: - '@img/sharp-darwin-arm64': 0.33.5 - '@img/sharp-darwin-x64': 0.33.5 - '@img/sharp-libvips-darwin-arm64': 1.0.4 - '@img/sharp-libvips-darwin-x64': 1.0.4 - '@img/sharp-libvips-linux-arm': 1.0.5 - '@img/sharp-libvips-linux-arm64': 1.0.4 - '@img/sharp-libvips-linux-s390x': 1.0.4 - '@img/sharp-libvips-linux-x64': 1.0.4 - '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 - '@img/sharp-libvips-linuxmusl-x64': 1.0.4 - '@img/sharp-linux-arm': 0.33.5 - '@img/sharp-linux-arm64': 0.33.5 - '@img/sharp-linux-s390x': 0.33.5 - '@img/sharp-linux-x64': 0.33.5 - '@img/sharp-linuxmusl-arm64': 0.33.5 - '@img/sharp-linuxmusl-x64': 0.33.5 - '@img/sharp-wasm32': 0.33.5 - '@img/sharp-win32-ia32': 0.33.5 - '@img/sharp-win32-x64': 0.33.5 - - simple-swizzle@0.2.4: - dependencies: - is-arrayish: 0.3.4 + '@img/sharp-darwin-arm64': 0.34.5 + '@img/sharp-darwin-x64': 0.34.5 + '@img/sharp-libvips-darwin-arm64': 1.2.4 + '@img/sharp-libvips-darwin-x64': 1.2.4 + '@img/sharp-libvips-linux-arm': 1.2.4 + '@img/sharp-libvips-linux-arm64': 1.2.4 + '@img/sharp-libvips-linux-ppc64': 1.2.4 + '@img/sharp-libvips-linux-riscv64': 1.2.4 + '@img/sharp-libvips-linux-s390x': 1.2.4 + '@img/sharp-libvips-linux-x64': 1.2.4 + '@img/sharp-libvips-linuxmusl-arm64': 1.2.4 + '@img/sharp-libvips-linuxmusl-x64': 1.2.4 + '@img/sharp-linux-arm': 0.34.5 + '@img/sharp-linux-arm64': 0.34.5 + '@img/sharp-linux-ppc64': 0.34.5 + '@img/sharp-linux-riscv64': 0.34.5 + '@img/sharp-linux-s390x': 0.34.5 + '@img/sharp-linux-x64': 0.34.5 + '@img/sharp-linuxmusl-arm64': 0.34.5 + '@img/sharp-linuxmusl-x64': 0.34.5 + '@img/sharp-wasm32': 0.34.5 + '@img/sharp-win32-arm64': 0.34.5 + '@img/sharp-win32-ia32': 0.34.5 + '@img/sharp-win32-x64': 0.34.5 source-map-js@1.2.1: {} @@ -2421,28 +2624,28 @@ snapshots: supports-color@10.2.2: {} - svelte-sonner@1.0.7(svelte@5.46.1): + svelte-sonner@1.0.7(svelte@5.46.3): dependencies: - runed: 0.28.0(svelte@5.46.1) - svelte: 5.46.1 + runed: 0.28.0(svelte@5.46.3) + svelte: 5.46.3 - svelte-toolbelt@0.10.6(svelte@5.46.1): + svelte-toolbelt@0.10.6(svelte@5.46.3): dependencies: clsx: 2.1.1 - runed: 0.35.1(svelte@5.46.1) + runed: 0.35.1(svelte@5.46.3) style-to-object: 1.0.14 - svelte: 5.46.1 + svelte: 5.46.3 transitivePeerDependencies: - '@sveltejs/kit' - svelte-toolbelt@0.7.1(svelte@5.46.1): + svelte-toolbelt@0.7.1(svelte@5.46.3): dependencies: clsx: 2.1.1 - runed: 0.23.4(svelte@5.46.1) + runed: 0.23.4(svelte@5.46.3) style-to-object: 1.0.14 - svelte: 5.46.1 + svelte: 5.46.3 - svelte@5.46.1: + svelte@5.46.3: dependencies: '@jridgewell/remapping': 2.3.5 '@jridgewell/sourcemap-codec': 1.5.5 @@ -2489,7 +2692,7 @@ snapshots: ufo@1.6.2: {} - undici-types@6.21.0: {} + undici-types@7.16.0: {} undici@7.14.0: {} @@ -2497,17 +2700,15 @@ snapshots: dependencies: pathe: 2.0.3 - unplugin-icons@22.5.0(svelte@5.46.1): + unplugin-icons@23.0.1(svelte@5.46.3): dependencies: '@antfu/install-pkg': 1.1.0 '@iconify/utils': 3.1.0 - debug: 4.4.3 local-pkg: 1.1.2 + obug: 2.1.1 unplugin: 2.3.11 optionalDependencies: - svelte: 5.46.1 - transitivePeerDependencies: - - supports-color + svelte: 5.46.3 unplugin@2.3.11: dependencies: @@ -2522,7 +2723,7 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 - vite@7.3.1(@types/node@22.19.5)(jiti@2.6.1)(lightningcss@1.30.2): + vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(lightningcss@1.30.2): dependencies: esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) @@ -2531,35 +2732,35 @@ snapshots: rollup: 4.55.1 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 22.19.5 + '@types/node': 24.10.8 fsevents: 2.3.3 jiti: 2.6.1 lightningcss: 1.30.2 - vitefu@1.1.1(vite@7.3.1(@types/node@22.19.5)(jiti@2.6.1)(lightningcss@1.30.2)): + vitefu@1.1.1(vite@7.3.1(@types/node@24.10.8)(jiti@2.6.1)(lightningcss@1.30.2)): optionalDependencies: - vite: 7.3.1(@types/node@22.19.5)(jiti@2.6.1)(lightningcss@1.30.2) + vite: 7.3.1(@types/node@24.10.8)(jiti@2.6.1)(lightningcss@1.30.2) webpack-virtual-modules@0.6.2: {} - workerd@1.20260107.1: + workerd@1.20260111.0: optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20260107.1 - '@cloudflare/workerd-darwin-arm64': 1.20260107.1 - '@cloudflare/workerd-linux-64': 1.20260107.1 - '@cloudflare/workerd-linux-arm64': 1.20260107.1 - '@cloudflare/workerd-windows-64': 1.20260107.1 + '@cloudflare/workerd-darwin-64': 1.20260111.0 + '@cloudflare/workerd-darwin-arm64': 1.20260111.0 + '@cloudflare/workerd-linux-64': 1.20260111.0 + '@cloudflare/workerd-linux-arm64': 1.20260111.0 + '@cloudflare/workerd-windows-64': 1.20260111.0 - wrangler@4.58.0: + wrangler@4.59.1: dependencies: '@cloudflare/kv-asset-handler': 0.4.1 - '@cloudflare/unenv-preset': 2.8.0(unenv@2.0.0-rc.24)(workerd@1.20260107.1) + '@cloudflare/unenv-preset': 2.9.0(unenv@2.0.0-rc.24)(workerd@1.20260111.0) blake3-wasm: 2.1.5 esbuild: 0.27.0 - miniflare: 4.20260107.0 + miniflare: 4.20260111.0 path-to-regexp: 6.3.0 unenv: 2.0.0-rc.24 - workerd: 1.20260107.1 + workerd: 1.20260111.0 optionalDependencies: fsevents: 2.3.3 transitivePeerDependencies: diff --git a/webapp/pnpm-workspace.yaml b/webapp/pnpm-workspace.yaml index 2a73160..5ba62b2 100644 --- a/webapp/pnpm-workspace.yaml +++ b/webapp/pnpm-workspace.yaml @@ -1,3 +1,4 @@ onlyBuiltDependencies: - esbuild + - sharp - workerd diff --git a/webapp/src/App.svelte b/webapp/src/App.svelte index 62e37da..b5e1466 100644 --- a/webapp/src/App.svelte +++ b/webapp/src/App.svelte @@ -1,15 +1,14 @@ -
+
diff --git a/webapp/src/app.css b/webapp/src/app.css index b02b96d..7c1009d 100644 --- a/webapp/src/app.css +++ b/webapp/src/app.css @@ -124,7 +124,7 @@ } ::selection { - @apply text-muted bg-muted-foreground; + @apply bg-muted-foreground text-muted; } a { diff --git a/webapp/src/lib/components/ImplicitNumericInput.svelte b/webapp/src/lib/components/ImplicitNumericInput.svelte index 552b99b..9a31823 100644 --- a/webapp/src/lib/components/ImplicitNumericInput.svelte +++ b/webapp/src/lib/components/ImplicitNumericInput.svelte @@ -1,24 +1,27 @@ - import type { PopoverTriggerProps } from 'bits-ui' - import type { Snippet } from 'svelte' +import * as Popover from '$lib/components/ui/popover' +import type { PopoverTriggerProps } from 'bits-ui' +import type { Snippet } from 'svelte' +import IconInfo from '~icons/material-symbols/info' - import IconInfo from '~icons/material-symbols/info' - import * as Popover from '$lib/components/ui/popover' +interface Props extends PopoverTriggerProps { + icon?: Snippet +} - interface Props extends PopoverTriggerProps { - icon?: Snippet - } - - const { icon, children, ...restProps }: Props = $props() +const { icon, children, ...restProps }: Props = $props() {#if !icon} - + {:else} {@render icon()} {/if} diff --git a/webapp/src/lib/contexts/device.svelte.ts b/webapp/src/lib/contexts/device.svelte.ts index bba9540..06769c3 100644 --- a/webapp/src/lib/contexts/device.svelte.ts +++ b/webapp/src/lib/contexts/device.svelte.ts @@ -1,8 +1,8 @@ import { Device } from '$lib/image/device' +import { effect } from '$lib/utils.svelte' import { getContext, setContext } from 'svelte' import { toast } from 'svelte-sonner' import type { MidiContext } from './midi.svelte' -import { effect } from '$lib/utils.svelte' function isInkclip(port: MIDIPort): boolean { return !!( diff --git a/webapp/src/lib/contexts/image.svelte.ts b/webapp/src/lib/contexts/image.svelte.ts index 77291c2..a58485c 100644 --- a/webapp/src/lib/contexts/image.svelte.ts +++ b/webapp/src/lib/contexts/image.svelte.ts @@ -1,7 +1,7 @@ -import { getContext, setContext } from 'svelte' -import type { FilesContext } from './files.svelte' -import { toast } from 'svelte-sonner' import { DEVICE_HEIGHT, DEVICE_WIDTH } from '$lib/constants' +import { getContext, setContext } from 'svelte' +import { toast } from 'svelte-sonner' +import type { FilesContext } from './files.svelte' export interface ImageContext { image: ImageBitmap | null diff --git a/webapp/src/lib/contexts/rendered.svelte.ts b/webapp/src/lib/contexts/rendered.svelte.ts index bb997b8..1ee180d 100644 --- a/webapp/src/lib/contexts/rendered.svelte.ts +++ b/webapp/src/lib/contexts/rendered.svelte.ts @@ -1,10 +1,10 @@ -import { getContext, setContext } from 'svelte' -import type { ImageContext } from './image.svelte' -import { withTransform } from '$lib/image/transform' -import type { ConversionConfig } from './config.svelte' -import { Scaler } from '$lib/image/scaler' -import { Quantizer } from '$lib/image/quantizer' import { DEVICE_HEIGHT, DEVICE_WIDTH } from '$lib/constants' +import { Quantizer } from '$lib/image/quantizer' +import { Scaler } from '$lib/image/scaler' +import { withTransform } from '$lib/image/transform' +import { getContext, setContext } from 'svelte' +import type { ConversionConfig } from './config.svelte' +import type { ImageContext } from './image.svelte' export class RenderedContext { rendered: Uint8Array | null = $state(null) diff --git a/webapp/src/lib/image/quantizer.ts b/webapp/src/lib/image/quantizer.ts index 162dc64..6fed499 100644 --- a/webapp/src/lib/image/quantizer.ts +++ b/webapp/src/lib/image/quantizer.ts @@ -1,5 +1,4 @@ -import RgbQuant from '$lib/vendor/rgbquant' -import type { DitheringKernel, RgbQuantImage } from '$lib/vendor/rgbquant' +import RgbQuant, { type DitheringKernel, type RgbQuantImage } from '$lib/vendor/rgbquant' export type { DitheringKernel, RgbQuantImage } from '$lib/vendor/rgbquant' diff --git a/webapp/src/lib/image/scaler.ts b/webapp/src/lib/image/scaler.ts index e1d92bd..e5b3c80 100644 --- a/webapp/src/lib/image/scaler.ts +++ b/webapp/src/lib/image/scaler.ts @@ -10,7 +10,10 @@ export type ScaleMode = 'fit' | 'crop' | 'distort' export class Scaler { private readonly canvasAspectRatio: number - constructor(private readonly canvasWidth: number, private readonly canvasHeight: number) { + constructor( + private readonly canvasWidth: number, + private readonly canvasHeight: number, + ) { this.canvasAspectRatio = canvasWidth / canvasHeight } diff --git a/webapp/src/lib/image/transform.ts b/webapp/src/lib/image/transform.ts index 84f335e..f7a6850 100644 --- a/webapp/src/lib/image/transform.ts +++ b/webapp/src/lib/image/transform.ts @@ -11,7 +11,10 @@ export type Operation = 'cw' | 'ccw' | 'h' | 'v' * Algebraically, this is the dihedral group of order 8 (D₄). */ export class Transform { - constructor(public readonly side: Side = 'obverse', public readonly rotation: Rotation = 0) {} + constructor( + public readonly side: Side = 'obverse', + public readonly rotation: Rotation = 0, + ) {} cw(): Transform { const rotationAngle = this.side === 'obverse' ? 90 : 270 @@ -67,6 +70,6 @@ export function withTransform(ctx: Context2D, transform: Transform, action: ( ctx.rotate((transform.rotation / 180) * Math.PI) ctx.translate(-centerX, -centerY) }, - action + action, ) } diff --git a/webapp/src/lib/layouts/Footer.svelte b/webapp/src/lib/layouts/Footer.svelte index 2c17ec9..293b049 100644 --- a/webapp/src/lib/layouts/Footer.svelte +++ b/webapp/src/lib/layouts/Footer.svelte @@ -1,9 +1,8 @@