diff --git a/frontend/.gitignore b/frontend/.gitignore
index a547bf3..3b462cb 100644
--- a/frontend/.gitignore
+++ b/frontend/.gitignore
@@ -1,24 +1,23 @@
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-pnpm-debug.log*
-lerna-debug.log*
-
node_modules
-dist
-dist-ssr
-*.local
-# Editor directories and files
-.vscode/*
-!.vscode/extensions.json
-.idea
+# Output
+.output
+.vercel
+.netlify
+.wrangler
+/.svelte-kit
+/build
+
+# OS
.DS_Store
-*.suo
-*.ntvs*
-*.njsproj
-*.sln
-*.sw?
+Thumbs.db
+
+# Env
+.env
+.env.*
+!.env.example
+!.env.test
+
+# Vite
+vite.config.js.timestamp-*
+vite.config.ts.timestamp-*
diff --git a/frontend/.npmrc b/frontend/.npmrc
new file mode 100644
index 0000000..b6f27f1
--- /dev/null
+++ b/frontend/.npmrc
@@ -0,0 +1 @@
+engine-strict=true
diff --git a/frontend/.prettierignore b/frontend/.prettierignore
new file mode 100644
index 0000000..7d74fe2
--- /dev/null
+++ b/frontend/.prettierignore
@@ -0,0 +1,9 @@
+# Package Managers
+package-lock.json
+pnpm-lock.yaml
+yarn.lock
+bun.lock
+bun.lockb
+
+# Miscellaneous
+/static/
diff --git a/frontend/.prettierrc b/frontend/.prettierrc
new file mode 100644
index 0000000..8103a0b
--- /dev/null
+++ b/frontend/.prettierrc
@@ -0,0 +1,16 @@
+{
+ "useTabs": true,
+ "singleQuote": true,
+ "trailingComma": "none",
+ "printWidth": 100,
+ "plugins": ["prettier-plugin-svelte", "prettier-plugin-tailwindcss"],
+ "overrides": [
+ {
+ "files": "*.svelte",
+ "options": {
+ "parser": "svelte"
+ }
+ }
+ ],
+ "tailwindStylesheet": "./src/app.css"
+}
diff --git a/frontend/.vscode/extensions.json b/frontend/.vscode/extensions.json
deleted file mode 100644
index bdef820..0000000
--- a/frontend/.vscode/extensions.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "recommendations": ["svelte.svelte-vscode"]
-}
diff --git a/frontend/README.md b/frontend/README.md
index e6cd94f..75842c4 100644
--- a/frontend/README.md
+++ b/frontend/README.md
@@ -1,47 +1,38 @@
-# Svelte + TS + Vite
+# sv
-This template should help get you started developing with Svelte and TypeScript in Vite.
+Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli).
-## Recommended IDE Setup
+## Creating a project
-[VS Code](https://code.visualstudio.com/) + [Svelte](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode).
+If you're seeing this, you've probably already done this step. Congrats!
-## Need an official Svelte framework?
+```sh
+# create a new project in the current directory
+npx sv create
-Check out [SvelteKit](https://github.com/sveltejs/kit#readme), which is also powered by Vite. Deploy anywhere with its serverless-first approach and adapt to various platforms, with out of the box support for TypeScript, SCSS, and Less, and easily-added support for mdsvex, GraphQL, PostCSS, Tailwind CSS, and more.
-
-## Technical considerations
-
-**Why use this over SvelteKit?**
-
-- It brings its own routing solution which might not be preferable for some users.
-- It is first and foremost a framework that just happens to use Vite under the hood, not a Vite app.
-
-This template contains as little as possible to get started with Vite + TypeScript + Svelte, while taking into account the developer experience with regards to HMR and intellisense. It demonstrates capabilities on par with the other `create-vite` templates and is a good starting point for beginners dipping their toes into a Vite + Svelte project.
-
-Should you later need the extended capabilities and extensibility provided by SvelteKit, the template has been structured similarly to SvelteKit so that it is easy to migrate.
-
-**Why `global.d.ts` instead of `compilerOptions.types` inside `jsconfig.json` or `tsconfig.json`?**
-
-Setting `compilerOptions.types` shuts out all other types not explicitly listed in the configuration. Using triple-slash references keeps the default TypeScript setting of accepting type information from the entire workspace, while also adding `svelte` and `vite/client` type information.
-
-**Why include `.vscode/extensions.json`?**
-
-Other templates indirectly recommend extensions via the README, but this file allows VS Code to prompt the user to install the recommended extension upon opening the project.
-
-**Why enable `allowJs` in the TS template?**
-
-While `allowJs: false` would indeed prevent the use of `.js` files in the project, it does not prevent the use of JavaScript syntax in `.svelte` files. In addition, it would force `checkJs: false`, bringing the worst of both worlds: not being able to guarantee the entire codebase is TypeScript, and also having worse typechecking for the existing JavaScript. In addition, there are valid use cases in which a mixed codebase may be relevant.
-
-**Why is HMR not preserving my local component state?**
-
-HMR state preservation comes with a number of gotchas! It has been disabled by default in both `svelte-hmr` and `@sveltejs/vite-plugin-svelte` due to its often surprising behavior. You can read the details [here](https://github.com/rixo/svelte-hmr#svelte-hmr).
-
-If you have state that's important to retain within a component, consider creating an external store which would not be replaced by HMR.
-
-```ts
-// store.ts
-// An extremely simple external store
-import { writable } from 'svelte/store'
-export default writable(0)
+# create a new project in my-app
+npx sv create my-app
```
+
+## Developing
+
+Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
+
+```sh
+npm run dev
+
+# or start the server and open the app in a new browser tab
+npm run dev -- --open
+```
+
+## Building
+
+To create a production version of your app:
+
+```sh
+npm run build
+```
+
+You can preview the production build with `npm run preview`.
+
+> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment.
diff --git a/frontend/index.html b/frontend/index.html
deleted file mode 100644
index b6c5f0a..0000000
--- a/frontend/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
- Vite + Svelte + TS
-
-
-
-
-
-
diff --git a/frontend/package.json b/frontend/package.json
index 884374c..2889186 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -1,36 +1,47 @@
{
- "name": "lead",
- "private": true,
- "version": "0.0.0",
- "type": "module",
- "scripts": {
- "dev": "vite",
- "build": "vite build",
- "preview": "vite preview",
- "check": "svelte-check --tsconfig ./tsconfig.app.json && tsc -p tsconfig.node.json"
- },
- "devDependencies": {
- "@lucide/svelte": "^0.542.0",
- "@sveltejs/vite-plugin-svelte": "^6.1.1",
- "@tailwindcss/typography": "^0.5.15",
- "@tailwindcss/vite": "^4.0.0",
- "@tsconfig/svelte": "^5.0.4",
- "clsx": "^2.1.1",
- "svelte": "^5.38.1",
- "svelte-check": "^4.3.1",
- "tailwind-merge": "^3.3.1",
- "tailwind-variants": "^1.0.0",
- "tailwindcss": "^4.0.0",
- "tw-animate-css": "^1.3.7",
- "typescript": "~5.8.3",
- "vite": "^7.1.2"
- },
- "pnpm": {
- "onlyBuiltDependencies": [
- "esbuild"
- ]
- },
- "dependencies": {
- "mode-watcher": "^1.1.0"
- }
-}
\ No newline at end of file
+ "name": "frontend",
+ "private": true,
+ "version": "0.0.1",
+ "type": "module",
+ "scripts": {
+ "dev": "vite dev",
+ "build": "vite build",
+ "preview": "vite preview",
+ "prepare": "svelte-kit sync || echo ''",
+ "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
+ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
+ "format": "prettier --write .",
+ "lint": "prettier --check ."
+ },
+ "devDependencies": {
+ "@internationalized/date": "^3.8.1",
+ "@lucide/svelte": "^0.515.0",
+ "@sveltejs/adapter-static": "^3.0.8",
+ "@sveltejs/kit": "^2.22.0",
+ "@sveltejs/vite-plugin-svelte": "^6.0.0",
+ "@tailwindcss/forms": "^0.5.9",
+ "@tailwindcss/typography": "^0.5.15",
+ "@tailwindcss/vite": "^4.0.0",
+ "bits-ui": "^2.8.6",
+ "clsx": "^2.1.1",
+ "prettier": "^3.4.2",
+ "prettier-plugin-svelte": "^3.3.3",
+ "prettier-plugin-tailwindcss": "^0.6.11",
+ "svelte": "^5.0.0",
+ "svelte-check": "^4.0.0",
+ "tailwind-merge": "^3.3.1",
+ "tailwind-variants": "^1.0.0",
+ "tailwindcss": "^4.0.0",
+ "tw-animate-css": "^1.3.8",
+ "typescript": "^5.0.0",
+ "vite": "^7.0.4"
+ },
+ "pnpm": {
+ "onlyBuiltDependencies": [
+ "esbuild"
+ ]
+ },
+ "dependencies": {
+ "mode-watcher": "^1.1.0"
+ }
+}
diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml
index 366a9ad..af48336 100644
--- a/frontend/pnpm-lock.yaml
+++ b/frontend/pnpm-lock.yaml
@@ -12,30 +12,51 @@ importers:
specifier: ^1.1.0
version: 1.1.0(svelte@5.38.6)
devDependencies:
+ '@internationalized/date':
+ specifier: ^3.8.1
+ version: 3.9.0
'@lucide/svelte':
- specifier: ^0.542.0
- version: 0.542.0(svelte@5.38.6)
+ specifier: ^0.515.0
+ version: 0.515.0(svelte@5.38.6)
+ '@sveltejs/adapter-static':
+ specifier: ^3.0.8
+ version: 3.0.9(@sveltejs/kit@2.37.0(@sveltejs/vite-plugin-svelte@6.1.4(svelte@5.38.6)(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1)))(svelte@5.38.6)(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1)))
+ '@sveltejs/kit':
+ specifier: ^2.22.0
+ version: 2.37.0(@sveltejs/vite-plugin-svelte@6.1.4(svelte@5.38.6)(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1)))(svelte@5.38.6)(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1))
'@sveltejs/vite-plugin-svelte':
- specifier: ^6.1.1
- version: 6.1.3(svelte@5.38.6)(vite@7.1.3(jiti@2.5.1)(lightningcss@1.30.1))
+ specifier: ^6.0.0
+ version: 6.1.4(svelte@5.38.6)(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1))
+ '@tailwindcss/forms':
+ specifier: ^0.5.9
+ version: 0.5.10(tailwindcss@4.1.12)
'@tailwindcss/typography':
specifier: ^0.5.15
version: 0.5.16(tailwindcss@4.1.12)
'@tailwindcss/vite':
specifier: ^4.0.0
- version: 4.1.12(vite@7.1.3(jiti@2.5.1)(lightningcss@1.30.1))
- '@tsconfig/svelte':
- specifier: ^5.0.4
- version: 5.0.5
+ version: 4.1.12(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1))
+ bits-ui:
+ specifier: ^2.8.6
+ version: 2.9.6(@internationalized/date@3.9.0)(svelte@5.38.6)
clsx:
specifier: ^2.1.1
version: 2.1.1
+ prettier:
+ specifier: ^3.4.2
+ version: 3.6.2
+ prettier-plugin-svelte:
+ specifier: ^3.3.3
+ version: 3.4.0(prettier@3.6.2)(svelte@5.38.6)
+ prettier-plugin-tailwindcss:
+ specifier: ^0.6.11
+ version: 0.6.14(prettier-plugin-svelte@3.4.0(prettier@3.6.2)(svelte@5.38.6))(prettier@3.6.2)
svelte:
- specifier: ^5.38.1
+ specifier: ^5.0.0
version: 5.38.6
svelte-check:
- specifier: ^4.3.1
- version: 4.3.1(picomatch@4.0.3)(svelte@5.38.6)(typescript@5.8.3)
+ specifier: ^4.0.0
+ version: 4.3.1(picomatch@4.0.3)(svelte@5.38.6)(typescript@5.9.2)
tailwind-merge:
specifier: ^3.3.1
version: 3.3.1
@@ -46,14 +67,14 @@ importers:
specifier: ^4.0.0
version: 4.1.12
tw-animate-css:
- specifier: ^1.3.7
- version: 1.3.7
+ specifier: ^1.3.8
+ version: 1.3.8
typescript:
- specifier: ~5.8.3
- version: 5.8.3
+ specifier: ^5.0.0
+ version: 5.9.2
vite:
- specifier: ^7.1.2
- version: 7.1.3(jiti@2.5.1)(lightningcss@1.30.1)
+ specifier: ^7.0.4
+ version: 7.1.4(jiti@2.5.1)(lightningcss@1.30.1)
packages:
@@ -213,6 +234,18 @@ packages:
cpu: [x64]
os: [win32]
+ '@floating-ui/core@1.7.3':
+ resolution: {integrity: sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==}
+
+ '@floating-ui/dom@1.7.4':
+ resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==}
+
+ '@floating-ui/utils@0.2.10':
+ resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==}
+
+ '@internationalized/date@3.9.0':
+ resolution: {integrity: sha512-yaN3brAnHRD+4KyyOsJyk49XUvj2wtbNACSqg0bz3u8t2VuzhC8Q5dfRnrSxjnnbDb+ienBnkn1TzQfE154vyg==}
+
'@isaacs/fs-minipass@4.0.1':
resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==}
engines: {node: '>=18.0.0'}
@@ -233,11 +266,14 @@ packages:
'@jridgewell/trace-mapping@0.3.30':
resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==}
- '@lucide/svelte@0.542.0':
- resolution: {integrity: sha512-NuWttxTVfMSURpOxcKiKvoCtma3JtEpcJWzF/0cO69saZfXlv6G8NYAvEEGLmk75YPl+I+ROe+F97WhddM8r2A==}
+ '@lucide/svelte@0.515.0':
+ resolution: {integrity: sha512-CEAyqcZmNBfYzVgaRmK2RFJP5tnbXxekRyDk0XX/eZQRfsJmkDvmQwXNX8C869BgNeryzmrRyjHhUL6g9ZOHNA==}
peerDependencies:
svelte: ^5
+ '@polka/url@1.0.0-next.29':
+ resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==}
+
'@rollup/rollup-android-arm-eabi@4.50.0':
resolution: {integrity: sha512-lVgpeQyy4fWN5QYebtW4buT/4kn4p4IJ+kDNB4uYNT5b8c8DLJDg6titg20NIg7E8RWwdWZORW6vUFfrLyG3KQ==}
cpu: [arm]
@@ -343,11 +379,32 @@ packages:
cpu: [x64]
os: [win32]
+ '@standard-schema/spec@1.0.0':
+ resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==}
+
'@sveltejs/acorn-typescript@1.0.5':
resolution: {integrity: sha512-IwQk4yfwLdibDlrXVE04jTZYlLnwsTT2PIOQQGNLWfjavGifnk1JD1LcZjZaBTRcxZu2FfPfNLOE04DSu9lqtQ==}
peerDependencies:
acorn: ^8.9.0
+ '@sveltejs/adapter-static@3.0.9':
+ resolution: {integrity: sha512-aytHXcMi7lb9ljsWUzXYQ0p5X1z9oWud2olu/EpmH7aCu4m84h7QLvb5Wp+CFirKcwoNnYvYWhyP/L8Vh1ztdw==}
+ peerDependencies:
+ '@sveltejs/kit': ^2.0.0
+
+ '@sveltejs/kit@2.37.0':
+ resolution: {integrity: sha512-xgKtpjQ6Ry4mdShd01ht5AODUsW7+K1iValPDq7QX8zI1hWOKREH9GjG8SRCN5tC4K7UXmMhuQam7gbLByVcnw==}
+ 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
+ svelte: ^4.0.0 || ^5.0.0-next.0
+ vite: ^5.0.3 || ^6.0.0 || ^7.0.0-beta.0
+ peerDependenciesMeta:
+ '@opentelemetry/api':
+ optional: true
+
'@sveltejs/vite-plugin-svelte-inspector@5.0.1':
resolution: {integrity: sha512-ubWshlMk4bc8mkwWbg6vNvCeT7lGQojE3ijDh3QTR6Zr/R+GXxsGbyH4PExEPpiFmqPhYiVSVmHBjUcVc1JIrA==}
engines: {node: ^20.19 || ^22.12 || >=24}
@@ -356,13 +413,21 @@ packages:
svelte: ^5.0.0
vite: ^6.3.0 || ^7.0.0
- '@sveltejs/vite-plugin-svelte@6.1.3':
- resolution: {integrity: sha512-3pppgIeIZs6nrQLazzKcdnTJ2IWiui/UucEPXKyFG35TKaHQrfkWBnv6hyJcLxFuR90t+LaoecrqTs8rJKWfSQ==}
+ '@sveltejs/vite-plugin-svelte@6.1.4':
+ resolution: {integrity: sha512-4jfkfvsGI+U2OhHX8OPCKtMCf7g7ledXhs3E6UcA4EY0jQWsiVbe83pTAHp9XTifzYNOiD4AJieJUsI0qqxsbw==}
engines: {node: ^20.19 || ^22.12 || >=24}
peerDependencies:
svelte: ^5.0.0
vite: ^6.3.0 || ^7.0.0
+ '@swc/helpers@0.5.17':
+ resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==}
+
+ '@tailwindcss/forms@0.5.10':
+ resolution: {integrity: sha512-utI1ONF6uf/pPNO68kmN1b8rEwNXv3czukalo8VtJH8ksIkZXr3Q3VYudZLkCsDd4Wku120uF02hYK25XGPorw==}
+ peerDependencies:
+ tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1'
+
'@tailwindcss/node@4.1.12':
resolution: {integrity: sha512-3hm9brwvQkZFe++SBt+oLjo4OLDtkvlE8q2WalaD/7QWaeM7KEJbAiY/LJZUaCs7Xa8aUu4xy3uoyX4q54UVdQ==}
@@ -458,8 +523,8 @@ packages:
peerDependencies:
vite: ^5.2.0 || ^6 || ^7
- '@tsconfig/svelte@5.0.5':
- resolution: {integrity: sha512-48fAnUjKye38FvMiNOj0J9I/4XlQQiZlpe9xaNPfe8vy2Y1hFBt8g1yqf2EGjVvHavo4jf2lC+TQyENCr4BJBQ==}
+ '@types/cookie@0.6.0':
+ resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
'@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
@@ -477,6 +542,13 @@ packages:
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
engines: {node: '>= 0.4'}
+ bits-ui@2.9.6:
+ resolution: {integrity: sha512-OzHktsQRsIz/hIMk5VwHo96Wpp/KY68q/ebUPUzTbvuFBrALB/X+QvO4KLgdczj5dfb3xHs9zpWq8yMH8ZbZlA==}
+ engines: {node: '>=20'}
+ peerDependencies:
+ '@internationalized/date': ^3.8.1
+ svelte: ^5.33.0
+
chokidar@4.0.3:
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
engines: {node: '>= 14.16.0'}
@@ -489,6 +561,10 @@ packages:
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
engines: {node: '>=6'}
+ cookie@0.6.0:
+ resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
+ engines: {node: '>= 0.6'}
+
cssesc@3.0.0:
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
engines: {node: '>=4'}
@@ -511,6 +587,9 @@ packages:
resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==}
engines: {node: '>=8'}
+ devalue@5.3.2:
+ resolution: {integrity: sha512-UDsjUbpQn9kvm68slnrs+mfxwFkIflOhkanmyabZ8zOYk8SMEIbJ3TK+88g70hSIeytu4y18f0z/hYHMTrXIWw==}
+
enhanced-resolve@5.18.3:
resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==}
engines: {node: '>=10.13.0'}
@@ -636,6 +715,10 @@ packages:
magic-string@0.30.18:
resolution: {integrity: sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==}
+ mini-svg-data-uri@1.4.4:
+ resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==}
+ hasBin: true
+
minipass@7.1.2:
resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -658,6 +741,10 @@ packages:
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
engines: {node: '>=4'}
+ mrmime@2.0.1:
+ resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==}
+ engines: {node: '>=10'}
+
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
@@ -681,6 +768,78 @@ packages:
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
engines: {node: ^10 || ^12 || >=14}
+ prettier-plugin-svelte@3.4.0:
+ resolution: {integrity: sha512-pn1ra/0mPObzqoIQn/vUTR3ZZI6UuZ0sHqMK5x2jMLGrs53h0sXhkVuDcrlssHwIMk7FYrMjHBPoUSyyEEDlBQ==}
+ peerDependencies:
+ prettier: ^3.0.0
+ svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0
+
+ prettier-plugin-tailwindcss@0.6.14:
+ resolution: {integrity: sha512-pi2e/+ZygeIqntN+vC573BcW5Cve8zUB0SSAGxqpB4f96boZF4M3phPVoOFCeypwkpRYdi7+jQ5YJJUwrkGUAg==}
+ engines: {node: '>=14.21.3'}
+ 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-import-sort: '*'
+ prettier-plugin-jsdoc: '*'
+ prettier-plugin-marko: '*'
+ prettier-plugin-multiline-arrays: '*'
+ prettier-plugin-organize-attributes: '*'
+ prettier-plugin-organize-imports: '*'
+ prettier-plugin-sort-imports: '*'
+ prettier-plugin-style-order: '*'
+ 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-import-sort:
+ 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-style-order:
+ optional: true
+ prettier-plugin-svelte:
+ optional: true
+
+ prettier@3.6.2:
+ resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==}
+ engines: {node: '>=14'}
+ hasBin: true
+
readdirp@4.1.2:
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
engines: {node: '>= 14.18.0'}
@@ -700,10 +859,22 @@ packages:
peerDependencies:
svelte: ^5.7.0
+ runed@0.29.2:
+ resolution: {integrity: sha512-0cq6cA6sYGZwl/FvVqjx9YN+1xEBu9sDDyuWdDW1yWX7JF2wmvmVKfH+hVCZs+csW+P3ARH92MjI3H9QTagOQA==}
+ peerDependencies:
+ svelte: ^5.7.0
+
sade@1.8.1:
resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==}
engines: {node: '>=6'}
+ set-cookie-parser@2.7.1:
+ resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==}
+
+ sirv@3.0.2:
+ resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==}
+ engines: {node: '>=18'}
+
source-map-js@1.2.1:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
@@ -725,10 +896,19 @@ packages:
peerDependencies:
svelte: ^5.0.0
+ svelte-toolbelt@0.9.3:
+ resolution: {integrity: sha512-HCSWxCtVmv+c6g1ACb8LTwHVbDqLKJvHpo6J8TaqwUme2hj9ATJCpjCPNISR1OCq2Q4U1KT41if9ON0isINQZw==}
+ engines: {node: '>=18', pnpm: '>=8.7.0'}
+ peerDependencies:
+ svelte: ^5.30.2
+
svelte@5.38.6:
resolution: {integrity: sha512-ltBPlkvqk3bgCK7/N323atUpP3O3Y+DrGV4dcULrsSn4fZaaNnOmdplNznwfdWclAgvSr5rxjtzn/zJhRm6TKg==}
engines: {node: '>=18'}
+ tabbable@6.2.0:
+ resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
+
tailwind-merge@3.0.2:
resolution: {integrity: sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw==}
@@ -756,19 +936,26 @@ packages:
resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
engines: {node: '>=12.0.0'}
- tw-animate-css@1.3.7:
- resolution: {integrity: sha512-lvLb3hTIpB5oGsk8JmLoAjeCHV58nKa2zHYn8yWOoG5JJusH3bhJlF2DLAZ/5NmJ+jyH3ssiAx/2KmbhavJy/A==}
+ totalist@3.0.1:
+ resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
+ engines: {node: '>=6'}
- typescript@5.8.3:
- resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==}
+ tslib@2.8.1:
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+
+ tw-animate-css@1.3.8:
+ resolution: {integrity: sha512-Qrk3PZ7l7wUcGYhwZloqfkWCmaXZAoqjkdbIDvzfGshwGtexa/DAs9koXxIkrpEasyevandomzCBAV1Yyop5rw==}
+
+ typescript@5.9.2:
+ resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==}
engines: {node: '>=14.17'}
hasBin: true
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
- vite@7.1.3:
- resolution: {integrity: sha512-OOUi5zjkDxYrKhTV3V7iKsoS37VUM7v40+HuwEmcrsf11Cdx9y3DIr2Px6liIcZFwt3XSRpQvFpL3WVy7ApkGw==}
+ vite@7.1.4:
+ resolution: {integrity: sha512-X5QFK4SGynAeeIt+A7ZWnApdUyHYm+pzv/8/A57LqSGcI88U6R6ipOs3uCesdc6yl7nl+zNO0t8LmqAdXcQihw==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
@@ -902,6 +1089,21 @@ snapshots:
'@esbuild/win32-x64@0.25.9':
optional: true
+ '@floating-ui/core@1.7.3':
+ dependencies:
+ '@floating-ui/utils': 0.2.10
+
+ '@floating-ui/dom@1.7.4':
+ dependencies:
+ '@floating-ui/core': 1.7.3
+ '@floating-ui/utils': 0.2.10
+
+ '@floating-ui/utils@0.2.10': {}
+
+ '@internationalized/date@3.9.0':
+ dependencies:
+ '@swc/helpers': 0.5.17
+
'@isaacs/fs-minipass@4.0.1':
dependencies:
minipass: 7.1.2
@@ -925,10 +1127,12 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.5
- '@lucide/svelte@0.542.0(svelte@5.38.6)':
+ '@lucide/svelte@0.515.0(svelte@5.38.6)':
dependencies:
svelte: 5.38.6
+ '@polka/url@1.0.0-next.29': {}
+
'@rollup/rollup-android-arm-eabi@4.50.0':
optional: true
@@ -992,32 +1196,65 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.50.0':
optional: true
+ '@standard-schema/spec@1.0.0': {}
+
'@sveltejs/acorn-typescript@1.0.5(acorn@8.15.0)':
dependencies:
acorn: 8.15.0
- '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.6)(vite@7.1.3(jiti@2.5.1)(lightningcss@1.30.1)))(svelte@5.38.6)(vite@7.1.3(jiti@2.5.1)(lightningcss@1.30.1))':
+ '@sveltejs/adapter-static@3.0.9(@sveltejs/kit@2.37.0(@sveltejs/vite-plugin-svelte@6.1.4(svelte@5.38.6)(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1)))(svelte@5.38.6)(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1)))':
dependencies:
- '@sveltejs/vite-plugin-svelte': 6.1.3(svelte@5.38.6)(vite@7.1.3(jiti@2.5.1)(lightningcss@1.30.1))
+ '@sveltejs/kit': 2.37.0(@sveltejs/vite-plugin-svelte@6.1.4(svelte@5.38.6)(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1)))(svelte@5.38.6)(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1))
+
+ '@sveltejs/kit@2.37.0(@sveltejs/vite-plugin-svelte@6.1.4(svelte@5.38.6)(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1)))(svelte@5.38.6)(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1))':
+ dependencies:
+ '@standard-schema/spec': 1.0.0
+ '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0)
+ '@sveltejs/vite-plugin-svelte': 6.1.4(svelte@5.38.6)(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1))
+ '@types/cookie': 0.6.0
+ acorn: 8.15.0
+ cookie: 0.6.0
+ devalue: 5.3.2
+ esm-env: 1.2.2
+ kleur: 4.1.5
+ magic-string: 0.30.18
+ mrmime: 2.0.1
+ sade: 1.8.1
+ set-cookie-parser: 2.7.1
+ sirv: 3.0.2
+ svelte: 5.38.6
+ vite: 7.1.4(jiti@2.5.1)(lightningcss@1.30.1)
+
+ '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.1.4(svelte@5.38.6)(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1)))(svelte@5.38.6)(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1))':
+ dependencies:
+ '@sveltejs/vite-plugin-svelte': 6.1.4(svelte@5.38.6)(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1))
debug: 4.4.1
svelte: 5.38.6
- vite: 7.1.3(jiti@2.5.1)(lightningcss@1.30.1)
+ vite: 7.1.4(jiti@2.5.1)(lightningcss@1.30.1)
transitivePeerDependencies:
- supports-color
- '@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.6)(vite@7.1.3(jiti@2.5.1)(lightningcss@1.30.1))':
+ '@sveltejs/vite-plugin-svelte@6.1.4(svelte@5.38.6)(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1))':
dependencies:
- '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.1.3(svelte@5.38.6)(vite@7.1.3(jiti@2.5.1)(lightningcss@1.30.1)))(svelte@5.38.6)(vite@7.1.3(jiti@2.5.1)(lightningcss@1.30.1))
+ '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.1.4(svelte@5.38.6)(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1)))(svelte@5.38.6)(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1))
debug: 4.4.1
deepmerge: 4.3.1
- kleur: 4.1.5
magic-string: 0.30.18
svelte: 5.38.6
- vite: 7.1.3(jiti@2.5.1)(lightningcss@1.30.1)
- vitefu: 1.1.1(vite@7.1.3(jiti@2.5.1)(lightningcss@1.30.1))
+ vite: 7.1.4(jiti@2.5.1)(lightningcss@1.30.1)
+ vitefu: 1.1.1(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1))
transitivePeerDependencies:
- supports-color
+ '@swc/helpers@0.5.17':
+ dependencies:
+ tslib: 2.8.1
+
+ '@tailwindcss/forms@0.5.10(tailwindcss@4.1.12)':
+ dependencies:
+ mini-svg-data-uri: 1.4.4
+ tailwindcss: 4.1.12
+
'@tailwindcss/node@4.1.12':
dependencies:
'@jridgewell/remapping': 2.3.5
@@ -1090,14 +1327,14 @@ snapshots:
postcss-selector-parser: 6.0.10
tailwindcss: 4.1.12
- '@tailwindcss/vite@4.1.12(vite@7.1.3(jiti@2.5.1)(lightningcss@1.30.1))':
+ '@tailwindcss/vite@4.1.12(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1))':
dependencies:
'@tailwindcss/node': 4.1.12
'@tailwindcss/oxide': 4.1.12
tailwindcss: 4.1.12
- vite: 7.1.3(jiti@2.5.1)(lightningcss@1.30.1)
+ vite: 7.1.4(jiti@2.5.1)(lightningcss@1.30.1)
- '@tsconfig/svelte@5.0.5': {}
+ '@types/cookie@0.6.0': {}
'@types/estree@1.0.8': {}
@@ -1107,6 +1344,17 @@ snapshots:
axobject-query@4.1.0: {}
+ bits-ui@2.9.6(@internationalized/date@3.9.0)(svelte@5.38.6):
+ dependencies:
+ '@floating-ui/core': 1.7.3
+ '@floating-ui/dom': 1.7.4
+ '@internationalized/date': 3.9.0
+ esm-env: 1.2.2
+ runed: 0.29.2(svelte@5.38.6)
+ svelte: 5.38.6
+ svelte-toolbelt: 0.9.3(svelte@5.38.6)
+ tabbable: 6.2.0
+
chokidar@4.0.3:
dependencies:
readdirp: 4.1.2
@@ -1115,6 +1363,8 @@ snapshots:
clsx@2.1.1: {}
+ cookie@0.6.0: {}
+
cssesc@3.0.0: {}
debug@4.4.1:
@@ -1125,6 +1375,8 @@ snapshots:
detect-libc@2.0.4: {}
+ devalue@5.3.2: {}
+
enhanced-resolve@5.18.3:
dependencies:
graceful-fs: 4.2.11
@@ -1241,6 +1493,8 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
+ mini-svg-data-uri@1.4.4: {}
+
minipass@7.1.2: {}
minizlib@3.0.2:
@@ -1257,6 +1511,8 @@ snapshots:
mri@1.2.0: {}
+ mrmime@2.0.1: {}
+
ms@2.1.3: {}
nanoid@3.3.11: {}
@@ -1276,6 +1532,19 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
+ prettier-plugin-svelte@3.4.0(prettier@3.6.2)(svelte@5.38.6):
+ dependencies:
+ prettier: 3.6.2
+ svelte: 5.38.6
+
+ prettier-plugin-tailwindcss@0.6.14(prettier-plugin-svelte@3.4.0(prettier@3.6.2)(svelte@5.38.6))(prettier@3.6.2):
+ dependencies:
+ prettier: 3.6.2
+ optionalDependencies:
+ prettier-plugin-svelte: 3.4.0(prettier@3.6.2)(svelte@5.38.6)
+
+ prettier@3.6.2: {}
+
readdirp@4.1.2: {}
rollup@4.50.0:
@@ -1315,17 +1584,30 @@ snapshots:
esm-env: 1.2.2
svelte: 5.38.6
+ runed@0.29.2(svelte@5.38.6):
+ dependencies:
+ esm-env: 1.2.2
+ svelte: 5.38.6
+
sade@1.8.1:
dependencies:
mri: 1.2.0
+ set-cookie-parser@2.7.1: {}
+
+ sirv@3.0.2:
+ dependencies:
+ '@polka/url': 1.0.0-next.29
+ mrmime: 2.0.1
+ totalist: 3.0.1
+
source-map-js@1.2.1: {}
style-to-object@1.0.9:
dependencies:
inline-style-parser: 0.2.4
- svelte-check@4.3.1(picomatch@4.0.3)(svelte@5.38.6)(typescript@5.8.3):
+ svelte-check@4.3.1(picomatch@4.0.3)(svelte@5.38.6)(typescript@5.9.2):
dependencies:
'@jridgewell/trace-mapping': 0.3.30
chokidar: 4.0.3
@@ -1333,7 +1615,7 @@ snapshots:
picocolors: 1.1.1
sade: 1.8.1
svelte: 5.38.6
- typescript: 5.8.3
+ typescript: 5.9.2
transitivePeerDependencies:
- picomatch
@@ -1344,6 +1626,13 @@ snapshots:
style-to-object: 1.0.9
svelte: 5.38.6
+ svelte-toolbelt@0.9.3(svelte@5.38.6):
+ dependencies:
+ clsx: 2.1.1
+ runed: 0.29.2(svelte@5.38.6)
+ style-to-object: 1.0.9
+ svelte: 5.38.6
+
svelte@5.38.6:
dependencies:
'@jridgewell/remapping': 2.3.5
@@ -1361,6 +1650,8 @@ snapshots:
magic-string: 0.30.18
zimmerframe: 1.1.2
+ tabbable@6.2.0: {}
+
tailwind-merge@3.0.2: {}
tailwind-merge@3.3.1: {}
@@ -1388,13 +1679,17 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
- tw-animate-css@1.3.7: {}
+ totalist@3.0.1: {}
- typescript@5.8.3: {}
+ tslib@2.8.1: {}
+
+ tw-animate-css@1.3.8: {}
+
+ typescript@5.9.2: {}
util-deprecate@1.0.2: {}
- vite@7.1.3(jiti@2.5.1)(lightningcss@1.30.1):
+ vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1):
dependencies:
esbuild: 0.25.9
fdir: 6.5.0(picomatch@4.0.3)
@@ -1407,9 +1702,9 @@ snapshots:
jiti: 2.5.1
lightningcss: 1.30.1
- vitefu@1.1.1(vite@7.1.3(jiti@2.5.1)(lightningcss@1.30.1)):
+ vitefu@1.1.1(vite@7.1.4(jiti@2.5.1)(lightningcss@1.30.1)):
optionalDependencies:
- vite: 7.1.3(jiti@2.5.1)(lightningcss@1.30.1)
+ vite: 7.1.4(jiti@2.5.1)(lightningcss@1.30.1)
yallist@5.0.0: {}
diff --git a/frontend/public/vite.svg b/frontend/public/vite.svg
deleted file mode 100644
index e7b8dfb..0000000
--- a/frontend/public/vite.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/frontend/src/App.svelte b/frontend/src/App.svelte
deleted file mode 100644
index d02da0f..0000000
--- a/frontend/src/App.svelte
+++ /dev/null
@@ -1,363 +0,0 @@
-
-
-
-
-
-
{
- const el = e.currentTarget as HTMLElement;
- scrollTop = el.scrollTop;
- scrollLeft = el.scrollLeft;
- }}
- >
-
-
-
-
-
-
-
-
-
-
-
-
-
- {#if gridData}
-
- {#each visibleRows as i (i)}
- {#each visibleCols as j (j)}
-
-
- (gridData[i][j] = (
- e.currentTarget as HTMLInputElement
- ).value)}
- on:focus={() => (activeCell = [i, j])}
- on:blur={() => handleCellBlur(i, j)}
- />
- {#if activeCell && activeCell[0] === i && activeCell[1] === j}
-
- {/if}
-
- {/each}
- {/each}
-
- {/if}
-
-
-
-
-
diff --git a/frontend/src/app.css b/frontend/src/app.css
index dd670a3..e48f5f0 100644
--- a/frontend/src/app.css
+++ b/frontend/src/app.css
@@ -5,72 +5,72 @@
@custom-variant dark (&:is(.dark *));
:root {
- --radius: 0.65rem;
+ --radius: 0.625rem;
--background: oklch(1 0 0);
- --foreground: oklch(0.141 0.005 285.823);
+ --foreground: oklch(0.129 0.042 264.695);
--card: oklch(1 0 0);
- --card-foreground: oklch(0.141 0.005 285.823);
+ --card-foreground: oklch(0.129 0.042 264.695);
--popover: oklch(1 0 0);
- --popover-foreground: oklch(0.141 0.005 285.823);
- --primary: oklch(0.645 0.246 16.439);
- --primary-foreground: oklch(0.969 0.015 12.422);
- --secondary: oklch(0.967 0.001 286.375);
- --secondary-foreground: oklch(0.21 0.006 285.885);
- --muted: oklch(0.967 0.001 286.375);
- --muted-foreground: oklch(0.552 0.016 285.938);
- --accent: oklch(0.967 0.001 286.375);
- --accent-foreground: oklch(0.21 0.006 285.885);
+ --popover-foreground: oklch(0.129 0.042 264.695);
+ --primary: oklch(0.208 0.042 265.755);
+ --primary-foreground: oklch(0.984 0.003 247.858);
+ --secondary: oklch(0.968 0.007 247.896);
+ --secondary-foreground: oklch(0.208 0.042 265.755);
+ --muted: oklch(0.968 0.007 247.896);
+ --muted-foreground: oklch(0.554 0.046 257.417);
+ --accent: oklch(0.968 0.007 247.896);
+ --accent-foreground: oklch(0.208 0.042 265.755);
--destructive: oklch(0.577 0.245 27.325);
- --border: oklch(0.92 0.004 286.32);
- --input: oklch(0.92 0.004 286.32);
- --ring: oklch(0.645 0.246 16.439);
+ --border: oklch(0.929 0.013 255.508);
+ --input: oklch(0.929 0.013 255.508);
+ --ring: oklch(0.704 0.04 256.788);
--chart-1: oklch(0.646 0.222 41.116);
--chart-2: oklch(0.6 0.118 184.704);
--chart-3: oklch(0.398 0.07 227.392);
--chart-4: oklch(0.828 0.189 84.429);
--chart-5: oklch(0.769 0.188 70.08);
- --sidebar: oklch(0.985 0 0);
- --sidebar-foreground: oklch(0.141 0.005 285.823);
- --sidebar-primary: oklch(0.645 0.246 16.439);
- --sidebar-primary-foreground: oklch(0.969 0.015 12.422);
- --sidebar-accent: oklch(0.967 0.001 286.375);
- --sidebar-accent-foreground: oklch(0.21 0.006 285.885);
- --sidebar-border: oklch(0.92 0.004 286.32);
- --sidebar-ring: oklch(0.645 0.246 16.439);
+ --sidebar: oklch(0.984 0.003 247.858);
+ --sidebar-foreground: oklch(0.129 0.042 264.695);
+ --sidebar-primary: oklch(0.208 0.042 265.755);
+ --sidebar-primary-foreground: oklch(0.984 0.003 247.858);
+ --sidebar-accent: oklch(0.968 0.007 247.896);
+ --sidebar-accent-foreground: oklch(0.208 0.042 265.755);
+ --sidebar-border: oklch(0.929 0.013 255.508);
+ --sidebar-ring: oklch(0.704 0.04 256.788);
}
.dark {
- --background: oklch(0.141 0.005 285.823);
- --foreground: oklch(0.985 0 0);
- --card: oklch(0.21 0.006 285.885);
- --card-foreground: oklch(0.985 0 0);
- --popover: oklch(0.21 0.006 285.885);
- --popover-foreground: oklch(0.985 0 0);
- --primary: oklch(0.645 0.246 16.439);
- --primary-foreground: oklch(0.969 0.015 12.422);
- --secondary: oklch(0.274 0.006 286.033);
- --secondary-foreground: oklch(0.985 0 0);
- --muted: oklch(0.274 0.006 286.033);
- --muted-foreground: oklch(0.705 0.015 286.067);
- --accent: oklch(0.274 0.006 286.033);
- --accent-foreground: oklch(0.985 0 0);
+ --background: oklch(0.129 0.042 264.695);
+ --foreground: oklch(0.984 0.003 247.858);
+ --card: oklch(0.208 0.042 265.755);
+ --card-foreground: oklch(0.984 0.003 247.858);
+ --popover: oklch(0.208 0.042 265.755);
+ --popover-foreground: oklch(0.984 0.003 247.858);
+ --primary: oklch(0.929 0.013 255.508);
+ --primary-foreground: oklch(0.208 0.042 265.755);
+ --secondary: oklch(0.279 0.041 260.031);
+ --secondary-foreground: oklch(0.984 0.003 247.858);
+ --muted: oklch(0.279 0.041 260.031);
+ --muted-foreground: oklch(0.704 0.04 256.788);
+ --accent: oklch(0.279 0.041 260.031);
+ --accent-foreground: oklch(0.984 0.003 247.858);
--destructive: oklch(0.704 0.191 22.216);
--border: oklch(1 0 0 / 10%);
--input: oklch(1 0 0 / 15%);
- --ring: oklch(0.645 0.246 16.439);
+ --ring: oklch(0.551 0.027 264.364);
--chart-1: oklch(0.488 0.243 264.376);
--chart-2: oklch(0.696 0.17 162.48);
--chart-3: oklch(0.769 0.188 70.08);
--chart-4: oklch(0.627 0.265 303.9);
--chart-5: oklch(0.645 0.246 16.439);
- --sidebar: oklch(0.21 0.006 285.885);
- --sidebar-foreground: oklch(0.985 0 0);
- --sidebar-primary: oklch(0.645 0.246 16.439);
- --sidebar-primary-foreground: oklch(0.969 0.015 12.422);
- --sidebar-accent: oklch(0.274 0.006 286.033);
- --sidebar-accent-foreground: oklch(0.985 0 0);
+ --sidebar: oklch(0.208 0.042 265.755);
+ --sidebar-foreground: oklch(0.984 0.003 247.858);
+ --sidebar-primary: oklch(0.488 0.243 264.376);
+ --sidebar-primary-foreground: oklch(0.984 0.003 247.858);
+ --sidebar-accent: oklch(0.279 0.041 260.031);
+ --sidebar-accent-foreground: oklch(0.984 0.003 247.858);
--sidebar-border: oklch(1 0 0 / 10%);
- --sidebar-ring: oklch(0.645 0.246 16.439);
+ --sidebar-ring: oklch(0.551 0.027 264.364);
}
@theme inline {
@@ -118,4 +118,4 @@
body {
@apply bg-background text-foreground;
}
-}
+}
\ No newline at end of file
diff --git a/frontend/src/app.d.ts b/frontend/src/app.d.ts
new file mode 100644
index 0000000..da08e6d
--- /dev/null
+++ b/frontend/src/app.d.ts
@@ -0,0 +1,13 @@
+// See https://svelte.dev/docs/kit/types#app.d.ts
+// for information about these interfaces
+declare global {
+ namespace App {
+ // interface Error {}
+ // interface Locals {}
+ // interface PageData {}
+ // interface PageState {}
+ // interface Platform {}
+ }
+}
+
+export {};
diff --git a/frontend/src/app.html b/frontend/src/app.html
new file mode 100644
index 0000000..f273cc5
--- /dev/null
+++ b/frontend/src/app.html
@@ -0,0 +1,11 @@
+
+
+
+
+
+ %sveltekit.head%
+
+
+ %sveltekit.body%
+
+
diff --git a/frontend/src/assets/svelte.svg b/frontend/src/assets/svelte.svg
deleted file mode 100644
index c5e0848..0000000
--- a/frontend/src/assets/svelte.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/frontend/src/lib/assets/favicon.svg b/frontend/src/lib/assets/favicon.svg
new file mode 100644
index 0000000..cc5dc66
--- /dev/null
+++ b/frontend/src/lib/assets/favicon.svg
@@ -0,0 +1 @@
+svelte-logo
\ No newline at end of file
diff --git a/frontend/src/lib/components/grid/grid.svelte b/frontend/src/lib/components/grid/grid.svelte
new file mode 100644
index 0000000..e69de29
diff --git a/frontend/src/lib/components/ui/context-menu/context-menu-checkbox-item.svelte b/frontend/src/lib/components/ui/context-menu/context-menu-checkbox-item.svelte
new file mode 100644
index 0000000..ccafce2
--- /dev/null
+++ b/frontend/src/lib/components/ui/context-menu/context-menu-checkbox-item.svelte
@@ -0,0 +1,38 @@
+
+
+
+ {#snippet children({ checked })}
+
+ {#if checked}
+
+ {/if}
+
+ {@render childrenProp?.()}
+ {/snippet}
+
diff --git a/frontend/src/lib/components/ui/context-menu/context-menu-content.svelte b/frontend/src/lib/components/ui/context-menu/context-menu-content.svelte
new file mode 100644
index 0000000..e793938
--- /dev/null
+++ b/frontend/src/lib/components/ui/context-menu/context-menu-content.svelte
@@ -0,0 +1,25 @@
+
+
+
+
+
diff --git a/frontend/src/lib/components/ui/context-menu/context-menu-group-heading.svelte b/frontend/src/lib/components/ui/context-menu/context-menu-group-heading.svelte
new file mode 100644
index 0000000..66a81b3
--- /dev/null
+++ b/frontend/src/lib/components/ui/context-menu/context-menu-group-heading.svelte
@@ -0,0 +1,21 @@
+
+
+
diff --git a/frontend/src/lib/components/ui/context-menu/context-menu-group.svelte b/frontend/src/lib/components/ui/context-menu/context-menu-group.svelte
new file mode 100644
index 0000000..c7c1e06
--- /dev/null
+++ b/frontend/src/lib/components/ui/context-menu/context-menu-group.svelte
@@ -0,0 +1,7 @@
+
+
+
diff --git a/frontend/src/lib/components/ui/context-menu/context-menu-item.svelte b/frontend/src/lib/components/ui/context-menu/context-menu-item.svelte
new file mode 100644
index 0000000..9193d18
--- /dev/null
+++ b/frontend/src/lib/components/ui/context-menu/context-menu-item.svelte
@@ -0,0 +1,27 @@
+
+
+
diff --git a/frontend/src/lib/components/ui/table/table-footer.svelte b/frontend/src/lib/components/ui/context-menu/context-menu-label.svelte
similarity index 52%
rename from frontend/src/lib/components/ui/table/table-footer.svelte
rename to frontend/src/lib/components/ui/context-menu/context-menu-label.svelte
index b9b14eb..7d05037 100644
--- a/frontend/src/lib/components/ui/table/table-footer.svelte
+++ b/frontend/src/lib/components/ui/context-menu/context-menu-label.svelte
@@ -5,16 +5,20 @@
let {
ref = $bindable(null),
class: className,
+ inset,
children,
...restProps
- }: WithElementRef> = $props();
+ }: WithElementRef> & {
+ inset?: boolean;
+ } = $props();
-tr]:last:border-b-0", className)}
+ data-slot="context-menu-label"
+ data-inset={inset}
+ class={cn("text-foreground px-2 py-1.5 text-sm font-medium data-[inset]:pl-8", className)}
{...restProps}
>
{@render children?.()}
-
+
diff --git a/frontend/src/lib/components/ui/context-menu/context-menu-radio-group.svelte b/frontend/src/lib/components/ui/context-menu/context-menu-radio-group.svelte
new file mode 100644
index 0000000..964cb55
--- /dev/null
+++ b/frontend/src/lib/components/ui/context-menu/context-menu-radio-group.svelte
@@ -0,0 +1,16 @@
+
+
+
diff --git a/frontend/src/lib/components/ui/context-menu/context-menu-radio-item.svelte b/frontend/src/lib/components/ui/context-menu/context-menu-radio-item.svelte
new file mode 100644
index 0000000..7673f01
--- /dev/null
+++ b/frontend/src/lib/components/ui/context-menu/context-menu-radio-item.svelte
@@ -0,0 +1,31 @@
+
+
+
+ {#snippet children({ checked })}
+
+ {#if checked}
+
+ {/if}
+
+ {@render childrenProp?.({ checked })}
+ {/snippet}
+
diff --git a/frontend/src/lib/components/ui/context-menu/context-menu-separator.svelte b/frontend/src/lib/components/ui/context-menu/context-menu-separator.svelte
new file mode 100644
index 0000000..7f5b237
--- /dev/null
+++ b/frontend/src/lib/components/ui/context-menu/context-menu-separator.svelte
@@ -0,0 +1,17 @@
+
+
+
diff --git a/frontend/src/lib/components/ui/table/table-body.svelte b/frontend/src/lib/components/ui/context-menu/context-menu-shortcut.svelte
similarity index 59%
rename from frontend/src/lib/components/ui/table/table-body.svelte
rename to frontend/src/lib/components/ui/context-menu/context-menu-shortcut.svelte
index 29e9687..7eca8e0 100644
--- a/frontend/src/lib/components/ui/table/table-body.svelte
+++ b/frontend/src/lib/components/ui/context-menu/context-menu-shortcut.svelte
@@ -7,14 +7,14 @@
class: className,
children,
...restProps
- }: WithElementRef> = $props();
+ }: WithElementRef> = $props();
-
{@render children?.()}
-
+
diff --git a/frontend/src/lib/components/ui/context-menu/context-menu-sub-content.svelte b/frontend/src/lib/components/ui/context-menu/context-menu-sub-content.svelte
new file mode 100644
index 0000000..e0245b1
--- /dev/null
+++ b/frontend/src/lib/components/ui/context-menu/context-menu-sub-content.svelte
@@ -0,0 +1,20 @@
+
+
+
diff --git a/frontend/src/lib/components/ui/context-menu/context-menu-sub-trigger.svelte b/frontend/src/lib/components/ui/context-menu/context-menu-sub-trigger.svelte
new file mode 100644
index 0000000..ba00be9
--- /dev/null
+++ b/frontend/src/lib/components/ui/context-menu/context-menu-sub-trigger.svelte
@@ -0,0 +1,29 @@
+
+
+
+ {@render children?.()}
+
+
diff --git a/frontend/src/lib/components/ui/context-menu/context-menu-trigger.svelte b/frontend/src/lib/components/ui/context-menu/context-menu-trigger.svelte
new file mode 100644
index 0000000..3efa857
--- /dev/null
+++ b/frontend/src/lib/components/ui/context-menu/context-menu-trigger.svelte
@@ -0,0 +1,7 @@
+
+
+
diff --git a/frontend/src/lib/components/ui/context-menu/index.ts b/frontend/src/lib/components/ui/context-menu/index.ts
new file mode 100644
index 0000000..fce8160
--- /dev/null
+++ b/frontend/src/lib/components/ui/context-menu/index.ts
@@ -0,0 +1,51 @@
+import { ContextMenu as ContextMenuPrimitive } from "bits-ui";
+
+import Trigger from "./context-menu-trigger.svelte";
+import Group from "./context-menu-group.svelte";
+import RadioGroup from "./context-menu-radio-group.svelte";
+import Item from "./context-menu-item.svelte";
+import GroupHeading from "./context-menu-group-heading.svelte";
+import Content from "./context-menu-content.svelte";
+import Shortcut from "./context-menu-shortcut.svelte";
+import RadioItem from "./context-menu-radio-item.svelte";
+import Separator from "./context-menu-separator.svelte";
+import SubContent from "./context-menu-sub-content.svelte";
+import SubTrigger from "./context-menu-sub-trigger.svelte";
+import CheckboxItem from "./context-menu-checkbox-item.svelte";
+import Label from "./context-menu-label.svelte";
+const Sub = ContextMenuPrimitive.Sub;
+const Root = ContextMenuPrimitive.Root;
+
+export {
+ Sub,
+ Root,
+ Item,
+ GroupHeading,
+ Label,
+ Group,
+ Trigger,
+ Content,
+ Shortcut,
+ Separator,
+ RadioItem,
+ SubContent,
+ SubTrigger,
+ RadioGroup,
+ CheckboxItem,
+ //
+ Root as ContextMenu,
+ Sub as ContextMenuSub,
+ Item as ContextMenuItem,
+ GroupHeading as ContextMenuGroupHeading,
+ Group as ContextMenuGroup,
+ Content as ContextMenuContent,
+ Trigger as ContextMenuTrigger,
+ Shortcut as ContextMenuShortcut,
+ RadioItem as ContextMenuRadioItem,
+ Separator as ContextMenuSeparator,
+ RadioGroup as ContextMenuRadioGroup,
+ SubContent as ContextMenuSubContent,
+ SubTrigger as ContextMenuSubTrigger,
+ CheckboxItem as ContextMenuCheckboxItem,
+ Label as ContextMenuLabel,
+};
diff --git a/frontend/src/lib/components/ui/table/index.ts b/frontend/src/lib/components/ui/table/index.ts
deleted file mode 100644
index 14695c8..0000000
--- a/frontend/src/lib/components/ui/table/index.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import Root from "./table.svelte";
-import Body from "./table-body.svelte";
-import Caption from "./table-caption.svelte";
-import Cell from "./table-cell.svelte";
-import Footer from "./table-footer.svelte";
-import Head from "./table-head.svelte";
-import Header from "./table-header.svelte";
-import Row from "./table-row.svelte";
-
-export {
- Root,
- Body,
- Caption,
- Cell,
- Footer,
- Head,
- Header,
- Row,
- //
- Root as Table,
- Body as TableBody,
- Caption as TableCaption,
- Cell as TableCell,
- Footer as TableFooter,
- Head as TableHead,
- Header as TableHeader,
- Row as TableRow,
-};
diff --git a/frontend/src/lib/components/ui/table/table-caption.svelte b/frontend/src/lib/components/ui/table/table-caption.svelte
deleted file mode 100644
index 4696cff..0000000
--- a/frontend/src/lib/components/ui/table/table-caption.svelte
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
- {@render children?.()}
-
diff --git a/frontend/src/lib/components/ui/table/table-cell.svelte b/frontend/src/lib/components/ui/table/table-cell.svelte
deleted file mode 100644
index 1a2f033..0000000
--- a/frontend/src/lib/components/ui/table/table-cell.svelte
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
- {@render children?.()}
-
diff --git a/frontend/src/lib/components/ui/table/table-head.svelte b/frontend/src/lib/components/ui/table/table-head.svelte
deleted file mode 100644
index e9dd237..0000000
--- a/frontend/src/lib/components/ui/table/table-head.svelte
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
- {@render children?.()}
-
diff --git a/frontend/src/lib/components/ui/table/table-header.svelte b/frontend/src/lib/components/ui/table/table-header.svelte
deleted file mode 100644
index f47d259..0000000
--- a/frontend/src/lib/components/ui/table/table-header.svelte
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
- {@render children?.()}
-
diff --git a/frontend/src/lib/components/ui/table/table-row.svelte b/frontend/src/lib/components/ui/table/table-row.svelte
deleted file mode 100644
index 0df769e..0000000
--- a/frontend/src/lib/components/ui/table/table-row.svelte
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-svelte-css-wrapper]:[&>th,td]:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",
- className
- )}
- {...restProps}
->
- {@render children?.()}
-
diff --git a/frontend/src/lib/components/ui/table/table.svelte b/frontend/src/lib/components/ui/table/table.svelte
deleted file mode 100644
index a334956..0000000
--- a/frontend/src/lib/components/ui/table/table.svelte
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
- {@render children?.()}
-
-
diff --git a/frontend/src/lib/index.ts b/frontend/src/lib/index.ts
new file mode 100644
index 0000000..856f2b6
--- /dev/null
+++ b/frontend/src/lib/index.ts
@@ -0,0 +1 @@
+// place files you want to import through the `$lib` alias in this folder.
diff --git a/frontend/src/main.ts b/frontend/src/main.ts
deleted file mode 100644
index d47b930..0000000
--- a/frontend/src/main.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { mount } from "svelte";
-import "./app.css";
-import App from "./App.svelte";
-
-const app = mount(App, {
- target: document.getElementById("app")!,
-});
-
-export default app;
diff --git a/frontend/src/routes/+layout.svelte b/frontend/src/routes/+layout.svelte
new file mode 100644
index 0000000..4277a7d
--- /dev/null
+++ b/frontend/src/routes/+layout.svelte
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+{@render children?.()}
diff --git a/frontend/src/routes/+page.svelte b/frontend/src/routes/+page.svelte
new file mode 100644
index 0000000..29d916c
--- /dev/null
+++ b/frontend/src/routes/+page.svelte
@@ -0,0 +1,22 @@
+
+
+
+
+
+ Toggle theme
+
+
+
+
+
diff --git a/frontend/src/vite-env.d.ts b/frontend/src/vite-env.d.ts
deleted file mode 100644
index 4078e74..0000000
--- a/frontend/src/vite-env.d.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-///
-///
diff --git a/frontend/static/robots.txt b/frontend/static/robots.txt
new file mode 100644
index 0000000..b6dd667
--- /dev/null
+++ b/frontend/static/robots.txt
@@ -0,0 +1,3 @@
+# allow crawling everything by default
+User-agent: *
+Disallow:
diff --git a/frontend/svelte.config.js b/frontend/svelte.config.js
index a710f1b..4a423ba 100644
--- a/frontend/svelte.config.js
+++ b/frontend/svelte.config.js
@@ -1,8 +1,12 @@
-import { vitePreprocess } from "@sveltejs/vite-plugin-svelte";
+import adapter from '@sveltejs/adapter-static';
+import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
-/** @type {import("@sveltejs/vite-plugin-svelte").SvelteConfig} */
-export default {
- // Consult https://svelte.dev/docs#compile-time-svelte-preprocess
- // for more information about preprocessors
- preprocess: vitePreprocess(),
+/** @type {import('@sveltejs/kit').Config} */
+const config = {
+ // Consult https://svelte.dev/docs/kit/integrations
+ // for more information about preprocessors
+ preprocess: vitePreprocess(),
+ kit: { adapter: adapter() }
};
+
+export default config;
diff --git a/frontend/tsconfig.app.json b/frontend/tsconfig.app.json
deleted file mode 100644
index bb2c024..0000000
--- a/frontend/tsconfig.app.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "extends": "@tsconfig/svelte/tsconfig.json",
- "compilerOptions": {
- "baseUrl": ".",
- "paths": {
- "$lib": ["./src/lib"],
- "$lib/*": ["./src/lib/*"]
- },
- "target": "ES2022",
- "useDefineForClassFields": true,
- "module": "ESNext",
- "resolveJsonModule": true,
- /**
- * Typecheck JS in `.svelte` and `.js` files by default.
- * Disable checkJs if you'd like to use dynamic types in JS.
- * Note that setting allowJs false does not prevent the use
- * of JS in `.svelte` files.
- */
- "allowJs": true,
- "checkJs": true,
- "isolatedModules": true,
- "moduleDetection": "force"
- },
- "include": ["src/**/*.ts", "src/**/*.js", "src/**/*.svelte"]
-}
diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json
index c2baf42..a5567ee 100644
--- a/frontend/tsconfig.json
+++ b/frontend/tsconfig.json
@@ -1,14 +1,19 @@
{
- "files": [],
- "references": [
- { "path": "./tsconfig.app.json" },
- { "path": "./tsconfig.node.json" }
- ],
- "compilerOptions": {
- "baseUrl": ".",
- "paths": {
- "$lib": ["./src/lib"],
- "$lib/*": ["./src/lib/*"]
- }
- }
+ "extends": "./.svelte-kit/tsconfig.json",
+ "compilerOptions": {
+ "allowJs": true,
+ "checkJs": true,
+ "esModuleInterop": true,
+ "forceConsistentCasingInFileNames": true,
+ "resolveJsonModule": true,
+ "skipLibCheck": true,
+ "sourceMap": true,
+ "strict": true,
+ "moduleResolution": "bundler"
+ }
+ // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias
+ // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files
+ //
+ // To make changes to top-level options such as include and exclude, we recommend extending
+ // the generated config; see https://svelte.dev/docs/kit/configuration#typescript
}
diff --git a/frontend/tsconfig.node.json b/frontend/tsconfig.node.json
deleted file mode 100644
index f85a399..0000000
--- a/frontend/tsconfig.node.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "compilerOptions": {
- "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
- "target": "ES2023",
- "lib": ["ES2023"],
- "module": "ESNext",
- "skipLibCheck": true,
-
- /* Bundler mode */
- "moduleResolution": "bundler",
- "allowImportingTsExtensions": true,
- "verbatimModuleSyntax": true,
- "moduleDetection": "force",
- "noEmit": true,
-
- /* Linting */
- "strict": true,
- "noUnusedLocals": true,
- "noUnusedParameters": true,
- "erasableSyntaxOnly": true,
- "noFallthroughCasesInSwitch": true,
- "noUncheckedSideEffectImports": true
- },
- "include": ["vite.config.ts"]
-}
diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts
index 1f8566c..2d35c4f 100644
--- a/frontend/vite.config.ts
+++ b/frontend/vite.config.ts
@@ -1,14 +1,7 @@
-import path from "path";
-import tailwindcss from "@tailwindcss/vite";
-import { defineConfig } from "vite";
-import { svelte } from "@sveltejs/vite-plugin-svelte";
+import tailwindcss from '@tailwindcss/vite';
+import { sveltekit } from '@sveltejs/kit/vite';
+import { defineConfig } from 'vite';
-// https://vite.dev/config/
export default defineConfig({
- plugins: [tailwindcss(), svelte()],
- resolve: {
- alias: {
- $lib: path.resolve("./src/lib"),
- },
- },
+ plugins: [tailwindcss(), sveltekit()]
});