Compare commits
17 Commits
ca65d2986e
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| d0cfefaa3d | |||
| 9a0b73d27c | |||
| b5ace9871d | |||
| 981566c3ba | |||
| 3aa6590c9a | |||
| ca2bd2f50a | |||
| fb01fe583e | |||
| 4925e6b739 | |||
| 0d4c71926d | |||
| e994430d28 | |||
| 63d76accff | |||
| 84d7c8b2be | |||
| 4af12dac40 | |||
| 9a41b5424e | |||
| a33c1d8f5b | |||
| ae04d2b7b3 | |||
| 8faa93d976 |
21
Dockerfile
Normal file
21
Dockerfile
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
FROM node:23-slim AS base
|
||||||
|
LABEL Author="eisterman"
|
||||||
|
ENV PNPM_HOME="/pnpm"
|
||||||
|
ENV PATH="$PNPM_HOME:$PATH"
|
||||||
|
RUN corepack enable
|
||||||
|
|
||||||
|
COPY . /app
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
FROM base AS prod-deps
|
||||||
|
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile
|
||||||
|
|
||||||
|
FROM base AS build
|
||||||
|
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
|
||||||
|
RUN pnpm run build
|
||||||
|
|
||||||
|
FROM base
|
||||||
|
COPY --from=prod-deps /app/node_modules /app/node_modules
|
||||||
|
COPY --from=build /app/build /app/build
|
||||||
|
EXPOSE 3000
|
||||||
|
ENTRYPOINT ["node", "build"]
|
||||||
42
README.md
42
README.md
@@ -1,38 +1,8 @@
|
|||||||
# sv
|
# Svelte-Kit RE Charge.re
|
||||||
|
|
||||||
Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli).
|
### Missing in TODO:
|
||||||
|
|
||||||
## Creating a project
|
- [ ] Localizzazione
|
||||||
|
- [ ] Opzione per selezione lingue
|
||||||
If you're seeing this, you've probably already done this step. Congrats!
|
- [ ] Aggiornamento paraglide
|
||||||
|
- [ ] Pagina di "attesa 30 secondi avvio carica"
|
||||||
```bash
|
|
||||||
# create a new project in the current directory
|
|
||||||
npx sv create
|
|
||||||
|
|
||||||
# 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:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
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:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
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.
|
|
||||||
|
|||||||
@@ -15,7 +15,11 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/compat": "^1.2.5",
|
"@eslint/compat": "^1.2.5",
|
||||||
"@eslint/js": "^9.18.0",
|
"@eslint/js": "^9.18.0",
|
||||||
"@sveltejs/adapter-auto": "^4.0.0",
|
"@iconify/svelte": "^4.2.0",
|
||||||
|
"@melt-ui/pp": "^0.3.2",
|
||||||
|
"@melt-ui/svelte": "^0.86.5",
|
||||||
|
"@sveltejs/adapter-node": "^5.2.12",
|
||||||
|
"@sveltejs/enhanced-img": "^0.4.4",
|
||||||
"@sveltejs/kit": "^2.16.0",
|
"@sveltejs/kit": "^2.16.0",
|
||||||
"@sveltejs/vite-plugin-svelte": "^5.0.0",
|
"@sveltejs/vite-plugin-svelte": "^5.0.0",
|
||||||
"@tailwindcss/vite": "^4.0.0",
|
"@tailwindcss/vite": "^4.0.0",
|
||||||
@@ -40,7 +44,8 @@
|
|||||||
},
|
},
|
||||||
"pnpm": {
|
"pnpm": {
|
||||||
"onlyBuiltDependencies": [
|
"onlyBuiltDependencies": [
|
||||||
"esbuild"
|
"esbuild",
|
||||||
|
"sharp"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
595
pnpm-lock.yaml
generated
595
pnpm-lock.yaml
generated
@@ -27,9 +27,21 @@ importers:
|
|||||||
'@eslint/js':
|
'@eslint/js':
|
||||||
specifier: ^9.18.0
|
specifier: ^9.18.0
|
||||||
version: 9.23.0
|
version: 9.23.0
|
||||||
'@sveltejs/adapter-auto':
|
'@iconify/svelte':
|
||||||
specifier: ^4.0.0
|
specifier: ^4.2.0
|
||||||
version: 4.0.0(@sveltejs/kit@2.20.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))
|
version: 4.2.0(svelte@5.25.3)
|
||||||
|
'@melt-ui/pp':
|
||||||
|
specifier: ^0.3.2
|
||||||
|
version: 0.3.2(@melt-ui/svelte@0.86.5(svelte@5.25.3))(svelte@5.25.3)
|
||||||
|
'@melt-ui/svelte':
|
||||||
|
specifier: ^0.86.5
|
||||||
|
version: 0.86.5(svelte@5.25.3)
|
||||||
|
'@sveltejs/adapter-node':
|
||||||
|
specifier: ^5.2.12
|
||||||
|
version: 5.2.12(@sveltejs/kit@2.20.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))
|
||||||
|
'@sveltejs/enhanced-img':
|
||||||
|
specifier: ^0.4.4
|
||||||
|
version: 0.4.4(rollup@4.37.0)(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2))
|
||||||
'@sveltejs/kit':
|
'@sveltejs/kit':
|
||||||
specifier: ^2.16.0
|
specifier: ^2.16.0
|
||||||
version: 2.20.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2))
|
version: 2.20.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2))
|
||||||
@@ -59,7 +71,7 @@ importers:
|
|||||||
version: 5.25.3
|
version: 5.25.3
|
||||||
svelte-check:
|
svelte-check:
|
||||||
specifier: ^4.0.0
|
specifier: ^4.0.0
|
||||||
version: 4.1.5(svelte@5.25.3)(typescript@5.8.2)
|
version: 4.1.5(picomatch@4.0.2)(svelte@5.25.3)(typescript@5.8.2)
|
||||||
sveltekit-superforms:
|
sveltekit-superforms:
|
||||||
specifier: ^2.24.0
|
specifier: ^2.24.0
|
||||||
version: 2.24.0(@sveltejs/kit@2.20.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))(@types/json-schema@7.0.15)(svelte@5.25.3)(typescript@5.8.2)
|
version: 2.24.0(@sveltejs/kit@2.20.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))(@types/json-schema@7.0.15)(svelte@5.25.3)(typescript@5.8.2)
|
||||||
@@ -92,6 +104,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==}
|
resolution: {integrity: sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==}
|
||||||
engines: {node: '>=6.9.0'}
|
engines: {node: '>=6.9.0'}
|
||||||
|
|
||||||
|
'@emnapi/runtime@1.3.1':
|
||||||
|
resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==}
|
||||||
|
|
||||||
'@esbuild/aix-ppc64@0.25.1':
|
'@esbuild/aix-ppc64@0.25.1':
|
||||||
resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==}
|
resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
@@ -292,6 +307,15 @@ packages:
|
|||||||
'@exodus/schemasafe@1.3.0':
|
'@exodus/schemasafe@1.3.0':
|
||||||
resolution: {integrity: sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==}
|
resolution: {integrity: sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==}
|
||||||
|
|
||||||
|
'@floating-ui/core@1.6.9':
|
||||||
|
resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==}
|
||||||
|
|
||||||
|
'@floating-ui/dom@1.6.13':
|
||||||
|
resolution: {integrity: sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==}
|
||||||
|
|
||||||
|
'@floating-ui/utils@0.2.9':
|
||||||
|
resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==}
|
||||||
|
|
||||||
'@gcornut/valibot-json-schema@0.31.0':
|
'@gcornut/valibot-json-schema@0.31.0':
|
||||||
resolution: {integrity: sha512-3xGptCurm23e7nuPQkdrE5rEs1FeTPHhAUsBuwwqG4/YeZLwJOoYZv+fmsppUEfo5y9lzUwNQrNqLS/q7HMc7g==}
|
resolution: {integrity: sha512-3xGptCurm23e7nuPQkdrE5rEs1FeTPHhAUsBuwwqG4/YeZLwJOoYZv+fmsppUEfo5y9lzUwNQrNqLS/q7HMc7g==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@@ -322,6 +346,119 @@ packages:
|
|||||||
resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==}
|
resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==}
|
||||||
engines: {node: '>=18.18'}
|
engines: {node: '>=18.18'}
|
||||||
|
|
||||||
|
'@iconify/svelte@4.2.0':
|
||||||
|
resolution: {integrity: sha512-fEl0T7SAPonK7xk6xUlRPDmFDZVDe2Z7ZstlqeDS/sS8ve2uyU+Qa8rTWbIqzZJlRvONkK5kVXiUf9nIc+6OOQ==}
|
||||||
|
peerDependencies:
|
||||||
|
svelte: '>4.0.0'
|
||||||
|
|
||||||
|
'@iconify/types@2.0.0':
|
||||||
|
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
|
||||||
|
|
||||||
|
'@img/sharp-darwin-arm64@0.33.5':
|
||||||
|
resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
|
||||||
|
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==}
|
||||||
|
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==}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [darwin]
|
||||||
|
|
||||||
|
'@img/sharp-libvips-darwin-x64@1.0.4':
|
||||||
|
resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [darwin]
|
||||||
|
|
||||||
|
'@img/sharp-libvips-linux-arm64@1.0.4':
|
||||||
|
resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@img/sharp-libvips-linux-arm@1.0.5':
|
||||||
|
resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==}
|
||||||
|
cpu: [arm]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@img/sharp-libvips-linux-s390x@1.0.4':
|
||||||
|
resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==}
|
||||||
|
cpu: [s390x]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@img/sharp-libvips-linux-x64@1.0.4':
|
||||||
|
resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@img/sharp-libvips-linuxmusl-arm64@1.0.4':
|
||||||
|
resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@img/sharp-libvips-linuxmusl-x64@1.0.4':
|
||||||
|
resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@img/sharp-linux-arm64@0.33.5':
|
||||||
|
resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==}
|
||||||
|
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==}
|
||||||
|
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==}
|
||||||
|
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==}
|
||||||
|
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==}
|
||||||
|
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==}
|
||||||
|
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==}
|
||||||
|
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==}
|
||||||
|
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==}
|
||||||
|
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [win32]
|
||||||
|
|
||||||
'@inlang/paraglide-js@2.0.4':
|
'@inlang/paraglide-js@2.0.4':
|
||||||
resolution: {integrity: sha512-5p2Mia2PnwafJQtG6S2UqoHKhqUK7l0goMc5mI6AqQ2lEh14Fkl5uqYwUaI49s6Du4GX5Or1Wp+yBlOA74MKOQ==}
|
resolution: {integrity: sha512-5p2Mia2PnwafJQtG6S2UqoHKhqUK7l0goMc5mI6AqQ2lEh14Fkl5uqYwUaI49s6Du4GX5Or1Wp+yBlOA74MKOQ==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@@ -333,6 +470,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-1cbeEzfQLTHTl1Y2qthZWItiZHe0ok0w1rNeANW1IO8GcFCmx44WGt7KnNssiUjPl7YKi4JG9XhwwaVPqNJfyA==}
|
resolution: {integrity: sha512-1cbeEzfQLTHTl1Y2qthZWItiZHe0ok0w1rNeANW1IO8GcFCmx44WGt7KnNssiUjPl7YKi4JG9XhwwaVPqNJfyA==}
|
||||||
engines: {node: '>=18.0.0'}
|
engines: {node: '>=18.0.0'}
|
||||||
|
|
||||||
|
'@internationalized/date@3.7.0':
|
||||||
|
resolution: {integrity: sha512-VJ5WS3fcVx0bejE/YHfbDKR/yawZgKqn/if+oEeLqNwBtPzVB06olkfcnojTmEMX+gTpH+FlQ69SHNitJ8/erQ==}
|
||||||
|
|
||||||
'@jridgewell/gen-mapping@0.3.8':
|
'@jridgewell/gen-mapping@0.3.8':
|
||||||
resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
|
resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
|
||||||
engines: {node: '>=6.0.0'}
|
engines: {node: '>=6.0.0'}
|
||||||
@@ -358,6 +498,17 @@ packages:
|
|||||||
'@lix-js/server-api-schema@0.1.1':
|
'@lix-js/server-api-schema@0.1.1':
|
||||||
resolution: {integrity: sha512-W1Z7KKOxAQ4Dag9V2wrDevHPh5rPk+icBUsxNfNCNB2tlPrKpba99562vcTCPoT03KXpihEbWutZNujCRtMA+g==}
|
resolution: {integrity: sha512-W1Z7KKOxAQ4Dag9V2wrDevHPh5rPk+icBUsxNfNCNB2tlPrKpba99562vcTCPoT03KXpihEbWutZNujCRtMA+g==}
|
||||||
|
|
||||||
|
'@melt-ui/pp@0.3.2':
|
||||||
|
resolution: {integrity: sha512-xKkPvaIAFinklLXcQOpwZ8YSpqAFxykjWf8Y/fSJQwsixV/0rcFs07hJ49hJjPy5vItvw5Qa0uOjzFUbXzBypQ==}
|
||||||
|
peerDependencies:
|
||||||
|
'@melt-ui/svelte': '>= 0.29.0'
|
||||||
|
svelte: ^3.55.0 || ^4.0.0 || ^5.0.0-next.1
|
||||||
|
|
||||||
|
'@melt-ui/svelte@0.86.5':
|
||||||
|
resolution: {integrity: sha512-aaVfc0pxCf6B3ByrzGJ+hB2Sop9wJamw2lNHZlzaolU0Ew1D6O9CbeJElGODT8IbH8/bhI3LcN0nCJRh2ePq+A==}
|
||||||
|
peerDependencies:
|
||||||
|
svelte: ^3.0.0 || ^4.0.0 || ^5.0.0-next.118
|
||||||
|
|
||||||
'@nodelib/fs.scandir@2.1.5':
|
'@nodelib/fs.scandir@2.1.5':
|
||||||
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
|
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
@@ -377,6 +528,42 @@ packages:
|
|||||||
resolution: {integrity: sha512-ct43jurbe7lsUX5eIrj4ijO3j/6zIPp7CDnFWXDs7UPAbw1Pu1iH3oAmFdP4jcskKJBURH5M9oTtyeiUXyHX8Q==}
|
resolution: {integrity: sha512-ct43jurbe7lsUX5eIrj4ijO3j/6zIPp7CDnFWXDs7UPAbw1Pu1iH3oAmFdP4jcskKJBURH5M9oTtyeiUXyHX8Q==}
|
||||||
engines: {node: '>=18.16.0'}
|
engines: {node: '>=18.16.0'}
|
||||||
|
|
||||||
|
'@rollup/plugin-commonjs@28.0.3':
|
||||||
|
resolution: {integrity: sha512-pyltgilam1QPdn+Zd9gaCfOLcnjMEJ9gV+bTw6/r73INdvzf1ah9zLIJBm+kW7R6IUFIQ1YO+VqZtYxZNWFPEQ==}
|
||||||
|
engines: {node: '>=16.0.0 || 14 >= 14.17'}
|
||||||
|
peerDependencies:
|
||||||
|
rollup: ^2.68.0||^3.0.0||^4.0.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
rollup:
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/plugin-json@6.1.0':
|
||||||
|
resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==}
|
||||||
|
engines: {node: '>=14.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
rollup:
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/plugin-node-resolve@16.0.1':
|
||||||
|
resolution: {integrity: sha512-tk5YCxJWIG81umIvNkSod2qK5KyQW19qcBF/B78n1bjtOON6gzKoVeSzAE8yHCZEDmqkHKkxplExA8KzdJLJpA==}
|
||||||
|
engines: {node: '>=14.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
rollup: ^2.78.0||^3.0.0||^4.0.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
rollup:
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/pluginutils@5.1.4':
|
||||||
|
resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==}
|
||||||
|
engines: {node: '>=14.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
rollup:
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@rollup/rollup-android-arm-eabi@4.37.0':
|
'@rollup/rollup-android-arm-eabi@4.37.0':
|
||||||
resolution: {integrity: sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==}
|
resolution: {integrity: sha512-l7StVw6WAa8l3vA1ov80jyetOAEo1FtHvZDbzXDO/02Sq/QVvqlHkYoFwDJPIMj0GKiistsBudfx5tGFnwYWDQ==}
|
||||||
cpu: [arm]
|
cpu: [arm]
|
||||||
@@ -504,10 +691,16 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
acorn: ^8.9.0
|
acorn: ^8.9.0
|
||||||
|
|
||||||
'@sveltejs/adapter-auto@4.0.0':
|
'@sveltejs/adapter-node@5.2.12':
|
||||||
resolution: {integrity: sha512-kmuYSQdD2AwThymQF0haQhM8rE5rhutQXG4LNbnbShwhMO4qQGnKaaTy+88DuNSuoQDi58+thpq8XpHc1+oEKQ==}
|
resolution: {integrity: sha512-0bp4Yb3jKIEcZWVcJC/L1xXp9zzJS4hDwfb4VITAkfT4OVdkspSHsx7YhqJDbb2hgLl6R9Vs7VQR+fqIVOxPUQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@sveltejs/kit': ^2.0.0
|
'@sveltejs/kit': ^2.4.0
|
||||||
|
|
||||||
|
'@sveltejs/enhanced-img@0.4.4':
|
||||||
|
resolution: {integrity: sha512-BlBTGfbLUgHa+zSVrsGLOd+noCKWfipoOjoxE26bAAX97v7zh5eiCAp1KEdpkluL05Tl3+nR14gQdPsATyZqoA==}
|
||||||
|
peerDependencies:
|
||||||
|
svelte: ^5.0.0
|
||||||
|
vite: '>= 5.0.0'
|
||||||
|
|
||||||
'@sveltejs/kit@2.20.2':
|
'@sveltejs/kit@2.20.2':
|
||||||
resolution: {integrity: sha512-Dv8TOAZC9vyfcAB9TMsvUEJsRbklRTeNfcYBPaeH6KnABJ99i3CvCB2eNx8fiiliIqe+9GIchBg4RodRH5p1BQ==}
|
resolution: {integrity: sha512-Dv8TOAZC9vyfcAB9TMsvUEJsRbklRTeNfcYBPaeH6KnABJ99i3CvCB2eNx8fiiliIqe+9GIchBg4RodRH5p1BQ==}
|
||||||
@@ -533,6 +726,9 @@ packages:
|
|||||||
svelte: ^5.0.0
|
svelte: ^5.0.0
|
||||||
vite: ^6.0.0
|
vite: ^6.0.0
|
||||||
|
|
||||||
|
'@swc/helpers@0.5.15':
|
||||||
|
resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
|
||||||
|
|
||||||
'@tailwindcss/node@4.0.15':
|
'@tailwindcss/node@4.0.15':
|
||||||
resolution: {integrity: sha512-IODaJjNmiasfZX3IoS+4Em3iu0fD2HS0/tgrnkYfW4hyUor01Smnr5eY3jc4rRgaTDrJlDmBTHbFO0ETTDaxWA==}
|
resolution: {integrity: sha512-IODaJjNmiasfZX3IoS+4Em3iu0fD2HS0/tgrnkYfW4hyUor01Smnr5eY3jc4rRgaTDrJlDmBTHbFO0ETTDaxWA==}
|
||||||
|
|
||||||
@@ -629,6 +825,9 @@ packages:
|
|||||||
'@types/leaflet@1.9.17':
|
'@types/leaflet@1.9.17':
|
||||||
resolution: {integrity: sha512-IJ4K6t7I3Fh5qXbQ1uwL3CFVbCi6haW9+53oLWgdKlLP7EaS21byWFJxxqOx9y8I0AP0actXSJLVMbyvxhkUTA==}
|
resolution: {integrity: sha512-IJ4K6t7I3Fh5qXbQ1uwL3CFVbCi6haW9+53oLWgdKlLP7EaS21byWFJxxqOx9y8I0AP0actXSJLVMbyvxhkUTA==}
|
||||||
|
|
||||||
|
'@types/resolve@1.20.2':
|
||||||
|
resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
|
||||||
|
|
||||||
'@types/validator@13.12.2':
|
'@types/validator@13.12.2':
|
||||||
resolution: {integrity: sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==}
|
resolution: {integrity: sha512-6SlHBzUW8Jhf3liqrGGXyTJSIFe4nqlJ5A5KaMZ2l/vbM3Wh3KSybots/wfWVzNLK4D1NZluDlSQIbIEPx6oyA==}
|
||||||
|
|
||||||
@@ -783,6 +982,13 @@ packages:
|
|||||||
color-name@1.1.4:
|
color-name@1.1.4:
|
||||||
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
|
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'}
|
||||||
|
|
||||||
commander@11.1.0:
|
commander@11.1.0:
|
||||||
resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
|
resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
|
||||||
engines: {node: '>=16'}
|
engines: {node: '>=16'}
|
||||||
@@ -791,6 +997,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==}
|
resolution: {integrity: sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==}
|
||||||
engines: {node: '>= 6'}
|
engines: {node: '>= 6'}
|
||||||
|
|
||||||
|
commondir@1.0.1:
|
||||||
|
resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
|
||||||
|
|
||||||
concat-map@0.0.1:
|
concat-map@0.0.1:
|
||||||
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
|
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
|
||||||
|
|
||||||
@@ -844,6 +1053,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
|
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
|
dequal@2.0.3:
|
||||||
|
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
|
||||||
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
detect-libc@2.0.3:
|
detect-libc@2.0.3:
|
||||||
resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
|
resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@@ -941,6 +1154,12 @@ packages:
|
|||||||
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
|
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
|
||||||
engines: {node: '>=4.0'}
|
engines: {node: '>=4.0'}
|
||||||
|
|
||||||
|
estree-walker@2.0.2:
|
||||||
|
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
|
||||||
|
|
||||||
|
estree-walker@3.0.3:
|
||||||
|
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
|
||||||
|
|
||||||
esutils@2.0.3:
|
esutils@2.0.3:
|
||||||
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
|
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@@ -992,6 +1211,9 @@ packages:
|
|||||||
flatted@3.3.3:
|
flatted@3.3.3:
|
||||||
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
|
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
|
||||||
|
|
||||||
|
focus-trap@7.6.4:
|
||||||
|
resolution: {integrity: sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==}
|
||||||
|
|
||||||
formsnap@2.0.0:
|
formsnap@2.0.0:
|
||||||
resolution: {integrity: sha512-W61elddvdzeBEs10nNvwxQnx/FctJFHBXPk9uluNQAckHo1nuSUvSQGIjtLjTKIbQdQnwEOoxqWrk9tuv0U7hA==}
|
resolution: {integrity: sha512-W61elddvdzeBEs10nNvwxQnx/FctJFHBXPk9uluNQAckHo1nuSUvSQGIjtLjTKIbQdQnwEOoxqWrk9tuv0U7hA==}
|
||||||
engines: {node: '>=18', pnpm: '>=8.7.0'}
|
engines: {node: '>=18', pnpm: '>=8.7.0'}
|
||||||
@@ -1004,6 +1226,9 @@ packages:
|
|||||||
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
|
function-bind@1.1.2:
|
||||||
|
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
|
||||||
|
|
||||||
glob-parent@5.1.2:
|
glob-parent@5.1.2:
|
||||||
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
|
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
|
||||||
engines: {node: '>= 6'}
|
engines: {node: '>= 6'}
|
||||||
@@ -1034,6 +1259,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==}
|
resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
|
hasown@2.0.2:
|
||||||
|
resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
human-id@4.1.1:
|
human-id@4.1.1:
|
||||||
resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==}
|
resolution: {integrity: sha512-3gKm/gCSUipeLsRYZbbdA1BD83lBoWUkZ7G9VFrhWPAU76KwYo5KR8V28bpoPm/ygy0x5/GCbpRQdY7VLYCoIg==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
@@ -1042,6 +1271,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
|
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
|
||||||
engines: {node: '>= 4'}
|
engines: {node: '>= 4'}
|
||||||
|
|
||||||
|
imagetools-core@7.0.2:
|
||||||
|
resolution: {integrity: sha512-nrLdKLJHHXd8MitwlXK6/h1TSwGaH3X1DZ3z6yMv/tX7dJ12ecLxZ6P5jgKetfIFh8IJwH9fCWMoTA8ixg0VVA==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
|
||||||
import-fresh@3.3.1:
|
import-fresh@3.3.1:
|
||||||
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
|
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
@@ -1056,6 +1289,13 @@ packages:
|
|||||||
inline-style-parser@0.2.4:
|
inline-style-parser@0.2.4:
|
||||||
resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==}
|
resolution: {integrity: sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==}
|
||||||
|
|
||||||
|
is-arrayish@0.3.2:
|
||||||
|
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
|
||||||
|
|
||||||
|
is-core-module@2.16.1:
|
||||||
|
resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
is-extglob@2.1.1:
|
is-extglob@2.1.1:
|
||||||
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
|
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@@ -1064,10 +1304,16 @@ packages:
|
|||||||
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
|
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
|
is-module@1.0.0:
|
||||||
|
resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==}
|
||||||
|
|
||||||
is-number@7.0.0:
|
is-number@7.0.0:
|
||||||
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
|
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
|
||||||
engines: {node: '>=0.12.0'}
|
engines: {node: '>=0.12.0'}
|
||||||
|
|
||||||
|
is-reference@1.2.1:
|
||||||
|
resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
|
||||||
|
|
||||||
is-reference@3.0.3:
|
is-reference@3.0.3:
|
||||||
resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==}
|
resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==}
|
||||||
|
|
||||||
@@ -1245,6 +1491,11 @@ packages:
|
|||||||
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
|
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
nanoid@5.1.5:
|
||||||
|
resolution: {integrity: sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==}
|
||||||
|
engines: {node: ^18 || >=20}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
natural-compare@1.4.0:
|
natural-compare@1.4.0:
|
||||||
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
|
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
|
||||||
|
|
||||||
@@ -1276,6 +1527,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
|
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
|
path-parse@1.0.7:
|
||||||
|
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
|
||||||
|
|
||||||
picocolors@1.1.1:
|
picocolors@1.1.1:
|
||||||
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
|
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
|
||||||
|
|
||||||
@@ -1283,6 +1537,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
|
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
|
||||||
engines: {node: '>=8.6'}
|
engines: {node: '>=8.6'}
|
||||||
|
|
||||||
|
picomatch@4.0.2:
|
||||||
|
resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
postcss-load-config@3.1.4:
|
postcss-load-config@3.1.4:
|
||||||
resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
|
resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
@@ -1347,6 +1605,11 @@ packages:
|
|||||||
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
|
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
|
|
||||||
|
resolve@1.22.10:
|
||||||
|
resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
reusify@1.1.0:
|
reusify@1.1.0:
|
||||||
resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
|
resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
|
||||||
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
|
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
|
||||||
@@ -1371,6 +1634,10 @@ packages:
|
|||||||
set-cookie-parser@2.7.1:
|
set-cookie-parser@2.7.1:
|
||||||
resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==}
|
resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==}
|
||||||
|
|
||||||
|
sharp@0.33.5:
|
||||||
|
resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
|
||||||
|
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
|
||||||
|
|
||||||
shebang-command@2.0.0:
|
shebang-command@2.0.0:
|
||||||
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
|
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@@ -1379,6 +1646,9 @@ packages:
|
|||||||
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
|
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
|
simple-swizzle@0.2.2:
|
||||||
|
resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
|
||||||
|
|
||||||
sirv@3.0.1:
|
sirv@3.0.1:
|
||||||
resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==}
|
resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
@@ -1414,6 +1684,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
|
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
|
supports-preserve-symlinks-flag@1.0.0:
|
||||||
|
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
svelte-check@4.1.5:
|
svelte-check@4.1.5:
|
||||||
resolution: {integrity: sha512-Gb0T2IqBNe1tLB9EB1Qh+LOe+JB8wt2/rNBDGvkxQVvk8vNeAoG+vZgFB/3P5+zC7RWlyBlzm9dVjZFph/maIg==}
|
resolution: {integrity: sha512-Gb0T2IqBNe1tLB9EB1Qh+LOe+JB8wt2/rNBDGvkxQVvk8vNeAoG+vZgFB/3P5+zC7RWlyBlzm9dVjZFph/maIg==}
|
||||||
engines: {node: '>= 18.0.0'}
|
engines: {node: '>= 18.0.0'}
|
||||||
@@ -1431,6 +1705,11 @@ packages:
|
|||||||
svelte:
|
svelte:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
svelte-parse-markup@0.1.5:
|
||||||
|
resolution: {integrity: sha512-T6mqZrySltPCDwfKXWQ6zehipVLk4GWfH1zCMGgRtLlOIFPuw58ZxVYxVvotMJgJaurKi1i14viB2GIRKXeJTQ==}
|
||||||
|
peerDependencies:
|
||||||
|
svelte: ^3.0.0 || ^4.0.0 || ^5.0.0-next.1
|
||||||
|
|
||||||
svelte-toolbelt@0.5.0:
|
svelte-toolbelt@0.5.0:
|
||||||
resolution: {integrity: sha512-t3tenZcnfQoIeRuQf/jBU7bvTeT3TGkcEE+1EUr5orp0lR7NEpprflpuie3x9Dn0W9nOKqs3HwKGJeeN5Ok1sQ==}
|
resolution: {integrity: sha512-t3tenZcnfQoIeRuQf/jBU7bvTeT3TGkcEE+1EUr5orp0lR7NEpprflpuie3x9Dn0W9nOKqs3HwKGJeeN5Ok1sQ==}
|
||||||
engines: {node: '>=18', pnpm: '>=8.7.0'}
|
engines: {node: '>=18', pnpm: '>=8.7.0'}
|
||||||
@@ -1447,6 +1726,9 @@ packages:
|
|||||||
'@sveltejs/kit': 1.x || 2.x
|
'@sveltejs/kit': 1.x || 2.x
|
||||||
svelte: 3.x || 4.x || >=5.0.0-next.51
|
svelte: 3.x || 4.x || >=5.0.0-next.51
|
||||||
|
|
||||||
|
tabbable@6.2.0:
|
||||||
|
resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
|
||||||
|
|
||||||
tailwindcss@4.0.15:
|
tailwindcss@4.0.15:
|
||||||
resolution: {integrity: sha512-6ZMg+hHdMJpjpeCCFasX7K+U615U9D+7k5/cDK/iRwl6GptF24+I/AbKgOnXhVKePzrEyIXutLv36n4cRsq3Sg==}
|
resolution: {integrity: sha512-6ZMg+hHdMJpjpeCCFasX7K+U615U9D+7k5/cDK/iRwl6GptF24+I/AbKgOnXhVKePzrEyIXutLv36n4cRsq3Sg==}
|
||||||
|
|
||||||
@@ -1484,6 +1766,9 @@ packages:
|
|||||||
tslib@2.4.0:
|
tslib@2.4.0:
|
||||||
resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==}
|
resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==}
|
||||||
|
|
||||||
|
tslib@2.8.1:
|
||||||
|
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
|
||||||
|
|
||||||
type-check@0.4.0:
|
type-check@0.4.0:
|
||||||
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
|
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
|
||||||
engines: {node: '>= 0.8.0'}
|
engines: {node: '>= 0.8.0'}
|
||||||
@@ -1536,6 +1821,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==}
|
resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==}
|
||||||
engines: {node: '>= 0.10'}
|
engines: {node: '>= 0.10'}
|
||||||
|
|
||||||
|
vite-imagetools@7.0.5:
|
||||||
|
resolution: {integrity: sha512-OOvVnaBTqJJ2J7X1cM1qpH4pj9jsfTxia1VSuWeyXtf+OnP8d0YI1LHpv8y2NT47wg+n7XiTgh3BvcSffuBWrw==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
|
||||||
vite@6.2.3:
|
vite@6.2.3:
|
||||||
resolution: {integrity: sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==}
|
resolution: {integrity: sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==}
|
||||||
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
|
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
|
||||||
@@ -1636,6 +1925,11 @@ snapshots:
|
|||||||
regenerator-runtime: 0.14.1
|
regenerator-runtime: 0.14.1
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
'@emnapi/runtime@1.3.1':
|
||||||
|
dependencies:
|
||||||
|
tslib: 2.4.0
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@esbuild/aix-ppc64@0.25.1':
|
'@esbuild/aix-ppc64@0.25.1':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
@@ -1762,6 +2056,17 @@ snapshots:
|
|||||||
'@exodus/schemasafe@1.3.0':
|
'@exodus/schemasafe@1.3.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
'@floating-ui/core@1.6.9':
|
||||||
|
dependencies:
|
||||||
|
'@floating-ui/utils': 0.2.9
|
||||||
|
|
||||||
|
'@floating-ui/dom@1.6.13':
|
||||||
|
dependencies:
|
||||||
|
'@floating-ui/core': 1.6.9
|
||||||
|
'@floating-ui/utils': 0.2.9
|
||||||
|
|
||||||
|
'@floating-ui/utils@0.2.9': {}
|
||||||
|
|
||||||
'@gcornut/valibot-json-schema@0.31.0':
|
'@gcornut/valibot-json-schema@0.31.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
valibot: 0.31.1
|
valibot: 0.31.1
|
||||||
@@ -1792,6 +2097,88 @@ snapshots:
|
|||||||
|
|
||||||
'@humanwhocodes/retry@0.4.2': {}
|
'@humanwhocodes/retry@0.4.2': {}
|
||||||
|
|
||||||
|
'@iconify/svelte@4.2.0(svelte@5.25.3)':
|
||||||
|
dependencies:
|
||||||
|
'@iconify/types': 2.0.0
|
||||||
|
svelte: 5.25.3
|
||||||
|
|
||||||
|
'@iconify/types@2.0.0': {}
|
||||||
|
|
||||||
|
'@img/sharp-darwin-arm64@0.33.5':
|
||||||
|
optionalDependencies:
|
||||||
|
'@img/sharp-libvips-darwin-arm64': 1.0.4
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@img/sharp-darwin-x64@0.33.5':
|
||||||
|
optionalDependencies:
|
||||||
|
'@img/sharp-libvips-darwin-x64': 1.0.4
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@img/sharp-libvips-darwin-arm64@1.0.4':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@img/sharp-libvips-darwin-x64@1.0.4':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@img/sharp-libvips-linux-arm64@1.0.4':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@img/sharp-libvips-linux-arm@1.0.5':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@img/sharp-libvips-linux-s390x@1.0.4':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@img/sharp-libvips-linux-x64@1.0.4':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@img/sharp-libvips-linuxmusl-arm64@1.0.4':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@img/sharp-libvips-linuxmusl-x64@1.0.4':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@img/sharp-linux-arm64@0.33.5':
|
||||||
|
optionalDependencies:
|
||||||
|
'@img/sharp-libvips-linux-arm64': 1.0.4
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@img/sharp-linux-arm@0.33.5':
|
||||||
|
optionalDependencies:
|
||||||
|
'@img/sharp-libvips-linux-arm': 1.0.5
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@img/sharp-linux-s390x@0.33.5':
|
||||||
|
optionalDependencies:
|
||||||
|
'@img/sharp-libvips-linux-s390x': 1.0.4
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@img/sharp-linux-x64@0.33.5':
|
||||||
|
optionalDependencies:
|
||||||
|
'@img/sharp-libvips-linux-x64': 1.0.4
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@img/sharp-linuxmusl-arm64@0.33.5':
|
||||||
|
optionalDependencies:
|
||||||
|
'@img/sharp-libvips-linuxmusl-arm64': 1.0.4
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@img/sharp-linuxmusl-x64@0.33.5':
|
||||||
|
optionalDependencies:
|
||||||
|
'@img/sharp-libvips-linuxmusl-x64': 1.0.4
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@img/sharp-wasm32@0.33.5':
|
||||||
|
dependencies:
|
||||||
|
'@emnapi/runtime': 1.3.1
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@img/sharp-win32-ia32@0.33.5':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@img/sharp-win32-x64@0.33.5':
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@inlang/paraglide-js@2.0.4':
|
'@inlang/paraglide-js@2.0.4':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@inlang/recommend-sherlock': 0.2.1
|
'@inlang/recommend-sherlock': 0.2.1
|
||||||
@@ -1818,6 +2205,10 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- babel-plugin-macros
|
- babel-plugin-macros
|
||||||
|
|
||||||
|
'@internationalized/date@3.7.0':
|
||||||
|
dependencies:
|
||||||
|
'@swc/helpers': 0.5.15
|
||||||
|
|
||||||
'@jridgewell/gen-mapping@0.3.8':
|
'@jridgewell/gen-mapping@0.3.8':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jridgewell/set-array': 1.2.1
|
'@jridgewell/set-array': 1.2.1
|
||||||
@@ -1849,6 +2240,23 @@ snapshots:
|
|||||||
|
|
||||||
'@lix-js/server-api-schema@0.1.1': {}
|
'@lix-js/server-api-schema@0.1.1': {}
|
||||||
|
|
||||||
|
'@melt-ui/pp@0.3.2(@melt-ui/svelte@0.86.5(svelte@5.25.3))(svelte@5.25.3)':
|
||||||
|
dependencies:
|
||||||
|
'@melt-ui/svelte': 0.86.5(svelte@5.25.3)
|
||||||
|
estree-walker: 3.0.3
|
||||||
|
magic-string: 0.30.17
|
||||||
|
svelte: 5.25.3
|
||||||
|
|
||||||
|
'@melt-ui/svelte@0.86.5(svelte@5.25.3)':
|
||||||
|
dependencies:
|
||||||
|
'@floating-ui/core': 1.6.9
|
||||||
|
'@floating-ui/dom': 1.6.13
|
||||||
|
'@internationalized/date': 3.7.0
|
||||||
|
dequal: 2.0.3
|
||||||
|
focus-trap: 7.6.4
|
||||||
|
nanoid: 5.1.5
|
||||||
|
svelte: 5.25.3
|
||||||
|
|
||||||
'@nodelib/fs.scandir@2.1.5':
|
'@nodelib/fs.scandir@2.1.5':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@nodelib/fs.stat': 2.0.5
|
'@nodelib/fs.stat': 2.0.5
|
||||||
@@ -1866,6 +2274,42 @@ snapshots:
|
|||||||
'@poppinss/macroable@1.0.4':
|
'@poppinss/macroable@1.0.4':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/plugin-commonjs@28.0.3(rollup@4.37.0)':
|
||||||
|
dependencies:
|
||||||
|
'@rollup/pluginutils': 5.1.4(rollup@4.37.0)
|
||||||
|
commondir: 1.0.1
|
||||||
|
estree-walker: 2.0.2
|
||||||
|
fdir: 6.4.3(picomatch@4.0.2)
|
||||||
|
is-reference: 1.2.1
|
||||||
|
magic-string: 0.30.17
|
||||||
|
picomatch: 4.0.2
|
||||||
|
optionalDependencies:
|
||||||
|
rollup: 4.37.0
|
||||||
|
|
||||||
|
'@rollup/plugin-json@6.1.0(rollup@4.37.0)':
|
||||||
|
dependencies:
|
||||||
|
'@rollup/pluginutils': 5.1.4(rollup@4.37.0)
|
||||||
|
optionalDependencies:
|
||||||
|
rollup: 4.37.0
|
||||||
|
|
||||||
|
'@rollup/plugin-node-resolve@16.0.1(rollup@4.37.0)':
|
||||||
|
dependencies:
|
||||||
|
'@rollup/pluginutils': 5.1.4(rollup@4.37.0)
|
||||||
|
'@types/resolve': 1.20.2
|
||||||
|
deepmerge: 4.3.1
|
||||||
|
is-module: 1.0.0
|
||||||
|
resolve: 1.22.10
|
||||||
|
optionalDependencies:
|
||||||
|
rollup: 4.37.0
|
||||||
|
|
||||||
|
'@rollup/pluginutils@5.1.4(rollup@4.37.0)':
|
||||||
|
dependencies:
|
||||||
|
'@types/estree': 1.0.7
|
||||||
|
estree-walker: 2.0.2
|
||||||
|
picomatch: 4.0.2
|
||||||
|
optionalDependencies:
|
||||||
|
rollup: 4.37.0
|
||||||
|
|
||||||
'@rollup/rollup-android-arm-eabi@4.37.0':
|
'@rollup/rollup-android-arm-eabi@4.37.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
@@ -1951,10 +2395,25 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
acorn: 8.14.1
|
acorn: 8.14.1
|
||||||
|
|
||||||
'@sveltejs/adapter-auto@4.0.0(@sveltejs/kit@2.20.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))':
|
'@sveltejs/adapter-node@5.2.12(@sveltejs/kit@2.20.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
'@rollup/plugin-commonjs': 28.0.3(rollup@4.37.0)
|
||||||
|
'@rollup/plugin-json': 6.1.0(rollup@4.37.0)
|
||||||
|
'@rollup/plugin-node-resolve': 16.0.1(rollup@4.37.0)
|
||||||
'@sveltejs/kit': 2.20.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2))
|
'@sveltejs/kit': 2.20.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2))
|
||||||
import-meta-resolve: 4.1.0
|
rollup: 4.37.0
|
||||||
|
|
||||||
|
'@sveltejs/enhanced-img@0.4.4(rollup@4.37.0)(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2))':
|
||||||
|
dependencies:
|
||||||
|
magic-string: 0.30.17
|
||||||
|
sharp: 0.33.5
|
||||||
|
svelte: 5.25.3
|
||||||
|
svelte-parse-markup: 0.1.5(svelte@5.25.3)
|
||||||
|
vite: 6.2.3(jiti@2.4.2)(lightningcss@1.29.2)
|
||||||
|
vite-imagetools: 7.0.5(rollup@4.37.0)
|
||||||
|
zimmerframe: 1.1.2
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- rollup
|
||||||
|
|
||||||
'@sveltejs/kit@2.20.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2))':
|
'@sveltejs/kit@2.20.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2))':
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1995,6 +2454,10 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
'@swc/helpers@0.5.15':
|
||||||
|
dependencies:
|
||||||
|
tslib: 2.8.1
|
||||||
|
|
||||||
'@tailwindcss/node@4.0.15':
|
'@tailwindcss/node@4.0.15':
|
||||||
dependencies:
|
dependencies:
|
||||||
enhanced-resolve: 5.18.1
|
enhanced-resolve: 5.18.1
|
||||||
@@ -2070,6 +2533,8 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@types/geojson': 7946.0.16
|
'@types/geojson': 7946.0.16
|
||||||
|
|
||||||
|
'@types/resolve@1.20.2': {}
|
||||||
|
|
||||||
'@types/validator@13.12.2':
|
'@types/validator@13.12.2':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
@@ -2256,6 +2721,16 @@ snapshots:
|
|||||||
|
|
||||||
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.2
|
||||||
|
|
||||||
|
color@4.2.3:
|
||||||
|
dependencies:
|
||||||
|
color-convert: 2.0.1
|
||||||
|
color-string: 1.9.1
|
||||||
|
|
||||||
commander@11.1.0: {}
|
commander@11.1.0: {}
|
||||||
|
|
||||||
comment-json@4.2.5:
|
comment-json@4.2.5:
|
||||||
@@ -2266,6 +2741,8 @@ snapshots:
|
|||||||
has-own-prop: 2.0.0
|
has-own-prop: 2.0.0
|
||||||
repeat-string: 1.6.1
|
repeat-string: 1.6.1
|
||||||
|
|
||||||
|
commondir@1.0.1: {}
|
||||||
|
|
||||||
concat-map@0.0.1: {}
|
concat-map@0.0.1: {}
|
||||||
|
|
||||||
consola@3.4.0: {}
|
consola@3.4.0: {}
|
||||||
@@ -2297,6 +2774,8 @@ snapshots:
|
|||||||
|
|
||||||
deepmerge@4.3.1: {}
|
deepmerge@4.3.1: {}
|
||||||
|
|
||||||
|
dequal@2.0.3: {}
|
||||||
|
|
||||||
detect-libc@2.0.3: {}
|
detect-libc@2.0.3: {}
|
||||||
|
|
||||||
devalue@5.1.1: {}
|
devalue@5.1.1: {}
|
||||||
@@ -2450,6 +2929,12 @@ snapshots:
|
|||||||
|
|
||||||
estraverse@5.3.0: {}
|
estraverse@5.3.0: {}
|
||||||
|
|
||||||
|
estree-walker@2.0.2: {}
|
||||||
|
|
||||||
|
estree-walker@3.0.3:
|
||||||
|
dependencies:
|
||||||
|
'@types/estree': 1.0.7
|
||||||
|
|
||||||
esutils@2.0.3: {}
|
esutils@2.0.3: {}
|
||||||
|
|
||||||
fast-check@3.23.2:
|
fast-check@3.23.2:
|
||||||
@@ -2475,7 +2960,9 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
reusify: 1.1.0
|
reusify: 1.1.0
|
||||||
|
|
||||||
fdir@6.4.3: {}
|
fdir@6.4.3(picomatch@4.0.2):
|
||||||
|
optionalDependencies:
|
||||||
|
picomatch: 4.0.2
|
||||||
|
|
||||||
file-entry-cache@8.0.0:
|
file-entry-cache@8.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -2497,6 +2984,10 @@ snapshots:
|
|||||||
|
|
||||||
flatted@3.3.3: {}
|
flatted@3.3.3: {}
|
||||||
|
|
||||||
|
focus-trap@7.6.4:
|
||||||
|
dependencies:
|
||||||
|
tabbable: 6.2.0
|
||||||
|
|
||||||
formsnap@2.0.0(svelte@5.25.3)(sveltekit-superforms@2.24.0(@sveltejs/kit@2.20.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))(@types/json-schema@7.0.15)(svelte@5.25.3)(typescript@5.8.2)):
|
formsnap@2.0.0(svelte@5.25.3)(sveltekit-superforms@2.24.0(@sveltejs/kit@2.20.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))(svelte@5.25.3)(vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2)))(@types/json-schema@7.0.15)(svelte@5.25.3)(typescript@5.8.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
svelte: 5.25.3
|
svelte: 5.25.3
|
||||||
@@ -2506,6 +2997,8 @@ snapshots:
|
|||||||
fsevents@2.3.3:
|
fsevents@2.3.3:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
function-bind@1.1.2: {}
|
||||||
|
|
||||||
glob-parent@5.1.2:
|
glob-parent@5.1.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
is-glob: 4.0.3
|
is-glob: 4.0.3
|
||||||
@@ -2526,10 +3019,16 @@ snapshots:
|
|||||||
|
|
||||||
has-own-prop@2.0.0: {}
|
has-own-prop@2.0.0: {}
|
||||||
|
|
||||||
|
hasown@2.0.2:
|
||||||
|
dependencies:
|
||||||
|
function-bind: 1.1.2
|
||||||
|
|
||||||
human-id@4.1.1: {}
|
human-id@4.1.1: {}
|
||||||
|
|
||||||
ignore@5.3.2: {}
|
ignore@5.3.2: {}
|
||||||
|
|
||||||
|
imagetools-core@7.0.2: {}
|
||||||
|
|
||||||
import-fresh@3.3.1:
|
import-fresh@3.3.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
parent-module: 1.0.1
|
parent-module: 1.0.1
|
||||||
@@ -2541,14 +3040,26 @@ snapshots:
|
|||||||
|
|
||||||
inline-style-parser@0.2.4: {}
|
inline-style-parser@0.2.4: {}
|
||||||
|
|
||||||
|
is-arrayish@0.3.2: {}
|
||||||
|
|
||||||
|
is-core-module@2.16.1:
|
||||||
|
dependencies:
|
||||||
|
hasown: 2.0.2
|
||||||
|
|
||||||
is-extglob@2.1.1: {}
|
is-extglob@2.1.1: {}
|
||||||
|
|
||||||
is-glob@4.0.3:
|
is-glob@4.0.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
is-extglob: 2.1.1
|
is-extglob: 2.1.1
|
||||||
|
|
||||||
|
is-module@1.0.0: {}
|
||||||
|
|
||||||
is-number@7.0.0: {}
|
is-number@7.0.0: {}
|
||||||
|
|
||||||
|
is-reference@1.2.1:
|
||||||
|
dependencies:
|
||||||
|
'@types/estree': 1.0.7
|
||||||
|
|
||||||
is-reference@3.0.3:
|
is-reference@3.0.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/estree': 1.0.7
|
'@types/estree': 1.0.7
|
||||||
@@ -2690,6 +3201,8 @@ snapshots:
|
|||||||
|
|
||||||
nanoid@3.3.11: {}
|
nanoid@3.3.11: {}
|
||||||
|
|
||||||
|
nanoid@5.1.5: {}
|
||||||
|
|
||||||
natural-compare@1.4.0: {}
|
natural-compare@1.4.0: {}
|
||||||
|
|
||||||
normalize-url@8.0.1:
|
normalize-url@8.0.1:
|
||||||
@@ -2720,10 +3233,14 @@ snapshots:
|
|||||||
|
|
||||||
path-key@3.1.1: {}
|
path-key@3.1.1: {}
|
||||||
|
|
||||||
|
path-parse@1.0.7: {}
|
||||||
|
|
||||||
picocolors@1.1.1: {}
|
picocolors@1.1.1: {}
|
||||||
|
|
||||||
picomatch@2.3.1: {}
|
picomatch@2.3.1: {}
|
||||||
|
|
||||||
|
picomatch@4.0.2: {}
|
||||||
|
|
||||||
postcss-load-config@3.1.4(postcss@8.5.3):
|
postcss-load-config@3.1.4(postcss@8.5.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
lilconfig: 2.1.0
|
lilconfig: 2.1.0
|
||||||
@@ -2771,6 +3288,12 @@ snapshots:
|
|||||||
|
|
||||||
resolve-from@4.0.0: {}
|
resolve-from@4.0.0: {}
|
||||||
|
|
||||||
|
resolve@1.22.10:
|
||||||
|
dependencies:
|
||||||
|
is-core-module: 2.16.1
|
||||||
|
path-parse: 1.0.7
|
||||||
|
supports-preserve-symlinks-flag: 1.0.0
|
||||||
|
|
||||||
reusify@1.1.0: {}
|
reusify@1.1.0: {}
|
||||||
|
|
||||||
rollup@4.37.0:
|
rollup@4.37.0:
|
||||||
@@ -2811,12 +3334,42 @@ snapshots:
|
|||||||
|
|
||||||
set-cookie-parser@2.7.1: {}
|
set-cookie-parser@2.7.1: {}
|
||||||
|
|
||||||
|
sharp@0.33.5:
|
||||||
|
dependencies:
|
||||||
|
color: 4.2.3
|
||||||
|
detect-libc: 2.0.3
|
||||||
|
semver: 7.7.1
|
||||||
|
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
|
||||||
|
|
||||||
shebang-command@2.0.0:
|
shebang-command@2.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
shebang-regex: 3.0.0
|
shebang-regex: 3.0.0
|
||||||
|
|
||||||
shebang-regex@3.0.0: {}
|
shebang-regex@3.0.0: {}
|
||||||
|
|
||||||
|
simple-swizzle@0.2.2:
|
||||||
|
dependencies:
|
||||||
|
is-arrayish: 0.3.2
|
||||||
|
|
||||||
sirv@3.0.1:
|
sirv@3.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@polka/url': 1.0.0-next.28
|
'@polka/url': 1.0.0-next.28
|
||||||
@@ -2852,11 +3405,13 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
has-flag: 4.0.0
|
has-flag: 4.0.0
|
||||||
|
|
||||||
svelte-check@4.1.5(svelte@5.25.3)(typescript@5.8.2):
|
supports-preserve-symlinks-flag@1.0.0: {}
|
||||||
|
|
||||||
|
svelte-check@4.1.5(picomatch@4.0.2)(svelte@5.25.3)(typescript@5.8.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jridgewell/trace-mapping': 0.3.25
|
'@jridgewell/trace-mapping': 0.3.25
|
||||||
chokidar: 4.0.3
|
chokidar: 4.0.3
|
||||||
fdir: 6.4.3
|
fdir: 6.4.3(picomatch@4.0.2)
|
||||||
picocolors: 1.1.1
|
picocolors: 1.1.1
|
||||||
sade: 1.8.1
|
sade: 1.8.1
|
||||||
svelte: 5.25.3
|
svelte: 5.25.3
|
||||||
@@ -2875,6 +3430,10 @@ snapshots:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
svelte: 5.25.3
|
svelte: 5.25.3
|
||||||
|
|
||||||
|
svelte-parse-markup@0.1.5(svelte@5.25.3):
|
||||||
|
dependencies:
|
||||||
|
svelte: 5.25.3
|
||||||
|
|
||||||
svelte-toolbelt@0.5.0(svelte@5.25.3):
|
svelte-toolbelt@0.5.0(svelte@5.25.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
clsx: 2.1.1
|
clsx: 2.1.1
|
||||||
@@ -2925,6 +3484,8 @@ snapshots:
|
|||||||
- '@types/json-schema'
|
- '@types/json-schema'
|
||||||
- typescript
|
- typescript
|
||||||
|
|
||||||
|
tabbable@6.2.0: {}
|
||||||
|
|
||||||
tailwindcss@4.0.15: {}
|
tailwindcss@4.0.15: {}
|
||||||
|
|
||||||
tapable@2.2.1: {}
|
tapable@2.2.1: {}
|
||||||
@@ -2953,6 +3514,8 @@ snapshots:
|
|||||||
tslib@2.4.0:
|
tslib@2.4.0:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
tslib@2.8.1: {}
|
||||||
|
|
||||||
type-check@0.4.0:
|
type-check@0.4.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
prelude-ls: 1.2.1
|
prelude-ls: 1.2.1
|
||||||
@@ -2998,6 +3561,14 @@ snapshots:
|
|||||||
validator@13.12.0:
|
validator@13.12.0:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
vite-imagetools@7.0.5(rollup@4.37.0):
|
||||||
|
dependencies:
|
||||||
|
'@rollup/pluginutils': 5.1.4(rollup@4.37.0)
|
||||||
|
imagetools-core: 7.0.2
|
||||||
|
sharp: 0.33.5
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- rollup
|
||||||
|
|
||||||
vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2):
|
vite@6.2.3(jiti@2.4.2)(lightningcss@1.29.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild: 0.25.1
|
esbuild: 0.25.1
|
||||||
|
|||||||
30
src/lib/BSlideOverlay.svelte
Normal file
30
src/lib/BSlideOverlay.svelte
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import { slide, fade } from 'svelte/transition';
|
||||||
|
import type { Snippet } from "svelte";
|
||||||
|
|
||||||
|
let { show = $bindable(), closable = true, children }: {
|
||||||
|
show: boolean,
|
||||||
|
closable: boolean
|
||||||
|
children: Snippet<[{ closeOverlay: () => void }]>
|
||||||
|
} = $props();
|
||||||
|
|
||||||
|
function closeOverlay() {
|
||||||
|
if (!closable) return;
|
||||||
|
show = false;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{#if show}
|
||||||
|
<div class="visible fixed inset-0 h-screen w-screen z-20 pointer-events-auto flex flex-col justify-end items-center">
|
||||||
|
<button type="button" class="bg-base-100/50 absolute inset-0 h-full w-full"
|
||||||
|
transition:fade={{duration:200}}
|
||||||
|
onclick={closeOverlay}
|
||||||
|
aria-label="Close Overlay"
|
||||||
|
></button>
|
||||||
|
<div class="h-fit flex flex-col items-center gap-2 rounded-t-md pointer-events-auto p-2 z-20"
|
||||||
|
data-theme="light"
|
||||||
|
transition:slide>
|
||||||
|
{@render children({ closeOverlay })}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
35
src/lib/FormInput.svelte
Normal file
35
src/lib/FormInput.svelte
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<script lang="ts" generics="T extends Record<string, unknown>">
|
||||||
|
import { Field, Control, FieldErrors } from "formsnap";
|
||||||
|
import type { FormPath, SuperForm } from "sveltekit-superforms";
|
||||||
|
|
||||||
|
let { form, type, label, name }: {
|
||||||
|
form: SuperForm<T>,
|
||||||
|
type: string,
|
||||||
|
label: string,
|
||||||
|
name: FormPath<T>,
|
||||||
|
} = $props();
|
||||||
|
const formData = form.form;
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<Field {form} {name}>
|
||||||
|
<Control>
|
||||||
|
{#snippet children({ props })}
|
||||||
|
<label class="label floating-label w-full">
|
||||||
|
<span>{label}</span>
|
||||||
|
<input {type} class="input w-full aria-[invalid]:input-error" placeholder={label}
|
||||||
|
bind:value={$formData[name]} {...props}
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
{/snippet}
|
||||||
|
</Control>
|
||||||
|
<FieldErrors>
|
||||||
|
{#snippet children({ errors, errorProps })}
|
||||||
|
{#each errors as err, idx (idx)}
|
||||||
|
<p class="text-error" {...errorProps}>{err}</p>
|
||||||
|
{/each}
|
||||||
|
{/snippet}
|
||||||
|
</FieldErrors>
|
||||||
|
</Field>
|
||||||
|
</div>
|
||||||
49
src/lib/PwdFormInput.svelte
Normal file
49
src/lib/PwdFormInput.svelte
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
<script lang="ts" generics="T extends Record<string, unknown>">
|
||||||
|
import { Field, Control, FieldErrors } from "formsnap";
|
||||||
|
import type { FormPath, SuperForm } from "sveltekit-superforms";
|
||||||
|
import { scale } from 'svelte/transition';
|
||||||
|
import Icon from "@iconify/svelte";
|
||||||
|
|
||||||
|
let { form, label, name }: {
|
||||||
|
form: SuperForm<T>,
|
||||||
|
label: string,
|
||||||
|
name: FormPath<T>,
|
||||||
|
} = $props();
|
||||||
|
const formData = form.form;
|
||||||
|
|
||||||
|
let show = $state(false);
|
||||||
|
let type = $derived(show ? 'text' : 'password');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<Field {form} {name}>
|
||||||
|
<Control>
|
||||||
|
{#snippet children({ props })}
|
||||||
|
<div class="flex w-full gap-1">
|
||||||
|
<label class="label floating-label w-full">
|
||||||
|
<span>{label}</span>
|
||||||
|
<input {type} class="input w-full aria-[invalid]:input-error" placeholder={label}
|
||||||
|
bind:value={$formData[name]} {...props}
|
||||||
|
/>
|
||||||
|
</label>
|
||||||
|
<button class="btn btn-circle grid" onclick={() => show = !show} type="button">
|
||||||
|
{#if show}
|
||||||
|
<span transition:scale class="col-start-1 col-end-2 row-start-1 row-end-2"><Icon
|
||||||
|
icon="mdi:eye-off-outline"/></span>
|
||||||
|
{:else }
|
||||||
|
<span transition:scale class="col-start-1 col-end-2 row-start-1 row-end-2"><Icon
|
||||||
|
icon="mdi:eye-outline"/></span>
|
||||||
|
{/if}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
{/snippet}
|
||||||
|
</Control>
|
||||||
|
<FieldErrors>
|
||||||
|
{#snippet children({ errors, errorProps })}
|
||||||
|
{#each errors as err, idx (idx)}
|
||||||
|
<p class="text-error" {...errorProps}>{err}</p>
|
||||||
|
{/each}
|
||||||
|
{/snippet}
|
||||||
|
</FieldErrors>
|
||||||
|
</Field>
|
||||||
|
</div>
|
||||||
60
src/lib/ToastSystem/Toast.svelte
Normal file
60
src/lib/ToastSystem/Toast.svelte
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import {
|
||||||
|
melt,
|
||||||
|
type Toast,
|
||||||
|
type ToastsElements,
|
||||||
|
} from '@melt-ui/svelte';
|
||||||
|
import type { ToastData } from "$lib/ToastSystem/types";
|
||||||
|
import { onMount } from "svelte";
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
elements: ToastsElements,
|
||||||
|
toast: Toast<ToastData>,
|
||||||
|
}
|
||||||
|
|
||||||
|
const { elements, toast }: Props = $props();
|
||||||
|
const { content, title, description, close } = $derived(elements);
|
||||||
|
const { data, id, getPercentage } = $derived(toast);
|
||||||
|
|
||||||
|
const alertClass = $derived.by(() => {
|
||||||
|
switch (data.type) {
|
||||||
|
case "success":
|
||||||
|
return 'alert-success';
|
||||||
|
case "warning":
|
||||||
|
return 'alert-warning';
|
||||||
|
case "error":
|
||||||
|
return 'alert-error';
|
||||||
|
case "info":
|
||||||
|
return 'alert-info';
|
||||||
|
default:
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let percentage = $state(0);
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
let frame: number;
|
||||||
|
const updatePercentage = () => {
|
||||||
|
percentage = getPercentage();
|
||||||
|
frame = requestAnimationFrame(updatePercentage);
|
||||||
|
};
|
||||||
|
frame = requestAnimationFrame(updatePercentage);
|
||||||
|
return () => cancelAnimationFrame(frame);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div use:melt={$content(id)} class="relative w-[70%] visible">
|
||||||
|
<div class="absolute w-full flex flex-col px-2">
|
||||||
|
<progress class="progress h-1 w-full" value={percentage} max="100"></progress>
|
||||||
|
</div>
|
||||||
|
<div class={["alert", alertClass]}>
|
||||||
|
<button use:melt={$close(id)} aria-label="close notification" class="absolute right-2 top-0">x</button>
|
||||||
|
<h3 use:melt={$title(id)} class="font-bold">
|
||||||
|
{data.title}
|
||||||
|
</h3>
|
||||||
|
<div use:melt={$description(id)}>
|
||||||
|
{data.description}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
23
src/lib/ToastSystem/Toaster.svelte
Normal file
23
src/lib/ToastSystem/Toaster.svelte
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<script lang="ts" module>
|
||||||
|
import { createToaster } from '@melt-ui/svelte';
|
||||||
|
import type { ToastData } from "$lib/ToastSystem/types";
|
||||||
|
|
||||||
|
const {
|
||||||
|
elements,
|
||||||
|
helpers,
|
||||||
|
states: { toasts },
|
||||||
|
actions: { portal }
|
||||||
|
} = createToaster<ToastData>();
|
||||||
|
|
||||||
|
export const addToast = helpers.addToast;
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
import Toast from "$lib/ToastSystem/Toast.svelte";
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div use:portal
|
||||||
|
class="fixed w-screen h-screen top-0 z-50 pb-4 flex flex-col-reverse justify-start items-center gap-2 invisible">
|
||||||
|
{#each $toasts as toast (toast.id)}
|
||||||
|
<Toast {elements} {toast}/>
|
||||||
|
{/each}
|
||||||
|
</div>
|
||||||
5
src/lib/ToastSystem/types.ts
Normal file
5
src/lib/ToastSystem/types.ts
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
export type ToastData = {
|
||||||
|
title: string
|
||||||
|
description: string
|
||||||
|
type: 'info' | 'success' | 'warning' | 'error',
|
||||||
|
}
|
||||||
69
src/lib/icons/BatteryIcon.svelte
Normal file
69
src/lib/icons/BatteryIcon.svelte
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
<div class="flex items-center">
|
||||||
|
<div class="outer">
|
||||||
|
<div class="inner"></div>
|
||||||
|
<div class="inner"></div>
|
||||||
|
<div class="inner"></div>
|
||||||
|
</div>
|
||||||
|
<div class="pole"></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<style lang="css">
|
||||||
|
.outer {
|
||||||
|
width: 50px;
|
||||||
|
height: 25px;
|
||||||
|
border: 3px solid #fff;
|
||||||
|
display: flex;
|
||||||
|
padding: 2px;
|
||||||
|
border-radius: 2px;
|
||||||
|
transition: all 0.3s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inner {
|
||||||
|
height: 100%;
|
||||||
|
background-color: #fff;
|
||||||
|
flex: 1;
|
||||||
|
border-radius: 0.2px;
|
||||||
|
opacity: 0;
|
||||||
|
animation: ani1 2.5s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inner:nth-child(2) {
|
||||||
|
margin: 0 1px;
|
||||||
|
animation: ani2 2.5s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inner:nth-child(3) {
|
||||||
|
animation: ani3 2.5s infinite;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pole {
|
||||||
|
width: 4px;
|
||||||
|
height: 10px;
|
||||||
|
border-radius: 0 1px 1px 0;
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes ani1 {
|
||||||
|
33%, 100% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes ani2 {
|
||||||
|
0%, 33% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
66%, 100% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes ani3 {
|
||||||
|
0%, 66% {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
100% {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
22
src/lib/icons/ConnType2.svelte
Normal file
22
src/lib/icons/ConnType2.svelte
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
<svg
|
||||||
|
id="Calque_1"
|
||||||
|
version="1.1"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
x="0px"
|
||||||
|
y="0px"
|
||||||
|
viewBox="0 0 101 92"
|
||||||
|
style="enable-background: new 0 0 101 92"
|
||||||
|
xml:space="preserve"
|
||||||
|
>
|
||||||
|
<path d="M15,40c0,5.5,4.5,10,10,10s10-4.5,10-10s-4.5-10-10-10S15,34.5,15,40z M20,40c0-2.8,2.2-5,5-5s5,2.2,5,5s-2.2,5-5,5
|
||||||
|
S20,42.8,20,40z M27,62c0,5.5,4.5,10,10,10s10-4.5,10-10s-4.5-10-10-10S27,56.5,27,62z M32,62c0-2.8,2.2-5,5-5s5,2.2,5,5s-2.2,5-5,5
|
||||||
|
S32,64.8,32,62z M53,62c0,5.5,4.5,10,10,10s10-4.5,10-10s-4.5-10-10-10S53,56.5,53,62z M58,62c0-2.8,2.2-5,5-5s5,2.2,5,5s-2.2,5-5,5
|
||||||
|
S58,64.8,58,62z M40,40c0,5.5,4.5,10,10,10s10-4.5,10-10s-4.5-10-10-10S40,34.5,40,40z M45,40c0-2.8,2.2-5,5-5s5,2.2,5,5s-2.2,5-5,5
|
||||||
|
S45,42.8,45,40z M65,40c0,5.5,4.5,10,10,10s10-4.5,10-10s-4.5-10-10-10S65,34.5,65,40z M70,40c0-2.8,2.2-5,5-5s5,2.2,5,5s-2.2,5-5,5
|
||||||
|
S70,42.8,70,40z M55,23c0,4.4,3.6,8,8,8s8-3.6,8-8s-3.6-8-8-8S55,18.6,55,23z M60,23c0-1.7,1.3-3,3-3s3,1.3,3,3s-1.3,3-3,3
|
||||||
|
S60,24.7,60,23z M30,23c0,4.4,3.6,8,8,8s8-3.6,8-8s-3.6-8-8-8S30,18.6,30,23z M35,23c0-1.7,1.3-3,3-3s3,1.3,3,3s-1.3,3-3,3
|
||||||
|
S35,24.7,35,23z M0,41.5C0,69.4,22.6,92,50.5,92S101,69.4,101,41.5c0-12.8-5.3-24.1-12.7-33.4C82,0.3,70.8,0,70.8,0H30.7
|
||||||
|
c-2.8,0-11.8,0.2-17.9,7.8C4.9,16.7,0,28.5,0,41.5z M9,42.4C9,32,13,22.5,19.5,15.3C24.4,9.2,31.7,9,34,9h32.5c0,0,9,0.2,14.2,6.5
|
||||||
|
C86.7,23,91,32.1,91,42.4C91,64.8,72.6,83,50,83S9,64.8,9,42.4z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.5 KiB |
58
src/lib/types/ChargeController.ts
Normal file
58
src/lib/types/ChargeController.ts
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
export type ChargeUser = {
|
||||||
|
id: number;
|
||||||
|
username: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type LastPower = {
|
||||||
|
chargingstation: number;
|
||||||
|
power: number;
|
||||||
|
timestamp: string; // ISO 8601 datetime string
|
||||||
|
};
|
||||||
|
|
||||||
|
export type ActiveCharge = {
|
||||||
|
id: number;
|
||||||
|
start: string; // ISO 8601 datetime string
|
||||||
|
stop: string | null; // ISO 8601 datetime string
|
||||||
|
user: ChargeUser;
|
||||||
|
last_nonzero_power_time: string | null; // ISO 8601 datetime string
|
||||||
|
energy_wh: number;
|
||||||
|
last_power: LastPower | null;
|
||||||
|
// coupon: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
// custom_message_fallback_lang is guaranteed to exist
|
||||||
|
export type CustomMessage = {
|
||||||
|
en?: string,
|
||||||
|
it?: string,
|
||||||
|
de?: string,
|
||||||
|
fr?: string,
|
||||||
|
nl?: string,
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ChargeController = {
|
||||||
|
qrcodeid: number;
|
||||||
|
active_charge: ActiveCharge | null;
|
||||||
|
park: number;
|
||||||
|
park_bnum: number;
|
||||||
|
evse_id: string;
|
||||||
|
latitude: number;
|
||||||
|
longitude: number;
|
||||||
|
accept_guests: boolean;
|
||||||
|
is_payment_configured: boolean;
|
||||||
|
price: number;
|
||||||
|
override_logo_url: string;
|
||||||
|
show_phrases_frontend: boolean;
|
||||||
|
logged_user: ChargeUser | null;
|
||||||
|
has_charge_permission: boolean;
|
||||||
|
show_custom_message: boolean;
|
||||||
|
custom_message: CustomMessage;
|
||||||
|
country_alpha2: string;
|
||||||
|
custom_message_fallback_lang: string;
|
||||||
|
imprint_cents: number;
|
||||||
|
google_pay: boolean;
|
||||||
|
coupon_enabled: boolean;
|
||||||
|
last_power_timestamp: string | null; // ISO 8601 datetime string
|
||||||
|
suspended: boolean;
|
||||||
|
test_mode: boolean;
|
||||||
|
mandatory_email: boolean;
|
||||||
|
};
|
||||||
9
src/lib/types/User.ts
Normal file
9
src/lib/types/User.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
export type User = {
|
||||||
|
id: number;
|
||||||
|
username: string;
|
||||||
|
email: string;
|
||||||
|
is_active: boolean;
|
||||||
|
is_staff: boolean;
|
||||||
|
is_superuser: boolean;
|
||||||
|
is_readonly: boolean;
|
||||||
|
};
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import '../app.css';
|
import '../app.css';
|
||||||
|
import Toaster from "$lib/ToastSystem/Toaster.svelte";
|
||||||
let { children } = $props();
|
|
||||||
|
let { children } = $props();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{@render children()}
|
{@render children()}
|
||||||
|
<Toaster/>
|
||||||
22
src/routes/+layout.ts
Normal file
22
src/routes/+layout.ts
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
import type { LayoutLoad } from './$types';
|
||||||
|
import type { User } from '$lib/types/User';
|
||||||
|
|
||||||
|
export const load: LayoutLoad = async ({ fetch }) => {
|
||||||
|
const userRes = await fetch('/api/public/1/auth/myself/', {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
'Accept': 'application/json',
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (!userRes.ok) return {
|
||||||
|
user: null,
|
||||||
|
chargePermission: [] as number[],
|
||||||
|
};
|
||||||
|
const user: User = await userRes.json();
|
||||||
|
const chargePermissionRes = await fetch(`/api/v3/users/${user['id']}/charge_permissions/`);
|
||||||
|
const chargePermission: number[] = chargePermissionRes.ok ? (await chargePermissionRes.json())['authorized_qrcode'] : [];
|
||||||
|
return {
|
||||||
|
user: user,
|
||||||
|
chargePermission: chargePermission,
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -1,10 +1,34 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { page } from '$app/state';
|
import { page } from '$app/state';
|
||||||
import type { LayoutProps } from './$types';
|
import type { LayoutProps } from './$types';
|
||||||
|
import ConnType2 from "$lib/icons/ConnType2.svelte";
|
||||||
|
import Icon from "@iconify/svelte";
|
||||||
|
import { goto, invalidateAll } from "$app/navigation";
|
||||||
|
|
||||||
let { data, children }: LayoutProps = $props();
|
let { data, children }: LayoutProps = $props();
|
||||||
const cc = $derived(data.chargecontroller);
|
const cc = $derived(data.chargecontroller);
|
||||||
|
const user = $derived(data.user);
|
||||||
const qrcode = $derived(page.params.qrcode);
|
const qrcode = $derived(page.params.qrcode);
|
||||||
|
|
||||||
|
let logouting = $state(false);
|
||||||
|
|
||||||
|
async function logout() {
|
||||||
|
logouting = true;
|
||||||
|
try {
|
||||||
|
const response = await fetch("/api/public/1/auth/logout/", {
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
'Accept': 'application/json',
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (response.ok) {
|
||||||
|
await invalidateAll();
|
||||||
|
await goto(`/${qrcode}`);
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
logouting = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="flex flex-col h-screen">
|
<div class="flex flex-col h-screen">
|
||||||
@@ -15,25 +39,54 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="flex-none">
|
<div class="flex-none">
|
||||||
<ul class="menu menu-horizontal px-1">
|
<ul class="menu menu-horizontal px-1">
|
||||||
<li><p>QRCODE: {qrcode}</p></li>
|
<li><p>
|
||||||
|
{#if user}
|
||||||
|
{user['username']}
|
||||||
|
{:else}
|
||||||
|
No User
|
||||||
|
{/if}
|
||||||
|
</p></li>
|
||||||
<li>
|
<li>
|
||||||
<details>
|
<details>
|
||||||
<summary>PARK: {cc['park']}</summary>
|
<summary>
|
||||||
|
EN
|
||||||
|
</summary>
|
||||||
<ul class="bg-base-100 rounded-t-none p-2">
|
<ul class="bg-base-100 rounded-t-none p-2">
|
||||||
<li><p>EN</p></li>
|
<li><p>EN</p></li>
|
||||||
<li><p>IT</p></li>
|
<li><p>IT</p></li>
|
||||||
</ul>
|
</ul>
|
||||||
</details>
|
</details>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<button class={["h-full w-full", logouting && "bg-gray-300"]} onclick={logout}>
|
||||||
|
<Icon class="h-5 w-5" icon="mdi:logout"/>
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{#await import('./Map.svelte') then { default: Map }}
|
{#await import('./Map.svelte') then { default: Map }}
|
||||||
<Map class="grow h-10 -z-20" x={cc['latitude']} y={cc['longitude']}/>
|
<Map class="grow h-10 -z-20" x={cc['latitude']} y={cc['longitude']}>
|
||||||
|
<div class="flex flex-col gap-1">
|
||||||
|
<div class="inline-flex items-center gap-2">
|
||||||
|
<p class="!m-0">Informations</p>
|
||||||
|
<div class="tooltip" data-tip="Type 2">
|
||||||
|
<div class="w-5 h-5">
|
||||||
|
<ConnType2/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="w-full border-b border-b-gray-300"></div>
|
||||||
|
<div class="inline-flex items-center gap-2">
|
||||||
|
<Icon class="h-5 w-5 text-success" icon="mdi:checkbox-marked-circle"/>
|
||||||
|
<p class="!m-0">Disponibile</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</Map>
|
||||||
{/await}
|
{/await}
|
||||||
</div>
|
</div>
|
||||||
<div class="z-20 mt-16 grow pointer-events-none">
|
<div class="z-20 mt-16 grow invisible">
|
||||||
<div class="flex justify-center items-center h-full pointer-events-none">
|
<div class="flex justify-center items-center h-full">
|
||||||
{@render children()}
|
{@render children()}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,19 +1,25 @@
|
|||||||
import type { LayoutLoad } from './$types';
|
import type { LayoutLoad } from './$types';
|
||||||
import { error } from "@sveltejs/kit";
|
import { error } from "@sveltejs/kit";
|
||||||
import { type } from "arktype";
|
import { type } from "arktype";
|
||||||
|
import type { ChargeController } from "$lib/types/ChargeController";
|
||||||
|
|
||||||
const QrcodeType = type("string.integer.parse");
|
const QrcodeType = type("string.integer.parse");
|
||||||
|
|
||||||
export const load: LayoutLoad = async ({ params, fetch }) => {
|
export const load: LayoutLoad = async ({ params, fetch, parent, depends }) => {
|
||||||
const qrcode = QrcodeType(params.qrcode);
|
const qrcode = QrcodeType(params.qrcode);
|
||||||
if (qrcode instanceof type.errors) error(400, 'invalid qrcode');
|
if (qrcode instanceof type.errors) error(400, 'invalid qrcode');
|
||||||
const data = await fetch(`/api/v2/chargecontroller/${qrcode}/`, {
|
const cc = await fetch(`/api/v2/chargecontroller/${qrcode}/`, {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
headers: {
|
headers: {
|
||||||
'Accept': 'application/json',
|
'Accept': 'application/json',
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
depends('app:chargecontroller');
|
||||||
|
const parentData = await parent();
|
||||||
|
const chargecontroller: ChargeController = await cc.json();
|
||||||
return {
|
return {
|
||||||
chargecontroller: await data.json(),
|
...parentData,
|
||||||
|
qrcode: qrcode,
|
||||||
|
chargecontroller: chargecontroller,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -1,3 +1,72 @@
|
|||||||
<div class="bg-black pointer-events-auto">
|
<script lang="ts">
|
||||||
TEST CARD
|
import { scale } from 'svelte/transition';
|
||||||
|
import { goto, invalidate } from "$app/navigation";
|
||||||
|
import BSlideOverlay from "$lib/BSlideOverlay.svelte";
|
||||||
|
import { addToast } from '$lib/ToastSystem/Toaster.svelte';
|
||||||
|
|
||||||
|
let { data } = $props();
|
||||||
|
|
||||||
|
let showOverlay = $state(false);
|
||||||
|
let startingCharge = $state(false);
|
||||||
|
|
||||||
|
async function startCharge() {
|
||||||
|
if (startingCharge) return;
|
||||||
|
startingCharge = true;
|
||||||
|
try {
|
||||||
|
const response = await fetch(`/api/public/1/chargecontroller/${data.qrcode}/start_charge/`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Accept': 'application/json',
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (response.ok) {
|
||||||
|
addToast({
|
||||||
|
closeDelay: 5000,
|
||||||
|
data: {
|
||||||
|
title: 'Charge Started',
|
||||||
|
description: '',
|
||||||
|
type: 'success',
|
||||||
|
}
|
||||||
|
});
|
||||||
|
await invalidate('app:chargecontroller');
|
||||||
|
await goto(`/${data.qrcode}/status`);
|
||||||
|
} else {
|
||||||
|
addToast({
|
||||||
|
closeDelay: 5000,
|
||||||
|
data: {
|
||||||
|
title: 'Error',
|
||||||
|
description: response.statusText ?? 'unknown',
|
||||||
|
type: 'error',
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
startingCharge = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div class="grid grid-rows-6 h-full w-full">
|
||||||
|
<div class="row-start-5 col-start-1 flex flex-col justify-center items-center">
|
||||||
|
<div class="visible">
|
||||||
|
<button class="btn btn-primary btn-lg uppercase" onclick={() => showOverlay = true}>Attivare la Ricarica</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<BSlideOverlay bind:show={showOverlay} closable={!startingCharge}>
|
||||||
|
{#snippet children({ closeOverlay })}
|
||||||
|
<!--suppress ALL -->
|
||||||
|
<enhanced:img alt="Please attach the connector to the car" src="./attach_car.png"/>
|
||||||
|
<div class="font-bold uppercase text-md text-gray-700">Avete connesso il cavo alla vostra auto?</div>
|
||||||
|
<div class="flex flex-row justify-around gap-4 w-full">
|
||||||
|
<button class="btn btn-primary btn-xl w-24 grid" onclick={startCharge}>
|
||||||
|
{#if startingCharge}
|
||||||
|
<span transition:scale class="col-start-1 col-end-2 row-start-1 row-end-2 loading"></span>
|
||||||
|
{:else}
|
||||||
|
<span transition:scale class="col-start-1 col-end-2 row-start-1 row-end-2">SI</span>
|
||||||
|
{/if}
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-secondary btn-xl w-24" onclick={closeOverlay}>NO</button>
|
||||||
|
</div>
|
||||||
|
{/snippet}
|
||||||
|
</BSlideOverlay>
|
||||||
</div>
|
</div>
|
||||||
14
src/routes/[qrcode]/+page.ts
Normal file
14
src/routes/[qrcode]/+page.ts
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import type { PageLoad } from './$types';
|
||||||
|
import { redirect } from "@sveltejs/kit";
|
||||||
|
|
||||||
|
export const load: PageLoad = async ({ parent }) => {
|
||||||
|
const parentData = await parent();
|
||||||
|
if (parentData.user === null) return redirect(303, `/${parentData.qrcode}/login`);
|
||||||
|
else {
|
||||||
|
if (!parentData.chargePermission.includes(parentData.qrcode)) {
|
||||||
|
return redirect(303, `/${parentData.qrcode}/forbidden`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (parentData.chargecontroller.active_charge !== null) return redirect(303, `/${parentData.qrcode}/status`);
|
||||||
|
return parentData;
|
||||||
|
};
|
||||||
@@ -1,17 +1,29 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import * as L from 'leaflet';
|
import * as L from 'leaflet';
|
||||||
import 'leaflet/dist/leaflet.css';
|
import 'leaflet/dist/leaflet.css';
|
||||||
import { onMount } from "svelte";
|
import lmiUrl from 'leaflet/dist/images/marker-icon.png';
|
||||||
|
import lmi2Url from 'leaflet/dist/images/marker-icon-2x.png';
|
||||||
|
import lmsUrl from 'leaflet/dist/images/marker-shadow.png';
|
||||||
|
import { onMount, type Snippet } from "svelte";
|
||||||
import type { SvelteHTMLElements } from "svelte/elements";
|
import type { SvelteHTMLElements } from "svelte/elements";
|
||||||
|
|
||||||
|
if (import.meta.env.MODE === 'production') {
|
||||||
|
// Fix bundling bug for leaflet default marker icon on production
|
||||||
|
L.Icon.Default.prototype.options.iconUrl = lmiUrl;
|
||||||
|
L.Icon.Default.prototype.options.iconRetinaUrl = lmi2Url;
|
||||||
|
L.Icon.Default.prototype.options.shadowUrl = lmsUrl;
|
||||||
|
}
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
x: number,
|
x: number,
|
||||||
y: number,
|
y: number,
|
||||||
|
children?: Snippet,
|
||||||
} & SvelteHTMLElements['div']
|
} & SvelteHTMLElements['div']
|
||||||
|
|
||||||
let { x, y, ...rest }: Props = $props();
|
let { x, y, children, ...rest }: Props = $props();
|
||||||
|
|
||||||
let mapDiv: HTMLDivElement;
|
let mapDiv: HTMLDivElement;
|
||||||
|
let popupDiv: HTMLDivElement;
|
||||||
let map: L.Map;
|
let map: L.Map;
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
@@ -20,9 +32,16 @@
|
|||||||
maxZoom: 19,
|
maxZoom: 19,
|
||||||
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>'
|
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>'
|
||||||
}).addTo(map);
|
}).addTo(map);
|
||||||
L.marker([x, y]).addTo(map);
|
const marker = L.marker([x, y]).addTo(map);
|
||||||
|
if (children !== undefined)
|
||||||
|
marker.bindPopup(popupDiv, { closeOnClick: false }).openPopup();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div bind:this={mapDiv} {...rest}>
|
<div bind:this={mapDiv} {...rest}>
|
||||||
|
</div>
|
||||||
|
<div class="hidden">
|
||||||
|
<div bind:this={popupDiv} class="h-full w-full">
|
||||||
|
{@render children?.()}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
BIN
src/routes/[qrcode]/attach_car.png
Normal file
BIN
src/routes/[qrcode]/attach_car.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
8
src/routes/[qrcode]/forbidden/+page.svelte
Normal file
8
src/routes/[qrcode]/forbidden/+page.svelte
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<div class="visible bg-red-500/50 h-full w-full flex justify-center items-center">
|
||||||
|
<div class="card card-border bg-base-100">
|
||||||
|
<div class="card-body items-center">
|
||||||
|
<h2 class="card-title">Forbidden</h2>
|
||||||
|
<p>You don't have permission to use this chargepoint</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
89
src/routes/[qrcode]/login/+page.svelte
Normal file
89
src/routes/[qrcode]/login/+page.svelte
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
<script>
|
||||||
|
import { superForm, defaults, setMessage } from 'sveltekit-superforms';
|
||||||
|
import { type } from "arktype";
|
||||||
|
import { arktypeClient } from 'sveltekit-superforms/adapters';
|
||||||
|
import FormInput from "$lib/FormInput.svelte";
|
||||||
|
import PwdFormInput from "$lib/PwdFormInput.svelte";
|
||||||
|
import { goto, invalidateAll } from "$app/navigation";
|
||||||
|
|
||||||
|
let { data } = $props();
|
||||||
|
|
||||||
|
const schema = type({
|
||||||
|
username: 'string > 3',
|
||||||
|
password: 'string > 3',
|
||||||
|
});
|
||||||
|
|
||||||
|
const schemaDefaults = {
|
||||||
|
username: '',
|
||||||
|
password: '',
|
||||||
|
};
|
||||||
|
|
||||||
|
const form = superForm(defaults(schemaDefaults, arktypeClient(schema)), {
|
||||||
|
SPA: true,
|
||||||
|
validators: arktypeClient(schema),
|
||||||
|
resetForm: false,
|
||||||
|
async onUpdate({ form }) {
|
||||||
|
// Equivalent to onSubmit for this context. We can validate and then execute things.
|
||||||
|
if (form.valid) {
|
||||||
|
const payload = { ...form.data, qrcodeid: data.qrcode };
|
||||||
|
const response = await fetch("/api/public/1/auth/login/", {
|
||||||
|
method: 'POST',
|
||||||
|
body: JSON.stringify(payload),
|
||||||
|
headers: {
|
||||||
|
'Accept': 'application/json',
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(response.status);
|
||||||
|
|
||||||
|
if (response.status !== 200) {
|
||||||
|
setMessage(form, {
|
||||||
|
status: 'error',
|
||||||
|
text: `HTTP Code ${response.status}:\n${JSON.stringify(await response.json(), null, 2)}`,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
setMessage(form, {
|
||||||
|
status: 'success',
|
||||||
|
text: 'Login succeded, redirecting...',
|
||||||
|
});
|
||||||
|
await invalidateAll();
|
||||||
|
await goto(`/${data.qrcode}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const { message, enhance, submitting } = form;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div class="visible bg-gray-300/50 h-full w-full flex justify-center items-center">
|
||||||
|
<div class="card bg-base-100 w-fit shadow-md">
|
||||||
|
<form class="card-body" method="POST" use:enhance>
|
||||||
|
<h2 class="card-title">Accesso Utente</h2>
|
||||||
|
<div class="flex flex-col gap-2 my-2">
|
||||||
|
<FormInput {form} type="text" label="Username" name="username"/>
|
||||||
|
<PwdFormInput {form} label="Password" name="password"/>
|
||||||
|
</div>
|
||||||
|
<div class="card-actions justify-center">
|
||||||
|
<button class="btn btn-primary" type="submit">
|
||||||
|
{#if $submitting}
|
||||||
|
<span class="loading"></span>
|
||||||
|
{/if}
|
||||||
|
Login
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
{#if $message}
|
||||||
|
<div class="card bg-base-200 mt-4 card-border max-w-[80vw]">
|
||||||
|
<div class="card-body">
|
||||||
|
<h2 class="card-title" class:text-error={$message['status'] === 'error'}>
|
||||||
|
{$message['status'] === 'success' ? 'Success!' : 'Error'}
|
||||||
|
</h2>
|
||||||
|
<div>
|
||||||
|
{$message['text']}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
8
src/routes/[qrcode]/login/+page.ts
Normal file
8
src/routes/[qrcode]/login/+page.ts
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
import type { PageLoad } from './$types';
|
||||||
|
import { redirect } from "@sveltejs/kit";
|
||||||
|
|
||||||
|
export const load: PageLoad = async ({ parent }) => {
|
||||||
|
const parentData = await parent();
|
||||||
|
if (parentData.user !== null) return redirect(303, `/${parentData.qrcode}`);
|
||||||
|
return parentData;
|
||||||
|
};
|
||||||
104
src/routes/[qrcode]/status/+page.svelte
Normal file
104
src/routes/[qrcode]/status/+page.svelte
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import { onMount } from "svelte";
|
||||||
|
import { goto, invalidate } from "$app/navigation";
|
||||||
|
import { scale } from 'svelte/transition';
|
||||||
|
import { addToast } from '$lib/ToastSystem/Toaster.svelte';
|
||||||
|
import BatteryIcon from "$lib/icons/BatteryIcon.svelte";
|
||||||
|
import BSlideOverlay from "$lib/BSlideOverlay.svelte";
|
||||||
|
|
||||||
|
let { data } = $props();
|
||||||
|
|
||||||
|
onMount(() => {
|
||||||
|
const interval = setInterval(() => {
|
||||||
|
invalidate('app:chargecontroller');
|
||||||
|
}, 5000);
|
||||||
|
return () => {
|
||||||
|
clearInterval(interval);
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
const energykWh: string = $derived.by(() => {
|
||||||
|
const wh = data.chargecontroller.active_charge?.energy_wh ?? 0;
|
||||||
|
return (wh / 1000).toFixed(2);
|
||||||
|
});
|
||||||
|
const powerkWh: string = $derived.by(() => {
|
||||||
|
const wh = data.chargecontroller.active_charge?.last_power?.power ?? 0;
|
||||||
|
return (wh / 1000).toFixed(2);
|
||||||
|
});
|
||||||
|
|
||||||
|
let showOverlay = $state(false);
|
||||||
|
let stoppingCharge = $state(false);
|
||||||
|
|
||||||
|
async function stopCharge() {
|
||||||
|
if (stoppingCharge) return;
|
||||||
|
stoppingCharge = true;
|
||||||
|
try {
|
||||||
|
const response = await fetch(`/api/public/1/chargecontroller/${data.qrcode}/stop_charge/`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Accept': 'application/json',
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (response.ok) {
|
||||||
|
addToast({
|
||||||
|
closeDelay: 5000,
|
||||||
|
data: {
|
||||||
|
title: 'Charge Stopped',
|
||||||
|
description: '',
|
||||||
|
type: 'success',
|
||||||
|
}
|
||||||
|
});
|
||||||
|
await invalidate('app:chargecontroller');
|
||||||
|
await goto(`/${data.qrcode}`);
|
||||||
|
} else {
|
||||||
|
addToast({
|
||||||
|
closeDelay: 5000,
|
||||||
|
data: {
|
||||||
|
title: 'Error',
|
||||||
|
description: response.statusText ?? 'unknown',
|
||||||
|
type: 'error',
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
stoppingCharge = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<div class="visible bg-green-700/80 h-full w-full flex flex-col justify-center items-center gap-12">
|
||||||
|
<div>
|
||||||
|
<BatteryIcon/>
|
||||||
|
</div>
|
||||||
|
<div class="text-center">
|
||||||
|
<p>Energia erogata a {data.user.username}:</p>
|
||||||
|
<p class="text-4xl"><span class="text-5xl">{energykWh}</span> kWh</p>
|
||||||
|
<p class="text-sm">Potenza misurata: {powerkWh} kW</p>
|
||||||
|
</div>
|
||||||
|
<div class="w-[90%]">
|
||||||
|
<button class="btn btn-warning btn-xl w-full" onclick={() => showOverlay = true}>Interrompere la ricarica</button>
|
||||||
|
</div>
|
||||||
|
<div class="text-center w-[70%] flex flex-col gap-5 text-sm">
|
||||||
|
<p>
|
||||||
|
«Ciò che sta accadendo ci pone di fronte all’urgenza di procedere in una coraggiosa rivoluzione culturale.»
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Papa Francesco, Enciclica Laudato Si’
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<BSlideOverlay bind:show={showOverlay} closable={!stoppingCharge}>
|
||||||
|
{#snippet children({ closeOverlay })}
|
||||||
|
<p class="font-bold w-[90%] text-wrap uppercase text-center">Sei sicuro di voler interrompere la ricarica?</p>
|
||||||
|
<div class="flex flex-row justify-around gap-4 w-full">
|
||||||
|
<button class="btn btn-primary btn-xl w-24 grid" onclick={stopCharge}>
|
||||||
|
{#if stoppingCharge}
|
||||||
|
<span transition:scale class="col-start-1 col-end-2 row-start-1 row-end-2 loading"></span>
|
||||||
|
{:else}
|
||||||
|
<span transition:scale class="col-start-1 col-end-2 row-start-1 row-end-2">SI</span>
|
||||||
|
{/if}
|
||||||
|
</button>
|
||||||
|
<button class="btn btn-secondary btn-xl w-24" onclick={closeOverlay}>NO</button>
|
||||||
|
</div>
|
||||||
|
{/snippet}
|
||||||
|
</BSlideOverlay>
|
||||||
|
</div>
|
||||||
9
src/routes/[qrcode]/status/+page.ts
Normal file
9
src/routes/[qrcode]/status/+page.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import type { PageLoad } from './$types';
|
||||||
|
import { redirect } from "@sveltejs/kit";
|
||||||
|
|
||||||
|
export const load: PageLoad = async ({ parent }) => {
|
||||||
|
const parentData = await parent();
|
||||||
|
if (parentData.user === null) return redirect(303, `/${parentData.qrcode}/login`);
|
||||||
|
if (parentData.chargecontroller.active_charge === null) return redirect(303, `/${parentData.qrcode}`);
|
||||||
|
return parentData;
|
||||||
|
};
|
||||||
@@ -1,18 +1,13 @@
|
|||||||
import adapter from '@sveltejs/adapter-auto';
|
import {preprocessMeltUI, sequence} from "@melt-ui/pp";
|
||||||
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
|
import adapter from '@sveltejs/adapter-node';
|
||||||
|
import {vitePreprocess} from '@sveltejs/vite-plugin-svelte';
|
||||||
/** @type {import('@sveltejs/kit').Config} */
|
/** @type {import('@sveltejs/kit').Config}*/
|
||||||
const config = {
|
const config = {
|
||||||
// Consult https://svelte.dev/docs/kit/integrations
|
// Consult https://svelte.dev/docs/kit/integrations
|
||||||
// for more information about preprocessors
|
// for more information about preprocessors
|
||||||
preprocess: vitePreprocess(),
|
preprocess: sequence([vitePreprocess(), preprocessMeltUI()]),
|
||||||
|
kit: {
|
||||||
kit: {
|
adapter: adapter()
|
||||||
// adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list.
|
}
|
||||||
// If your environment is not supported, or you settled on a specific environment, switch out the adapter.
|
|
||||||
// See https://svelte.dev/docs/kit/adapters for more information about adapters.
|
|
||||||
adapter: adapter()
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default config;
|
export default config;
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
import { paraglideVitePlugin } from '@inlang/paraglide-js';
|
import { paraglideVitePlugin } from '@inlang/paraglide-js';
|
||||||
import tailwindcss from '@tailwindcss/vite';
|
import tailwindcss from '@tailwindcss/vite';
|
||||||
import { sveltekit } from '@sveltejs/kit/vite';
|
import { sveltekit } from '@sveltejs/kit/vite';
|
||||||
|
import { enhancedImages } from '@sveltejs/enhanced-img';
|
||||||
import { defineConfig } from 'vite';
|
import { defineConfig } from 'vite';
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
plugins: [
|
plugins: [
|
||||||
tailwindcss(),
|
tailwindcss(),
|
||||||
|
enhancedImages(),
|
||||||
sveltekit(),
|
sveltekit(),
|
||||||
paraglideVitePlugin({
|
paraglideVitePlugin({
|
||||||
project: './project.inlang',
|
project: './project.inlang',
|
||||||
|
|||||||
Reference in New Issue
Block a user