From 233b5dbbe808ec74f17b6176a5f5cef34186f16f Mon Sep 17 00:00:00 2001 From: Matej Stieranka Date: Tue, 24 Jun 2025 15:01:42 +0200 Subject: [PATCH] initial version --- .gitignore | 2 + Dockerfile | 62 + biome.json | 34 + components.json | 21 + drizzle.config.ts | 11 + next.config.ts | 2 +- package.json | 36 +- pnpm-lock.yaml | 2123 ++++++++++++++++++++++- public/file.svg | 1 - public/globe.svg | 1 - public/next.svg | 1 - public/vercel.svg | 1 - public/web-app-manifest-192x192.png | Bin 0 -> 27912 bytes public/web-app-manifest-512x512.png | Bin 0 -> 144056 bytes public/window.svg | 1 - src/app/actions.ts | 46 + src/app/api/auth/[...nextauth]/route.ts | 2 + src/app/apple-icon.png | Bin 0 -> 24874 bytes src/app/date/[date]/page.tsx | 85 + src/app/favicon.ico | Bin 25931 -> 15086 bytes src/app/favorites/page.tsx | 19 + src/app/globals.css | 124 +- src/app/icon0.svg | 3 + src/app/icon1.png | Bin 0 -> 8740 bytes src/app/layout.tsx | 64 +- src/app/line/[line]/page.tsx | 46 + src/app/manifest.json | 21 + src/app/not-found.tsx | 10 + src/app/page.tsx | 143 +- src/app/search/page.tsx | 22 + src/auth.ts | 7 + src/common/parser.ts | 234 +++ src/common/utils.ts | 61 + src/components/EventCard.tsx | 73 + src/components/EventList.tsx | 31 + src/components/SearchResults.tsx | 5 + src/components/app-sidebar.tsx | 180 ++ src/components/search-form.tsx | 31 + src/components/ui/alert.tsx | 66 + src/components/ui/badge.tsx | 46 + src/components/ui/breadcrumb.tsx | 109 ++ src/components/ui/button.tsx | 59 + src/components/ui/collapsible.tsx | 33 + src/components/ui/dropdown-menu.tsx | 257 +++ src/components/ui/input.tsx | 21 + src/components/ui/label.tsx | 24 + src/components/ui/select.tsx | 185 ++ src/components/ui/separator.tsx | 28 + src/components/ui/sheet.tsx | 139 ++ src/components/ui/sidebar.tsx | 726 ++++++++ src/components/ui/skeleton.tsx | 13 + src/components/ui/tooltip.tsx | 61 + src/db/index.ts | 159 ++ src/db/schema.ts | 24 + src/hooks/use-mobile.ts | 19 + src/lib/utils.ts | 6 + src/middleware.ts | 1 + 57 files changed, 5332 insertions(+), 147 deletions(-) create mode 100644 Dockerfile create mode 100644 biome.json create mode 100644 components.json create mode 100644 drizzle.config.ts delete mode 100644 public/file.svg delete mode 100644 public/globe.svg delete mode 100644 public/next.svg delete mode 100644 public/vercel.svg create mode 100644 public/web-app-manifest-192x192.png create mode 100644 public/web-app-manifest-512x512.png delete mode 100644 public/window.svg create mode 100644 src/app/actions.ts create mode 100644 src/app/api/auth/[...nextauth]/route.ts create mode 100644 src/app/apple-icon.png create mode 100644 src/app/date/[date]/page.tsx create mode 100644 src/app/favorites/page.tsx create mode 100644 src/app/icon0.svg create mode 100644 src/app/icon1.png create mode 100644 src/app/line/[line]/page.tsx create mode 100644 src/app/manifest.json create mode 100644 src/app/not-found.tsx create mode 100644 src/app/search/page.tsx create mode 100644 src/auth.ts create mode 100644 src/common/parser.ts create mode 100644 src/common/utils.ts create mode 100644 src/components/EventCard.tsx create mode 100644 src/components/EventList.tsx create mode 100644 src/components/SearchResults.tsx create mode 100644 src/components/app-sidebar.tsx create mode 100644 src/components/search-form.tsx create mode 100644 src/components/ui/alert.tsx create mode 100644 src/components/ui/badge.tsx create mode 100644 src/components/ui/breadcrumb.tsx create mode 100644 src/components/ui/button.tsx create mode 100644 src/components/ui/collapsible.tsx create mode 100644 src/components/ui/dropdown-menu.tsx create mode 100644 src/components/ui/input.tsx create mode 100644 src/components/ui/label.tsx create mode 100644 src/components/ui/select.tsx create mode 100644 src/components/ui/separator.tsx create mode 100644 src/components/ui/sheet.tsx create mode 100644 src/components/ui/sidebar.tsx create mode 100644 src/components/ui/skeleton.tsx create mode 100644 src/components/ui/tooltip.tsx create mode 100644 src/db/index.ts create mode 100644 src/db/schema.ts create mode 100644 src/hooks/use-mobile.ts create mode 100644 src/lib/utils.ts create mode 100644 src/middleware.ts diff --git a/.gitignore b/.gitignore index 5ef6a52..e0853a3 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,5 @@ yarn-error.log* # typescript *.tsbuildinfo next-env.d.ts + +local.db diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c28217f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,62 @@ +# syntax=docker.io/docker/dockerfile:1 + +FROM node:22-alpine AS base + +# Install dependencies only when needed +FROM base AS deps +# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed. +RUN apk add --no-cache libc6-compat +WORKDIR /app + +# Install dependencies based on the preferred package manager +COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* .npmrc* ./ +RUN corepack enable pnpm && pnpm i --frozen-lockfile; + + +# Rebuild the source code only when needed +FROM base AS builder +WORKDIR /app +COPY --from=deps /app/node_modules ./node_modules +COPY . . + +# Next.js collects completely anonymous telemetry data about general usage. +# Learn more here: https://nextjs.org/telemetry +# Uncomment the following line in case you want to disable telemetry during the build. +ENV NEXT_TELEMETRY_DISABLED=1 + +RUN corepack enable pnpm && pnpm run build; + +ENV DB_FILE_NAME=file:data/data.db +RUN mkdir -p data +RUN pnpm push-db + +# Production image, copy all the files and run next +FROM base AS runner +WORKDIR /app + +ENV NODE_ENV=production +# Uncomment the following line in case you want to disable telemetry during runtime. +# ENV NEXT_TELEMETRY_DISABLED=1 + +RUN addgroup --system --gid 1001 nodejs +RUN adduser --system --uid 1001 nextjs + +COPY --from=builder /app/public ./public + +# Automatically leverage output traces to reduce image size +# https://nextjs.org/docs/advanced-features/output-file-tracing +COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ +COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static + +COPY --from=builder --chown=nextjs:nodejs /app/data ./data + +USER nextjs + +EXPOSE 3000 + +ENV PORT=3000 + +# server.js is created by next build from the standalone output +# https://nextjs.org/docs/pages/api-reference/config/next-config-js/output +ENV HOSTNAME="0.0.0.0" +CMD ["node", "server.js"] diff --git a/biome.json b/biome.json new file mode 100644 index 0000000..7175ec2 --- /dev/null +++ b/biome.json @@ -0,0 +1,34 @@ +{ + "$schema": "https://biomejs.dev/schemas/2.0.4/schema.json", + "vcs": { + "enabled": false, + "clientKind": "git", + "useIgnoreFile": false + }, + "files": { + "ignoreUnknown": false + }, + "formatter": { + "enabled": true, + "indentStyle": "tab" + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true + } + }, + "javascript": { + "formatter": { + "quoteStyle": "double" + } + }, + "assist": { + "enabled": true, + "actions": { + "source": { + "organizeImports": "on" + } + } + } +} diff --git a/components.json b/components.json new file mode 100644 index 0000000..ffe928f --- /dev/null +++ b/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": true, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/app/globals.css", + "baseColor": "neutral", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "iconLibrary": "lucide" +} \ No newline at end of file diff --git a/drizzle.config.ts b/drizzle.config.ts new file mode 100644 index 0000000..0bbb38f --- /dev/null +++ b/drizzle.config.ts @@ -0,0 +1,11 @@ +import 'dotenv/config'; +import { defineConfig } from 'drizzle-kit'; + +export default defineConfig({ + out: './drizzle', + schema: './src/db/schema.ts', + dialect: 'sqlite', + dbCredentials: { + url: process.env.DB_FILE_NAME!, + }, +}); diff --git a/next.config.ts b/next.config.ts index e9ffa30..398b0d5 100644 --- a/next.config.ts +++ b/next.config.ts @@ -1,7 +1,7 @@ import type { NextConfig } from "next"; const nextConfig: NextConfig = { - /* config options here */ + output: "standalone", }; export default nextConfig; diff --git a/package.json b/package.json index 897f3b8..4fe4851 100644 --- a/package.json +++ b/package.json @@ -2,23 +2,49 @@ "name": "inffo2", "version": "0.1.0", "private": true, + "packageManager": "pnpm@8.12.0", "scripts": { "dev": "next dev --turbopack", "build": "next build", "start": "next start", - "lint": "next lint" + "lint": "next lint", + "push-db": "drizzle-kit push" }, "dependencies": { + "@libsql/client": "^0.15.9", + "@radix-ui/react-collapsible": "^1.1.11", + "@radix-ui/react-dialog": "^1.1.14", + "@radix-ui/react-dropdown-menu": "^2.1.15", + "@radix-ui/react-label": "^2.1.7", + "@radix-ui/react-select": "^2.2.5", + "@radix-ui/react-separator": "^1.1.7", + "@radix-ui/react-slot": "^1.2.3", + "@radix-ui/react-tooltip": "^1.2.7", + "cheerio": "^1.1.0", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "dotenv": "^16.5.0", + "drizzle-orm": "^0.44.2", + "drizzle-zod": "^0.8.2", + "lucide-react": "^0.522.0", + "next": "15.3.4", + "next-auth": "5.0.0-beta.29", + "next-themes": "^0.4.6", "react": "^19.0.0", "react-dom": "^19.0.0", - "next": "15.3.4" + "tailwind-merge": "^3.3.1", + "zod": "^3.25.67" }, "devDependencies": { - "typescript": "^5", + "@biomejs/biome": "2.0.5", + "@tailwindcss/postcss": "^4", "@types/node": "^20", "@types/react": "^19", "@types/react-dom": "^19", - "@tailwindcss/postcss": "^4", - "tailwindcss": "^4" + "drizzle-kit": "^0.31.2", + "tailwindcss": "^4", + "tsx": "^4.20.3", + "tw-animate-css": "^1.3.4", + "typescript": "^5" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f0f1226..e49a36f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,17 +5,80 @@ settings: excludeLinksFromLockfile: false dependencies: + '@libsql/client': + specifier: ^0.15.9 + version: 0.15.9 + '@radix-ui/react-collapsible': + specifier: ^1.1.11 + version: 1.1.11(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-dialog': + specifier: ^1.1.14 + version: 1.1.14(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-dropdown-menu': + specifier: ^2.1.15 + version: 2.1.15(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-label': + specifier: ^2.1.7 + version: 2.1.7(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-select': + specifier: ^2.2.5 + version: 2.2.5(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-separator': + specifier: ^1.1.7 + version: 1.1.7(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-slot': + specifier: ^1.2.3 + version: 1.2.3(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-tooltip': + specifier: ^1.2.7 + version: 1.2.7(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + cheerio: + specifier: ^1.1.0 + version: 1.1.0 + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + dotenv: + specifier: ^16.5.0 + version: 16.5.0 + drizzle-orm: + specifier: ^0.44.2 + version: 0.44.2(@libsql/client@0.15.9) + drizzle-zod: + specifier: ^0.8.2 + version: 0.8.2(drizzle-orm@0.44.2)(zod@3.25.67) + lucide-react: + specifier: ^0.522.0 + version: 0.522.0(react@19.1.0) next: specifier: 15.3.4 version: 15.3.4(react-dom@19.1.0)(react@19.1.0) + next-auth: + specifier: 5.0.0-beta.29 + version: 5.0.0-beta.29(next@15.3.4)(react@19.1.0) + next-themes: + specifier: ^0.4.6 + version: 0.4.6(react-dom@19.1.0)(react@19.1.0) react: specifier: ^19.0.0 version: 19.1.0 react-dom: specifier: ^19.0.0 version: 19.1.0(react@19.1.0) + tailwind-merge: + specifier: ^3.3.1 + version: 3.3.1 + zod: + specifier: ^3.25.67 + version: 3.25.67 devDependencies: + '@biomejs/biome': + specifier: 2.0.5 + version: 2.0.5 '@tailwindcss/postcss': specifier: ^4 version: 4.1.10 @@ -28,9 +91,18 @@ devDependencies: '@types/react-dom': specifier: ^19 version: 19.1.6(@types/react@19.1.8) + drizzle-kit: + specifier: ^0.31.2 + version: 0.31.2 tailwindcss: specifier: ^4 version: 4.1.10 + tsx: + specifier: ^4.20.3 + version: 4.20.3 + tw-animate-css: + specifier: ^1.3.4 + version: 1.3.4 typescript: specifier: ^5 version: 5.8.3 @@ -50,6 +122,118 @@ packages: '@jridgewell/trace-mapping': 0.3.25 dev: true + /@auth/core@0.40.0: + resolution: {integrity: sha512-n53uJE0RH5SqZ7N1xZoMKekbHfQgjd0sAEyUbE+IYJnmuQkbvuZnXItCU7d+i7Fj8VGOgqvNO7Mw4YfBTlZeQw==} + peerDependencies: + '@simplewebauthn/browser': ^9.0.1 + '@simplewebauthn/server': ^9.0.2 + nodemailer: ^6.8.0 + peerDependenciesMeta: + '@simplewebauthn/browser': + optional: true + '@simplewebauthn/server': + optional: true + nodemailer: + optional: true + dependencies: + '@panva/hkdf': 1.2.1 + jose: 6.0.11 + oauth4webapi: 3.5.3 + preact: 10.24.3 + preact-render-to-string: 6.5.11(preact@10.24.3) + dev: false + + /@biomejs/biome@2.0.5: + resolution: {integrity: sha512-MztFGhE6cVjf3QmomWu83GpTFyWY8KIcskgRf2AqVEMSH4qI4rNdBLdpAQ11TNK9pUfLGz3IIOC1ZYwgBePtig==} + engines: {node: '>=14.21.3'} + hasBin: true + optionalDependencies: + '@biomejs/cli-darwin-arm64': 2.0.5 + '@biomejs/cli-darwin-x64': 2.0.5 + '@biomejs/cli-linux-arm64': 2.0.5 + '@biomejs/cli-linux-arm64-musl': 2.0.5 + '@biomejs/cli-linux-x64': 2.0.5 + '@biomejs/cli-linux-x64-musl': 2.0.5 + '@biomejs/cli-win32-arm64': 2.0.5 + '@biomejs/cli-win32-x64': 2.0.5 + dev: true + + /@biomejs/cli-darwin-arm64@2.0.5: + resolution: {integrity: sha512-VIIWQv9Rcj9XresjCf3isBFfWjFStsdGZvm8SmwJzKs/22YQj167ge7DkxuaaZbNf2kmYif0AcjAKvtNedEoEw==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-darwin-x64@2.0.5: + resolution: {integrity: sha512-DRpGxBgf5Z7HUFcNUB6n66UiD4VlBlMpngNf32wPraxX8vYU6N9cb3xQWOXIQVBBQ64QfsSLJnjNu79i/LNmSg==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-arm64-musl@2.0.5: + resolution: {integrity: sha512-OpflTCOw/ElEs7QZqN/HFaSViPHjAsAPxFJ22LhWUWvuJgcy/Z8+hRV0/3mk/ZRWy5A6fCDKHZqAxU+xB6W4mA==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-arm64@2.0.5: + resolution: {integrity: sha512-FQTfDNMXOknf8+g9Eede2daaduRjTC2SNbfWPNFMadN9K3UKjeZ62jwiYxztPaz9zQQsZU8VbddQIaeQY5CmIA==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-x64-musl@2.0.5: + resolution: {integrity: sha512-9lmjCnajAzpZXbav2P6D87ugkhnaDpJtDvOH5uQbY2RXeW6Rq18uOUltxgacGBP+d8GusTr+s3IFOu7SN0Ok8g==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-linux-x64@2.0.5: + resolution: {integrity: sha512-znpfydUDPuDkyBTulnODrQVK2FaG/4hIOPcQSsF2GeauQOYrBAOplj0etGB0NUrr0dFsvaQ15nzDXYb60ACoiw==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-win32-arm64@2.0.5: + resolution: {integrity: sha512-CP2wKQB+gh8HdJTFKYRFETqReAjxlcN9AlYDEoye8v2eQp+L9v+PUeDql/wsbaUhSsLR0sjj3PtbBtt+02AN3A==} + engines: {node: '>=14.21.3'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@biomejs/cli-win32-x64@2.0.5: + resolution: {integrity: sha512-Sw3rz2m6bBADeQpr3+MD7Ch4E1l15DTt/+dfqKnwkm3cn4BrYwnArmvKeZdVsFRDjMyjlKIP88bw1r7o+9aqzw==} + engines: {node: '>=14.21.3'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@drizzle-team/brocli@0.10.2: + resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} + dev: true + /@emnapi/runtime@1.4.3: resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} requiresBuild: true @@ -58,6 +242,473 @@ packages: dev: false optional: true + /@esbuild-kit/core-utils@3.3.2: + resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} + deprecated: 'Merged into tsx: https://tsx.is' + dependencies: + esbuild: 0.18.20 + source-map-support: 0.5.21 + dev: true + + /@esbuild-kit/esm-loader@2.6.5: + resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} + deprecated: 'Merged into tsx: https://tsx.is' + dependencies: + '@esbuild-kit/core-utils': 3.3.2 + get-tsconfig: 4.10.1 + dev: true + + /@esbuild/aix-ppc64@0.25.5: + resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm64@0.25.5: + resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.25.5: + resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.25.5: + resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.25.5: + resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.25.5: + resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.25.5: + resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.25.5: + resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.25.5: + resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.25.5: + resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.25.5: + resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.25.5: + resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.25.5: + resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.25.5: + resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.25.5: + resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.25.5: + resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.25.5: + resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-arm64@0.25.5: + resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.25.5: + resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-arm64@0.25.5: + resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.25.5: + resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.25.5: + resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.25.5: + resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.25.5: + resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.25.5: + resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@floating-ui/core@1.7.1: + resolution: {integrity: sha512-azI0DrjMMfIug/ExbBaeDVJXcY0a7EPvPjb2xAJPa4HeimBX+Z18HK8QQR3jb6356SnDDdxx+hinMLcJEDdOjw==} + dependencies: + '@floating-ui/utils': 0.2.9 + dev: false + + /@floating-ui/dom@1.7.1: + resolution: {integrity: sha512-cwsmW/zyw5ltYTUeeYJ60CnQuPqmGwuGVhG9w0PRaRKkAyi38BT5CKrpIbb+jtahSwUl04cWzSx9ZOIxeS6RsQ==} + dependencies: + '@floating-ui/core': 1.7.1 + '@floating-ui/utils': 0.2.9 + dev: false + + /@floating-ui/react-dom@2.1.3(react-dom@19.1.0)(react@19.1.0): + resolution: {integrity: sha512-huMBfiU9UnQ2oBwIhgzyIiSpVgvlDstU8CX0AF+wS+KzmYMs0J2a3GwuFHV1Lz+jlrQGeC1fF+Nv0QoumyV0bA==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + dependencies: + '@floating-ui/dom': 1.7.1 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + dev: false + + /@floating-ui/utils@0.2.9: + resolution: {integrity: sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==} + dev: false + /@img/sharp-darwin-arm64@0.34.2: resolution: {integrity: sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -292,6 +943,128 @@ packages: '@jridgewell/sourcemap-codec': 1.5.0 dev: true + /@libsql/client@0.15.9: + resolution: {integrity: sha512-VT3do0a0vwYVaNcp/y05ikkKS3OrFR5UeEf5SUuYZVgKVl1Nc1k9ajoYSsOid8AD/vlhLDB5yFQaV4HmT/OB9w==} + dependencies: + '@libsql/core': 0.15.9 + '@libsql/hrana-client': 0.7.0 + js-base64: 3.7.7 + libsql: 0.5.13 + promise-limit: 2.7.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@libsql/core@0.15.9: + resolution: {integrity: sha512-4OVdeAmuaCUq5hYT8NNn0nxlO9AcA/eTjXfUZ+QK8MT3Dz7Z76m73x7KxjU6I64WyXX98dauVH2b9XM+d84npw==} + dependencies: + js-base64: 3.7.7 + dev: false + + /@libsql/darwin-arm64@0.5.13: + resolution: {integrity: sha512-ASz/EAMLDLx3oq9PVvZ4zBXXHbz2TxtxUwX2xpTRFR4V4uSHAN07+jpLu3aK5HUBLuv58z7+GjaL5w/cyjR28Q==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@libsql/darwin-x64@0.5.13: + resolution: {integrity: sha512-kzglniv1difkq8opusSXM7u9H0WoEPeKxw0ixIfcGfvlCVMJ+t9UNtXmyNHW68ljdllje6a4C6c94iPmIYafYA==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@libsql/hrana-client@0.7.0: + resolution: {integrity: sha512-OF8fFQSkbL7vJY9rfuegK1R7sPgQ6kFMkDamiEccNUvieQ+3urzfDFI616oPl8V7T9zRmnTkSjMOImYCAVRVuw==} + dependencies: + '@libsql/isomorphic-fetch': 0.3.1 + '@libsql/isomorphic-ws': 0.1.5 + js-base64: 3.7.7 + node-fetch: 3.3.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@libsql/isomorphic-fetch@0.3.1: + resolution: {integrity: sha512-6kK3SUK5Uu56zPq/Las620n5aS9xJq+jMBcNSOmjhNf/MUvdyji4vrMTqD7ptY7/4/CAVEAYDeotUz60LNQHtw==} + engines: {node: '>=18.0.0'} + dev: false + + /@libsql/isomorphic-ws@0.1.5: + resolution: {integrity: sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==} + dependencies: + '@types/ws': 8.18.1 + ws: 8.18.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@libsql/linux-arm-gnueabihf@0.5.13: + resolution: {integrity: sha512-UEW+VZN2r0mFkfztKOS7cqfS8IemuekbjUXbXCwULHtusww2QNCXvM5KU9eJCNE419SZCb0qaEWYytcfka8qeA==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@libsql/linux-arm-musleabihf@0.5.13: + resolution: {integrity: sha512-NMDgLqryYBv4Sr3WoO/m++XDjR5KLlw9r/JK4Ym6A1XBv2bxQQNhH0Lxx3bjLW8qqhBD4+0xfms4d2cOlexPyA==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@libsql/linux-arm64-gnu@0.5.13: + resolution: {integrity: sha512-/wCxVdrwl1ee6D6LEjwl+w4SxuLm5UL9Kb1LD5n0bBGs0q+49ChdPPh7tp175iRgkcrTgl23emymvt1yj3KxVQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@libsql/linux-arm64-musl@0.5.13: + resolution: {integrity: sha512-xnVAbZIanUgX57XqeI5sNaDnVilp0Di5syCLSEo+bRyBobe/1IAeehNZpyVbCy91U2N6rH1C/mZU7jicVI9x+A==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@libsql/linux-x64-gnu@0.5.13: + resolution: {integrity: sha512-/mfMRxcQAI9f8t7tU3QZyh25lXgXKzgin9B9TOSnchD73PWtsVhlyfA6qOCfjQl5kr4sHscdXD5Yb3KIoUgrpQ==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@libsql/linux-x64-musl@0.5.13: + resolution: {integrity: sha512-rdefPTpQCVwUjIQYbDLMv3qpd5MdrT0IeD0UZPGqhT9AWU8nJSQoj2lfyIDAWEz7PPOVCY4jHuEn7FS2sw9kRA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@libsql/win32-x64-msvc@0.5.13: + resolution: {integrity: sha512-aNcmDrD1Ws+dNZIv9ECbxBQumqB9MlSVEykwfXJpqv/593nABb8Ttg5nAGUPtnADyaGDTrGvPPP81d/KsKho4Q==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@neon-rs/load@0.0.4: + resolution: {integrity: sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==} + dev: false + /@next/env@15.3.4: resolution: {integrity: sha512-ZkdYzBseS6UjYzz6ylVKPOK+//zLWvD6Ta+vpoye8cW11AjiQjGYVibF0xuvT4L0iJfAPfZLFidaEzAOywyOAQ==} dev: false @@ -368,6 +1141,674 @@ packages: dev: false optional: true + /@panva/hkdf@1.2.1: + resolution: {integrity: sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw==} + dev: false + + /@radix-ui/number@1.1.1: + resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} + dev: false + + /@radix-ui/primitive@1.1.2: + resolution: {integrity: sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==} + dev: false + + /@radix-ui/react-arrow@1.1.7(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0): + resolution: {integrity: sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + dev: false + + /@radix-ui/react-collapsible@1.1.11(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0): + resolution: {integrity: sha512-2qrRsVGSCYasSz1RFOorXwl0H7g7J1frQtgpQgYrt+MOidtPAINHn9CPovQXb83r8ahapdx3Tu0fa/pdFFSdPg==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + dev: false + + /@radix-ui/react-collection@1.1.7(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0): + resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + dev: false + + /@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.8)(react@19.1.0): + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.1.8 + react: 19.1.0 + dev: false + + /@radix-ui/react-context@1.1.2(@types/react@19.1.8)(react@19.1.0): + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.1.8 + react: 19.1.0 + dev: false + + /@radix-ui/react-dialog@1.1.14(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0): + resolution: {integrity: sha512-+CpweKjqpzTmwRwcYECQcNYbI8V9VSQt0SNFKeEBLgfucbsLssU6Ppq7wUdNXEGb573bMjFhVjKVll8rmV6zMw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + aria-hidden: 1.2.6 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-remove-scroll: 2.7.1(@types/react@19.1.8)(react@19.1.0) + dev: false + + /@radix-ui/react-direction@1.1.1(@types/react@19.1.8)(react@19.1.0): + resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.1.8 + react: 19.1.0 + dev: false + + /@radix-ui/react-dismissable-layer@1.1.10(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0): + resolution: {integrity: sha512-IM1zzRV4W3HtVgftdQiiOmA0AdJlCtMLe00FXaHwgt3rAnNsIyDqshvkIW3hj/iu5hu8ERP7KIYki6NkqDxAwQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + dev: false + + /@radix-ui/react-dropdown-menu@2.1.15(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0): + resolution: {integrity: sha512-mIBnOjgwo9AH3FyKaSWoSu/dYj6VdhJ7frEPiGTeXCdUFHjl9h3mFh2wwhEtINOmYXWhdpf1rY2minFsmaNgVQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-menu': 2.1.15(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + dev: false + + /@radix-ui/react-focus-guards@1.1.2(@types/react@19.1.8)(react@19.1.0): + resolution: {integrity: sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.1.8 + react: 19.1.0 + dev: false + + /@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0): + resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + dev: false + + /@radix-ui/react-id@1.1.1(@types/react@19.1.8)(react@19.1.0): + resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@types/react': 19.1.8 + react: 19.1.0 + dev: false + + /@radix-ui/react-label@2.1.7(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0): + resolution: {integrity: sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + dev: false + + /@radix-ui/react-menu@2.1.15(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0): + resolution: {integrity: sha512-tVlmA3Vb9n8SZSd+YSbuFR66l87Wiy4du+YE+0hzKQEANA+7cWKH1WgqcEX4pXqxUFQKrWQGHdvEfw00TjFiew==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-popper': 1.2.7(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-roving-focus': 1.1.10(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + aria-hidden: 1.2.6 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-remove-scroll: 2.7.1(@types/react@19.1.8)(react@19.1.0) + dev: false + + /@radix-ui/react-popper@1.2.7(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0): + resolution: {integrity: sha512-IUFAccz1JyKcf/RjB552PlWwxjeCJB8/4KxT7EhBHOJM+mN7LdW+B3kacJXILm32xawcMMjb2i0cIZpo+f9kiQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@floating-ui/react-dom': 2.1.3(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/rect': 1.1.1 + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + dev: false + + /@radix-ui/react-portal@1.1.9(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0): + resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + dev: false + + /@radix-ui/react-presence@1.1.4(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0): + resolution: {integrity: sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + dev: false + + /@radix-ui/react-primitive@2.1.3(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0): + resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + dev: false + + /@radix-ui/react-roving-focus@1.1.10(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0): + resolution: {integrity: sha512-dT9aOXUen9JSsxnMPv/0VqySQf5eDQ6LCk5Sw28kamz8wSOW2bJdlX2Bg5VUIIcV+6XlHpWTIuTPCf/UNIyq8Q==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + dev: false + + /@radix-ui/react-select@2.2.5(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0): + resolution: {integrity: sha512-HnMTdXEVuuyzx63ME0ut4+sEMYW6oouHWNGUZc7ddvUWIcfCva/AMoqEW/3wnEllriMWBa0RHspCYnfCWJQYmA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/number': 1.1.1 + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-focus-guards': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-popper': 1.2.7(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + aria-hidden: 1.2.6 + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + react-remove-scroll: 2.7.1(@types/react@19.1.8)(react@19.1.0) + dev: false + + /@radix-ui/react-separator@1.1.7(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0): + resolution: {integrity: sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + dev: false + + /@radix-ui/react-slot@1.2.3(@types/react@19.1.8)(react@19.1.0): + resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@types/react': 19.1.8 + react: 19.1.0 + dev: false + + /@radix-ui/react-tooltip@1.2.7(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0): + resolution: {integrity: sha512-Ap+fNYwKTYJ9pzqW+Xe2HtMRbQ/EeWkj2qykZ6SuEV4iS/o1bZI5ssJbk4D2r8XuDuOBVz/tIx2JObtuqU+5Zw==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/primitive': 1.1.2 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-dismissable-layer': 1.1.10(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-popper': 1.2.7(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-presence': 1.1.4(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + dev: false + + /@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.8)(react@19.1.0): + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.1.8 + react: 19.1.0 + dev: false + + /@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.8)(react@19.1.0): + resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.8)(react@19.1.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@types/react': 19.1.8 + react: 19.1.0 + dev: false + + /@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.8)(react@19.1.0): + resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@types/react': 19.1.8 + react: 19.1.0 + dev: false + + /@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.8)(react@19.1.0): + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@types/react': 19.1.8 + react: 19.1.0 + dev: false + + /@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.8)(react@19.1.0): + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.1.8 + react: 19.1.0 + dev: false + + /@radix-ui/react-use-previous@1.1.1(@types/react@19.1.8)(react@19.1.0): + resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.1.8 + react: 19.1.0 + dev: false + + /@radix-ui/react-use-rect@1.1.1(@types/react@19.1.8)(react@19.1.0): + resolution: {integrity: sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/rect': 1.1.1 + '@types/react': 19.1.8 + react: 19.1.0 + dev: false + + /@radix-ui/react-use-size@1.1.1(@types/react@19.1.8)(react@19.1.0): + resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.8)(react@19.1.0) + '@types/react': 19.1.8 + react: 19.1.0 + dev: false + + /@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0): + resolution: {integrity: sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.6)(@types/react@19.1.8)(react-dom@19.1.0)(react@19.1.0) + '@types/react': 19.1.8 + '@types/react-dom': 19.1.6(@types/react@19.1.8) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + dev: false + + /@radix-ui/rect@1.1.1: + resolution: {integrity: sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==} + dev: false + /@swc/counter@0.1.3: resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} dev: false @@ -540,7 +1981,6 @@ packages: resolution: {integrity: sha512-jJD50LtlD2dodAEO653i3YF04NWak6jN3ky+Ri3Em3mGR39/glWiboM/IePaRbgwSfqM1TpGXfAg8ohn/4dTgA==} dependencies: undici-types: 6.21.0 - dev: true /@types/react-dom@19.1.6(@types/react@19.1.8): resolution: {integrity: sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==} @@ -548,12 +1988,31 @@ packages: '@types/react': ^19.0.0 dependencies: '@types/react': 19.1.8 - dev: true /@types/react@19.1.8: resolution: {integrity: sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==} dependencies: csstype: 3.1.3 + + /@types/ws@8.18.1: + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + dependencies: + '@types/node': 20.19.1 + dev: false + + /aria-hidden@1.2.6: + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} + engines: {node: '>=10'} + dependencies: + tslib: 2.8.1 + dev: false + + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: false + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} dev: true /busboy@1.6.0: @@ -567,15 +2026,54 @@ packages: resolution: {integrity: sha512-WqJo7p0TbHDOythNTqYujmaJTvtYRZrjpP8TCvH6Vb9CYJerJNKamKzIWOM4BkQatWj9H2lYulpdAQNBe7QhNA==} dev: false + /cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + dependencies: + boolbase: 1.0.0 + css-select: 5.1.0 + css-what: 6.1.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + dev: false + + /cheerio@1.1.0: + resolution: {integrity: sha512-+0hMx9eYhJvWbgpKV9hN7jg0JcwydpopZE4hgi+KvQtByZXPp04NiCWU0LzcAbP63abZckIHkTQaXVF52mX3xQ==} + engines: {node: '>=18.17'} + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.2.2 + encoding-sniffer: 0.2.1 + htmlparser2: 10.0.0 + parse5: 7.3.0 + parse5-htmlparser2-tree-adapter: 7.1.0 + parse5-parser-stream: 7.1.2 + undici: 7.10.0 + whatwg-mimetype: 4.0.0 + dev: false + /chownr@3.0.0: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} dev: true + /class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + dependencies: + clsx: 2.1.1 + dev: false + /client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} dev: false + /clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + dev: false + /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -610,14 +2108,210 @@ packages: dev: false optional: true + /css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.2.2 + nth-check: 2.1.1 + dev: false + + /css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: false + /csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + /data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + dev: false + + /debug@4.4.1: + resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 dev: true + /detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + engines: {node: '>=8'} + dev: false + /detect-libc@2.0.4: resolution: {integrity: sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==} engines: {node: '>=8'} + /detect-node-es@1.1.0: + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} + dev: false + + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dev: false + + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: false + + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: false + + /domutils@3.2.2: + resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: false + + /dotenv@16.5.0: + resolution: {integrity: sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==} + engines: {node: '>=12'} + dev: false + + /drizzle-kit@0.31.2: + resolution: {integrity: sha512-Z2Uqxvu4HNFzlDkG3NQ2BYpII8SlOMkpjsC5XFh9TsYP2nYhfVamVjQ8spiMFXH3vGOyUt1cQ5FZ1JSgl6+8QQ==} + hasBin: true + dependencies: + '@drizzle-team/brocli': 0.10.2 + '@esbuild-kit/esm-loader': 2.6.5 + esbuild: 0.25.5 + esbuild-register: 3.6.0(esbuild@0.25.5) + transitivePeerDependencies: + - supports-color + dev: true + + /drizzle-orm@0.44.2(@libsql/client@0.15.9): + resolution: {integrity: sha512-zGAqBzWWkVSFjZpwPOrmCrgO++1kZ5H/rZ4qTGeGOe18iXGVJWf3WPfHOVwFIbmi8kHjfJstC6rJomzGx8g/dQ==} + peerDependencies: + '@aws-sdk/client-rds-data': '>=3' + '@cloudflare/workers-types': '>=4' + '@electric-sql/pglite': '>=0.2.0' + '@libsql/client': '>=0.10.0' + '@libsql/client-wasm': '>=0.10.0' + '@neondatabase/serverless': '>=0.10.0' + '@op-engineering/op-sqlite': '>=2' + '@opentelemetry/api': ^1.4.1 + '@planetscale/database': '>=1.13' + '@prisma/client': '*' + '@tidbcloud/serverless': '*' + '@types/better-sqlite3': '*' + '@types/pg': '*' + '@types/sql.js': '*' + '@upstash/redis': '>=1.34.7' + '@vercel/postgres': '>=0.8.0' + '@xata.io/client': '*' + better-sqlite3: '>=7' + bun-types: '*' + expo-sqlite: '>=14.0.0' + gel: '>=2' + knex: '*' + kysely: '*' + mysql2: '>=2' + pg: '>=8' + postgres: '>=3' + prisma: '*' + sql.js: '>=1' + sqlite3: '>=5' + peerDependenciesMeta: + '@aws-sdk/client-rds-data': + optional: true + '@cloudflare/workers-types': + optional: true + '@electric-sql/pglite': + optional: true + '@libsql/client': + optional: true + '@libsql/client-wasm': + optional: true + '@neondatabase/serverless': + optional: true + '@op-engineering/op-sqlite': + optional: true + '@opentelemetry/api': + optional: true + '@planetscale/database': + optional: true + '@prisma/client': + optional: true + '@tidbcloud/serverless': + optional: true + '@types/better-sqlite3': + optional: true + '@types/pg': + optional: true + '@types/sql.js': + optional: true + '@upstash/redis': + optional: true + '@vercel/postgres': + optional: true + '@xata.io/client': + optional: true + better-sqlite3: + optional: true + bun-types: + optional: true + expo-sqlite: + optional: true + gel: + optional: true + knex: + optional: true + kysely: + optional: true + mysql2: + optional: true + pg: + optional: true + postgres: + optional: true + prisma: + optional: true + sql.js: + optional: true + sqlite3: + optional: true + dependencies: + '@libsql/client': 0.15.9 + dev: false + + /drizzle-zod@0.8.2(drizzle-orm@0.44.2)(zod@3.25.67): + resolution: {integrity: sha512-9Do/16OjFFNrQDZgvMtxtDDwKWbFOxUAIwNPKX98SfxrP8H18vhN1BvNXbhelLcdgCE7GEaXDJqBjMExSkhpkA==} + peerDependencies: + drizzle-orm: '>=0.36.0' + zod: ^3.25.1 + dependencies: + drizzle-orm: 0.44.2(@libsql/client@0.15.9) + zod: 3.25.67 + dev: false + + /encoding-sniffer@0.2.1: + resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==} + dependencies: + iconv-lite: 0.6.3 + whatwg-encoding: 3.1.1 + dev: false + /enhanced-resolve@5.18.1: resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} @@ -626,10 +2320,144 @@ packages: tapable: 2.2.2 dev: true + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: false + + /entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + dev: false + + /esbuild-register@3.6.0(esbuild@0.25.5): + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} + peerDependencies: + esbuild: '>=0.12 <1' + dependencies: + debug: 4.4.1 + esbuild: 0.25.5 + transitivePeerDependencies: + - supports-color + dev: true + + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + dev: true + + /esbuild@0.25.5: + resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} + engines: {node: '>=18'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.5 + '@esbuild/android-arm': 0.25.5 + '@esbuild/android-arm64': 0.25.5 + '@esbuild/android-x64': 0.25.5 + '@esbuild/darwin-arm64': 0.25.5 + '@esbuild/darwin-x64': 0.25.5 + '@esbuild/freebsd-arm64': 0.25.5 + '@esbuild/freebsd-x64': 0.25.5 + '@esbuild/linux-arm': 0.25.5 + '@esbuild/linux-arm64': 0.25.5 + '@esbuild/linux-ia32': 0.25.5 + '@esbuild/linux-loong64': 0.25.5 + '@esbuild/linux-mips64el': 0.25.5 + '@esbuild/linux-ppc64': 0.25.5 + '@esbuild/linux-riscv64': 0.25.5 + '@esbuild/linux-s390x': 0.25.5 + '@esbuild/linux-x64': 0.25.5 + '@esbuild/netbsd-arm64': 0.25.5 + '@esbuild/netbsd-x64': 0.25.5 + '@esbuild/openbsd-arm64': 0.25.5 + '@esbuild/openbsd-x64': 0.25.5 + '@esbuild/sunos-x64': 0.25.5 + '@esbuild/win32-arm64': 0.25.5 + '@esbuild/win32-ia32': 0.25.5 + '@esbuild/win32-x64': 0.25.5 + dev: true + + /fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 + dev: false + + /formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + dependencies: + fetch-blob: 3.2.0 + dev: false + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /get-nonce@1.0.1: + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} + engines: {node: '>=6'} + dev: false + + /get-tsconfig@4.10.1: + resolution: {integrity: sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==} + dependencies: + resolve-pkg-maps: 1.0.0 + dev: true + /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} dev: true + /htmlparser2@10.0.0: + resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.2.2 + entities: 6.0.1 + dev: false + + /iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + dependencies: + safer-buffer: 2.1.2 + dev: false + /is-arrayish@0.3.2: resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} requiresBuild: true @@ -641,6 +2469,33 @@ packages: hasBin: true dev: true + /jose@6.0.11: + resolution: {integrity: sha512-QxG7EaliDARm1O1S8BGakqncGT9s25bKL1WSf6/oa17Tkqwi8D2ZNglqCF+DsYF88/rV66Q/Q2mFAy697E1DUg==} + dev: false + + /js-base64@3.7.7: + resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} + dev: false + + /libsql@0.5.13: + resolution: {integrity: sha512-5Bwoa/CqzgkTwySgqHA5TsaUDRrdLIbdM4egdPcaAnqO3aC+qAgS6BwdzuZwARA5digXwiskogZ8H7Yy4XfdOg==} + cpu: [x64, arm64, wasm32, arm] + os: [darwin, linux, win32] + dependencies: + '@neon-rs/load': 0.0.4 + detect-libc: 2.0.2 + optionalDependencies: + '@libsql/darwin-arm64': 0.5.13 + '@libsql/darwin-x64': 0.5.13 + '@libsql/linux-arm-gnueabihf': 0.5.13 + '@libsql/linux-arm-musleabihf': 0.5.13 + '@libsql/linux-arm64-gnu': 0.5.13 + '@libsql/linux-arm64-musl': 0.5.13 + '@libsql/linux-x64-gnu': 0.5.13 + '@libsql/linux-x64-musl': 0.5.13 + '@libsql/win32-x64-msvc': 0.5.13 + dev: false + /lightningcss-darwin-arm64@1.30.1: resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} engines: {node: '>= 12.0.0'} @@ -749,6 +2604,14 @@ packages: lightningcss-win32-x64-msvc: 1.30.1 dev: true + /lucide-react@0.522.0(react@19.1.0): + resolution: {integrity: sha512-jnJbw974yZ7rQHHEFKJOlWAefG3ATSCZHANZxIdx8Rk/16siuwjgA4fBULpXEAWx/RlTs3FzmKW/udWUuO0aRw==} + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + dependencies: + react: 19.1.0 + dev: false + /magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} dependencies: @@ -773,11 +2636,46 @@ packages: hasBin: true dev: true + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + dev: true + /nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + /next-auth@5.0.0-beta.29(next@15.3.4)(react@19.1.0): + resolution: {integrity: sha512-Ukpnuk3NMc/LiOl32njZPySk7pABEzbjhMUFd5/n10I0ZNC7NCuVv8IY2JgbDek2t/PUOifQEoUiOOTLy4os5A==} + peerDependencies: + '@simplewebauthn/browser': ^9.0.1 + '@simplewebauthn/server': ^9.0.2 + next: ^14.0.0-0 || ^15.0.0-0 + nodemailer: ^6.6.5 + react: ^18.2.0 || ^19.0.0-0 + peerDependenciesMeta: + '@simplewebauthn/browser': + optional: true + '@simplewebauthn/server': + optional: true + nodemailer: + optional: true + dependencies: + '@auth/core': 0.40.0 + next: 15.3.4(react-dom@19.1.0)(react@19.1.0) + react: 19.1.0 + dev: false + + /next-themes@0.4.6(react-dom@19.1.0)(react@19.1.0): + resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==} + peerDependencies: + react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + dependencies: + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + dev: false + /next@15.3.4(react-dom@19.1.0)(react@19.1.0): resolution: {integrity: sha512-mHKd50C+mCjam/gcnwqL1T1vPx/XQNFlXqFIVdgQdVAFY9iIQtY0IfaVflEYzKiqjeA7B0cYYMaCrmAYFjs4rA==} engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} @@ -823,6 +2721,50 @@ packages: - babel-plugin-macros dev: false + /node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + deprecated: Use your platform's native DOMException instead + dev: false + + /node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + dev: false + + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + dev: false + + /oauth4webapi@3.5.3: + resolution: {integrity: sha512-2bnHosmBLAQpXNBLOvaJMyMkr4Yya5ohE5Q9jqyxiN+aa7GFCzvDN1RRRMrp0NkfqRR2MTaQNkcSUCCjILD9oQ==} + dev: false + + /parse5-htmlparser2-tree-adapter@7.1.0: + resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} + dependencies: + domhandler: 5.0.3 + parse5: 7.3.0 + dev: false + + /parse5-parser-stream@7.1.2: + resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} + dependencies: + parse5: 7.3.0 + dev: false + + /parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + dependencies: + entities: 6.0.1 + dev: false + /picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -844,6 +2786,22 @@ packages: source-map-js: 1.2.1 dev: true + /preact-render-to-string@6.5.11(preact@10.24.3): + resolution: {integrity: sha512-ubnauqoGczeGISiOh6RjX0/cdaF8v/oDXIjO85XALCQjwQP+SB4RDXXtvZ6yTYSjG+PC1QRP2AhPgCEsM2EvUw==} + peerDependencies: + preact: '>=10' + dependencies: + preact: 10.24.3 + dev: false + + /preact@10.24.3: + resolution: {integrity: sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA==} + dev: false + + /promise-limit@2.7.0: + resolution: {integrity: sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==} + dev: false + /react-dom@19.1.0(react@19.1.0): resolution: {integrity: sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==} peerDependencies: @@ -853,11 +2811,70 @@ packages: scheduler: 0.26.0 dev: false + /react-remove-scroll-bar@2.3.8(@types/react@19.1.8)(react@19.1.0): + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.1.8 + react: 19.1.0 + react-style-singleton: 2.2.3(@types/react@19.1.8)(react@19.1.0) + tslib: 2.8.1 + dev: false + + /react-remove-scroll@2.7.1(@types/react@19.1.8)(react@19.1.0): + resolution: {integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.1.8 + react: 19.1.0 + react-remove-scroll-bar: 2.3.8(@types/react@19.1.8)(react@19.1.0) + react-style-singleton: 2.2.3(@types/react@19.1.8)(react@19.1.0) + tslib: 2.8.1 + use-callback-ref: 1.3.3(@types/react@19.1.8)(react@19.1.0) + use-sidecar: 1.1.3(@types/react@19.1.8)(react@19.1.0) + dev: false + + /react-style-singleton@2.2.3(@types/react@19.1.8)(react@19.1.0): + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.1.8 + get-nonce: 1.0.1 + react: 19.1.0 + tslib: 2.8.1 + dev: false + /react@19.1.0: resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==} engines: {node: '>=0.10.0'} dev: false + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + + /safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: false + /scheduler@0.26.0: resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} dev: false @@ -915,6 +2932,18 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + /streamsearch@1.1.0: resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} engines: {node: '>=10.0.0'} @@ -937,6 +2966,10 @@ packages: react: 19.1.0 dev: false + /tailwind-merge@3.3.1: + resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==} + dev: false + /tailwindcss@4.1.10: resolution: {integrity: sha512-P3nr6WkvKV/ONsTzj6Gb57sWPMX29EPNPopo7+FcpkQaNsrNpZ1pv8QmrYI2RqEKD7mlGqLnGovlcYnBK0IqUA==} dev: true @@ -962,6 +2995,21 @@ packages: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} dev: false + /tsx@4.20.3: + resolution: {integrity: sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==} + engines: {node: '>=18.0.0'} + hasBin: true + dependencies: + esbuild: 0.25.5 + get-tsconfig: 4.10.1 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /tw-animate-css@1.3.4: + resolution: {integrity: sha512-dd1Ht6/YQHcNbq0znIT6dG8uhO7Ce+VIIhZUhjsryXsMPJQz3bZg7Q2eNzLwipb25bRZslGb2myio5mScd1TFg==} + dev: true + /typescript@5.8.3: resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} @@ -970,9 +3018,78 @@ packages: /undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - dev: true + + /undici@7.10.0: + resolution: {integrity: sha512-u5otvFBOBZvmdjWLVW+5DAc9Nkq8f24g0O9oY7qw2JVIF1VocIFoyz9JFkuVOS2j41AufeO0xnlweJ2RLT8nGw==} + engines: {node: '>=20.18.1'} + dev: false + + /use-callback-ref@1.3.3(@types/react@19.1.8)(react@19.1.0): + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.1.8 + react: 19.1.0 + tslib: 2.8.1 + dev: false + + /use-sidecar@1.1.3(@types/react@19.1.8)(react@19.1.0): + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} + engines: {node: '>=10'} + peerDependencies: + '@types/react': '*' + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@types/react': 19.1.8 + detect-node-es: 1.1.0 + react: 19.1.0 + tslib: 2.8.1 + dev: false + + /web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + dev: false + + /whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + dependencies: + iconv-lite: 0.6.3 + dev: false + + /whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + dev: false + + /ws@8.18.2: + resolution: {integrity: sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false /yallist@5.0.0: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} dev: true + + /zod@3.25.67: + resolution: {integrity: sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==} + dev: false diff --git a/public/file.svg b/public/file.svg deleted file mode 100644 index 004145c..0000000 --- a/public/file.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/globe.svg b/public/globe.svg deleted file mode 100644 index 567f17b..0000000 --- a/public/globe.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/next.svg b/public/next.svg deleted file mode 100644 index 5174b28..0000000 --- a/public/next.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/vercel.svg b/public/vercel.svg deleted file mode 100644 index 7705396..0000000 --- a/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/web-app-manifest-192x192.png b/public/web-app-manifest-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..86859da745b383241b41927e75b395abcb549c7a GIT binary patch literal 27912 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 z

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⪼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%0DlCtr7 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 \ No newline at end of file diff --git a/src/app/actions.ts b/src/app/actions.ts new file mode 100644 index 0000000..933c891 --- /dev/null +++ b/src/app/actions.ts @@ -0,0 +1,46 @@ +"use server"; + +import { auth } from "@/auth"; +import { getLines, getScheduleForLine } from "@/common/parser"; +import { saveLines, updateLineEvents } from "@/db"; +import { revalidatePath } from "next/cache"; +import { cookies } from "next/headers"; +import { redirect } from "next/navigation"; + +export async function refetchAllData() { + const authData = await auth(); + if ( + !authData || + !authData.user || + authData.user.email !== "matej@stieranka.eu" + ) { + redirect("/?message=You are not authorized to perform this action."); + } + const lines = await getLines(); + await saveLines(lines); + + for (const line of lines) { + const lineId = line.id; + const schedule = await getScheduleForLine(lineId); + const allEvents = schedule.flatMap((day) => day.events); + await updateLineEvents(lineId, allEvents); + } + revalidatePath("/", "layout"); + redirect("/?message=All data has been successfully refetched and saved."); +} + +export async function toggleFavoriteEvent(formData: FormData) { + const eventId = parseInt(formData.get("eventId") as string, 10); + const cookieStore = await cookies(); + const favorites = cookieStore.get("favorites")?.value || "[]"; + let favoritesArray: number[] = JSON.parse(favorites); + if (favoritesArray.includes(eventId)) { + favoritesArray = favoritesArray.filter((id) => id !== eventId); + } else { + favoritesArray.push(eventId); + } + cookieStore.set("favorites", JSON.stringify(favoritesArray), { + maxAge: 60 * 60 * 24 * 365, // 1 year + }); + revalidatePath("/", "layout"); +} diff --git a/src/app/api/auth/[...nextauth]/route.ts b/src/app/api/auth/[...nextauth]/route.ts new file mode 100644 index 0000000..7c62e2d --- /dev/null +++ b/src/app/api/auth/[...nextauth]/route.ts @@ -0,0 +1,2 @@ +import { handlers } from "@/auth"; +export const { GET, POST } = handlers; diff --git a/src/app/apple-icon.png b/src/app/apple-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d62caec0b954e553c9987ed78d536b2c36d1ad0e GIT binary patch literal 24874 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 literal 0 HcmV?d00001 diff --git a/src/app/date/[date]/page.tsx b/src/app/date/[date]/page.tsx new file mode 100644 index 0000000..4add794 --- /dev/null +++ b/src/app/date/[date]/page.tsx @@ -0,0 +1,85 @@ +import { groupEventsByLine } from "@/common/utils"; +import { EventCard } from "@/components/EventCard"; +import { EventList } from "@/components/EventList"; +import { Button } from "@/components/ui/button"; +import { Label } from "@/components/ui/label"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { getAllLines, getEventsForDate } from "@/db"; +import { notFound } from "next/navigation"; + +export default async function ScheduleByDate({ + params, + searchParams, +}: { + params: Promise<{ + date: string; + }>; + searchParams: Promise<{ + group?: string; + }>; +}) { + const { date } = await params; + const { group = "time" } = await searchParams; + const parsedDate = new Date(date); + if (Number.isNaN(parsedDate.getTime())) { + return notFound(); + } + const formattedDate = parsedDate.toISOString().split("T")[0]; // Format to 'YYYY-MM-DD' + const events = await getEventsForDate(formattedDate); + if (events.length === 0) { + return notFound(); + } + const groupedEvents = groupEventsByLine(events); + const allLines = await getAllLines(); + return ( +

+
+

+ {parsedDate.toLocaleDateString(["cs-CZ"], { + weekday: "long", + day: "numeric", + month: "numeric", + })} +

+
+ + + +
+
+
+ {group === "line" && + groupedEvents.map((line) => ( + l.id === line.lineId)?.name} + /> + ))} + {group !== "line" && } +
+
+ ); +} diff --git a/src/app/favicon.ico b/src/app/favicon.ico index 718d6fea4835ec2d246af9800eddb7ffb276240c..ce6c29ebd4950f81bb9119193c07c240cc209e54 100644 GIT binary patch literal 15086 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 literal 25931 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 LrJugUA?W`A8`#=m diff --git a/src/app/favorites/page.tsx b/src/app/favorites/page.tsx new file mode 100644 index 0000000..717fa47 --- /dev/null +++ b/src/app/favorites/page.tsx @@ -0,0 +1,19 @@ +import { EventList } from "@/components/EventList"; +import { getEventsByIds } from "@/db"; +import { cookies } from "next/headers"; + +export default async function FavoritesPage() { + const cookieStore = await cookies(); + const favoritesCookie = cookieStore.get("favorites")?.value || "[]"; + const favoritesArray: number[] = JSON.parse(favoritesCookie); + const favorites = await getEventsByIds(favoritesArray); + + return ( +
+

Oblíbené

+
+ +
+
+ ); +} diff --git a/src/app/globals.css b/src/app/globals.css index a2dc41e..dc98be7 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1,26 +1,122 @@ @import "tailwindcss"; +@import "tw-animate-css"; -:root { - --background: #ffffff; - --foreground: #171717; -} +@custom-variant dark (&:is(.dark *)); @theme inline { --color-background: var(--background); --color-foreground: var(--foreground); --font-sans: var(--font-geist-sans); --font-mono: var(--font-geist-mono); + --color-sidebar-ring: var(--sidebar-ring); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar: var(--sidebar); + --color-chart-5: var(--chart-5); + --color-chart-4: var(--chart-4); + --color-chart-3: var(--chart-3); + --color-chart-2: var(--chart-2); + --color-chart-1: var(--chart-1); + --color-ring: var(--ring); + --color-input: var(--input); + --color-border: var(--border); + --color-destructive: var(--destructive); + --color-accent-foreground: var(--accent-foreground); + --color-accent: var(--accent); + --color-muted-foreground: var(--muted-foreground); + --color-muted: var(--muted); + --color-secondary-foreground: var(--secondary-foreground); + --color-secondary: var(--secondary); + --color-primary-foreground: var(--primary-foreground); + --color-primary: var(--primary); + --color-popover-foreground: var(--popover-foreground); + --color-popover: var(--popover); + --color-card-foreground: var(--card-foreground); + --color-card: var(--card); + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); } -@media (prefers-color-scheme: dark) { - :root { - --background: #0a0a0a; - --foreground: #ededed; +:root { + --radius: 0.625rem; + --background: oklch(1 0 0); + --foreground: oklch(0.145 0 0); + --card: oklch(1 0 0); + --card-foreground: oklch(0.145 0 0); + --popover: oklch(1 0 0); + --popover-foreground: oklch(0.145 0 0); + --primary: oklch(0.205 0 0); + --primary-foreground: oklch(0.985 0 0); + --secondary: oklch(0.97 0 0); + --secondary-foreground: oklch(0.205 0 0); + --muted: oklch(0.97 0 0); + --muted-foreground: oklch(0.556 0 0); + --accent: oklch(0.97 0 0); + --accent-foreground: oklch(0.205 0 0); + --destructive: oklch(0.577 0.245 27.325); + --border: oklch(0.922 0 0); + --input: oklch(0.922 0 0); + --ring: oklch(0.708 0 0); + --chart-1: oklch(0.646 0.222 41.116); + --chart-2: oklch(0.6 0.118 184.704); + --chart-3: oklch(0.398 0.07 227.392); + --chart-4: oklch(0.828 0.189 84.429); + --chart-5: oklch(0.769 0.188 70.08); + --sidebar: oklch(0.985 0 0); + --sidebar-foreground: oklch(0.145 0 0); + --sidebar-primary: oklch(0.205 0 0); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.97 0 0); + --sidebar-accent-foreground: oklch(0.205 0 0); + --sidebar-border: oklch(0.922 0 0); + --sidebar-ring: oklch(0.708 0 0); +} + +.dark { + --background: oklch(0.145 0 0); + --foreground: oklch(0.985 0 0); + --card: oklch(0.205 0 0); + --card-foreground: oklch(0.985 0 0); + --popover: oklch(0.205 0 0); + --popover-foreground: oklch(0.985 0 0); + --primary: oklch(0.922 0 0); + --primary-foreground: oklch(0.205 0 0); + --secondary: oklch(0.269 0 0); + --secondary-foreground: oklch(0.985 0 0); + --muted: oklch(0.269 0 0); + --muted-foreground: oklch(0.708 0 0); + --accent: oklch(0.269 0 0); + --accent-foreground: oklch(0.985 0 0); + --destructive: oklch(0.704 0.191 22.216); + --border: oklch(1 0 0 / 10%); + --input: oklch(1 0 0 / 15%); + --ring: oklch(0.556 0 0); + --chart-1: oklch(0.488 0.243 264.376); + --chart-2: oklch(0.696 0.17 162.48); + --chart-3: oklch(0.769 0.188 70.08); + --chart-4: oklch(0.627 0.265 303.9); + --chart-5: oklch(0.645 0.246 16.439); + --sidebar: oklch(0.205 0 0); + --sidebar-foreground: oklch(0.985 0 0); + --sidebar-primary: oklch(0.488 0.243 264.376); + --sidebar-primary-foreground: oklch(0.985 0 0); + --sidebar-accent: oklch(0.269 0 0); + --sidebar-accent-foreground: oklch(0.985 0 0); + --sidebar-border: oklch(1 0 0 / 10%); + --sidebar-ring: oklch(0.556 0 0); +} + +@layer base { + * { + @apply border-border outline-ring/50; + } + body { + @apply bg-background text-foreground; } } - -body { - background: var(--background); - color: var(--foreground); - font-family: Arial, Helvetica, sans-serif; -} diff --git a/src/app/icon0.svg b/src/app/icon0.svg new file mode 100644 index 0000000..d06f4d1 --- /dev/null +++ b/src/app/icon0.svg @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/src/app/icon1.png b/src/app/icon1.png new file mode 100644 index 0000000000000000000000000000000000000000..85ae3680e63f801fa520e3ef2a905f346afd86df GIT binary patch literal 8740 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 O0000S+wr} literal 0 HcmV?d00001 diff --git a/src/app/layout.tsx b/src/app/layout.tsx index f7fa87e..6b81d8c 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,34 +1,62 @@ +import { AppSidebar } from "@/components/app-sidebar"; +import { + SidebarInset, + SidebarProvider, + SidebarTrigger, +} from "@/components/ui/sidebar"; +import { Separator } from "@radix-ui/react-separator"; +import { ArrowUpRight } from "lucide-react"; import type { Metadata } from "next"; import { Geist, Geist_Mono } from "next/font/google"; import "./globals.css"; const geistSans = Geist({ - variable: "--font-geist-sans", - subsets: ["latin"], + variable: "--font-geist-sans", + subsets: ["latin"], }); const geistMono = Geist_Mono({ - variable: "--font-geist-mono", - subsets: ["latin"], + variable: "--font-geist-mono", + subsets: ["latin"], }); export const metadata: Metadata = { - title: "Create Next App", - description: "Generated by create next app", + title: "inFFoappka 2.0", + description: "Vašek to zrušil, tak to dělám znovu :D", }; -export default function RootLayout({ - children, +export default async function RootLayout({ + children, }: Readonly<{ - children: React.ReactNode; + children: React.ReactNode; }>) { - return ( - - - {children} - - - ); + return ( + + + + + +
+ + +
+

inFFoappka 2.0

+
+ + Rozmístění + +
+
{children}
+
+
+ + + ); } diff --git a/src/app/line/[line]/page.tsx b/src/app/line/[line]/page.tsx new file mode 100644 index 0000000..c771b75 --- /dev/null +++ b/src/app/line/[line]/page.tsx @@ -0,0 +1,46 @@ +import { groupEventsByDate } from "@/common/utils"; +import { EventList } from "@/components/EventList"; +import { getEventsForLine, getLineById } from "@/db"; +import { notFound } from "next/navigation"; + +export default async function ScheduleByLine({ + params, +}: { + params: Promise<{ + line: string; + }>; +}) { + const { line } = await params; + const lineId = parseInt(line, 10); + if (Number.isNaN(lineId)) { + return notFound(); + } + const lineInfo = await getLineById(lineId); + if (!lineInfo) { + return notFound(); + } + const events = await getEventsForLine(lineId); + const lineData = groupEventsByDate(events); + + return ( +
+
+

{lineInfo.name}

+
{lineInfo.description}
+
+
+ {lineData?.map((day) => ( + + ))} +
+
+ ); +} diff --git a/src/app/manifest.json b/src/app/manifest.json new file mode 100644 index 0000000..ccf313a --- /dev/null +++ b/src/app/manifest.json @@ -0,0 +1,21 @@ +{ + "name": "MyWebSite", + "short_name": "MySite", + "icons": [ + { + "src": "/web-app-manifest-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "/web-app-manifest-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} \ No newline at end of file diff --git a/src/app/not-found.tsx b/src/app/not-found.tsx new file mode 100644 index 0000000..f75b7b5 --- /dev/null +++ b/src/app/not-found.tsx @@ -0,0 +1,10 @@ +export default function NotFound() { + return ( +
+
+

404 - Page Not Found

+

The page you are looking for does not exist.

+
+
+ ); +} \ No newline at end of file diff --git a/src/app/page.tsx b/src/app/page.tsx index e68abe6..4b03993 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,103 +1,44 @@ -import Image from "next/image"; +import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert"; +import { getAllLines } from "@/db"; -export default function Home() { - return ( -
-
- Next.js logo -
    -
  1. - Get started by editing{" "} - - src/app/page.tsx - - . -
  2. -
  3. - Save and see your changes instantly. -
  4. -
- - -
- -
- ); +interface HomePageProps { + searchParams: Promise<{ message?: string }>; +} + +export default async function Home({ searchParams }: HomePageProps) { + const lines = await getAllLines(); + + const message = (await searchParams).message; + console.log("Message from searchParams:", message); + + return ( +
+
+ {message && ( + + Refetch all data - Response + + {message} + + + )} +
+

Linie

+ +
+
+
+ ); } diff --git a/src/app/search/page.tsx b/src/app/search/page.tsx new file mode 100644 index 0000000..949b529 --- /dev/null +++ b/src/app/search/page.tsx @@ -0,0 +1,22 @@ +import { EventCard } from "@/components/EventCard"; +import { EventList } from "@/components/EventList"; +import { searchEvents } from "@/db"; + +interface SearchPageProps { + searchParams: Promise<{ q?: string }>; +} + +export default async function SearchPage({ searchParams }: SearchPageProps) { + const query = (await searchParams).q || ""; + const results = query ? await searchEvents(query) : []; + return ( +
+
+

+ Výsledky hledání pro "{query}" +

+ +
+
+ ); +} diff --git a/src/auth.ts b/src/auth.ts new file mode 100644 index 0000000..da98476 --- /dev/null +++ b/src/auth.ts @@ -0,0 +1,7 @@ +import NextAuth from "next-auth"; +import GitHub from "next-auth/providers/github"; + +export const { handlers, signIn, signOut, auth } = NextAuth({ + providers: [GitHub], + trustHost: true, +}); diff --git a/src/common/parser.ts b/src/common/parser.ts new file mode 100644 index 0000000..2b1f988 --- /dev/null +++ b/src/common/parser.ts @@ -0,0 +1,234 @@ +import * as cheerio from "cheerio"; + +export interface Line { + id: number; + name: string; + description: string; +} + +export async function getLines() { + const annotation = await fetch( + "https://amber.festivalfantazie.cz/porady.php", + { + headers: { + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3", + }, + }, + ); + + const response = await annotation.text(); + + if (!response) { + throw new Error("Failed to fetch data from the server"); + } + + const $ = cheerio.load(response); + + const table = $("#content_in table"); + + if (!table.length) { + throw new Error("No table found in the response"); + } + + // tbody: lineName | lineDescription | _ | _ | lineLink (optional) + const lines = table + .find("tbody tr") + .map((_, row) => { + const columns = $(row).find("td"); + const lineName = $(columns[0]).text().trim(); + const lineDescription = $(columns[1]).text().trim(); + const lineLink = $(columns[4]).find("a").attr("href") || null; + // link: program_linie.php?linie=123 + const lineId = lineLink + ? parseInt(lineLink.match(/linie=(\d+)/)?.[1] || "0", 10) + : 0; + + return { + name: lineName, + description: lineDescription.replace(/\(|\)/g, ""), + id: lineId, + }; + }) + .get() + .filter((line) => line.id > 0) satisfies Line[]; + + if (lines.length === 0) { + throw new Error("No valid lines found in the table"); + } + return lines; +} + +export interface Event { + id: number; + startTime: Date; + endTime: Date; + name: string; + title: string; + description: string; + type: string; + lineId: number; +} + +export async function getScheduleForLine(lineId: number) { + const response = await fetch( + `https://amber.festivalfantazie.cz/program_linie.php?linie=${lineId}`, + { + headers: { + "User-Agent": + "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3", + }, + }, + ); + + const html = await response.text(); + const $ = cheerio.load(html); + + const table = $("table.program_all"); + if (!table.length) { + throw new Error("No schedule table found for the line"); + } + + // get schedule for each day + // b - date + // table.program_all - table with schedule + const info = $("b, table.program_all > tbody").toArray(); + const schedule: { date: string; events: Event[] }[] = []; + + // group info into pairs + if (info.length % 2 !== 0) { + throw new Error("Unexpected structure in the schedule data"); + } + + for (let i = 0; i < info.length; i += 2) { + const date = parseDate($(info[i]).text().trim()); + + const eventTable = $(info[i + 1]); + const events: Event[] = []; + + // tr[0] - header row, get first and last value = start and end time + const dayStart = setTime( + date, + eventTable.find("td.program_time").first().text().trim(), + ); + const dayEnd = setTime( + date, + eventTable.find("td.program_time").last().text().trim(), + ); + + if (dayEnd < dayStart) { + // if end time is earlier than start time, it means the event goes to the next day + dayEnd.setDate(dayEnd.getDate() + 1); + } + + // check if start and end time are valid + if (Number.isNaN(dayStart.getTime()) || Number.isNaN(dayEnd.getTime())) { + throw new Error( + `Invalid date or time format for ${date}: ${dayStart}, ${dayEnd}`, + ); + } + + let currentTime = dayStart; + + const tds = eventTable.children().last().children().toArray(); + console.log(`Found ${tds.length} time slots for date: ${date}`); + for (const td of tds) { + console.log(`Processing time slot: ${currentTime.toISOString()}`); + // one colspan = 30 minutes, so retrieve colspan and calculate time + const colspan = $(td).attr("colspan"); + console.log(`Colspan: ${colspan}`); + if (colspan === undefined) { + // empty 30 minute slot + currentTime.setMinutes(currentTime.getMinutes() + 30); + continue; + } + console.log("Colspan is defined, processing event..."); + const minutes = parseInt(colspan, 10) * 30; // each colspan represents 30 minutes + const startTime = new Date(currentTime); + const endTime = new Date(currentTime); + endTime.setMinutes(endTime.getMinutes() + minutes); + + // onmouseover="sent_request(36021, this);" + const eventId = + $(td) + .attr("onmouseover") + ?.match(/sent_request\((\d+), this\);/)?.[1] ?? ""; + const eventIdNumber = parseInt(eventId, 10); + if (Number.isNaN(eventIdNumber) || eventIdNumber <= 0) { + throw new Error(`Invalid event ID: ${eventId}`); + } + + const descriptionRes = await fetch( + "https://amber.festivalfantazie.cz/ajax/anotace.php", + { + headers: { + "User-Agent": + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:139.0) Gecko/20100101 Firefox/139.0", + "Content-Type": "application/x-www-form-urlencoded", + }, + referrer: `https://amber.festivalfantazie.cz/program_linie.php?linie=${lineId}`, + body: `id=${eventIdNumber}`, + method: "POST", + }, + ); + + if (!descriptionRes.ok) { + throw new Error( + `Failed to fetch description for event ID ${eventIdNumber}`, + ); + } + + const descriptionHtml = await descriptionRes.text(); + const description$ = cheerio.load(descriptionHtml); + const description = description$("description").text().trim(); + + events.push({ + id: eventIdNumber, + startTime, + endTime, + name: $(td).find("td.program_name").text().trim(), + title: $(td).find("td.program_title").text().trim(), + description, + type: $(td).find("td.program_typ").text().trim(), + lineId, + }); + + currentTime = new Date(endTime); + } + + console.log(`Parsed schedule for ${date}: ${events.length} events`); + + if (date && events.length > 0) { + schedule.push({ date: date.toDateString(), events }); + } + } + + return schedule; +} + +// parse date from format "Pátek dd.mm. YYYY" +function parseDate(dateString: string): Date { + const [dayOfWeek, dayMonth, year] = dateString.split(" "); + if (!dayOfWeek || !dayMonth || !year) { + throw new Error(`Invalid date format: ${dateString}`); + } + const [day, month] = dayMonth.split("."); + if (!day || !month) { + throw new Error(`Invalid day or month in date: ${dateString}`); + } + const formattedDate = `${year}-${month.padStart(2, "0")}-${day.padStart( + 2, + "0", + )}`; // format date as YYYY-MM-DD + return new Date(formattedDate); +} + +function setTime(date: Date, timeString: string): Date { + const [hours, minutes] = timeString.split(":").map(Number); + if (Number.isNaN(hours) || Number.isNaN(minutes)) { + throw new Error(`Invalid time format: ${timeString}`); + } + const newDate = new Date(date); + newDate.setHours(hours, minutes, 0, 0); + return newDate; +} diff --git a/src/common/utils.ts b/src/common/utils.ts new file mode 100644 index 0000000..b2683ca --- /dev/null +++ b/src/common/utils.ts @@ -0,0 +1,61 @@ +import { cookies } from "next/headers"; +import type { Event } from "./parser"; + +/** + * Splits an array of events into groups by date. As a cutoff time, it uses 6:00 AM. + * Events before this time are considered part of the previous day. + * @param events - Array of events to be grouped by date. + * @returns An object where keys are dates in 'YYYY-MM-DD' format and values are arrays of events for that date. + */ +export function groupEventsByDate(events: Event[]) { + const grouped: Record = {}; + const cutoffHour = 6; // 6:00 AM cutoff + for (const event of events) { + const eventDate = new Date(event.startTime); + // Adjust the date if the event starts before the cutoff time + if (eventDate.getHours() < cutoffHour) { + eventDate.setDate(eventDate.getDate() - 1); + } + const dateKey = eventDate.toISOString().split("T")[0]; // Format as 'YYYY-MM-DD' + if (!grouped[dateKey]) { + grouped[dateKey] = []; + } + grouped[dateKey].push(event); + } + // Sort events within each date by start time + for (const date in grouped) { + grouped[date].sort( + (a, b) => + new Date(a.startTime).getTime() - new Date(b.startTime).getTime(), + ); + } + return Object.entries(grouped).map(([date, events]) => ({ + date: new Date(date), + events, + })); +} + +export function groupEventsByLine(events: Event[]) { + const grouped: Record = {}; + for (const event of events) { + const lineId = event.lineId; + if (!grouped[lineId]) { + grouped[lineId] = []; + } + grouped[lineId].push(event); + } + return Object.entries(grouped).map(([lineId, events]) => ({ + lineId: parseInt(lineId, 10), + events: events.sort( + (a, b) => + new Date(a.startTime).getTime() - new Date(b.startTime).getTime(), + ), + })); +} + +export async function isEventFavorite(eventId: number): Promise { + const cookieStore = await cookies(); + const favorites = cookieStore.get("favorites")?.value || "[]"; + const favoritesArray: number[] = JSON.parse(favorites); + return favoritesArray.includes(eventId); +} diff --git a/src/components/EventCard.tsx b/src/components/EventCard.tsx new file mode 100644 index 0000000..bb6616d --- /dev/null +++ b/src/components/EventCard.tsx @@ -0,0 +1,73 @@ +import type { Event } from "@/common/parser"; +import { isEventFavorite } from "@/common/utils"; +import { Button } from "./ui/button"; +import { toggleFavoriteEvent } from "@/app/actions"; +import { + HeartMinusIcon, + HeartPlusIcon, +} from "lucide-react"; +import { getLineById } from "@/db"; +import { Badge } from "./ui/badge"; +import Link from "next/link"; + +export async function EventCard({ + event, + showDate = false, + showLine = false, +}: { + event: Event; + showDate?: boolean; + showLine?: boolean; +}) { + const isFavorite = await isEventFavorite(event.id); + const line = showLine ? await getLineById(event.lineId) : null; + + return ( +
+
+

{event.title}

+
+ + +
+
+ {line && ( + + {line.name} + + )} +
{event.name}
+
+ {showDate + ? `${event.startTime.toLocaleDateString(["cs-CZ"], { + month: "numeric", + day: "numeric", + weekday: 'short', + })} ` + : ""} + {event.startTime.toLocaleTimeString(["cs-CZ"], { + hour: "2-digit", + minute: "2-digit", + hour12: false, + })}{" "} + -{" "} + {event.endTime.toLocaleTimeString(["cs-CZ"], { + hour: "2-digit", + minute: "2-digit", + hour12: false, + })} +
+

+ {event.description} +

+
+ ); +} diff --git a/src/components/EventList.tsx b/src/components/EventList.tsx new file mode 100644 index 0000000..9a3f487 --- /dev/null +++ b/src/components/EventList.tsx @@ -0,0 +1,31 @@ +import { Event } from "@/common/parser"; +import { EventCard } from "./EventCard"; + +export function EventList({ + events, + title, + showDate, + showLine, +}: { + events: Event[]; + title?: string; + showDate?: boolean; + showLine?: boolean; +}) { + return ( +
+ {title &&

{title}

} + {events.length === 0 && ( +

Žádné události.

+ )} + {events.map((event) => ( + + ))} +
+ ); +} \ No newline at end of file diff --git a/src/components/SearchResults.tsx b/src/components/SearchResults.tsx new file mode 100644 index 0000000..81f388e --- /dev/null +++ b/src/components/SearchResults.tsx @@ -0,0 +1,5 @@ +'use client'; + +export function SearchResults() { + +} \ No newline at end of file diff --git a/src/components/app-sidebar.tsx b/src/components/app-sidebar.tsx new file mode 100644 index 0000000..aecda40 --- /dev/null +++ b/src/components/app-sidebar.tsx @@ -0,0 +1,180 @@ +import * as React from "react"; +import { ChevronRight } from "lucide-react"; + +import { SearchForm } from "@/components/search-form"; +import { + Collapsible, + CollapsibleContent, + CollapsibleTrigger, +} from "@/components/ui/collapsible"; +import { + Sidebar, + SidebarContent, + SidebarGroup, + SidebarGroupContent, + SidebarGroupLabel, + SidebarHeader, + SidebarMenu, + SidebarMenuButton, + SidebarMenuItem, + SidebarRail, +} from "@/components/ui/sidebar"; +import { getAllDays, getAllLines } from "@/db"; +import { auth, signIn, signOut } from "@/auth"; +import { refetchAllData } from "@/app/actions"; + +export async function AppSidebar({ + ...props +}: React.ComponentProps) { + const allLines = await getAllLines(); + const allDays = await getAllDays(); + const data = { + navMain: [ + { + title: "Dny", + items: allDays.map((day) => ({ + title: new Date(day).toLocaleDateString("cs-CZ", { + weekday: "long", + day: "numeric", + month: "numeric", + }), + url: `/date/${day}`, + isActive: false, // You can set this based on your routing logic + })), + }, + { + title: "Linie", + items: allLines.map((line) => ({ + title: line.name, + url: `/line/${line.id}`, + isActive: false, // You can set this based on your routing logic + })), + }, + ], + }; + + const session = await auth(); + console.log("Session:", session); + const username = session?.user?.name; + + return ( + + + + + + + + + + + Rozcestník + + + + + Oblíbené + + + + + + {/* We create a collapsible SidebarGroup for each parent. */} + {data.navMain.map((item) => ( + + + + + {item.title}{" "} + + + + + + + {item.items.map((item) => ( + + + {item.title} + + + ))} + + + + + + ))} + + + + + Správa{username ? ` (${username}) ` : " "} + + + + + + + {!username && ( + +
{ + "use server"; + await signIn("github"); + }} + > + + Přihlásit se přes GitHub + +
+
+ )} + {username && ( + <> + +
{ + "use server"; + await signOut(); + }} + > + + Odhlásit se + +
+
+ +
+ + Refetch all data + +
+
+ + )} +
+
+
+
+
+
+ +
+ ); +} diff --git a/src/components/search-form.tsx b/src/components/search-form.tsx new file mode 100644 index 0000000..ac8990e --- /dev/null +++ b/src/components/search-form.tsx @@ -0,0 +1,31 @@ +import { Search } from "lucide-react"; + +import { Label } from "@/components/ui/label"; +import { + SidebarGroup, + SidebarGroupContent, + SidebarInput, +} from "@/components/ui/sidebar"; +import { useId } from "react"; + +export function SearchForm({ ...props }: React.ComponentProps<"form">) { + const inputId = useId(); + return ( +
+ + + + + + + +
+ ); +} diff --git a/src/components/ui/alert.tsx b/src/components/ui/alert.tsx new file mode 100644 index 0000000..1421354 --- /dev/null +++ b/src/components/ui/alert.tsx @@ -0,0 +1,66 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const alertVariants = cva( + "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", + { + variants: { + variant: { + default: "bg-card text-card-foreground", + destructive: + "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +function Alert({ + className, + variant, + ...props +}: React.ComponentProps<"div"> & VariantProps) { + return ( +
+ ) +} + +function AlertTitle({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function AlertDescription({ + className, + ...props +}: React.ComponentProps<"div">) { + return ( +
+ ) +} + +export { Alert, AlertTitle, AlertDescription } diff --git a/src/components/ui/badge.tsx b/src/components/ui/badge.tsx new file mode 100644 index 0000000..0205413 --- /dev/null +++ b/src/components/ui/badge.tsx @@ -0,0 +1,46 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { cva, type VariantProps } from "class-variance-authority" + +import { cn } from "@/lib/utils" + +const badgeVariants = cva( + "inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90", + secondary: + "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90", + destructive: + "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", + outline: + "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +function Badge({ + className, + variant, + asChild = false, + ...props +}: React.ComponentProps<"span"> & + VariantProps & { asChild?: boolean }) { + const Comp = asChild ? Slot : "span" + + return ( + + ) +} + +export { Badge, badgeVariants } diff --git a/src/components/ui/breadcrumb.tsx b/src/components/ui/breadcrumb.tsx new file mode 100644 index 0000000..eb88f32 --- /dev/null +++ b/src/components/ui/breadcrumb.tsx @@ -0,0 +1,109 @@ +import * as React from "react" +import { Slot } from "@radix-ui/react-slot" +import { ChevronRight, MoreHorizontal } from "lucide-react" + +import { cn } from "@/lib/utils" + +function Breadcrumb({ ...props }: React.ComponentProps<"nav">) { + return