From 705e985685a1f37f1bd887efe53dc6bbba6e1cf9 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Tue, 5 Aug 2025 21:14:28 +0200 Subject: [PATCH 001/127] Added dynamic background --- frontend/package.json | 5 +- frontend/src/App.jsx | 12 ++-- frontend/src/components/SpaceBackground.jsx | 37 +++++++++++ frontend/src/shaders/BackgroundShader.frag | 70 +++++++++++++++++++++ frontend/src/shaders/BackgroundShader.vert | 6 ++ 5 files changed, 125 insertions(+), 5 deletions(-) create mode 100644 frontend/src/components/SpaceBackground.jsx create mode 100644 frontend/src/shaders/BackgroundShader.frag create mode 100644 frontend/src/shaders/BackgroundShader.vert diff --git a/frontend/package.json b/frontend/package.json index 7b2747e949..ad9363f505 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,8 +10,11 @@ "preview": "vite preview" }, "dependencies": { + "@react-three/drei": "^9.122.0", + "@react-three/fiber": "^8.18.0", "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "three": "^0.179.1" }, "devDependencies": { "@types/react": "^18.2.15", diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 0a24275e6e..cd256d436f 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1,8 +1,12 @@ -export const App = () => { +import { Canvas } from "@react-three/fiber"; +import SpaceBackground from "./components/SpaceBackground"; +export const App = () => { return ( - <> -

Welcome to Final Project!

- +
+ + + +
); }; diff --git a/frontend/src/components/SpaceBackground.jsx b/frontend/src/components/SpaceBackground.jsx new file mode 100644 index 0000000000..3c9c22bb0b --- /dev/null +++ b/frontend/src/components/SpaceBackground.jsx @@ -0,0 +1,37 @@ +import { useRef } from "react"; +import { useThree, useFrame } from "@react-three/fiber"; +import * as THREE from "three"; +import fragmentShader from "../shaders/BackgroundShader.frag?raw"; +import vertexShader from "../shaders/BackgroundShader.vert?raw"; + +export default function SpaceBackground() { + const materialRef = useRef(); + const meshRef = useRef(); + const { viewport } = useThree(); // ⬅️ responsiv storlek i world units + + useFrame((state) => { + if (materialRef.current) { + materialRef.current.uniforms.uTime.value = state.clock.getElapsedTime(); + } + }); + + return ( + + + + + ); +} diff --git a/frontend/src/shaders/BackgroundShader.frag b/frontend/src/shaders/BackgroundShader.frag new file mode 100644 index 0000000000..4d3470bfde --- /dev/null +++ b/frontend/src/shaders/BackgroundShader.frag @@ -0,0 +1,70 @@ +precision mediump float; + +uniform float uTime; +varying vec2 vUv; + +vec3 erot(vec3 p, vec3 ax, float ro) { + return mix(dot(p, ax) * ax, p, cos(ro)) + sin(ro) * cross(ax, p); +} + +float hash(vec3 x) { + return fract(sin(dot(x, vec3(12.9898, 78.233, 54.53))) * 43758.5453123); +} + +float waveletNoise(vec3 p, float z, float k) { + float d = 0.0, s = 1.0, m = 0.0, a; + for (int i = 0; i < 3; i++) { + vec3 q = p * s; + vec3 g = fract(floor(q) * vec3(123.34, 233.53, 314.15)); + g += dot(g, g + 23.234); + a = fract(g.x * g.y) * 1e3 + z * (mod(g.x + g.y, 2.0) - 1.0); + q = fract(q) - 0.5; + q = erot(q, normalize(tan(g + 0.1)), a); + d += sin(q.x * 10.0 + z) * smoothstep(0.25, 0.0, dot(q, q)) / s; + p = erot(p, normalize(vec3(-1, 1, 0)), atan(sqrt(2.0))) + float(i); + m += 1.0 / s; + s *= k; + } + return d / m; +} + +float starfield(vec3 p) { + float density = 20.0; + vec3 ip = floor(p * density); + vec3 fp = fract(p * density); + float d = length(fp - vec3(0.5)); + float star = step(0.02, 0.02 - d) * hash(ip); + return clamp(star, 0.0, 1.0); +} + +void main() { + vec2 uv = vUv * 2.0 - 1.0; + uv.x *= 1.0; + + vec3 dir = normalize(vec3(uv, 1.0)); + float time = uTime * 0.3; // SAKTA rörelse + + vec3 from = vec3(0.0, 0.0, -2.0 + time * 0.2); + + float s = 0.1; + float fade = 1.0; + vec3 color = vec3(0.0); + + for (int i = 0; i < 20; i++) { + vec3 p = from + s * dir; + vec3 p2 = p * 2.5; + float a = waveletNoise(p2, 0.0, 1.9) * 2.0 - 1.0; + a *= a * a; + color += vec3(s, s * s, s * s * s * s) * a * -6.0 * fade; + fade *= 0.93; + s += 0.04; + } + + float stars = starfield(from + dir * 2.0); + color += vec3(stars); + + color = mix(vec3(length(color)), color, 0.9); + color = clamp(color * 0.01, 0.0, 1.0); + + gl_FragColor = vec4(color, 1.0); +} diff --git a/frontend/src/shaders/BackgroundShader.vert b/frontend/src/shaders/BackgroundShader.vert new file mode 100644 index 0000000000..6abb4abf04 --- /dev/null +++ b/frontend/src/shaders/BackgroundShader.vert @@ -0,0 +1,6 @@ +varying vec2 vUv; + +void main() { + vUv = uv; + gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); +} From b4a6d73cc588b927d44380193f0511c9a7bed703 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Wed, 6 Aug 2025 14:44:29 +0200 Subject: [PATCH 002/127] Deleted shaders --- backend/TODO.md | 0 frontend/package.json | 6 +- frontend/src/App.jsx | 11 +--- frontend/src/components/SpaceBackground.jsx | 37 ----------- frontend/src/shaders/BackgroundShader.frag | 70 --------------------- frontend/src/shaders/BackgroundShader.vert | 6 -- 6 files changed, 4 insertions(+), 126 deletions(-) create mode 100644 backend/TODO.md delete mode 100644 frontend/src/components/SpaceBackground.jsx delete mode 100644 frontend/src/shaders/BackgroundShader.frag delete mode 100644 frontend/src/shaders/BackgroundShader.vert diff --git a/backend/TODO.md b/backend/TODO.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/frontend/package.json b/frontend/package.json index ad9363f505..448faa8a7b 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,11 +10,7 @@ "preview": "vite preview" }, "dependencies": { - "@react-three/drei": "^9.122.0", - "@react-three/fiber": "^8.18.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "three": "^0.179.1" + "react": "^18.2.0" }, "devDependencies": { "@types/react": "^18.2.15", diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index cd256d436f..040be88c3e 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -1,12 +1,7 @@ -import { Canvas } from "@react-three/fiber"; -import SpaceBackground from "./components/SpaceBackground"; - export const App = () => { return ( -
- - - -
+ <> +

Hej Ida

+ ); }; diff --git a/frontend/src/components/SpaceBackground.jsx b/frontend/src/components/SpaceBackground.jsx deleted file mode 100644 index 3c9c22bb0b..0000000000 --- a/frontend/src/components/SpaceBackground.jsx +++ /dev/null @@ -1,37 +0,0 @@ -import { useRef } from "react"; -import { useThree, useFrame } from "@react-three/fiber"; -import * as THREE from "three"; -import fragmentShader from "../shaders/BackgroundShader.frag?raw"; -import vertexShader from "../shaders/BackgroundShader.vert?raw"; - -export default function SpaceBackground() { - const materialRef = useRef(); - const meshRef = useRef(); - const { viewport } = useThree(); // ⬅️ responsiv storlek i world units - - useFrame((state) => { - if (materialRef.current) { - materialRef.current.uniforms.uTime.value = state.clock.getElapsedTime(); - } - }); - - return ( - - - - - ); -} diff --git a/frontend/src/shaders/BackgroundShader.frag b/frontend/src/shaders/BackgroundShader.frag deleted file mode 100644 index 4d3470bfde..0000000000 --- a/frontend/src/shaders/BackgroundShader.frag +++ /dev/null @@ -1,70 +0,0 @@ -precision mediump float; - -uniform float uTime; -varying vec2 vUv; - -vec3 erot(vec3 p, vec3 ax, float ro) { - return mix(dot(p, ax) * ax, p, cos(ro)) + sin(ro) * cross(ax, p); -} - -float hash(vec3 x) { - return fract(sin(dot(x, vec3(12.9898, 78.233, 54.53))) * 43758.5453123); -} - -float waveletNoise(vec3 p, float z, float k) { - float d = 0.0, s = 1.0, m = 0.0, a; - for (int i = 0; i < 3; i++) { - vec3 q = p * s; - vec3 g = fract(floor(q) * vec3(123.34, 233.53, 314.15)); - g += dot(g, g + 23.234); - a = fract(g.x * g.y) * 1e3 + z * (mod(g.x + g.y, 2.0) - 1.0); - q = fract(q) - 0.5; - q = erot(q, normalize(tan(g + 0.1)), a); - d += sin(q.x * 10.0 + z) * smoothstep(0.25, 0.0, dot(q, q)) / s; - p = erot(p, normalize(vec3(-1, 1, 0)), atan(sqrt(2.0))) + float(i); - m += 1.0 / s; - s *= k; - } - return d / m; -} - -float starfield(vec3 p) { - float density = 20.0; - vec3 ip = floor(p * density); - vec3 fp = fract(p * density); - float d = length(fp - vec3(0.5)); - float star = step(0.02, 0.02 - d) * hash(ip); - return clamp(star, 0.0, 1.0); -} - -void main() { - vec2 uv = vUv * 2.0 - 1.0; - uv.x *= 1.0; - - vec3 dir = normalize(vec3(uv, 1.0)); - float time = uTime * 0.3; // SAKTA rörelse - - vec3 from = vec3(0.0, 0.0, -2.0 + time * 0.2); - - float s = 0.1; - float fade = 1.0; - vec3 color = vec3(0.0); - - for (int i = 0; i < 20; i++) { - vec3 p = from + s * dir; - vec3 p2 = p * 2.5; - float a = waveletNoise(p2, 0.0, 1.9) * 2.0 - 1.0; - a *= a * a; - color += vec3(s, s * s, s * s * s * s) * a * -6.0 * fade; - fade *= 0.93; - s += 0.04; - } - - float stars = starfield(from + dir * 2.0); - color += vec3(stars); - - color = mix(vec3(length(color)), color, 0.9); - color = clamp(color * 0.01, 0.0, 1.0); - - gl_FragColor = vec4(color, 1.0); -} diff --git a/frontend/src/shaders/BackgroundShader.vert b/frontend/src/shaders/BackgroundShader.vert deleted file mode 100644 index 6abb4abf04..0000000000 --- a/frontend/src/shaders/BackgroundShader.vert +++ /dev/null @@ -1,6 +0,0 @@ -varying vec2 vUv; - -void main() { - vUv = uv; - gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); -} From 355602c598cdcab1f0422a297e4e68ccc86ac9e7 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Wed, 6 Aug 2025 14:45:34 +0200 Subject: [PATCH 003/127] Create TODO.md --- backend/TODO.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 backend/TODO.md diff --git a/backend/TODO.md b/backend/TODO.md new file mode 100644 index 0000000000..b9bcd7daa8 --- /dev/null +++ b/backend/TODO.md @@ -0,0 +1,3 @@ +[] Databas som lagrar API-svaret +[] Mongose schema API-svaret +[] From ed00c774b8536a635d51b5ca833240689a59e5fe Mon Sep 17 00:00:00 2001 From: Idahel Date: Wed, 6 Aug 2025 15:19:38 +0200 Subject: [PATCH 004/127] basic backend set up --- backend/package.json | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/backend/package.json b/backend/package.json index 08f29f2448..ffc9464752 100644 --- a/backend/package.json +++ b/backend/package.json @@ -12,9 +12,15 @@ "@babel/core": "^7.17.9", "@babel/node": "^7.16.8", "@babel/preset-env": "^7.16.11", + "cookie-parser": "^1.4.7", "cors": "^2.8.5", - "express": "^4.17.3", - "mongoose": "^8.4.0", - "nodemon": "^3.0.1" - } -} \ No newline at end of file + "dotenv": "^17.2.1", + "express": "^4.21.2", + "mongoose": "^8.17.0", + "nodemon": "^3.0.1", + "spotify-web-api-node": "^5.0.2" + }, + "main": "server.js", + "keywords": [], + "type": "commonjs" +} From 4a477367bbc87f90a918bc9d220bf4f8cdbee517 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Wed, 6 Aug 2025 15:21:49 +0200 Subject: [PATCH 005/127] Design setup --- frontend/components.json | 21 ++++ frontend/declaration.d.ts | 1 + frontend/index.html | 4 +- frontend/package.json | 23 +++- frontend/src/{App.jsx => App.tsx} | 0 frontend/src/index.css | 120 ++++++++++++++++++++ frontend/src/lib/utils.ts | 6 + frontend/src/{main.jsx => main.tsx} | 4 +- frontend/tsconfig.json | 16 +++ frontend/{vite.config.js => vite.config.ts} | 0 10 files changed, 185 insertions(+), 10 deletions(-) create mode 100644 frontend/components.json create mode 100644 frontend/declaration.d.ts rename frontend/src/{App.jsx => App.tsx} (100%) create mode 100644 frontend/src/lib/utils.ts rename frontend/src/{main.jsx => main.tsx} (61%) create mode 100644 frontend/tsconfig.json rename frontend/{vite.config.js => vite.config.ts} (100%) diff --git a/frontend/components.json b/frontend/components.json new file mode 100644 index 0000000000..73afbdbccb --- /dev/null +++ b/frontend/components.json @@ -0,0 +1,21 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/index.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/frontend/declaration.d.ts b/frontend/declaration.d.ts new file mode 100644 index 0000000000..cbe652dbe0 --- /dev/null +++ b/frontend/declaration.d.ts @@ -0,0 +1 @@ +declare module "*.css"; diff --git a/frontend/index.html b/frontend/index.html index 664410b5b9..3390e1a977 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -4,10 +4,10 @@ - Technigo React Vite Boiler Plate + Starting Pont
- + diff --git a/frontend/package.json b/frontend/package.json index 448faa8a7b..5a8d1f6c70 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -9,17 +9,28 @@ "lint": "eslint . --ext js,jsx --report-unused-disable-directives --max-warnings 0", "preview": "vite preview" }, - "dependencies": { - "react": "^18.2.0" - }, "devDependencies": { - "@types/react": "^18.2.15", - "@types/react-dom": "^18.2.7", - "@vitejs/plugin-react": "^4.0.3", + "@types/react": "^18.3.23", + "@types/react-dom": "^18.3.7", + "@vitejs/plugin-react": "^4.7.0", + "autoprefixer": "^10.4.21", "eslint": "^8.45.0", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.3", + "postcss": "^8.5.6", + "tailwindcss": "^4.1.11", + "tw-animate-css": "^1.3.6", + "typescript": "^5.9.2", "vite": "^6.3.5" + }, + "dependencies": { + "@tailwindcss/vite": "^4.1.11", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "lucide-react": "^0.536.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "tailwind-merge": "^3.3.1" } } diff --git a/frontend/src/App.jsx b/frontend/src/App.tsx similarity index 100% rename from frontend/src/App.jsx rename to frontend/src/App.tsx diff --git a/frontend/src/index.css b/frontend/src/index.css index e69de29bb2..f4c1e9b51d 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -0,0 +1,120 @@ +@import "tailwindcss"; +@import "tw-animate-css"; + +@custom-variant dark (&:is(.dark *)); + +@theme inline { + --radius-sm: calc(var(--radius) - 4px); + --radius-md: calc(var(--radius) - 2px); + --radius-lg: var(--radius); + --radius-xl: calc(var(--radius) + 4px); + --color-background: var(--background); + --color-foreground: var(--foreground); + --color-card: var(--card); + --color-card-foreground: var(--card-foreground); + --color-popover: var(--popover); + --color-popover-foreground: var(--popover-foreground); + --color-primary: var(--primary); + --color-primary-foreground: var(--primary-foreground); + --color-secondary: var(--secondary); + --color-secondary-foreground: var(--secondary-foreground); + --color-muted: var(--muted); + --color-muted-foreground: var(--muted-foreground); + --color-accent: var(--accent); + --color-accent-foreground: var(--accent-foreground); + --color-destructive: var(--destructive); + --color-border: var(--border); + --color-input: var(--input); + --color-ring: var(--ring); + --color-chart-1: var(--chart-1); + --color-chart-2: var(--chart-2); + --color-chart-3: var(--chart-3); + --color-chart-4: var(--chart-4); + --color-chart-5: var(--chart-5); + --color-sidebar: var(--sidebar); + --color-sidebar-foreground: var(--sidebar-foreground); + --color-sidebar-primary: var(--sidebar-primary); + --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); + --color-sidebar-accent: var(--sidebar-accent); + --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); + --color-sidebar-border: var(--sidebar-border); + --color-sidebar-ring: var(--sidebar-ring); +} + +: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; + } +} diff --git a/frontend/src/lib/utils.ts b/frontend/src/lib/utils.ts new file mode 100644 index 0000000000..bd0c391ddd --- /dev/null +++ b/frontend/src/lib/utils.ts @@ -0,0 +1,6 @@ +import { clsx, type ClassValue } from "clsx" +import { twMerge } from "tailwind-merge" + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)) +} diff --git a/frontend/src/main.jsx b/frontend/src/main.tsx similarity index 61% rename from frontend/src/main.jsx rename to frontend/src/main.tsx index 51294f3998..fd7970f796 100644 --- a/frontend/src/main.jsx +++ b/frontend/src/main.tsx @@ -1,9 +1,9 @@ import React from "react"; import ReactDOM from "react-dom/client"; -import { App } from "./App.jsx"; +import { App } from "./App"; import "./index.css"; -ReactDOM.createRoot(document.getElementById("root")).render( +ReactDOM.createRoot(document.getElementById("root")!).render( diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json new file mode 100644 index 0000000000..ba996d8099 --- /dev/null +++ b/frontend/tsconfig.json @@ -0,0 +1,16 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "jsx": "react-jsx", + "moduleResolution": "node", + "strict": true, + "esModuleInterop": true, + "skipLibCheck": true, + "baseUrl": ".", + "paths": { + "@/*": ["src/*"] + } + }, + "include": ["src"] +} diff --git a/frontend/vite.config.js b/frontend/vite.config.ts similarity index 100% rename from frontend/vite.config.js rename to frontend/vite.config.ts From 8b1d27169d38f312625c77246b7cf41c96cf3537 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Wed, 6 Aug 2025 16:03:25 +0200 Subject: [PATCH 006/127] tailwind fix --- frontend/components.json | 21 ------- frontend/package.json | 8 +-- frontend/postcss.config.ts | 6 ++ frontend/src/App.tsx | 11 +++- frontend/src/index.css | 122 +----------------------------------- frontend/src/lib/utils.ts | 6 -- frontend/src/ui/Button.tsx | 42 +++++++++++++ frontend/tailwind.config.ts | 11 ++++ 8 files changed, 71 insertions(+), 156 deletions(-) delete mode 100644 frontend/components.json create mode 100644 frontend/postcss.config.ts delete mode 100644 frontend/src/lib/utils.ts create mode 100644 frontend/src/ui/Button.tsx create mode 100644 frontend/tailwind.config.ts diff --git a/frontend/components.json b/frontend/components.json deleted file mode 100644 index 73afbdbccb..0000000000 --- a/frontend/components.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "$schema": "https://ui.shadcn.com/schema.json", - "style": "new-york", - "rsc": false, - "tsx": true, - "tailwind": { - "config": "", - "css": "src/index.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/frontend/package.json b/frontend/package.json index 5a8d1f6c70..1c735de072 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -20,17 +20,11 @@ "eslint-plugin-react-refresh": "^0.4.3", "postcss": "^8.5.6", "tailwindcss": "^4.1.11", - "tw-animate-css": "^1.3.6", "typescript": "^5.9.2", "vite": "^6.3.5" }, "dependencies": { - "@tailwindcss/vite": "^4.1.11", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "lucide-react": "^0.536.0", "react": "^18.2.0", - "react-dom": "^18.2.0", - "tailwind-merge": "^3.3.1" + "react-dom": "^18.2.0" } } diff --git a/frontend/postcss.config.ts b/frontend/postcss.config.ts new file mode 100644 index 0000000000..2aa7205d4b --- /dev/null +++ b/frontend/postcss.config.ts @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 040be88c3e..57afb71204 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,7 +1,12 @@ +import { Button } from "./ui/Button"; + export const App = () => { return ( - <> -

Hej Ida

- +
+ + + + +
); }; diff --git a/frontend/src/index.css b/frontend/src/index.css index f4c1e9b51d..0f92a8af1a 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -1,120 +1,4 @@ -@import "tailwindcss"; +@tailwind base; +@tailwind components; +@tailwind utilities; @import "tw-animate-css"; - -@custom-variant dark (&:is(.dark *)); - -@theme inline { - --radius-sm: calc(var(--radius) - 4px); - --radius-md: calc(var(--radius) - 2px); - --radius-lg: var(--radius); - --radius-xl: calc(var(--radius) + 4px); - --color-background: var(--background); - --color-foreground: var(--foreground); - --color-card: var(--card); - --color-card-foreground: var(--card-foreground); - --color-popover: var(--popover); - --color-popover-foreground: var(--popover-foreground); - --color-primary: var(--primary); - --color-primary-foreground: var(--primary-foreground); - --color-secondary: var(--secondary); - --color-secondary-foreground: var(--secondary-foreground); - --color-muted: var(--muted); - --color-muted-foreground: var(--muted-foreground); - --color-accent: var(--accent); - --color-accent-foreground: var(--accent-foreground); - --color-destructive: var(--destructive); - --color-border: var(--border); - --color-input: var(--input); - --color-ring: var(--ring); - --color-chart-1: var(--chart-1); - --color-chart-2: var(--chart-2); - --color-chart-3: var(--chart-3); - --color-chart-4: var(--chart-4); - --color-chart-5: var(--chart-5); - --color-sidebar: var(--sidebar); - --color-sidebar-foreground: var(--sidebar-foreground); - --color-sidebar-primary: var(--sidebar-primary); - --color-sidebar-primary-foreground: var(--sidebar-primary-foreground); - --color-sidebar-accent: var(--sidebar-accent); - --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); - --color-sidebar-border: var(--sidebar-border); - --color-sidebar-ring: var(--sidebar-ring); -} - -: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; - } -} diff --git a/frontend/src/lib/utils.ts b/frontend/src/lib/utils.ts deleted file mode 100644 index bd0c391ddd..0000000000 --- a/frontend/src/lib/utils.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { clsx, type ClassValue } from "clsx" -import { twMerge } from "tailwind-merge" - -export function cn(...inputs: ClassValue[]) { - return twMerge(clsx(inputs)) -} diff --git a/frontend/src/ui/Button.tsx b/frontend/src/ui/Button.tsx new file mode 100644 index 0000000000..391e229836 --- /dev/null +++ b/frontend/src/ui/Button.tsx @@ -0,0 +1,42 @@ +import React from "react"; + +type ButtonProps = { + children: React.ReactNode; + onClick?: () => void; + type?: "button" | "submit" | "reset"; + variant?: "default" | "outline" | "danger"; + disabled?: boolean; + className?: string; +}; + +export function Button({ + children, + onClick, + type = "button", + variant = "default", + disabled = false, + className = "", +}: ButtonProps) { + const baseStyles = + "inline-flex items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2"; + const variants = { + default: + "bg-indigo-600 text-white hover:bg-indigo-700 focus:ring-indigo-500", + outline: + "border border-gray-300 text-gray-800 hover:bg-gray-100 focus:ring-gray-400", + danger: "bg-red-600 text-white hover:bg-red-700 focus:ring-red-500", + }; + + return ( + + ); +} diff --git a/frontend/tailwind.config.ts b/frontend/tailwind.config.ts new file mode 100644 index 0000000000..0647b059c7 --- /dev/null +++ b/frontend/tailwind.config.ts @@ -0,0 +1,11 @@ +import type { Config } from "tailwindcss"; + +const config: Config = { + content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"], + theme: { + extend: {}, + }, + plugins: [], +}; + +export default config; From cb09c447ec80a4f21b311ac6feba464319989748 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Wed, 6 Aug 2025 16:07:50 +0200 Subject: [PATCH 007/127] tailwind config --- frontend/package.json | 1 + frontend/postcss.config.ts | 8 ++++---- frontend/src/index.css | 1 - 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/package.json b/frontend/package.json index 1c735de072..aae142634d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,6 +10,7 @@ "preview": "vite preview" }, "devDependencies": { + "@tailwindcss/postcss": "^4.1.11", "@types/react": "^18.3.23", "@types/react-dom": "^18.3.7", "@vitejs/plugin-react": "^4.7.0", diff --git a/frontend/postcss.config.ts b/frontend/postcss.config.ts index 2aa7205d4b..f75a1b5237 100644 --- a/frontend/postcss.config.ts +++ b/frontend/postcss.config.ts @@ -1,6 +1,6 @@ +import tailwindcss from "@tailwindcss/postcss"; +import autoprefixer from "autoprefixer"; + export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, + plugins: [tailwindcss, autoprefixer], }; diff --git a/frontend/src/index.css b/frontend/src/index.css index 0f92a8af1a..b5c61c9567 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -1,4 +1,3 @@ @tailwind base; @tailwind components; @tailwind utilities; -@import "tw-animate-css"; From 555b654b30509a37114cc192d4467fa8f0d48eb8 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Wed, 6 Aug 2025 16:22:19 +0200 Subject: [PATCH 008/127] tailwind config --- frontend/package.json | 4 +--- frontend/postcss.config.ts | 6 ------ frontend/src/App.tsx | 1 + frontend/vite.config.ts | 9 +++++---- 4 files changed, 7 insertions(+), 13 deletions(-) delete mode 100644 frontend/postcss.config.ts diff --git a/frontend/package.json b/frontend/package.json index aae142634d..276a7292ac 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,16 +10,14 @@ "preview": "vite preview" }, "devDependencies": { - "@tailwindcss/postcss": "^4.1.11", + "@tailwindcss/vite": "^4.1.11", "@types/react": "^18.3.23", "@types/react-dom": "^18.3.7", "@vitejs/plugin-react": "^4.7.0", - "autoprefixer": "^10.4.21", "eslint": "^8.45.0", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.3", - "postcss": "^8.5.6", "tailwindcss": "^4.1.11", "typescript": "^5.9.2", "vite": "^6.3.5" diff --git a/frontend/postcss.config.ts b/frontend/postcss.config.ts deleted file mode 100644 index f75a1b5237..0000000000 --- a/frontend/postcss.config.ts +++ /dev/null @@ -1,6 +0,0 @@ -import tailwindcss from "@tailwindcss/postcss"; -import autoprefixer from "autoprefixer"; - -export default { - plugins: [tailwindcss, autoprefixer], -}; diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 57afb71204..3ba7bd4797 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -7,6 +7,7 @@ export const App = () => { +
Funkar färger?
); }; diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 5a33944a9b..356897e39c 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -1,7 +1,8 @@ -import { defineConfig } from 'vite' -import react from '@vitejs/plugin-react' +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react"; +import tailwindcss from "@tailwindcss/vite"; // https://vitejs.dev/config/ export default defineConfig({ - plugins: [react()], -}) + plugins: [react(), tailwindcss()], +}); From 370424692fb54daec8aca71fab2bb82ab65d0a05 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Wed, 6 Aug 2025 16:29:40 +0200 Subject: [PATCH 009/127] config taiwlind --- frontend/tsconfig.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index ba996d8099..5485dce0c0 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -3,7 +3,7 @@ "target": "ESNext", "module": "ESNext", "jsx": "react-jsx", - "moduleResolution": "node", + "moduleResolution": "bundler", "strict": true, "esModuleInterop": true, "skipLibCheck": true, @@ -12,5 +12,5 @@ "@/*": ["src/*"] } }, - "include": ["src"] + "include": ["src", "vite.config.ts", "tailwind.config.ts", "declaration.d.ts"] } From 50764cbc3abf09bfcef4e4351b2cc770f1bf4dbe Mon Sep 17 00:00:00 2001 From: tildetilde Date: Wed, 6 Aug 2025 16:44:35 +0200 Subject: [PATCH 010/127] design test --- frontend/src/App.tsx | 96 +++++++++++++++++++++++++++++++++++--- frontend/src/app/page.tsx | 5 ++ frontend/src/index.css | 4 +- frontend/src/ui/Button.tsx | 49 +++++++++---------- 4 files changed, 117 insertions(+), 37 deletions(-) create mode 100644 frontend/src/app/page.tsx diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 3ba7bd4797..54cdfb11f2 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -2,12 +2,96 @@ import { Button } from "./ui/Button"; export const App = () => { return ( -
- - - - -
Funkar färger?
+
+
+
+

+ Tailwind CSS v4 Test +

+

+ Testing if Tailwind CSS is working properly +

+
+ + {/* Color Test */} +
+

+ Color Tests +

+
+
+ Red 500 +
+
+ Blue 500 +
+
+ Green 500 +
+
+ Purple 500 +
+
+
+ + {/* Layout Test */} +
+

+ Layout Tests +

+
+
+

Flexbox Test

+

This should be responsive

+
+
+

Grid Test

+

Responsive layout

+
+
+
+ + {/* Button Tests */} +
+

+ Button Tests +

+
+ + + + +
+
+ + {/* Typography Test */} +
+

+ Typography Tests +

+
+

Extra small text (text-xs)

+

Small text (text-sm)

+

Base text (text-base)

+

Large text (text-lg)

+

+ Extra large text (text-xl) +

+
+
+ + {/* Spacing Test */} +
+

+ Spacing Tests +

+
+
Padding 2 (p-2)
+
Padding 4 (p-4)
+
Padding 6 (p-6)
+
+
+
); }; diff --git a/frontend/src/app/page.tsx b/frontend/src/app/page.tsx new file mode 100644 index 0000000000..3b5d06fb36 --- /dev/null +++ b/frontend/src/app/page.tsx @@ -0,0 +1,5 @@ +import { App } from "../App"; + +export default function Page() { + return ; +} diff --git a/frontend/src/index.css b/frontend/src/index.css index b5c61c9567..f1d8c73cdc 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -1,3 +1 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; +@import "tailwindcss"; diff --git a/frontend/src/ui/Button.tsx b/frontend/src/ui/Button.tsx index 391e229836..45aa99b44c 100644 --- a/frontend/src/ui/Button.tsx +++ b/frontend/src/ui/Button.tsx @@ -1,42 +1,35 @@ import React from "react"; -type ButtonProps = { - children: React.ReactNode; - onClick?: () => void; - type?: "button" | "submit" | "reset"; +interface ButtonProps extends React.ButtonHTMLAttributes { variant?: "default" | "outline" | "danger"; - disabled?: boolean; - className?: string; -}; + children: React.ReactNode; +} -export function Button({ - children, - onClick, - type = "button", +export const Button: React.FC = ({ variant = "default", - disabled = false, + children, className = "", -}: ButtonProps) { - const baseStyles = - "inline-flex items-center justify-center rounded-md px-4 py-2 text-sm font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2"; - const variants = { + disabled, + ...props +}) => { + const baseClasses = + "px-4 py-2 rounded-lg font-medium transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2"; + + const variantClasses = { default: - "bg-indigo-600 text-white hover:bg-indigo-700 focus:ring-indigo-500", + "bg-blue-600 text-white hover:bg-blue-700 focus:ring-blue-500 disabled:bg-gray-300 disabled:cursor-not-allowed", outline: - "border border-gray-300 text-gray-800 hover:bg-gray-100 focus:ring-gray-400", - danger: "bg-red-600 text-white hover:bg-red-700 focus:ring-red-500", + "border-2 border-blue-600 text-blue-600 hover:bg-blue-50 focus:ring-blue-500 disabled:border-gray-300 disabled:text-gray-300 disabled:cursor-not-allowed", + danger: + "bg-red-600 text-white hover:bg-red-700 focus:ring-red-500 disabled:bg-gray-300 disabled:cursor-not-allowed", }; + const classes = + `${baseClasses} ${variantClasses[variant]} ${className}`.trim(); + return ( - ); -} +}; From 04c84c5ba6783e7a65897376130843e05e684a98 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Wed, 6 Aug 2025 18:28:28 +0200 Subject: [PATCH 011/127] tailwind setup --- frontend/README.md | 10 +-- frontend/package.json | 5 +- frontend/src/App.tsx | 101 ++++--------------------------- frontend/src/lib/utils.ts | 6 ++ frontend/src/ui/Button.tsx | 62 +++++++++++-------- frontend/tailwind.config.ts | 117 ++++++++++++++++++++++++++++++++++-- 6 files changed, 176 insertions(+), 125 deletions(-) create mode 100644 frontend/src/lib/utils.ts diff --git a/frontend/README.md b/frontend/README.md index 5cdb1d9cf3..6239119e73 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -1,8 +1,8 @@ # Frontend part of Final Project -This boilerplate is designed to give you a head start in your React projects, with a focus on understanding the structure and components. As a student of Technigo, you'll find this guide helpful in navigating and utilizing the repository. +## Designsystem -## Getting Started - -1. Install the required dependencies using `npm install`. -2. Start the development server using `npm run dev`. \ No newline at end of file +- Font X +- Primary colors X +- Border radius X +- Spacing X diff --git a/frontend/package.json b/frontend/package.json index 276a7292ac..ab85ea10b0 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -23,7 +23,10 @@ "vite": "^6.3.5" }, "dependencies": { + "clsx": "^2.1.1", "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "tailwind-merge": "^3.3.1", + "tailwindcss-animate": "^1.0.7" } } diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 54cdfb11f2..4e7c15a35e 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -2,96 +2,19 @@ import { Button } from "./ui/Button"; export const App = () => { return ( -
-
-
-

- Tailwind CSS v4 Test -

-

- Testing if Tailwind CSS is working properly -

-
- - {/* Color Test */} -
-

- Color Tests -

-
-
- Red 500 -
-
- Blue 500 -
-
- Green 500 -
-
- Purple 500 -
-
-
- - {/* Layout Test */} -
-

- Layout Tests -

-
-
-

Flexbox Test

-

This should be responsive

-
-
-

Grid Test

-

Responsive layout

-
-
-
- - {/* Button Tests */} -
-

- Button Tests -

-
- - - - -
-
- - {/* Typography Test */} -
-

- Typography Tests -

-
-

Extra small text (text-xs)

-

Small text (text-sm)

-

Base text (text-base)

-

Large text (text-lg)

-

- Extra large text (text-xl) -

-
-
- - {/* Spacing Test */} -
-

- Spacing Tests -

-
-
Padding 2 (p-2)
-
Padding 4 (p-4)
-
Padding 6 (p-6)
-
-
+
+

Design System Button

+
+ +
+
); }; diff --git a/frontend/src/lib/utils.ts b/frontend/src/lib/utils.ts new file mode 100644 index 0000000000..365058cebd --- /dev/null +++ b/frontend/src/lib/utils.ts @@ -0,0 +1,6 @@ +import { type ClassValue, clsx } from "clsx"; +import { twMerge } from "tailwind-merge"; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} diff --git a/frontend/src/ui/Button.tsx b/frontend/src/ui/Button.tsx index 45aa99b44c..45ef160d16 100644 --- a/frontend/src/ui/Button.tsx +++ b/frontend/src/ui/Button.tsx @@ -1,35 +1,45 @@ import React from "react"; +import { cn } from "../lib/utils"; interface ButtonProps extends React.ButtonHTMLAttributes { - variant?: "default" | "outline" | "danger"; + variant?: "primary" | "secondary" | "outline" | "ghost"; + size?: "sm" | "md" | "lg"; children: React.ReactNode; } -export const Button: React.FC = ({ - variant = "default", - children, - className = "", - disabled, - ...props -}) => { - const baseClasses = - "px-4 py-2 rounded-lg font-medium transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2"; +export const Button = React.forwardRef( + ( + { className, variant = "primary", size = "md", children, ...props }, + ref + ) => { + const baseStyles = + "inline-flex items-center justify-center rounded-xl font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-focus disabled:pointer-events-none disabled:opacity-50"; - const variantClasses = { - default: - "bg-blue-600 text-white hover:bg-blue-700 focus:ring-blue-500 disabled:bg-gray-300 disabled:cursor-not-allowed", - outline: - "border-2 border-blue-600 text-blue-600 hover:bg-blue-50 focus:ring-blue-500 disabled:border-gray-300 disabled:text-gray-300 disabled:cursor-not-allowed", - danger: - "bg-red-600 text-white hover:bg-red-700 focus:ring-red-500 disabled:bg-gray-300 disabled:cursor-not-allowed", - }; + const variants = { + primary: "bg-primary text-background hover:bg-primary-hover shadow-soft", + secondary: + "bg-surface text-foreground hover:bg-card border border-border shadow-soft", + outline: + "border border-primary text-primary hover:bg-primary hover:text-background", + ghost: "text-foreground hover:bg-muted hover:text-foreground", + }; - const classes = - `${baseClasses} ${variantClasses[variant]} ${className}`.trim(); + const sizes = { + sm: "h-9 px-3 text-sm", + md: "h-11 px-6 text-base", + lg: "h-13 px-8 text-lg", + }; - return ( - - ); -}; + return ( + + ); + } +); + +Button.displayName = "Button"; diff --git a/frontend/tailwind.config.ts b/frontend/tailwind.config.ts index 0647b059c7..72fd44dfd5 100644 --- a/frontend/tailwind.config.ts +++ b/frontend/tailwind.config.ts @@ -1,11 +1,120 @@ import type { Config } from "tailwindcss"; +import animate from "tailwindcss-animate"; + +// all in fixtures is set to tailwind v3 as interims solutions const config: Config = { - content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"], + darkMode: "class", + + content: [ + "./pages/**/*.{js,ts,jsx,tsx,mdx}", + "./components/**/*.{js,ts,jsx,tsx,mdx}", + "./app/**/*.{js,ts,jsx,tsx,mdx}", + "./src/**/*.{js,ts,jsx,tsx,mdx}", + "*.{js,ts,jsx,tsx,mdx}", + ], theme: { - extend: {}, + extend: { + fontFamily: { + sans: ['"Zen Kaku Gothic New"', "sans-serif"], + }, + colors: { + // Base scale (built around #f9ecdf - light theme background) + base: { + 100: "#fefcfa", + 200: "#fdf8f3", + 300: "#fbf4ec", + 400: "#f9ecdf", // Primary light color + 500: "#f5e4d2", + 600: "#f0dbc5", + 700: "#ebd2b8", + 800: "#e6c9ab", + 900: "#e1c09e", + }, + // Accent scale (built around #5d3136 - primary interactive color) + accent: { + 100: "#f4f1f1", + 200: "#e8e0e1", + 300: "#dccfd1", + 400: "#d0bec1", + 500: "#c4adb1", + 600: "#b89ca1", + 700: "#ac8b91", + 800: "#a07a81", + 900: "#946971", + 950: "#5d3136", // Primary dark color + }, + // Semantic color roles + primary: "#5d3136", + "primary-hover": "#4a272b", + "primary-focus": "#6b3a40", + background: "#f9ecdf", + surface: "#fefcfa", + card: "#fdf8f3", + muted: "#f0dbc5", + "muted-foreground": "#946971", + foreground: "#5d3136", + border: "#ebd2b8", + "border-muted": "#f5e4d2", + }, + borderRadius: { + lg: "var(--radius)", + md: "calc(var(--radius) - 2px)", + sm: "calc(var(--radius) - 4px)", + xl: "0.75rem", + "2xl": "1rem", + "3xl": "1.5rem", + }, + keyframes: { + "accordion-down": { + from: { + height: "0", + }, + to: { + height: "var(--radix-accordion-content-height)", + }, + }, + "accordion-up": { + from: { + height: "var(--radix-accordion-content-height)", + }, + to: { + height: "0", + }, + }, + }, + animation: { + "accordion-down": "accordion-down 0.2s ease-out", + "accordion-up": "accordion-up 0.2s ease-out", + }, + spacing: { + "18": "4.5rem", + "22": "5.5rem", + "26": "6.5rem", + "30": "7.5rem", + }, + fontSize: { + xs: ["0.75rem", { lineHeight: "1rem" }], + sm: ["0.875rem", { lineHeight: "1.25rem" }], + base: ["1rem", { lineHeight: "1.5rem" }], + lg: ["1.125rem", { lineHeight: "1.75rem" }], + xl: ["1.25rem", { lineHeight: "1.75rem" }], + "2xl": ["1.5rem", { lineHeight: "2rem" }], + "3xl": ["1.875rem", { lineHeight: "2.25rem" }], + "4xl": ["2.25rem", { lineHeight: "2.5rem" }], + "5xl": ["3rem", { lineHeight: "1" }], + "6xl": ["3.75rem", { lineHeight: "1" }], + "7xl": ["4.5rem", { lineHeight: "1" }], + "8xl": ["6rem", { lineHeight: "1" }], + "9xl": ["8rem", { lineHeight: "1" }], + }, + boxShadow: { + soft: "0 2px 8px 0 rgba(93, 49, 54, 0.08)", + medium: "0 4px 16px 0 rgba(93, 49, 54, 0.12)", + strong: "0 8px 32px 0 rgba(93, 49, 54, 0.16)", + }, + }, }, - plugins: [], + plugins: [animate], }; - export default config; From a3f77846df20e7b9baf3f7437a08f24bd0a70478 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Wed, 6 Aug 2025 18:41:22 +0200 Subject: [PATCH 012/127] added ui components --- frontend/src/App.tsx | 130 +++++++++++++++++++++++++++++---- frontend/src/app/page.tsx | 125 ++++++++++++++++++++++++++++++- frontend/src/ui/Card.tsx | 64 ++++++++++++++++ frontend/src/ui/DotPattern.tsx | 92 +++++++++++++++++++++++ frontend/src/ui/Heading.tsx | 34 +++++++++ 5 files changed, 429 insertions(+), 16 deletions(-) create mode 100644 frontend/src/ui/Card.tsx create mode 100644 frontend/src/ui/DotPattern.tsx create mode 100644 frontend/src/ui/Heading.tsx diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 4e7c15a35e..aca750893e 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,20 +1,124 @@ import { Button } from "./ui/Button"; +import { Card, CardHeader, CardContent } from "./ui/Card"; +import { Heading } from "./ui/Heading"; +import { DotPattern } from "./ui/DotPattern"; export const App = () => { return ( -
-

Design System Button

-
- - +
+
+ {/* Hero Section */} +
+ + DESIGN SYSTEM + +

+ A comprehensive design system built with your brand colors and Zen + Kaku Gothic New typography. +

+
+ + +
+
+ + {/* Component Examples */} +
+ Component Examples + +
+ + + + + + UPDATES + + + + + + + + + + + NO CODE + + + + + + + + + + + STUDENTS WORKS + + + + + + + + + + + NEW MEMBERS + + + + +
+
+ + {/* Button Variants */} +
+ Button Variants +
+ + + + +
+
+ + {/* Typography Scale */} +
+ Typography Scale +
+ Heading 1 - Display + Heading 2 - Page Title + Heading 3 - Section + Heading 4 - Subsection + Heading 5 - Component + Heading 6 - Label +

+ Body text - Regular paragraph content +

+

+ Small text - Secondary information +

+
+
- -
+
); }; diff --git a/frontend/src/app/page.tsx b/frontend/src/app/page.tsx index 3b5d06fb36..88a25aaee3 100644 --- a/frontend/src/app/page.tsx +++ b/frontend/src/app/page.tsx @@ -1,5 +1,124 @@ -import { App } from "../App"; +import { Button } from "@/components/ui/button"; +import { Card, CardHeader, CardContent } from "@/components/ui/card"; +import { Heading } from "@/components/ui/heading"; +import { DotPattern } from "@/components/ui/dot-pattern"; -export default function Page() { - return ; +export default function HomePage() { + return ( +
+
+ {/* Hero Section */} +
+ + DESIGN SYSTEM + +

+ A comprehensive design system built with your brand colors and Zen + Kaku Gothic New typography. +

+
+ + +
+
+ + {/* Component Examples */} +
+ Component Examples + +
+ + + + + + UPDATES + + + + + + + + + + + NO CODE + + + + + + + + + + + STUDENTS WORKS + + + + + + + + + + + NEW MEMBERS + + + + +
+
+ + {/* Button Variants */} +
+ Button Variants +
+ + + + +
+
+ + {/* Typography Scale */} +
+ Typography Scale +
+ Heading 1 - Display + Heading 2 - Page Title + Heading 3 - Section + Heading 4 - Subsection + Heading 5 - Component + Heading 6 - Label +

+ Body text - Regular paragraph content +

+

+ Small text - Secondary information +

+
+
+
+
+ ); } diff --git a/frontend/src/ui/Card.tsx b/frontend/src/ui/Card.tsx new file mode 100644 index 0000000000..69563599e4 --- /dev/null +++ b/frontend/src/ui/Card.tsx @@ -0,0 +1,64 @@ +import React from "react"; +import { cn } from "../lib/utils"; + +interface CardProps extends React.HTMLAttributes { + children: React.ReactNode; + hoverable?: boolean; +} + +export const Card = React.forwardRef( + ({ className, children, hoverable = false, ...props }, ref) => { + return ( +
+ {children} +
+ ); + } +); + +Card.displayName = "Card"; + +interface CardHeaderProps extends React.HTMLAttributes { + children: React.ReactNode; +} + +export const CardHeader = React.forwardRef( + ({ className, children, ...props }, ref) => { + return ( +
+ {children} +
+ ); + } +); + +CardHeader.displayName = "CardHeader"; + +interface CardContentProps extends React.HTMLAttributes { + children: React.ReactNode; +} + +export const CardContent = React.forwardRef( + ({ className, children, ...props }, ref) => { + return ( +
+ {children} +
+ ); + } +); + +CardContent.displayName = "CardContent"; diff --git a/frontend/src/ui/DotPattern.tsx b/frontend/src/ui/DotPattern.tsx new file mode 100644 index 0000000000..8df084583d --- /dev/null +++ b/frontend/src/ui/DotPattern.tsx @@ -0,0 +1,92 @@ +import React from "react"; +import { cn } from "../lib/utils"; + +interface DotPatternProps extends React.HTMLAttributes { + variant?: "square" | "diamond" | "cluster" | "diagonal"; + size?: "sm" | "md" | "lg"; +} + +export const DotPattern = React.forwardRef( + ({ className, variant = "square", size = "md", ...props }, ref) => { + const dotSizes = { + sm: "w-1.5 h-1.5", + md: "w-2.5 h-2.5", + lg: "w-3 h-3", + }; + + const patterns = { + square: ( +
+
+
+
+
+
+ ), + diamond: ( +
+
+
+
+
+
+
+
+ ), + cluster: ( +
+
+
+
+
+
+
+
+
+
+
+
+ ), + diagonal: ( +
+
+
+
+
+
+ ), + }; + + return ( +
+ {patterns[variant]} +
+ ); + } +); + +DotPattern.displayName = "DotPattern"; diff --git a/frontend/src/ui/Heading.tsx b/frontend/src/ui/Heading.tsx new file mode 100644 index 0000000000..32c2b47984 --- /dev/null +++ b/frontend/src/ui/Heading.tsx @@ -0,0 +1,34 @@ +import React from "react"; +import { cn } from "../lib/utils"; + +interface HeadingProps extends React.HTMLAttributes { + level?: 1 | 2 | 3 | 4 | 5 | 6; + children: React.ReactNode; +} + +export const Heading = React.forwardRef( + ({ className, level = 1, children, ...props }, ref) => { + const Tag = `h${level}` as keyof JSX.IntrinsicElements; + + const styles = { + 1: "text-6xl font-bold text-primary tracking-tight", + 2: "text-4xl font-bold text-primary tracking-tight", + 3: "text-2xl font-semibold text-primary tracking-tight", + 4: "text-xl font-semibold text-foreground", + 5: "text-lg font-medium text-foreground", + 6: "text-base font-medium text-muted-foreground", + }; + + return React.createElement( + Tag, + { + ref, + className: cn(styles[level], className), + ...props, + }, + children + ); + } +); + +Heading.displayName = "Heading"; From 28820cec66f3445da9b656df8e58a10615aaa158 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Wed, 6 Aug 2025 20:51:02 +0200 Subject: [PATCH 013/127] tailwind config --- frontend/src/index.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/src/index.css b/frontend/src/index.css index f1d8c73cdc..7217928c72 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -1 +1,2 @@ -@import "tailwindcss"; +@import "tailwindcss/preflight"; +@import "tailwindcss/utilities"; From e92c5e772ebd22b99e5882981e05123ca949ad2c Mon Sep 17 00:00:00 2001 From: tildetilde Date: Wed, 6 Aug 2025 22:20:38 +0200 Subject: [PATCH 014/127] Design system --- frontend/src/App.tsx | 8 +-- frontend/src/app/page.tsx | 124 ------------------------------------ frontend/src/index.css | 56 +++++++++++++++- frontend/src/ui/Button.tsx | 2 +- frontend/tailwind.config.ts | 102 ++++++++++++----------------- 5 files changed, 98 insertions(+), 194 deletions(-) delete mode 100644 frontend/src/app/page.tsx diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index aca750893e..93b1021bf2 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -39,7 +39,7 @@ export const App = () => { level={5} className="text-primary font-medium tracking-wide" > - UPDATES + INFO BLOCK @@ -53,7 +53,7 @@ export const App = () => { level={5} className="text-primary font-medium tracking-wide" > - NO CODE + MORE INFO @@ -67,7 +67,7 @@ export const App = () => { level={5} className="text-primary font-medium tracking-wide" > - STUDENTS WORKS + EVEN MORE @@ -81,7 +81,7 @@ export const App = () => { level={5} className="text-primary font-medium tracking-wide" > - NEW MEMBERS + SO MUCH INFO diff --git a/frontend/src/app/page.tsx b/frontend/src/app/page.tsx deleted file mode 100644 index 88a25aaee3..0000000000 --- a/frontend/src/app/page.tsx +++ /dev/null @@ -1,124 +0,0 @@ -import { Button } from "@/components/ui/button"; -import { Card, CardHeader, CardContent } from "@/components/ui/card"; -import { Heading } from "@/components/ui/heading"; -import { DotPattern } from "@/components/ui/dot-pattern"; - -export default function HomePage() { - return ( -
-
- {/* Hero Section */} -
- - DESIGN SYSTEM - -

- A comprehensive design system built with your brand colors and Zen - Kaku Gothic New typography. -

-
- - -
-
- - {/* Component Examples */} -
- Component Examples - -
- - - - - - UPDATES - - - - - - - - - - - NO CODE - - - - - - - - - - - STUDENTS WORKS - - - - - - - - - - - NEW MEMBERS - - - - -
-
- - {/* Button Variants */} -
- Button Variants -
- - - - -
-
- - {/* Typography Scale */} -
- Typography Scale -
- Heading 1 - Display - Heading 2 - Page Title - Heading 3 - Section - Heading 4 - Subsection - Heading 5 - Component - Heading 6 - Label -

- Body text - Regular paragraph content -

-

- Small text - Secondary information -

-
-
-
-
- ); -} diff --git a/frontend/src/index.css b/frontend/src/index.css index 7217928c72..ae01f0f292 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -1,2 +1,54 @@ -@import "tailwindcss/preflight"; -@import "tailwindcss/utilities"; +@import "tailwindcss"; + +@theme { + --font-family-sans: "Zen Kaku Gothic New", sans-serif; + + /* Base scale colors */ + --color-base-100: #fefcfa; + --color-base-200: #fdf8f3; + --color-base-300: #fbf4ec; + --color-base-400: #f9ecdf; + --color-base-500: #f5e4d2; + --color-base-600: #f0dbc5; + --color-base-700: #ebd2b8; + --color-base-800: #e6c9ab; + --color-base-900: #e1c09e; + + /* Accent scale colors */ + --color-accent-100: #f4f1f1; + --color-accent-200: #e8e0e1; + --color-accent-300: #dccfd1; + --color-accent-400: #d0bec1; + --color-accent-500: #c4adb1; + --color-accent-600: #b89ca1; + --color-accent-700: #ac8b91; + --color-accent-800: #a07a81; + --color-accent-900: #946971; + --color-accent-950: #5d3136; + + /* Semantic colors */ + --color-primary: #5d3136; + --color-primary-hover: #4a272b; + --color-primary-focus: #6b3a40; + --color-background: #f9ecdf; + --color-surface: #fefcfa; + --color-card: #fdf8f3; + --color-muted: #f0dbc5; + --color-muted-foreground: #946971; + --color-foreground: #5d3136; + --color-border: #ebd2b8; + --color-border-muted: #f5e4d2; + + /* Shadows */ + --shadow-soft: 0 2px 8px 0 rgba(93, 49, 54, 0.08); + --shadow-medium: 0 4px 16px 0 rgba(93, 49, 54, 0.12); + --shadow-strong: 0 8px 32px 0 rgba(93, 49, 54, 0.16); + + /* Border radius */ + --radius-sm: 0.25rem; + --radius-md: 0.375rem; + --radius-lg: 0.5rem; + --radius-xl: 0.75rem; + --radius-2xl: 1rem; + --radius-3xl: 1.5rem; +} diff --git a/frontend/src/ui/Button.tsx b/frontend/src/ui/Button.tsx index 45ef160d16..28d4c1f377 100644 --- a/frontend/src/ui/Button.tsx +++ b/frontend/src/ui/Button.tsx @@ -27,7 +27,7 @@ export const Button = React.forwardRef( const sizes = { sm: "h-9 px-3 text-sm", md: "h-11 px-6 text-base", - lg: "h-13 px-8 text-lg", + lg: "h-12 px-8 text-lg", }; return ( diff --git a/frontend/tailwind.config.ts b/frontend/tailwind.config.ts index 72fd44dfd5..dd92055bd0 100644 --- a/frontend/tailwind.config.ts +++ b/frontend/tailwind.config.ts @@ -1,92 +1,67 @@ import type { Config } from "tailwindcss"; import animate from "tailwindcss-animate"; -// all in fixtures is set to tailwind v3 as interims solutions - const config: Config = { darkMode: "class", - - content: [ - "./pages/**/*.{js,ts,jsx,tsx,mdx}", - "./components/**/*.{js,ts,jsx,tsx,mdx}", - "./app/**/*.{js,ts,jsx,tsx,mdx}", - "./src/**/*.{js,ts,jsx,tsx,mdx}", - "*.{js,ts,jsx,tsx,mdx}", - ], + content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"], theme: { extend: { fontFamily: { sans: ['"Zen Kaku Gothic New"', "sans-serif"], }, colors: { - // Base scale (built around #f9ecdf - light theme background) + // Base scale (light UI layers) base: { - 100: "#fefcfa", - 200: "#fdf8f3", - 300: "#fbf4ec", - 400: "#f9ecdf", // Primary light color - 500: "#f5e4d2", - 600: "#f0dbc5", - 700: "#ebd2b8", - 800: "#e6c9ab", - 900: "#e1c09e", + "100": "#fefcfa", + "200": "#fdf8f3", + "300": "#fbf4ec", + "400": "#f9ecdf", // main base + "500": "#f5e4d2", + "600": "#f0dbc5", + "700": "#ebd2b8", + "800": "#e6c9ab", + "900": "#e1c09e", }, - // Accent scale (built around #5d3136 - primary interactive color) + // Accent scale (dark UI and interaction) accent: { - 100: "#f4f1f1", - 200: "#e8e0e1", - 300: "#dccfd1", - 400: "#d0bec1", - 500: "#c4adb1", - 600: "#b89ca1", - 700: "#ac8b91", - 800: "#a07a81", - 900: "#946971", - 950: "#5d3136", // Primary dark color + "100": "#f4f1f1", + "200": "#e8e0e1", + "300": "#dccfd1", + "400": "#d0bec1", + "500": "#c4adb1", + "600": "#b89ca1", + "700": "#ac8b91", + "800": "#a07a81", + "900": "#946971", + "950": "#5d3136", // main accent }, // Semantic color roles - primary: "#5d3136", - "primary-hover": "#4a272b", - "primary-focus": "#6b3a40", + primary: { + DEFAULT: "#5d3136", + hover: "#4a272b", + focus: "#6b3a40", + }, background: "#f9ecdf", surface: "#fefcfa", card: "#fdf8f3", - muted: "#f0dbc5", - "muted-foreground": "#946971", + muted: { + DEFAULT: "#f0dbc5", + foreground: "#946971", + }, foreground: "#5d3136", - border: "#ebd2b8", - "border-muted": "#f5e4d2", + border: { + DEFAULT: "#ebd2b8", + muted: "#f5e4d2", + }, }, borderRadius: { - lg: "var(--radius)", - md: "calc(var(--radius) - 2px)", - sm: "calc(var(--radius) - 4px)", + lg: "0.5rem", + md: "0.375rem", + sm: "0.25rem", xl: "0.75rem", "2xl": "1rem", "3xl": "1.5rem", }, - keyframes: { - "accordion-down": { - from: { - height: "0", - }, - to: { - height: "var(--radix-accordion-content-height)", - }, - }, - "accordion-up": { - from: { - height: "var(--radix-accordion-content-height)", - }, - to: { - height: "0", - }, - }, - }, - animation: { - "accordion-down": "accordion-down 0.2s ease-out", - "accordion-up": "accordion-up 0.2s ease-out", - }, spacing: { "18": "4.5rem", "22": "5.5rem", @@ -117,4 +92,5 @@ const config: Config = { }, plugins: [animate], }; + export default config; From 12c643d5a4c4aff30ed7272fcc54665df5e505c8 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Thu, 7 Aug 2025 13:52:54 +0200 Subject: [PATCH 015/127] Building pages --- frontend/package.json | 2 +- frontend/src/App.tsx | 12 ++++++++---- frontend/src/main.tsx | 1 + frontend/src/pages/GameMode.tsx | 17 +++++++++++++++++ frontend/src/pages/Home.tsx | 11 +++++++++++ frontend/src/ui/index.ts | 4 ++++ 6 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 frontend/src/pages/GameMode.tsx create mode 100644 frontend/src/pages/Home.tsx create mode 100644 frontend/src/ui/index.ts diff --git a/frontend/package.json b/frontend/package.json index ab85ea10b0..531b81846a 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -14,7 +14,7 @@ "@types/react": "^18.3.23", "@types/react-dom": "^18.3.7", "@vitejs/plugin-react": "^4.7.0", - "eslint": "^8.45.0", + "eslint": "^9.32.0", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.3", diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 93b1021bf2..8a2a62513d 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,7 +1,11 @@ -import { Button } from "./ui/Button"; -import { Card, CardHeader, CardContent } from "./ui/Card"; -import { Heading } from "./ui/Heading"; -import { DotPattern } from "./ui/DotPattern"; +import { + Button, + Card, + CardHeader, + CardContent, + Heading, + DotPattern, +} from './ui'; export const App = () => { return ( diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx index fd7970f796..6aec7f9dc4 100644 --- a/frontend/src/main.tsx +++ b/frontend/src/main.tsx @@ -1,6 +1,7 @@ import React from "react"; import ReactDOM from "react-dom/client"; import { App } from "./App"; +import { Home } from '../pages/Home'; import "./index.css"; ReactDOM.createRoot(document.getElementById("root")!).render( diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx new file mode 100644 index 0000000000..5e1a75eb5f --- /dev/null +++ b/frontend/src/pages/GameMode.tsx @@ -0,0 +1,17 @@ +import React from 'react'; +import { Heading, Card, CardHeader, CardContent } from '../ui'; + +export const GameMode: React.FC = () => ( +
+ Game Mode + + + Let's go! + + + {/* Game logic components*/} + <> + + +
+); \ No newline at end of file diff --git a/frontend/src/pages/Home.tsx b/frontend/src/pages/Home.tsx new file mode 100644 index 0000000000..cce2980bf3 --- /dev/null +++ b/frontend/src/pages/Home.tsx @@ -0,0 +1,11 @@ +import React from 'react'; +import { Heading, Button } from '../ui'; + +export const Home: React.FC = () => ( +
+ Welcome! + +
+); \ No newline at end of file diff --git a/frontend/src/ui/index.ts b/frontend/src/ui/index.ts new file mode 100644 index 0000000000..d39c1417d2 --- /dev/null +++ b/frontend/src/ui/index.ts @@ -0,0 +1,4 @@ +export { Button } from './Button'; +export { Card, CardHeader, CardContent } from './Card'; +export { Heading } from './Heading'; +export { DotPattern } from './DotPattern'; \ No newline at end of file From c395ff60cab4fe7e4bcf07140176c6aa10d632a3 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Thu, 7 Aug 2025 15:58:55 +0200 Subject: [PATCH 016/127] Added routes --- frontend/package.json | 4 +- frontend/src/App.tsx | 132 ++------------------- frontend/src/components/TimeLineCard.tsx | 22 ++++ frontend/src/index.css | 41 +++++-- frontend/src/main.tsx | 1 - frontend/src/pages/GameMode.tsx | 29 ++++- frontend/src/pages/Home.tsx | 143 +++++++++++++++++++++-- frontend/src/ui/Card.tsx | 12 +- frontend/tailwind.config.ts | 86 -------------- 9 files changed, 232 insertions(+), 238 deletions(-) create mode 100644 frontend/src/components/TimeLineCard.tsx diff --git a/frontend/package.json b/frontend/package.json index 531b81846a..37d963e8ff 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -14,7 +14,7 @@ "@types/react": "^18.3.23", "@types/react-dom": "^18.3.7", "@vitejs/plugin-react": "^4.7.0", - "eslint": "^9.32.0", + "eslint": "^8.57.1", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.3", @@ -23,9 +23,11 @@ "vite": "^6.3.5" }, "dependencies": { + "@types/react-router-dom": "^5.3.3", "clsx": "^2.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-router-dom": "^7.7.1", "tailwind-merge": "^3.3.1", "tailwindcss-animate": "^1.0.7" } diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 8a2a62513d..e442aa25ee 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,128 +1,14 @@ -import { - Button, - Card, - CardHeader, - CardContent, - Heading, - DotPattern, -} from './ui'; +import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; +import { Home } from './pages/Home'; +import { GameMode } from './pages/GameMode'; export const App = () => { return ( -
-
- {/* Hero Section */} -
- - DESIGN SYSTEM - -

- A comprehensive design system built with your brand colors and Zen - Kaku Gothic New typography. -

-
- - -
-
- - {/* Component Examples */} -
- Component Examples - -
- - - - - - INFO BLOCK - - - - - - - - - - - MORE INFO - - - - - - - - - - - EVEN MORE - - - - - - - - - - - SO MUCH INFO - - - - -
-
- - {/* Button Variants */} -
- Button Variants -
- - - - -
-
- - {/* Typography Scale */} -
- Typography Scale -
- Heading 1 - Display - Heading 2 - Page Title - Heading 3 - Section - Heading 4 - Subsection - Heading 5 - Component - Heading 6 - Label -

- Body text - Regular paragraph content -

-

- Small text - Secondary information -

-
-
-
-
+ + + } /> + } /> + + ); }; diff --git a/frontend/src/components/TimeLineCard.tsx b/frontend/src/components/TimeLineCard.tsx new file mode 100644 index 0000000000..fd077ed0e8 --- /dev/null +++ b/frontend/src/components/TimeLineCard.tsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { Card, CardHeader, CardContent } from '../ui'; + +interface TimeLineCardProps { + year: number; + artist: string; + title: string; +} + +export const TimeLineCard: React.FC = ({ year, artist, title }) => ( + + + {year} + {artist} + + + {title} + + +); \ No newline at end of file diff --git a/frontend/src/index.css b/frontend/src/index.css index ae01f0f292..ce9b0387b9 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -15,16 +15,16 @@ --color-base-900: #e1c09e; /* Accent scale colors */ - --color-accent-100: #f4f1f1; - --color-accent-200: #e8e0e1; - --color-accent-300: #dccfd1; - --color-accent-400: #d0bec1; - --color-accent-500: #c4adb1; - --color-accent-600: #b89ca1; - --color-accent-700: #ac8b91; - --color-accent-800: #a07a81; - --color-accent-900: #946971; - --color-accent-950: #5d3136; + --color-accent-100: #934D56; + --color-accent-200: #86464E; + --color-accent-300: #783F46; + --color-accent-400: #6B383E; + --color-accent-500: #5d3136; + --color-accent-600: #502A2F; + --color-accent-700: #432327; + --color-accent-800: #351C1F; + --color-accent-900: #281517; + --color-accent-950: #1B0E0F; /* Semantic colors */ --color-primary: #5d3136; @@ -51,4 +51,25 @@ --radius-xl: 0.75rem; --radius-2xl: 1rem; --radius-3xl: 1.5rem; + + /* Spacing*/ + --spacing-18: 4.5rem; + --spacing-22: 5.5rem; + --spacing-26: 6.5rem; + --spacing-30: 7.5rem; + + /* Font sizes */ + --font-size-xs: 0.75rem; --leading-xs: 1rem; + --font-size-sm: 0.875rem; --leading-sm: 1.25rem; + --font-size-base: 1rem; --leading-base: 1.5rem; + --font-size-lg: 1.125rem; --leading-lg: 1.75rem; + --font-size-xl: 1.25rem; --leading-xl: 1.75rem; + --font-size-2xl: 1.5rem; --leading-2xl: 2rem; + --font-size-3xl: 1.875rem; --leading-3xl: 2.25rem; + --font-size-4xl: 2.25rem; --leading-4xl: 2.5rem; + --font-size-5xl: 3rem; --leading-5xl: 1; + --font-size-6xl: 3.75rem; --leading-6xl: 1; + --font-size-7xl: 4.5rem; --leading-7xl: 1; + --font-size-8xl: 6rem; --leading-8xl: 1; + --font-size-9xl: 8rem; --leading-9xl: 1; } diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx index 6aec7f9dc4..fd7970f796 100644 --- a/frontend/src/main.tsx +++ b/frontend/src/main.tsx @@ -1,7 +1,6 @@ import React from "react"; import ReactDOM from "react-dom/client"; import { App } from "./App"; -import { Home } from '../pages/Home'; import "./index.css"; ReactDOM.createRoot(document.getElementById("root")!).render( diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index 5e1a75eb5f..83bb453882 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -1,17 +1,40 @@ import React from 'react'; import { Heading, Card, CardHeader, CardContent } from '../ui'; +import { TimeLineCard } from '../components/TimeLineCard'; + +const timelineData = [ + { id: 1, year: 1982, artist: 'Michael Jackson', title: 'Thriller' }, + { id: 2, year: 1991, artist: 'Nirvana', title: 'Smells Like Teen Spirit' }, + { id: 3, year: 2013, artist: 'Daft Punk', title: 'Get Lucky' }, +]; export const GameMode: React.FC = () => (
Game Mode + - Let's go! + Starting card - {/* Game logic components*/} - <> + {/* Game logic here */} + {/* Lägg till spelkomponenter eller instruktioner här */} +

Design kommer snart

+ +
+ Timeline +
+ {timelineData.map(item => ( + + ))} +
+
); \ No newline at end of file diff --git a/frontend/src/pages/Home.tsx b/frontend/src/pages/Home.tsx index cce2980bf3..1375707b76 100644 --- a/frontend/src/pages/Home.tsx +++ b/frontend/src/pages/Home.tsx @@ -1,11 +1,132 @@ -import React from 'react'; -import { Heading, Button } from '../ui'; - -export const Home: React.FC = () => ( -
- Welcome! - -
-); \ No newline at end of file +import { + Button, + Card, + CardHeader, + CardContent, + Heading, + DotPattern, +} from '../ui'; + +import { Link } from 'react-router-dom'; + +export const Home = () => { + return ( +
+
+ {/* Hero Section */} +
+ + DESIGN SYSTEM + +

+ A comprehensive design system built with our brand colors and Zen + Kaku Gothic New typography. +

+
+ + + + +
+
+ + {/* Component Examples */} +
+ Component Examples + +
+ + + + + + INFO BLOCK + + + + + + + + + + + MORE INFO + + + + + + + + + + + EVEN MORE + + + + + + + + + + + SO MUCH INFO + + + + +
+
+ + {/* Button Variants */} +
+ Button Variants +
+ + + + +
+
+ + {/* Typography Scale */} +
+ Typography Scale +
+ Heading 1 - Display + Heading 2 - Page Title + Heading 3 - Section + Heading 4 - Subsection + Heading 5 - Component + Heading 6 - Label +

+ Body text - Regular paragraph content +

+

+ Small text - Secondary information +

+
+
+
+
+ ); +}; diff --git a/frontend/src/ui/Card.tsx b/frontend/src/ui/Card.tsx index 69563599e4..b547b1eabe 100644 --- a/frontend/src/ui/Card.tsx +++ b/frontend/src/ui/Card.tsx @@ -4,17 +4,23 @@ import { cn } from "../lib/utils"; interface CardProps extends React.HTMLAttributes { children: React.ReactNode; hoverable?: boolean; + clickable?: boolean } export const Card = React.forwardRef( - ({ className, children, hoverable = false, ...props }, ref) => { + ({ className, children, hoverable = false, clickable = false, ...props }, ref) => { + const hoverClasses = hoverable + ? "hover:shadow-medium hover:border-primary/30 hover:bg-card hover:-translate-y-1" + : ""; + const clickClasses = clickable ? "cursor-pointer" : ""; + return (
Date: Thu, 7 Aug 2025 16:30:20 +0200 Subject: [PATCH 017/127] STyled playing cards --- frontend/src/components/StartCard.tsx | 68 ++++++++++++++++++++++++ frontend/src/components/TimeLineCard.tsx | 64 ++++++++++++++++++---- frontend/src/pages/GameMode.tsx | 24 +++++---- frontend/src/ui/Card.tsx | 11 +++- 4 files changed, 146 insertions(+), 21 deletions(-) create mode 100644 frontend/src/components/StartCard.tsx diff --git a/frontend/src/components/StartCard.tsx b/frontend/src/components/StartCard.tsx new file mode 100644 index 0000000000..ff4cb54582 --- /dev/null +++ b/frontend/src/components/StartCard.tsx @@ -0,0 +1,68 @@ +import React from 'react'; +import { Card, CardHeader, CardContent } from '../ui'; + +interface StartCardProps { + year: number; + artist: string; + title: string; + playerName?: string; +} + +export const StartCard: React.FC = ({ + year, + artist, + title, + playerName +}) => ( + + {/* Decorative corner elements */} +
+
+
+
+ +
+
+
+
+ + {/* Start indicator */} +
+ + Start + +
+ + {/* Year display - elegant style */} + +
+ {year} +
+
+ + + {/* Artist and title */} + +
+
+ {artist} +
+
+ {title} +
+
+
+ + {/* Subtle texture overlay */} +
+
+
+ +); diff --git a/frontend/src/components/TimeLineCard.tsx b/frontend/src/components/TimeLineCard.tsx index fd077ed0e8..84d4d16af9 100644 --- a/frontend/src/components/TimeLineCard.tsx +++ b/frontend/src/components/TimeLineCard.tsx @@ -5,18 +5,62 @@ interface TimeLineCardProps { year: number; artist: string; title: string; + isCorrect?: boolean; + isRevealed?: boolean; } -export const TimeLineCard: React.FC = ({ year, artist, title }) => ( +export const TimeLineCard: React.FC = ({ + year, + artist, + title, + isCorrect, + isRevealed = true +}) => ( - - {year} - {artist} + className={` + w-60 h-80 flex-shrink-0 flex flex-col relative overflow-hidden + bg-gradient-to-br from-accent-200 via-accent-300 to-accent-500 + border-accent-400 text-base-100 shadow-medium + ${isRevealed ? '' : 'bg-gradient-to-br from-accent-600 to-accent-800'} + `} + > + {/* Subtle pattern overlay */} +
+
+
+ + {/* Year display - prominent at top */} + +
+ {year} +
- - {title} - + + {/* Artist and title */} + +
+
+ {artist} +
+
+ {title} +
+
+
+ + {/* Correct/incorrect indicator */} + {isCorrect !== undefined && ( +
+ + {isCorrect ? '✓' : '✗'} + +
+ )} + + {/* Subtle shine effect */} +
-); \ No newline at end of file +); diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index 83bb453882..e5d15819eb 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -1,7 +1,15 @@ import React from 'react'; import { Heading, Card, CardHeader, CardContent } from '../ui'; +import { StartCard } from '../components/StartCard' import { TimeLineCard } from '../components/TimeLineCard'; +const startData = { + year: 1982, + artist: 'Michael Jackson', + title: 'Thriller', + playerName: 'Spelare 1', +} + const timelineData = [ { id: 1, year: 1982, artist: 'Michael Jackson', title: 'Thriller' }, { id: 2, year: 1991, artist: 'Nirvana', title: 'Smells Like Teen Spirit' }, @@ -12,16 +20,12 @@ export const GameMode: React.FC = () => (
Game Mode - - - Starting card - - - {/* Game logic here */} - {/* Lägg till spelkomponenter eller instruktioner här */} -

Design kommer snart

-
-
+
Timeline diff --git a/frontend/src/ui/Card.tsx b/frontend/src/ui/Card.tsx index b547b1eabe..0102c1d643 100644 --- a/frontend/src/ui/Card.tsx +++ b/frontend/src/ui/Card.tsx @@ -1,24 +1,33 @@ import React from "react"; import { cn } from "../lib/utils"; +type CardVariant = "surface" | "accent"; + interface CardProps extends React.HTMLAttributes { children: React.ReactNode; + variant?: CardVariant; hoverable?: boolean; clickable?: boolean } export const Card = React.forwardRef( - ({ className, children, hoverable = false, clickable = false, ...props }, ref) => { + ({ className, children, variant = "surface", hoverable = false, clickable = false, ...props }, ref) => { const hoverClasses = hoverable ? "hover:shadow-medium hover:border-primary/30 hover:bg-card hover:-translate-y-1" : ""; const clickClasses = clickable ? "cursor-pointer" : ""; + + const variantClasses = + variant === "accent" + ? "bg-accent-300 border-accent-400 text-base-100 hover:bg-accent-200" + : "bg-surface border-border text-foreground"; return (
Date: Thu, 7 Aug 2025 17:03:46 +0200 Subject: [PATCH 018/127] Login file setup --- frontend/src/components/LoginForm.tsx | 0 frontend/src/hooks/useAuth.ts | 0 frontend/src/pages/Login.tsx | 0 frontend/src/ui/Checkbox.tsx | 0 frontend/src/ui/ErrorMessage.tsx | 0 frontend/src/ui/Input.tsx | 0 frontend/src/ui/Label.tsx | 0 7 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 frontend/src/components/LoginForm.tsx create mode 100644 frontend/src/hooks/useAuth.ts create mode 100644 frontend/src/pages/Login.tsx create mode 100644 frontend/src/ui/Checkbox.tsx create mode 100644 frontend/src/ui/ErrorMessage.tsx create mode 100644 frontend/src/ui/Input.tsx create mode 100644 frontend/src/ui/Label.tsx diff --git a/frontend/src/components/LoginForm.tsx b/frontend/src/components/LoginForm.tsx new file mode 100644 index 0000000000..e69de29bb2 diff --git a/frontend/src/hooks/useAuth.ts b/frontend/src/hooks/useAuth.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/frontend/src/pages/Login.tsx b/frontend/src/pages/Login.tsx new file mode 100644 index 0000000000..e69de29bb2 diff --git a/frontend/src/ui/Checkbox.tsx b/frontend/src/ui/Checkbox.tsx new file mode 100644 index 0000000000..e69de29bb2 diff --git a/frontend/src/ui/ErrorMessage.tsx b/frontend/src/ui/ErrorMessage.tsx new file mode 100644 index 0000000000..e69de29bb2 diff --git a/frontend/src/ui/Input.tsx b/frontend/src/ui/Input.tsx new file mode 100644 index 0000000000..e69de29bb2 diff --git a/frontend/src/ui/Label.tsx b/frontend/src/ui/Label.tsx new file mode 100644 index 0000000000..e69de29bb2 From 0991243af44eccaac6c40430273999edbbd9497d Mon Sep 17 00:00:00 2001 From: Idahel Date: Mon, 11 Aug 2025 10:53:07 +0200 Subject: [PATCH 019/127] backend before refactoring --- backend/.eslintrc.json | 11 + backend/dist/index.js | 387 +++++++++++++++++++++++++++++++++++ backend/package.json | 35 +++- backend/server.js | 22 -- backend/src/index.ts | 453 +++++++++++++++++++++++++++++++++++++++++ backend/tsconfig.json | 15 ++ 6 files changed, 890 insertions(+), 33 deletions(-) create mode 100644 backend/.eslintrc.json create mode 100644 backend/dist/index.js delete mode 100644 backend/server.js create mode 100644 backend/src/index.ts create mode 100644 backend/tsconfig.json diff --git a/backend/.eslintrc.json b/backend/.eslintrc.json new file mode 100644 index 0000000000..048915b942 --- /dev/null +++ b/backend/.eslintrc.json @@ -0,0 +1,11 @@ +{ + "root": true, + "parser": "@typescript-eslint/parser", + "plugins": [ + "@typescript-eslint" + ], + "extends": [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended" + ] +} \ No newline at end of file diff --git a/backend/dist/index.js b/backend/dist/index.js new file mode 100644 index 0000000000..877687c562 --- /dev/null +++ b/backend/dist/index.js @@ -0,0 +1,387 @@ +// server/src/index.ts +import 'dotenv/config'; +import express from 'express'; +import session from 'express-session'; +import cors from 'cors'; +import cookieParser from 'cookie-parser'; +import SpotifyWebApi from 'spotify-web-api-node'; +import mongoose, { Schema } from 'mongoose'; +// Validate that all necessary environment variables exist +const requiredEnvVars = [ + 'CLIENT_ID', + 'CLIENT_SECRET', + 'REDIRECT_URI', + 'MONGODB_URI', + 'FRONTEND_URI', + 'SESSION_SECRET' +]; +for (const envVar of requiredEnvVars) { + if (!process.env[envVar]) { + console.error(`Error: The environment variable ${envVar} is missing`); + process.exit(1); + } +} +const app = express(); +const port = 8888; +// Middleware +app.use(cors({ + origin: process.env.FRONTEND_URI, // Allow only your frontend + credentials: true // Allow cookies +})); +app.use(cookieParser()); +app.use(express.json()); // For handling JSON request bodies +// Health check endpoint +app.get('/', (req, res) => { + res.json({ + message: 'Backend server is running!', + status: 'ok', + timestamp: new Date().toISOString() + }); +}); +app.use(session({ + secret: process.env.SESSION_SECRET, + resave: false, + saveUninitialized: false, + cookie: { + httpOnly: true, // Improve security by making the cookie inaccessible to JavaScript + secure: process.env.NODE_ENV === 'production', // Use secure cookies only in production + maxAge: 60 * 60 * 1000 // 1 hour + } +})); +// Connect to MongoDB +mongoose.connect(process.env.MONGODB_URI) + .then(() => { + console.log('Connected to MongoDB Atlas'); + // Only populate the database when successfully connected + populateQuizQuestionsFromPlaylist(); +}) + .catch(err => { + console.error('Could not connect to MongoDB Atlas:', err); + console.log('Server is running without database connection for development...'); + // Don't exit for development - allow server to run without DB +}); +// Spotify API instance +const spotifyApi = new SpotifyWebApi({ + clientId: process.env.CLIENT_ID, + clientSecret: process.env.CLIENT_SECRET, + redirectUri: process.env.REDIRECT_URI +}); +// Generate a random string for the state parameter (for security) +const generateRandomString = (length) => { + let text = ''; + const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + for (let i = 0; i < length; i++) { + text += possible.charAt(Math.floor(Math.random() * possible.length)); + } + return text; +}; +// --- Authentication routes (for the user to log in with Spotify) --- +// 1. Log in with Spotify +app.get('/login', (req, res) => { + const state = generateRandomString(16); + req.session.spotify_auth_state = state; // Save state in the session + // Required scopes to control the user's Spotify app and read playback status + const scope = [ + 'user-read-private', + 'user-read-email', + 'user-read-playback-state', + 'user-modify-playback-state' + ]; + res.redirect(spotifyApi.createAuthorizeURL(scope, state)); +}); +// 2. Callback after Spotify authentication +app.get('/callback', async (req, res) => { + const { code, state } = req.query; + const storedState = req.session.spotify_auth_state; + if (state === null || state !== storedState) { + res.redirect(`${process.env.FRONTEND_URI}/#error=state_mismatch`); + } + else { + req.session.spotify_auth_state = undefined; // Clear state from the session + try { + const data = await spotifyApi.authorizationCodeGrant(code); + const { access_token, refresh_token, expires_in } = data.body; + // Save tokens in the session + req.session.accessToken = access_token; + req.session.refreshToken = refresh_token; + req.session.expiresIn = expires_in; + // Redirect to the frontend without sending tokens in the URL + res.redirect(`${process.env.FRONTEND_URI}/dashboard`); + } + catch (err) { + console.error('Could not get access token:', err); + res.redirect(`${process.env.FRONTEND_URI}/#error=invalid_token`); + } + } +}); +// 3. Refresh access token +app.get('/refresh_token', async (req, res) => { + try { + const refreshToken = req.session.refreshToken; + if (!refreshToken) { + return res.status(401).json({ error: 'No refresh token in session.' }); + } + spotifyApi.setRefreshToken(refreshToken); + const data = await spotifyApi.refreshAccessToken(); + const { access_token, expires_in } = data.body; + req.session.accessToken = access_token; + req.session.expiresIn = expires_in; + res.json({ success: true }); + } + catch (err) { + console.error('Could not refresh access token:', err); + res.status(500).json({ error: 'Could not refresh access token' }); + } +}); +// 4. Get user profile (via backend session) +app.get('/user-profile', async (req, res) => { + try { + const accessToken = req.session.accessToken; + if (!accessToken) { + return res.status(401).json({ error: 'Not logged in.' }); + } + spotifyApi.setAccessToken(accessToken); + const data = await spotifyApi.getMe(); + res.json(data.body); + } + catch (err) { + console.error('Error fetching user profile:', err); + res.status(500).json({ error: 'Could not fetch user profile.' }); + } +}); +// 5. Log out +app.get('/logout', (req, res) => { + req.session.destroy(err => { + if (err) { + console.error('Error during logout:', err); + return res.status(500).json({ error: 'Could not log out.' }); + } + res.json({ success: true }); + }); +}); +// --- Spotify Player routes (acting as a proxy) --- +// 6. Play a track on the user's active device +app.post('/play-track', async (req, res) => { + try { + const { trackId, deviceId } = req.body; + const accessToken = req.session.accessToken; + if (!accessToken || !trackId || !deviceId) { + return res.status(400).json({ error: 'Invalid request.' }); + } + spotifyApi.setAccessToken(accessToken); + await spotifyApi.play({ + uris: [`spotify:track:${trackId}`], + device_id: deviceId + }); + res.status(200).json({ success: true }); + } + catch (err) { + console.error('Error during playback:', err); + res.status(500).json({ error: 'Could not play the track.' }); + } +}); +// 7. Pause playback +app.post('/pause-track', async (req, res) => { + try { + const { deviceId } = req.body; + const accessToken = req.session.accessToken; + if (!accessToken || !deviceId) { + return res.status(400).json({ error: 'Invalid request.' }); + } + spotifyApi.setAccessToken(accessToken); + await spotifyApi.pause({ device_id: deviceId }); + res.status(200).json({ success: true }); + } + catch (err) { + console.error('Error during pause:', err); + res.status(500).json({ error: 'Could not pause the track.' }); + } +}); +const quizSchema = new Schema({ + trackId: String, + trackTitle: String, + trackArtist: String, + releaseYear: Number, + trackUrl: String, +}); +const QuizQuestion = mongoose.model('QuizQuestion', quizSchema); +// API route to fetch quiz questions +app.get('/quiz-questions', async (req, res) => { + try { + // Check if mongoose is connected + if (mongoose.connection.readyState !== 1) { + return res.status(503).json({ error: 'Database is not available' }); + } + const questions = await QuizQuestion.find({}); + res.json(questions); + } + catch (err) { + console.error('Error fetching quiz questions:', err); + res.status(500).json({ error: 'Could not fetch quiz questions' }); + } +}); +// API route to fetch quiz questions with statistics and formatted information +app.get('/quiz-questions/detailed', async (req, res) => { + try { + // Check if mongoose is connected + if (mongoose.connection.readyState !== 1) { + return res.status(503).json({ error: 'Database is not available' }); + } + const questions = await QuizQuestion.find({}); + // Calculate statistics + const totalQuestions = questions.length; + const years = questions.map(q => q.releaseYear); + const uniqueYears = [...new Set(years)].sort((a, b) => a - b); + const yearRange = { + min: Math.min(...years), + max: Math.max(...years) + }; + // Group by artist + const artistCounts = {}; + questions.forEach(q => { + artistCounts[q.trackArtist] = (artistCounts[q.trackArtist] || 0) + 1; + }); + // Top 5 artists + const topArtists = Object.entries(artistCounts) + .sort(([, a], [, b]) => b - a) + .slice(0, 5) + .map(([artist, count]) => ({ artist, count })); + // Group by decade + const decadeCounts = {}; + questions.forEach(q => { + const decade = Math.floor(q.releaseYear / 10) * 10; + const decadeLabel = `${decade}s`; + decadeCounts[decadeLabel] = (decadeCounts[decadeLabel] || 0) + 1; + }); + const response = { + summary: { + totalQuestions, + yearRange, + uniqueYears: uniqueYears.length, + decades: Object.keys(decadeCounts).length + }, + statistics: { + topArtists, + decadeBreakdown: decadeCounts, + yearDistribution: uniqueYears + }, + questions: questions.map(q => ({ + id: q._id, + trackId: q.trackId, + title: q.trackTitle, + artist: q.trackArtist, + year: q.releaseYear, + decade: `${Math.floor(q.releaseYear / 10) * 10}s` + })) + }; + res.json(response); + } + catch (err) { + console.error('Error fetching detailed quiz questions:', err); + res.status(500).json({ error: 'Could not fetch detailed quiz questions' }); + } +}); +// API route to get a random quiz question +app.get('/quiz-questions/random', async (req, res) => { + try { + // Check if mongoose is connected + if (mongoose.connection.readyState !== 1) { + return res.status(503).json({ error: 'Database is not available' }); + } + const count = await QuizQuestion.countDocuments(); + if (count === 0) { + return res.status(404).json({ error: 'No quiz questions available' }); + } + const randomIndex = Math.floor(Math.random() * count); + const randomQuestion = await QuizQuestion.findOne().skip(randomIndex); + if (!randomQuestion) { + return res.status(404).json({ error: 'Could not find a random question' }); + } + res.json({ + question: { + id: randomQuestion._id, + trackId: randomQuestion.trackId, + title: randomQuestion.trackTitle, + artist: randomQuestion.trackArtist, + year: randomQuestion.releaseYear, + decade: `${Math.floor(randomQuestion.releaseYear / 10) * 10}s` + }, + totalQuestions: count + }); + } + catch (err) { + console.error('Error fetching random quiz question:', err); + res.status(500).json({ error: 'Could not fetch a random quiz question' }); + } +}); +// --- **NEW ROUTE TO VIEW RAW DATA FROM THE SPOTIFY API** --- +// Use this route to verify that fetching the playlist works. +// You can then remove it once you have tested it. +app.get('/raw-playlist-data', async (req, res) => { + const playlistId = '6YHoO8ETcwxgq5WTjDpyAQ'; // Your playlist + try { + const data = await spotifyApi.clientCredentialsGrant(); + spotifyApi.setAccessToken(data.body['access_token']); + const playlistData = await spotifyApi.getPlaylistTracks(playlistId); + res.json(playlistData.body); // Send the entire raw data + } + catch (err) { + console.error('Error fetching raw data from Spotify:', err); + res.status(500).json({ error: 'Could not fetch raw data.' }); + } +}); +// --- Function to add quiz questions from a specific playlist --- +// Use this function to populate your MongoDB database with questions from your playlist. +// It fetches an app-specific access token, so it does not require a logged-in user. +async function populateQuizQuestionsFromPlaylist() { + // ID for the playlist you want to fetch tracks from. + const playlistId = '6YHoO8ETcwxgq5WTjDpyAQ'; + try { + // Check if mongoose is connected before proceeding + if (mongoose.connection.readyState !== 1) { + console.log('MongoDB not connected, skipping database population'); + return; + } + // Remove existing questions before adding new ones + await QuizQuestion.deleteMany({}); + console.log('Existing quiz questions have been cleared from the database.'); + const data = await spotifyApi.clientCredentialsGrant(); + spotifyApi.setAccessToken(data.body['access_token']); + console.log('Fetched Client Credentials token.'); + const playlistData = await spotifyApi.getPlaylistTracks(playlistId); + const tracks = playlistData.body.items.filter(item => item.track); + const quizQuestions = tracks.map(item => { + const track = item.track; + if (track) { + const trackTitle = track.name; + const trackArtist = track.artists[0]?.name || 'Unknown Artist'; + const releaseYear = new Date(track.album.release_date).getFullYear(); + const trackUrl = track.external_urls.spotify; + return { + trackId: track.id, + trackTitle, + trackArtist, + releaseYear, + trackUrl, + }; + } + }).filter(Boolean); // Filter out any null values + if (quizQuestions.length > 0) { + await QuizQuestion.insertMany(quizQuestions); + console.log(`Database has been populated with ${quizQuestions.length} questions from the playlist.`); + } + else { + console.log('Could not find any songs to create questions from.'); + } + } + catch (error) { + console.error('An error occurred while populating the database:', error); + } +} +// Start the server +app.listen(port, () => { + console.log(`Backend server is running on http://localhost:${port}`); +}).on('error', (err) => { + console.error('Error starting the server:', err); + process.exit(1); +}); diff --git a/backend/package.json b/backend/package.json index ffc9464752..17237ee747 100644 --- a/backend/package.json +++ b/backend/package.json @@ -2,25 +2,38 @@ "name": "project-final-backend", "version": "1.0.0", "description": "Server part of final project", + "main": "dist/index.js", "scripts": { - "start": "babel-node server.js", - "dev": "nodemon server.js --exec babel-node" + "start": "node dist/index.js", + "dev": "nodemon --exec 'node --loader ts-node/esm' src/index.ts", + "build": "tsc" }, "author": "", "license": "ISC", "dependencies": { - "@babel/core": "^7.17.9", - "@babel/node": "^7.16.8", - "@babel/preset-env": "^7.16.11", + "axios": "^1.7.2", "cookie-parser": "^1.4.7", "cors": "^2.8.5", - "dotenv": "^17.2.1", - "express": "^4.21.2", - "mongoose": "^8.17.0", - "nodemon": "^3.0.1", + "dotenv": "^16.4.5", + "express": "^4.19.2", + "express-session": "^1.18.2", + "mongoose": "^8.4.1", "spotify-web-api-node": "^5.0.2" }, - "main": "server.js", "keywords": [], - "type": "commonjs" + "type": "module", + "devDependencies": { + "@types/cookie-parser": "^1.4.9", + "@types/cors": "^2.8.19", + "@types/express": "^4.17.21", + "@types/express-session": "^1.18.2", + "@types/node": "^20.14.2", + "@types/spotify-web-api-node": "^5.0.11", + "@typescript-eslint/eslint-plugin": "^8.39.0", + "@typescript-eslint/parser": "^8.39.0", + "eslint": "^8.57.0", + "nodemon": "^3.1.3", + "ts-node": "^10.9.2", + "typescript": "^5.4.5" + } } diff --git a/backend/server.js b/backend/server.js deleted file mode 100644 index 070c875189..0000000000 --- a/backend/server.js +++ /dev/null @@ -1,22 +0,0 @@ -import express from "express"; -import cors from "cors"; -import mongoose from "mongoose"; - -const mongoUrl = process.env.MONGO_URL || "mongodb://localhost/final-project"; -mongoose.connect(mongoUrl); -mongoose.Promise = Promise; - -const port = process.env.PORT || 8080; -const app = express(); - -app.use(cors()); -app.use(express.json()); - -app.get("/", (req, res) => { - res.send("Hello Technigo!"); -}); - -// Start the server -app.listen(port, () => { - console.log(`Server running on http://localhost:${port}`); -}); diff --git a/backend/src/index.ts b/backend/src/index.ts new file mode 100644 index 0000000000..76d24d5224 --- /dev/null +++ b/backend/src/index.ts @@ -0,0 +1,453 @@ +// server/src/index.ts +import 'dotenv/config'; +import express, { Request, Response } from 'express'; +import session from 'express-session'; +import cors from 'cors'; +import cookieParser from 'cookie-parser'; +import SpotifyWebApi from 'spotify-web-api-node'; +import mongoose, { Document, Schema } from 'mongoose'; + +// Validate that all necessary environment variables exist +const requiredEnvVars = [ + 'CLIENT_ID', + 'CLIENT_SECRET', + 'REDIRECT_URI', + 'MONGODB_URI', + 'FRONTEND_URI', + 'SESSION_SECRET' +]; + +for (const envVar of requiredEnvVars) { + if (!process.env[envVar]) { + console.error(`Error: The environment variable ${envVar} is missing`); + process.exit(1); + } +} + +const app = express(); +const port = 8888; + +// Extend the session object with our own properties +declare module 'express-session' { + interface SessionData { + spotify_auth_state?: string; // Made optional as it's cleared after use + accessToken?: string; + refreshToken?: string; + expiresIn?: number; + } +} + +// Middleware +app.use(cors({ + origin: process.env.FRONTEND_URI, // Allow only your frontend + credentials: true // Allow cookies +})); +app.use(cookieParser()); +app.use(express.json()); // For handling JSON request bodies + +// Health check endpoint +app.get('/', (req: Request, res: Response) => { + res.json({ + message: 'Backend server is running!', + status: 'ok', + timestamp: new Date().toISOString() + }); +}); + +app.use(session({ + secret: process.env.SESSION_SECRET as string, + resave: false, + saveUninitialized: false, + cookie: { + httpOnly: true, // Improve security by making the cookie inaccessible to JavaScript + secure: process.env.NODE_ENV === 'production', // Use secure cookies only in production + maxAge: 60 * 60 * 1000 // 1 hour + } +})); + +// Connect to MongoDB +mongoose.connect(process.env.MONGODB_URI as string) + .then(() => { + console.log('Connected to MongoDB Atlas'); + // Only populate the database when successfully connected + populateQuizQuestionsFromPlaylist(); + }) + .catch(err => { + console.error('Could not connect to MongoDB Atlas:', err); + console.log('Server is running without database connection for development...'); + // Don't exit for development - allow server to run without DB + }); + +// Spotify API instance +const spotifyApi = new SpotifyWebApi({ + clientId: process.env.CLIENT_ID, + clientSecret: process.env.CLIENT_SECRET, + redirectUri: process.env.REDIRECT_URI +}); + +// Generate a random string for the state parameter (for security) +const generateRandomString = (length: number): string => { + let text = ''; + const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + for (let i = 0; i < length; i++) { + text += possible.charAt(Math.floor(Math.random() * possible.length)); + } + return text; +}; + +// --- Authentication routes (for the user to log in with Spotify) --- + +// 1. Log in with Spotify +app.get('/login', (req: Request, res: Response) => { + const state = generateRandomString(16); + req.session.spotify_auth_state = state; // Save state in the session + + // Required scopes to control the user's Spotify app and read playback status + const scope = [ + 'user-read-private', + 'user-read-email', + 'user-read-playback-state', + 'user-modify-playback-state' + ]; + + res.redirect(spotifyApi.createAuthorizeURL(scope, state)); +}); + +// 2. Callback after Spotify authentication +app.get('/callback', async (req: Request, res: Response) => { + const { code, state } = req.query as { code: string | null; state: string | null }; + const storedState = req.session.spotify_auth_state; + + if (state === null || state !== storedState) { + res.redirect(`${process.env.FRONTEND_URI}/#error=state_mismatch`); + } else { + req.session.spotify_auth_state = undefined; // Clear state from the session + try { + const data = await spotifyApi.authorizationCodeGrant(code as string); + const { access_token, refresh_token, expires_in } = data.body; + + // Save tokens in the session + req.session.accessToken = access_token; + req.session.refreshToken = refresh_token; + req.session.expiresIn = expires_in; + + // Redirect to the frontend without sending tokens in the URL + res.redirect(`${process.env.FRONTEND_URI}/dashboard`); + } catch (err) { + console.error('Could not get access token:', err); + res.redirect(`${process.env.FRONTEND_URI}/#error=invalid_token`); + } + } +}); + +// 3. Refresh access token +app.get('/refresh_token', async (req: Request, res: Response) => { + try { + const refreshToken = req.session.refreshToken; + if (!refreshToken) { + return res.status(401).json({ error: 'No refresh token in session.' }); + } + spotifyApi.setRefreshToken(refreshToken); + const data = await spotifyApi.refreshAccessToken(); + const { access_token, expires_in } = data.body; + + req.session.accessToken = access_token; + req.session.expiresIn = expires_in; + res.json({ success: true }); + } catch (err) { + console.error('Could not refresh access token:', err); + res.status(500).json({ error: 'Could not refresh access token' }); + } +}); + +// 4. Get user profile (via backend session) +app.get('/user-profile', async (req: Request, res: Response) => { + try { + const accessToken = req.session.accessToken; + if (!accessToken) { + return res.status(401).json({ error: 'Not logged in.' }); + } + spotifyApi.setAccessToken(accessToken); + const data = await spotifyApi.getMe(); + res.json(data.body); + } catch (err) { + console.error('Error fetching user profile:', err); + res.status(500).json({ error: 'Could not fetch user profile.' }); + } +}); + +// 5. Log out +app.get('/logout', (req: Request, res: Response) => { + req.session.destroy(err => { + if (err) { + console.error('Error during logout:', err); + return res.status(500).json({ error: 'Could not log out.' }); + } + res.json({ success: true }); + }); +}); + +// --- Spotify Player routes (acting as a proxy) --- + +// 6. Play a track on the user's active device +app.post('/play-track', async (req: Request, res: Response) => { + try { + const { trackId, deviceId } = req.body; + const accessToken = req.session.accessToken; + + if (!accessToken || !trackId || !deviceId) { + return res.status(400).json({ error: 'Invalid request.' }); + } + spotifyApi.setAccessToken(accessToken); + await spotifyApi.play({ + uris: [`spotify:track:${trackId}`], + device_id: deviceId + }); + res.status(200).json({ success: true }); + } catch (err) { + console.error('Error during playback:', err); + res.status(500).json({ error: 'Could not play the track.' }); + } +}); + +// 7. Pause playback +app.post('/pause-track', async (req: Request, res: Response) => { + try { + const { deviceId } = req.body; + const accessToken = req.session.accessToken; + if (!accessToken || !deviceId) { + return res.status(400).json({ error: 'Invalid request.' }); + } + spotifyApi.setAccessToken(accessToken); + await spotifyApi.pause({ device_id: deviceId }); + res.status(200).json({ success: true }); + } catch (err) { + console.error('Error during pause:', err); + res.status(500).json({ error: 'Could not pause the track.' }); + } +}); + +// --- MongoDB Model (Quiz Questions) --- +// This model defines how your quiz questions are stored in the database. +// `trackId` is the Spotify Track ID, used to play the song. + +// Define an interface for the data model +interface IQuizQuestion extends Document { + trackId: string; + trackTitle: string; + trackArtist: string; + releaseYear: number; + trackUrl: string; +} + +const quizSchema: Schema = new Schema({ + trackId: String, + trackTitle: String, + trackArtist: String, + releaseYear: Number, + trackUrl: String, +}); + +const QuizQuestion = mongoose.model('QuizQuestion', quizSchema); + +// API route to fetch quiz questions +app.get('/quiz-questions', async (req: Request, res: Response) => { + try { + // Check if mongoose is connected + if (mongoose.connection.readyState !== 1) { + return res.status(503).json({ error: 'Database is not available' }); + } + const questions = await QuizQuestion.find({}); + res.json(questions); + } catch (err) { + console.error('Error fetching quiz questions:', err); + res.status(500).json({ error: 'Could not fetch quiz questions' }); + } +}); + +// API route to fetch quiz questions with statistics and formatted information +app.get('/quiz-questions/detailed', async (req: Request, res: Response) => { + try { + // Check if mongoose is connected + if (mongoose.connection.readyState !== 1) { + return res.status(503).json({ error: 'Database is not available' }); + } + + const questions = await QuizQuestion.find({}); + + // Calculate statistics + const totalQuestions = questions.length; + const years = questions.map(q => q.releaseYear); + const uniqueYears = [...new Set(years)].sort((a, b) => a - b); + const yearRange = { + min: Math.min(...years), + max: Math.max(...years) + }; + + // Group by artist + const artistCounts: { [key: string]: number } = {}; + questions.forEach(q => { + artistCounts[q.trackArtist] = (artistCounts[q.trackArtist] || 0) + 1; + }); + + // Top 5 artists + const topArtists = Object.entries(artistCounts) + .sort(([, a], [, b]) => b - a) + .slice(0, 5) + .map(([artist, count]) => ({ artist, count })); + + // Group by decade + const decadeCounts: { [key: string]: number } = {}; + questions.forEach(q => { + const decade = Math.floor(q.releaseYear / 10) * 10; + const decadeLabel = `${decade}s`; + decadeCounts[decadeLabel] = (decadeCounts[decadeLabel] || 0) + 1; + }); + + const response = { + summary: { + totalQuestions, + yearRange, + uniqueYears: uniqueYears.length, + decades: Object.keys(decadeCounts).length + }, + statistics: { + topArtists, + decadeBreakdown: decadeCounts, + yearDistribution: uniqueYears + }, + questions: questions.map(q => ({ + id: q._id, + trackId: q.trackId, + title: q.trackTitle, + artist: q.trackArtist, + year: q.releaseYear, + decade: `${Math.floor(q.releaseYear / 10) * 10}s` + })) + }; + + res.json(response); + } catch (err) { + console.error('Error fetching detailed quiz questions:', err); + res.status(500).json({ error: 'Could not fetch detailed quiz questions' }); + } +}); + +// API route to get a random quiz question +app.get('/quiz-questions/random', async (req: Request, res: Response) => { + try { + // Check if mongoose is connected + if (mongoose.connection.readyState !== 1) { + return res.status(503).json({ error: 'Database is not available' }); + } + + const count = await QuizQuestion.countDocuments(); + if (count === 0) { + return res.status(404).json({ error: 'No quiz questions available' }); + } + + const randomIndex = Math.floor(Math.random() * count); + const randomQuestion = await QuizQuestion.findOne().skip(randomIndex); + + if (!randomQuestion) { + return res.status(404).json({ error: 'Could not find a random question' }); + } + + res.json({ + question: { + id: randomQuestion._id, + trackId: randomQuestion.trackId, + title: randomQuestion.trackTitle, + artist: randomQuestion.trackArtist, + year: randomQuestion.releaseYear, + decade: `${Math.floor(randomQuestion.releaseYear / 10) * 10}s` + }, + totalQuestions: count + }); + } catch (err) { + console.error('Error fetching random quiz question:', err); + res.status(500).json({ error: 'Could not fetch a random quiz question' }); + } +}); + +// --- **NEW ROUTE TO VIEW RAW DATA FROM THE SPOTIFY API** --- +// Use this route to verify that fetching the playlist works. +// You can then remove it once you have tested it. +app.get('/raw-playlist-data', async (req: Request, res: Response) => { + const playlistId = '6YHoO8ETcwxgq5WTjDpyAQ'; // Your playlist + + try { + const data = await spotifyApi.clientCredentialsGrant(); + spotifyApi.setAccessToken(data.body['access_token']); + + const playlistData = await spotifyApi.getPlaylistTracks(playlistId); + res.json(playlistData.body); // Send the entire raw data + } catch (err) { + console.error('Error fetching raw data from Spotify:', err); + res.status(500).json({ error: 'Could not fetch raw data.' }); + } +}); + +// --- Function to add quiz questions from a specific playlist --- +// Use this function to populate your MongoDB database with questions from your playlist. +// It fetches an app-specific access token, so it does not require a logged-in user. + +async function populateQuizQuestionsFromPlaylist() { + // ID for the playlist you want to fetch tracks from. + const playlistId = '6YHoO8ETcwxgq5WTjDpyAQ'; + + try { + // Check if mongoose is connected before proceeding + if (mongoose.connection.readyState !== 1) { + console.log('MongoDB not connected, skipping database population'); + return; + } + + // Remove existing questions before adding new ones + await QuizQuestion.deleteMany({}); + console.log('Existing quiz questions have been cleared from the database.'); + + const data = await spotifyApi.clientCredentialsGrant(); + spotifyApi.setAccessToken(data.body['access_token']); + console.log('Fetched Client Credentials token.'); + + const playlistData = await spotifyApi.getPlaylistTracks(playlistId); + const tracks = playlistData.body.items.filter(item => item.track); + + const quizQuestions = tracks.map(item => { + const track = item.track as SpotifyApi.TrackObjectFull; + if (track) { + const trackTitle = track.name; + const trackArtist = track.artists[0]?.name || 'Unknown Artist'; + const releaseYear = new Date(track.album.release_date).getFullYear(); + const trackUrl = track.external_urls.spotify; + return { + trackId: track.id, + trackTitle, + trackArtist, + releaseYear, + trackUrl, + }; + } + }).filter(Boolean) as IQuizQuestion[]; // Filter out any null values + + if (quizQuestions.length > 0) { + await QuizQuestion.insertMany(quizQuestions); + console.log(`Database has been populated with ${quizQuestions.length} questions from the playlist.`); + } else { + console.log('Could not find any songs to create questions from.'); + } + + } catch (error) { + console.error('An error occurred while populating the database:', error); + } +} + + +// Start the server +app.listen(port, () => { + console.log(`Backend server is running on http://localhost:${port}`); +}).on('error', (err) => { + console.error('Error starting the server:', err); + process.exit(1); +}); diff --git a/backend/tsconfig.json b/backend/tsconfig.json new file mode 100644 index 0000000000..da51ecb44a --- /dev/null +++ b/backend/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "target": "es2020", + "module": "esnext", + "moduleResolution": "node", + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "outDir": "./dist" + }, + "include": ["src/**/*"], + "exclude": ["node_modules"] +} \ No newline at end of file From 3293df5a6db79161f89aa2fbf01246c0a253c479 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Mon, 11 Aug 2025 11:43:42 +0200 Subject: [PATCH 020/127] Login modal up --- frontend/src/App.tsx | 2 + frontend/src/components/LoginForm.tsx | 48 ++++++ frontend/src/components/LoginModal.tsx | 197 +++++++++++++++++++++++++ frontend/src/pages/Login.tsx | 29 ++++ frontend/src/ui/Checkbox.tsx | 65 ++++++++ frontend/src/ui/ErrorMessage.tsx | 76 ++++++++++ frontend/src/ui/Input.tsx | 35 +++++ frontend/src/ui/Label.tsx | 28 ++++ 8 files changed, 480 insertions(+) create mode 100644 frontend/src/components/LoginModal.tsx diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index e442aa25ee..8ee7bc7fd8 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,6 +1,7 @@ import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; import { Home } from './pages/Home'; import { GameMode } from './pages/GameMode'; +import { Login } from './pages/Login'; export const App = () => { return ( @@ -8,6 +9,7 @@ export const App = () => { } /> } /> + } /> ); diff --git a/frontend/src/components/LoginForm.tsx b/frontend/src/components/LoginForm.tsx index e69de29bb2..c1482ece31 100644 --- a/frontend/src/components/LoginForm.tsx +++ b/frontend/src/components/LoginForm.tsx @@ -0,0 +1,48 @@ +import React from "react" +import { useState } from "react" +import { LoginModal } from "./LoginModal" +import { Button } from "../ui/Button" + +export const LoginForm: React.FC = () => { + const [isModalOpen, setIsModalOpen] = useState(false) + const [isLoading, setIsLoading] = useState(false) + + const handleLogin = async (email: string, password: string) => { + setIsLoading(true) + + // Simulate login process + try { + await new Promise((resolve) => setTimeout(resolve, 2000)) + console.log("Login attempt:", { email, password }) + setIsModalOpen(false) + } catch (error) { + console.error("Login failed:", error) + } finally { + setIsLoading(false) + } + } + + return ( +
+
+
+

Hitster

+

+ Build your music timeline and guess the years in this exciting music game +

+
+ + +
+ + setIsModalOpen(false)} + onLogin={handleLogin} + isLoading={isLoading} + /> +
+ ) +} diff --git a/frontend/src/components/LoginModal.tsx b/frontend/src/components/LoginModal.tsx new file mode 100644 index 0000000000..d0448a5981 --- /dev/null +++ b/frontend/src/components/LoginModal.tsx @@ -0,0 +1,197 @@ +import React from "react" +import { useState } from "react" +import { Card, CardHeader, CardContent } from "../ui/Card" +import { Button } from "../ui/Button" +import { Input } from "../ui/Input" +import { Label } from "../ui/Label" +import { Heading } from "../ui/Heading" +import { Checkbox } from "../ui/Checkbox" +import { ErrorMessage } from "../ui/ErrorMessage" +import { DotPattern } from "../ui/DotPattern" + +interface LoginModalProps { + isOpen: boolean + onClose: () => void + onLogin: (email: string, password: string) => void + isLoading?: boolean +} + +export const LoginModal: React.FC = ({ isOpen, onClose, onLogin, isLoading = false }) => { + const [email, setEmail] = useState("") + const [password, setPassword] = useState("") + const [rememberMe, setRememberMe] = useState(false) + const [error, setError] = useState("") + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault() + setError("") + + if (!email || !password) { + setError("Please fill in all fields") + return + } + + onLogin(email, password) + } + + if (!isOpen) return null + + return ( +
+ {/* Backdrop */} +
+ +
+ + {/* Modal */} + + {/* Close button */} + + + {/* Header with branding */} + + {/* Logo/Icon area */} +
+
+
+ {/* CSS Music Note */} +
+
+
+
+
+
+
+ {/* CSS Play Icon */} +
+
+
+
+ +
+ + Welcome to Hitster + +

+ Connect with Spotify to start your music timeline game +

+
+ + + + {/* Error message */} + {error && setError("")} />} + + {/* Login form */} +
+
+ + setEmail(e.target.value)} + placeholder="your@email.com" + disabled={isLoading} + error={!!error && !email} + /> +
+ +
+ + setPassword(e.target.value)} + placeholder="••••••••" + disabled={isLoading} + error={!!error && !password} + /> +
+ +
+ setRememberMe(e.target.checked)} + disabled={isLoading} + /> + +
+ + +
+ + {/* Divider */} +
+
+
+
+
+ Or continue with +
+
+ + {/* Spotify login button */} + + + {/* Game info */} +
+ +
+ {/* CSS Users Icon */} +
+
+
+
+
+
+

Ready to play?

+

Only one player needs to log in. You'll control the game for everyone (2-10 players).

+
+
+
+ + +
+ ) +} diff --git a/frontend/src/pages/Login.tsx b/frontend/src/pages/Login.tsx index e69de29bb2..96462a3be7 100644 --- a/frontend/src/pages/Login.tsx +++ b/frontend/src/pages/Login.tsx @@ -0,0 +1,29 @@ +"use client" + +import type React from "react" +import { LoginForm } from "../components/LoginForm" +import { DotPattern } from "../ui/DotPattern" + +export const Login: React.FC = () => { + return ( +
+ {/* Background Pattern */} + + + {/* Gradient Overlay */} +
+ + {/* Main Content */} +
+ +
+ + {/* Decorative Elements */} +
+
+
+
+ ) +} + +export default Login diff --git a/frontend/src/ui/Checkbox.tsx b/frontend/src/ui/Checkbox.tsx index e69de29bb2..0180d201d5 100644 --- a/frontend/src/ui/Checkbox.tsx +++ b/frontend/src/ui/Checkbox.tsx @@ -0,0 +1,65 @@ +"use client" + +import React from "react" +import type { InputHTMLAttributes } from "react" +import { useState } from "react" +import { cn } from "../lib/utils" + +interface CheckboxProps extends Omit, "type"> { + label?: string + description?: string +} + +export const Checkbox = React.forwardRef( + ({ className, label, description, checked, onChange, ...props }, ref) => { + const [isChecked, setIsChecked] = useState(checked || false) + + const handleChange = (e: React.ChangeEvent) => { + setIsChecked(e.target.checked) + onChange?.(e) + } + + return ( +
+
+ +
!props.disabled && setIsChecked(!isChecked)} + > + {/* CSS Checkmark */} + {isChecked && ( +
+
+
+
+
+ )} +
+
+ + {(label || description) && ( +
+ {label && ( + + )} + {description &&

{description}

} +
+ )} +
+ ) + }, +) + +Checkbox.displayName = "Checkbox" diff --git a/frontend/src/ui/ErrorMessage.tsx b/frontend/src/ui/ErrorMessage.tsx index e69de29bb2..983b34feb9 100644 --- a/frontend/src/ui/ErrorMessage.tsx +++ b/frontend/src/ui/ErrorMessage.tsx @@ -0,0 +1,76 @@ +"use client" + +import type React from "react" +import { cn } from "../lib/utils" + +type ErrorVariant = "error" | "warning" | "info" + +interface ErrorMessageProps { + message: string + variant?: ErrorVariant + dismissible?: boolean + onDismiss?: () => void + className?: string +} + +export const ErrorMessage: React.FC = ({ + message, + variant = "error", + dismissible = false, + onDismiss, + className, +}) => { + const variantClasses = { + error: "bg-red-50 border-red-200 text-red-800", + warning: "bg-amber-50 border-amber-200 text-amber-800", + info: "bg-blue-50 border-blue-200 text-blue-800", + } + + const iconClasses = { + error: "text-red-500", + warning: "text-amber-500", + info: "text-blue-500", + } + + return ( +
+ {/* CSS Alert Icon */} +
+
+
+
+
+
+ +
+

{message}

+
+ + {dismissible && onDismiss && ( + + )} +
+ ) +} diff --git a/frontend/src/ui/Input.tsx b/frontend/src/ui/Input.tsx index e69de29bb2..32822db92b 100644 --- a/frontend/src/ui/Input.tsx +++ b/frontend/src/ui/Input.tsx @@ -0,0 +1,35 @@ +import React from "react" +import { cn } from "../lib/utils" + +interface InputProps extends React.InputHTMLAttributes { + error?: boolean + helperText?: string +} + +export const Input = React.forwardRef( + ({ className, error, helperText, ...props }, ref) => { + return ( +
+ + {helperText && ( +

{helperText}

+ )} +
+ ) + }, +) + +Input.displayName = "Input" diff --git a/frontend/src/ui/Label.tsx b/frontend/src/ui/Label.tsx index e69de29bb2..c784675b42 100644 --- a/frontend/src/ui/Label.tsx +++ b/frontend/src/ui/Label.tsx @@ -0,0 +1,28 @@ +import React from "react" +import { cn } from "../lib/utils" + +interface LabelProps extends React.LabelHTMLAttributes { + children: React.ReactNode + required?: boolean +} + +export const Label = React.forwardRef( + ({ className, children, required, ...props }, ref) => { + return ( + + ) + }, +) + +Label.displayName = "Label" From 0ddb1ae0606cd3f5e8009ae96bfd9061760ec952 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Mon, 11 Aug 2025 12:21:26 +0200 Subject: [PATCH 021/127] Added orientation guard --- frontend/src/components/LoginForm.tsx | 14 +-- frontend/src/components/LoginModal.tsx | 102 ++++++++++++------- frontend/src/components/OrientationGuard.tsx | 64 ++++++++++++ frontend/src/index.css | 10 ++ frontend/src/pages/GameMode.tsx | 29 +++--- 5 files changed, 165 insertions(+), 54 deletions(-) create mode 100644 frontend/src/components/OrientationGuard.tsx diff --git a/frontend/src/components/LoginForm.tsx b/frontend/src/components/LoginForm.tsx index c1482ece31..b73c3b4e4f 100644 --- a/frontend/src/components/LoginForm.tsx +++ b/frontend/src/components/LoginForm.tsx @@ -26,15 +26,15 @@ export const LoginForm: React.FC = () => {
-

Hitster

-

- Build your music timeline and guess the years in this exciting music game -

+

Music Game Name

+

+ Build your music timeline and guess the years in this exciting music game +

- +
= ({ isOpen, onClose, onLogin, isLoading = false }) => { +export const LoginModal: React.FC = ({ + isOpen, + onClose, + onLogin, + isLoading = false, +}) => { const [email, setEmail] = useState("") const [password, setPassword] = useState("") const [rememberMe, setRememberMe] = useState(false) @@ -25,74 +30,88 @@ export const LoginModal: React.FC = ({ isOpen, onClose, onLogin const handleSubmit = (e: React.FormEvent) => { e.preventDefault() setError("") - if (!email || !password) { setError("Please fill in all fields") return } - onLogin(email, password) } if (!isOpen) return null return ( -
+
{/* Backdrop */} -
+
{/* Modal */} - + {/* Close button */} {/* Header with branding */} - + {/* Logo/Icon area */} -
+
-
+
{/* CSS Music Note */} -
-
-
-
+
+
+
+
-
+
{/* CSS Play Icon */}
-
- - Welcome to Hitster +
+ + Welcome to Music Game Name -

+

Connect with Spotify to start your music timeline game

- + {/* Error message */} - {error && setError("")} />} + {error && ( + setError("")} + /> + )} {/* Login form */}
@@ -126,19 +145,28 @@ export const LoginModal: React.FC = ({ isOpen, onClose, onLogin />
-
+
setRememberMe(e.target.checked)} disabled={isLoading} /> -
- {/* Game info */} -
- +
+
{/* CSS Users Icon */}
@@ -184,7 +216,7 @@ export const LoginModal: React.FC = ({ isOpen, onClose, onLogin
-
+

Ready to play?

Only one player needs to log in. You'll control the game for everyone (2-10 players).

diff --git a/frontend/src/components/OrientationGuard.tsx b/frontend/src/components/OrientationGuard.tsx new file mode 100644 index 0000000000..e097cc7545 --- /dev/null +++ b/frontend/src/components/OrientationGuard.tsx @@ -0,0 +1,64 @@ +import React from "react" + +type Props = { + minWidth?: number // px – när under denna bredd visar vi varningen i porträtt + allowDismiss?: boolean +} + +export const OrientationGuard: React.FC = ({ minWidth = 600, allowDismiss = true }) => { + const [show, setShow] = React.useState(false) + const [dismissed, setDismissed] = React.useState(false) + + React.useEffect(() => { + const mqPortrait = window.matchMedia("(orientation: portrait)") + const check = () => { + const isPortrait = mqPortrait.matches + const isNarrow = window.innerWidth < minWidth + setShow(isPortrait && isNarrow && !dismissed) + } + check() + const onResize = () => check() + mqPortrait.addEventListener?.("change", check) + window.addEventListener("resize", onResize) + return () => { + mqPortrait.removeEventListener?.("change", check) + window.removeEventListener("resize", onResize) + } + }, [minWidth, dismissed]) + + if (!show) return null + + return ( +
+
+
+ {/* liten rotera-ikon */} +
+
+

Rotate your screen

+

+See the whole timeline and stay ahead in the game – rotate your screen to landscape mode. +

+ +
+ {allowDismiss && ( + + )} + +
+
+
+ ) +} diff --git a/frontend/src/index.css b/frontend/src/index.css index ce9b0387b9..46849bc324 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -73,3 +73,13 @@ --font-size-8xl: 6rem; --leading-8xl: 1; --font-size-9xl: 8rem; --leading-9xl: 1; } + +html { + scroll-behavior: smooth; +} + +@media (max-width: 640px) { + html { + font-size: 14px; + } +} \ No newline at end of file diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index e5d15819eb..091eca37bb 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -2,6 +2,7 @@ import React from 'react'; import { Heading, Card, CardHeader, CardContent } from '../ui'; import { StartCard } from '../components/StartCard' import { TimeLineCard } from '../components/TimeLineCard'; +import { OrientationGuard } from '../components/OrientationGuard'; const startData = { year: 1982, @@ -17,10 +18,13 @@ const timelineData = [ ]; export const GameMode: React.FC = () => ( -
- Game Mode +
+ {/* visas i porträtt < 600px */} -Game Mode + + + ( />
- Timeline -
+ Timeline +
{timelineData.map(item => ( - +
+ +
))}
-); \ No newline at end of file +) \ No newline at end of file From 5c6f80612cfff4dc5d62d445dde4a3abc7942bc6 Mon Sep 17 00:00:00 2001 From: Idahel Date: Mon, 11 Aug 2025 13:52:11 +0200 Subject: [PATCH 022/127] login backend + frontend --- backend/src/index.ts | 8 +- frontend/README.md | 91 ++++++++++++++-- frontend/src/App.tsx | 36 ++++++- frontend/src/components/LoginForm.tsx | 80 +++++++++----- frontend/src/config/environment.ts | 19 ++++ frontend/src/hooks/useAuth.ts | 148 ++++++++++++++++++++++++++ frontend/src/pages/Dashboard.tsx | 132 +++++++++++++++++++++++ frontend/src/pages/OAuthCallback.tsx | 49 +++++++++ 8 files changed, 525 insertions(+), 38 deletions(-) create mode 100644 frontend/src/config/environment.ts create mode 100644 frontend/src/pages/Dashboard.tsx create mode 100644 frontend/src/pages/OAuthCallback.tsx diff --git a/backend/src/index.ts b/backend/src/index.ts index 76d24d5224..5696c65461 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -119,7 +119,7 @@ app.get('/callback', async (req: Request, res: Response) => { const storedState = req.session.spotify_auth_state; if (state === null || state !== storedState) { - res.redirect(`${process.env.FRONTEND_URI}/#error=state_mismatch`); + res.redirect(`${process.env.FRONTEND_URI}/login?error=state_mismatch`); } else { req.session.spotify_auth_state = undefined; // Clear state from the session try { @@ -131,11 +131,11 @@ app.get('/callback', async (req: Request, res: Response) => { req.session.refreshToken = refresh_token; req.session.expiresIn = expires_in; - // Redirect to the frontend without sending tokens in the URL - res.redirect(`${process.env.FRONTEND_URI}/dashboard`); + // Redirect to the frontend callback route to handle the OAuth completion + res.redirect(`${process.env.FRONTEND_URI}/callback`); } catch (err) { console.error('Could not get access token:', err); - res.redirect(`${process.env.FRONTEND_URI}/#error=invalid_token`); + res.redirect(`${process.env.FRONTEND_URI}/login?error=invalid_token`); } } }); diff --git a/frontend/README.md b/frontend/README.md index 6239119e73..1b5e9aaf78 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -1,8 +1,87 @@ -# Frontend part of Final Project +# Hitster Frontend -## Designsystem +A music timeline game built with React, TypeScript, and Tailwind CSS. -- Font X -- Primary colors X -- Border radius X -- Spacing X +## Features + +- **Spotify OAuth Integration**: Seamless login with Spotify accounts +- **Protected Routes**: Authentication-based routing for game features +- **Modern UI**: Beautiful, responsive design with Tailwind CSS +- **TypeScript**: Full type safety throughout the application + +## Authentication Flow + +The application uses Spotify OAuth for authentication: + +1. User clicks "Start Game with Spotify" button +2. User is redirected to Spotify for authorization +3. After authorization, user is redirected back to `/callback` +4. The callback page verifies authentication and redirects to `/dashboard` +5. User can now access protected game features + +## Setup + +### Prerequisites + +- Node.js (v16 or higher) +- npm or yarn +- Backend server running on port 8888 + +### Installation + +1. Install dependencies: + ```bash + npm install + ``` + +2. Start the development server: + ```bash + npm run dev + ``` + +3. Open [http://localhost:5173](http://localhost:5173) in your browser + +### Environment Variables + +Create a `.env` file in the frontend directory: + +```env +VITE_BACKEND_URL=http://localhost:8888 +VITE_FRONTEND_URL=http://localhost:5173 +``` + +## Project Structure + +``` +src/ +├── components/ # Reusable UI components +├── config/ # Configuration files +├── hooks/ # Custom React hooks +├── pages/ # Page components +├── ui/ # Base UI components +└── App.tsx # Main application component +``` + +## Key Components + +- **LoginForm**: Main login interface with Spotify OAuth +- **Dashboard**: Protected dashboard for authenticated users +- **OAuthCallback**: Handles OAuth callback from Spotify +- **useAuth**: Authentication hook managing user state + +## Development + +- **Build**: `npm run build` +- **Preview**: `npm run preview` +- **Lint**: `npm run lint` + +## Backend Integration + +This frontend integrates with the Hitster backend server which provides: + +- Spotify OAuth endpoints +- User profile management +- Quiz question API +- Spotify playback controls + +Make sure the backend server is running before testing authentication features. diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 8ee7bc7fd8..ec81558e64 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,15 +1,47 @@ -import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; +import React from 'react'; +import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom'; import { Home } from './pages/Home'; import { GameMode } from './pages/GameMode'; import { Login } from './pages/Login'; +import { Dashboard } from './pages/Dashboard'; +import { OAuthCallback } from './pages/OAuthCallback'; +import { useAuth } from './hooks/useAuth'; + +// Protected Route component +const ProtectedRoute = ({ children }: { children: React.ReactNode }) => { + const { isAuthenticated, isLoading } = useAuth(); + + if (isLoading) { + return ( +
+
+
+

Loading...

+
+
+ ); + } + + return isAuthenticated ? <>{children} : ; +}; export const App = () => { return ( } /> - } /> } /> + } /> + + + + } /> + + + + } /> ); diff --git a/frontend/src/components/LoginForm.tsx b/frontend/src/components/LoginForm.tsx index c1482ece31..fb5297e54a 100644 --- a/frontend/src/components/LoginForm.tsx +++ b/frontend/src/components/LoginForm.tsx @@ -1,25 +1,19 @@ import React from "react" -import { useState } from "react" -import { LoginModal } from "./LoginModal" +import { useAuth } from "../hooks/useAuth" import { Button } from "../ui/Button" export const LoginForm: React.FC = () => { - const [isModalOpen, setIsModalOpen] = useState(false) - const [isLoading, setIsLoading] = useState(false) + const { login, isLoading, error: authError } = useAuth() + + // Get error from URL parameters + const urlParams = new URLSearchParams(window.location.search); + const urlError = urlParams.get('error'); + + // Use URL error if available, otherwise use auth error + const error = urlError || authError; - const handleLogin = async (email: string, password: string) => { - setIsLoading(true) - - // Simulate login process - try { - await new Promise((resolve) => setTimeout(resolve, 2000)) - console.log("Login attempt:", { email, password }) - setIsModalOpen(false) - } catch (error) { - console.error("Login failed:", error) - } finally { - setIsLoading(false) - } + const handleSpotifyLogin = () => { + login() } return ( @@ -32,17 +26,51 @@ export const LoginForm: React.FC = () => {

- -
- setIsModalOpen(false)} - onLogin={handleLogin} - isLoading={isLoading} - /> + {/* Game info */} +
+
+
+
+
+
+
+
+

Ready to play?

+

Connect with Spotify to start your music timeline game. Only one player needs to log in.

+
+
+
+
) } diff --git a/frontend/src/config/environment.ts b/frontend/src/config/environment.ts new file mode 100644 index 0000000000..62ded1d084 --- /dev/null +++ b/frontend/src/config/environment.ts @@ -0,0 +1,19 @@ +// Environment configuration +export const config = { + // Backend API URL + backendUrl: import.meta.env.VITE_BACKEND_URL || 'http://localhost:8888', + + // Frontend URL + frontendUrl: import.meta.env.VITE_FRONTEND_URL || 'http://localhost:5173', + + // App name + appName: 'Hitster', + + // Spotify OAuth scopes + spotifyScopes: [ + 'user-read-private', + 'user-read-email', + 'user-read-playback-state', + 'user-modify-playback-state' + ] +}; \ No newline at end of file diff --git a/frontend/src/hooks/useAuth.ts b/frontend/src/hooks/useAuth.ts index e69de29bb2..ba82e308d8 100644 --- a/frontend/src/hooks/useAuth.ts +++ b/frontend/src/hooks/useAuth.ts @@ -0,0 +1,148 @@ +import { useState, useEffect, useCallback } from 'react'; + +interface User { + id: string; + display_name: string; + email: string; + images?: Array<{ url: string }>; +} + +interface AuthState { + isAuthenticated: boolean; + user: User | null; + isLoading: boolean; + error: string | null; +} + +import { config } from '../config/environment'; + +const BACKEND_URL = config.backendUrl; + +export const useAuth = () => { + const [authState, setAuthState] = useState({ + isAuthenticated: false, + user: null, + isLoading: true, + error: null, + }); + + // Check authentication status on mount + useEffect(() => { + checkAuthStatus(); + }, []); + + const checkAuthStatus = useCallback(async () => { + try { + setAuthState(prev => ({ ...prev, isLoading: true, error: null })); + + const response = await fetch(`${BACKEND_URL}/user-profile`, { + credentials: 'include', + }); + + if (response.ok) { + const user = await response.json(); + setAuthState({ + isAuthenticated: true, + user, + isLoading: false, + error: null, + }); + } else { + setAuthState({ + isAuthenticated: false, + user: null, + isLoading: false, + error: null, + }); + } + } catch (error) { + console.error('Error checking auth status:', error); + setAuthState({ + isAuthenticated: false, + user: null, + isLoading: false, + error: 'Failed to check authentication status', + }); + } + }, []); + + const login = useCallback(() => { + // Redirect to backend login endpoint + window.location.href = `${BACKEND_URL}/login`; + }, []); + + const logout = useCallback(async () => { + try { + const response = await fetch(`${BACKEND_URL}/logout`, { + credentials: 'include', + }); + + if (response.ok) { + setAuthState({ + isAuthenticated: false, + user: null, + isLoading: false, + error: null, + }); + } + } catch (error) { + console.error('Error during logout:', error); + setAuthState(prev => ({ ...prev, error: 'Failed to logout' })); + } + }, []); + + const refreshToken = useCallback(async () => { + try { + const response = await fetch(`${BACKEND_URL}/refresh_token`, { + credentials: 'include', + }); + + if (response.ok) { + // Token refreshed successfully, check auth status again + await checkAuthStatus(); + } else { + // Token refresh failed, user needs to login again + setAuthState({ + isAuthenticated: false, + user: null, + isLoading: false, + error: 'Session expired. Please login again.', + }); + } + } catch (error) { + console.error('Error refreshing token:', error); + setAuthState(prev => ({ ...prev, error: 'Failed to refresh token' })); + } + }, [checkAuthStatus]); + + // Handle OAuth callback + const handleOAuthCallback = useCallback(async () => { + // Check if we're returning from OAuth callback + const urlParams = new URLSearchParams(window.location.search); + const error = urlParams.get('error'); + + if (error) { + setAuthState(prev => ({ ...prev, error })); + return; + } + + // Check auth status after OAuth callback + await checkAuthStatus(); + }, [checkAuthStatus]); + + // Listen for OAuth callback + useEffect(() => { + const urlParams = new URLSearchParams(window.location.search); + if (urlParams.has('error') || window.location.pathname === '/dashboard') { + handleOAuthCallback(); + } + }, [handleOAuthCallback]); + + return { + ...authState, + login, + logout, + refreshToken, + checkAuthStatus, + }; +}; diff --git a/frontend/src/pages/Dashboard.tsx b/frontend/src/pages/Dashboard.tsx new file mode 100644 index 0000000000..7e735aab56 --- /dev/null +++ b/frontend/src/pages/Dashboard.tsx @@ -0,0 +1,132 @@ +import React from "react" +import { useAuth } from "../hooks/useAuth" +import { Button } from "../ui/Button" +import { Card, CardHeader, CardContent } from "../ui/Card" +import { DotPattern } from "../ui/DotPattern" + +export const Dashboard: React.FC = () => { + const { user, logout, isLoading } = useAuth() + + if (isLoading) { + return ( +
+
+
+

Loading your profile...

+
+
+ ) + } + + if (!user) { + return ( +
+
+

Not authenticated

+ +
+
+ ) + } + + return ( +
+ {/* Background Pattern */} + + + {/* Gradient Overlay */} +
+ + {/* Main Content */} +
+ {/* Header */} +
+
+

Welcome back, {user.display_name}!

+

Ready to play Hitster?

+
+ +
+ + {/* User Profile Card */} + + +

Your Profile

+
+ +
+ {user.images && user.images[0] ? ( + Profile + ) : ( +
+ 🎵 +
+ )} +
+

{user.display_name}

+

{user.email}

+
+
+
+
+ + {/* Game Options */} +
+ + +

Quick Play

+
+ +

+ Start a quick game with random questions +

+ +
+
+ + + +

Custom Game

+
+ +

+ Create a custom game with specific settings +

+ +
+
+ + + +

Leaderboard

+
+ +

+ View your game history and scores +

+ +
+
+
+ + {/* Recent Activity */} + + +

Recent Activity

+
+ +

No recent games yet. Start playing to see your activity!

+
+
+
+
+ ) +} + +export default Dashboard \ No newline at end of file diff --git a/frontend/src/pages/OAuthCallback.tsx b/frontend/src/pages/OAuthCallback.tsx new file mode 100644 index 0000000000..6fccb354b2 --- /dev/null +++ b/frontend/src/pages/OAuthCallback.tsx @@ -0,0 +1,49 @@ +import React, { useEffect } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { useAuth } from '../hooks/useAuth'; + +export const OAuthCallback: React.FC = () => { + const navigate = useNavigate(); + const { checkAuthStatus, error } = useAuth(); + + useEffect(() => { + const handleCallback = async () => { + try { + // Check if there's an error in the URL + const urlParams = new URLSearchParams(window.location.search); + const errorParam = urlParams.get('error'); + + if (errorParam) { + console.error('OAuth error:', errorParam); + navigate('/login?error=' + encodeURIComponent(errorParam)); + return; + } + + // Check authentication status + await checkAuthStatus(); + + // Redirect to dashboard after successful authentication + navigate('/dashboard'); + } catch (err) { + console.error('Error handling OAuth callback:', err); + navigate('/login?error=authentication_failed'); + } + }; + + handleCallback(); + }, [checkAuthStatus, navigate]); + + return ( +
+
+
+

Completing authentication...

+ {error && ( +

{error}

+ )} +
+
+ ); +}; + +export default OAuthCallback; \ No newline at end of file From 168604a5036f6e42c305046f84ed78015dba7dc8 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Mon, 11 Aug 2025 15:20:02 +0200 Subject: [PATCH 023/127] Game mode update --- frontend/package.json | 5 +- frontend/src/App.tsx | 2 +- frontend/src/components/CurrentCard.tsx | 50 +++++++++ frontend/src/components/GameBoard.tsx | 116 ++++++++++++++++++++ frontend/src/components/StartCard.tsx | 55 +++++----- frontend/src/components/TimeLineCard.tsx | 38 +++---- frontend/src/components/Timeline.tsx | 42 ++++++++ frontend/src/hooks/useAudio.ts | 13 +++ frontend/src/lib/shuffle.ts | 8 ++ frontend/src/pages/GameMode.tsx | 60 +++-------- frontend/src/services/api.ts | 10 ++ frontend/src/services/spotifyMock.ts | 16 +++ frontend/src/services/tracks.ts | 17 +++ frontend/src/store/game.ts | 129 +++++++++++++++++++++++ frontend/src/types/game.ts | 33 ++++++ 15 files changed, 491 insertions(+), 103 deletions(-) create mode 100644 frontend/src/components/CurrentCard.tsx create mode 100644 frontend/src/components/GameBoard.tsx create mode 100644 frontend/src/components/Timeline.tsx create mode 100644 frontend/src/hooks/useAudio.ts create mode 100644 frontend/src/lib/shuffle.ts create mode 100644 frontend/src/services/api.ts create mode 100644 frontend/src/services/spotifyMock.ts create mode 100644 frontend/src/services/tracks.ts create mode 100644 frontend/src/store/game.ts create mode 100644 frontend/src/types/game.ts diff --git a/frontend/package.json b/frontend/package.json index 37d963e8ff..61e1e2bb30 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -23,12 +23,15 @@ "vite": "^6.3.5" }, "dependencies": { + "@dnd-kit/core": "^6.3.1", + "@dnd-kit/modifiers": "^9.0.0", "@types/react-router-dom": "^5.3.3", "clsx": "^2.1.1", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^7.7.1", "tailwind-merge": "^3.3.1", - "tailwindcss-animate": "^1.0.7" + "tailwindcss-animate": "^1.0.7", + "zustand": "^5.0.7" } } diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 8ee7bc7fd8..51a50b47fa 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,6 +1,6 @@ import { BrowserRouter as Router, Routes, Route } from 'react-router-dom'; import { Home } from './pages/Home'; -import { GameMode } from './pages/GameMode'; +import GameMode from './pages/GameMode'; import { Login } from './pages/Login'; export const App = () => { diff --git a/frontend/src/components/CurrentCard.tsx b/frontend/src/components/CurrentCard.tsx new file mode 100644 index 0000000000..fda0d2a17a --- /dev/null +++ b/frontend/src/components/CurrentCard.tsx @@ -0,0 +1,50 @@ +import React from 'react' +import { useDraggable } from '@dnd-kit/core' +import { Card, CardHeader, CardContent } from '../ui' +import type { TrackCard } from '../types/game' + +// --- Draggable --- +export const CurrentCard: React.FC<{ card: TrackCard; dragging?: boolean }> = ({ card, dragging }) => { + const { attributes, listeners, setNodeRef, transform } = useDraggable({ id: 'current-card' }) + + const style: React.CSSProperties | undefined = transform + ? { transform: `translate3d(${transform.x}px, ${transform.y}px, 0)` } + : undefined + + return ( +
+ + +
Place in timeline
+
+ +
{card.artist}
+
{card.title}
+
?
+
+
+
+ ) +} + +// --- Preview för DragOverlay (INGEN useDraggable här!) --- +export const CurrentCardPreview: React.FC<{ card: TrackCard }> = ({ card }) => ( +
+ + +
Place in timeline
+
+ +
{card.artist}
+
{card.title}
+
?
+
+
+
+) \ No newline at end of file diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx new file mode 100644 index 0000000000..46bf385ae6 --- /dev/null +++ b/frontend/src/components/GameBoard.tsx @@ -0,0 +1,116 @@ +import React from 'react' +import { + DndContext, + PointerSensor, + useSensor, + useSensors, + DragEndEvent, + DragStartEvent, + DragOverlay, +} from '@dnd-kit/core' +import { restrictToWindowEdges } from '@dnd-kit/modifiers' +import { ErrorMessage } from "../ui/ErrorMessage" +import { useGame } from '../store/game' +import { Heading, Button } from '../ui' +import { StartCard } from './StartCard' +import { Timeline } from './Timeline' +import { CurrentCard, CurrentCardPreview } from './CurrentCard' + +export const GameBoard: React.FC = () => { + const { + teams, currentTeamIndex, phase, currentCard, + startGame, startTurn, placeAt, drawAnother, lockIn + } = useGame() + + const sensors = useSensors( + useSensor(PointerSensor, { activationConstraint: { distance: 6 } }) + ) + + const [isDragging, setIsDragging] = React.useState(false) + +const onDragStart = (e: DragStartEvent) => { + if (e.active.id === 'current-card') setIsDragging(true) +} + + const onDragEnd = (e: DragEndEvent) => { + setIsDragging(false) + const overId = e.over?.id as string | undefined + if (!overId) return + if (!overId.startsWith('slot-')) return + const index = Number(overId.replace('slot-', '')) + if (!Number.isFinite(index)) return + placeAt(index) + } + + const team = teams[currentTeamIndex] + + return ( +
+
+ Game Mode +
+ {teams[0].name}: {teams[0].score} — {teams[1].name}: {teams[1].score} +
+
+ + {phase === 'SETUP' && ( + + )} + + {phase !== 'SETUP' && ( + <> + {/* Startkort (första i lagets timeline) */} + {team.timeline[0] && ( + + )} + +
+ Timeline + + + + + {/* Kandidatkort + overlay så drag ser “flytande” ut */} + {phase === 'DRAWN' && currentCard && ( +
+ +
+ )} + + {isDragging && currentCard ? : null} + +
+
+ + {/* Kontroller */} +
+ {phase === 'TURN_START' && ( + + )} + {phase === 'DRAWN' && ( +
+ Drag the card and drop it between two cards in the timeline. +
+ )} + {phase === 'CHOICE_AFTER_CORRECT' && ( + <> + + + + )} +
+ + )} +
+ ) +} diff --git a/frontend/src/components/StartCard.tsx b/frontend/src/components/StartCard.tsx index ff4cb54582..b8848b43b2 100644 --- a/frontend/src/components/StartCard.tsx +++ b/frontend/src/components/StartCard.tsx @@ -14,53 +14,50 @@ export const StartCard: React.FC = ({ title, playerName }) => ( - - {/* Decorative corner elements */} -
+ {/* Dekor – göm på mobil för att spara plats */} +
- -
+
- - {/* Start indicator */} -
- - Start - + + {/* Start-pill */} +
+ Start
- - {/* Year display - elegant style */} - -
+ + {/* År */} + +
{year}
-
+
- - {/* Artist and title */} - -
-
- {artist} -
-
- {title} -
+ + {/* Artist & titel */} + +
+
{artist}
+
{title}
+ {playerName && ( +
+ {playerName} +
+ )}
- - {/* Subtle texture overlay */} +
diff --git a/frontend/src/components/TimeLineCard.tsx b/frontend/src/components/TimeLineCard.tsx index 84d4d16af9..e5567ceaea 100644 --- a/frontend/src/components/TimeLineCard.tsx +++ b/frontend/src/components/TimeLineCard.tsx @@ -16,51 +16,41 @@ export const TimeLineCard: React.FC = ({ isCorrect, isRevealed = true }) => ( - - {/* Subtle pattern overlay */}
- - {/* Year display - prominent at top */} - -
+ + +
{year}
- - {/* Artist and title */} - -
-
+ + +
+
{artist}
-
+
{title}
- - {/* Correct/incorrect indicator */} + {isCorrect !== undefined && ( -
- - {isCorrect ? '✓' : '✗'} - +
+ {isCorrect ? '✓' : '✗'}
)} - - {/* Subtle shine effect */} +
); diff --git a/frontend/src/components/Timeline.tsx b/frontend/src/components/Timeline.tsx new file mode 100644 index 0000000000..be37a8b128 --- /dev/null +++ b/frontend/src/components/Timeline.tsx @@ -0,0 +1,42 @@ +import React from 'react' +import { useDroppable } from '@dnd-kit/core' +import { TimeLineCard } from './TimeLineCard' +import type { TrackCard } from '../types/game' + +const Slot: React.FC<{ id: string }> = ({ id }) => { + const { isOver, setNodeRef } = useDroppable({ id }) + return ( +
+ ) +} + +export const Timeline: React.FC<{ + timeline: TrackCard[] + showSlots?: boolean +}> = ({ timeline, showSlots = true }) => { + const slots = Array.from({ length: timeline.length + 1 }) + + return ( +
+ {slots.map((_, i) => ( + + {/* slot i */} + {showSlots && } + + {/* card i */} + {i < timeline.length && ( +
+ +
+ )} +
+ ))} +
+ ) +} diff --git a/frontend/src/hooks/useAudio.ts b/frontend/src/hooks/useAudio.ts new file mode 100644 index 0000000000..2d18146d08 --- /dev/null +++ b/frontend/src/hooks/useAudio.ts @@ -0,0 +1,13 @@ +import { useEffect } from "react" + +export const useAudio = (url?: string) => { + useEffect(() => { + if (!url) return + const a = new Audio(url) + const play = async () => { + try { await a.play() } catch { /* tyst fallback */ } + } + play() + return () => { a.pause(); a.src = "" } + }, [url]) +} diff --git a/frontend/src/lib/shuffle.ts b/frontend/src/lib/shuffle.ts new file mode 100644 index 0000000000..bbc896b5b1 --- /dev/null +++ b/frontend/src/lib/shuffle.ts @@ -0,0 +1,8 @@ +export const shuffle = (arr: T[]) => { + const a = arr.slice() + for (let i = a.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)) + ;[a[i], a[j]] = [a[j], a[i]] + } + return a +} \ No newline at end of file diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index 091eca37bb..bc76ea1b60 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -1,49 +1,13 @@ -import React from 'react'; -import { Heading, Card, CardHeader, CardContent } from '../ui'; -import { StartCard } from '../components/StartCard' -import { TimeLineCard } from '../components/TimeLineCard'; -import { OrientationGuard } from '../components/OrientationGuard'; - -const startData = { - year: 1982, - artist: 'Michael Jackson', - title: 'Thriller', - playerName: 'Spelare 1', -} - -const timelineData = [ - { id: 1, year: 1982, artist: 'Michael Jackson', title: 'Thriller' }, - { id: 2, year: 1991, artist: 'Nirvana', title: 'Smells Like Teen Spirit' }, - { id: 3, year: 2013, artist: 'Daft Punk', title: 'Get Lucky' }, -]; - -export const GameMode: React.FC = () => ( -
- {/* visas i porträtt < 600px */} - - Game Mode - - - - -
- Timeline -
- {timelineData.map(item => ( -
- -
- ))} -
+// src/pages/GameMode.tsx +import React from 'react' +import { OrientationGuard } from '../components/OrientationGuard' +import { GameBoard } from '../components/GameBoard' + +export default function GameMode() { + return ( +
+ +
-
-) \ No newline at end of file + ) +} diff --git a/frontend/src/services/api.ts b/frontend/src/services/api.ts new file mode 100644 index 0000000000..c767fc2c48 --- /dev/null +++ b/frontend/src/services/api.ts @@ -0,0 +1,10 @@ +const BASE_URL = import.meta.env.VITE_API_URL ?? "http://localhost:3000" + +export async function apiGet(path: string, signal?: AbortSignal): Promise { + const res = await fetch(`${BASE_URL}${path}`, { signal, credentials: "include" }) + if (!res.ok) { + const text = await res.text().catch(() => "") + throw new Error(`GET ${path} failed: ${res.status} ${text}`) + } + return res.json() as Promise +} diff --git a/frontend/src/services/spotifyMock.ts b/frontend/src/services/spotifyMock.ts new file mode 100644 index 0000000000..359731b81c --- /dev/null +++ b/frontend/src/services/spotifyMock.ts @@ -0,0 +1,16 @@ +import { TrackCard } from '@/types/game' + +export const mockTracks: TrackCard[] = [ + { id: '1', title: 'Thriller', artist: 'Michael Jackson', year: 1982, previewUrl: '' }, + { id: '2', title: 'Smells Like Teen Spirit', artist: 'Nirvana', year: 1991, previewUrl: '' }, + { id: '3', title: 'Get Lucky', artist: 'Daft Punk', year: 2013, previewUrl: '' }, + { id: '4', title: 'Like a Prayer', artist: 'Madonna', year: 1989, previewUrl: '' }, + { id: '5', title: 'Wonderwall', artist: 'Oasis', year: 1995, previewUrl: '' }, + { id: '6', title: 'Rolling in the Deep', artist: 'Adele', year: 2010, previewUrl: '' }, + { id: '7', title: 'Hey Ya!', artist: 'OutKast', year: 2003, previewUrl: '' }, + { id: '8', title: 'Seven Nation Army', artist: 'The White Stripes',year: 2003, previewUrl: '' }, + { id: '9', title: 'HUMBLE.', artist: 'Kendrick Lamar', year: 2017, previewUrl: '' }, + { id: '10', title: 'Bad Guy', artist: 'Billie Eilish', year: 2019, previewUrl: '' }, + { id: '11', title: 'Billie Jean', artist: 'Michael Jackson', year: 1983, previewUrl: '' }, + { id: '12', title: 'Poker Face', artist: 'Lady Gaga', year: 2008, previewUrl: '' }, +] diff --git a/frontend/src/services/tracks.ts b/frontend/src/services/tracks.ts new file mode 100644 index 0000000000..c40cf840d1 --- /dev/null +++ b/frontend/src/services/tracks.ts @@ -0,0 +1,17 @@ +import { TrackCard } from '@/types/game' +import { mockTracks } from './spotifyMock' + +// om du redan har src/shuffle.ts – använd den +const shuffle = (a: T[]) => { + const arr = a.slice() + for (let i = arr.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)) + ;[arr[i], arr[j]] = [arr[j], arr[i]] + } + return arr +} + +export async function fetchTracks(limit = 100): Promise { + await new Promise(r => setTimeout(r, 150)) // liten delay för “laddar”-känsla + return shuffle(mockTracks).slice(0, Math.min(limit, mockTracks.length)) +} diff --git a/frontend/src/store/game.ts b/frontend/src/store/game.ts new file mode 100644 index 0000000000..9657d7ea3c --- /dev/null +++ b/frontend/src/store/game.ts @@ -0,0 +1,129 @@ +import { create } from "zustand" +import { TrackCard, Team, GameState } from "../types/game" +import { fetchTracks } from "../services/tracks" + +type UIState = { loading: boolean; error: string | null } +type Actions = { + startGame: () => Promise + startTurn: () => Promise + placeAt: (slotIndex: number) => void + drawAnother: () => Promise + lockIn: () => void + nextTeam: () => void + clearError: () => void +} + +const insertAt = (arr: TrackCard[], item: TrackCard, idx: number) => { + const copy = arr.slice() + copy.splice(idx, 0, item) + return copy +} +const isPlacementCorrect = (timeline: TrackCard[], card: TrackCard, i: number) => { + const left = i - 1 >= 0 ? timeline[i - 1].year : undefined + const right = i < timeline.length ? timeline[i]?.year : undefined + return (left === undefined || card.year >= left) && (right === undefined || card.year <= right) +} + +export const useGame = create((set, get) => ({ + deck: [], + discard: [], + teams: [ + { id: "A", name: "Team A", timeline: [], score: 0 }, + { id: "B", name: "Team B", timeline: [], score: 0 }, + ], + currentTeamIndex: 0, + currentCard: undefined, + roundBaselineTimeline: [], + phase: "SETUP", + loading: false, + error: null, + + clearError: () => set({ error: null }), + + startGame: async () => { + set({ loading: true, error: null }) + try { + const deck = await fetchTracks(100) + if (deck.length < 2) throw new Error("Not enough tracks") + const [a, b, ...rest] = deck + set({ + deck: rest, + teams: [ + { id: "A", name: "Team A", timeline: [a], score: 0 }, + { id: "B", name: "Team B", timeline: [b], score: 0 }, + ], + currentTeamIndex: 0, + currentCard: undefined, + roundBaselineTimeline: [], + phase: "TURN_START", + }) + } catch (e: any) { + set({ error: e.message ?? "Failed to load tracks" }) + } finally { + set({ loading: false }) + } + }, + + startTurn: async () => { + const s = get() + if (!s.deck.length) { + await useGame.getState().startGame() // ladda om om däcket tog slut + } + const s2 = get() + const [card, ...rest] = s2.deck + set({ + currentCard: card, + deck: rest, + roundBaselineTimeline: s2.teams[s2.currentTeamIndex].timeline.slice(), + phase: "DRAWN", + }) + }, + + placeAt: (slotIndex) => { + const s = get() + const tIdx = s.currentTeamIndex + const team = s.teams[tIdx] + const card = s.currentCard + if (!card) return + + if (!isPlacementCorrect(team.timeline, card, slotIndex)) { + set({ + teams: s.teams.map((t, i) => (i === tIdx ? { ...t, timeline: s.roundBaselineTimeline.slice() } : t)) as GameState["teams"], + currentCard: undefined, + phase: "PLACED_WRONG", + }) + get().nextTeam() + return + } + + const newTimeline = insertAt(team.timeline, card, slotIndex) + set({ + teams: s.teams.map((t, i) => (i === tIdx ? { ...t, timeline: newTimeline } : t)) as GameState["teams"], + currentCard: undefined, + phase: "CHOICE_AFTER_CORRECT", + }) + }, + + drawAnother: async () => { + await get().startTurn() + }, + + lockIn: () => { + const s = get() + const tIdx = s.currentTeamIndex + set({ + teams: s.teams.map((t, i) => (i === tIdx ? { ...t, score: t.score + 1 } : t)) as GameState["teams"], + phase: "TURN_START", + }) + get().nextTeam() + }, + + nextTeam: () => { + const s = get() + set({ + currentTeamIndex: (s.currentTeamIndex === 0 ? 1 : 0) as 0 | 1, + currentCard: undefined, + phase: "TURN_START", + }) + }, +})) diff --git a/frontend/src/types/game.ts b/frontend/src/types/game.ts new file mode 100644 index 0000000000..15ca0462ee --- /dev/null +++ b/frontend/src/types/game.ts @@ -0,0 +1,33 @@ +export type TrackCard = { + id: string + title: string + artist: string + year: number + previewUrl?: string + imageUrl?: string +} + +export type Team = { + id: 'A' | 'B' + name: string + timeline: TrackCard[] + score: number +} + +export type Phase = + | 'SETUP' + | 'TURN_START' + | 'DRAWN' + | 'WAITING_PLACEMENT' + | 'CHOICE_AFTER_CORRECT' + | 'PLACED_WRONG' + +export type GameState = { + deck: TrackCard[] + discard: TrackCard[] + teams: [Team, Team] + currentTeamIndex: 0 | 1 + currentCard?: TrackCard + roundBaselineTimeline: TrackCard[] // snapshot i början av rundan + phase: Phase +} From 90a1dbcdc93cff7f54746cef9aeb89e1469e3a44 Mon Sep 17 00:00:00 2001 From: Idahel Date: Mon, 11 Aug 2025 16:01:17 +0200 Subject: [PATCH 024/127] Add token status endpoint and enhanced token management --- backend/.env.production | 6 ++ backend/ENVIRONMENT_SETUP.md | 67 +++++++++++++ backend/PRODUCTION_SETUP.md | 66 +++++++++++++ backend/dist/index.js | 156 +++++++++++++++++++++++++------ backend/src/index.ts | 176 +++++++++++++++++++++++++++++------ 5 files changed, 417 insertions(+), 54 deletions(-) create mode 100644 backend/.env.production create mode 100644 backend/ENVIRONMENT_SETUP.md create mode 100644 backend/PRODUCTION_SETUP.md diff --git a/backend/.env.production b/backend/.env.production new file mode 100644 index 0000000000..ec3bb85eb7 --- /dev/null +++ b/backend/.env.production @@ -0,0 +1,6 @@ +CLIENT_ID=0c895e81488842238701db1430b05edf +CLIENT_SECRET=1c3373508b7e43a6bbacf364c9b34121 +REDIRECT_URI=https://project-final-pfy9.onrender.com/callback +FRONTEND_URI=https://banganza.netlify.app +MONGODB_URI=mongodb+srv://idatechnigo:kEypTLpY3WIyokq7@musicquiz.sjwz1ss.mongodb.net/?retryWrites=true&w=majority&appName=musicQuiz +SESSION_SECRET=c8d3e191ba1ee82419090ba63d1d7f76ec6eaac8a736ad73dcf9cf9cb34187cd diff --git a/backend/ENVIRONMENT_SETUP.md b/backend/ENVIRONMENT_SETUP.md new file mode 100644 index 0000000000..4beab8e629 --- /dev/null +++ b/backend/ENVIRONMENT_SETUP.md @@ -0,0 +1,67 @@ +# Environment Setup Guide + +## Critical OAuth Configuration + +To fix the OAuth callback issue, you need to set the correct `REDIRECT_URI` in your environment variables. + +### For Development (Local) +Create a `.env` file in your backend directory with: + +```bash +# Spotify OAuth Configuration +CLIENT_ID=your_spotify_client_id_here +CLIENT_SECRET=your_spotify_client_secret_here +REDIRECT_URI=http://localhost:8888/callback + +# Database Configuration +MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/database_name + +# Frontend Configuration +FRONTEND_URI=http://localhost:5173 + +# Security +SESSION_SECRET=your_very_long_random_secret_string_here + +# Environment +NODE_ENV=development + +# Port +PORT=8888 +``` + +### For Production +Set these environment variables in your Render dashboard: + +```bash +CLIENT_ID=your_spotify_client_id_here +CLIENT_SECRET=your_spotify_client_secret_here +REDIRECT_URI=https://your-backend-url.onrender.com/callback +FRONTEND_URI=https://banganza.netlify.app +MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/database_name +SESSION_SECRET=your_very_long_random_secret_string_here +NODE_ENV=production +PORT=10000 +``` + +## Important Notes + +1. **REDIRECT_URI MUST match your Spotify app settings exactly** + - Development: `http://localhost:8888/callback` + - Production: `https://your-backend-url.onrender.com/callback` + +2. **The OAuth flow is:** + - User clicks login → Frontend → Backend `/login` + - Backend → Spotify OAuth + - Spotify → Backend `/callback` (NOT frontend) + - Backend processes OAuth → Redirects to frontend `/callback` + - Frontend handles completion → Dashboard + +3. **Never set REDIRECT_URI to your frontend URL** - it must point to your backend callback endpoint. + +## Testing the Fix + +1. Set the correct environment variables +2. Restart your backend server +3. Try the OAuth flow again +4. Check the backend console for OAuth logs +5. The callback should now work properly \ No newline at end of file diff --git a/backend/PRODUCTION_SETUP.md b/backend/PRODUCTION_SETUP.md new file mode 100644 index 0000000000..c504ebff4a --- /dev/null +++ b/backend/PRODUCTION_SETUP.md @@ -0,0 +1,66 @@ +# Production Setup Guide + +## Environment Variables Required + +Set these environment variables in your Render dashboard: + +### Spotify OAuth Configuration +``` +CLIENT_ID=your_spotify_client_id_here +CLIENT_SECRET=your_spotify_client_secret_here +REDIRECT_URI=https://your-backend-url.onrender.com/callback +``` + +### Database Configuration +``` +MONGODB_URI=mongodb+srv://username:password@cluster.mongodb.net/database_name +``` + +### Frontend Configuration +``` +FRONTEND_URI=https://banganza.netlify.app +``` + +### Security +``` +SESSION_SECRET=your_very_long_random_secret_string_here +``` + +### Environment +``` +NODE_ENV=production +``` + +### Port (Render will set this automatically) +``` +PORT=10000 +``` + +## Important Notes + +1. **REDIRECT_URI**: Must match exactly what you set in your Spotify app settings +2. **SESSION_SECRET**: Use a long, random string (at least 32 characters) +3. **FRONTEND_URI**: Must include your deployed frontend URL +4. **NODE_ENV**: Must be set to 'production' for secure cookies + +## Deployment Steps + +1. Push your updated code to your repository +2. In Render, ensure all environment variables are set +3. Redeploy your backend service +4. Test the OAuth flow from your deployed frontend + +## Testing + +After deployment, test these endpoints: +- `GET /` - Basic health check +- `GET /health` - Detailed health status +- `GET /login` - Spotify OAuth initiation +- `GET /callback` - OAuth callback handling + +## Troubleshooting + +- Check Render logs for any startup errors +- Verify all environment variables are set correctly +- Ensure your Spotify app redirect URI matches exactly +- Check that your MongoDB connection string is valid \ No newline at end of file diff --git a/backend/dist/index.js b/backend/dist/index.js index 877687c562..6ed5f7728e 100644 --- a/backend/dist/index.js +++ b/backend/dist/index.js @@ -15,6 +15,10 @@ const requiredEnvVars = [ 'FRONTEND_URI', 'SESSION_SECRET' ]; +// Log environment info for debugging +console.log('Environment:', process.env.NODE_ENV || 'development'); +console.log('Frontend URI:', process.env.FRONTEND_URI || 'http://localhost:5173'); +console.log('Backend Port:', process.env.PORT || 8888); for (const envVar of requiredEnvVars) { if (!process.env[envVar]) { console.error(`Error: The environment variable ${envVar} is missing`); @@ -22,11 +26,16 @@ for (const envVar of requiredEnvVars) { } } const app = express(); -const port = 8888; +const port = process.env.PORT || 8888; // Middleware app.use(cors({ - origin: process.env.FRONTEND_URI, // Allow only your frontend - credentials: true // Allow cookies + origin: [ + process.env.FRONTEND_URI || 'http://localhost:5173', + 'https://banganza.netlify.app' // Add your deployed frontend + ], + credentials: true, // Allow cookies + methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], + allowedHeaders: ['Content-Type', 'Authorization', 'Cookie'], })); app.use(cookieParser()); app.use(express.json()); // For handling JSON request bodies @@ -35,18 +44,36 @@ app.get('/', (req, res) => { res.json({ message: 'Backend server is running!', status: 'ok', - timestamp: new Date().toISOString() + environment: process.env.NODE_ENV || 'development', + timestamp: new Date().toISOString(), + frontend: process.env.FRONTEND_URI || 'http://localhost:5173' }); }); +// Additional health check for production monitoring +app.get('/health', (req, res) => { + const health = { + status: 'ok', + timestamp: new Date().toISOString(), + uptime: process.uptime(), + environment: process.env.NODE_ENV || 'development', + database: mongoose.connection.readyState === 1 ? 'connected' : 'disconnected' + }; + if (health.database === 'disconnected') { + health.status = 'warning'; + } + res.json(health); +}); app.use(session({ secret: process.env.SESSION_SECRET, - resave: false, - saveUninitialized: false, + resave: true, // Changed to true to ensure session is saved + saveUninitialized: true, // Changed to true to save new sessions cookie: { httpOnly: true, // Improve security by making the cookie inaccessible to JavaScript secure: process.env.NODE_ENV === 'production', // Use secure cookies only in production + sameSite: process.env.NODE_ENV === 'production' ? 'none' : 'lax', // Required for cross-origin cookies in production maxAge: 60 * 60 * 1000 // 1 hour - } + }, + name: 'spotify-session' // Give the session a specific name })); // Connect to MongoDB mongoose.connect(process.env.MONGODB_URI) @@ -80,6 +107,10 @@ const generateRandomString = (length) => { app.get('/login', (req, res) => { const state = generateRandomString(16); req.session.spotify_auth_state = state; // Save state in the session + console.log('OAuth login initiated with state:', state); + console.log('Session ID:', req.sessionID); + console.log('Frontend URI:', process.env.FRONTEND_URI); + console.log('Session data before redirect:', req.session); // Required scopes to control the user's Spotify app and read playback status const scope = [ 'user-read-private', @@ -87,31 +118,69 @@ app.get('/login', (req, res) => { 'user-read-playback-state', 'user-modify-playback-state' ]; - res.redirect(spotifyApi.createAuthorizeURL(scope, state)); + const authUrl = spotifyApi.createAuthorizeURL(scope, state); + console.log('Redirecting to Spotify OAuth URL:', authUrl); + // Force session save before redirect + req.session.save((err) => { + if (err) { + console.error('Error saving session:', err); + return res.status(500).json({ error: 'Failed to save session' }); + } + console.log('Session saved successfully, redirecting to Spotify'); + res.redirect(authUrl); + }); }); // 2. Callback after Spotify authentication app.get('/callback', async (req, res) => { const { code, state } = req.query; const storedState = req.session.spotify_auth_state; - if (state === null || state !== storedState) { - res.redirect(`${process.env.FRONTEND_URI}/#error=state_mismatch`); + console.log('OAuth callback received:'); + console.log('- Received state:', state); + console.log('- Stored state:', storedState); + console.log('- Session ID:', req.sessionID); + console.log('- Session data:', req.session); + if (state === null) { + console.error('No state parameter received from Spotify'); + res.redirect(`${process.env.FRONTEND_URI}/login?error=no_state`); + return; } - else { - req.session.spotify_auth_state = undefined; // Clear state from the session - try { - const data = await spotifyApi.authorizationCodeGrant(code); - const { access_token, refresh_token, expires_in } = data.body; - // Save tokens in the session - req.session.accessToken = access_token; - req.session.refreshToken = refresh_token; - req.session.expiresIn = expires_in; - // Redirect to the frontend without sending tokens in the URL - res.redirect(`${process.env.FRONTEND_URI}/dashboard`); - } - catch (err) { - console.error('Could not get access token:', err); - res.redirect(`${process.env.FRONTEND_URI}/#error=invalid_token`); - } + if (!storedState) { + console.error('No stored state found in session'); + res.redirect(`${process.env.FRONTEND_URI}/login?error=no_stored_state`); + return; + } + if (state !== storedState) { + console.error('State mismatch in OAuth callback'); + console.error('- Expected:', storedState); + console.error('- Received:', state); + res.redirect(`${process.env.FRONTEND_URI}/login?error=state_mismatch`); + return; + } + if (!code) { + console.error('No authorization code received from Spotify'); + res.redirect(`${process.env.FRONTEND_URI}/login?error=no_code`); + return; + } + // Clear state from the session + req.session.spotify_auth_state = undefined; + try { + const data = await spotifyApi.authorizationCodeGrant(code); + const { access_token, refresh_token, expires_in } = data.body; + // Save tokens in the session + req.session.accessToken = access_token; + req.session.refreshToken = refresh_token; + req.session.expiresIn = expires_in; + req.session.tokenCreatedAt = Date.now(); // Store timestamp + console.log('OAuth tokens received and stored in session'); + console.log('- Access token length:', access_token ? access_token.length : 0); + console.log('- Refresh token length:', refresh_token ? refresh_token.length : 0); + console.log('- Expires in:', expires_in); + // Redirect to the frontend callback route to handle the OAuth completion + res.redirect(`${process.env.FRONTEND_URI}/callback?success=true`); + } + catch (err) { + console.error('Could not get access token:', err); + res.redirect(`${process.env.FRONTEND_URI}/login?error=invalid_token`); } }); // 3. Refresh access token @@ -126,6 +195,7 @@ app.get('/refresh_token', async (req, res) => { const { access_token, expires_in } = data.body; req.session.accessToken = access_token; req.session.expiresIn = expires_in; + req.session.tokenCreatedAt = Date.now(); // Update timestamp res.json({ success: true }); } catch (err) { @@ -133,6 +203,32 @@ app.get('/refresh_token', async (req, res) => { res.status(500).json({ error: 'Could not refresh access token' }); } }); +// 3.5. Check token status +app.get('/token-status', (req, res) => { + const { accessToken, expiresIn, tokenCreatedAt } = req.session; + if (!accessToken || !expiresIn || !tokenCreatedAt) { + return res.status(401).json({ + valid: false, + reason: 'No tokens in session', + needsRefresh: false + }); + } + const now = Date.now(); + const tokenAge = now - tokenCreatedAt; + const timeUntilExpiry = (expiresIn * 1000) - tokenAge; + // Token is valid if it hasn't expired yet + const isValid = timeUntilExpiry > 0; + // Suggest refresh if token expires in less than 5 minutes + const needsRefresh = timeUntilExpiry < (5 * 60 * 1000); + res.json({ + valid: isValid, + reason: isValid ? 'Token is valid' : 'Token has expired', + needsRefresh, + timeUntilExpiry: Math.max(0, timeUntilExpiry), + expiresIn: expiresIn * 1000, + tokenAge + }); +}); // 4. Get user profile (via backend session) app.get('/user-profile', async (req, res) => { try { @@ -380,7 +476,13 @@ async function populateQuizQuestionsFromPlaylist() { } // Start the server app.listen(port, () => { - console.log(`Backend server is running on http://localhost:${port}`); + console.log(`Backend server is running on port ${port}`); + if (process.env.NODE_ENV === 'production') { + console.log('Production mode enabled'); + } + else { + console.log(`Development mode: http://localhost:${port}`); + } }).on('error', (err) => { console.error('Error starting the server:', err); process.exit(1); diff --git a/backend/src/index.ts b/backend/src/index.ts index 5696c65461..401a923033 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -17,6 +17,11 @@ const requiredEnvVars = [ 'SESSION_SECRET' ]; +// Log environment info for debugging +console.log('Environment:', process.env.NODE_ENV || 'development'); +console.log('Frontend URI:', process.env.FRONTEND_URI || 'http://localhost:5173'); +console.log('Backend Port:', process.env.PORT || 8888); + for (const envVar of requiredEnvVars) { if (!process.env[envVar]) { console.error(`Error: The environment variable ${envVar} is missing`); @@ -25,7 +30,7 @@ for (const envVar of requiredEnvVars) { } const app = express(); -const port = 8888; +const port = process.env.PORT || 8888; // Extend the session object with our own properties declare module 'express-session' { @@ -34,13 +39,19 @@ declare module 'express-session' { accessToken?: string; refreshToken?: string; expiresIn?: number; + tokenCreatedAt?: number; // Add timestamp when token was created } } // Middleware app.use(cors({ - origin: process.env.FRONTEND_URI, // Allow only your frontend - credentials: true // Allow cookies + origin: [ + process.env.FRONTEND_URI || 'http://localhost:5173', + 'https://banganza.netlify.app' // Add your deployed frontend + ], + credentials: true, // Allow cookies + methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], + allowedHeaders: ['Content-Type', 'Authorization', 'Cookie'], })); app.use(cookieParser()); app.use(express.json()); // For handling JSON request bodies @@ -50,19 +61,40 @@ app.get('/', (req: Request, res: Response) => { res.json({ message: 'Backend server is running!', status: 'ok', - timestamp: new Date().toISOString() + environment: process.env.NODE_ENV || 'development', + timestamp: new Date().toISOString(), + frontend: process.env.FRONTEND_URI || 'http://localhost:5173' }); }); +// Additional health check for production monitoring +app.get('/health', (req: Request, res: Response) => { + const health = { + status: 'ok', + timestamp: new Date().toISOString(), + uptime: process.uptime(), + environment: process.env.NODE_ENV || 'development', + database: mongoose.connection.readyState === 1 ? 'connected' : 'disconnected' + }; + + if (health.database === 'disconnected') { + health.status = 'warning'; + } + + res.json(health); +}); + app.use(session({ secret: process.env.SESSION_SECRET as string, - resave: false, - saveUninitialized: false, + resave: true, // Changed to true to ensure session is saved + saveUninitialized: true, // Changed to true to save new sessions cookie: { httpOnly: true, // Improve security by making the cookie inaccessible to JavaScript secure: process.env.NODE_ENV === 'production', // Use secure cookies only in production + sameSite: process.env.NODE_ENV === 'production' ? 'none' : 'lax', // Required for cross-origin cookies in production maxAge: 60 * 60 * 1000 // 1 hour - } + }, + name: 'spotify-session' // Give the session a specific name })); // Connect to MongoDB @@ -102,6 +134,11 @@ app.get('/login', (req: Request, res: Response) => { const state = generateRandomString(16); req.session.spotify_auth_state = state; // Save state in the session + console.log('OAuth login initiated with state:', state); + console.log('Session ID:', req.sessionID); + console.log('Frontend URI:', process.env.FRONTEND_URI); + console.log('Session data before redirect:', req.session); + // Required scopes to control the user's Spotify app and read playback status const scope = [ 'user-read-private', @@ -110,7 +147,18 @@ app.get('/login', (req: Request, res: Response) => { 'user-modify-playback-state' ]; - res.redirect(spotifyApi.createAuthorizeURL(scope, state)); + const authUrl = spotifyApi.createAuthorizeURL(scope, state); + console.log('Redirecting to Spotify OAuth URL:', authUrl); + + // Force session save before redirect + req.session.save((err) => { + if (err) { + console.error('Error saving session:', err); + return res.status(500).json({ error: 'Failed to save session' }); + } + console.log('Session saved successfully, redirecting to Spotify'); + res.redirect(authUrl); + }); }); // 2. Callback after Spotify authentication @@ -118,25 +166,61 @@ app.get('/callback', async (req: Request, res: Response) => { const { code, state } = req.query as { code: string | null; state: string | null }; const storedState = req.session.spotify_auth_state; - if (state === null || state !== storedState) { + console.log('OAuth callback received:'); + console.log('- Received state:', state); + console.log('- Stored state:', storedState); + console.log('- Session ID:', req.sessionID); + console.log('- Session data:', req.session); + + if (state === null) { + console.error('No state parameter received from Spotify'); + res.redirect(`${process.env.FRONTEND_URI}/login?error=no_state`); + return; + } + + if (!storedState) { + console.error('No stored state found in session'); + res.redirect(`${process.env.FRONTEND_URI}/login?error=no_stored_state`); + return; + } + + if (state !== storedState) { + console.error('State mismatch in OAuth callback'); + console.error('- Expected:', storedState); + console.error('- Received:', state); res.redirect(`${process.env.FRONTEND_URI}/login?error=state_mismatch`); - } else { - req.session.spotify_auth_state = undefined; // Clear state from the session - try { - const data = await spotifyApi.authorizationCodeGrant(code as string); - const { access_token, refresh_token, expires_in } = data.body; - - // Save tokens in the session - req.session.accessToken = access_token; - req.session.refreshToken = refresh_token; - req.session.expiresIn = expires_in; - - // Redirect to the frontend callback route to handle the OAuth completion - res.redirect(`${process.env.FRONTEND_URI}/callback`); - } catch (err) { - console.error('Could not get access token:', err); - res.redirect(`${process.env.FRONTEND_URI}/login?error=invalid_token`); - } + return; + } + + if (!code) { + console.error('No authorization code received from Spotify'); + res.redirect(`${process.env.FRONTEND_URI}/login?error=no_code`); + return; + } + + // Clear state from the session + req.session.spotify_auth_state = undefined; + + try { + const data = await spotifyApi.authorizationCodeGrant(code); + const { access_token, refresh_token, expires_in } = data.body; + + // Save tokens in the session + req.session.accessToken = access_token; + req.session.refreshToken = refresh_token; + req.session.expiresIn = expires_in; + req.session.tokenCreatedAt = Date.now(); // Store timestamp + + console.log('OAuth tokens received and stored in session'); + console.log('- Access token length:', access_token ? access_token.length : 0); + console.log('- Refresh token length:', refresh_token ? refresh_token.length : 0); + console.log('- Expires in:', expires_in); + + // Redirect to the frontend callback route to handle the OAuth completion + res.redirect(`${process.env.FRONTEND_URI}/callback?success=true`); + } catch (err) { + console.error('Could not get access token:', err); + res.redirect(`${process.env.FRONTEND_URI}/login?error=invalid_token`); } }); @@ -153,6 +237,7 @@ app.get('/refresh_token', async (req: Request, res: Response) => { req.session.accessToken = access_token; req.session.expiresIn = expires_in; + req.session.tokenCreatedAt = Date.now(); // Update timestamp res.json({ success: true }); } catch (err) { console.error('Could not refresh access token:', err); @@ -160,6 +245,38 @@ app.get('/refresh_token', async (req: Request, res: Response) => { } }); +// 3.5. Check token status +app.get('/token-status', (req: Request, res: Response) => { + const { accessToken, expiresIn, tokenCreatedAt } = req.session; + + if (!accessToken || !expiresIn || !tokenCreatedAt) { + return res.status(401).json({ + valid: false, + reason: 'No tokens in session', + needsRefresh: false + }); + } + + const now = Date.now(); + const tokenAge = now - tokenCreatedAt; + const timeUntilExpiry = (expiresIn * 1000) - tokenAge; + + // Token is valid if it hasn't expired yet + const isValid = timeUntilExpiry > 0; + + // Suggest refresh if token expires in less than 5 minutes + const needsRefresh = timeUntilExpiry < (5 * 60 * 1000); + + res.json({ + valid: isValid, + reason: isValid ? 'Token is valid' : 'Token has expired', + needsRefresh, + timeUntilExpiry: Math.max(0, timeUntilExpiry), + expiresIn: expiresIn * 1000, + tokenAge + }); +}); + // 4. Get user profile (via backend session) app.get('/user-profile', async (req: Request, res: Response) => { try { @@ -446,7 +563,12 @@ async function populateQuizQuestionsFromPlaylist() { // Start the server app.listen(port, () => { - console.log(`Backend server is running on http://localhost:${port}`); + console.log(`Backend server is running on port ${port}`); + if (process.env.NODE_ENV === 'production') { + console.log('Production mode enabled'); + } else { + console.log(`Development mode: http://localhost:${port}`); + } }).on('error', (err) => { console.error('Error starting the server:', err); process.exit(1); From f0b76c2ee7ebebadbbe9bada4f85a6c1b186d292 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Mon, 11 Aug 2025 16:11:16 +0200 Subject: [PATCH 025/127] improving game mode --- frontend/src/components/GameBoard.tsx | 147 +++++++++++++++++------ frontend/src/components/StartCard.tsx | 4 +- frontend/src/components/TimeLineCard.tsx | 4 +- frontend/src/components/Timeline.tsx | 46 ++++--- 4 files changed, 144 insertions(+), 57 deletions(-) diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index 46bf385ae6..2b65cf5698 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -4,73 +4,111 @@ import { PointerSensor, useSensor, useSensors, - DragEndEvent, DragStartEvent, + DragEndEvent, DragOverlay, } from '@dnd-kit/core' import { restrictToWindowEdges } from '@dnd-kit/modifiers' -import { ErrorMessage } from "../ui/ErrorMessage" + import { useGame } from '../store/game' import { Heading, Button } from '../ui' +import { ErrorMessage } from '../ui/ErrorMessage' import { StartCard } from './StartCard' import { Timeline } from './Timeline' import { CurrentCard, CurrentCardPreview } from './CurrentCard' +const TeamPill: React.FC<{ label: string; active?: boolean; score: number }> = ({ label, active, score }) => ( + + {label} + + {score} + + +) + export const GameBoard: React.FC = () => { const { - teams, currentTeamIndex, phase, currentCard, - startGame, startTurn, placeAt, drawAnother, lockIn + teams, + currentTeamIndex, + phase, + currentCard, + startGame, + startTurn, + placeAt, + drawAnother, + lockIn, + loading, + error, + clearError, } = useGame() - const sensors = useSensors( - useSensor(PointerSensor, { activationConstraint: { distance: 6 } }) - ) + const team = teams[currentTeamIndex] + const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 6 } })) const [isDragging, setIsDragging] = React.useState(false) -const onDragStart = (e: DragStartEvent) => { - if (e.active.id === 'current-card') setIsDragging(true) -} + const onDragStart = (e: DragStartEvent) => { + if (e.active.id === 'current-card') setIsDragging(true) + } const onDragEnd = (e: DragEndEvent) => { setIsDragging(false) const overId = e.over?.id as string | undefined - if (!overId) return - if (!overId.startsWith('slot-')) return - const index = Number(overId.replace('slot-', '')) - if (!Number.isFinite(index)) return - placeAt(index) + if (!overId || !overId.startsWith('slot-')) return + const index = Number(overId.slice(5)) + if (Number.isFinite(index)) placeAt(index) } - const team = teams[currentTeamIndex] - return ( -
+
+ {/* Header */}
Game Mode -
- {teams[0].name}: {teams[0].score} — {teams[1].name}: {teams[1].score} +
+ +
+ {/* Errors / loading */} + {loading &&
Loading tracks…
} + {error && ( +
+ + +
+ )} + + {/* Start-knapp */} {phase === 'SETUP' && ( - + )} + {/* Spelbrädet */} {phase !== 'SETUP' && ( <> - {/* Startkort (första i lagets timeline) */} + {/* Pinned start card (endast ett) */} {team.timeline[0] && ( - +
+ +
)} -
- Timeline +
+ Timeline { onDragEnd={onDragEnd} modifiers={[restrictToWindowEdges]} > - + {/* Timeline utan första kortet. Slots visas bara när man drar. */} +
+ +
- {/* Kandidatkort + overlay så drag ser “flytande” ut */} + {/* Drag-kandidat (hemlig) */} {phase === 'DRAWN' && currentCard && ( -
+
)} + + {/* Overlay-preview (fri drag i hela viewporten) */} - {isDragging && currentCard ? : null} + {isDragging && currentCard ? : null}
+ {/* Feedback vid fel */} + {phase === 'PLACED_WRONG' && ( +
+ + Wrong placement! Next team’s turn… +
+ )} + {/* Kontroller */} -
+
{phase === 'TURN_START' && ( - + )} + {phase === 'DRAWN' && ( -
+
Drag the card and drop it between two cards in the timeline.
)} + {phase === 'CHOICE_AFTER_CORRECT' && ( <> - - + + )}
@@ -113,4 +180,4 @@ const onDragStart = (e: DragStartEvent) => { )}
) -} +} \ No newline at end of file diff --git a/frontend/src/components/StartCard.tsx b/frontend/src/components/StartCard.tsx index b8848b43b2..5580e4a736 100644 --- a/frontend/src/components/StartCard.tsx +++ b/frontend/src/components/StartCard.tsx @@ -6,13 +6,15 @@ interface StartCardProps { artist: string; title: string; playerName?: string; + className?: string; } export const StartCard: React.FC = ({ year, artist, title, - playerName + playerName, + className = '', }) => ( = ({ @@ -14,7 +15,8 @@ export const TimeLineCard: React.FC = ({ artist, title, isCorrect, - isRevealed = true + isRevealed, + className = '', }) => ( = ({ id }) => { +type Size = 'sm' | 'md' | 'lg' +const SIZES: Record = { + sm: { card: 'w-[136px] h-[180px]', slot: 'w-2 h-[180px]', gap: 'gap-3' }, + md: { card: 'w-48 h-64', slot: 'w-3 h-64', gap: 'gap-6' }, + lg: { card: 'w-60 h-80', slot: 'w-3 h-80', gap: 'gap-10' }, +} + +type TimelineProps = { + timeline: TrackCard[] + showSlots?: boolean + size?: Size +} + +const Slot: React.FC<{ id: string; className: string }> = ({ id, className }) => { const { isOver, setNodeRef } = useDroppable({ id }) return ( -
+
) } -export const Timeline: React.FC<{ - timeline: TrackCard[] - showSlots?: boolean -}> = ({ timeline, showSlots = true }) => { +export const Timeline: React.FC = ({ timeline, showSlots = true, size = 'md' }) => { + const sz = SIZES[size] const slots = Array.from({ length: timeline.length + 1 }) return ( -
+
{slots.map((_, i) => ( - {/* slot i */} - {showSlots && } - - {/* card i */} + {showSlots && } {i < timeline.length && ( -
+
)} From 9f6bc43d9b5c0b2fa71f8c4f3eacaee069d19316 Mon Sep 17 00:00:00 2001 From: Idahel Date: Mon, 11 Aug 2025 16:15:26 +0200 Subject: [PATCH 026/127] frontend --- frontend/dist/assets/index-CbID9jAG.js | 64 ++++++++++++ frontend/dist/assets/index-aqb3Zr_w.css | 1 + frontend/dist/index.html | 14 +++ frontend/dist/vite.svg | 1 + frontend/src/config/environment.ts | 4 +- frontend/src/hooks/useAuth.ts | 130 +++++++++++++++++++----- frontend/src/pages/OAuthCallback.tsx | 24 ++++- 7 files changed, 203 insertions(+), 35 deletions(-) create mode 100644 frontend/dist/assets/index-CbID9jAG.js create mode 100644 frontend/dist/assets/index-aqb3Zr_w.css create mode 100644 frontend/dist/index.html create mode 100644 frontend/dist/vite.svg diff --git a/frontend/dist/assets/index-CbID9jAG.js b/frontend/dist/assets/index-CbID9jAG.js new file mode 100644 index 0000000000..4e3c2223fd --- /dev/null +++ b/frontend/dist/assets/index-CbID9jAG.js @@ -0,0 +1,64 @@ +(function(){const u=document.createElement("link").relList;if(u&&u.supports&&u.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))c(d);new MutationObserver(d=>{for(const f of d)if(f.type==="childList")for(const y of f.addedNodes)y.tagName==="LINK"&&y.rel==="modulepreload"&&c(y)}).observe(document,{childList:!0,subtree:!0});function a(d){const f={};return d.integrity&&(f.integrity=d.integrity),d.referrerPolicy&&(f.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?f.credentials="include":d.crossOrigin==="anonymous"?f.credentials="omit":f.credentials="same-origin",f}function c(d){if(d.ep)return;d.ep=!0;const f=a(d);fetch(d.href,f)}})();function qc(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var ga={exports:{}},Xr={},va={exports:{}},ie={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Ic;function Sp(){if(Ic)return ie;Ic=1;var i=Symbol.for("react.element"),u=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),c=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),f=Symbol.for("react.provider"),y=Symbol.for("react.context"),E=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),w=Symbol.for("react.memo"),j=Symbol.for("react.lazy"),M=Symbol.iterator;function I(x){return x===null||typeof x!="object"?null:(x=M&&x[M]||x["@@iterator"],typeof x=="function"?x:null)}var ee={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},H=Object.assign,O={};function F(x,R,Y){this.props=x,this.context=R,this.refs=O,this.updater=Y||ee}F.prototype.isReactComponent={},F.prototype.setState=function(x,R){if(typeof x!="object"&&typeof x!="function"&&x!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,x,R,"setState")},F.prototype.forceUpdate=function(x){this.updater.enqueueForceUpdate(this,x,"forceUpdate")};function U(){}U.prototype=F.prototype;function K(x,R,Y){this.props=x,this.context=R,this.refs=O,this.updater=Y||ee}var ne=K.prototype=new U;ne.constructor=K,H(ne,F.prototype),ne.isPureReactComponent=!0;var le=Array.isArray,fe=Object.prototype.hasOwnProperty,ve={current:null},ye={key:!0,ref:!0,__self:!0,__source:!0};function Q(x,R,Y){var q,ae={},se=null,re=null;if(R!=null)for(q in R.ref!==void 0&&(re=R.ref),R.key!==void 0&&(se=""+R.key),R)fe.call(R,q)&&!ye.hasOwnProperty(q)&&(ae[q]=R[q]);var ce=arguments.length-2;if(ce===1)ae.children=Y;else if(1>>1,R=P[x];if(0>>1;xd(ae,A))sed(re,ae)?(P[x]=re,P[se]=A,x=se):(P[x]=ae,P[q]=A,x=q);else if(sed(re,A))P[x]=re,P[se]=A,x=se;else break e}}return X}function d(P,X){var A=P.sortIndex-X.sortIndex;return A!==0?A:P.id-X.id}if(typeof performance=="object"&&typeof performance.now=="function"){var f=performance;i.unstable_now=function(){return f.now()}}else{var y=Date,E=y.now();i.unstable_now=function(){return y.now()-E}}var g=[],w=[],j=1,M=null,I=3,ee=!1,H=!1,O=!1,F=typeof setTimeout=="function"?setTimeout:null,U=typeof clearTimeout=="function"?clearTimeout:null,K=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function ne(P){for(var X=a(w);X!==null;){if(X.callback===null)c(w);else if(X.startTime<=P)c(w),X.sortIndex=X.expirationTime,u(g,X);else break;X=a(w)}}function le(P){if(O=!1,ne(P),!H)if(a(g)!==null)H=!0,Se(fe);else{var X=a(w);X!==null&&me(le,X.startTime-P)}}function fe(P,X){H=!1,O&&(O=!1,U(Q),Q=-1),ee=!0;var A=I;try{for(ne(X),M=a(g);M!==null&&(!(M.expirationTime>X)||P&&!ot());){var x=M.callback;if(typeof x=="function"){M.callback=null,I=M.priorityLevel;var R=x(M.expirationTime<=X);X=i.unstable_now(),typeof R=="function"?M.callback=R:M===a(g)&&c(g),ne(X)}else c(g);M=a(g)}if(M!==null)var Y=!0;else{var q=a(w);q!==null&&me(le,q.startTime-X),Y=!1}return Y}finally{M=null,I=A,ee=!1}}var ve=!1,ye=null,Q=-1,pe=5,Te=-1;function ot(){return!(i.unstable_now()-TeP||125x?(P.sortIndex=A,u(w,P),a(g)===null&&P===a(w)&&(O?(U(Q),Q=-1):O=!0,me(le,A-x))):(P.sortIndex=R,u(g,P),H||ee||(H=!0,Se(fe))),P},i.unstable_shouldYield=ot,i.unstable_wrapCallback=function(P){var X=I;return function(){var A=I;I=X;try{return P.apply(this,arguments)}finally{I=A}}}}(wa)),wa}var Uc;function Pp(){return Uc||(Uc=1,xa.exports=Np()),xa.exports}/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var $c;function jp(){if($c)return lt;$c=1;var i=La(),u=Pp();function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),g=Object.prototype.hasOwnProperty,w=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,j={},M={};function I(e){return g.call(M,e)?!0:g.call(j,e)?!1:w.test(e)?M[e]=!0:(j[e]=!0,!1)}function ee(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function H(e,t,n,r){if(t===null||typeof t>"u"||ee(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function O(e,t,n,r,l,o,s){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=s}var F={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){F[e]=new O(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];F[t]=new O(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){F[e]=new O(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){F[e]=new O(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){F[e]=new O(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){F[e]=new O(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){F[e]=new O(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){F[e]=new O(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){F[e]=new O(e,5,!1,e.toLowerCase(),null,!1,!1)});var U=/[\-:]([a-z])/g;function K(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(U,K);F[t]=new O(t,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(U,K);F[t]=new O(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(U,K);F[t]=new O(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){F[e]=new O(e,1,!1,e.toLowerCase(),null,!1,!1)}),F.xlinkHref=new O("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){F[e]=new O(e,1,!1,e.toLowerCase(),null,!0,!0)});function ne(e,t,n,r){var l=F.hasOwnProperty(t)?F[t]:null;(l!==null?l.type!==0:r||!(2p||l[s]!==o[p]){var h=` +`+l[s].replace(" at new "," at ");return e.displayName&&h.includes("")&&(h=h.replace("",e.displayName)),h}while(1<=s&&0<=p);break}}}finally{Y=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?R(e):""}function ae(e){switch(e.tag){case 5:return R(e.type);case 16:return R("Lazy");case 13:return R("Suspense");case 19:return R("SuspenseList");case 0:case 2:case 15:return e=q(e.type,!1),e;case 11:return e=q(e.type.render,!1),e;case 1:return e=q(e.type,!0),e;default:return""}}function se(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case ye:return"Fragment";case ve:return"Portal";case pe:return"Profiler";case Q:return"StrictMode";case He:return"Suspense";case Xe:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case ot:return(e.displayName||"Context")+".Consumer";case Te:return(e._context.displayName||"Context")+".Provider";case Ye:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case $e:return t=e.displayName||null,t!==null?t:se(e.type)||"Memo";case Se:t=e._payload,e=e._init;try{return se(e(t))}catch{}}return null}function re(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return se(t);case 8:return t===Q?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function ce(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function he(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Fe(e){var t=he(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var l=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(s){r=""+s,o.call(this,s)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(s){r=""+s},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Qt(e){e._valueTracker||(e._valueTracker=Fe(e))}function gn(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=he(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function nl(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Eo(e,t){var n=t.checked;return A({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Ba(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=ce(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function ba(e,t){t=t.checked,t!=null&&ne(e,"checked",t,!1)}function Co(e,t){ba(e,t);var n=ce(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?No(e,t.type,n):t.hasOwnProperty("defaultValue")&&No(e,t.type,ce(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Va(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function No(e,t,n){(t!=="number"||nl(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var dr=Array.isArray;function Tn(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l"+t.valueOf().toString()+"",t=rl.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function fr(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var pr={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Nd=["Webkit","ms","Moz","O"];Object.keys(pr).forEach(function(e){Nd.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),pr[t]=pr[e]})});function Ya(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||pr.hasOwnProperty(e)&&pr[e]?(""+t).trim():t+"px"}function Xa(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,l=Ya(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}var Pd=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Ro(e,t){if(t){if(Pd[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(a(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(a(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(a(61))}if(t.style!=null&&typeof t.style!="object")throw Error(a(62))}}function _o(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Lo=null;function zo(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var To=null,Mn=null,In=null;function Ja(e){if(e=Or(e)){if(typeof To!="function")throw Error(a(280));var t=e.stateNode;t&&(t=Pl(t),To(e.stateNode,e.type,t))}}function Za(e){Mn?In?In.push(e):In=[e]:Mn=e}function qa(){if(Mn){var e=Mn,t=In;if(In=Mn=null,Ja(e),t)for(e=0;e>>=0,e===0?32:31-(Dd(e)/Ad|0)|0}var sl=64,ul=4194304;function vr(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function cl(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,l=e.suspendedLanes,o=e.pingedLanes,s=n&268435455;if(s!==0){var p=s&~l;p!==0?r=vr(p):(o&=s,o!==0&&(r=vr(o)))}else s=n&~l,s!==0?r=vr(s):o!==0&&(r=vr(o));if(r===0)return 0;if(t!==0&&t!==r&&(t&l)===0&&(l=r&-r,o=t&-t,l>=o||l===16&&(o&4194240)!==0))return t;if((r&4)!==0&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function yr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-wt(t),e[t]=n}function bd(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Pr),js=" ",Rs=!1;function _s(e,t){switch(e){case"keyup":return vf.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Ls(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Dn=!1;function xf(e,t){switch(e){case"compositionend":return Ls(t);case"keypress":return t.which!==32?null:(Rs=!0,js);case"textInput":return e=t.data,e===js&&Rs?null:e;default:return null}}function wf(e,t){if(Dn)return e==="compositionend"||!Xo&&_s(e,t)?(e=ks(),hl=Ho=Jt=null,Dn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Ds(n)}}function Us(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Us(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function $s(){for(var e=window,t=nl();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=nl(e.document)}return t}function qo(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function _f(e){var t=$s(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Us(n.ownerDocument.documentElement,n)){if(r!==null&&qo(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var l=n.textContent.length,o=Math.min(r.start,l);r=r.end===void 0?o:Math.min(r.end,l),!e.extend&&o>r&&(l=r,r=o,o=l),l=As(n,o);var s=As(n,r);l&&s&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==s.node||e.focusOffset!==s.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(s.node,s.offset)):(t.setEnd(s.node,s.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,An=null,ei=null,Lr=null,ti=!1;function Bs(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ti||An==null||An!==nl(r)||(r=An,"selectionStart"in r&&qo(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Lr&&_r(Lr,r)||(Lr=r,r=El(ei,"onSelect"),0Vn||(e.current=pi[Vn],pi[Vn]=null,Vn--)}function xe(e,t){Vn++,pi[Vn]=e.current,e.current=t}var tn={},We=en(tn),qe=en(!1),xn=tn;function Hn(e,t){var n=e.type.contextTypes;if(!n)return tn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l={},o;for(o in n)l[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function et(e){return e=e.childContextTypes,e!=null}function jl(){ke(qe),ke(We)}function nu(e,t,n){if(We.current!==tn)throw Error(a(168));xe(We,t),xe(qe,n)}function ru(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var l in r)if(!(l in t))throw Error(a(108,re(e)||"Unknown",l));return A({},n,r)}function Rl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||tn,xn=We.current,xe(We,e),xe(qe,qe.current),!0}function lu(e,t,n){var r=e.stateNode;if(!r)throw Error(a(169));n?(e=ru(e,t,xn),r.__reactInternalMemoizedMergedChildContext=e,ke(qe),ke(We),xe(We,e)):ke(qe),xe(qe,n)}var Ft=null,_l=!1,mi=!1;function ou(e){Ft===null?Ft=[e]:Ft.push(e)}function Bf(e){_l=!0,ou(e)}function nn(){if(!mi&&Ft!==null){mi=!0;var e=0,t=ge;try{var n=Ft;for(ge=1;e>=s,l-=s,Dt=1<<32-wt(t)+l|n<te?(Ue=Z,Z=null):Ue=Z.sibling;var de=_(k,Z,S[te],T);if(de===null){Z===null&&(Z=Ue);break}e&&Z&&de.alternate===null&&t(k,Z),v=o(de,v,te),J===null?G=de:J.sibling=de,J=de,Z=Ue}if(te===S.length)return n(k,Z),Ee&&kn(k,te),G;if(Z===null){for(;tete?(Ue=Z,Z=null):Ue=Z.sibling;var fn=_(k,Z,de.value,T);if(fn===null){Z===null&&(Z=Ue);break}e&&Z&&fn.alternate===null&&t(k,Z),v=o(fn,v,te),J===null?G=fn:J.sibling=fn,J=fn,Z=Ue}if(de.done)return n(k,Z),Ee&&kn(k,te),G;if(Z===null){for(;!de.done;te++,de=S.next())de=z(k,de.value,T),de!==null&&(v=o(de,v,te),J===null?G=de:J.sibling=de,J=de);return Ee&&kn(k,te),G}for(Z=r(k,Z);!de.done;te++,de=S.next())de=D(Z,k,te,de.value,T),de!==null&&(e&&de.alternate!==null&&Z.delete(de.key===null?te:de.key),v=o(de,v,te),J===null?G=de:J.sibling=de,J=de);return e&&Z.forEach(function(kp){return t(k,kp)}),Ee&&kn(k,te),G}function Le(k,v,S,T){if(typeof S=="object"&&S!==null&&S.type===ye&&S.key===null&&(S=S.props.children),typeof S=="object"&&S!==null){switch(S.$$typeof){case fe:e:{for(var G=S.key,J=v;J!==null;){if(J.key===G){if(G=S.type,G===ye){if(J.tag===7){n(k,J.sibling),v=l(J,S.props.children),v.return=k,k=v;break e}}else if(J.elementType===G||typeof G=="object"&&G!==null&&G.$$typeof===Se&&du(G)===J.type){n(k,J.sibling),v=l(J,S.props),v.ref=Fr(k,J,S),v.return=k,k=v;break e}n(k,J);break}else t(k,J);J=J.sibling}S.type===ye?(v=_n(S.props.children,k.mode,T,S.key),v.return=k,k=v):(T=ro(S.type,S.key,S.props,null,k.mode,T),T.ref=Fr(k,v,S),T.return=k,k=T)}return s(k);case ve:e:{for(J=S.key;v!==null;){if(v.key===J)if(v.tag===4&&v.stateNode.containerInfo===S.containerInfo&&v.stateNode.implementation===S.implementation){n(k,v.sibling),v=l(v,S.children||[]),v.return=k,k=v;break e}else{n(k,v);break}else t(k,v);v=v.sibling}v=da(S,k.mode,T),v.return=k,k=v}return s(k);case Se:return J=S._init,Le(k,v,J(S._payload),T)}if(dr(S))return B(k,v,S,T);if(X(S))return W(k,v,S,T);Ml(k,S)}return typeof S=="string"&&S!==""||typeof S=="number"?(S=""+S,v!==null&&v.tag===6?(n(k,v.sibling),v=l(v,S),v.return=k,k=v):(n(k,v),v=ca(S,k.mode,T),v.return=k,k=v),s(k)):n(k,v)}return Le}var Kn=fu(!0),pu=fu(!1),Il=en(null),Ol=null,Yn=null,wi=null;function ki(){wi=Yn=Ol=null}function Si(e){var t=Il.current;ke(Il),e._currentValue=t}function Ei(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Xn(e,t){Ol=e,wi=Yn=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(tt=!0),e.firstContext=null)}function pt(e){var t=e._currentValue;if(wi!==e)if(e={context:e,memoizedValue:t,next:null},Yn===null){if(Ol===null)throw Error(a(308));Yn=e,Ol.dependencies={lanes:0,firstContext:e}}else Yn=Yn.next=e;return t}var Sn=null;function Ci(e){Sn===null?Sn=[e]:Sn.push(e)}function mu(e,t,n,r){var l=t.interleaved;return l===null?(n.next=n,Ci(t)):(n.next=l.next,l.next=n),t.interleaved=n,Ut(e,r)}function Ut(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var rn=!1;function Ni(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function hu(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function $t(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function ln(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,(ue&2)!==0){var l=r.pending;return l===null?t.next=t:(t.next=l.next,l.next=t),r.pending=t,Ut(e,n)}return l=r.interleaved,l===null?(t.next=t,Ci(r)):(t.next=l.next,l.next=t),r.interleaved=t,Ut(e,n)}function Fl(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Uo(e,n)}}function gu(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var l=null,o=null;if(n=n.firstBaseUpdate,n!==null){do{var s={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};o===null?l=o=s:o=o.next=s,n=n.next}while(n!==null);o===null?l=o=t:o=o.next=t}else l=o=t;n={baseState:r.baseState,firstBaseUpdate:l,lastBaseUpdate:o,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Dl(e,t,n,r){var l=e.updateQueue;rn=!1;var o=l.firstBaseUpdate,s=l.lastBaseUpdate,p=l.shared.pending;if(p!==null){l.shared.pending=null;var h=p,C=h.next;h.next=null,s===null?o=C:s.next=C,s=h;var L=e.alternate;L!==null&&(L=L.updateQueue,p=L.lastBaseUpdate,p!==s&&(p===null?L.firstBaseUpdate=C:p.next=C,L.lastBaseUpdate=h))}if(o!==null){var z=l.baseState;s=0,L=C=h=null,p=o;do{var _=p.lane,D=p.eventTime;if((r&_)===_){L!==null&&(L=L.next={eventTime:D,lane:0,tag:p.tag,payload:p.payload,callback:p.callback,next:null});e:{var B=e,W=p;switch(_=t,D=n,W.tag){case 1:if(B=W.payload,typeof B=="function"){z=B.call(D,z,_);break e}z=B;break e;case 3:B.flags=B.flags&-65537|128;case 0:if(B=W.payload,_=typeof B=="function"?B.call(D,z,_):B,_==null)break e;z=A({},z,_);break e;case 2:rn=!0}}p.callback!==null&&p.lane!==0&&(e.flags|=64,_=l.effects,_===null?l.effects=[p]:_.push(p))}else D={eventTime:D,lane:_,tag:p.tag,payload:p.payload,callback:p.callback,next:null},L===null?(C=L=D,h=z):L=L.next=D,s|=_;if(p=p.next,p===null){if(p=l.shared.pending,p===null)break;_=p,p=_.next,_.next=null,l.lastBaseUpdate=_,l.shared.pending=null}}while(!0);if(L===null&&(h=z),l.baseState=h,l.firstBaseUpdate=C,l.lastBaseUpdate=L,t=l.shared.interleaved,t!==null){l=t;do s|=l.lane,l=l.next;while(l!==t)}else o===null&&(l.shared.lanes=0);Nn|=s,e.lanes=s,e.memoizedState=z}}function vu(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=Li.transition;Li.transition={};try{e(!1),t()}finally{ge=n,Li.transition=r}}function Fu(){return mt().memoizedState}function Wf(e,t,n){var r=un(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Du(e))Au(t,n);else if(n=mu(e,t,n,r),n!==null){var l=Ze();Pt(n,e,r,l),Uu(n,t,r)}}function Qf(e,t,n){var r=un(e),l={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Du(e))Au(t,l);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var s=t.lastRenderedState,p=o(s,n);if(l.hasEagerState=!0,l.eagerState=p,kt(p,s)){var h=t.interleaved;h===null?(l.next=l,Ci(t)):(l.next=h.next,h.next=l),t.interleaved=l;return}}catch{}finally{}n=mu(e,t,l,r),n!==null&&(l=Ze(),Pt(n,e,r,l),Uu(n,t,r))}}function Du(e){var t=e.alternate;return e===je||t!==null&&t===je}function Au(e,t){$r=$l=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Uu(e,t,n){if((n&4194240)!==0){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Uo(e,n)}}var Vl={readContext:pt,useCallback:Qe,useContext:Qe,useEffect:Qe,useImperativeHandle:Qe,useInsertionEffect:Qe,useLayoutEffect:Qe,useMemo:Qe,useReducer:Qe,useRef:Qe,useState:Qe,useDebugValue:Qe,useDeferredValue:Qe,useTransition:Qe,useMutableSource:Qe,useSyncExternalStore:Qe,useId:Qe,unstable_isNewReconciler:!1},Gf={readContext:pt,useCallback:function(e,t){return Tt().memoizedState=[e,t===void 0?null:t],e},useContext:pt,useEffect:Ru,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Bl(4194308,4,zu.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Bl(4194308,4,e,t)},useInsertionEffect:function(e,t){return Bl(4,2,e,t)},useMemo:function(e,t){var n=Tt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Tt();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Wf.bind(null,je,e),[r.memoizedState,e]},useRef:function(e){var t=Tt();return e={current:e},t.memoizedState=e},useState:Pu,useDebugValue:Di,useDeferredValue:function(e){return Tt().memoizedState=e},useTransition:function(){var e=Pu(!1),t=e[0];return e=Hf.bind(null,e[1]),Tt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=je,l=Tt();if(Ee){if(n===void 0)throw Error(a(407));n=n()}else{if(n=t(),Ae===null)throw Error(a(349));(Cn&30)!==0||ku(r,t,n)}l.memoizedState=n;var o={value:n,getSnapshot:t};return l.queue=o,Ru(Eu.bind(null,r,o,e),[e]),r.flags|=2048,Vr(9,Su.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=Tt(),t=Ae.identifierPrefix;if(Ee){var n=At,r=Dt;n=(r&~(1<<32-wt(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Br++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=s.createElement(n,{is:r.is}):(e=s.createElement(n),n==="select"&&(s=e,r.multiple?s.multiple=!0:r.size&&(s.size=r.size))):e=s.createElementNS(e,n),e[Lt]=t,e[Ir]=r,oc(e,t,!1,!1),t.stateNode=e;e:{switch(s=_o(n,r),n){case"dialog":we("cancel",e),we("close",e),l=r;break;case"iframe":case"object":case"embed":we("load",e),l=r;break;case"video":case"audio":for(l=0;ltr&&(t.flags|=128,r=!0,Hr(o,!1),t.lanes=4194304)}else{if(!r)if(e=Al(s),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Hr(o,!0),o.tail===null&&o.tailMode==="hidden"&&!s.alternate&&!Ee)return Ge(t),null}else 2*_e()-o.renderingStartTime>tr&&n!==1073741824&&(t.flags|=128,r=!0,Hr(o,!1),t.lanes=4194304);o.isBackwards?(s.sibling=t.child,t.child=s):(n=o.last,n!==null?n.sibling=s:t.child=s,o.last=s)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=_e(),t.sibling=null,n=Pe.current,xe(Pe,r?n&1|2:n&1),t):(Ge(t),null);case 22:case 23:return aa(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&(t.mode&1)!==0?(ut&1073741824)!==0&&(Ge(t),t.subtreeFlags&6&&(t.flags|=8192)):Ge(t),null;case 24:return null;case 25:return null}throw Error(a(156,t.tag))}function tp(e,t){switch(gi(t),t.tag){case 1:return et(t.type)&&jl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Jn(),ke(qe),ke(We),_i(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return ji(t),null;case 13:if(ke(Pe),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(a(340));Gn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ke(Pe),null;case 4:return Jn(),null;case 10:return Si(t.type._context),null;case 22:case 23:return aa(),null;case 24:return null;default:return null}}var Gl=!1,Ke=!1,np=typeof WeakSet=="function"?WeakSet:Set,$=null;function qn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Re(e,t,r)}else n.current=null}function Yi(e,t,n){try{n()}catch(r){Re(e,t,r)}}var sc=!1;function rp(e,t){if(ai=pl,e=$s(),qo(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var l=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var s=0,p=-1,h=-1,C=0,L=0,z=e,_=null;t:for(;;){for(var D;z!==n||l!==0&&z.nodeType!==3||(p=s+l),z!==o||r!==0&&z.nodeType!==3||(h=s+r),z.nodeType===3&&(s+=z.nodeValue.length),(D=z.firstChild)!==null;)_=z,z=D;for(;;){if(z===e)break t;if(_===n&&++C===l&&(p=s),_===o&&++L===r&&(h=s),(D=z.nextSibling)!==null)break;z=_,_=z.parentNode}z=D}n=p===-1||h===-1?null:{start:p,end:h}}else n=null}n=n||{start:0,end:0}}else n=null;for(si={focusedElem:e,selectionRange:n},pl=!1,$=t;$!==null;)if(t=$,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,$=e;else for(;$!==null;){t=$;try{var B=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(B!==null){var W=B.memoizedProps,Le=B.memoizedState,k=t.stateNode,v=k.getSnapshotBeforeUpdate(t.elementType===t.type?W:Et(t.type,W),Le);k.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var S=t.stateNode.containerInfo;S.nodeType===1?S.textContent="":S.nodeType===9&&S.documentElement&&S.removeChild(S.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(a(163))}}catch(T){Re(t,t.return,T)}if(e=t.sibling,e!==null){e.return=t.return,$=e;break}$=t.return}return B=sc,sc=!1,B}function Wr(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var o=l.destroy;l.destroy=void 0,o!==void 0&&Yi(t,n,o)}l=l.next}while(l!==r)}}function Kl(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Xi(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function uc(e){var t=e.alternate;t!==null&&(e.alternate=null,uc(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Lt],delete t[Ir],delete t[fi],delete t[Uf],delete t[$f])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function cc(e){return e.tag===5||e.tag===3||e.tag===4}function dc(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||cc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Ji(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Nl));else if(r!==4&&(e=e.child,e!==null))for(Ji(e,t,n),e=e.sibling;e!==null;)Ji(e,t,n),e=e.sibling}function Zi(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Zi(e,t,n),e=e.sibling;e!==null;)Zi(e,t,n),e=e.sibling}var Be=null,Ct=!1;function on(e,t,n){for(n=n.child;n!==null;)fc(e,t,n),n=n.sibling}function fc(e,t,n){if(_t&&typeof _t.onCommitFiberUnmount=="function")try{_t.onCommitFiberUnmount(al,n)}catch{}switch(n.tag){case 5:Ke||qn(n,t);case 6:var r=Be,l=Ct;Be=null,on(e,t,n),Be=r,Ct=l,Be!==null&&(Ct?(e=Be,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Be.removeChild(n.stateNode));break;case 18:Be!==null&&(Ct?(e=Be,n=n.stateNode,e.nodeType===8?di(e.parentNode,n):e.nodeType===1&&di(e,n),Er(e)):di(Be,n.stateNode));break;case 4:r=Be,l=Ct,Be=n.stateNode.containerInfo,Ct=!0,on(e,t,n),Be=r,Ct=l;break;case 0:case 11:case 14:case 15:if(!Ke&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var o=l,s=o.destroy;o=o.tag,s!==void 0&&((o&2)!==0||(o&4)!==0)&&Yi(n,t,s),l=l.next}while(l!==r)}on(e,t,n);break;case 1:if(!Ke&&(qn(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(p){Re(n,t,p)}on(e,t,n);break;case 21:on(e,t,n);break;case 22:n.mode&1?(Ke=(r=Ke)||n.memoizedState!==null,on(e,t,n),Ke=r):on(e,t,n);break;default:on(e,t,n)}}function pc(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new np),t.forEach(function(r){var l=fp.bind(null,e,r);n.has(r)||(n.add(r),r.then(l,l))})}}function Nt(e,t){var n=t.deletions;if(n!==null)for(var r=0;rl&&(l=s),r&=~o}if(r=l,r=_e()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*op(r/1960))-r,10e?16:e,sn===null)var r=!1;else{if(e=sn,sn=null,ql=0,(ue&6)!==0)throw Error(a(331));var l=ue;for(ue|=4,$=e.current;$!==null;){var o=$,s=o.child;if(($.flags&16)!==0){var p=o.deletions;if(p!==null){for(var h=0;h_e()-ta?jn(e,0):ea|=n),rt(e,t)}function Pc(e,t){t===0&&((e.mode&1)===0?t=1:(t=ul,ul<<=1,(ul&130023424)===0&&(ul=4194304)));var n=Ze();e=Ut(e,t),e!==null&&(yr(e,t,n),rt(e,n))}function dp(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Pc(e,n)}function fp(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(a(314))}r!==null&&r.delete(t),Pc(e,n)}var jc;jc=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||qe.current)tt=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return tt=!1,qf(e,t,n);tt=(e.flags&131072)!==0}else tt=!1,Ee&&(t.flags&1048576)!==0&&iu(t,zl,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Ql(e,t),e=t.pendingProps;var l=Hn(t,We.current);Xn(t,n),l=Ti(null,t,r,e,l,n);var o=Mi();return t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,et(r)?(o=!0,Rl(t)):o=!1,t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,Ni(t),l.updater=Hl,t.stateNode=l,l._reactInternals=t,Ui(t,r,e,n),t=Vi(null,t,r,!0,o,n)):(t.tag=0,Ee&&o&&hi(t),Je(null,t,l,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Ql(e,t),e=t.pendingProps,l=r._init,r=l(r._payload),t.type=r,l=t.tag=mp(r),e=Et(r,e),l){case 0:t=bi(null,t,r,e,n);break e;case 1:t=qu(null,t,r,e,n);break e;case 11:t=Ku(null,t,r,e,n);break e;case 14:t=Yu(null,t,r,Et(r.type,e),n);break e}throw Error(a(306,r,""))}return t;case 0:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Et(r,l),bi(e,t,r,l,n);case 1:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Et(r,l),qu(e,t,r,l,n);case 3:e:{if(ec(t),e===null)throw Error(a(387));r=t.pendingProps,o=t.memoizedState,l=o.element,hu(e,t),Dl(t,r,null,n);var s=t.memoizedState;if(r=s.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:s.cache,pendingSuspenseBoundaries:s.pendingSuspenseBoundaries,transitions:s.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){l=Zn(Error(a(423)),t),t=tc(e,t,r,n,l);break e}else if(r!==l){l=Zn(Error(a(424)),t),t=tc(e,t,r,n,l);break e}else for(st=qt(t.stateNode.containerInfo.firstChild),at=t,Ee=!0,St=null,n=pu(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Gn(),r===l){t=Bt(e,t,n);break e}Je(e,t,r,n)}t=t.child}return t;case 5:return yu(t),e===null&&yi(t),r=t.type,l=t.pendingProps,o=e!==null?e.memoizedProps:null,s=l.children,ui(r,l)?s=null:o!==null&&ui(r,o)&&(t.flags|=32),Zu(e,t),Je(e,t,s,n),t.child;case 6:return e===null&&yi(t),null;case 13:return nc(e,t,n);case 4:return Pi(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Kn(t,null,r,n):Je(e,t,r,n),t.child;case 11:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Et(r,l),Ku(e,t,r,l,n);case 7:return Je(e,t,t.pendingProps,n),t.child;case 8:return Je(e,t,t.pendingProps.children,n),t.child;case 12:return Je(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,l=t.pendingProps,o=t.memoizedProps,s=l.value,xe(Il,r._currentValue),r._currentValue=s,o!==null)if(kt(o.value,s)){if(o.children===l.children&&!qe.current){t=Bt(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var p=o.dependencies;if(p!==null){s=o.child;for(var h=p.firstContext;h!==null;){if(h.context===r){if(o.tag===1){h=$t(-1,n&-n),h.tag=2;var C=o.updateQueue;if(C!==null){C=C.shared;var L=C.pending;L===null?h.next=h:(h.next=L.next,L.next=h),C.pending=h}}o.lanes|=n,h=o.alternate,h!==null&&(h.lanes|=n),Ei(o.return,n,t),p.lanes|=n;break}h=h.next}}else if(o.tag===10)s=o.type===t.type?null:o.child;else if(o.tag===18){if(s=o.return,s===null)throw Error(a(341));s.lanes|=n,p=s.alternate,p!==null&&(p.lanes|=n),Ei(s,n,t),s=o.sibling}else s=o.child;if(s!==null)s.return=o;else for(s=o;s!==null;){if(s===t){s=null;break}if(o=s.sibling,o!==null){o.return=s.return,s=o;break}s=s.return}o=s}Je(e,t,l.children,n),t=t.child}return t;case 9:return l=t.type,r=t.pendingProps.children,Xn(t,n),l=pt(l),r=r(l),t.flags|=1,Je(e,t,r,n),t.child;case 14:return r=t.type,l=Et(r,t.pendingProps),l=Et(r.type,l),Yu(e,t,r,l,n);case 15:return Xu(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Et(r,l),Ql(e,t),t.tag=1,et(r)?(e=!0,Rl(t)):e=!1,Xn(t,n),Bu(t,r,l),Ui(t,r,l,n),Vi(null,t,r,!0,e,n);case 19:return lc(e,t,n);case 22:return Ju(e,t,n)}throw Error(a(156,t.tag))};function Rc(e,t){return as(e,t)}function pp(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function gt(e,t,n,r){return new pp(e,t,n,r)}function ua(e){return e=e.prototype,!(!e||!e.isReactComponent)}function mp(e){if(typeof e=="function")return ua(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Ye)return 11;if(e===$e)return 14}return 2}function dn(e,t){var n=e.alternate;return n===null?(n=gt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function ro(e,t,n,r,l,o){var s=2;if(r=e,typeof e=="function")ua(e)&&(s=1);else if(typeof e=="string")s=5;else e:switch(e){case ye:return _n(n.children,l,o,t);case Q:s=8,l|=8;break;case pe:return e=gt(12,n,t,l|2),e.elementType=pe,e.lanes=o,e;case He:return e=gt(13,n,t,l),e.elementType=He,e.lanes=o,e;case Xe:return e=gt(19,n,t,l),e.elementType=Xe,e.lanes=o,e;case me:return lo(n,l,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Te:s=10;break e;case ot:s=9;break e;case Ye:s=11;break e;case $e:s=14;break e;case Se:s=16,r=null;break e}throw Error(a(130,e==null?e:typeof e,""))}return t=gt(s,n,t,l),t.elementType=e,t.type=r,t.lanes=o,t}function _n(e,t,n,r){return e=gt(7,e,r,t),e.lanes=n,e}function lo(e,t,n,r){return e=gt(22,e,r,t),e.elementType=me,e.lanes=n,e.stateNode={isHidden:!1},e}function ca(e,t,n){return e=gt(6,e,null,t),e.lanes=n,e}function da(e,t,n){return t=gt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function hp(e,t,n,r,l){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Ao(0),this.expirationTimes=Ao(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ao(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function fa(e,t,n,r,l,o,s,p,h){return e=new hp(e,t,n,p,h),t===1?(t=1,o===!0&&(t|=8)):t=0,o=gt(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ni(o),e}function gp(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(u){console.error(u)}}return i(),ya.exports=jp(),ya.exports}var bc;function _p(){if(bc)return fo;bc=1;var i=Rp();return fo.createRoot=i.createRoot,fo.hydrateRoot=i.hydrateRoot,fo}var Lp=_p();const zp=qc(Lp);/** + * react-router v7.8.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */var Vc="popstate";function Tp(i={}){function u(c,d){let{pathname:f,search:y,hash:E}=c.location;return Na("",{pathname:f,search:y,hash:E},d.state&&d.state.usr||null,d.state&&d.state.key||"default")}function a(c,d){return typeof d=="string"?d:qr(d)}return Ip(u,a,null,i)}function Ne(i,u){if(i===!1||i===null||typeof i>"u")throw new Error(u)}function jt(i,u){if(!i){typeof console<"u"&&console.warn(u);try{throw new Error(u)}catch{}}}function Mp(){return Math.random().toString(36).substring(2,10)}function Hc(i,u){return{usr:i.state,key:i.key,idx:u}}function Na(i,u,a=null,c){return{pathname:typeof i=="string"?i:i.pathname,search:"",hash:"",...typeof u=="string"?ir(u):u,state:a,key:u&&u.key||c||Mp()}}function qr({pathname:i="/",search:u="",hash:a=""}){return u&&u!=="?"&&(i+=u.charAt(0)==="?"?u:"?"+u),a&&a!=="#"&&(i+=a.charAt(0)==="#"?a:"#"+a),i}function ir(i){let u={};if(i){let a=i.indexOf("#");a>=0&&(u.hash=i.substring(a),i=i.substring(0,a));let c=i.indexOf("?");c>=0&&(u.search=i.substring(c),i=i.substring(0,c)),i&&(u.pathname=i)}return u}function Ip(i,u,a,c={}){let{window:d=document.defaultView,v5Compat:f=!1}=c,y=d.history,E="POP",g=null,w=j();w==null&&(w=0,y.replaceState({...y.state,idx:w},""));function j(){return(y.state||{idx:null}).idx}function M(){E="POP";let F=j(),U=F==null?null:F-w;w=F,g&&g({action:E,location:O.location,delta:U})}function I(F,U){E="PUSH";let K=Na(O.location,F,U);w=j()+1;let ne=Hc(K,w),le=O.createHref(K);try{y.pushState(ne,"",le)}catch(fe){if(fe instanceof DOMException&&fe.name==="DataCloneError")throw fe;d.location.assign(le)}f&&g&&g({action:E,location:O.location,delta:1})}function ee(F,U){E="REPLACE";let K=Na(O.location,F,U);w=j();let ne=Hc(K,w),le=O.createHref(K);y.replaceState(ne,"",le),f&&g&&g({action:E,location:O.location,delta:0})}function H(F){return Op(F)}let O={get action(){return E},get location(){return i(d,y)},listen(F){if(g)throw new Error("A history only accepts one active listener");return d.addEventListener(Vc,M),g=F,()=>{d.removeEventListener(Vc,M),g=null}},createHref(F){return u(d,F)},createURL:H,encodeLocation(F){let U=H(F);return{pathname:U.pathname,search:U.search,hash:U.hash}},push:I,replace:ee,go(F){return y.go(F)}};return O}function Op(i,u=!1){let a="http://localhost";typeof window<"u"&&(a=window.location.origin!=="null"?window.location.origin:window.location.href),Ne(a,"No window.location.(origin|href) available to create URL");let c=typeof i=="string"?i:qr(i);return c=c.replace(/ $/,"%20"),!u&&c.startsWith("//")&&(c=a+c),new URL(c,a)}function ed(i,u,a="/"){return Fp(i,u,a,!1)}function Fp(i,u,a,c){let d=typeof u=="string"?ir(u):u,f=Wt(d.pathname||"/",a);if(f==null)return null;let y=td(i);Dp(y);let E=null;for(let g=0;E==null&&g{let g={relativePath:E===void 0?f.path||"":E,caseSensitive:f.caseSensitive===!0,childrenIndex:y,route:f};g.relativePath.startsWith("/")&&(Ne(g.relativePath.startsWith(c),`Absolute route path "${g.relativePath}" nested under path "${c}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),g.relativePath=g.relativePath.slice(c.length));let w=Ht([c,g.relativePath]),j=a.concat(g);f.children&&f.children.length>0&&(Ne(f.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${w}".`),td(f.children,u,j,w)),!(f.path==null&&!f.index)&&u.push({path:w,score:Hp(w,f.index),routesMeta:j})};return i.forEach((f,y)=>{var E;if(f.path===""||!((E=f.path)!=null&&E.includes("?")))d(f,y);else for(let g of nd(f.path))d(f,y,g)}),u}function nd(i){let u=i.split("/");if(u.length===0)return[];let[a,...c]=u,d=a.endsWith("?"),f=a.replace(/\?$/,"");if(c.length===0)return d?[f,""]:[f];let y=nd(c.join("/")),E=[];return E.push(...y.map(g=>g===""?f:[f,g].join("/"))),d&&E.push(...y),E.map(g=>i.startsWith("/")&&g===""?"/":g)}function Dp(i){i.sort((u,a)=>u.score!==a.score?a.score-u.score:Wp(u.routesMeta.map(c=>c.childrenIndex),a.routesMeta.map(c=>c.childrenIndex)))}var Ap=/^:[\w-]+$/,Up=3,$p=2,Bp=1,bp=10,Vp=-2,Wc=i=>i==="*";function Hp(i,u){let a=i.split("/"),c=a.length;return a.some(Wc)&&(c+=Vp),u&&(c+=$p),a.filter(d=>!Wc(d)).reduce((d,f)=>d+(Ap.test(f)?Up:f===""?Bp:bp),c)}function Wp(i,u){return i.length===u.length&&i.slice(0,-1).every((c,d)=>c===u[d])?i[i.length-1]-u[u.length-1]:0}function Qp(i,u,a=!1){let{routesMeta:c}=i,d={},f="/",y=[];for(let E=0;E{if(j==="*"){let H=E[I]||"";y=f.slice(0,f.length-H.length).replace(/(.)\/+$/,"$1")}const ee=E[I];return M&&!ee?w[j]=void 0:w[j]=(ee||"").replace(/%2F/g,"/"),w},{}),pathname:f,pathnameBase:y,pattern:i}}function Gp(i,u=!1,a=!0){jt(i==="*"||!i.endsWith("*")||i.endsWith("/*"),`Route path "${i}" will be treated as if it were "${i.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${i.replace(/\*$/,"/*")}".`);let c=[],d="^"+i.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(y,E,g)=>(c.push({paramName:E,isOptional:g!=null}),g?"/?([^\\/]+)?":"/([^\\/]+)"));return i.endsWith("*")?(c.push({paramName:"*"}),d+=i==="*"||i==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):a?d+="\\/*$":i!==""&&i!=="/"&&(d+="(?:(?=\\/|$))"),[new RegExp(d,u?void 0:"i"),c]}function Kp(i){try{return i.split("/").map(u=>decodeURIComponent(u).replace(/\//g,"%2F")).join("/")}catch(u){return jt(!1,`The URL path "${i}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${u}).`),i}}function Wt(i,u){if(u==="/")return i;if(!i.toLowerCase().startsWith(u.toLowerCase()))return null;let a=u.endsWith("/")?u.length-1:u.length,c=i.charAt(a);return c&&c!=="/"?null:i.slice(a)||"/"}function Yp(i,u="/"){let{pathname:a,search:c="",hash:d=""}=typeof i=="string"?ir(i):i;return{pathname:a?a.startsWith("/")?a:Xp(a,u):u,search:qp(c),hash:em(d)}}function Xp(i,u){let a=u.replace(/\/+$/,"").split("/");return i.split("/").forEach(d=>{d===".."?a.length>1&&a.pop():d!=="."&&a.push(d)}),a.length>1?a.join("/"):"/"}function ka(i,u,a,c){return`Cannot include a '${i}' character in a manually specified \`to.${u}\` field [${JSON.stringify(c)}]. Please separate it out to the \`to.${a}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function Jp(i){return i.filter((u,a)=>a===0||u.route.path&&u.route.path.length>0)}function za(i){let u=Jp(i);return u.map((a,c)=>c===u.length-1?a.pathname:a.pathnameBase)}function Ta(i,u,a,c=!1){let d;typeof i=="string"?d=ir(i):(d={...i},Ne(!d.pathname||!d.pathname.includes("?"),ka("?","pathname","search",d)),Ne(!d.pathname||!d.pathname.includes("#"),ka("#","pathname","hash",d)),Ne(!d.search||!d.search.includes("#"),ka("#","search","hash",d)));let f=i===""||d.pathname==="",y=f?"/":d.pathname,E;if(y==null)E=a;else{let M=u.length-1;if(!c&&y.startsWith("..")){let I=y.split("/");for(;I[0]==="..";)I.shift(),M-=1;d.pathname=I.join("/")}E=M>=0?u[M]:"/"}let g=Yp(d,E),w=y&&y!=="/"&&y.endsWith("/"),j=(f||y===".")&&a.endsWith("/");return!g.pathname.endsWith("/")&&(w||j)&&(g.pathname+="/"),g}var Ht=i=>i.join("/").replace(/\/\/+/g,"/"),Zp=i=>i.replace(/\/+$/,"").replace(/^\/*/,"/"),qp=i=>!i||i==="?"?"":i.startsWith("?")?i:"?"+i,em=i=>!i||i==="#"?"":i.startsWith("#")?i:"#"+i;function tm(i){return i!=null&&typeof i.status=="number"&&typeof i.statusText=="string"&&typeof i.internal=="boolean"&&"data"in i}var rd=["POST","PUT","PATCH","DELETE"];new Set(rd);var nm=["GET",...rd];new Set(nm);var ar=N.createContext(null);ar.displayName="DataRouter";var wo=N.createContext(null);wo.displayName="DataRouterState";N.createContext(!1);var ld=N.createContext({isTransitioning:!1});ld.displayName="ViewTransition";var rm=N.createContext(new Map);rm.displayName="Fetchers";var lm=N.createContext(null);lm.displayName="Await";var Rt=N.createContext(null);Rt.displayName="Navigation";var el=N.createContext(null);el.displayName="Location";var It=N.createContext({outlet:null,matches:[],isDataRoute:!1});It.displayName="Route";var Ma=N.createContext(null);Ma.displayName="RouteError";function om(i,{relative:u}={}){Ne(sr(),"useHref() may be used only in the context of a component.");let{basename:a,navigator:c}=N.useContext(Rt),{hash:d,pathname:f,search:y}=tl(i,{relative:u}),E=f;return a!=="/"&&(E=f==="/"?a:Ht([a,f])),c.createHref({pathname:E,search:y,hash:d})}function sr(){return N.useContext(el)!=null}function hn(){return Ne(sr(),"useLocation() may be used only in the context of a component."),N.useContext(el).location}var od="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function id(i){N.useContext(Rt).static||N.useLayoutEffect(i)}function Ia(){let{isDataRoute:i}=N.useContext(It);return i?ym():im()}function im(){Ne(sr(),"useNavigate() may be used only in the context of a component.");let i=N.useContext(ar),{basename:u,navigator:a}=N.useContext(Rt),{matches:c}=N.useContext(It),{pathname:d}=hn(),f=JSON.stringify(za(c)),y=N.useRef(!1);return id(()=>{y.current=!0}),N.useCallback((g,w={})=>{if(jt(y.current,od),!y.current)return;if(typeof g=="number"){a.go(g);return}let j=Ta(g,JSON.parse(f),d,w.relative==="path");i==null&&u!=="/"&&(j.pathname=j.pathname==="/"?u:Ht([u,j.pathname])),(w.replace?a.replace:a.push)(j,w.state,w)},[u,a,f,d,i])}N.createContext(null);function tl(i,{relative:u}={}){let{matches:a}=N.useContext(It),{pathname:c}=hn(),d=JSON.stringify(za(a));return N.useMemo(()=>Ta(i,JSON.parse(d),c,u==="path"),[i,d,c,u])}function am(i,u){return ad(i,u)}function ad(i,u,a,c){var U;Ne(sr(),"useRoutes() may be used only in the context of a component.");let{navigator:d}=N.useContext(Rt),{matches:f}=N.useContext(It),y=f[f.length-1],E=y?y.params:{},g=y?y.pathname:"/",w=y?y.pathnameBase:"/",j=y&&y.route;{let K=j&&j.path||"";sd(g,!j||K.endsWith("*")||K.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${g}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. + +Please change the parent to .`)}let M=hn(),I;if(u){let K=typeof u=="string"?ir(u):u;Ne(w==="/"||((U=K.pathname)==null?void 0:U.startsWith(w)),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${w}" but pathname "${K.pathname}" was given in the \`location\` prop.`),I=K}else I=M;let ee=I.pathname||"/",H=ee;if(w!=="/"){let K=w.replace(/^\//,"").split("/");H="/"+ee.replace(/^\//,"").split("/").slice(K.length).join("/")}let O=ed(i,{pathname:H});jt(j||O!=null,`No routes matched location "${I.pathname}${I.search}${I.hash}" `),jt(O==null||O[O.length-1].route.element!==void 0||O[O.length-1].route.Component!==void 0||O[O.length-1].route.lazy!==void 0,`Matched leaf route at location "${I.pathname}${I.search}${I.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let F=fm(O&&O.map(K=>Object.assign({},K,{params:Object.assign({},E,K.params),pathname:Ht([w,d.encodeLocation?d.encodeLocation(K.pathname).pathname:K.pathname]),pathnameBase:K.pathnameBase==="/"?w:Ht([w,d.encodeLocation?d.encodeLocation(K.pathnameBase).pathname:K.pathnameBase])})),f,a,c);return u&&F?N.createElement(el.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...I},navigationType:"POP"}},F):F}function sm(){let i=vm(),u=tm(i)?`${i.status} ${i.statusText}`:i instanceof Error?i.message:JSON.stringify(i),a=i instanceof Error?i.stack:null,c="rgba(200,200,200, 0.5)",d={padding:"0.5rem",backgroundColor:c},f={padding:"2px 4px",backgroundColor:c},y=null;return console.error("Error handled by React Router default ErrorBoundary:",i),y=N.createElement(N.Fragment,null,N.createElement("p",null,"💿 Hey developer 👋"),N.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",N.createElement("code",{style:f},"ErrorBoundary")," or"," ",N.createElement("code",{style:f},"errorElement")," prop on your route.")),N.createElement(N.Fragment,null,N.createElement("h2",null,"Unexpected Application Error!"),N.createElement("h3",{style:{fontStyle:"italic"}},u),a?N.createElement("pre",{style:d},a):null,y)}var um=N.createElement(sm,null),cm=class extends N.Component{constructor(i){super(i),this.state={location:i.location,revalidation:i.revalidation,error:i.error}}static getDerivedStateFromError(i){return{error:i}}static getDerivedStateFromProps(i,u){return u.location!==i.location||u.revalidation!=="idle"&&i.revalidation==="idle"?{error:i.error,location:i.location,revalidation:i.revalidation}:{error:i.error!==void 0?i.error:u.error,location:u.location,revalidation:i.revalidation||u.revalidation}}componentDidCatch(i,u){console.error("React Router caught the following error during render",i,u)}render(){return this.state.error!==void 0?N.createElement(It.Provider,{value:this.props.routeContext},N.createElement(Ma.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function dm({routeContext:i,match:u,children:a}){let c=N.useContext(ar);return c&&c.static&&c.staticContext&&(u.route.errorElement||u.route.ErrorBoundary)&&(c.staticContext._deepestRenderedBoundaryId=u.route.id),N.createElement(It.Provider,{value:i},a)}function fm(i,u=[],a=null,c=null){if(i==null){if(!a)return null;if(a.errors)i=a.matches;else if(u.length===0&&!a.initialized&&a.matches.length>0)i=a.matches;else return null}let d=i,f=a==null?void 0:a.errors;if(f!=null){let g=d.findIndex(w=>w.route.id&&(f==null?void 0:f[w.route.id])!==void 0);Ne(g>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(f).join(",")}`),d=d.slice(0,Math.min(d.length,g+1))}let y=!1,E=-1;if(a)for(let g=0;g=0?d=d.slice(0,E+1):d=[d[0]];break}}}return d.reduceRight((g,w,j)=>{let M,I=!1,ee=null,H=null;a&&(M=f&&w.route.id?f[w.route.id]:void 0,ee=w.route.errorElement||um,y&&(E<0&&j===0?(sd("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),I=!0,H=null):E===j&&(I=!0,H=w.route.hydrateFallbackElement||null)));let O=u.concat(d.slice(0,j+1)),F=()=>{let U;return M?U=ee:I?U=H:w.route.Component?U=N.createElement(w.route.Component,null):w.route.element?U=w.route.element:U=g,N.createElement(dm,{match:w,routeContext:{outlet:g,matches:O,isDataRoute:a!=null},children:U})};return a&&(w.route.ErrorBoundary||w.route.errorElement||j===0)?N.createElement(cm,{location:a.location,revalidation:a.revalidation,component:ee,error:M,children:F(),routeContext:{outlet:null,matches:O,isDataRoute:!0}}):F()},null)}function Oa(i){return`${i} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function pm(i){let u=N.useContext(ar);return Ne(u,Oa(i)),u}function mm(i){let u=N.useContext(wo);return Ne(u,Oa(i)),u}function hm(i){let u=N.useContext(It);return Ne(u,Oa(i)),u}function Fa(i){let u=hm(i),a=u.matches[u.matches.length-1];return Ne(a.route.id,`${i} can only be used on routes that contain a unique "id"`),a.route.id}function gm(){return Fa("useRouteId")}function vm(){var c;let i=N.useContext(Ma),u=mm("useRouteError"),a=Fa("useRouteError");return i!==void 0?i:(c=u.errors)==null?void 0:c[a]}function ym(){let{router:i}=pm("useNavigate"),u=Fa("useNavigate"),a=N.useRef(!1);return id(()=>{a.current=!0}),N.useCallback(async(d,f={})=>{jt(a.current,od),a.current&&(typeof d=="number"?i.navigate(d):await i.navigate(d,{fromRouteId:u,...f}))},[i,u])}var Qc={};function sd(i,u,a){!u&&!Qc[i]&&(Qc[i]=!0,jt(!1,a))}N.memo(xm);function xm({routes:i,future:u,state:a}){return ad(i,void 0,a,u)}function wm({to:i,replace:u,state:a,relative:c}){Ne(sr()," may be used only in the context of a component.");let{static:d}=N.useContext(Rt);jt(!d," must not be used on the initial render in a . This is a no-op, but you should modify your code so the is only ever rendered in response to some user interaction or state change.");let{matches:f}=N.useContext(It),{pathname:y}=hn(),E=Ia(),g=Ta(i,za(f),y,c==="path"),w=JSON.stringify(g);return N.useEffect(()=>{E(JSON.parse(w),{replace:u,state:a,relative:c})},[E,w,c,u,a]),null}function or(i){Ne(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function km({basename:i="/",children:u=null,location:a,navigationType:c="POP",navigator:d,static:f=!1}){Ne(!sr(),"You cannot render a inside another . You should never have more than one in your app.");let y=i.replace(/^\/*/,"/"),E=N.useMemo(()=>({basename:y,navigator:d,static:f,future:{}}),[y,d,f]);typeof a=="string"&&(a=ir(a));let{pathname:g="/",search:w="",hash:j="",state:M=null,key:I="default"}=a,ee=N.useMemo(()=>{let H=Wt(g,y);return H==null?null:{location:{pathname:H,search:w,hash:j,state:M,key:I},navigationType:c}},[y,g,w,j,M,I,c]);return jt(ee!=null,` is not able to match the URL "${g}${w}${j}" because it does not start with the basename, so the won't render anything.`),ee==null?null:N.createElement(Rt.Provider,{value:E},N.createElement(el.Provider,{children:u,value:ee}))}function Sm({children:i,location:u}){return am(Pa(i),u)}function Pa(i,u=[]){let a=[];return N.Children.forEach(i,(c,d)=>{if(!N.isValidElement(c))return;let f=[...u,d];if(c.type===N.Fragment){a.push.apply(a,Pa(c.props.children,f));return}Ne(c.type===or,`[${typeof c.type=="string"?c.type:c.type.name}] is not a component. All component children of must be a or `),Ne(!c.props.index||!c.props.children,"An index route cannot have child routes.");let y={id:c.props.id||f.join("-"),caseSensitive:c.props.caseSensitive,element:c.props.element,Component:c.props.Component,index:c.props.index,path:c.props.path,loader:c.props.loader,action:c.props.action,hydrateFallbackElement:c.props.hydrateFallbackElement,HydrateFallback:c.props.HydrateFallback,errorElement:c.props.errorElement,ErrorBoundary:c.props.ErrorBoundary,hasErrorBoundary:c.props.hasErrorBoundary===!0||c.props.ErrorBoundary!=null||c.props.errorElement!=null,shouldRevalidate:c.props.shouldRevalidate,handle:c.props.handle,lazy:c.props.lazy};c.props.children&&(y.children=Pa(c.props.children,f)),a.push(y)}),a}var vo="get",yo="application/x-www-form-urlencoded";function ko(i){return i!=null&&typeof i.tagName=="string"}function Em(i){return ko(i)&&i.tagName.toLowerCase()==="button"}function Cm(i){return ko(i)&&i.tagName.toLowerCase()==="form"}function Nm(i){return ko(i)&&i.tagName.toLowerCase()==="input"}function Pm(i){return!!(i.metaKey||i.altKey||i.ctrlKey||i.shiftKey)}function jm(i,u){return i.button===0&&(!u||u==="_self")&&!Pm(i)}var po=null;function Rm(){if(po===null)try{new FormData(document.createElement("form"),0),po=!1}catch{po=!0}return po}var _m=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Sa(i){return i!=null&&!_m.has(i)?(jt(!1,`"${i}" is not a valid \`encType\` for \`\`/\`\` and will default to "${yo}"`),null):i}function Lm(i,u){let a,c,d,f,y;if(Cm(i)){let E=i.getAttribute("action");c=E?Wt(E,u):null,a=i.getAttribute("method")||vo,d=Sa(i.getAttribute("enctype"))||yo,f=new FormData(i)}else if(Em(i)||Nm(i)&&(i.type==="submit"||i.type==="image")){let E=i.form;if(E==null)throw new Error('Cannot submit a + + {playbackState?.is_playing ? ( + + ) : ( + + )} + + +
+ + {/* Quick Play Examples */} +
+

Quick Play Examples

+
+ + +
+
+ + {/* Error Display */} + {error && ( +
+

{error}

+
+ )} + + {/* Loading State */} + {isLoading && ( +
+ Loading... +
+ )} + + {/* Refresh Button */} + +
+ ); +}; diff --git a/frontend/src/config/environment.ts b/frontend/src/config/environment.ts index b0e953bb0e..6ff9b54e9f 100644 --- a/frontend/src/config/environment.ts +++ b/frontend/src/config/environment.ts @@ -1,7 +1,7 @@ // Environment configuration export const config = { // Backend API URL - Use production for OAuth, local for development - backendUrl: import.meta.env.VITE_BACKEND_URL || 'https://project-final-pfy9.onrender.com', + backendUrl: import.meta.env.VITE_BACKEND_URL || 'http://127.0.0.1:8888', // Frontend URL frontendUrl: import.meta.env.VITE_FRONTEND_URL || 'http://127.0.0.1:5173', diff --git a/frontend/src/hooks/useAuth.ts b/frontend/src/hooks/useAuth.ts index 41cdf23a69..80a60db966 100644 --- a/frontend/src/hooks/useAuth.ts +++ b/frontend/src/hooks/useAuth.ts @@ -18,7 +18,7 @@ import { config } from '../config/environment'; const BACKEND_URL = config.backendUrl; -export const useAuth = () => { +export const useAuth = (autoCheck = true) => { const [authState, setAuthState] = useState({ isAuthenticated: false, user: null, @@ -71,13 +71,16 @@ export const useAuth = () => { console.log('Token needs refresh, refreshing proactively...'); await refreshToken(); } + } else if (response.status === 401) { + // No valid session exists - this is expected for unauthenticated users + console.log('No valid session found during token status check'); } } catch (error) { console.error('Error checking token status:', error); } }, [refreshToken]); - const checkAuthStatus = useCallback(async () => { + const checkAuthStatus = useCallback(async (isRetry = false) => { try { setAuthState(prev => ({ ...prev, isLoading: true, error: null })); @@ -93,9 +96,9 @@ export const useAuth = () => { // Token is valid but needs refresh, refresh it first console.log('Token needs refresh, refreshing before profile check...'); const refreshSuccess = await refreshToken(); - if (refreshSuccess) { - // Token refreshed successfully, check auth status again - await checkAuthStatus(); + if (refreshSuccess && !isRetry) { + // Token refreshed successfully, check auth status again (but only once) + await checkAuthStatus(true); } return; // checkAuthStatus will be called again after refresh } @@ -104,12 +107,22 @@ export const useAuth = () => { // Token is expired, try to refresh console.log('Token expired, attempting refresh...'); const refreshSuccess = await refreshToken(); - if (refreshSuccess) { - // Token refreshed successfully, check auth status again - await checkAuthStatus(); + if (refreshSuccess && !isRetry) { + // Token refreshed successfully, check auth status again (but only once) + await checkAuthStatus(true); } return; } + } else if (tokenResponse.status === 401) { + // No valid session exists - user is not authenticated + console.log('No valid session found - user not authenticated'); + setAuthState({ + isAuthenticated: false, + user: null, + isLoading: false, + error: null, + }); + return; } // Token is valid, proceed with profile check @@ -125,13 +138,13 @@ export const useAuth = () => { isLoading: false, error: null, }); - } else if (response.status === 401) { - // Token expired or invalid, try to refresh + } else if (response.status === 401 && !isRetry) { + // Token expired or invalid, try to refresh (but only once) console.log('Token expired, attempting refresh...'); const refreshSuccess = await refreshToken(); if (refreshSuccess) { - // Token refreshed successfully, check auth status again - await checkAuthStatus(); + // Token refreshed successfully, check auth status again (but only once) + await checkAuthStatus(true); } } else { setAuthState({ @@ -154,15 +167,20 @@ export const useAuth = () => { // Check authentication status on mount useEffect(() => { - checkAuthStatus(); - - // Set up proactive token refresh every 5 minutes - const interval = setInterval(() => { - checkTokenStatus(); - }, 5 * 60 * 1000); // Check every 5 minutes - - return () => clearInterval(interval); - }, [checkAuthStatus, checkTokenStatus]); + if (autoCheck) { + checkAuthStatus(); + + // Set up proactive token refresh every 5 minutes + const interval = setInterval(() => { + checkTokenStatus(); + }, 5 * 60 * 1000); // Check every 5 minutes + + return () => clearInterval(interval); + } else { + // If autoCheck is false, just set loading to false + setAuthState(prev => ({ ...prev, isLoading: false })); + } + }, [checkAuthStatus, checkTokenStatus, autoCheck]); const login = useCallback(() => { // Redirect to backend login endpoint diff --git a/frontend/src/services/spotifyApi.ts b/frontend/src/services/spotifyApi.ts new file mode 100644 index 0000000000..a7f58ed729 --- /dev/null +++ b/frontend/src/services/spotifyApi.ts @@ -0,0 +1,230 @@ +import { config } from '../config/environment'; + +// Spotify API base URL +const SPOTIFY_API_BASE = 'https://api.spotify.com/v1'; + +// Interface for playback request +interface PlaybackRequest { + trackId?: string; + contextUri?: string; + uris?: string[]; + deviceId?: string; + positionMs?: number; + offset?: { + position?: number; + uri?: string; + }; +} + +// Interface for device information +interface Device { + id: string; + name: string; + type: string; + is_active: boolean; + is_private_session: boolean; + is_restricted: boolean; +} + +// Interface for playback state +interface PlaybackState { + is_playing: boolean; + progress_ms: number; + item: { + id: string; + name: string; + artists: Array<{ name: string }>; + album: { name: string }; + } | null; + device: Device; +} + +/** + * Start or resume playback on the user's active device + * @param request - Playback configuration + * @returns Promise - Success status + */ +export async function startPlayback(request: PlaybackRequest): Promise { + try { + const response = await fetch(`${config.backendUrl}/spotify/play`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + credentials: 'include', + body: JSON.stringify(request), + }); + + if (!response.ok) { + const error = await response.json(); + throw new Error(error.error || 'Failed to start playback'); + } + + return true; + } catch (error) { + console.error('Error starting playback:', error); + throw error; + } +} + +/** + * Pause playback on the user's active device + * @param deviceId - Optional device ID + * @returns Promise - Success status + */ +export async function pausePlayback(deviceId?: string): Promise { + try { + const response = await fetch(`${config.backendUrl}/spotify/pause`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + credentials: 'include', + body: JSON.stringify({ deviceId }), + }); + + if (!response.ok) { + const error = await response.json(); + throw new Error(error.error || 'Failed to pause playback'); + } + + return true; + } catch (error) { + console.error('Error pausing playback:', error); + throw error; + } +} + +/** + * Skip to next track + * @param deviceId - Optional device ID + * @returns Promise - Success status + */ +export async function skipToNext(deviceId?: string): Promise { + try { + const response = await fetch(`${config.backendUrl}/spotify/next`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + credentials: 'include', + body: JSON.stringify({ deviceId }), + }); + + if (!response.ok) { + const error = await response.json(); + throw new Error(error.error || 'Failed to skip to next track'); + } + + return true; + } catch (error) { + console.error('Error skipping to next track:', error); + throw error; + } +} + +/** + * Skip to previous track + * @param deviceId - Optional device ID + * @returns Promise - Success status + */ +export async function skipToPrevious(deviceId?: string): Promise { + try { + const response = await fetch(`${config.backendUrl}/spotify/previous`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + credentials: 'include', + body: JSON.stringify({ deviceId }), + }); + + if (!response.ok) { + const error = await response.json(); + throw new Error(error.error || 'Failed to skip to previous track'); + } + + return true; + } catch (error) { + console.error('Error skipping to previous track:', error); + throw error; + } +} + +/** + * Get available devices + * @returns Promise - List of available devices + */ +export async function getAvailableDevices(): Promise { + try { + const response = await fetch(`${config.backendUrl}/spotify/devices`, { + credentials: 'include', + }); + + if (!response.ok) { + const error = await response.json(); + throw new Error(error.error || 'Failed to get devices'); + } + + const data = await response.json(); + return data.devices || []; + } catch (error) { + console.error('Error getting devices:', error); + throw error; + } +} + +/** + * Get current playback state + * @returns Promise - Current playback state or null if not playing + */ +export async function getCurrentPlaybackState(): Promise { + try { + const response = await fetch(`${config.backendUrl}/spotify/playback-state`, { + credentials: 'include', + }); + + if (!response.ok) { + if (response.status === 204) { + // No content - user not playing anything + return null; + } + const error = await response.json(); + throw new Error(error.error || 'Failed to get playback state'); + } + + return await response.json(); + } catch (error) { + console.error('Error getting playback state:', error); + throw error; + } +} + +/** + * Transfer playback to a specific device + * @param deviceId - Device ID to transfer to + * @param play - Whether to start playing after transfer + * @returns Promise - Success status + */ +export async function transferPlayback(deviceId: string, play: boolean = false): Promise { + try { + const response = await fetch(`${config.backendUrl}/spotify/transfer`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + }, + credentials: 'include', + body: JSON.stringify({ deviceId, play }), + }); + + if (!response.ok) { + const error = await response.json(); + throw new Error(error.error || 'Failed to transfer playback'); + } + + return true; + } catch (error) { + console.error('Error transferring playback:', error); + throw error; + } +} From 40411ca629bb8c942b745fb738c443a7ff76b4cb Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Wed, 13 Aug 2025 12:26:35 +0200 Subject: [PATCH 030/127] Update package.json --- backend/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/package.json b/backend/package.json index 17237ee747..8a97b69bbf 100644 --- a/backend/package.json +++ b/backend/package.json @@ -14,7 +14,7 @@ "axios": "^1.7.2", "cookie-parser": "^1.4.7", "cors": "^2.8.5", - "dotenv": "^16.4.5", + "dotenv": "^16.6.1", "express": "^4.19.2", "express-session": "^1.18.2", "mongoose": "^8.4.1", From 907d713be8622043f82078761d9de6fbc18afa88 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Wed, 13 Aug 2025 17:03:05 +0200 Subject: [PATCH 031/127] Mockup data and improved timeline --- frontend/dist/index.html | 2 +- frontend/index.html | 2 +- frontend/src/assets/banganzalogo.svg | Bin 0 -> 591333 bytes frontend/src/components/GameBoard.tsx | 61 ++++++---- frontend/src/hooks/useAuth.ts | 127 +++++++++++++------- frontend/src/services/normalize.ts | 27 +++++ frontend/src/services/spotifyApi.ts | 164 ++++++++++++++++++-------- frontend/src/services/spotifyMock.ts | 34 +++--- frontend/src/services/tracks.ts | 37 +++--- frontend/src/store/game.ts | 45 +++++-- frontend/src/types/game.ts | 8 +- frontend/src/vite-env.d.ts | 11 ++ 12 files changed, 357 insertions(+), 161 deletions(-) create mode 100644 frontend/src/assets/banganzalogo.svg create mode 100644 frontend/src/services/normalize.ts create mode 100644 frontend/src/vite-env.d.ts diff --git a/frontend/dist/index.html b/frontend/dist/index.html index ed317cee61..b62784879d 100644 --- a/frontend/dist/index.html +++ b/frontend/dist/index.html @@ -2,7 +2,7 @@ - + Starting Pont diff --git a/frontend/index.html b/frontend/index.html index 3390e1a977..13da3c156e 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -2,7 +2,7 @@ - + Starting Pont diff --git a/frontend/src/assets/banganzalogo.svg b/frontend/src/assets/banganzalogo.svg new file mode 100644 index 0000000000000000000000000000000000000000..a2bbad20bc8a76c7a11ef636f996667269ad0109 GIT binary patch literal 591333 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 ^ZO1F{NsmodlZYHHaV~lc-Qe}upE`z`W5HA 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

^ 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

e0T$WfPMs0k+-SI@G7_(s1fw)G67!bQ2p zQ4+r39f6Hwd&udUgVf5C?zP)^tXDtrs55tjNRoMf@z&!$-TUf=yJ(RW3q2@%aYt0U z4IC6@uJ9c5OAXh`R;(>3b4Go>s+M!-Ce|rXI)P<+VJb))91)??buiaM&IHLf2vapA zt8c&cyK>ChuQU=JlBYa;CB2v1trX4uD8-9io^t>H0#L&?hm9sF(yE42a-x!2wqz>h z=R~$~p@D;BV1|v`NIM!XM`E@sdqqo)M&(Dw%az&EQK2nwc8|6czr+(One}8TrK=n+ z(}S=2#8lQitCbe-(553|FDmA4#4uYFgP}I398!DEGq~t?W0%~yKd;k^L=((f)l6P4 z(d}Ot2q;H_a_&rXuV9&oO}cY-@K>9B9IXGO%?VKQx{zXBWgpHd?jt8pY=b0cno(9# za@xt?vd->|7aB#YIoWsxi-H?d)siYM!&$xqw2o>|vUj3Sh$hYK%zmvHy&aTt>+lsG zR_ke1%cTR7qiXqDYK(2}beKPhlIMuQIRXbJ-VkZ{h!BiMNlmmt-9YLcMQW%9-QKcd z3gsOm@ayRSBz3y&O^NyGno;%y6XogGY&+oy+%=mrzY8thUk?Li>0BE0p6M&ky-Rp4 z2aF#D^khzQ(yHYk4J7)Jm<^FiIaueLTD7J9q>tCiONKFNzt5BgG{zFh{w+VxaIvQ* zRV@~aGNF>t+h!)T%+o@X=3)gYh`H8#uNe^(hXdeV>{_qt28k6@ZUYM+G?1U2(WK`9 zi+DooM9ZjG_b;|4ZppYLJchlVv1R78&2IfL&ECt^;i*VfD#u%*EyQ`WQ zH7Rg=1;c(av(?LXO5^!e-54Qehd-GHV^6&R&+K8aU+dI2=#&eJ~Ujvb%HwS2yj z^F}b$6TdKLcgo0bE!Y@mRa(AnTH)pk7v#_AY@TqhsO1$m)`i0BvbM#zf&C;j%?6IG ziUQdtb^6bSzXEe!L#=BBsQhyjnl6ZzDD_uh3%hk(vK#TXqoTn*wtKpu5l~YnA5htO z_^3=EdCl=BnbxTAFFOeooh)8rwcK_DbTdSxc{8_E0o1x70LCfhtto00Iw%&fIt}&{ zO6@u=i!DV}iAV99jMo;Y@KCndwD^+Q`pGc2s+vU3bRvo=`%Fmo@Y<>U)UI0d$c{%8 zwyIK@eqM(;`t#ZwwNr9N$pX*%ZFp6k(NRYOEm1M#Ftjhr*a|c&yEHOv40u1v)zXmg zyg0&|*QUr{<3gDiv=YN6+2*6}Noq_c-%fhK+(dF5gyv+7d88cz-i}mXk)xOP=x|u^LW5 zL9#l1W7TgCrn<0T&2TtFF{n^M7G1@owng@M!S+ef3XGREr_+04+cHhXvY`tPN{cR z(qp}b675tCro&RpFXc4qroK0Uu5WZq!0*$9;Xpe2tEi-_)7^p2U51FYbpi64v?)`n zn8iBu?ADta=HsAf4o)?!;Qbg%QK}qjUxuF%FqTp%TL2g(Ep+n202{746p7ffP1Sl;q^4nza!=2C z>H-aE9?kATMyBwc#9$)KSB~9OT?rCwfaIzHr}=vL<(OSw_Z{-8BT7KrJL>!DJEP)j zJnha_*O%fPIOXhSZ*(DMdHs4z9+BwiJYhSuVczmz zd4Kb|rNelPSvu{vu@un%7iViq-T zA()b2+q(U+;f-Kk8)7oD{gZYpX+UWV0ww#dVU}4(=hYy1&4@Lon6fGw*Pv5{jaj@} zAy38qoLD!myQZ+geSI`Sc%6@nRBRWfoDDyC8jhCpsyP!3wH$GJF?+#=?6AkSAux2y zU?Rw-pBlm!JgP_0K5}~8h+aBC+jA8K;tVJ=M<(F9goX8{ABTd{T9X)a6FB)Ca>8$d z8J|BD45Cw)B@o~u-xn9^_##bSh<#6At#F%r^;nemKRF!uS_(jbOw zyDVpu&Lq1M@W5qh1~oxN_Ua7{CTkJ$eZQjY~>>Mzn@rBAf>o@9omkKoriBNZklwm$FSN4LuH9UJr9z*)C#tL0{d?JMd~QjS~+a<{OGcuygn1RswT`@08)p7+MtzwyJDlI|H_-l zv?oT#20Obm88uTp2G^gy)9Kfv7oaEx# zds|U38_Xj2(P%q~OAi3s7WgV=VJov!;dNP(?jsxQWu5^dbCO3a=18%lw5hKs#1fTs zsvY8#*w--I#ZF0IaNTYOE)x#4I$>hOkXn<38Eo_sP@>UZ%A}C6G6_fM^y+1GIeF`8 zYBcf_L@(-^LqXeC9;NzeMTk}jyku_bYUj0ORwpP2@qwDR4P=V&==B1=9FOX#>!sq|3Wb94Y#2KIk=~=0iSoG-Xy+g7&7EWWfGG+$ z4-R|j4^;mbt8zS;i%V#4N|GPK6Gy4OAde3%iFM+R`~a%$Bn@>-j5CLIcNx{YFbh1e z#2C7g2M%`mrRB)fxH*H|YKknh>t%VNu>ZyX#OUTpJWz1PZXzY5)sp#=^^#=mY8t%L zD$vWQB6zH;xpC6k^i4Aw&S#Xs?iw(1awQS^m3K4R5|LWPx zr!OAMNuM*nzkB86fyTF<_{EMQ`S_I!pgjZY%IMuYEk~YoMP|M{cW?1^7btZPq~%cF zY?N<2aS-MG6jR|eymXc(NRwlxHOJx&vlyx3O}|0V&!)Xeysd<+3AT2LL(R9%^D9;2 z>P$>W{}9IN!skq#%MSHoU*vxJdI)zCUnT>;!4s+|+K_(qx6k5&A`pG0uA>O=jlz?w z4hb^up9Wc8`!XsGyTq!RUnhmigib^~e&gSvE6&INo*w}^Bp29& zRkrTpOd~)v0dZoZ!xsSN4+WG(%}%SK1kV3sy+&o^xvWabf?C@{Ou4i?tC8iO@+>VF z?8_?>C#N+{ufpO-@6j>&v4}qSrOAyZj3c2D=eOM6E{#scj7kkmrCTLoCTr_pBOMGj za-}>l=m5a-*~MT9B}sq499msv0D`wv@0R+pL^Uvcoh1d_Ba}DEEvE1|-SBv*uC966r-S zUPpq%;^RMe4yY2b&Q^IYtSi_(jf)Arw?oSPb>d!$S88n)&$^wqA@nYk6DnaSI%nP* z#zVdQ5+75$1aAcwl&kPPqNc2z9tci znX`Z!$px92y0Udo%4TthasCMeG+|Up#p7$p^2VEsi^Ddhl$Y;hY%^w1D#u7$Tf*^zWl9m@md- z$zWF|FU?%Hd-GwUNElb@$ojLvTCyFlt`Mu zz_c}w?=d?K!n+TKPSq0nL=+}aytbpz-fLy=0YSE;s zI|kCJw0j{{i2&g4Z+33waOYo0xDNw)^pU`r?t5!L$z84b1LPH z6y+1sEkJ^{WIr0}v(u@REJqwAb=#DzDi1cjt^Lh~QZ)e}jEo3-CfpnSVYCBIAivqbuHMA9u_28rAl*Y_1?~L@EZ6uhJmslz)C{)GQ^Mfu2 zowztsdqCpKGBdK9EzWO6FVuh`x7P7YIEC!QYQ9&J4`Hli5rl+rUij%r??9>~JT&RD zN9V$%X$6M11=<+cSU)S8sq6C3F_)2qZE9vMbbSe$zSmUR*WKuiRZA1e>2{_^w9a#I zoA5M9GDcGs&LvE0Y3!|@zN(E%fi96sDzBP@x6CZrRPF44krO z%zzSmB!|JIVhWFq<9}oF6dnDO1vAQn?N>W8#^IdF zm(iEH(0Qr%E!JLhkqLJvmxPdW-;1RNh%NFOknTVF@ZsB!A3gc**AE|`DeKY8XV1U+ z^{@QXFMss(-N$#Ic=nBNe9sSl|8M)9Km6zupOWb8L_t%+^H(2z>-F=e51)LzOZW8^ z=TzJQo9nx31u9Ps-(4?ROg$rI7ARF0du%`$<^{27Mxq`P1j#qmxY@L&Pcd6~3B)=> z7V+JH$Z<7AWV1`PT(-zJ!rwIrr_(Wq->@_phoCk*0YBxAh{V$43OOM(v zh>h@SV?ReSv^G)I|I27Qi&~?^Fl%yT3jAu>)wDI=LIzPGo`NVkn0AJF5UM)ZYd=G* z&x3;0)sfcqTU{Mh4J`d?Fil_=9kxzZOUoJE@jg~ClFz6RP+n_DSlh+ua%bSV-1H0t zr#AN!enUIxEy<5X@5wD*y+;~9UVZQz{H;@-t2#GR)h~?;DwAq)V%-UD-X4bsOYQV| zQ#!pJ-wu1wtPfE2)3J8W%?!3r%)Bo=z`?+VpLjBH@*!TlZi*@lRK`JKdg<|2+Y=HH zF%V6ohn|GJvbp(QSesdX2sM*%EQf)(vtqkbYWW{Z!Fl{IhZ$U!1SU@oMJK)mOlar4O7 z=eSFY!3gcV({dV=U9$>j=b}v6R!o0d{HGaIPvn)kIT+<75`! zB=c$;Bc%{iqOW6v7yh9z1`T|J+Vp#irPB-O7(bjKb-v-ac5Sj1q5 zF+b&@v@KHd&oEsAAI&N1?_8uQrW=^Brj>Tk@+kAW1buQtTlK2E`isM3BCgj^D@_hL z8`T^f`9K;LwhAu~)^-4LoL4hDy<@nM2lDW2-F9PD(IT7sq@!iXi|2qTg&}z7+6I4> zjFT&%MKfZym@OsVfT6Og>Cx(V2PAbVT%>T~G)sSa{^H@IPds??@#hxKFFyMEKlxw( ztH1fT{^5WBU;olS`^Gn4yn6on)ss%ytqW%V!Gn)KeDveL=STn4FaG&2{nfwv?LYci znZr4{v-9G8-@D+4$zHy`?}DyNi3c-_>%+~9$^$TWihez<0kbR~YzU)-kkRa1*yjs! z@aaRCE9r)U3>n#IFeW6hK6tJdQiIE1u#@CuMv1tkcLz))4tyJ=nAM>T8Q=&`Bve(0WwMV#upfvHqan8a;DkqAtxAH!6iRZ8cojl zvUJz16g)9YD5p45j4O|BN+49w+(5}L87X0|wiCW0w`mo5JKLyg;pifBOwZrcg6}`T z)7+TAPMMLd0NBZac6dTh%kbG!Sojo{KwZnJ3boM|x58qw5=SQ=YT{)|NDoX>3i7NN z=Az^2>eXLh=%;F-@w}KX{5ykkqZ6l`g5Z#OZIK{a7F%Z@Em1VPDo4>VM;rA<0{Q}Z zye0^T7;)fAtsyjK=6V#xfY%fK@^FLTFwhxY0Q@uI$*TIiRV6sW##HzlTAxi@{pbaF^~%D9o~}YGI1Hzq5qjveO4K)aH?%>y<%(K z?bTcFJbd}lgU4?_xcj8)4}ST}|JlFy@B9~k?;m{l+~oP{Gr#RSzW3AL^Btf1-nT#g z@h1=O@9!Re^x=nhj~;#f-FKh8|E+KS`qzH#{r5k3@ao&{9{t#l{lG8$#lQ5Wf8}5O z)K7ix)uVUrS_Qn`)yR(?Jb&tJULN%g6lPrKKb=53i@@;kLvoP-kF*g!OG zFeG}6s@$Uq5p~>E5n@bsg|>`x80N;z-q%BOB#W6QYCJrLhyUY(5<9kagoIu_{i^2W zFgY($1rXJ^Q+{AE32(vLpjr254v2^hvPzhEoK@Bqyb-Vgy2<7g_g1`5gdF5g5UMEW z#zO0`Q@5Jq!_iD@C=dG?Tu34$|812>M{~w{qjI*?zkKDZOB+u~+zRc^!0eWN_2YU1 zCD+9|CUQR|{>E)tE-Af^$D2`*8deA6@Ic=|$F9G1lB22{AE$8PEK}zZF~ub7W=yZY zl{C7CasUPu$d03K<;$~WL**sdNv2jJ8`sX#uypBB8ss#<9kJkVH852-#ld^SGlA?H zQx>g@{G~E^j9!m7uWQlE?VzIQoWd?mD?;O0^bnwM?4)`9@G#>@BMC4^uKP)<5Lreo zG#7N^o-4y856(x)bWS!Af7V{c8lU*AX`@R!-Vv+-7*h_A`ta`Zu%kGm8V*3e=yQE$ zdbUH-P6-i1TLiFVEufWn8E_*hNJ*(mHU^@Uvl-sj&iLd2Ky|vYGHq)}Sll-uooq=b z+L!7UcIT!;E7u+-XbS7BYY9;P5Zgc*hB)5P6Zp(FNHM44q~(B7V(e}O!w|`ldXn%r zeQBg_jeE(&)3SG(bGFH)ru7b{brU59HE*+6YPGw#H|?wwE*Y-)8@YjBwXbjv?&buLr51ZF? z9+h3C`}p^~e(?DIgAe}tpZu5p;XnG{-hS)BPyN`B|G*FZPWLzO?>~C_(Q{<2M;nwp zEhcGRe(cFRQT6u6SiXCC|BY{a^`HIIU;gFy-uuRb2cLTDtsnW}ANa!0{PY+9^}q5{ zfAouP!{4KP_s6;(%VhO}gRXL~h8v5Ruy1N;iMe?(`4crVW#lwSIfvM| z@7|Lpf$6L$5M^4L2S6cHO4O8gt*y)IK~tQelB~&R*YFcfdF2gFN1-B8$5|3NXejI~ zv2L7$tgRzxag-;+Eroi@d8&>Qwfgv(Tn+|>HOTIWpy23laMpktvo=pjnSjW(B_5=# zEHr9KM5_{cIKZ`O)P;>yy`kj6390d;M-a%)+G4oORb^H1!EeNABLZ=V8QTt}1!5@e zV9-S;s_?5V|_qNgFu90T}W%k8L(~Q$&|tI@HP!m zzePGddnA>@HM!+RyaCT;#W2Vv1NT@}(8Gm$PS_N?YlG!wJ}^CRbWmmIW+lw_n+R$E>JdJ9lnaU|ilhDDY!B?j zYGwU9shmPyFBy*EK>DLR+{(6!S#PXm5!fHab)_kcJ%t*QXD`#Y+7rGt0Y9#kY|sQ! zYYCR2WmxTMdc!w`TAgzdwZsl|>!EAN9vXhd+ZapCW(B-qp}1K6oQ1-!NhtSNcul-E z$*xBH>%W>BsgWj2W&4xwRPeX|#=rgV|A&9` zcRYIX`OkgsyT9wZ-~HA%JlXNl3n-!QD_DH_f(IL0HYtDhkqQ0DT{jqf2sx)3z4jHkt#6v>trlmjwhVKNugWi~&>XZRvFs2G-O>+B92CA^*vGK)th zrD@yHv|%CP+$lZqM1OAc$Veg^Q!6*{-(>>X3j?f=?q0okCLSTs;=rWG)=;xm(I71M zk~$gGw74v&H_;pk1HfVf#g;EM+=uQuqhK8d1x&+8(|Tg=H!gSerSK-uJ&_YQm}ax) zcyr1`1=D%NW^jY5_V~N(u1SERvUjhvz5eKHOXUqrg_DX+$w$^iSKwvN7Gk*AgnA~V z**jhLjIUh{CsIrcnpbI|K01vCJjiYq+}soVOKj8y|Vt_`S}&Ied-Q ziW}0d6RhJ=*)s%lGscfCx;e7tPplB$n9b_Ba9t!8p1>>;U}@eqC1p09rZ=f|CjU!w z`i?IINEMrLQq$X6lwPK+O{V8uTrJmbj_i zMl!LDcR4!P5t!4JBf)rKJSxgloAMI~5|lFCkSdY0OF_CpqQsN5;y8cTZPJNw?2){p zIc??4FdPkM4k$Sc&BmpXe8HnV)>5TSbs!9|R^{|gskQyh`~d_8O6oAl7Z;7KEL@GC z2HHiF%#`nBE(v}f(V8dI2vVv4=d7KBeF2Vv*7Z=W*Q4kR{D3jJu6Vm~GgeE$o5hCI zrC$zif#0Wkmaa-p?+X~{SlW%fb_kpx4wc%@{*5I&6OEkkXL@_;Yc3-AcVBQJtI%Hw zz@;pfJf|TABFI9Gj$CP`Buzm*S2)&I!Ts|-Dq`4-GKJ^!@i5<3T3RkKs_CrJf!f8Q zi%goNa%nS9{ZKDKU=Hm%R5I%+b|P@wX*EwNEU<3*J4|!&?rKV=l=NasD2t`diQ~y5 zuV-XWn?}ZV*?zaD0;B#KxFRq%p>+m#&I`+xIB-Wzwy;y`_MG`)|0m$o?qhy^^u1JrKWRuP#$@hTISVn z{4~78(<^xS@cE19=6?S?X8rK(M|Y1u@%*EYo{lXvolmGIM{J}3g{N%Sa8Xf*#efavti6V}k7V}PN1jJOde(8)DG1Aw`<@avq@=B(08@dA>vrq)!6<~; zrh(Y#E)AFv)Dk1j1-;=V6<7M%JEm)Ge_5M;rF+yST^jp1A;km)Ygv)GT4trlF8Pg4 z0kk>ZcA1-S;vI|f^_06_9Ku+w#mSbVa|zP=d*e>E4It|yxicRw6ApX+=yIGYUBKkn z%%UsFD|d+P6Wjb7$?TqxTtiCBniGXEHoHKP!h*sK)NWA6g9Be#^VQLD!l&paeM%eN z)^amJ3`H7GPY)mC=}d8|{Z(z>|LxnAVHO0~IdI{)rc$0MK3CP22e^oLrKvinjiF&EAXs%%B)8l;3rIGlbLDweCA56jO1PBp!G(Q4A-uVSR~Yl zR;FhLmg2GLmh~n29HwO{HPiH^6Y}Kie6<4M)Q&fWv8&`X9AhWTy)sq@Q(eSUBBucH zq(*{A53v(3`pF*OZ?+1;o3+l6QaVRs3~!YBe&*uF*g_wd4d=H>U9JpvwPdmuz=dZI z(+vQ8tS4Zn0L`H>6A5dkh-u!G`WvGoC-kkU^Kd-#u7qBz)QW__=NBMazwCzsj=4dm zjjUM^R|i}$yVRBoE`OnrcZYvA(o7q;W!(@T0aA{}MzuMqpdlulbHZU0(wMIfZ2YVd z(`%9z;Trtf1e&?g;_z5MJ9Q{FPVI7ld$wR`B?&u5RF&khl9>`@!a3)@> z6)zUh1Sh*S>V&u06nvg}8>9rXOGkA8A66Zm?eLV^=@~y0){5g^N{ewdc*kove5MQd zDW@~*a-hRhh0We&{a`uyOlP7pA^44bBaq{Dc1Of^&+?56Vb7U8luE|_qEngOdVwE6 zdf22%@+?Y%z0btwKrreWllLl}Dv>`3$z&>@xDB^Rzx}b-&z`+{=kcT0pZM0V|KES) z`+xjV$ zKmFrBdHO2!^uK!j(Zgp?pS^hTm})+o=%28C_xf$mPIhtS)%`~n9QXInA3b^$Z%$|3 zszY~i!rH!(t$$A}>8&ec> zsb*|ASMk51BE#jvWdCfF(Z%aC-FmFlEfTVVzC6fzUdo{#>H*Z5HP9si@IHk>t!mhD&XBXkePy+V3a4vdHvR=od zeIG#%*V=>rSm~+DAWc=r2S3Fzzz-R}vp^uLOnJRR`!%FZ3(CtdaZ-Mk5tHVQ!&;JH zqw12tyD=`wTKB);YQ7-X4Ygr=Mvs^_xJr8AAOdZ%ux*gdYq~2<9R(GvMP@QE4%cC> zhH4!S;T4F}B*2p&uG7{l!6+)Zg69vyrg>al1tm!fuL(pTFd?jA{kArnU^nRJRCD;m zt4$1z2CCTaHhd}3?)=TB=2LjwfyM3Wz;{Ur=BjmRXI7b7+x+vtiKY_*0;Gb~qIprS z;U#=#f-0ro$gv-)fUl#bxDt9IM0tSbX|Bzd)=h7g(@T~+0j~_3fQCiZnOLB2<|3)CEXaIu=I~2sr)}!skEWJtd z)y-%f`7AHEEZ-hAhy+zPtoiMNM^vEb1h<~6_KahR#j|goQL-oUp4|1B)yJRw^?&k@ zKmU9F(C5GZ2Y>SS|HQjr{aTM;my2}wSdSB^X7L8}W^otHU);Yii^_*uL`am%sLvZ$5vH(0A@0 z{rG2p@biECPyVrA{4<~Z!(Vvv?ceDOF*ss<%a#1SfBN9%w_e=eJ@Pd=eZ2d8Lj|vA zoKRV@3&q&*!PxUHhx%tHgTadJXf&I81P=x4m<8*0v%mCkxF_RqRs_f1>51(Zo=WYv zjaWKquEeX=KeACt)oQa}Gy|Z-s`q5kCA>@hCyl`ue|oG?<>gDO`(W<3vMcrNbtL zS`917^|I4(mD%b+N!R8KO%?9H`qNLz%aJq=I>wM7rONI4!MSy7H?bkMRso!&K^3mCH* zqZZIxZ>ftGmjtoX$*7>`R3N9lmrBxKgwNqg4M#OS1eRC1>&l+7Kx4FF%F1<+B zU}g^0Sy>Ot_8qKz%b(a3zbgA&+gLl63!(aLGPkrWxe&lz5-yiys-~W}b zechZb9%iLGv#??A<^6r%t#H?f2Sst|#JgMVz9HEntZ91Z;!dE?56SqzjhKQae{;PL z0BBeYKnQZbpS$bY&a@vse0=x#iNX4j?*@PV{NelWee0LL{C|G+8}IunJFa}^JMa9& z@B7i8`01bi6JPq$kNvTqeeljF_Zckfle4|pOwY{Am(O1r()KBTPv!d+L5lz$i&25u zNe<&@cr*;2hn$oQ5v&rlDPZ{@_ySz?z2-1h@~J=Wc#ZJ2?NGrq&(oy1%T_%;->*e^ zZI#!&*7}7w7F&88GSmp!`XH*48sSUUHBh%cei>LZk_6;WUzPwxYf9??E9OR~Wf8jy zb+Ja#q5Vx4GI$wMdqP}MgHo9_v`mbUq0*KbTaf0d{vzP(N=>$B91dKxb_=7@z0!A_ zs^$D8o;s*DJRY53q>!*_|NXCY;)2V>CKpQ1>}S>v2We?&%fnvfeINPVz}xa58`qL# zx&tx0N_|daE5JNVTSyM?PdO80cs@rIpXvXwSw5)`Xuvd2bEiBt-pr#I=me4qV6P>a#Nvr} zFeq<%rjw_E4`xrN{YbY-K@fbCq>F@R;-e`hZflFhLA!d_TC}pyf>_T@l96a*d%Tjn z$W$enSO_^HxVaq8knKFOl&EgW7s(l*kc-}m=THpl+)uuE zG1)AB++MhmV>w8*%Yc0}pDiRcSf?khrYiF#ZP?rLyO9pDwpt|}y-qG)`XT{UDgs(& zpPZb(AYAVQJ^l27Hf^nA!+SA zj}(Q6CrY}g+a)C}idUesWy|^w+b`)8kWtEIj~hv(#$r{|aPs7UQ78e9^D}0@3sfniVfYb00xdl+%GOcHIqeE&9dt2OsfBq>K6!Ed?XWOrLa_F+34EH zzN`4JA3W)@`AgRec;ka)_YER-J*!J@wn%uV<=EZb+W>UY{rUZ~XCJtV@ReWv^{+qu z@WVWL@a>P@`Q4xW?SJTx{o&95@h|@57yra3zxVsWJqtiYP~-PuUVmgYqI14_(j^9D z?CeEtQA7A*TUw%G16oP3tS%?(l9js1F9jn-&U-+LcIjDp0ss_W9|C#er2` zzsoKqm93m06R9=wFE=_Y{;NN4Diru9bGX18Cv`n$F>RNonrAnuv!BjHn@U+J=%XON zY%Ln*3s|wf7%jOr@gJN7jFyKhn&vF8B~K5{obI!>s-o2XIr+2$%bL)9_{oO+=wCFR z>m~;+0ZR}XBHu)Oy0elE$MlpbDn9bLcDN~u<><&6!Atkj8YVcL5udZJI4yE>xu)UN zY%!?N)x4bpWdmFVDa{^5NmJ;p%Btq%o~~k9eymmeHpANyj#_Fy;1aV5&gzhYOTl)s_^R!4` zI+(ewMTQb27l=smt~o3MTNy6cd6CzResriQ7D2lu(@F|ryj8w%lrawd8KmM$ZGbn5 z7KWIarV#F2p{CVWS1XoEf>Np~2Q^5@TjmC(5*509ux;^M0Ppr>?xIORo5nPEn>fB% zW1*z&iui@_(4F*hETV&#Q-Nsa$>N;JTH#iRtyX{YG~^drSUe$R(5GbR$5K$IaAOdj z)kcp0GpE07=&T%)6|2m9-GfjtZVPH^(^l#D2>QCnpvICq+q8_EtkCdVM=C`@_D0*_ z_cq7ryCJK##oTyEa#hj7B1~v_J97re(BHs+|PdX-FIDj-!$N4 zr^li^SrjLlpkyPHWK&u=U3_nXw?;LdH2aY%jUo~kh;F|#tw1HUk&UF;Nok`;SFK|2 zP+U&3?>2cbJ&E)3EuV&`>dD=c$4}mQ<=YEhynOntZ@&A_zw!02edWFPp1uFz-V=GB z{`lkH{h3dH?(_fRPkr&v{Pdsw(mS8}^vlP61MZUS{=xl+51zU_iFgq(lrer1iA#%S zOfI_sZYP59J%?7V9{5!jGSOF3TxhT}&U@b^U1M%&VrRNe30twlxWdh;r4BI|>EW2%KnT4cScyhHu5O$(XEFu~Y>|`(Zymybt(_uaDVEPR0Nd<4i zEX>r){&V_O!)fdbTlR!nc`&X|3aZWlsj~!{>(L#UIq9{;4P=tK9~w9kd$ZolSW;UG zZjn{Tq?Eq^EKBAA(R@r(C$kOWTT(2RjTs4;V$TKSgr}w(ig!KAp#+SxC0p%|0>iPA zQX~%fs){Wsg(2+ULU)C{@p%cS7NqkPH{@pqL~R_^n3VLv$x#*689LOhaB{d!ra56I z#@J{{i>;s>-e{isNKmnbYJk_IstH7erpxaVOrs#R!w@5xQqi%{-cnj>;Z zi(N+QfJia%w`vS#+HCWtoidQ

6Hu-Ca3!tA=5MBzS9*ihaOJl}B#(;>dblm(0- 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

6Lu$CbFa!GlGq)Mh>VlxAyIi;j256? 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

9<~@GRc` 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
{/* Header */} @@ -94,19 +99,6 @@ export const GameBoard: React.FC = () => { {/* Spelbrädet */} {phase !== 'SETUP' && ( <> - {/* Pinned start card (endast ett) */} - {team.timeline[0] && ( -
- -
- )} -
Timeline @@ -116,14 +108,33 @@ export const GameBoard: React.FC = () => { onDragEnd={onDragEnd} modifiers={[restrictToWindowEdges]} > - {/* Timeline utan första kortet. Slots visas bara när man drar. */} -
- + {/* ⬇️ StartCard är nu första kortet i SAMMA scroll-rad som resten */} +
+
+ {team.timeline[0] && ( +
+ +
+ )} + + {/* resten av tidslinjen (utan första kortet) + slots vid drag */} + +
{/* Drag-kandidat (hemlig) */} @@ -133,14 +144,14 @@ export const GameBoard: React.FC = () => {
)} - {/* Overlay-preview (fri drag i hela viewporten) */} + {/* Overlay-preview */} {isDragging && currentCard ? : null}
- {/* Feedback vid fel */} + {/* Feedback vid fel – oförändrat */} {phase === 'PLACED_WRONG' && (
{
)} - {/* Kontroller */} + {/* Kontroller – oförändrat */}
{phase === 'TURN_START' && ( @@ -180,4 +191,4 @@ export const GameBoard: React.FC = () => { )}
) -} \ No newline at end of file +} diff --git a/frontend/src/hooks/useAuth.ts b/frontend/src/hooks/useAuth.ts index 80a60db966..ceaaa76e5a 100644 --- a/frontend/src/hooks/useAuth.ts +++ b/frontend/src/hooks/useAuth.ts @@ -1,4 +1,5 @@ import { useState, useEffect, useCallback } from 'react'; +import { config } from '../config/environment'; interface User { id: string; @@ -14,9 +15,8 @@ interface AuthState { error: string | null; } -import { config } from '../config/environment'; - const BACKEND_URL = config.backendUrl; +const USE_MOCK = import.meta.env.VITE_USE_SPOTIFY_MOCK === '1'; export const useAuth = (autoCheck = true) => { const [authState, setAuthState] = useState({ @@ -26,7 +26,27 @@ export const useAuth = (autoCheck = true) => { error: null, }); + // --- Helpers för mockläge --- + const setMockAuthenticated = useCallback(() => { + const mockUser: User = { + id: 'dev', + display_name: 'Mock User', + email: 'mock@example.com', + images: [{ url: 'https://placehold.co/64x64' }], + }; + setAuthState({ + isAuthenticated: true, + user: mockUser, + isLoading: false, + error: null, + }); + }, []); + const refreshToken = useCallback(async () => { + if (USE_MOCK) { + // Inget att refresha i mock – låtsas att allt gick bra + return true; + } try { console.log('Refreshing access token...'); const response = await fetch(`${BACKEND_URL}/refresh_token`, { @@ -34,11 +54,9 @@ export const useAuth = (autoCheck = true) => { }); if (response.ok) { - // Token refreshed successfully console.log('Token refreshed successfully'); return true; } else { - // Token refresh failed, user needs to login again console.log('Token refresh failed, redirecting to login'); setAuthState({ isAuthenticated: false, @@ -46,25 +64,24 @@ export const useAuth = (autoCheck = true) => { isLoading: false, error: 'Session expired. Please login again.', }); - // Redirect to login page window.location.href = '/login'; return false; } } catch (error) { console.error('Error refreshing token:', error); setAuthState(prev => ({ ...prev, error: 'Failed to refresh token' })); - // Redirect to login page on error window.location.href = '/login'; return false; } }, []); const checkTokenStatus = useCallback(async () => { + if (USE_MOCK) return; // hoppa över i mockläge try { const response = await fetch(`${BACKEND_URL}/token-status`, { credentials: 'include', }); - + if (response.ok) { const status = await response.json(); if (status.needsRefresh && status.valid) { @@ -72,7 +89,6 @@ export const useAuth = (autoCheck = true) => { await refreshToken(); } } else if (response.status === 401) { - // No valid session exists - this is expected for unauthenticated users console.log('No valid session found during token status check'); } } catch (error) { @@ -81,40 +97,41 @@ export const useAuth = (autoCheck = true) => { }, [refreshToken]); const checkAuthStatus = useCallback(async (isRetry = false) => { + // Direktbypass i mockläge + if (USE_MOCK) { + setMockAuthenticated(); + return; + } + try { setAuthState(prev => ({ ...prev, isLoading: true, error: null })); - - // First check token status + + // 1) token-status const tokenResponse = await fetch(`${BACKEND_URL}/token-status`, { credentials: 'include', }); - + if (tokenResponse.ok) { const tokenStatus = await tokenResponse.json(); - + if (tokenStatus.needsRefresh && tokenStatus.valid) { - // Token is valid but needs refresh, refresh it first console.log('Token needs refresh, refreshing before profile check...'); const refreshSuccess = await refreshToken(); if (refreshSuccess && !isRetry) { - // Token refreshed successfully, check auth status again (but only once) await checkAuthStatus(true); } - return; // checkAuthStatus will be called again after refresh + return; } - + if (!tokenStatus.valid) { - // Token is expired, try to refresh console.log('Token expired, attempting refresh...'); const refreshSuccess = await refreshToken(); if (refreshSuccess && !isRetry) { - // Token refreshed successfully, check auth status again (but only once) await checkAuthStatus(true); } return; } } else if (tokenResponse.status === 401) { - // No valid session exists - user is not authenticated console.log('No valid session found - user not authenticated'); setAuthState({ isAuthenticated: false, @@ -124,8 +141,8 @@ export const useAuth = (autoCheck = true) => { }); return; } - - // Token is valid, proceed with profile check + + // 2) hämta profil const response = await fetch(`${BACKEND_URL}/user-profile`, { credentials: 'include', }); @@ -139,11 +156,9 @@ export const useAuth = (autoCheck = true) => { error: null, }); } else if (response.status === 401 && !isRetry) { - // Token expired or invalid, try to refresh (but only once) console.log('Token expired, attempting refresh...'); const refreshSuccess = await refreshToken(); if (refreshSuccess) { - // Token refreshed successfully, check auth status again (but only once) await checkAuthStatus(true); } } else { @@ -163,31 +178,54 @@ export const useAuth = (autoCheck = true) => { error: 'Failed to check authentication status', }); } - }, [refreshToken]); + }, [refreshToken, setMockAuthenticated]); // Check authentication status on mount useEffect(() => { - if (autoCheck) { - checkAuthStatus(); - - // Set up proactive token refresh every 5 minutes - const interval = setInterval(() => { - checkTokenStatus(); - }, 5 * 60 * 1000); // Check every 5 minutes - - return () => clearInterval(interval); - } else { - // If autoCheck is false, just set loading to false + if (!autoCheck) { setAuthState(prev => ({ ...prev, isLoading: false })); + return; + } + + if (USE_MOCK) { + // Direkt inloggad i mockläge + setMockAuthenticated(); + return; } - }, [checkAuthStatus, checkTokenStatus, autoCheck]); + + checkAuthStatus(); + + // Proaktiv refresh var 5:e minut (ej i mock) + const interval = setInterval(() => { + checkTokenStatus(); + }, 5 * 60 * 1000); + + return () => clearInterval(interval); + }, [checkAuthStatus, checkTokenStatus, autoCheck, setMockAuthenticated]); const login = useCallback(() => { - // Redirect to backend login endpoint + if (USE_MOCK) { + // Sätt inloggat och gå vidare lokalt + setMockAuthenticated(); + // välj den route som passar din app bäst + window.location.href = '/dashboard'; + return; + } window.location.href = `${BACKEND_URL}/login`; - }, []); + }, [setMockAuthenticated]); const logout = useCallback(async () => { + if (USE_MOCK) { + setAuthState({ + isAuthenticated: false, + user: null, + isLoading: false, + error: null, + }); + window.location.href = '/login'; + return; + } + try { const response = await fetch(`${BACKEND_URL}/logout`, { credentials: 'include', @@ -209,21 +247,26 @@ export const useAuth = (autoCheck = true) => { // Handle OAuth callback const handleOAuthCallback = useCallback(async () => { - // Check if we're returning from OAuth callback + if (USE_MOCK) { + setMockAuthenticated(); + return; + } + const urlParams = new URLSearchParams(window.location.search); const error = urlParams.get('error'); - + if (error) { setAuthState(prev => ({ ...prev, error })); return; } - // Check auth status after OAuth callback await checkAuthStatus(); - }, [checkAuthStatus]); + }, [checkAuthStatus, setMockAuthenticated]); // Listen for OAuth callback useEffect(() => { + if (USE_MOCK) return; // inget callbackflöde i mock + const urlParams = new URLSearchParams(window.location.search); if (urlParams.has('error') || window.location.pathname === '/dashboard') { handleOAuthCallback(); diff --git a/frontend/src/services/normalize.ts b/frontend/src/services/normalize.ts new file mode 100644 index 0000000000..5f5997ceb0 --- /dev/null +++ b/frontend/src/services/normalize.ts @@ -0,0 +1,27 @@ +import type { TrackCard } from '../types/game'; + +export interface BackendTrack { + _id: string; + trackId: string; + trackTitle: string; + trackArtist: string; + releaseYear: number; + trackUrl: string; + __v?: number; + // ev. framtida fält: previewUrl?: string; imgUrl?: string; +} + +// Mappa backend -> ditt UI-format (TrackCard från types/game.ts) +export function toTrackCard(t: BackendTrack): TrackCard { + return { + _id: t._id, + trackId: t.trackId, + trackTitle: t.trackTitle, + trackArtist: t.trackArtist, + releaseYear: t.releaseYear, + trackUrl: t.trackUrl, + // Om TrackCard i game.ts har fler valfria fält (previewUrl/imgUrl etc), lägg dem här: + // previewUrl: (t as any).previewUrl ?? null, + // imgUrl: (t as any).imgUrl ?? null, + }; +} \ No newline at end of file diff --git a/frontend/src/services/spotifyApi.ts b/frontend/src/services/spotifyApi.ts index a7f58ed729..2c70232635 100644 --- a/frontend/src/services/spotifyApi.ts +++ b/frontend/src/services/spotifyApi.ts @@ -1,6 +1,10 @@ import { config } from '../config/environment'; +import { mockBackendTracks } from './spotifyMock'; // backend-formatet du visade +import { toTrackCard, type TrackCard } from './normalize'; // mapper till UI-formatet -// Spotify API base URL +const useMock = import.meta.env.VITE_USE_SPOTIFY_MOCK === '1'; + +// Spotify API base URL (sparas om du behöver senare) const SPOTIFY_API_BASE = 'https://api.spotify.com/v1'; // Interface for playback request @@ -39,27 +43,81 @@ interface PlaybackState { device: Device; } +/* --------------------------- + Mock helpers (lokala) +---------------------------- */ +const mockDevice: Device = { + id: 'mock-device-1', + name: 'Mock Web Player', + type: 'Computer', + is_active: true, + is_private_session: false, + is_restricted: false, +}; + +const first = mockBackendTracks[0]; +const mockPlaybackState: PlaybackState = { + is_playing: false, + progress_ms: 0, + item: first + ? { + id: first.trackId, + name: first.trackTitle, + artists: [{ name: first.trackArtist }], + album: { name: 'Mock Album' }, + } + : null, + device: mockDevice, +}; + +/* --------------------------- + High-level data getters +---------------------------- */ + +export async function getUserProfile() { + if (useMock) { + return { id: 'dev', display_name: 'Mock User' }; + } + const r = await fetch(`${config.backendUrl}/user-profile`, { credentials: 'include' }); + if (!r.ok) throw new Error(`Failed to fetch user profile (${r.status})`); + return await r.json(); +} + +export async function getUserTracks(): Promise { + if (useMock) { + // backend -> UI + return mockBackendTracks.map(toTrackCard); + } + const r = await fetch(`${config.backendUrl}/tracks`, { credentials: 'include' }); + if (!r.ok) throw new Error(`Failed to fetch user tracks (${r.status})`); + const data = await r.json(); // BackendTrack[] + return (data as any[]).map(toTrackCard); +} + +/* --------------------------- + Playback controls +---------------------------- */ + /** * Start or resume playback on the user's active device - * @param request - Playback configuration - * @returns Promise - Success status */ export async function startPlayback(request: PlaybackRequest): Promise { + if (useMock) { + console.info('[MOCK] startPlayback', request); + return true; + } try { const response = await fetch(`${config.backendUrl}/spotify/play`, { method: 'PUT', - headers: { - 'Content-Type': 'application/json', - }, + headers: { 'Content-Type': 'application/json' }, credentials: 'include', body: JSON.stringify(request), }); if (!response.ok) { - const error = await response.json(); - throw new Error(error.error || 'Failed to start playback'); + const error = await safeJson(response); + throw new Error((error as any)?.error || 'Failed to start playback'); } - return true; } catch (error) { console.error('Error starting playback:', error); @@ -69,25 +127,24 @@ export async function startPlayback(request: PlaybackRequest): Promise /** * Pause playback on the user's active device - * @param deviceId - Optional device ID - * @returns Promise - Success status */ export async function pausePlayback(deviceId?: string): Promise { + if (useMock) { + console.info('[MOCK] pausePlayback', { deviceId }); + return true; + } try { const response = await fetch(`${config.backendUrl}/spotify/pause`, { method: 'PUT', - headers: { - 'Content-Type': 'application/json', - }, + headers: { 'Content-Type': 'application/json' }, credentials: 'include', body: JSON.stringify({ deviceId }), }); if (!response.ok) { - const error = await response.json(); - throw new Error(error.error || 'Failed to pause playback'); + const error = await safeJson(response); + throw new Error((error as any)?.error || 'Failed to pause playback'); } - return true; } catch (error) { console.error('Error pausing playback:', error); @@ -97,25 +154,24 @@ export async function pausePlayback(deviceId?: string): Promise { /** * Skip to next track - * @param deviceId - Optional device ID - * @returns Promise - Success status */ export async function skipToNext(deviceId?: string): Promise { + if (useMock) { + console.info('[MOCK] skipToNext', { deviceId }); + return true; + } try { const response = await fetch(`${config.backendUrl}/spotify/next`, { method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, + headers: { 'Content-Type': 'application/json' }, credentials: 'include', body: JSON.stringify({ deviceId }), }); if (!response.ok) { - const error = await response.json(); - throw new Error(error.error || 'Failed to skip to next track'); + const error = await safeJson(response); + throw new Error((error as any)?.error || 'Failed to skip to next track'); } - return true; } catch (error) { console.error('Error skipping to next track:', error); @@ -125,25 +181,24 @@ export async function skipToNext(deviceId?: string): Promise { /** * Skip to previous track - * @param deviceId - Optional device ID - * @returns Promise - Success status */ export async function skipToPrevious(deviceId?: string): Promise { + if (useMock) { + console.info('[MOCK] skipToPrevious', { deviceId }); + return true; + } try { const response = await fetch(`${config.backendUrl}/spotify/previous`, { method: 'POST', - headers: { - 'Content-Type': 'application/json', - }, + headers: { 'Content-Type': 'application/json' }, credentials: 'include', body: JSON.stringify({ deviceId }), }); if (!response.ok) { - const error = await response.json(); - throw new Error(error.error || 'Failed to skip to previous track'); + const error = await safeJson(response); + throw new Error((error as any)?.error || 'Failed to skip to previous track'); } - return true; } catch (error) { console.error('Error skipping to previous track:', error); @@ -153,17 +208,19 @@ export async function skipToPrevious(deviceId?: string): Promise { /** * Get available devices - * @returns Promise - List of available devices */ export async function getAvailableDevices(): Promise { + if (useMock) { + return [mockDevice]; + } try { const response = await fetch(`${config.backendUrl}/spotify/devices`, { credentials: 'include', }); if (!response.ok) { - const error = await response.json(); - throw new Error(error.error || 'Failed to get devices'); + const error = await safeJson(response); + throw new Error((error as any)?.error || 'Failed to get devices'); } const data = await response.json(); @@ -176,9 +233,11 @@ export async function getAvailableDevices(): Promise { /** * Get current playback state - * @returns Promise - Current playback state or null if not playing */ export async function getCurrentPlaybackState(): Promise { + if (useMock) { + return mockPlaybackState; + } try { const response = await fetch(`${config.backendUrl}/spotify/playback-state`, { credentials: 'include', @@ -186,11 +245,10 @@ export async function getCurrentPlaybackState(): Promise { if (!response.ok) { if (response.status === 204) { - // No content - user not playing anything return null; } - const error = await response.json(); - throw new Error(error.error || 'Failed to get playback state'); + const error = await safeJson(response); + throw new Error((error as any)?.error || 'Failed to get playback state'); } return await response.json(); @@ -202,24 +260,23 @@ export async function getCurrentPlaybackState(): Promise { /** * Transfer playback to a specific device - * @param deviceId - Device ID to transfer to - * @param play - Whether to start playing after transfer - * @returns Promise - Success status */ export async function transferPlayback(deviceId: string, play: boolean = false): Promise { + if (useMock) { + console.info('[MOCK] transferPlayback', { deviceId, play }); + return true; + } try { const response = await fetch(`${config.backendUrl}/spotify/transfer`, { method: 'PUT', - headers: { - 'Content-Type': 'application/json', - }, + headers: { 'Content-Type': 'application/json' }, credentials: 'include', body: JSON.stringify({ deviceId, play }), }); if (!response.ok) { - const error = await response.json(); - throw new Error(error.error || 'Failed to transfer playback'); + const error = await safeJson(response); + throw new Error((error as any)?.error || 'Failed to transfer playback'); } return true; @@ -228,3 +285,14 @@ export async function transferPlayback(deviceId: string, play: boolean = false): throw error; } } + +/* --------------------------- + utils +---------------------------- */ +async function safeJson(r: Response) { + try { + return await r.json(); + } catch { + return {}; + } +} diff --git a/frontend/src/services/spotifyMock.ts b/frontend/src/services/spotifyMock.ts index 359731b81c..1b99e0e3a1 100644 --- a/frontend/src/services/spotifyMock.ts +++ b/frontend/src/services/spotifyMock.ts @@ -1,16 +1,20 @@ -import { TrackCard } from '@/types/game' +import type { BackendTrack } from './normalize'; -export const mockTracks: TrackCard[] = [ - { id: '1', title: 'Thriller', artist: 'Michael Jackson', year: 1982, previewUrl: '' }, - { id: '2', title: 'Smells Like Teen Spirit', artist: 'Nirvana', year: 1991, previewUrl: '' }, - { id: '3', title: 'Get Lucky', artist: 'Daft Punk', year: 2013, previewUrl: '' }, - { id: '4', title: 'Like a Prayer', artist: 'Madonna', year: 1989, previewUrl: '' }, - { id: '5', title: 'Wonderwall', artist: 'Oasis', year: 1995, previewUrl: '' }, - { id: '6', title: 'Rolling in the Deep', artist: 'Adele', year: 2010, previewUrl: '' }, - { id: '7', title: 'Hey Ya!', artist: 'OutKast', year: 2003, previewUrl: '' }, - { id: '8', title: 'Seven Nation Army', artist: 'The White Stripes',year: 2003, previewUrl: '' }, - { id: '9', title: 'HUMBLE.', artist: 'Kendrick Lamar', year: 2017, previewUrl: '' }, - { id: '10', title: 'Bad Guy', artist: 'Billie Eilish', year: 2019, previewUrl: '' }, - { id: '11', title: 'Billie Jean', artist: 'Michael Jackson', year: 1983, previewUrl: '' }, - { id: '12', title: 'Poker Face', artist: 'Lady Gaga', year: 2008, previewUrl: '' }, -] +export const mockBackendTracks: BackendTrack[] = [ + {"_id":"689c8f4a62b67bf973c4906b","trackId":"4gphxUgq0JSFv2BCLhNDiE","trackTitle":"Jailhouse Rock","trackArtist":"Elvis Presley","releaseYear":1958,"trackUrl":"https://open.spotify.com/track/4gphxUgq0JSFv2BCLhNDiE","__v":0}, + {"_id":"689c8f4a62b67bf973c4906c","trackId":"40riOy7x9W7GXjyGp4pjAv","trackTitle":"Hotel California - 2013 Remaster","trackArtist":"Eagles","releaseYear":1976,"trackUrl":"https://open.spotify.com/track/40riOy7x9W7GXjyGp4pjAv","__v":0}, + {"_id":"689c8f4a62b67bf973c4906d","trackId":"4u7EnebtmKWzUH433cf5Qv","trackTitle":"Bohemian Rhapsody - Remastered 2011","trackArtist":"Queen","releaseYear":1975,"trackUrl":"https://open.spotify.com/track/4u7EnebtmKWzUH433cf5Qv","__v":0}, + {"_id":"689c8f4a62b67bf973c4906e","trackId":"7iN1s7xHE4ifF5povM6A48","trackTitle":"Let It Be - Remastered 2009","trackArtist":"The Beatles","releaseYear":1970,"trackUrl":"https://open.spotify.com/track/7iN1s7xHE4ifF5povM6A48","__v":0}, + {"_id":"689c8f4a62b67bf973c4906f","trackId":"2PzU4IB8Dr6mxV3lHuaG34","trackTitle":"(I Can't Get No) Satisfaction - Mono","trackArtist":"The Rolling Stones","releaseYear":1965,"trackUrl":"https://open.spotify.com/track/2PzU4IB8Dr6mxV3lHuaG34","__v":0}, + {"_id":"689c8f4a62b67bf973c49070","trackId":"2374M0fQpWi3dLnB54qaLX","trackTitle":"Africa","trackArtist":"TOTO","releaseYear":1982,"trackUrl":"https://open.spotify.com/track/2374M0fQpWi3dLnB54qaLX","__v":0}, + {"_id":"689c8f4a62b67bf973c49071","trackId":"1QEEqeFIZktqIpPI4jSVSF","trackTitle":"More Than a Feeling","trackArtist":"Boston","releaseYear":1976,"trackUrl":"https://open.spotify.com/track/1QEEqeFIZktqIpPI4jSVSF","__v":0}, + {"_id":"689c8f4a62b67bf973c49072","trackId":"3mRM4NM8iO7UBqrSigCQFH","trackTitle":"Stayin' Alive - From \"Saturday Night Fever\" Soundtrack","trackArtist":"Bee Gees","releaseYear":1979,"trackUrl":"https://open.spotify.com/track/3mRM4NM8iO7UBqrSigCQFH","__v":0}, + {"_id":"689c8f4a62b67bf973c49073","trackId":"1f3yAtsJtY87CTmM8RLnxf","trackTitle":"Smells Like Teen Spirit","trackArtist":"Nirvana","releaseYear":1991,"trackUrl":"https://open.spotify.com/track/1f3yAtsJtY87CTmM8RLnxf","__v":0}, + {"_id":"689c8f4a62b67bf973c49074","trackId":"1JSTJqkT5qHq8MDJnJbRE1","trackTitle":"Every Breath You Take","trackArtist":"The Police","releaseYear":1983,"trackUrl":"https://open.spotify.com/track/1JSTJqkT5qHq8MDJnJbRE1","__v":0}, + {"_id":"689c8f4a62b67bf973c49075","trackId":"3SdTKo2uVsxFblQjpScoHy","trackTitle":"Stand By Me","trackArtist":"Ben E. King","releaseYear":1962,"trackUrl":"https://open.spotify.com/track/3SdTKo2uVsxFblQjpScoHy","__v":0}, + {"_id":"689c8f4a62b67bf973c49076","trackId":"3nvuPQTw2zuFAVuLsC9IYQ","trackTitle":"Nothing Compares 2 U","trackArtist":"Sinéad O'Connor","releaseYear":1990,"trackUrl":"https://open.spotify.com/track/3nvuPQTw2zuFAVuLsC9IYQ","__v":0}, + {"_id":"689c8f4a62b67bf973c49077","trackId":"7pKfPomDEeI4TPT6EOYjn9","trackTitle":"Imagine - Remastered 2010","trackArtist":"John Lennon","releaseYear":1971,"trackUrl":"https://open.spotify.com/track/7pKfPomDEeI4TPT6EOYjn9","__v":0}, + {"_id":"689c8f4a62b67bf973c49078","trackId":"23YjAY4tuIpUt4kvMkS75a","trackTitle":"I Hate Myself For Loving You","trackArtist":"Laura Bryna","releaseYear":2024,"trackUrl":"https://open.spotify.com/track/23YjAY4tuIpUt4kvMkS75a","__v":0}, + {"_id":"689c8f4a62b67bf973c49079","trackId":"07q0QVgO56EorrSGHC48y3","trackTitle":"I Was Made For Lovin' You","trackArtist":"KISS","releaseYear":1979,"trackUrl":"https://open.spotify.com/track/07q0QVgO56EorrSGHC48y3","__v":0}, + {"_id":"689c8f4a62b67bf973c4907a","trackId":"0hCB0YR03f6AmQaHbwWDe8","trackTitle":"Whole Lotta Love - 1990 Remaster","trackArtist":"Led Zeppelin","releaseYear":1969,"trackUrl":"https://open.spotify.com/track/0hCB0YR03f6AmQaHbwWDe8","__v":0} +]; diff --git a/frontend/src/services/tracks.ts b/frontend/src/services/tracks.ts index c40cf840d1..d0f2120c97 100644 --- a/frontend/src/services/tracks.ts +++ b/frontend/src/services/tracks.ts @@ -1,17 +1,26 @@ -import { TrackCard } from '@/types/game' -import { mockTracks } from './spotifyMock' - -// om du redan har src/shuffle.ts – använd den -const shuffle = (a: T[]) => { - const arr = a.slice() - for (let i = arr.length - 1; i > 0; i--) { - const j = Math.floor(Math.random() * (i + 1)) - ;[arr[i], arr[j]] = [arr[j], arr[i]] - } - return arr -} +import type { TrackCard } from '../types/game' +import { mockBackendTracks } from './spotifyMock' +import { shuffle } from '../lib/shuffle' export async function fetchTracks(limit = 100): Promise { - await new Promise(r => setTimeout(r, 150)) // liten delay för “laddar”-känsla - return shuffle(mockTracks).slice(0, Math.min(limit, mockTracks.length)) + await new Promise(r => setTimeout(r, 150)) // liten delay + + const cards: TrackCard[] = mockBackendTracks.map(t => ({ + // backend-fält + _id: t._id, + trackId: t.trackId, + trackTitle: t.trackTitle, + trackArtist: t.trackArtist, + releaseYear: t.releaseYear, + trackUrl: t.trackUrl, + + // 🔽 alias till vad UI:t faktiskt läser + title: t.trackTitle, + artist: t.trackArtist, + year: t.releaseYear, + name: t.trackTitle, + })) as TrackCard[] + + const deck = shuffle(cards) + return deck.slice(0, Math.min(limit, deck.length)) } diff --git a/frontend/src/store/game.ts b/frontend/src/store/game.ts index 9657d7ea3c..f9a291c636 100644 --- a/frontend/src/store/game.ts +++ b/frontend/src/store/game.ts @@ -1,8 +1,10 @@ import { create } from "zustand" -import { TrackCard, Team, GameState } from "../types/game" +import { TrackCard, GameState } from "../types/game" import { fetchTracks } from "../services/tracks" -type UIState = { loading: boolean; error: string | null } +// ⬇️ UIState utökad med flaggan (null = ingen placering gjord ännu) +type UIState = { loading: boolean; error: string | null; lastPlacementCorrect: null | boolean } + type Actions = { startGame: () => Promise startTurn: () => Promise @@ -18,10 +20,13 @@ const insertAt = (arr: TrackCard[], item: TrackCard, idx: number) => { copy.splice(idx, 0, item) return copy } + +// ⬇️ jämför alltid releaseYear const isPlacementCorrect = (timeline: TrackCard[], card: TrackCard, i: number) => { - const left = i - 1 >= 0 ? timeline[i - 1].year : undefined - const right = i < timeline.length ? timeline[i]?.year : undefined - return (left === undefined || card.year >= left) && (right === undefined || card.year <= right) + const left = i - 1 >= 0 ? timeline[i - 1].releaseYear : undefined + const right = i < timeline.length ? timeline[i].releaseYear : undefined + const y = card.releaseYear + return (left === undefined || y >= left) && (right === undefined || y <= right) } export const useGame = create((set, get) => ({ @@ -37,6 +42,8 @@ export const useGame = create((set, get) => ({ phase: "SETUP", loading: false, error: null, + // ⬇️ ny flagga + lastPlacementCorrect: null, clearError: () => set({ error: null }), @@ -56,6 +63,7 @@ export const useGame = create((set, get) => ({ currentCard: undefined, roundBaselineTimeline: [], phase: "TURN_START", + lastPlacementCorrect: null, }) } catch (e: any) { set({ error: e.message ?? "Failed to load tracks" }) @@ -67,7 +75,7 @@ export const useGame = create((set, get) => ({ startTurn: async () => { const s = get() if (!s.deck.length) { - await useGame.getState().startGame() // ladda om om däcket tog slut + await useGame.getState().startGame() // fyll på om tomt } const s2 = get() const [card, ...rest] = s2.deck @@ -76,6 +84,7 @@ export const useGame = create((set, get) => ({ deck: rest, roundBaselineTimeline: s2.teams[s2.currentTeamIndex].timeline.slice(), phase: "DRAWN", + lastPlacementCorrect: null, }) }, @@ -87,19 +96,26 @@ export const useGame = create((set, get) => ({ if (!card) return if (!isPlacementCorrect(team.timeline, card, slotIndex)) { + // ⬇️ FEL: backa timeline till baseline, men stanna kvar på samma lag set({ - teams: s.teams.map((t, i) => (i === tIdx ? { ...t, timeline: s.roundBaselineTimeline.slice() } : t)) as GameState["teams"], + teams: s.teams.map((t, i) => + i === tIdx ? { ...t, timeline: s.roundBaselineTimeline.slice() } : t + ) as GameState["teams"], currentCard: undefined, - phase: "PLACED_WRONG", + lastPlacementCorrect: false, // ⬅️ markera fel + phase: "CHOICE_AFTER_CORRECT", // ⬅️ återanvänd knapparna }) - get().nextTeam() return } + // ⬇️ RÄTT: lägg in kortet, stanna i samma lag tills man "lockar in" const newTimeline = insertAt(team.timeline, card, slotIndex) set({ - teams: s.teams.map((t, i) => (i === tIdx ? { ...t, timeline: newTimeline } : t)) as GameState["teams"], + teams: s.teams.map((t, i) => + i === tIdx ? { ...t, timeline: newTimeline } : t + ) as GameState["teams"], currentCard: undefined, + lastPlacementCorrect: true, // ⬅️ markera rätt phase: "CHOICE_AFTER_CORRECT", }) }, @@ -111,10 +127,16 @@ export const useGame = create((set, get) => ({ lockIn: () => { const s = get() const tIdx = s.currentTeamIndex + const gained = s.lastPlacementCorrect ? 1 : 0 // ⬅️ poäng bara vid korrekt + set({ - teams: s.teams.map((t, i) => (i === tIdx ? { ...t, score: t.score + 1 } : t)) as GameState["teams"], + teams: s.teams.map((t, i) => + i === tIdx ? { ...t, score: t.score + gained } : t + ) as GameState["teams"], phase: "TURN_START", + lastPlacementCorrect: null, }) + get().nextTeam() }, @@ -124,6 +146,7 @@ export const useGame = create((set, get) => ({ currentTeamIndex: (s.currentTeamIndex === 0 ? 1 : 0) as 0 | 1, currentCard: undefined, phase: "TURN_START", + lastPlacementCorrect: null, }) }, })) diff --git a/frontend/src/types/game.ts b/frontend/src/types/game.ts index 15ca0462ee..8d949623a5 100644 --- a/frontend/src/types/game.ts +++ b/frontend/src/types/game.ts @@ -1,8 +1,8 @@ export type TrackCard = { - id: string - title: string - artist: string - year: number + _id: string + trackTitle: string + trackArtist: string + releaseYear: number previewUrl?: string imageUrl?: string } diff --git a/frontend/src/vite-env.d.ts b/frontend/src/vite-env.d.ts new file mode 100644 index 0000000000..9da09fa325 --- /dev/null +++ b/frontend/src/vite-env.d.ts @@ -0,0 +1,11 @@ +/// + +interface ImportMetaEnv { + readonly VITE_BACKEND_URL: string; + readonly VITE_FRONTEND_URL: string; + readonly VITE_USE_SPOTIFY_MOCK?: string; // '1' | '0' +} + +interface ImportMeta { + readonly env: ImportMetaEnv; +} From a36e8e541253aa8ca3b374b6fc0292ff07b38e32 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Wed, 13 Aug 2025 21:18:03 +0200 Subject: [PATCH 032/127] Adjusting currentCard being draggable --- frontend/src/components/CurrentCard.tsx | 4 +- frontend/src/components/GameBoard.tsx | 206 ++++++++++++++---------- 2 files changed, 121 insertions(+), 89 deletions(-) diff --git a/frontend/src/components/CurrentCard.tsx b/frontend/src/components/CurrentCard.tsx index fda0d2a17a..c4de097125 100644 --- a/frontend/src/components/CurrentCard.tsx +++ b/frontend/src/components/CurrentCard.tsx @@ -17,9 +17,9 @@ export const CurrentCard: React.FC<{ card: TrackCard; dragging?: boolean }> = ({ style={style} {...listeners} {...attributes} - className={`cursor-grab active:cursor-grabbing select-none ${dragging ? 'opacity-0' : ''}`} + className={`w-[136px] cursor-grab active:cursor-grabbing select-none ${dragging ? 'opacity-0' : ''}`} > - +
Place in timeline
diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index c37ca143af..4087f8a026 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -7,6 +7,8 @@ import { DragStartEvent, DragEndEvent, DragOverlay, + useDroppable, + closestCenter, } from '@dnd-kit/core' import { restrictToWindowEdges } from '@dnd-kit/modifiers' @@ -14,9 +16,14 @@ import { useGame } from '../store/game' import { Heading, Button } from '../ui' import { ErrorMessage } from '../ui/ErrorMessage' import { StartCard } from './StartCard' -import { Timeline } from './Timeline' +import { TimeLineCard } from './TimeLineCard' import { CurrentCard, CurrentCardPreview } from './CurrentCard' +// --- små helpers så vi klarar både {title,artist,year} och {trackTitle,trackArtist,releaseYear} +const Y = (c: any) => c?.year ?? c?.releaseYear +const T = (c: any) => c?.title ?? c?.trackTitle +const A = (c: any) => c?.artist ?? c?.trackArtist + const TeamPill: React.FC<{ label: string; active?: boolean; score: number }> = ({ label, active, score }) => ( = ( ) +// En minimal dropp-slot (synlig bara när show = true) +const DropSlot: React.FC<{ id: string; show: boolean }> = ({ id, show }) => { + const { setNodeRef, isOver } = useDroppable({ id }) + if (!show) return null + return ( +
+ ) +} + export const GameBoard: React.FC = () => { const { teams, @@ -51,6 +74,7 @@ export const GameBoard: React.FC = () => { const team = teams[currentTeamIndex] + // Viktigt: PointerSensor utan axis-lås + DragOverlay ger fri drag över viewporten const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 6 } })) const [isDragging, setIsDragging] = React.useState(false) @@ -61,15 +85,75 @@ export const GameBoard: React.FC = () => { const onDragEnd = (e: DragEndEvent) => { setIsDragging(false) const overId = e.over?.id as string | undefined - if (!overId || !overId.startsWith('slot-')) return - const index = Number(overId.slice(5)) - if (Number.isFinite(index)) placeAt(index) + if (!overId) return + + if (overId === 'slot-0') { + // lägg FÖRE första kortet + placeAt(0) + return + } + if (overId.startsWith('slot-')) { + const n = Number(overId.slice(5)) + if (Number.isFinite(n)) { + placeAt(n) // generellt: slot-i => index i i hela timeline + } + } } - // små helpers så vi funkar både med alias (title/artist/year) och dina backendfält - const yy = (c: any) => c?.year ?? c?.releaseYear - const tt = (c: any) => c?.title ?? c?.trackTitle - const aa = (c: any) => c?.artist ?? c?.trackArtist + // bygger en lista av slots: före första, mellan varje, efter sista + const renderCenteredTimeline = () => { + const tl = team.timeline + const showSlots = phase === 'DRAWN' + + // Inget startkort ännu (bör inte hända i TURN_START … men defensivt) + if (tl.length === 0) return null + + const children: React.ReactNode[] = [] + + // slot före första = index 0 + children.push() + + // rendera första som StartCard (men samma stil som säkra kort i din design) + children.push( +
+ +
+ ) + + // för varje efterföljande kort: slot mellan + kortet + for (let i = 1; i < tl.length; i++) { + // slot mellan i-1 och i => index i + children.push() + children.push( +
+ +
+ ) + } + + // slot efter sista => index = tl.length + children.push() + + return ( +
+ {/* justify-center => första kortet hamnar mitt i raden när listan är kort */} +
+ {children} +
+
+ ) + } return (
@@ -83,107 +167,55 @@ export const GameBoard: React.FC = () => {
{/* Errors / loading */} - {loading &&
Loading tracks…
} + {loading &&
Loading tracks…
} {error && ( -
+
)} {/* Start-knapp */} - {phase === 'SETUP' && ( - - )} + {phase === 'SETUP' && } - {/* Spelbrädet */} + {/* Bräde */} {phase !== 'SETUP' && ( <> -
+ Timeline + {renderCenteredTimeline()} - - {/* ⬇️ StartCard är nu första kortet i SAMMA scroll-rad som resten */} -
-
- {team.timeline[0] && ( -
- -
- )} - - {/* resten av tidslinjen (utan första kortet) + slots vid drag */} - -
+ {/* Drag-kortet (källan) – ligger utanför scroll för fri drag */} + {phase === 'DRAWN' && currentCard && ( +
+
+ )} - {/* Drag-kandidat (hemlig) */} - {phase === 'DRAWN' && currentCard && ( -
- -
- )} - - {/* Overlay-preview */} - - {isDragging && currentCard ? : null} - - -
+ {/* Overlay över hela viewporten */} + + {isDragging && currentCard ? : null} + +
- {/* Feedback vid fel – oförändrat */} - {phase === 'PLACED_WRONG' && ( -
- - Wrong placement! Next team’s turn… -
- )} - - {/* Kontroller – oförändrat */} + {/* Kontroller */}
- {phase === 'TURN_START' && ( - - )} - + {phase === 'TURN_START' && } {phase === 'DRAWN' && ( -
+
Drag the card and drop it between two cards in the timeline.
)} - {phase === 'CHOICE_AFTER_CORRECT' && ( <> - - + + )}
From fd62ce428ef85fd381e1d826c3bc1698c476eae3 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Thu, 14 Aug 2025 13:17:26 +0200 Subject: [PATCH 033/127] improved drag and drop for timeline --- frontend/src/components/CurrentCard.tsx | 23 +-- frontend/src/components/GameBoard.tsx | 104 +++++++------- frontend/src/components/TimeLineCard.tsx | 10 +- frontend/src/store/game.ts | 175 +++++++++++++---------- frontend/src/types/game.ts | 9 +- 5 files changed, 171 insertions(+), 150 deletions(-) diff --git a/frontend/src/components/CurrentCard.tsx b/frontend/src/components/CurrentCard.tsx index c4de097125..23465684cd 100644 --- a/frontend/src/components/CurrentCard.tsx +++ b/frontend/src/components/CurrentCard.tsx @@ -3,13 +3,16 @@ import { useDraggable } from '@dnd-kit/core' import { Card, CardHeader, CardContent } from '../ui' import type { TrackCard } from '../types/game' -// --- Draggable --- +const T = (c: any) => c?.title ?? c?.trackTitle ?? ''; +const A = (c: any) => c?.artist ?? c?.trackArtist ?? ''; + export const CurrentCard: React.FC<{ card: TrackCard; dragging?: boolean }> = ({ card, dragging }) => { - const { attributes, listeners, setNodeRef, transform } = useDraggable({ id: 'current-card' }) + const { attributes, listeners, setNodeRef, transform } = useDraggable({ id: 'current-card' }); const style: React.CSSProperties | undefined = transform ? { transform: `translate3d(${transform.x}px, ${transform.y}px, 0)` } - : undefined + : undefined; + return (
= ({ {...attributes} className={`w-[136px] cursor-grab active:cursor-grabbing select-none ${dragging ? 'opacity-0' : ''}`} > - +
Place in timeline
-
{card.artist}
-
{card.title}
+
{A(card)}
+
{T(card)}
?
- ) + ); } -// --- Preview för DragOverlay (INGEN useDraggable här!) --- +// Preview för DragOverlay (samma look) export const CurrentCardPreview: React.FC<{ card: TrackCard }> = ({ card }) => (
@@ -41,8 +44,8 @@ export const CurrentCardPreview: React.FC<{ card: TrackCard }> = ({ card }) => (
Place in timeline
-
{card.artist}
-
{card.title}
+
{A(card)}
+
{T(card)}
?
diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index 4087f8a026..bcccf3be71 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -15,11 +15,10 @@ import { restrictToWindowEdges } from '@dnd-kit/modifiers' import { useGame } from '../store/game' import { Heading, Button } from '../ui' import { ErrorMessage } from '../ui/ErrorMessage' -import { StartCard } from './StartCard' import { TimeLineCard } from './TimeLineCard' import { CurrentCard, CurrentCardPreview } from './CurrentCard' -// --- små helpers så vi klarar både {title,artist,year} och {trackTitle,trackArtist,releaseYear} +// helpers som tål både {title,artist,year} och {trackTitle,trackArtist,releaseYear} const Y = (c: any) => c?.year ?? c?.releaseYear const T = (c: any) => c?.title ?? c?.trackTitle const A = (c: any) => c?.artist ?? c?.trackArtist @@ -40,7 +39,7 @@ const TeamPill: React.FC<{ label: string; active?: boolean; score: number }> = ( ) -// En minimal dropp-slot (synlig bara när show = true) +// dropp-slot const DropSlot: React.FC<{ id: string; show: boolean }> = ({ id, show }) => { const { setNodeRef, isOver } = useDroppable({ id }) if (!show) return null @@ -67,14 +66,16 @@ export const GameBoard: React.FC = () => { placeAt, drawAnother, lockIn, + confirmPlacement, // <— från store loading, error, clearError, + pendingIndex, // <— från store + lastPlacementCorrect, } = useGame() const team = teams[currentTeamIndex] - // Viktigt: PointerSensor utan axis-lås + DragOverlay ger fri drag över viewporten const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 6 } })) const [isDragging, setIsDragging] = React.useState(false) @@ -86,71 +87,65 @@ export const GameBoard: React.FC = () => { setIsDragging(false) const overId = e.over?.id as string | undefined if (!overId) return - - if (overId === 'slot-0') { - // lägg FÖRE första kortet - placeAt(0) - return - } - if (overId.startsWith('slot-')) { - const n = Number(overId.slice(5)) - if (Number.isFinite(n)) { - placeAt(n) // generellt: slot-i => index i i hela timeline - } - } + if (!overId.startsWith('slot-')) return + const n = Number(overId.slice(5)) + if (Number.isFinite(n)) placeAt(n) } - // bygger en lista av slots: före första, mellan varje, efter sista - const renderCenteredTimeline = () => { - const tl = team.timeline - const showSlots = phase === 'DRAWN' - - // Inget startkort ännu (bör inte hända i TURN_START … men defensivt) - if (tl.length === 0) return null + // render timeline, inkl. pending-kort som ser EXAKT ut som drag-kortet + const renderTimeline = () => { + const base = team.timeline + const showSlots = phase === 'DRAWN' || phase === 'PLACED_PENDING' const children: React.ReactNode[] = [] - - // slot före första = index 0 + // Slot före första children.push() - // rendera första som StartCard (men samma stil som säkra kort i din design) - children.push( -
- -
- ) + for (let i = 0; i < base.length; i++) { + // visa pending-kortet *mellan* slot-i och card-i + if (phase === 'PLACED_PENDING' && pendingIndex === i && currentCard) { + children.push( +
+ +
+ ) + } - // för varje efterföljande kort: slot mellan + kortet - for (let i = 1; i < tl.length; i++) { - // slot mellan i-1 och i => index i - children.push() + const c = base[i] children.push( -
+
) + + // slot efter card-i => id "slot-(i+1)" + children.push() } - // slot efter sista => index = tl.length - children.push() + // om pending ska ligga sist + if (phase === 'PLACED_PENDING' && pendingIndex === base.length && currentCard) { + children.splice(children.length - 1, 0, // innan sista sloten +
+ +
+ ) + } return (
- {/* justify-center => första kortet hamnar mitt i raden när listan är kort */}
{children}
+ {phase === 'PLACED_PENDING' && ( +
+ +
+ )}
) } @@ -186,32 +181,33 @@ export const GameBoard: React.FC = () => { onDragStart={onDragStart} onDragEnd={onDragEnd} collisionDetection={closestCenter} - modifiers={[restrictToWindowEdges]} // låt drag flyga men stanna inom viewportkanterna + modifiers={[restrictToWindowEdges]} > Timeline - {renderCenteredTimeline()} + {renderTimeline()} - {/* Drag-kortet (källan) – ligger utanför scroll för fri drag */} - {phase === 'DRAWN' && currentCard && ( + {/* Drag-kortet får ligga kvar i DRAWN och även i PLACED_PENDING (så man kan flytta igen) */} + {(phase === 'DRAWN' || phase === 'PLACED_PENDING') && currentCard && (
)} - {/* Overlay över hela viewporten */} {isDragging && currentCard ? : null} - {/* Kontroller */} + {/* Kontroller efter rätt svar */}
{phase === 'TURN_START' && } + {phase === 'DRAWN' && (
Drag the card and drop it between two cards in the timeline.
)} + {phase === 'CHOICE_AFTER_CORRECT' && ( <> diff --git a/frontend/src/components/TimeLineCard.tsx b/frontend/src/components/TimeLineCard.tsx index 462063d912..9fb3e1ba23 100644 --- a/frontend/src/components/TimeLineCard.tsx +++ b/frontend/src/components/TimeLineCard.tsx @@ -30,11 +30,11 @@ export const TimeLineCard: React.FC = ({
- -
- {year} -
-
+ +
+ {isRevealed ? year : '??'} +
+
diff --git a/frontend/src/store/game.ts b/frontend/src/store/game.ts index f9a291c636..ced1d80510 100644 --- a/frontend/src/store/game.ts +++ b/frontend/src/store/game.ts @@ -3,7 +3,14 @@ import { TrackCard, GameState } from "../types/game" import { fetchTracks } from "../services/tracks" // ⬇️ UIState utökad med flaggan (null = ingen placering gjord ännu) -type UIState = { loading: boolean; error: string | null; lastPlacementCorrect: null | boolean } +type UIState = { + loading: boolean; + error: string | null; + lastPlacementCorrect: null | boolean + lastPlacedIndex: number | null; + confirmPlacement: () => void; +} + type Actions = { startGame: () => Promise @@ -13,140 +20,152 @@ type Actions = { lockIn: () => void nextTeam: () => void clearError: () => void + movePending: (toIndex: number) => void } const insertAt = (arr: TrackCard[], item: TrackCard, idx: number) => { - const copy = arr.slice() - copy.splice(idx, 0, item) - return copy -} - -// ⬇️ jämför alltid releaseYear + const copy = arr.slice(); + copy.splice(idx, 0, item); + return copy; +}; const isPlacementCorrect = (timeline: TrackCard[], card: TrackCard, i: number) => { - const left = i - 1 >= 0 ? timeline[i - 1].releaseYear : undefined - const right = i < timeline.length ? timeline[i].releaseYear : undefined - const y = card.releaseYear - return (left === undefined || y >= left) && (right === undefined || y <= right) -} - -export const useGame = create((set, get) => ({ + const y = (card as any).year ?? (card as any).releaseYear; + const left = i - 1 >= 0 ? ((timeline[i - 1] as any).year ?? (timeline[i - 1] as any).releaseYear) : undefined; + const right = i < timeline.length ? ((timeline[i] as any).year ?? (timeline[i] as any).releaseYear) : undefined; + return (left === undefined || y >= left) && (right === undefined || y <= right); +}; + +export const useGame = create void; +}>((set, get) => ({ deck: [], discard: [], teams: [ - { id: "A", name: "Team A", timeline: [], score: 0 }, - { id: "B", name: "Team B", timeline: [], score: 0 }, + { id: 'A', name: 'Team A', timeline: [], score: 0 }, + { id: 'B', name: 'Team B', timeline: [], score: 0 }, ], currentTeamIndex: 0, currentCard: undefined, roundBaselineTimeline: [], - phase: "SETUP", + pendingIndex: null, // <— NYTT + lastPlacementCorrect: null, // <— NYTT + phase: 'SETUP', loading: false, error: null, - // ⬇️ ny flagga - lastPlacementCorrect: null, clearError: () => set({ error: null }), startGame: async () => { - set({ loading: true, error: null }) + set({ loading: true, error: null }); try { - const deck = await fetchTracks(100) - if (deck.length < 2) throw new Error("Not enough tracks") - const [a, b, ...rest] = deck + const deck = await fetchTracks(100); + if (deck.length < 1) throw new Error('Not enough tracks'); + const [a, ...rest] = deck; set({ deck: rest, teams: [ - { id: "A", name: "Team A", timeline: [a], score: 0 }, - { id: "B", name: "Team B", timeline: [b], score: 0 }, + { id: 'A', name: 'Team A', timeline: [a], score: 0 }, + { id: 'B', name: 'Team B', timeline: [], score: 0 }, // startar tomt, får sitt första kort senare ], currentTeamIndex: 0, currentCard: undefined, roundBaselineTimeline: [], - phase: "TURN_START", + pendingIndex: null, lastPlacementCorrect: null, - }) + phase: 'TURN_START', + }); } catch (e: any) { - set({ error: e.message ?? "Failed to load tracks" }) + set({ error: e.message ?? 'Failed to load tracks' }); } finally { - set({ loading: false }) + set({ loading: false }); } }, startTurn: async () => { - const s = get() + const s = get(); if (!s.deck.length) { - await useGame.getState().startGame() // fyll på om tomt + await useGame.getState().startGame(); } - const s2 = get() - const [card, ...rest] = s2.deck + const s2 = get(); + const [card, ...rest] = s2.deck; set({ currentCard: card, deck: rest, roundBaselineTimeline: s2.teams[s2.currentTeamIndex].timeline.slice(), - phase: "DRAWN", + pendingIndex: null, lastPlacementCorrect: null, - }) + phase: 'DRAWN', + }); }, + // ⬇️ Viktig ändring: placeAt avgör INTE rätt/fel – den sätter bara "pending" placeAt: (slotIndex) => { - const s = get() - const tIdx = s.currentTeamIndex - const team = s.teams[tIdx] - const card = s.currentCard - if (!card) return - - if (!isPlacementCorrect(team.timeline, card, slotIndex)) { - // ⬇️ FEL: backa timeline till baseline, men stanna kvar på samma lag + const s = get(); + if (!s.currentCard) return; + set({ + pendingIndex: slotIndex, + phase: 'PLACED_PENDING', + }); + }, + + // ⬇️ NY: bekräfta placeringen – avgör först här om det var rätt/fel + confirmPlacement: () => { + const s = get(); + const tIdx = s.currentTeamIndex; + const team = s.teams[tIdx]; + const card = s.currentCard; + const i = s.pendingIndex; + + if (!card || i == null) return; + + const base = s.roundBaselineTimeline; // snapshot före drag + const correct = isPlacementCorrect(base, card, i); + + if (correct) { + const committed = insertAt(base, card, i); set({ - teams: s.teams.map((t, i) => - i === tIdx ? { ...t, timeline: s.roundBaselineTimeline.slice() } : t - ) as GameState["teams"], + teams: s.teams.map((t, idx) => (idx === tIdx ? { ...t, timeline: committed } : t)) as GameState['teams'], currentCard: undefined, - lastPlacementCorrect: false, // ⬅️ markera fel - phase: "CHOICE_AFTER_CORRECT", // ⬅️ återanvänd knapparna - }) - return + lastPlacementCorrect: true, + pendingIndex: null, + phase: 'CHOICE_AFTER_CORRECT', // spelaren väljer: Draw another eller Lock in & end turn + }); + } else { + // Fel => nollställ turn och byt lag direkt, som i dina regler + set({ + teams: s.teams.map((t, idx) => (idx === tIdx ? { ...t, timeline: s.roundBaselineTimeline } : t)) as GameState['teams'], + currentCard: undefined, + lastPlacementCorrect: false, + pendingIndex: null, + phase: 'TURN_START', + }); + get().nextTeam(); } - - // ⬇️ RÄTT: lägg in kortet, stanna i samma lag tills man "lockar in" - const newTimeline = insertAt(team.timeline, card, slotIndex) - set({ - teams: s.teams.map((t, i) => - i === tIdx ? { ...t, timeline: newTimeline } : t - ) as GameState["teams"], - currentCard: undefined, - lastPlacementCorrect: true, // ⬅️ markera rätt - phase: "CHOICE_AFTER_CORRECT", - }) }, drawAnother: async () => { - await get().startTurn() + await get().startTurn(); }, lockIn: () => { - const s = get() - const tIdx = s.currentTeamIndex - const gained = s.lastPlacementCorrect ? 1 : 0 // ⬅️ poäng bara vid korrekt - + const s = get(); + const tIdx = s.currentTeamIndex; + const gained = s.lastPlacementCorrect ? 1 : 0; set({ - teams: s.teams.map((t, i) => - i === tIdx ? { ...t, score: t.score + gained } : t - ) as GameState["teams"], - phase: "TURN_START", + teams: s.teams.map((t, i) => (i === tIdx ? { ...t, score: t.score + gained } : t)) as GameState['teams'], + phase: 'TURN_START', lastPlacementCorrect: null, - }) - - get().nextTeam() + }); + get().nextTeam(); }, nextTeam: () => { - const s = get() + const s = get(); set({ currentTeamIndex: (s.currentTeamIndex === 0 ? 1 : 0) as 0 | 1, currentCard: undefined, - phase: "TURN_START", - lastPlacementCorrect: null, - }) + pendingIndex: null, + phase: 'TURN_START', + }); }, -})) +})); diff --git a/frontend/src/types/game.ts b/frontend/src/types/game.ts index 8d949623a5..42d8338849 100644 --- a/frontend/src/types/game.ts +++ b/frontend/src/types/game.ts @@ -18,6 +18,7 @@ export type Phase = | 'SETUP' | 'TURN_START' | 'DRAWN' + | 'PLACED_PENDING' | 'WAITING_PLACEMENT' | 'CHOICE_AFTER_CORRECT' | 'PLACED_WRONG' @@ -25,9 +26,11 @@ export type Phase = export type GameState = { deck: TrackCard[] discard: TrackCard[] - teams: [Team, Team] + teams: Team [] currentTeamIndex: 0 | 1 currentCard?: TrackCard - roundBaselineTimeline: TrackCard[] // snapshot i början av rundan - phase: Phase + roundBaselineTimeline: TrackCard[];pendingIndex: number | null; + lastPlacementCorrect: boolean | null; + + phase: Phase; } From 6dfd3c14e57a066bf7414a1af353afd029bccdb9 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Thu, 14 Aug 2025 13:46:44 +0200 Subject: [PATCH 034/127] Improved start card logic --- frontend/src/components/GameBoard.tsx | 1 + frontend/src/store/game.ts | 206 +++++++++++++++----------- frontend/src/types/game.ts | 1 + 3 files changed, 122 insertions(+), 86 deletions(-) diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index bcccf3be71..486d942bed 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -17,6 +17,7 @@ import { Heading, Button } from '../ui' import { ErrorMessage } from '../ui/ErrorMessage' import { TimeLineCard } from './TimeLineCard' import { CurrentCard, CurrentCardPreview } from './CurrentCard' +import { StartCard } from './StartCard' // helpers som tål både {title,artist,year} och {trackTitle,trackArtist,releaseYear} const Y = (c: any) => c?.year ?? c?.releaseYear diff --git a/frontend/src/store/game.ts b/frontend/src/store/game.ts index ced1d80510..8296a37cce 100644 --- a/frontend/src/store/game.ts +++ b/frontend/src/store/game.ts @@ -1,171 +1,205 @@ +// src/store/game.ts import { create } from "zustand" -import { TrackCard, GameState } from "../types/game" +import type { TrackCard, GameState } from "../types/game" import { fetchTracks } from "../services/tracks" -// ⬇️ UIState utökad med flaggan (null = ingen placering gjord ännu) -type UIState = { - loading: boolean; - error: string | null; - lastPlacementCorrect: null | boolean - lastPlacedIndex: number | null; - confirmPlacement: () => void; +// ------- helpers ------- +const insertAt = (arr: TrackCard[], item: TrackCard, idx: number) => { + const copy = arr.slice() + copy.splice(idx, 0, item) + return copy +} +const Y = (c: any) => c?.year ?? c?.releaseYear +const isPlacementCorrect = (timeline: TrackCard[], card: TrackCard, i: number) => { + const y = Y(card) + const left = i - 1 >= 0 ? Y(timeline[i - 1]) : undefined + const right = i < timeline.length ? Y(timeline[i]) : undefined + return (left === undefined || y >= left) && (right === undefined || y <= right) +} +const drawOne = (pool: TrackCard[]) => { + const i = Math.floor(Math.random() * pool.length) + // splice tar ut OCH tar bort från poolen + return pool.splice(i, 1)[0] } - +// ------- lokalt UI-state + actions ------- +type UIState = { + loading: boolean + error: string | null + lastPlacementCorrect: boolean | null + pendingIndex: number | null + roundBaselineTimeline: TrackCard[] +} type Actions = { + clearError: () => void startGame: () => Promise startTurn: () => Promise placeAt: (slotIndex: number) => void + confirmPlacement: () => void drawAnother: () => Promise lockIn: () => void nextTeam: () => void - clearError: () => void - movePending: (toIndex: number) => void } -const insertAt = (arr: TrackCard[], item: TrackCard, idx: number) => { - const copy = arr.slice(); - copy.splice(idx, 0, item); - return copy; -}; -const isPlacementCorrect = (timeline: TrackCard[], card: TrackCard, i: number) => { - const y = (card as any).year ?? (card as any).releaseYear; - const left = i - 1 >= 0 ? ((timeline[i - 1] as any).year ?? (timeline[i - 1] as any).releaseYear) : undefined; - const right = i < timeline.length ? ((timeline[i] as any).year ?? (timeline[i] as any).releaseYear) : undefined; - return (left === undefined || y >= left) && (right === undefined || y <= right); -}; - -export const useGame = create void; -}>((set, get) => ({ +// ------- store ------- +export const useGame = create()((set, get) => ({ + // GameState (grunden) deck: [], discard: [], teams: [ - { id: 'A', name: 'Team A', timeline: [], score: 0 }, - { id: 'B', name: 'Team B', timeline: [], score: 0 }, + { id: "A", name: "Team A", timeline: [], score: 0 }, + { id: "B", name: "Team B", timeline: [], score: 0 }, ], currentTeamIndex: 0, currentCard: undefined, - roundBaselineTimeline: [], - pendingIndex: null, // <— NYTT - lastPlacementCorrect: null, // <— NYTT - phase: 'SETUP', + phase: "SETUP", + + // UIState loading: false, error: null, + lastPlacementCorrect: null, + pendingIndex: null, + roundBaselineTimeline: [], + // ----- helpers ----- clearError: () => set({ error: null }), + // ----- game flow ----- startGame: async () => { - set({ loading: true, error: null }); + set({ loading: true, error: null }) try { - const deck = await fetchTracks(100); - if (deck.length < 1) throw new Error('Not enough tracks'); - const [a, ...rest] = deck; + // hämta en rejäl lek + const deck = await fetchTracks(100) + if (!deck || deck.length < 2) { + throw new Error("Not enough tracks") + } + + // gör en kopia att dra ur + const pool = deck.slice() + + // ett startkort till varje lag, tas bort från poolen + const startA = drawOne(pool) + const startB = drawOne(pool) + set({ - deck: rest, + deck: pool, + discard: [], teams: [ - { id: 'A', name: 'Team A', timeline: [a], score: 0 }, - { id: 'B', name: 'Team B', timeline: [], score: 0 }, // startar tomt, får sitt första kort senare + { id: "A", name: "Team A", timeline: [startA], score: 0 }, + { id: "B", name: "Team B", timeline: [startB], score: 0 }, ], currentTeamIndex: 0, currentCard: undefined, roundBaselineTimeline: [], pendingIndex: null, lastPlacementCorrect: null, - phase: 'TURN_START', - }); + phase: "TURN_START", + }) } catch (e: any) { - set({ error: e.message ?? 'Failed to load tracks' }); + set({ error: e?.message ?? "Failed to load tracks" }) } finally { - set({ loading: false }); + set({ loading: false }) } }, startTurn: async () => { - const s = get(); + const s = get() + + // om leken är slut – hämta en ny och fortsätt (enkelt fallback) if (!s.deck.length) { - await useGame.getState().startGame(); + await get().startGame() } - const s2 = get(); - const [card, ...rest] = s2.deck; + + const s2 = get() + if (!s2.deck.length) return + + // dra ett kort från toppen (poolen är redan slumpad via fetch eller startGame) + const [card, ...rest] = s2.deck set({ - currentCard: card, deck: rest, + currentCard: card, roundBaselineTimeline: s2.teams[s2.currentTeamIndex].timeline.slice(), pendingIndex: null, lastPlacementCorrect: null, - phase: 'DRAWN', - }); + phase: "DRAWN", + }) }, - // ⬇️ Viktig ändring: placeAt avgör INTE rätt/fel – den sätter bara "pending" - placeAt: (slotIndex) => { - const s = get(); - if (!s.currentCard) return; + // sätter bara "pending" – ingen bedömning än + placeAt: (slotIndex: number) => { + const s = get() + if (!s.currentCard) return set({ pendingIndex: slotIndex, - phase: 'PLACED_PENDING', - }); + phase: "PLACED_PENDING", + }) }, - // ⬇️ NY: bekräfta placeringen – avgör först här om det var rätt/fel + // bekräfta placeringen och avgör rätt/fel nu confirmPlacement: () => { - const s = get(); - const tIdx = s.currentTeamIndex; - const team = s.teams[tIdx]; - const card = s.currentCard; - const i = s.pendingIndex; + const s = get() + const teamIdx = s.currentTeamIndex + const card = s.currentCard + const i = s.pendingIndex - if (!card || i == null) return; + if (!card || i == null) return - const base = s.roundBaselineTimeline; // snapshot före drag - const correct = isPlacementCorrect(base, card, i); + const base = s.roundBaselineTimeline + const correct = isPlacementCorrect(base, card, i) if (correct) { - const committed = insertAt(base, card, i); + const committed = insertAt(base, card, i) set({ - teams: s.teams.map((t, idx) => (idx === tIdx ? { ...t, timeline: committed } : t)) as GameState['teams'], + teams: s.teams.map((t, idx) => + idx === teamIdx ? { ...t, timeline: committed } : t + ) as any, currentCard: undefined, lastPlacementCorrect: true, pendingIndex: null, - phase: 'CHOICE_AFTER_CORRECT', // spelaren väljer: Draw another eller Lock in & end turn - }); + phase: "CHOICE_AFTER_CORRECT", + }) } else { - // Fel => nollställ turn och byt lag direkt, som i dina regler + // fel: nollställ och byt lag set({ - teams: s.teams.map((t, idx) => (idx === tIdx ? { ...t, timeline: s.roundBaselineTimeline } : t)) as GameState['teams'], + teams: s.teams.map((t, idx) => + idx === teamIdx ? { ...t, timeline: s.roundBaselineTimeline } : t + ) as any, currentCard: undefined, lastPlacementCorrect: false, pendingIndex: null, - phase: 'TURN_START', - }); - get().nextTeam(); + phase: "TURN_START", + }) + get().nextTeam() } }, drawAnother: async () => { - await get().startTurn(); + await get().startTurn() }, lockIn: () => { - const s = get(); - const tIdx = s.currentTeamIndex; - const gained = s.lastPlacementCorrect ? 1 : 0; + const s = get() + const tIdx = s.currentTeamIndex + const gained = s.lastPlacementCorrect ? 1 : 0 + set({ - teams: s.teams.map((t, i) => (i === tIdx ? { ...t, score: t.score + gained } : t)) as GameState['teams'], - phase: 'TURN_START', + teams: s.teams.map((t, i) => + i === tIdx ? { ...t, score: t.score + gained } : t + ) as any, + phase: "TURN_START", lastPlacementCorrect: null, - }); - get().nextTeam(); + }) + + get().nextTeam() }, nextTeam: () => { - const s = get(); + const s = get() set({ currentTeamIndex: (s.currentTeamIndex === 0 ? 1 : 0) as 0 | 1, currentCard: undefined, pendingIndex: null, - phase: 'TURN_START', - }); + phase: "TURN_START", + }) }, -})); +})) diff --git a/frontend/src/types/game.ts b/frontend/src/types/game.ts index 42d8338849..032c88e28e 100644 --- a/frontend/src/types/game.ts +++ b/frontend/src/types/game.ts @@ -5,6 +5,7 @@ export type TrackCard = { releaseYear: number previewUrl?: string imageUrl?: string + isStart?: boolean } export type Team = { From 54a4487a9684b5269bb3ff3fa44f94f3d1ad20f3 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Thu, 14 Aug 2025 14:19:03 +0200 Subject: [PATCH 035/127] Option to change position in Timeline --- frontend/src/components/GameBoard.tsx | 35 +++++++-------- frontend/src/store/game.ts | 61 ++++++++++++--------------- 2 files changed, 43 insertions(+), 53 deletions(-) diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index 486d942bed..7babd91520 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -17,7 +17,6 @@ import { Heading, Button } from '../ui' import { ErrorMessage } from '../ui/ErrorMessage' import { TimeLineCard } from './TimeLineCard' import { CurrentCard, CurrentCardPreview } from './CurrentCard' -import { StartCard } from './StartCard' // helpers som tål både {title,artist,year} och {trackTitle,trackArtist,releaseYear} const Y = (c: any) => c?.year ?? c?.releaseYear @@ -67,12 +66,11 @@ export const GameBoard: React.FC = () => { placeAt, drawAnother, lockIn, - confirmPlacement, // <— från store + confirmPlacement, loading, error, clearError, - pendingIndex, // <— från store - lastPlacementCorrect, + pendingIndex, } = useGame() const team = teams[currentTeamIndex] @@ -84,30 +82,30 @@ export const GameBoard: React.FC = () => { if (e.active.id === 'current-card') setIsDragging(true) } + // När man släpper över en slot: markera pending (flytta inte currentCard till timeline ännu) const onDragEnd = (e: DragEndEvent) => { setIsDragging(false) const overId = e.over?.id as string | undefined - if (!overId) return - if (!overId.startsWith('slot-')) return + if (!overId || !overId.startsWith('slot-')) return const n = Number(overId.slice(5)) - if (Number.isFinite(n)) placeAt(n) + if (!Number.isFinite(n)) return + if (!currentCard) return + placeAt(n) // sätter pendingIndex + phase: 'PLACED_PENDING' } - // render timeline, inkl. pending-kort som ser EXAKT ut som drag-kortet + // timeline: rendera vita kortet *inne i* timeline på pendingIndex, annars reveal:ade kort const renderTimeline = () => { const base = team.timeline const showSlots = phase === 'DRAWN' || phase === 'PLACED_PENDING' const children: React.ReactNode[] = [] - // Slot före första children.push() for (let i = 0; i < base.length; i++) { - // visa pending-kortet *mellan* slot-i och card-i if (phase === 'PLACED_PENDING' && pendingIndex === i && currentCard) { children.push( -
- +
+
) } @@ -124,15 +122,14 @@ export const GameBoard: React.FC = () => {
) - // slot efter card-i => id "slot-(i+1)" children.push() } - // om pending ska ligga sist + // pending sist if (phase === 'PLACED_PENDING' && pendingIndex === base.length && currentCard) { - children.splice(children.length - 1, 0, // innan sista sloten -
- + children.splice(children.length - 1, 0, +
+
) } @@ -187,8 +184,8 @@ export const GameBoard: React.FC = () => { Timeline {renderTimeline()} - {/* Drag-kortet får ligga kvar i DRAWN och även i PLACED_PENDING (så man kan flytta igen) */} - {(phase === 'DRAWN' || phase === 'PLACED_PENDING') && currentCard && ( + {/* Det vita kortet visas UTANFÖR tidslinjen bara när vi är i DRAWN */} + {phase === 'DRAWN' && currentCard && (
diff --git a/frontend/src/store/game.ts b/frontend/src/store/game.ts index 8296a37cce..bd5236934e 100644 --- a/frontend/src/store/game.ts +++ b/frontend/src/store/game.ts @@ -1,9 +1,8 @@ -// src/store/game.ts import { create } from "zustand" import type { TrackCard, GameState } from "../types/game" import { fetchTracks } from "../services/tracks" -// ------- helpers ------- +// ---------- helpers ---------- const insertAt = (arr: TrackCard[], item: TrackCard, idx: number) => { const copy = arr.slice() copy.splice(idx, 0, item) @@ -18,18 +17,19 @@ const isPlacementCorrect = (timeline: TrackCard[], card: TrackCard, i: number) = } const drawOne = (pool: TrackCard[]) => { const i = Math.floor(Math.random() * pool.length) - // splice tar ut OCH tar bort från poolen return pool.splice(i, 1)[0] } -// ------- lokalt UI-state + actions ------- -type UIState = { +// ---------- extra UI-state ---------- +type UIState = { loading: boolean error: string | null lastPlacementCorrect: boolean | null pendingIndex: number | null roundBaselineTimeline: TrackCard[] } + +// ---------- actions ---------- type Actions = { clearError: () => void startGame: () => Promise @@ -41,9 +41,8 @@ type Actions = { nextTeam: () => void } -// ------- store ------- export const useGame = create()((set, get) => ({ - // GameState (grunden) + // --- GameState baseline --- deck: [], discard: [], teams: [ @@ -54,30 +53,23 @@ export const useGame = create()((set, get) => ({ currentCard: undefined, phase: "SETUP", - // UIState + // --- UIState --- loading: false, error: null, lastPlacementCorrect: null, pendingIndex: null, roundBaselineTimeline: [], - // ----- helpers ----- clearError: () => set({ error: null }), - // ----- game flow ----- + // --- start game: ge varje lag ett unikt startkort --- startGame: async () => { set({ loading: true, error: null }) try { - // hämta en rejäl lek - const deck = await fetchTracks(100) - if (!deck || deck.length < 2) { - throw new Error("Not enough tracks") - } + const deck = await fetchTracks(120) + if (!deck || deck.length < 2) throw new Error("Not enough tracks") - // gör en kopia att dra ur const pool = deck.slice() - - // ett startkort till varje lag, tas bort från poolen const startA = drawOne(pool) const startB = drawOne(pool) @@ -102,30 +94,30 @@ export const useGame = create()((set, get) => ({ } }, + // --- börja en tur: dra ett kort till handen --- startTurn: async () => { const s = get() - // om leken är slut – hämta en ny och fortsätt (enkelt fallback) if (!s.deck.length) { + // om leken tog slut – starta om snabbt await get().startGame() } - const s2 = get() if (!s2.deck.length) return - // dra ett kort från toppen (poolen är redan slumpad via fetch eller startGame) const [card, ...rest] = s2.deck + set({ deck: rest, currentCard: card, - roundBaselineTimeline: s2.teams[s2.currentTeamIndex].timeline.slice(), + roundBaselineTimeline: s2.teams[s2.currentTeamIndex].timeline.slice(), // snapshot pendingIndex: null, lastPlacementCorrect: null, phase: "DRAWN", }) }, - // sätter bara "pending" – ingen bedömning än + // --- välj slot: *endast* pending, rör inte timeline än --- placeAt: (slotIndex: number) => { const s = get() if (!s.currentCard) return @@ -135,7 +127,7 @@ export const useGame = create()((set, get) => ({ }) }, - // bekräfta placeringen och avgör rätt/fel nu + // --- bekräfta: bedöm mot snapshot och committa till timeline --- confirmPlacement: () => { const s = get() const teamIdx = s.currentTeamIndex @@ -150,23 +142,23 @@ export const useGame = create()((set, get) => ({ if (correct) { const committed = insertAt(base, card, i) set({ - teams: s.teams.map((t, idx) => - idx === teamIdx ? { ...t, timeline: committed } : t - ) as any, + teams: s.teams.map((team, idx) => + idx === teamIdx ? { ...team, timeline: committed } : team + ) as GameState["teams"], currentCard: undefined, - lastPlacementCorrect: true, pendingIndex: null, + lastPlacementCorrect: true, phase: "CHOICE_AFTER_CORRECT", }) } else { - // fel: nollställ och byt lag + // fel gissning → återställ och byt lag set({ - teams: s.teams.map((t, idx) => - idx === teamIdx ? { ...t, timeline: s.roundBaselineTimeline } : t - ) as any, + teams: s.teams.map((team, idx) => + idx === teamIdx ? { ...team, timeline: s.roundBaselineTimeline } : team + ) as GameState["teams"], currentCard: undefined, - lastPlacementCorrect: false, pendingIndex: null, + lastPlacementCorrect: false, phase: "TURN_START", }) get().nextTeam() @@ -185,7 +177,7 @@ export const useGame = create()((set, get) => ({ set({ teams: s.teams.map((t, i) => i === tIdx ? { ...t, score: t.score + gained } : t - ) as any, + ) as GameState["teams"], phase: "TURN_START", lastPlacementCorrect: null, }) @@ -199,6 +191,7 @@ export const useGame = create()((set, get) => ({ currentTeamIndex: (s.currentTeamIndex === 0 ? 1 : 0) as 0 | 1, currentCard: undefined, pendingIndex: null, + roundBaselineTimeline: [], phase: "TURN_START", }) }, From c45eff62db977e52f125b01f842a4fd93db592c2 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Thu, 14 Aug 2025 14:33:48 +0200 Subject: [PATCH 036/127] Visual Feedback for right and wrong --- frontend/src/components/GameBoard.tsx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index 7babd91520..1e92b5d65a 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -71,6 +71,7 @@ export const GameBoard: React.FC = () => { error, clearError, pendingIndex, + lastPlacementCorrect } = useGame() const team = teams[currentTeamIndex] @@ -111,6 +112,10 @@ export const GameBoard: React.FC = () => { } const c = base[i] + + const isLastPlaced = lastPlacementCorrect !== null && pendingIndex !== null && i === pendingIndex + + children.push(
{ artist={A(c)} title={T(c)} isRevealed + isCorrect={isLastPlaced ? lastPlacementCorrect : undefined} />
) @@ -139,6 +145,16 @@ export const GameBoard: React.FC = () => {
{children}
+ {lastPlacementCorrect === true && ( +
+ ✅ Yes! Correct! +
+)} +{lastPlacementCorrect === false && ( +
+ ❌ Oh no, wrong answer! Your turn is over +
+)} {phase === 'PLACED_PENDING' && (
From cc43700d06eb8d2bca5e002ec730bb4ff8c2f651 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Thu, 14 Aug 2025 14:51:02 +0200 Subject: [PATCH 037/127] Logic for points --- frontend/src/components/GameBoard.tsx | 9 +++-- frontend/src/store/game.ts | 51 ++++++++++++++++----------- 2 files changed, 37 insertions(+), 23 deletions(-) diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index 1e92b5d65a..c55a6b8a81 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -96,7 +96,10 @@ export const GameBoard: React.FC = () => { // timeline: rendera vita kortet *inne i* timeline på pendingIndex, annars reveal:ade kort const renderTimeline = () => { - const base = team.timeline +const base = (phase === 'DRAWN' || phase === 'PLACED_PENDING' || phase === 'CHOICE_AFTER_CORRECT') + ? useGame.getState().turnTimeline + : team.timeline + const showSlots = phase === 'DRAWN' || phase === 'PLACED_PENDING' const children: React.ReactNode[] = [] @@ -170,8 +173,8 @@ export const GameBoard: React.FC = () => {
Game Mode
- - + +
diff --git a/frontend/src/store/game.ts b/frontend/src/store/game.ts index bd5236934e..3a746a8371 100644 --- a/frontend/src/store/game.ts +++ b/frontend/src/store/game.ts @@ -1,3 +1,4 @@ +// src/store/game.ts import { create } from "zustand" import type { TrackCard, GameState } from "../types/game" import { fetchTracks } from "../services/tracks" @@ -26,7 +27,8 @@ type UIState = { error: string | null lastPlacementCorrect: boolean | null pendingIndex: number | null - roundBaselineTimeline: TrackCard[] + roundBaselineTimeline: TrackCard[] // lagets timeline vid rundans start + turnTimeline: TrackCard[] // temporär timeline under pågående runda } // ---------- actions ---------- @@ -59,6 +61,7 @@ export const useGame = create()((set, get) => ({ lastPlacementCorrect: null, pendingIndex: null, roundBaselineTimeline: [], + turnTimeline: [], clearError: () => set({ error: null }), @@ -83,6 +86,7 @@ export const useGame = create()((set, get) => ({ currentTeamIndex: 0, currentCard: undefined, roundBaselineTimeline: [], + turnTimeline: [], pendingIndex: null, lastPlacementCorrect: null, phase: "TURN_START", @@ -94,12 +98,12 @@ export const useGame = create()((set, get) => ({ } }, - // --- börja en tur: dra ett kort till handen --- + // --- börja en tur / dra ett kort --- startTurn: async () => { const s = get() + // Om leken är slut – starta om snabbt if (!s.deck.length) { - // om leken tog slut – starta om snabbt await get().startGame() } const s2 = get() @@ -107,17 +111,26 @@ export const useGame = create()((set, get) => ({ const [card, ...rest] = s2.deck + // Om vi kommer från TURN_START initierar vi baseline och turnTimeline. + // Om vi kommer från CHOICE_AFTER_CORRECT (Draw another) så behåller vi turnTimeline. + const startingNewRound = s2.phase === "TURN_START" + set({ deck: rest, currentCard: card, - roundBaselineTimeline: s2.teams[s2.currentTeamIndex].timeline.slice(), // snapshot + roundBaselineTimeline: startingNewRound + ? s2.teams[s2.currentTeamIndex].timeline.slice() + : s2.roundBaselineTimeline, + turnTimeline: startingNewRound + ? s2.teams[s2.currentTeamIndex].timeline.slice() + : s2.turnTimeline, pendingIndex: null, lastPlacementCorrect: null, phase: "DRAWN", }) }, - // --- välj slot: *endast* pending, rör inte timeline än --- + // --- välj slot: *endast* pending, rör inte turnTimeline än --- placeAt: (slotIndex: number) => { const s = get() if (!s.currentCard) return @@ -127,35 +140,31 @@ export const useGame = create()((set, get) => ({ }) }, - // --- bekräfta: bedöm mot snapshot och committa till timeline --- + // --- bekräfta: bedöm mot turnTimeline (staged lista) och uppdatera turnTimeline vid rätt --- confirmPlacement: () => { const s = get() - const teamIdx = s.currentTeamIndex const card = s.currentCard const i = s.pendingIndex if (!card || i == null) return - const base = s.roundBaselineTimeline + // Bedöm mot nuvarande staged lista (så flera korrekta i rad funkar) + const base = s.turnTimeline const correct = isPlacementCorrect(base, card, i) if (correct) { - const committed = insertAt(base, card, i) + const staged = insertAt(base, card, i) set({ - teams: s.teams.map((team, idx) => - idx === teamIdx ? { ...team, timeline: committed } : team - ) as GameState["teams"], + turnTimeline: staged, // bygg upp rundans tillfälliga timeline currentCard: undefined, pendingIndex: null, lastPlacementCorrect: true, - phase: "CHOICE_AFTER_CORRECT", + phase: "CHOICE_AFTER_CORRECT", // välj: Draw another eller Lock in }) } else { - // fel gissning → återställ och byt lag + // FEL: kasta hela rundans jobb och gå tillbaka till baseline set({ - teams: s.teams.map((team, idx) => - idx === teamIdx ? { ...team, timeline: s.roundBaselineTimeline } : team - ) as GameState["teams"], + turnTimeline: s.roundBaselineTimeline.slice(), currentCard: undefined, pendingIndex: null, lastPlacementCorrect: false, @@ -169,17 +178,19 @@ export const useGame = create()((set, get) => ({ await get().startTurn() }, + // --- lock in: committa rundans temporära lista till lagets permanenta timeline --- lockIn: () => { const s = get() const tIdx = s.currentTeamIndex - const gained = s.lastPlacementCorrect ? 1 : 0 + const committed = s.turnTimeline set({ teams: s.teams.map((t, i) => - i === tIdx ? { ...t, score: t.score + gained } : t + i === tIdx ? { ...t, timeline: committed } : t ) as GameState["teams"], phase: "TURN_START", lastPlacementCorrect: null, + // behåll turnTimeline/baseline tills nästa startTurn initierar dem igen }) get().nextTeam() @@ -191,7 +202,7 @@ export const useGame = create()((set, get) => ({ currentTeamIndex: (s.currentTeamIndex === 0 ? 1 : 0) as 0 | 1, currentCard: undefined, pendingIndex: null, - roundBaselineTimeline: [], + // låt baseline/turnTimeline vara – de sätts korrekt i startTurn phase: "TURN_START", }) }, From 5dcc5c68dd79859b1f85ffe796219e3f078a46c9 Mon Sep 17 00:00:00 2001 From: Idahel Date: Thu, 14 Aug 2025 15:29:34 +0200 Subject: [PATCH 038/127] cleaned up index.tserror handling --- backend/src/index.ts | 125 +++++++++++-------------------------------- 1 file changed, 31 insertions(+), 94 deletions(-) diff --git a/backend/src/index.ts b/backend/src/index.ts index 7b08b78c6e..6e76c204b6 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -127,6 +127,26 @@ const generateRandomString = (length: number): string => { return text; }; +// Utility function to handle Spotify API errors +const handleSpotifyError = (err: unknown, res: Response, operation: string) => { + console.error(`Error during ${operation}:`, err); + + if (err && typeof err === 'object' && 'statusCode' in err) { + const statusCode = (err as { statusCode: number }).statusCode; + if (statusCode === 403) { + res.status(403).json({ error: 'Premium account required for playback control.' }); + } else if (statusCode === 404) { + res.status(404).json({ error: 'Device not found or not available.' }); + } else if (statusCode === 429) { + res.status(429).json({ error: 'Rate limit exceeded. Please try again later.' }); + } else { + res.status(500).json({ error: `Could not ${operation}.` }); + } + } else { + res.status(500).json({ error: `Could not ${operation}.` }); + } +}; + // --- Authentication routes (for the user to log in with Spotify) --- // 1. Log in with Spotify @@ -355,23 +375,7 @@ app.put('/spotify/play', async (req: Request, res: Response) => { await spotifyApi.play(playOptions); res.status(204).send(); // Spotify returns 204 for successful playback start } catch (err: unknown) { - console.error('Error during playback:', err); - - // Handle specific Spotify API errors - if (err && typeof err === 'object' && 'statusCode' in err) { - const statusCode = (err as { statusCode: number }).statusCode; - if (statusCode === 403) { - res.status(403).json({ error: 'Premium account required for playback control.' }); - } else if (statusCode === 404) { - res.status(404).json({ error: 'Device not found or not available.' }); - } else if (statusCode === 429) { - res.status(429).json({ error: 'Rate limit exceeded. Please try again later.' }); - } else { - res.status(500).json({ error: 'Could not start playback.' }); - } - } else { - res.status(500).json({ error: 'Could not start playback.' }); - } + handleSpotifyError(err, res, 'start playback'); } }); @@ -395,20 +399,7 @@ app.put('/spotify/pause', async (req: Request, res: Response) => { await spotifyApi.pause(pauseOptions); res.status(204).send(); } catch (err: unknown) { - console.error('Error during pause:', err); - - if (err && typeof err === 'object' && 'statusCode' in err) { - const statusCode = (err as { statusCode: number }).statusCode; - if (statusCode === 403) { - res.status(403).json({ error: 'Premium account required for playback control.' }); - } else if (statusCode === 404) { - res.status(404).json({ error: 'Device not found or not available.' }); - } else { - res.status(500).json({ error: 'Could not pause playback.' }); - } - } else { - res.status(500).json({ error: 'Could not pause playback.' }); - } + handleSpotifyError(err, res, 'pause playback'); } }); @@ -432,20 +423,7 @@ app.post('/spotify/next', async (req: Request, res: Response) => { await spotifyApi.skipToNext(nextOptions); res.status(204).send(); } catch (err: unknown) { - console.error('Error skipping to next track:', err); - - if (err && typeof err === 'object' && 'statusCode' in err) { - const statusCode = (err as { statusCode: number }).statusCode; - if (statusCode === 403) { - res.status(403).json({ error: 'Premium account required for playback control.' }); - } else if (statusCode === 404) { - res.status(404).json({ error: 'Device not found or not available.' }); - } else { - res.status(500).json({ error: 'Could not skip to next track.' }); - } - } else { - res.status(500).json({ error: 'Could not skip to next track.' }); - } + handleSpotifyError(err, res, 'skip to next track'); } }); @@ -469,20 +447,7 @@ app.post('/spotify/previous', async (req: Request, res: Response) => { await spotifyApi.skipToPrevious(previousOptions); res.status(204).send(); } catch (err: unknown) { - console.error('Error skipping to previous track:', err); - - if (err && typeof err === 'object' && 'statusCode' in err) { - const statusCode = (err as { statusCode: number }).statusCode; - if (statusCode === 403) { - res.status(403).json({ error: 'Premium account required for playback control.' }); - } else if (statusCode === 404) { - res.status(404).json({ error: 'Device not found or not available.' }); - } else { - res.status(500).json({ error: 'Could not skip to previous track.' }); - } - } else { - res.status(500).json({ error: 'Could not skip to previous track.' }); - } + handleSpotifyError(err, res, 'skip to previous track'); } }); @@ -567,25 +532,12 @@ app.put('/spotify/transfer', async (req: Request, res: Response) => { res.status(204).send(); } catch (err: unknown) { - console.error('Error transferring playback:', err); - - if (err && typeof err === 'object' && 'statusCode' in err) { - const statusCode = (err as { statusCode: number }).statusCode; - if (statusCode === 403) { - res.status(403).json({ error: 'Premium account required for playback control.' }); - } else if (statusCode === 404) { - res.status(404).json({ error: 'Device not found or not available.' }); - } else { - res.status(500).json({ error: 'Could not transfer playback.' }); - } - } else { - res.status(500).json({ error: 'Could not transfer playback.' }); - } + handleSpotifyError(err, res, 'transfer playback'); } }); -// --- MongoDB Model (Quiz Questions) --- -// This model defines how your quiz questions are stored in the database. +// --- MongoDB Model (Quiz) --- +// This model defines how the quiz are stored in the database. // `trackId` is the Spotify Track ID, used to play the song. // Define an interface for the data model @@ -727,31 +679,16 @@ app.get('/quiz-questions/random', async (req: Request, res: Response) => { } }); -// --- **NEW ROUTE TO VIEW RAW DATA FROM THE SPOTIFY API** --- -// Use this route to verify that fetching the playlist works. -// You can then remove it once you have tested it. -app.get('/raw-playlist-data', async (req: Request, res: Response) => { - const playlistId = '6YHoO8ETcwxgq5WTjDpyAQ'; // Your playlist - - try { - const data = await spotifyApi.clientCredentialsGrant(); - spotifyApi.setAccessToken(data.body['access_token']); - - const playlistData = await spotifyApi.getPlaylistTracks(playlistId); - res.json(playlistData.body); // Send the entire raw data - } catch (err) { - console.error('Error fetching raw data from Spotify:', err); - res.status(500).json({ error: 'Could not fetch raw data.' }); - } -}); - // --- Function to add quiz questions from a specific playlist --- // Use this function to populate your MongoDB database with questions from your playlist. // It fetches an app-specific access token, so it does not require a logged-in user. +// Configuration constants +const PLAYLIST_ID = '6YHoO8ETcwxgq5WTjDpyAQ'; + async function populateQuizQuestionsFromPlaylist() { // ID for the playlist you want to fetch tracks from. - const playlistId = '6YHoO8ETcwxgq5WTjDpyAQ'; + const playlistId = PLAYLIST_ID; try { // Check if mongoose is connected before proceeding From 7de28f7d82d87204805a6699e3c048a48917a2fe Mon Sep 17 00:00:00 2001 From: tildetilde Date: Thu, 14 Aug 2025 16:44:31 +0200 Subject: [PATCH 039/127] New loading page --- frontend/dist/assets/index-CbID9jAG.js | 64 ------ frontend/dist/assets/index-aqb3Zr_w.css | 1 - frontend/dist/index.html | 14 -- frontend/dist/vite.svg | 1 - frontend/src/assets/banana.png | Bin 0 -> 591550 bytes frontend/src/assets/banganzalogo.png | Bin 0 -> 2366475 bytes frontend/src/assets/banganzalogo.svg | Bin 591333 -> 61170 bytes frontend/src/components/BanganzaIntro.tsx | 68 +++++++ frontend/src/index.css | 217 +++++++++++++++++--- frontend/src/pages/Home.tsx | 230 +++++++++++----------- 10 files changed, 379 insertions(+), 216 deletions(-) delete mode 100644 frontend/dist/assets/index-CbID9jAG.js delete mode 100644 frontend/dist/assets/index-aqb3Zr_w.css delete mode 100644 frontend/dist/index.html delete mode 100644 frontend/dist/vite.svg create mode 100644 frontend/src/assets/banana.png create mode 100644 frontend/src/assets/banganzalogo.png create mode 100644 frontend/src/components/BanganzaIntro.tsx diff --git a/frontend/dist/assets/index-CbID9jAG.js b/frontend/dist/assets/index-CbID9jAG.js deleted file mode 100644 index 4e3c2223fd..0000000000 --- a/frontend/dist/assets/index-CbID9jAG.js +++ /dev/null @@ -1,64 +0,0 @@ -(function(){const u=document.createElement("link").relList;if(u&&u.supports&&u.supports("modulepreload"))return;for(const d of document.querySelectorAll('link[rel="modulepreload"]'))c(d);new MutationObserver(d=>{for(const f of d)if(f.type==="childList")for(const y of f.addedNodes)y.tagName==="LINK"&&y.rel==="modulepreload"&&c(y)}).observe(document,{childList:!0,subtree:!0});function a(d){const f={};return d.integrity&&(f.integrity=d.integrity),d.referrerPolicy&&(f.referrerPolicy=d.referrerPolicy),d.crossOrigin==="use-credentials"?f.credentials="include":d.crossOrigin==="anonymous"?f.credentials="omit":f.credentials="same-origin",f}function c(d){if(d.ep)return;d.ep=!0;const f=a(d);fetch(d.href,f)}})();function qc(i){return i&&i.__esModule&&Object.prototype.hasOwnProperty.call(i,"default")?i.default:i}var ga={exports:{}},Xr={},va={exports:{}},ie={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Ic;function Sp(){if(Ic)return ie;Ic=1;var i=Symbol.for("react.element"),u=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),c=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),f=Symbol.for("react.provider"),y=Symbol.for("react.context"),E=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),w=Symbol.for("react.memo"),j=Symbol.for("react.lazy"),M=Symbol.iterator;function I(x){return x===null||typeof x!="object"?null:(x=M&&x[M]||x["@@iterator"],typeof x=="function"?x:null)}var ee={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},H=Object.assign,O={};function F(x,R,Y){this.props=x,this.context=R,this.refs=O,this.updater=Y||ee}F.prototype.isReactComponent={},F.prototype.setState=function(x,R){if(typeof x!="object"&&typeof x!="function"&&x!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,x,R,"setState")},F.prototype.forceUpdate=function(x){this.updater.enqueueForceUpdate(this,x,"forceUpdate")};function U(){}U.prototype=F.prototype;function K(x,R,Y){this.props=x,this.context=R,this.refs=O,this.updater=Y||ee}var ne=K.prototype=new U;ne.constructor=K,H(ne,F.prototype),ne.isPureReactComponent=!0;var le=Array.isArray,fe=Object.prototype.hasOwnProperty,ve={current:null},ye={key:!0,ref:!0,__self:!0,__source:!0};function Q(x,R,Y){var q,ae={},se=null,re=null;if(R!=null)for(q in R.ref!==void 0&&(re=R.ref),R.key!==void 0&&(se=""+R.key),R)fe.call(R,q)&&!ye.hasOwnProperty(q)&&(ae[q]=R[q]);var ce=arguments.length-2;if(ce===1)ae.children=Y;else if(1>>1,R=P[x];if(0>>1;xd(ae,A))sed(re,ae)?(P[x]=re,P[se]=A,x=se):(P[x]=ae,P[q]=A,x=q);else if(sed(re,A))P[x]=re,P[se]=A,x=se;else break e}}return X}function d(P,X){var A=P.sortIndex-X.sortIndex;return A!==0?A:P.id-X.id}if(typeof performance=="object"&&typeof performance.now=="function"){var f=performance;i.unstable_now=function(){return f.now()}}else{var y=Date,E=y.now();i.unstable_now=function(){return y.now()-E}}var g=[],w=[],j=1,M=null,I=3,ee=!1,H=!1,O=!1,F=typeof setTimeout=="function"?setTimeout:null,U=typeof clearTimeout=="function"?clearTimeout:null,K=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function ne(P){for(var X=a(w);X!==null;){if(X.callback===null)c(w);else if(X.startTime<=P)c(w),X.sortIndex=X.expirationTime,u(g,X);else break;X=a(w)}}function le(P){if(O=!1,ne(P),!H)if(a(g)!==null)H=!0,Se(fe);else{var X=a(w);X!==null&&me(le,X.startTime-P)}}function fe(P,X){H=!1,O&&(O=!1,U(Q),Q=-1),ee=!0;var A=I;try{for(ne(X),M=a(g);M!==null&&(!(M.expirationTime>X)||P&&!ot());){var x=M.callback;if(typeof x=="function"){M.callback=null,I=M.priorityLevel;var R=x(M.expirationTime<=X);X=i.unstable_now(),typeof R=="function"?M.callback=R:M===a(g)&&c(g),ne(X)}else c(g);M=a(g)}if(M!==null)var Y=!0;else{var q=a(w);q!==null&&me(le,q.startTime-X),Y=!1}return Y}finally{M=null,I=A,ee=!1}}var ve=!1,ye=null,Q=-1,pe=5,Te=-1;function ot(){return!(i.unstable_now()-TeP||125x?(P.sortIndex=A,u(w,P),a(g)===null&&P===a(w)&&(O?(U(Q),Q=-1):O=!0,me(le,A-x))):(P.sortIndex=R,u(g,P),H||ee||(H=!0,Se(fe))),P},i.unstable_shouldYield=ot,i.unstable_wrapCallback=function(P){var X=I;return function(){var A=I;I=X;try{return P.apply(this,arguments)}finally{I=A}}}}(wa)),wa}var Uc;function Pp(){return Uc||(Uc=1,xa.exports=Np()),xa.exports}/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var $c;function jp(){if($c)return lt;$c=1;var i=La(),u=Pp();function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),g=Object.prototype.hasOwnProperty,w=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,j={},M={};function I(e){return g.call(M,e)?!0:g.call(j,e)?!1:w.test(e)?M[e]=!0:(j[e]=!0,!1)}function ee(e,t,n,r){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return r?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function H(e,t,n,r){if(t===null||typeof t>"u"||ee(e,t,n,r))return!0;if(r)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function O(e,t,n,r,l,o,s){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=r,this.attributeNamespace=l,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=o,this.removeEmptyString=s}var F={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){F[e]=new O(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];F[t]=new O(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){F[e]=new O(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){F[e]=new O(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){F[e]=new O(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){F[e]=new O(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){F[e]=new O(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){F[e]=new O(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){F[e]=new O(e,5,!1,e.toLowerCase(),null,!1,!1)});var U=/[\-:]([a-z])/g;function K(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(U,K);F[t]=new O(t,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(U,K);F[t]=new O(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(U,K);F[t]=new O(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){F[e]=new O(e,1,!1,e.toLowerCase(),null,!1,!1)}),F.xlinkHref=new O("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){F[e]=new O(e,1,!1,e.toLowerCase(),null,!0,!0)});function ne(e,t,n,r){var l=F.hasOwnProperty(t)?F[t]:null;(l!==null?l.type!==0:r||!(2p||l[s]!==o[p]){var h=` -`+l[s].replace(" at new "," at ");return e.displayName&&h.includes("")&&(h=h.replace("",e.displayName)),h}while(1<=s&&0<=p);break}}}finally{Y=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?R(e):""}function ae(e){switch(e.tag){case 5:return R(e.type);case 16:return R("Lazy");case 13:return R("Suspense");case 19:return R("SuspenseList");case 0:case 2:case 15:return e=q(e.type,!1),e;case 11:return e=q(e.type.render,!1),e;case 1:return e=q(e.type,!0),e;default:return""}}function se(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case ye:return"Fragment";case ve:return"Portal";case pe:return"Profiler";case Q:return"StrictMode";case He:return"Suspense";case Xe:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case ot:return(e.displayName||"Context")+".Consumer";case Te:return(e._context.displayName||"Context")+".Provider";case Ye:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case $e:return t=e.displayName||null,t!==null?t:se(e.type)||"Memo";case Se:t=e._payload,e=e._init;try{return se(e(t))}catch{}}return null}function re(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return se(t);case 8:return t===Q?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function ce(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function he(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Fe(e){var t=he(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var l=n.get,o=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(s){r=""+s,o.call(this,s)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(s){r=""+s},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Qt(e){e._valueTracker||(e._valueTracker=Fe(e))}function gn(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=he(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function nl(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Eo(e,t){var n=t.checked;return A({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Ba(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=ce(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function ba(e,t){t=t.checked,t!=null&&ne(e,"checked",t,!1)}function Co(e,t){ba(e,t);var n=ce(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?No(e,t.type,n):t.hasOwnProperty("defaultValue")&&No(e,t.type,ce(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Va(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function No(e,t,n){(t!=="number"||nl(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var dr=Array.isArray;function Tn(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l"+t.valueOf().toString()+"",t=rl.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function fr(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var pr={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Nd=["Webkit","ms","Moz","O"];Object.keys(pr).forEach(function(e){Nd.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),pr[t]=pr[e]})});function Ya(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||pr.hasOwnProperty(e)&&pr[e]?(""+t).trim():t+"px"}function Xa(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,l=Ya(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,l):e[n]=l}}var Pd=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Ro(e,t){if(t){if(Pd[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(a(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(a(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(a(61))}if(t.style!=null&&typeof t.style!="object")throw Error(a(62))}}function _o(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var Lo=null;function zo(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var To=null,Mn=null,In=null;function Ja(e){if(e=Or(e)){if(typeof To!="function")throw Error(a(280));var t=e.stateNode;t&&(t=Pl(t),To(e.stateNode,e.type,t))}}function Za(e){Mn?In?In.push(e):In=[e]:Mn=e}function qa(){if(Mn){var e=Mn,t=In;if(In=Mn=null,Ja(e),t)for(e=0;e>>=0,e===0?32:31-(Dd(e)/Ad|0)|0}var sl=64,ul=4194304;function vr(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function cl(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,l=e.suspendedLanes,o=e.pingedLanes,s=n&268435455;if(s!==0){var p=s&~l;p!==0?r=vr(p):(o&=s,o!==0&&(r=vr(o)))}else s=n&~l,s!==0?r=vr(s):o!==0&&(r=vr(o));if(r===0)return 0;if(t!==0&&t!==r&&(t&l)===0&&(l=r&-r,o=t&-t,l>=o||l===16&&(o&4194240)!==0))return t;if((r&4)!==0&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function yr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-wt(t),e[t]=n}function bd(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=Pr),js=" ",Rs=!1;function _s(e,t){switch(e){case"keyup":return vf.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Ls(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Dn=!1;function xf(e,t){switch(e){case"compositionend":return Ls(t);case"keypress":return t.which!==32?null:(Rs=!0,js);case"textInput":return e=t.data,e===js&&Rs?null:e;default:return null}}function wf(e,t){if(Dn)return e==="compositionend"||!Xo&&_s(e,t)?(e=ks(),hl=Ho=Jt=null,Dn=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Ds(n)}}function Us(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Us(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function $s(){for(var e=window,t=nl();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=nl(e.document)}return t}function qo(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function _f(e){var t=$s(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Us(n.ownerDocument.documentElement,n)){if(r!==null&&qo(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var l=n.textContent.length,o=Math.min(r.start,l);r=r.end===void 0?o:Math.min(r.end,l),!e.extend&&o>r&&(l=r,r=o,o=l),l=As(n,o);var s=As(n,r);l&&s&&(e.rangeCount!==1||e.anchorNode!==l.node||e.anchorOffset!==l.offset||e.focusNode!==s.node||e.focusOffset!==s.offset)&&(t=t.createRange(),t.setStart(l.node,l.offset),e.removeAllRanges(),o>r?(e.addRange(t),e.extend(s.node,s.offset)):(t.setEnd(s.node,s.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,An=null,ei=null,Lr=null,ti=!1;function Bs(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ti||An==null||An!==nl(r)||(r=An,"selectionStart"in r&&qo(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),Lr&&_r(Lr,r)||(Lr=r,r=El(ei,"onSelect"),0Vn||(e.current=pi[Vn],pi[Vn]=null,Vn--)}function xe(e,t){Vn++,pi[Vn]=e.current,e.current=t}var tn={},We=en(tn),qe=en(!1),xn=tn;function Hn(e,t){var n=e.type.contextTypes;if(!n)return tn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var l={},o;for(o in n)l[o]=t[o];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=l),l}function et(e){return e=e.childContextTypes,e!=null}function jl(){ke(qe),ke(We)}function nu(e,t,n){if(We.current!==tn)throw Error(a(168));xe(We,t),xe(qe,n)}function ru(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var l in r)if(!(l in t))throw Error(a(108,re(e)||"Unknown",l));return A({},n,r)}function Rl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||tn,xn=We.current,xe(We,e),xe(qe,qe.current),!0}function lu(e,t,n){var r=e.stateNode;if(!r)throw Error(a(169));n?(e=ru(e,t,xn),r.__reactInternalMemoizedMergedChildContext=e,ke(qe),ke(We),xe(We,e)):ke(qe),xe(qe,n)}var Ft=null,_l=!1,mi=!1;function ou(e){Ft===null?Ft=[e]:Ft.push(e)}function Bf(e){_l=!0,ou(e)}function nn(){if(!mi&&Ft!==null){mi=!0;var e=0,t=ge;try{var n=Ft;for(ge=1;e>=s,l-=s,Dt=1<<32-wt(t)+l|n<te?(Ue=Z,Z=null):Ue=Z.sibling;var de=_(k,Z,S[te],T);if(de===null){Z===null&&(Z=Ue);break}e&&Z&&de.alternate===null&&t(k,Z),v=o(de,v,te),J===null?G=de:J.sibling=de,J=de,Z=Ue}if(te===S.length)return n(k,Z),Ee&&kn(k,te),G;if(Z===null){for(;tete?(Ue=Z,Z=null):Ue=Z.sibling;var fn=_(k,Z,de.value,T);if(fn===null){Z===null&&(Z=Ue);break}e&&Z&&fn.alternate===null&&t(k,Z),v=o(fn,v,te),J===null?G=fn:J.sibling=fn,J=fn,Z=Ue}if(de.done)return n(k,Z),Ee&&kn(k,te),G;if(Z===null){for(;!de.done;te++,de=S.next())de=z(k,de.value,T),de!==null&&(v=o(de,v,te),J===null?G=de:J.sibling=de,J=de);return Ee&&kn(k,te),G}for(Z=r(k,Z);!de.done;te++,de=S.next())de=D(Z,k,te,de.value,T),de!==null&&(e&&de.alternate!==null&&Z.delete(de.key===null?te:de.key),v=o(de,v,te),J===null?G=de:J.sibling=de,J=de);return e&&Z.forEach(function(kp){return t(k,kp)}),Ee&&kn(k,te),G}function Le(k,v,S,T){if(typeof S=="object"&&S!==null&&S.type===ye&&S.key===null&&(S=S.props.children),typeof S=="object"&&S!==null){switch(S.$$typeof){case fe:e:{for(var G=S.key,J=v;J!==null;){if(J.key===G){if(G=S.type,G===ye){if(J.tag===7){n(k,J.sibling),v=l(J,S.props.children),v.return=k,k=v;break e}}else if(J.elementType===G||typeof G=="object"&&G!==null&&G.$$typeof===Se&&du(G)===J.type){n(k,J.sibling),v=l(J,S.props),v.ref=Fr(k,J,S),v.return=k,k=v;break e}n(k,J);break}else t(k,J);J=J.sibling}S.type===ye?(v=_n(S.props.children,k.mode,T,S.key),v.return=k,k=v):(T=ro(S.type,S.key,S.props,null,k.mode,T),T.ref=Fr(k,v,S),T.return=k,k=T)}return s(k);case ve:e:{for(J=S.key;v!==null;){if(v.key===J)if(v.tag===4&&v.stateNode.containerInfo===S.containerInfo&&v.stateNode.implementation===S.implementation){n(k,v.sibling),v=l(v,S.children||[]),v.return=k,k=v;break e}else{n(k,v);break}else t(k,v);v=v.sibling}v=da(S,k.mode,T),v.return=k,k=v}return s(k);case Se:return J=S._init,Le(k,v,J(S._payload),T)}if(dr(S))return B(k,v,S,T);if(X(S))return W(k,v,S,T);Ml(k,S)}return typeof S=="string"&&S!==""||typeof S=="number"?(S=""+S,v!==null&&v.tag===6?(n(k,v.sibling),v=l(v,S),v.return=k,k=v):(n(k,v),v=ca(S,k.mode,T),v.return=k,k=v),s(k)):n(k,v)}return Le}var Kn=fu(!0),pu=fu(!1),Il=en(null),Ol=null,Yn=null,wi=null;function ki(){wi=Yn=Ol=null}function Si(e){var t=Il.current;ke(Il),e._currentValue=t}function Ei(e,t,n){for(;e!==null;){var r=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,r!==null&&(r.childLanes|=t)):r!==null&&(r.childLanes&t)!==t&&(r.childLanes|=t),e===n)break;e=e.return}}function Xn(e,t){Ol=e,wi=Yn=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(tt=!0),e.firstContext=null)}function pt(e){var t=e._currentValue;if(wi!==e)if(e={context:e,memoizedValue:t,next:null},Yn===null){if(Ol===null)throw Error(a(308));Yn=e,Ol.dependencies={lanes:0,firstContext:e}}else Yn=Yn.next=e;return t}var Sn=null;function Ci(e){Sn===null?Sn=[e]:Sn.push(e)}function mu(e,t,n,r){var l=t.interleaved;return l===null?(n.next=n,Ci(t)):(n.next=l.next,l.next=n),t.interleaved=n,Ut(e,r)}function Ut(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var rn=!1;function Ni(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function hu(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function $t(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function ln(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,(ue&2)!==0){var l=r.pending;return l===null?t.next=t:(t.next=l.next,l.next=t),r.pending=t,Ut(e,n)}return l=r.interleaved,l===null?(t.next=t,Ci(r)):(t.next=l.next,l.next=t),r.interleaved=t,Ut(e,n)}function Fl(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Uo(e,n)}}function gu(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var l=null,o=null;if(n=n.firstBaseUpdate,n!==null){do{var s={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};o===null?l=o=s:o=o.next=s,n=n.next}while(n!==null);o===null?l=o=t:o=o.next=t}else l=o=t;n={baseState:r.baseState,firstBaseUpdate:l,lastBaseUpdate:o,shared:r.shared,effects:r.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Dl(e,t,n,r){var l=e.updateQueue;rn=!1;var o=l.firstBaseUpdate,s=l.lastBaseUpdate,p=l.shared.pending;if(p!==null){l.shared.pending=null;var h=p,C=h.next;h.next=null,s===null?o=C:s.next=C,s=h;var L=e.alternate;L!==null&&(L=L.updateQueue,p=L.lastBaseUpdate,p!==s&&(p===null?L.firstBaseUpdate=C:p.next=C,L.lastBaseUpdate=h))}if(o!==null){var z=l.baseState;s=0,L=C=h=null,p=o;do{var _=p.lane,D=p.eventTime;if((r&_)===_){L!==null&&(L=L.next={eventTime:D,lane:0,tag:p.tag,payload:p.payload,callback:p.callback,next:null});e:{var B=e,W=p;switch(_=t,D=n,W.tag){case 1:if(B=W.payload,typeof B=="function"){z=B.call(D,z,_);break e}z=B;break e;case 3:B.flags=B.flags&-65537|128;case 0:if(B=W.payload,_=typeof B=="function"?B.call(D,z,_):B,_==null)break e;z=A({},z,_);break e;case 2:rn=!0}}p.callback!==null&&p.lane!==0&&(e.flags|=64,_=l.effects,_===null?l.effects=[p]:_.push(p))}else D={eventTime:D,lane:_,tag:p.tag,payload:p.payload,callback:p.callback,next:null},L===null?(C=L=D,h=z):L=L.next=D,s|=_;if(p=p.next,p===null){if(p=l.shared.pending,p===null)break;_=p,p=_.next,_.next=null,l.lastBaseUpdate=_,l.shared.pending=null}}while(!0);if(L===null&&(h=z),l.baseState=h,l.firstBaseUpdate=C,l.lastBaseUpdate=L,t=l.shared.interleaved,t!==null){l=t;do s|=l.lane,l=l.next;while(l!==t)}else o===null&&(l.shared.lanes=0);Nn|=s,e.lanes=s,e.memoizedState=z}}function vu(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var r=Li.transition;Li.transition={};try{e(!1),t()}finally{ge=n,Li.transition=r}}function Fu(){return mt().memoizedState}function Wf(e,t,n){var r=un(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Du(e))Au(t,n);else if(n=mu(e,t,n,r),n!==null){var l=Ze();Pt(n,e,r,l),Uu(n,t,r)}}function Qf(e,t,n){var r=un(e),l={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Du(e))Au(t,l);else{var o=e.alternate;if(e.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var s=t.lastRenderedState,p=o(s,n);if(l.hasEagerState=!0,l.eagerState=p,kt(p,s)){var h=t.interleaved;h===null?(l.next=l,Ci(t)):(l.next=h.next,h.next=l),t.interleaved=l;return}}catch{}finally{}n=mu(e,t,l,r),n!==null&&(l=Ze(),Pt(n,e,r,l),Uu(n,t,r))}}function Du(e){var t=e.alternate;return e===je||t!==null&&t===je}function Au(e,t){$r=$l=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Uu(e,t,n){if((n&4194240)!==0){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Uo(e,n)}}var Vl={readContext:pt,useCallback:Qe,useContext:Qe,useEffect:Qe,useImperativeHandle:Qe,useInsertionEffect:Qe,useLayoutEffect:Qe,useMemo:Qe,useReducer:Qe,useRef:Qe,useState:Qe,useDebugValue:Qe,useDeferredValue:Qe,useTransition:Qe,useMutableSource:Qe,useSyncExternalStore:Qe,useId:Qe,unstable_isNewReconciler:!1},Gf={readContext:pt,useCallback:function(e,t){return Tt().memoizedState=[e,t===void 0?null:t],e},useContext:pt,useEffect:Ru,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Bl(4194308,4,zu.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Bl(4194308,4,e,t)},useInsertionEffect:function(e,t){return Bl(4,2,e,t)},useMemo:function(e,t){var n=Tt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Tt();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=Wf.bind(null,je,e),[r.memoizedState,e]},useRef:function(e){var t=Tt();return e={current:e},t.memoizedState=e},useState:Pu,useDebugValue:Di,useDeferredValue:function(e){return Tt().memoizedState=e},useTransition:function(){var e=Pu(!1),t=e[0];return e=Hf.bind(null,e[1]),Tt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=je,l=Tt();if(Ee){if(n===void 0)throw Error(a(407));n=n()}else{if(n=t(),Ae===null)throw Error(a(349));(Cn&30)!==0||ku(r,t,n)}l.memoizedState=n;var o={value:n,getSnapshot:t};return l.queue=o,Ru(Eu.bind(null,r,o,e),[e]),r.flags|=2048,Vr(9,Su.bind(null,r,o,n,t),void 0,null),n},useId:function(){var e=Tt(),t=Ae.identifierPrefix;if(Ee){var n=At,r=Dt;n=(r&~(1<<32-wt(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Br++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=s.createElement(n,{is:r.is}):(e=s.createElement(n),n==="select"&&(s=e,r.multiple?s.multiple=!0:r.size&&(s.size=r.size))):e=s.createElementNS(e,n),e[Lt]=t,e[Ir]=r,oc(e,t,!1,!1),t.stateNode=e;e:{switch(s=_o(n,r),n){case"dialog":we("cancel",e),we("close",e),l=r;break;case"iframe":case"object":case"embed":we("load",e),l=r;break;case"video":case"audio":for(l=0;ltr&&(t.flags|=128,r=!0,Hr(o,!1),t.lanes=4194304)}else{if(!r)if(e=Al(s),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Hr(o,!0),o.tail===null&&o.tailMode==="hidden"&&!s.alternate&&!Ee)return Ge(t),null}else 2*_e()-o.renderingStartTime>tr&&n!==1073741824&&(t.flags|=128,r=!0,Hr(o,!1),t.lanes=4194304);o.isBackwards?(s.sibling=t.child,t.child=s):(n=o.last,n!==null?n.sibling=s:t.child=s,o.last=s)}return o.tail!==null?(t=o.tail,o.rendering=t,o.tail=t.sibling,o.renderingStartTime=_e(),t.sibling=null,n=Pe.current,xe(Pe,r?n&1|2:n&1),t):(Ge(t),null);case 22:case 23:return aa(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&(t.mode&1)!==0?(ut&1073741824)!==0&&(Ge(t),t.subtreeFlags&6&&(t.flags|=8192)):Ge(t),null;case 24:return null;case 25:return null}throw Error(a(156,t.tag))}function tp(e,t){switch(gi(t),t.tag){case 1:return et(t.type)&&jl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Jn(),ke(qe),ke(We),_i(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return ji(t),null;case 13:if(ke(Pe),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(a(340));Gn()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ke(Pe),null;case 4:return Jn(),null;case 10:return Si(t.type._context),null;case 22:case 23:return aa(),null;case 24:return null;default:return null}}var Gl=!1,Ke=!1,np=typeof WeakSet=="function"?WeakSet:Set,$=null;function qn(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Re(e,t,r)}else n.current=null}function Yi(e,t,n){try{n()}catch(r){Re(e,t,r)}}var sc=!1;function rp(e,t){if(ai=pl,e=$s(),qo(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var l=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break e}var s=0,p=-1,h=-1,C=0,L=0,z=e,_=null;t:for(;;){for(var D;z!==n||l!==0&&z.nodeType!==3||(p=s+l),z!==o||r!==0&&z.nodeType!==3||(h=s+r),z.nodeType===3&&(s+=z.nodeValue.length),(D=z.firstChild)!==null;)_=z,z=D;for(;;){if(z===e)break t;if(_===n&&++C===l&&(p=s),_===o&&++L===r&&(h=s),(D=z.nextSibling)!==null)break;z=_,_=z.parentNode}z=D}n=p===-1||h===-1?null:{start:p,end:h}}else n=null}n=n||{start:0,end:0}}else n=null;for(si={focusedElem:e,selectionRange:n},pl=!1,$=t;$!==null;)if(t=$,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,$=e;else for(;$!==null;){t=$;try{var B=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(B!==null){var W=B.memoizedProps,Le=B.memoizedState,k=t.stateNode,v=k.getSnapshotBeforeUpdate(t.elementType===t.type?W:Et(t.type,W),Le);k.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var S=t.stateNode.containerInfo;S.nodeType===1?S.textContent="":S.nodeType===9&&S.documentElement&&S.removeChild(S.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(a(163))}}catch(T){Re(t,t.return,T)}if(e=t.sibling,e!==null){e.return=t.return,$=e;break}$=t.return}return B=sc,sc=!1,B}function Wr(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var l=r=r.next;do{if((l.tag&e)===e){var o=l.destroy;l.destroy=void 0,o!==void 0&&Yi(t,n,o)}l=l.next}while(l!==r)}}function Kl(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Xi(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function uc(e){var t=e.alternate;t!==null&&(e.alternate=null,uc(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Lt],delete t[Ir],delete t[fi],delete t[Uf],delete t[$f])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function cc(e){return e.tag===5||e.tag===3||e.tag===4}function dc(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||cc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Ji(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Nl));else if(r!==4&&(e=e.child,e!==null))for(Ji(e,t,n),e=e.sibling;e!==null;)Ji(e,t,n),e=e.sibling}function Zi(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(Zi(e,t,n),e=e.sibling;e!==null;)Zi(e,t,n),e=e.sibling}var Be=null,Ct=!1;function on(e,t,n){for(n=n.child;n!==null;)fc(e,t,n),n=n.sibling}function fc(e,t,n){if(_t&&typeof _t.onCommitFiberUnmount=="function")try{_t.onCommitFiberUnmount(al,n)}catch{}switch(n.tag){case 5:Ke||qn(n,t);case 6:var r=Be,l=Ct;Be=null,on(e,t,n),Be=r,Ct=l,Be!==null&&(Ct?(e=Be,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Be.removeChild(n.stateNode));break;case 18:Be!==null&&(Ct?(e=Be,n=n.stateNode,e.nodeType===8?di(e.parentNode,n):e.nodeType===1&&di(e,n),Er(e)):di(Be,n.stateNode));break;case 4:r=Be,l=Ct,Be=n.stateNode.containerInfo,Ct=!0,on(e,t,n),Be=r,Ct=l;break;case 0:case 11:case 14:case 15:if(!Ke&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){l=r=r.next;do{var o=l,s=o.destroy;o=o.tag,s!==void 0&&((o&2)!==0||(o&4)!==0)&&Yi(n,t,s),l=l.next}while(l!==r)}on(e,t,n);break;case 1:if(!Ke&&(qn(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(p){Re(n,t,p)}on(e,t,n);break;case 21:on(e,t,n);break;case 22:n.mode&1?(Ke=(r=Ke)||n.memoizedState!==null,on(e,t,n),Ke=r):on(e,t,n);break;default:on(e,t,n)}}function pc(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new np),t.forEach(function(r){var l=fp.bind(null,e,r);n.has(r)||(n.add(r),r.then(l,l))})}}function Nt(e,t){var n=t.deletions;if(n!==null)for(var r=0;rl&&(l=s),r&=~o}if(r=l,r=_e()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*op(r/1960))-r,10e?16:e,sn===null)var r=!1;else{if(e=sn,sn=null,ql=0,(ue&6)!==0)throw Error(a(331));var l=ue;for(ue|=4,$=e.current;$!==null;){var o=$,s=o.child;if(($.flags&16)!==0){var p=o.deletions;if(p!==null){for(var h=0;h_e()-ta?jn(e,0):ea|=n),rt(e,t)}function Pc(e,t){t===0&&((e.mode&1)===0?t=1:(t=ul,ul<<=1,(ul&130023424)===0&&(ul=4194304)));var n=Ze();e=Ut(e,t),e!==null&&(yr(e,t,n),rt(e,n))}function dp(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Pc(e,n)}function fp(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;l!==null&&(n=l.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(a(314))}r!==null&&r.delete(t),Pc(e,n)}var jc;jc=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||qe.current)tt=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return tt=!1,qf(e,t,n);tt=(e.flags&131072)!==0}else tt=!1,Ee&&(t.flags&1048576)!==0&&iu(t,zl,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Ql(e,t),e=t.pendingProps;var l=Hn(t,We.current);Xn(t,n),l=Ti(null,t,r,e,l,n);var o=Mi();return t.flags|=1,typeof l=="object"&&l!==null&&typeof l.render=="function"&&l.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,et(r)?(o=!0,Rl(t)):o=!1,t.memoizedState=l.state!==null&&l.state!==void 0?l.state:null,Ni(t),l.updater=Hl,t.stateNode=l,l._reactInternals=t,Ui(t,r,e,n),t=Vi(null,t,r,!0,o,n)):(t.tag=0,Ee&&o&&hi(t),Je(null,t,l,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Ql(e,t),e=t.pendingProps,l=r._init,r=l(r._payload),t.type=r,l=t.tag=mp(r),e=Et(r,e),l){case 0:t=bi(null,t,r,e,n);break e;case 1:t=qu(null,t,r,e,n);break e;case 11:t=Ku(null,t,r,e,n);break e;case 14:t=Yu(null,t,r,Et(r.type,e),n);break e}throw Error(a(306,r,""))}return t;case 0:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Et(r,l),bi(e,t,r,l,n);case 1:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Et(r,l),qu(e,t,r,l,n);case 3:e:{if(ec(t),e===null)throw Error(a(387));r=t.pendingProps,o=t.memoizedState,l=o.element,hu(e,t),Dl(t,r,null,n);var s=t.memoizedState;if(r=s.element,o.isDehydrated)if(o={element:r,isDehydrated:!1,cache:s.cache,pendingSuspenseBoundaries:s.pendingSuspenseBoundaries,transitions:s.transitions},t.updateQueue.baseState=o,t.memoizedState=o,t.flags&256){l=Zn(Error(a(423)),t),t=tc(e,t,r,n,l);break e}else if(r!==l){l=Zn(Error(a(424)),t),t=tc(e,t,r,n,l);break e}else for(st=qt(t.stateNode.containerInfo.firstChild),at=t,Ee=!0,St=null,n=pu(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Gn(),r===l){t=Bt(e,t,n);break e}Je(e,t,r,n)}t=t.child}return t;case 5:return yu(t),e===null&&yi(t),r=t.type,l=t.pendingProps,o=e!==null?e.memoizedProps:null,s=l.children,ui(r,l)?s=null:o!==null&&ui(r,o)&&(t.flags|=32),Zu(e,t),Je(e,t,s,n),t.child;case 6:return e===null&&yi(t),null;case 13:return nc(e,t,n);case 4:return Pi(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=Kn(t,null,r,n):Je(e,t,r,n),t.child;case 11:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Et(r,l),Ku(e,t,r,l,n);case 7:return Je(e,t,t.pendingProps,n),t.child;case 8:return Je(e,t,t.pendingProps.children,n),t.child;case 12:return Je(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,l=t.pendingProps,o=t.memoizedProps,s=l.value,xe(Il,r._currentValue),r._currentValue=s,o!==null)if(kt(o.value,s)){if(o.children===l.children&&!qe.current){t=Bt(e,t,n);break e}}else for(o=t.child,o!==null&&(o.return=t);o!==null;){var p=o.dependencies;if(p!==null){s=o.child;for(var h=p.firstContext;h!==null;){if(h.context===r){if(o.tag===1){h=$t(-1,n&-n),h.tag=2;var C=o.updateQueue;if(C!==null){C=C.shared;var L=C.pending;L===null?h.next=h:(h.next=L.next,L.next=h),C.pending=h}}o.lanes|=n,h=o.alternate,h!==null&&(h.lanes|=n),Ei(o.return,n,t),p.lanes|=n;break}h=h.next}}else if(o.tag===10)s=o.type===t.type?null:o.child;else if(o.tag===18){if(s=o.return,s===null)throw Error(a(341));s.lanes|=n,p=s.alternate,p!==null&&(p.lanes|=n),Ei(s,n,t),s=o.sibling}else s=o.child;if(s!==null)s.return=o;else for(s=o;s!==null;){if(s===t){s=null;break}if(o=s.sibling,o!==null){o.return=s.return,s=o;break}s=s.return}o=s}Je(e,t,l.children,n),t=t.child}return t;case 9:return l=t.type,r=t.pendingProps.children,Xn(t,n),l=pt(l),r=r(l),t.flags|=1,Je(e,t,r,n),t.child;case 14:return r=t.type,l=Et(r,t.pendingProps),l=Et(r.type,l),Yu(e,t,r,l,n);case 15:return Xu(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,l=t.pendingProps,l=t.elementType===r?l:Et(r,l),Ql(e,t),t.tag=1,et(r)?(e=!0,Rl(t)):e=!1,Xn(t,n),Bu(t,r,l),Ui(t,r,l,n),Vi(null,t,r,!0,e,n);case 19:return lc(e,t,n);case 22:return Ju(e,t,n)}throw Error(a(156,t.tag))};function Rc(e,t){return as(e,t)}function pp(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function gt(e,t,n,r){return new pp(e,t,n,r)}function ua(e){return e=e.prototype,!(!e||!e.isReactComponent)}function mp(e){if(typeof e=="function")return ua(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Ye)return 11;if(e===$e)return 14}return 2}function dn(e,t){var n=e.alternate;return n===null?(n=gt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function ro(e,t,n,r,l,o){var s=2;if(r=e,typeof e=="function")ua(e)&&(s=1);else if(typeof e=="string")s=5;else e:switch(e){case ye:return _n(n.children,l,o,t);case Q:s=8,l|=8;break;case pe:return e=gt(12,n,t,l|2),e.elementType=pe,e.lanes=o,e;case He:return e=gt(13,n,t,l),e.elementType=He,e.lanes=o,e;case Xe:return e=gt(19,n,t,l),e.elementType=Xe,e.lanes=o,e;case me:return lo(n,l,o,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case Te:s=10;break e;case ot:s=9;break e;case Ye:s=11;break e;case $e:s=14;break e;case Se:s=16,r=null;break e}throw Error(a(130,e==null?e:typeof e,""))}return t=gt(s,n,t,l),t.elementType=e,t.type=r,t.lanes=o,t}function _n(e,t,n,r){return e=gt(7,e,r,t),e.lanes=n,e}function lo(e,t,n,r){return e=gt(22,e,r,t),e.elementType=me,e.lanes=n,e.stateNode={isHidden:!1},e}function ca(e,t,n){return e=gt(6,e,null,t),e.lanes=n,e}function da(e,t,n){return t=gt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function hp(e,t,n,r,l){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Ao(0),this.expirationTimes=Ao(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ao(0),this.identifierPrefix=r,this.onRecoverableError=l,this.mutableSourceEagerHydrationData=null}function fa(e,t,n,r,l,o,s,p,h){return e=new hp(e,t,n,p,h),t===1?(t=1,o===!0&&(t|=8)):t=0,o=gt(3,null,null,t),e.current=o,o.stateNode=e,o.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ni(o),e}function gp(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(i)}catch(u){console.error(u)}}return i(),ya.exports=jp(),ya.exports}var bc;function _p(){if(bc)return fo;bc=1;var i=Rp();return fo.createRoot=i.createRoot,fo.hydrateRoot=i.hydrateRoot,fo}var Lp=_p();const zp=qc(Lp);/** - * react-router v7.8.0 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */var Vc="popstate";function Tp(i={}){function u(c,d){let{pathname:f,search:y,hash:E}=c.location;return Na("",{pathname:f,search:y,hash:E},d.state&&d.state.usr||null,d.state&&d.state.key||"default")}function a(c,d){return typeof d=="string"?d:qr(d)}return Ip(u,a,null,i)}function Ne(i,u){if(i===!1||i===null||typeof i>"u")throw new Error(u)}function jt(i,u){if(!i){typeof console<"u"&&console.warn(u);try{throw new Error(u)}catch{}}}function Mp(){return Math.random().toString(36).substring(2,10)}function Hc(i,u){return{usr:i.state,key:i.key,idx:u}}function Na(i,u,a=null,c){return{pathname:typeof i=="string"?i:i.pathname,search:"",hash:"",...typeof u=="string"?ir(u):u,state:a,key:u&&u.key||c||Mp()}}function qr({pathname:i="/",search:u="",hash:a=""}){return u&&u!=="?"&&(i+=u.charAt(0)==="?"?u:"?"+u),a&&a!=="#"&&(i+=a.charAt(0)==="#"?a:"#"+a),i}function ir(i){let u={};if(i){let a=i.indexOf("#");a>=0&&(u.hash=i.substring(a),i=i.substring(0,a));let c=i.indexOf("?");c>=0&&(u.search=i.substring(c),i=i.substring(0,c)),i&&(u.pathname=i)}return u}function Ip(i,u,a,c={}){let{window:d=document.defaultView,v5Compat:f=!1}=c,y=d.history,E="POP",g=null,w=j();w==null&&(w=0,y.replaceState({...y.state,idx:w},""));function j(){return(y.state||{idx:null}).idx}function M(){E="POP";let F=j(),U=F==null?null:F-w;w=F,g&&g({action:E,location:O.location,delta:U})}function I(F,U){E="PUSH";let K=Na(O.location,F,U);w=j()+1;let ne=Hc(K,w),le=O.createHref(K);try{y.pushState(ne,"",le)}catch(fe){if(fe instanceof DOMException&&fe.name==="DataCloneError")throw fe;d.location.assign(le)}f&&g&&g({action:E,location:O.location,delta:1})}function ee(F,U){E="REPLACE";let K=Na(O.location,F,U);w=j();let ne=Hc(K,w),le=O.createHref(K);y.replaceState(ne,"",le),f&&g&&g({action:E,location:O.location,delta:0})}function H(F){return Op(F)}let O={get action(){return E},get location(){return i(d,y)},listen(F){if(g)throw new Error("A history only accepts one active listener");return d.addEventListener(Vc,M),g=F,()=>{d.removeEventListener(Vc,M),g=null}},createHref(F){return u(d,F)},createURL:H,encodeLocation(F){let U=H(F);return{pathname:U.pathname,search:U.search,hash:U.hash}},push:I,replace:ee,go(F){return y.go(F)}};return O}function Op(i,u=!1){let a="http://localhost";typeof window<"u"&&(a=window.location.origin!=="null"?window.location.origin:window.location.href),Ne(a,"No window.location.(origin|href) available to create URL");let c=typeof i=="string"?i:qr(i);return c=c.replace(/ $/,"%20"),!u&&c.startsWith("//")&&(c=a+c),new URL(c,a)}function ed(i,u,a="/"){return Fp(i,u,a,!1)}function Fp(i,u,a,c){let d=typeof u=="string"?ir(u):u,f=Wt(d.pathname||"/",a);if(f==null)return null;let y=td(i);Dp(y);let E=null;for(let g=0;E==null&&g{let g={relativePath:E===void 0?f.path||"":E,caseSensitive:f.caseSensitive===!0,childrenIndex:y,route:f};g.relativePath.startsWith("/")&&(Ne(g.relativePath.startsWith(c),`Absolute route path "${g.relativePath}" nested under path "${c}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),g.relativePath=g.relativePath.slice(c.length));let w=Ht([c,g.relativePath]),j=a.concat(g);f.children&&f.children.length>0&&(Ne(f.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${w}".`),td(f.children,u,j,w)),!(f.path==null&&!f.index)&&u.push({path:w,score:Hp(w,f.index),routesMeta:j})};return i.forEach((f,y)=>{var E;if(f.path===""||!((E=f.path)!=null&&E.includes("?")))d(f,y);else for(let g of nd(f.path))d(f,y,g)}),u}function nd(i){let u=i.split("/");if(u.length===0)return[];let[a,...c]=u,d=a.endsWith("?"),f=a.replace(/\?$/,"");if(c.length===0)return d?[f,""]:[f];let y=nd(c.join("/")),E=[];return E.push(...y.map(g=>g===""?f:[f,g].join("/"))),d&&E.push(...y),E.map(g=>i.startsWith("/")&&g===""?"/":g)}function Dp(i){i.sort((u,a)=>u.score!==a.score?a.score-u.score:Wp(u.routesMeta.map(c=>c.childrenIndex),a.routesMeta.map(c=>c.childrenIndex)))}var Ap=/^:[\w-]+$/,Up=3,$p=2,Bp=1,bp=10,Vp=-2,Wc=i=>i==="*";function Hp(i,u){let a=i.split("/"),c=a.length;return a.some(Wc)&&(c+=Vp),u&&(c+=$p),a.filter(d=>!Wc(d)).reduce((d,f)=>d+(Ap.test(f)?Up:f===""?Bp:bp),c)}function Wp(i,u){return i.length===u.length&&i.slice(0,-1).every((c,d)=>c===u[d])?i[i.length-1]-u[u.length-1]:0}function Qp(i,u,a=!1){let{routesMeta:c}=i,d={},f="/",y=[];for(let E=0;E{if(j==="*"){let H=E[I]||"";y=f.slice(0,f.length-H.length).replace(/(.)\/+$/,"$1")}const ee=E[I];return M&&!ee?w[j]=void 0:w[j]=(ee||"").replace(/%2F/g,"/"),w},{}),pathname:f,pathnameBase:y,pattern:i}}function Gp(i,u=!1,a=!0){jt(i==="*"||!i.endsWith("*")||i.endsWith("/*"),`Route path "${i}" will be treated as if it were "${i.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${i.replace(/\*$/,"/*")}".`);let c=[],d="^"+i.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(y,E,g)=>(c.push({paramName:E,isOptional:g!=null}),g?"/?([^\\/]+)?":"/([^\\/]+)"));return i.endsWith("*")?(c.push({paramName:"*"}),d+=i==="*"||i==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):a?d+="\\/*$":i!==""&&i!=="/"&&(d+="(?:(?=\\/|$))"),[new RegExp(d,u?void 0:"i"),c]}function Kp(i){try{return i.split("/").map(u=>decodeURIComponent(u).replace(/\//g,"%2F")).join("/")}catch(u){return jt(!1,`The URL path "${i}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${u}).`),i}}function Wt(i,u){if(u==="/")return i;if(!i.toLowerCase().startsWith(u.toLowerCase()))return null;let a=u.endsWith("/")?u.length-1:u.length,c=i.charAt(a);return c&&c!=="/"?null:i.slice(a)||"/"}function Yp(i,u="/"){let{pathname:a,search:c="",hash:d=""}=typeof i=="string"?ir(i):i;return{pathname:a?a.startsWith("/")?a:Xp(a,u):u,search:qp(c),hash:em(d)}}function Xp(i,u){let a=u.replace(/\/+$/,"").split("/");return i.split("/").forEach(d=>{d===".."?a.length>1&&a.pop():d!=="."&&a.push(d)}),a.length>1?a.join("/"):"/"}function ka(i,u,a,c){return`Cannot include a '${i}' character in a manually specified \`to.${u}\` field [${JSON.stringify(c)}]. Please separate it out to the \`to.${a}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function Jp(i){return i.filter((u,a)=>a===0||u.route.path&&u.route.path.length>0)}function za(i){let u=Jp(i);return u.map((a,c)=>c===u.length-1?a.pathname:a.pathnameBase)}function Ta(i,u,a,c=!1){let d;typeof i=="string"?d=ir(i):(d={...i},Ne(!d.pathname||!d.pathname.includes("?"),ka("?","pathname","search",d)),Ne(!d.pathname||!d.pathname.includes("#"),ka("#","pathname","hash",d)),Ne(!d.search||!d.search.includes("#"),ka("#","search","hash",d)));let f=i===""||d.pathname==="",y=f?"/":d.pathname,E;if(y==null)E=a;else{let M=u.length-1;if(!c&&y.startsWith("..")){let I=y.split("/");for(;I[0]==="..";)I.shift(),M-=1;d.pathname=I.join("/")}E=M>=0?u[M]:"/"}let g=Yp(d,E),w=y&&y!=="/"&&y.endsWith("/"),j=(f||y===".")&&a.endsWith("/");return!g.pathname.endsWith("/")&&(w||j)&&(g.pathname+="/"),g}var Ht=i=>i.join("/").replace(/\/\/+/g,"/"),Zp=i=>i.replace(/\/+$/,"").replace(/^\/*/,"/"),qp=i=>!i||i==="?"?"":i.startsWith("?")?i:"?"+i,em=i=>!i||i==="#"?"":i.startsWith("#")?i:"#"+i;function tm(i){return i!=null&&typeof i.status=="number"&&typeof i.statusText=="string"&&typeof i.internal=="boolean"&&"data"in i}var rd=["POST","PUT","PATCH","DELETE"];new Set(rd);var nm=["GET",...rd];new Set(nm);var ar=N.createContext(null);ar.displayName="DataRouter";var wo=N.createContext(null);wo.displayName="DataRouterState";N.createContext(!1);var ld=N.createContext({isTransitioning:!1});ld.displayName="ViewTransition";var rm=N.createContext(new Map);rm.displayName="Fetchers";var lm=N.createContext(null);lm.displayName="Await";var Rt=N.createContext(null);Rt.displayName="Navigation";var el=N.createContext(null);el.displayName="Location";var It=N.createContext({outlet:null,matches:[],isDataRoute:!1});It.displayName="Route";var Ma=N.createContext(null);Ma.displayName="RouteError";function om(i,{relative:u}={}){Ne(sr(),"useHref() may be used only in the context of a component.");let{basename:a,navigator:c}=N.useContext(Rt),{hash:d,pathname:f,search:y}=tl(i,{relative:u}),E=f;return a!=="/"&&(E=f==="/"?a:Ht([a,f])),c.createHref({pathname:E,search:y,hash:d})}function sr(){return N.useContext(el)!=null}function hn(){return Ne(sr(),"useLocation() may be used only in the context of a component."),N.useContext(el).location}var od="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function id(i){N.useContext(Rt).static||N.useLayoutEffect(i)}function Ia(){let{isDataRoute:i}=N.useContext(It);return i?ym():im()}function im(){Ne(sr(),"useNavigate() may be used only in the context of a component.");let i=N.useContext(ar),{basename:u,navigator:a}=N.useContext(Rt),{matches:c}=N.useContext(It),{pathname:d}=hn(),f=JSON.stringify(za(c)),y=N.useRef(!1);return id(()=>{y.current=!0}),N.useCallback((g,w={})=>{if(jt(y.current,od),!y.current)return;if(typeof g=="number"){a.go(g);return}let j=Ta(g,JSON.parse(f),d,w.relative==="path");i==null&&u!=="/"&&(j.pathname=j.pathname==="/"?u:Ht([u,j.pathname])),(w.replace?a.replace:a.push)(j,w.state,w)},[u,a,f,d,i])}N.createContext(null);function tl(i,{relative:u}={}){let{matches:a}=N.useContext(It),{pathname:c}=hn(),d=JSON.stringify(za(a));return N.useMemo(()=>Ta(i,JSON.parse(d),c,u==="path"),[i,d,c,u])}function am(i,u){return ad(i,u)}function ad(i,u,a,c){var U;Ne(sr(),"useRoutes() may be used only in the context of a component.");let{navigator:d}=N.useContext(Rt),{matches:f}=N.useContext(It),y=f[f.length-1],E=y?y.params:{},g=y?y.pathname:"/",w=y?y.pathnameBase:"/",j=y&&y.route;{let K=j&&j.path||"";sd(g,!j||K.endsWith("*")||K.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${g}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. - -Please change the parent to .`)}let M=hn(),I;if(u){let K=typeof u=="string"?ir(u):u;Ne(w==="/"||((U=K.pathname)==null?void 0:U.startsWith(w)),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${w}" but pathname "${K.pathname}" was given in the \`location\` prop.`),I=K}else I=M;let ee=I.pathname||"/",H=ee;if(w!=="/"){let K=w.replace(/^\//,"").split("/");H="/"+ee.replace(/^\//,"").split("/").slice(K.length).join("/")}let O=ed(i,{pathname:H});jt(j||O!=null,`No routes matched location "${I.pathname}${I.search}${I.hash}" `),jt(O==null||O[O.length-1].route.element!==void 0||O[O.length-1].route.Component!==void 0||O[O.length-1].route.lazy!==void 0,`Matched leaf route at location "${I.pathname}${I.search}${I.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let F=fm(O&&O.map(K=>Object.assign({},K,{params:Object.assign({},E,K.params),pathname:Ht([w,d.encodeLocation?d.encodeLocation(K.pathname).pathname:K.pathname]),pathnameBase:K.pathnameBase==="/"?w:Ht([w,d.encodeLocation?d.encodeLocation(K.pathnameBase).pathname:K.pathnameBase])})),f,a,c);return u&&F?N.createElement(el.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...I},navigationType:"POP"}},F):F}function sm(){let i=vm(),u=tm(i)?`${i.status} ${i.statusText}`:i instanceof Error?i.message:JSON.stringify(i),a=i instanceof Error?i.stack:null,c="rgba(200,200,200, 0.5)",d={padding:"0.5rem",backgroundColor:c},f={padding:"2px 4px",backgroundColor:c},y=null;return console.error("Error handled by React Router default ErrorBoundary:",i),y=N.createElement(N.Fragment,null,N.createElement("p",null,"💿 Hey developer 👋"),N.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",N.createElement("code",{style:f},"ErrorBoundary")," or"," ",N.createElement("code",{style:f},"errorElement")," prop on your route.")),N.createElement(N.Fragment,null,N.createElement("h2",null,"Unexpected Application Error!"),N.createElement("h3",{style:{fontStyle:"italic"}},u),a?N.createElement("pre",{style:d},a):null,y)}var um=N.createElement(sm,null),cm=class extends N.Component{constructor(i){super(i),this.state={location:i.location,revalidation:i.revalidation,error:i.error}}static getDerivedStateFromError(i){return{error:i}}static getDerivedStateFromProps(i,u){return u.location!==i.location||u.revalidation!=="idle"&&i.revalidation==="idle"?{error:i.error,location:i.location,revalidation:i.revalidation}:{error:i.error!==void 0?i.error:u.error,location:u.location,revalidation:i.revalidation||u.revalidation}}componentDidCatch(i,u){console.error("React Router caught the following error during render",i,u)}render(){return this.state.error!==void 0?N.createElement(It.Provider,{value:this.props.routeContext},N.createElement(Ma.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function dm({routeContext:i,match:u,children:a}){let c=N.useContext(ar);return c&&c.static&&c.staticContext&&(u.route.errorElement||u.route.ErrorBoundary)&&(c.staticContext._deepestRenderedBoundaryId=u.route.id),N.createElement(It.Provider,{value:i},a)}function fm(i,u=[],a=null,c=null){if(i==null){if(!a)return null;if(a.errors)i=a.matches;else if(u.length===0&&!a.initialized&&a.matches.length>0)i=a.matches;else return null}let d=i,f=a==null?void 0:a.errors;if(f!=null){let g=d.findIndex(w=>w.route.id&&(f==null?void 0:f[w.route.id])!==void 0);Ne(g>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(f).join(",")}`),d=d.slice(0,Math.min(d.length,g+1))}let y=!1,E=-1;if(a)for(let g=0;g=0?d=d.slice(0,E+1):d=[d[0]];break}}}return d.reduceRight((g,w,j)=>{let M,I=!1,ee=null,H=null;a&&(M=f&&w.route.id?f[w.route.id]:void 0,ee=w.route.errorElement||um,y&&(E<0&&j===0?(sd("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),I=!0,H=null):E===j&&(I=!0,H=w.route.hydrateFallbackElement||null)));let O=u.concat(d.slice(0,j+1)),F=()=>{let U;return M?U=ee:I?U=H:w.route.Component?U=N.createElement(w.route.Component,null):w.route.element?U=w.route.element:U=g,N.createElement(dm,{match:w,routeContext:{outlet:g,matches:O,isDataRoute:a!=null},children:U})};return a&&(w.route.ErrorBoundary||w.route.errorElement||j===0)?N.createElement(cm,{location:a.location,revalidation:a.revalidation,component:ee,error:M,children:F(),routeContext:{outlet:null,matches:O,isDataRoute:!0}}):F()},null)}function Oa(i){return`${i} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function pm(i){let u=N.useContext(ar);return Ne(u,Oa(i)),u}function mm(i){let u=N.useContext(wo);return Ne(u,Oa(i)),u}function hm(i){let u=N.useContext(It);return Ne(u,Oa(i)),u}function Fa(i){let u=hm(i),a=u.matches[u.matches.length-1];return Ne(a.route.id,`${i} can only be used on routes that contain a unique "id"`),a.route.id}function gm(){return Fa("useRouteId")}function vm(){var c;let i=N.useContext(Ma),u=mm("useRouteError"),a=Fa("useRouteError");return i!==void 0?i:(c=u.errors)==null?void 0:c[a]}function ym(){let{router:i}=pm("useNavigate"),u=Fa("useNavigate"),a=N.useRef(!1);return id(()=>{a.current=!0}),N.useCallback(async(d,f={})=>{jt(a.current,od),a.current&&(typeof d=="number"?i.navigate(d):await i.navigate(d,{fromRouteId:u,...f}))},[i,u])}var Qc={};function sd(i,u,a){!u&&!Qc[i]&&(Qc[i]=!0,jt(!1,a))}N.memo(xm);function xm({routes:i,future:u,state:a}){return ad(i,void 0,a,u)}function wm({to:i,replace:u,state:a,relative:c}){Ne(sr()," may be used only in the context of a component.");let{static:d}=N.useContext(Rt);jt(!d," must not be used on the initial render in a . This is a no-op, but you should modify your code so the is only ever rendered in response to some user interaction or state change.");let{matches:f}=N.useContext(It),{pathname:y}=hn(),E=Ia(),g=Ta(i,za(f),y,c==="path"),w=JSON.stringify(g);return N.useEffect(()=>{E(JSON.parse(w),{replace:u,state:a,relative:c})},[E,w,c,u,a]),null}function or(i){Ne(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function km({basename:i="/",children:u=null,location:a,navigationType:c="POP",navigator:d,static:f=!1}){Ne(!sr(),"You cannot render a inside another . You should never have more than one in your app.");let y=i.replace(/^\/*/,"/"),E=N.useMemo(()=>({basename:y,navigator:d,static:f,future:{}}),[y,d,f]);typeof a=="string"&&(a=ir(a));let{pathname:g="/",search:w="",hash:j="",state:M=null,key:I="default"}=a,ee=N.useMemo(()=>{let H=Wt(g,y);return H==null?null:{location:{pathname:H,search:w,hash:j,state:M,key:I},navigationType:c}},[y,g,w,j,M,I,c]);return jt(ee!=null,` is not able to match the URL "${g}${w}${j}" because it does not start with the basename, so the won't render anything.`),ee==null?null:N.createElement(Rt.Provider,{value:E},N.createElement(el.Provider,{children:u,value:ee}))}function Sm({children:i,location:u}){return am(Pa(i),u)}function Pa(i,u=[]){let a=[];return N.Children.forEach(i,(c,d)=>{if(!N.isValidElement(c))return;let f=[...u,d];if(c.type===N.Fragment){a.push.apply(a,Pa(c.props.children,f));return}Ne(c.type===or,`[${typeof c.type=="string"?c.type:c.type.name}] is not a component. All component children of must be a or `),Ne(!c.props.index||!c.props.children,"An index route cannot have child routes.");let y={id:c.props.id||f.join("-"),caseSensitive:c.props.caseSensitive,element:c.props.element,Component:c.props.Component,index:c.props.index,path:c.props.path,loader:c.props.loader,action:c.props.action,hydrateFallbackElement:c.props.hydrateFallbackElement,HydrateFallback:c.props.HydrateFallback,errorElement:c.props.errorElement,ErrorBoundary:c.props.ErrorBoundary,hasErrorBoundary:c.props.hasErrorBoundary===!0||c.props.ErrorBoundary!=null||c.props.errorElement!=null,shouldRevalidate:c.props.shouldRevalidate,handle:c.props.handle,lazy:c.props.lazy};c.props.children&&(y.children=Pa(c.props.children,f)),a.push(y)}),a}var vo="get",yo="application/x-www-form-urlencoded";function ko(i){return i!=null&&typeof i.tagName=="string"}function Em(i){return ko(i)&&i.tagName.toLowerCase()==="button"}function Cm(i){return ko(i)&&i.tagName.toLowerCase()==="form"}function Nm(i){return ko(i)&&i.tagName.toLowerCase()==="input"}function Pm(i){return!!(i.metaKey||i.altKey||i.ctrlKey||i.shiftKey)}function jm(i,u){return i.button===0&&(!u||u==="_self")&&!Pm(i)}var po=null;function Rm(){if(po===null)try{new FormData(document.createElement("form"),0),po=!1}catch{po=!0}return po}var _m=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Sa(i){return i!=null&&!_m.has(i)?(jt(!1,`"${i}" is not a valid \`encType\` for \`\`/\`\` and will default to "${yo}"`),null):i}function Lm(i,u){let a,c,d,f,y;if(Cm(i)){let E=i.getAttribute("action");c=E?Wt(E,u):null,a=i.getAttribute("method")||vo,d=Sa(i.getAttribute("enctype"))||yo,f=new FormData(i)}else if(Em(i)||Nm(i)&&(i.type==="submit"||i.type==="image")){let E=i.form;if(E==null)throw new Error('Cannot submit a - - -
- - - {/* Component Examples */} -
- Component Examples - -
- - - - - - INFO BLOCK - - - - + const [introDone, setIntroDone] = useState(false); - - - - - - MORE INFO - - - - + return ( +
+ {!introDone && setIntroDone(true)} />} - - - - - - EVEN MORE - - - - +
+
+
+ + DESIGN SYSTEM + +

+ A comprehensive design system built with our brand colors and Zen + Kaku Gothic New typography. +

+
+ + + + +
+
- - - - - - SO MUCH INFO - - - - -
-
+
+ Component Examples +
+ + + + + + INFO BLOCK + + + + + + + + + + MORE INFO + + + + + + + + + + EVEN MORE + + + + + + + + + + SO MUCH INFO + + + + +
+
- {/* Button Variants */} -
- Button Variants -
- - - - -
-
+
+ Button Variants +
+ + + + +
+
- {/* Typography Scale */} -
- Typography Scale -
- Heading 1 - Display - Heading 2 - Page Title - Heading 3 - Section - Heading 4 - Subsection - Heading 5 - Component - Heading 6 - Label -

- Body text - Regular paragraph content -

-

- Small text - Secondary information -

-
-
+
+ Typography Scale +
+ Heading 1 - Display + Heading 2 - Page Title + Heading 3 - Section + Heading 4 - Subsection + Heading 5 - Component + Heading 6 - Label +

+ Body text - Regular paragraph content +

+

+ Small text - Secondary information +

+
+
+
); From 53dda3353df4cdec05fbefe78832b8e87618c89e Mon Sep 17 00:00:00 2001 From: tildetilde Date: Mon, 18 Aug 2025 10:04:36 +0200 Subject: [PATCH 040/127] Erasing mockup sign in --- backend/src/index.ts | 1232 +++++++++++---------- frontend/src/components/LoginForm.tsx | 59 +- frontend/src/components/SpotifyPlayer.tsx | 104 +- frontend/src/hooks/useAuth.ts | 272 ++--- frontend/src/services/spotifyApi.ts | 222 ++-- frontend/src/types/game.ts | 56 +- frontend/src/vite-env.d.ts | 1 - 7 files changed, 954 insertions(+), 992 deletions(-) diff --git a/backend/src/index.ts b/backend/src/index.ts index 6e76c204b6..10348e47b9 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -1,539 +1,565 @@ // server/src/index.ts -import 'dotenv/config'; -import express, { Request, Response } from 'express'; -import session from 'express-session'; -import cors from 'cors'; -import cookieParser from 'cookie-parser'; -import SpotifyWebApi from 'spotify-web-api-node'; -import mongoose, { Document, Schema } from 'mongoose'; +import "dotenv/config"; +import express, { Request, Response } from "express"; +import session from "express-session"; +import cors from "cors"; +import cookieParser from "cookie-parser"; +import SpotifyWebApi from "spotify-web-api-node"; +import mongoose, { Document, Schema } from "mongoose"; // Validate that all necessary environment variables exist const requiredEnvVars = [ - 'CLIENT_ID', - 'CLIENT_SECRET', - 'REDIRECT_URI', - 'MONGODB_URI', - 'FRONTEND_URI', - 'SESSION_SECRET' + "CLIENT_ID", + "CLIENT_SECRET", + "REDIRECT_URI", + "MONGODB_URI", + "FRONTEND_URI", + "SESSION_SECRET", ]; // Log environment info for debugging -console.log('Environment:', process.env.NODE_ENV || 'development'); -console.log('Frontend URI:', process.env.FRONTEND_URI || 'http://127.0.0.1:5173'); -console.log('Backend Port:', process.env.PORT || 8888); +console.log("Environment:", process.env.NODE_ENV || "development"); +console.log( + "Frontend URI:", + process.env.FRONTEND_URI || "http://127.0.0.1:5173" +); +console.log("Backend Port:", process.env.PORT || 8888); for (const envVar of requiredEnvVars) { - if (!process.env[envVar]) { - console.error(`Error: The environment variable ${envVar} is missing`); - process.exit(1); - } + if (!process.env[envVar]) { + console.error(`Error: The environment variable ${envVar} is missing`); + process.exit(1); + } } const app = express(); const port = process.env.PORT || 8888; // Extend the session object with our own properties -declare module 'express-session' { - interface SessionData { - spotify_auth_state?: string; // Made optional as it's cleared after use - accessToken?: string; - refreshToken?: string; - expiresIn?: number; - tokenCreatedAt?: number; // Add timestamp when token was created - } +declare module "express-session" { + interface SessionData { + spotify_auth_state?: string; // Made optional as it's cleared after use + accessToken?: string; + refreshToken?: string; + expiresIn?: number; + tokenCreatedAt?: number; // Add timestamp when token was created + } } // Middleware -app.use(cors({ +app.use( + cors({ origin: [ - process.env.FRONTEND_URI || 'http://127.0.0.1:5173', - 'https://banganza.netlify.app' + process.env.FRONTEND_URI || "http://127.0.0.1:5173", + "https://banganza.netlify.app", ], credentials: true, // Allow cookies - methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], - allowedHeaders: ['Content-Type', 'Authorization', 'Cookie'], -})); + methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"], + allowedHeaders: ["Content-Type", "Authorization", "Cookie"], + }) +); app.use(cookieParser()); app.use(express.json()); // For handling JSON request bodies // Health check endpoint -app.get('/', (req: Request, res: Response) => { - res.json({ - message: 'Backend server is running!', - status: 'ok', - environment: process.env.NODE_ENV || 'development', - timestamp: new Date().toISOString(), - frontend: process.env.FRONTEND_URI || 'http://127.0.0.1:5173' - }); +app.get("/", (req: Request, res: Response) => { + res.json({ + message: "Backend server is running!", + status: "ok", + environment: process.env.NODE_ENV || "development", + timestamp: new Date().toISOString(), + frontend: process.env.FRONTEND_URI || "http://127.0.0.1:5173", + }); }); // Additional health check for production monitoring -app.get('/health', (req: Request, res: Response) => { - const health = { - status: 'ok', - timestamp: new Date().toISOString(), - uptime: process.uptime(), - environment: process.env.NODE_ENV || 'development', - database: mongoose.connection.readyState === 1 ? 'connected' : 'disconnected' - }; - - if (health.database === 'disconnected') { - health.status = 'warning'; - } - - res.json(health); +app.get("/health", (req: Request, res: Response) => { + const health = { + status: "ok", + timestamp: new Date().toISOString(), + uptime: process.uptime(), + environment: process.env.NODE_ENV || "development", + database: + mongoose.connection.readyState === 1 ? "connected" : "disconnected", + }; + + if (health.database === "disconnected") { + health.status = "warning"; + } + + res.json(health); }); -app.use(session({ +app.use( + session({ secret: process.env.SESSION_SECRET as string, resave: true, // Changed to true to ensure session is saved saveUninitialized: true, // Changed to true to save new sessions cookie: { - httpOnly: true, // Improve security by making the cookie inaccessible to JavaScript - secure: process.env.NODE_ENV === 'production', // Use secure cookies only in production - sameSite: process.env.NODE_ENV === 'production' ? 'none' : 'lax', // Required for cross-origin cookies in production - maxAge: 60 * 60 * 1000 // 1 hour + httpOnly: true, // Improve security by making the cookie inaccessible to JavaScript + secure: process.env.NODE_ENV === "production", // Use secure cookies only in production + sameSite: process.env.NODE_ENV === "production" ? "none" : "lax", // Required for cross-origin cookies in production + maxAge: 60 * 60 * 1000, // 1 hour }, - name: 'spotify-session' // Give the session a specific name -})); + name: "spotify-session", // Give the session a specific name + }) +); // Connect to MongoDB -mongoose.connect(process.env.MONGODB_URI as string) - .then(() => { - console.log('Connected to MongoDB Atlas'); - // Only populate the database when successfully connected - populateQuizQuestionsFromPlaylist(); - }) - .catch(err => { - console.error('Could not connect to MongoDB Atlas:', err); - console.log('Server is running without database connection for development...'); - // Don't exit for development - allow server to run without DB - }); +mongoose + .connect(process.env.MONGODB_URI as string) + .then(() => { + console.log("Connected to MongoDB Atlas"); + // Only populate the database when successfully connected + populateQuizQuestionsFromPlaylist(); + }) + .catch((err) => { + console.error("Could not connect to MongoDB Atlas:", err); + console.log( + "Server is running without database connection for development..." + ); + // Don't exit for development - allow server to run without DB + }); // Spotify API instance const spotifyApi = new SpotifyWebApi({ - clientId: process.env.CLIENT_ID, - clientSecret: process.env.CLIENT_SECRET, - redirectUri: process.env.REDIRECT_URI + clientId: process.env.CLIENT_ID, + clientSecret: process.env.CLIENT_SECRET, + redirectUri: process.env.REDIRECT_URI, }); // Generate a random string for the state parameter (for security) const generateRandomString = (length: number): string => { - let text = ''; - const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - for (let i = 0; i < length; i++) { - text += possible.charAt(Math.floor(Math.random() * possible.length)); - } - return text; + let text = ""; + const possible = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + for (let i = 0; i < length; i++) { + text += possible.charAt(Math.floor(Math.random() * possible.length)); + } + return text; }; // Utility function to handle Spotify API errors const handleSpotifyError = (err: unknown, res: Response, operation: string) => { - console.error(`Error during ${operation}:`, err); - - if (err && typeof err === 'object' && 'statusCode' in err) { - const statusCode = (err as { statusCode: number }).statusCode; - if (statusCode === 403) { - res.status(403).json({ error: 'Premium account required for playback control.' }); - } else if (statusCode === 404) { - res.status(404).json({ error: 'Device not found or not available.' }); - } else if (statusCode === 429) { - res.status(429).json({ error: 'Rate limit exceeded. Please try again later.' }); - } else { - res.status(500).json({ error: `Could not ${operation}.` }); - } + console.error(`Error during ${operation}:`, err); + + if (err && typeof err === "object" && "statusCode" in err) { + const statusCode = (err as { statusCode: number }).statusCode; + if (statusCode === 403) { + res + .status(403) + .json({ error: "Premium account required for playback control." }); + } else if (statusCode === 404) { + res.status(404).json({ error: "Device not found or not available." }); + } else if (statusCode === 429) { + res + .status(429) + .json({ error: "Rate limit exceeded. Please try again later." }); } else { - res.status(500).json({ error: `Could not ${operation}.` }); + res.status(500).json({ error: `Could not ${operation}.` }); } + } else { + res.status(500).json({ error: `Could not ${operation}.` }); + } }; // --- Authentication routes (for the user to log in with Spotify) --- // 1. Log in with Spotify -app.get('/login', (req: Request, res: Response) => { - const state = generateRandomString(16); - req.session.spotify_auth_state = state; // Save state in the session - - console.log('OAuth login initiated with state:', state); - console.log('Session ID:', req.sessionID); - console.log('Frontend URI:', process.env.FRONTEND_URI); - console.log('Session data before redirect:', req.session); - - // Required scopes to control the user's Spotify app and read playback status - const scope = [ - 'user-read-private', - 'user-read-email', - 'user-read-playback-state', - 'user-modify-playback-state' - ]; - - const authUrl = spotifyApi.createAuthorizeURL(scope, state); - console.log('Redirecting to Spotify OAuth URL:', authUrl); - - // Force session save before redirect - req.session.save((err) => { - if (err) { - console.error('Error saving session:', err); - return res.status(500).json({ error: 'Failed to save session' }); - } - console.log('Session saved successfully, redirecting to Spotify'); - res.redirect(authUrl); - }); +app.get("/login", (req: Request, res: Response) => { + const state = generateRandomString(16); + req.session.spotify_auth_state = state; // Save state in the session + + console.log("OAuth login initiated with state:", state); + console.log("Session ID:", req.sessionID); + console.log("Frontend URI:", process.env.FRONTEND_URI); + console.log("Session data before redirect:", req.session); + + // Required scopes to control the user's Spotify app and read playback status + const scope = [ + "user-read-private", + "user-read-email", + "user-read-playback-state", + "user-modify-playback-state", + ]; + + const authUrl = spotifyApi.createAuthorizeURL(scope, state); + console.log("Redirecting to Spotify OAuth URL:", authUrl); + + // Force session save before redirect + req.session.save((err) => { + if (err) { + console.error("Error saving session:", err); + return res.status(500).json({ error: "Failed to save session" }); + } + console.log("Session saved successfully, redirecting to Spotify"); + res.redirect(authUrl); + }); }); // 2. Callback after Spotify authentication -app.get('/callback', async (req: Request, res: Response) => { - const { code, state } = req.query as { code: string | null; state: string | null }; - const storedState = req.session.spotify_auth_state; - - console.log('OAuth callback received:'); - console.log('- Received state:', state); - console.log('- Stored state:', storedState); - console.log('- Session ID:', req.sessionID); - console.log('- Session data:', req.session); - - if (state === null) { - console.error('No state parameter received from Spotify'); - res.redirect(`${process.env.FRONTEND_URI}/login?error=no_state`); - return; - } - - if (!storedState) { - console.error('No stored state found in session'); - res.redirect(`${process.env.FRONTEND_URI}/login?error=no_stored_state`); - return; - } - - if (state !== storedState) { - console.error('State mismatch in OAuth callback'); - console.error('- Expected:', storedState); - console.error('- Received:', state); - res.redirect(`${process.env.FRONTEND_URI}/login?error=state_mismatch`); - return; - } - - if (!code) { - console.error('No authorization code received from Spotify'); - res.redirect(`${process.env.FRONTEND_URI}/login?error=no_code`); - return; - } - - // Clear state from the session - req.session.spotify_auth_state = undefined; - - try { - const data = await spotifyApi.authorizationCodeGrant(code); - const { access_token, refresh_token, expires_in } = data.body; - - // Save tokens in the session - req.session.accessToken = access_token; - req.session.refreshToken = refresh_token; - req.session.expiresIn = expires_in; - req.session.tokenCreatedAt = Date.now(); // Store timestamp - - console.log('OAuth tokens received and stored in session'); - console.log('- Access token length:', access_token ? access_token.length : 0); - console.log('- Refresh token length:', refresh_token ? refresh_token.length : 0); - console.log('- Expires in:', expires_in); - - // Redirect to the frontend callback route to handle the OAuth completion - res.redirect(`${process.env.FRONTEND_URI}/callback?success=true`); - } catch (err) { - console.error('Could not get access token:', err); - res.redirect(`${process.env.FRONTEND_URI}/login?error=invalid_token`); - } +app.get("/callback", async (req: Request, res: Response) => { + const { code, state } = req.query as { + code: string | null; + state: string | null; + }; + const storedState = req.session.spotify_auth_state; + + console.log("OAuth callback received:"); + console.log("- Received state:", state); + console.log("- Stored state:", storedState); + console.log("- Session ID:", req.sessionID); + console.log("- Session data:", req.session); + + if (state === null) { + console.error("No state parameter received from Spotify"); + res.redirect(`${process.env.FRONTEND_URI}/login?error=no_state`); + return; + } + + if (!storedState) { + console.error("No stored state found in session"); + res.redirect(`${process.env.FRONTEND_URI}/login?error=no_stored_state`); + return; + } + + if (state !== storedState) { + console.error("State mismatch in OAuth callback"); + console.error("- Expected:", storedState); + console.error("- Received:", state); + res.redirect(`${process.env.FRONTEND_URI}/login?error=state_mismatch`); + return; + } + + if (!code) { + console.error("No authorization code received from Spotify"); + res.redirect(`${process.env.FRONTEND_URI}/login?error=no_code`); + return; + } + + // Clear state from the session + req.session.spotify_auth_state = undefined; + + try { + const data = await spotifyApi.authorizationCodeGrant(code); + const { access_token, refresh_token, expires_in } = data.body; + + // Save tokens in the session + req.session.accessToken = access_token; + req.session.refreshToken = refresh_token; + req.session.expiresIn = expires_in; + req.session.tokenCreatedAt = Date.now(); // Store timestamp + + console.log("OAuth tokens received and stored in session"); + console.log( + "- Access token length:", + access_token ? access_token.length : 0 + ); + console.log( + "- Refresh token length:", + refresh_token ? refresh_token.length : 0 + ); + console.log("- Expires in:", expires_in); + + // Redirect to the frontend callback route to handle the OAuth completion + res.redirect(`${process.env.FRONTEND_URI}/callback?success=true`); + } catch (err) { + console.error("Could not get access token:", err); + res.redirect(`${process.env.FRONTEND_URI}/login?error=invalid_token`); + } }); // 3. Refresh access token -app.get('/refresh_token', async (req: Request, res: Response) => { - try { - const refreshToken = req.session.refreshToken; - if (!refreshToken) { - return res.status(401).json({ error: 'No refresh token in session.' }); - } - spotifyApi.setRefreshToken(refreshToken); - const data = await spotifyApi.refreshAccessToken(); - const { access_token, expires_in } = data.body; - - req.session.accessToken = access_token; - req.session.expiresIn = expires_in; - req.session.tokenCreatedAt = Date.now(); // Update timestamp - res.json({ success: true }); - } catch (err) { - console.error('Could not refresh access token:', err); - res.status(500).json({ error: 'Could not refresh access token' }); +app.get("/refresh_token", async (req: Request, res: Response) => { + try { + const refreshToken = req.session.refreshToken; + if (!refreshToken) { + return res.status(401).json({ error: "No refresh token in session." }); } + spotifyApi.setRefreshToken(refreshToken); + const data = await spotifyApi.refreshAccessToken(); + const { access_token, expires_in } = data.body; + + req.session.accessToken = access_token; + req.session.expiresIn = expires_in; + req.session.tokenCreatedAt = Date.now(); // Update timestamp + res.json({ success: true }); + } catch (err) { + console.error("Could not refresh access token:", err); + res.status(500).json({ error: "Could not refresh access token" }); + } }); // 3.5. Check token status -app.get('/token-status', (req: Request, res: Response) => { - const { accessToken, expiresIn, tokenCreatedAt } = req.session; - - if (!accessToken || !expiresIn || !tokenCreatedAt) { - return res.status(401).json({ - valid: false, - reason: 'No tokens in session', - needsRefresh: false - }); - } - - const now = Date.now(); - const tokenAge = now - tokenCreatedAt; - const timeUntilExpiry = (expiresIn * 1000) - tokenAge; - - // Token is valid if it hasn't expired yet - const isValid = timeUntilExpiry > 0; - - // Suggest refresh if token expires in less than 5 minutes - const needsRefresh = timeUntilExpiry < (5 * 60 * 1000); - - res.json({ - valid: isValid, - reason: isValid ? 'Token is valid' : 'Token has expired', - needsRefresh, - timeUntilExpiry: Math.max(0, timeUntilExpiry), - expiresIn: expiresIn * 1000, - tokenAge +app.get("/token-status", (req: Request, res: Response) => { + const { accessToken, expiresIn, tokenCreatedAt } = req.session; + + if (!accessToken || !expiresIn || !tokenCreatedAt) { + return res.status(401).json({ + valid: false, + reason: "No tokens in session", + needsRefresh: false, }); + } + + const now = Date.now(); + const tokenAge = now - tokenCreatedAt; + const timeUntilExpiry = expiresIn * 1000 - tokenAge; + + // Token is valid if it hasn't expired yet + const isValid = timeUntilExpiry > 0; + + // Suggest refresh if token expires in less than 5 minutes + const needsRefresh = timeUntilExpiry < 5 * 60 * 1000; + + res.json({ + valid: isValid, + reason: isValid ? "Token is valid" : "Token has expired", + needsRefresh, + timeUntilExpiry: Math.max(0, timeUntilExpiry), + expiresIn: expiresIn * 1000, + tokenAge, + }); }); // 4. Get user profile (via backend session) -app.get('/user-profile', async (req: Request, res: Response) => { - try { - const accessToken = req.session.accessToken; - if (!accessToken) { - return res.status(401).json({ error: 'Not logged in.' }); - } - spotifyApi.setAccessToken(accessToken); - const data = await spotifyApi.getMe(); - res.json(data.body); - } catch (err) { - console.error('Error fetching user profile:', err); - res.status(500).json({ error: 'Could not fetch user profile.' }); +app.get("/user-profile", async (req: Request, res: Response) => { + try { + const accessToken = req.session.accessToken; + if (!accessToken) { + return res.status(401).json({ error: "Not logged in." }); } + spotifyApi.setAccessToken(accessToken); + const data = await spotifyApi.getMe(); + res.json(data.body); + } catch (err) { + console.error("Error fetching user profile:", err); + res.status(500).json({ error: "Could not fetch user profile." }); + } }); // 5. Log out -app.get('/logout', (req: Request, res: Response) => { - req.session.destroy(err => { - if (err) { - console.error('Error during logout:', err); - return res.status(500).json({ error: 'Could not log out.' }); - } - res.json({ success: true }); - }); +app.get("/logout", (req: Request, res: Response) => { + req.session.destroy((err) => { + if (err) { + console.error("Error during logout:", err); + return res.status(500).json({ error: "Could not log out." }); + } + res.json({ success: true }); + }); }); // --- Spotify Player routes (acting as a proxy) --- // 6. Start/Resume playback (PUT /me/player/play) -app.put('/spotify/play', async (req: Request, res: Response) => { - try { - const { trackId, contextUri, uris, deviceId, positionMs, offset } = req.body; - const accessToken = req.session.accessToken; +app.put("/spotify/play", async (req: Request, res: Response) => { + try { + const { trackId, contextUri, uris, deviceId, positionMs, offset } = + req.body; + const accessToken = req.session.accessToken; + + if (!accessToken) { + return res.status(401).json({ error: "Not authenticated." }); + } - if (!accessToken) { - return res.status(401).json({ error: 'Not authenticated.' }); - } + spotifyApi.setAccessToken(accessToken); - spotifyApi.setAccessToken(accessToken); - - // Build the play options object - const playOptions: { - device_id?: string; - context_uri?: string; - uris?: string[]; - position_ms?: number; - offset?: { position: number } | { uri: string }; - } = {}; - - if (deviceId) { - playOptions.device_id = deviceId; - } - - if (contextUri) { - playOptions.context_uri = contextUri; - } else if (uris && uris.length > 0) { - playOptions.uris = uris; - } else if (trackId) { - playOptions.uris = [`spotify:track:${trackId}`]; - } - - if (positionMs !== undefined) { - playOptions.position_ms = positionMs; - } - - if (offset) { - // Ensure offset has either position or uri, not both - if (offset.position !== undefined) { - playOptions.offset = { position: offset.position }; - } else if (offset.uri) { - playOptions.offset = { uri: offset.uri }; - } - } + // Build the play options object + const playOptions: { + device_id?: string; + context_uri?: string; + uris?: string[]; + position_ms?: number; + offset?: { position: number } | { uri: string }; + } = {}; + + if (deviceId) { + playOptions.device_id = deviceId; + } - await spotifyApi.play(playOptions); - res.status(204).send(); // Spotify returns 204 for successful playback start - } catch (err: unknown) { - handleSpotifyError(err, res, 'start playback'); + if (contextUri) { + playOptions.context_uri = contextUri; + } else if (uris && uris.length > 0) { + playOptions.uris = uris; + } else if (trackId) { + playOptions.uris = [`spotify:track:${trackId}`]; } + + if (positionMs !== undefined) { + playOptions.position_ms = positionMs; + } + + if (offset) { + // Ensure offset has either position or uri, not both + if (offset.position !== undefined) { + playOptions.offset = { position: offset.position }; + } else if (offset.uri) { + playOptions.offset = { uri: offset.uri }; + } + } + + await spotifyApi.play(playOptions); + res.status(204).send(); // Spotify returns 204 for successful playback start + } catch (err: unknown) { + handleSpotifyError(err, res, "start playback"); + } }); // 7. Pause playback (PUT /me/player/pause) -app.put('/spotify/pause', async (req: Request, res: Response) => { - try { - const { deviceId } = req.body; - const accessToken = req.session.accessToken; - - if (!accessToken) { - return res.status(401).json({ error: 'Not authenticated.' }); - } - - spotifyApi.setAccessToken(accessToken); - - const pauseOptions: { device_id?: string } = {}; - if (deviceId) { - pauseOptions.device_id = deviceId; - } - - await spotifyApi.pause(pauseOptions); - res.status(204).send(); - } catch (err: unknown) { - handleSpotifyError(err, res, 'pause playback'); +app.put("/spotify/pause", async (req: Request, res: Response) => { + try { + const { deviceId } = req.body; + const accessToken = req.session.accessToken; + + if (!accessToken) { + return res.status(401).json({ error: "Not authenticated." }); + } + + spotifyApi.setAccessToken(accessToken); + + const pauseOptions: { device_id?: string } = {}; + if (deviceId) { + pauseOptions.device_id = deviceId; } + + await spotifyApi.pause(pauseOptions); + res.status(204).send(); + } catch (err: unknown) { + handleSpotifyError(err, res, "pause playback"); + } }); // 8. Skip to next track (POST /me/player/next) -app.post('/spotify/next', async (req: Request, res: Response) => { - try { - const { deviceId } = req.body; - const accessToken = req.session.accessToken; - - if (!accessToken) { - return res.status(401).json({ error: 'Not authenticated.' }); - } - - spotifyApi.setAccessToken(accessToken); - - const nextOptions: { device_id?: string } = {}; - if (deviceId) { - nextOptions.device_id = deviceId; - } - - await spotifyApi.skipToNext(nextOptions); - res.status(204).send(); - } catch (err: unknown) { - handleSpotifyError(err, res, 'skip to next track'); +app.post("/spotify/next", async (req: Request, res: Response) => { + try { + const { deviceId } = req.body; + const accessToken = req.session.accessToken; + + if (!accessToken) { + return res.status(401).json({ error: "Not authenticated." }); } + + spotifyApi.setAccessToken(accessToken); + + const nextOptions: { device_id?: string } = {}; + if (deviceId) { + nextOptions.device_id = deviceId; + } + + await spotifyApi.skipToNext(nextOptions); + res.status(204).send(); + } catch (err: unknown) { + handleSpotifyError(err, res, "skip to next track"); + } }); // 9. Skip to previous track (POST /me/player/previous) -app.post('/spotify/previous', async (req: Request, res: Response) => { - try { - const { deviceId } = req.body; - const accessToken = req.session.accessToken; - - if (!accessToken) { - return res.status(401).json({ error: 'Not authenticated.' }); - } - - spotifyApi.setAccessToken(accessToken); - - const previousOptions: { device_id?: string } = {}; - if (deviceId) { - previousOptions.device_id = deviceId; - } - - await spotifyApi.skipToPrevious(previousOptions); - res.status(204).send(); - } catch (err: unknown) { - handleSpotifyError(err, res, 'skip to previous track'); +app.post("/spotify/previous", async (req: Request, res: Response) => { + try { + const { deviceId } = req.body; + const accessToken = req.session.accessToken; + + if (!accessToken) { + return res.status(401).json({ error: "Not authenticated." }); + } + + spotifyApi.setAccessToken(accessToken); + + const previousOptions: { device_id?: string } = {}; + if (deviceId) { + previousOptions.device_id = deviceId; } + + await spotifyApi.skipToPrevious(previousOptions); + res.status(204).send(); + } catch (err: unknown) { + handleSpotifyError(err, res, "skip to previous track"); + } }); // 10. Get available devices (GET /me/player/devices) -app.get('/spotify/devices', async (req: Request, res: Response) => { - try { - const accessToken = req.session.accessToken; - - if (!accessToken) { - return res.status(401).json({ error: 'Not authenticated.' }); - } - - spotifyApi.setAccessToken(accessToken); - const data = await spotifyApi.getMyDevices(); - res.json(data.body); - } catch (err: unknown) { - console.error('Error getting devices:', err); - - if (err && typeof err === 'object' && 'statusCode' in err) { - const statusCode = (err as { statusCode: number }).statusCode; - if (statusCode === 401) { - res.status(401).json({ error: 'Not authenticated.' }); - } else { - res.status(500).json({ error: 'Could not get devices.' }); - } - } else { - res.status(500).json({ error: 'Could not get devices.' }); - } +app.get("/spotify/devices", async (req: Request, res: Response) => { + try { + const accessToken = req.session.accessToken; + + if (!accessToken) { + return res.status(401).json({ error: "Not authenticated." }); } + + spotifyApi.setAccessToken(accessToken); + const data = await spotifyApi.getMyDevices(); + res.json(data.body); + } catch (err: unknown) { + console.error("Error getting devices:", err); + + if (err && typeof err === "object" && "statusCode" in err) { + const statusCode = (err as { statusCode: number }).statusCode; + if (statusCode === 401) { + res.status(401).json({ error: "Not authenticated." }); + } else { + res.status(500).json({ error: "Could not get devices." }); + } + } else { + res.status(500).json({ error: "Could not get devices." }); + } + } }); // 11. Get current playback state (GET /me/player) -app.get('/spotify/playback-state', async (req: Request, res: Response) => { - try { - const accessToken = req.session.accessToken; - - if (!accessToken) { - return res.status(401).json({ error: 'Not authenticated.' }); - } - - spotifyApi.setAccessToken(accessToken); - const data = await spotifyApi.getMyCurrentPlaybackState(); - - if (!data.body) { - // User is not currently playing anything - return res.status(204).send(); - } - - res.json(data.body); - } catch (err: unknown) { - console.error('Error getting playback state:', err); - - if (err && typeof err === 'object' && 'statusCode' in err) { - const statusCode = (err as { statusCode: number }).statusCode; - if (statusCode === 204) { - // User is not currently playing anything - res.status(204).send(); - } else if (statusCode === 401) { - res.status(401).json({ error: 'Not authenticated.' }); - } else { - res.status(500).json({ error: 'Could not get playback state.' }); - } - } else { - res.status(500).json({ error: 'Could not get playback state.' }); - } +app.get("/spotify/playback-state", async (req: Request, res: Response) => { + try { + const accessToken = req.session.accessToken; + + if (!accessToken) { + return res.status(401).json({ error: "Not authenticated." }); + } + + spotifyApi.setAccessToken(accessToken); + const data = await spotifyApi.getMyCurrentPlaybackState(); + + if (!data.body) { + // User is not currently playing anything + return res.status(204).send(); + } + + res.json(data.body); + } catch (err: unknown) { + console.error("Error getting playback state:", err); + + if (err && typeof err === "object" && "statusCode" in err) { + const statusCode = (err as { statusCode: number }).statusCode; + if (statusCode === 204) { + // User is not currently playing anything + res.status(204).send(); + } else if (statusCode === 401) { + res.status(401).json({ error: "Not authenticated." }); + } else { + res.status(500).json({ error: "Could not get playback state." }); + } + } else { + res.status(500).json({ error: "Could not get playback state." }); } + } }); // 12. Transfer playback to device (PUT /me/player) -app.put('/spotify/transfer', async (req: Request, res: Response) => { - try { - const { deviceId, play } = req.body; - const accessToken = req.session.accessToken; - - if (!accessToken || !deviceId) { - return res.status(400).json({ error: 'Device ID is required.' }); - } - - spotifyApi.setAccessToken(accessToken); - // Use the correct method to transfer playback - await spotifyApi.transferMyPlayback([deviceId], { play }); - - res.status(204).send(); - } catch (err: unknown) { - handleSpotifyError(err, res, 'transfer playback'); +app.put("/spotify/transfer", async (req: Request, res: Response) => { + try { + const { deviceId, play } = req.body; + const accessToken = req.session.accessToken; + + if (!accessToken || !deviceId) { + return res.status(400).json({ error: "Device ID is required." }); } + + spotifyApi.setAccessToken(accessToken); + // Use the correct method to transfer playback + await spotifyApi.transferMyPlayback([deviceId], { play }); + + res.status(204).send(); + } catch (err: unknown) { + handleSpotifyError(err, res, "transfer playback"); + } }); // --- MongoDB Model (Quiz) --- @@ -542,141 +568,143 @@ app.put('/spotify/transfer', async (req: Request, res: Response) => { // Define an interface for the data model interface IQuizQuestion extends Document { - trackId: string; - trackTitle: string; - trackArtist: string; - releaseYear: number; - trackUrl: string; + trackId: string; + trackTitle: string; + trackArtist: string; + releaseYear: number; + trackUrl: string; } const quizSchema: Schema = new Schema({ - trackId: String, - trackTitle: String, - trackArtist: String, - releaseYear: Number, - trackUrl: String, + trackId: String, + trackTitle: String, + trackArtist: String, + releaseYear: Number, + trackUrl: String, }); -const QuizQuestion = mongoose.model('QuizQuestion', quizSchema); +const QuizQuestion = mongoose.model("QuizQuestion", quizSchema); // API route to fetch quiz questions -app.get('/quiz-questions', async (req: Request, res: Response) => { - try { - // Check if mongoose is connected - if (mongoose.connection.readyState !== 1) { - return res.status(503).json({ error: 'Database is not available' }); - } - const questions = await QuizQuestion.find({}); - res.json(questions); - } catch (err) { - console.error('Error fetching quiz questions:', err); - res.status(500).json({ error: 'Could not fetch quiz questions' }); +app.get("/quiz-questions", async (req: Request, res: Response) => { + try { + // Check if mongoose is connected + if (mongoose.connection.readyState !== 1) { + return res.status(503).json({ error: "Database is not available" }); } + const questions = await QuizQuestion.find({}); + res.json(questions); + } catch (err) { + console.error("Error fetching quiz questions:", err); + res.status(500).json({ error: "Could not fetch quiz questions" }); + } }); // API route to fetch quiz questions with statistics and formatted information -app.get('/quiz-questions/detailed', async (req: Request, res: Response) => { - try { - // Check if mongoose is connected - if (mongoose.connection.readyState !== 1) { - return res.status(503).json({ error: 'Database is not available' }); - } - - const questions = await QuizQuestion.find({}); - - // Calculate statistics - const totalQuestions = questions.length; - const years = questions.map(q => q.releaseYear); - const uniqueYears = [...new Set(years)].sort((a, b) => a - b); - const yearRange = { - min: Math.min(...years), - max: Math.max(...years) - }; - - // Group by artist - const artistCounts: { [key: string]: number } = {}; - questions.forEach(q => { - artistCounts[q.trackArtist] = (artistCounts[q.trackArtist] || 0) + 1; - }); - - // Top 5 artists - const topArtists = Object.entries(artistCounts) - .sort(([, a], [, b]) => b - a) - .slice(0, 5) - .map(([artist, count]) => ({ artist, count })); - - // Group by decade - const decadeCounts: { [key: string]: number } = {}; - questions.forEach(q => { - const decade = Math.floor(q.releaseYear / 10) * 10; - const decadeLabel = `${decade}s`; - decadeCounts[decadeLabel] = (decadeCounts[decadeLabel] || 0) + 1; - }); - - const response = { - summary: { - totalQuestions, - yearRange, - uniqueYears: uniqueYears.length, - decades: Object.keys(decadeCounts).length - }, - statistics: { - topArtists, - decadeBreakdown: decadeCounts, - yearDistribution: uniqueYears - }, - questions: questions.map(q => ({ - id: q._id, - trackId: q.trackId, - title: q.trackTitle, - artist: q.trackArtist, - year: q.releaseYear, - decade: `${Math.floor(q.releaseYear / 10) * 10}s` - })) - }; - - res.json(response); - } catch (err) { - console.error('Error fetching detailed quiz questions:', err); - res.status(500).json({ error: 'Could not fetch detailed quiz questions' }); +app.get("/quiz-questions/detailed", async (req: Request, res: Response) => { + try { + // Check if mongoose is connected + if (mongoose.connection.readyState !== 1) { + return res.status(503).json({ error: "Database is not available" }); } + + const questions = await QuizQuestion.find({}); + + // Calculate statistics + const totalQuestions = questions.length; + const years = questions.map((q) => q.releaseYear); + const uniqueYears = [...new Set(years)].sort((a, b) => a - b); + const yearRange = { + min: Math.min(...years), + max: Math.max(...years), + }; + + // Group by artist + const artistCounts: { [key: string]: number } = {}; + questions.forEach((q) => { + artistCounts[q.trackArtist] = (artistCounts[q.trackArtist] || 0) + 1; + }); + + // Top 5 artists + const topArtists = Object.entries(artistCounts) + .sort(([, a], [, b]) => b - a) + .slice(0, 5) + .map(([artist, count]) => ({ artist, count })); + + // Group by decade + const decadeCounts: { [key: string]: number } = {}; + questions.forEach((q) => { + const decade = Math.floor(q.releaseYear / 10) * 10; + const decadeLabel = `${decade}s`; + decadeCounts[decadeLabel] = (decadeCounts[decadeLabel] || 0) + 1; + }); + + const response = { + summary: { + totalQuestions, + yearRange, + uniqueYears: uniqueYears.length, + decades: Object.keys(decadeCounts).length, + }, + statistics: { + topArtists, + decadeBreakdown: decadeCounts, + yearDistribution: uniqueYears, + }, + questions: questions.map((q) => ({ + id: q._id, + trackId: q.trackId, + title: q.trackTitle, + artist: q.trackArtist, + year: q.releaseYear, + decade: `${Math.floor(q.releaseYear / 10) * 10}s`, + })), + }; + + res.json(response); + } catch (err) { + console.error("Error fetching detailed quiz questions:", err); + res.status(500).json({ error: "Could not fetch detailed quiz questions" }); + } }); // API route to get a random quiz question -app.get('/quiz-questions/random', async (req: Request, res: Response) => { - try { - // Check if mongoose is connected - if (mongoose.connection.readyState !== 1) { - return res.status(503).json({ error: 'Database is not available' }); - } +app.get("/quiz-questions/random", async (req: Request, res: Response) => { + try { + // Check if mongoose is connected + if (mongoose.connection.readyState !== 1) { + return res.status(503).json({ error: "Database is not available" }); + } - const count = await QuizQuestion.countDocuments(); - if (count === 0) { - return res.status(404).json({ error: 'No quiz questions available' }); - } + const count = await QuizQuestion.countDocuments(); + if (count === 0) { + return res.status(404).json({ error: "No quiz questions available" }); + } - const randomIndex = Math.floor(Math.random() * count); - const randomQuestion = await QuizQuestion.findOne().skip(randomIndex); + const randomIndex = Math.floor(Math.random() * count); + const randomQuestion = await QuizQuestion.findOne().skip(randomIndex); - if (!randomQuestion) { - return res.status(404).json({ error: 'Could not find a random question' }); - } - - res.json({ - question: { - id: randomQuestion._id, - trackId: randomQuestion.trackId, - title: randomQuestion.trackTitle, - artist: randomQuestion.trackArtist, - year: randomQuestion.releaseYear, - decade: `${Math.floor(randomQuestion.releaseYear / 10) * 10}s` - }, - totalQuestions: count - }); - } catch (err) { - console.error('Error fetching random quiz question:', err); - res.status(500).json({ error: 'Could not fetch a random quiz question' }); + if (!randomQuestion) { + return res + .status(404) + .json({ error: "Could not find a random question" }); } + + res.json({ + question: { + id: randomQuestion._id, + trackId: randomQuestion.trackId, + title: randomQuestion.trackTitle, + artist: randomQuestion.trackArtist, + year: randomQuestion.releaseYear, + decade: `${Math.floor(randomQuestion.releaseYear / 10) * 10}s`, + }, + totalQuestions: count, + }); + } catch (err) { + console.error("Error fetching random quiz question:", err); + res.status(500).json({ error: "Could not fetch a random quiz question" }); + } }); // --- Function to add quiz questions from a specific playlist --- @@ -684,69 +712,73 @@ app.get('/quiz-questions/random', async (req: Request, res: Response) => { // It fetches an app-specific access token, so it does not require a logged-in user. // Configuration constants -const PLAYLIST_ID = '6YHoO8ETcwxgq5WTjDpyAQ'; +const PLAYLIST_ID = "6YHoO8ETcwxgq5WTjDpyAQ"; async function populateQuizQuestionsFromPlaylist() { - // ID for the playlist you want to fetch tracks from. - const playlistId = PLAYLIST_ID; - - try { - // Check if mongoose is connected before proceeding - if (mongoose.connection.readyState !== 1) { - console.log('MongoDB not connected, skipping database population'); - return; - } + // ID for the playlist you want to fetch tracks from. + const playlistId = PLAYLIST_ID; + + try { + // Check if mongoose is connected before proceeding + if (mongoose.connection.readyState !== 1) { + console.log("MongoDB not connected, skipping database population"); + return; + } - // Remove existing questions before adding new ones - await QuizQuestion.deleteMany({}); - console.log('Existing quiz questions have been cleared from the database.'); - - const data = await spotifyApi.clientCredentialsGrant(); - spotifyApi.setAccessToken(data.body['access_token']); - console.log('Fetched Client Credentials token.'); - - const playlistData = await spotifyApi.getPlaylistTracks(playlistId); - const tracks = playlistData.body.items.filter(item => item.track); - - const quizQuestions = tracks.map(item => { - const track = item.track as SpotifyApi.TrackObjectFull; - if (track) { - const trackTitle = track.name; - const trackArtist = track.artists[0]?.name || 'Unknown Artist'; - const releaseYear = new Date(track.album.release_date).getFullYear(); - const trackUrl = track.external_urls.spotify; - return { - trackId: track.id, - trackTitle, - trackArtist, - releaseYear, - trackUrl, - }; - } - }).filter(Boolean) as IQuizQuestion[]; // Filter out any null values - - if (quizQuestions.length > 0) { - await QuizQuestion.insertMany(quizQuestions); - console.log(`Database has been populated with ${quizQuestions.length} questions from the playlist.`); - } else { - console.log('Could not find any songs to create questions from.'); + // Remove existing questions before adding new ones + await QuizQuestion.deleteMany({}); + console.log("Existing quiz questions have been cleared from the database."); + + const data = await spotifyApi.clientCredentialsGrant(); + spotifyApi.setAccessToken(data.body["access_token"]); + console.log("Fetched Client Credentials token."); + + const playlistData = await spotifyApi.getPlaylistTracks(playlistId); + const tracks = playlistData.body.items.filter((item) => item.track); + + const quizQuestions = tracks + .map((item) => { + const track = item.track as SpotifyApi.TrackObjectFull; + if (track) { + const trackTitle = track.name; + const trackArtist = track.artists[0]?.name || "Unknown Artist"; + const releaseYear = new Date(track.album.release_date).getFullYear(); + const trackUrl = track.external_urls.spotify; + return { + trackId: track.id, + trackTitle, + trackArtist, + releaseYear, + trackUrl, + }; } - - } catch (error) { - console.error('An error occurred while populating the database:', error); + }) + .filter(Boolean) as IQuizQuestion[]; // Filter out any null values + + if (quizQuestions.length > 0) { + await QuizQuestion.insertMany(quizQuestions); + console.log( + `Database has been populated with ${quizQuestions.length} questions from the playlist.` + ); + } else { + console.log("Could not find any songs to create questions from."); } + } catch (error) { + console.error("An error occurred while populating the database:", error); + } } - // Start the server -app.listen(port, () => { +app + .listen(port, () => { console.log(`Backend server is running on port ${port}`); - if (process.env.NODE_ENV === 'production') { - console.log('Production mode enabled'); + if (process.env.NODE_ENV === "production") { + console.log("Production mode enabled"); } else { - console.log(`Development mode: http://127.0.0.1:${port}`); + console.log(`Development mode: http://127.0.0.1:${port}`); } -}).on('error', (err) => { - console.error('Error starting the server:', err); + }) + .on("error", (err) => { + console.error("Error starting the server:", err); process.exit(1); -}); + }); diff --git a/frontend/src/components/LoginForm.tsx b/frontend/src/components/LoginForm.tsx index 5ac413e12f..67cfd0412a 100644 --- a/frontend/src/components/LoginForm.tsx +++ b/frontend/src/components/LoginForm.tsx @@ -1,43 +1,53 @@ -import React from "react" -import { useAuth } from "../hooks/useAuth" -import { Button } from "../ui/Button" +import React from "react"; +import { useAuth } from "../hooks/useAuth"; +import { Button } from "../ui/Button"; export const LoginForm: React.FC = () => { - const { login, isLoading, error: authError } = useAuth(false) - + const { login, isLoading, error: authError } = useAuth(false); + // Get error from URL parameters const urlParams = new URLSearchParams(window.location.search); - const urlError = urlParams.get('error'); - + const urlError = urlParams.get("error"); + // Use URL error if available, otherwise use auth error const error = urlError || authError; const handleSpotifyLogin = () => { - login() - } + login(); + }; return (
-

Music Game Name

-

- Build your music timeline and guess the years in this exciting music game -

+

+ Music Game Name +

+

+ Build your music timeline and guess the years in this exciting music + game +

{/* Error display */} {error && (
- {error === 'state_mismatch' && 'Authentication failed. Please try again.'} - {error === 'invalid_token' && 'Authentication failed. Please try again.'} - {error === 'authentication_failed' && 'Authentication failed. Please try again.'} - {!['state_mismatch', 'invalid_token', 'authentication_failed'].includes(error) && error} + {error === "state_mismatch" && + "Authentication failed. Please try again."} + {error === "invalid_token" && + "Authentication failed. Please try again."} + {error === "authentication_failed" && + "Authentication failed. Please try again."} + {![ + "state_mismatch", + "invalid_token", + "authentication_failed", + ].includes(error) && error}
)} -
)} - + {/* Game info */}
@@ -66,11 +76,14 @@ export const LoginForm: React.FC = () => {

Ready to play?

-

Connect with Spotify to start your music timeline game. Only one player needs to log in.

+

+ Connect with Spotify to start your music timeline game. Only one + player needs to log in. +

- ) -} + ); +}; diff --git a/frontend/src/components/SpotifyPlayer.tsx b/frontend/src/components/SpotifyPlayer.tsx index 43757e9a96..f46e143fce 100644 --- a/frontend/src/components/SpotifyPlayer.tsx +++ b/frontend/src/components/SpotifyPlayer.tsx @@ -1,14 +1,14 @@ -import React, { useState, useEffect } from 'react'; -import { - startPlayback, - pausePlayback, - skipToNext, +import React, { useState, useEffect } from "react"; +import { + startPlayback, + pausePlayback, + skipToNext, skipToPrevious, getAvailableDevices, getCurrentPlaybackState, - transferPlayback -} from '../services/spotifyApi'; -import { Button } from '../ui/Button'; + transferPlayback, +} from "../services/spotifyApi"; +import { Button } from "../ui/Button"; interface Device { id: string; @@ -31,8 +31,10 @@ interface PlaybackState { export const SpotifyPlayer: React.FC = () => { const [devices, setDevices] = useState([]); - const [selectedDevice, setSelectedDevice] = useState(''); - const [playbackState, setPlaybackState] = useState(null); + const [selectedDevice, setSelectedDevice] = useState(""); + const [playbackState, setPlaybackState] = useState( + null + ); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(null); @@ -40,7 +42,7 @@ export const SpotifyPlayer: React.FC = () => { useEffect(() => { loadDevices(); loadPlaybackState(); - + // Poll for playback state updates const interval = setInterval(loadPlaybackState, 5000); return () => clearInterval(interval); @@ -50,17 +52,17 @@ export const SpotifyPlayer: React.FC = () => { try { const deviceList = await getAvailableDevices(); setDevices(deviceList); - + // Auto-select active device or first available device - const activeDevice = deviceList.find(d => d.is_active); + const activeDevice = deviceList.find((d) => d.is_active); if (activeDevice) { setSelectedDevice(activeDevice.id); } else if (deviceList.length > 0) { setSelectedDevice(deviceList[0].id); } } catch (err) { - setError('Failed to load devices'); - console.error('Error loading devices:', err); + setError("Failed to load devices"); + console.error("Error loading devices:", err); } }; @@ -70,13 +72,13 @@ export const SpotifyPlayer: React.FC = () => { setPlaybackState(state); } catch (err) { // Don't show error for playback state, just log it - console.error('Error loading playback state:', err); + console.error("Error loading playback state:", err); } }; const handlePlay = async () => { if (!selectedDevice) { - setError('Please select a device first'); + setError("Please select a device first"); return; } @@ -86,14 +88,14 @@ export const SpotifyPlayer: React.FC = () => { try { // Example: Play a specific track (you can modify this) await startPlayback({ - trackId: '4iV5W9uYEdYUVa79Axb7Rh', // Example track ID - deviceId: selectedDevice + trackId: "4iV5W9uYEdYUVa79Axb7Rh", // Example track ID + deviceId: selectedDevice, }); - + // Refresh playback state await loadPlaybackState(); } catch (err) { - setError(err instanceof Error ? err.message : 'Failed to start playback'); + setError(err instanceof Error ? err.message : "Failed to start playback"); } finally { setIsLoading(false); } @@ -101,7 +103,7 @@ export const SpotifyPlayer: React.FC = () => { const handlePause = async () => { if (!selectedDevice) { - setError('Please select a device first'); + setError("Please select a device first"); return; } @@ -112,7 +114,7 @@ export const SpotifyPlayer: React.FC = () => { await pausePlayback(selectedDevice); await loadPlaybackState(); } catch (err) { - setError(err instanceof Error ? err.message : 'Failed to pause playback'); + setError(err instanceof Error ? err.message : "Failed to pause playback"); } finally { setIsLoading(false); } @@ -120,7 +122,7 @@ export const SpotifyPlayer: React.FC = () => { const handleNext = async () => { if (!selectedDevice) { - setError('Please select a device first'); + setError("Please select a device first"); return; } @@ -131,7 +133,9 @@ export const SpotifyPlayer: React.FC = () => { await skipToNext(selectedDevice); await loadPlaybackState(); } catch (err) { - setError(err instanceof Error ? err.message : 'Failed to skip to next track'); + setError( + err instanceof Error ? err.message : "Failed to skip to next track" + ); } finally { setIsLoading(false); } @@ -139,7 +143,7 @@ export const SpotifyPlayer: React.FC = () => { const handlePrevious = async () => { if (!selectedDevice) { - setError('Please select a device first'); + setError("Please select a device first"); return; } @@ -150,7 +154,9 @@ export const SpotifyPlayer: React.FC = () => { await skipToPrevious(selectedDevice); await loadPlaybackState(); } catch (err) { - setError(err instanceof Error ? err.message : 'Failed to skip to previous track'); + setError( + err instanceof Error ? err.message : "Failed to skip to previous track" + ); } finally { setIsLoading(false); } @@ -158,20 +164,20 @@ export const SpotifyPlayer: React.FC = () => { const handleDeviceChange = async (deviceId: string) => { setSelectedDevice(deviceId); - + try { // Transfer playback to the selected device await transferPlayback(deviceId, false); await loadPlaybackState(); } catch (err) { - console.error('Error transferring playback:', err); + console.error("Error transferring playback:", err); // Don't show error for device transfer } }; const handlePlayContext = async (contextUri: string) => { if (!selectedDevice) { - setError('Please select a device first'); + setError("Please select a device first"); return; } @@ -181,12 +187,12 @@ export const SpotifyPlayer: React.FC = () => { try { await startPlayback({ contextUri, - deviceId: selectedDevice + deviceId: selectedDevice, }); - + await loadPlaybackState(); } catch (err) { - setError(err instanceof Error ? err.message : 'Failed to start playback'); + setError(err instanceof Error ? err.message : "Failed to start playback"); } finally { setIsLoading(false); } @@ -195,7 +201,7 @@ export const SpotifyPlayer: React.FC = () => { return (

Spotify Player

- + {/* Device Selection */}
+ + +
+ Component Examples +
+ + + + + + INFO BLOCK + + + + + + + + + + MORE INFO + + + + + + + + + + EVEN MORE + + + + + + + + + + SO MUCH INFO + + + + +
+
+ +
+ Button Variants +
+ + + + +
+
+ +
+ Typography Scale +
+ Heading 1 - Display + Heading 2 - Page Title + Heading 3 - Section + Heading 4 - Subsection + Heading 5 - Component + Heading 6 - Label +

+ Body text - Regular paragraph content +

+

+ Small text - Secondary information +

+
+
+
+
+
+ ); +}; diff --git a/frontend/src/pages/Home.tsx b/frontend/src/pages/Home.tsx index e2e3bdf9ba..c1bf500fec 100644 --- a/frontend/src/pages/Home.tsx +++ b/frontend/src/pages/Home.tsx @@ -1,133 +1,65 @@ -import { useState } from "react"; -import { - Button, - Card, - CardHeader, - CardContent, - Heading, - DotPattern, -} from "../ui"; +import { useEffect, useState } from "react"; import { Link } from "react-router-dom"; +import { Button, Heading } from "../ui"; import BanganzaIntro from "../components/BanganzaIntro"; export const Home = () => { const [introDone, setIntroDone] = useState(false); + const [ready, setReady] = useState(false); + + useEffect(() => { + const t = setTimeout(() => setReady(true), 250); + return () => clearTimeout(t); + }, []); return ( -
+
{!introDone && setIntroDone(true)} />}
-
-
- - DESIGN SYSTEM - -

- A comprehensive design system built with our brand colors and Zen - Kaku Gothic New typography. -

-
- - - - -
-
+
+ {/* mjuka glows */} +
+
+
+
-
- Component Examples -
- - - - - - INFO BLOCK - - - - - - - - - - MORE INFO - - - - - - - - - - EVEN MORE - - - - - - - - - - SO MUCH INFO - - - - -
-
+
+
+

+ WHEN THE BANGERS ARE TOO GOOD… YOU JUST NEED TO +

-
- Button Variants -
- - - - -
-
+ + BANGANZA + -
- Typography Scale -
- Heading 1 - Display - Heading 2 - Page Title - Heading 3 - Section - Heading 4 - Subsection - Heading 5 - Component - Heading 6 - Label -

- Body text - Regular paragraph content -

-

- Small text - Secondary information -

+
+ + + +
-
+
); From 4b5944f420c6b2920231c62ff268406e1973de23 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Mon, 18 Aug 2025 11:44:51 +0200 Subject: [PATCH 043/127] Hard reset to mack data --- frontend/src/App.tsx | 48 +---- frontend/src/hooks/useAuth.ts | 283 ------------------------- frontend/src/pages/Dashboard.tsx | 132 ------------ frontend/src/pages/DesignSystem.tsx | 135 ++++++++++++ frontend/src/pages/Home.tsx | 158 ++++---------- frontend/src/pages/Login.tsx | 29 --- frontend/src/pages/OAuthCallback.tsx | 63 ------ frontend/src/services/spotifyApi.ts | 298 --------------------------- 8 files changed, 189 insertions(+), 957 deletions(-) delete mode 100644 frontend/src/hooks/useAuth.ts delete mode 100644 frontend/src/pages/Dashboard.tsx create mode 100644 frontend/src/pages/DesignSystem.tsx delete mode 100644 frontend/src/pages/Login.tsx delete mode 100644 frontend/src/pages/OAuthCallback.tsx delete mode 100644 frontend/src/services/spotifyApi.ts diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 588586bf65..dfe312e3e1 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,47 +1,19 @@ -import React from 'react'; -import { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom'; -import { Home } from './pages/Home'; -import GameMode from './pages/GameMode'; -import { Login } from './pages/Login'; -import { Dashboard } from './pages/Dashboard'; -import { OAuthCallback } from './pages/OAuthCallback'; -import { useAuth } from './hooks/useAuth'; - -// Protected Route component -const ProtectedRoute = ({ children }: { children: React.ReactNode }) => { - const { isAuthenticated, isLoading } = useAuth(); - - if (isLoading) { - return ( -
-
-
-

Loading...

-
-
- ); - } - - return isAuthenticated ? <>{children} : ; -}; +import React from "react"; +import { + BrowserRouter as Router, + Routes, + Route, + Navigate, +} from "react-router-dom"; +import { Home } from "./pages/Home"; +import GameMode from "./pages/GameMode"; export const App = () => { return ( } /> - } /> - } /> - - - - } /> - - - - } /> + } /> ); diff --git a/frontend/src/hooks/useAuth.ts b/frontend/src/hooks/useAuth.ts deleted file mode 100644 index ceaaa76e5a..0000000000 --- a/frontend/src/hooks/useAuth.ts +++ /dev/null @@ -1,283 +0,0 @@ -import { useState, useEffect, useCallback } from 'react'; -import { config } from '../config/environment'; - -interface User { - id: string; - display_name: string; - email: string; - images?: Array<{ url: string }>; -} - -interface AuthState { - isAuthenticated: boolean; - user: User | null; - isLoading: boolean; - error: string | null; -} - -const BACKEND_URL = config.backendUrl; -const USE_MOCK = import.meta.env.VITE_USE_SPOTIFY_MOCK === '1'; - -export const useAuth = (autoCheck = true) => { - const [authState, setAuthState] = useState({ - isAuthenticated: false, - user: null, - isLoading: true, - error: null, - }); - - // --- Helpers för mockläge --- - const setMockAuthenticated = useCallback(() => { - const mockUser: User = { - id: 'dev', - display_name: 'Mock User', - email: 'mock@example.com', - images: [{ url: 'https://placehold.co/64x64' }], - }; - setAuthState({ - isAuthenticated: true, - user: mockUser, - isLoading: false, - error: null, - }); - }, []); - - const refreshToken = useCallback(async () => { - if (USE_MOCK) { - // Inget att refresha i mock – låtsas att allt gick bra - return true; - } - try { - console.log('Refreshing access token...'); - const response = await fetch(`${BACKEND_URL}/refresh_token`, { - credentials: 'include', - }); - - if (response.ok) { - console.log('Token refreshed successfully'); - return true; - } else { - console.log('Token refresh failed, redirecting to login'); - setAuthState({ - isAuthenticated: false, - user: null, - isLoading: false, - error: 'Session expired. Please login again.', - }); - window.location.href = '/login'; - return false; - } - } catch (error) { - console.error('Error refreshing token:', error); - setAuthState(prev => ({ ...prev, error: 'Failed to refresh token' })); - window.location.href = '/login'; - return false; - } - }, []); - - const checkTokenStatus = useCallback(async () => { - if (USE_MOCK) return; // hoppa över i mockläge - try { - const response = await fetch(`${BACKEND_URL}/token-status`, { - credentials: 'include', - }); - - if (response.ok) { - const status = await response.json(); - if (status.needsRefresh && status.valid) { - console.log('Token needs refresh, refreshing proactively...'); - await refreshToken(); - } - } else if (response.status === 401) { - console.log('No valid session found during token status check'); - } - } catch (error) { - console.error('Error checking token status:', error); - } - }, [refreshToken]); - - const checkAuthStatus = useCallback(async (isRetry = false) => { - // Direktbypass i mockläge - if (USE_MOCK) { - setMockAuthenticated(); - return; - } - - try { - setAuthState(prev => ({ ...prev, isLoading: true, error: null })); - - // 1) token-status - const tokenResponse = await fetch(`${BACKEND_URL}/token-status`, { - credentials: 'include', - }); - - if (tokenResponse.ok) { - const tokenStatus = await tokenResponse.json(); - - if (tokenStatus.needsRefresh && tokenStatus.valid) { - console.log('Token needs refresh, refreshing before profile check...'); - const refreshSuccess = await refreshToken(); - if (refreshSuccess && !isRetry) { - await checkAuthStatus(true); - } - return; - } - - if (!tokenStatus.valid) { - console.log('Token expired, attempting refresh...'); - const refreshSuccess = await refreshToken(); - if (refreshSuccess && !isRetry) { - await checkAuthStatus(true); - } - return; - } - } else if (tokenResponse.status === 401) { - console.log('No valid session found - user not authenticated'); - setAuthState({ - isAuthenticated: false, - user: null, - isLoading: false, - error: null, - }); - return; - } - - // 2) hämta profil - const response = await fetch(`${BACKEND_URL}/user-profile`, { - credentials: 'include', - }); - - if (response.ok) { - const user = await response.json(); - setAuthState({ - isAuthenticated: true, - user, - isLoading: false, - error: null, - }); - } else if (response.status === 401 && !isRetry) { - console.log('Token expired, attempting refresh...'); - const refreshSuccess = await refreshToken(); - if (refreshSuccess) { - await checkAuthStatus(true); - } - } else { - setAuthState({ - isAuthenticated: false, - user: null, - isLoading: false, - error: null, - }); - } - } catch (error) { - console.error('Error checking auth status:', error); - setAuthState({ - isAuthenticated: false, - user: null, - isLoading: false, - error: 'Failed to check authentication status', - }); - } - }, [refreshToken, setMockAuthenticated]); - - // Check authentication status on mount - useEffect(() => { - if (!autoCheck) { - setAuthState(prev => ({ ...prev, isLoading: false })); - return; - } - - if (USE_MOCK) { - // Direkt inloggad i mockläge - setMockAuthenticated(); - return; - } - - checkAuthStatus(); - - // Proaktiv refresh var 5:e minut (ej i mock) - const interval = setInterval(() => { - checkTokenStatus(); - }, 5 * 60 * 1000); - - return () => clearInterval(interval); - }, [checkAuthStatus, checkTokenStatus, autoCheck, setMockAuthenticated]); - - const login = useCallback(() => { - if (USE_MOCK) { - // Sätt inloggat och gå vidare lokalt - setMockAuthenticated(); - // välj den route som passar din app bäst - window.location.href = '/dashboard'; - return; - } - window.location.href = `${BACKEND_URL}/login`; - }, [setMockAuthenticated]); - - const logout = useCallback(async () => { - if (USE_MOCK) { - setAuthState({ - isAuthenticated: false, - user: null, - isLoading: false, - error: null, - }); - window.location.href = '/login'; - return; - } - - try { - const response = await fetch(`${BACKEND_URL}/logout`, { - credentials: 'include', - }); - - if (response.ok) { - setAuthState({ - isAuthenticated: false, - user: null, - isLoading: false, - error: null, - }); - } - } catch (error) { - console.error('Error during logout:', error); - setAuthState(prev => ({ ...prev, error: 'Failed to logout' })); - } - }, []); - - // Handle OAuth callback - const handleOAuthCallback = useCallback(async () => { - if (USE_MOCK) { - setMockAuthenticated(); - return; - } - - const urlParams = new URLSearchParams(window.location.search); - const error = urlParams.get('error'); - - if (error) { - setAuthState(prev => ({ ...prev, error })); - return; - } - - await checkAuthStatus(); - }, [checkAuthStatus, setMockAuthenticated]); - - // Listen for OAuth callback - useEffect(() => { - if (USE_MOCK) return; // inget callbackflöde i mock - - const urlParams = new URLSearchParams(window.location.search); - if (urlParams.has('error') || window.location.pathname === '/dashboard') { - handleOAuthCallback(); - } - }, [handleOAuthCallback]); - - return { - ...authState, - login, - logout, - refreshToken, - checkAuthStatus, - }; -}; diff --git a/frontend/src/pages/Dashboard.tsx b/frontend/src/pages/Dashboard.tsx deleted file mode 100644 index 7e735aab56..0000000000 --- a/frontend/src/pages/Dashboard.tsx +++ /dev/null @@ -1,132 +0,0 @@ -import React from "react" -import { useAuth } from "../hooks/useAuth" -import { Button } from "../ui/Button" -import { Card, CardHeader, CardContent } from "../ui/Card" -import { DotPattern } from "../ui/DotPattern" - -export const Dashboard: React.FC = () => { - const { user, logout, isLoading } = useAuth() - - if (isLoading) { - return ( -
-
-
-

Loading your profile...

-
-
- ) - } - - if (!user) { - return ( -
-
-

Not authenticated

- -
-
- ) - } - - return ( -
- {/* Background Pattern */} - - - {/* Gradient Overlay */} -
- - {/* Main Content */} -
- {/* Header */} -
-
-

Welcome back, {user.display_name}!

-

Ready to play Hitster?

-
- -
- - {/* User Profile Card */} - - -

Your Profile

-
- -
- {user.images && user.images[0] ? ( - Profile - ) : ( -
- 🎵 -
- )} -
-

{user.display_name}

-

{user.email}

-
-
-
-
- - {/* Game Options */} -
- - -

Quick Play

-
- -

- Start a quick game with random questions -

- -
-
- - - -

Custom Game

-
- -

- Create a custom game with specific settings -

- -
-
- - - -

Leaderboard

-
- -

- View your game history and scores -

- -
-
-
- - {/* Recent Activity */} - - -

Recent Activity

-
- -

No recent games yet. Start playing to see your activity!

-
-
-
-
- ) -} - -export default Dashboard \ No newline at end of file diff --git a/frontend/src/pages/DesignSystem.tsx b/frontend/src/pages/DesignSystem.tsx new file mode 100644 index 0000000000..2560816c0a --- /dev/null +++ b/frontend/src/pages/DesignSystem.tsx @@ -0,0 +1,135 @@ +// src/pages/DesignSystem.tsx +import { useState } from "react"; +import { + Button, + Card, + CardHeader, + CardContent, + Heading, + DotPattern, +} from "../ui"; +import { Link } from "react-router-dom"; +import BanganzaIntro from "../components/BanganzaIntro"; + +export const DesignSystem = () => { + const [introDone, setIntroDone] = useState(false); + + return ( +
+ {!introDone && setIntroDone(true)} />} + +
+
+
+ + DESIGN SYSTEM + +

+ A comprehensive design system built with our brand colors and Zen + Kaku Gothic New typography. +

+
+ + + + +
+
+ +
+ Component Examples +
+ + + + + + INFO BLOCK + + + + + + + + + + MORE INFO + + + + + + + + + + EVEN MORE + + + + + + + + + + SO MUCH INFO + + + + +
+
+ +
+ Button Variants +
+ + + + +
+
+ +
+ Typography Scale +
+ Heading 1 - Display + Heading 2 - Page Title + Heading 3 - Section + Heading 4 - Subsection + Heading 5 - Component + Heading 6 - Label +

+ Body text - Regular paragraph content +

+

+ Small text - Secondary information +

+
+
+
+
+
+ ); +}; diff --git a/frontend/src/pages/Home.tsx b/frontend/src/pages/Home.tsx index e2e3bdf9ba..aef4a29f4e 100644 --- a/frontend/src/pages/Home.tsx +++ b/frontend/src/pages/Home.tsx @@ -1,133 +1,63 @@ -import { useState } from "react"; -import { - Button, - Card, - CardHeader, - CardContent, - Heading, - DotPattern, -} from "../ui"; +import { useEffect, useState } from "react"; import { Link } from "react-router-dom"; +import { Button, Heading } from "../ui"; import BanganzaIntro from "../components/BanganzaIntro"; export const Home = () => { const [introDone, setIntroDone] = useState(false); + const [ready, setReady] = useState(false); + + useEffect(() => { + const t = setTimeout(() => setReady(true), 250); + return () => clearTimeout(t); + }, []); return ( -
+
{!introDone && setIntroDone(true)} />}
-
-
- - DESIGN SYSTEM - -

- A comprehensive design system built with our brand colors and Zen - Kaku Gothic New typography. -

-
- - - - -
-
- -
- Component Examples -
- - - - - - INFO BLOCK - - - - - - - - - - MORE INFO - - - - - - - - - - EVEN MORE - - - - - - - - - - SO MUCH INFO - - - - -
-
+
+
+
+
+
-
- Button Variants -
- - - - -
-
- -
- Typography Scale -
- Heading 1 - Display - Heading 2 - Page Title - Heading 3 - Section - Heading 4 - Subsection - Heading 5 - Component - Heading 6 - Label -

- Body text - Regular paragraph content -

-

- Small text - Secondary information +

+
+

+ WHEN THE BANGERS ARE TOO GOOD… YOU JUST NEED TO

+ + BANGANZA + + +
+ + + +
-
+
); diff --git a/frontend/src/pages/Login.tsx b/frontend/src/pages/Login.tsx deleted file mode 100644 index 96462a3be7..0000000000 --- a/frontend/src/pages/Login.tsx +++ /dev/null @@ -1,29 +0,0 @@ -"use client" - -import type React from "react" -import { LoginForm } from "../components/LoginForm" -import { DotPattern } from "../ui/DotPattern" - -export const Login: React.FC = () => { - return ( -
- {/* Background Pattern */} - - - {/* Gradient Overlay */} -
- - {/* Main Content */} -
- -
- - {/* Decorative Elements */} -
-
-
-
- ) -} - -export default Login diff --git a/frontend/src/pages/OAuthCallback.tsx b/frontend/src/pages/OAuthCallback.tsx deleted file mode 100644 index 375dd4eb54..0000000000 --- a/frontend/src/pages/OAuthCallback.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import React, { useEffect } from 'react'; -import { useNavigate } from 'react-router-dom'; -import { useAuth } from '../hooks/useAuth'; - -export const OAuthCallback: React.FC = () => { - const navigate = useNavigate(); - const { checkAuthStatus, error } = useAuth(); - - useEffect(() => { - const handleCallback = async () => { - try { - // Check if there's an error in the URL - const urlParams = new URLSearchParams(window.location.search); - const errorParam = urlParams.get('error'); - const successParam = urlParams.get('success'); - - if (errorParam) { - console.error('OAuth error:', errorParam); - navigate('/login?error=' + encodeURIComponent(errorParam)); - return; - } - - if (successParam === 'true') { - console.log('OAuth successful, checking authentication status...'); - // Wait a moment for the backend session to be established - await new Promise(resolve => setTimeout(resolve, 1000)); - - // Check authentication status - await checkAuthStatus(); - - // Redirect to dashboard after successful authentication - navigate('/dashboard'); - } else { - console.log('No success parameter, checking auth status directly...'); - // Check authentication status - await checkAuthStatus(); - - // Redirect to dashboard after successful authentication - navigate('/dashboard'); - } - } catch (err) { - console.error('Error handling OAuth callback:', err); - navigate('/login?error=authentication_failed'); - } - }; - - handleCallback(); - }, [checkAuthStatus, navigate]); - - return ( -
-
-
-

Completing authentication...

- {error && ( -

{error}

- )} -
-
- ); -}; - -export default OAuthCallback; \ No newline at end of file diff --git a/frontend/src/services/spotifyApi.ts b/frontend/src/services/spotifyApi.ts deleted file mode 100644 index 2c70232635..0000000000 --- a/frontend/src/services/spotifyApi.ts +++ /dev/null @@ -1,298 +0,0 @@ -import { config } from '../config/environment'; -import { mockBackendTracks } from './spotifyMock'; // backend-formatet du visade -import { toTrackCard, type TrackCard } from './normalize'; // mapper till UI-formatet - -const useMock = import.meta.env.VITE_USE_SPOTIFY_MOCK === '1'; - -// Spotify API base URL (sparas om du behöver senare) -const SPOTIFY_API_BASE = 'https://api.spotify.com/v1'; - -// Interface for playback request -interface PlaybackRequest { - trackId?: string; - contextUri?: string; - uris?: string[]; - deviceId?: string; - positionMs?: number; - offset?: { - position?: number; - uri?: string; - }; -} - -// Interface for device information -interface Device { - id: string; - name: string; - type: string; - is_active: boolean; - is_private_session: boolean; - is_restricted: boolean; -} - -// Interface for playback state -interface PlaybackState { - is_playing: boolean; - progress_ms: number; - item: { - id: string; - name: string; - artists: Array<{ name: string }>; - album: { name: string }; - } | null; - device: Device; -} - -/* --------------------------- - Mock helpers (lokala) ----------------------------- */ -const mockDevice: Device = { - id: 'mock-device-1', - name: 'Mock Web Player', - type: 'Computer', - is_active: true, - is_private_session: false, - is_restricted: false, -}; - -const first = mockBackendTracks[0]; -const mockPlaybackState: PlaybackState = { - is_playing: false, - progress_ms: 0, - item: first - ? { - id: first.trackId, - name: first.trackTitle, - artists: [{ name: first.trackArtist }], - album: { name: 'Mock Album' }, - } - : null, - device: mockDevice, -}; - -/* --------------------------- - High-level data getters ----------------------------- */ - -export async function getUserProfile() { - if (useMock) { - return { id: 'dev', display_name: 'Mock User' }; - } - const r = await fetch(`${config.backendUrl}/user-profile`, { credentials: 'include' }); - if (!r.ok) throw new Error(`Failed to fetch user profile (${r.status})`); - return await r.json(); -} - -export async function getUserTracks(): Promise { - if (useMock) { - // backend -> UI - return mockBackendTracks.map(toTrackCard); - } - const r = await fetch(`${config.backendUrl}/tracks`, { credentials: 'include' }); - if (!r.ok) throw new Error(`Failed to fetch user tracks (${r.status})`); - const data = await r.json(); // BackendTrack[] - return (data as any[]).map(toTrackCard); -} - -/* --------------------------- - Playback controls ----------------------------- */ - -/** - * Start or resume playback on the user's active device - */ -export async function startPlayback(request: PlaybackRequest): Promise { - if (useMock) { - console.info('[MOCK] startPlayback', request); - return true; - } - try { - const response = await fetch(`${config.backendUrl}/spotify/play`, { - method: 'PUT', - headers: { 'Content-Type': 'application/json' }, - credentials: 'include', - body: JSON.stringify(request), - }); - - if (!response.ok) { - const error = await safeJson(response); - throw new Error((error as any)?.error || 'Failed to start playback'); - } - return true; - } catch (error) { - console.error('Error starting playback:', error); - throw error; - } -} - -/** - * Pause playback on the user's active device - */ -export async function pausePlayback(deviceId?: string): Promise { - if (useMock) { - console.info('[MOCK] pausePlayback', { deviceId }); - return true; - } - try { - const response = await fetch(`${config.backendUrl}/spotify/pause`, { - method: 'PUT', - headers: { 'Content-Type': 'application/json' }, - credentials: 'include', - body: JSON.stringify({ deviceId }), - }); - - if (!response.ok) { - const error = await safeJson(response); - throw new Error((error as any)?.error || 'Failed to pause playback'); - } - return true; - } catch (error) { - console.error('Error pausing playback:', error); - throw error; - } -} - -/** - * Skip to next track - */ -export async function skipToNext(deviceId?: string): Promise { - if (useMock) { - console.info('[MOCK] skipToNext', { deviceId }); - return true; - } - try { - const response = await fetch(`${config.backendUrl}/spotify/next`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - credentials: 'include', - body: JSON.stringify({ deviceId }), - }); - - if (!response.ok) { - const error = await safeJson(response); - throw new Error((error as any)?.error || 'Failed to skip to next track'); - } - return true; - } catch (error) { - console.error('Error skipping to next track:', error); - throw error; - } -} - -/** - * Skip to previous track - */ -export async function skipToPrevious(deviceId?: string): Promise { - if (useMock) { - console.info('[MOCK] skipToPrevious', { deviceId }); - return true; - } - try { - const response = await fetch(`${config.backendUrl}/spotify/previous`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - credentials: 'include', - body: JSON.stringify({ deviceId }), - }); - - if (!response.ok) { - const error = await safeJson(response); - throw new Error((error as any)?.error || 'Failed to skip to previous track'); - } - return true; - } catch (error) { - console.error('Error skipping to previous track:', error); - throw error; - } -} - -/** - * Get available devices - */ -export async function getAvailableDevices(): Promise { - if (useMock) { - return [mockDevice]; - } - try { - const response = await fetch(`${config.backendUrl}/spotify/devices`, { - credentials: 'include', - }); - - if (!response.ok) { - const error = await safeJson(response); - throw new Error((error as any)?.error || 'Failed to get devices'); - } - - const data = await response.json(); - return data.devices || []; - } catch (error) { - console.error('Error getting devices:', error); - throw error; - } -} - -/** - * Get current playback state - */ -export async function getCurrentPlaybackState(): Promise { - if (useMock) { - return mockPlaybackState; - } - try { - const response = await fetch(`${config.backendUrl}/spotify/playback-state`, { - credentials: 'include', - }); - - if (!response.ok) { - if (response.status === 204) { - return null; - } - const error = await safeJson(response); - throw new Error((error as any)?.error || 'Failed to get playback state'); - } - - return await response.json(); - } catch (error) { - console.error('Error getting playback state:', error); - throw error; - } -} - -/** - * Transfer playback to a specific device - */ -export async function transferPlayback(deviceId: string, play: boolean = false): Promise { - if (useMock) { - console.info('[MOCK] transferPlayback', { deviceId, play }); - return true; - } - try { - const response = await fetch(`${config.backendUrl}/spotify/transfer`, { - method: 'PUT', - headers: { 'Content-Type': 'application/json' }, - credentials: 'include', - body: JSON.stringify({ deviceId, play }), - }); - - if (!response.ok) { - const error = await safeJson(response); - throw new Error((error as any)?.error || 'Failed to transfer playback'); - } - - return true; - } catch (error) { - console.error('Error transferring playback:', error); - throw error; - } -} - -/* --------------------------- - utils ----------------------------- */ -async function safeJson(r: Response) { - try { - return await r.json(); - } catch { - return {}; - } -} From 0fe4e5453b59a736f649eb093312c7ab70fabc58 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Mon, 18 Aug 2025 14:56:43 +0200 Subject: [PATCH 044/127] Using own data in timeline --- frontend/src/components/GameBoard.tsx | 242 ++++++++++------ frontend/src/components/SpotifyPlayer.tsx | 335 ---------------------- frontend/src/hooks/useAudio.ts | 13 - frontend/src/services/animalsMock.ts | 257 +++++++++++++++++ frontend/src/services/normalize.ts | 7 +- frontend/src/services/spotifyMock.ts | 261 +++++++++++++++-- frontend/src/types/game.ts | 18 ++ 7 files changed, 675 insertions(+), 458 deletions(-) delete mode 100644 frontend/src/components/SpotifyPlayer.tsx delete mode 100644 frontend/src/hooks/useAudio.ts create mode 100644 frontend/src/services/animalsMock.ts diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index c55a6b8a81..dea80a1381 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -1,4 +1,4 @@ -import React from 'react' +import React from "react"; import { DndContext, PointerSensor, @@ -9,51 +9,64 @@ import { DragOverlay, useDroppable, closestCenter, -} from '@dnd-kit/core' -import { restrictToWindowEdges } from '@dnd-kit/modifiers' +} from "@dnd-kit/core"; +import { restrictToWindowEdges } from "@dnd-kit/modifiers"; -import { useGame } from '../store/game' -import { Heading, Button } from '../ui' -import { ErrorMessage } from '../ui/ErrorMessage' -import { TimeLineCard } from './TimeLineCard' -import { CurrentCard, CurrentCardPreview } from './CurrentCard' +import { useGame } from "../store/game"; +import { Heading, Button } from "../ui"; +import { ErrorMessage } from "../ui/ErrorMessage"; +import { TimeLineCard } from "./TimeLineCard"; +import { CurrentCard, CurrentCardPreview } from "./CurrentCard"; // helpers som tål både {title,artist,year} och {trackTitle,trackArtist,releaseYear} -const Y = (c: any) => c?.year ?? c?.releaseYear -const T = (c: any) => c?.title ?? c?.trackTitle -const A = (c: any) => c?.artist ?? c?.trackArtist +const Y = (c: any) => c?.year ?? c?.releaseYear; +const T = (c: any) => c?.title ?? c?.trackTitle; +const A = (c: any) => c?.artist ?? c?.trackArtist; -const TeamPill: React.FC<{ label: string; active?: boolean; score: number }> = ({ label, active, score }) => ( +const TeamPill: React.FC<{ + label: string; + active?: boolean; + score: number; +}> = ({ label, active, score }) => ( {label} - + {score} -) +); // dropp-slot const DropSlot: React.FC<{ id: string; show: boolean }> = ({ id, show }) => { - const { setNodeRef, isOver } = useDroppable({ id }) - if (!show) return null + const { setNodeRef, isOver } = useDroppable({ id }); + if (!show) return null; return (
- ) -} + ); +}; export const GameBoard: React.FC = () => { const { @@ -71,76 +84,94 @@ export const GameBoard: React.FC = () => { error, clearError, pendingIndex, - lastPlacementCorrect - } = useGame() + lastPlacementCorrect, + } = useGame(); - const team = teams[currentTeamIndex] + const team = teams[currentTeamIndex]; - const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 6 } })) - const [isDragging, setIsDragging] = React.useState(false) + const sensors = useSensors( + useSensor(PointerSensor, { activationConstraint: { distance: 6 } }) + ); + const [isDragging, setIsDragging] = React.useState(false); const onDragStart = (e: DragStartEvent) => { - if (e.active.id === 'current-card') setIsDragging(true) - } + if (e.active.id === "current-card") setIsDragging(true); + }; // När man släpper över en slot: markera pending (flytta inte currentCard till timeline ännu) const onDragEnd = (e: DragEndEvent) => { - setIsDragging(false) - const overId = e.over?.id as string | undefined - if (!overId || !overId.startsWith('slot-')) return - const n = Number(overId.slice(5)) - if (!Number.isFinite(n)) return - if (!currentCard) return - placeAt(n) // sätter pendingIndex + phase: 'PLACED_PENDING' - } + setIsDragging(false); + const overId = e.over?.id as string | undefined; + if (!overId || !overId.startsWith("slot-")) return; + const n = Number(overId.slice(5)); + if (!Number.isFinite(n)) return; + if (!currentCard) return; + placeAt(n); // sätter pendingIndex + phase: 'PLACED_PENDING' + }; // timeline: rendera vita kortet *inne i* timeline på pendingIndex, annars reveal:ade kort const renderTimeline = () => { -const base = (phase === 'DRAWN' || phase === 'PLACED_PENDING' || phase === 'CHOICE_AFTER_CORRECT') - ? useGame.getState().turnTimeline - : team.timeline - - const showSlots = phase === 'DRAWN' || phase === 'PLACED_PENDING' + const base = + phase === "DRAWN" || + phase === "PLACED_PENDING" || + phase === "CHOICE_AFTER_CORRECT" + ? useGame.getState().turnTimeline + : team.timeline; + + const showSlots = phase === "DRAWN" || phase === "PLACED_PENDING"; - const children: React.ReactNode[] = [] - children.push() + const children: React.ReactNode[] = []; + children.push(); for (let i = 0; i < base.length; i++) { - if (phase === 'PLACED_PENDING' && pendingIndex === i && currentCard) { + if (phase === "PLACED_PENDING" && pendingIndex === i && currentCard) { children.push(
- ) + ); } - const c = base[i] - - const isLastPlaced = lastPlacementCorrect !== null && pendingIndex !== null && i === pendingIndex + const c = base[i]; + const isLastPlaced = + lastPlacementCorrect !== null && + pendingIndex !== null && + i === pendingIndex; children.push( -
+
- ) + ); - children.push() + children.push( + + ); } // pending sist - if (phase === 'PLACED_PENDING' && pendingIndex === base.length && currentCard) { - children.splice(children.length - 1, 0, + if ( + phase === "PLACED_PENDING" && + pendingIndex === base.length && + currentCard + ) { + children.splice( + children.length - 1, + 0,
- ) + ); } return ( @@ -149,49 +180,70 @@ const base = (phase === 'DRAWN' || phase === 'PLACED_PENDING' || phase === 'CHOI {children}
{lastPlacementCorrect === true && ( -
- ✅ Yes! Correct! -
-)} -{lastPlacementCorrect === false && ( -
- ❌ Oh no, wrong answer! Your turn is over -
-)} - {phase === 'PLACED_PENDING' && ( +
+ ✅ Yes! Correct! +
+ )} + {lastPlacementCorrect === false && ( +
+ ❌ Oh no, wrong answer! Your turn is over +
+ )} + {phase === "PLACED_PENDING" && (
- +
)}
- ) - } + ); + }; return (
{/* Header */}
- Game Mode + + Game Mode +
- - + +
{/* Errors / loading */} - {loading &&
Loading tracks…
} + {loading && ( +
Loading items…
+ )} {error && (
- +
)} {/* Start-knapp */} - {phase === 'SETUP' && } + {phase === "SETUP" && } {/* Bräde */} - {phase !== 'SETUP' && ( + {phase !== "SETUP" && ( <> - Timeline + + Timeline + {renderTimeline()} {/* Det vita kortet visas UTANFÖR tidslinjen bara när vi är i DRAWN */} - {phase === 'DRAWN' && currentCard && ( + {phase === "DRAWN" && currentCard && (
)} - {isDragging && currentCard ? : null} + {isDragging && currentCard ? ( + + ) : null}
{/* Kontroller efter rätt svar */}
- {phase === 'TURN_START' && } + {phase === "TURN_START" && ( + + )} - {phase === 'DRAWN' && ( + {phase === "DRAWN" && (
Drag the card and drop it between two cards in the timeline.
)} - {phase === 'CHOICE_AFTER_CORRECT' && ( + {phase === "CHOICE_AFTER_CORRECT" && ( <> - - + + )}
)}
- ) -} + ); +}; diff --git a/frontend/src/components/SpotifyPlayer.tsx b/frontend/src/components/SpotifyPlayer.tsx deleted file mode 100644 index f46e143fce..0000000000 --- a/frontend/src/components/SpotifyPlayer.tsx +++ /dev/null @@ -1,335 +0,0 @@ -import React, { useState, useEffect } from "react"; -import { - startPlayback, - pausePlayback, - skipToNext, - skipToPrevious, - getAvailableDevices, - getCurrentPlaybackState, - transferPlayback, -} from "../services/spotifyApi"; -import { Button } from "../ui/Button"; - -interface Device { - id: string; - name: string; - type: string; - is_active: boolean; -} - -interface PlaybackState { - is_playing: boolean; - progress_ms: number; - item: { - id: string; - name: string; - artists: Array<{ name: string }>; - album: { name: string }; - } | null; - device: Device; -} - -export const SpotifyPlayer: React.FC = () => { - const [devices, setDevices] = useState([]); - const [selectedDevice, setSelectedDevice] = useState(""); - const [playbackState, setPlaybackState] = useState( - null - ); - const [isLoading, setIsLoading] = useState(false); - const [error, setError] = useState(null); - - // Load available devices on component mount - useEffect(() => { - loadDevices(); - loadPlaybackState(); - - // Poll for playback state updates - const interval = setInterval(loadPlaybackState, 5000); - return () => clearInterval(interval); - }, []); - - const loadDevices = async () => { - try { - const deviceList = await getAvailableDevices(); - setDevices(deviceList); - - // Auto-select active device or first available device - const activeDevice = deviceList.find((d) => d.is_active); - if (activeDevice) { - setSelectedDevice(activeDevice.id); - } else if (deviceList.length > 0) { - setSelectedDevice(deviceList[0].id); - } - } catch (err) { - setError("Failed to load devices"); - console.error("Error loading devices:", err); - } - }; - - const loadPlaybackState = async () => { - try { - const state = await getCurrentPlaybackState(); - setPlaybackState(state); - } catch (err) { - // Don't show error for playback state, just log it - console.error("Error loading playback state:", err); - } - }; - - const handlePlay = async () => { - if (!selectedDevice) { - setError("Please select a device first"); - return; - } - - setIsLoading(true); - setError(null); - - try { - // Example: Play a specific track (you can modify this) - await startPlayback({ - trackId: "4iV5W9uYEdYUVa79Axb7Rh", // Example track ID - deviceId: selectedDevice, - }); - - // Refresh playback state - await loadPlaybackState(); - } catch (err) { - setError(err instanceof Error ? err.message : "Failed to start playback"); - } finally { - setIsLoading(false); - } - }; - - const handlePause = async () => { - if (!selectedDevice) { - setError("Please select a device first"); - return; - } - - setIsLoading(true); - setError(null); - - try { - await pausePlayback(selectedDevice); - await loadPlaybackState(); - } catch (err) { - setError(err instanceof Error ? err.message : "Failed to pause playback"); - } finally { - setIsLoading(false); - } - }; - - const handleNext = async () => { - if (!selectedDevice) { - setError("Please select a device first"); - return; - } - - setIsLoading(true); - setError(null); - - try { - await skipToNext(selectedDevice); - await loadPlaybackState(); - } catch (err) { - setError( - err instanceof Error ? err.message : "Failed to skip to next track" - ); - } finally { - setIsLoading(false); - } - }; - - const handlePrevious = async () => { - if (!selectedDevice) { - setError("Please select a device first"); - return; - } - - setIsLoading(true); - setError(null); - - try { - await skipToPrevious(selectedDevice); - await loadPlaybackState(); - } catch (err) { - setError( - err instanceof Error ? err.message : "Failed to skip to previous track" - ); - } finally { - setIsLoading(false); - } - }; - - const handleDeviceChange = async (deviceId: string) => { - setSelectedDevice(deviceId); - - try { - // Transfer playback to the selected device - await transferPlayback(deviceId, false); - await loadPlaybackState(); - } catch (err) { - console.error("Error transferring playback:", err); - // Don't show error for device transfer - } - }; - - const handlePlayContext = async (contextUri: string) => { - if (!selectedDevice) { - setError("Please select a device first"); - return; - } - - setIsLoading(true); - setError(null); - - try { - await startPlayback({ - contextUri, - deviceId: selectedDevice, - }); - - await loadPlaybackState(); - } catch (err) { - setError(err instanceof Error ? err.message : "Failed to start playback"); - } finally { - setIsLoading(false); - } - }; - - return ( -
-

Spotify Player

- - {/* Device Selection */} -
- - -
- - {/* Current Track Info */} - {playbackState?.item && ( -
-

Now Playing

-

{playbackState.item.name}

-

- {playbackState.item.artists[0]?.name} -

-

- {playbackState.item.album.name} -

-
- )} - - {/* Playback Controls */} -
- - - {playbackState?.is_playing ? ( - - ) : ( - - )} - - -
- - {/* Quick Play Examples */} -
-

- Quick Play Examples -

-
- - -
-
- - {/* Error Display */} - {error && ( -
-

{error}

-
- )} - - {/* Loading State */} - {isLoading && ( -
Loading...
- )} - - {/* Refresh Button */} - -
- ); -}; diff --git a/frontend/src/hooks/useAudio.ts b/frontend/src/hooks/useAudio.ts deleted file mode 100644 index 2d18146d08..0000000000 --- a/frontend/src/hooks/useAudio.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { useEffect } from "react" - -export const useAudio = (url?: string) => { - useEffect(() => { - if (!url) return - const a = new Audio(url) - const play = async () => { - try { await a.play() } catch { /* tyst fallback */ } - } - play() - return () => { a.pause(); a.src = "" } - }, [url]) -} diff --git a/frontend/src/services/animalsMock.ts b/frontend/src/services/animalsMock.ts new file mode 100644 index 0000000000..bf5c5f3ecf --- /dev/null +++ b/frontend/src/services/animalsMock.ts @@ -0,0 +1,257 @@ +import type { GameItem, GameCategory } from "../types/game"; + +export const animalsCategory: GameCategory = { + id: "animals.weight", + question: "Which animal weighs the most?", + unit: "kg", + source: { + name: "Wikipedia (largest animals, species pages)", + url: "https://en.wikipedia.org/wiki/List_of_largest_organisms", + }, +}; + +export const animalsItems: GameItem[] = [ + { + id: "animal-1", + name: "Blue Whale", + label: "Weight 150000 kg", + value: 150000, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-2", + name: "Sperm Whale", + label: "Weight 57000 kg", + value: 57000, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-3", + name: "Whale Shark", + label: "Weight 19000 kg", + value: 19000, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-4", + name: "Orca", + label: "Weight 6000 kg", + value: 6000, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-5", + name: "African Elephant", + label: "Weight 6000 kg", + value: 6000, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-6", + name: "Hippopotamus", + label: "Weight 1500 kg", + value: 1500, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-7", + name: "Giraffe", + label: "Weight 1200 kg", + value: 1200, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-8", + name: "Great White Shark", + label: "Weight 1100 kg", + value: 1100, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-9", + name: "Bison", + label: "Weight 900 kg", + value: 900, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-10", + name: "Cow", + label: "Weight 750 kg", + value: 750, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-11", + name: "Moose", + label: "Weight 700 kg", + value: 700, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-12", + name: "Polar Bear", + label: "Weight 650 kg", + value: 650, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-13", + name: "Horse", + label: "Weight 600 kg", + value: 600, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-14", + name: "Grizzly Bear", + label: "Weight 360 kg", + value: 360, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-15", + name: "Alligator", + label: "Weight 230 kg", + value: 230, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-16", + name: "Tiger", + label: "Weight 220 kg", + value: 220, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-17", + name: "Sea Lion", + label: "Weight 200 kg", + value: 200, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-18", + name: "Lion", + label: "Weight 190 kg", + value: 190, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-19", + name: "Gorilla", + label: "Weight 160 kg", + value: 160, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-20", + name: "Ostrich", + label: "Weight 104 kg", + value: 104, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-21", + name: "Giant Panda", + label: "Weight 100 kg", + value: 100, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-22", + name: "Human", + label: "Weight 70 kg", + value: 70, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-23", + name: "Kangaroo", + label: "Weight 60 kg", + value: 60, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-24", + name: "Wolf", + label: "Weight 50 kg", + value: 50, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-25", + name: "Cheetah", + label: "Weight 35 kg", + value: 35, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-26", + name: "Swan", + label: "Weight 12 kg", + value: 12, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, + { + id: "animal-27", + name: "Chicken", + label: "Weight 1 kg", + value: 1, + unit: "kg", + categoryId: "animals.weight", + source: { name: "Wikipedia" }, + }, +]; diff --git a/frontend/src/services/normalize.ts b/frontend/src/services/normalize.ts index 5f5997ceb0..fe85b47ff1 100644 --- a/frontend/src/services/normalize.ts +++ b/frontend/src/services/normalize.ts @@ -1,4 +1,5 @@ -import type { TrackCard } from '../types/game'; +import type { GameItem } from "../types/game"; +import type { GameCategory } from "../types/game"; export interface BackendTrack { _id: string; @@ -12,7 +13,7 @@ export interface BackendTrack { } // Mappa backend -> ditt UI-format (TrackCard från types/game.ts) -export function toTrackCard(t: BackendTrack): TrackCard { +export function toTrackCard(t: BackendTrack): GameItem { return { _id: t._id, trackId: t.trackId, @@ -24,4 +25,4 @@ export function toTrackCard(t: BackendTrack): TrackCard { // previewUrl: (t as any).previewUrl ?? null, // imgUrl: (t as any).imgUrl ?? null, }; -} \ No newline at end of file +} diff --git a/frontend/src/services/spotifyMock.ts b/frontend/src/services/spotifyMock.ts index 1b99e0e3a1..a580a5061f 100644 --- a/frontend/src/services/spotifyMock.ts +++ b/frontend/src/services/spotifyMock.ts @@ -1,20 +1,247 @@ -import type { BackendTrack } from './normalize'; +import type { BackendTrack } from "./normalize"; export const mockBackendTracks: BackendTrack[] = [ - {"_id":"689c8f4a62b67bf973c4906b","trackId":"4gphxUgq0JSFv2BCLhNDiE","trackTitle":"Jailhouse Rock","trackArtist":"Elvis Presley","releaseYear":1958,"trackUrl":"https://open.spotify.com/track/4gphxUgq0JSFv2BCLhNDiE","__v":0}, - {"_id":"689c8f4a62b67bf973c4906c","trackId":"40riOy7x9W7GXjyGp4pjAv","trackTitle":"Hotel California - 2013 Remaster","trackArtist":"Eagles","releaseYear":1976,"trackUrl":"https://open.spotify.com/track/40riOy7x9W7GXjyGp4pjAv","__v":0}, - {"_id":"689c8f4a62b67bf973c4906d","trackId":"4u7EnebtmKWzUH433cf5Qv","trackTitle":"Bohemian Rhapsody - Remastered 2011","trackArtist":"Queen","releaseYear":1975,"trackUrl":"https://open.spotify.com/track/4u7EnebtmKWzUH433cf5Qv","__v":0}, - {"_id":"689c8f4a62b67bf973c4906e","trackId":"7iN1s7xHE4ifF5povM6A48","trackTitle":"Let It Be - Remastered 2009","trackArtist":"The Beatles","releaseYear":1970,"trackUrl":"https://open.spotify.com/track/7iN1s7xHE4ifF5povM6A48","__v":0}, - {"_id":"689c8f4a62b67bf973c4906f","trackId":"2PzU4IB8Dr6mxV3lHuaG34","trackTitle":"(I Can't Get No) Satisfaction - Mono","trackArtist":"The Rolling Stones","releaseYear":1965,"trackUrl":"https://open.spotify.com/track/2PzU4IB8Dr6mxV3lHuaG34","__v":0}, - {"_id":"689c8f4a62b67bf973c49070","trackId":"2374M0fQpWi3dLnB54qaLX","trackTitle":"Africa","trackArtist":"TOTO","releaseYear":1982,"trackUrl":"https://open.spotify.com/track/2374M0fQpWi3dLnB54qaLX","__v":0}, - {"_id":"689c8f4a62b67bf973c49071","trackId":"1QEEqeFIZktqIpPI4jSVSF","trackTitle":"More Than a Feeling","trackArtist":"Boston","releaseYear":1976,"trackUrl":"https://open.spotify.com/track/1QEEqeFIZktqIpPI4jSVSF","__v":0}, - {"_id":"689c8f4a62b67bf973c49072","trackId":"3mRM4NM8iO7UBqrSigCQFH","trackTitle":"Stayin' Alive - From \"Saturday Night Fever\" Soundtrack","trackArtist":"Bee Gees","releaseYear":1979,"trackUrl":"https://open.spotify.com/track/3mRM4NM8iO7UBqrSigCQFH","__v":0}, - {"_id":"689c8f4a62b67bf973c49073","trackId":"1f3yAtsJtY87CTmM8RLnxf","trackTitle":"Smells Like Teen Spirit","trackArtist":"Nirvana","releaseYear":1991,"trackUrl":"https://open.spotify.com/track/1f3yAtsJtY87CTmM8RLnxf","__v":0}, - {"_id":"689c8f4a62b67bf973c49074","trackId":"1JSTJqkT5qHq8MDJnJbRE1","trackTitle":"Every Breath You Take","trackArtist":"The Police","releaseYear":1983,"trackUrl":"https://open.spotify.com/track/1JSTJqkT5qHq8MDJnJbRE1","__v":0}, - {"_id":"689c8f4a62b67bf973c49075","trackId":"3SdTKo2uVsxFblQjpScoHy","trackTitle":"Stand By Me","trackArtist":"Ben E. King","releaseYear":1962,"trackUrl":"https://open.spotify.com/track/3SdTKo2uVsxFblQjpScoHy","__v":0}, - {"_id":"689c8f4a62b67bf973c49076","trackId":"3nvuPQTw2zuFAVuLsC9IYQ","trackTitle":"Nothing Compares 2 U","trackArtist":"Sinéad O'Connor","releaseYear":1990,"trackUrl":"https://open.spotify.com/track/3nvuPQTw2zuFAVuLsC9IYQ","__v":0}, - {"_id":"689c8f4a62b67bf973c49077","trackId":"7pKfPomDEeI4TPT6EOYjn9","trackTitle":"Imagine - Remastered 2010","trackArtist":"John Lennon","releaseYear":1971,"trackUrl":"https://open.spotify.com/track/7pKfPomDEeI4TPT6EOYjn9","__v":0}, - {"_id":"689c8f4a62b67bf973c49078","trackId":"23YjAY4tuIpUt4kvMkS75a","trackTitle":"I Hate Myself For Loving You","trackArtist":"Laura Bryna","releaseYear":2024,"trackUrl":"https://open.spotify.com/track/23YjAY4tuIpUt4kvMkS75a","__v":0}, - {"_id":"689c8f4a62b67bf973c49079","trackId":"07q0QVgO56EorrSGHC48y3","trackTitle":"I Was Made For Lovin' You","trackArtist":"KISS","releaseYear":1979,"trackUrl":"https://open.spotify.com/track/07q0QVgO56EorrSGHC48y3","__v":0}, - {"_id":"689c8f4a62b67bf973c4907a","trackId":"0hCB0YR03f6AmQaHbwWDe8","trackTitle":"Whole Lotta Love - 1990 Remaster","trackArtist":"Led Zeppelin","releaseYear":1969,"trackUrl":"https://open.spotify.com/track/0hCB0YR03f6AmQaHbwWDe8","__v":0} + { + _id: "a1", + trackId: "animal-1", + trackTitle: "Weight 150000 kg", + trackArtist: "Blue Whale", + releaseYear: 150000, + trackUrl: "", + __v: 0, + }, + { + _id: "a2", + trackId: "animal-2", + trackTitle: "Weight 6000 kg", + trackArtist: "African Elephant", + releaseYear: 6000, + trackUrl: "", + __v: 0, + }, + { + _id: "a3", + trackId: "animal-3", + trackTitle: "Weight 57000 kg", + trackArtist: "Sperm Whale", + releaseYear: 57000, + trackUrl: "", + __v: 0, + }, + { + _id: "a4", + trackId: "animal-4", + trackTitle: "Weight 19000 kg", + trackArtist: "Whale Shark", + releaseYear: 19000, + trackUrl: "", + __v: 0, + }, + { + _id: "a5", + trackId: "animal-5", + trackTitle: "Weight 6000 kg", + trackArtist: "Orca", + releaseYear: 6000, + trackUrl: "", + __v: 0, + }, + { + _id: "a6", + trackId: "animal-6", + trackTitle: "Weight 1500 kg", + trackArtist: "Hippopotamus", + releaseYear: 1500, + trackUrl: "", + __v: 0, + }, + { + _id: "a7", + trackId: "animal-7", + trackTitle: "Weight 1200 kg", + trackArtist: "Giraffe", + releaseYear: 1200, + trackUrl: "", + __v: 0, + }, + { + _id: "a8", + trackId: "animal-8", + trackTitle: "Weight 1100 kg", + trackArtist: "Great White Shark", + releaseYear: 1100, + trackUrl: "", + __v: 0, + }, + { + _id: "a9", + trackId: "animal-9", + trackTitle: "Weight 900 kg", + trackArtist: "Bison", + releaseYear: 900, + trackUrl: "", + __v: 0, + }, + { + _id: "a10", + trackId: "animal-10", + trackTitle: "Weight 750 kg", + trackArtist: "Cow", + releaseYear: 750, + trackUrl: "", + __v: 0, + }, + { + _id: "a11", + trackId: "animal-11", + trackTitle: "Weight 700 kg", + trackArtist: "Moose", + releaseYear: 700, + trackUrl: "", + __v: 0, + }, + { + _id: "a12", + trackId: "animal-12", + trackTitle: "Weight 650 kg", + trackArtist: "Polar Bear", + releaseYear: 650, + trackUrl: "", + __v: 0, + }, + { + _id: "a13", + trackId: "animal-13", + trackTitle: "Weight 600 kg", + trackArtist: "Horse", + releaseYear: 600, + trackUrl: "", + __v: 0, + }, + { + _id: "a14", + trackId: "animal-14", + trackTitle: "Weight 360 kg", + trackArtist: "Grizzly Bear", + releaseYear: 360, + trackUrl: "", + __v: 0, + }, + { + _id: "a15", + trackId: "animal-15", + trackTitle: "Weight 230 kg", + trackArtist: "Alligator", + releaseYear: 230, + trackUrl: "", + __v: 0, + }, + { + _id: "a16", + trackId: "animal-16", + trackTitle: "Weight 220 kg", + trackArtist: "Tiger", + releaseYear: 220, + trackUrl: "", + __v: 0, + }, + { + _id: "a17", + trackId: "animal-17", + trackTitle: "Weight 200 kg", + trackArtist: "Sea Lion", + releaseYear: 200, + trackUrl: "", + __v: 0, + }, + { + _id: "a18", + trackId: "animal-18", + trackTitle: "Weight 190 kg", + trackArtist: "Lion", + releaseYear: 190, + trackUrl: "", + __v: 0, + }, + { + _id: "a19", + trackId: "animal-19", + trackTitle: "Weight 160 kg", + trackArtist: "Gorilla", + releaseYear: 160, + trackUrl: "", + __v: 0, + }, + { + _id: "a20", + trackId: "animal-20", + trackTitle: "Weight 104 kg", + trackArtist: "Ostrich", + releaseYear: 104, + trackUrl: "", + __v: 0, + }, + { + _id: "a21", + trackId: "animal-21", + trackTitle: "Weight 100 kg", + trackArtist: "Giant Panda", + releaseYear: 100, + trackUrl: "", + __v: 0, + }, + { + _id: "a22", + trackId: "animal-22", + trackTitle: "Weight 70 kg", + trackArtist: "Human", + releaseYear: 70, + trackUrl: "", + __v: 0, + }, + { + _id: "a23", + trackId: "animal-23", + trackTitle: "Weight 60 kg", + trackArtist: "Kangaroo", + releaseYear: 60, + trackUrl: "", + __v: 0, + }, + { + _id: "a24", + trackId: "animal-24", + trackTitle: "Weight 50 kg", + trackArtist: "Wolf", + releaseYear: 50, + trackUrl: "", + __v: 0, + }, + { + _id: "a25", + trackId: "animal-25", + trackTitle: "Weight 35 kg", + trackArtist: "Cheetah", + releaseYear: 35, + trackUrl: "", + __v: 0, + }, + { + _id: "a26", + trackId: "animal-26", + trackTitle: "Weight 12 kg", + trackArtist: "Swan", + releaseYear: 12, + trackUrl: "", + __v: 0, + }, + { + _id: "a27", + trackId: "animal-27", + trackTitle: "Weight 1 kg", + trackArtist: "Chicken", + releaseYear: 1, + trackUrl: "", + __v: 0, + }, ]; diff --git a/frontend/src/types/game.ts b/frontend/src/types/game.ts index 35be93b940..efc427737a 100644 --- a/frontend/src/types/game.ts +++ b/frontend/src/types/game.ts @@ -1,3 +1,21 @@ +export type GameItem = { + id: string; // stable ID, ex. "animal-1" / "music-1" + name: string; // ex. "Blue Whale" / "Elvis Presley" + label?: string; // ex. "Weight 150000 kg" / "Jailhouse Rock" + value: number; // ex. 150000 / 1958 + unit?: string; // ex. "kg" / "year" + categoryId: string; // "animals.weight" / "music.releaseYear" + source?: { name: string; url?: string }; + meta?: Record; +}; + +export type GameCategory = { + id: string; + question: string; // "Which animal weighs the most?" + unit: string; + source?: { name: string; url?: string }; +}; + export type TrackCard = { _id: string; trackTitle: string; From ddd567c2082d68ca13e23ffa54afebbc28f7a842 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Mon, 18 Aug 2025 15:11:52 +0200 Subject: [PATCH 045/127] Using own data with no mockup data --- frontend/src/components/GameBoard.tsx | 4 +- frontend/src/services/api.ts | 10 -- frontend/src/services/normalize.ts | 28 --- frontend/src/services/spotifyMock.ts | 247 -------------------------- frontend/src/services/tracks.ts | 26 --- frontend/src/store/game.ts | 181 +++++++++---------- 6 files changed, 92 insertions(+), 404 deletions(-) delete mode 100644 frontend/src/services/api.ts delete mode 100644 frontend/src/services/normalize.ts delete mode 100644 frontend/src/services/spotifyMock.ts delete mode 100644 frontend/src/services/tracks.ts diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index dea80a1381..1996682fa3 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -59,9 +59,7 @@ const DropSlot: React.FC<{ id: string; show: boolean }> = ({ id, show }) => { ref={setNodeRef} className={[ "h-[180px] sm:h-80 w-6 sm:w-8 flex-shrink-0 rounded-lg transition-all", - isOver - ? "bg-primary/30 outline outline-2 outline-primary/50" - : "bg-transparent", + isOver ? "bg-primary/30 outline outline-primary/50" : "bg-transparent", ].join(" ")} aria-label="Drop here" /> diff --git a/frontend/src/services/api.ts b/frontend/src/services/api.ts deleted file mode 100644 index c767fc2c48..0000000000 --- a/frontend/src/services/api.ts +++ /dev/null @@ -1,10 +0,0 @@ -const BASE_URL = import.meta.env.VITE_API_URL ?? "http://localhost:3000" - -export async function apiGet(path: string, signal?: AbortSignal): Promise { - const res = await fetch(`${BASE_URL}${path}`, { signal, credentials: "include" }) - if (!res.ok) { - const text = await res.text().catch(() => "") - throw new Error(`GET ${path} failed: ${res.status} ${text}`) - } - return res.json() as Promise -} diff --git a/frontend/src/services/normalize.ts b/frontend/src/services/normalize.ts deleted file mode 100644 index fe85b47ff1..0000000000 --- a/frontend/src/services/normalize.ts +++ /dev/null @@ -1,28 +0,0 @@ -import type { GameItem } from "../types/game"; -import type { GameCategory } from "../types/game"; - -export interface BackendTrack { - _id: string; - trackId: string; - trackTitle: string; - trackArtist: string; - releaseYear: number; - trackUrl: string; - __v?: number; - // ev. framtida fält: previewUrl?: string; imgUrl?: string; -} - -// Mappa backend -> ditt UI-format (TrackCard från types/game.ts) -export function toTrackCard(t: BackendTrack): GameItem { - return { - _id: t._id, - trackId: t.trackId, - trackTitle: t.trackTitle, - trackArtist: t.trackArtist, - releaseYear: t.releaseYear, - trackUrl: t.trackUrl, - // Om TrackCard i game.ts har fler valfria fält (previewUrl/imgUrl etc), lägg dem här: - // previewUrl: (t as any).previewUrl ?? null, - // imgUrl: (t as any).imgUrl ?? null, - }; -} diff --git a/frontend/src/services/spotifyMock.ts b/frontend/src/services/spotifyMock.ts deleted file mode 100644 index a580a5061f..0000000000 --- a/frontend/src/services/spotifyMock.ts +++ /dev/null @@ -1,247 +0,0 @@ -import type { BackendTrack } from "./normalize"; - -export const mockBackendTracks: BackendTrack[] = [ - { - _id: "a1", - trackId: "animal-1", - trackTitle: "Weight 150000 kg", - trackArtist: "Blue Whale", - releaseYear: 150000, - trackUrl: "", - __v: 0, - }, - { - _id: "a2", - trackId: "animal-2", - trackTitle: "Weight 6000 kg", - trackArtist: "African Elephant", - releaseYear: 6000, - trackUrl: "", - __v: 0, - }, - { - _id: "a3", - trackId: "animal-3", - trackTitle: "Weight 57000 kg", - trackArtist: "Sperm Whale", - releaseYear: 57000, - trackUrl: "", - __v: 0, - }, - { - _id: "a4", - trackId: "animal-4", - trackTitle: "Weight 19000 kg", - trackArtist: "Whale Shark", - releaseYear: 19000, - trackUrl: "", - __v: 0, - }, - { - _id: "a5", - trackId: "animal-5", - trackTitle: "Weight 6000 kg", - trackArtist: "Orca", - releaseYear: 6000, - trackUrl: "", - __v: 0, - }, - { - _id: "a6", - trackId: "animal-6", - trackTitle: "Weight 1500 kg", - trackArtist: "Hippopotamus", - releaseYear: 1500, - trackUrl: "", - __v: 0, - }, - { - _id: "a7", - trackId: "animal-7", - trackTitle: "Weight 1200 kg", - trackArtist: "Giraffe", - releaseYear: 1200, - trackUrl: "", - __v: 0, - }, - { - _id: "a8", - trackId: "animal-8", - trackTitle: "Weight 1100 kg", - trackArtist: "Great White Shark", - releaseYear: 1100, - trackUrl: "", - __v: 0, - }, - { - _id: "a9", - trackId: "animal-9", - trackTitle: "Weight 900 kg", - trackArtist: "Bison", - releaseYear: 900, - trackUrl: "", - __v: 0, - }, - { - _id: "a10", - trackId: "animal-10", - trackTitle: "Weight 750 kg", - trackArtist: "Cow", - releaseYear: 750, - trackUrl: "", - __v: 0, - }, - { - _id: "a11", - trackId: "animal-11", - trackTitle: "Weight 700 kg", - trackArtist: "Moose", - releaseYear: 700, - trackUrl: "", - __v: 0, - }, - { - _id: "a12", - trackId: "animal-12", - trackTitle: "Weight 650 kg", - trackArtist: "Polar Bear", - releaseYear: 650, - trackUrl: "", - __v: 0, - }, - { - _id: "a13", - trackId: "animal-13", - trackTitle: "Weight 600 kg", - trackArtist: "Horse", - releaseYear: 600, - trackUrl: "", - __v: 0, - }, - { - _id: "a14", - trackId: "animal-14", - trackTitle: "Weight 360 kg", - trackArtist: "Grizzly Bear", - releaseYear: 360, - trackUrl: "", - __v: 0, - }, - { - _id: "a15", - trackId: "animal-15", - trackTitle: "Weight 230 kg", - trackArtist: "Alligator", - releaseYear: 230, - trackUrl: "", - __v: 0, - }, - { - _id: "a16", - trackId: "animal-16", - trackTitle: "Weight 220 kg", - trackArtist: "Tiger", - releaseYear: 220, - trackUrl: "", - __v: 0, - }, - { - _id: "a17", - trackId: "animal-17", - trackTitle: "Weight 200 kg", - trackArtist: "Sea Lion", - releaseYear: 200, - trackUrl: "", - __v: 0, - }, - { - _id: "a18", - trackId: "animal-18", - trackTitle: "Weight 190 kg", - trackArtist: "Lion", - releaseYear: 190, - trackUrl: "", - __v: 0, - }, - { - _id: "a19", - trackId: "animal-19", - trackTitle: "Weight 160 kg", - trackArtist: "Gorilla", - releaseYear: 160, - trackUrl: "", - __v: 0, - }, - { - _id: "a20", - trackId: "animal-20", - trackTitle: "Weight 104 kg", - trackArtist: "Ostrich", - releaseYear: 104, - trackUrl: "", - __v: 0, - }, - { - _id: "a21", - trackId: "animal-21", - trackTitle: "Weight 100 kg", - trackArtist: "Giant Panda", - releaseYear: 100, - trackUrl: "", - __v: 0, - }, - { - _id: "a22", - trackId: "animal-22", - trackTitle: "Weight 70 kg", - trackArtist: "Human", - releaseYear: 70, - trackUrl: "", - __v: 0, - }, - { - _id: "a23", - trackId: "animal-23", - trackTitle: "Weight 60 kg", - trackArtist: "Kangaroo", - releaseYear: 60, - trackUrl: "", - __v: 0, - }, - { - _id: "a24", - trackId: "animal-24", - trackTitle: "Weight 50 kg", - trackArtist: "Wolf", - releaseYear: 50, - trackUrl: "", - __v: 0, - }, - { - _id: "a25", - trackId: "animal-25", - trackTitle: "Weight 35 kg", - trackArtist: "Cheetah", - releaseYear: 35, - trackUrl: "", - __v: 0, - }, - { - _id: "a26", - trackId: "animal-26", - trackTitle: "Weight 12 kg", - trackArtist: "Swan", - releaseYear: 12, - trackUrl: "", - __v: 0, - }, - { - _id: "a27", - trackId: "animal-27", - trackTitle: "Weight 1 kg", - trackArtist: "Chicken", - releaseYear: 1, - trackUrl: "", - __v: 0, - }, -]; diff --git a/frontend/src/services/tracks.ts b/frontend/src/services/tracks.ts deleted file mode 100644 index d0f2120c97..0000000000 --- a/frontend/src/services/tracks.ts +++ /dev/null @@ -1,26 +0,0 @@ -import type { TrackCard } from '../types/game' -import { mockBackendTracks } from './spotifyMock' -import { shuffle } from '../lib/shuffle' - -export async function fetchTracks(limit = 100): Promise { - await new Promise(r => setTimeout(r, 150)) // liten delay - - const cards: TrackCard[] = mockBackendTracks.map(t => ({ - // backend-fält - _id: t._id, - trackId: t.trackId, - trackTitle: t.trackTitle, - trackArtist: t.trackArtist, - releaseYear: t.releaseYear, - trackUrl: t.trackUrl, - - // 🔽 alias till vad UI:t faktiskt läser - title: t.trackTitle, - artist: t.trackArtist, - year: t.releaseYear, - name: t.trackTitle, - })) as TrackCard[] - - const deck = shuffle(cards) - return deck.slice(0, Math.min(limit, deck.length)) -} diff --git a/frontend/src/store/game.ts b/frontend/src/store/game.ts index 3a746a8371..815c1db9ef 100644 --- a/frontend/src/store/game.ts +++ b/frontend/src/store/game.ts @@ -1,50 +1,66 @@ // src/store/game.ts -import { create } from "zustand" -import type { TrackCard, GameState } from "../types/game" -import { fetchTracks } from "../services/tracks" +import { create } from "zustand"; +import type { TrackCard, GameState } from "../types/game"; +import type { GameItem } from "../types/game"; +import { animalsItems } from "../services/animalsMock"; // ---------- helpers ---------- +const toTrackCard = (it: GameItem): TrackCard => + ({ + // behåll legacy-fält för nycklar i UI + _id: it.id, + trackId: it.id, + year: it.value, + artist: it.name, + title: it.label ?? it.name, + } as unknown as TrackCard); + const insertAt = (arr: TrackCard[], item: TrackCard, idx: number) => { - const copy = arr.slice() - copy.splice(idx, 0, item) - return copy -} -const Y = (c: any) => c?.year ?? c?.releaseYear -const isPlacementCorrect = (timeline: TrackCard[], card: TrackCard, i: number) => { - const y = Y(card) - const left = i - 1 >= 0 ? Y(timeline[i - 1]) : undefined - const right = i < timeline.length ? Y(timeline[i]) : undefined - return (left === undefined || y >= left) && (right === undefined || y <= right) -} + const copy = arr.slice(); + copy.splice(idx, 0, item); + return copy; +}; +const Y = (c: any) => c?.year ?? c?.releaseYear; +const isPlacementCorrect = ( + timeline: TrackCard[], + card: TrackCard, + i: number +) => { + const y = Y(card); + const left = i - 1 >= 0 ? Y(timeline[i - 1]) : undefined; + const right = i < timeline.length ? Y(timeline[i]) : undefined; + return ( + (left === undefined || y >= left) && (right === undefined || y <= right) + ); +}; const drawOne = (pool: TrackCard[]) => { - const i = Math.floor(Math.random() * pool.length) - return pool.splice(i, 1)[0] -} + const i = Math.floor(Math.random() * pool.length); + return pool.splice(i, 1)[0]; +}; // ---------- extra UI-state ---------- type UIState = { - loading: boolean - error: string | null - lastPlacementCorrect: boolean | null - pendingIndex: number | null - roundBaselineTimeline: TrackCard[] // lagets timeline vid rundans start - turnTimeline: TrackCard[] // temporär timeline under pågående runda -} + loading: boolean; + error: string | null; + lastPlacementCorrect: boolean | null; + pendingIndex: number | null; + roundBaselineTimeline: TrackCard[]; + turnTimeline: TrackCard[]; +}; // ---------- actions ---------- type Actions = { - clearError: () => void - startGame: () => Promise - startTurn: () => Promise - placeAt: (slotIndex: number) => void - confirmPlacement: () => void - drawAnother: () => Promise - lockIn: () => void - nextTeam: () => void -} + clearError: () => void; + startGame: () => Promise; + startTurn: () => Promise; + placeAt: (slotIndex: number) => void; + confirmPlacement: () => void; + drawAnother: () => Promise; + lockIn: () => void; + nextTeam: () => void; +}; export const useGame = create()((set, get) => ({ - // --- GameState baseline --- deck: [], discard: [], teams: [ @@ -55,7 +71,6 @@ export const useGame = create()((set, get) => ({ currentCard: undefined, phase: "SETUP", - // --- UIState --- loading: false, error: null, lastPlacementCorrect: null, @@ -65,16 +80,16 @@ export const useGame = create()((set, get) => ({ clearError: () => set({ error: null }), - // --- start game: ge varje lag ett unikt startkort --- + // endast bytt datakälla -> animalsItems startGame: async () => { - set({ loading: true, error: null }) + set({ loading: true, error: null }); try { - const deck = await fetchTracks(120) - if (!deck || deck.length < 2) throw new Error("Not enough tracks") + const deck: TrackCard[] = animalsItems.map(toTrackCard); + if (!deck || deck.length < 2) throw new Error("Not enough items"); - const pool = deck.slice() - const startA = drawOne(pool) - const startB = drawOne(pool) + const pool = deck.slice(); + const startA = drawOne(pool); + const startB = drawOne(pool); set({ deck: pool, @@ -90,30 +105,24 @@ export const useGame = create()((set, get) => ({ pendingIndex: null, lastPlacementCorrect: null, phase: "TURN_START", - }) + }); } catch (e: any) { - set({ error: e?.message ?? "Failed to load tracks" }) + set({ error: e?.message ?? "Failed to load items" }); } finally { - set({ loading: false }) + set({ loading: false }); } }, - // --- börja en tur / dra ett kort --- startTurn: async () => { - const s = get() - - // Om leken är slut – starta om snabbt + const s = get(); if (!s.deck.length) { - await get().startGame() + await get().startGame(); } - const s2 = get() - if (!s2.deck.length) return + const s2 = get(); + if (!s2.deck.length) return; - const [card, ...rest] = s2.deck - - // Om vi kommer från TURN_START initierar vi baseline och turnTimeline. - // Om vi kommer från CHOICE_AFTER_CORRECT (Draw another) så behåller vi turnTimeline. - const startingNewRound = s2.phase === "TURN_START" + const [card, ...rest] = s2.deck; + const startingNewRound = s2.phase === "TURN_START"; set({ deck: rest, @@ -127,62 +136,56 @@ export const useGame = create()((set, get) => ({ pendingIndex: null, lastPlacementCorrect: null, phase: "DRAWN", - }) + }); }, - // --- välj slot: *endast* pending, rör inte turnTimeline än --- placeAt: (slotIndex: number) => { - const s = get() - if (!s.currentCard) return + const s = get(); + if (!s.currentCard) return; set({ pendingIndex: slotIndex, phase: "PLACED_PENDING", - }) + }); }, - // --- bekräfta: bedöm mot turnTimeline (staged lista) och uppdatera turnTimeline vid rätt --- confirmPlacement: () => { - const s = get() - const card = s.currentCard - const i = s.pendingIndex - - if (!card || i == null) return + const s = get(); + const card = s.currentCard; + const i = s.pendingIndex; + if (!card || i == null) return; - // Bedöm mot nuvarande staged lista (så flera korrekta i rad funkar) - const base = s.turnTimeline - const correct = isPlacementCorrect(base, card, i) + const base = s.turnTimeline; + const correct = isPlacementCorrect(base, card, i); if (correct) { - const staged = insertAt(base, card, i) + const staged = insertAt(base, card, i); set({ - turnTimeline: staged, // bygg upp rundans tillfälliga timeline + turnTimeline: staged, currentCard: undefined, pendingIndex: null, lastPlacementCorrect: true, - phase: "CHOICE_AFTER_CORRECT", // välj: Draw another eller Lock in - }) + phase: "CHOICE_AFTER_CORRECT", + }); } else { - // FEL: kasta hela rundans jobb och gå tillbaka till baseline set({ turnTimeline: s.roundBaselineTimeline.slice(), currentCard: undefined, pendingIndex: null, lastPlacementCorrect: false, phase: "TURN_START", - }) - get().nextTeam() + }); + get().nextTeam(); } }, drawAnother: async () => { - await get().startTurn() + await get().startTurn(); }, - // --- lock in: committa rundans temporära lista till lagets permanenta timeline --- lockIn: () => { - const s = get() - const tIdx = s.currentTeamIndex - const committed = s.turnTimeline + const s = get(); + const tIdx = s.currentTeamIndex; + const committed = s.turnTimeline; set({ teams: s.teams.map((t, i) => @@ -190,20 +193,18 @@ export const useGame = create()((set, get) => ({ ) as GameState["teams"], phase: "TURN_START", lastPlacementCorrect: null, - // behåll turnTimeline/baseline tills nästa startTurn initierar dem igen - }) + }); - get().nextTeam() + get().nextTeam(); }, nextTeam: () => { - const s = get() + const s = get(); set({ currentTeamIndex: (s.currentTeamIndex === 0 ? 1 : 0) as 0 | 1, currentCard: undefined, pendingIndex: null, - // låt baseline/turnTimeline vara – de sätts korrekt i startTurn phase: "TURN_START", - }) + }); }, -})) +})); From c9dffc1f579bc5b51a605bc62e4a5213a0af7552 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Wed, 20 Aug 2025 14:26:43 +0200 Subject: [PATCH 046/127] Improved design --- frontend/src/components/GameBoard.tsx | 2 +- frontend/src/components/Timeline.tsx | 61 ++++++++++------- frontend/src/pages/GameMode.tsx | 98 +++++++++++++++++++++++++-- 3 files changed, 128 insertions(+), 33 deletions(-) diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index 1996682fa3..8f30b80850 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -173,7 +173,7 @@ export const GameBoard: React.FC = () => { } return ( -
+
{children}
diff --git a/frontend/src/components/Timeline.tsx b/frontend/src/components/Timeline.tsx index cd261ea878..ac9b76995c 100644 --- a/frontend/src/components/Timeline.tsx +++ b/frontend/src/components/Timeline.tsx @@ -1,43 +1,52 @@ // src/components/Timeline.tsx -import React from 'react' -import { useDroppable } from '@dnd-kit/core' -import { TimeLineCard } from './TimeLineCard' -import type { TrackCard } from '@/types/game' +import React from "react"; +import { useDroppable } from "@dnd-kit/core"; +import { TimeLineCard } from "./TimeLineCard"; +import type { TrackCard } from "@/types/game"; -type Size = 'sm' | 'md' | 'lg' +type Size = "sm" | "md" | "lg"; const SIZES: Record = { - sm: { card: 'w-[136px] h-[180px]', slot: 'w-2 h-[180px]', gap: 'gap-3' }, - md: { card: 'w-48 h-64', slot: 'w-3 h-64', gap: 'gap-6' }, - lg: { card: 'w-60 h-80', slot: 'w-3 h-80', gap: 'gap-10' }, -} + sm: { card: "w-[136px] h-[180px]", slot: "w-2 h-[180px]", gap: "gap-3" }, + md: { card: "w-48 h-64", slot: "w-3 h-64", gap: "gap-6" }, + lg: { card: "w-60 h-80", slot: "w-3 h-80", gap: "gap-10" }, +}; type TimelineProps = { - timeline: TrackCard[] - showSlots?: boolean - size?: Size -} + timeline: TrackCard[]; + showSlots?: boolean; + size?: Size; +}; -const Slot: React.FC<{ id: string; className: string }> = ({ id, className }) => { - const { isOver, setNodeRef } = useDroppable({ id }) +const Slot: React.FC<{ id: string; className: string }> = ({ + id, + className, +}) => { + const { isOver, setNodeRef } = useDroppable({ id }); return (
- ) -} + ); +}; -export const Timeline: React.FC = ({ timeline, showSlots = true, size = 'md' }) => { - const sz = SIZES[size] - const slots = Array.from({ length: timeline.length + 1 }) +export const Timeline: React.FC = ({ + timeline, + showSlots = true, + size = "md", +}) => { + const sz = SIZES[size]; + const slots = Array.from({ length: timeline.length + 1 }); return ( -
+
{slots.map((_, i) => ( {showSlots && } @@ -54,5 +63,5 @@ export const Timeline: React.FC = ({ timeline, showSlots = true, ))}
- ) -} + ); +}; diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index bc76ea1b60..1999e263c8 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -1,13 +1,99 @@ // src/pages/GameMode.tsx -import React from 'react' -import { OrientationGuard } from '../components/OrientationGuard' -import { GameBoard } from '../components/GameBoard' +import React from "react"; +import { OrientationGuard } from "../components/OrientationGuard"; +import { GameBoard } from "../components/GameBoard"; +import { Heading, DotPattern } from "../ui"; export default function GameMode() { + // justera fritt + const teamLabel = "Team"; + const teamValue = "A vs B"; + const categoryLabel = "Category"; + const categoryValue = "Animals"; + const roundLabel = "Round"; + const roundValue = "1"; + const modeLabel = "Mode"; + const modeValue = "Timeline"; + return ( -
+
- + + {/* REPORT-lik hero utan vit ruta */} +
+ {/* subtilt mönster */} +
+ +
+ + {/* hörnmarkörer */} +
+ {/* top-left */} +
+ +
+ {teamLabel}:{" "} + {teamValue} +
+
+ {/* top-right */} +
+
+ {categoryLabel}:{" "} + + {categoryValue} + +
+ +
+ {/* bottom-left */} +
+ +
+ {roundLabel}:{" "} + + {roundValue} + +
+
+ {/* bottom-right */} +
+
+ {modeLabel}:{" "} + {modeValue} +
+ +
+ + {/* själva rubriken + tagline */} +
+
+ Game Question +
+ + + Which animal weighs the most? + + +

+ Arrange cards on the timeline and place the heaviest at the right + end. +

+
+
+
+ + {/* SPEL-VYN – exakt som innan */} +
+ +
- ) + ); } From a3442aca9168a234900e686b055ae19489a8c9f7 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Wed, 20 Aug 2025 15:23:50 +0200 Subject: [PATCH 047/127] Improved design --- frontend/src/components/GameBoard.tsx | 25 ++------ frontend/src/pages/GameMode.tsx | 83 ++++++++++++++++----------- 2 files changed, 56 insertions(+), 52 deletions(-) diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index 8f30b80850..8bc9e2a126 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -200,25 +200,6 @@ export const GameBoard: React.FC = () => { return (
- {/* Header */} -
- - Game Mode - -
- - -
-
- {/* Errors / loading */} {loading && (
Loading items…
@@ -238,7 +219,11 @@ export const GameBoard: React.FC = () => { )} {/* Start-knapp */} - {phase === "SETUP" && } + {phase === "SETUP" && ( +
+ +
+ )} {/* Bräde */} {phase !== "SETUP" && ( diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index 1999e263c8..f03dffd0ff 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -1,11 +1,10 @@ -// src/pages/GameMode.tsx import React from "react"; import { OrientationGuard } from "../components/OrientationGuard"; import { GameBoard } from "../components/GameBoard"; import { Heading, DotPattern } from "../ui"; +import { useGame } from "../store/game"; export default function GameMode() { - // justera fritt const teamLabel = "Team"; const teamValue = "A vs B"; const categoryLabel = "Category"; @@ -15,12 +14,16 @@ export default function GameMode() { const modeLabel = "Mode"; const modeValue = "Timeline"; + const { teams, currentTeamIndex } = useGame(); + const scoreA = teams[0]?.timeline.length ?? 0; + const scoreB = teams[1]?.timeline.length ?? 0; + return ( -
+
{/* REPORT-lik hero utan vit ruta */} -
+
{/* subtilt mönster */}
@@ -28,44 +31,39 @@ export default function GameMode() { {/* hörnmarkörer */}
- {/* top-left */} + {/* top-left – CATEGORY */}
-
- {teamLabel}:{" "} - {teamValue} -
-
- {/* top-right */} -
{categoryLabel}:{" "} {categoryValue}
-
- {/* bottom-left */} -
- -
- {roundLabel}:{" "} - - {roundValue} - -
-
- {/* bottom-right */} -
-
- {modeLabel}:{" "} - {modeValue} + + {/* top-right – A Team / B Team */} +
+
+
+ A Team{" "} + {scoreA} +
+
+ B Team{" "} + {scoreB} +
- {/* själva rubriken + tagline */} + {/* rubrik + tagline */}
Game Question @@ -75,7 +73,7 @@ export default function GameMode() { level={1} className="leading-[0.95] text-foreground" style={{ - fontSize: "clamp(2.5rem, 7vw, 6rem)", + fontSize: "clamp(2rem, 6vw, 4.5rem)", letterSpacing: "-0.02em", }} > @@ -90,10 +88,31 @@ export default function GameMode() {
- {/* SPEL-VYN – exakt som innan */} -
+ {/* SPEL-VYN */} +
+ + {/* Footer med Round (vänster) och Mode (höger) */} +
+ {/* Round vänster */} +
+ +
+ {roundLabel}:{" "} + {roundValue} +
+
+ + {/* Mode höger */} +
+
+ {modeLabel}:{" "} + {modeValue} +
+ +
+
); } From f233787074247ca010a9581778172e9e3a786be7 Mon Sep 17 00:00:00 2001 From: Idahel Date: Wed, 20 Aug 2025 17:49:52 +0200 Subject: [PATCH 048/127] changed backend from using spotify api and auth to our own quiz data --- backend/data/categories/animals.json | 14 + backend/data/items/animals.items.json | 218 ++++++ backend/dist/config/database.d.ts | 3 + backend/dist/config/database.d.ts.map | 1 + backend/dist/config/database.js | 30 + backend/dist/config/database.js.map | 1 + backend/dist/controllers/quizController.d.ts | 5 + .../dist/controllers/quizController.d.ts.map | 1 + backend/dist/controllers/quizController.js | 86 +++ .../dist/controllers/quizController.js.map | 1 + backend/dist/index.d.ts | 2 + backend/dist/index.d.ts.map | 1 + backend/dist/index.js | 712 ++---------------- backend/dist/index.js.map | 1 + backend/dist/middleware/errorHandler.d.ts | 8 + backend/dist/middleware/errorHandler.d.ts.map | 1 + backend/dist/middleware/errorHandler.js | 23 + backend/dist/middleware/errorHandler.js.map | 1 + backend/dist/middleware/validation.d.ts | 4 + backend/dist/middleware/validation.d.ts.map | 1 + backend/dist/middleware/validation.js | 33 + backend/dist/middleware/validation.js.map | 1 + backend/dist/models/Category.d.ts | 13 + backend/dist/models/Category.d.ts.map | 1 + backend/dist/models/Category.js | 9 + backend/dist/models/Category.js.map | 1 + backend/dist/models/Item.d.ts | 13 + backend/dist/models/Item.d.ts.map | 1 + backend/dist/models/Item.js | 9 + backend/dist/models/Item.js.map | 1 + backend/dist/routes/quizRoutes.d.ts | 3 + backend/dist/routes/quizRoutes.d.ts.map | 1 + backend/dist/routes/quizRoutes.js | 9 + backend/dist/routes/quizRoutes.js.map | 1 + backend/dist/services/seedDb.d.ts | 2 + backend/dist/services/seedDb.d.ts.map | 1 + backend/dist/services/seedDb.js | 64 ++ backend/dist/services/seedDb.js.map | 1 + backend/dist/types.d.ts | 1 + backend/dist/types.d.ts.map | 1 + backend/dist/types.js | 2 + backend/dist/types.js.map | 1 + backend/dist/types/quiz.d.ts | 42 ++ backend/dist/types/quiz.d.ts.map | 1 + backend/dist/types/quiz.js | 2 + backend/dist/types/quiz.js.map | 1 + backend/package.json | 13 +- backend/src/config/database.ts | 37 + backend/src/controllers/quizController.ts | 94 +++ backend/src/index.ts | 708 +---------------- backend/src/middleware/errorHandler.ts | 37 + backend/src/middleware/validation.ts | 40 + backend/src/models/Category.ts | 17 + backend/src/models/Item.ts | 17 + backend/src/routes/quizRoutes.ts | 11 + backend/src/services/seedDb.ts | 74 ++ backend/src/types/quiz.ts | 45 ++ backend/tsconfig.json | 19 +- frontend/dist/assets/banana-DrMeE8r5.png | Bin 0 -> 591550 bytes .../dist/assets/banganzalogo-DkEbuI83.svg | 126 ++++ frontend/dist/assets/index-BOltIuFh.css | 1 + frontend/dist/assets/index-CmpXfqEq.js | 60 ++ frontend/dist/index.html | 14 + frontend/dist/vite.svg | 1 + 64 files changed, 1269 insertions(+), 1374 deletions(-) create mode 100644 backend/data/categories/animals.json create mode 100644 backend/data/items/animals.items.json create mode 100644 backend/dist/config/database.d.ts create mode 100644 backend/dist/config/database.d.ts.map create mode 100644 backend/dist/config/database.js create mode 100644 backend/dist/config/database.js.map create mode 100644 backend/dist/controllers/quizController.d.ts create mode 100644 backend/dist/controllers/quizController.d.ts.map create mode 100644 backend/dist/controllers/quizController.js create mode 100644 backend/dist/controllers/quizController.js.map create mode 100644 backend/dist/index.d.ts create mode 100644 backend/dist/index.d.ts.map create mode 100644 backend/dist/index.js.map create mode 100644 backend/dist/middleware/errorHandler.d.ts create mode 100644 backend/dist/middleware/errorHandler.d.ts.map create mode 100644 backend/dist/middleware/errorHandler.js create mode 100644 backend/dist/middleware/errorHandler.js.map create mode 100644 backend/dist/middleware/validation.d.ts create mode 100644 backend/dist/middleware/validation.d.ts.map create mode 100644 backend/dist/middleware/validation.js create mode 100644 backend/dist/middleware/validation.js.map create mode 100644 backend/dist/models/Category.d.ts create mode 100644 backend/dist/models/Category.d.ts.map create mode 100644 backend/dist/models/Category.js create mode 100644 backend/dist/models/Category.js.map create mode 100644 backend/dist/models/Item.d.ts create mode 100644 backend/dist/models/Item.d.ts.map create mode 100644 backend/dist/models/Item.js create mode 100644 backend/dist/models/Item.js.map create mode 100644 backend/dist/routes/quizRoutes.d.ts create mode 100644 backend/dist/routes/quizRoutes.d.ts.map create mode 100644 backend/dist/routes/quizRoutes.js create mode 100644 backend/dist/routes/quizRoutes.js.map create mode 100644 backend/dist/services/seedDb.d.ts create mode 100644 backend/dist/services/seedDb.d.ts.map create mode 100644 backend/dist/services/seedDb.js create mode 100644 backend/dist/services/seedDb.js.map create mode 100644 backend/dist/types.d.ts create mode 100644 backend/dist/types.d.ts.map create mode 100644 backend/dist/types.js create mode 100644 backend/dist/types.js.map create mode 100644 backend/dist/types/quiz.d.ts create mode 100644 backend/dist/types/quiz.d.ts.map create mode 100644 backend/dist/types/quiz.js create mode 100644 backend/dist/types/quiz.js.map create mode 100644 backend/src/config/database.ts create mode 100644 backend/src/controllers/quizController.ts create mode 100644 backend/src/middleware/errorHandler.ts create mode 100644 backend/src/middleware/validation.ts create mode 100644 backend/src/models/Category.ts create mode 100644 backend/src/models/Item.ts create mode 100644 backend/src/routes/quizRoutes.ts create mode 100644 backend/src/services/seedDb.ts create mode 100644 backend/src/types/quiz.ts create mode 100644 frontend/dist/assets/banana-DrMeE8r5.png create mode 100644 frontend/dist/assets/banganzalogo-DkEbuI83.svg create mode 100644 frontend/dist/assets/index-BOltIuFh.css create mode 100644 frontend/dist/assets/index-CmpXfqEq.js create mode 100644 frontend/dist/index.html create mode 100644 frontend/dist/vite.svg diff --git a/backend/data/categories/animals.json b/backend/data/categories/animals.json new file mode 100644 index 0000000000..61816a4bf2 --- /dev/null +++ b/backend/data/categories/animals.json @@ -0,0 +1,14 @@ +{ + "id": "animals.weight", + "name": "Animal Weight", + "description": "Quiz about animal weights in kilograms", + "question": "Which animal weighs the most?", + "unit": "kg", + "unitVisible": true, + "sort": "desc", + "source": { + "name": "Wikipedia (largest animals, species pages)", + "url": "https://en.wikipedia.org/wiki/List_of_largest_organisms" + }, + "version": 1 +} \ No newline at end of file diff --git a/backend/data/items/animals.items.json b/backend/data/items/animals.items.json new file mode 100644 index 0000000000..27dbaf9bf5 --- /dev/null +++ b/backend/data/items/animals.items.json @@ -0,0 +1,218 @@ +[ + { + "id": "animal-1", + "name": "Blue Whale", + "label": "Weight 150000 kg", + "value": 150000, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-2", + "name": "Sperm Whale", + "label": "Weight 57000 kg", + "value": 57000, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-3", + "name": "Whale Shark", + "label": "Weight 19000 kg", + "value": 19000, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-4", + "name": "Orca", + "label": "Weight 6000 kg", + "value": 6000, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-5", + "name": "African Elephant", + "label": "Weight 6000 kg", + "value": 6000, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-6", + "name": "Hippopotamus", + "label": "Weight 1500 kg", + "value": 1500, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-7", + "name": "Giraffe", + "label": "Weight 1200 kg", + "value": 1200, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-8", + "name": "Great White Shark", + "label": "Weight 1100 kg", + "value": 1100, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-9", + "name": "Bison", + "label": "Weight 900 kg", + "value": 900, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-10", + "name": "Cow", + "label": "Weight 750 kg", + "value": 750, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-11", + "name": "Moose", + "label": "Weight 700 kg", + "value": 700, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-12", + "name": "Polar Bear", + "label": "Weight 650 kg", + "value": 650, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-13", + "name": "Horse", + "label": "Weight 600 kg", + "value": 600, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-14", + "name": "Grizzly Bear", + "label": "Weight 360 kg", + "value": 360, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-15", + "name": "Alligator", + "label": "Weight 230 kg", + "value": 230, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-16", + "name": "Tiger", + "label": "Weight 220 kg", + "value": 220, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-17", + "name": "Sea Lion", + "label": "Weight 200 kg", + "value": 200, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-18", + "name": "Lion", + "label": "Weight 190 kg", + "value": 190, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-19", + "name": "Gorilla", + "label": "Weight 160 kg", + "value": 160, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-20", + "name": "Ostrich", + "label": "Weight 104 kg", + "value": 104, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-21", + "name": "Giant Panda", + "label": "Weight 100 kg", + "value": 100, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-22", + "name": "Human", + "label": "Weight 70 kg", + "value": 70, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-23", + "name": "Kangaroo", + "label": "Weight 60 kg", + "value": 60, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-24", + "name": "Wolf", + "label": "Weight 50 kg", + "value": 50, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-25", + "name": "Cheetah", + "label": "Weight 35 kg", + "value": 35, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-26", + "name": "Swan", + "label": "Weight 12 kg", + "value": 12, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + }, + { + "id": "animal-27", + "name": "Chicken", + "label": "Weight 1 kg", + "value": 1, + "categoryId": "animals.weight", + "source": { "name": "Wikipedia" } + } +] \ No newline at end of file diff --git a/backend/dist/config/database.d.ts b/backend/dist/config/database.d.ts new file mode 100644 index 0000000000..9ce9716b1d --- /dev/null +++ b/backend/dist/config/database.d.ts @@ -0,0 +1,3 @@ +declare const connectDB: () => Promise; +export default connectDB; +//# sourceMappingURL=database.d.ts.map \ No newline at end of file diff --git a/backend/dist/config/database.d.ts.map b/backend/dist/config/database.d.ts.map new file mode 100644 index 0000000000..79eb272246 --- /dev/null +++ b/backend/dist/config/database.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/config/database.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,SAAS,QAAa,OAAO,CAAC,IAAI,CAgCvC,CAAC;AAEF,eAAe,SAAS,CAAC"} \ No newline at end of file diff --git a/backend/dist/config/database.js b/backend/dist/config/database.js new file mode 100644 index 0000000000..be03ffd4bd --- /dev/null +++ b/backend/dist/config/database.js @@ -0,0 +1,30 @@ +import mongoose from 'mongoose'; +const connectDB = async () => { + try { + const mongoURI = process.env.MONGODB_URI; + if (!mongoURI) { + throw new Error('MONGODB_URI is not defined in environment variables'); + } + const conn = await mongoose.connect(mongoURI); + console.log(`MongoDB Connected: ${conn.connection.host}`); + // Handle connection events + mongoose.connection.on('error', (err) => { + console.error('MongoDB connection error:', err); + }); + mongoose.connection.on('disconnected', () => { + console.log('MongoDB disconnected'); + }); + // Graceful shutdown + process.on('SIGINT', async () => { + await mongoose.connection.close(); + console.log('MongoDB connection closed through app termination'); + process.exit(0); + }); + } + catch (error) { + console.error('Error connecting to MongoDB:', error); + process.exit(1); + } +}; +export default connectDB; +//# sourceMappingURL=database.js.map \ No newline at end of file diff --git a/backend/dist/config/database.js.map b/backend/dist/config/database.js.map new file mode 100644 index 0000000000..0b12fd8403 --- /dev/null +++ b/backend/dist/config/database.js.map @@ -0,0 +1 @@ +{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/config/database.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,SAAS,GAAG,KAAK,IAAmB,EAAE;IAC1C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;QAEzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE9C,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAE1D,2BAA2B;QAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACtC,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;YAC1C,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,oBAAoB;QACpB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,MAAM,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IAEL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"} \ No newline at end of file diff --git a/backend/dist/controllers/quizController.d.ts b/backend/dist/controllers/quizController.d.ts new file mode 100644 index 0000000000..d73b34a3ec --- /dev/null +++ b/backend/dist/controllers/quizController.d.ts @@ -0,0 +1,5 @@ +import { Request, Response } from 'express'; +export declare const getCategories: (req: Request, res: Response) => Promise; +export declare const getQuizItems: (req: Request, res: Response) => Promise> | undefined>; +export declare const checkAnswers: (req: Request, res: Response) => Promise; +//# sourceMappingURL=quizController.d.ts.map \ No newline at end of file diff --git a/backend/dist/controllers/quizController.d.ts.map b/backend/dist/controllers/quizController.d.ts.map new file mode 100644 index 0000000000..a5d8293103 --- /dev/null +++ b/backend/dist/controllers/quizController.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"quizController.d.ts","sourceRoot":"","sources":["../../src/controllers/quizController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAe5C,eAAO,MAAM,aAAa,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,kBAc9D,CAAC;AAGF,eAAO,MAAM,YAAY,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,4DAgC7D,CAAC;AAGF,eAAO,MAAM,YAAY,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,kBA0B7D,CAAC"} \ No newline at end of file diff --git a/backend/dist/controllers/quizController.js b/backend/dist/controllers/quizController.js new file mode 100644 index 0000000000..e626f38f3d --- /dev/null +++ b/backend/dist/controllers/quizController.js @@ -0,0 +1,86 @@ +import { Item } from '../models/Item.js'; +import { Category } from '../models/Category.js'; +// Helper function to shuffle an array +const shuffleArray = (array) => { + for (let i = array.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [array[i], array[j]] = [array[j], array[i]]; + } + return array; +}; +// Get all quiz categories +export const getCategories = async (req, res) => { + try { + const categories = await Category.find({}); + res.status(200).json({ + success: true, + data: categories + }); + } + catch (error) { + const errorMessage = error instanceof Error ? error.message : 'Unknown error'; + res.status(500).json({ + success: false, + error: { message: 'Error fetching categories', details: errorMessage } + }); + } +}; +// Get a random set of quiz items for a category +export const getQuizItems = async (req, res) => { + const { categoryId } = req.params; + try { + const items = await Item.find({ categoryId }); + if (items.length < 5) { + return res.status(404).json({ + success: false, + error: { message: 'Not enough items for this quiz.' } + }); + } + const shuffledItems = shuffleArray(items); + const quizItems = shuffledItems.slice(0, 5); // Take 5 random items + // Remove the 'value' before sending to the client + const sanitizedItems = quizItems.map(item => ({ + _id: item._id, + id: item.id, + name: item.name, + label: item.label + })); + res.status(200).json({ + success: true, + data: sanitizedItems + }); + } + catch (error) { + const errorMessage = error instanceof Error ? error.message : 'Unknown error'; + res.status(500).json({ + success: false, + error: { message: 'Error fetching quiz items', details: errorMessage } + }); + } +}; +// Check if the user's answers are correct +export const checkAnswers = async (req, res) => { + const { userAnswers } = req.body; // userAnswers is an array of item IDs + try { + const itemIds = userAnswers.map((id) => id); + const correctItems = await Item.find({ '_id': { $in: itemIds } }).sort({ 'value': 1 }).lean(); + // Check if the user's order matches the sorted order of correct answers + const isCorrect = userAnswers.every((id, index) => { + const correctItem = correctItems[index]; + return correctItem && id === correctItem._id.toString(); + }); + const result = { isCorrect }; + res.status(200).json({ + success: true, + data: result + }); + } + catch (error) { + const errorMessage = error instanceof Error ? error.message : 'Unknown error'; + res.status(500).json({ + success: false, + error: { message: 'Error checking answers', details: errorMessage } + }); + } +}; +//# sourceMappingURL=quizController.js.map \ No newline at end of file diff --git a/backend/dist/controllers/quizController.js.map b/backend/dist/controllers/quizController.js.map new file mode 100644 index 0000000000..efd20ee213 --- /dev/null +++ b/backend/dist/controllers/quizController.js.map @@ -0,0 +1 @@ +{"version":3,"file":"quizController.js","sourceRoot":"","sources":["../../src/controllers/quizController.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/backend/dist/index.d.ts b/backend/dist/index.d.ts new file mode 100644 index 0000000000..e48a310bea --- /dev/null +++ b/backend/dist/index.d.ts @@ -0,0 +1,2 @@ +import "dotenv/config"; +//# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/backend/dist/index.d.ts.map b/backend/dist/index.d.ts.map new file mode 100644 index 0000000000..df5a9560b5 --- /dev/null +++ b/backend/dist/index.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,CAAC"} \ No newline at end of file diff --git a/backend/dist/index.js b/backend/dist/index.js index 6138fa9659..df20362541 100644 --- a/backend/dist/index.js +++ b/backend/dist/index.js @@ -1,24 +1,20 @@ // server/src/index.ts -import 'dotenv/config'; -import express from 'express'; -import session from 'express-session'; -import cors from 'cors'; -import cookieParser from 'cookie-parser'; -import SpotifyWebApi from 'spotify-web-api-node'; -import mongoose, { Schema } from 'mongoose'; +import "dotenv/config"; +import express from "express"; +import cors from "cors"; +import mongoose from "mongoose"; +import quizRoutes from './routes/quizRoutes.js'; +import { errorHandler, notFound } from './middleware/errorHandler.js'; +import connectDB from './config/database.js'; // Validate that all necessary environment variables exist const requiredEnvVars = [ - 'CLIENT_ID', - 'CLIENT_SECRET', - 'REDIRECT_URI', - 'MONGODB_URI', - 'FRONTEND_URI', - 'SESSION_SECRET' + "MONGODB_URI", + "FRONTEND_URI", ]; // Log environment info for debugging -console.log('Environment:', process.env.NODE_ENV || 'development'); -console.log('Frontend URI:', process.env.FRONTEND_URI || 'http://127.0.0.1:5173'); -console.log('Backend Port:', process.env.PORT || 8888); +console.log("Environment:", process.env.NODE_ENV || "development"); +console.log("Frontend URI:", process.env.FRONTEND_URI || "http://127.0.0.1:5173"); +console.log("Backend Port:", process.env.PORT || 8888); for (const envVar of requiredEnvVars) { if (!process.env[envVar]) { console.error(`Error: The environment variable ${envVar} is missing`); @@ -30,683 +26,59 @@ const port = process.env.PORT || 8888; // Middleware app.use(cors({ origin: [ - process.env.FRONTEND_URI || 'http://127.0.0.1:5173', - 'https://banganza.netlify.app' + process.env.FRONTEND_URI || "http://127.0.0.1:5173", + "https://banganza.netlify.app", ], credentials: true, // Allow cookies - methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'], - allowedHeaders: ['Content-Type', 'Authorization', 'Cookie'], + methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"], + allowedHeaders: ["Content-Type", "Authorization", "Cookie"], })); -app.use(cookieParser()); app.use(express.json()); // For handling JSON request bodies // Health check endpoint -app.get('/', (req, res) => { +app.get("/", (req, res) => { res.json({ - message: 'Backend server is running!', - status: 'ok', - environment: process.env.NODE_ENV || 'development', + message: "Backend server is running!", + status: "ok", + environment: process.env.NODE_ENV || "development", timestamp: new Date().toISOString(), - frontend: process.env.FRONTEND_URI || 'http://127.0.0.1:5173' + frontend: process.env.FRONTEND_URI || "http://127.0.0.1:5173", }); }); // Additional health check for production monitoring -app.get('/health', (req, res) => { +app.get("/health", (req, res) => { const health = { - status: 'ok', + status: "ok", timestamp: new Date().toISOString(), uptime: process.uptime(), - environment: process.env.NODE_ENV || 'development', - database: mongoose.connection.readyState === 1 ? 'connected' : 'disconnected' + environment: process.env.NODE_ENV || "development", + database: mongoose.connection.readyState === 1 ? "connected" : "disconnected", }; - if (health.database === 'disconnected') { - health.status = 'warning'; + if (health.database === "disconnected") { + health.status = "warning"; } res.json(health); }); -app.use(session({ - secret: process.env.SESSION_SECRET, - resave: true, // Changed to true to ensure session is saved - saveUninitialized: true, // Changed to true to save new sessions - cookie: { - httpOnly: true, // Improve security by making the cookie inaccessible to JavaScript - secure: process.env.NODE_ENV === 'production', // Use secure cookies only in production - sameSite: process.env.NODE_ENV === 'production' ? 'none' : 'lax', // Required for cross-origin cookies in production - maxAge: 60 * 60 * 1000 // 1 hour - }, - name: 'spotify-session' // Give the session a specific name -})); +// Use the new quiz routes +app.use('/api/quiz', quizRoutes); +// 404 handler +app.use(notFound); +// Error handling middleware +app.use(errorHandler); // Connect to MongoDB -mongoose.connect(process.env.MONGODB_URI) - .then(() => { - console.log('Connected to MongoDB Atlas'); - // Only populate the database when successfully connected - populateQuizQuestionsFromPlaylist(); -}) - .catch(err => { - console.error('Could not connect to MongoDB Atlas:', err); - console.log('Server is running without database connection for development...'); - // Don't exit for development - allow server to run without DB -}); -// Spotify API instance -const spotifyApi = new SpotifyWebApi({ - clientId: process.env.CLIENT_ID, - clientSecret: process.env.CLIENT_SECRET, - redirectUri: process.env.REDIRECT_URI -}); -// Generate a random string for the state parameter (for security) -const generateRandomString = (length) => { - let text = ''; - const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - for (let i = 0; i < length; i++) { - text += possible.charAt(Math.floor(Math.random() * possible.length)); - } - return text; -}; -// --- Authentication routes (for the user to log in with Spotify) --- -// 1. Log in with Spotify -app.get('/login', (req, res) => { - const state = generateRandomString(16); - req.session.spotify_auth_state = state; // Save state in the session - console.log('OAuth login initiated with state:', state); - console.log('Session ID:', req.sessionID); - console.log('Frontend URI:', process.env.FRONTEND_URI); - console.log('Session data before redirect:', req.session); - // Required scopes to control the user's Spotify app and read playback status - const scope = [ - 'user-read-private', - 'user-read-email', - 'user-read-playback-state', - 'user-modify-playback-state' - ]; - const authUrl = spotifyApi.createAuthorizeURL(scope, state); - console.log('Redirecting to Spotify OAuth URL:', authUrl); - // Force session save before redirect - req.session.save((err) => { - if (err) { - console.error('Error saving session:', err); - return res.status(500).json({ error: 'Failed to save session' }); - } - console.log('Session saved successfully, redirecting to Spotify'); - res.redirect(authUrl); - }); -}); -// 2. Callback after Spotify authentication -app.get('/callback', async (req, res) => { - const { code, state } = req.query; - const storedState = req.session.spotify_auth_state; - console.log('OAuth callback received:'); - console.log('- Received state:', state); - console.log('- Stored state:', storedState); - console.log('- Session ID:', req.sessionID); - console.log('- Session data:', req.session); - if (state === null) { - console.error('No state parameter received from Spotify'); - res.redirect(`${process.env.FRONTEND_URI}/login?error=no_state`); - return; - } - if (!storedState) { - console.error('No stored state found in session'); - res.redirect(`${process.env.FRONTEND_URI}/login?error=no_stored_state`); - return; - } - if (state !== storedState) { - console.error('State mismatch in OAuth callback'); - console.error('- Expected:', storedState); - console.error('- Received:', state); - res.redirect(`${process.env.FRONTEND_URI}/login?error=state_mismatch`); - return; - } - if (!code) { - console.error('No authorization code received from Spotify'); - res.redirect(`${process.env.FRONTEND_URI}/login?error=no_code`); - return; - } - // Clear state from the session - req.session.spotify_auth_state = undefined; - try { - const data = await spotifyApi.authorizationCodeGrant(code); - const { access_token, refresh_token, expires_in } = data.body; - // Save tokens in the session - req.session.accessToken = access_token; - req.session.refreshToken = refresh_token; - req.session.expiresIn = expires_in; - req.session.tokenCreatedAt = Date.now(); // Store timestamp - console.log('OAuth tokens received and stored in session'); - console.log('- Access token length:', access_token ? access_token.length : 0); - console.log('- Refresh token length:', refresh_token ? refresh_token.length : 0); - console.log('- Expires in:', expires_in); - // Redirect to the frontend callback route to handle the OAuth completion - res.redirect(`${process.env.FRONTEND_URI}/callback?success=true`); - } - catch (err) { - console.error('Could not get access token:', err); - res.redirect(`${process.env.FRONTEND_URI}/login?error=invalid_token`); - } -}); -// 3. Refresh access token -app.get('/refresh_token', async (req, res) => { - try { - const refreshToken = req.session.refreshToken; - if (!refreshToken) { - return res.status(401).json({ error: 'No refresh token in session.' }); - } - spotifyApi.setRefreshToken(refreshToken); - const data = await spotifyApi.refreshAccessToken(); - const { access_token, expires_in } = data.body; - req.session.accessToken = access_token; - req.session.expiresIn = expires_in; - req.session.tokenCreatedAt = Date.now(); // Update timestamp - res.json({ success: true }); - } - catch (err) { - console.error('Could not refresh access token:', err); - res.status(500).json({ error: 'Could not refresh access token' }); - } -}); -// 3.5. Check token status -app.get('/token-status', (req, res) => { - const { accessToken, expiresIn, tokenCreatedAt } = req.session; - if (!accessToken || !expiresIn || !tokenCreatedAt) { - return res.status(401).json({ - valid: false, - reason: 'No tokens in session', - needsRefresh: false - }); - } - const now = Date.now(); - const tokenAge = now - tokenCreatedAt; - const timeUntilExpiry = (expiresIn * 1000) - tokenAge; - // Token is valid if it hasn't expired yet - const isValid = timeUntilExpiry > 0; - // Suggest refresh if token expires in less than 5 minutes - const needsRefresh = timeUntilExpiry < (5 * 60 * 1000); - res.json({ - valid: isValid, - reason: isValid ? 'Token is valid' : 'Token has expired', - needsRefresh, - timeUntilExpiry: Math.max(0, timeUntilExpiry), - expiresIn: expiresIn * 1000, - tokenAge - }); -}); -// 4. Get user profile (via backend session) -app.get('/user-profile', async (req, res) => { - try { - const accessToken = req.session.accessToken; - if (!accessToken) { - return res.status(401).json({ error: 'Not logged in.' }); - } - spotifyApi.setAccessToken(accessToken); - const data = await spotifyApi.getMe(); - res.json(data.body); - } - catch (err) { - console.error('Error fetching user profile:', err); - res.status(500).json({ error: 'Could not fetch user profile.' }); - } -}); -// 5. Log out -app.get('/logout', (req, res) => { - req.session.destroy(err => { - if (err) { - console.error('Error during logout:', err); - return res.status(500).json({ error: 'Could not log out.' }); - } - res.json({ success: true }); - }); -}); -// --- Spotify Player routes (acting as a proxy) --- -// 6. Start/Resume playback (PUT /me/player/play) -app.put('/spotify/play', async (req, res) => { - try { - const { trackId, contextUri, uris, deviceId, positionMs, offset } = req.body; - const accessToken = req.session.accessToken; - if (!accessToken) { - return res.status(401).json({ error: 'Not authenticated.' }); - } - spotifyApi.setAccessToken(accessToken); - // Build the play options object - const playOptions = {}; - if (deviceId) { - playOptions.device_id = deviceId; - } - if (contextUri) { - playOptions.context_uri = contextUri; - } - else if (uris && uris.length > 0) { - playOptions.uris = uris; - } - else if (trackId) { - playOptions.uris = [`spotify:track:${trackId}`]; - } - if (positionMs !== undefined) { - playOptions.position_ms = positionMs; - } - if (offset) { - // Ensure offset has either position or uri, not both - if (offset.position !== undefined) { - playOptions.offset = { position: offset.position }; - } - else if (offset.uri) { - playOptions.offset = { uri: offset.uri }; - } - } - await spotifyApi.play(playOptions); - res.status(204).send(); // Spotify returns 204 for successful playback start - } - catch (err) { - console.error('Error during playback:', err); - // Handle specific Spotify API errors - if (err && typeof err === 'object' && 'statusCode' in err) { - const statusCode = err.statusCode; - if (statusCode === 403) { - res.status(403).json({ error: 'Premium account required for playback control.' }); - } - else if (statusCode === 404) { - res.status(404).json({ error: 'Device not found or not available.' }); - } - else if (statusCode === 429) { - res.status(429).json({ error: 'Rate limit exceeded. Please try again later.' }); - } - else { - res.status(500).json({ error: 'Could not start playback.' }); - } - } - else { - res.status(500).json({ error: 'Could not start playback.' }); - } - } -}); -// 7. Pause playback (PUT /me/player/pause) -app.put('/spotify/pause', async (req, res) => { - try { - const { deviceId } = req.body; - const accessToken = req.session.accessToken; - if (!accessToken) { - return res.status(401).json({ error: 'Not authenticated.' }); - } - spotifyApi.setAccessToken(accessToken); - const pauseOptions = {}; - if (deviceId) { - pauseOptions.device_id = deviceId; - } - await spotifyApi.pause(pauseOptions); - res.status(204).send(); - } - catch (err) { - console.error('Error during pause:', err); - if (err && typeof err === 'object' && 'statusCode' in err) { - const statusCode = err.statusCode; - if (statusCode === 403) { - res.status(403).json({ error: 'Premium account required for playback control.' }); - } - else if (statusCode === 404) { - res.status(404).json({ error: 'Device not found or not available.' }); - } - else { - res.status(500).json({ error: 'Could not pause playback.' }); - } - } - else { - res.status(500).json({ error: 'Could not pause playback.' }); - } - } -}); -// 8. Skip to next track (POST /me/player/next) -app.post('/spotify/next', async (req, res) => { - try { - const { deviceId } = req.body; - const accessToken = req.session.accessToken; - if (!accessToken) { - return res.status(401).json({ error: 'Not authenticated.' }); - } - spotifyApi.setAccessToken(accessToken); - const nextOptions = {}; - if (deviceId) { - nextOptions.device_id = deviceId; - } - await spotifyApi.skipToNext(nextOptions); - res.status(204).send(); - } - catch (err) { - console.error('Error skipping to next track:', err); - if (err && typeof err === 'object' && 'statusCode' in err) { - const statusCode = err.statusCode; - if (statusCode === 403) { - res.status(403).json({ error: 'Premium account required for playback control.' }); - } - else if (statusCode === 404) { - res.status(404).json({ error: 'Device not found or not available.' }); - } - else { - res.status(500).json({ error: 'Could not skip to next track.' }); - } - } - else { - res.status(500).json({ error: 'Could not skip to next track.' }); - } - } -}); -// 9. Skip to previous track (POST /me/player/previous) -app.post('/spotify/previous', async (req, res) => { - try { - const { deviceId } = req.body; - const accessToken = req.session.accessToken; - if (!accessToken) { - return res.status(401).json({ error: 'Not authenticated.' }); - } - spotifyApi.setAccessToken(accessToken); - const previousOptions = {}; - if (deviceId) { - previousOptions.device_id = deviceId; - } - await spotifyApi.skipToPrevious(previousOptions); - res.status(204).send(); - } - catch (err) { - console.error('Error skipping to previous track:', err); - if (err && typeof err === 'object' && 'statusCode' in err) { - const statusCode = err.statusCode; - if (statusCode === 403) { - res.status(403).json({ error: 'Premium account required for playback control.' }); - } - else if (statusCode === 404) { - res.status(404).json({ error: 'Device not found or not available.' }); - } - else { - res.status(500).json({ error: 'Could not skip to previous track.' }); - } - } - else { - res.status(500).json({ error: 'Could not skip to previous track.' }); - } - } -}); -// 10. Get available devices (GET /me/player/devices) -app.get('/spotify/devices', async (req, res) => { - try { - const accessToken = req.session.accessToken; - if (!accessToken) { - return res.status(401).json({ error: 'Not authenticated.' }); - } - spotifyApi.setAccessToken(accessToken); - const data = await spotifyApi.getMyDevices(); - res.json(data.body); - } - catch (err) { - console.error('Error getting devices:', err); - if (err && typeof err === 'object' && 'statusCode' in err) { - const statusCode = err.statusCode; - if (statusCode === 401) { - res.status(401).json({ error: 'Not authenticated.' }); - } - else { - res.status(500).json({ error: 'Could not get devices.' }); - } - } - else { - res.status(500).json({ error: 'Could not get devices.' }); - } - } -}); -// 11. Get current playback state (GET /me/player) -app.get('/spotify/playback-state', async (req, res) => { - try { - const accessToken = req.session.accessToken; - if (!accessToken) { - return res.status(401).json({ error: 'Not authenticated.' }); - } - spotifyApi.setAccessToken(accessToken); - const data = await spotifyApi.getMyCurrentPlaybackState(); - if (!data.body) { - // User is not currently playing anything - return res.status(204).send(); - } - res.json(data.body); - } - catch (err) { - console.error('Error getting playback state:', err); - if (err && typeof err === 'object' && 'statusCode' in err) { - const statusCode = err.statusCode; - if (statusCode === 204) { - // User is not currently playing anything - res.status(204).send(); - } - else if (statusCode === 401) { - res.status(401).json({ error: 'Not authenticated.' }); - } - else { - res.status(500).json({ error: 'Could not get playback state.' }); - } - } - else { - res.status(500).json({ error: 'Could not get playback state.' }); - } - } -}); -// 12. Transfer playback to device (PUT /me/player) -app.put('/spotify/transfer', async (req, res) => { - try { - const { deviceId, play } = req.body; - const accessToken = req.session.accessToken; - if (!accessToken || !deviceId) { - return res.status(400).json({ error: 'Device ID is required.' }); - } - spotifyApi.setAccessToken(accessToken); - // Use the correct method to transfer playback - await spotifyApi.transferMyPlayback([deviceId], { play }); - res.status(204).send(); - } - catch (err) { - console.error('Error transferring playback:', err); - if (err && typeof err === 'object' && 'statusCode' in err) { - const statusCode = err.statusCode; - if (statusCode === 403) { - res.status(403).json({ error: 'Premium account required for playback control.' }); - } - else if (statusCode === 404) { - res.status(404).json({ error: 'Device not found or not available.' }); - } - else { - res.status(500).json({ error: 'Could not transfer playback.' }); - } - } - else { - res.status(500).json({ error: 'Could not transfer playback.' }); - } - } -}); -const quizSchema = new Schema({ - trackId: String, - trackTitle: String, - trackArtist: String, - releaseYear: Number, - trackUrl: String, -}); -const QuizQuestion = mongoose.model('QuizQuestion', quizSchema); -// API route to fetch quiz questions -app.get('/quiz-questions', async (req, res) => { - try { - // Check if mongoose is connected - if (mongoose.connection.readyState !== 1) { - return res.status(503).json({ error: 'Database is not available' }); - } - const questions = await QuizQuestion.find({}); - res.json(questions); - } - catch (err) { - console.error('Error fetching quiz questions:', err); - res.status(500).json({ error: 'Could not fetch quiz questions' }); - } -}); -// API route to fetch quiz questions with statistics and formatted information -app.get('/quiz-questions/detailed', async (req, res) => { - try { - // Check if mongoose is connected - if (mongoose.connection.readyState !== 1) { - return res.status(503).json({ error: 'Database is not available' }); - } - const questions = await QuizQuestion.find({}); - // Calculate statistics - const totalQuestions = questions.length; - const years = questions.map(q => q.releaseYear); - const uniqueYears = [...new Set(years)].sort((a, b) => a - b); - const yearRange = { - min: Math.min(...years), - max: Math.max(...years) - }; - // Group by artist - const artistCounts = {}; - questions.forEach(q => { - artistCounts[q.trackArtist] = (artistCounts[q.trackArtist] || 0) + 1; - }); - // Top 5 artists - const topArtists = Object.entries(artistCounts) - .sort(([, a], [, b]) => b - a) - .slice(0, 5) - .map(([artist, count]) => ({ artist, count })); - // Group by decade - const decadeCounts = {}; - questions.forEach(q => { - const decade = Math.floor(q.releaseYear / 10) * 10; - const decadeLabel = `${decade}s`; - decadeCounts[decadeLabel] = (decadeCounts[decadeLabel] || 0) + 1; - }); - const response = { - summary: { - totalQuestions, - yearRange, - uniqueYears: uniqueYears.length, - decades: Object.keys(decadeCounts).length - }, - statistics: { - topArtists, - decadeBreakdown: decadeCounts, - yearDistribution: uniqueYears - }, - questions: questions.map(q => ({ - id: q._id, - trackId: q.trackId, - title: q.trackTitle, - artist: q.trackArtist, - year: q.releaseYear, - decade: `${Math.floor(q.releaseYear / 10) * 10}s` - })) - }; - res.json(response); - } - catch (err) { - console.error('Error fetching detailed quiz questions:', err); - res.status(500).json({ error: 'Could not fetch detailed quiz questions' }); - } -}); -// API route to get a random quiz question -app.get('/quiz-questions/random', async (req, res) => { - try { - // Check if mongoose is connected - if (mongoose.connection.readyState !== 1) { - return res.status(503).json({ error: 'Database is not available' }); - } - const count = await QuizQuestion.countDocuments(); - if (count === 0) { - return res.status(404).json({ error: 'No quiz questions available' }); - } - const randomIndex = Math.floor(Math.random() * count); - const randomQuestion = await QuizQuestion.findOne().skip(randomIndex); - if (!randomQuestion) { - return res.status(404).json({ error: 'Could not find a random question' }); - } - res.json({ - question: { - id: randomQuestion._id, - trackId: randomQuestion.trackId, - title: randomQuestion.trackTitle, - artist: randomQuestion.trackArtist, - year: randomQuestion.releaseYear, - decade: `${Math.floor(randomQuestion.releaseYear / 10) * 10}s` - }, - totalQuestions: count - }); - } - catch (err) { - console.error('Error fetching random quiz question:', err); - res.status(500).json({ error: 'Could not fetch a random quiz question' }); - } -}); -// --- **NEW ROUTE TO VIEW RAW DATA FROM THE SPOTIFY API** --- -// Use this route to verify that fetching the playlist works. -// You can then remove it once you have tested it. -app.get('/raw-playlist-data', async (req, res) => { - const playlistId = '6YHoO8ETcwxgq5WTjDpyAQ'; // Your playlist - try { - const data = await spotifyApi.clientCredentialsGrant(); - spotifyApi.setAccessToken(data.body['access_token']); - const playlistData = await spotifyApi.getPlaylistTracks(playlistId); - res.json(playlistData.body); // Send the entire raw data - } - catch (err) { - console.error('Error fetching raw data from Spotify:', err); - res.status(500).json({ error: 'Could not fetch raw data.' }); - } -}); -// --- Function to add quiz questions from a specific playlist --- -// Use this function to populate your MongoDB database with questions from your playlist. -// It fetches an app-specific access token, so it does not require a logged-in user. -async function populateQuizQuestionsFromPlaylist() { - // ID for the playlist you want to fetch tracks from. - const playlistId = '6YHoO8ETcwxgq5WTjDpyAQ'; - try { - // Check if mongoose is connected before proceeding - if (mongoose.connection.readyState !== 1) { - console.log('MongoDB not connected, skipping database population'); - return; - } - // Remove existing questions before adding new ones - await QuizQuestion.deleteMany({}); - console.log('Existing quiz questions have been cleared from the database.'); - const data = await spotifyApi.clientCredentialsGrant(); - spotifyApi.setAccessToken(data.body['access_token']); - console.log('Fetched Client Credentials token.'); - const playlistData = await spotifyApi.getPlaylistTracks(playlistId); - const tracks = playlistData.body.items.filter(item => item.track); - const quizQuestions = tracks.map(item => { - const track = item.track; - if (track) { - const trackTitle = track.name; - const trackArtist = track.artists[0]?.name || 'Unknown Artist'; - const releaseYear = new Date(track.album.release_date).getFullYear(); - const trackUrl = track.external_urls.spotify; - return { - trackId: track.id, - trackTitle, - trackArtist, - releaseYear, - trackUrl, - }; - } - }).filter(Boolean); // Filter out any null values - if (quizQuestions.length > 0) { - await QuizQuestion.insertMany(quizQuestions); - console.log(`Database has been populated with ${quizQuestions.length} questions from the playlist.`); - } - else { - console.log('Could not find any songs to create questions from.'); - } - } - catch (error) { - console.error('An error occurred while populating the database:', error); - } -} +connectDB(); // Start the server -app.listen(port, () => { +app + .listen(port, () => { console.log(`Backend server is running on port ${port}`); - if (process.env.NODE_ENV === 'production') { - console.log('Production mode enabled'); + if (process.env.NODE_ENV === "production") { + console.log("Production mode enabled"); } else { console.log(`Development mode: http://127.0.0.1:${port}`); } -}).on('error', (err) => { - console.error('Error starting the server:', err); +}) + .on("error", (err) => { + console.error("Error starting the server:", err); process.exit(1); }); +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/backend/dist/index.js.map b/backend/dist/index.js.map new file mode 100644 index 0000000000..741bc05a55 --- /dev/null +++ b/backend/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/backend/dist/middleware/errorHandler.d.ts b/backend/dist/middleware/errorHandler.d.ts new file mode 100644 index 0000000000..99470d6529 --- /dev/null +++ b/backend/dist/middleware/errorHandler.d.ts @@ -0,0 +1,8 @@ +import { Request, Response, NextFunction } from 'express'; +export interface AppError extends Error { + statusCode?: number; + isOperational?: boolean; +} +export declare const errorHandler: (err: AppError, req: Request, res: Response, next: NextFunction) => void; +export declare const notFound: (req: Request, res: Response) => void; +//# sourceMappingURL=errorHandler.d.ts.map \ No newline at end of file diff --git a/backend/dist/middleware/errorHandler.d.ts.map b/backend/dist/middleware/errorHandler.d.ts.map new file mode 100644 index 0000000000..47940c693f --- /dev/null +++ b/backend/dist/middleware/errorHandler.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"errorHandler.d.ts","sourceRoot":"","sources":["../../src/middleware/errorHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D,MAAM,WAAW,QAAS,SAAQ,KAAK;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,YAAY,GACvB,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,SAgBnB,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,SAOnD,CAAC"} \ No newline at end of file diff --git a/backend/dist/middleware/errorHandler.js b/backend/dist/middleware/errorHandler.js new file mode 100644 index 0000000000..3f6edd729a --- /dev/null +++ b/backend/dist/middleware/errorHandler.js @@ -0,0 +1,23 @@ +export const errorHandler = (err, req, res, next) => { + const statusCode = err.statusCode || 500; + const message = err.message || 'Internal Server Error'; + // Log error for debugging + console.error(`Error ${statusCode}: ${message}`); + console.error(err.stack); + res.status(statusCode).json({ + success: false, + error: { + message, + ...(process.env.NODE_ENV === 'development' && { stack: err.stack }) + } + }); +}; +export const notFound = (req, res) => { + res.status(404).json({ + success: false, + error: { + message: `Route ${req.originalUrl} not found` + } + }); +}; +//# sourceMappingURL=errorHandler.js.map \ No newline at end of file diff --git a/backend/dist/middleware/errorHandler.js.map b/backend/dist/middleware/errorHandler.js.map new file mode 100644 index 0000000000..1618deb8de --- /dev/null +++ b/backend/dist/middleware/errorHandler.js.map @@ -0,0 +1 @@ +{"version":3,"file":"errorHandler.js","sourceRoot":"","sources":["../../src/middleware/errorHandler.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,GAAa,EACb,GAAY,EACZ,GAAa,EACb,IAAkB,EAClB,EAAE;IACF,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC;IACzC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,uBAAuB,CAAC;IAEvD,0BAA0B;IAC1B,OAAO,CAAC,KAAK,CAAC,SAAS,UAAU,KAAK,OAAO,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEzB,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;QAC1B,OAAO,EAAE,KAAK;QACd,KAAK,EAAE;YACL,OAAO;YACP,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;SACpE;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IACtD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE;YACL,OAAO,EAAE,SAAS,GAAG,CAAC,WAAW,YAAY;SAC9C;KACF,CAAC,CAAC;AACL,CAAC,CAAC"} \ No newline at end of file diff --git a/backend/dist/middleware/validation.d.ts b/backend/dist/middleware/validation.d.ts new file mode 100644 index 0000000000..67d8ca99ab --- /dev/null +++ b/backend/dist/middleware/validation.d.ts @@ -0,0 +1,4 @@ +import { Request, Response, NextFunction } from 'express'; +export declare const validateCategoryId: (req: Request, res: Response, next: NextFunction) => Response> | undefined; +export declare const validateQuizAnswers: (req: Request, res: Response, next: NextFunction) => Response> | undefined; +//# sourceMappingURL=validation.d.ts.map \ No newline at end of file diff --git a/backend/dist/middleware/validation.d.ts.map b/backend/dist/middleware/validation.d.ts.map new file mode 100644 index 0000000000..3b59017df0 --- /dev/null +++ b/backend/dist/middleware/validation.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/middleware/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D,eAAO,MAAM,kBAAkB,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mDAajF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mDAsBlF,CAAC"} \ No newline at end of file diff --git a/backend/dist/middleware/validation.js b/backend/dist/middleware/validation.js new file mode 100644 index 0000000000..7d9207a9ab --- /dev/null +++ b/backend/dist/middleware/validation.js @@ -0,0 +1,33 @@ +export const validateCategoryId = (req, res, next) => { + const { categoryId } = req.params; + if (!categoryId || typeof categoryId !== 'string') { + return res.status(400).json({ + success: false, + error: { + message: 'Valid categoryId is required' + } + }); + } + next(); +}; +export const validateQuizAnswers = (req, res, next) => { + const { userAnswers } = req.body; + if (!Array.isArray(userAnswers) || userAnswers.length === 0) { + return res.status(400).json({ + success: false, + error: { + message: 'userAnswers must be a non-empty array' + } + }); + } + if (!userAnswers.every(id => typeof id === 'string')) { + return res.status(400).json({ + success: false, + error: { + message: 'All userAnswers must be strings' + } + }); + } + next(); +}; +//# sourceMappingURL=validation.js.map \ No newline at end of file diff --git a/backend/dist/middleware/validation.js.map b/backend/dist/middleware/validation.js.map new file mode 100644 index 0000000000..5ab9a5b211 --- /dev/null +++ b/backend/dist/middleware/validation.js.map @@ -0,0 +1 @@ +{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/middleware/validation.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACpF,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;IAElC,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QAClD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YAC1B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,OAAO,EAAE,8BAA8B;aACxC;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,EAAE,CAAC;AACT,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACrF,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;IAEjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YAC1B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,OAAO,EAAE,uCAAuC;aACjD;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC;QACrD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YAC1B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,OAAO,EAAE,iCAAiC;aAC3C;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,EAAE,CAAC;AACT,CAAC,CAAC"} \ No newline at end of file diff --git a/backend/dist/models/Category.d.ts b/backend/dist/models/Category.d.ts new file mode 100644 index 0000000000..430a234355 --- /dev/null +++ b/backend/dist/models/Category.d.ts @@ -0,0 +1,13 @@ +import { Document } from 'mongoose'; +export interface ICategory extends Document { + id: string; + name: string; + description: string; + unit: string; +} +export declare const Category: import("mongoose").Model & ICategory & Required<{ + _id: unknown; +}> & { + __v: number; +}, any>; +//# sourceMappingURL=Category.d.ts.map \ No newline at end of file diff --git a/backend/dist/models/Category.d.ts.map b/backend/dist/models/Category.d.ts.map new file mode 100644 index 0000000000..652f4f493e --- /dev/null +++ b/backend/dist/models/Category.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Category.d.ts","sourceRoot":"","sources":["../../src/models/Category.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AASD,eAAO,MAAM,QAAQ;;;;OAA+C,CAAC"} \ No newline at end of file diff --git a/backend/dist/models/Category.js b/backend/dist/models/Category.js new file mode 100644 index 0000000000..a54d3ac6e0 --- /dev/null +++ b/backend/dist/models/Category.js @@ -0,0 +1,9 @@ +import { Schema, model } from 'mongoose'; +const CategorySchema = new Schema({ + id: { type: String, required: true, unique: true }, + name: { type: String, required: true }, + description: { type: String, required: true }, + unit: { type: String, required: true }, +}); +export const Category = model('Category', CategorySchema); +//# sourceMappingURL=Category.js.map \ No newline at end of file diff --git a/backend/dist/models/Category.js.map b/backend/dist/models/Category.js.map new file mode 100644 index 0000000000..c85b325326 --- /dev/null +++ b/backend/dist/models/Category.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Category.js","sourceRoot":"","sources":["../../src/models/Category.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAY,MAAM,UAAU,CAAC;AASnD,MAAM,cAAc,GAAG,IAAI,MAAM,CAAY;IAC3C,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAClD,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC7C,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;CACvC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAY,UAAU,EAAE,cAAc,CAAC,CAAC"} \ No newline at end of file diff --git a/backend/dist/models/Item.d.ts b/backend/dist/models/Item.d.ts new file mode 100644 index 0000000000..898dba4fb2 --- /dev/null +++ b/backend/dist/models/Item.d.ts @@ -0,0 +1,13 @@ +import { Document } from 'mongoose'; +export interface IItem extends Document { + name: string; + value: number; + label: string; + categoryId: string; +} +export declare const Item: import("mongoose").Model & IItem & Required<{ + _id: unknown; +}> & { + __v: number; +}, any>; +//# sourceMappingURL=Item.d.ts.map \ No newline at end of file diff --git a/backend/dist/models/Item.d.ts.map b/backend/dist/models/Item.d.ts.map new file mode 100644 index 0000000000..838ff69101 --- /dev/null +++ b/backend/dist/models/Item.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../src/models/Item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,WAAW,KAAM,SAAQ,QAAQ;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AASD,eAAO,MAAM,IAAI;;;;OAAmC,CAAC"} \ No newline at end of file diff --git a/backend/dist/models/Item.js b/backend/dist/models/Item.js new file mode 100644 index 0000000000..d63761ca2a --- /dev/null +++ b/backend/dist/models/Item.js @@ -0,0 +1,9 @@ +import { Schema, model } from 'mongoose'; +const ItemSchema = new Schema({ + name: { type: String, required: true }, + value: { type: Number, required: true }, + label: { type: String, required: true }, + categoryId: { type: String, required: true }, +}); +export const Item = model('Item', ItemSchema); +//# sourceMappingURL=Item.js.map \ No newline at end of file diff --git a/backend/dist/models/Item.js.map b/backend/dist/models/Item.js.map new file mode 100644 index 0000000000..9b1c481797 --- /dev/null +++ b/backend/dist/models/Item.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Item.js","sourceRoot":"","sources":["../../src/models/Item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAY,MAAM,UAAU,CAAC;AASnD,MAAM,UAAU,GAAG,IAAI,MAAM,CAAQ;IACnC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACvC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACvC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;CAC7C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,CAAQ,MAAM,EAAE,UAAU,CAAC,CAAC"} \ No newline at end of file diff --git a/backend/dist/routes/quizRoutes.d.ts b/backend/dist/routes/quizRoutes.d.ts new file mode 100644 index 0000000000..d0412c9688 --- /dev/null +++ b/backend/dist/routes/quizRoutes.d.ts @@ -0,0 +1,3 @@ +declare const router: import("express-serve-static-core").Router; +export default router; +//# sourceMappingURL=quizRoutes.d.ts.map \ No newline at end of file diff --git a/backend/dist/routes/quizRoutes.d.ts.map b/backend/dist/routes/quizRoutes.d.ts.map new file mode 100644 index 0000000000..4651ea0373 --- /dev/null +++ b/backend/dist/routes/quizRoutes.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"quizRoutes.d.ts","sourceRoot":"","sources":["../../src/routes/quizRoutes.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAMxB,eAAe,MAAM,CAAC"} \ No newline at end of file diff --git a/backend/dist/routes/quizRoutes.js b/backend/dist/routes/quizRoutes.js new file mode 100644 index 0000000000..7035ccc20e --- /dev/null +++ b/backend/dist/routes/quizRoutes.js @@ -0,0 +1,9 @@ +import { Router } from 'express'; +import { getCategories, getQuizItems, checkAnswers } from '../controllers/quizController.js'; +import { validateCategoryId, validateQuizAnswers } from '../middleware/validation.js'; +const router = Router(); +router.get('/categories', getCategories); +router.get('/items/:categoryId', validateCategoryId, getQuizItems); +router.post('/check', validateQuizAnswers, checkAnswers); +export default router; +//# sourceMappingURL=quizRoutes.js.map \ No newline at end of file diff --git a/backend/dist/routes/quizRoutes.js.map b/backend/dist/routes/quizRoutes.js.map new file mode 100644 index 0000000000..9745a4eb7a --- /dev/null +++ b/backend/dist/routes/quizRoutes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"quizRoutes.js","sourceRoot":"","sources":["../../src/routes/quizRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAC7F,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAEtF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;AAExB,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AACzC,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC;AACnE,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAC;AAEzD,eAAe,MAAM,CAAC"} \ No newline at end of file diff --git a/backend/dist/services/seedDb.d.ts b/backend/dist/services/seedDb.d.ts new file mode 100644 index 0000000000..835b95bb55 --- /dev/null +++ b/backend/dist/services/seedDb.d.ts @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=seedDb.d.ts.map \ No newline at end of file diff --git a/backend/dist/services/seedDb.d.ts.map b/backend/dist/services/seedDb.d.ts.map new file mode 100644 index 0000000000..95bbd340aa --- /dev/null +++ b/backend/dist/services/seedDb.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"seedDb.d.ts","sourceRoot":"","sources":["../../src/services/seedDb.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/backend/dist/services/seedDb.js b/backend/dist/services/seedDb.js new file mode 100644 index 0000000000..288f3a2e77 --- /dev/null +++ b/backend/dist/services/seedDb.js @@ -0,0 +1,64 @@ +// /backend/src/services/seedDb.ts +import mongoose from 'mongoose'; +import dotenv from 'dotenv'; +import path from 'path'; +import fs from 'fs'; +import { fileURLToPath } from 'url'; +import { Item } from '../models/Item.js'; +import { Category } from '../models/Category.js'; +dotenv.config(); +// Get __dirname equivalent for ES modules +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +// Helper function to read and parse a JSON file +const readJsonFile = (filePath) => { + try { + const fileContent = fs.readFileSync(filePath, 'utf-8'); + return JSON.parse(fileContent); + } + catch (error) { + console.error(`Error reading or parsing file: ${filePath}`, error); + return null; + } +}; +const seedData = async () => { + try { + if (!process.env.MONGODB_URI) { + throw new Error('MONGODB_URI is not defined in .env file'); + } + await mongoose.connect(process.env.MONGODB_URI); + console.log('Connected to MongoDB'); + // Clear existing data to prevent duplicates on re-seed + await Item.deleteMany({}); + await Category.deleteMany({}); + console.log('Existing data cleared.'); + // Step 1: Read and seed Category data from JSON files + const categoriesPath = path.join(__dirname, '../../data/categories'); + const categoryFiles = fs.readdirSync(categoriesPath).filter(file => file.endsWith('.json')); + for (const file of categoryFiles) { + const categoryData = readJsonFile(path.join(categoriesPath, file)); + if (categoryData) { + await Category.create(categoryData); + console.log(`Category "${categoryData.name}" seeded.`); + } + } + // Step 2: Read and seed Item data from JSON files + const itemsPath = path.join(__dirname, '../../data/items'); + const itemFiles = fs.readdirSync(itemsPath).filter(file => file.endsWith('.json')); + for (const file of itemFiles) { + const itemsData = readJsonFile(path.join(itemsPath, file)); + if (itemsData && Array.isArray(itemsData)) { + await Item.insertMany(itemsData); + console.log(`Items from file "${file}" seeded.`); + } + } + console.log('Database seeding complete! 🌱'); + mongoose.connection.close(); + } + catch (error) { + console.error('Database seeding failed:', error); + mongoose.connection.close(); + } +}; +seedData(); +//# sourceMappingURL=seedDb.js.map \ No newline at end of file diff --git a/backend/dist/services/seedDb.js.map b/backend/dist/services/seedDb.js.map new file mode 100644 index 0000000000..65155fa78d --- /dev/null +++ b/backend/dist/services/seedDb.js.map @@ -0,0 +1 @@ +{"version":3,"file":"seedDb.js","sourceRoot":"","sources":["../../src/services/seedDb.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/backend/dist/types.d.ts b/backend/dist/types.d.ts new file mode 100644 index 0000000000..2324761ceb --- /dev/null +++ b/backend/dist/types.d.ts @@ -0,0 +1 @@ +//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/backend/dist/types.d.ts.map b/backend/dist/types.d.ts.map new file mode 100644 index 0000000000..4d581892d5 --- /dev/null +++ b/backend/dist/types.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/backend/dist/types.js b/backend/dist/types.js new file mode 100644 index 0000000000..2f0e4146c5 --- /dev/null +++ b/backend/dist/types.js @@ -0,0 +1,2 @@ +"use strict"; +//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/backend/dist/types.js.map b/backend/dist/types.js.map new file mode 100644 index 0000000000..c768b79002 --- /dev/null +++ b/backend/dist/types.js.map @@ -0,0 +1 @@ +{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/backend/dist/types/quiz.d.ts b/backend/dist/types/quiz.d.ts new file mode 100644 index 0000000000..dbb78c6506 --- /dev/null +++ b/backend/dist/types/quiz.d.ts @@ -0,0 +1,42 @@ +export interface QuizItem { + _id: string; + id: string; + name: string; + value: number; + label: string; + categoryId: string; + source: { + name: string; + }; +} +export interface QuizCategory { + _id: string; + id: string; + name: string; + question: string; + unit: string; + unitVisible: boolean; + sort: 'asc' | 'desc'; + source: { + name: string; + url: string; + }; + version: number; +} +export interface QuizAnswer { + userAnswers: string[]; +} +export interface QuizResponse { + success: boolean; + data?: any; + error?: { + message: string; + stack?: string; + }; +} +export interface QuizCheckResult { + isCorrect: boolean; + correctOrder?: QuizItem[]; + userOrder?: QuizItem[]; +} +//# sourceMappingURL=quiz.d.ts.map \ No newline at end of file diff --git a/backend/dist/types/quiz.d.ts.map b/backend/dist/types/quiz.d.ts.map new file mode 100644 index 0000000000..255f9dcd86 --- /dev/null +++ b/backend/dist/types/quiz.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"quiz.d.ts","sourceRoot":"","sources":["../../src/types/quiz.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACxB"} \ No newline at end of file diff --git a/backend/dist/types/quiz.js b/backend/dist/types/quiz.js new file mode 100644 index 0000000000..53158c2c56 --- /dev/null +++ b/backend/dist/types/quiz.js @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=quiz.js.map \ No newline at end of file diff --git a/backend/dist/types/quiz.js.map b/backend/dist/types/quiz.js.map new file mode 100644 index 0000000000..2aa21c3e8d --- /dev/null +++ b/backend/dist/types/quiz.js.map @@ -0,0 +1 @@ +{"version":3,"file":"quiz.js","sourceRoot":"","sources":["../../src/types/quiz.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/backend/package.json b/backend/package.json index 8a97b69bbf..457e77a703 100644 --- a/backend/package.json +++ b/backend/package.json @@ -5,8 +5,11 @@ "main": "dist/index.js", "scripts": { "start": "node dist/index.js", - "dev": "nodemon --exec 'node --loader ts-node/esm' src/index.ts", - "build": "tsc" + "dev": "nodemon --exec 'tsx' src/index.ts", + "build": "tsc", + "build:watch": "tsc --watch", + "clean": "rm -rf dist", + "seed": "tsx src/services/seedDb.ts" }, "author": "", "license": "ISC", @@ -17,8 +20,7 @@ "dotenv": "^16.6.1", "express": "^4.19.2", "express-session": "^1.18.2", - "mongoose": "^8.4.1", - "spotify-web-api-node": "^5.0.2" + "mongoose": "^8.4.1" }, "keywords": [], "type": "module", @@ -27,13 +29,14 @@ "@types/cors": "^2.8.19", "@types/express": "^4.17.21", "@types/express-session": "^1.18.2", + "@types/mongoose": "^5.11.96", "@types/node": "^20.14.2", - "@types/spotify-web-api-node": "^5.0.11", "@typescript-eslint/eslint-plugin": "^8.39.0", "@typescript-eslint/parser": "^8.39.0", "eslint": "^8.57.0", "nodemon": "^3.1.3", "ts-node": "^10.9.2", + "tsx": "^4.20.4", "typescript": "^5.4.5" } } diff --git a/backend/src/config/database.ts b/backend/src/config/database.ts new file mode 100644 index 0000000000..ca668660c9 --- /dev/null +++ b/backend/src/config/database.ts @@ -0,0 +1,37 @@ +import mongoose from 'mongoose'; + +const connectDB = async (): Promise => { + try { + const mongoURI = process.env.MONGODB_URI; + + if (!mongoURI) { + throw new Error('MONGODB_URI is not defined in environment variables'); + } + + const conn = await mongoose.connect(mongoURI); + + console.log(`MongoDB Connected: ${conn.connection.host}`); + + // Handle connection events + mongoose.connection.on('error', (err) => { + console.error('MongoDB connection error:', err); + }); + + mongoose.connection.on('disconnected', () => { + console.log('MongoDB disconnected'); + }); + + // Graceful shutdown + process.on('SIGINT', async () => { + await mongoose.connection.close(); + console.log('MongoDB connection closed through app termination'); + process.exit(0); + }); + + } catch (error) { + console.error('Error connecting to MongoDB:', error); + process.exit(1); + } +}; + +export default connectDB; diff --git a/backend/src/controllers/quizController.ts b/backend/src/controllers/quizController.ts new file mode 100644 index 0000000000..0c28b2af8d --- /dev/null +++ b/backend/src/controllers/quizController.ts @@ -0,0 +1,94 @@ +import { Request, Response } from 'express'; +import { Item } from '../models/Item.js'; +import { Category } from '../models/Category.js'; +import { QuizItem, QuizCheckResult } from '../types/quiz.js'; + +// Helper function to shuffle an array +const shuffleArray = (array: T[]): T[] => { + for (let i = array.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [array[i], array[j]] = [array[j], array[i]]; + } + return array; +}; + +// Get all quiz categories +export const getCategories = async (req: Request, res: Response) => { + try { + const categories = await Category.find({}); + res.status(200).json({ + success: true, + data: categories + }); + } catch (error) { + const errorMessage = error instanceof Error ? error.message : 'Unknown error'; + res.status(500).json({ + success: false, + error: { message: 'Error fetching categories', details: errorMessage } + }); + } +}; + +// Get a random set of quiz items for a category +export const getQuizItems = async (req: Request, res: Response) => { + const { categoryId } = req.params; + try { + const items = await Item.find({ categoryId }); + if (items.length < 5) { + return res.status(404).json({ + success: false, + error: { message: 'Not enough items for this quiz.' } + }); + } + const shuffledItems = shuffleArray(items); + const quizItems = shuffledItems.slice(0, 5); // Take 5 random items + + // Remove the 'value' before sending to the client + const sanitizedItems = quizItems.map(item => ({ + _id: item._id, + id: item.id, + name: item.name, + label: item.label + })); + + res.status(200).json({ + success: true, + data: sanitizedItems + }); + } catch (error) { + const errorMessage = error instanceof Error ? error.message : 'Unknown error'; + res.status(500).json({ + success: false, + error: { message: 'Error fetching quiz items', details: errorMessage } + }); + } +}; + +// Check if the user's answers are correct +export const checkAnswers = async (req: Request, res: Response) => { + const { userAnswers } = req.body; // userAnswers is an array of item IDs + + try { + const itemIds = userAnswers.map((id: string) => id); + const correctItems = await Item.find({ '_id': { $in: itemIds } }).sort({ 'value': 1 }).lean(); + + // Check if the user's order matches the sorted order of correct answers + const isCorrect = userAnswers.every((id: string, index: number) => { + const correctItem = correctItems[index]; + return correctItem && id === correctItem._id.toString(); + }); + + const result: QuizCheckResult = { isCorrect }; + + res.status(200).json({ + success: true, + data: result + }); + } catch (error) { + const errorMessage = error instanceof Error ? error.message : 'Unknown error'; + res.status(500).json({ + success: false, + error: { message: 'Error checking answers', details: errorMessage } + }); + } +}; \ No newline at end of file diff --git a/backend/src/index.ts b/backend/src/index.ts index 10348e47b9..ebc427cd75 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -1,20 +1,16 @@ // server/src/index.ts import "dotenv/config"; import express, { Request, Response } from "express"; -import session from "express-session"; import cors from "cors"; -import cookieParser from "cookie-parser"; -import SpotifyWebApi from "spotify-web-api-node"; -import mongoose, { Document, Schema } from "mongoose"; +import mongoose from "mongoose"; +import quizRoutes from './routes/quizRoutes.js'; +import { errorHandler, notFound } from './middleware/errorHandler.js'; +import connectDB from './config/database.js'; // Validate that all necessary environment variables exist const requiredEnvVars = [ - "CLIENT_ID", - "CLIENT_SECRET", - "REDIRECT_URI", "MONGODB_URI", "FRONTEND_URI", - "SESSION_SECRET", ]; // Log environment info for debugging @@ -35,17 +31,6 @@ for (const envVar of requiredEnvVars) { const app = express(); const port = process.env.PORT || 8888; -// Extend the session object with our own properties -declare module "express-session" { - interface SessionData { - spotify_auth_state?: string; // Made optional as it's cleared after use - accessToken?: string; - refreshToken?: string; - expiresIn?: number; - tokenCreatedAt?: number; // Add timestamp when token was created - } -} - // Middleware app.use( cors({ @@ -58,7 +43,6 @@ app.use( allowedHeaders: ["Content-Type", "Authorization", "Cookie"], }) ); -app.use(cookieParser()); app.use(express.json()); // For handling JSON request bodies // Health check endpoint @@ -90,683 +74,17 @@ app.get("/health", (req: Request, res: Response) => { res.json(health); }); -app.use( - session({ - secret: process.env.SESSION_SECRET as string, - resave: true, // Changed to true to ensure session is saved - saveUninitialized: true, // Changed to true to save new sessions - cookie: { - httpOnly: true, // Improve security by making the cookie inaccessible to JavaScript - secure: process.env.NODE_ENV === "production", // Use secure cookies only in production - sameSite: process.env.NODE_ENV === "production" ? "none" : "lax", // Required for cross-origin cookies in production - maxAge: 60 * 60 * 1000, // 1 hour - }, - name: "spotify-session", // Give the session a specific name - }) -); - -// Connect to MongoDB -mongoose - .connect(process.env.MONGODB_URI as string) - .then(() => { - console.log("Connected to MongoDB Atlas"); - // Only populate the database when successfully connected - populateQuizQuestionsFromPlaylist(); - }) - .catch((err) => { - console.error("Could not connect to MongoDB Atlas:", err); - console.log( - "Server is running without database connection for development..." - ); - // Don't exit for development - allow server to run without DB - }); - -// Spotify API instance -const spotifyApi = new SpotifyWebApi({ - clientId: process.env.CLIENT_ID, - clientSecret: process.env.CLIENT_SECRET, - redirectUri: process.env.REDIRECT_URI, -}); - -// Generate a random string for the state parameter (for security) -const generateRandomString = (length: number): string => { - let text = ""; - const possible = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - for (let i = 0; i < length; i++) { - text += possible.charAt(Math.floor(Math.random() * possible.length)); - } - return text; -}; - -// Utility function to handle Spotify API errors -const handleSpotifyError = (err: unknown, res: Response, operation: string) => { - console.error(`Error during ${operation}:`, err); - - if (err && typeof err === "object" && "statusCode" in err) { - const statusCode = (err as { statusCode: number }).statusCode; - if (statusCode === 403) { - res - .status(403) - .json({ error: "Premium account required for playback control." }); - } else if (statusCode === 404) { - res.status(404).json({ error: "Device not found or not available." }); - } else if (statusCode === 429) { - res - .status(429) - .json({ error: "Rate limit exceeded. Please try again later." }); - } else { - res.status(500).json({ error: `Could not ${operation}.` }); - } - } else { - res.status(500).json({ error: `Could not ${operation}.` }); - } -}; - -// --- Authentication routes (for the user to log in with Spotify) --- - -// 1. Log in with Spotify -app.get("/login", (req: Request, res: Response) => { - const state = generateRandomString(16); - req.session.spotify_auth_state = state; // Save state in the session - - console.log("OAuth login initiated with state:", state); - console.log("Session ID:", req.sessionID); - console.log("Frontend URI:", process.env.FRONTEND_URI); - console.log("Session data before redirect:", req.session); - - // Required scopes to control the user's Spotify app and read playback status - const scope = [ - "user-read-private", - "user-read-email", - "user-read-playback-state", - "user-modify-playback-state", - ]; - - const authUrl = spotifyApi.createAuthorizeURL(scope, state); - console.log("Redirecting to Spotify OAuth URL:", authUrl); +// Use the new quiz routes +app.use('/api/quiz', quizRoutes); - // Force session save before redirect - req.session.save((err) => { - if (err) { - console.error("Error saving session:", err); - return res.status(500).json({ error: "Failed to save session" }); - } - console.log("Session saved successfully, redirecting to Spotify"); - res.redirect(authUrl); - }); -}); - -// 2. Callback after Spotify authentication -app.get("/callback", async (req: Request, res: Response) => { - const { code, state } = req.query as { - code: string | null; - state: string | null; - }; - const storedState = req.session.spotify_auth_state; - - console.log("OAuth callback received:"); - console.log("- Received state:", state); - console.log("- Stored state:", storedState); - console.log("- Session ID:", req.sessionID); - console.log("- Session data:", req.session); - - if (state === null) { - console.error("No state parameter received from Spotify"); - res.redirect(`${process.env.FRONTEND_URI}/login?error=no_state`); - return; - } - - if (!storedState) { - console.error("No stored state found in session"); - res.redirect(`${process.env.FRONTEND_URI}/login?error=no_stored_state`); - return; - } - - if (state !== storedState) { - console.error("State mismatch in OAuth callback"); - console.error("- Expected:", storedState); - console.error("- Received:", state); - res.redirect(`${process.env.FRONTEND_URI}/login?error=state_mismatch`); - return; - } - - if (!code) { - console.error("No authorization code received from Spotify"); - res.redirect(`${process.env.FRONTEND_URI}/login?error=no_code`); - return; - } - - // Clear state from the session - req.session.spotify_auth_state = undefined; - - try { - const data = await spotifyApi.authorizationCodeGrant(code); - const { access_token, refresh_token, expires_in } = data.body; - - // Save tokens in the session - req.session.accessToken = access_token; - req.session.refreshToken = refresh_token; - req.session.expiresIn = expires_in; - req.session.tokenCreatedAt = Date.now(); // Store timestamp - - console.log("OAuth tokens received and stored in session"); - console.log( - "- Access token length:", - access_token ? access_token.length : 0 - ); - console.log( - "- Refresh token length:", - refresh_token ? refresh_token.length : 0 - ); - console.log("- Expires in:", expires_in); - - // Redirect to the frontend callback route to handle the OAuth completion - res.redirect(`${process.env.FRONTEND_URI}/callback?success=true`); - } catch (err) { - console.error("Could not get access token:", err); - res.redirect(`${process.env.FRONTEND_URI}/login?error=invalid_token`); - } -}); - -// 3. Refresh access token -app.get("/refresh_token", async (req: Request, res: Response) => { - try { - const refreshToken = req.session.refreshToken; - if (!refreshToken) { - return res.status(401).json({ error: "No refresh token in session." }); - } - spotifyApi.setRefreshToken(refreshToken); - const data = await spotifyApi.refreshAccessToken(); - const { access_token, expires_in } = data.body; +// 404 handler +app.use(notFound); - req.session.accessToken = access_token; - req.session.expiresIn = expires_in; - req.session.tokenCreatedAt = Date.now(); // Update timestamp - res.json({ success: true }); - } catch (err) { - console.error("Could not refresh access token:", err); - res.status(500).json({ error: "Could not refresh access token" }); - } -}); - -// 3.5. Check token status -app.get("/token-status", (req: Request, res: Response) => { - const { accessToken, expiresIn, tokenCreatedAt } = req.session; - - if (!accessToken || !expiresIn || !tokenCreatedAt) { - return res.status(401).json({ - valid: false, - reason: "No tokens in session", - needsRefresh: false, - }); - } - - const now = Date.now(); - const tokenAge = now - tokenCreatedAt; - const timeUntilExpiry = expiresIn * 1000 - tokenAge; - - // Token is valid if it hasn't expired yet - const isValid = timeUntilExpiry > 0; - - // Suggest refresh if token expires in less than 5 minutes - const needsRefresh = timeUntilExpiry < 5 * 60 * 1000; - - res.json({ - valid: isValid, - reason: isValid ? "Token is valid" : "Token has expired", - needsRefresh, - timeUntilExpiry: Math.max(0, timeUntilExpiry), - expiresIn: expiresIn * 1000, - tokenAge, - }); -}); - -// 4. Get user profile (via backend session) -app.get("/user-profile", async (req: Request, res: Response) => { - try { - const accessToken = req.session.accessToken; - if (!accessToken) { - return res.status(401).json({ error: "Not logged in." }); - } - spotifyApi.setAccessToken(accessToken); - const data = await spotifyApi.getMe(); - res.json(data.body); - } catch (err) { - console.error("Error fetching user profile:", err); - res.status(500).json({ error: "Could not fetch user profile." }); - } -}); - -// 5. Log out -app.get("/logout", (req: Request, res: Response) => { - req.session.destroy((err) => { - if (err) { - console.error("Error during logout:", err); - return res.status(500).json({ error: "Could not log out." }); - } - res.json({ success: true }); - }); -}); - -// --- Spotify Player routes (acting as a proxy) --- - -// 6. Start/Resume playback (PUT /me/player/play) -app.put("/spotify/play", async (req: Request, res: Response) => { - try { - const { trackId, contextUri, uris, deviceId, positionMs, offset } = - req.body; - const accessToken = req.session.accessToken; - - if (!accessToken) { - return res.status(401).json({ error: "Not authenticated." }); - } - - spotifyApi.setAccessToken(accessToken); - - // Build the play options object - const playOptions: { - device_id?: string; - context_uri?: string; - uris?: string[]; - position_ms?: number; - offset?: { position: number } | { uri: string }; - } = {}; - - if (deviceId) { - playOptions.device_id = deviceId; - } - - if (contextUri) { - playOptions.context_uri = contextUri; - } else if (uris && uris.length > 0) { - playOptions.uris = uris; - } else if (trackId) { - playOptions.uris = [`spotify:track:${trackId}`]; - } - - if (positionMs !== undefined) { - playOptions.position_ms = positionMs; - } - - if (offset) { - // Ensure offset has either position or uri, not both - if (offset.position !== undefined) { - playOptions.offset = { position: offset.position }; - } else if (offset.uri) { - playOptions.offset = { uri: offset.uri }; - } - } - - await spotifyApi.play(playOptions); - res.status(204).send(); // Spotify returns 204 for successful playback start - } catch (err: unknown) { - handleSpotifyError(err, res, "start playback"); - } -}); - -// 7. Pause playback (PUT /me/player/pause) -app.put("/spotify/pause", async (req: Request, res: Response) => { - try { - const { deviceId } = req.body; - const accessToken = req.session.accessToken; - - if (!accessToken) { - return res.status(401).json({ error: "Not authenticated." }); - } - - spotifyApi.setAccessToken(accessToken); - - const pauseOptions: { device_id?: string } = {}; - if (deviceId) { - pauseOptions.device_id = deviceId; - } - - await spotifyApi.pause(pauseOptions); - res.status(204).send(); - } catch (err: unknown) { - handleSpotifyError(err, res, "pause playback"); - } -}); +// Error handling middleware +app.use(errorHandler); -// 8. Skip to next track (POST /me/player/next) -app.post("/spotify/next", async (req: Request, res: Response) => { - try { - const { deviceId } = req.body; - const accessToken = req.session.accessToken; - - if (!accessToken) { - return res.status(401).json({ error: "Not authenticated." }); - } - - spotifyApi.setAccessToken(accessToken); - - const nextOptions: { device_id?: string } = {}; - if (deviceId) { - nextOptions.device_id = deviceId; - } - - await spotifyApi.skipToNext(nextOptions); - res.status(204).send(); - } catch (err: unknown) { - handleSpotifyError(err, res, "skip to next track"); - } -}); - -// 9. Skip to previous track (POST /me/player/previous) -app.post("/spotify/previous", async (req: Request, res: Response) => { - try { - const { deviceId } = req.body; - const accessToken = req.session.accessToken; - - if (!accessToken) { - return res.status(401).json({ error: "Not authenticated." }); - } - - spotifyApi.setAccessToken(accessToken); - - const previousOptions: { device_id?: string } = {}; - if (deviceId) { - previousOptions.device_id = deviceId; - } - - await spotifyApi.skipToPrevious(previousOptions); - res.status(204).send(); - } catch (err: unknown) { - handleSpotifyError(err, res, "skip to previous track"); - } -}); - -// 10. Get available devices (GET /me/player/devices) -app.get("/spotify/devices", async (req: Request, res: Response) => { - try { - const accessToken = req.session.accessToken; - - if (!accessToken) { - return res.status(401).json({ error: "Not authenticated." }); - } - - spotifyApi.setAccessToken(accessToken); - const data = await spotifyApi.getMyDevices(); - res.json(data.body); - } catch (err: unknown) { - console.error("Error getting devices:", err); - - if (err && typeof err === "object" && "statusCode" in err) { - const statusCode = (err as { statusCode: number }).statusCode; - if (statusCode === 401) { - res.status(401).json({ error: "Not authenticated." }); - } else { - res.status(500).json({ error: "Could not get devices." }); - } - } else { - res.status(500).json({ error: "Could not get devices." }); - } - } -}); - -// 11. Get current playback state (GET /me/player) -app.get("/spotify/playback-state", async (req: Request, res: Response) => { - try { - const accessToken = req.session.accessToken; - - if (!accessToken) { - return res.status(401).json({ error: "Not authenticated." }); - } - - spotifyApi.setAccessToken(accessToken); - const data = await spotifyApi.getMyCurrentPlaybackState(); - - if (!data.body) { - // User is not currently playing anything - return res.status(204).send(); - } - - res.json(data.body); - } catch (err: unknown) { - console.error("Error getting playback state:", err); - - if (err && typeof err === "object" && "statusCode" in err) { - const statusCode = (err as { statusCode: number }).statusCode; - if (statusCode === 204) { - // User is not currently playing anything - res.status(204).send(); - } else if (statusCode === 401) { - res.status(401).json({ error: "Not authenticated." }); - } else { - res.status(500).json({ error: "Could not get playback state." }); - } - } else { - res.status(500).json({ error: "Could not get playback state." }); - } - } -}); - -// 12. Transfer playback to device (PUT /me/player) -app.put("/spotify/transfer", async (req: Request, res: Response) => { - try { - const { deviceId, play } = req.body; - const accessToken = req.session.accessToken; - - if (!accessToken || !deviceId) { - return res.status(400).json({ error: "Device ID is required." }); - } - - spotifyApi.setAccessToken(accessToken); - // Use the correct method to transfer playback - await spotifyApi.transferMyPlayback([deviceId], { play }); - - res.status(204).send(); - } catch (err: unknown) { - handleSpotifyError(err, res, "transfer playback"); - } -}); - -// --- MongoDB Model (Quiz) --- -// This model defines how the quiz are stored in the database. -// `trackId` is the Spotify Track ID, used to play the song. - -// Define an interface for the data model -interface IQuizQuestion extends Document { - trackId: string; - trackTitle: string; - trackArtist: string; - releaseYear: number; - trackUrl: string; -} - -const quizSchema: Schema = new Schema({ - trackId: String, - trackTitle: String, - trackArtist: String, - releaseYear: Number, - trackUrl: String, -}); - -const QuizQuestion = mongoose.model("QuizQuestion", quizSchema); - -// API route to fetch quiz questions -app.get("/quiz-questions", async (req: Request, res: Response) => { - try { - // Check if mongoose is connected - if (mongoose.connection.readyState !== 1) { - return res.status(503).json({ error: "Database is not available" }); - } - const questions = await QuizQuestion.find({}); - res.json(questions); - } catch (err) { - console.error("Error fetching quiz questions:", err); - res.status(500).json({ error: "Could not fetch quiz questions" }); - } -}); - -// API route to fetch quiz questions with statistics and formatted information -app.get("/quiz-questions/detailed", async (req: Request, res: Response) => { - try { - // Check if mongoose is connected - if (mongoose.connection.readyState !== 1) { - return res.status(503).json({ error: "Database is not available" }); - } - - const questions = await QuizQuestion.find({}); - - // Calculate statistics - const totalQuestions = questions.length; - const years = questions.map((q) => q.releaseYear); - const uniqueYears = [...new Set(years)].sort((a, b) => a - b); - const yearRange = { - min: Math.min(...years), - max: Math.max(...years), - }; - - // Group by artist - const artistCounts: { [key: string]: number } = {}; - questions.forEach((q) => { - artistCounts[q.trackArtist] = (artistCounts[q.trackArtist] || 0) + 1; - }); - - // Top 5 artists - const topArtists = Object.entries(artistCounts) - .sort(([, a], [, b]) => b - a) - .slice(0, 5) - .map(([artist, count]) => ({ artist, count })); - - // Group by decade - const decadeCounts: { [key: string]: number } = {}; - questions.forEach((q) => { - const decade = Math.floor(q.releaseYear / 10) * 10; - const decadeLabel = `${decade}s`; - decadeCounts[decadeLabel] = (decadeCounts[decadeLabel] || 0) + 1; - }); - - const response = { - summary: { - totalQuestions, - yearRange, - uniqueYears: uniqueYears.length, - decades: Object.keys(decadeCounts).length, - }, - statistics: { - topArtists, - decadeBreakdown: decadeCounts, - yearDistribution: uniqueYears, - }, - questions: questions.map((q) => ({ - id: q._id, - trackId: q.trackId, - title: q.trackTitle, - artist: q.trackArtist, - year: q.releaseYear, - decade: `${Math.floor(q.releaseYear / 10) * 10}s`, - })), - }; - - res.json(response); - } catch (err) { - console.error("Error fetching detailed quiz questions:", err); - res.status(500).json({ error: "Could not fetch detailed quiz questions" }); - } -}); - -// API route to get a random quiz question -app.get("/quiz-questions/random", async (req: Request, res: Response) => { - try { - // Check if mongoose is connected - if (mongoose.connection.readyState !== 1) { - return res.status(503).json({ error: "Database is not available" }); - } - - const count = await QuizQuestion.countDocuments(); - if (count === 0) { - return res.status(404).json({ error: "No quiz questions available" }); - } - - const randomIndex = Math.floor(Math.random() * count); - const randomQuestion = await QuizQuestion.findOne().skip(randomIndex); - - if (!randomQuestion) { - return res - .status(404) - .json({ error: "Could not find a random question" }); - } - - res.json({ - question: { - id: randomQuestion._id, - trackId: randomQuestion.trackId, - title: randomQuestion.trackTitle, - artist: randomQuestion.trackArtist, - year: randomQuestion.releaseYear, - decade: `${Math.floor(randomQuestion.releaseYear / 10) * 10}s`, - }, - totalQuestions: count, - }); - } catch (err) { - console.error("Error fetching random quiz question:", err); - res.status(500).json({ error: "Could not fetch a random quiz question" }); - } -}); - -// --- Function to add quiz questions from a specific playlist --- -// Use this function to populate your MongoDB database with questions from your playlist. -// It fetches an app-specific access token, so it does not require a logged-in user. - -// Configuration constants -const PLAYLIST_ID = "6YHoO8ETcwxgq5WTjDpyAQ"; - -async function populateQuizQuestionsFromPlaylist() { - // ID for the playlist you want to fetch tracks from. - const playlistId = PLAYLIST_ID; - - try { - // Check if mongoose is connected before proceeding - if (mongoose.connection.readyState !== 1) { - console.log("MongoDB not connected, skipping database population"); - return; - } - - // Remove existing questions before adding new ones - await QuizQuestion.deleteMany({}); - console.log("Existing quiz questions have been cleared from the database."); - - const data = await spotifyApi.clientCredentialsGrant(); - spotifyApi.setAccessToken(data.body["access_token"]); - console.log("Fetched Client Credentials token."); - - const playlistData = await spotifyApi.getPlaylistTracks(playlistId); - const tracks = playlistData.body.items.filter((item) => item.track); - - const quizQuestions = tracks - .map((item) => { - const track = item.track as SpotifyApi.TrackObjectFull; - if (track) { - const trackTitle = track.name; - const trackArtist = track.artists[0]?.name || "Unknown Artist"; - const releaseYear = new Date(track.album.release_date).getFullYear(); - const trackUrl = track.external_urls.spotify; - return { - trackId: track.id, - trackTitle, - trackArtist, - releaseYear, - trackUrl, - }; - } - }) - .filter(Boolean) as IQuizQuestion[]; // Filter out any null values - - if (quizQuestions.length > 0) { - await QuizQuestion.insertMany(quizQuestions); - console.log( - `Database has been populated with ${quizQuestions.length} questions from the playlist.` - ); - } else { - console.log("Could not find any songs to create questions from."); - } - } catch (error) { - console.error("An error occurred while populating the database:", error); - } -} +// Connect to MongoDB +connectDB(); // Start the server app @@ -781,4 +99,4 @@ app .on("error", (err) => { console.error("Error starting the server:", err); process.exit(1); - }); + }); \ No newline at end of file diff --git a/backend/src/middleware/errorHandler.ts b/backend/src/middleware/errorHandler.ts new file mode 100644 index 0000000000..1d4c15d6b2 --- /dev/null +++ b/backend/src/middleware/errorHandler.ts @@ -0,0 +1,37 @@ +import { Request, Response, NextFunction } from 'express'; + +export interface AppError extends Error { + statusCode?: number; + isOperational?: boolean; +} + +export const errorHandler = ( + err: AppError, + req: Request, + res: Response, + next: NextFunction +) => { + const statusCode = err.statusCode || 500; + const message = err.message || 'Internal Server Error'; + + // Log error for debugging + console.error(`Error ${statusCode}: ${message}`); + console.error(err.stack); + + res.status(statusCode).json({ + success: false, + error: { + message, + ...(process.env.NODE_ENV === 'development' && { stack: err.stack }) + } + }); +}; + +export const notFound = (req: Request, res: Response) => { + res.status(404).json({ + success: false, + error: { + message: `Route ${req.originalUrl} not found` + } + }); +}; diff --git a/backend/src/middleware/validation.ts b/backend/src/middleware/validation.ts new file mode 100644 index 0000000000..48689880c0 --- /dev/null +++ b/backend/src/middleware/validation.ts @@ -0,0 +1,40 @@ +import { Request, Response, NextFunction } from 'express'; + +export const validateCategoryId = (req: Request, res: Response, next: NextFunction) => { + const { categoryId } = req.params; + + if (!categoryId || typeof categoryId !== 'string') { + return res.status(400).json({ + success: false, + error: { + message: 'Valid categoryId is required' + } + }); + } + + next(); +}; + +export const validateQuizAnswers = (req: Request, res: Response, next: NextFunction) => { + const { userAnswers } = req.body; + + if (!Array.isArray(userAnswers) || userAnswers.length === 0) { + return res.status(400).json({ + success: false, + error: { + message: 'userAnswers must be a non-empty array' + } + }); + } + + if (!userAnswers.every(id => typeof id === 'string')) { + return res.status(400).json({ + success: false, + error: { + message: 'All userAnswers must be strings' + } + }); + } + + next(); +}; diff --git a/backend/src/models/Category.ts b/backend/src/models/Category.ts new file mode 100644 index 0000000000..bab7f38089 --- /dev/null +++ b/backend/src/models/Category.ts @@ -0,0 +1,17 @@ +import { Schema, model, Document } from 'mongoose'; + +export interface ICategory extends Document { + id: string; + name: string; + description: string; + unit: string; +} + +const CategorySchema = new Schema({ + id: { type: String, required: true, unique: true }, + name: { type: String, required: true }, + description: { type: String, required: true }, + unit: { type: String, required: true }, +}); + +export const Category = model('Category', CategorySchema); \ No newline at end of file diff --git a/backend/src/models/Item.ts b/backend/src/models/Item.ts new file mode 100644 index 0000000000..524e81c957 --- /dev/null +++ b/backend/src/models/Item.ts @@ -0,0 +1,17 @@ +import { Schema, model, Document } from 'mongoose'; + +export interface IItem extends Document { + name: string; + value: number; + label: string; + categoryId: string; +} + +const ItemSchema = new Schema({ + name: { type: String, required: true }, + value: { type: Number, required: true }, + label: { type: String, required: true }, + categoryId: { type: String, required: true }, +}); + +export const Item = model('Item', ItemSchema); \ No newline at end of file diff --git a/backend/src/routes/quizRoutes.ts b/backend/src/routes/quizRoutes.ts new file mode 100644 index 0000000000..007f1f8956 --- /dev/null +++ b/backend/src/routes/quizRoutes.ts @@ -0,0 +1,11 @@ +import { Router } from 'express'; +import { getCategories, getQuizItems, checkAnswers } from '../controllers/quizController.js'; +import { validateCategoryId, validateQuizAnswers } from '../middleware/validation.js'; + +const router = Router(); + +router.get('/categories', getCategories); +router.get('/items/:categoryId', validateCategoryId, getQuizItems); +router.post('/check', validateQuizAnswers, checkAnswers); + +export default router; \ No newline at end of file diff --git a/backend/src/services/seedDb.ts b/backend/src/services/seedDb.ts new file mode 100644 index 0000000000..8070c2b436 --- /dev/null +++ b/backend/src/services/seedDb.ts @@ -0,0 +1,74 @@ +// /backend/src/services/seedDb.ts +import mongoose from 'mongoose'; +import dotenv from 'dotenv'; +import path from 'path'; +import fs from 'fs'; +import { fileURLToPath } from 'url'; +import { Item } from '../models/Item.js'; +import { Category } from '../models/Category.js'; + +dotenv.config(); + +// Get __dirname equivalent for ES modules +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +// Helper function to read and parse a JSON file +const readJsonFile = (filePath: string) => { + try { + const fileContent = fs.readFileSync(filePath, 'utf-8'); + return JSON.parse(fileContent); + } catch (error) { + console.error(`Error reading or parsing file: ${filePath}`, error); + return null; + } +}; + +const seedData = async () => { + try { + if (!process.env.MONGODB_URI) { + throw new Error('MONGODB_URI is not defined in .env file'); + } + + await mongoose.connect(process.env.MONGODB_URI); + console.log('Connected to MongoDB'); + + // Clear existing data to prevent duplicates on re-seed + await Item.deleteMany({}); + await Category.deleteMany({}); + console.log('Existing data cleared.'); + + // Step 1: Read and seed Category data from JSON files + const categoriesPath = path.join(__dirname, '../../data/categories'); + const categoryFiles = fs.readdirSync(categoriesPath).filter(file => file.endsWith('.json')); + + for (const file of categoryFiles) { + const categoryData = readJsonFile(path.join(categoriesPath, file)); + if (categoryData) { + await Category.create(categoryData); + console.log(`Category "${categoryData.name}" seeded.`); + } + } + + // Step 2: Read and seed Item data from JSON files + const itemsPath = path.join(__dirname, '../../data/items'); + const itemFiles = fs.readdirSync(itemsPath).filter(file => file.endsWith('.json')); + + for (const file of itemFiles) { + const itemsData = readJsonFile(path.join(itemsPath, file)); + if (itemsData && Array.isArray(itemsData)) { + await Item.insertMany(itemsData); + console.log(`Items from file "${file}" seeded.`); + } + } + + console.log('Database seeding complete! 🌱'); + mongoose.connection.close(); + + } catch (error) { + console.error('Database seeding failed:', error); + mongoose.connection.close(); + } +}; + +seedData(); \ No newline at end of file diff --git a/backend/src/types/quiz.ts b/backend/src/types/quiz.ts new file mode 100644 index 0000000000..384f2b5b14 --- /dev/null +++ b/backend/src/types/quiz.ts @@ -0,0 +1,45 @@ +export interface QuizItem { + _id: string; + id: string; + name: string; + value: number; + label: string; + categoryId: string; + source: { + name: string; + }; +} + +export interface QuizCategory { + _id: string; + id: string; + name: string; + question: string; + unit: string; + unitVisible: boolean; + sort: 'asc' | 'desc'; + source: { + name: string; + url: string; + }; + version: number; +} + +export interface QuizAnswer { + userAnswers: string[]; +} + +export interface QuizResponse { + success: boolean; + data?: any; + error?: { + message: string; + stack?: string; + }; +} + +export interface QuizCheckResult { + isCorrect: boolean; + correctOrder?: QuizItem[]; + userOrder?: QuizItem[]; +} diff --git a/backend/tsconfig.json b/backend/tsconfig.json index da51ecb44a..6bc05fa79d 100644 --- a/backend/tsconfig.json +++ b/backend/tsconfig.json @@ -1,15 +1,26 @@ { "compilerOptions": { - "target": "es2020", + "target": "es2022", "module": "esnext", - "moduleResolution": "node", + "moduleResolution": "bundler", "esModuleInterop": true, "allowSyntheticDefaultImports": true, "forceConsistentCasingInFileNames": true, "strict": true, "skipLibCheck": true, - "outDir": "./dist" + "outDir": "./dist", + "rootDir": "./src", + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "resolveJsonModule": true, + "allowJs": true, + "noEmit": false }, "include": ["src/**/*"], - "exclude": ["node_modules"] + "exclude": ["node_modules", "dist"], + "ts-node": { + "esm": true, + "experimentalSpecifierResolution": "node" + } } \ No newline at end of file diff --git a/frontend/dist/assets/banana-DrMeE8r5.png b/frontend/dist/assets/banana-DrMeE8r5.png new file mode 100644 index 0000000000000000000000000000000000000000..d7f46bd573d1223f519b3cd05497d799495d9491 GIT binary patch literal 591550 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

6H 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

rqhqU9JyDh| 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%0D>gsppXFS;W?fKOQvp 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

aJbmd(iAV_rqDjC9`WH~ccPFN_IxRvOD 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 Uxt5@K5dZ)H07*qoM6N<$f(cMDGXMYp literal 0 HcmV?d00001 diff --git a/frontend/dist/assets/banganzalogo-DkEbuI83.svg b/frontend/dist/assets/banganzalogo-DkEbuI83.svg new file mode 100644 index 0000000000..7e13ea3ce0 --- /dev/null +++ b/frontend/dist/assets/banganzalogo-DkEbuI83.svg @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/frontend/dist/assets/index-BOltIuFh.css b/frontend/dist/assets/index-BOltIuFh.css new file mode 100644 index 0000000000..48953e62aa --- /dev/null +++ b/frontend/dist/assets/index-BOltIuFh.css @@ -0,0 +1 @@ +/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-scroll-snap-strictness:proximity;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-800:oklch(47.3% .137 46.201);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-blue-50:oklch(97% .014 254.604);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-800:oklch(42.4% .199 265.638);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-2xl:42rem;--container-4xl:56rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--text-8xl:6rem;--text-8xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-black:900;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--blur-sm:8px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-base-100:#fefcfa;--color-base-200:#fdf8f3;--color-base-300:#fbf4ec;--color-base-400:#f9ecdf;--color-accent-200:#86464e;--color-accent-300:#783f46;--color-accent-400:#6b383e;--color-accent-500:#5d3136;--color-accent-600:#502a2f;--color-accent-800:#351c1f;--color-accent-900:#281517;--color-primary:#5d3136;--color-primary-hover:#4a272b;--color-primary-focus:#6b3a40;--color-background:#f9ecdf;--color-surface:#fefcfa;--color-card:#fdf8f3;--color-muted:#f0dbc5;--color-muted-foreground:#946971;--color-foreground:#5d3136;--color-border:#ebd2b8;--color-border-muted:#f5e4d2}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.-top-2{top:calc(var(--spacing)*-2)}.top-0{top:calc(var(--spacing)*0)}.top-1{top:calc(var(--spacing)*1)}.top-1\/3{top:33.3333%}.top-2{top:calc(var(--spacing)*2)}.top-3{top:calc(var(--spacing)*3)}.top-4{top:calc(var(--spacing)*4)}.top-\[-10\%\]{top:-10%}.-right-1{right:calc(var(--spacing)*-1)}.-right-16{right:calc(var(--spacing)*-16)}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.right-2{right:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.-bottom-1{bottom:calc(var(--spacing)*-1)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-1{bottom:calc(var(--spacing)*1)}.bottom-1\/4{bottom:25%}.bottom-2{bottom:calc(var(--spacing)*2)}.bottom-4{bottom:calc(var(--spacing)*4)}.-left-1{left:calc(var(--spacing)*-1)}.-left-20{left:calc(var(--spacing)*-20)}.left-0{left:calc(var(--spacing)*0)}.left-1{left:calc(var(--spacing)*1)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing)*2)}.left-4{left:calc(var(--spacing)*4)}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[60\]{z-index:60}.-mx-4{margin-inline:calc(var(--spacing)*-4)}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-10{margin-top:calc(var(--spacing)*10)}.mt-auto{margin-top:auto}.mb-0\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.ml-0\.5{margin-left:calc(var(--spacing)*.5)}.ml-1{margin-left:calc(var(--spacing)*1)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-0{height:calc(var(--spacing)*0)}.h-0\.5{height:calc(var(--spacing)*.5)}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-64{height:calc(var(--spacing)*64)}.h-72{height:calc(var(--spacing)*72)}.h-80{height:calc(var(--spacing)*80)}.h-\[180px\]{height:180px}.h-full{height:100%}.max-h-\[90vh\]{max-height:90vh}.min-h-screen{min-height:100vh}.w-0{width:calc(var(--spacing)*0)}.w-0\.5{width:calc(var(--spacing)*.5)}.w-1{width:calc(var(--spacing)*1)}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-2{width:calc(var(--spacing)*2)}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-48{width:calc(var(--spacing)*48)}.w-60{width:calc(var(--spacing)*60)}.w-72{width:calc(var(--spacing)*72)}.w-80{width:calc(var(--spacing)*80)}.w-\[60\%\]{width:60%}.w-\[136px\]{width:136px}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-1px\]{--tw-translate-y:-1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.-rotate-45{rotate:-45deg}.-rotate-\[12deg\]{rotate:-12deg}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.rotate-\[-45deg\]{rotate:-45deg}.rotate-\[14deg\]{rotate:14deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-\[banana-fly_4000ms_linear_infinite\]{animation:4s linear infinite banana-fly}.animate-\[logo-bounce-in_2400ms_cubic-bezier\(\.25\,1\.5\,\.5\,1\)_forwards\]{animation:2.4s cubic-bezier(.25,1.5,.5,1) forwards logo-bounce-in}.animate-spin{animation:var(--animate-spin)}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-start{scroll-snap-align:start}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-10{gap:calc(var(--spacing)*10)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-12>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*12)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*12)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-\[4px\]{border-top-style:var(--tw-border-style);border-top-width:4px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-b-\[4px\]{border-bottom-style:var(--tw-border-style);border-bottom-width:4px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-\[6px\]{border-left-style:var(--tw-border-style);border-left-width:6px}.border-\[\#1DB954\]{border-color:#1db954}.border-accent-400{border-color:var(--color-accent-400)}.border-amber-200{border-color:var(--color-amber-200)}.border-base-100{border-color:var(--color-base-100)}.border-base-100\/30{border-color:#fefcfa4d}@supports (color:color-mix(in lab,red,red)){.border-base-100\/30{border-color:color-mix(in oklab,var(--color-base-100)30%,transparent)}}.border-blue-200{border-color:var(--color-blue-200)}.border-border{border-color:var(--color-border)}.border-border-muted{border-color:var(--color-border-muted)}.border-border\/60{border-color:#ebd2b899}@supports (color:color-mix(in lab,red,red)){.border-border\/60{border-color:color-mix(in oklab,var(--color-border)60%,transparent)}}.border-current{border-color:currentColor}.border-primary{border-color:var(--color-primary)}.border-primary\/20{border-color:#5d313633}@supports (color:color-mix(in lab,red,red)){.border-primary\/20{border-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.border-primary\/30{border-color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.border-primary\/30{border-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.border-red-200{border-color:var(--color-red-200)}.border-red-400{border-color:var(--color-red-400)}.border-white\/30{border-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.border-white\/30{border-color:color-mix(in oklab,var(--color-white)30%,transparent)}}.border-t-base-100{border-top-color:var(--color-base-100)}.border-t-transparent{border-top-color:#0000}.border-t-white{border-top-color:var(--color-white)}.border-b-transparent{border-bottom-color:#0000}.border-l-base-100{border-left-color:var(--color-base-100)}.bg-\[\#1DB954\]{background-color:#1db954}.bg-\[\#2a0d0d\]{background-color:#2a0d0d}.bg-\[var\(--color-base-400\)\]{background-color:var(--color-base-400)}.bg-accent-300{background-color:var(--color-accent-300)}.bg-accent-900\/80{background-color:#281517cc}@supports (color:color-mix(in lab,red,red)){.bg-accent-900\/80{background-color:color-mix(in oklab,var(--color-accent-900)80%,transparent)}}.bg-amber-50{background-color:var(--color-amber-50)}.bg-background{background-color:var(--color-background)}.bg-base-100{background-color:var(--color-base-100)}.bg-base-100\/20{background-color:#fefcfa33}@supports (color:color-mix(in lab,red,red)){.bg-base-100\/20{background-color:color-mix(in oklab,var(--color-base-100)20%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-current{background-color:currentColor}.bg-foreground\/5{background-color:#5d31360d}@supports (color:color-mix(in lab,red,red)){.bg-foreground\/5{background-color:color-mix(in oklab,var(--color-foreground)5%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-muted{background-color:var(--color-muted)}.bg-muted-foreground{background-color:var(--color-muted-foreground)}.bg-muted\/30{background-color:#f0dbc54d}@supports (color:color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--color-muted)30%,transparent)}}.bg-primary{background-color:var(--color-primary)}.bg-primary\/10{background-color:#5d31361a}@supports (color:color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.bg-primary\/25{background-color:#5d313640}@supports (color:color-mix(in lab,red,red)){.bg-primary\/25{background-color:color-mix(in oklab,var(--color-primary)25%,transparent)}}.bg-primary\/30{background-color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.bg-primary\/30{background-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.bg-primary\/60{background-color:#5d313699}@supports (color:color-mix(in lab,red,red)){.bg-primary\/60{background-color:color-mix(in oklab,var(--color-primary)60%,transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-surface{background-color:var(--color-surface)}.bg-transparent{background-color:#0000}.bg-white\/5{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.bg-white\/5{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-tr{--tw-gradient-position:to top right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-\[linear-gradient\(45deg\,transparent_25\%\,rgba\(93\,49\,54\,0\.1\)_25\%\,rgba\(93\,49\,54\,0\.1\)_50\%\,transparent_50\%\,transparent_75\%\,rgba\(93\,49\,54\,0\.1\)_75\%\)\]{background-image:linear-gradient(45deg,#0000 25%,#5d31361a 25%,#5d31361a 50%,#0000 50%,#0000 75%,#5d31361a 75%)}.bg-\[radial-gradient\(circle_at_50\%_50\%\,rgba\(255\,255\,255\,0\.1\)_1px\,transparent_1px\)\]{background-image:radial-gradient(circle,#ffffff1a 1px,#0000 1px)}.from-accent-200{--tw-gradient-from:var(--color-accent-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-accent-600{--tw-gradient-from:var(--color-accent-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-base-100{--tw-gradient-from:var(--color-base-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-accent-300{--tw-gradient-via:var(--color-accent-300);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-base-200{--tw-gradient-via:var(--color-base-200);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-white\/5{--tw-gradient-via:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.via-white\/5{--tw-gradient-via:color-mix(in oklab,var(--color-white)5%,transparent)}}.via-white\/5{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-accent-400{--tw-gradient-to:var(--color-accent-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-accent-500{--tw-gradient-to:var(--color-accent-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-accent-800{--tw-gradient-to:var(--color-accent-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-base-300{--tw-gradient-to:var(--color-base-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.bg-\[length\:8px_8px\]{background-size:8px 8px}.bg-\[length\:20px_20px\]{background-size:20px 20px}.object-contain{object-fit:contain}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.px-10{padding-inline:calc(var(--spacing)*10)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-6{padding-block:calc(var(--spacing)*6)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-6{padding-top:calc(var(--spacing)*6)}.pt-8{padding-top:calc(var(--spacing)*8)}.pt-10{padding-top:calc(var(--spacing)*10)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.pb-8{padding-bottom:calc(var(--spacing)*8)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-8xl{font-size:var(--text-8xl);line-height:var(--tw-leading,var(--text-8xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.leading-\[0\.95\]{--tw-leading:.95;line-height:.95}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[\.25em\]{--tw-tracking:.25em;letter-spacing:.25em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-amber-500{color:var(--color-amber-500)}.text-amber-800{color:var(--color-amber-800)}.text-background{color:var(--color-background)}.text-base-100{color:var(--color-base-100)}.text-base-100\/90{color:#fefcfae6}@supports (color:color-mix(in lab,red,red)){.text-base-100\/90{color:color-mix(in oklab,var(--color-base-100)90%,transparent)}}.text-blue-500{color:var(--color-blue-500)}.text-blue-800{color:var(--color-blue-800)}.text-foreground{color:var(--color-foreground)}.text-green-600{color:var(--color-green-600)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-primary{color:var(--color-primary)}.text-primary\/30{color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.text-primary\/30{color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-white{color:var(--color-white)}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}}.uppercase{text-transform:uppercase}.opacity-0{opacity:0}.opacity-5{opacity:.05}.opacity-10{opacity:.1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-100{opacity:1}.shadow-medium{--tw-shadow:0 4px 16px 0 var(--tw-shadow-color,#5d31361f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-soft{--tw-shadow:0 2px 8px 0 var(--tw-shadow-color,#5d313614);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-strong{--tw-shadow:0 8px 32px 0 var(--tw-shadow-color,#5d313629);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.outline-primary\/50{outline-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.outline-primary\/50{outline-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-700{--tw-duration:.7s;transition-duration:.7s}.select-none{-webkit-user-select:none;user-select:none}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}@media (hover:hover){.hover\:-translate-y-1:hover{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:border-primary\/30:hover{border-color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/30:hover{border-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.hover\:border-primary\/50:hover{border-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.hover\:bg-\[\#1ed760\]:hover{background-color:#1ed760}.hover\:bg-accent-200:hover{background-color:var(--color-accent-200)}.hover\:bg-black\/10:hover{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/10:hover{background-color:color-mix(in oklab,var(--color-black)10%,transparent)}}.hover\:bg-card:hover{background-color:var(--color-card)}.hover\:bg-muted:hover{background-color:var(--color-muted)}.hover\:bg-primary:hover{background-color:var(--color-primary)}.hover\:bg-primary-hover:hover{background-color:var(--color-primary-hover)}.hover\:text-background:hover{color:var(--color-background)}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:text-white:hover{color:var(--color-white)}.hover\:shadow-medium:hover{--tw-shadow:0 4px 16px 0 var(--tw-shadow-color,#5d31361f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-strong:hover{--tw-shadow:0 8px 32px 0 var(--tw-shadow-color,#5d313629);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.focus\:border-primary:focus{border-color:var(--color-primary)}.focus\:border-red-500:focus{border-color:var(--color-red-500)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-primary\/50:focus{--tw-ring-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.focus\:ring-primary\/50:focus{--tw-ring-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.focus\:ring-red-500\/50:focus{--tw-ring-color:#fb2c3680}@supports (color:color-mix(in lab,red,red)){.focus\:ring-red-500\/50:focus{--tw-ring-color:color-mix(in oklab,var(--color-red-500)50%,transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-primary-focus:focus-visible{--tw-ring-color:var(--color-primary-focus)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-muted:disabled{background-color:var(--color-muted)}.disabled\:opacity-50:disabled{opacity:.5}@media (min-width:40rem){.sm\:-top-3{top:calc(var(--spacing)*-3)}.sm\:top-4{top:calc(var(--spacing)*4)}.sm\:-right-2{right:calc(var(--spacing)*-2)}.sm\:right-4{right:calc(var(--spacing)*4)}.sm\:-left-2{left:calc(var(--spacing)*-2)}.sm\:mt-4{margin-top:calc(var(--spacing)*4)}.sm\:mt-6{margin-top:calc(var(--spacing)*6)}.sm\:block{display:block}.sm\:h-4{height:calc(var(--spacing)*4)}.sm\:h-5{height:calc(var(--spacing)*5)}.sm\:h-6{height:calc(var(--spacing)*6)}.sm\:h-8{height:calc(var(--spacing)*8)}.sm\:h-12{height:calc(var(--spacing)*12)}.sm\:h-80{height:calc(var(--spacing)*80)}.sm\:w-4{width:calc(var(--spacing)*4)}.sm\:w-5{width:calc(var(--spacing)*5)}.sm\:w-6{width:calc(var(--spacing)*6)}.sm\:w-8{width:calc(var(--spacing)*8)}.sm\:w-12{width:calc(var(--spacing)*12)}.sm\:w-16{width:calc(var(--spacing)*16)}.sm\:w-60{width:calc(var(--spacing)*60)}.sm\:max-w-none{max-width:none}:where(.sm\:space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}.sm\:p-3{padding:calc(var(--spacing)*3)}.sm\:p-4{padding:calc(var(--spacing)*4)}.sm\:px-0{padding-inline:calc(var(--spacing)*0)}.sm\:px-3{padding-inline:calc(var(--spacing)*3)}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:px-8{padding-inline:calc(var(--spacing)*8)}.sm\:py-1{padding-block:calc(var(--spacing)*1)}.sm\:pt-2{padding-top:calc(var(--spacing)*2)}.sm\:pt-8{padding-top:calc(var(--spacing)*8)}.sm\:pt-10{padding-top:calc(var(--spacing)*10)}.sm\:pt-12{padding-top:calc(var(--spacing)*12)}.sm\:pt-16{padding-top:calc(var(--spacing)*16)}.sm\:pb-4{padding-bottom:calc(var(--spacing)*4)}.sm\:pb-6{padding-bottom:calc(var(--spacing)*6)}.sm\:pb-8{padding-bottom:calc(var(--spacing)*8)}.sm\:pb-12{padding-bottom:calc(var(--spacing)*12)}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.sm\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media (min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.md\:text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}.md\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media (min-width:64rem){.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}}html{scroll-behavior:smooth}@media (max-width:640px){html{font-size:14px}}@keyframes logo-in{0%{opacity:0;filter:blur(3px);transform:scale(.96)}60%{opacity:1;filter:blur();transform:scale(1.01)}to{opacity:1;transform:scale(1)}}@keyframes seed-sweep{0%{transform:translate(-20vw)rotate(-10deg)scale(.9)}50%{transform:translate(15vw)rotate(6deg)scale(1.08)}to{transform:translate(50vw)rotate(0)scale(1)}}@keyframes tagline-in{0%{opacity:0;letter-spacing:.14em;transform:translateY(.8rem)}to{opacity:1;letter-spacing:0;transform:translateY(0)}}@keyframes particle-float{0%{opacity:.65;transform:translate(0)translateY(0)rotate(0)}70%{opacity:.9}to{opacity:0;transform:translate(-120vw)translateY(-10vh)rotate(14deg)}}@keyframes letter-in{0%{opacity:0;filter:blur(2px);transform:translateY(1.6rem)scale(.98)}55%{opacity:1;filter:blur();transform:translateY(0)scale(1.02)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes crt-flicker{0%{opacity:1}50%{opacity:.92}to{opacity:1}}@keyframes banana-float{0%{opacity:.7;transform:translate(0)translateY(0)rotate(0)}70%{opacity:.9}to{opacity:0;transform:translate(-120vw)translateY(-10vh)rotate(18deg)}}@keyframes banana-fly{0%{opacity:0;transform:translateY(-30vh)rotate(0)}10%{opacity:.8}80%{opacity:1}to{opacity:0;transform:translateY(120vh)rotate(20deg)}}@keyframes logo-bounce-in{0%{opacity:0;transform:scale(8)translateY(-50vh)}40%{opacity:1;transform:scale(1.8)translateY(0)}55%{transform:scale(1.65)}70%{transform:scale(1.85)}85%{transform:scale(1.75)}to{transform:scale(1.8)}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-scroll-snap-strictness{syntax:"*";inherits:false;initial-value:proximity}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}} diff --git a/frontend/dist/assets/index-CmpXfqEq.js b/frontend/dist/assets/index-CmpXfqEq.js new file mode 100644 index 0000000000..2a6a45272d --- /dev/null +++ b/frontend/dist/assets/index-CmpXfqEq.js @@ -0,0 +1,60 @@ +(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))u(c);new MutationObserver(c=>{for(const d of c)if(d.type==="childList")for(const p of d.addedNodes)p.tagName==="LINK"&&p.rel==="modulepreload"&&u(p)}).observe(document,{childList:!0,subtree:!0});function o(c){const d={};return c.integrity&&(d.integrity=c.integrity),c.referrerPolicy&&(d.referrerPolicy=c.referrerPolicy),c.crossOrigin==="use-credentials"?d.credentials="include":c.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function u(c){if(c.ep)return;c.ep=!0;const d=o(c);fetch(c.href,d)}})();function cf(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var da={exports:{}},_l={},fa={exports:{}},me={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Td;function qm(){if(Td)return me;Td=1;var r=Symbol.for("react.element"),i=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),u=Symbol.for("react.strict_mode"),c=Symbol.for("react.profiler"),d=Symbol.for("react.provider"),p=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),m=Symbol.for("react.suspense"),v=Symbol.for("react.memo"),k=Symbol.for("react.lazy"),S=Symbol.iterator;function P(C){return C===null||typeof C!="object"?null:(C=S&&C[S]||C["@@iterator"],typeof C=="function"?C:null)}var j={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},F=Object.assign,T={};function _(C,L,J){this.props=C,this.context=L,this.refs=T,this.updater=J||j}_.prototype.isReactComponent={},_.prototype.setState=function(C,L){if(typeof C!="object"&&typeof C!="function"&&C!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,C,L,"setState")},_.prototype.forceUpdate=function(C){this.updater.enqueueForceUpdate(this,C,"forceUpdate")};function M(){}M.prototype=_.prototype;function W(C,L,J){this.props=C,this.context=L,this.refs=T,this.updater=J||j}var B=W.prototype=new M;B.constructor=W,F(B,_.prototype),B.isPureReactComponent=!0;var q=Array.isArray,re=Object.prototype.hasOwnProperty,ee={current:null},H={key:!0,ref:!0,__self:!0,__source:!0};function z(C,L,J){var le,fe={},ae=null,se=null;if(L!=null)for(le in L.ref!==void 0&&(se=L.ref),L.key!==void 0&&(ae=""+L.key),L)re.call(L,le)&&!H.hasOwnProperty(le)&&(fe[le]=L[le]);var ve=arguments.length-2;if(ve===1)fe.children=J;else if(1>>1,L=D[C];if(0>>1;Cc(fe,U))aec(se,fe)?(D[C]=se,D[ae]=U,C=ae):(D[C]=fe,D[le]=U,C=le);else if(aec(se,U))D[C]=se,D[ae]=U,C=ae;else break e}}return te}function c(D,te){var U=D.sortIndex-te.sortIndex;return U!==0?U:D.id-te.id}if(typeof performance=="object"&&typeof performance.now=="function"){var d=performance;r.unstable_now=function(){return d.now()}}else{var p=Date,h=p.now();r.unstable_now=function(){return p.now()-h}}var m=[],v=[],k=1,S=null,P=3,j=!1,F=!1,T=!1,_=typeof setTimeout=="function"?setTimeout:null,M=typeof clearTimeout=="function"?clearTimeout:null,W=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function B(D){for(var te=o(v);te!==null;){if(te.callback===null)u(v);else if(te.startTime<=D)u(v),te.sortIndex=te.expirationTime,i(m,te);else break;te=o(v)}}function q(D){if(T=!1,B(D),!F)if(o(m)!==null)F=!0,Ce(re);else{var te=o(v);te!==null&&de(q,te.startTime-D)}}function re(D,te){F=!1,T&&(T=!1,M(z),z=-1),j=!0;var U=P;try{for(B(te),S=o(m);S!==null&&(!(S.expirationTime>te)||D&&!ge());){var C=S.callback;if(typeof C=="function"){S.callback=null,P=S.priorityLevel;var L=C(S.expirationTime<=te);te=r.unstable_now(),typeof L=="function"?S.callback=L:S===o(m)&&u(m),B(te)}else u(m);S=o(m)}if(S!==null)var J=!0;else{var le=o(v);le!==null&&de(q,le.startTime-te),J=!1}return J}finally{S=null,P=U,j=!1}}var ee=!1,H=null,z=-1,Q=5,ce=-1;function ge(){return!(r.unstable_now()-ceD||125C?(D.sortIndex=U,i(v,D),o(m)===null&&D===o(v)&&(T?(M(z),z=-1):T=!0,de(q,U-C))):(D.sortIndex=L,i(m,D),F||j||(F=!0,Ce(re))),D},r.unstable_shouldYield=ge,r.unstable_wrapCallback=function(D){var te=P;return function(){var U=P;P=te;try{return D.apply(this,arguments)}finally{P=U}}}}(ha)),ha}var zd;function rh(){return zd||(zd=1,ma.exports=nh()),ma.exports}/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Md;function lh(){if(Md)return xt;Md=1;var r=Ia(),i=rh();function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),m=Object.prototype.hasOwnProperty,v=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,k={},S={};function P(e){return m.call(S,e)?!0:m.call(k,e)?!1:v.test(e)?S[e]=!0:(k[e]=!0,!1)}function j(e,t,n,l){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return l?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function F(e,t,n,l){if(t===null||typeof t>"u"||j(e,t,n,l))return!0;if(l)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function T(e,t,n,l,s,a,f){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=l,this.attributeNamespace=s,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=f}var _={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){_[e]=new T(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];_[t]=new T(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){_[e]=new T(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){_[e]=new T(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){_[e]=new T(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){_[e]=new T(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){_[e]=new T(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){_[e]=new T(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){_[e]=new T(e,5,!1,e.toLowerCase(),null,!1,!1)});var M=/[\-:]([a-z])/g;function W(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(M,W);_[t]=new T(t,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(M,W);_[t]=new T(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(M,W);_[t]=new T(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){_[e]=new T(e,1,!1,e.toLowerCase(),null,!1,!1)}),_.xlinkHref=new T("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){_[e]=new T(e,1,!1,e.toLowerCase(),null,!0,!0)});function B(e,t,n,l){var s=_.hasOwnProperty(t)?_[t]:null;(s!==null?s.type!==0:l||!(2g||s[f]!==a[g]){var w=` +`+s[f].replace(" at new "," at ");return e.displayName&&w.includes("")&&(w=w.replace("",e.displayName)),w}while(1<=f&&0<=g);break}}}finally{J=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?L(e):""}function fe(e){switch(e.tag){case 5:return L(e.type);case 16:return L("Lazy");case 13:return L("Suspense");case 19:return L("SuspenseList");case 0:case 2:case 15:return e=le(e.type,!1),e;case 11:return e=le(e.type.render,!1),e;case 1:return e=le(e.type,!0),e;default:return""}}function ae(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case H:return"Fragment";case ee:return"Portal";case Q:return"Profiler";case z:return"StrictMode";case Re:return"Suspense";case _e:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case ge:return(e.displayName||"Context")+".Consumer";case ce:return(e._context.displayName||"Context")+".Provider";case Pe:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case $e:return t=e.displayName||null,t!==null?t:ae(e.type)||"Memo";case Ce:t=e._payload,e=e._init;try{return ae(e(t))}catch{}}return null}function se(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ae(t);case 8:return t===z?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function ve(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function we(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function ke(e){var t=we(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),l=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var s=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return s.call(this)},set:function(f){l=""+f,a.call(this,f)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return l},setValue:function(f){l=""+f},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Rt(e){e._valueTracker||(e._valueTracker=ke(e))}function st(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),l="";return e&&(l=we(e)?e.checked?"true":"false":e.value),e=l,e!==n?(t.setValue(e),!0):!1}function Qn(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Mt(e,t){var n=t.checked;return U({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Kn(e,t){var n=t.defaultValue==null?"":t.defaultValue,l=t.checked!=null?t.checked:t.defaultChecked;n=ve(t.value!=null?t.value:n),e._wrapperState={initialChecked:l,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function ln(e,t){t=t.checked,t!=null&&B(e,"checked",t,!1)}function dr(e,t){ln(e,t);var n=ve(t.value),l=t.type;if(n!=null)l==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(l==="submit"||l==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Yn(e,t.type,n):t.hasOwnProperty("defaultValue")&&Yn(e,t.type,ve(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Vr(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var l=t.type;if(!(l!=="submit"&&l!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Yn(e,t,n){(t!=="number"||Qn(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var ft=Array.isArray;function It(e,t,n,l){if(e=e.options,t){t={};for(var s=0;s"+t.valueOf().toString()+"",t=Ot.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Cn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var pt={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Jl=["Webkit","ms","Moz","O"];Object.keys(pt).forEach(function(e){Jl.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),pt[t]=pt[e]})});function Zl(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||pt.hasOwnProperty(e)&&pt[e]?(""+t).trim():t+"px"}function ql(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var l=n.indexOf("--")===0,s=Zl(n,t[n],l);n==="float"&&(n="cssFloat"),l?e.setProperty(n,s):e[n]=s}}var Qr=U({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function fr(e,t){if(t){if(Qr[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(o(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(o(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(o(61))}if(t.style!=null&&typeof t.style!="object")throw Error(o(62))}}function Kr(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var pr=null;function Yr(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Xr=null,En=null,je=null;function qe(e){if(e=gl(e)){if(typeof Xr!="function")throw Error(o(280));var t=e.stateNode;t&&(t=ko(t),Xr(e.stateNode,e.type,t))}}function et(e){En?je?je.push(e):je=[e]:En=e}function At(){if(En){var e=En,t=je;if(je=En=null,qe(e),t)for(e=0;e>>=0,e===0?32:31-(hp(e)/gp|0)|0}var no=64,ro=4194304;function Zr(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function lo(e,t){var n=e.pendingLanes;if(n===0)return 0;var l=0,s=e.suspendedLanes,a=e.pingedLanes,f=n&268435455;if(f!==0){var g=f&~s;g!==0?l=Zr(g):(a&=f,a!==0&&(l=Zr(a)))}else f=n&~s,f!==0?l=Zr(f):a!==0&&(l=Zr(a));if(l===0)return 0;if(t!==0&&t!==l&&(t&s)===0&&(s=l&-l,a=t&-t,s>=a||s===16&&(a&4194240)!==0))return t;if((l&4)!==0&&(l|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=l;0n;n++)t.push(e);return t}function qr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-$t(t),e[t]=n}function xp(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var l=e.eventTimes;for(e=e.expirationTimes;0=sl),Su=" ",Cu=!1;function Eu(e,t){switch(e){case"keyup":return Kp.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Nu(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var gr=!1;function Xp(e,t){switch(e){case"compositionend":return Nu(t);case"keypress":return t.which!==32?null:(Cu=!0,Su);case"textInput":return e=t.data,e===Su&&Cu?null:e;default:return null}}function Jp(e,t){if(gr)return e==="compositionend"||!Hi&&Eu(e,t)?(e=gu(),uo=Fi=Tn=null,gr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=l}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Lu(n)}}function zu(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?zu(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Mu(){for(var e=window,t=Qn();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Qn(e.document)}return t}function Ki(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function im(e){var t=Mu(),n=e.focusedElem,l=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&zu(n.ownerDocument.documentElement,n)){if(l!==null&&Ki(n)){if(t=l.start,e=l.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var s=n.textContent.length,a=Math.min(l.start,s);l=l.end===void 0?a:Math.min(l.end,s),!e.extend&&a>l&&(s=l,l=a,a=s),s=ju(n,a);var f=ju(n,l);s&&f&&(e.rangeCount!==1||e.anchorNode!==s.node||e.anchorOffset!==s.offset||e.focusNode!==f.node||e.focusOffset!==f.offset)&&(t=t.createRange(),t.setStart(s.node,s.offset),e.removeAllRanges(),a>l?(e.addRange(t),e.extend(f.node,f.offset)):(t.setEnd(f.node,f.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,vr=null,Yi=null,dl=null,Xi=!1;function Iu(e,t,n){var l=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Xi||vr==null||vr!==Qn(l)||(l=vr,"selectionStart"in l&&Ki(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),dl&&cl(dl,l)||(dl=l,l=yo(Yi,"onSelect"),0Sr||(e.current=as[Sr],as[Sr]=null,Sr--)}function be(e,t){Sr++,as[Sr]=e.current,e.current=t}var jn={},rt=Ln(jn),ht=Ln(!1),Zn=jn;function Cr(e,t){var n=e.type.contextTypes;if(!n)return jn;var l=e.stateNode;if(l&&l.__reactInternalMemoizedUnmaskedChildContext===t)return l.__reactInternalMemoizedMaskedChildContext;var s={},a;for(a in n)s[a]=t[a];return l&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=s),s}function gt(e){return e=e.childContextTypes,e!=null}function So(){De(ht),De(rt)}function Ju(e,t,n){if(rt.current!==jn)throw Error(o(168));be(rt,t),be(ht,n)}function Zu(e,t,n){var l=e.stateNode;if(t=t.childContextTypes,typeof l.getChildContext!="function")return n;l=l.getChildContext();for(var s in l)if(!(s in t))throw Error(o(108,se(e)||"Unknown",s));return U({},n,l)}function Co(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||jn,Zn=rt.current,be(rt,e),be(ht,ht.current),!0}function qu(e,t,n){var l=e.stateNode;if(!l)throw Error(o(169));n?(e=Zu(e,t,Zn),l.__reactInternalMemoizedMergedChildContext=e,De(ht),De(rt),be(rt,e)):De(ht),be(ht,n)}var un=null,Eo=!1,us=!1;function ec(e){un===null?un=[e]:un.push(e)}function ym(e){Eo=!0,ec(e)}function zn(){if(!us&&un!==null){us=!0;var e=0,t=Se;try{var n=un;for(Se=1;e>=f,s-=f,cn=1<<32-$t(t)+s|n<ue?(Ye=ie,ie=null):Ye=ie.sibling;var xe=I(N,ie,R[ue],$);if(xe===null){ie===null&&(ie=Ye);break}e&&ie&&xe.alternate===null&&t(N,ie),x=a(xe,x,ue),oe===null?ne=xe:oe.sibling=xe,oe=xe,ie=Ye}if(ue===R.length)return n(N,ie),Le&&er(N,ue),ne;if(ie===null){for(;ueue?(Ye=ie,ie=null):Ye=ie.sibling;var Un=I(N,ie,xe.value,$);if(Un===null){ie===null&&(ie=Ye);break}e&&ie&&Un.alternate===null&&t(N,ie),x=a(Un,x,ue),oe===null?ne=Un:oe.sibling=Un,oe=Un,ie=Ye}if(xe.done)return n(N,ie),Le&&er(N,ue),ne;if(ie===null){for(;!xe.done;ue++,xe=R.next())xe=A(N,xe.value,$),xe!==null&&(x=a(xe,x,ue),oe===null?ne=xe:oe.sibling=xe,oe=xe);return Le&&er(N,ue),ne}for(ie=l(N,ie);!xe.done;ue++,xe=R.next())xe=V(ie,N,ue,xe.value,$),xe!==null&&(e&&xe.alternate!==null&&ie.delete(xe.key===null?ue:xe.key),x=a(xe,x,ue),oe===null?ne=xe:oe.sibling=xe,oe=xe);return e&&ie.forEach(function(Zm){return t(N,Zm)}),Le&&er(N,ue),ne}function We(N,x,R,$){if(typeof R=="object"&&R!==null&&R.type===H&&R.key===null&&(R=R.props.children),typeof R=="object"&&R!==null){switch(R.$$typeof){case re:e:{for(var ne=R.key,oe=x;oe!==null;){if(oe.key===ne){if(ne=R.type,ne===H){if(oe.tag===7){n(N,oe.sibling),x=s(oe,R.props.children),x.return=N,N=x;break e}}else if(oe.elementType===ne||typeof ne=="object"&&ne!==null&&ne.$$typeof===Ce&&ic(ne)===oe.type){n(N,oe.sibling),x=s(oe,R.props),x.ref=vl(N,oe,R),x.return=N,N=x;break e}n(N,oe);break}else t(N,oe);oe=oe.sibling}R.type===H?(x=ar(R.props.children,N.mode,$,R.key),x.return=N,N=x):($=Zo(R.type,R.key,R.props,null,N.mode,$),$.ref=vl(N,x,R),$.return=N,N=$)}return f(N);case ee:e:{for(oe=R.key;x!==null;){if(x.key===oe)if(x.tag===4&&x.stateNode.containerInfo===R.containerInfo&&x.stateNode.implementation===R.implementation){n(N,x.sibling),x=s(x,R.children||[]),x.return=N,N=x;break e}else{n(N,x);break}else t(N,x);x=x.sibling}x=ia(R,N.mode,$),x.return=N,N=x}return f(N);case Ce:return oe=R._init,We(N,x,oe(R._payload),$)}if(ft(R))return K(N,x,R,$);if(te(R))return Z(N,x,R,$);Po(N,R)}return typeof R=="string"&&R!==""||typeof R=="number"?(R=""+R,x!==null&&x.tag===6?(n(N,x.sibling),x=s(x,R),x.return=N,N=x):(n(N,x),x=oa(R,N.mode,$),x.return=N,N=x),f(N)):n(N,x)}return We}var br=sc(!0),ac=sc(!1),To=Ln(null),Do=null,Pr=null,hs=null;function gs(){hs=Pr=Do=null}function vs(e){var t=To.current;De(To),e._currentValue=t}function ys(e,t,n){for(;e!==null;){var l=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,l!==null&&(l.childLanes|=t)):l!==null&&(l.childLanes&t)!==t&&(l.childLanes|=t),e===n)break;e=e.return}}function Tr(e,t){Do=e,hs=Pr=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(vt=!0),e.firstContext=null)}function Dt(e){var t=e._currentValue;if(hs!==e)if(e={context:e,memoizedValue:t,next:null},Pr===null){if(Do===null)throw Error(o(308));Pr=e,Do.dependencies={lanes:0,firstContext:e}}else Pr=Pr.next=e;return t}var tr=null;function ws(e){tr===null?tr=[e]:tr.push(e)}function uc(e,t,n,l){var s=t.interleaved;return s===null?(n.next=n,ws(t)):(n.next=s.next,s.next=n),t.interleaved=n,fn(e,l)}function fn(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var Mn=!1;function xs(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function cc(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function pn(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function In(e,t,n){var l=e.updateQueue;if(l===null)return null;if(l=l.shared,(ye&2)!==0){var s=l.pending;return s===null?t.next=t:(t.next=s.next,s.next=t),l.pending=t,fn(e,n)}return s=l.interleaved,s===null?(t.next=t,ws(l)):(t.next=s.next,s.next=t),l.interleaved=t,fn(e,n)}function _o(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var l=t.lanes;l&=e.pendingLanes,n|=l,t.lanes=n,zi(e,n)}}function dc(e,t){var n=e.updateQueue,l=e.alternate;if(l!==null&&(l=l.updateQueue,n===l)){var s=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var f={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};a===null?s=a=f:a=a.next=f,n=n.next}while(n!==null);a===null?s=a=t:a=a.next=t}else s=a=t;n={baseState:l.baseState,firstBaseUpdate:s,lastBaseUpdate:a,shared:l.shared,effects:l.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Lo(e,t,n,l){var s=e.updateQueue;Mn=!1;var a=s.firstBaseUpdate,f=s.lastBaseUpdate,g=s.shared.pending;if(g!==null){s.shared.pending=null;var w=g,b=w.next;w.next=null,f===null?a=b:f.next=b,f=w;var O=e.alternate;O!==null&&(O=O.updateQueue,g=O.lastBaseUpdate,g!==f&&(g===null?O.firstBaseUpdate=b:g.next=b,O.lastBaseUpdate=w))}if(a!==null){var A=s.baseState;f=0,O=b=w=null,g=a;do{var I=g.lane,V=g.eventTime;if((l&I)===I){O!==null&&(O=O.next={eventTime:V,lane:0,tag:g.tag,payload:g.payload,callback:g.callback,next:null});e:{var K=e,Z=g;switch(I=t,V=n,Z.tag){case 1:if(K=Z.payload,typeof K=="function"){A=K.call(V,A,I);break e}A=K;break e;case 3:K.flags=K.flags&-65537|128;case 0:if(K=Z.payload,I=typeof K=="function"?K.call(V,A,I):K,I==null)break e;A=U({},A,I);break e;case 2:Mn=!0}}g.callback!==null&&g.lane!==0&&(e.flags|=64,I=s.effects,I===null?s.effects=[g]:I.push(g))}else V={eventTime:V,lane:I,tag:g.tag,payload:g.payload,callback:g.callback,next:null},O===null?(b=O=V,w=A):O=O.next=V,f|=I;if(g=g.next,g===null){if(g=s.shared.pending,g===null)break;I=g,g=I.next,I.next=null,s.lastBaseUpdate=I,s.shared.pending=null}}while(!0);if(O===null&&(w=A),s.baseState=w,s.firstBaseUpdate=b,s.lastBaseUpdate=O,t=s.shared.interleaved,t!==null){s=t;do f|=s.lane,s=s.next;while(s!==t)}else a===null&&(s.shared.lanes=0);lr|=f,e.lanes=f,e.memoizedState=A}}function fc(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var l=Ns.transition;Ns.transition={};try{e(!1),t()}finally{Se=n,Ns.transition=l}}function _c(){return _t().memoizedState}function Sm(e,t,n){var l=Wn(e);if(n={lane:l,action:n,hasEagerState:!1,eagerState:null,next:null},Lc(e))jc(t,n);else if(n=uc(e,t,n,l),n!==null){var s=ct();Qt(n,e,l,s),zc(n,t,l)}}function Cm(e,t,n){var l=Wn(e),s={lane:l,action:n,hasEagerState:!1,eagerState:null,next:null};if(Lc(e))jc(t,s);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var f=t.lastRenderedState,g=a(f,n);if(s.hasEagerState=!0,s.eagerState=g,Bt(g,f)){var w=t.interleaved;w===null?(s.next=s,ws(t)):(s.next=w.next,w.next=s),t.interleaved=s;return}}catch{}finally{}n=uc(e,t,s,l),n!==null&&(s=ct(),Qt(n,e,l,s),zc(n,t,l))}}function Lc(e){var t=e.alternate;return e===Ie||t!==null&&t===Ie}function jc(e,t){kl=Mo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function zc(e,t,n){if((n&4194240)!==0){var l=t.lanes;l&=e.pendingLanes,n|=l,t.lanes=n,zi(e,n)}}var Ao={readContext:Dt,useCallback:lt,useContext:lt,useEffect:lt,useImperativeHandle:lt,useInsertionEffect:lt,useLayoutEffect:lt,useMemo:lt,useReducer:lt,useRef:lt,useState:lt,useDebugValue:lt,useDeferredValue:lt,useTransition:lt,useMutableSource:lt,useSyncExternalStore:lt,useId:lt,unstable_isNewReconciler:!1},Em={readContext:Dt,useCallback:function(e,t){return en().memoizedState=[e,t===void 0?null:t],e},useContext:Dt,useEffect:Cc,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Io(4194308,4,Rc.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Io(4194308,4,e,t)},useInsertionEffect:function(e,t){return Io(4,2,e,t)},useMemo:function(e,t){var n=en();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var l=en();return t=n!==void 0?n(t):t,l.memoizedState=l.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},l.queue=e,e=e.dispatch=Sm.bind(null,Ie,e),[l.memoizedState,e]},useRef:function(e){var t=en();return e={current:e},t.memoizedState=e},useState:kc,useDebugValue:Ls,useDeferredValue:function(e){return en().memoizedState=e},useTransition:function(){var e=kc(!1),t=e[0];return e=km.bind(null,e[1]),en().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var l=Ie,s=en();if(Le){if(n===void 0)throw Error(o(407));n=n()}else{if(n=t(),Ke===null)throw Error(o(349));(rr&30)!==0||gc(l,t,n)}s.memoizedState=n;var a={value:n,getSnapshot:t};return s.queue=a,Cc(yc.bind(null,l,a,e),[e]),l.flags|=2048,El(9,vc.bind(null,l,a,n,t),void 0,null),n},useId:function(){var e=en(),t=Ke.identifierPrefix;if(Le){var n=dn,l=cn;n=(l&~(1<<32-$t(l)-1)).toString(32)+n,t=":"+t+"R"+n,n=Sl++,0<\/script>",e=e.removeChild(e.firstChild)):typeof l.is=="string"?e=f.createElement(n,{is:l.is}):(e=f.createElement(n),n==="select"&&(f=e,l.multiple?f.multiple=!0:l.size&&(f.size=l.size))):e=f.createElementNS(e,n),e[Zt]=t,e[hl]=l,ed(e,t,!1,!1),t.stateNode=e;e:{switch(f=Kr(n,l),n){case"dialog":Te("cancel",e),Te("close",e),s=l;break;case"iframe":case"object":case"embed":Te("load",e),s=l;break;case"video":case"audio":for(s=0;szr&&(t.flags|=128,l=!0,Nl(a,!1),t.lanes=4194304)}else{if(!l)if(e=jo(f),e!==null){if(t.flags|=128,l=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Nl(a,!0),a.tail===null&&a.tailMode==="hidden"&&!f.alternate&&!Le)return ot(t),null}else 2*Fe()-a.renderingStartTime>zr&&n!==1073741824&&(t.flags|=128,l=!0,Nl(a,!1),t.lanes=4194304);a.isBackwards?(f.sibling=t.child,t.child=f):(n=a.last,n!==null?n.sibling=f:t.child=f,a.last=f)}return a.tail!==null?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=Fe(),t.sibling=null,n=Me.current,be(Me,l?n&1|2:n&1),t):(ot(t),null);case 22:case 23:return na(),l=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==l&&(t.flags|=8192),l&&(t.mode&1)!==0?(Nt&1073741824)!==0&&(ot(t),t.subtreeFlags&6&&(t.flags|=8192)):ot(t),null;case 24:return null;case 25:return null}throw Error(o(156,t.tag))}function Lm(e,t){switch(ds(t),t.tag){case 1:return gt(t.type)&&So(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Dr(),De(ht),De(rt),Es(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return Ss(t),null;case 13:if(De(Me),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(o(340));Rr()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return De(Me),null;case 4:return Dr(),null;case 10:return vs(t.type._context),null;case 22:case 23:return na(),null;case 24:return null;default:return null}}var Bo=!1,it=!1,jm=typeof WeakSet=="function"?WeakSet:Set,G=null;function Lr(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(l){Ae(e,t,l)}else n.current=null}function Vs(e,t,n){try{n()}catch(l){Ae(e,t,l)}}var rd=!1;function zm(e,t){if(ns=so,e=Mu(),Ki(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var l=n.getSelection&&n.getSelection();if(l&&l.rangeCount!==0){n=l.anchorNode;var s=l.anchorOffset,a=l.focusNode;l=l.focusOffset;try{n.nodeType,a.nodeType}catch{n=null;break e}var f=0,g=-1,w=-1,b=0,O=0,A=e,I=null;t:for(;;){for(var V;A!==n||s!==0&&A.nodeType!==3||(g=f+s),A!==a||l!==0&&A.nodeType!==3||(w=f+l),A.nodeType===3&&(f+=A.nodeValue.length),(V=A.firstChild)!==null;)I=A,A=V;for(;;){if(A===e)break t;if(I===n&&++b===s&&(g=f),I===a&&++O===l&&(w=f),(V=A.nextSibling)!==null)break;A=I,I=A.parentNode}A=V}n=g===-1||w===-1?null:{start:g,end:w}}else n=null}n=n||{start:0,end:0}}else n=null;for(rs={focusedElem:e,selectionRange:n},so=!1,G=t;G!==null;)if(t=G,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,G=e;else for(;G!==null;){t=G;try{var K=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(K!==null){var Z=K.memoizedProps,We=K.memoizedState,N=t.stateNode,x=N.getSnapshotBeforeUpdate(t.elementType===t.type?Z:Vt(t.type,Z),We);N.__reactInternalSnapshotBeforeUpdate=x}break;case 3:var R=t.stateNode.containerInfo;R.nodeType===1?R.textContent="":R.nodeType===9&&R.documentElement&&R.removeChild(R.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(o(163))}}catch($){Ae(t,t.return,$)}if(e=t.sibling,e!==null){e.return=t.return,G=e;break}G=t.return}return K=rd,rd=!1,K}function Rl(e,t,n){var l=t.updateQueue;if(l=l!==null?l.lastEffect:null,l!==null){var s=l=l.next;do{if((s.tag&e)===e){var a=s.destroy;s.destroy=void 0,a!==void 0&&Vs(t,n,a)}s=s.next}while(s!==l)}}function Uo(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var l=n.create;n.destroy=l()}n=n.next}while(n!==t)}}function Hs(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function ld(e){var t=e.alternate;t!==null&&(e.alternate=null,ld(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Zt],delete t[hl],delete t[ss],delete t[gm],delete t[vm])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function od(e){return e.tag===5||e.tag===3||e.tag===4}function id(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||od(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Gs(e,t,n){var l=e.tag;if(l===5||l===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=xo));else if(l!==4&&(e=e.child,e!==null))for(Gs(e,t,n),e=e.sibling;e!==null;)Gs(e,t,n),e=e.sibling}function Qs(e,t,n){var l=e.tag;if(l===5||l===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(l!==4&&(e=e.child,e!==null))for(Qs(e,t,n),e=e.sibling;e!==null;)Qs(e,t,n),e=e.sibling}var Je=null,Ht=!1;function On(e,t,n){for(n=n.child;n!==null;)sd(e,t,n),n=n.sibling}function sd(e,t,n){if(Jt&&typeof Jt.onCommitFiberUnmount=="function")try{Jt.onCommitFiberUnmount(to,n)}catch{}switch(n.tag){case 5:it||Lr(n,t);case 6:var l=Je,s=Ht;Je=null,On(e,t,n),Je=l,Ht=s,Je!==null&&(Ht?(e=Je,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Je.removeChild(n.stateNode));break;case 18:Je!==null&&(Ht?(e=Je,n=n.stateNode,e.nodeType===8?is(e.parentNode,n):e.nodeType===1&&is(e,n),ll(e)):is(Je,n.stateNode));break;case 4:l=Je,s=Ht,Je=n.stateNode.containerInfo,Ht=!0,On(e,t,n),Je=l,Ht=s;break;case 0:case 11:case 14:case 15:if(!it&&(l=n.updateQueue,l!==null&&(l=l.lastEffect,l!==null))){s=l=l.next;do{var a=s,f=a.destroy;a=a.tag,f!==void 0&&((a&2)!==0||(a&4)!==0)&&Vs(n,t,f),s=s.next}while(s!==l)}On(e,t,n);break;case 1:if(!it&&(Lr(n,t),l=n.stateNode,typeof l.componentWillUnmount=="function"))try{l.props=n.memoizedProps,l.state=n.memoizedState,l.componentWillUnmount()}catch(g){Ae(n,t,g)}On(e,t,n);break;case 21:On(e,t,n);break;case 22:n.mode&1?(it=(l=it)||n.memoizedState!==null,On(e,t,n),it=l):On(e,t,n);break;default:On(e,t,n)}}function ad(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new jm),t.forEach(function(l){var s=Um.bind(null,e,l);n.has(l)||(n.add(l),l.then(s,s))})}}function Gt(e,t){var n=t.deletions;if(n!==null)for(var l=0;ls&&(s=f),l&=~a}if(l=s,l=Fe()-l,l=(120>l?120:480>l?480:1080>l?1080:1920>l?1920:3e3>l?3e3:4320>l?4320:1960*Im(l/1960))-l,10e?16:e,Fn===null)var l=!1;else{if(e=Fn,Fn=null,Ko=0,(ye&6)!==0)throw Error(o(331));var s=ye;for(ye|=4,G=e.current;G!==null;){var a=G,f=a.child;if((G.flags&16)!==0){var g=a.deletions;if(g!==null){for(var w=0;wFe()-Xs?ir(e,0):Ys|=n),wt(e,t)}function kd(e,t){t===0&&((e.mode&1)===0?t=1:(t=ro,ro<<=1,(ro&130023424)===0&&(ro=4194304)));var n=ct();e=fn(e,t),e!==null&&(qr(e,t,n),wt(e,n))}function Bm(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),kd(e,n)}function Um(e,t){var n=0;switch(e.tag){case 13:var l=e.stateNode,s=e.memoizedState;s!==null&&(n=s.retryLane);break;case 19:l=e.stateNode;break;default:throw Error(o(314))}l!==null&&l.delete(t),kd(e,n)}var Sd;Sd=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||ht.current)vt=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return vt=!1,Dm(e,t,n);vt=(e.flags&131072)!==0}else vt=!1,Le&&(t.flags&1048576)!==0&&tc(t,Ro,t.index);switch(t.lanes=0,t.tag){case 2:var l=t.type;$o(e,t),e=t.pendingProps;var s=Cr(t,rt.current);Tr(t,n),s=bs(null,t,l,e,s,n);var a=Ps();return t.flags|=1,typeof s=="object"&&s!==null&&typeof s.render=="function"&&s.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,gt(l)?(a=!0,Co(t)):a=!1,t.memoizedState=s.state!==null&&s.state!==void 0?s.state:null,xs(t),s.updater=Fo,t.stateNode=s,s._reactInternals=t,zs(t,l,e,n),t=As(null,t,l,!0,a,n)):(t.tag=0,Le&&a&&cs(t),ut(null,t,s,n),t=t.child),t;case 16:l=t.elementType;e:{switch($o(e,t),e=t.pendingProps,s=l._init,l=s(l._payload),t.type=l,s=t.tag=Hm(l),e=Vt(l,e),s){case 0:t=Os(null,t,l,e,n);break e;case 1:t=Kc(null,t,l,e,n);break e;case 11:t=Uc(null,t,l,e,n);break e;case 14:t=Vc(null,t,l,Vt(l.type,e),n);break e}throw Error(o(306,l,""))}return t;case 0:return l=t.type,s=t.pendingProps,s=t.elementType===l?s:Vt(l,s),Os(e,t,l,s,n);case 1:return l=t.type,s=t.pendingProps,s=t.elementType===l?s:Vt(l,s),Kc(e,t,l,s,n);case 3:e:{if(Yc(t),e===null)throw Error(o(387));l=t.pendingProps,a=t.memoizedState,s=a.element,cc(e,t),Lo(t,l,null,n);var f=t.memoizedState;if(l=f.element,a.isDehydrated)if(a={element:l,isDehydrated:!1,cache:f.cache,pendingSuspenseBoundaries:f.pendingSuspenseBoundaries,transitions:f.transitions},t.updateQueue.baseState=a,t.memoizedState=a,t.flags&256){s=_r(Error(o(423)),t),t=Xc(e,t,l,n,s);break e}else if(l!==s){s=_r(Error(o(424)),t),t=Xc(e,t,l,n,s);break e}else for(Et=_n(t.stateNode.containerInfo.firstChild),Ct=t,Le=!0,Ut=null,n=ac(t,null,l,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Rr(),l===s){t=mn(e,t,n);break e}ut(e,t,l,n)}t=t.child}return t;case 5:return pc(t),e===null&&ps(t),l=t.type,s=t.pendingProps,a=e!==null?e.memoizedProps:null,f=s.children,ls(l,s)?f=null:a!==null&&ls(l,a)&&(t.flags|=32),Qc(e,t),ut(e,t,f,n),t.child;case 6:return e===null&&ps(t),null;case 13:return Jc(e,t,n);case 4:return ks(t,t.stateNode.containerInfo),l=t.pendingProps,e===null?t.child=br(t,null,l,n):ut(e,t,l,n),t.child;case 11:return l=t.type,s=t.pendingProps,s=t.elementType===l?s:Vt(l,s),Uc(e,t,l,s,n);case 7:return ut(e,t,t.pendingProps,n),t.child;case 8:return ut(e,t,t.pendingProps.children,n),t.child;case 12:return ut(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(l=t.type._context,s=t.pendingProps,a=t.memoizedProps,f=s.value,be(To,l._currentValue),l._currentValue=f,a!==null)if(Bt(a.value,f)){if(a.children===s.children&&!ht.current){t=mn(e,t,n);break e}}else for(a=t.child,a!==null&&(a.return=t);a!==null;){var g=a.dependencies;if(g!==null){f=a.child;for(var w=g.firstContext;w!==null;){if(w.context===l){if(a.tag===1){w=pn(-1,n&-n),w.tag=2;var b=a.updateQueue;if(b!==null){b=b.shared;var O=b.pending;O===null?w.next=w:(w.next=O.next,O.next=w),b.pending=w}}a.lanes|=n,w=a.alternate,w!==null&&(w.lanes|=n),ys(a.return,n,t),g.lanes|=n;break}w=w.next}}else if(a.tag===10)f=a.type===t.type?null:a.child;else if(a.tag===18){if(f=a.return,f===null)throw Error(o(341));f.lanes|=n,g=f.alternate,g!==null&&(g.lanes|=n),ys(f,n,t),f=a.sibling}else f=a.child;if(f!==null)f.return=a;else for(f=a;f!==null;){if(f===t){f=null;break}if(a=f.sibling,a!==null){a.return=f.return,f=a;break}f=f.return}a=f}ut(e,t,s.children,n),t=t.child}return t;case 9:return s=t.type,l=t.pendingProps.children,Tr(t,n),s=Dt(s),l=l(s),t.flags|=1,ut(e,t,l,n),t.child;case 14:return l=t.type,s=Vt(l,t.pendingProps),s=Vt(l.type,s),Vc(e,t,l,s,n);case 15:return Hc(e,t,t.type,t.pendingProps,n);case 17:return l=t.type,s=t.pendingProps,s=t.elementType===l?s:Vt(l,s),$o(e,t),t.tag=1,gt(l)?(e=!0,Co(t)):e=!1,Tr(t,n),Ic(t,l,s),zs(t,l,s,n),As(null,t,l,!0,e,n);case 19:return qc(e,t,n);case 22:return Gc(e,t,n)}throw Error(o(156,t.tag))};function Cd(e,t){return nu(e,t)}function Vm(e,t,n,l){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=l,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function jt(e,t,n,l){return new Vm(e,t,n,l)}function la(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Hm(e){if(typeof e=="function")return la(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Pe)return 11;if(e===$e)return 14}return 2}function Bn(e,t){var n=e.alternate;return n===null?(n=jt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Zo(e,t,n,l,s,a){var f=2;if(l=e,typeof e=="function")la(e)&&(f=1);else if(typeof e=="string")f=5;else e:switch(e){case H:return ar(n.children,s,a,t);case z:f=8,s|=8;break;case Q:return e=jt(12,n,t,s|2),e.elementType=Q,e.lanes=a,e;case Re:return e=jt(13,n,t,s),e.elementType=Re,e.lanes=a,e;case _e:return e=jt(19,n,t,s),e.elementType=_e,e.lanes=a,e;case de:return qo(n,s,a,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case ce:f=10;break e;case ge:f=9;break e;case Pe:f=11;break e;case $e:f=14;break e;case Ce:f=16,l=null;break e}throw Error(o(130,e==null?e:typeof e,""))}return t=jt(f,n,t,s),t.elementType=e,t.type=l,t.lanes=a,t}function ar(e,t,n,l){return e=jt(7,e,l,t),e.lanes=n,e}function qo(e,t,n,l){return e=jt(22,e,l,t),e.elementType=de,e.lanes=n,e.stateNode={isHidden:!1},e}function oa(e,t,n){return e=jt(6,e,null,t),e.lanes=n,e}function ia(e,t,n){return t=jt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Gm(e,t,n,l,s){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=ji(0),this.expirationTimes=ji(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ji(0),this.identifierPrefix=l,this.onRecoverableError=s,this.mutableSourceEagerHydrationData=null}function sa(e,t,n,l,s,a,f,g,w){return e=new Gm(e,t,n,g,w),t===1?(t=1,a===!0&&(t|=8)):t=0,a=jt(3,null,null,t),e.current=a,a.stateNode=e,a.memoizedState={element:l,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},xs(a),e}function Qm(e,t,n){var l=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(r)}catch(i){console.error(i)}}return r(),pa.exports=lh(),pa.exports}var Od;function oh(){if(Od)return ii;Od=1;var r=df();return ii.createRoot=r.createRoot,ii.hydrateRoot=r.hydrateRoot,ii}var ih=oh();const sh=cf(ih);/** + * react-router v7.8.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */var Ad="popstate";function ah(r={}){function i(u,c){let{pathname:d,search:p,hash:h}=u.location;return Ra("",{pathname:d,search:p,hash:h},c.state&&c.state.usr||null,c.state&&c.state.key||"default")}function o(u,c){return typeof c=="string"?c:Al(c)}return ch(i,o,null,r)}function Oe(r,i){if(r===!1||r===null||typeof r>"u")throw new Error(i)}function nn(r,i){if(!r){typeof console<"u"&&console.warn(i);try{throw new Error(i)}catch{}}}function uh(){return Math.random().toString(36).substring(2,10)}function Fd(r,i){return{usr:r.state,key:r.key,idx:i}}function Ra(r,i,o=null,u){return{pathname:typeof r=="string"?r:r.pathname,search:"",hash:"",...typeof i=="string"?Ar(i):i,state:o,key:i&&i.key||u||uh()}}function Al({pathname:r="/",search:i="",hash:o=""}){return i&&i!=="?"&&(r+=i.charAt(0)==="?"?i:"?"+i),o&&o!=="#"&&(r+=o.charAt(0)==="#"?o:"#"+o),r}function Ar(r){let i={};if(r){let o=r.indexOf("#");o>=0&&(i.hash=r.substring(o),r=r.substring(0,o));let u=r.indexOf("?");u>=0&&(i.search=r.substring(u),r=r.substring(0,u)),r&&(i.pathname=r)}return i}function ch(r,i,o,u={}){let{window:c=document.defaultView,v5Compat:d=!1}=u,p=c.history,h="POP",m=null,v=k();v==null&&(v=0,p.replaceState({...p.state,idx:v},""));function k(){return(p.state||{idx:null}).idx}function S(){h="POP";let _=k(),M=_==null?null:_-v;v=_,m&&m({action:h,location:T.location,delta:M})}function P(_,M){h="PUSH";let W=Ra(T.location,_,M);v=k()+1;let B=Fd(W,v),q=T.createHref(W);try{p.pushState(B,"",q)}catch(re){if(re instanceof DOMException&&re.name==="DataCloneError")throw re;c.location.assign(q)}d&&m&&m({action:h,location:T.location,delta:1})}function j(_,M){h="REPLACE";let W=Ra(T.location,_,M);v=k();let B=Fd(W,v),q=T.createHref(W);p.replaceState(B,"",q),d&&m&&m({action:h,location:T.location,delta:0})}function F(_){return dh(_)}let T={get action(){return h},get location(){return r(c,p)},listen(_){if(m)throw new Error("A history only accepts one active listener");return c.addEventListener(Ad,S),m=_,()=>{c.removeEventListener(Ad,S),m=null}},createHref(_){return i(c,_)},createURL:F,encodeLocation(_){let M=F(_);return{pathname:M.pathname,search:M.search,hash:M.hash}},push:P,replace:j,go(_){return p.go(_)}};return T}function dh(r,i=!1){let o="http://localhost";typeof window<"u"&&(o=window.location.origin!=="null"?window.location.origin:window.location.href),Oe(o,"No window.location.(origin|href) available to create URL");let u=typeof r=="string"?r:Al(r);return u=u.replace(/ $/,"%20"),!i&&u.startsWith("//")&&(u=o+u),new URL(u,o)}function ff(r,i,o="/"){return fh(r,i,o,!1)}function fh(r,i,o,u){let c=typeof i=="string"?Ar(i):i,d=yn(c.pathname||"/",o);if(d==null)return null;let p=pf(r);ph(p);let h=null;for(let m=0;h==null&&m{let m={relativePath:h===void 0?d.path||"":h,caseSensitive:d.caseSensitive===!0,childrenIndex:p,route:d};m.relativePath.startsWith("/")&&(Oe(m.relativePath.startsWith(u),`Absolute route path "${m.relativePath}" nested under path "${u}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),m.relativePath=m.relativePath.slice(u.length));let v=vn([u,m.relativePath]),k=o.concat(m);d.children&&d.children.length>0&&(Oe(d.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${v}".`),pf(d.children,i,k,v)),!(d.path==null&&!d.index)&&i.push({path:v,score:xh(v,d.index),routesMeta:k})};return r.forEach((d,p)=>{var h;if(d.path===""||!((h=d.path)!=null&&h.includes("?")))c(d,p);else for(let m of mf(d.path))c(d,p,m)}),i}function mf(r){let i=r.split("/");if(i.length===0)return[];let[o,...u]=i,c=o.endsWith("?"),d=o.replace(/\?$/,"");if(u.length===0)return c?[d,""]:[d];let p=mf(u.join("/")),h=[];return h.push(...p.map(m=>m===""?d:[d,m].join("/"))),c&&h.push(...p),h.map(m=>r.startsWith("/")&&m===""?"/":m)}function ph(r){r.sort((i,o)=>i.score!==o.score?o.score-i.score:kh(i.routesMeta.map(u=>u.childrenIndex),o.routesMeta.map(u=>u.childrenIndex)))}var mh=/^:[\w-]+$/,hh=3,gh=2,vh=1,yh=10,wh=-2,Wd=r=>r==="*";function xh(r,i){let o=r.split("/"),u=o.length;return o.some(Wd)&&(u+=wh),i&&(u+=gh),o.filter(c=>!Wd(c)).reduce((c,d)=>c+(mh.test(d)?hh:d===""?vh:yh),u)}function kh(r,i){return r.length===i.length&&r.slice(0,-1).every((u,c)=>u===i[c])?r[r.length-1]-i[i.length-1]:0}function Sh(r,i,o=!1){let{routesMeta:u}=r,c={},d="/",p=[];for(let h=0;h{if(k==="*"){let F=h[P]||"";p=d.slice(0,d.length-F.length).replace(/(.)\/+$/,"$1")}const j=h[P];return S&&!j?v[k]=void 0:v[k]=(j||"").replace(/%2F/g,"/"),v},{}),pathname:d,pathnameBase:p,pattern:r}}function Ch(r,i=!1,o=!0){nn(r==="*"||!r.endsWith("*")||r.endsWith("/*"),`Route path "${r}" will be treated as if it were "${r.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${r.replace(/\*$/,"/*")}".`);let u=[],c="^"+r.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(p,h,m)=>(u.push({paramName:h,isOptional:m!=null}),m?"/?([^\\/]+)?":"/([^\\/]+)"));return r.endsWith("*")?(u.push({paramName:"*"}),c+=r==="*"||r==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):o?c+="\\/*$":r!==""&&r!=="/"&&(c+="(?:(?=\\/|$))"),[new RegExp(c,i?void 0:"i"),u]}function Eh(r){try{return r.split("/").map(i=>decodeURIComponent(i).replace(/\//g,"%2F")).join("/")}catch(i){return nn(!1,`The URL path "${r}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${i}).`),r}}function yn(r,i){if(i==="/")return r;if(!r.toLowerCase().startsWith(i.toLowerCase()))return null;let o=i.endsWith("/")?i.length-1:i.length,u=r.charAt(o);return u&&u!=="/"?null:r.slice(o)||"/"}function Nh(r,i="/"){let{pathname:o,search:u="",hash:c=""}=typeof r=="string"?Ar(r):r;return{pathname:o?o.startsWith("/")?o:Rh(o,i):i,search:Th(u),hash:Dh(c)}}function Rh(r,i){let o=i.replace(/\/+$/,"").split("/");return r.split("/").forEach(c=>{c===".."?o.length>1&&o.pop():c!=="."&&o.push(c)}),o.length>1?o.join("/"):"/"}function ga(r,i,o,u){return`Cannot include a '${r}' character in a manually specified \`to.${i}\` field [${JSON.stringify(u)}]. Please separate it out to the \`to.${o}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function bh(r){return r.filter((i,o)=>o===0||i.route.path&&i.route.path.length>0)}function hf(r){let i=bh(r);return i.map((o,u)=>u===i.length-1?o.pathname:o.pathnameBase)}function gf(r,i,o,u=!1){let c;typeof r=="string"?c=Ar(r):(c={...r},Oe(!c.pathname||!c.pathname.includes("?"),ga("?","pathname","search",c)),Oe(!c.pathname||!c.pathname.includes("#"),ga("#","pathname","hash",c)),Oe(!c.search||!c.search.includes("#"),ga("#","search","hash",c)));let d=r===""||c.pathname==="",p=d?"/":c.pathname,h;if(p==null)h=o;else{let S=i.length-1;if(!u&&p.startsWith("..")){let P=p.split("/");for(;P[0]==="..";)P.shift(),S-=1;c.pathname=P.join("/")}h=S>=0?i[S]:"/"}let m=Nh(c,h),v=p&&p!=="/"&&p.endsWith("/"),k=(d||p===".")&&o.endsWith("/");return!m.pathname.endsWith("/")&&(v||k)&&(m.pathname+="/"),m}var vn=r=>r.join("/").replace(/\/\/+/g,"/"),Ph=r=>r.replace(/\/+$/,"").replace(/^\/*/,"/"),Th=r=>!r||r==="?"?"":r.startsWith("?")?r:"?"+r,Dh=r=>!r||r==="#"?"":r.startsWith("#")?r:"#"+r;function _h(r){return r!=null&&typeof r.status=="number"&&typeof r.statusText=="string"&&typeof r.internal=="boolean"&&"data"in r}var vf=["POST","PUT","PATCH","DELETE"];new Set(vf);var Lh=["GET",...vf];new Set(Lh);var Fr=y.createContext(null);Fr.displayName="DataRouter";var xi=y.createContext(null);xi.displayName="DataRouterState";y.createContext(!1);var yf=y.createContext({isTransitioning:!1});yf.displayName="ViewTransition";var jh=y.createContext(new Map);jh.displayName="Fetchers";var zh=y.createContext(null);zh.displayName="Await";var rn=y.createContext(null);rn.displayName="Navigation";var Bl=y.createContext(null);Bl.displayName="Location";var xn=y.createContext({outlet:null,matches:[],isDataRoute:!1});xn.displayName="Route";var Oa=y.createContext(null);Oa.displayName="RouteError";function Mh(r,{relative:i}={}){Oe(Ul(),"useHref() may be used only in the context of a component.");let{basename:o,navigator:u}=y.useContext(rn),{hash:c,pathname:d,search:p}=Vl(r,{relative:i}),h=d;return o!=="/"&&(h=d==="/"?o:vn([o,d])),u.createHref({pathname:h,search:p,hash:c})}function Ul(){return y.useContext(Bl)!=null}function cr(){return Oe(Ul(),"useLocation() may be used only in the context of a component."),y.useContext(Bl).location}var wf="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function xf(r){y.useContext(rn).static||y.useLayoutEffect(r)}function Ih(){let{isDataRoute:r}=y.useContext(xn);return r?Yh():Oh()}function Oh(){Oe(Ul(),"useNavigate() may be used only in the context of a component.");let r=y.useContext(Fr),{basename:i,navigator:o}=y.useContext(rn),{matches:u}=y.useContext(xn),{pathname:c}=cr(),d=JSON.stringify(hf(u)),p=y.useRef(!1);return xf(()=>{p.current=!0}),y.useCallback((m,v={})=>{if(nn(p.current,wf),!p.current)return;if(typeof m=="number"){o.go(m);return}let k=gf(m,JSON.parse(d),c,v.relative==="path");r==null&&i!=="/"&&(k.pathname=k.pathname==="/"?i:vn([i,k.pathname])),(v.replace?o.replace:o.push)(k,v.state,v)},[i,o,d,c,r])}y.createContext(null);function Vl(r,{relative:i}={}){let{matches:o}=y.useContext(xn),{pathname:u}=cr(),c=JSON.stringify(hf(o));return y.useMemo(()=>gf(r,JSON.parse(c),u,i==="path"),[r,c,u,i])}function Ah(r,i){return kf(r,i)}function kf(r,i,o,u){var M;Oe(Ul(),"useRoutes() may be used only in the context of a component.");let{navigator:c}=y.useContext(rn),{matches:d}=y.useContext(xn),p=d[d.length-1],h=p?p.params:{},m=p?p.pathname:"/",v=p?p.pathnameBase:"/",k=p&&p.route;{let W=k&&k.path||"";Sf(m,!k||W.endsWith("*")||W.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${m}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. + +Please change the parent to .`)}let S=cr(),P;if(i){let W=typeof i=="string"?Ar(i):i;Oe(v==="/"||((M=W.pathname)==null?void 0:M.startsWith(v)),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${v}" but pathname "${W.pathname}" was given in the \`location\` prop.`),P=W}else P=S;let j=P.pathname||"/",F=j;if(v!=="/"){let W=v.replace(/^\//,"").split("/");F="/"+j.replace(/^\//,"").split("/").slice(W.length).join("/")}let T=ff(r,{pathname:F});nn(k||T!=null,`No routes matched location "${P.pathname}${P.search}${P.hash}" `),nn(T==null||T[T.length-1].route.element!==void 0||T[T.length-1].route.Component!==void 0||T[T.length-1].route.lazy!==void 0,`Matched leaf route at location "${P.pathname}${P.search}${P.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let _=Uh(T&&T.map(W=>Object.assign({},W,{params:Object.assign({},h,W.params),pathname:vn([v,c.encodeLocation?c.encodeLocation(W.pathname).pathname:W.pathname]),pathnameBase:W.pathnameBase==="/"?v:vn([v,c.encodeLocation?c.encodeLocation(W.pathnameBase).pathname:W.pathnameBase])})),d,o,u);return i&&_?y.createElement(Bl.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...P},navigationType:"POP"}},_):_}function Fh(){let r=Kh(),i=_h(r)?`${r.status} ${r.statusText}`:r instanceof Error?r.message:JSON.stringify(r),o=r instanceof Error?r.stack:null,u="rgba(200,200,200, 0.5)",c={padding:"0.5rem",backgroundColor:u},d={padding:"2px 4px",backgroundColor:u},p=null;return console.error("Error handled by React Router default ErrorBoundary:",r),p=y.createElement(y.Fragment,null,y.createElement("p",null,"💿 Hey developer 👋"),y.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",y.createElement("code",{style:d},"ErrorBoundary")," or"," ",y.createElement("code",{style:d},"errorElement")," prop on your route.")),y.createElement(y.Fragment,null,y.createElement("h2",null,"Unexpected Application Error!"),y.createElement("h3",{style:{fontStyle:"italic"}},i),o?y.createElement("pre",{style:c},o):null,p)}var Wh=y.createElement(Fh,null),$h=class extends y.Component{constructor(r){super(r),this.state={location:r.location,revalidation:r.revalidation,error:r.error}}static getDerivedStateFromError(r){return{error:r}}static getDerivedStateFromProps(r,i){return i.location!==r.location||i.revalidation!=="idle"&&r.revalidation==="idle"?{error:r.error,location:r.location,revalidation:r.revalidation}:{error:r.error!==void 0?r.error:i.error,location:i.location,revalidation:r.revalidation||i.revalidation}}componentDidCatch(r,i){console.error("React Router caught the following error during render",r,i)}render(){return this.state.error!==void 0?y.createElement(xn.Provider,{value:this.props.routeContext},y.createElement(Oa.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function Bh({routeContext:r,match:i,children:o}){let u=y.useContext(Fr);return u&&u.static&&u.staticContext&&(i.route.errorElement||i.route.ErrorBoundary)&&(u.staticContext._deepestRenderedBoundaryId=i.route.id),y.createElement(xn.Provider,{value:r},o)}function Uh(r,i=[],o=null,u=null){if(r==null){if(!o)return null;if(o.errors)r=o.matches;else if(i.length===0&&!o.initialized&&o.matches.length>0)r=o.matches;else return null}let c=r,d=o==null?void 0:o.errors;if(d!=null){let m=c.findIndex(v=>v.route.id&&(d==null?void 0:d[v.route.id])!==void 0);Oe(m>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(d).join(",")}`),c=c.slice(0,Math.min(c.length,m+1))}let p=!1,h=-1;if(o)for(let m=0;m=0?c=c.slice(0,h+1):c=[c[0]];break}}}return c.reduceRight((m,v,k)=>{let S,P=!1,j=null,F=null;o&&(S=d&&v.route.id?d[v.route.id]:void 0,j=v.route.errorElement||Wh,p&&(h<0&&k===0?(Sf("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),P=!0,F=null):h===k&&(P=!0,F=v.route.hydrateFallbackElement||null)));let T=i.concat(c.slice(0,k+1)),_=()=>{let M;return S?M=j:P?M=F:v.route.Component?M=y.createElement(v.route.Component,null):v.route.element?M=v.route.element:M=m,y.createElement(Bh,{match:v,routeContext:{outlet:m,matches:T,isDataRoute:o!=null},children:M})};return o&&(v.route.ErrorBoundary||v.route.errorElement||k===0)?y.createElement($h,{location:o.location,revalidation:o.revalidation,component:j,error:S,children:_(),routeContext:{outlet:null,matches:T,isDataRoute:!0}}):_()},null)}function Aa(r){return`${r} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Vh(r){let i=y.useContext(Fr);return Oe(i,Aa(r)),i}function Hh(r){let i=y.useContext(xi);return Oe(i,Aa(r)),i}function Gh(r){let i=y.useContext(xn);return Oe(i,Aa(r)),i}function Fa(r){let i=Gh(r),o=i.matches[i.matches.length-1];return Oe(o.route.id,`${r} can only be used on routes that contain a unique "id"`),o.route.id}function Qh(){return Fa("useRouteId")}function Kh(){var u;let r=y.useContext(Oa),i=Hh("useRouteError"),o=Fa("useRouteError");return r!==void 0?r:(u=i.errors)==null?void 0:u[o]}function Yh(){let{router:r}=Vh("useNavigate"),i=Fa("useNavigate"),o=y.useRef(!1);return xf(()=>{o.current=!0}),y.useCallback(async(c,d={})=>{nn(o.current,wf),o.current&&(typeof c=="number"?r.navigate(c):await r.navigate(c,{fromRouteId:i,...d}))},[r,i])}var $d={};function Sf(r,i,o){!i&&!$d[r]&&($d[r]=!0,nn(!1,o))}y.memo(Xh);function Xh({routes:r,future:i,state:o}){return kf(r,void 0,o,i)}function ba(r){Oe(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function Jh({basename:r="/",children:i=null,location:o,navigationType:u="POP",navigator:c,static:d=!1}){Oe(!Ul(),"You cannot render a inside another . You should never have more than one in your app.");let p=r.replace(/^\/*/,"/"),h=y.useMemo(()=>({basename:p,navigator:c,static:d,future:{}}),[p,c,d]);typeof o=="string"&&(o=Ar(o));let{pathname:m="/",search:v="",hash:k="",state:S=null,key:P="default"}=o,j=y.useMemo(()=>{let F=yn(m,p);return F==null?null:{location:{pathname:F,search:v,hash:k,state:S,key:P},navigationType:u}},[p,m,v,k,S,P,u]);return nn(j!=null,` is not able to match the URL "${m}${v}${k}" because it does not start with the basename, so the won't render anything.`),j==null?null:y.createElement(rn.Provider,{value:h},y.createElement(Bl.Provider,{children:i,value:j}))}function Zh({children:r,location:i}){return Ah(Pa(r),i)}function Pa(r,i=[]){let o=[];return y.Children.forEach(r,(u,c)=>{if(!y.isValidElement(u))return;let d=[...i,c];if(u.type===y.Fragment){o.push.apply(o,Pa(u.props.children,d));return}Oe(u.type===ba,`[${typeof u.type=="string"?u.type:u.type.name}] is not a component. All component children of must be a or `),Oe(!u.props.index||!u.props.children,"An index route cannot have child routes.");let p={id:u.props.id||d.join("-"),caseSensitive:u.props.caseSensitive,element:u.props.element,Component:u.props.Component,index:u.props.index,path:u.props.path,loader:u.props.loader,action:u.props.action,hydrateFallbackElement:u.props.hydrateFallbackElement,HydrateFallback:u.props.HydrateFallback,errorElement:u.props.errorElement,ErrorBoundary:u.props.ErrorBoundary,hasErrorBoundary:u.props.hasErrorBoundary===!0||u.props.ErrorBoundary!=null||u.props.errorElement!=null,shouldRevalidate:u.props.shouldRevalidate,handle:u.props.handle,lazy:u.props.lazy};u.props.children&&(p.children=Pa(u.props.children,d)),o.push(p)}),o}var ci="get",di="application/x-www-form-urlencoded";function ki(r){return r!=null&&typeof r.tagName=="string"}function qh(r){return ki(r)&&r.tagName.toLowerCase()==="button"}function eg(r){return ki(r)&&r.tagName.toLowerCase()==="form"}function tg(r){return ki(r)&&r.tagName.toLowerCase()==="input"}function ng(r){return!!(r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)}function rg(r,i){return r.button===0&&(!i||i==="_self")&&!ng(r)}var si=null;function lg(){if(si===null)try{new FormData(document.createElement("form"),0),si=!1}catch{si=!0}return si}var og=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function va(r){return r!=null&&!og.has(r)?(nn(!1,`"${r}" is not a valid \`encType\` for \`\`/\`\` and will default to "${di}"`),null):r}function ig(r,i){let o,u,c,d,p;if(eg(r)){let h=r.getAttribute("action");u=h?yn(h,i):null,o=r.getAttribute("method")||ci,c=va(r.getAttribute("enctype"))||di,d=new FormData(r)}else if(qh(r)||tg(r)&&(r.type==="submit"||r.type==="image")){let h=r.form;if(h==null)throw new Error('Cannot submit a +

)} diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index f03dffd0ff..ae5ff24212 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -1,3 +1,4 @@ +// src/pages/GameMode.tsx import React from "react"; import { OrientationGuard } from "../components/OrientationGuard"; import { GameBoard } from "../components/GameBoard"; @@ -5,8 +6,6 @@ import { Heading, DotPattern } from "../ui"; import { useGame } from "../store/game"; export default function GameMode() { - const teamLabel = "Team"; - const teamValue = "A vs B"; const categoryLabel = "Category"; const categoryValue = "Animals"; const roundLabel = "Round"; @@ -18,57 +17,72 @@ export default function GameMode() { const scoreA = teams[0]?.timeline.length ?? 0; const scoreB = teams[1]?.timeline.length ?? 0; + const chip = + "px-2 py-1 rounded-full bg-primary/10 border border-border text-xs tracking-wider uppercase text-muted-foreground"; + const dot = "inline-block w-2 h-2 rounded-sm bg-primary shadow-soft"; + return (
- {/* REPORT-lik hero utan vit ruta */} + {/* Top-left: Category */} +
+ +
+ {categoryLabel}:{" "} + {categoryValue} +
+
+ + {/* Top-right: A/B Team */} +
+
+
+ A Team{" "} + {scoreA} +
+
+ B Team{" "} + {scoreB} +
+
+ +
+ + {/* Bottom-left: Round */} +
+ +
+ {roundLabel}:{" "} + {roundValue} +
+
+ + {/* Bottom-right: Mode */} +
+
+ {modeLabel}:{" "} + {modeValue} +
+ +
+
- {/* subtilt mönster */}
- {/* hörnmarkörer */}
- {/* top-left – CATEGORY */} -
- -
- {categoryLabel}:{" "} - - {categoryValue} - -
-
- - {/* top-right – A Team / B Team */} -
-
-
- A Team{" "} - {scoreA} -
-
- B Team{" "} - {scoreB} -
-
- -
- - {/* rubrik + tagline */}
Game Question
- Which animal weighs the most? -

Arrange cards on the timeline and place the heaviest at the right end. @@ -88,31 +101,9 @@ export default function GameMode() {

- {/* SPEL-VYN */}
- - {/* Footer med Round (vänster) och Mode (höger) */} -
- {/* Round vänster */} -
- -
- {roundLabel}:{" "} - {roundValue} -
-
- - {/* Mode höger */} -
-
- {modeLabel}:{" "} - {modeValue} -
- -
-
); } From e2dba60eba80a3c9c9c40541286cc9bb49be166d Mon Sep 17 00:00:00 2001 From: tildetilde Date: Wed, 20 Aug 2025 21:05:34 +0200 Subject: [PATCH 050/127] Updated design of timeline --- frontend/src/components/GameBoard.tsx | 135 ++++++++++---------- frontend/src/components/TimeLineCard.tsx | 156 +++++++++++++++++------ frontend/src/components/Timeline.tsx | 55 ++++++-- 3 files changed, 222 insertions(+), 124 deletions(-) diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index b471328fdf..84bf115948 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -1,3 +1,4 @@ +// src/components/GameBoard.tsx import React from "react"; import { DndContext, @@ -13,60 +14,34 @@ import { import { restrictToWindowEdges } from "@dnd-kit/modifiers"; import { useGame } from "../store/game"; -import { Heading, Button } from "../ui"; +import { Button } from "../ui"; import { ErrorMessage } from "../ui/ErrorMessage"; import { TimeLineCard } from "./TimeLineCard"; import { CurrentCard, CurrentCardPreview } from "./CurrentCard"; -// helpers som tål både {title,artist,year} och {trackTitle,trackArtist,releaseYear} +// Helpers som tål både {title,artist,year} och {trackTitle,trackArtist,releaseYear} const Y = (c: any) => c?.year ?? c?.releaseYear; const T = (c: any) => c?.title ?? c?.trackTitle; const A = (c: any) => c?.artist ?? c?.trackArtist; -const TeamPill: React.FC<{ - label: string; - active?: boolean; - score: number; -}> = ({ label, active, score }) => ( - - {label} - - {score} - - -); - -// dropp-slot +/** Smalare och lägre “drop slots” för kompakt timeline */ const DropSlot: React.FC<{ id: string; show: boolean }> = ({ id, show }) => { const { setNodeRef, isOver } = useDroppable({ id }); if (!show) return null; + return (
); }; -export const GameBoard: React.FC = () => { +export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { const { teams, currentTeamIndex, @@ -96,7 +71,6 @@ export const GameBoard: React.FC = () => { if (e.active.id === "current-card") setIsDragging(true); }; - // När man släpper över en slot: markera pending (flytta inte currentCard till timeline ännu) const onDragEnd = (e: DragEndEvent) => { setIsDragging(false); const overId = e.over?.id as string | undefined; @@ -104,10 +78,10 @@ export const GameBoard: React.FC = () => { const n = Number(overId.slice(5)); if (!Number.isFinite(n)) return; if (!currentCard) return; - placeAt(n); // sätter pendingIndex + phase: 'PLACED_PENDING' + placeAt(n); }; - // timeline: rendera vita kortet *inne i* timeline på pendingIndex, annars reveal:ade kort + /** Timeline i liten skala; kort växer på hover */ const renderTimeline = () => { const base = phase === "DRAWN" || @@ -122,16 +96,18 @@ export const GameBoard: React.FC = () => { children.push(); for (let i = 0; i < base.length; i++) { + // Pending-kortet renderas i samma lilla skala, precis som övriga if (phase === "PLACED_PENDING" && pendingIndex === i && currentCard) { children.push( -
- +
+
+ +
); } const c = base[i]; - const isLastPlaced = lastPlacementCorrect !== null && pendingIndex !== null && @@ -140,15 +116,18 @@ export const GameBoard: React.FC = () => { children.push(
- + {/* Bas: ~60% storlek. Hover: ~90%. Origin i botten så den “poppar uppåt”. */} +
+ +
); @@ -157,7 +136,6 @@ export const GameBoard: React.FC = () => { ); } - // pending sist if ( phase === "PLACED_PENDING" && pendingIndex === base.length && @@ -166,17 +144,21 @@ export const GameBoard: React.FC = () => { children.splice( children.length - 1, 0, -
- +
+
+ +
); } return ( -
-
+
+ {/* overflow-y visible krävs för att hovrade kort kan växa utanför raden */} +
{children}
+ {lastPlacementCorrect === true && (
✅ Yes! Correct! @@ -199,13 +181,13 @@ export const GameBoard: React.FC = () => { }; return ( -
+
{/* Errors / loading */} {loading && (
Loading items…
)} {error && ( -
+
+
+
)} - {/* Bräde */} + {/* Board */} {phase !== "SETUP" && ( <> { collisionDetection={closestCenter} modifiers={[restrictToWindowEdges]} > - - Timeline - - {renderTimeline()} + {/* Ny layout: tidslinjen överst, current card *under* tidslinjen */} +
+
{renderTimeline()}
- {/* Det vita kortet visas UTANFÖR tidslinjen bara när vi är i DRAWN */} - {phase === "DRAWN" && currentCard && ( -
- -
- )} + {/* Current card alltid placerat under tidslinjen */} + {phase === "DRAWN" && currentCard && ( +
+ {/* Gör kortet något större för tydlighet */} +
+ +
+
+ )} +
{isDragging && currentCard ? ( @@ -254,15 +249,15 @@ export const GameBoard: React.FC = () => {
- {/* Kontroller efter rätt svar */} -
+ {/* Kontroller */} +
{phase === "TURN_START" && ( )} {phase === "DRAWN" && (
- Drag the card and drop it between two cards in the timeline. + Drag the card and drop it between two cards.
)} diff --git a/frontend/src/components/TimeLineCard.tsx b/frontend/src/components/TimeLineCard.tsx index 9fb3e1ba23..9f03f5401e 100644 --- a/frontend/src/components/TimeLineCard.tsx +++ b/frontend/src/components/TimeLineCard.tsx @@ -1,5 +1,53 @@ -import React from 'react'; -import { Card, CardHeader, CardContent } from '../ui'; +import React from "react"; +import { Card, CardHeader, CardContent } from "../ui"; +import { cn } from "../lib/utils"; + +type CardSize = "xs" | "sm" | "md"; + +const TOKENS: Record< + CardSize, + { + wrapper: string; + year: string; + artist: string; + title: string; + badge: string; + padHeader: string; + padContent: string; + vspace: string; + } +> = { + xs: { + wrapper: "w-[100px] h-[140px]", + year: "text-2xl", + artist: "text-[11px] font-semibold", + title: "text-[10px]", + badge: "w-5 h-5 text-[10px]", + padHeader: "pt-3 pb-1", + padContent: "px-2 pb-2", + vspace: "space-y-1", + }, + sm: { + wrapper: "w-[136px] h-[180px]", + year: "text-3xl", + artist: "text-sm font-semibold", + title: "text-xs", + badge: "w-6 h-6 text-xs", + padHeader: "pt-4 pb-2", + padContent: "px-3 pb-3", + vspace: "space-y-2", + }, + md: { + wrapper: "w-60 h-80", + year: "text-6xl", + artist: "text-2xl font-semibold", + title: "text-xl", + badge: "w-8 h-8 text-lg", + padHeader: "pt-8 pb-4", + padContent: "px-6 pb-8", + vspace: "space-y-4", + }, +}; interface TimeLineCardProps { year: number; @@ -8,51 +56,75 @@ interface TimeLineCardProps { isCorrect?: boolean; isRevealed?: boolean; className?: string; + size?: CardSize; // ← NYTT } -export const TimeLineCard: React.FC = ({ - year, - artist, - title, +export const TimeLineCard: React.FC = ({ + year, + artist, + title, isCorrect, isRevealed, - className = '', -}) => ( - -
-
-
- - -
- {isRevealed ? year : '??'} -
-
- - -
-
- {artist} + className, + size = "sm", +}) => { + const t = TOKENS[size]; + + return ( + +
+
+
+ + +
+ {isRevealed ? year : "??"}
-
- {title} + + + +
+
+ {artist} +
+
+ {title} +
-
- + - {isCorrect !== undefined && ( -
- {isCorrect ? '✓' : '✗'} -
- )} + {isCorrect !== undefined && ( +
+ {isCorrect ? "✓" : "✗"} +
+ )} -
- -); +
+ + ); +}; diff --git a/frontend/src/components/Timeline.tsx b/frontend/src/components/Timeline.tsx index ac9b76995c..e4b1fdb71e 100644 --- a/frontend/src/components/Timeline.tsx +++ b/frontend/src/components/Timeline.tsx @@ -4,17 +4,32 @@ import { useDroppable } from "@dnd-kit/core"; import { TimeLineCard } from "./TimeLineCard"; import type { TrackCard } from "@/types/game"; -type Size = "sm" | "md" | "lg"; -const SIZES: Record = { - sm: { card: "w-[136px] h-[180px]", slot: "w-2 h-[180px]", gap: "gap-3" }, - md: { card: "w-48 h-64", slot: "w-3 h-64", gap: "gap-6" }, - lg: { card: "w-60 h-80", slot: "w-3 h-80", gap: "gap-10" }, +type Size = "xs" | "sm" | "md"; +const SIZES: Record< + Size, + { card: string; slot: string; gap: string; cardSize: Size } +> = { + // xs ryms ~10 kort på vanliga laptop-bredder + xs: { + card: "w-[100px] h-[140px]", + slot: "w-1 h-[140px]", + gap: "gap-2", + cardSize: "xs", + }, + sm: { + card: "w-[136px] h-[180px]", + slot: "w-2 h-[180px]", + gap: "gap-3", + cardSize: "sm", + }, + md: { card: "w-60 h-80", slot: "w-3 h-80", gap: "gap-6", cardSize: "md" }, }; type TimelineProps = { timeline: TrackCard[]; showSlots?: boolean; size?: Size; + className?: string; }; const Slot: React.FC<{ id: string; className: string }> = ({ @@ -38,25 +53,41 @@ const Slot: React.FC<{ id: string; className: string }> = ({ export const Timeline: React.FC = ({ timeline, showSlots = true, - size = "md", + size = "xs", + className, }) => { const sz = SIZES[size]; const slots = Array.from({ length: timeline.length + 1 }); return (
{slots.map((_, i) => ( {showSlots && } {i < timeline.length && ( -
+
)} From ad6dd297d6407317ae8d1d926d1b2ff5fe474d71 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Thu, 21 Aug 2025 09:33:07 +0200 Subject: [PATCH 051/127] Update GameMode.tsx --- frontend/src/pages/GameMode.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index ae5ff24212..488b303a75 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -98,12 +98,12 @@ export default function GameMode() { end.

+ +
+ +
- -
- -
); } From 35d0f3b85fea9d1b416bf29decb340182de6f66e Mon Sep 17 00:00:00 2001 From: Idahel Date: Thu, 21 Aug 2025 11:13:00 +0200 Subject: [PATCH 052/127] added question and isViseble to api response --- backend/TODO.md | 3 -- .../dist/controllers/quizController.d.ts.map | 2 +- backend/dist/controllers/quizController.js | 22 +++++++++++++-- .../dist/controllers/quizController.js.map | 2 +- backend/dist/models/Item.d.ts | 7 ++--- backend/dist/models/Item.d.ts.map | 2 +- backend/dist/models/Item.js | 4 +++ backend/dist/models/Item.js.map | 2 +- backend/dist/services/seedDb.js | 4 +-- backend/dist/services/seedDb.js.map | 2 +- backend/dist/types.d.ts | 1 - backend/dist/types.d.ts.map | 1 - backend/dist/types.js | 2 -- backend/dist/types.js.map | 1 - backend/dist/types/quiz.d.ts | 19 +++++++++---- backend/dist/types/quiz.d.ts.map | 2 +- backend/src/controllers/quizController.ts | 28 ++++++++++++++++--- backend/src/models/Item.ts | 12 ++++---- backend/src/services/seedDb.ts | 4 +-- backend/src/types/quiz.ts | 20 +++++++++---- 20 files changed, 92 insertions(+), 48 deletions(-) delete mode 100644 backend/TODO.md delete mode 100644 backend/dist/types.d.ts delete mode 100644 backend/dist/types.d.ts.map delete mode 100644 backend/dist/types.js delete mode 100644 backend/dist/types.js.map diff --git a/backend/TODO.md b/backend/TODO.md deleted file mode 100644 index b9bcd7daa8..0000000000 --- a/backend/TODO.md +++ /dev/null @@ -1,3 +0,0 @@ -[] Databas som lagrar API-svaret -[] Mongose schema API-svaret -[] diff --git a/backend/dist/controllers/quizController.d.ts.map b/backend/dist/controllers/quizController.d.ts.map index a5d8293103..2b86c1c148 100644 --- a/backend/dist/controllers/quizController.d.ts.map +++ b/backend/dist/controllers/quizController.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"quizController.d.ts","sourceRoot":"","sources":["../../src/controllers/quizController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAe5C,eAAO,MAAM,aAAa,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,kBAc9D,CAAC;AAGF,eAAO,MAAM,YAAY,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,4DAgC7D,CAAC;AAGF,eAAO,MAAM,YAAY,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,kBA0B7D,CAAC"} \ No newline at end of file +{"version":3,"file":"quizController.d.ts","sourceRoot":"","sources":["../../src/controllers/quizController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAe5C,eAAO,MAAM,aAAa,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,kBAc9D,CAAC;AAGF,eAAO,MAAM,YAAY,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,4DAoD7D,CAAC;AAGF,eAAO,MAAM,YAAY,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,kBA0B7D,CAAC"} \ No newline at end of file diff --git a/backend/dist/controllers/quizController.js b/backend/dist/controllers/quizController.js index e626f38f3d..cc685735d8 100644 --- a/backend/dist/controllers/quizController.js +++ b/backend/dist/controllers/quizController.js @@ -29,7 +29,17 @@ export const getCategories = async (req, res) => { export const getQuizItems = async (req, res) => { const { categoryId } = req.params; try { - const items = await Item.find({ categoryId }); + // Fetch both the category and items + const [category, items] = await Promise.all([ + Category.findOne({ id: categoryId }), + Item.find({ categoryId }) + ]); + if (!category) { + return res.status(404).json({ + success: false, + error: { message: 'Category not found.' } + }); + } if (items.length < 5) { return res.status(404).json({ success: false, @@ -40,14 +50,20 @@ export const getQuizItems = async (req, res) => { const quizItems = shuffledItems.slice(0, 5); // Take 5 random items // Remove the 'value' before sending to the client const sanitizedItems = quizItems.map(item => ({ - _id: item._id, + _id: item._id?.toString() || '', id: item.id, name: item.name, label: item.label })); + const responseData = { + unit: category.unit, + items: sanitizedItems, + question: category.get('question') || '', + unitVisible: category.get('unitVisible') || false, + }; res.status(200).json({ success: true, - data: sanitizedItems + data: responseData }); } catch (error) { diff --git a/backend/dist/controllers/quizController.js.map b/backend/dist/controllers/quizController.js.map index efd20ee213..6bfcdc4f71 100644 --- a/backend/dist/controllers/quizController.js.map +++ b/backend/dist/controllers/quizController.js.map @@ -1 +1 @@ -{"version":3,"file":"quizController.js","sourceRoot":"","sources":["../../src/controllers/quizController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,sCAAsC;AACtC,MAAM,YAAY,GAAG,CAAI,KAAU,EAAO,EAAE;IAC1C,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,0BAA0B;AAC1B,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IACjE,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QAC9E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,YAAY,EAAE;SACvE,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAEF,gDAAgD;AAChD,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IAChE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;QAC9C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBAC1B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,EAAE,OAAO,EAAE,iCAAiC,EAAE;aACtD,CAAC,CAAC;QACL,CAAC;QACD,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,sBAAsB;QAEnE,kDAAkD;QAClD,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5C,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC,CAAC;QAEJ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,cAAc;SACrB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QAC9E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,YAAY,EAAE;SACvE,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAEF,0CAA0C;AAC1C,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;IAChE,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,sCAAsC;IAExE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAE9F,wEAAwE;QACxE,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAU,EAAE,KAAa,EAAE,EAAE;YAChE,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YACxC,OAAO,WAAW,IAAI,EAAE,KAAK,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAoB,EAAE,SAAS,EAAE,CAAC;QAE9C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,MAAM;SACb,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QAC9E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,OAAO,EAAE,YAAY,EAAE;SACpE,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"quizController.js","sourceRoot":"","sources":["../../src/controllers/quizController.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/backend/dist/models/Item.d.ts b/backend/dist/models/Item.d.ts index 898dba4fb2..eb3c6f28d9 100644 --- a/backend/dist/models/Item.d.ts +++ b/backend/dist/models/Item.d.ts @@ -1,9 +1,6 @@ import { Document } from 'mongoose'; -export interface IItem extends Document { - name: string; - value: number; - label: string; - categoryId: string; +import { QuizItem } from '../types/quiz.js'; +export interface IItem extends Document, Omit { } export declare const Item: import("mongoose").Model & IItem & Required<{ _id: unknown; diff --git a/backend/dist/models/Item.d.ts.map b/backend/dist/models/Item.d.ts.map index 838ff69101..3c9477538a 100644 --- a/backend/dist/models/Item.d.ts.map +++ b/backend/dist/models/Item.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../src/models/Item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,WAAW,KAAM,SAAQ,QAAQ;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AASD,eAAO,MAAM,IAAI;;;;OAAmC,CAAC"} \ No newline at end of file +{"version":3,"file":"Item.d.ts","sourceRoot":"","sources":["../../src/models/Item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,QAAQ,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,WAAW,KAAM,SAAQ,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,IAAI,CAAC;CAAG;AAaxE,eAAO,MAAM,IAAI;;;;OAAmC,CAAC"} \ No newline at end of file diff --git a/backend/dist/models/Item.js b/backend/dist/models/Item.js index d63761ca2a..baa1ff01da 100644 --- a/backend/dist/models/Item.js +++ b/backend/dist/models/Item.js @@ -1,9 +1,13 @@ import { Schema, model } from 'mongoose'; const ItemSchema = new Schema({ + id: { type: String, required: true, unique: true }, name: { type: String, required: true }, value: { type: Number, required: true }, label: { type: String, required: true }, categoryId: { type: String, required: true }, + source: { + name: { type: String, required: true } + } }); export const Item = model('Item', ItemSchema); //# sourceMappingURL=Item.js.map \ No newline at end of file diff --git a/backend/dist/models/Item.js.map b/backend/dist/models/Item.js.map index 9b1c481797..66831c274a 100644 --- a/backend/dist/models/Item.js.map +++ b/backend/dist/models/Item.js.map @@ -1 +1 @@ -{"version":3,"file":"Item.js","sourceRoot":"","sources":["../../src/models/Item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAY,MAAM,UAAU,CAAC;AASnD,MAAM,UAAU,GAAG,IAAI,MAAM,CAAQ;IACnC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACvC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACvC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;CAC7C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,CAAQ,MAAM,EAAE,UAAU,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"Item.js","sourceRoot":"","sources":["../../src/models/Item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAY,MAAM,UAAU,CAAC;AAKnD,MAAM,UAAU,GAAG,IAAI,MAAM,CAAQ;IACnC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAClD,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACvC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACvC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC5C,MAAM,EAAE;QACN,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;KACvC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,CAAQ,MAAM,EAAE,UAAU,CAAC,CAAC"} \ No newline at end of file diff --git a/backend/dist/services/seedDb.js b/backend/dist/services/seedDb.js index 288f3a2e77..eaff063bb2 100644 --- a/backend/dist/services/seedDb.js +++ b/backend/dist/services/seedDb.js @@ -38,7 +38,7 @@ const seedData = async () => { for (const file of categoryFiles) { const categoryData = readJsonFile(path.join(categoriesPath, file)); if (categoryData) { - await Category.create(categoryData); + await mongoose.connection.collection('categories').insertOne(categoryData); console.log(`Category "${categoryData.name}" seeded.`); } } @@ -52,7 +52,7 @@ const seedData = async () => { console.log(`Items from file "${file}" seeded.`); } } - console.log('Database seeding complete! 🌱'); + console.log('Database seeding complete!'); mongoose.connection.close(); } catch (error) { diff --git a/backend/dist/services/seedDb.js.map b/backend/dist/services/seedDb.js.map index 65155fa78d..49f64d82cd 100644 --- a/backend/dist/services/seedDb.js.map +++ b/backend/dist/services/seedDb.js.map @@ -1 +1 @@ -{"version":3,"file":"seedDb.js","sourceRoot":"","sources":["../../src/services/seedDb.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"seedDb.js","sourceRoot":"","sources":["../../src/services/seedDb.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/backend/dist/types.d.ts b/backend/dist/types.d.ts deleted file mode 100644 index 2324761ceb..0000000000 --- a/backend/dist/types.d.ts +++ /dev/null @@ -1 +0,0 @@ -//# sourceMappingURL=types.d.ts.map \ No newline at end of file diff --git a/backend/dist/types.d.ts.map b/backend/dist/types.d.ts.map deleted file mode 100644 index 4d581892d5..0000000000 --- a/backend/dist/types.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/backend/dist/types.js b/backend/dist/types.js deleted file mode 100644 index 2f0e4146c5..0000000000 --- a/backend/dist/types.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -//# sourceMappingURL=types.js.map \ No newline at end of file diff --git a/backend/dist/types.js.map b/backend/dist/types.js.map deleted file mode 100644 index c768b79002..0000000000 --- a/backend/dist/types.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/backend/dist/types/quiz.d.ts b/backend/dist/types/quiz.d.ts index dbb78c6506..0e0606069a 100644 --- a/backend/dist/types/quiz.d.ts +++ b/backend/dist/types/quiz.d.ts @@ -13,22 +13,29 @@ export interface QuizCategory { _id: string; id: string; name: string; - question: string; + description?: string; + question?: string; unit: string; - unitVisible: boolean; - sort: 'asc' | 'desc'; - source: { + unitVisible?: boolean; + sort?: 'asc' | 'desc'; + source?: { name: string; url: string; }; - version: number; + version?: number; +} +export interface QuizItemsResponse { + question: string; + unit: string; + unitVisible: boolean; + items: Omit[]; } export interface QuizAnswer { userAnswers: string[]; } export interface QuizResponse { success: boolean; - data?: any; + data?: QuizItemsResponse | QuizCheckResult; error?: { message: string; stack?: string; diff --git a/backend/dist/types/quiz.d.ts.map b/backend/dist/types/quiz.d.ts.map index 255f9dcd86..9f942764bb 100644 --- a/backend/dist/types/quiz.d.ts.map +++ b/backend/dist/types/quiz.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"quiz.d.ts","sourceRoot":"","sources":["../../src/types/quiz.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACxB"} \ No newline at end of file +{"version":3,"file":"quiz.d.ts","sourceRoot":"","sources":["../../src/types/quiz.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,YAAY,GAAG,QAAQ,CAAC,EAAE,CAAC;CAC5D;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,iBAAiB,GAAG,eAAe,CAAC;IAC3C,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC1B,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACxB"} \ No newline at end of file diff --git a/backend/src/controllers/quizController.ts b/backend/src/controllers/quizController.ts index 0c28b2af8d..68b4752a95 100644 --- a/backend/src/controllers/quizController.ts +++ b/backend/src/controllers/quizController.ts @@ -1,7 +1,7 @@ import { Request, Response } from 'express'; import { Item } from '../models/Item.js'; import { Category } from '../models/Category.js'; -import { QuizItem, QuizCheckResult } from '../types/quiz.js'; +import { QuizCheckResult, QuizItemsResponse } from '../types/quiz.js'; // Helper function to shuffle an array const shuffleArray = (array: T[]): T[] => { @@ -33,27 +33,47 @@ export const getCategories = async (req: Request, res: Response) => { export const getQuizItems = async (req: Request, res: Response) => { const { categoryId } = req.params; try { - const items = await Item.find({ categoryId }); + // Fetch both the category and items + const [category, items] = await Promise.all([ + Category.findOne({ id: categoryId }), + Item.find({ categoryId }) + ]); + + if (!category) { + return res.status(404).json({ + success: false, + error: { message: 'Category not found.' } + }); + } + if (items.length < 5) { return res.status(404).json({ success: false, error: { message: 'Not enough items for this quiz.' } }); } + const shuffledItems = shuffleArray(items); const quizItems = shuffledItems.slice(0, 5); // Take 5 random items // Remove the 'value' before sending to the client const sanitizedItems = quizItems.map(item => ({ - _id: item._id, + _id: item._id?.toString() || '', id: item.id, name: item.name, label: item.label })); + const responseData: QuizItemsResponse = { + unit: category.unit, + items: sanitizedItems, + question: category.get('question') || '', + unitVisible: category.get('unitVisible') || false, + }; + res.status(200).json({ success: true, - data: sanitizedItems + data: responseData }); } catch (error) { const errorMessage = error instanceof Error ? error.message : 'Unknown error'; diff --git a/backend/src/models/Item.ts b/backend/src/models/Item.ts index 524e81c957..1e2edc7a63 100644 --- a/backend/src/models/Item.ts +++ b/backend/src/models/Item.ts @@ -1,17 +1,17 @@ import { Schema, model, Document } from 'mongoose'; +import { QuizItem } from '../types/quiz.js'; -export interface IItem extends Document { - name: string; - value: number; - label: string; - categoryId: string; -} +export interface IItem extends Document, Omit {} const ItemSchema = new Schema({ + id: { type: String, required: true, unique: true }, name: { type: String, required: true }, value: { type: Number, required: true }, label: { type: String, required: true }, categoryId: { type: String, required: true }, + source: { + name: { type: String, required: true } + } }); export const Item = model('Item', ItemSchema); \ No newline at end of file diff --git a/backend/src/services/seedDb.ts b/backend/src/services/seedDb.ts index 8070c2b436..bf5a039935 100644 --- a/backend/src/services/seedDb.ts +++ b/backend/src/services/seedDb.ts @@ -45,7 +45,7 @@ const seedData = async () => { for (const file of categoryFiles) { const categoryData = readJsonFile(path.join(categoriesPath, file)); if (categoryData) { - await Category.create(categoryData); + await mongoose.connection.collection('categories').insertOne(categoryData); console.log(`Category "${categoryData.name}" seeded.`); } } @@ -62,7 +62,7 @@ const seedData = async () => { } } - console.log('Database seeding complete! 🌱'); + console.log('Database seeding complete!'); mongoose.connection.close(); } catch (error) { diff --git a/backend/src/types/quiz.ts b/backend/src/types/quiz.ts index 384f2b5b14..38240be2e1 100644 --- a/backend/src/types/quiz.ts +++ b/backend/src/types/quiz.ts @@ -14,15 +14,23 @@ export interface QuizCategory { _id: string; id: string; name: string; - question: string; + description?: string; + question?: string; unit: string; - unitVisible: boolean; - sort: 'asc' | 'desc'; - source: { + unitVisible?: boolean; + sort?: 'asc' | 'desc'; + source?: { name: string; url: string; }; - version: number; + version?: number; +} + +export interface QuizItemsResponse { + question: string; + unit: string; + unitVisible: boolean; + items: Omit[]; } export interface QuizAnswer { @@ -31,7 +39,7 @@ export interface QuizAnswer { export interface QuizResponse { success: boolean; - data?: any; + data?: QuizItemsResponse | QuizCheckResult; error?: { message: string; stack?: string; From c37ab87ff5aba8373cd1d892ad5f66f6e8e66136 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Thu, 21 Aug 2025 11:27:58 +0200 Subject: [PATCH 053/127] Erased old API leftovers (artist, TrackCard etc) --- frontend/src/components/CurrentCard.tsx | 65 ++++-- frontend/src/components/GameBoard.tsx | 14 +- frontend/src/components/StartCard.tsx | 43 ++-- frontend/src/components/TimeLineCard.tsx | 70 +++--- frontend/src/components/Timeline.tsx | 16 +- frontend/src/services/animalsMock.ts | 257 ----------------------- frontend/src/store/game.ts | 33 +-- frontend/src/types/game.ts | 24 +-- 8 files changed, 138 insertions(+), 384 deletions(-) delete mode 100644 frontend/src/services/animalsMock.ts diff --git a/frontend/src/components/CurrentCard.tsx b/frontend/src/components/CurrentCard.tsx index 23465684cd..f8d8b21163 100644 --- a/frontend/src/components/CurrentCard.tsx +++ b/frontend/src/components/CurrentCard.tsx @@ -1,18 +1,24 @@ -import React from 'react' -import { useDraggable } from '@dnd-kit/core' -import { Card, CardHeader, CardContent } from '../ui' -import type { TrackCard } from '../types/game' +import React from "react"; +import { useDraggable } from "@dnd-kit/core"; +import { Card, CardHeader, CardContent } from "../ui"; +import type { GameItem } from "../types/game"; -const T = (c: any) => c?.title ?? c?.trackTitle ?? ''; -const A = (c: any) => c?.artist ?? c?.trackArtist ?? ''; - -export const CurrentCard: React.FC<{ card: TrackCard; dragging?: boolean }> = ({ card, dragging }) => { - const { attributes, listeners, setNodeRef, transform } = useDraggable({ id: 'current-card' }); +export const CurrentCard: React.FC<{ card: GameItem; dragging?: boolean }> = ({ + card, + dragging, +}) => { + const { attributes, listeners, setNodeRef, transform } = useDraggable({ + id: "current-card", + }); const style: React.CSSProperties | undefined = transform ? { transform: `translate3d(${transform.x}px, ${transform.y}px, 0)` } : undefined; + const secondary = + card.label && card.label.trim() !== "" && card.label !== card.name + ? card.label + : undefined; return (
= ({ style={style} {...listeners} {...attributes} - className={`w-[136px] cursor-grab active:cursor-grabbing select-none ${dragging ? 'opacity-0' : ''}`} + className={`w-[136px] cursor-grab active:cursor-grabbing select-none ${ + dragging ? "opacity-0" : "" + }`} > - + -
Place in timeline
+
+ Place in timeline +
-
{A(card)}
-
{T(card)}
-
?
+
+ {card.name} +
+
+ {secondary} +
+
+ ? +
); -} +}; // Preview för DragOverlay (samma look) -export const CurrentCardPreview: React.FC<{ card: TrackCard }> = ({ card }) => ( +export const CurrentCardPreview: React.FC<{ card: GameItem }> = ({ card }) => (
-
Place in timeline
+
+ Place in timeline +
-
{A(card)}
-
{T(card)}
-
?
+
+ {card.name} +
+
+ ? +
-) \ No newline at end of file +); diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index 84bf115948..1d28adf624 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -19,11 +19,6 @@ import { ErrorMessage } from "../ui/ErrorMessage"; import { TimeLineCard } from "./TimeLineCard"; import { CurrentCard, CurrentCardPreview } from "./CurrentCard"; -// Helpers som tål både {title,artist,year} och {trackTitle,trackArtist,releaseYear} -const Y = (c: any) => c?.year ?? c?.releaseYear; -const T = (c: any) => c?.title ?? c?.trackTitle; -const A = (c: any) => c?.artist ?? c?.trackArtist; - /** Smalare och lägre “drop slots” för kompakt timeline */ const DropSlot: React.FC<{ id: string; show: boolean }> = ({ id, show }) => { const { setNodeRef, isOver } = useDroppable({ id }); @@ -107,7 +102,7 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { ); } - const c = base[i]; + const c = base[i] as any; const isLastPlaced = lastPlacementCorrect !== null && pendingIndex !== null && @@ -115,15 +110,14 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { children.push(
{/* Bas: ~60% storlek. Hover: ~90%. Origin i botten så den “poppar uppåt”. */}
diff --git a/frontend/src/components/StartCard.tsx b/frontend/src/components/StartCard.tsx index 5580e4a736..7de1f6a4ee 100644 --- a/frontend/src/components/StartCard.tsx +++ b/frontend/src/components/StartCard.tsx @@ -1,22 +1,28 @@ -import React from 'react'; -import { Card, CardHeader, CardContent } from '../ui'; +import React from "react"; +import { Card, CardHeader, CardContent } from "../ui"; +import type { GameItem, GameCategory } from "../types/game"; interface StartCardProps { - year: number; - artist: string; - title: string; + item: GameItem; playerName?: string; className?: string; } -export const StartCard: React.FC = ({ - year, - artist, - title, +const formatValue = (value: number, unit?: string, revealed = true) => + revealed + ? unit + ? `${value} ${unit}` + : String(value) + : unit + ? `?? ${unit}` + : "??"; + +export const StartCard: React.FC = ({ + item, playerName, - className = '', + className = "", }) => ( - = ({ {/* Start-pill */}
- Start + + Start +
{/* År */}
- {year} + {formatValue(item.value)}
- {/* Artist & titel */}
-
{artist}
-
{title}
+
+ {item.name} +
+
+ {playerName} +
{playerName && (
diff --git a/frontend/src/components/TimeLineCard.tsx b/frontend/src/components/TimeLineCard.tsx index 9f03f5401e..62f8501c74 100644 --- a/frontend/src/components/TimeLineCard.tsx +++ b/frontend/src/components/TimeLineCard.tsx @@ -2,15 +2,17 @@ import React from "react"; import { Card, CardHeader, CardContent } from "../ui"; import { cn } from "../lib/utils"; +import type { GameItem, GameCategory } from "../types/game"; + type CardSize = "xs" | "sm" | "md"; const TOKENS: Record< CardSize, { wrapper: string; - year: string; - artist: string; - title: string; + value: string; + name: string; + label: string; badge: string; padHeader: string; padContent: string; @@ -19,9 +21,9 @@ const TOKENS: Record< > = { xs: { wrapper: "w-[100px] h-[140px]", - year: "text-2xl", - artist: "text-[11px] font-semibold", - title: "text-[10px]", + value: "text-2xl", + name: "text-[11px] font-semibold", + label: "text-[10px]", badge: "w-5 h-5 text-[10px]", padHeader: "pt-3 pb-1", padContent: "px-2 pb-2", @@ -29,9 +31,9 @@ const TOKENS: Record< }, sm: { wrapper: "w-[136px] h-[180px]", - year: "text-3xl", - artist: "text-sm font-semibold", - title: "text-xs", + value: "text-3xl", + name: "text-sm font-semibold", + label: "text-xs", badge: "w-6 h-6 text-xs", padHeader: "pt-4 pb-2", padContent: "px-3 pb-3", @@ -39,9 +41,9 @@ const TOKENS: Record< }, md: { wrapper: "w-60 h-80", - year: "text-6xl", - artist: "text-2xl font-semibold", - title: "text-xl", + value: "text-6xl", + name: "text-2xl font-semibold", + label: "text-xl", badge: "w-8 h-8 text-lg", padHeader: "pt-8 pb-4", padContent: "px-6 pb-8", @@ -50,25 +52,32 @@ const TOKENS: Record< }; interface TimeLineCardProps { - year: number; - artist: string; - title: string; + item: GameItem; + category?: GameCategory; // för unit (t.ex. "kg", "year" etc.) isCorrect?: boolean; isRevealed?: boolean; className?: string; - size?: CardSize; // ← NYTT + size?: CardSize; } +/** Enkel formattering av value + unit (ingen i18n-tyngd här) */ +const formatValue = (value: number, unit?: string) => { + if (!unit) return String(value); + // Exempel: 150000 kg • 1958 year + return `${value} ${unit}`; +}; + export const TimeLineCard: React.FC = ({ - year, - artist, - title, + item, + category, isCorrect, isRevealed, className, size = "sm", }) => { const t = TOKENS[size]; + const unit = category?.unit; + const valueText = isRevealed ? formatValue(item.value, unit) : "??"; return ( = ({ isRevealed ? "" : "bg-gradient-to-br from-accent-600 to-accent-800", className )} + aria-label={`${item.name}${item.label ? ` – ${item.label}` : ""}`} > + {/* diskret mönster */}
+ {/* VALUE högst upp */}
- {isRevealed ? year : "??"} + {valueText}
+ {/* NAMN + LABEL i mitten */} = ({ )} >
-
- {artist} -
-
- {title} +
+ {item.name}
+ {item.label && ( +
+ {item.label} +
+ )}
+ {/* Rätt/Fel-badge (om vi vill visa feedback) */} {isCorrect !== undefined && (
= ({ t.badge, isCorrect ? "bg-green-500" : "bg-red-500" )} + aria-label={isCorrect ? "Correct placement" : "Incorrect placement"} > {isCorrect ? "✓" : "✗"}
)} + {/* glint */}
); diff --git a/frontend/src/components/Timeline.tsx b/frontend/src/components/Timeline.tsx index e4b1fdb71e..870eaee074 100644 --- a/frontend/src/components/Timeline.tsx +++ b/frontend/src/components/Timeline.tsx @@ -2,7 +2,7 @@ import React from "react"; import { useDroppable } from "@dnd-kit/core"; import { TimeLineCard } from "./TimeLineCard"; -import type { TrackCard } from "@/types/game"; +import type { GameItem } from "../types/game"; type Size = "xs" | "sm" | "md"; const SIZES: Record< @@ -26,7 +26,7 @@ const SIZES: Record< }; type TimelineProps = { - timeline: TrackCard[]; + timeline: GameItem[]; showSlots?: boolean; size?: Size; className?: string; @@ -74,18 +74,8 @@ export const Timeline: React.FC = ({ {i < timeline.length && (
diff --git a/frontend/src/services/animalsMock.ts b/frontend/src/services/animalsMock.ts deleted file mode 100644 index bf5c5f3ecf..0000000000 --- a/frontend/src/services/animalsMock.ts +++ /dev/null @@ -1,257 +0,0 @@ -import type { GameItem, GameCategory } from "../types/game"; - -export const animalsCategory: GameCategory = { - id: "animals.weight", - question: "Which animal weighs the most?", - unit: "kg", - source: { - name: "Wikipedia (largest animals, species pages)", - url: "https://en.wikipedia.org/wiki/List_of_largest_organisms", - }, -}; - -export const animalsItems: GameItem[] = [ - { - id: "animal-1", - name: "Blue Whale", - label: "Weight 150000 kg", - value: 150000, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-2", - name: "Sperm Whale", - label: "Weight 57000 kg", - value: 57000, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-3", - name: "Whale Shark", - label: "Weight 19000 kg", - value: 19000, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-4", - name: "Orca", - label: "Weight 6000 kg", - value: 6000, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-5", - name: "African Elephant", - label: "Weight 6000 kg", - value: 6000, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-6", - name: "Hippopotamus", - label: "Weight 1500 kg", - value: 1500, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-7", - name: "Giraffe", - label: "Weight 1200 kg", - value: 1200, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-8", - name: "Great White Shark", - label: "Weight 1100 kg", - value: 1100, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-9", - name: "Bison", - label: "Weight 900 kg", - value: 900, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-10", - name: "Cow", - label: "Weight 750 kg", - value: 750, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-11", - name: "Moose", - label: "Weight 700 kg", - value: 700, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-12", - name: "Polar Bear", - label: "Weight 650 kg", - value: 650, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-13", - name: "Horse", - label: "Weight 600 kg", - value: 600, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-14", - name: "Grizzly Bear", - label: "Weight 360 kg", - value: 360, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-15", - name: "Alligator", - label: "Weight 230 kg", - value: 230, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-16", - name: "Tiger", - label: "Weight 220 kg", - value: 220, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-17", - name: "Sea Lion", - label: "Weight 200 kg", - value: 200, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-18", - name: "Lion", - label: "Weight 190 kg", - value: 190, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-19", - name: "Gorilla", - label: "Weight 160 kg", - value: 160, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-20", - name: "Ostrich", - label: "Weight 104 kg", - value: 104, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-21", - name: "Giant Panda", - label: "Weight 100 kg", - value: 100, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-22", - name: "Human", - label: "Weight 70 kg", - value: 70, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-23", - name: "Kangaroo", - label: "Weight 60 kg", - value: 60, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-24", - name: "Wolf", - label: "Weight 50 kg", - value: 50, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-25", - name: "Cheetah", - label: "Weight 35 kg", - value: 35, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-26", - name: "Swan", - label: "Weight 12 kg", - value: 12, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, - { - id: "animal-27", - name: "Chicken", - label: "Weight 1 kg", - value: 1, - unit: "kg", - categoryId: "animals.weight", - source: { name: "Wikipedia" }, - }, -]; diff --git a/frontend/src/store/game.ts b/frontend/src/store/game.ts index 815c1db9ef..50c761fdaa 100644 --- a/frontend/src/store/game.ts +++ b/frontend/src/store/game.ts @@ -1,29 +1,16 @@ // src/store/game.ts import { create } from "zustand"; -import type { TrackCard, GameState } from "../types/game"; -import type { GameItem } from "../types/game"; -import { animalsItems } from "../services/animalsMock"; - -// ---------- helpers ---------- -const toTrackCard = (it: GameItem): TrackCard => - ({ - // behåll legacy-fält för nycklar i UI - _id: it.id, - trackId: it.id, - year: it.value, - artist: it.name, - title: it.label ?? it.name, - } as unknown as TrackCard); - -const insertAt = (arr: TrackCard[], item: TrackCard, idx: number) => { +import type { GameItem, GameState } from "../types/game"; + +const insertAt = (arr: GameItem[], item: GameItem, idx: number) => { const copy = arr.slice(); copy.splice(idx, 0, item); return copy; }; -const Y = (c: any) => c?.year ?? c?.releaseYear; +const Y = (c: GameItem | undefined) => c?.value; const isPlacementCorrect = ( - timeline: TrackCard[], - card: TrackCard, + timeline: GameItem[], + card: GameItem, i: number ) => { const y = Y(card); @@ -33,7 +20,7 @@ const isPlacementCorrect = ( (left === undefined || y >= left) && (right === undefined || y <= right) ); }; -const drawOne = (pool: TrackCard[]) => { +const drawOne = (pool: GameItem[]) => { const i = Math.floor(Math.random() * pool.length); return pool.splice(i, 1)[0]; }; @@ -44,8 +31,8 @@ type UIState = { error: string | null; lastPlacementCorrect: boolean | null; pendingIndex: number | null; - roundBaselineTimeline: TrackCard[]; - turnTimeline: TrackCard[]; + roundBaselineTimeline: GameItem[]; + turnTimeline: GameItem[]; }; // ---------- actions ---------- @@ -84,7 +71,7 @@ export const useGame = create()((set, get) => ({ startGame: async () => { set({ loading: true, error: null }); try { - const deck: TrackCard[] = animalsItems.map(toTrackCard); + const deck: GameItem[] = []; if (!deck || deck.length < 2) throw new Error("Not enough items"); const pool = deck.slice(); diff --git a/frontend/src/types/game.ts b/frontend/src/types/game.ts index efc427737a..93d7ddf10b 100644 --- a/frontend/src/types/game.ts +++ b/frontend/src/types/game.ts @@ -1,36 +1,26 @@ export type GameItem = { + _id?: string; // mongodb ID id: string; // stable ID, ex. "animal-1" / "music-1" name: string; // ex. "Blue Whale" / "Elvis Presley" label?: string; // ex. "Weight 150000 kg" / "Jailhouse Rock" value: number; // ex. 150000 / 1958 - unit?: string; // ex. "kg" / "year" categoryId: string; // "animals.weight" / "music.releaseYear" source?: { name: string; url?: string }; meta?: Record; }; export type GameCategory = { + _id?: string; // mongodb ID id: string; question: string; // "Which animal weighs the most?" unit: string; source?: { name: string; url?: string }; }; -export type TrackCard = { - _id: string; - trackTitle: string; - trackArtist: string; - trackId: string; - releaseYear: number; - previewUrl?: string; - imageUrl?: string; - isStart?: boolean; -}; - export type Team = { id: "A" | "B"; name: string; - timeline: TrackCard[]; + timeline: GameItem[]; score: number; }; @@ -44,12 +34,12 @@ export type Phase = | "PLACED_WRONG"; export type GameState = { - deck: TrackCard[]; - discard: TrackCard[]; + deck: GameItem[]; + discard: GameItem[]; teams: Team[]; currentTeamIndex: 0 | 1; - currentCard?: TrackCard; - roundBaselineTimeline: TrackCard[]; + currentCard?: GameItem; + roundBaselineTimeline: GameItem[]; pendingIndex: number | null; lastPlacementCorrect: boolean | null; From 8f698aa9263313488ada5846ec9d082f383eab99 Mon Sep 17 00:00:00 2001 From: Idahel Date: Thu, 21 Aug 2025 11:29:27 +0200 Subject: [PATCH 054/127] clean up --- backend/dist/models/Category.d.ts | 10 +++++++++- backend/dist/models/Category.d.ts.map | 2 +- backend/dist/models/Category.js | 12 ++++++++++-- backend/dist/models/Category.js.map | 2 +- backend/src/models/Category.ts | 24 ++++++++++++++++++++---- 5 files changed, 41 insertions(+), 9 deletions(-) diff --git a/backend/dist/models/Category.d.ts b/backend/dist/models/Category.d.ts index 430a234355..bf6420215f 100644 --- a/backend/dist/models/Category.d.ts +++ b/backend/dist/models/Category.d.ts @@ -2,8 +2,16 @@ import { Document } from 'mongoose'; export interface ICategory extends Document { id: string; name: string; - description: string; + description?: string; + question?: string; unit: string; + unitVisible?: boolean; + sort?: 'asc' | 'desc'; + source?: { + name: string; + url: string; + }; + version?: number; } export declare const Category: import("mongoose").Model & ICategory & Required<{ _id: unknown; diff --git a/backend/dist/models/Category.d.ts.map b/backend/dist/models/Category.d.ts.map index 652f4f493e..b6fd3577f7 100644 --- a/backend/dist/models/Category.d.ts.map +++ b/backend/dist/models/Category.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Category.d.ts","sourceRoot":"","sources":["../../src/models/Category.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AASD,eAAO,MAAM,QAAQ;;;;OAA+C,CAAC"} \ No newline at end of file +{"version":3,"file":"Category.d.ts","sourceRoot":"","sources":["../../src/models/Category.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAiBD,eAAO,MAAM,QAAQ;;;;OAA+C,CAAC"} \ No newline at end of file diff --git a/backend/dist/models/Category.js b/backend/dist/models/Category.js index a54d3ac6e0..a5e62908dc 100644 --- a/backend/dist/models/Category.js +++ b/backend/dist/models/Category.js @@ -2,8 +2,16 @@ import { Schema, model } from 'mongoose'; const CategorySchema = new Schema({ id: { type: String, required: true, unique: true }, name: { type: String, required: true }, - description: { type: String, required: true }, + description: { type: String, required: false }, + question: { type: String, required: false }, unit: { type: String, required: true }, -}); + unitVisible: { type: Boolean, required: false }, + sort: { type: String, enum: ['asc', 'desc'], required: false }, + source: { + name: { type: String, required: false }, + url: { type: String, required: false } + }, + version: { type: Number, required: false } +}, { strict: false, timestamps: false }); export const Category = model('Category', CategorySchema); //# sourceMappingURL=Category.js.map \ No newline at end of file diff --git a/backend/dist/models/Category.js.map b/backend/dist/models/Category.js.map index c85b325326..66aeded6b6 100644 --- a/backend/dist/models/Category.js.map +++ b/backend/dist/models/Category.js.map @@ -1 +1 @@ -{"version":3,"file":"Category.js","sourceRoot":"","sources":["../../src/models/Category.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAY,MAAM,UAAU,CAAC;AASnD,MAAM,cAAc,GAAG,IAAI,MAAM,CAAY;IAC3C,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAClD,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC7C,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;CACvC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAY,UAAU,EAAE,cAAc,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"Category.js","sourceRoot":"","sources":["../../src/models/Category.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAY,MAAM,UAAU,CAAC;AAiBnD,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC;IAChC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAClD,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC9C,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC3C,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC/C,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE;IAC9D,MAAM,EAAE;QACN,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;QACvC,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;KACvC;IACD,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;CAC3C,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAY,UAAU,EAAE,cAAc,CAAC,CAAC"} \ No newline at end of file diff --git a/backend/src/models/Category.ts b/backend/src/models/Category.ts index bab7f38089..7ebceb0cc0 100644 --- a/backend/src/models/Category.ts +++ b/backend/src/models/Category.ts @@ -3,15 +3,31 @@ import { Schema, model, Document } from 'mongoose'; export interface ICategory extends Document { id: string; name: string; - description: string; + description?: string; + question?: string; unit: string; + unitVisible?: boolean; + sort?: 'asc' | 'desc'; + source?: { + name: string; + url: string; + }; + version?: number; } -const CategorySchema = new Schema({ +const CategorySchema = new Schema({ id: { type: String, required: true, unique: true }, name: { type: String, required: true }, - description: { type: String, required: true }, + description: { type: String, required: false }, + question: { type: String, required: false }, unit: { type: String, required: true }, -}); + unitVisible: { type: Boolean, required: false }, + sort: { type: String, enum: ['asc', 'desc'], required: false }, + source: { + name: { type: String, required: false }, + url: { type: String, required: false } + }, + version: { type: Number, required: false } +}, { strict: false, timestamps: false }); export const Category = model('Category', CategorySchema); \ No newline at end of file From 07e986feb1bf1bae8a07b679bd530256d3c0df85 Mon Sep 17 00:00:00 2001 From: Idahel Date: Thu, 21 Aug 2025 11:29:59 +0200 Subject: [PATCH 055/127] clean up --- frontend/dist/assets/index-BOltIuFh.css | 1 - frontend/dist/assets/index-DmRswSve.css | 1 + .../{index-CmpXfqEq.js => index-k1B7pSlL.js} | 38 +++++++++---------- frontend/dist/index.html | 4 +- 4 files changed, 21 insertions(+), 23 deletions(-) delete mode 100644 frontend/dist/assets/index-BOltIuFh.css create mode 100644 frontend/dist/assets/index-DmRswSve.css rename frontend/dist/assets/{index-CmpXfqEq.js => index-k1B7pSlL.js} (50%) diff --git a/frontend/dist/assets/index-BOltIuFh.css b/frontend/dist/assets/index-BOltIuFh.css deleted file mode 100644 index 48953e62aa..0000000000 --- a/frontend/dist/assets/index-BOltIuFh.css +++ /dev/null @@ -1 +0,0 @@ -/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-scroll-snap-strictness:proximity;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-800:oklch(47.3% .137 46.201);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-blue-50:oklch(97% .014 254.604);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-800:oklch(42.4% .199 265.638);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-2xl:42rem;--container-4xl:56rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--text-8xl:6rem;--text-8xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-black:900;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--blur-sm:8px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-base-100:#fefcfa;--color-base-200:#fdf8f3;--color-base-300:#fbf4ec;--color-base-400:#f9ecdf;--color-accent-200:#86464e;--color-accent-300:#783f46;--color-accent-400:#6b383e;--color-accent-500:#5d3136;--color-accent-600:#502a2f;--color-accent-800:#351c1f;--color-accent-900:#281517;--color-primary:#5d3136;--color-primary-hover:#4a272b;--color-primary-focus:#6b3a40;--color-background:#f9ecdf;--color-surface:#fefcfa;--color-card:#fdf8f3;--color-muted:#f0dbc5;--color-muted-foreground:#946971;--color-foreground:#5d3136;--color-border:#ebd2b8;--color-border-muted:#f5e4d2}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.-top-2{top:calc(var(--spacing)*-2)}.top-0{top:calc(var(--spacing)*0)}.top-1{top:calc(var(--spacing)*1)}.top-1\/3{top:33.3333%}.top-2{top:calc(var(--spacing)*2)}.top-3{top:calc(var(--spacing)*3)}.top-4{top:calc(var(--spacing)*4)}.top-\[-10\%\]{top:-10%}.-right-1{right:calc(var(--spacing)*-1)}.-right-16{right:calc(var(--spacing)*-16)}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.right-2{right:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.-bottom-1{bottom:calc(var(--spacing)*-1)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-1{bottom:calc(var(--spacing)*1)}.bottom-1\/4{bottom:25%}.bottom-2{bottom:calc(var(--spacing)*2)}.bottom-4{bottom:calc(var(--spacing)*4)}.-left-1{left:calc(var(--spacing)*-1)}.-left-20{left:calc(var(--spacing)*-20)}.left-0{left:calc(var(--spacing)*0)}.left-1{left:calc(var(--spacing)*1)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing)*2)}.left-4{left:calc(var(--spacing)*4)}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[60\]{z-index:60}.-mx-4{margin-inline:calc(var(--spacing)*-4)}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-10{margin-top:calc(var(--spacing)*10)}.mt-auto{margin-top:auto}.mb-0\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.ml-0\.5{margin-left:calc(var(--spacing)*.5)}.ml-1{margin-left:calc(var(--spacing)*1)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-0{height:calc(var(--spacing)*0)}.h-0\.5{height:calc(var(--spacing)*.5)}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-64{height:calc(var(--spacing)*64)}.h-72{height:calc(var(--spacing)*72)}.h-80{height:calc(var(--spacing)*80)}.h-\[180px\]{height:180px}.h-full{height:100%}.max-h-\[90vh\]{max-height:90vh}.min-h-screen{min-height:100vh}.w-0{width:calc(var(--spacing)*0)}.w-0\.5{width:calc(var(--spacing)*.5)}.w-1{width:calc(var(--spacing)*1)}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-2{width:calc(var(--spacing)*2)}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-48{width:calc(var(--spacing)*48)}.w-60{width:calc(var(--spacing)*60)}.w-72{width:calc(var(--spacing)*72)}.w-80{width:calc(var(--spacing)*80)}.w-\[60\%\]{width:60%}.w-\[136px\]{width:136px}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-1px\]{--tw-translate-y:-1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.-rotate-45{rotate:-45deg}.-rotate-\[12deg\]{rotate:-12deg}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.rotate-\[-45deg\]{rotate:-45deg}.rotate-\[14deg\]{rotate:14deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-\[banana-fly_4000ms_linear_infinite\]{animation:4s linear infinite banana-fly}.animate-\[logo-bounce-in_2400ms_cubic-bezier\(\.25\,1\.5\,\.5\,1\)_forwards\]{animation:2.4s cubic-bezier(.25,1.5,.5,1) forwards logo-bounce-in}.animate-spin{animation:var(--animate-spin)}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.snap-x{scroll-snap-type:x var(--tw-scroll-snap-strictness)}.snap-start{scroll-snap-align:start}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-10{gap:calc(var(--spacing)*10)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-12>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*12)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*12)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-\[4px\]{border-top-style:var(--tw-border-style);border-top-width:4px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-b-\[4px\]{border-bottom-style:var(--tw-border-style);border-bottom-width:4px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-\[6px\]{border-left-style:var(--tw-border-style);border-left-width:6px}.border-\[\#1DB954\]{border-color:#1db954}.border-accent-400{border-color:var(--color-accent-400)}.border-amber-200{border-color:var(--color-amber-200)}.border-base-100{border-color:var(--color-base-100)}.border-base-100\/30{border-color:#fefcfa4d}@supports (color:color-mix(in lab,red,red)){.border-base-100\/30{border-color:color-mix(in oklab,var(--color-base-100)30%,transparent)}}.border-blue-200{border-color:var(--color-blue-200)}.border-border{border-color:var(--color-border)}.border-border-muted{border-color:var(--color-border-muted)}.border-border\/60{border-color:#ebd2b899}@supports (color:color-mix(in lab,red,red)){.border-border\/60{border-color:color-mix(in oklab,var(--color-border)60%,transparent)}}.border-current{border-color:currentColor}.border-primary{border-color:var(--color-primary)}.border-primary\/20{border-color:#5d313633}@supports (color:color-mix(in lab,red,red)){.border-primary\/20{border-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.border-primary\/30{border-color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.border-primary\/30{border-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.border-red-200{border-color:var(--color-red-200)}.border-red-400{border-color:var(--color-red-400)}.border-white\/30{border-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.border-white\/30{border-color:color-mix(in oklab,var(--color-white)30%,transparent)}}.border-t-base-100{border-top-color:var(--color-base-100)}.border-t-transparent{border-top-color:#0000}.border-t-white{border-top-color:var(--color-white)}.border-b-transparent{border-bottom-color:#0000}.border-l-base-100{border-left-color:var(--color-base-100)}.bg-\[\#1DB954\]{background-color:#1db954}.bg-\[\#2a0d0d\]{background-color:#2a0d0d}.bg-\[var\(--color-base-400\)\]{background-color:var(--color-base-400)}.bg-accent-300{background-color:var(--color-accent-300)}.bg-accent-900\/80{background-color:#281517cc}@supports (color:color-mix(in lab,red,red)){.bg-accent-900\/80{background-color:color-mix(in oklab,var(--color-accent-900)80%,transparent)}}.bg-amber-50{background-color:var(--color-amber-50)}.bg-background{background-color:var(--color-background)}.bg-base-100{background-color:var(--color-base-100)}.bg-base-100\/20{background-color:#fefcfa33}@supports (color:color-mix(in lab,red,red)){.bg-base-100\/20{background-color:color-mix(in oklab,var(--color-base-100)20%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-current{background-color:currentColor}.bg-foreground\/5{background-color:#5d31360d}@supports (color:color-mix(in lab,red,red)){.bg-foreground\/5{background-color:color-mix(in oklab,var(--color-foreground)5%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-muted{background-color:var(--color-muted)}.bg-muted-foreground{background-color:var(--color-muted-foreground)}.bg-muted\/30{background-color:#f0dbc54d}@supports (color:color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--color-muted)30%,transparent)}}.bg-primary{background-color:var(--color-primary)}.bg-primary\/10{background-color:#5d31361a}@supports (color:color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.bg-primary\/25{background-color:#5d313640}@supports (color:color-mix(in lab,red,red)){.bg-primary\/25{background-color:color-mix(in oklab,var(--color-primary)25%,transparent)}}.bg-primary\/30{background-color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.bg-primary\/30{background-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.bg-primary\/60{background-color:#5d313699}@supports (color:color-mix(in lab,red,red)){.bg-primary\/60{background-color:color-mix(in oklab,var(--color-primary)60%,transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-surface{background-color:var(--color-surface)}.bg-transparent{background-color:#0000}.bg-white\/5{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.bg-white\/5{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-tr{--tw-gradient-position:to top right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-\[linear-gradient\(45deg\,transparent_25\%\,rgba\(93\,49\,54\,0\.1\)_25\%\,rgba\(93\,49\,54\,0\.1\)_50\%\,transparent_50\%\,transparent_75\%\,rgba\(93\,49\,54\,0\.1\)_75\%\)\]{background-image:linear-gradient(45deg,#0000 25%,#5d31361a 25%,#5d31361a 50%,#0000 50%,#0000 75%,#5d31361a 75%)}.bg-\[radial-gradient\(circle_at_50\%_50\%\,rgba\(255\,255\,255\,0\.1\)_1px\,transparent_1px\)\]{background-image:radial-gradient(circle,#ffffff1a 1px,#0000 1px)}.from-accent-200{--tw-gradient-from:var(--color-accent-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-accent-600{--tw-gradient-from:var(--color-accent-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-base-100{--tw-gradient-from:var(--color-base-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-accent-300{--tw-gradient-via:var(--color-accent-300);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-base-200{--tw-gradient-via:var(--color-base-200);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-white\/5{--tw-gradient-via:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.via-white\/5{--tw-gradient-via:color-mix(in oklab,var(--color-white)5%,transparent)}}.via-white\/5{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-accent-400{--tw-gradient-to:var(--color-accent-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-accent-500{--tw-gradient-to:var(--color-accent-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-accent-800{--tw-gradient-to:var(--color-accent-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-base-300{--tw-gradient-to:var(--color-base-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.bg-\[length\:8px_8px\]{background-size:8px 8px}.bg-\[length\:20px_20px\]{background-size:20px 20px}.object-contain{object-fit:contain}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.px-10{padding-inline:calc(var(--spacing)*10)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-6{padding-block:calc(var(--spacing)*6)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-6{padding-top:calc(var(--spacing)*6)}.pt-8{padding-top:calc(var(--spacing)*8)}.pt-10{padding-top:calc(var(--spacing)*10)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.pb-8{padding-bottom:calc(var(--spacing)*8)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-8xl{font-size:var(--text-8xl);line-height:var(--tw-leading,var(--text-8xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.leading-\[0\.95\]{--tw-leading:.95;line-height:.95}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[\.25em\]{--tw-tracking:.25em;letter-spacing:.25em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-amber-500{color:var(--color-amber-500)}.text-amber-800{color:var(--color-amber-800)}.text-background{color:var(--color-background)}.text-base-100{color:var(--color-base-100)}.text-base-100\/90{color:#fefcfae6}@supports (color:color-mix(in lab,red,red)){.text-base-100\/90{color:color-mix(in oklab,var(--color-base-100)90%,transparent)}}.text-blue-500{color:var(--color-blue-500)}.text-blue-800{color:var(--color-blue-800)}.text-foreground{color:var(--color-foreground)}.text-green-600{color:var(--color-green-600)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-primary{color:var(--color-primary)}.text-primary\/30{color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.text-primary\/30{color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-white{color:var(--color-white)}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}}.uppercase{text-transform:uppercase}.opacity-0{opacity:0}.opacity-5{opacity:.05}.opacity-10{opacity:.1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-100{opacity:1}.shadow-medium{--tw-shadow:0 4px 16px 0 var(--tw-shadow-color,#5d31361f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-soft{--tw-shadow:0 2px 8px 0 var(--tw-shadow-color,#5d313614);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-strong{--tw-shadow:0 8px 32px 0 var(--tw-shadow-color,#5d313629);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.outline-primary\/50{outline-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.outline-primary\/50{outline-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-700{--tw-duration:.7s;transition-duration:.7s}.select-none{-webkit-user-select:none;user-select:none}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}@media (hover:hover){.hover\:-translate-y-1:hover{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:border-primary\/30:hover{border-color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/30:hover{border-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.hover\:border-primary\/50:hover{border-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.hover\:bg-\[\#1ed760\]:hover{background-color:#1ed760}.hover\:bg-accent-200:hover{background-color:var(--color-accent-200)}.hover\:bg-black\/10:hover{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/10:hover{background-color:color-mix(in oklab,var(--color-black)10%,transparent)}}.hover\:bg-card:hover{background-color:var(--color-card)}.hover\:bg-muted:hover{background-color:var(--color-muted)}.hover\:bg-primary:hover{background-color:var(--color-primary)}.hover\:bg-primary-hover:hover{background-color:var(--color-primary-hover)}.hover\:text-background:hover{color:var(--color-background)}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:text-white:hover{color:var(--color-white)}.hover\:shadow-medium:hover{--tw-shadow:0 4px 16px 0 var(--tw-shadow-color,#5d31361f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-strong:hover{--tw-shadow:0 8px 32px 0 var(--tw-shadow-color,#5d313629);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.focus\:border-primary:focus{border-color:var(--color-primary)}.focus\:border-red-500:focus{border-color:var(--color-red-500)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-primary\/50:focus{--tw-ring-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.focus\:ring-primary\/50:focus{--tw-ring-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.focus\:ring-red-500\/50:focus{--tw-ring-color:#fb2c3680}@supports (color:color-mix(in lab,red,red)){.focus\:ring-red-500\/50:focus{--tw-ring-color:color-mix(in oklab,var(--color-red-500)50%,transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-primary-focus:focus-visible{--tw-ring-color:var(--color-primary-focus)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-muted:disabled{background-color:var(--color-muted)}.disabled\:opacity-50:disabled{opacity:.5}@media (min-width:40rem){.sm\:-top-3{top:calc(var(--spacing)*-3)}.sm\:top-4{top:calc(var(--spacing)*4)}.sm\:-right-2{right:calc(var(--spacing)*-2)}.sm\:right-4{right:calc(var(--spacing)*4)}.sm\:-left-2{left:calc(var(--spacing)*-2)}.sm\:mt-4{margin-top:calc(var(--spacing)*4)}.sm\:mt-6{margin-top:calc(var(--spacing)*6)}.sm\:block{display:block}.sm\:h-4{height:calc(var(--spacing)*4)}.sm\:h-5{height:calc(var(--spacing)*5)}.sm\:h-6{height:calc(var(--spacing)*6)}.sm\:h-8{height:calc(var(--spacing)*8)}.sm\:h-12{height:calc(var(--spacing)*12)}.sm\:h-80{height:calc(var(--spacing)*80)}.sm\:w-4{width:calc(var(--spacing)*4)}.sm\:w-5{width:calc(var(--spacing)*5)}.sm\:w-6{width:calc(var(--spacing)*6)}.sm\:w-8{width:calc(var(--spacing)*8)}.sm\:w-12{width:calc(var(--spacing)*12)}.sm\:w-16{width:calc(var(--spacing)*16)}.sm\:w-60{width:calc(var(--spacing)*60)}.sm\:max-w-none{max-width:none}:where(.sm\:space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}.sm\:p-3{padding:calc(var(--spacing)*3)}.sm\:p-4{padding:calc(var(--spacing)*4)}.sm\:px-0{padding-inline:calc(var(--spacing)*0)}.sm\:px-3{padding-inline:calc(var(--spacing)*3)}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:px-8{padding-inline:calc(var(--spacing)*8)}.sm\:py-1{padding-block:calc(var(--spacing)*1)}.sm\:pt-2{padding-top:calc(var(--spacing)*2)}.sm\:pt-8{padding-top:calc(var(--spacing)*8)}.sm\:pt-10{padding-top:calc(var(--spacing)*10)}.sm\:pt-12{padding-top:calc(var(--spacing)*12)}.sm\:pt-16{padding-top:calc(var(--spacing)*16)}.sm\:pb-4{padding-bottom:calc(var(--spacing)*4)}.sm\:pb-6{padding-bottom:calc(var(--spacing)*6)}.sm\:pb-8{padding-bottom:calc(var(--spacing)*8)}.sm\:pb-12{padding-bottom:calc(var(--spacing)*12)}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.sm\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media (min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.md\:text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}.md\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media (min-width:64rem){.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}}html{scroll-behavior:smooth}@media (max-width:640px){html{font-size:14px}}@keyframes logo-in{0%{opacity:0;filter:blur(3px);transform:scale(.96)}60%{opacity:1;filter:blur();transform:scale(1.01)}to{opacity:1;transform:scale(1)}}@keyframes seed-sweep{0%{transform:translate(-20vw)rotate(-10deg)scale(.9)}50%{transform:translate(15vw)rotate(6deg)scale(1.08)}to{transform:translate(50vw)rotate(0)scale(1)}}@keyframes tagline-in{0%{opacity:0;letter-spacing:.14em;transform:translateY(.8rem)}to{opacity:1;letter-spacing:0;transform:translateY(0)}}@keyframes particle-float{0%{opacity:.65;transform:translate(0)translateY(0)rotate(0)}70%{opacity:.9}to{opacity:0;transform:translate(-120vw)translateY(-10vh)rotate(14deg)}}@keyframes letter-in{0%{opacity:0;filter:blur(2px);transform:translateY(1.6rem)scale(.98)}55%{opacity:1;filter:blur();transform:translateY(0)scale(1.02)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes crt-flicker{0%{opacity:1}50%{opacity:.92}to{opacity:1}}@keyframes banana-float{0%{opacity:.7;transform:translate(0)translateY(0)rotate(0)}70%{opacity:.9}to{opacity:0;transform:translate(-120vw)translateY(-10vh)rotate(18deg)}}@keyframes banana-fly{0%{opacity:0;transform:translateY(-30vh)rotate(0)}10%{opacity:.8}80%{opacity:1}to{opacity:0;transform:translateY(120vh)rotate(20deg)}}@keyframes logo-bounce-in{0%{opacity:0;transform:scale(8)translateY(-50vh)}40%{opacity:1;transform:scale(1.8)translateY(0)}55%{transform:scale(1.65)}70%{transform:scale(1.85)}85%{transform:scale(1.75)}to{transform:scale(1.8)}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-scroll-snap-strictness{syntax:"*";inherits:false;initial-value:proximity}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}} diff --git a/frontend/dist/assets/index-DmRswSve.css b/frontend/dist/assets/index-DmRswSve.css new file mode 100644 index 0000000000..e01c2ca727 --- /dev/null +++ b/frontend/dist/assets/index-DmRswSve.css @@ -0,0 +1 @@ +/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-800:oklch(47.3% .137 46.201);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-blue-50:oklch(97% .014 254.604);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-800:oklch(42.4% .199 265.638);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-2xl:42rem;--container-4xl:56rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--text-8xl:6rem;--text-8xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-black:900;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--blur-xl:24px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-base-100:#fefcfa;--color-base-200:#fdf8f3;--color-base-300:#fbf4ec;--color-base-400:#f9ecdf;--color-accent-200:#86464e;--color-accent-300:#783f46;--color-accent-400:#6b383e;--color-accent-500:#5d3136;--color-accent-600:#502a2f;--color-accent-800:#351c1f;--color-accent-900:#281517;--color-primary:#5d3136;--color-primary-hover:#4a272b;--color-primary-focus:#6b3a40;--color-background:#f9ecdf;--color-surface:#fefcfa;--color-card:#fdf8f3;--color-muted:#f0dbc5;--color-muted-foreground:#946971;--color-foreground:#5d3136;--color-border:#ebd2b8;--color-border-muted:#f5e4d2}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip:auto;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.-top-2{top:calc(var(--spacing)*-2)}.top-0{top:calc(var(--spacing)*0)}.top-1{top:calc(var(--spacing)*1)}.top-1\/3{top:33.3333%}.top-2{top:calc(var(--spacing)*2)}.top-3{top:calc(var(--spacing)*3)}.top-4{top:calc(var(--spacing)*4)}.top-\[-10\%\]{top:-10%}.-right-1{right:calc(var(--spacing)*-1)}.-right-16{right:calc(var(--spacing)*-16)}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.right-2{right:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.-bottom-1{bottom:calc(var(--spacing)*-1)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-1{bottom:calc(var(--spacing)*1)}.bottom-1\/4{bottom:25%}.bottom-2{bottom:calc(var(--spacing)*2)}.bottom-3{bottom:calc(var(--spacing)*3)}.bottom-4{bottom:calc(var(--spacing)*4)}.-left-1{left:calc(var(--spacing)*-1)}.-left-20{left:calc(var(--spacing)*-20)}.left-0{left:calc(var(--spacing)*0)}.left-1{left:calc(var(--spacing)*1)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing)*2)}.left-3{left:calc(var(--spacing)*3)}.left-4{left:calc(var(--spacing)*4)}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[60\]{z-index:60}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-10{margin-top:calc(var(--spacing)*10)}.mt-auto{margin-top:auto}.mb-0\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.ml-0\.5{margin-left:calc(var(--spacing)*.5)}.ml-1{margin-left:calc(var(--spacing)*1)}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.h-0{height:calc(var(--spacing)*0)}.h-0\.5{height:calc(var(--spacing)*.5)}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-72{height:calc(var(--spacing)*72)}.h-80{height:calc(var(--spacing)*80)}.h-\[96px\]{height:96px}.h-\[140px\]{height:140px}.h-\[180px\]{height:180px}.h-full{height:100%}.max-h-\[90vh\]{max-height:90vh}.min-h-\[140px\]{min-height:140px}.min-h-screen{min-height:100vh}.w-0{width:calc(var(--spacing)*0)}.w-0\.5{width:calc(var(--spacing)*.5)}.w-1{width:calc(var(--spacing)*1)}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-2{width:calc(var(--spacing)*2)}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-60{width:calc(var(--spacing)*60)}.w-72{width:calc(var(--spacing)*72)}.w-80{width:calc(var(--spacing)*80)}.w-\[60\%\]{width:60%}.w-\[100px\]{width:100px}.w-\[136px\]{width:136px}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.origin-bottom{transform-origin:bottom}.origin-top{transform-origin:top}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-1px\]{--tw-translate-y:-1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-none{translate:none}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-3d{scale:var(--tw-scale-x)var(--tw-scale-y)var(--tw-scale-z)}.scale-\[0\.6\]{scale:.6}.-rotate-45{rotate:-45deg}.-rotate-\[12deg\]{rotate:-12deg}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.rotate-\[-45deg\]{rotate:-45deg}.rotate-\[14deg\]{rotate:14deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-\[banana-fly_4000ms_linear_infinite\]{animation:4s linear infinite banana-fly}.animate-\[logo-bounce-in_2400ms_cubic-bezier\(\.25\,1\.5\,\.5\,1\)_forwards\]{animation:2.4s cubic-bezier(.25,1.5,.5,1) forwards logo-bounce-in}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,)var(--tw-pan-y,)var(--tw-pinch-zoom,)}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-12>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*12)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*12)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px*var(--tw-divide-x-reverse));border-inline-end-width:calc(1px*calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-visible{overflow-y:visible}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-\[4px\]{border-top-style:var(--tw-border-style);border-top-width:4px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-b-\[4px\]{border-bottom-style:var(--tw-border-style);border-bottom-width:4px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-\[6px\]{border-left-style:var(--tw-border-style);border-left-width:6px}.border-\[\#1DB954\]{border-color:#1db954}.border-accent-400{border-color:var(--color-accent-400)}.border-amber-200{border-color:var(--color-amber-200)}.border-base-100{border-color:var(--color-base-100)}.border-base-100\/30{border-color:#fefcfa4d}@supports (color:color-mix(in lab,red,red)){.border-base-100\/30{border-color:color-mix(in oklab,var(--color-base-100)30%,transparent)}}.border-blue-200{border-color:var(--color-blue-200)}.border-border{border-color:var(--color-border)}.border-border-muted{border-color:var(--color-border-muted)}.border-border\/60{border-color:#ebd2b899}@supports (color:color-mix(in lab,red,red)){.border-border\/60{border-color:color-mix(in oklab,var(--color-border)60%,transparent)}}.border-current{border-color:currentColor}.border-primary{border-color:var(--color-primary)}.border-primary\/20{border-color:#5d313633}@supports (color:color-mix(in lab,red,red)){.border-primary\/20{border-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.border-primary\/30{border-color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.border-primary\/30{border-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.border-red-200{border-color:var(--color-red-200)}.border-red-400{border-color:var(--color-red-400)}.border-white\/30{border-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.border-white\/30{border-color:color-mix(in oklab,var(--color-white)30%,transparent)}}.border-t-base-100{border-top-color:var(--color-base-100)}.border-t-transparent{border-top-color:#0000}.border-t-white{border-top-color:var(--color-white)}.border-b-transparent{border-bottom-color:#0000}.border-l-base-100{border-left-color:var(--color-base-100)}.bg-\[\#1DB954\]{background-color:#1db954}.bg-\[\#2a0d0d\]{background-color:#2a0d0d}.bg-\[var\(--color-base-400\)\]{background-color:var(--color-base-400)}.bg-accent-300{background-color:var(--color-accent-300)}.bg-accent-900\/80{background-color:#281517cc}@supports (color:color-mix(in lab,red,red)){.bg-accent-900\/80{background-color:color-mix(in oklab,var(--color-accent-900)80%,transparent)}}.bg-amber-50{background-color:var(--color-amber-50)}.bg-background{background-color:var(--color-background)}.bg-background\/60{background-color:#f9ecdf99}@supports (color:color-mix(in lab,red,red)){.bg-background\/60{background-color:color-mix(in oklab,var(--color-background)60%,transparent)}}.bg-base-100{background-color:var(--color-base-100)}.bg-blue-50{background-color:var(--color-blue-50)}.bg-current{background-color:currentColor}.bg-green-500{background-color:var(--color-green-500)}.bg-muted-foreground{background-color:var(--color-muted-foreground)}.bg-muted\/30{background-color:#f0dbc54d}@supports (color:color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--color-muted)30%,transparent)}}.bg-primary{background-color:var(--color-primary)}.bg-primary\/10{background-color:#5d31361a}@supports (color:color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.bg-primary\/20{background-color:#5d313633}@supports (color:color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.bg-primary\/25{background-color:#5d313640}@supports (color:color-mix(in lab,red,red)){.bg-primary\/25{background-color:color-mix(in oklab,var(--color-primary)25%,transparent)}}.bg-primary\/30{background-color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.bg-primary\/30{background-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.bg-primary\/40{background-color:#5d313666}@supports (color:color-mix(in lab,red,red)){.bg-primary\/40{background-color:color-mix(in oklab,var(--color-primary)40%,transparent)}}.bg-primary\/50{background-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.bg-primary\/50{background-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.bg-primary\/60{background-color:#5d313699}@supports (color:color-mix(in lab,red,red)){.bg-primary\/60{background-color:color-mix(in oklab,var(--color-primary)60%,transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-surface{background-color:var(--color-surface)}.bg-transparent{background-color:#0000}.bg-white\/5{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.bg-white\/5{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-tr{--tw-gradient-position:to top right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-\[linear-gradient\(45deg\,transparent_25\%\,rgba\(93\,49\,54\,0\.1\)_25\%\,rgba\(93\,49\,54\,0\.1\)_50\%\,transparent_50\%\,transparent_75\%\,rgba\(93\,49\,54\,0\.1\)_75\%\)\]{background-image:linear-gradient(45deg,#0000 25%,#5d31361a 25%,#5d31361a 50%,#0000 50%,#0000 75%,#5d31361a 75%)}.bg-\[radial-gradient\(circle_at_50\%_50\%\,rgba\(255\,255\,255\,0\.1\)_1px\,transparent_1px\)\]{background-image:radial-gradient(circle,#ffffff1a 1px,#0000 1px)}.from-accent-200{--tw-gradient-from:var(--color-accent-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-accent-600{--tw-gradient-from:var(--color-accent-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-base-100{--tw-gradient-from:var(--color-base-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary{--tw-gradient-from:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-accent-300{--tw-gradient-via:var(--color-accent-300);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-base-200{--tw-gradient-via:var(--color-base-200);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-primary\/90{--tw-gradient-via:#5d3136e6}@supports (color:color-mix(in lab,red,red)){.via-primary\/90{--tw-gradient-via:color-mix(in oklab,var(--color-primary)90%,transparent)}}.via-primary\/90{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-white\/5{--tw-gradient-via:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.via-white\/5{--tw-gradient-via:color-mix(in oklab,var(--color-white)5%,transparent)}}.via-white\/5{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-accent-400{--tw-gradient-to:var(--color-accent-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-accent-500{--tw-gradient-to:var(--color-accent-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-accent-800{--tw-gradient-to:var(--color-accent-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-base-300{--tw-gradient-to:var(--color-base-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-primary{--tw-gradient-to:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.bg-\[length\:8px_8px\]{background-size:8px 8px}.bg-\[length\:20px_20px\]{background-size:20px 20px}.bg-repeat{background-repeat:repeat}.mask-no-clip{-webkit-mask-clip:no-clip;mask-clip:no-clip}.mask-repeat{-webkit-mask-repeat:repeat;mask-repeat:repeat}.object-contain{object-fit:contain}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.px-10{padding-inline:calc(var(--spacing)*10)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-6{padding-block:calc(var(--spacing)*6)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-6{padding-top:calc(var(--spacing)*6)}.pt-8{padding-top:calc(var(--spacing)*8)}.pt-10{padding-top:calc(var(--spacing)*10)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.pb-8{padding-bottom:calc(var(--spacing)*8)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-8xl{font-size:var(--text-8xl);line-height:var(--tw-leading,var(--text-8xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-\[0\.95\]{--tw-leading:.95;line-height:.95}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[\.25em\]{--tw-tracking:.25em;letter-spacing:.25em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-wrap{text-wrap:wrap}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.text-amber-500{color:var(--color-amber-500)}.text-amber-800{color:var(--color-amber-800)}.text-background{color:var(--color-background)}.text-base-100{color:var(--color-base-100)}.text-base-100\/90{color:#fefcfae6}@supports (color:color-mix(in lab,red,red)){.text-base-100\/90{color:color-mix(in oklab,var(--color-base-100)90%,transparent)}}.text-blue-500{color:var(--color-blue-500)}.text-blue-800{color:var(--color-blue-800)}.text-foreground{color:var(--color-foreground)}.text-green-600{color:var(--color-green-600)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-primary{color:var(--color-primary)}.text-primary\/30{color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.text-primary\/30{color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-white{color:var(--color-white)}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.opacity-0{opacity:0}.opacity-5{opacity:.05}.opacity-10{opacity:.1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-medium{--tw-shadow:0 4px 16px 0 var(--tw-shadow-color,#5d31361f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-soft{--tw-shadow:0 2px 8px 0 var(--tw-shadow-color,#5d313614);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-strong{--tw-shadow:0 8px 32px 0 var(--tw-shadow-color,#5d313629);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.outline-primary\/50{outline-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.outline-primary\/50{outline-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-xl{--tw-blur:blur(var(--blur-xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a))drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a)drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-invert{--tw-backdrop-invert:invert(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition\!{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-700{--tw-duration:.7s;transition-duration:.7s}.select-none{-webkit-user-select:none;user-select:none}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.group-hover\:scale-\[0\.9\]:is(:where(.group):hover *){scale:.9}}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}@media (hover:hover){.hover\:-translate-y-1:hover{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:border-primary\/30:hover{border-color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/30:hover{border-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.hover\:border-primary\/50:hover{border-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.hover\:bg-\[\#1ed760\]:hover{background-color:#1ed760}.hover\:bg-accent-200:hover{background-color:var(--color-accent-200)}.hover\:bg-black\/10:hover{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/10:hover{background-color:color-mix(in oklab,var(--color-black)10%,transparent)}}.hover\:bg-card:hover{background-color:var(--color-card)}.hover\:bg-muted:hover{background-color:var(--color-muted)}.hover\:bg-primary:hover{background-color:var(--color-primary)}.hover\:bg-primary-hover:hover{background-color:var(--color-primary-hover)}.hover\:text-background:hover{color:var(--color-background)}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:text-white:hover{color:var(--color-white)}.hover\:shadow-medium:hover{--tw-shadow:0 4px 16px 0 var(--tw-shadow-color,#5d31361f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-strong:hover{--tw-shadow:0 8px 32px 0 var(--tw-shadow-color,#5d313629);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.focus\:border-primary:focus{border-color:var(--color-primary)}.focus\:border-red-500:focus{border-color:var(--color-red-500)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-4:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-primary\/40:focus{--tw-ring-color:#5d313666}@supports (color:color-mix(in lab,red,red)){.focus\:ring-primary\/40:focus{--tw-ring-color:color-mix(in oklab,var(--color-primary)40%,transparent)}}.focus\:ring-primary\/50:focus{--tw-ring-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.focus\:ring-primary\/50:focus{--tw-ring-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.focus\:ring-red-500\/50:focus{--tw-ring-color:#fb2c3680}@supports (color:color-mix(in lab,red,red)){.focus\:ring-red-500\/50:focus{--tw-ring-color:color-mix(in oklab,var(--color-red-500)50%,transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-primary-focus:focus-visible{--tw-ring-color:var(--color-primary-focus)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-muted:disabled{background-color:var(--color-muted)}.disabled\:opacity-50:disabled{opacity:.5}@media (min-width:40rem){.sm\:-top-3{top:calc(var(--spacing)*-3)}.sm\:top-4{top:calc(var(--spacing)*4)}.sm\:-right-2{right:calc(var(--spacing)*-2)}.sm\:right-4{right:calc(var(--spacing)*4)}.sm\:right-6{right:calc(var(--spacing)*6)}.sm\:bottom-4{bottom:calc(var(--spacing)*4)}.sm\:-left-2{left:calc(var(--spacing)*-2)}.sm\:left-6{left:calc(var(--spacing)*6)}.sm\:mt-4{margin-top:calc(var(--spacing)*4)}.sm\:mt-6{margin-top:calc(var(--spacing)*6)}.sm\:block{display:block}.sm\:h-4{height:calc(var(--spacing)*4)}.sm\:h-5{height:calc(var(--spacing)*5)}.sm\:h-6{height:calc(var(--spacing)*6)}.sm\:h-8{height:calc(var(--spacing)*8)}.sm\:h-12{height:calc(var(--spacing)*12)}.sm\:h-80{height:calc(var(--spacing)*80)}.sm\:h-\[120px\]{height:120px}.sm\:w-2{width:calc(var(--spacing)*2)}.sm\:w-4{width:calc(var(--spacing)*4)}.sm\:w-5{width:calc(var(--spacing)*5)}.sm\:w-6{width:calc(var(--spacing)*6)}.sm\:w-8{width:calc(var(--spacing)*8)}.sm\:w-12{width:calc(var(--spacing)*12)}.sm\:w-16{width:calc(var(--spacing)*16)}.sm\:w-60{width:calc(var(--spacing)*60)}.sm\:max-w-none{max-width:none}.sm\:scale-125{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x)var(--tw-scale-y)}.sm\:gap-3{gap:calc(var(--spacing)*3)}.sm\:gap-6{gap:calc(var(--spacing)*6)}:where(.sm\:space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}.sm\:p-3{padding:calc(var(--spacing)*3)}.sm\:p-4{padding:calc(var(--spacing)*4)}.sm\:px-0{padding-inline:calc(var(--spacing)*0)}.sm\:px-3{padding-inline:calc(var(--spacing)*3)}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:px-8{padding-inline:calc(var(--spacing)*8)}.sm\:py-1{padding-block:calc(var(--spacing)*1)}.sm\:pt-2{padding-top:calc(var(--spacing)*2)}.sm\:pt-8{padding-top:calc(var(--spacing)*8)}.sm\:pt-10{padding-top:calc(var(--spacing)*10)}.sm\:pt-12{padding-top:calc(var(--spacing)*12)}.sm\:pt-16{padding-top:calc(var(--spacing)*16)}.sm\:pb-4{padding-bottom:calc(var(--spacing)*4)}.sm\:pb-6{padding-bottom:calc(var(--spacing)*6)}.sm\:pb-8{padding-bottom:calc(var(--spacing)*8)}.sm\:pb-12{padding-bottom:calc(var(--spacing)*12)}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.sm\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media (min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.md\:text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}.md\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media (min-width:64rem){.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}}html{scroll-behavior:smooth}@media (max-width:640px){html{font-size:14px}}@keyframes logo-in{0%{opacity:0;filter:blur(3px);transform:scale(.96)}60%{opacity:1;filter:blur();transform:scale(1.01)}to{opacity:1;transform:scale(1)}}@keyframes seed-sweep{0%{transform:translate(-20vw)rotate(-10deg)scale(.9)}50%{transform:translate(15vw)rotate(6deg)scale(1.08)}to{transform:translate(50vw)rotate(0)scale(1)}}@keyframes tagline-in{0%{opacity:0;letter-spacing:.14em;transform:translateY(.8rem)}to{opacity:1;letter-spacing:0;transform:translateY(0)}}@keyframes particle-float{0%{opacity:.65;transform:translate(0)translateY(0)rotate(0)}70%{opacity:.9}to{opacity:0;transform:translate(-120vw)translateY(-10vh)rotate(14deg)}}@keyframes letter-in{0%{opacity:0;filter:blur(2px);transform:translateY(1.6rem)scale(.98)}55%{opacity:1;filter:blur();transform:translateY(0)scale(1.02)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes crt-flicker{0%{opacity:1}50%{opacity:.92}to{opacity:1}}@keyframes banana-float{0%{opacity:.7;transform:translate(0)translateY(0)rotate(0)}70%{opacity:.9}to{opacity:0;transform:translate(-120vw)translateY(-10vh)rotate(18deg)}}@keyframes banana-fly{0%{opacity:0;transform:translateY(-30vh)rotate(0)}10%{opacity:.8}80%{opacity:1}to{opacity:0;transform:translateY(120vh)rotate(20deg)}}@keyframes logo-bounce-in{0%{opacity:0;transform:scale(8)translateY(-50vh)}40%{opacity:1;transform:scale(1.8)translateY(0)}55%{transform:scale(1.65)}70%{transform:scale(1.85)}85%{transform:scale(1.75)}to{transform:scale(1.8)}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}} diff --git a/frontend/dist/assets/index-CmpXfqEq.js b/frontend/dist/assets/index-k1B7pSlL.js similarity index 50% rename from frontend/dist/assets/index-CmpXfqEq.js rename to frontend/dist/assets/index-k1B7pSlL.js index 2a6a45272d..f8de28c2ce 100644 --- a/frontend/dist/assets/index-CmpXfqEq.js +++ b/frontend/dist/assets/index-k1B7pSlL.js @@ -1,4 +1,4 @@ -(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))u(c);new MutationObserver(c=>{for(const d of c)if(d.type==="childList")for(const p of d.addedNodes)p.tagName==="LINK"&&p.rel==="modulepreload"&&u(p)}).observe(document,{childList:!0,subtree:!0});function o(c){const d={};return c.integrity&&(d.integrity=c.integrity),c.referrerPolicy&&(d.referrerPolicy=c.referrerPolicy),c.crossOrigin==="use-credentials"?d.credentials="include":c.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function u(c){if(c.ep)return;c.ep=!0;const d=o(c);fetch(c.href,d)}})();function cf(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var da={exports:{}},_l={},fa={exports:{}},me={};/** +(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))u(c);new MutationObserver(c=>{for(const d of c)if(d.type==="childList")for(const p of d.addedNodes)p.tagName==="LINK"&&p.rel==="modulepreload"&&u(p)}).observe(document,{childList:!0,subtree:!0});function o(c){const d={};return c.integrity&&(d.integrity=c.integrity),c.referrerPolicy&&(d.referrerPolicy=c.referrerPolicy),c.crossOrigin==="use-credentials"?d.credentials="include":c.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function u(c){if(c.ep)return;c.ep=!0;const d=o(c);fetch(c.href,d)}})();function cf(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var cs={exports:{}},_l={},ds={exports:{}},he={};/** * @license React * react.production.min.js * @@ -6,7 +6,7 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var Td;function qm(){if(Td)return me;Td=1;var r=Symbol.for("react.element"),i=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),u=Symbol.for("react.strict_mode"),c=Symbol.for("react.profiler"),d=Symbol.for("react.provider"),p=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),m=Symbol.for("react.suspense"),v=Symbol.for("react.memo"),k=Symbol.for("react.lazy"),S=Symbol.iterator;function P(C){return C===null||typeof C!="object"?null:(C=S&&C[S]||C["@@iterator"],typeof C=="function"?C:null)}var j={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},F=Object.assign,T={};function _(C,L,J){this.props=C,this.context=L,this.refs=T,this.updater=J||j}_.prototype.isReactComponent={},_.prototype.setState=function(C,L){if(typeof C!="object"&&typeof C!="function"&&C!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,C,L,"setState")},_.prototype.forceUpdate=function(C){this.updater.enqueueForceUpdate(this,C,"forceUpdate")};function M(){}M.prototype=_.prototype;function W(C,L,J){this.props=C,this.context=L,this.refs=T,this.updater=J||j}var B=W.prototype=new M;B.constructor=W,F(B,_.prototype),B.isPureReactComponent=!0;var q=Array.isArray,re=Object.prototype.hasOwnProperty,ee={current:null},H={key:!0,ref:!0,__self:!0,__source:!0};function z(C,L,J){var le,fe={},ae=null,se=null;if(L!=null)for(le in L.ref!==void 0&&(se=L.ref),L.key!==void 0&&(ae=""+L.key),L)re.call(L,le)&&!H.hasOwnProperty(le)&&(fe[le]=L[le]);var ve=arguments.length-2;if(ve===1)fe.children=J;else if(1>>1,L=D[C];if(0>>1;Cc(fe,U))aec(se,fe)?(D[C]=se,D[ae]=U,C=ae):(D[C]=fe,D[le]=U,C=le);else if(aec(se,U))D[C]=se,D[ae]=U,C=ae;else break e}}return te}function c(D,te){var U=D.sortIndex-te.sortIndex;return U!==0?U:D.id-te.id}if(typeof performance=="object"&&typeof performance.now=="function"){var d=performance;r.unstable_now=function(){return d.now()}}else{var p=Date,h=p.now();r.unstable_now=function(){return p.now()-h}}var m=[],v=[],k=1,S=null,P=3,j=!1,F=!1,T=!1,_=typeof setTimeout=="function"?setTimeout:null,M=typeof clearTimeout=="function"?clearTimeout:null,W=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function B(D){for(var te=o(v);te!==null;){if(te.callback===null)u(v);else if(te.startTime<=D)u(v),te.sortIndex=te.expirationTime,i(m,te);else break;te=o(v)}}function q(D){if(T=!1,B(D),!F)if(o(m)!==null)F=!0,Ce(re);else{var te=o(v);te!==null&&de(q,te.startTime-D)}}function re(D,te){F=!1,T&&(T=!1,M(z),z=-1),j=!0;var U=P;try{for(B(te),S=o(m);S!==null&&(!(S.expirationTime>te)||D&&!ge());){var C=S.callback;if(typeof C=="function"){S.callback=null,P=S.priorityLevel;var L=C(S.expirationTime<=te);te=r.unstable_now(),typeof L=="function"?S.callback=L:S===o(m)&&u(m),B(te)}else u(m);S=o(m)}if(S!==null)var J=!0;else{var le=o(v);le!==null&&de(q,le.startTime-te),J=!1}return J}finally{S=null,P=U,j=!1}}var ee=!1,H=null,z=-1,Q=5,ce=-1;function ge(){return!(r.unstable_now()-ceD||125C?(D.sortIndex=U,i(v,D),o(m)===null&&D===o(v)&&(T?(M(z),z=-1):T=!0,de(q,U-C))):(D.sortIndex=L,i(m,D),F||j||(F=!0,Ce(re))),D},r.unstable_shouldYield=ge,r.unstable_wrapCallback=function(D){var te=P;return function(){var U=P;P=te;try{return D.apply(this,arguments)}finally{P=U}}}}(ha)),ha}var zd;function rh(){return zd||(zd=1,ma.exports=nh()),ma.exports}/** + */var jd;function nh(){return jd||(jd=1,function(r){function i(D,ee){var U=D.length;D.push(ee);e:for(;0>>1,L=D[E];if(0>>1;Ec(pe,U))uec(se,pe)?(D[E]=se,D[ue]=U,E=ue):(D[E]=pe,D[re]=U,E=re);else if(uec(se,U))D[E]=se,D[ue]=U,E=ue;else break e}}return ee}function c(D,ee){var U=D.sortIndex-ee.sortIndex;return U!==0?U:D.id-ee.id}if(typeof performance=="object"&&typeof performance.now=="function"){var d=performance;r.unstable_now=function(){return d.now()}}else{var p=Date,h=p.now();r.unstable_now=function(){return p.now()-h}}var m=[],v=[],k=1,C=null,P=3,j=!1,F=!1,T=!1,_=typeof setTimeout=="function"?setTimeout:null,I=typeof clearTimeout=="function"?clearTimeout:null,W=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function $(D){for(var ee=o(v);ee!==null;){if(ee.callback===null)u(v);else if(ee.startTime<=D)u(v),ee.sortIndex=ee.expirationTime,i(m,ee);else break;ee=o(v)}}function q(D){if(T=!1,$(D),!F)if(o(m)!==null)F=!0,Ne(ne);else{var ee=o(v);ee!==null&&fe(q,ee.startTime-D)}}function ne(D,ee){F=!1,T&&(T=!1,I(O),O=-1),j=!0;var U=P;try{for($(ee),C=o(m);C!==null&&(!(C.expirationTime>ee)||D&&!de());){var E=C.callback;if(typeof E=="function"){C.callback=null,P=C.priorityLevel;var L=E(C.expirationTime<=ee);ee=r.unstable_now(),typeof L=="function"?C.callback=L:C===o(m)&&u(m),$(ee)}else u(m);C=o(m)}if(C!==null)var J=!0;else{var re=o(v);re!==null&&fe(q,re.startTime-ee),J=!1}return J}finally{C=null,P=U,j=!1}}var le=!1,V=null,O=-1,X=5,ae=-1;function de(){return!(r.unstable_now()-aeD||125E?(D.sortIndex=U,i(v,D),o(m)===null&&D===o(v)&&(T?(I(O),O=-1):T=!0,fe(q,U-E))):(D.sortIndex=L,i(m,D),F||j||(F=!0,Ne(ne))),D},r.unstable_shouldYield=de,r.unstable_wrapCallback=function(D){var ee=P;return function(){var U=P;P=ee;try{return D.apply(this,arguments)}finally{P=U}}}}(ms)),ms}var zd;function rh(){return zd||(zd=1,ps.exports=nh()),ps.exports}/** * @license React * react-dom.production.min.js * @@ -30,14 +30,14 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var Md;function lh(){if(Md)return xt;Md=1;var r=Ia(),i=rh();function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),m=Object.prototype.hasOwnProperty,v=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,k={},S={};function P(e){return m.call(S,e)?!0:m.call(k,e)?!1:v.test(e)?S[e]=!0:(k[e]=!0,!1)}function j(e,t,n,l){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return l?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function F(e,t,n,l){if(t===null||typeof t>"u"||j(e,t,n,l))return!0;if(l)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function T(e,t,n,l,s,a,f){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=l,this.attributeNamespace=s,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a,this.removeEmptyString=f}var _={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){_[e]=new T(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];_[t]=new T(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){_[e]=new T(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){_[e]=new T(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){_[e]=new T(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){_[e]=new T(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){_[e]=new T(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){_[e]=new T(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){_[e]=new T(e,5,!1,e.toLowerCase(),null,!1,!1)});var M=/[\-:]([a-z])/g;function W(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(M,W);_[t]=new T(t,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(M,W);_[t]=new T(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(M,W);_[t]=new T(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){_[e]=new T(e,1,!1,e.toLowerCase(),null,!1,!1)}),_.xlinkHref=new T("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){_[e]=new T(e,1,!1,e.toLowerCase(),null,!0,!0)});function B(e,t,n,l){var s=_.hasOwnProperty(t)?_[t]:null;(s!==null?s.type!==0:l||!(2g||s[f]!==a[g]){var w=` -`+s[f].replace(" at new "," at ");return e.displayName&&w.includes("")&&(w=w.replace("",e.displayName)),w}while(1<=f&&0<=g);break}}}finally{J=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?L(e):""}function fe(e){switch(e.tag){case 5:return L(e.type);case 16:return L("Lazy");case 13:return L("Suspense");case 19:return L("SuspenseList");case 0:case 2:case 15:return e=le(e.type,!1),e;case 11:return e=le(e.type.render,!1),e;case 1:return e=le(e.type,!0),e;default:return""}}function ae(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case H:return"Fragment";case ee:return"Portal";case Q:return"Profiler";case z:return"StrictMode";case Re:return"Suspense";case _e:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case ge:return(e.displayName||"Context")+".Consumer";case ce:return(e._context.displayName||"Context")+".Provider";case Pe:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case $e:return t=e.displayName||null,t!==null?t:ae(e.type)||"Memo";case Ce:t=e._payload,e=e._init;try{return ae(e(t))}catch{}}return null}function se(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ae(t);case 8:return t===z?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function ve(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function we(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function ke(e){var t=we(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),l=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var s=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return s.call(this)},set:function(f){l=""+f,a.call(this,f)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return l},setValue:function(f){l=""+f},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Rt(e){e._valueTracker||(e._valueTracker=ke(e))}function st(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),l="";return e&&(l=we(e)?e.checked?"true":"false":e.value),e=l,e!==n?(t.setValue(e),!0):!1}function Qn(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Mt(e,t){var n=t.checked;return U({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Kn(e,t){var n=t.defaultValue==null?"":t.defaultValue,l=t.checked!=null?t.checked:t.defaultChecked;n=ve(t.value!=null?t.value:n),e._wrapperState={initialChecked:l,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function ln(e,t){t=t.checked,t!=null&&B(e,"checked",t,!1)}function dr(e,t){ln(e,t);var n=ve(t.value),l=t.type;if(n!=null)l==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(l==="submit"||l==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Yn(e,t.type,n):t.hasOwnProperty("defaultValue")&&Yn(e,t.type,ve(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Vr(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var l=t.type;if(!(l!=="submit"&&l!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Yn(e,t,n){(t!=="number"||Qn(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var ft=Array.isArray;function It(e,t,n,l){if(e=e.options,t){t={};for(var s=0;s"+t.valueOf().toString()+"",t=Ot.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Cn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var pt={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Jl=["Webkit","ms","Moz","O"];Object.keys(pt).forEach(function(e){Jl.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),pt[t]=pt[e]})});function Zl(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||pt.hasOwnProperty(e)&&pt[e]?(""+t).trim():t+"px"}function ql(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var l=n.indexOf("--")===0,s=Zl(n,t[n],l);n==="float"&&(n="cssFloat"),l?e.setProperty(n,s):e[n]=s}}var Qr=U({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function fr(e,t){if(t){if(Qr[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(o(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(o(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(o(61))}if(t.style!=null&&typeof t.style!="object")throw Error(o(62))}}function Kr(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var pr=null;function Yr(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Xr=null,En=null,je=null;function qe(e){if(e=gl(e)){if(typeof Xr!="function")throw Error(o(280));var t=e.stateNode;t&&(t=ko(t),Xr(e.stateNode,e.type,t))}}function et(e){En?je?je.push(e):je=[e]:En=e}function At(){if(En){var e=En,t=je;if(je=En=null,qe(e),t)for(e=0;e>>=0,e===0?32:31-(hp(e)/gp|0)|0}var no=64,ro=4194304;function Zr(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function lo(e,t){var n=e.pendingLanes;if(n===0)return 0;var l=0,s=e.suspendedLanes,a=e.pingedLanes,f=n&268435455;if(f!==0){var g=f&~s;g!==0?l=Zr(g):(a&=f,a!==0&&(l=Zr(a)))}else f=n&~s,f!==0?l=Zr(f):a!==0&&(l=Zr(a));if(l===0)return 0;if(t!==0&&t!==l&&(t&s)===0&&(s=l&-l,a=t&-t,s>=a||s===16&&(a&4194240)!==0))return t;if((l&4)!==0&&(l|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=l;0n;n++)t.push(e);return t}function qr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-$t(t),e[t]=n}function xp(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var l=e.eventTimes;for(e=e.expirationTimes;0=sl),Su=" ",Cu=!1;function Eu(e,t){switch(e){case"keyup":return Kp.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Nu(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var gr=!1;function Xp(e,t){switch(e){case"compositionend":return Nu(t);case"keypress":return t.which!==32?null:(Cu=!0,Su);case"textInput":return e=t.data,e===Su&&Cu?null:e;default:return null}}function Jp(e,t){if(gr)return e==="compositionend"||!Hi&&Eu(e,t)?(e=gu(),uo=Fi=Tn=null,gr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=l}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Lu(n)}}function zu(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?zu(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Mu(){for(var e=window,t=Qn();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Qn(e.document)}return t}function Ki(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function im(e){var t=Mu(),n=e.focusedElem,l=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&zu(n.ownerDocument.documentElement,n)){if(l!==null&&Ki(n)){if(t=l.start,e=l.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var s=n.textContent.length,a=Math.min(l.start,s);l=l.end===void 0?a:Math.min(l.end,s),!e.extend&&a>l&&(s=l,l=a,a=s),s=ju(n,a);var f=ju(n,l);s&&f&&(e.rangeCount!==1||e.anchorNode!==s.node||e.anchorOffset!==s.offset||e.focusNode!==f.node||e.focusOffset!==f.offset)&&(t=t.createRange(),t.setStart(s.node,s.offset),e.removeAllRanges(),a>l?(e.addRange(t),e.extend(f.node,f.offset)):(t.setEnd(f.node,f.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,vr=null,Yi=null,dl=null,Xi=!1;function Iu(e,t,n){var l=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Xi||vr==null||vr!==Qn(l)||(l=vr,"selectionStart"in l&&Ki(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),dl&&cl(dl,l)||(dl=l,l=yo(Yi,"onSelect"),0Sr||(e.current=as[Sr],as[Sr]=null,Sr--)}function be(e,t){Sr++,as[Sr]=e.current,e.current=t}var jn={},rt=Ln(jn),ht=Ln(!1),Zn=jn;function Cr(e,t){var n=e.type.contextTypes;if(!n)return jn;var l=e.stateNode;if(l&&l.__reactInternalMemoizedUnmaskedChildContext===t)return l.__reactInternalMemoizedMaskedChildContext;var s={},a;for(a in n)s[a]=t[a];return l&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=s),s}function gt(e){return e=e.childContextTypes,e!=null}function So(){De(ht),De(rt)}function Ju(e,t,n){if(rt.current!==jn)throw Error(o(168));be(rt,t),be(ht,n)}function Zu(e,t,n){var l=e.stateNode;if(t=t.childContextTypes,typeof l.getChildContext!="function")return n;l=l.getChildContext();for(var s in l)if(!(s in t))throw Error(o(108,se(e)||"Unknown",s));return U({},n,l)}function Co(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||jn,Zn=rt.current,be(rt,e),be(ht,ht.current),!0}function qu(e,t,n){var l=e.stateNode;if(!l)throw Error(o(169));n?(e=Zu(e,t,Zn),l.__reactInternalMemoizedMergedChildContext=e,De(ht),De(rt),be(rt,e)):De(ht),be(ht,n)}var un=null,Eo=!1,us=!1;function ec(e){un===null?un=[e]:un.push(e)}function ym(e){Eo=!0,ec(e)}function zn(){if(!us&&un!==null){us=!0;var e=0,t=Se;try{var n=un;for(Se=1;e>=f,s-=f,cn=1<<32-$t(t)+s|n<ue?(Ye=ie,ie=null):Ye=ie.sibling;var xe=I(N,ie,R[ue],$);if(xe===null){ie===null&&(ie=Ye);break}e&&ie&&xe.alternate===null&&t(N,ie),x=a(xe,x,ue),oe===null?ne=xe:oe.sibling=xe,oe=xe,ie=Ye}if(ue===R.length)return n(N,ie),Le&&er(N,ue),ne;if(ie===null){for(;ueue?(Ye=ie,ie=null):Ye=ie.sibling;var Un=I(N,ie,xe.value,$);if(Un===null){ie===null&&(ie=Ye);break}e&&ie&&Un.alternate===null&&t(N,ie),x=a(Un,x,ue),oe===null?ne=Un:oe.sibling=Un,oe=Un,ie=Ye}if(xe.done)return n(N,ie),Le&&er(N,ue),ne;if(ie===null){for(;!xe.done;ue++,xe=R.next())xe=A(N,xe.value,$),xe!==null&&(x=a(xe,x,ue),oe===null?ne=xe:oe.sibling=xe,oe=xe);return Le&&er(N,ue),ne}for(ie=l(N,ie);!xe.done;ue++,xe=R.next())xe=V(ie,N,ue,xe.value,$),xe!==null&&(e&&xe.alternate!==null&&ie.delete(xe.key===null?ue:xe.key),x=a(xe,x,ue),oe===null?ne=xe:oe.sibling=xe,oe=xe);return e&&ie.forEach(function(Zm){return t(N,Zm)}),Le&&er(N,ue),ne}function We(N,x,R,$){if(typeof R=="object"&&R!==null&&R.type===H&&R.key===null&&(R=R.props.children),typeof R=="object"&&R!==null){switch(R.$$typeof){case re:e:{for(var ne=R.key,oe=x;oe!==null;){if(oe.key===ne){if(ne=R.type,ne===H){if(oe.tag===7){n(N,oe.sibling),x=s(oe,R.props.children),x.return=N,N=x;break e}}else if(oe.elementType===ne||typeof ne=="object"&&ne!==null&&ne.$$typeof===Ce&&ic(ne)===oe.type){n(N,oe.sibling),x=s(oe,R.props),x.ref=vl(N,oe,R),x.return=N,N=x;break e}n(N,oe);break}else t(N,oe);oe=oe.sibling}R.type===H?(x=ar(R.props.children,N.mode,$,R.key),x.return=N,N=x):($=Zo(R.type,R.key,R.props,null,N.mode,$),$.ref=vl(N,x,R),$.return=N,N=$)}return f(N);case ee:e:{for(oe=R.key;x!==null;){if(x.key===oe)if(x.tag===4&&x.stateNode.containerInfo===R.containerInfo&&x.stateNode.implementation===R.implementation){n(N,x.sibling),x=s(x,R.children||[]),x.return=N,N=x;break e}else{n(N,x);break}else t(N,x);x=x.sibling}x=ia(R,N.mode,$),x.return=N,N=x}return f(N);case Ce:return oe=R._init,We(N,x,oe(R._payload),$)}if(ft(R))return K(N,x,R,$);if(te(R))return Z(N,x,R,$);Po(N,R)}return typeof R=="string"&&R!==""||typeof R=="number"?(R=""+R,x!==null&&x.tag===6?(n(N,x.sibling),x=s(x,R),x.return=N,N=x):(n(N,x),x=oa(R,N.mode,$),x.return=N,N=x),f(N)):n(N,x)}return We}var br=sc(!0),ac=sc(!1),To=Ln(null),Do=null,Pr=null,hs=null;function gs(){hs=Pr=Do=null}function vs(e){var t=To.current;De(To),e._currentValue=t}function ys(e,t,n){for(;e!==null;){var l=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,l!==null&&(l.childLanes|=t)):l!==null&&(l.childLanes&t)!==t&&(l.childLanes|=t),e===n)break;e=e.return}}function Tr(e,t){Do=e,hs=Pr=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(vt=!0),e.firstContext=null)}function Dt(e){var t=e._currentValue;if(hs!==e)if(e={context:e,memoizedValue:t,next:null},Pr===null){if(Do===null)throw Error(o(308));Pr=e,Do.dependencies={lanes:0,firstContext:e}}else Pr=Pr.next=e;return t}var tr=null;function ws(e){tr===null?tr=[e]:tr.push(e)}function uc(e,t,n,l){var s=t.interleaved;return s===null?(n.next=n,ws(t)):(n.next=s.next,s.next=n),t.interleaved=n,fn(e,l)}function fn(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var Mn=!1;function xs(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function cc(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function pn(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function In(e,t,n){var l=e.updateQueue;if(l===null)return null;if(l=l.shared,(ye&2)!==0){var s=l.pending;return s===null?t.next=t:(t.next=s.next,s.next=t),l.pending=t,fn(e,n)}return s=l.interleaved,s===null?(t.next=t,ws(l)):(t.next=s.next,s.next=t),l.interleaved=t,fn(e,n)}function _o(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var l=t.lanes;l&=e.pendingLanes,n|=l,t.lanes=n,zi(e,n)}}function dc(e,t){var n=e.updateQueue,l=e.alternate;if(l!==null&&(l=l.updateQueue,n===l)){var s=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var f={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};a===null?s=a=f:a=a.next=f,n=n.next}while(n!==null);a===null?s=a=t:a=a.next=t}else s=a=t;n={baseState:l.baseState,firstBaseUpdate:s,lastBaseUpdate:a,shared:l.shared,effects:l.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Lo(e,t,n,l){var s=e.updateQueue;Mn=!1;var a=s.firstBaseUpdate,f=s.lastBaseUpdate,g=s.shared.pending;if(g!==null){s.shared.pending=null;var w=g,b=w.next;w.next=null,f===null?a=b:f.next=b,f=w;var O=e.alternate;O!==null&&(O=O.updateQueue,g=O.lastBaseUpdate,g!==f&&(g===null?O.firstBaseUpdate=b:g.next=b,O.lastBaseUpdate=w))}if(a!==null){var A=s.baseState;f=0,O=b=w=null,g=a;do{var I=g.lane,V=g.eventTime;if((l&I)===I){O!==null&&(O=O.next={eventTime:V,lane:0,tag:g.tag,payload:g.payload,callback:g.callback,next:null});e:{var K=e,Z=g;switch(I=t,V=n,Z.tag){case 1:if(K=Z.payload,typeof K=="function"){A=K.call(V,A,I);break e}A=K;break e;case 3:K.flags=K.flags&-65537|128;case 0:if(K=Z.payload,I=typeof K=="function"?K.call(V,A,I):K,I==null)break e;A=U({},A,I);break e;case 2:Mn=!0}}g.callback!==null&&g.lane!==0&&(e.flags|=64,I=s.effects,I===null?s.effects=[g]:I.push(g))}else V={eventTime:V,lane:I,tag:g.tag,payload:g.payload,callback:g.callback,next:null},O===null?(b=O=V,w=A):O=O.next=V,f|=I;if(g=g.next,g===null){if(g=s.shared.pending,g===null)break;I=g,g=I.next,I.next=null,s.lastBaseUpdate=I,s.shared.pending=null}}while(!0);if(O===null&&(w=A),s.baseState=w,s.firstBaseUpdate=b,s.lastBaseUpdate=O,t=s.shared.interleaved,t!==null){s=t;do f|=s.lane,s=s.next;while(s!==t)}else a===null&&(s.shared.lanes=0);lr|=f,e.lanes=f,e.memoizedState=A}}function fc(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var l=Ns.transition;Ns.transition={};try{e(!1),t()}finally{Se=n,Ns.transition=l}}function _c(){return _t().memoizedState}function Sm(e,t,n){var l=Wn(e);if(n={lane:l,action:n,hasEagerState:!1,eagerState:null,next:null},Lc(e))jc(t,n);else if(n=uc(e,t,n,l),n!==null){var s=ct();Qt(n,e,l,s),zc(n,t,l)}}function Cm(e,t,n){var l=Wn(e),s={lane:l,action:n,hasEagerState:!1,eagerState:null,next:null};if(Lc(e))jc(t,s);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var f=t.lastRenderedState,g=a(f,n);if(s.hasEagerState=!0,s.eagerState=g,Bt(g,f)){var w=t.interleaved;w===null?(s.next=s,ws(t)):(s.next=w.next,w.next=s),t.interleaved=s;return}}catch{}finally{}n=uc(e,t,s,l),n!==null&&(s=ct(),Qt(n,e,l,s),zc(n,t,l))}}function Lc(e){var t=e.alternate;return e===Ie||t!==null&&t===Ie}function jc(e,t){kl=Mo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function zc(e,t,n){if((n&4194240)!==0){var l=t.lanes;l&=e.pendingLanes,n|=l,t.lanes=n,zi(e,n)}}var Ao={readContext:Dt,useCallback:lt,useContext:lt,useEffect:lt,useImperativeHandle:lt,useInsertionEffect:lt,useLayoutEffect:lt,useMemo:lt,useReducer:lt,useRef:lt,useState:lt,useDebugValue:lt,useDeferredValue:lt,useTransition:lt,useMutableSource:lt,useSyncExternalStore:lt,useId:lt,unstable_isNewReconciler:!1},Em={readContext:Dt,useCallback:function(e,t){return en().memoizedState=[e,t===void 0?null:t],e},useContext:Dt,useEffect:Cc,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Io(4194308,4,Rc.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Io(4194308,4,e,t)},useInsertionEffect:function(e,t){return Io(4,2,e,t)},useMemo:function(e,t){var n=en();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var l=en();return t=n!==void 0?n(t):t,l.memoizedState=l.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},l.queue=e,e=e.dispatch=Sm.bind(null,Ie,e),[l.memoizedState,e]},useRef:function(e){var t=en();return e={current:e},t.memoizedState=e},useState:kc,useDebugValue:Ls,useDeferredValue:function(e){return en().memoizedState=e},useTransition:function(){var e=kc(!1),t=e[0];return e=km.bind(null,e[1]),en().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var l=Ie,s=en();if(Le){if(n===void 0)throw Error(o(407));n=n()}else{if(n=t(),Ke===null)throw Error(o(349));(rr&30)!==0||gc(l,t,n)}s.memoizedState=n;var a={value:n,getSnapshot:t};return s.queue=a,Cc(yc.bind(null,l,a,e),[e]),l.flags|=2048,El(9,vc.bind(null,l,a,n,t),void 0,null),n},useId:function(){var e=en(),t=Ke.identifierPrefix;if(Le){var n=dn,l=cn;n=(l&~(1<<32-$t(l)-1)).toString(32)+n,t=":"+t+"R"+n,n=Sl++,0<\/script>",e=e.removeChild(e.firstChild)):typeof l.is=="string"?e=f.createElement(n,{is:l.is}):(e=f.createElement(n),n==="select"&&(f=e,l.multiple?f.multiple=!0:l.size&&(f.size=l.size))):e=f.createElementNS(e,n),e[Zt]=t,e[hl]=l,ed(e,t,!1,!1),t.stateNode=e;e:{switch(f=Kr(n,l),n){case"dialog":Te("cancel",e),Te("close",e),s=l;break;case"iframe":case"object":case"embed":Te("load",e),s=l;break;case"video":case"audio":for(s=0;szr&&(t.flags|=128,l=!0,Nl(a,!1),t.lanes=4194304)}else{if(!l)if(e=jo(f),e!==null){if(t.flags|=128,l=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Nl(a,!0),a.tail===null&&a.tailMode==="hidden"&&!f.alternate&&!Le)return ot(t),null}else 2*Fe()-a.renderingStartTime>zr&&n!==1073741824&&(t.flags|=128,l=!0,Nl(a,!1),t.lanes=4194304);a.isBackwards?(f.sibling=t.child,t.child=f):(n=a.last,n!==null?n.sibling=f:t.child=f,a.last=f)}return a.tail!==null?(t=a.tail,a.rendering=t,a.tail=t.sibling,a.renderingStartTime=Fe(),t.sibling=null,n=Me.current,be(Me,l?n&1|2:n&1),t):(ot(t),null);case 22:case 23:return na(),l=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==l&&(t.flags|=8192),l&&(t.mode&1)!==0?(Nt&1073741824)!==0&&(ot(t),t.subtreeFlags&6&&(t.flags|=8192)):ot(t),null;case 24:return null;case 25:return null}throw Error(o(156,t.tag))}function Lm(e,t){switch(ds(t),t.tag){case 1:return gt(t.type)&&So(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Dr(),De(ht),De(rt),Es(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return Ss(t),null;case 13:if(De(Me),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(o(340));Rr()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return De(Me),null;case 4:return Dr(),null;case 10:return vs(t.type._context),null;case 22:case 23:return na(),null;case 24:return null;default:return null}}var Bo=!1,it=!1,jm=typeof WeakSet=="function"?WeakSet:Set,G=null;function Lr(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(l){Ae(e,t,l)}else n.current=null}function Vs(e,t,n){try{n()}catch(l){Ae(e,t,l)}}var rd=!1;function zm(e,t){if(ns=so,e=Mu(),Ki(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var l=n.getSelection&&n.getSelection();if(l&&l.rangeCount!==0){n=l.anchorNode;var s=l.anchorOffset,a=l.focusNode;l=l.focusOffset;try{n.nodeType,a.nodeType}catch{n=null;break e}var f=0,g=-1,w=-1,b=0,O=0,A=e,I=null;t:for(;;){for(var V;A!==n||s!==0&&A.nodeType!==3||(g=f+s),A!==a||l!==0&&A.nodeType!==3||(w=f+l),A.nodeType===3&&(f+=A.nodeValue.length),(V=A.firstChild)!==null;)I=A,A=V;for(;;){if(A===e)break t;if(I===n&&++b===s&&(g=f),I===a&&++O===l&&(w=f),(V=A.nextSibling)!==null)break;A=I,I=A.parentNode}A=V}n=g===-1||w===-1?null:{start:g,end:w}}else n=null}n=n||{start:0,end:0}}else n=null;for(rs={focusedElem:e,selectionRange:n},so=!1,G=t;G!==null;)if(t=G,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,G=e;else for(;G!==null;){t=G;try{var K=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(K!==null){var Z=K.memoizedProps,We=K.memoizedState,N=t.stateNode,x=N.getSnapshotBeforeUpdate(t.elementType===t.type?Z:Vt(t.type,Z),We);N.__reactInternalSnapshotBeforeUpdate=x}break;case 3:var R=t.stateNode.containerInfo;R.nodeType===1?R.textContent="":R.nodeType===9&&R.documentElement&&R.removeChild(R.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(o(163))}}catch($){Ae(t,t.return,$)}if(e=t.sibling,e!==null){e.return=t.return,G=e;break}G=t.return}return K=rd,rd=!1,K}function Rl(e,t,n){var l=t.updateQueue;if(l=l!==null?l.lastEffect:null,l!==null){var s=l=l.next;do{if((s.tag&e)===e){var a=s.destroy;s.destroy=void 0,a!==void 0&&Vs(t,n,a)}s=s.next}while(s!==l)}}function Uo(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var l=n.create;n.destroy=l()}n=n.next}while(n!==t)}}function Hs(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function ld(e){var t=e.alternate;t!==null&&(e.alternate=null,ld(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Zt],delete t[hl],delete t[ss],delete t[gm],delete t[vm])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function od(e){return e.tag===5||e.tag===3||e.tag===4}function id(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||od(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Gs(e,t,n){var l=e.tag;if(l===5||l===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=xo));else if(l!==4&&(e=e.child,e!==null))for(Gs(e,t,n),e=e.sibling;e!==null;)Gs(e,t,n),e=e.sibling}function Qs(e,t,n){var l=e.tag;if(l===5||l===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(l!==4&&(e=e.child,e!==null))for(Qs(e,t,n),e=e.sibling;e!==null;)Qs(e,t,n),e=e.sibling}var Je=null,Ht=!1;function On(e,t,n){for(n=n.child;n!==null;)sd(e,t,n),n=n.sibling}function sd(e,t,n){if(Jt&&typeof Jt.onCommitFiberUnmount=="function")try{Jt.onCommitFiberUnmount(to,n)}catch{}switch(n.tag){case 5:it||Lr(n,t);case 6:var l=Je,s=Ht;Je=null,On(e,t,n),Je=l,Ht=s,Je!==null&&(Ht?(e=Je,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Je.removeChild(n.stateNode));break;case 18:Je!==null&&(Ht?(e=Je,n=n.stateNode,e.nodeType===8?is(e.parentNode,n):e.nodeType===1&&is(e,n),ll(e)):is(Je,n.stateNode));break;case 4:l=Je,s=Ht,Je=n.stateNode.containerInfo,Ht=!0,On(e,t,n),Je=l,Ht=s;break;case 0:case 11:case 14:case 15:if(!it&&(l=n.updateQueue,l!==null&&(l=l.lastEffect,l!==null))){s=l=l.next;do{var a=s,f=a.destroy;a=a.tag,f!==void 0&&((a&2)!==0||(a&4)!==0)&&Vs(n,t,f),s=s.next}while(s!==l)}On(e,t,n);break;case 1:if(!it&&(Lr(n,t),l=n.stateNode,typeof l.componentWillUnmount=="function"))try{l.props=n.memoizedProps,l.state=n.memoizedState,l.componentWillUnmount()}catch(g){Ae(n,t,g)}On(e,t,n);break;case 21:On(e,t,n);break;case 22:n.mode&1?(it=(l=it)||n.memoizedState!==null,On(e,t,n),it=l):On(e,t,n);break;default:On(e,t,n)}}function ad(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new jm),t.forEach(function(l){var s=Um.bind(null,e,l);n.has(l)||(n.add(l),l.then(s,s))})}}function Gt(e,t){var n=t.deletions;if(n!==null)for(var l=0;ls&&(s=f),l&=~a}if(l=s,l=Fe()-l,l=(120>l?120:480>l?480:1080>l?1080:1920>l?1920:3e3>l?3e3:4320>l?4320:1960*Im(l/1960))-l,10e?16:e,Fn===null)var l=!1;else{if(e=Fn,Fn=null,Ko=0,(ye&6)!==0)throw Error(o(331));var s=ye;for(ye|=4,G=e.current;G!==null;){var a=G,f=a.child;if((G.flags&16)!==0){var g=a.deletions;if(g!==null){for(var w=0;wFe()-Xs?ir(e,0):Ys|=n),wt(e,t)}function kd(e,t){t===0&&((e.mode&1)===0?t=1:(t=ro,ro<<=1,(ro&130023424)===0&&(ro=4194304)));var n=ct();e=fn(e,t),e!==null&&(qr(e,t,n),wt(e,n))}function Bm(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),kd(e,n)}function Um(e,t){var n=0;switch(e.tag){case 13:var l=e.stateNode,s=e.memoizedState;s!==null&&(n=s.retryLane);break;case 19:l=e.stateNode;break;default:throw Error(o(314))}l!==null&&l.delete(t),kd(e,n)}var Sd;Sd=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||ht.current)vt=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return vt=!1,Dm(e,t,n);vt=(e.flags&131072)!==0}else vt=!1,Le&&(t.flags&1048576)!==0&&tc(t,Ro,t.index);switch(t.lanes=0,t.tag){case 2:var l=t.type;$o(e,t),e=t.pendingProps;var s=Cr(t,rt.current);Tr(t,n),s=bs(null,t,l,e,s,n);var a=Ps();return t.flags|=1,typeof s=="object"&&s!==null&&typeof s.render=="function"&&s.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,gt(l)?(a=!0,Co(t)):a=!1,t.memoizedState=s.state!==null&&s.state!==void 0?s.state:null,xs(t),s.updater=Fo,t.stateNode=s,s._reactInternals=t,zs(t,l,e,n),t=As(null,t,l,!0,a,n)):(t.tag=0,Le&&a&&cs(t),ut(null,t,s,n),t=t.child),t;case 16:l=t.elementType;e:{switch($o(e,t),e=t.pendingProps,s=l._init,l=s(l._payload),t.type=l,s=t.tag=Hm(l),e=Vt(l,e),s){case 0:t=Os(null,t,l,e,n);break e;case 1:t=Kc(null,t,l,e,n);break e;case 11:t=Uc(null,t,l,e,n);break e;case 14:t=Vc(null,t,l,Vt(l.type,e),n);break e}throw Error(o(306,l,""))}return t;case 0:return l=t.type,s=t.pendingProps,s=t.elementType===l?s:Vt(l,s),Os(e,t,l,s,n);case 1:return l=t.type,s=t.pendingProps,s=t.elementType===l?s:Vt(l,s),Kc(e,t,l,s,n);case 3:e:{if(Yc(t),e===null)throw Error(o(387));l=t.pendingProps,a=t.memoizedState,s=a.element,cc(e,t),Lo(t,l,null,n);var f=t.memoizedState;if(l=f.element,a.isDehydrated)if(a={element:l,isDehydrated:!1,cache:f.cache,pendingSuspenseBoundaries:f.pendingSuspenseBoundaries,transitions:f.transitions},t.updateQueue.baseState=a,t.memoizedState=a,t.flags&256){s=_r(Error(o(423)),t),t=Xc(e,t,l,n,s);break e}else if(l!==s){s=_r(Error(o(424)),t),t=Xc(e,t,l,n,s);break e}else for(Et=_n(t.stateNode.containerInfo.firstChild),Ct=t,Le=!0,Ut=null,n=ac(t,null,l,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Rr(),l===s){t=mn(e,t,n);break e}ut(e,t,l,n)}t=t.child}return t;case 5:return pc(t),e===null&&ps(t),l=t.type,s=t.pendingProps,a=e!==null?e.memoizedProps:null,f=s.children,ls(l,s)?f=null:a!==null&&ls(l,a)&&(t.flags|=32),Qc(e,t),ut(e,t,f,n),t.child;case 6:return e===null&&ps(t),null;case 13:return Jc(e,t,n);case 4:return ks(t,t.stateNode.containerInfo),l=t.pendingProps,e===null?t.child=br(t,null,l,n):ut(e,t,l,n),t.child;case 11:return l=t.type,s=t.pendingProps,s=t.elementType===l?s:Vt(l,s),Uc(e,t,l,s,n);case 7:return ut(e,t,t.pendingProps,n),t.child;case 8:return ut(e,t,t.pendingProps.children,n),t.child;case 12:return ut(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(l=t.type._context,s=t.pendingProps,a=t.memoizedProps,f=s.value,be(To,l._currentValue),l._currentValue=f,a!==null)if(Bt(a.value,f)){if(a.children===s.children&&!ht.current){t=mn(e,t,n);break e}}else for(a=t.child,a!==null&&(a.return=t);a!==null;){var g=a.dependencies;if(g!==null){f=a.child;for(var w=g.firstContext;w!==null;){if(w.context===l){if(a.tag===1){w=pn(-1,n&-n),w.tag=2;var b=a.updateQueue;if(b!==null){b=b.shared;var O=b.pending;O===null?w.next=w:(w.next=O.next,O.next=w),b.pending=w}}a.lanes|=n,w=a.alternate,w!==null&&(w.lanes|=n),ys(a.return,n,t),g.lanes|=n;break}w=w.next}}else if(a.tag===10)f=a.type===t.type?null:a.child;else if(a.tag===18){if(f=a.return,f===null)throw Error(o(341));f.lanes|=n,g=f.alternate,g!==null&&(g.lanes|=n),ys(f,n,t),f=a.sibling}else f=a.child;if(f!==null)f.return=a;else for(f=a;f!==null;){if(f===t){f=null;break}if(a=f.sibling,a!==null){a.return=f.return,f=a;break}f=f.return}a=f}ut(e,t,s.children,n),t=t.child}return t;case 9:return s=t.type,l=t.pendingProps.children,Tr(t,n),s=Dt(s),l=l(s),t.flags|=1,ut(e,t,l,n),t.child;case 14:return l=t.type,s=Vt(l,t.pendingProps),s=Vt(l.type,s),Vc(e,t,l,s,n);case 15:return Hc(e,t,t.type,t.pendingProps,n);case 17:return l=t.type,s=t.pendingProps,s=t.elementType===l?s:Vt(l,s),$o(e,t),t.tag=1,gt(l)?(e=!0,Co(t)):e=!1,Tr(t,n),Ic(t,l,s),zs(t,l,s,n),As(null,t,l,!0,e,n);case 19:return qc(e,t,n);case 22:return Gc(e,t,n)}throw Error(o(156,t.tag))};function Cd(e,t){return nu(e,t)}function Vm(e,t,n,l){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=l,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function jt(e,t,n,l){return new Vm(e,t,n,l)}function la(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Hm(e){if(typeof e=="function")return la(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Pe)return 11;if(e===$e)return 14}return 2}function Bn(e,t){var n=e.alternate;return n===null?(n=jt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Zo(e,t,n,l,s,a){var f=2;if(l=e,typeof e=="function")la(e)&&(f=1);else if(typeof e=="string")f=5;else e:switch(e){case H:return ar(n.children,s,a,t);case z:f=8,s|=8;break;case Q:return e=jt(12,n,t,s|2),e.elementType=Q,e.lanes=a,e;case Re:return e=jt(13,n,t,s),e.elementType=Re,e.lanes=a,e;case _e:return e=jt(19,n,t,s),e.elementType=_e,e.lanes=a,e;case de:return qo(n,s,a,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case ce:f=10;break e;case ge:f=9;break e;case Pe:f=11;break e;case $e:f=14;break e;case Ce:f=16,l=null;break e}throw Error(o(130,e==null?e:typeof e,""))}return t=jt(f,n,t,s),t.elementType=e,t.type=l,t.lanes=a,t}function ar(e,t,n,l){return e=jt(7,e,l,t),e.lanes=n,e}function qo(e,t,n,l){return e=jt(22,e,l,t),e.elementType=de,e.lanes=n,e.stateNode={isHidden:!1},e}function oa(e,t,n){return e=jt(6,e,null,t),e.lanes=n,e}function ia(e,t,n){return t=jt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Gm(e,t,n,l,s){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=ji(0),this.expirationTimes=ji(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=ji(0),this.identifierPrefix=l,this.onRecoverableError=s,this.mutableSourceEagerHydrationData=null}function sa(e,t,n,l,s,a,f,g,w){return e=new Gm(e,t,n,g,w),t===1?(t=1,a===!0&&(t|=8)):t=0,a=jt(3,null,null,t),e.current=a,a.stateNode=e,a.memoizedState={element:l,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},xs(a),e}function Qm(e,t,n){var l=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(r)}catch(i){console.error(i)}}return r(),pa.exports=lh(),pa.exports}var Od;function oh(){if(Od)return ii;Od=1;var r=df();return ii.createRoot=r.createRoot,ii.hydrateRoot=r.hydrateRoot,ii}var ih=oh();const sh=cf(ih);/** + */var Md;function lh(){if(Md)return xt;Md=1;var r=Ms(),i=rh();function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),m=Object.prototype.hasOwnProperty,v=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,k={},C={};function P(e){return m.call(C,e)?!0:m.call(k,e)?!1:v.test(e)?C[e]=!0:(k[e]=!0,!1)}function j(e,t,n,l){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return l?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function F(e,t,n,l){if(t===null||typeof t>"u"||j(e,t,n,l))return!0;if(l)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function T(e,t,n,l,a,s,f){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=l,this.attributeNamespace=a,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=s,this.removeEmptyString=f}var _={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){_[e]=new T(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];_[t]=new T(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){_[e]=new T(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){_[e]=new T(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){_[e]=new T(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){_[e]=new T(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){_[e]=new T(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){_[e]=new T(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){_[e]=new T(e,5,!1,e.toLowerCase(),null,!1,!1)});var I=/[\-:]([a-z])/g;function W(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(I,W);_[t]=new T(t,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(I,W);_[t]=new T(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(I,W);_[t]=new T(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){_[e]=new T(e,1,!1,e.toLowerCase(),null,!1,!1)}),_.xlinkHref=new T("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){_[e]=new T(e,1,!1,e.toLowerCase(),null,!0,!0)});function $(e,t,n,l){var a=_.hasOwnProperty(t)?_[t]:null;(a!==null?a.type!==0:l||!(2g||a[f]!==s[g]){var w=` +`+a[f].replace(" at new "," at ");return e.displayName&&w.includes("")&&(w=w.replace("",e.displayName)),w}while(1<=f&&0<=g);break}}}finally{J=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?L(e):""}function pe(e){switch(e.tag){case 5:return L(e.type);case 16:return L("Lazy");case 13:return L("Suspense");case 19:return L("SuspenseList");case 0:case 2:case 15:return e=re(e.type,!1),e;case 11:return e=re(e.type.render,!1),e;case 1:return e=re(e.type,!0),e;default:return""}}function ue(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case V:return"Fragment";case le:return"Portal";case X:return"Profiler";case O:return"StrictMode";case be:return"Suspense";case _e:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case de:return(e.displayName||"Context")+".Consumer";case ae:return(e._context.displayName||"Context")+".Provider";case Ee:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Be:return t=e.displayName||null,t!==null?t:ue(e.type)||"Memo";case Ne:t=e._payload,e=e._init;try{return ue(e(t))}catch{}}return null}function se(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ue(t);case 8:return t===O?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function ve(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function xe(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Se(e){var t=xe(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),l=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var a=n.get,s=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return a.call(this)},set:function(f){l=""+f,s.call(this,f)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return l},setValue:function(f){l=""+f},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Rt(e){e._valueTracker||(e._valueTracker=Se(e))}function at(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),l="";return e&&(l=xe(e)?e.checked?"true":"false":e.value),e=l,e!==n?(t.setValue(e),!0):!1}function Qn(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Mt(e,t){var n=t.checked;return U({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Kn(e,t){var n=t.defaultValue==null?"":t.defaultValue,l=t.checked!=null?t.checked:t.defaultChecked;n=ve(t.value!=null?t.value:n),e._wrapperState={initialChecked:l,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function ln(e,t){t=t.checked,t!=null&&$(e,"checked",t,!1)}function dr(e,t){ln(e,t);var n=ve(t.value),l=t.type;if(n!=null)l==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(l==="submit"||l==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?Yn(e,t.type,n):t.hasOwnProperty("defaultValue")&&Yn(e,t.type,ve(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Hr(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var l=t.type;if(!(l!=="submit"&&l!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function Yn(e,t,n){(t!=="number"||Qn(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var ft=Array.isArray;function It(e,t,n,l){if(e=e.options,t){t={};for(var a=0;a"+t.valueOf().toString()+"",t=Ot.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Cn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var pt={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Jl=["Webkit","ms","Moz","O"];Object.keys(pt).forEach(function(e){Jl.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),pt[t]=pt[e]})});function Zl(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||pt.hasOwnProperty(e)&&pt[e]?(""+t).trim():t+"px"}function ql(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var l=n.indexOf("--")===0,a=Zl(n,t[n],l);n==="float"&&(n="cssFloat"),l?e.setProperty(n,a):e[n]=a}}var Qr=U({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function fr(e,t){if(t){if(Qr[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(o(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(o(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(o(61))}if(t.style!=null&&typeof t.style!="object")throw Error(o(62))}}function Kr(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var pr=null;function Yr(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var Xr=null,En=null,je=null;function qe(e){if(e=gl(e)){if(typeof Xr!="function")throw Error(o(280));var t=e.stateNode;t&&(t=ko(t),Xr(e.stateNode,e.type,t))}}function et(e){En?je?je.push(e):je=[e]:En=e}function At(){if(En){var e=En,t=je;if(je=En=null,qe(e),t)for(e=0;e>>=0,e===0?32:31-(hp(e)/gp|0)|0}var no=64,ro=4194304;function Zr(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function lo(e,t){var n=e.pendingLanes;if(n===0)return 0;var l=0,a=e.suspendedLanes,s=e.pingedLanes,f=n&268435455;if(f!==0){var g=f&~a;g!==0?l=Zr(g):(s&=f,s!==0&&(l=Zr(s)))}else f=n&~a,f!==0?l=Zr(f):s!==0&&(l=Zr(s));if(l===0)return 0;if(t!==0&&t!==l&&(t&a)===0&&(a=l&-l,s=t&-t,a>=s||a===16&&(s&4194240)!==0))return t;if((l&4)!==0&&(l|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=l;0n;n++)t.push(e);return t}function qr(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Bt(t),e[t]=n}function xp(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var l=e.eventTimes;for(e=e.expirationTimes;0=al),Su=" ",Cu=!1;function Eu(e,t){switch(e){case"keyup":return Kp.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Nu(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var gr=!1;function Xp(e,t){switch(e){case"compositionend":return Nu(t);case"keypress":return t.which!==32?null:(Cu=!0,Su);case"textInput":return e=t.data,e===Su&&Cu?null:e;default:return null}}function Jp(e,t){if(gr)return e==="compositionend"||!Hi&&Eu(e,t)?(e=gu(),uo=Ai=Tn=null,gr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=l}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Lu(n)}}function zu(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?zu(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Mu(){for(var e=window,t=Qn();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Qn(e.document)}return t}function Qi(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function im(e){var t=Mu(),n=e.focusedElem,l=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&zu(n.ownerDocument.documentElement,n)){if(l!==null&&Qi(n)){if(t=l.start,e=l.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var a=n.textContent.length,s=Math.min(l.start,a);l=l.end===void 0?s:Math.min(l.end,a),!e.extend&&s>l&&(a=l,l=s,s=a),a=ju(n,s);var f=ju(n,l);a&&f&&(e.rangeCount!==1||e.anchorNode!==a.node||e.anchorOffset!==a.offset||e.focusNode!==f.node||e.focusOffset!==f.offset)&&(t=t.createRange(),t.setStart(a.node,a.offset),e.removeAllRanges(),s>l?(e.addRange(t),e.extend(f.node,f.offset)):(t.setEnd(f.node,f.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,vr=null,Ki=null,dl=null,Yi=!1;function Iu(e,t,n){var l=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Yi||vr==null||vr!==Qn(l)||(l=vr,"selectionStart"in l&&Qi(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),dl&&cl(dl,l)||(dl=l,l=yo(Ki,"onSelect"),0Sr||(e.current=aa[Sr],aa[Sr]=null,Sr--)}function Pe(e,t){Sr++,aa[Sr]=e.current,e.current=t}var jn={},rt=Ln(jn),ht=Ln(!1),Zn=jn;function Cr(e,t){var n=e.type.contextTypes;if(!n)return jn;var l=e.stateNode;if(l&&l.__reactInternalMemoizedUnmaskedChildContext===t)return l.__reactInternalMemoizedMaskedChildContext;var a={},s;for(s in n)a[s]=t[s];return l&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=a),a}function gt(e){return e=e.childContextTypes,e!=null}function So(){De(ht),De(rt)}function Ju(e,t,n){if(rt.current!==jn)throw Error(o(168));Pe(rt,t),Pe(ht,n)}function Zu(e,t,n){var l=e.stateNode;if(t=t.childContextTypes,typeof l.getChildContext!="function")return n;l=l.getChildContext();for(var a in l)if(!(a in t))throw Error(o(108,se(e)||"Unknown",a));return U({},n,l)}function Co(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||jn,Zn=rt.current,Pe(rt,e),Pe(ht,ht.current),!0}function qu(e,t,n){var l=e.stateNode;if(!l)throw Error(o(169));n?(e=Zu(e,t,Zn),l.__reactInternalMemoizedMergedChildContext=e,De(ht),De(rt),Pe(rt,e)):De(ht),Pe(ht,n)}var un=null,Eo=!1,sa=!1;function ec(e){un===null?un=[e]:un.push(e)}function ym(e){Eo=!0,ec(e)}function zn(){if(!sa&&un!==null){sa=!0;var e=0,t=Ce;try{var n=un;for(Ce=1;e>=f,a-=f,cn=1<<32-Bt(t)+a|n<ce?(Ye=ie,ie=null):Ye=ie.sibling;var ke=z(N,ie,R[ce],B);if(ke===null){ie===null&&(ie=Ye);break}e&&ie&&ke.alternate===null&&t(N,ie),x=s(ke,x,ce),oe===null?te=ke:oe.sibling=ke,oe=ke,ie=Ye}if(ce===R.length)return n(N,ie),Le&&er(N,ce),te;if(ie===null){for(;cece?(Ye=ie,ie=null):Ye=ie.sibling;var Un=z(N,ie,ke.value,B);if(Un===null){ie===null&&(ie=Ye);break}e&&ie&&Un.alternate===null&&t(N,ie),x=s(Un,x,ce),oe===null?te=Un:oe.sibling=Un,oe=Un,ie=Ye}if(ke.done)return n(N,ie),Le&&er(N,ce),te;if(ie===null){for(;!ke.done;ce++,ke=R.next())ke=A(N,ke.value,B),ke!==null&&(x=s(ke,x,ce),oe===null?te=ke:oe.sibling=ke,oe=ke);return Le&&er(N,ce),te}for(ie=l(N,ie);!ke.done;ce++,ke=R.next())ke=H(ie,N,ce,ke.value,B),ke!==null&&(e&&ke.alternate!==null&&ie.delete(ke.key===null?ce:ke.key),x=s(ke,x,ce),oe===null?te=ke:oe.sibling=ke,oe=ke);return e&&ie.forEach(function(Zm){return t(N,Zm)}),Le&&er(N,ce),te}function We(N,x,R,B){if(typeof R=="object"&&R!==null&&R.type===V&&R.key===null&&(R=R.props.children),typeof R=="object"&&R!==null){switch(R.$$typeof){case ne:e:{for(var te=R.key,oe=x;oe!==null;){if(oe.key===te){if(te=R.type,te===V){if(oe.tag===7){n(N,oe.sibling),x=a(oe,R.props.children),x.return=N,N=x;break e}}else if(oe.elementType===te||typeof te=="object"&&te!==null&&te.$$typeof===Ne&&ic(te)===oe.type){n(N,oe.sibling),x=a(oe,R.props),x.ref=vl(N,oe,R),x.return=N,N=x;break e}n(N,oe);break}else t(N,oe);oe=oe.sibling}R.type===V?(x=sr(R.props.children,N.mode,B,R.key),x.return=N,N=x):(B=Zo(R.type,R.key,R.props,null,N.mode,B),B.ref=vl(N,x,R),B.return=N,N=B)}return f(N);case le:e:{for(oe=R.key;x!==null;){if(x.key===oe)if(x.tag===4&&x.stateNode.containerInfo===R.containerInfo&&x.stateNode.implementation===R.implementation){n(N,x.sibling),x=a(x,R.children||[]),x.return=N,N=x;break e}else{n(N,x);break}else t(N,x);x=x.sibling}x=os(R,N.mode,B),x.return=N,N=x}return f(N);case Ne:return oe=R._init,We(N,x,oe(R._payload),B)}if(ft(R))return Q(N,x,R,B);if(ee(R))return Z(N,x,R,B);Po(N,R)}return typeof R=="string"&&R!==""||typeof R=="number"?(R=""+R,x!==null&&x.tag===6?(n(N,x.sibling),x=a(x,R),x.return=N,N=x):(n(N,x),x=ls(R,N.mode,B),x.return=N,N=x),f(N)):n(N,x)}return We}var br=ac(!0),sc=ac(!1),To=Ln(null),Do=null,Pr=null,ma=null;function ha(){ma=Pr=Do=null}function ga(e){var t=To.current;De(To),e._currentValue=t}function va(e,t,n){for(;e!==null;){var l=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,l!==null&&(l.childLanes|=t)):l!==null&&(l.childLanes&t)!==t&&(l.childLanes|=t),e===n)break;e=e.return}}function Tr(e,t){Do=e,ma=Pr=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(vt=!0),e.firstContext=null)}function Dt(e){var t=e._currentValue;if(ma!==e)if(e={context:e,memoizedValue:t,next:null},Pr===null){if(Do===null)throw Error(o(308));Pr=e,Do.dependencies={lanes:0,firstContext:e}}else Pr=Pr.next=e;return t}var tr=null;function ya(e){tr===null?tr=[e]:tr.push(e)}function uc(e,t,n,l){var a=t.interleaved;return a===null?(n.next=n,ya(t)):(n.next=a.next,a.next=n),t.interleaved=n,fn(e,l)}function fn(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var Mn=!1;function wa(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function cc(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function pn(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function In(e,t,n){var l=e.updateQueue;if(l===null)return null;if(l=l.shared,(we&2)!==0){var a=l.pending;return a===null?t.next=t:(t.next=a.next,a.next=t),l.pending=t,fn(e,n)}return a=l.interleaved,a===null?(t.next=t,ya(l)):(t.next=a.next,a.next=t),l.interleaved=t,fn(e,n)}function _o(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var l=t.lanes;l&=e.pendingLanes,n|=l,t.lanes=n,ji(e,n)}}function dc(e,t){var n=e.updateQueue,l=e.alternate;if(l!==null&&(l=l.updateQueue,n===l)){var a=null,s=null;if(n=n.firstBaseUpdate,n!==null){do{var f={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};s===null?a=s=f:s=s.next=f,n=n.next}while(n!==null);s===null?a=s=t:s=s.next=t}else a=s=t;n={baseState:l.baseState,firstBaseUpdate:a,lastBaseUpdate:s,shared:l.shared,effects:l.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Lo(e,t,n,l){var a=e.updateQueue;Mn=!1;var s=a.firstBaseUpdate,f=a.lastBaseUpdate,g=a.shared.pending;if(g!==null){a.shared.pending=null;var w=g,b=w.next;w.next=null,f===null?s=b:f.next=b,f=w;var M=e.alternate;M!==null&&(M=M.updateQueue,g=M.lastBaseUpdate,g!==f&&(g===null?M.firstBaseUpdate=b:g.next=b,M.lastBaseUpdate=w))}if(s!==null){var A=a.baseState;f=0,M=b=w=null,g=s;do{var z=g.lane,H=g.eventTime;if((l&z)===z){M!==null&&(M=M.next={eventTime:H,lane:0,tag:g.tag,payload:g.payload,callback:g.callback,next:null});e:{var Q=e,Z=g;switch(z=t,H=n,Z.tag){case 1:if(Q=Z.payload,typeof Q=="function"){A=Q.call(H,A,z);break e}A=Q;break e;case 3:Q.flags=Q.flags&-65537|128;case 0:if(Q=Z.payload,z=typeof Q=="function"?Q.call(H,A,z):Q,z==null)break e;A=U({},A,z);break e;case 2:Mn=!0}}g.callback!==null&&g.lane!==0&&(e.flags|=64,z=a.effects,z===null?a.effects=[g]:z.push(g))}else H={eventTime:H,lane:z,tag:g.tag,payload:g.payload,callback:g.callback,next:null},M===null?(b=M=H,w=A):M=M.next=H,f|=z;if(g=g.next,g===null){if(g=a.shared.pending,g===null)break;z=g,g=z.next,z.next=null,a.lastBaseUpdate=z,a.shared.pending=null}}while(!0);if(M===null&&(w=A),a.baseState=w,a.firstBaseUpdate=b,a.lastBaseUpdate=M,t=a.shared.interleaved,t!==null){a=t;do f|=a.lane,a=a.next;while(a!==t)}else s===null&&(a.shared.lanes=0);lr|=f,e.lanes=f,e.memoizedState=A}}function fc(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var l=Ea.transition;Ea.transition={};try{e(!1),t()}finally{Ce=n,Ea.transition=l}}function _c(){return _t().memoizedState}function Sm(e,t,n){var l=Wn(e);if(n={lane:l,action:n,hasEagerState:!1,eagerState:null,next:null},Lc(e))jc(t,n);else if(n=uc(e,t,n,l),n!==null){var a=ct();Qt(n,e,l,a),zc(n,t,l)}}function Cm(e,t,n){var l=Wn(e),a={lane:l,action:n,hasEagerState:!1,eagerState:null,next:null};if(Lc(e))jc(t,a);else{var s=e.alternate;if(e.lanes===0&&(s===null||s.lanes===0)&&(s=t.lastRenderedReducer,s!==null))try{var f=t.lastRenderedState,g=s(f,n);if(a.hasEagerState=!0,a.eagerState=g,$t(g,f)){var w=t.interleaved;w===null?(a.next=a,ya(t)):(a.next=w.next,w.next=a),t.interleaved=a;return}}catch{}finally{}n=uc(e,t,a,l),n!==null&&(a=ct(),Qt(n,e,l,a),zc(n,t,l))}}function Lc(e){var t=e.alternate;return e===Ie||t!==null&&t===Ie}function jc(e,t){kl=Mo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function zc(e,t,n){if((n&4194240)!==0){var l=t.lanes;l&=e.pendingLanes,n|=l,t.lanes=n,ji(e,n)}}var Ao={readContext:Dt,useCallback:lt,useContext:lt,useEffect:lt,useImperativeHandle:lt,useInsertionEffect:lt,useLayoutEffect:lt,useMemo:lt,useReducer:lt,useRef:lt,useState:lt,useDebugValue:lt,useDeferredValue:lt,useTransition:lt,useMutableSource:lt,useSyncExternalStore:lt,useId:lt,unstable_isNewReconciler:!1},Em={readContext:Dt,useCallback:function(e,t){return en().memoizedState=[e,t===void 0?null:t],e},useContext:Dt,useEffect:Cc,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Io(4194308,4,Rc.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Io(4194308,4,e,t)},useInsertionEffect:function(e,t){return Io(4,2,e,t)},useMemo:function(e,t){var n=en();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var l=en();return t=n!==void 0?n(t):t,l.memoizedState=l.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},l.queue=e,e=e.dispatch=Sm.bind(null,Ie,e),[l.memoizedState,e]},useRef:function(e){var t=en();return e={current:e},t.memoizedState=e},useState:kc,useDebugValue:_a,useDeferredValue:function(e){return en().memoizedState=e},useTransition:function(){var e=kc(!1),t=e[0];return e=km.bind(null,e[1]),en().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var l=Ie,a=en();if(Le){if(n===void 0)throw Error(o(407));n=n()}else{if(n=t(),Ke===null)throw Error(o(349));(rr&30)!==0||gc(l,t,n)}a.memoizedState=n;var s={value:n,getSnapshot:t};return a.queue=s,Cc(yc.bind(null,l,s,e),[e]),l.flags|=2048,El(9,vc.bind(null,l,s,n,t),void 0,null),n},useId:function(){var e=en(),t=Ke.identifierPrefix;if(Le){var n=dn,l=cn;n=(l&~(1<<32-Bt(l)-1)).toString(32)+n,t=":"+t+"R"+n,n=Sl++,0<\/script>",e=e.removeChild(e.firstChild)):typeof l.is=="string"?e=f.createElement(n,{is:l.is}):(e=f.createElement(n),n==="select"&&(f=e,l.multiple?f.multiple=!0:l.size&&(f.size=l.size))):e=f.createElementNS(e,n),e[Zt]=t,e[hl]=l,ed(e,t,!1,!1),t.stateNode=e;e:{switch(f=Kr(n,l),n){case"dialog":Te("cancel",e),Te("close",e),a=l;break;case"iframe":case"object":case"embed":Te("load",e),a=l;break;case"video":case"audio":for(a=0;azr&&(t.flags|=128,l=!0,Nl(s,!1),t.lanes=4194304)}else{if(!l)if(e=jo(f),e!==null){if(t.flags|=128,l=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Nl(s,!0),s.tail===null&&s.tailMode==="hidden"&&!f.alternate&&!Le)return ot(t),null}else 2*Fe()-s.renderingStartTime>zr&&n!==1073741824&&(t.flags|=128,l=!0,Nl(s,!1),t.lanes=4194304);s.isBackwards?(f.sibling=t.child,t.child=f):(n=s.last,n!==null?n.sibling=f:t.child=f,s.last=f)}return s.tail!==null?(t=s.tail,s.rendering=t,s.tail=t.sibling,s.renderingStartTime=Fe(),t.sibling=null,n=Me.current,Pe(Me,l?n&1|2:n&1),t):(ot(t),null);case 22:case 23:return ts(),l=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==l&&(t.flags|=8192),l&&(t.mode&1)!==0?(Nt&1073741824)!==0&&(ot(t),t.subtreeFlags&6&&(t.flags|=8192)):ot(t),null;case 24:return null;case 25:return null}throw Error(o(156,t.tag))}function Lm(e,t){switch(ca(t),t.tag){case 1:return gt(t.type)&&So(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Dr(),De(ht),De(rt),Ca(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return ka(t),null;case 13:if(De(Me),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(o(340));Rr()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return De(Me),null;case 4:return Dr(),null;case 10:return ga(t.type._context),null;case 22:case 23:return ts(),null;case 24:return null;default:return null}}var $o=!1,it=!1,jm=typeof WeakSet=="function"?WeakSet:Set,G=null;function Lr(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(l){Ae(e,t,l)}else n.current=null}function Ua(e,t,n){try{n()}catch(l){Ae(e,t,l)}}var rd=!1;function zm(e,t){if(ta=ao,e=Mu(),Qi(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var l=n.getSelection&&n.getSelection();if(l&&l.rangeCount!==0){n=l.anchorNode;var a=l.anchorOffset,s=l.focusNode;l=l.focusOffset;try{n.nodeType,s.nodeType}catch{n=null;break e}var f=0,g=-1,w=-1,b=0,M=0,A=e,z=null;t:for(;;){for(var H;A!==n||a!==0&&A.nodeType!==3||(g=f+a),A!==s||l!==0&&A.nodeType!==3||(w=f+l),A.nodeType===3&&(f+=A.nodeValue.length),(H=A.firstChild)!==null;)z=A,A=H;for(;;){if(A===e)break t;if(z===n&&++b===a&&(g=f),z===s&&++M===l&&(w=f),(H=A.nextSibling)!==null)break;A=z,z=A.parentNode}A=H}n=g===-1||w===-1?null:{start:g,end:w}}else n=null}n=n||{start:0,end:0}}else n=null;for(na={focusedElem:e,selectionRange:n},ao=!1,G=t;G!==null;)if(t=G,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,G=e;else for(;G!==null;){t=G;try{var Q=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(Q!==null){var Z=Q.memoizedProps,We=Q.memoizedState,N=t.stateNode,x=N.getSnapshotBeforeUpdate(t.elementType===t.type?Z:Ht(t.type,Z),We);N.__reactInternalSnapshotBeforeUpdate=x}break;case 3:var R=t.stateNode.containerInfo;R.nodeType===1?R.textContent="":R.nodeType===9&&R.documentElement&&R.removeChild(R.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(o(163))}}catch(B){Ae(t,t.return,B)}if(e=t.sibling,e!==null){e.return=t.return,G=e;break}G=t.return}return Q=rd,rd=!1,Q}function Rl(e,t,n){var l=t.updateQueue;if(l=l!==null?l.lastEffect:null,l!==null){var a=l=l.next;do{if((a.tag&e)===e){var s=a.destroy;a.destroy=void 0,s!==void 0&&Ua(t,n,s)}a=a.next}while(a!==l)}}function Uo(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var l=n.create;n.destroy=l()}n=n.next}while(n!==t)}}function Ha(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function ld(e){var t=e.alternate;t!==null&&(e.alternate=null,ld(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Zt],delete t[hl],delete t[ia],delete t[gm],delete t[vm])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function od(e){return e.tag===5||e.tag===3||e.tag===4}function id(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||od(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Va(e,t,n){var l=e.tag;if(l===5||l===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=xo));else if(l!==4&&(e=e.child,e!==null))for(Va(e,t,n),e=e.sibling;e!==null;)Va(e,t,n),e=e.sibling}function Ga(e,t,n){var l=e.tag;if(l===5||l===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(l!==4&&(e=e.child,e!==null))for(Ga(e,t,n),e=e.sibling;e!==null;)Ga(e,t,n),e=e.sibling}var Je=null,Vt=!1;function On(e,t,n){for(n=n.child;n!==null;)ad(e,t,n),n=n.sibling}function ad(e,t,n){if(Jt&&typeof Jt.onCommitFiberUnmount=="function")try{Jt.onCommitFiberUnmount(to,n)}catch{}switch(n.tag){case 5:it||Lr(n,t);case 6:var l=Je,a=Vt;Je=null,On(e,t,n),Je=l,Vt=a,Je!==null&&(Vt?(e=Je,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Je.removeChild(n.stateNode));break;case 18:Je!==null&&(Vt?(e=Je,n=n.stateNode,e.nodeType===8?oa(e.parentNode,n):e.nodeType===1&&oa(e,n),ll(e)):oa(Je,n.stateNode));break;case 4:l=Je,a=Vt,Je=n.stateNode.containerInfo,Vt=!0,On(e,t,n),Je=l,Vt=a;break;case 0:case 11:case 14:case 15:if(!it&&(l=n.updateQueue,l!==null&&(l=l.lastEffect,l!==null))){a=l=l.next;do{var s=a,f=s.destroy;s=s.tag,f!==void 0&&((s&2)!==0||(s&4)!==0)&&Ua(n,t,f),a=a.next}while(a!==l)}On(e,t,n);break;case 1:if(!it&&(Lr(n,t),l=n.stateNode,typeof l.componentWillUnmount=="function"))try{l.props=n.memoizedProps,l.state=n.memoizedState,l.componentWillUnmount()}catch(g){Ae(n,t,g)}On(e,t,n);break;case 21:On(e,t,n);break;case 22:n.mode&1?(it=(l=it)||n.memoizedState!==null,On(e,t,n),it=l):On(e,t,n);break;default:On(e,t,n)}}function sd(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new jm),t.forEach(function(l){var a=Um.bind(null,e,l);n.has(l)||(n.add(l),l.then(a,a))})}}function Gt(e,t){var n=t.deletions;if(n!==null)for(var l=0;la&&(a=f),l&=~s}if(l=a,l=Fe()-l,l=(120>l?120:480>l?480:1080>l?1080:1920>l?1920:3e3>l?3e3:4320>l?4320:1960*Im(l/1960))-l,10e?16:e,Fn===null)var l=!1;else{if(e=Fn,Fn=null,Ko=0,(we&6)!==0)throw Error(o(331));var a=we;for(we|=4,G=e.current;G!==null;){var s=G,f=s.child;if((G.flags&16)!==0){var g=s.deletions;if(g!==null){for(var w=0;wFe()-Ya?ir(e,0):Ka|=n),wt(e,t)}function kd(e,t){t===0&&((e.mode&1)===0?t=1:(t=ro,ro<<=1,(ro&130023424)===0&&(ro=4194304)));var n=ct();e=fn(e,t),e!==null&&(qr(e,t,n),wt(e,n))}function $m(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),kd(e,n)}function Um(e,t){var n=0;switch(e.tag){case 13:var l=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:l=e.stateNode;break;default:throw Error(o(314))}l!==null&&l.delete(t),kd(e,n)}var Sd;Sd=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||ht.current)vt=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return vt=!1,Dm(e,t,n);vt=(e.flags&131072)!==0}else vt=!1,Le&&(t.flags&1048576)!==0&&tc(t,Ro,t.index);switch(t.lanes=0,t.tag){case 2:var l=t.type;Bo(e,t),e=t.pendingProps;var a=Cr(t,rt.current);Tr(t,n),a=Ra(null,t,l,e,a,n);var s=ba();return t.flags|=1,typeof a=="object"&&a!==null&&typeof a.render=="function"&&a.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,gt(l)?(s=!0,Co(t)):s=!1,t.memoizedState=a.state!==null&&a.state!==void 0?a.state:null,wa(t),a.updater=Fo,t.stateNode=a,a._reactInternals=t,ja(t,l,e,n),t=Oa(null,t,l,!0,s,n)):(t.tag=0,Le&&s&&ua(t),ut(null,t,a,n),t=t.child),t;case 16:l=t.elementType;e:{switch(Bo(e,t),e=t.pendingProps,a=l._init,l=a(l._payload),t.type=l,a=t.tag=Vm(l),e=Ht(l,e),a){case 0:t=Ia(null,t,l,e,n);break e;case 1:t=Kc(null,t,l,e,n);break e;case 11:t=Uc(null,t,l,e,n);break e;case 14:t=Hc(null,t,l,Ht(l.type,e),n);break e}throw Error(o(306,l,""))}return t;case 0:return l=t.type,a=t.pendingProps,a=t.elementType===l?a:Ht(l,a),Ia(e,t,l,a,n);case 1:return l=t.type,a=t.pendingProps,a=t.elementType===l?a:Ht(l,a),Kc(e,t,l,a,n);case 3:e:{if(Yc(t),e===null)throw Error(o(387));l=t.pendingProps,s=t.memoizedState,a=s.element,cc(e,t),Lo(t,l,null,n);var f=t.memoizedState;if(l=f.element,s.isDehydrated)if(s={element:l,isDehydrated:!1,cache:f.cache,pendingSuspenseBoundaries:f.pendingSuspenseBoundaries,transitions:f.transitions},t.updateQueue.baseState=s,t.memoizedState=s,t.flags&256){a=_r(Error(o(423)),t),t=Xc(e,t,l,n,a);break e}else if(l!==a){a=_r(Error(o(424)),t),t=Xc(e,t,l,n,a);break e}else for(Et=_n(t.stateNode.containerInfo.firstChild),Ct=t,Le=!0,Ut=null,n=sc(t,null,l,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Rr(),l===a){t=mn(e,t,n);break e}ut(e,t,l,n)}t=t.child}return t;case 5:return pc(t),e===null&&fa(t),l=t.type,a=t.pendingProps,s=e!==null?e.memoizedProps:null,f=a.children,ra(l,a)?f=null:s!==null&&ra(l,s)&&(t.flags|=32),Qc(e,t),ut(e,t,f,n),t.child;case 6:return e===null&&fa(t),null;case 13:return Jc(e,t,n);case 4:return xa(t,t.stateNode.containerInfo),l=t.pendingProps,e===null?t.child=br(t,null,l,n):ut(e,t,l,n),t.child;case 11:return l=t.type,a=t.pendingProps,a=t.elementType===l?a:Ht(l,a),Uc(e,t,l,a,n);case 7:return ut(e,t,t.pendingProps,n),t.child;case 8:return ut(e,t,t.pendingProps.children,n),t.child;case 12:return ut(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(l=t.type._context,a=t.pendingProps,s=t.memoizedProps,f=a.value,Pe(To,l._currentValue),l._currentValue=f,s!==null)if($t(s.value,f)){if(s.children===a.children&&!ht.current){t=mn(e,t,n);break e}}else for(s=t.child,s!==null&&(s.return=t);s!==null;){var g=s.dependencies;if(g!==null){f=s.child;for(var w=g.firstContext;w!==null;){if(w.context===l){if(s.tag===1){w=pn(-1,n&-n),w.tag=2;var b=s.updateQueue;if(b!==null){b=b.shared;var M=b.pending;M===null?w.next=w:(w.next=M.next,M.next=w),b.pending=w}}s.lanes|=n,w=s.alternate,w!==null&&(w.lanes|=n),va(s.return,n,t),g.lanes|=n;break}w=w.next}}else if(s.tag===10)f=s.type===t.type?null:s.child;else if(s.tag===18){if(f=s.return,f===null)throw Error(o(341));f.lanes|=n,g=f.alternate,g!==null&&(g.lanes|=n),va(f,n,t),f=s.sibling}else f=s.child;if(f!==null)f.return=s;else for(f=s;f!==null;){if(f===t){f=null;break}if(s=f.sibling,s!==null){s.return=f.return,f=s;break}f=f.return}s=f}ut(e,t,a.children,n),t=t.child}return t;case 9:return a=t.type,l=t.pendingProps.children,Tr(t,n),a=Dt(a),l=l(a),t.flags|=1,ut(e,t,l,n),t.child;case 14:return l=t.type,a=Ht(l,t.pendingProps),a=Ht(l.type,a),Hc(e,t,l,a,n);case 15:return Vc(e,t,t.type,t.pendingProps,n);case 17:return l=t.type,a=t.pendingProps,a=t.elementType===l?a:Ht(l,a),Bo(e,t),t.tag=1,gt(l)?(e=!0,Co(t)):e=!1,Tr(t,n),Ic(t,l,a),ja(t,l,a,n),Oa(null,t,l,!0,e,n);case 19:return qc(e,t,n);case 22:return Gc(e,t,n)}throw Error(o(156,t.tag))};function Cd(e,t){return nu(e,t)}function Hm(e,t,n,l){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=l,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function jt(e,t,n,l){return new Hm(e,t,n,l)}function rs(e){return e=e.prototype,!(!e||!e.isReactComponent)}function Vm(e){if(typeof e=="function")return rs(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Ee)return 11;if(e===Be)return 14}return 2}function $n(e,t){var n=e.alternate;return n===null?(n=jt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Zo(e,t,n,l,a,s){var f=2;if(l=e,typeof e=="function")rs(e)&&(f=1);else if(typeof e=="string")f=5;else e:switch(e){case V:return sr(n.children,a,s,t);case O:f=8,a|=8;break;case X:return e=jt(12,n,t,a|2),e.elementType=X,e.lanes=s,e;case be:return e=jt(13,n,t,a),e.elementType=be,e.lanes=s,e;case _e:return e=jt(19,n,t,a),e.elementType=_e,e.lanes=s,e;case fe:return qo(n,a,s,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case ae:f=10;break e;case de:f=9;break e;case Ee:f=11;break e;case Be:f=14;break e;case Ne:f=16,l=null;break e}throw Error(o(130,e==null?e:typeof e,""))}return t=jt(f,n,t,a),t.elementType=e,t.type=l,t.lanes=s,t}function sr(e,t,n,l){return e=jt(7,e,l,t),e.lanes=n,e}function qo(e,t,n,l){return e=jt(22,e,l,t),e.elementType=fe,e.lanes=n,e.stateNode={isHidden:!1},e}function ls(e,t,n){return e=jt(6,e,null,t),e.lanes=n,e}function os(e,t,n){return t=jt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Gm(e,t,n,l,a){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Li(0),this.expirationTimes=Li(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Li(0),this.identifierPrefix=l,this.onRecoverableError=a,this.mutableSourceEagerHydrationData=null}function is(e,t,n,l,a,s,f,g,w){return e=new Gm(e,t,n,g,w),t===1?(t=1,s===!0&&(t|=8)):t=0,s=jt(3,null,null,t),e.current=s,s.stateNode=e,s.memoizedState={element:l,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},wa(s),e}function Qm(e,t,n){var l=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(r)}catch(i){console.error(i)}}return r(),fs.exports=lh(),fs.exports}var Od;function oh(){if(Od)return ii;Od=1;var r=df();return ii.createRoot=r.createRoot,ii.hydrateRoot=r.hydrateRoot,ii}var ih=oh();const ah=cf(ih);/** * react-router v7.8.0 * * Copyright (c) Remix Software Inc. @@ -46,15 +46,13 @@ Error generating stack: `+a.message+` * LICENSE.md file in the root directory of this source tree. * * @license MIT - */var Ad="popstate";function ah(r={}){function i(u,c){let{pathname:d,search:p,hash:h}=u.location;return Ra("",{pathname:d,search:p,hash:h},c.state&&c.state.usr||null,c.state&&c.state.key||"default")}function o(u,c){return typeof c=="string"?c:Al(c)}return ch(i,o,null,r)}function Oe(r,i){if(r===!1||r===null||typeof r>"u")throw new Error(i)}function nn(r,i){if(!r){typeof console<"u"&&console.warn(i);try{throw new Error(i)}catch{}}}function uh(){return Math.random().toString(36).substring(2,10)}function Fd(r,i){return{usr:r.state,key:r.key,idx:i}}function Ra(r,i,o=null,u){return{pathname:typeof r=="string"?r:r.pathname,search:"",hash:"",...typeof i=="string"?Ar(i):i,state:o,key:i&&i.key||u||uh()}}function Al({pathname:r="/",search:i="",hash:o=""}){return i&&i!=="?"&&(r+=i.charAt(0)==="?"?i:"?"+i),o&&o!=="#"&&(r+=o.charAt(0)==="#"?o:"#"+o),r}function Ar(r){let i={};if(r){let o=r.indexOf("#");o>=0&&(i.hash=r.substring(o),r=r.substring(0,o));let u=r.indexOf("?");u>=0&&(i.search=r.substring(u),r=r.substring(0,u)),r&&(i.pathname=r)}return i}function ch(r,i,o,u={}){let{window:c=document.defaultView,v5Compat:d=!1}=u,p=c.history,h="POP",m=null,v=k();v==null&&(v=0,p.replaceState({...p.state,idx:v},""));function k(){return(p.state||{idx:null}).idx}function S(){h="POP";let _=k(),M=_==null?null:_-v;v=_,m&&m({action:h,location:T.location,delta:M})}function P(_,M){h="PUSH";let W=Ra(T.location,_,M);v=k()+1;let B=Fd(W,v),q=T.createHref(W);try{p.pushState(B,"",q)}catch(re){if(re instanceof DOMException&&re.name==="DataCloneError")throw re;c.location.assign(q)}d&&m&&m({action:h,location:T.location,delta:1})}function j(_,M){h="REPLACE";let W=Ra(T.location,_,M);v=k();let B=Fd(W,v),q=T.createHref(W);p.replaceState(B,"",q),d&&m&&m({action:h,location:T.location,delta:0})}function F(_){return dh(_)}let T={get action(){return h},get location(){return r(c,p)},listen(_){if(m)throw new Error("A history only accepts one active listener");return c.addEventListener(Ad,S),m=_,()=>{c.removeEventListener(Ad,S),m=null}},createHref(_){return i(c,_)},createURL:F,encodeLocation(_){let M=F(_);return{pathname:M.pathname,search:M.search,hash:M.hash}},push:P,replace:j,go(_){return p.go(_)}};return T}function dh(r,i=!1){let o="http://localhost";typeof window<"u"&&(o=window.location.origin!=="null"?window.location.origin:window.location.href),Oe(o,"No window.location.(origin|href) available to create URL");let u=typeof r=="string"?r:Al(r);return u=u.replace(/ $/,"%20"),!i&&u.startsWith("//")&&(u=o+u),new URL(u,o)}function ff(r,i,o="/"){return fh(r,i,o,!1)}function fh(r,i,o,u){let c=typeof i=="string"?Ar(i):i,d=yn(c.pathname||"/",o);if(d==null)return null;let p=pf(r);ph(p);let h=null;for(let m=0;h==null&&m{let m={relativePath:h===void 0?d.path||"":h,caseSensitive:d.caseSensitive===!0,childrenIndex:p,route:d};m.relativePath.startsWith("/")&&(Oe(m.relativePath.startsWith(u),`Absolute route path "${m.relativePath}" nested under path "${u}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),m.relativePath=m.relativePath.slice(u.length));let v=vn([u,m.relativePath]),k=o.concat(m);d.children&&d.children.length>0&&(Oe(d.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${v}".`),pf(d.children,i,k,v)),!(d.path==null&&!d.index)&&i.push({path:v,score:xh(v,d.index),routesMeta:k})};return r.forEach((d,p)=>{var h;if(d.path===""||!((h=d.path)!=null&&h.includes("?")))c(d,p);else for(let m of mf(d.path))c(d,p,m)}),i}function mf(r){let i=r.split("/");if(i.length===0)return[];let[o,...u]=i,c=o.endsWith("?"),d=o.replace(/\?$/,"");if(u.length===0)return c?[d,""]:[d];let p=mf(u.join("/")),h=[];return h.push(...p.map(m=>m===""?d:[d,m].join("/"))),c&&h.push(...p),h.map(m=>r.startsWith("/")&&m===""?"/":m)}function ph(r){r.sort((i,o)=>i.score!==o.score?o.score-i.score:kh(i.routesMeta.map(u=>u.childrenIndex),o.routesMeta.map(u=>u.childrenIndex)))}var mh=/^:[\w-]+$/,hh=3,gh=2,vh=1,yh=10,wh=-2,Wd=r=>r==="*";function xh(r,i){let o=r.split("/"),u=o.length;return o.some(Wd)&&(u+=wh),i&&(u+=gh),o.filter(c=>!Wd(c)).reduce((c,d)=>c+(mh.test(d)?hh:d===""?vh:yh),u)}function kh(r,i){return r.length===i.length&&r.slice(0,-1).every((u,c)=>u===i[c])?r[r.length-1]-i[i.length-1]:0}function Sh(r,i,o=!1){let{routesMeta:u}=r,c={},d="/",p=[];for(let h=0;h{if(k==="*"){let F=h[P]||"";p=d.slice(0,d.length-F.length).replace(/(.)\/+$/,"$1")}const j=h[P];return S&&!j?v[k]=void 0:v[k]=(j||"").replace(/%2F/g,"/"),v},{}),pathname:d,pathnameBase:p,pattern:r}}function Ch(r,i=!1,o=!0){nn(r==="*"||!r.endsWith("*")||r.endsWith("/*"),`Route path "${r}" will be treated as if it were "${r.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${r.replace(/\*$/,"/*")}".`);let u=[],c="^"+r.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(p,h,m)=>(u.push({paramName:h,isOptional:m!=null}),m?"/?([^\\/]+)?":"/([^\\/]+)"));return r.endsWith("*")?(u.push({paramName:"*"}),c+=r==="*"||r==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):o?c+="\\/*$":r!==""&&r!=="/"&&(c+="(?:(?=\\/|$))"),[new RegExp(c,i?void 0:"i"),u]}function Eh(r){try{return r.split("/").map(i=>decodeURIComponent(i).replace(/\//g,"%2F")).join("/")}catch(i){return nn(!1,`The URL path "${r}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${i}).`),r}}function yn(r,i){if(i==="/")return r;if(!r.toLowerCase().startsWith(i.toLowerCase()))return null;let o=i.endsWith("/")?i.length-1:i.length,u=r.charAt(o);return u&&u!=="/"?null:r.slice(o)||"/"}function Nh(r,i="/"){let{pathname:o,search:u="",hash:c=""}=typeof r=="string"?Ar(r):r;return{pathname:o?o.startsWith("/")?o:Rh(o,i):i,search:Th(u),hash:Dh(c)}}function Rh(r,i){let o=i.replace(/\/+$/,"").split("/");return r.split("/").forEach(c=>{c===".."?o.length>1&&o.pop():c!=="."&&o.push(c)}),o.length>1?o.join("/"):"/"}function ga(r,i,o,u){return`Cannot include a '${r}' character in a manually specified \`to.${i}\` field [${JSON.stringify(u)}]. Please separate it out to the \`to.${o}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function bh(r){return r.filter((i,o)=>o===0||i.route.path&&i.route.path.length>0)}function hf(r){let i=bh(r);return i.map((o,u)=>u===i.length-1?o.pathname:o.pathnameBase)}function gf(r,i,o,u=!1){let c;typeof r=="string"?c=Ar(r):(c={...r},Oe(!c.pathname||!c.pathname.includes("?"),ga("?","pathname","search",c)),Oe(!c.pathname||!c.pathname.includes("#"),ga("#","pathname","hash",c)),Oe(!c.search||!c.search.includes("#"),ga("#","search","hash",c)));let d=r===""||c.pathname==="",p=d?"/":c.pathname,h;if(p==null)h=o;else{let S=i.length-1;if(!u&&p.startsWith("..")){let P=p.split("/");for(;P[0]==="..";)P.shift(),S-=1;c.pathname=P.join("/")}h=S>=0?i[S]:"/"}let m=Nh(c,h),v=p&&p!=="/"&&p.endsWith("/"),k=(d||p===".")&&o.endsWith("/");return!m.pathname.endsWith("/")&&(v||k)&&(m.pathname+="/"),m}var vn=r=>r.join("/").replace(/\/\/+/g,"/"),Ph=r=>r.replace(/\/+$/,"").replace(/^\/*/,"/"),Th=r=>!r||r==="?"?"":r.startsWith("?")?r:"?"+r,Dh=r=>!r||r==="#"?"":r.startsWith("#")?r:"#"+r;function _h(r){return r!=null&&typeof r.status=="number"&&typeof r.statusText=="string"&&typeof r.internal=="boolean"&&"data"in r}var vf=["POST","PUT","PATCH","DELETE"];new Set(vf);var Lh=["GET",...vf];new Set(Lh);var Fr=y.createContext(null);Fr.displayName="DataRouter";var xi=y.createContext(null);xi.displayName="DataRouterState";y.createContext(!1);var yf=y.createContext({isTransitioning:!1});yf.displayName="ViewTransition";var jh=y.createContext(new Map);jh.displayName="Fetchers";var zh=y.createContext(null);zh.displayName="Await";var rn=y.createContext(null);rn.displayName="Navigation";var Bl=y.createContext(null);Bl.displayName="Location";var xn=y.createContext({outlet:null,matches:[],isDataRoute:!1});xn.displayName="Route";var Oa=y.createContext(null);Oa.displayName="RouteError";function Mh(r,{relative:i}={}){Oe(Ul(),"useHref() may be used only in the context of a component.");let{basename:o,navigator:u}=y.useContext(rn),{hash:c,pathname:d,search:p}=Vl(r,{relative:i}),h=d;return o!=="/"&&(h=d==="/"?o:vn([o,d])),u.createHref({pathname:h,search:p,hash:c})}function Ul(){return y.useContext(Bl)!=null}function cr(){return Oe(Ul(),"useLocation() may be used only in the context of a component."),y.useContext(Bl).location}var wf="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function xf(r){y.useContext(rn).static||y.useLayoutEffect(r)}function Ih(){let{isDataRoute:r}=y.useContext(xn);return r?Yh():Oh()}function Oh(){Oe(Ul(),"useNavigate() may be used only in the context of a component.");let r=y.useContext(Fr),{basename:i,navigator:o}=y.useContext(rn),{matches:u}=y.useContext(xn),{pathname:c}=cr(),d=JSON.stringify(hf(u)),p=y.useRef(!1);return xf(()=>{p.current=!0}),y.useCallback((m,v={})=>{if(nn(p.current,wf),!p.current)return;if(typeof m=="number"){o.go(m);return}let k=gf(m,JSON.parse(d),c,v.relative==="path");r==null&&i!=="/"&&(k.pathname=k.pathname==="/"?i:vn([i,k.pathname])),(v.replace?o.replace:o.push)(k,v.state,v)},[i,o,d,c,r])}y.createContext(null);function Vl(r,{relative:i}={}){let{matches:o}=y.useContext(xn),{pathname:u}=cr(),c=JSON.stringify(hf(o));return y.useMemo(()=>gf(r,JSON.parse(c),u,i==="path"),[r,c,u,i])}function Ah(r,i){return kf(r,i)}function kf(r,i,o,u){var M;Oe(Ul(),"useRoutes() may be used only in the context of a component.");let{navigator:c}=y.useContext(rn),{matches:d}=y.useContext(xn),p=d[d.length-1],h=p?p.params:{},m=p?p.pathname:"/",v=p?p.pathnameBase:"/",k=p&&p.route;{let W=k&&k.path||"";Sf(m,!k||W.endsWith("*")||W.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${m}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. + */var Ad="popstate";function sh(r={}){function i(u,c){let{pathname:d,search:p,hash:h}=u.location;return Ns("",{pathname:d,search:p,hash:h},c.state&&c.state.usr||null,c.state&&c.state.key||"default")}function o(u,c){return typeof c=="string"?c:Al(c)}return ch(i,o,null,r)}function Oe(r,i){if(r===!1||r===null||typeof r>"u")throw new Error(i)}function nn(r,i){if(!r){typeof console<"u"&&console.warn(i);try{throw new Error(i)}catch{}}}function uh(){return Math.random().toString(36).substring(2,10)}function Fd(r,i){return{usr:r.state,key:r.key,idx:i}}function Ns(r,i,o=null,u){return{pathname:typeof r=="string"?r:r.pathname,search:"",hash:"",...typeof i=="string"?Ar(i):i,state:o,key:i&&i.key||u||uh()}}function Al({pathname:r="/",search:i="",hash:o=""}){return i&&i!=="?"&&(r+=i.charAt(0)==="?"?i:"?"+i),o&&o!=="#"&&(r+=o.charAt(0)==="#"?o:"#"+o),r}function Ar(r){let i={};if(r){let o=r.indexOf("#");o>=0&&(i.hash=r.substring(o),r=r.substring(0,o));let u=r.indexOf("?");u>=0&&(i.search=r.substring(u),r=r.substring(0,u)),r&&(i.pathname=r)}return i}function ch(r,i,o,u={}){let{window:c=document.defaultView,v5Compat:d=!1}=u,p=c.history,h="POP",m=null,v=k();v==null&&(v=0,p.replaceState({...p.state,idx:v},""));function k(){return(p.state||{idx:null}).idx}function C(){h="POP";let _=k(),I=_==null?null:_-v;v=_,m&&m({action:h,location:T.location,delta:I})}function P(_,I){h="PUSH";let W=Ns(T.location,_,I);v=k()+1;let $=Fd(W,v),q=T.createHref(W);try{p.pushState($,"",q)}catch(ne){if(ne instanceof DOMException&&ne.name==="DataCloneError")throw ne;c.location.assign(q)}d&&m&&m({action:h,location:T.location,delta:1})}function j(_,I){h="REPLACE";let W=Ns(T.location,_,I);v=k();let $=Fd(W,v),q=T.createHref(W);p.replaceState($,"",q),d&&m&&m({action:h,location:T.location,delta:0})}function F(_){return dh(_)}let T={get action(){return h},get location(){return r(c,p)},listen(_){if(m)throw new Error("A history only accepts one active listener");return c.addEventListener(Ad,C),m=_,()=>{c.removeEventListener(Ad,C),m=null}},createHref(_){return i(c,_)},createURL:F,encodeLocation(_){let I=F(_);return{pathname:I.pathname,search:I.search,hash:I.hash}},push:P,replace:j,go(_){return p.go(_)}};return T}function dh(r,i=!1){let o="http://localhost";typeof window<"u"&&(o=window.location.origin!=="null"?window.location.origin:window.location.href),Oe(o,"No window.location.(origin|href) available to create URL");let u=typeof r=="string"?r:Al(r);return u=u.replace(/ $/,"%20"),!i&&u.startsWith("//")&&(u=o+u),new URL(u,o)}function ff(r,i,o="/"){return fh(r,i,o,!1)}function fh(r,i,o,u){let c=typeof i=="string"?Ar(i):i,d=yn(c.pathname||"/",o);if(d==null)return null;let p=pf(r);ph(p);let h=null;for(let m=0;h==null&&m{let m={relativePath:h===void 0?d.path||"":h,caseSensitive:d.caseSensitive===!0,childrenIndex:p,route:d};m.relativePath.startsWith("/")&&(Oe(m.relativePath.startsWith(u),`Absolute route path "${m.relativePath}" nested under path "${u}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),m.relativePath=m.relativePath.slice(u.length));let v=vn([u,m.relativePath]),k=o.concat(m);d.children&&d.children.length>0&&(Oe(d.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${v}".`),pf(d.children,i,k,v)),!(d.path==null&&!d.index)&&i.push({path:v,score:xh(v,d.index),routesMeta:k})};return r.forEach((d,p)=>{var h;if(d.path===""||!((h=d.path)!=null&&h.includes("?")))c(d,p);else for(let m of mf(d.path))c(d,p,m)}),i}function mf(r){let i=r.split("/");if(i.length===0)return[];let[o,...u]=i,c=o.endsWith("?"),d=o.replace(/\?$/,"");if(u.length===0)return c?[d,""]:[d];let p=mf(u.join("/")),h=[];return h.push(...p.map(m=>m===""?d:[d,m].join("/"))),c&&h.push(...p),h.map(m=>r.startsWith("/")&&m===""?"/":m)}function ph(r){r.sort((i,o)=>i.score!==o.score?o.score-i.score:kh(i.routesMeta.map(u=>u.childrenIndex),o.routesMeta.map(u=>u.childrenIndex)))}var mh=/^:[\w-]+$/,hh=3,gh=2,vh=1,yh=10,wh=-2,Wd=r=>r==="*";function xh(r,i){let o=r.split("/"),u=o.length;return o.some(Wd)&&(u+=wh),i&&(u+=gh),o.filter(c=>!Wd(c)).reduce((c,d)=>c+(mh.test(d)?hh:d===""?vh:yh),u)}function kh(r,i){return r.length===i.length&&r.slice(0,-1).every((u,c)=>u===i[c])?r[r.length-1]-i[i.length-1]:0}function Sh(r,i,o=!1){let{routesMeta:u}=r,c={},d="/",p=[];for(let h=0;h{if(k==="*"){let F=h[P]||"";p=d.slice(0,d.length-F.length).replace(/(.)\/+$/,"$1")}const j=h[P];return C&&!j?v[k]=void 0:v[k]=(j||"").replace(/%2F/g,"/"),v},{}),pathname:d,pathnameBase:p,pattern:r}}function Ch(r,i=!1,o=!0){nn(r==="*"||!r.endsWith("*")||r.endsWith("/*"),`Route path "${r}" will be treated as if it were "${r.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${r.replace(/\*$/,"/*")}".`);let u=[],c="^"+r.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(p,h,m)=>(u.push({paramName:h,isOptional:m!=null}),m?"/?([^\\/]+)?":"/([^\\/]+)"));return r.endsWith("*")?(u.push({paramName:"*"}),c+=r==="*"||r==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):o?c+="\\/*$":r!==""&&r!=="/"&&(c+="(?:(?=\\/|$))"),[new RegExp(c,i?void 0:"i"),u]}function Eh(r){try{return r.split("/").map(i=>decodeURIComponent(i).replace(/\//g,"%2F")).join("/")}catch(i){return nn(!1,`The URL path "${r}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${i}).`),r}}function yn(r,i){if(i==="/")return r;if(!r.toLowerCase().startsWith(i.toLowerCase()))return null;let o=i.endsWith("/")?i.length-1:i.length,u=r.charAt(o);return u&&u!=="/"?null:r.slice(o)||"/"}function Nh(r,i="/"){let{pathname:o,search:u="",hash:c=""}=typeof r=="string"?Ar(r):r;return{pathname:o?o.startsWith("/")?o:Rh(o,i):i,search:Th(u),hash:Dh(c)}}function Rh(r,i){let o=i.replace(/\/+$/,"").split("/");return r.split("/").forEach(c=>{c===".."?o.length>1&&o.pop():c!=="."&&o.push(c)}),o.length>1?o.join("/"):"/"}function hs(r,i,o,u){return`Cannot include a '${r}' character in a manually specified \`to.${i}\` field [${JSON.stringify(u)}]. Please separate it out to the \`to.${o}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function bh(r){return r.filter((i,o)=>o===0||i.route.path&&i.route.path.length>0)}function hf(r){let i=bh(r);return i.map((o,u)=>u===i.length-1?o.pathname:o.pathnameBase)}function gf(r,i,o,u=!1){let c;typeof r=="string"?c=Ar(r):(c={...r},Oe(!c.pathname||!c.pathname.includes("?"),hs("?","pathname","search",c)),Oe(!c.pathname||!c.pathname.includes("#"),hs("#","pathname","hash",c)),Oe(!c.search||!c.search.includes("#"),hs("#","search","hash",c)));let d=r===""||c.pathname==="",p=d?"/":c.pathname,h;if(p==null)h=o;else{let C=i.length-1;if(!u&&p.startsWith("..")){let P=p.split("/");for(;P[0]==="..";)P.shift(),C-=1;c.pathname=P.join("/")}h=C>=0?i[C]:"/"}let m=Nh(c,h),v=p&&p!=="/"&&p.endsWith("/"),k=(d||p===".")&&o.endsWith("/");return!m.pathname.endsWith("/")&&(v||k)&&(m.pathname+="/"),m}var vn=r=>r.join("/").replace(/\/\/+/g,"/"),Ph=r=>r.replace(/\/+$/,"").replace(/^\/*/,"/"),Th=r=>!r||r==="?"?"":r.startsWith("?")?r:"?"+r,Dh=r=>!r||r==="#"?"":r.startsWith("#")?r:"#"+r;function _h(r){return r!=null&&typeof r.status=="number"&&typeof r.statusText=="string"&&typeof r.internal=="boolean"&&"data"in r}var vf=["POST","PUT","PATCH","DELETE"];new Set(vf);var Lh=["GET",...vf];new Set(Lh);var Fr=y.createContext(null);Fr.displayName="DataRouter";var xi=y.createContext(null);xi.displayName="DataRouterState";y.createContext(!1);var yf=y.createContext({isTransitioning:!1});yf.displayName="ViewTransition";var jh=y.createContext(new Map);jh.displayName="Fetchers";var zh=y.createContext(null);zh.displayName="Await";var rn=y.createContext(null);rn.displayName="Navigation";var $l=y.createContext(null);$l.displayName="Location";var xn=y.createContext({outlet:null,matches:[],isDataRoute:!1});xn.displayName="Route";var Is=y.createContext(null);Is.displayName="RouteError";function Mh(r,{relative:i}={}){Oe(Ul(),"useHref() may be used only in the context of a component.");let{basename:o,navigator:u}=y.useContext(rn),{hash:c,pathname:d,search:p}=Hl(r,{relative:i}),h=d;return o!=="/"&&(h=d==="/"?o:vn([o,d])),u.createHref({pathname:h,search:p,hash:c})}function Ul(){return y.useContext($l)!=null}function cr(){return Oe(Ul(),"useLocation() may be used only in the context of a component."),y.useContext($l).location}var wf="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function xf(r){y.useContext(rn).static||y.useLayoutEffect(r)}function Ih(){let{isDataRoute:r}=y.useContext(xn);return r?Yh():Oh()}function Oh(){Oe(Ul(),"useNavigate() may be used only in the context of a component.");let r=y.useContext(Fr),{basename:i,navigator:o}=y.useContext(rn),{matches:u}=y.useContext(xn),{pathname:c}=cr(),d=JSON.stringify(hf(u)),p=y.useRef(!1);return xf(()=>{p.current=!0}),y.useCallback((m,v={})=>{if(nn(p.current,wf),!p.current)return;if(typeof m=="number"){o.go(m);return}let k=gf(m,JSON.parse(d),c,v.relative==="path");r==null&&i!=="/"&&(k.pathname=k.pathname==="/"?i:vn([i,k.pathname])),(v.replace?o.replace:o.push)(k,v.state,v)},[i,o,d,c,r])}y.createContext(null);function Hl(r,{relative:i}={}){let{matches:o}=y.useContext(xn),{pathname:u}=cr(),c=JSON.stringify(hf(o));return y.useMemo(()=>gf(r,JSON.parse(c),u,i==="path"),[r,c,u,i])}function Ah(r,i){return kf(r,i)}function kf(r,i,o,u){var I;Oe(Ul(),"useRoutes() may be used only in the context of a component.");let{navigator:c}=y.useContext(rn),{matches:d}=y.useContext(xn),p=d[d.length-1],h=p?p.params:{},m=p?p.pathname:"/",v=p?p.pathnameBase:"/",k=p&&p.route;{let W=k&&k.path||"";Sf(m,!k||W.endsWith("*")||W.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${m}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. -Please change the parent to .`)}let S=cr(),P;if(i){let W=typeof i=="string"?Ar(i):i;Oe(v==="/"||((M=W.pathname)==null?void 0:M.startsWith(v)),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${v}" but pathname "${W.pathname}" was given in the \`location\` prop.`),P=W}else P=S;let j=P.pathname||"/",F=j;if(v!=="/"){let W=v.replace(/^\//,"").split("/");F="/"+j.replace(/^\//,"").split("/").slice(W.length).join("/")}let T=ff(r,{pathname:F});nn(k||T!=null,`No routes matched location "${P.pathname}${P.search}${P.hash}" `),nn(T==null||T[T.length-1].route.element!==void 0||T[T.length-1].route.Component!==void 0||T[T.length-1].route.lazy!==void 0,`Matched leaf route at location "${P.pathname}${P.search}${P.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let _=Uh(T&&T.map(W=>Object.assign({},W,{params:Object.assign({},h,W.params),pathname:vn([v,c.encodeLocation?c.encodeLocation(W.pathname).pathname:W.pathname]),pathnameBase:W.pathnameBase==="/"?v:vn([v,c.encodeLocation?c.encodeLocation(W.pathnameBase).pathname:W.pathnameBase])})),d,o,u);return i&&_?y.createElement(Bl.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...P},navigationType:"POP"}},_):_}function Fh(){let r=Kh(),i=_h(r)?`${r.status} ${r.statusText}`:r instanceof Error?r.message:JSON.stringify(r),o=r instanceof Error?r.stack:null,u="rgba(200,200,200, 0.5)",c={padding:"0.5rem",backgroundColor:u},d={padding:"2px 4px",backgroundColor:u},p=null;return console.error("Error handled by React Router default ErrorBoundary:",r),p=y.createElement(y.Fragment,null,y.createElement("p",null,"💿 Hey developer 👋"),y.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",y.createElement("code",{style:d},"ErrorBoundary")," or"," ",y.createElement("code",{style:d},"errorElement")," prop on your route.")),y.createElement(y.Fragment,null,y.createElement("h2",null,"Unexpected Application Error!"),y.createElement("h3",{style:{fontStyle:"italic"}},i),o?y.createElement("pre",{style:c},o):null,p)}var Wh=y.createElement(Fh,null),$h=class extends y.Component{constructor(r){super(r),this.state={location:r.location,revalidation:r.revalidation,error:r.error}}static getDerivedStateFromError(r){return{error:r}}static getDerivedStateFromProps(r,i){return i.location!==r.location||i.revalidation!=="idle"&&r.revalidation==="idle"?{error:r.error,location:r.location,revalidation:r.revalidation}:{error:r.error!==void 0?r.error:i.error,location:i.location,revalidation:r.revalidation||i.revalidation}}componentDidCatch(r,i){console.error("React Router caught the following error during render",r,i)}render(){return this.state.error!==void 0?y.createElement(xn.Provider,{value:this.props.routeContext},y.createElement(Oa.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function Bh({routeContext:r,match:i,children:o}){let u=y.useContext(Fr);return u&&u.static&&u.staticContext&&(i.route.errorElement||i.route.ErrorBoundary)&&(u.staticContext._deepestRenderedBoundaryId=i.route.id),y.createElement(xn.Provider,{value:r},o)}function Uh(r,i=[],o=null,u=null){if(r==null){if(!o)return null;if(o.errors)r=o.matches;else if(i.length===0&&!o.initialized&&o.matches.length>0)r=o.matches;else return null}let c=r,d=o==null?void 0:o.errors;if(d!=null){let m=c.findIndex(v=>v.route.id&&(d==null?void 0:d[v.route.id])!==void 0);Oe(m>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(d).join(",")}`),c=c.slice(0,Math.min(c.length,m+1))}let p=!1,h=-1;if(o)for(let m=0;m=0?c=c.slice(0,h+1):c=[c[0]];break}}}return c.reduceRight((m,v,k)=>{let S,P=!1,j=null,F=null;o&&(S=d&&v.route.id?d[v.route.id]:void 0,j=v.route.errorElement||Wh,p&&(h<0&&k===0?(Sf("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),P=!0,F=null):h===k&&(P=!0,F=v.route.hydrateFallbackElement||null)));let T=i.concat(c.slice(0,k+1)),_=()=>{let M;return S?M=j:P?M=F:v.route.Component?M=y.createElement(v.route.Component,null):v.route.element?M=v.route.element:M=m,y.createElement(Bh,{match:v,routeContext:{outlet:m,matches:T,isDataRoute:o!=null},children:M})};return o&&(v.route.ErrorBoundary||v.route.errorElement||k===0)?y.createElement($h,{location:o.location,revalidation:o.revalidation,component:j,error:S,children:_(),routeContext:{outlet:null,matches:T,isDataRoute:!0}}):_()},null)}function Aa(r){return`${r} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Vh(r){let i=y.useContext(Fr);return Oe(i,Aa(r)),i}function Hh(r){let i=y.useContext(xi);return Oe(i,Aa(r)),i}function Gh(r){let i=y.useContext(xn);return Oe(i,Aa(r)),i}function Fa(r){let i=Gh(r),o=i.matches[i.matches.length-1];return Oe(o.route.id,`${r} can only be used on routes that contain a unique "id"`),o.route.id}function Qh(){return Fa("useRouteId")}function Kh(){var u;let r=y.useContext(Oa),i=Hh("useRouteError"),o=Fa("useRouteError");return r!==void 0?r:(u=i.errors)==null?void 0:u[o]}function Yh(){let{router:r}=Vh("useNavigate"),i=Fa("useNavigate"),o=y.useRef(!1);return xf(()=>{o.current=!0}),y.useCallback(async(c,d={})=>{nn(o.current,wf),o.current&&(typeof c=="number"?r.navigate(c):await r.navigate(c,{fromRouteId:i,...d}))},[r,i])}var $d={};function Sf(r,i,o){!i&&!$d[r]&&($d[r]=!0,nn(!1,o))}y.memo(Xh);function Xh({routes:r,future:i,state:o}){return kf(r,void 0,o,i)}function ba(r){Oe(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function Jh({basename:r="/",children:i=null,location:o,navigationType:u="POP",navigator:c,static:d=!1}){Oe(!Ul(),"You cannot render a inside another . You should never have more than one in your app.");let p=r.replace(/^\/*/,"/"),h=y.useMemo(()=>({basename:p,navigator:c,static:d,future:{}}),[p,c,d]);typeof o=="string"&&(o=Ar(o));let{pathname:m="/",search:v="",hash:k="",state:S=null,key:P="default"}=o,j=y.useMemo(()=>{let F=yn(m,p);return F==null?null:{location:{pathname:F,search:v,hash:k,state:S,key:P},navigationType:u}},[p,m,v,k,S,P,u]);return nn(j!=null,` is not able to match the URL "${m}${v}${k}" because it does not start with the basename, so the won't render anything.`),j==null?null:y.createElement(rn.Provider,{value:h},y.createElement(Bl.Provider,{children:i,value:j}))}function Zh({children:r,location:i}){return Ah(Pa(r),i)}function Pa(r,i=[]){let o=[];return y.Children.forEach(r,(u,c)=>{if(!y.isValidElement(u))return;let d=[...i,c];if(u.type===y.Fragment){o.push.apply(o,Pa(u.props.children,d));return}Oe(u.type===ba,`[${typeof u.type=="string"?u.type:u.type.name}] is not a component. All component children of must be a or `),Oe(!u.props.index||!u.props.children,"An index route cannot have child routes.");let p={id:u.props.id||d.join("-"),caseSensitive:u.props.caseSensitive,element:u.props.element,Component:u.props.Component,index:u.props.index,path:u.props.path,loader:u.props.loader,action:u.props.action,hydrateFallbackElement:u.props.hydrateFallbackElement,HydrateFallback:u.props.HydrateFallback,errorElement:u.props.errorElement,ErrorBoundary:u.props.ErrorBoundary,hasErrorBoundary:u.props.hasErrorBoundary===!0||u.props.ErrorBoundary!=null||u.props.errorElement!=null,shouldRevalidate:u.props.shouldRevalidate,handle:u.props.handle,lazy:u.props.lazy};u.props.children&&(p.children=Pa(u.props.children,d)),o.push(p)}),o}var ci="get",di="application/x-www-form-urlencoded";function ki(r){return r!=null&&typeof r.tagName=="string"}function qh(r){return ki(r)&&r.tagName.toLowerCase()==="button"}function eg(r){return ki(r)&&r.tagName.toLowerCase()==="form"}function tg(r){return ki(r)&&r.tagName.toLowerCase()==="input"}function ng(r){return!!(r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)}function rg(r,i){return r.button===0&&(!i||i==="_self")&&!ng(r)}var si=null;function lg(){if(si===null)try{new FormData(document.createElement("form"),0),si=!1}catch{si=!0}return si}var og=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function va(r){return r!=null&&!og.has(r)?(nn(!1,`"${r}" is not a valid \`encType\` for \`\`/\`\` and will default to "${di}"`),null):r}function ig(r,i){let o,u,c,d,p;if(eg(r)){let h=r.getAttribute("action");u=h?yn(h,i):null,o=r.getAttribute("method")||ci,c=va(r.getAttribute("enctype"))||di,d=new FormData(r)}else if(qh(r)||tg(r)&&(r.type==="submit"||r.type==="image")){let h=r.form;if(h==null)throw new Error('Cannot submit a +
+ )} +
+ ); +}; diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index 488b303a75..1ea54f8342 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -2,18 +2,20 @@ import React from "react"; import { OrientationGuard } from "../components/OrientationGuard"; import { GameBoard } from "../components/GameBoard"; +import { CategorySelector } from "../components/CategorySelector"; import { Heading, DotPattern } from "../ui"; import { useGame } from "../store/game"; export default function GameMode() { + const { teams, currentTeamIndex, selectedCategory, phase } = useGame(); + const categoryLabel = "Category"; - const categoryValue = "Animals"; + const categoryValue = selectedCategory?.question || "Select Category"; const roundLabel = "Round"; const roundValue = "1"; const modeLabel = "Mode"; const modeValue = "Timeline"; - const { teams, currentTeamIndex } = useGame(); const scoreA = teams[0]?.timeline.length ?? 0; const scoreB = teams[1]?.timeline.length ?? 0; @@ -21,6 +23,46 @@ export default function GameMode() { "px-2 py-1 rounded-full bg-primary/10 border border-border text-xs tracking-wider uppercase text-muted-foreground"; const dot = "inline-block w-2 h-2 rounded-sm bg-primary shadow-soft"; + // If no category is selected or we're in setup phase, show category selection + if (!selectedCategory || phase === "SETUP") { + return ( +
+ + +
+
+ +
+ +
+
+
+ Choose Your Game +
+ + Select a Category + +

+ Choose a category to start playing the timeline game. +

+
+ +
+ +
+
+
+
+ ); + } + return (
@@ -91,11 +133,11 @@ export default function GameMode() { letterSpacing: "-0.02em", }} > - Which animal weighs the most? + {selectedCategory.question}

- Arrange cards on the timeline and place the heaviest at the right - end. + Arrange cards on the timeline and place the highest value at the right end. + Unit: {selectedCategory.unit}

diff --git a/frontend/src/services/api.ts b/frontend/src/services/api.ts new file mode 100644 index 0000000000..bf4796a634 --- /dev/null +++ b/frontend/src/services/api.ts @@ -0,0 +1,86 @@ +import { config } from '../config/environment'; +import type { GameItem, GameCategory } from '../types/game'; + +// API service for communicating with the backend +class ApiService { + private baseUrl: string; + + constructor() { + this.baseUrl = config.backendUrl; + } + + private async request(endpoint: string, options?: RequestInit): Promise { + const url = `${this.baseUrl}/api/quiz${endpoint}`; + + try { + const response = await fetch(url, { + headers: { + 'Content-Type': 'application/json', + ...options?.headers, + }, + ...options, + }); + + if (!response.ok) { + throw new Error(`HTTP error! status: ${response.status}`); + } + + const data = await response.json(); + + if (!data.success) { + throw new Error(data.error?.message || 'API request failed'); + } + + return data.data; + } catch (error) { + console.error('API request failed:', error); + throw error; + } + } + + // Fetch all categories + async getCategories(): Promise { + const categories = await this.request('/categories'); + return categories.map(cat => ({ + _id: cat._id, + id: cat.id, + question: cat.question || cat.description || `Which ${cat.name} is the most?`, + unit: cat.unit, + source: cat.source, + })); + } + + // Fetch items for a specific category (without values, for quiz mode) + async getItemsByCategory(categoryId: string): Promise { + const response = await this.request('/items/' + categoryId); + + // Transform the backend response to match our GameItem type + return response.items.map((item: any, index: number) => ({ + _id: item._id, + id: item.id, + name: item.name, + label: item.label, + value: 0, // We'll need to get the actual values from the backend + categoryId: categoryId, + source: response.source, + })); + } + + // Get items with their actual values (for game logic) + async getItemsWithValues(categoryId: string): Promise { + const items = await this.request(`/category/${categoryId}/items`); + + // Transform the backend response to match our GameItem type + return items.map((item: any) => ({ + _id: item._id, + id: item.id, + name: item.name, + label: item.label, + value: item.value, // Now we have the actual values! + categoryId: categoryId, + source: item.source, + })); + } +} + +export const apiService = new ApiService(); diff --git a/frontend/src/store/game.ts b/frontend/src/store/game.ts index 50c761fdaa..1bafc40e60 100644 --- a/frontend/src/store/game.ts +++ b/frontend/src/store/game.ts @@ -1,6 +1,7 @@ // src/store/game.ts import { create } from "zustand"; -import type { GameItem, GameState } from "../types/game"; +import type { GameItem, GameState, GameCategory } from "../types/game"; +import { apiService } from "../services/api"; const insertAt = (arr: GameItem[], item: GameItem, idx: number) => { const copy = arr.slice(); @@ -14,6 +15,8 @@ const isPlacementCorrect = ( i: number ) => { const y = Y(card); + if (y === undefined) return false; + const left = i - 1 >= 0 ? Y(timeline[i - 1]) : undefined; const right = i < timeline.length ? Y(timeline[i]) : undefined; return ( @@ -33,11 +36,15 @@ type UIState = { pendingIndex: number | null; roundBaselineTimeline: GameItem[]; turnTimeline: GameItem[]; + categories: GameCategory[]; + selectedCategory: GameCategory | null; }; // ---------- actions ---------- type Actions = { clearError: () => void; + loadCategories: () => Promise; + selectCategory: (category: GameCategory) => void; startGame: () => Promise; startTurn: () => Promise; placeAt: (slotIndex: number) => void; @@ -64,14 +71,35 @@ export const useGame = create()((set, get) => ({ pendingIndex: null, roundBaselineTimeline: [], turnTimeline: [], + categories: [], + selectedCategory: null, clearError: () => set({ error: null }), - // endast bytt datakälla -> animalsItems + loadCategories: async () => { + set({ loading: true, error: null }); + try { + const categories = await apiService.getCategories(); + set({ categories, loading: false }); + } catch (error: any) { + set({ error: error?.message ?? "Failed to load categories", loading: false }); + } + }, + + selectCategory: (category: GameCategory) => { + set({ selectedCategory: category }); + }, + startGame: async () => { + const state = get(); + if (!state.selectedCategory) { + set({ error: "Please select a category first" }); + return; + } + set({ loading: true, error: null }); try { - const deck: GameItem[] = []; + const deck = await apiService.getItemsWithValues(state.selectedCategory.id); if (!deck || deck.length < 2) throw new Error("Not enough items"); const pool = deck.slice(); From f40a7812d3eead0148dc901e166ff4ea334550b4 Mon Sep 17 00:00:00 2001 From: Idahel Date: Thu, 21 Aug 2025 15:48:03 +0200 Subject: [PATCH 058/127] updated timeline card, current card and gameMode view --- TODO.md | 7 ++++ backend/data/categories/celebrities.json | 4 +- .../data/categories/countries.coastline.json | 2 +- backend/dist/models/Item.js | 2 +- backend/dist/models/Item.js.map | 2 +- frontend/src/components/CurrentCard.tsx | 20 +++------ frontend/src/components/GameBoard.tsx | 2 + frontend/src/components/TimeLineCard.tsx | 42 +++++++------------ frontend/src/components/Timeline.tsx | 5 ++- frontend/src/config/environment.ts | 7 ---- frontend/src/pages/GameMode.tsx | 20 ++++----- frontend/src/services/api.ts | 1 + frontend/src/types/game.ts | 1 + 13 files changed, 51 insertions(+), 64 deletions(-) diff --git a/TODO.md b/TODO.md index e69de29bb2..1ab30401fc 100644 --- a/TODO.md +++ b/TODO.md @@ -0,0 +1,7 @@ +- logik för när spelet är slut när man lagt 10 kort i rad +- game settings för antal lag +- display cards för kategorier +- admin login + logik för att redigera spelet +- mobilvy +- tillgänglighet +- back to home \ No newline at end of file diff --git a/backend/data/categories/celebrities.json b/backend/data/categories/celebrities.json index 964ba8f0e0..28ae19ecf3 100644 --- a/backend/data/categories/celebrities.json +++ b/backend/data/categories/celebrities.json @@ -1,9 +1,9 @@ { "id": "celebrities.age", - "name": "Celebrities Age", + "name": "Celebrities", "description": "Oldest to Youngest Celebrities", "question": "Which celebrity is the oldest?", - "unit": "years", + "unit": "year", "unitVisible": true, "sort": "desc", "source": { diff --git a/backend/data/categories/countries.coastline.json b/backend/data/categories/countries.coastline.json index 2a394b0770..0ee5d0d81b 100644 --- a/backend/data/categories/countries.coastline.json +++ b/backend/data/categories/countries.coastline.json @@ -1,6 +1,6 @@ { "id": "countries.coastline", - "name": "Countries by Coastline", + "name": "Coastlines", "description": "Quiz about coastline lengths (km) for sovereign countries (CIA World Factbook methodology)", "question": "Which country has the longest coastline?", "unit": "km", diff --git a/backend/dist/models/Item.js b/backend/dist/models/Item.js index baa1ff01da..3eb4ef68c9 100644 --- a/backend/dist/models/Item.js +++ b/backend/dist/models/Item.js @@ -6,7 +6,7 @@ const ItemSchema = new Schema({ label: { type: String, required: true }, categoryId: { type: String, required: true }, source: { - name: { type: String, required: true } + name: { type: String, required: false } } }); export const Item = model('Item', ItemSchema); diff --git a/backend/dist/models/Item.js.map b/backend/dist/models/Item.js.map index 66831c274a..e727c080a3 100644 --- a/backend/dist/models/Item.js.map +++ b/backend/dist/models/Item.js.map @@ -1 +1 @@ -{"version":3,"file":"Item.js","sourceRoot":"","sources":["../../src/models/Item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAY,MAAM,UAAU,CAAC;AAKnD,MAAM,UAAU,GAAG,IAAI,MAAM,CAAQ;IACnC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAClD,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACvC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACvC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC5C,MAAM,EAAE;QACN,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;KACvC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,CAAQ,MAAM,EAAE,UAAU,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"Item.js","sourceRoot":"","sources":["../../src/models/Item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAY,MAAM,UAAU,CAAC;AAKnD,MAAM,UAAU,GAAG,IAAI,MAAM,CAAQ;IACnC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAClD,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACvC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACvC,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC5C,MAAM,EAAE;QACN,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE;KACxC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,CAAQ,MAAM,EAAE,UAAU,CAAC,CAAC"} \ No newline at end of file diff --git a/frontend/src/components/CurrentCard.tsx b/frontend/src/components/CurrentCard.tsx index f8d8b21163..69e06a4425 100644 --- a/frontend/src/components/CurrentCard.tsx +++ b/frontend/src/components/CurrentCard.tsx @@ -15,11 +15,6 @@ export const CurrentCard: React.FC<{ card: GameItem; dragging?: boolean }> = ({ ? { transform: `translate3d(${transform.x}px, ${transform.y}px, 0)` } : undefined; - const secondary = - card.label && card.label.trim() !== "" && card.label !== card.name - ? card.label - : undefined; - return (
= ({ Place in timeline
- -
- {card.name} -
-
- {secondary} + +
+ {card.name}
? @@ -61,9 +53,9 @@ export const CurrentCardPreview: React.FC<{ card: GameItem }> = ({ card }) => ( Place in timeline
- -
- {card.name} + +
+ {card.name}
? diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index 1d28adf624..f12e744ced 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -53,6 +53,7 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { clearError, pendingIndex, lastPlacementCorrect, + selectedCategory, } = useGame(); const team = teams[currentTeamIndex]; @@ -117,6 +118,7 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => {
= ({ }) => { const t = TOKENS[size]; const unit = category?.unit; - const valueText = isRevealed ? formatValue(item.value, unit) : "??"; return ( = ({
- {/* VALUE högst upp */} - -
- {valueText} -
-
- {/* NAMN + LABEL i mitten */} + + {/* NAMN i mitten */} = ({ )} >
+ {/* VALUE + UNIT */} +
+ {isRevealed ? formatValue(item.value, unit) : "??"} +
+ + {/* NAME */}
{item.name}
- {item.label && ( -
- {item.label} -
- )}
diff --git a/frontend/src/components/Timeline.tsx b/frontend/src/components/Timeline.tsx index 870eaee074..84deef5cd9 100644 --- a/frontend/src/components/Timeline.tsx +++ b/frontend/src/components/Timeline.tsx @@ -2,7 +2,7 @@ import React from "react"; import { useDroppable } from "@dnd-kit/core"; import { TimeLineCard } from "./TimeLineCard"; -import type { GameItem } from "../types/game"; +import type { GameItem, GameCategory } from "../types/game"; type Size = "xs" | "sm" | "md"; const SIZES: Record< @@ -27,6 +27,7 @@ const SIZES: Record< type TimelineProps = { timeline: GameItem[]; + category?: GameCategory; showSlots?: boolean; size?: Size; className?: string; @@ -52,6 +53,7 @@ const Slot: React.FC<{ id: string; className: string }> = ({ export const Timeline: React.FC = ({ timeline, + category, showSlots = true, size = "xs", className, @@ -75,6 +77,7 @@ export const Timeline: React.FC = ({
- {/* Top-left: Category */} -
+ {/* Top-left: Home */} +
- {categoryLabel}:{" "} - {categoryValue} + Home
-
+ {/* Top-right: A/B Team */}
@@ -108,9 +106,9 @@ export default function GameMode() { {/* Bottom-right: Mode */}
-
- {modeLabel}:{" "} - {modeValue} +
+ {categoryLabel}:{" "} + {categoryValue}
diff --git a/frontend/src/services/api.ts b/frontend/src/services/api.ts index bf4796a634..4d5db8d9c1 100644 --- a/frontend/src/services/api.ts +++ b/frontend/src/services/api.ts @@ -44,6 +44,7 @@ class ApiService { return categories.map(cat => ({ _id: cat._id, id: cat.id, + name: cat.name, question: cat.question || cat.description || `Which ${cat.name} is the most?`, unit: cat.unit, source: cat.source, diff --git a/frontend/src/types/game.ts b/frontend/src/types/game.ts index 93d7ddf10b..4cb99c5d6d 100644 --- a/frontend/src/types/game.ts +++ b/frontend/src/types/game.ts @@ -12,6 +12,7 @@ export type GameItem = { export type GameCategory = { _id?: string; // mongodb ID id: string; + name: string; // "Animals", "Celebrities", etc. question: string; // "Which animal weighs the most?" unit: string; source?: { name: string; url?: string }; From 9b5a1781f60c796eb4f39ca7bcb19741cffbf6bf Mon Sep 17 00:00:00 2001 From: Idahel Date: Thu, 21 Aug 2025 16:17:03 +0200 Subject: [PATCH 059/127] updated data --- backend/data/categories/animals.json | 2 +- backend/data/categories/celebrities.json | 2 +- frontend/src/pages/GameMode.tsx | 4 ---- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/backend/data/categories/animals.json b/backend/data/categories/animals.json index 61816a4bf2..aeeb0cd431 100644 --- a/backend/data/categories/animals.json +++ b/backend/data/categories/animals.json @@ -1,6 +1,6 @@ { "id": "animals.weight", - "name": "Animal Weight", + "name": "Animals", "description": "Quiz about animal weights in kilograms", "question": "Which animal weighs the most?", "unit": "kg", diff --git a/backend/data/categories/celebrities.json b/backend/data/categories/celebrities.json index 28ae19ecf3..133ecd43fb 100644 --- a/backend/data/categories/celebrities.json +++ b/backend/data/categories/celebrities.json @@ -2,7 +2,7 @@ "id": "celebrities.age", "name": "Celebrities", "description": "Oldest to Youngest Celebrities", - "question": "Which celebrity is the oldest?", + "question": "What year was the celebrity born in?", "unit": "year", "unitVisible": true, "sort": "desc", diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index 3c6857416f..3fd8ef34db 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -133,10 +133,6 @@ export default function GameMode() { > {selectedCategory.question} -

- Arrange cards on the timeline and place the highest value at the right end. - Unit: {selectedCategory.unit} -

From bd8ba7fe683cf59761921139b7cd8ab1765c8e4d Mon Sep 17 00:00:00 2001 From: Idahel Date: Thu, 21 Aug 2025 16:29:11 +0200 Subject: [PATCH 060/127] added random logic for item card render using shuffle --- frontend/src/store/game.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/frontend/src/store/game.ts b/frontend/src/store/game.ts index 1bafc40e60..af262bd542 100644 --- a/frontend/src/store/game.ts +++ b/frontend/src/store/game.ts @@ -2,6 +2,7 @@ import { create } from "zustand"; import type { GameItem, GameState, GameCategory } from "../types/game"; import { apiService } from "../services/api"; +import { shuffle } from "../lib/shuffle"; const insertAt = (arr: GameItem[], item: GameItem, idx: number) => { const copy = arr.slice(); @@ -102,7 +103,10 @@ export const useGame = create()((set, get) => ({ const deck = await apiService.getItemsWithValues(state.selectedCategory.id); if (!deck || deck.length < 2) throw new Error("Not enough items"); - const pool = deck.slice(); + // Shuffle the deck to randomize the order of items + const shuffledDeck = shuffle(deck); + + const pool = shuffledDeck.slice(); const startA = drawOne(pool); const startB = drawOne(pool); From 60ca583dbccbf2c44991f2111db42903386a4a8d Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Thu, 21 Aug 2025 17:25:47 +0200 Subject: [PATCH 061/127] Home have categories --- frontend/src/components/CategorySelector.tsx | 10 ++- frontend/src/components/GameSettings.tsx | 35 ++++++++++ frontend/src/pages/GameMode.tsx | 70 ++++++++++---------- frontend/src/pages/Home.tsx | 39 +++++++---- 4 files changed, 107 insertions(+), 47 deletions(-) create mode 100644 frontend/src/components/GameSettings.tsx diff --git a/frontend/src/components/CategorySelector.tsx b/frontend/src/components/CategorySelector.tsx index 772378b6c5..6575d48a04 100644 --- a/frontend/src/components/CategorySelector.tsx +++ b/frontend/src/components/CategorySelector.tsx @@ -2,10 +2,13 @@ import React, { useEffect } from 'react'; import { useGame } from '../store/game'; import { Card } from '../ui/Card'; import { Button } from '../ui/Button'; +import { useNavigate } from 'react-router-dom'; export const CategorySelector: React.FC = () => { const { categories, loading, error, loadCategories, selectCategory, selectedCategory, startGame } = useGame(); + const navigate =useNavigate(); + useEffect(() => { loadCategories(); }, [loadCategories]); @@ -13,6 +16,7 @@ export const CategorySelector: React.FC = () => { const handleStartGame = async () => { if (selectedCategory) { await startGame(); + navigate('/gamemode'); // Navigera till spelet direkt efter start } }; @@ -48,7 +52,11 @@ export const CategorySelector: React.FC = () => { ? 'ring-2 ring-primary bg-primary/10' : 'hover:bg-card' }`} - onClick={() => selectCategory(category)} + onClick={async () => { + selectCategory(category); + await startGame(); + navigate('/gamemode'); // Navigera till spelet direkt efter val + }} >

diff --git a/frontend/src/components/GameSettings.tsx b/frontend/src/components/GameSettings.tsx new file mode 100644 index 0000000000..7b3cd6e171 --- /dev/null +++ b/frontend/src/components/GameSettings.tsx @@ -0,0 +1,35 @@ +// src/components/GameSettings.tsx +import React from "react"; +import { CategorySelector } from "./CategorySelector"; +import { Card } from "../ui"; +import { useGame } from "../store/game"; + +export const GameSettings: React.FC = () => { + const { selectedCategory } = useGame(); + + return ( +
+
+

Game settings

+

+ Choose a category to get started. +

+
+ + {/* Kategorier (återanvänder din befintliga logik) */} + + + {/* Plats för kommande inställningar (lag, svårighet m.m.) */} + +
+ Upcoming: Teams, difficulty, round length… + {selectedCategory && ( +
+ Selected: {selectedCategory.question} +
+ )} +
+
+
+ ); +}; diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index 3fd8ef34db..4e3c095f47 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -6,6 +6,7 @@ import { GameBoard } from "../components/GameBoard"; import { CategorySelector } from "../components/CategorySelector"; import { Heading, DotPattern } from "../ui"; import { useGame } from "../store/game"; +import { GameSettings } from "../components/GameSettings"; export default function GameMode() { const { teams, currentTeamIndex, selectedCategory, phase } = useGame(); @@ -23,44 +24,45 @@ export default function GameMode() { const dot = "inline-block w-2 h-2 rounded-sm bg-primary shadow-soft"; // If no category is selected or we're in setup phase, show category selection - if (!selectedCategory || phase === "SETUP") { - return ( -
- - -
-
- -
+if (!selectedCategory || phase === "SETUP") { + return ( +
+ + +
+
+ +
-
-
-
- Choose Your Game -
- - Select a Category - -

- Choose a category to start playing the timeline game. -

+
+
+
+ Choose Your Game
+ + Select a Category + +

+ Choose a category to start playing the timeline game. +

+
-
- -
+
+ {/* 🔽 Bytt ut CategorySelector mot GameSettings */} +
-
-
- ); - } +
+ +

+ ); +} return (
diff --git a/frontend/src/pages/Home.tsx b/frontend/src/pages/Home.tsx index aef4a29f4e..e42bc1e8a3 100644 --- a/frontend/src/pages/Home.tsx +++ b/frontend/src/pages/Home.tsx @@ -1,17 +1,24 @@ -import { useEffect, useState } from "react"; +import { useEffect, useState, useRef } from "react"; import { Link } from "react-router-dom"; import { Button, Heading } from "../ui"; import BanganzaIntro from "../components/BanganzaIntro"; +import { CategorySelector } from "../components/CategorySelector"; export const Home = () => { const [introDone, setIntroDone] = useState(false); const [ready, setReady] = useState(false); + const catsRef = useRef(null); useEffect(() => { const t = setTimeout(() => setReady(true), 250); return () => clearTimeout(t); }, []); + const scrollToCategories = () => { + catsRef.current?.scrollIntoView({ behavior: "smooth", block: "start" }); + }; + + return (
{!introDone && setIntroDone(true)} />} @@ -44,20 +51,28 @@ export const Home = () => { BANGANZA -
- - - -
+ {/* 🔽 Diskret scroll-hint i stället för Start Game */} +

aJ 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 literal 0 HcmV?d00001 diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index 2b65cf5698..c37ca143af 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -66,6 +66,11 @@ export const GameBoard: React.FC = () => { if (Number.isFinite(index)) placeAt(index) } + // små helpers så vi funkar både med alias (title/artist/year) och dina backendfält + const yy = (c: any) => c?.year ?? c?.releaseYear + const tt = (c: any) => c?.title ?? c?.trackTitle + const aa = (c: any) => c?.artist ?? c?.trackArtist + return (

+ + {/* Kategorierna under (hintas genom negativ margin) */} +
+
+ +
+
); From 019c86d4c8737a703bf8940d7ba6b9fa22304551 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Thu, 21 Aug 2025 18:07:09 +0200 Subject: [PATCH 062/127] Added placeholder game settings --- frontend/src/components/CategorySelector.tsx | 74 +++----- frontend/src/components/GameSettings.tsx | 82 ++++++--- frontend/src/pages/GameMode.tsx | 168 +++++++++---------- frontend/src/pages/Home.tsx | 10 ++ 4 files changed, 178 insertions(+), 156 deletions(-) diff --git a/frontend/src/components/CategorySelector.tsx b/frontend/src/components/CategorySelector.tsx index 6575d48a04..4a026881b0 100644 --- a/frontend/src/components/CategorySelector.tsx +++ b/frontend/src/components/CategorySelector.tsx @@ -1,40 +1,26 @@ import React, { useEffect } from 'react'; import { useGame } from '../store/game'; import { Card } from '../ui/Card'; -import { Button } from '../ui/Button'; +// import { Button } from '../ui/Button'; import { useNavigate } from 'react-router-dom'; export const CategorySelector: React.FC = () => { - const { categories, loading, error, loadCategories, selectCategory, selectedCategory, startGame } = useGame(); + const { categories, loading, error, loadCategories, selectCategory, selectedCategory } = useGame(); + const navigate = useNavigate(); - const navigate =useNavigate(); + useEffect(() => { loadCategories(); }, [loadCategories]); - useEffect(() => { - loadCategories(); - }, [loadCategories]); - - const handleStartGame = async () => { - if (selectedCategory) { - await startGame(); - navigate('/gamemode'); // Navigera till spelet direkt efter start - } - }; - - if (loading) { - return ( -
-
Loading categories...
-
- ); - } + if (loading) return ( +
+
Loading categories...
+
+ ); - if (error) { - return ( -
-
Error: {error}
-
- ); - } + if (error) return ( +
+
Error: {error}
+
+ ); return (
@@ -48,41 +34,25 @@ export const CategorySelector: React.FC = () => { { - selectCategory(category); - await startGame(); - navigate('/gamemode'); // Navigera till spelet direkt efter val - }} + onClick={() => { + selectCategory(category); // ✔️ bara välja + navigate('/gamemode'); // ✔️ till GameMode (SETUP) + }} >
-

- {category.question} -

+

{category.question}

Unit: {category.unit}

- {category.source && ( -

Source: {category.source.name}

- )} + {category.source &&

Source: {category.source.name}

}
))}
- {selectedCategory && ( -
- -
- )} + {/* ⬇️ Ta bort "Start Game with …"-knappen */} ); }; diff --git a/frontend/src/components/GameSettings.tsx b/frontend/src/components/GameSettings.tsx index 7b3cd6e171..ed51ba0048 100644 --- a/frontend/src/components/GameSettings.tsx +++ b/frontend/src/components/GameSettings.tsx @@ -1,35 +1,79 @@ // src/components/GameSettings.tsx import React from "react"; -import { CategorySelector } from "./CategorySelector"; -import { Card } from "../ui"; +import { Card, Button } from "../ui"; import { useGame } from "../store/game"; -export const GameSettings: React.FC = () => { +type Props = { onClose?: () => void; onContinue?: () => void }; + +export const GameSettings: React.FC = ({ onClose, onContinue }) => { const { selectedCategory } = useGame(); + const [teamA, setTeamA] = React.useState("Team A"); + const [teamB, setTeamB] = React.useState("Team B"); + const [turnTime, setTurnTime] = React.useState<30 | 60 | 90>(60); + const [reveal, setReveal] = React.useState<"hidden" | "shown">("hidden"); + return (
-
-

Game settings

-

- Choose a category to get started. -

+
+
+ Selected: {selectedCategory?.question} +
+ {onClose && ( + + )}
- {/* Kategorier (återanvänder din befintliga logik) */} - + +
Teams
+
+ setTeamA(e.target.value)} + className="w-full rounded-md border border-border bg-card px-3 py-2" + placeholder="Team A name" + /> + setTeamB(e.target.value)} + className="w-full rounded-md border border-border bg-card px-3 py-2" + placeholder="Team B name" + /> +
+
+ + +
Turn time
+ +
- {/* Plats för kommande inställningar (lag, svårighet m.m.) */} - -
- Upcoming: Teams, difficulty, round length… - {selectedCategory && ( -
- Selected: {selectedCategory.question} -
- )} + +
Value & unit display
+
+ +
+ +
+ +
); }; diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index 4e3c095f47..a0bb1d5470 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -1,6 +1,5 @@ -// src/pages/GameMode.tsx import React from "react"; -import { Link } from "react-router-dom"; +import { Link, useNavigate } from "react-router-dom"; import { OrientationGuard } from "../components/OrientationGuard"; import { GameBoard } from "../components/GameBoard"; import { CategorySelector } from "../components/CategorySelector"; @@ -9,8 +8,9 @@ import { useGame } from "../store/game"; import { GameSettings } from "../components/GameSettings"; export default function GameMode() { - const { teams, currentTeamIndex, selectedCategory, phase } = useGame(); - + const navigate = useNavigate(); + const { teams, currentTeamIndex, selectedCategory, phase, startGame } = useGame(); + const categoryLabel = "Category"; const categoryValue = selectedCategory?.name || "Select Category"; const roundLabel = "Round"; @@ -23,47 +23,41 @@ export default function GameMode() { "px-2 py-1 rounded-full bg-primary/10 border border-border text-xs tracking-wider uppercase text-muted-foreground"; const dot = "inline-block w-2 h-2 rounded-sm bg-primary shadow-soft"; - // If no category is selected or we're in setup phase, show category selection -if (!selectedCategory || phase === "SETUP") { - return ( -
- - -
-
- -
- -
-
-
- Choose Your Game -
- - Select a Category - -

- Choose a category to start playing the timeline game. -

+ // --- 1) Fallback: ingen kategori vald --- + if (!selectedCategory) { + return ( +
+ +
+
+
- -
- {/* 🔽 Bytt ut CategorySelector mot GameSettings */} - +
+
+
+ Choose Your Game +
+ + Select a Category + +

+ Choose a category to start playing the timeline game. +

+
+
+ +
-
-
-
- ); -} +
+
+ ); + } + // --- 2) Vanliga GameMode-chrome (samma i SETUP och under spelet) --- return (
@@ -71,27 +65,17 @@ if (!selectedCategory || phase === "SETUP") { {/* Top-left: Home */} -
- Home -
+
Home
{/* Top-right: A/B Team */}
-
- A Team{" "} - {scoreA} +
+ A Team {scoreA}
-
- B Team{" "} - {scoreB} +
+ B Team {scoreB}
@@ -100,48 +84,62 @@ if (!selectedCategory || phase === "SETUP") { {/* Bottom-left: Round */}
-
- {roundLabel}:{" "} - {roundValue} -
+
{roundLabel}: {roundValue}
- {/* Bottom-right: Mode */} + {/* Bottom-right: Category */}
-
- {categoryLabel}:{" "} - {categoryValue} -
+
{categoryLabel}: {categoryValue}
+ {/* Innehållssektion med DotPattern – växla mellan SETUP (Settings) och Board */}
-
-
- Game Question -
- - {selectedCategory.question} - -
+ {phase === "SETUP" ? ( + <> +
+
Game Settings
+ + Configure your match + +
-
- -
+
+ navigate("/", { state: { scrollTo: "categories" } })} + onContinue={() => startGame()} + /> +
+ + ) : ( + <> +
+
Game Question
+ + {selectedCategory.question} + +
+ +
+ +
+ + )}
); -} +} \ No newline at end of file diff --git a/frontend/src/pages/Home.tsx b/frontend/src/pages/Home.tsx index e42bc1e8a3..d23bb97a9b 100644 --- a/frontend/src/pages/Home.tsx +++ b/frontend/src/pages/Home.tsx @@ -1,6 +1,7 @@ import { useEffect, useState, useRef } from "react"; import { Link } from "react-router-dom"; import { Button, Heading } from "../ui"; +import { useLocation } from "react-router-dom"; import BanganzaIntro from "../components/BanganzaIntro"; import { CategorySelector } from "../components/CategorySelector"; @@ -8,12 +9,21 @@ export const Home = () => { const [introDone, setIntroDone] = useState(false); const [ready, setReady] = useState(false); const catsRef = useRef(null); + const location = useLocation(); + useEffect(() => { const t = setTimeout(() => setReady(true), 250); return () => clearTimeout(t); }, []); + useEffect(() => { + if ((location.state as any)?.scrollTo === "categories") { + catsRef.current?.scrollIntoView({ behavior: "smooth", block: "start" }); + window.history.replaceState({}, ""); // rensa state så det inte triggas igen + } + }, [location.state]); + const scrollToCategories = () => { catsRef.current?.scrollIntoView({ behavior: "smooth", block: "start" }); }; From 148cb3dc53758999382d6dbbb45aef9136a4846b Mon Sep 17 00:00:00 2001 From: Idahel Date: Fri, 22 Aug 2025 09:42:45 +0200 Subject: [PATCH 063/127] removed unused import --- TODO.md | 3 +-- frontend/src/pages/GameMode.tsx | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/TODO.md b/TODO.md index 1ab30401fc..9c7facce10 100644 --- a/TODO.md +++ b/TODO.md @@ -3,5 +3,4 @@ - display cards för kategorier - admin login + logik för att redigera spelet - mobilvy -- tillgänglighet -- back to home \ No newline at end of file +- tillgänglighet \ No newline at end of file diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index 4e3c095f47..16f97598fd 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -3,7 +3,6 @@ import React from "react"; import { Link } from "react-router-dom"; import { OrientationGuard } from "../components/OrientationGuard"; import { GameBoard } from "../components/GameBoard"; -import { CategorySelector } from "../components/CategorySelector"; import { Heading, DotPattern } from "../ui"; import { useGame } from "../store/game"; import { GameSettings } from "../components/GameSettings"; From 5ff72f7e8a2bc89abc1374314346f6f5a2c397d9 Mon Sep 17 00:00:00 2001 From: Idahel Date: Fri, 22 Aug 2025 14:53:24 +0200 Subject: [PATCH 064/127] admin page to delete, edit and create new data to quiz --- backend/.eslintrc.json | 16 +- backend/README.md | 233 +++++++++++- backend/dist/config/database.d.ts.map | 2 +- backend/dist/config/database.js | 17 +- backend/dist/config/database.js.map | 2 +- backend/dist/config/environment.d.ts | 13 + backend/dist/config/environment.d.ts.map | 1 + backend/dist/config/environment.js | 30 ++ backend/dist/config/environment.js.map | 1 + backend/dist/controllers/adminController.d.ts | 15 + .../dist/controllers/adminController.d.ts.map | 1 + backend/dist/controllers/adminController.js | 306 +++++++++++++++ .../dist/controllers/adminController.js.map | 1 + .../dist/controllers/quizController.d.ts.map | 2 +- backend/dist/controllers/quizController.js | 83 ++-- .../dist/controllers/quizController.js.map | 2 +- backend/dist/index.d.ts | 2 +- backend/dist/index.d.ts.map | 2 +- backend/dist/index.js | 41 +- backend/dist/index.js.map | 2 +- backend/dist/middleware/auth.d.ts | 9 + backend/dist/middleware/auth.d.ts.map | 1 + backend/dist/middleware/auth.js | 36 ++ backend/dist/middleware/auth.js.map | 1 + backend/dist/middleware/errorHandler.d.ts | 7 +- backend/dist/middleware/errorHandler.d.ts.map | 2 +- backend/dist/middleware/errorHandler.js | 43 ++- backend/dist/middleware/errorHandler.js.map | 2 +- backend/dist/middleware/validation.d.ts | 4 +- backend/dist/middleware/validation.d.ts.map | 2 +- backend/dist/middleware/validation.js | 40 +- backend/dist/middleware/validation.js.map | 2 +- backend/dist/models/Admin.d.ts | 15 + backend/dist/models/Admin.d.ts.map | 1 + backend/dist/models/Admin.js | 52 +++ backend/dist/models/Admin.js.map | 1 + backend/dist/routes/adminRoutes.d.ts | 3 + backend/dist/routes/adminRoutes.d.ts.map | 1 + backend/dist/routes/adminRoutes.js | 25 ++ backend/dist/routes/adminRoutes.js.map | 1 + backend/dist/services/createAdmin.d.ts | 2 + backend/dist/services/createAdmin.d.ts.map | 1 + backend/dist/services/createAdmin.js | 34 ++ backend/dist/services/createAdmin.js.map | 1 + backend/dist/services/seedDb.js | 23 +- backend/dist/services/seedDb.js.map | 2 +- backend/dist/utils/errors.d.ts | 24 ++ backend/dist/utils/errors.d.ts.map | 1 + backend/dist/utils/errors.js | 45 +++ backend/dist/utils/errors.js.map | 1 + backend/dist/utils/logger.d.ts | 18 + backend/dist/utils/logger.d.ts.map | 1 + backend/dist/utils/logger.js | 66 ++++ backend/dist/utils/logger.js.map | 1 + backend/dist/utils/response.d.ts | 24 ++ backend/dist/utils/response.d.ts.map | 1 + backend/dist/utils/response.js | 50 +++ backend/dist/utils/response.js.map | 1 + backend/package.json | 16 +- backend/src/config/database.ts | 18 +- backend/src/config/environment.ts | 48 +++ backend/src/controllers/adminController.ts | 360 ++++++++++++++++++ backend/src/controllers/quizController.ts | 83 ++-- backend/src/index.ts | 48 +-- backend/src/middleware/auth.ts | 47 +++ backend/src/middleware/errorHandler.ts | 60 +-- backend/src/middleware/validation.ts | 44 ++- backend/src/models/Admin.ts | 63 +++ backend/src/routes/adminRoutes.ts | 45 +++ backend/src/services/createAdmin.ts | 38 ++ backend/src/services/seedDb.ts | 25 +- backend/src/utils/errors.ts | 53 +++ backend/src/utils/logger.ts | 87 +++++ backend/src/utils/response.ts | 74 ++++ frontend/README.md | 92 +---- frontend/dist/assets/index-C0FSA73Q.css | 1 + frontend/dist/assets/index-CZH8FzHQ.js | 58 +++ frontend/dist/assets/index-DmRswSve.css | 1 - frontend/dist/assets/index-k1B7pSlL.js | 58 --- frontend/dist/index.html | 4 +- frontend/src/App.tsx | 2 + .../src/components/admin/CategoriesTab.tsx | 198 ++++++++++ frontend/src/components/admin/ItemsTab.tsx | 237 ++++++++++++ frontend/src/components/admin/LoginForm.tsx | 86 +++++ frontend/src/hooks/useAuth.ts | 111 ++++++ frontend/src/hooks/useCategories.ts | 148 +++++++ frontend/src/hooks/useItems.ts | 148 +++++++ frontend/src/pages/AdminPage.tsx | 174 +++++++++ frontend/src/pages/GameMode.tsx | 1 + frontend/src/types/admin.ts | 12 + frontend/src/types/game.ts | 4 + frontend/src/ui/index.ts | 5 +- 92 files changed, 3312 insertions(+), 453 deletions(-) create mode 100644 backend/dist/config/environment.d.ts create mode 100644 backend/dist/config/environment.d.ts.map create mode 100644 backend/dist/config/environment.js create mode 100644 backend/dist/config/environment.js.map create mode 100644 backend/dist/controllers/adminController.d.ts create mode 100644 backend/dist/controllers/adminController.d.ts.map create mode 100644 backend/dist/controllers/adminController.js create mode 100644 backend/dist/controllers/adminController.js.map create mode 100644 backend/dist/middleware/auth.d.ts create mode 100644 backend/dist/middleware/auth.d.ts.map create mode 100644 backend/dist/middleware/auth.js create mode 100644 backend/dist/middleware/auth.js.map create mode 100644 backend/dist/models/Admin.d.ts create mode 100644 backend/dist/models/Admin.d.ts.map create mode 100644 backend/dist/models/Admin.js create mode 100644 backend/dist/models/Admin.js.map create mode 100644 backend/dist/routes/adminRoutes.d.ts create mode 100644 backend/dist/routes/adminRoutes.d.ts.map create mode 100644 backend/dist/routes/adminRoutes.js create mode 100644 backend/dist/routes/adminRoutes.js.map create mode 100644 backend/dist/services/createAdmin.d.ts create mode 100644 backend/dist/services/createAdmin.d.ts.map create mode 100644 backend/dist/services/createAdmin.js create mode 100644 backend/dist/services/createAdmin.js.map create mode 100644 backend/dist/utils/errors.d.ts create mode 100644 backend/dist/utils/errors.d.ts.map create mode 100644 backend/dist/utils/errors.js create mode 100644 backend/dist/utils/errors.js.map create mode 100644 backend/dist/utils/logger.d.ts create mode 100644 backend/dist/utils/logger.d.ts.map create mode 100644 backend/dist/utils/logger.js create mode 100644 backend/dist/utils/logger.js.map create mode 100644 backend/dist/utils/response.d.ts create mode 100644 backend/dist/utils/response.d.ts.map create mode 100644 backend/dist/utils/response.js create mode 100644 backend/dist/utils/response.js.map create mode 100644 backend/src/config/environment.ts create mode 100644 backend/src/controllers/adminController.ts create mode 100644 backend/src/middleware/auth.ts create mode 100644 backend/src/models/Admin.ts create mode 100644 backend/src/routes/adminRoutes.ts create mode 100644 backend/src/services/createAdmin.ts create mode 100644 backend/src/utils/errors.ts create mode 100644 backend/src/utils/logger.ts create mode 100644 backend/src/utils/response.ts create mode 100644 frontend/dist/assets/index-C0FSA73Q.css create mode 100644 frontend/dist/assets/index-CZH8FzHQ.js delete mode 100644 frontend/dist/assets/index-DmRswSve.css delete mode 100644 frontend/dist/assets/index-k1B7pSlL.js create mode 100644 frontend/src/components/admin/CategoriesTab.tsx create mode 100644 frontend/src/components/admin/ItemsTab.tsx create mode 100644 frontend/src/components/admin/LoginForm.tsx create mode 100644 frontend/src/hooks/useAuth.ts create mode 100644 frontend/src/hooks/useCategories.ts create mode 100644 frontend/src/hooks/useItems.ts create mode 100644 frontend/src/pages/AdminPage.tsx create mode 100644 frontend/src/types/admin.ts diff --git a/backend/.eslintrc.json b/backend/.eslintrc.json index 048915b942..a31a73f74f 100644 --- a/backend/.eslintrc.json +++ b/backend/.eslintrc.json @@ -7,5 +7,19 @@ "extends": [ "eslint:recommended", "plugin:@typescript-eslint/recommended" - ] + ], + "parserOptions": { + "ecmaVersion": 2022, + "sourceType": "module" + }, + "rules": { + "@typescript-eslint/no-unused-vars": "error", + "@typescript-eslint/no-explicit-any": "warn", + "prefer-const": "error", + "no-console": "off" + }, + "env": { + "node": true, + "es2022": true + } } \ No newline at end of file diff --git a/backend/README.md b/backend/README.md index d1438c9108..145a77adad 100644 --- a/backend/README.md +++ b/backend/README.md @@ -1,8 +1,231 @@ -# Backend part of Final Project +# Backend API Server -This project includes the packages and babel setup for an express server, and is just meant to make things a little simpler to get up and running with. +A Node.js/Express/TypeScript backend server for the Banganza quiz application. -## Getting Started +## 🏗️ Architecture -1. Install the required dependencies using `npm install`. -2. Start the development server using `npm run dev`. \ No newline at end of file +The backend follows a clean, layered architecture: + +``` +src/ +├── config/ # Configuration files +├── controllers/ # Request handlers +├── middleware/ # Express middleware +├── models/ # Mongoose models +├── routes/ # API route definitions +├── services/ # Business logic services +├── types/ # TypeScript type definitions +└── utils/ # Utility functions and classes +``` + +## 🚀 Features + +- **RESTful API** with consistent response format +- **JWT Authentication** for admin endpoints +- **MongoDB** with Mongoose ODM +- **TypeScript** for type safety +- **Structured logging** with context +- **Error handling** with custom error classes +- **Input validation** middleware +- **Environment configuration** validation + +## 📋 Prerequisites + +- Node.js 18+ +- MongoDB instance +- TypeScript knowledge + +## 🛠️ Installation + +1. Install dependencies: +```bash +npm install +``` + +2. Create a `.env` file based on `.env.example`: +```bash +cp .env.example .env +``` + +3. Configure environment variables in `.env`: +```env +MONGODB_URI=mongodb://localhost:27017/your_database +PORT=8888 +NODE_ENV=development +FRONTEND_URI=http://127.0.0.1:5173 +JWT_SECRET=your_secure_jwt_secret +ADMIN_USERNAME=admin +ADMIN_PASSWORD=secure_password +ADMIN_EMAIL=admin@example.com +``` + +## 🏃‍♂️ Running the Server + +### Development +```bash +npm run dev +``` + +### Production +```bash +npm run build +npm start +``` + +### Database Seeding +```bash +npm run seed +``` + +### Create Admin User +```bash +npm run create-admin +``` + +## 🔧 Available Scripts + +- `npm run dev` - Start development server with hot reload +- `npm run build` - Build TypeScript to JavaScript +- `npm start` - Start production server +- `npm run lint` - Run ESLint +- `npm run lint:fix` - Fix ESLint issues +- `npm run type-check` - Type check without building +- `npm run seed` - Seed database with sample data +- `npm run create-admin` - Create initial admin user + +## 📚 API Endpoints + +### Public Endpoints +- `GET /` - Health check +- `GET /health` - Detailed health status +- `GET /api/quiz/categories` - Get all quiz categories +- `GET /api/quiz/items/:categoryId` - Get quiz items for a category +- `GET /api/quiz/category/:categoryId/items` - Get all items for a category +- `POST /api/quiz/check` - Check quiz answers + +### Protected Endpoints (Admin) +- `POST /api/admin/login` - Admin authentication +- `GET /api/admin/profile` - Get admin profile +- `POST /api/admin/logout` - Admin logout +- `GET /api/admin/categories` - Get all categories +- `POST /api/admin/categories` - Create category +- `PUT /api/admin/categories/:id` - Update category +- `DELETE /api/admin/categories/:id` - Delete category +- `GET /api/admin/items` - Get all items +- `POST /api/admin/items` - Create item +- `PUT /api/admin/items/:id` - Update item +- `DELETE /api/admin/items/:id` - Delete item + +## 🔐 Authentication + +Admin endpoints require JWT authentication. Include the token in the Authorization header: + +``` +Authorization: Bearer +``` + +## 📝 Response Format + +All API responses follow a consistent format: + +### Success Response +```json +{ + "success": true, + "data": { ... }, + "meta": { + "timestamp": "2024-01-01T00:00:00.000Z", + "path": "/api/endpoint", + "method": "GET" + } +} +``` + +### Error Response +```json +{ + "success": false, + "error": { + "message": "Error description", + "code": "ERROR_CODE", + "details": { ... } + }, + "meta": { ... } +} +``` + +## 🗄️ Database Models + +### Admin +- Username, password (hashed), email +- Active status and last login tracking + +### Category +- ID, name, description, question +- Unit, sort order, source information + +### Item +- ID, name, value, label +- Category reference and source + +## 🛡️ Security Features + +- **Password hashing** with bcrypt +- **JWT tokens** with expiration +- **CORS configuration** for frontend +- **Input validation** middleware +- **Error sanitization** in production + +## 📊 Logging + +Structured logging with different levels: +- **ERROR** - Application errors +- **WARN** - Warning conditions +- **INFO** - General information +- **DEBUG** - Debug information (development only) + +## 🧪 Testing + +Run the linter and type checker: +```bash +npm run lint +npm run type-check +``` + +## 🚀 Deployment + +1. Set `NODE_ENV=production` +2. Configure production MongoDB URI +3. Set secure JWT secret +4. Build the application: `npm run build` +5. Start the server: `npm start` + +## 📁 Project Structure + +``` +backend/ +├── src/ +│ ├── config/ # Environment and database config +│ ├── controllers/ # Request handlers +│ ├── middleware/ # Express middleware +│ ├── models/ # Mongoose schemas +│ ├── routes/ # API routes +│ ├── services/ # Business logic +│ ├── types/ # TypeScript interfaces +│ └── utils/ # Utilities and helpers +├── data/ # Seed data files +├── dist/ # Compiled JavaScript +└── package.json # Dependencies and scripts +``` + +## 🤝 Contributing + +1. Follow TypeScript best practices +2. Use the established error handling patterns +3. Maintain consistent API response format +4. Add appropriate logging +5. Run linting before committing + +## 📄 License + +ISC License \ No newline at end of file diff --git a/backend/dist/config/database.d.ts.map b/backend/dist/config/database.d.ts.map index 79eb272246..0b15e64016 100644 --- a/backend/dist/config/database.d.ts.map +++ b/backend/dist/config/database.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/config/database.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,SAAS,QAAa,OAAO,CAAC,IAAI,CAgCvC,CAAC;AAEF,eAAe,SAAS,CAAC"} \ No newline at end of file +{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/config/database.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,SAAS,QAAa,OAAO,CAAC,IAAI,CA4BvC,CAAC;AAEF,eAAe,SAAS,CAAC"} \ No newline at end of file diff --git a/backend/dist/config/database.js b/backend/dist/config/database.js index be03ffd4bd..a2c9e1d9a4 100644 --- a/backend/dist/config/database.js +++ b/backend/dist/config/database.js @@ -1,28 +1,27 @@ import mongoose from 'mongoose'; +import { config } from './environment.js'; +import { logger } from '../utils/logger.js'; const connectDB = async () => { try { - const mongoURI = process.env.MONGODB_URI; - if (!mongoURI) { - throw new Error('MONGODB_URI is not defined in environment variables'); - } + const mongoURI = config.MONGODB_URI; const conn = await mongoose.connect(mongoURI); - console.log(`MongoDB Connected: ${conn.connection.host}`); + logger.info(`MongoDB Connected: ${conn.connection.host}`, 'Database'); // Handle connection events mongoose.connection.on('error', (err) => { - console.error('MongoDB connection error:', err); + logger.error('MongoDB connection error', 'Database', err); }); mongoose.connection.on('disconnected', () => { - console.log('MongoDB disconnected'); + logger.warn('MongoDB disconnected', 'Database'); }); // Graceful shutdown process.on('SIGINT', async () => { await mongoose.connection.close(); - console.log('MongoDB connection closed through app termination'); + logger.info('MongoDB connection closed through app termination', 'Database'); process.exit(0); }); } catch (error) { - console.error('Error connecting to MongoDB:', error); + logger.error('Error connecting to MongoDB', 'Database', error); process.exit(1); } }; diff --git a/backend/dist/config/database.js.map b/backend/dist/config/database.js.map index 0b12fd8403..6272422ef1 100644 --- a/backend/dist/config/database.js.map +++ b/backend/dist/config/database.js.map @@ -1 +1 @@ -{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/config/database.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,SAAS,GAAG,KAAK,IAAmB,EAAE;IAC1C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;QAEzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE9C,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAE1D,2BAA2B;QAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACtC,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;YAC1C,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,oBAAoB;QACpB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,MAAM,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IAEL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"} \ No newline at end of file +{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/config/database.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,SAAS,GAAG,KAAK,IAAmB,EAAE;IAC1C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;QAEpC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE9C,MAAM,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;QAEtE,2BAA2B;QAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACtC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE;YAC1C,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,oBAAoB;QACpB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,MAAM,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,mDAAmD,EAAE,UAAU,CAAC,CAAC;YAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IAEL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,UAAU,EAAE,KAAc,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"} \ No newline at end of file diff --git a/backend/dist/config/environment.d.ts b/backend/dist/config/environment.d.ts new file mode 100644 index 0000000000..0b8e1b6d61 --- /dev/null +++ b/backend/dist/config/environment.d.ts @@ -0,0 +1,13 @@ +interface EnvironmentConfig { + NODE_ENV: string; + PORT: number; + MONGODB_URI: string; + FRONTEND_URI: string; + JWT_SECRET: string; + ADMIN_USERNAME: string; + ADMIN_PASSWORD: string; + ADMIN_EMAIL: string; +} +export declare const config: EnvironmentConfig; +export {}; +//# sourceMappingURL=environment.d.ts.map \ No newline at end of file diff --git a/backend/dist/config/environment.d.ts.map b/backend/dist/config/environment.d.ts.map new file mode 100644 index 0000000000..e5521d0921 --- /dev/null +++ b/backend/dist/config/environment.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/config/environment.ts"],"names":[],"mappings":"AAKA,UAAU,iBAAiB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAiCD,eAAO,MAAM,MAAM,mBAAwB,CAAC"} \ No newline at end of file diff --git a/backend/dist/config/environment.js b/backend/dist/config/environment.js new file mode 100644 index 0000000000..412eaa0784 --- /dev/null +++ b/backend/dist/config/environment.js @@ -0,0 +1,30 @@ +import dotenv from 'dotenv'; +// Load environment variables +dotenv.config(); +const requiredEnvVars = [ + 'MONGODB_URI', + 'FRONTEND_URI', + 'JWT_SECRET', + 'ADMIN_USERNAME', + 'ADMIN_PASSWORD', + 'ADMIN_EMAIL', +]; +const validateEnvironment = () => { + const missingVars = requiredEnvVars.filter(varName => !process.env[varName]); + if (missingVars.length > 0) { + throw new Error(`Missing required environment variables: ${missingVars.join(', ')}\n` + + 'Please check your .env file and ensure all required variables are set.'); + } + return { + NODE_ENV: process.env.NODE_ENV || 'development', + PORT: parseInt(process.env.PORT || '8888', 10), + MONGODB_URI: process.env.MONGODB_URI, + FRONTEND_URI: process.env.FRONTEND_URI, + JWT_SECRET: process.env.JWT_SECRET, + ADMIN_USERNAME: process.env.ADMIN_USERNAME, + ADMIN_PASSWORD: process.env.ADMIN_PASSWORD, + ADMIN_EMAIL: process.env.ADMIN_EMAIL, + }; +}; +export const config = validateEnvironment(); +//# sourceMappingURL=environment.js.map \ No newline at end of file diff --git a/backend/dist/config/environment.js.map b/backend/dist/config/environment.js.map new file mode 100644 index 0000000000..b1363cb799 --- /dev/null +++ b/backend/dist/config/environment.js.map @@ -0,0 +1 @@ +{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/config/environment.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,6BAA6B;AAC7B,MAAM,CAAC,MAAM,EAAE,CAAC;AAahB,MAAM,eAAe,GAAG;IACtB,aAAa;IACb,cAAc;IACd,YAAY;IACZ,gBAAgB;IAChB,gBAAgB;IAChB,aAAa;CACL,CAAC;AAEX,MAAM,mBAAmB,GAAG,GAAsB,EAAE;IAClD,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAE7E,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,2CAA2C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACrE,wEAAwE,CACzE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa;QAC/C,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC;QAC9C,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAY;QACrC,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAa;QACvC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAW;QACnC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,cAAe;QAC3C,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,cAAe;QAC3C,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAY;KACtC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAC"} \ No newline at end of file diff --git a/backend/dist/controllers/adminController.d.ts b/backend/dist/controllers/adminController.d.ts new file mode 100644 index 0000000000..e81b771f7e --- /dev/null +++ b/backend/dist/controllers/adminController.d.ts @@ -0,0 +1,15 @@ +import { Request, Response } from 'express'; +export declare const adminLogin: (req: Request, res: Response) => Promise> | undefined>; +export declare const adminLogout: (req: Request, res: Response) => Promise; +export declare const getAdminProfile: (req: Request, res: Response) => Promise> | undefined>; +export declare const getAllCategories: (req: Request, res: Response) => Promise; +export declare const getCategoryById: (req: Request, res: Response) => Promise> | undefined>; +export declare const createCategory: (req: Request, res: Response) => Promise> | undefined>; +export declare const updateCategory: (req: Request, res: Response) => Promise> | undefined>; +export declare const deleteCategory: (req: Request, res: Response) => Promise> | undefined>; +export declare const getAllItems: (req: Request, res: Response) => Promise; +export declare const getItemById: (req: Request, res: Response) => Promise> | undefined>; +export declare const createItem: (req: Request, res: Response) => Promise> | undefined>; +export declare const updateItem: (req: Request, res: Response) => Promise> | undefined>; +export declare const deleteItem: (req: Request, res: Response) => Promise> | undefined>; +//# sourceMappingURL=adminController.d.ts.map \ No newline at end of file diff --git a/backend/dist/controllers/adminController.d.ts.map b/backend/dist/controllers/adminController.d.ts.map new file mode 100644 index 0000000000..551cd2f6a5 --- /dev/null +++ b/backend/dist/controllers/adminController.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"adminController.d.ts","sourceRoot":"","sources":["../../src/controllers/adminController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAU5C,eAAO,MAAM,UAAU,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,4DAwD3D,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,kBAW5D,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,4DAwBhE,CAAC;AAGF,eAAO,MAAM,gBAAgB,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,kBAUjE,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,4DAiBhE,CAAC;AAEF,eAAO,MAAM,cAAc,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,4DA2B/D,CAAC;AAEF,eAAO,MAAM,cAAc,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,4DA2B/D,CAAC;AAEF,eAAO,MAAM,cAAc,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,4DA6B/D,CAAC;AAGF,eAAO,MAAM,WAAW,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,kBAiB5D,CAAC;AAEF,eAAO,MAAM,WAAW,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,4DAiB5D,CAAC;AAEF,eAAO,MAAM,UAAU,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,4DAkC3D,CAAC;AAEF,eAAO,MAAM,UAAU,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,4DAoC3D,CAAC;AAEF,eAAO,MAAM,UAAU,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,4DAkB3D,CAAC"} \ No newline at end of file diff --git a/backend/dist/controllers/adminController.js b/backend/dist/controllers/adminController.js new file mode 100644 index 0000000000..a302be4f6b --- /dev/null +++ b/backend/dist/controllers/adminController.js @@ -0,0 +1,306 @@ +import jwt from 'jsonwebtoken'; +import { Admin } from '../models/Admin.js'; +import { Category } from '../models/Category.js'; +import { Item } from '../models/Item.js'; +import { config } from '../config/environment.js'; +import { ResponseBuilder } from '../utils/response.js'; +import { logger } from '../utils/logger.js'; +// Admin Authentication +export const adminLogin = async (req, res) => { + try { + const { username, password } = req.body; + if (!username || !password) { + const response = ResponseBuilder.validationError('Username and password are required', { + received: { username: !!username, password: !!password }, + }, req); + return res.status(400).json(response); + } + // Find admin by username + const admin = await Admin.findOne({ username, isActive: true }); + if (!admin) { + const response = ResponseBuilder.unauthorized('Invalid credentials', req); + return res.status(401).json(response); + } + // Check password + const isPasswordValid = await admin.comparePassword(password); + if (!isPasswordValid) { + const response = ResponseBuilder.unauthorized('Invalid credentials', req); + return res.status(401).json(response); + } + // Update last login + admin.lastLogin = new Date(); + await admin.save(); + // Generate JWT token + const token = jwt.sign({ adminId: admin._id }, config.JWT_SECRET, { expiresIn: '24h' }); + // Return admin info (without password) and token + const adminInfo = { + id: admin._id, + username: admin.username, + email: admin.email, + lastLogin: admin.lastLogin + }; + const response = ResponseBuilder.success({ + message: 'Login successful', + admin: adminInfo, + token + }, req); + res.json(response); + } + catch (error) { + logger.error('Admin login error', 'AdminController', error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; +export const adminLogout = async (req, res) => { + try { + // In a real app, you might want to blacklist the token + // For now, we'll just return success + const response = ResponseBuilder.success({ message: 'Logout successful' }, req); + res.json(response); + } + catch (error) { + logger.error('Admin logout error', 'AdminController', error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; +export const getAdminProfile = async (req, res) => { + try { + const admin = req.admin; + if (!admin) { + const response = ResponseBuilder.unauthorized('Admin not found', req); + return res.status(401).json(response); + } + const response = ResponseBuilder.success({ + admin: { + id: admin._id, + username: admin.username, + email: admin.email, + lastLogin: admin.lastLogin + } + }, req); + res.json(response); + } + catch (error) { + logger.error('Get admin profile error', 'AdminController', error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; +// Category Management +export const getAllCategories = async (req, res) => { + try { + const categories = await Category.find().sort({ name: 1 }); + const response = ResponseBuilder.success({ categories }, req); + res.json(response); + } + catch (error) { + logger.error('Get categories error', 'AdminController', error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; +export const getCategoryById = async (req, res) => { + try { + const { id } = req.params; + const category = await Category.findOne({ id }); + if (!category) { + const response = ResponseBuilder.notFound('Category not found', req); + return res.status(404).json(response); + } + const response = ResponseBuilder.success({ category }, req); + res.json(response); + } + catch (error) { + logger.error('Get category error', 'AdminController', error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; +export const createCategory = async (req, res) => { + try { + const categoryData = req.body; + // Check if category with same ID already exists + const existingCategory = await Category.findOne({ id: categoryData.id }); + if (existingCategory) { + const response = ResponseBuilder.error('Category with this ID already exists', 'CONFLICT', { + existingId: categoryData.id, + }, req); + return res.status(409).json(response); + } + const category = new Category(categoryData); + await category.save(); + const response = ResponseBuilder.success({ + message: 'Category created successfully', + category + }, req); + res.status(201).json(response); + } + catch (error) { + logger.error('Create category error', 'AdminController', error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; +export const updateCategory = async (req, res) => { + try { + const { id } = req.params; + const updateData = req.body; + const category = await Category.findOneAndUpdate({ id }, updateData, { new: true, runValidators: true }); + if (!category) { + const response = ResponseBuilder.notFound('Category not found', req); + return res.status(404).json(response); + } + const response = ResponseBuilder.success({ + message: 'Category updated successfully', + category + }, req); + res.json(response); + } + catch (error) { + logger.error('Update category error', 'AdminController', error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; +export const deleteCategory = async (req, res) => { + try { + const { id } = req.params; + // Check if category exists + const category = await Category.findOne({ id }); + if (!category) { + const response = ResponseBuilder.notFound('Category not found', req); + return res.status(404).json(response); + } + // Check if there are items in this category + const itemCount = await Item.countDocuments({ categoryId: id }); + if (itemCount > 0) { + const response = ResponseBuilder.error('Cannot delete category with existing items', 'CONFLICT', { + itemCount + }, req); + return res.status(409).json(response); + } + await Category.deleteOne({ id }); + const response = ResponseBuilder.success({ message: 'Category deleted successfully' }, req); + res.json(response); + } + catch (error) { + logger.error('Delete category error', 'AdminController', error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; +// Item Management +export const getAllItems = async (req, res) => { + try { + const { categoryId } = req.query; + let query = {}; + if (categoryId) { + query = { categoryId }; + } + const items = await Item.find(query).sort({ name: 1 }); + const response = ResponseBuilder.success({ items }, req); + res.json(response); + } + catch (error) { + logger.error('Get items error', 'AdminController', error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; +export const getItemById = async (req, res) => { + try { + const { id } = req.params; + const item = await Item.findOne({ id }); + if (!item) { + const response = ResponseBuilder.notFound('Item not found', req); + return res.status(404).json(response); + } + const response = ResponseBuilder.success({ item }, req); + res.json(response); + } + catch (error) { + logger.error('Get item error', 'AdminController', error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; +export const createItem = async (req, res) => { + try { + const itemData = req.body; + // Check if item with same ID already exists + const existingItem = await Item.findOne({ id: itemData.id }); + if (existingItem) { + const response = ResponseBuilder.error('Item with this ID already exists', 'CONFLICT', { + existingId: itemData.id, + }, req); + return res.status(409).json(response); + } + // Verify category exists + const category = await Category.findOne({ id: itemData.categoryId }); + if (!category) { + const response = ResponseBuilder.notFound('Category not found', req); + return res.status(404).json(response); + } + const item = new Item(itemData); + await item.save(); + const response = ResponseBuilder.success({ + message: 'Item created successfully', + item + }, req); + res.status(201).json(response); + } + catch (error) { + logger.error('Create item error', 'AdminController', error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; +export const updateItem = async (req, res) => { + try { + const { id } = req.params; + const updateData = req.body; + // If categoryId is being updated, verify the new category exists + if (updateData.categoryId) { + const category = await Category.findOne({ id: updateData.categoryId }); + if (!category) { + const response = ResponseBuilder.notFound('Category not found', req); + return res.status(404).json(response); + } + } + const item = await Item.findOneAndUpdate({ id }, updateData, { new: true, runValidators: true }); + if (!item) { + const response = ResponseBuilder.notFound('Item not found', req); + return res.status(404).json(response); + } + const response = ResponseBuilder.success({ + message: 'Item updated successfully', + item + }, req); + res.json(response); + } + catch (error) { + logger.error('Update item error', 'AdminController', error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; +export const deleteItem = async (req, res) => { + try { + const { id } = req.params; + const item = await Item.findOneAndDelete({ id }); + if (!item) { + const response = ResponseBuilder.notFound('Item not found', req); + return res.status(404).json(response); + } + const response = ResponseBuilder.success({ message: 'Item deleted successfully' }, req); + res.json(response); + } + catch (error) { + logger.error('Delete item error', 'AdminController', error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; +//# sourceMappingURL=adminController.js.map \ No newline at end of file diff --git a/backend/dist/controllers/adminController.js.map b/backend/dist/controllers/adminController.js.map new file mode 100644 index 0000000000..2ce0f5f96e --- /dev/null +++ b/backend/dist/controllers/adminController.js.map @@ -0,0 +1 @@ +{"version":3,"file":"adminController.js","sourceRoot":"","sources":["../../src/controllers/adminController.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/backend/dist/controllers/quizController.d.ts.map b/backend/dist/controllers/quizController.d.ts.map index 41c1e499c3..44399d3812 100644 --- a/backend/dist/controllers/quizController.d.ts.map +++ b/backend/dist/controllers/quizController.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"quizController.d.ts","sourceRoot":"","sources":["../../src/controllers/quizController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAe5C,eAAO,MAAM,aAAa,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,kBAc9D,CAAC;AAGF,eAAO,MAAM,gBAAgB,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,4DAuBjE,CAAC;AAGF,eAAO,MAAM,YAAY,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,4DAoD7D,CAAC;AAGF,eAAO,MAAM,YAAY,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,kBA0B7D,CAAC"} \ No newline at end of file +{"version":3,"file":"quizController.d.ts","sourceRoot":"","sources":["../../src/controllers/quizController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAiB5C,eAAO,MAAM,aAAa,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,kBAa9D,CAAC;AAGF,eAAO,MAAM,gBAAgB,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,4DAoBjE,CAAC;AAGF,eAAO,MAAM,YAAY,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,4DAkD7D,CAAC;AAGF,eAAO,MAAM,YAAY,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,kBAyB7D,CAAC"} \ No newline at end of file diff --git a/backend/dist/controllers/quizController.js b/backend/dist/controllers/quizController.js index c89fa1954e..90fe25f4cd 100644 --- a/backend/dist/controllers/quizController.js +++ b/backend/dist/controllers/quizController.js @@ -1,5 +1,7 @@ import { Item } from '../models/Item.js'; import { Category } from '../models/Category.js'; +import { ResponseBuilder } from '../utils/response.js'; +import { logger } from '../utils/logger.js'; // Helper function to shuffle an array const shuffleArray = (array) => { for (let i = array.length - 1; i > 0; i--) { @@ -12,17 +14,16 @@ const shuffleArray = (array) => { export const getCategories = async (req, res) => { try { const categories = await Category.find({}); - res.status(200).json({ - success: true, - data: categories - }); + const response = ResponseBuilder.success(categories, req); + res.status(200).json(response); } catch (error) { const errorMessage = error instanceof Error ? error.message : 'Unknown error'; - res.status(500).json({ - success: false, - error: { message: 'Error fetching categories', details: errorMessage } - }); + logger.error('Error fetching categories', 'QuizController', error); + const response = ResponseBuilder.error('Error fetching categories', 'FETCH_ERROR', { + details: errorMessage + }, req); + res.status(500).json(response); } }; // Get all items for a category (with values for game use) @@ -31,22 +32,19 @@ export const getCategoryItems = async (req, res) => { try { const items = await Item.find({ categoryId }).sort({ value: 1 }); if (items.length === 0) { - return res.status(404).json({ - success: false, - error: { message: 'No items found for this category.' } - }); + const response = ResponseBuilder.notFound('No items found for this category', req); + return res.status(404).json(response); } - res.status(200).json({ - success: true, - data: items - }); + const response = ResponseBuilder.success(items, req); + res.status(200).json(response); } catch (error) { const errorMessage = error instanceof Error ? error.message : 'Unknown error'; - res.status(500).json({ - success: false, - error: { message: 'Error fetching category items', details: errorMessage } - }); + logger.error('Error fetching category items', 'QuizController', error); + const response = ResponseBuilder.error('Error fetching category items', 'FETCH_ERROR', { + details: errorMessage + }, req); + res.status(500).json(response); } }; // Get a random set of quiz items for a category @@ -59,16 +57,15 @@ export const getQuizItems = async (req, res) => { Item.find({ categoryId }) ]); if (!category) { - return res.status(404).json({ - success: false, - error: { message: 'Category not found.' } - }); + const response = ResponseBuilder.notFound('Category not found', req); + return res.status(404).json(response); } if (items.length < 5) { - return res.status(404).json({ - success: false, - error: { message: 'Not enough items for this quiz.' } - }); + const response = ResponseBuilder.error('Not enough items for this quiz', 'INSUFFICIENT_ITEMS', { + required: 5, + available: items.length, + }, req); + return res.status(404).json(response); } const shuffledItems = shuffleArray(items); const quizItems = shuffledItems.slice(0, 5); // Take 5 random items @@ -85,17 +82,16 @@ export const getQuizItems = async (req, res) => { question: category.get('question') || '', unitVisible: category.get('unitVisible') || false, }; - res.status(200).json({ - success: true, - data: responseData - }); + const response = ResponseBuilder.success(responseData, req); + res.status(200).json(response); } catch (error) { const errorMessage = error instanceof Error ? error.message : 'Unknown error'; - res.status(500).json({ - success: false, - error: { message: 'Error fetching quiz items', details: errorMessage } - }); + logger.error('Error fetching quiz items', 'QuizController', error); + const response = ResponseBuilder.error('Error fetching quiz items', 'FETCH_ERROR', { + details: errorMessage + }, req); + res.status(500).json(response); } }; // Check if the user's answers are correct @@ -110,17 +106,16 @@ export const checkAnswers = async (req, res) => { return correctItem && id === correctItem._id.toString(); }); const result = { isCorrect }; - res.status(200).json({ - success: true, - data: result - }); + const response = ResponseBuilder.success(result, req); + res.status(200).json(response); } catch (error) { const errorMessage = error instanceof Error ? error.message : 'Unknown error'; - res.status(500).json({ - success: false, - error: { message: 'Error checking answers', details: errorMessage } - }); + logger.error('Error checking answers', 'QuizController', error); + const response = ResponseBuilder.error('Error checking answers', 'CHECK_ERROR', { + details: errorMessage + }, req); + res.status(500).json(response); } }; //# sourceMappingURL=quizController.js.map \ No newline at end of file diff --git a/backend/dist/controllers/quizController.js.map b/backend/dist/controllers/quizController.js.map index 7ce7ca9cd4..c1f385f919 100644 --- a/backend/dist/controllers/quizController.js.map +++ b/backend/dist/controllers/quizController.js.map @@ -1 +1 @@ -{"version":3,"file":"quizController.js","sourceRoot":"","sources":["../../src/controllers/quizController.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"quizController.js","sourceRoot":"","sources":["../../src/controllers/quizController.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/backend/dist/index.d.ts b/backend/dist/index.d.ts index e48a310bea..e26a57a8ca 100644 --- a/backend/dist/index.d.ts +++ b/backend/dist/index.d.ts @@ -1,2 +1,2 @@ -import "dotenv/config"; +export {}; //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/backend/dist/index.d.ts.map b/backend/dist/index.d.ts.map index df5a9560b5..535b86d293 100644 --- a/backend/dist/index.d.ts.map +++ b/backend/dist/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,CAAC"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/backend/dist/index.js b/backend/dist/index.js index df20362541..5015674462 100644 --- a/backend/dist/index.js +++ b/backend/dist/index.js @@ -1,32 +1,19 @@ // server/src/index.ts -import "dotenv/config"; import express from "express"; import cors from "cors"; import mongoose from "mongoose"; import quizRoutes from './routes/quizRoutes.js'; +import adminRoutes from './routes/adminRoutes.js'; import { errorHandler, notFound } from './middleware/errorHandler.js'; import connectDB from './config/database.js'; -// Validate that all necessary environment variables exist -const requiredEnvVars = [ - "MONGODB_URI", - "FRONTEND_URI", -]; -// Log environment info for debugging -console.log("Environment:", process.env.NODE_ENV || "development"); -console.log("Frontend URI:", process.env.FRONTEND_URI || "http://127.0.0.1:5173"); -console.log("Backend Port:", process.env.PORT || 8888); -for (const envVar of requiredEnvVars) { - if (!process.env[envVar]) { - console.error(`Error: The environment variable ${envVar} is missing`); - process.exit(1); - } -} +import { config } from './config/environment.js'; +import { logger } from './utils/logger.js'; const app = express(); -const port = process.env.PORT || 8888; +const port = config.PORT; // Middleware app.use(cors({ origin: [ - process.env.FRONTEND_URI || "http://127.0.0.1:5173", + config.FRONTEND_URI, "https://banganza.netlify.app", ], credentials: true, // Allow cookies @@ -39,9 +26,9 @@ app.get("/", (req, res) => { res.json({ message: "Backend server is running!", status: "ok", - environment: process.env.NODE_ENV || "development", + environment: config.NODE_ENV, timestamp: new Date().toISOString(), - frontend: process.env.FRONTEND_URI || "http://127.0.0.1:5173", + frontend: config.FRONTEND_URI, }); }); // Additional health check for production monitoring @@ -50,7 +37,7 @@ app.get("/health", (req, res) => { status: "ok", timestamp: new Date().toISOString(), uptime: process.uptime(), - environment: process.env.NODE_ENV || "development", + environment: config.NODE_ENV, database: mongoose.connection.readyState === 1 ? "connected" : "disconnected", }; if (health.database === "disconnected") { @@ -60,6 +47,8 @@ app.get("/health", (req, res) => { }); // Use the new quiz routes app.use('/api/quiz', quizRoutes); +// Use admin routes +app.use('/api/admin', adminRoutes); // 404 handler app.use(notFound); // Error handling middleware @@ -69,16 +58,16 @@ connectDB(); // Start the server app .listen(port, () => { - console.log(`Backend server is running on port ${port}`); - if (process.env.NODE_ENV === "production") { - console.log("Production mode enabled"); + logger.info(`Backend server is running on port ${port}`, 'Server'); + if (config.NODE_ENV === "production") { + logger.info("Production mode enabled", 'Server'); } else { - console.log(`Development mode: http://127.0.0.1:${port}`); + logger.info(`Development mode: http://127.0.0.1:${port}`, 'Server'); } }) .on("error", (err) => { - console.error("Error starting the server:", err); + logger.error("Error starting the server", 'Server', err); process.exit(1); }); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/backend/dist/index.js.map b/backend/dist/index.js.map index 741bc05a55..6274c00849 100644 --- a/backend/dist/index.js.map +++ b/backend/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/backend/dist/middleware/auth.d.ts b/backend/dist/middleware/auth.d.ts new file mode 100644 index 0000000000..b13d7e2ac7 --- /dev/null +++ b/backend/dist/middleware/auth.d.ts @@ -0,0 +1,9 @@ +import { Request, Response, NextFunction } from 'express'; +import { IAdmin } from '../models/Admin.js'; +declare module 'express' { + interface Request { + admin?: IAdmin; + } +} +export declare const authenticateToken: (req: Request, res: Response, next: NextFunction) => Promise; +//# sourceMappingURL=auth.d.ts.map \ No newline at end of file diff --git a/backend/dist/middleware/auth.d.ts.map b/backend/dist/middleware/auth.d.ts.map new file mode 100644 index 0000000000..420fc0485e --- /dev/null +++ b/backend/dist/middleware/auth.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D,OAAO,EAAS,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAKnD,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,OAAO;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;CACF;AAED,eAAO,MAAM,iBAAiB,GAAU,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAiChH,CAAC"} \ No newline at end of file diff --git a/backend/dist/middleware/auth.js b/backend/dist/middleware/auth.js new file mode 100644 index 0000000000..e96d34c150 --- /dev/null +++ b/backend/dist/middleware/auth.js @@ -0,0 +1,36 @@ +import jwt from 'jsonwebtoken'; +import { Admin } from '../models/Admin.js'; +import { config } from '../config/environment.js'; +import { ResponseBuilder } from '../utils/response.js'; +export const authenticateToken = async (req, res, next) => { + try { + const authHeader = req.headers.authorization; + const token = authHeader && authHeader.split(' ')[1]; // Bearer TOKEN + if (!token) { + const response = ResponseBuilder.unauthorized('Access token required', req); + return res.status(401).json(response); + } + const decoded = jwt.verify(token, config.JWT_SECRET); + // Find admin and check if still active + const admin = await Admin.findById(decoded.adminId).select('-password'); + if (!admin || !admin.isActive) { + const response = ResponseBuilder.unauthorized('Invalid or inactive admin account', req); + return res.status(401).json(response); + } + req.admin = admin; + next(); + } + catch (error) { + if (error instanceof jwt.JsonWebTokenError) { + const response = ResponseBuilder.unauthorized('Invalid token', req); + return res.status(403).json(response); + } + if (error instanceof jwt.TokenExpiredError) { + const response = ResponseBuilder.unauthorized('Token expired', req); + return res.status(401).json(response); + } + const response = ResponseBuilder.internalError('Authentication error', req); + return res.status(500).json(response); + } +}; +//# sourceMappingURL=auth.js.map \ No newline at end of file diff --git a/backend/dist/middleware/auth.js.map b/backend/dist/middleware/auth.js.map new file mode 100644 index 0000000000..d4f1763bd2 --- /dev/null +++ b/backend/dist/middleware/auth.js.map @@ -0,0 +1 @@ +{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,cAAc,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAU,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AASvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAA4B,EAAE;IACnH,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;QAC7C,MAAM,KAAK,GAAG,UAAU,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe;QAErE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;YAC5E,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAwB,CAAC;QAE5E,uCAAuC;QACvC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACxE,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;YACxF,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QAED,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,EAAE,CAAC;IACT,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,GAAG,CAAC,iBAAiB,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;YACpE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,KAAK,YAAY,GAAG,CAAC,iBAAiB,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;YACpE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,QAAQ,GAAG,eAAe,CAAC,aAAa,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QAC5E,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;AACH,CAAC,CAAC"} \ No newline at end of file diff --git a/backend/dist/middleware/errorHandler.d.ts b/backend/dist/middleware/errorHandler.d.ts index 99470d6529..05da1a843f 100644 --- a/backend/dist/middleware/errorHandler.d.ts +++ b/backend/dist/middleware/errorHandler.d.ts @@ -1,8 +1,5 @@ import { Request, Response, NextFunction } from 'express'; -export interface AppError extends Error { - statusCode?: number; - isOperational?: boolean; -} -export declare const errorHandler: (err: AppError, req: Request, res: Response, next: NextFunction) => void; +import { AppError } from '../utils/errors.js'; +export declare const errorHandler: (err: Error | AppError, req: Request, res: Response, next: NextFunction) => void; export declare const notFound: (req: Request, res: Response) => void; //# sourceMappingURL=errorHandler.d.ts.map \ No newline at end of file diff --git a/backend/dist/middleware/errorHandler.d.ts.map b/backend/dist/middleware/errorHandler.d.ts.map index 47940c693f..efa9cb49e3 100644 --- a/backend/dist/middleware/errorHandler.d.ts.map +++ b/backend/dist/middleware/errorHandler.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"errorHandler.d.ts","sourceRoot":"","sources":["../../src/middleware/errorHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D,MAAM,WAAW,QAAS,SAAQ,KAAK;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,YAAY,GACvB,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,SAgBnB,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,SAOnD,CAAC"} \ No newline at end of file +{"version":3,"file":"errorHandler.d.ts","sourceRoot":"","sources":["../../src/middleware/errorHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAI9C,eAAO,MAAM,YAAY,GACvB,KAAK,KAAK,GAAG,QAAQ,EACrB,KAAK,OAAO,EACZ,KAAK,QAAQ,EAEb,MAAM,YAAY,KACjB,IA8BF,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,KAAG,IAGtD,CAAC"} \ No newline at end of file diff --git a/backend/dist/middleware/errorHandler.js b/backend/dist/middleware/errorHandler.js index 3f6edd729a..a666c008ba 100644 --- a/backend/dist/middleware/errorHandler.js +++ b/backend/dist/middleware/errorHandler.js @@ -1,23 +1,32 @@ -export const errorHandler = (err, req, res, next) => { - const statusCode = err.statusCode || 500; - const message = err.message || 'Internal Server Error'; +import { AppError } from '../utils/errors.js'; +import { ResponseBuilder } from '../utils/response.js'; +import { logger } from '../utils/logger.js'; +export const errorHandler = (err, req, res, +// eslint-disable-next-line @typescript-eslint/no-unused-vars +next) => { + let statusCode = 500; + let message = 'Internal Server Error'; + let isOperational = false; + if (err instanceof AppError) { + statusCode = err.statusCode; + message = err.message; + isOperational = err.isOperational; + } // Log error for debugging - console.error(`Error ${statusCode}: ${message}`); - console.error(err.stack); - res.status(statusCode).json({ - success: false, - error: { - message, - ...(process.env.NODE_ENV === 'development' && { stack: err.stack }) - } + logger.error(message, 'ErrorHandler', err, { + statusCode, + isOperational, + path: req.originalUrl, + method: req.method, + userAgent: req.get('User-Agent'), + ip: req.ip, }); + // Don't leak error details in production + const errorResponse = ResponseBuilder.error(message, err instanceof AppError ? err.constructor.name : 'InternalError', process.env.NODE_ENV === 'development' ? err.stack : undefined, req); + res.status(statusCode).json(errorResponse); }; export const notFound = (req, res) => { - res.status(404).json({ - success: false, - error: { - message: `Route ${req.originalUrl} not found` - } - }); + const response = ResponseBuilder.notFound(`Route ${req.originalUrl} not found`, req); + res.status(404).json(response); }; //# sourceMappingURL=errorHandler.js.map \ No newline at end of file diff --git a/backend/dist/middleware/errorHandler.js.map b/backend/dist/middleware/errorHandler.js.map index 1618deb8de..6ffc7a28d1 100644 --- a/backend/dist/middleware/errorHandler.js.map +++ b/backend/dist/middleware/errorHandler.js.map @@ -1 +1 @@ -{"version":3,"file":"errorHandler.js","sourceRoot":"","sources":["../../src/middleware/errorHandler.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,GAAa,EACb,GAAY,EACZ,GAAa,EACb,IAAkB,EAClB,EAAE;IACF,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC;IACzC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,uBAAuB,CAAC;IAEvD,0BAA0B;IAC1B,OAAO,CAAC,KAAK,CAAC,SAAS,UAAU,KAAK,OAAO,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEzB,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;QAC1B,OAAO,EAAE,KAAK;QACd,KAAK,EAAE;YACL,OAAO;YACP,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;SACpE;KACF,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IACtD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACnB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE;YACL,OAAO,EAAE,SAAS,GAAG,CAAC,WAAW,YAAY;SAC9C;KACF,CAAC,CAAC;AACL,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"errorHandler.js","sourceRoot":"","sources":["../../src/middleware/errorHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,GAAqB,EACrB,GAAY,EACZ,GAAa;AACb,6DAA6D;AAC7D,IAAkB,EACZ,EAAE;IACR,IAAI,UAAU,GAAG,GAAG,CAAC;IACrB,IAAI,OAAO,GAAG,uBAAuB,CAAC;IACtC,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;QAC5B,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QACtB,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;IACpC,CAAC;IAED,0BAA0B;IAC1B,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,EAAE;QACzC,UAAU;QACV,aAAa;QACb,IAAI,EAAE,GAAG,CAAC,WAAW;QACrB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC;QAChC,EAAE,EAAE,GAAG,CAAC,EAAE;KACX,CAAC,CAAC;IAEH,yCAAyC;IACzC,MAAM,aAAa,GAAG,eAAe,CAAC,KAAK,CACzC,OAAO,EACP,GAAG,YAAY,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,EAChE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAC9D,GAAG,CACJ,CAAC;IAEF,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAY,EAAE,GAAa,EAAQ,EAAE;IAC5D,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,WAAW,YAAY,EAAE,GAAG,CAAC,CAAC;IACrF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC,CAAC"} \ No newline at end of file diff --git a/backend/dist/middleware/validation.d.ts b/backend/dist/middleware/validation.d.ts index 67d8ca99ab..4ae66203a8 100644 --- a/backend/dist/middleware/validation.d.ts +++ b/backend/dist/middleware/validation.d.ts @@ -1,4 +1,4 @@ import { Request, Response, NextFunction } from 'express'; -export declare const validateCategoryId: (req: Request, res: Response, next: NextFunction) => Response> | undefined; -export declare const validateQuizAnswers: (req: Request, res: Response, next: NextFunction) => Response> | undefined; +export declare const validateCategoryId: (req: Request, res: Response, next: NextFunction) => void; +export declare const validateQuizAnswers: (req: Request, res: Response, next: NextFunction) => void; //# sourceMappingURL=validation.d.ts.map \ No newline at end of file diff --git a/backend/dist/middleware/validation.d.ts.map b/backend/dist/middleware/validation.d.ts.map index 3b59017df0..f198752810 100644 --- a/backend/dist/middleware/validation.d.ts.map +++ b/backend/dist/middleware/validation.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/middleware/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D,eAAO,MAAM,kBAAkB,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mDAajF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,mDAsBlF,CAAC"} \ No newline at end of file +{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/middleware/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG1D,eAAO,MAAM,kBAAkB,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAapF,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAuBrF,CAAC"} \ No newline at end of file diff --git a/backend/dist/middleware/validation.js b/backend/dist/middleware/validation.js index 7d9207a9ab..e358210a55 100644 --- a/backend/dist/middleware/validation.js +++ b/backend/dist/middleware/validation.js @@ -1,32 +1,34 @@ +import { ResponseBuilder } from '../utils/response.js'; export const validateCategoryId = (req, res, next) => { const { categoryId } = req.params; if (!categoryId || typeof categoryId !== 'string') { - return res.status(400).json({ - success: false, - error: { - message: 'Valid categoryId is required' - } - }); + const response = ResponseBuilder.validationError('Valid categoryId is required', { + received: categoryId, + type: typeof categoryId, + }, req); + res.status(400).json(response); + return; } next(); }; export const validateQuizAnswers = (req, res, next) => { const { userAnswers } = req.body; if (!Array.isArray(userAnswers) || userAnswers.length === 0) { - return res.status(400).json({ - success: false, - error: { - message: 'userAnswers must be a non-empty array' - } - }); + const response = ResponseBuilder.validationError('userAnswers must be a non-empty array', { + received: userAnswers, + type: typeof userAnswers, + length: Array.isArray(userAnswers) ? userAnswers.length : 'not an array', + }, req); + res.status(400).json(response); + return; } - if (!userAnswers.every(id => typeof id === 'string')) { - return res.status(400).json({ - success: false, - error: { - message: 'All userAnswers must be strings' - } - }); + if (!userAnswers.every((id) => typeof id === 'string')) { + const response = ResponseBuilder.validationError('All userAnswers must be strings', { + received: userAnswers, + invalidTypes: userAnswers.map((id, index) => ({ index, type: typeof id, value: id })), + }, req); + res.status(400).json(response); + return; } next(); }; diff --git a/backend/dist/middleware/validation.js.map b/backend/dist/middleware/validation.js.map index 5ab9a5b211..de8c172f0d 100644 --- a/backend/dist/middleware/validation.js.map +++ b/backend/dist/middleware/validation.js.map @@ -1 +1 @@ -{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/middleware/validation.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACpF,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;IAElC,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QAClD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YAC1B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,OAAO,EAAE,8BAA8B;aACxC;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,EAAE,CAAC;AACT,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACrF,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;IAEjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YAC1B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,OAAO,EAAE,uCAAuC;aACjD;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC;QACrD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YAC1B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,OAAO,EAAE,iCAAiC;aAC3C;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,EAAE,CAAC;AACT,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/middleware/validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAQ,EAAE;IAC1F,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;IAElC,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,eAAe,CAAC,eAAe,CAAC,8BAA8B,EAAE;YAC/E,QAAQ,EAAE,UAAU;YACpB,IAAI,EAAE,OAAO,UAAU;SACxB,EAAE,GAAG,CAAC,CAAC;QACR,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,IAAI,EAAE,CAAC;AACT,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAQ,EAAE;IAC3F,MAAM,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;IAEjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5D,MAAM,QAAQ,GAAG,eAAe,CAAC,eAAe,CAAC,uCAAuC,EAAE;YACxF,QAAQ,EAAE,WAAW;YACrB,IAAI,EAAE,OAAO,WAAW;YACxB,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc;SACzE,EAAE,GAAG,CAAC,CAAC;QACR,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAW,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC;QAChE,MAAM,QAAQ,GAAG,eAAe,CAAC,eAAe,CAAC,iCAAiC,EAAE;YAClF,QAAQ,EAAE,WAAW;YACrB,YAAY,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;SACtF,EAAE,GAAG,CAAC,CAAC;QACR,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IAED,IAAI,EAAE,CAAC;AACT,CAAC,CAAC"} \ No newline at end of file diff --git a/backend/dist/models/Admin.d.ts b/backend/dist/models/Admin.d.ts new file mode 100644 index 0000000000..16a7560cff --- /dev/null +++ b/backend/dist/models/Admin.d.ts @@ -0,0 +1,15 @@ +import { Document } from 'mongoose'; +export interface IAdmin extends Document { + username: string; + password: string; + email: string; + isActive: boolean; + lastLogin?: Date; + comparePassword(candidatePassword: string): Promise; +} +export declare const Admin: import("mongoose").Model & IAdmin & Required<{ + _id: unknown; +}> & { + __v: number; +}, any>; +//# sourceMappingURL=Admin.d.ts.map \ No newline at end of file diff --git a/backend/dist/models/Admin.d.ts.map b/backend/dist/models/Admin.d.ts.map new file mode 100644 index 0000000000..de69a7fcdd --- /dev/null +++ b/backend/dist/models/Admin.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Admin.d.ts","sourceRoot":"","sources":["../../src/models/Admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGnD,MAAM,WAAW,MAAO,SAAQ,QAAQ;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,IAAI,CAAC;IACjB,eAAe,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9D;AAoDD,eAAO,MAAM,KAAK;;;;OAAsC,CAAC"} \ No newline at end of file diff --git a/backend/dist/models/Admin.js b/backend/dist/models/Admin.js new file mode 100644 index 0000000000..31736da532 --- /dev/null +++ b/backend/dist/models/Admin.js @@ -0,0 +1,52 @@ +import { Schema, model } from 'mongoose'; +import bcrypt from 'bcryptjs'; +const AdminSchema = new Schema({ + username: { + type: String, + required: true, + unique: true, + trim: true, + minlength: 3, + maxlength: 30 + }, + password: { + type: String, + required: true, + minlength: 6 + }, + email: { + type: String, + required: true, + unique: true, + lowercase: true, + trim: true + }, + isActive: { + type: Boolean, + default: true + }, + lastLogin: { + type: Date + } +}, { + timestamps: true +}); +// Hash password before saving +AdminSchema.pre('save', async function (next) { + if (!this.isModified('password')) + return next(); + try { + const salt = await bcrypt.genSalt(12); + this.password = await bcrypt.hash(this.password, salt); + next(); + } + catch (error) { + next(error); + } +}); +// Method to compare passwords +AdminSchema.methods.comparePassword = async function (candidatePassword) { + return bcrypt.compare(candidatePassword, this.password); +}; +export const Admin = model('Admin', AdminSchema); +//# sourceMappingURL=Admin.js.map \ No newline at end of file diff --git a/backend/dist/models/Admin.js.map b/backend/dist/models/Admin.js.map new file mode 100644 index 0000000000..18b780343f --- /dev/null +++ b/backend/dist/models/Admin.js.map @@ -0,0 +1 @@ +{"version":3,"file":"Admin.js","sourceRoot":"","sources":["../../src/models/Admin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAY,MAAM,UAAU,CAAC;AACnD,OAAO,MAAM,MAAM,UAAU,CAAC;AAW9B,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC;IAC7B,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,CAAC;QACZ,SAAS,EAAE,EAAE;KACd;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,CAAC;KACb;IACD,KAAK,EAAE;QACL,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,IAAI;KACX;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,IAAI;KACd;IACD,SAAS,EAAE;QACT,IAAI,EAAE,IAAI;KACX;CACF,EAAE;IACD,UAAU,EAAE,IAAI;CACjB,CAAC,CAAC;AAEH,8BAA8B;AAC9B,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,WAAU,IAAI;IACzC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,EAAE,CAAC;IAEhD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACvD,IAAI,EAAE,CAAC;IACT,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,KAAc,CAAC,CAAC;IACvB,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,8BAA8B;AAC9B,WAAW,CAAC,OAAO,CAAC,eAAe,GAAG,KAAK,WAAU,iBAAyB;IAC5E,OAAO,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,CAAS,OAAO,EAAE,WAAW,CAAC,CAAC"} \ No newline at end of file diff --git a/backend/dist/routes/adminRoutes.d.ts b/backend/dist/routes/adminRoutes.d.ts new file mode 100644 index 0000000000..fdffdc2f86 --- /dev/null +++ b/backend/dist/routes/adminRoutes.d.ts @@ -0,0 +1,3 @@ +declare const router: import("express-serve-static-core").Router; +export default router; +//# sourceMappingURL=adminRoutes.d.ts.map \ No newline at end of file diff --git a/backend/dist/routes/adminRoutes.d.ts.map b/backend/dist/routes/adminRoutes.d.ts.map new file mode 100644 index 0000000000..fdde70b8e8 --- /dev/null +++ b/backend/dist/routes/adminRoutes.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"adminRoutes.d.ts","sourceRoot":"","sources":["../../src/routes/adminRoutes.ts"],"names":[],"mappings":"AAkBA,QAAA,MAAM,MAAM,4CAAmB,CAAC;AA0BhC,eAAe,MAAM,CAAC"} \ No newline at end of file diff --git a/backend/dist/routes/adminRoutes.js b/backend/dist/routes/adminRoutes.js new file mode 100644 index 0000000000..8b9b16d3e7 --- /dev/null +++ b/backend/dist/routes/adminRoutes.js @@ -0,0 +1,25 @@ +import express from 'express'; +import { adminLogin, adminLogout, getAdminProfile, getAllCategories, getCategoryById, createCategory, updateCategory, deleteCategory, getAllItems, getItemById, createItem, updateItem, deleteItem } from '../controllers/adminController.js'; +import { authenticateToken } from '../middleware/auth.js'; +const router = express.Router(); +// Public routes (no authentication required) +router.post('/login', adminLogin); +// Protected routes (authentication required) +router.use(authenticateToken); +// Admin profile +router.get('/profile', getAdminProfile); +router.post('/logout', adminLogout); +// Category management +router.get('/categories', getAllCategories); +router.get('/categories/:id', getCategoryById); +router.post('/categories', createCategory); +router.put('/categories/:id', updateCategory); +router.delete('/categories/:id', deleteCategory); +// Item management +router.get('/items', getAllItems); +router.get('/items/:id', getItemById); +router.post('/items', createItem); +router.put('/items/:id', updateItem); +router.delete('/items/:id', deleteItem); +export default router; +//# sourceMappingURL=adminRoutes.js.map \ No newline at end of file diff --git a/backend/dist/routes/adminRoutes.js.map b/backend/dist/routes/adminRoutes.js.map new file mode 100644 index 0000000000..a62e5af1ee --- /dev/null +++ b/backend/dist/routes/adminRoutes.js.map @@ -0,0 +1 @@ +{"version":3,"file":"adminRoutes.js","sourceRoot":"","sources":["../../src/routes/adminRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EACL,UAAU,EACV,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,cAAc,EACd,cAAc,EACd,WAAW,EACX,WAAW,EACX,UAAU,EACV,UAAU,EACV,UAAU,EACX,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AAEhC,6CAA6C;AAC7C,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAElC,6CAA6C;AAC7C,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAE9B,gBAAgB;AAChB,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AACxC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAEpC,sBAAsB;AACtB,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;AAC5C,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;AAC/C,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AAC3C,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;AAEjD,kBAAkB;AAClB,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAClC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AACtC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAClC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAExC,eAAe,MAAM,CAAC"} \ No newline at end of file diff --git a/backend/dist/services/createAdmin.d.ts b/backend/dist/services/createAdmin.d.ts new file mode 100644 index 0000000000..7d72260a1e --- /dev/null +++ b/backend/dist/services/createAdmin.d.ts @@ -0,0 +1,2 @@ +export {}; +//# sourceMappingURL=createAdmin.d.ts.map \ No newline at end of file diff --git a/backend/dist/services/createAdmin.d.ts.map b/backend/dist/services/createAdmin.d.ts.map new file mode 100644 index 0000000000..0573163d0a --- /dev/null +++ b/backend/dist/services/createAdmin.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"createAdmin.d.ts","sourceRoot":"","sources":["../../src/services/createAdmin.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/backend/dist/services/createAdmin.js b/backend/dist/services/createAdmin.js new file mode 100644 index 0000000000..7f1d316144 --- /dev/null +++ b/backend/dist/services/createAdmin.js @@ -0,0 +1,34 @@ +import connectDB from '../config/database.js'; +import { Admin } from '../models/Admin.js'; +import { config } from '../config/environment.js'; +import { logger } from '../utils/logger.js'; +const createInitialAdmin = async () => { + try { + await connectDB(); + // Check if admin already exists + const existingAdmin = await Admin.findOne({ username: config.ADMIN_USERNAME }); + if (existingAdmin) { + logger.info('Admin user already exists', 'CreateAdmin'); + process.exit(0); + } + // Create initial admin user + const admin = new Admin({ + username: config.ADMIN_USERNAME, + password: config.ADMIN_PASSWORD, + email: config.ADMIN_EMAIL, + isActive: true + }); + await admin.save(); + logger.info('Initial admin user created successfully', 'CreateAdmin', { + username: config.ADMIN_USERNAME, + email: config.ADMIN_EMAIL, + }); + process.exit(0); + } + catch (error) { + logger.error('Error creating admin user', 'CreateAdmin', error); + process.exit(1); + } +}; +createInitialAdmin(); +//# sourceMappingURL=createAdmin.js.map \ No newline at end of file diff --git a/backend/dist/services/createAdmin.js.map b/backend/dist/services/createAdmin.js.map new file mode 100644 index 0000000000..d1fe0c169a --- /dev/null +++ b/backend/dist/services/createAdmin.js.map @@ -0,0 +1 @@ +{"version":3,"file":"createAdmin.js","sourceRoot":"","sources":["../../src/services/createAdmin.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,kBAAkB,GAAG,KAAK,IAAI,EAAE;IACpC,IAAI,CAAC;QACH,MAAM,SAAS,EAAE,CAAC;QAElB,gCAAgC;QAChC,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;QAC/E,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,aAAa,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,4BAA4B;QAC5B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;YACtB,QAAQ,EAAE,MAAM,CAAC,cAAc;YAC/B,QAAQ,EAAE,MAAM,CAAC,cAAc;YAC/B,KAAK,EAAE,MAAM,CAAC,WAAW;YACzB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QAEH,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE,aAAa,EAAE;YACpE,QAAQ,EAAE,MAAM,CAAC,cAAc;YAC/B,KAAK,EAAE,MAAM,CAAC,WAAW;SAC1B,CAAC,CAAC;QAEH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,aAAa,EAAE,KAAc,CAAC,CAAC;QACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,kBAAkB,EAAE,CAAC"} \ No newline at end of file diff --git a/backend/dist/services/seedDb.js b/backend/dist/services/seedDb.js index eaff063bb2..eb6dfb1d04 100644 --- a/backend/dist/services/seedDb.js +++ b/backend/dist/services/seedDb.js @@ -1,12 +1,12 @@ // /backend/src/services/seedDb.ts import mongoose from 'mongoose'; -import dotenv from 'dotenv'; import path from 'path'; import fs from 'fs'; import { fileURLToPath } from 'url'; import { Item } from '../models/Item.js'; import { Category } from '../models/Category.js'; -dotenv.config(); +import { config } from '../config/environment.js'; +import { logger } from '../utils/logger.js'; // Get __dirname equivalent for ES modules const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); @@ -17,21 +17,18 @@ const readJsonFile = (filePath) => { return JSON.parse(fileContent); } catch (error) { - console.error(`Error reading or parsing file: ${filePath}`, error); + logger.error(`Error reading or parsing file: ${filePath}`, 'SeedDB', error); return null; } }; const seedData = async () => { try { - if (!process.env.MONGODB_URI) { - throw new Error('MONGODB_URI is not defined in .env file'); - } - await mongoose.connect(process.env.MONGODB_URI); - console.log('Connected to MongoDB'); + await mongoose.connect(config.MONGODB_URI); + logger.info('Connected to MongoDB', 'SeedDB'); // Clear existing data to prevent duplicates on re-seed await Item.deleteMany({}); await Category.deleteMany({}); - console.log('Existing data cleared.'); + logger.info('Existing data cleared', 'SeedDB'); // Step 1: Read and seed Category data from JSON files const categoriesPath = path.join(__dirname, '../../data/categories'); const categoryFiles = fs.readdirSync(categoriesPath).filter(file => file.endsWith('.json')); @@ -39,7 +36,7 @@ const seedData = async () => { const categoryData = readJsonFile(path.join(categoriesPath, file)); if (categoryData) { await mongoose.connection.collection('categories').insertOne(categoryData); - console.log(`Category "${categoryData.name}" seeded.`); + logger.info(`Category "${categoryData.name}" seeded`, 'SeedDB'); } } // Step 2: Read and seed Item data from JSON files @@ -49,14 +46,14 @@ const seedData = async () => { const itemsData = readJsonFile(path.join(itemsPath, file)); if (itemsData && Array.isArray(itemsData)) { await Item.insertMany(itemsData); - console.log(`Items from file "${file}" seeded.`); + logger.info(`Items from file "${file}" seeded`, 'SeedDB'); } } - console.log('Database seeding complete!'); + logger.info('Database seeding complete!', 'SeedDB'); mongoose.connection.close(); } catch (error) { - console.error('Database seeding failed:', error); + logger.error('Database seeding failed', 'SeedDB', error); mongoose.connection.close(); } }; diff --git a/backend/dist/services/seedDb.js.map b/backend/dist/services/seedDb.js.map index 49f64d82cd..4c29ebada3 100644 --- a/backend/dist/services/seedDb.js.map +++ b/backend/dist/services/seedDb.js.map @@ -1 +1 @@ -{"version":3,"file":"seedDb.js","sourceRoot":"","sources":["../../src/services/seedDb.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"seedDb.js","sourceRoot":"","sources":["../../src/services/seedDb.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/backend/dist/utils/errors.d.ts b/backend/dist/utils/errors.d.ts new file mode 100644 index 0000000000..21d3bd6be1 --- /dev/null +++ b/backend/dist/utils/errors.d.ts @@ -0,0 +1,24 @@ +export declare class AppError extends Error { + readonly statusCode: number; + readonly isOperational: boolean; + constructor(message: string, statusCode?: number, isOperational?: boolean); +} +export declare class ValidationError extends AppError { + constructor(message: string); +} +export declare class AuthenticationError extends AppError { + constructor(message?: string); +} +export declare class AuthorizationError extends AppError { + constructor(message?: string); +} +export declare class NotFoundError extends AppError { + constructor(message?: string); +} +export declare class ConflictError extends AppError { + constructor(message?: string); +} +export declare class DatabaseError extends AppError { + constructor(message?: string); +} +//# sourceMappingURL=errors.d.ts.map \ No newline at end of file diff --git a/backend/dist/utils/errors.d.ts.map b/backend/dist/utils/errors.d.ts.map new file mode 100644 index 0000000000..1fa2524adc --- /dev/null +++ b/backend/dist/utils/errors.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,QAAS,SAAQ,KAAK;IACjC,SAAgB,UAAU,EAAE,MAAM,CAAC;IACnC,SAAgB,aAAa,EAAE,OAAO,CAAC;gBAE3B,OAAO,EAAE,MAAM,EAAE,UAAU,GAAE,MAAY,EAAE,aAAa,GAAE,OAAc;CAYrF;AAED,qBAAa,eAAgB,SAAQ,QAAQ;gBAC/B,OAAO,EAAE,MAAM;CAG5B;AAED,qBAAa,mBAAoB,SAAQ,QAAQ;gBACnC,OAAO,GAAE,MAAgC;CAGtD;AAED,qBAAa,kBAAmB,SAAQ,QAAQ;gBAClC,OAAO,GAAE,MAAwB;CAG9C;AAED,qBAAa,aAAc,SAAQ,QAAQ;gBAC7B,OAAO,GAAE,MAA6B;CAGnD;AAED,qBAAa,aAAc,SAAQ,QAAQ;gBAC7B,OAAO,GAAE,MAA4B;CAGlD;AAED,qBAAa,aAAc,SAAQ,QAAQ;gBAC7B,OAAO,GAAE,MAAoC;CAG1D"} \ No newline at end of file diff --git a/backend/dist/utils/errors.js b/backend/dist/utils/errors.js new file mode 100644 index 0000000000..3be6841c2f --- /dev/null +++ b/backend/dist/utils/errors.js @@ -0,0 +1,45 @@ +export class AppError extends Error { + statusCode; + isOperational; + constructor(message, statusCode = 500, isOperational = true) { + super(message); + this.statusCode = statusCode; + this.isOperational = isOperational; + // Maintains proper stack trace for where our error was thrown (only available on V8) + if (Error.captureStackTrace) { + Error.captureStackTrace(this, AppError); + } + this.name = this.constructor.name; + } +} +export class ValidationError extends AppError { + constructor(message) { + super(message, 400); + } +} +export class AuthenticationError extends AppError { + constructor(message = 'Authentication failed') { + super(message, 401); + } +} +export class AuthorizationError extends AppError { + constructor(message = 'Access denied') { + super(message, 403); + } +} +export class NotFoundError extends AppError { + constructor(message = 'Resource not found') { + super(message, 404); + } +} +export class ConflictError extends AppError { + constructor(message = 'Resource conflict') { + super(message, 409); + } +} +export class DatabaseError extends AppError { + constructor(message = 'Database operation failed') { + super(message, 500, false); + } +} +//# sourceMappingURL=errors.js.map \ No newline at end of file diff --git a/backend/dist/utils/errors.js.map b/backend/dist/utils/errors.js.map new file mode 100644 index 0000000000..c5e6f86b42 --- /dev/null +++ b/backend/dist/utils/errors.js.map @@ -0,0 +1 @@ +{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjB,UAAU,CAAS;IACnB,aAAa,CAAU;IAEvC,YAAY,OAAe,EAAE,aAAqB,GAAG,EAAE,gBAAyB,IAAI;QAClF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,qFAAqF;QACrF,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,QAAQ;IAC/C,YAAY,UAAkB,uBAAuB;QACnD,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,QAAQ;IAC9C,YAAY,UAAkB,eAAe;QAC3C,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,QAAQ;IACzC,YAAY,UAAkB,oBAAoB;QAChD,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,QAAQ;IACzC,YAAY,UAAkB,mBAAmB;QAC/C,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,QAAQ;IACzC,YAAY,UAAkB,2BAA2B;QACvD,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;CACF"} \ No newline at end of file diff --git a/backend/dist/utils/logger.d.ts b/backend/dist/utils/logger.d.ts new file mode 100644 index 0000000000..17400188cd --- /dev/null +++ b/backend/dist/utils/logger.d.ts @@ -0,0 +1,18 @@ +declare enum LogLevel { + ERROR = "ERROR", + WARN = "WARN", + INFO = "INFO", + DEBUG = "DEBUG" +} +declare class Logger { + private isDevelopment; + private formatLog; + private log; + error(message: string, context?: string, error?: Error, metadata?: Record): void; + warn(message: string, context?: string, metadata?: Record): void; + info(message: string, context?: string, metadata?: Record): void; + debug(message: string, context?: string, metadata?: Record): void; +} +export declare const logger: Logger; +export { LogLevel }; +//# sourceMappingURL=logger.d.ts.map \ No newline at end of file diff --git a/backend/dist/utils/logger.d.ts.map b/backend/dist/utils/logger.d.ts.map new file mode 100644 index 0000000000..172127d58c --- /dev/null +++ b/backend/dist/utils/logger.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,aAAK,QAAQ;IACX,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAWD,cAAM,MAAM;IACV,OAAO,CAAC,aAAa,CAA0C;IAE/D,OAAO,CAAC,SAAS;IAmBjB,OAAO,CAAC,GAAG;IA8BX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAItF,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAItE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAItE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAGxE;AAED,eAAO,MAAM,MAAM,QAAe,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,CAAC"} \ No newline at end of file diff --git a/backend/dist/utils/logger.js b/backend/dist/utils/logger.js new file mode 100644 index 0000000000..00c1b54550 --- /dev/null +++ b/backend/dist/utils/logger.js @@ -0,0 +1,66 @@ +var LogLevel; +(function (LogLevel) { + LogLevel["ERROR"] = "ERROR"; + LogLevel["WARN"] = "WARN"; + LogLevel["INFO"] = "INFO"; + LogLevel["DEBUG"] = "DEBUG"; +})(LogLevel || (LogLevel = {})); +class Logger { + isDevelopment = process.env.NODE_ENV === 'development'; + formatLog(entry) { + const timestamp = entry.timestamp; + const level = entry.level.padEnd(5); + const context = entry.context ? `[${entry.context}]` : ''; + const message = entry.message; + let logString = `${timestamp} ${level} ${context} ${message}`; + if (entry.error && this.isDevelopment) { + logString += `\n${entry.error.stack}`; + } + if (entry.metadata && Object.keys(entry.metadata).length > 0) { + logString += `\n${JSON.stringify(entry.metadata, null, 2)}`; + } + return logString; + } + log(level, message, context, error, metadata) { + const entry = { + timestamp: new Date().toISOString(), + level, + message, + context, + error, + metadata, + }; + const formattedLog = this.formatLog(entry); + switch (level) { + case LogLevel.ERROR: + console.error(formattedLog); + break; + case LogLevel.WARN: + console.warn(formattedLog); + break; + case LogLevel.INFO: + console.info(formattedLog); + break; + case LogLevel.DEBUG: + if (this.isDevelopment) { + console.debug(formattedLog); + } + break; + } + } + error(message, context, error, metadata) { + this.log(LogLevel.ERROR, message, context, error, metadata); + } + warn(message, context, metadata) { + this.log(LogLevel.WARN, message, context, undefined, metadata); + } + info(message, context, metadata) { + this.log(LogLevel.INFO, message, context, undefined, metadata); + } + debug(message, context, metadata) { + this.log(LogLevel.DEBUG, message, context, undefined, metadata); + } +} +export const logger = new Logger(); +export { LogLevel }; +//# sourceMappingURL=logger.js.map \ No newline at end of file diff --git a/backend/dist/utils/logger.js.map b/backend/dist/utils/logger.js.map new file mode 100644 index 0000000000..6f7ff1ca55 --- /dev/null +++ b/backend/dist/utils/logger.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/backend/dist/utils/response.d.ts b/backend/dist/utils/response.d.ts new file mode 100644 index 0000000000..f39d663ba8 --- /dev/null +++ b/backend/dist/utils/response.d.ts @@ -0,0 +1,24 @@ +export interface ApiResponse { + success: boolean; + data?: T; + error?: { + message: string; + code?: string; + details?: any; + }; + meta?: { + timestamp: string; + path: string; + method: string; + }; +} +export declare class ResponseBuilder { + static success(data: T, req?: any): ApiResponse; + static error(message: string, code?: string, details?: any, req?: any): ApiResponse; + static notFound(message?: string, req?: any): ApiResponse; + static validationError(message: string, details?: any, req?: any): ApiResponse; + static unauthorized(message?: string, req?: any): ApiResponse; + static forbidden(message?: string, req?: any): ApiResponse; + static internalError(message?: string, req?: any): ApiResponse; +} +//# sourceMappingURL=response.d.ts.map \ No newline at end of file diff --git a/backend/dist/utils/response.d.ts.map b/backend/dist/utils/response.d.ts.map new file mode 100644 index 0000000000..0f3ac8f6f0 --- /dev/null +++ b/backend/dist/utils/response.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/utils/response.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,GAAG,CAAC;KACf,CAAC;IACF,IAAI,CAAC,EAAE;QACL,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,qBAAa,eAAe;IAC1B,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC;IAiBrD,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,WAAW;IAqBnF,MAAM,CAAC,QAAQ,CAAC,OAAO,GAAE,MAA6B,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,WAAW;IAI/E,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,WAAW;IAI9E,MAAM,CAAC,YAAY,CAAC,OAAO,GAAE,MAAuB,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,WAAW;IAI7E,MAAM,CAAC,SAAS,CAAC,OAAO,GAAE,MAAoB,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,WAAW;IAIvE,MAAM,CAAC,aAAa,CAAC,OAAO,GAAE,MAAgC,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,WAAW;CAGxF"} \ No newline at end of file diff --git a/backend/dist/utils/response.js b/backend/dist/utils/response.js new file mode 100644 index 0000000000..cc842857f8 --- /dev/null +++ b/backend/dist/utils/response.js @@ -0,0 +1,50 @@ +export class ResponseBuilder { + static success(data, req) { + const response = { + success: true, + data, + }; + if (req) { + response.meta = { + timestamp: new Date().toISOString(), + path: req.originalUrl || req.url, + method: req.method, + }; + } + return response; + } + static error(message, code, details, req) { + const response = { + success: false, + error: { + message, + code, + details, + }, + }; + if (req) { + response.meta = { + timestamp: new Date().toISOString(), + path: req.originalUrl || req.url, + method: req.method, + }; + } + return response; + } + static notFound(message = 'Resource not found', req) { + return this.error(message, 'NOT_FOUND', undefined, req); + } + static validationError(message, details, req) { + return this.error(message, 'VALIDATION_ERROR', details, req); + } + static unauthorized(message = 'Unauthorized', req) { + return this.error(message, 'UNAUTHORIZED', undefined, req); + } + static forbidden(message = 'Forbidden', req) { + return this.error(message, 'FORBIDDEN', undefined, req); + } + static internalError(message = 'Internal server error', req) { + return this.error(message, 'INTERNAL_ERROR', undefined, req); + } +} +//# sourceMappingURL=response.js.map \ No newline at end of file diff --git a/backend/dist/utils/response.js.map b/backend/dist/utils/response.js.map new file mode 100644 index 0000000000..02c21059be --- /dev/null +++ b/backend/dist/utils/response.js.map @@ -0,0 +1 @@ +{"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/utils/response.ts"],"names":[],"mappings":"AAeA,MAAM,OAAO,eAAe;IAC1B,MAAM,CAAC,OAAO,CAAI,IAAO,EAAE,GAAS;QAClC,MAAM,QAAQ,GAAmB;YAC/B,OAAO,EAAE,IAAI;YACb,IAAI;SACL,CAAC;QAEF,IAAI,GAAG,EAAE,CAAC;YACR,QAAQ,CAAC,IAAI,GAAG;gBACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,IAAI,EAAE,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,GAAG;gBAChC,MAAM,EAAE,GAAG,CAAC,MAAM;aACnB,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,OAAe,EAAE,IAAa,EAAE,OAAa,EAAE,GAAS;QACnE,MAAM,QAAQ,GAAgB;YAC5B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,OAAO;gBACP,IAAI;gBACJ,OAAO;aACR;SACF,CAAC;QAEF,IAAI,GAAG,EAAE,CAAC;YACR,QAAQ,CAAC,IAAI,GAAG;gBACd,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,IAAI,EAAE,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,GAAG;gBAChC,MAAM,EAAE,GAAG,CAAC,MAAM;aACnB,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,UAAkB,oBAAoB,EAAE,GAAS;QAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,OAAe,EAAE,OAAa,EAAE,GAAS;QAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,UAAkB,cAAc,EAAE,GAAS;QAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,UAAkB,WAAW,EAAE,GAAS;QACvD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,UAAkB,uBAAuB,EAAE,GAAS;QACvE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IAC/D,CAAC;CACF"} \ No newline at end of file diff --git a/backend/package.json b/backend/package.json index 457e77a703..77384fdd7d 100644 --- a/backend/package.json +++ b/backend/package.json @@ -9,33 +9,35 @@ "build": "tsc", "build:watch": "tsc --watch", "clean": "rm -rf dist", - "seed": "tsx src/services/seedDb.ts" + "seed": "tsx src/services/seedDb.ts", + "create-admin": "tsx src/services/createAdmin.ts", + "lint": "eslint src/**/*.ts", + "lint:fix": "eslint src/**/*.ts --fix", + "type-check": "tsc --noEmit" }, "author": "", "license": "ISC", "dependencies": { - "axios": "^1.7.2", - "cookie-parser": "^1.4.7", + "bcryptjs": "^3.0.2", "cors": "^2.8.5", "dotenv": "^16.6.1", "express": "^4.19.2", - "express-session": "^1.18.2", + "jsonwebtoken": "^9.0.2", "mongoose": "^8.4.1" }, "keywords": [], "type": "module", "devDependencies": { - "@types/cookie-parser": "^1.4.9", + "@types/bcryptjs": "^2.4.6", "@types/cors": "^2.8.19", "@types/express": "^4.17.21", - "@types/express-session": "^1.18.2", + "@types/jsonwebtoken": "^9.0.10", "@types/mongoose": "^5.11.96", "@types/node": "^20.14.2", "@typescript-eslint/eslint-plugin": "^8.39.0", "@typescript-eslint/parser": "^8.39.0", "eslint": "^8.57.0", "nodemon": "^3.1.3", - "ts-node": "^10.9.2", "tsx": "^4.20.4", "typescript": "^5.4.5" } diff --git a/backend/src/config/database.ts b/backend/src/config/database.ts index ca668660c9..2792a90c7f 100644 --- a/backend/src/config/database.ts +++ b/backend/src/config/database.ts @@ -1,35 +1,33 @@ import mongoose from 'mongoose'; +import { config } from './environment.js'; +import { logger } from '../utils/logger.js'; const connectDB = async (): Promise => { try { - const mongoURI = process.env.MONGODB_URI; + const mongoURI = config.MONGODB_URI; - if (!mongoURI) { - throw new Error('MONGODB_URI is not defined in environment variables'); - } - const conn = await mongoose.connect(mongoURI); - console.log(`MongoDB Connected: ${conn.connection.host}`); + logger.info(`MongoDB Connected: ${conn.connection.host}`, 'Database'); // Handle connection events mongoose.connection.on('error', (err) => { - console.error('MongoDB connection error:', err); + logger.error('MongoDB connection error', 'Database', err); }); mongoose.connection.on('disconnected', () => { - console.log('MongoDB disconnected'); + logger.warn('MongoDB disconnected', 'Database'); }); // Graceful shutdown process.on('SIGINT', async () => { await mongoose.connection.close(); - console.log('MongoDB connection closed through app termination'); + logger.info('MongoDB connection closed through app termination', 'Database'); process.exit(0); }); } catch (error) { - console.error('Error connecting to MongoDB:', error); + logger.error('Error connecting to MongoDB', 'Database', error as Error); process.exit(1); } }; diff --git a/backend/src/config/environment.ts b/backend/src/config/environment.ts new file mode 100644 index 0000000000..226d4397b6 --- /dev/null +++ b/backend/src/config/environment.ts @@ -0,0 +1,48 @@ +import dotenv from 'dotenv'; + +// Load environment variables +dotenv.config(); + +interface EnvironmentConfig { + NODE_ENV: string; + PORT: number; + MONGODB_URI: string; + FRONTEND_URI: string; + JWT_SECRET: string; + ADMIN_USERNAME: string; + ADMIN_PASSWORD: string; + ADMIN_EMAIL: string; +} + +const requiredEnvVars = [ + 'MONGODB_URI', + 'FRONTEND_URI', + 'JWT_SECRET', + 'ADMIN_USERNAME', + 'ADMIN_PASSWORD', + 'ADMIN_EMAIL', +] as const; + +const validateEnvironment = (): EnvironmentConfig => { + const missingVars = requiredEnvVars.filter(varName => !process.env[varName]); + + if (missingVars.length > 0) { + throw new Error( + `Missing required environment variables: ${missingVars.join(', ')}\n` + + 'Please check your .env file and ensure all required variables are set.' + ); + } + + return { + NODE_ENV: process.env.NODE_ENV || 'development', + PORT: parseInt(process.env.PORT || '8888', 10), + MONGODB_URI: process.env.MONGODB_URI!, + FRONTEND_URI: process.env.FRONTEND_URI!, + JWT_SECRET: process.env.JWT_SECRET!, + ADMIN_USERNAME: process.env.ADMIN_USERNAME!, + ADMIN_PASSWORD: process.env.ADMIN_PASSWORD!, + ADMIN_EMAIL: process.env.ADMIN_EMAIL!, + }; +}; + +export const config = validateEnvironment(); diff --git a/backend/src/controllers/adminController.ts b/backend/src/controllers/adminController.ts new file mode 100644 index 0000000000..8fb5eb6f1c --- /dev/null +++ b/backend/src/controllers/adminController.ts @@ -0,0 +1,360 @@ +import { Request, Response } from 'express'; +import jwt from 'jsonwebtoken'; +import { Admin } from '../models/Admin.js'; +import { Category } from '../models/Category.js'; +import { Item } from '../models/Item.js'; +import { config } from '../config/environment.js'; +import { ResponseBuilder } from '../utils/response.js'; +import { logger } from '../utils/logger.js'; + +// Admin Authentication +export const adminLogin = async (req: Request, res: Response) => { + try { + const { username, password } = req.body; + + if (!username || !password) { + const response = ResponseBuilder.validationError('Username and password are required', { + received: { username: !!username, password: !!password }, + }, req); + return res.status(400).json(response); + } + + // Find admin by username + const admin = await Admin.findOne({ username, isActive: true }); + if (!admin) { + const response = ResponseBuilder.unauthorized('Invalid credentials', req); + return res.status(401).json(response); + } + + // Check password + const isPasswordValid = await admin.comparePassword(password); + if (!isPasswordValid) { + const response = ResponseBuilder.unauthorized('Invalid credentials', req); + return res.status(401).json(response); + } + + // Update last login + admin.lastLogin = new Date(); + await admin.save(); + + // Generate JWT token + const token = jwt.sign( + { adminId: admin._id }, + config.JWT_SECRET, + { expiresIn: '24h' } + ); + + // Return admin info (without password) and token + const adminInfo = { + id: admin._id, + username: admin.username, + email: admin.email, + lastLogin: admin.lastLogin + }; + + const response = ResponseBuilder.success({ + message: 'Login successful', + admin: adminInfo, + token + }, req); + + res.json(response); + } catch (error) { + logger.error('Admin login error', 'AdminController', error as Error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; + +export const adminLogout = async (req: Request, res: Response) => { + try { + // In a real app, you might want to blacklist the token + // For now, we'll just return success + const response = ResponseBuilder.success({ message: 'Logout successful' }, req); + res.json(response); + } catch (error) { + logger.error('Admin logout error', 'AdminController', error as Error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; + +export const getAdminProfile = async (req: Request, res: Response) => { + try { + const admin = req.admin; + + if (!admin) { + const response = ResponseBuilder.unauthorized('Admin not found', req); + return res.status(401).json(response); + } + + const response = ResponseBuilder.success({ + admin: { + id: admin._id, + username: admin.username, + email: admin.email, + lastLogin: admin.lastLogin + } + }, req); + + res.json(response); + } catch (error) { + logger.error('Get admin profile error', 'AdminController', error as Error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; + +// Category Management +export const getAllCategories = async (req: Request, res: Response) => { + try { + const categories = await Category.find().sort({ name: 1 }); + const response = ResponseBuilder.success({ categories }, req); + res.json(response); + } catch (error) { + logger.error('Get categories error', 'AdminController', error as Error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; + +export const getCategoryById = async (req: Request, res: Response) => { + try { + const { id } = req.params; + const category = await Category.findOne({ id }); + + if (!category) { + const response = ResponseBuilder.notFound('Category not found', req); + return res.status(404).json(response); + } + + const response = ResponseBuilder.success({ category }, req); + res.json(response); + } catch (error) { + logger.error('Get category error', 'AdminController', error as Error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; + +export const createCategory = async (req: Request, res: Response) => { + try { + const categoryData = req.body; + + // Check if category with same ID already exists + const existingCategory = await Category.findOne({ id: categoryData.id }); + if (existingCategory) { + const response = ResponseBuilder.error('Category with this ID already exists', 'CONFLICT', { + existingId: categoryData.id, + }, req); + return res.status(409).json(response); + } + + const category = new Category(categoryData); + await category.save(); + + const response = ResponseBuilder.success({ + message: 'Category created successfully', + category + }, req); + + res.status(201).json(response); + } catch (error) { + logger.error('Create category error', 'AdminController', error as Error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; + +export const updateCategory = async (req: Request, res: Response) => { + try { + const { id } = req.params; + const updateData = req.body; + + const category = await Category.findOneAndUpdate( + { id }, + updateData, + { new: true, runValidators: true } + ); + + if (!category) { + const response = ResponseBuilder.notFound('Category not found', req); + return res.status(404).json(response); + } + + const response = ResponseBuilder.success({ + message: 'Category updated successfully', + category + }, req); + + res.json(response); + } catch (error) { + logger.error('Update category error', 'AdminController', error as Error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; + +export const deleteCategory = async (req: Request, res: Response) => { + try { + const { id } = req.params; + + // Check if category exists + const category = await Category.findOne({ id }); + if (!category) { + const response = ResponseBuilder.notFound('Category not found', req); + return res.status(404).json(response); + } + + // Check if there are items in this category + const itemCount = await Item.countDocuments({ categoryId: id }); + if (itemCount > 0) { + const response = ResponseBuilder.error('Cannot delete category with existing items', 'CONFLICT', { + itemCount + }, req); + return res.status(409).json(response); + } + + await Category.deleteOne({ id }); + + const response = ResponseBuilder.success({ message: 'Category deleted successfully' }, req); + res.json(response); + } catch (error) { + logger.error('Delete category error', 'AdminController', error as Error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; + +// Item Management +export const getAllItems = async (req: Request, res: Response) => { + try { + const { categoryId } = req.query; + let query = {}; + + if (categoryId) { + query = { categoryId }; + } + + const items = await Item.find(query).sort({ name: 1 }); + const response = ResponseBuilder.success({ items }, req); + res.json(response); + } catch (error) { + logger.error('Get items error', 'AdminController', error as Error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; + +export const getItemById = async (req: Request, res: Response) => { + try { + const { id } = req.params; + const item = await Item.findOne({ id }); + + if (!item) { + const response = ResponseBuilder.notFound('Item not found', req); + return res.status(404).json(response); + } + + const response = ResponseBuilder.success({ item }, req); + res.json(response); + } catch (error) { + logger.error('Get item error', 'AdminController', error as Error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; + +export const createItem = async (req: Request, res: Response) => { + try { + const itemData = req.body; + + // Check if item with same ID already exists + const existingItem = await Item.findOne({ id: itemData.id }); + if (existingItem) { + const response = ResponseBuilder.error('Item with this ID already exists', 'CONFLICT', { + existingId: itemData.id, + }, req); + return res.status(409).json(response); + } + + // Verify category exists + const category = await Category.findOne({ id: itemData.categoryId }); + if (!category) { + const response = ResponseBuilder.notFound('Category not found', req); + return res.status(404).json(response); + } + + const item = new Item(itemData); + await item.save(); + + const response = ResponseBuilder.success({ + message: 'Item created successfully', + item + }, req); + + res.status(201).json(response); + } catch (error) { + logger.error('Create item error', 'AdminController', error as Error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; + +export const updateItem = async (req: Request, res: Response) => { + try { + const { id } = req.params; + const updateData = req.body; + + // If categoryId is being updated, verify the new category exists + if (updateData.categoryId) { + const category = await Category.findOne({ id: updateData.categoryId }); + if (!category) { + const response = ResponseBuilder.notFound('Category not found', req); + return res.status(404).json(response); + } + } + + const item = await Item.findOneAndUpdate( + { id }, + updateData, + { new: true, runValidators: true } + ); + + if (!item) { + const response = ResponseBuilder.notFound('Item not found', req); + return res.status(404).json(response); + } + + const response = ResponseBuilder.success({ + message: 'Item updated successfully', + item + }, req); + + res.json(response); + } catch (error) { + logger.error('Update item error', 'AdminController', error as Error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; + +export const deleteItem = async (req: Request, res: Response) => { + try { + const { id } = req.params; + + const item = await Item.findOneAndDelete({ id }); + + if (!item) { + const response = ResponseBuilder.notFound('Item not found', req); + return res.status(404).json(response); + } + + const response = ResponseBuilder.success({ message: 'Item deleted successfully' }, req); + res.json(response); + } catch (error) { + logger.error('Delete item error', 'AdminController', error as Error); + const response = ResponseBuilder.internalError('Internal server error', req); + res.status(500).json(response); + } +}; diff --git a/backend/src/controllers/quizController.ts b/backend/src/controllers/quizController.ts index ae0d99f9da..4d3d7b08e1 100644 --- a/backend/src/controllers/quizController.ts +++ b/backend/src/controllers/quizController.ts @@ -2,6 +2,8 @@ import { Request, Response } from 'express'; import { Item } from '../models/Item.js'; import { Category } from '../models/Category.js'; import { QuizCheckResult, QuizItemsResponse } from '../types/quiz.js'; +import { ResponseBuilder } from '../utils/response.js'; +import { logger } from '../utils/logger.js'; // Helper function to shuffle an array const shuffleArray = (array: T[]): T[] => { @@ -16,16 +18,15 @@ const shuffleArray = (array: T[]): T[] => { export const getCategories = async (req: Request, res: Response) => { try { const categories = await Category.find({}); - res.status(200).json({ - success: true, - data: categories - }); + const response = ResponseBuilder.success(categories, req); + res.status(200).json(response); } catch (error) { const errorMessage = error instanceof Error ? error.message : 'Unknown error'; - res.status(500).json({ - success: false, - error: { message: 'Error fetching categories', details: errorMessage } - }); + logger.error('Error fetching categories', 'QuizController', error as Error); + const response = ResponseBuilder.error('Error fetching categories', 'FETCH_ERROR', { + details: errorMessage + }, req); + res.status(500).json(response); } }; @@ -36,22 +37,19 @@ export const getCategoryItems = async (req: Request, res: Response) => { const items = await Item.find({ categoryId }).sort({ value: 1 }); if (items.length === 0) { - return res.status(404).json({ - success: false, - error: { message: 'No items found for this category.' } - }); + const response = ResponseBuilder.notFound('No items found for this category', req); + return res.status(404).json(response); } - res.status(200).json({ - success: true, - data: items - }); + const response = ResponseBuilder.success(items, req); + res.status(200).json(response); } catch (error) { const errorMessage = error instanceof Error ? error.message : 'Unknown error'; - res.status(500).json({ - success: false, - error: { message: 'Error fetching category items', details: errorMessage } - }); + logger.error('Error fetching category items', 'QuizController', error as Error); + const response = ResponseBuilder.error('Error fetching category items', 'FETCH_ERROR', { + details: errorMessage + }, req); + res.status(500).json(response); } }; @@ -66,17 +64,16 @@ export const getQuizItems = async (req: Request, res: Response) => { ]); if (!category) { - return res.status(404).json({ - success: false, - error: { message: 'Category not found.' } - }); + const response = ResponseBuilder.notFound('Category not found', req); + return res.status(404).json(response); } if (items.length < 5) { - return res.status(404).json({ - success: false, - error: { message: 'Not enough items for this quiz.' } - }); + const response = ResponseBuilder.error('Not enough items for this quiz', 'INSUFFICIENT_ITEMS', { + required: 5, + available: items.length, + }, req); + return res.status(404).json(response); } const shuffledItems = shuffleArray(items); @@ -97,16 +94,15 @@ export const getQuizItems = async (req: Request, res: Response) => { unitVisible: category.get('unitVisible') || false, }; - res.status(200).json({ - success: true, - data: responseData - }); + const response = ResponseBuilder.success(responseData, req); + res.status(200).json(response); } catch (error) { const errorMessage = error instanceof Error ? error.message : 'Unknown error'; - res.status(500).json({ - success: false, - error: { message: 'Error fetching quiz items', details: errorMessage } - }); + logger.error('Error fetching quiz items', 'QuizController', error as Error); + const response = ResponseBuilder.error('Error fetching quiz items', 'FETCH_ERROR', { + details: errorMessage + }, req); + res.status(500).json(response); } }; @@ -126,15 +122,14 @@ export const checkAnswers = async (req: Request, res: Response) => { const result: QuizCheckResult = { isCorrect }; - res.status(200).json({ - success: true, - data: result - }); + const response = ResponseBuilder.success(result, req); + res.status(200).json(response); } catch (error) { const errorMessage = error instanceof Error ? error.message : 'Unknown error'; - res.status(500).json({ - success: false, - error: { message: 'Error checking answers', details: errorMessage } - }); + logger.error('Error checking answers', 'QuizController', error as Error); + const response = ResponseBuilder.error('Error checking answers', 'CHECK_ERROR', { + details: errorMessage + }, req); + res.status(500).json(response); } }; \ No newline at end of file diff --git a/backend/src/index.ts b/backend/src/index.ts index ebc427cd75..cf2ca57dcf 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -1,41 +1,22 @@ // server/src/index.ts -import "dotenv/config"; import express, { Request, Response } from "express"; import cors from "cors"; import mongoose from "mongoose"; import quizRoutes from './routes/quizRoutes.js'; +import adminRoutes from './routes/adminRoutes.js'; import { errorHandler, notFound } from './middleware/errorHandler.js'; import connectDB from './config/database.js'; - -// Validate that all necessary environment variables exist -const requiredEnvVars = [ - "MONGODB_URI", - "FRONTEND_URI", -]; - -// Log environment info for debugging -console.log("Environment:", process.env.NODE_ENV || "development"); -console.log( - "Frontend URI:", - process.env.FRONTEND_URI || "http://127.0.0.1:5173" -); -console.log("Backend Port:", process.env.PORT || 8888); - -for (const envVar of requiredEnvVars) { - if (!process.env[envVar]) { - console.error(`Error: The environment variable ${envVar} is missing`); - process.exit(1); - } -} +import { config } from './config/environment.js'; +import { logger } from './utils/logger.js'; const app = express(); -const port = process.env.PORT || 8888; +const port = config.PORT; // Middleware app.use( cors({ origin: [ - process.env.FRONTEND_URI || "http://127.0.0.1:5173", + config.FRONTEND_URI, "https://banganza.netlify.app", ], credentials: true, // Allow cookies @@ -50,9 +31,9 @@ app.get("/", (req: Request, res: Response) => { res.json({ message: "Backend server is running!", status: "ok", - environment: process.env.NODE_ENV || "development", + environment: config.NODE_ENV, timestamp: new Date().toISOString(), - frontend: process.env.FRONTEND_URI || "http://127.0.0.1:5173", + frontend: config.FRONTEND_URI, }); }); @@ -62,7 +43,7 @@ app.get("/health", (req: Request, res: Response) => { status: "ok", timestamp: new Date().toISOString(), uptime: process.uptime(), - environment: process.env.NODE_ENV || "development", + environment: config.NODE_ENV, database: mongoose.connection.readyState === 1 ? "connected" : "disconnected", }; @@ -77,6 +58,9 @@ app.get("/health", (req: Request, res: Response) => { // Use the new quiz routes app.use('/api/quiz', quizRoutes); +// Use admin routes +app.use('/api/admin', adminRoutes); + // 404 handler app.use(notFound); @@ -89,14 +73,14 @@ connectDB(); // Start the server app .listen(port, () => { - console.log(`Backend server is running on port ${port}`); - if (process.env.NODE_ENV === "production") { - console.log("Production mode enabled"); + logger.info(`Backend server is running on port ${port}`, 'Server'); + if (config.NODE_ENV === "production") { + logger.info("Production mode enabled", 'Server'); } else { - console.log(`Development mode: http://127.0.0.1:${port}`); + logger.info(`Development mode: http://127.0.0.1:${port}`, 'Server'); } }) .on("error", (err) => { - console.error("Error starting the server:", err); + logger.error("Error starting the server", 'Server', err); process.exit(1); }); \ No newline at end of file diff --git a/backend/src/middleware/auth.ts b/backend/src/middleware/auth.ts new file mode 100644 index 0000000000..8bf7a810ae --- /dev/null +++ b/backend/src/middleware/auth.ts @@ -0,0 +1,47 @@ +import { Request, Response, NextFunction } from 'express'; +import jwt from 'jsonwebtoken'; +import { Admin, IAdmin } from '../models/Admin.js'; +import { config } from '../config/environment.js'; +import { ResponseBuilder } from '../utils/response.js'; + +// Extend Express Request interface to include admin user +declare module 'express' { + interface Request { + admin?: IAdmin; + } +} + +export const authenticateToken = async (req: Request, res: Response, next: NextFunction): Promise => { + try { + const authHeader = req.headers.authorization; + const token = authHeader && authHeader.split(' ')[1]; // Bearer TOKEN + + if (!token) { + const response = ResponseBuilder.unauthorized('Access token required', req); + return res.status(401).json(response); + } + + const decoded = jwt.verify(token, config.JWT_SECRET) as { adminId: string }; + + // Find admin and check if still active + const admin = await Admin.findById(decoded.adminId).select('-password'); + if (!admin || !admin.isActive) { + const response = ResponseBuilder.unauthorized('Invalid or inactive admin account', req); + return res.status(401).json(response); + } + + req.admin = admin; + next(); + } catch (error) { + if (error instanceof jwt.JsonWebTokenError) { + const response = ResponseBuilder.unauthorized('Invalid token', req); + return res.status(403).json(response); + } + if (error instanceof jwt.TokenExpiredError) { + const response = ResponseBuilder.unauthorized('Token expired', req); + return res.status(401).json(response); + } + const response = ResponseBuilder.internalError('Authentication error', req); + return res.status(500).json(response); + } +}; diff --git a/backend/src/middleware/errorHandler.ts b/backend/src/middleware/errorHandler.ts index 1d4c15d6b2..18287b8acf 100644 --- a/backend/src/middleware/errorHandler.ts +++ b/backend/src/middleware/errorHandler.ts @@ -1,37 +1,47 @@ import { Request, Response, NextFunction } from 'express'; - -export interface AppError extends Error { - statusCode?: number; - isOperational?: boolean; -} +import { AppError } from '../utils/errors.js'; +import { ResponseBuilder } from '../utils/response.js'; +import { logger } from '../utils/logger.js'; export const errorHandler = ( - err: AppError, + err: Error | AppError, req: Request, res: Response, + // eslint-disable-next-line @typescript-eslint/no-unused-vars next: NextFunction -) => { - const statusCode = err.statusCode || 500; - const message = err.message || 'Internal Server Error'; +): void => { + let statusCode = 500; + let message = 'Internal Server Error'; + let isOperational = false; - // Log error for debugging - console.error(`Error ${statusCode}: ${message}`); - console.error(err.stack); + if (err instanceof AppError) { + statusCode = err.statusCode; + message = err.message; + isOperational = err.isOperational; + } - res.status(statusCode).json({ - success: false, - error: { - message, - ...(process.env.NODE_ENV === 'development' && { stack: err.stack }) - } + // Log error for debugging + logger.error(message, 'ErrorHandler', err, { + statusCode, + isOperational, + path: req.originalUrl, + method: req.method, + userAgent: req.get('User-Agent'), + ip: req.ip, }); + + // Don't leak error details in production + const errorResponse = ResponseBuilder.error( + message, + err instanceof AppError ? err.constructor.name : 'InternalError', + process.env.NODE_ENV === 'development' ? err.stack : undefined, + req + ); + + res.status(statusCode).json(errorResponse); }; -export const notFound = (req: Request, res: Response) => { - res.status(404).json({ - success: false, - error: { - message: `Route ${req.originalUrl} not found` - } - }); +export const notFound = (req: Request, res: Response): void => { + const response = ResponseBuilder.notFound(`Route ${req.originalUrl} not found`, req); + res.status(404).json(response); }; diff --git a/backend/src/middleware/validation.ts b/backend/src/middleware/validation.ts index 48689880c0..d6ad79993f 100644 --- a/backend/src/middleware/validation.ts +++ b/backend/src/middleware/validation.ts @@ -1,39 +1,41 @@ import { Request, Response, NextFunction } from 'express'; +import { ResponseBuilder } from '../utils/response.js'; -export const validateCategoryId = (req: Request, res: Response, next: NextFunction) => { +export const validateCategoryId = (req: Request, res: Response, next: NextFunction): void => { const { categoryId } = req.params; if (!categoryId || typeof categoryId !== 'string') { - return res.status(400).json({ - success: false, - error: { - message: 'Valid categoryId is required' - } - }); + const response = ResponseBuilder.validationError('Valid categoryId is required', { + received: categoryId, + type: typeof categoryId, + }, req); + res.status(400).json(response); + return; } next(); }; -export const validateQuizAnswers = (req: Request, res: Response, next: NextFunction) => { +export const validateQuizAnswers = (req: Request, res: Response, next: NextFunction): void => { const { userAnswers } = req.body; if (!Array.isArray(userAnswers) || userAnswers.length === 0) { - return res.status(400).json({ - success: false, - error: { - message: 'userAnswers must be a non-empty array' - } - }); + const response = ResponseBuilder.validationError('userAnswers must be a non-empty array', { + received: userAnswers, + type: typeof userAnswers, + length: Array.isArray(userAnswers) ? userAnswers.length : 'not an array', + }, req); + res.status(400).json(response); + return; } - if (!userAnswers.every(id => typeof id === 'string')) { - return res.status(400).json({ - success: false, - error: { - message: 'All userAnswers must be strings' - } - }); + if (!userAnswers.every((id: unknown) => typeof id === 'string')) { + const response = ResponseBuilder.validationError('All userAnswers must be strings', { + received: userAnswers, + invalidTypes: userAnswers.map((id, index) => ({ index, type: typeof id, value: id })), + }, req); + res.status(400).json(response); + return; } next(); diff --git a/backend/src/models/Admin.ts b/backend/src/models/Admin.ts new file mode 100644 index 0000000000..4ddd0aa00b --- /dev/null +++ b/backend/src/models/Admin.ts @@ -0,0 +1,63 @@ +import { Schema, model, Document } from 'mongoose'; +import bcrypt from 'bcryptjs'; + +export interface IAdmin extends Document { + username: string; + password: string; + email: string; + isActive: boolean; + lastLogin?: Date; + comparePassword(candidatePassword: string): Promise; +} + +const AdminSchema = new Schema({ + username: { + type: String, + required: true, + unique: true, + trim: true, + minlength: 3, + maxlength: 30 + }, + password: { + type: String, + required: true, + minlength: 6 + }, + email: { + type: String, + required: true, + unique: true, + lowercase: true, + trim: true + }, + isActive: { + type: Boolean, + default: true + }, + lastLogin: { + type: Date + } +}, { + timestamps: true +}); + +// Hash password before saving +AdminSchema.pre('save', async function(next) { + if (!this.isModified('password')) return next(); + + try { + const salt = await bcrypt.genSalt(12); + this.password = await bcrypt.hash(this.password, salt); + next(); + } catch (error) { + next(error as Error); + } +}); + +// Method to compare passwords +AdminSchema.methods.comparePassword = async function(candidatePassword: string): Promise { + return bcrypt.compare(candidatePassword, this.password); +}; + +export const Admin = model('Admin', AdminSchema); diff --git a/backend/src/routes/adminRoutes.ts b/backend/src/routes/adminRoutes.ts new file mode 100644 index 0000000000..9231fba5fd --- /dev/null +++ b/backend/src/routes/adminRoutes.ts @@ -0,0 +1,45 @@ +import express from 'express'; +import { + adminLogin, + adminLogout, + getAdminProfile, + getAllCategories, + getCategoryById, + createCategory, + updateCategory, + deleteCategory, + getAllItems, + getItemById, + createItem, + updateItem, + deleteItem +} from '../controllers/adminController.js'; +import { authenticateToken } from '../middleware/auth.js'; + +const router = express.Router(); + +// Public routes (no authentication required) +router.post('/login', adminLogin); + +// Protected routes (authentication required) +router.use(authenticateToken); + +// Admin profile +router.get('/profile', getAdminProfile); +router.post('/logout', adminLogout); + +// Category management +router.get('/categories', getAllCategories); +router.get('/categories/:id', getCategoryById); +router.post('/categories', createCategory); +router.put('/categories/:id', updateCategory); +router.delete('/categories/:id', deleteCategory); + +// Item management +router.get('/items', getAllItems); +router.get('/items/:id', getItemById); +router.post('/items', createItem); +router.put('/items/:id', updateItem); +router.delete('/items/:id', deleteItem); + +export default router; diff --git a/backend/src/services/createAdmin.ts b/backend/src/services/createAdmin.ts new file mode 100644 index 0000000000..25e915008b --- /dev/null +++ b/backend/src/services/createAdmin.ts @@ -0,0 +1,38 @@ +import connectDB from '../config/database.js'; +import { Admin } from '../models/Admin.js'; +import { config } from '../config/environment.js'; +import { logger } from '../utils/logger.js'; + +const createInitialAdmin = async () => { + try { + await connectDB(); + + // Check if admin already exists + const existingAdmin = await Admin.findOne({ username: config.ADMIN_USERNAME }); + if (existingAdmin) { + logger.info('Admin user already exists', 'CreateAdmin'); + process.exit(0); + } + + // Create initial admin user + const admin = new Admin({ + username: config.ADMIN_USERNAME, + password: config.ADMIN_PASSWORD, + email: config.ADMIN_EMAIL, + isActive: true + }); + + await admin.save(); + logger.info('Initial admin user created successfully', 'CreateAdmin', { + username: config.ADMIN_USERNAME, + email: config.ADMIN_EMAIL, + }); + + process.exit(0); + } catch (error) { + logger.error('Error creating admin user', 'CreateAdmin', error as Error); + process.exit(1); + } +}; + +createInitialAdmin(); diff --git a/backend/src/services/seedDb.ts b/backend/src/services/seedDb.ts index bf5a039935..85f656f53a 100644 --- a/backend/src/services/seedDb.ts +++ b/backend/src/services/seedDb.ts @@ -1,13 +1,12 @@ // /backend/src/services/seedDb.ts import mongoose from 'mongoose'; -import dotenv from 'dotenv'; import path from 'path'; import fs from 'fs'; import { fileURLToPath } from 'url'; import { Item } from '../models/Item.js'; import { Category } from '../models/Category.js'; - -dotenv.config(); +import { config } from '../config/environment.js'; +import { logger } from '../utils/logger.js'; // Get __dirname equivalent for ES modules const __filename = fileURLToPath(import.meta.url); @@ -19,24 +18,20 @@ const readJsonFile = (filePath: string) => { const fileContent = fs.readFileSync(filePath, 'utf-8'); return JSON.parse(fileContent); } catch (error) { - console.error(`Error reading or parsing file: ${filePath}`, error); + logger.error(`Error reading or parsing file: ${filePath}`, 'SeedDB', error as Error); return null; } }; const seedData = async () => { try { - if (!process.env.MONGODB_URI) { - throw new Error('MONGODB_URI is not defined in .env file'); - } - - await mongoose.connect(process.env.MONGODB_URI); - console.log('Connected to MongoDB'); + await mongoose.connect(config.MONGODB_URI); + logger.info('Connected to MongoDB', 'SeedDB'); // Clear existing data to prevent duplicates on re-seed await Item.deleteMany({}); await Category.deleteMany({}); - console.log('Existing data cleared.'); + logger.info('Existing data cleared', 'SeedDB'); // Step 1: Read and seed Category data from JSON files const categoriesPath = path.join(__dirname, '../../data/categories'); @@ -46,7 +41,7 @@ const seedData = async () => { const categoryData = readJsonFile(path.join(categoriesPath, file)); if (categoryData) { await mongoose.connection.collection('categories').insertOne(categoryData); - console.log(`Category "${categoryData.name}" seeded.`); + logger.info(`Category "${categoryData.name}" seeded`, 'SeedDB'); } } @@ -58,15 +53,15 @@ const seedData = async () => { const itemsData = readJsonFile(path.join(itemsPath, file)); if (itemsData && Array.isArray(itemsData)) { await Item.insertMany(itemsData); - console.log(`Items from file "${file}" seeded.`); + logger.info(`Items from file "${file}" seeded`, 'SeedDB'); } } - console.log('Database seeding complete!'); + logger.info('Database seeding complete!', 'SeedDB'); mongoose.connection.close(); } catch (error) { - console.error('Database seeding failed:', error); + logger.error('Database seeding failed', 'SeedDB', error as Error); mongoose.connection.close(); } }; diff --git a/backend/src/utils/errors.ts b/backend/src/utils/errors.ts new file mode 100644 index 0000000000..a52b7aaefd --- /dev/null +++ b/backend/src/utils/errors.ts @@ -0,0 +1,53 @@ +export class AppError extends Error { + public readonly statusCode: number; + public readonly isOperational: boolean; + + constructor(message: string, statusCode: number = 500, isOperational: boolean = true) { + super(message); + this.statusCode = statusCode; + this.isOperational = isOperational; + + // Maintains proper stack trace for where our error was thrown (only available on V8) + if (Error.captureStackTrace) { + Error.captureStackTrace(this, AppError); + } + + this.name = this.constructor.name; + } +} + +export class ValidationError extends AppError { + constructor(message: string) { + super(message, 400); + } +} + +export class AuthenticationError extends AppError { + constructor(message: string = 'Authentication failed') { + super(message, 401); + } +} + +export class AuthorizationError extends AppError { + constructor(message: string = 'Access denied') { + super(message, 403); + } +} + +export class NotFoundError extends AppError { + constructor(message: string = 'Resource not found') { + super(message, 404); + } +} + +export class ConflictError extends AppError { + constructor(message: string = 'Resource conflict') { + super(message, 409); + } +} + +export class DatabaseError extends AppError { + constructor(message: string = 'Database operation failed') { + super(message, 500, false); + } +} diff --git a/backend/src/utils/logger.ts b/backend/src/utils/logger.ts new file mode 100644 index 0000000000..f3fc58a8de --- /dev/null +++ b/backend/src/utils/logger.ts @@ -0,0 +1,87 @@ +enum LogLevel { + ERROR = 'ERROR', + WARN = 'WARN', + INFO = 'INFO', + DEBUG = 'DEBUG', +} + +interface LogEntry { + timestamp: string; + level: LogLevel; + message: string; + context?: string; + error?: Error; + metadata?: Record; +} + +class Logger { + private isDevelopment = process.env.NODE_ENV === 'development'; + + private formatLog(entry: LogEntry): string { + const timestamp = entry.timestamp; + const level = entry.level.padEnd(5); + const context = entry.context ? `[${entry.context}]` : ''; + const message = entry.message; + + let logString = `${timestamp} ${level} ${context} ${message}`; + + if (entry.error && this.isDevelopment) { + logString += `\n${entry.error.stack}`; + } + + if (entry.metadata && Object.keys(entry.metadata).length > 0) { + logString += `\n${JSON.stringify(entry.metadata, null, 2)}`; + } + + return logString; + } + + private log(level: LogLevel, message: string, context?: string, error?: Error, metadata?: Record) { + const entry: LogEntry = { + timestamp: new Date().toISOString(), + level, + message, + context, + error, + metadata, + }; + + const formattedLog = this.formatLog(entry); + + switch (level) { + case LogLevel.ERROR: + console.error(formattedLog); + break; + case LogLevel.WARN: + console.warn(formattedLog); + break; + case LogLevel.INFO: + console.info(formattedLog); + break; + case LogLevel.DEBUG: + if (this.isDevelopment) { + console.debug(formattedLog); + } + break; + } + } + + error(message: string, context?: string, error?: Error, metadata?: Record) { + this.log(LogLevel.ERROR, message, context, error, metadata); + } + + warn(message: string, context?: string, metadata?: Record) { + this.log(LogLevel.WARN, message, context, undefined, metadata); + } + + info(message: string, context?: string, metadata?: Record) { + this.log(LogLevel.INFO, message, context, undefined, metadata); + } + + debug(message: string, context?: string, metadata?: Record) { + this.log(LogLevel.DEBUG, message, context, undefined, metadata); + } +} + +export const logger = new Logger(); +export { LogLevel }; diff --git a/backend/src/utils/response.ts b/backend/src/utils/response.ts new file mode 100644 index 0000000000..a27a4712e0 --- /dev/null +++ b/backend/src/utils/response.ts @@ -0,0 +1,74 @@ +export interface ApiResponse { + success: boolean; + data?: T; + error?: { + message: string; + code?: string; + details?: any; + }; + meta?: { + timestamp: string; + path: string; + method: string; + }; +} + +export class ResponseBuilder { + static success(data: T, req?: any): ApiResponse { + const response: ApiResponse = { + success: true, + data, + }; + + if (req) { + response.meta = { + timestamp: new Date().toISOString(), + path: req.originalUrl || req.url, + method: req.method, + }; + } + + return response; + } + + static error(message: string, code?: string, details?: any, req?: any): ApiResponse { + const response: ApiResponse = { + success: false, + error: { + message, + code, + details, + }, + }; + + if (req) { + response.meta = { + timestamp: new Date().toISOString(), + path: req.originalUrl || req.url, + method: req.method, + }; + } + + return response; + } + + static notFound(message: string = 'Resource not found', req?: any): ApiResponse { + return this.error(message, 'NOT_FOUND', undefined, req); + } + + static validationError(message: string, details?: any, req?: any): ApiResponse { + return this.error(message, 'VALIDATION_ERROR', details, req); + } + + static unauthorized(message: string = 'Unauthorized', req?: any): ApiResponse { + return this.error(message, 'UNAUTHORIZED', undefined, req); + } + + static forbidden(message: string = 'Forbidden', req?: any): ApiResponse { + return this.error(message, 'FORBIDDEN', undefined, req); + } + + static internalError(message: string = 'Internal server error', req?: any): ApiResponse { + return this.error(message, 'INTERNAL_ERROR', undefined, req); + } +} diff --git a/frontend/README.md b/frontend/README.md index 1b5e9aaf78..340009dcb4 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -1,87 +1,11 @@ -# Hitster Frontend +# Install dependencies (if needed) +npm install -A music timeline game built with React, TypeScript, and Tailwind CSS. +# Run linting +npm run lint -## Features +# Type check +npm run type-check -- **Spotify OAuth Integration**: Seamless login with Spotify accounts -- **Protected Routes**: Authentication-based routing for game features -- **Modern UI**: Beautiful, responsive design with Tailwind CSS -- **TypeScript**: Full type safety throughout the application - -## Authentication Flow - -The application uses Spotify OAuth for authentication: - -1. User clicks "Start Game with Spotify" button -2. User is redirected to Spotify for authorization -3. After authorization, user is redirected back to `/callback` -4. The callback page verifies authentication and redirects to `/dashboard` -5. User can now access protected game features - -## Setup - -### Prerequisites - -- Node.js (v16 or higher) -- npm or yarn -- Backend server running on port 8888 - -### Installation - -1. Install dependencies: - ```bash - npm install - ``` - -2. Start the development server: - ```bash - npm run dev - ``` - -3. Open [http://localhost:5173](http://localhost:5173) in your browser - -### Environment Variables - -Create a `.env` file in the frontend directory: - -```env -VITE_BACKEND_URL=http://localhost:8888 -VITE_FRONTEND_URL=http://localhost:5173 -``` - -## Project Structure - -``` -src/ -├── components/ # Reusable UI components -├── config/ # Configuration files -├── hooks/ # Custom React hooks -├── pages/ # Page components -├── ui/ # Base UI components -└── App.tsx # Main application component -``` - -## Key Components - -- **LoginForm**: Main login interface with Spotify OAuth -- **Dashboard**: Protected dashboard for authenticated users -- **OAuthCallback**: Handles OAuth callback from Spotify -- **useAuth**: Authentication hook managing user state - -## Development - -- **Build**: `npm run build` -- **Preview**: `npm run preview` -- **Lint**: `npm run lint` - -## Backend Integration - -This frontend integrates with the Hitster backend server which provides: - -- Spotify OAuth endpoints -- User profile management -- Quiz question API -- Spotify playback controls - -Make sure the backend server is running before testing authentication features. +# Start development server +npm run dev \ No newline at end of file diff --git a/frontend/dist/assets/index-C0FSA73Q.css b/frontend/dist/assets/index-C0FSA73Q.css new file mode 100644 index 0000000000..9196e30fdf --- /dev/null +++ b/frontend/dist/assets/index-C0FSA73Q.css @@ -0,0 +1 @@ +/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-800:oklch(47.3% .137 46.201);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-blue-50:oklch(97% .014 254.604);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-800:oklch(42.4% .199 265.638);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-2xl:42rem;--container-4xl:56rem;--container-5xl:64rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--text-8xl:6rem;--text-8xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-black:900;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--blur-xl:24px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-base-100:#fefcfa;--color-base-200:#fdf8f3;--color-base-300:#fbf4ec;--color-base-400:#f9ecdf;--color-accent-200:#86464e;--color-accent-300:#783f46;--color-accent-400:#6b383e;--color-accent-500:#5d3136;--color-accent-600:#502a2f;--color-accent-800:#351c1f;--color-accent-900:#281517;--color-primary:#5d3136;--color-primary-hover:#4a272b;--color-primary-focus:#6b3a40;--color-background:#f9ecdf;--color-surface:#fefcfa;--color-card:#fdf8f3;--color-muted:#f0dbc5;--color-muted-foreground:#946971;--color-foreground:#5d3136;--color-border:#ebd2b8;--color-border-muted:#f5e4d2}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip:auto;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-1{top:calc(var(--spacing)*1)}.top-1\/3{top:33.3333%}.top-2{top:calc(var(--spacing)*2)}.top-3{top:calc(var(--spacing)*3)}.top-4{top:calc(var(--spacing)*4)}.top-\[-10\%\]{top:-10%}.-right-1{right:calc(var(--spacing)*-1)}.-right-16{right:calc(var(--spacing)*-16)}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.right-2{right:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.-bottom-1{bottom:calc(var(--spacing)*-1)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-1{bottom:calc(var(--spacing)*1)}.bottom-1\/4{bottom:25%}.bottom-2{bottom:calc(var(--spacing)*2)}.bottom-3{bottom:calc(var(--spacing)*3)}.bottom-4{bottom:calc(var(--spacing)*4)}.-left-20{left:calc(var(--spacing)*-20)}.left-0{left:calc(var(--spacing)*0)}.left-1{left:calc(var(--spacing)*1)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing)*2)}.left-3{left:calc(var(--spacing)*3)}.left-4{left:calc(var(--spacing)*4)}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[60\]{z-index:60}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.-mt-10{margin-top:calc(var(--spacing)*-10)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-10{margin-top:calc(var(--spacing)*10)}.mb-0\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.ml-0\.5{margin-left:calc(var(--spacing)*.5)}.ml-1{margin-left:calc(var(--spacing)*1)}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.h-0{height:calc(var(--spacing)*0)}.h-0\.5{height:calc(var(--spacing)*.5)}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-72{height:calc(var(--spacing)*72)}.h-80{height:calc(var(--spacing)*80)}.h-\[96px\]{height:96px}.h-\[140px\]{height:140px}.h-\[180px\]{height:180px}.h-full{height:100%}.max-h-\[90vh\]{max-height:90vh}.min-h-\[140px\]{min-height:140px}.min-h-screen{min-height:100vh}.w-0{width:calc(var(--spacing)*0)}.w-0\.5{width:calc(var(--spacing)*.5)}.w-1{width:calc(var(--spacing)*1)}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-2{width:calc(var(--spacing)*2)}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-60{width:calc(var(--spacing)*60)}.w-72{width:calc(var(--spacing)*72)}.w-80{width:calc(var(--spacing)*80)}.w-\[60\%\]{width:60%}.w-\[100px\]{width:100px}.w-\[136px\]{width:136px}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.origin-bottom{transform-origin:bottom}.origin-top{transform-origin:top}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-1px\]{--tw-translate-y:-1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-none{translate:none}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-110{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-3d{scale:var(--tw-scale-x)var(--tw-scale-y)var(--tw-scale-z)}.scale-\[0\.6\]{scale:.6}.-rotate-45{rotate:-45deg}.-rotate-\[12deg\]{rotate:-12deg}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.rotate-\[-45deg\]{rotate:-45deg}.rotate-\[14deg\]{rotate:14deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-\[banana-fly_4000ms_linear_infinite\]{animation:4s linear infinite banana-fly}.animate-\[logo-bounce-in_2400ms_cubic-bezier\(\.25\,1\.5\,\.5\,1\)_forwards\]{animation:2.4s cubic-bezier(.25,1.5,.5,1) forwards logo-bounce-in}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,)var(--tw-pan-y,)var(--tw-pinch-zoom,)}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-12>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*12)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*12)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*1)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px*var(--tw-divide-x-reverse));border-inline-end-width:calc(1px*calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-visible{overflow-y:visible}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-\[4px\]{border-top-style:var(--tw-border-style);border-top-width:4px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-b-\[4px\]{border-bottom-style:var(--tw-border-style);border-bottom-width:4px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-\[6px\]{border-left-style:var(--tw-border-style);border-left-width:6px}.border-\[\#1DB954\]{border-color:#1db954}.border-accent-400{border-color:var(--color-accent-400)}.border-amber-200{border-color:var(--color-amber-200)}.border-base-100{border-color:var(--color-base-100)}.border-base-100\/30{border-color:#fefcfa4d}@supports (color:color-mix(in lab,red,red)){.border-base-100\/30{border-color:color-mix(in oklab,var(--color-base-100)30%,transparent)}}.border-blue-200{border-color:var(--color-blue-200)}.border-border{border-color:var(--color-border)}.border-border-muted{border-color:var(--color-border-muted)}.border-border\/60{border-color:#ebd2b899}@supports (color:color-mix(in lab,red,red)){.border-border\/60{border-color:color-mix(in oklab,var(--color-border)60%,transparent)}}.border-current{border-color:currentColor}.border-primary{border-color:var(--color-primary)}.border-primary\/20{border-color:#5d313633}@supports (color:color-mix(in lab,red,red)){.border-primary\/20{border-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.border-primary\/30{border-color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.border-primary\/30{border-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.border-red-200{border-color:var(--color-red-200)}.border-red-400{border-color:var(--color-red-400)}.border-white\/30{border-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.border-white\/30{border-color:color-mix(in oklab,var(--color-white)30%,transparent)}}.border-t-base-100{border-top-color:var(--color-base-100)}.border-t-transparent{border-top-color:#0000}.border-t-white{border-top-color:var(--color-white)}.border-b-transparent{border-bottom-color:#0000}.border-l-base-100{border-left-color:var(--color-base-100)}.bg-\[\#1DB954\]{background-color:#1db954}.bg-\[\#2a0d0d\]{background-color:#2a0d0d}.bg-\[var\(--color-base-400\)\]{background-color:var(--color-base-400)}.bg-accent-300{background-color:var(--color-accent-300)}.bg-accent-900\/80{background-color:#281517cc}@supports (color:color-mix(in lab,red,red)){.bg-accent-900\/80{background-color:color-mix(in oklab,var(--color-accent-900)80%,transparent)}}.bg-amber-50{background-color:var(--color-amber-50)}.bg-background{background-color:var(--color-background)}.bg-background\/60{background-color:#f9ecdf99}@supports (color:color-mix(in lab,red,red)){.bg-background\/60{background-color:color-mix(in oklab,var(--color-background)60%,transparent)}}.bg-base-100{background-color:var(--color-base-100)}.bg-blue-50{background-color:var(--color-blue-50)}.bg-card{background-color:var(--color-card)}.bg-current{background-color:currentColor}.bg-green-500{background-color:var(--color-green-500)}.bg-muted-foreground{background-color:var(--color-muted-foreground)}.bg-muted\/30{background-color:#f0dbc54d}@supports (color:color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--color-muted)30%,transparent)}}.bg-primary{background-color:var(--color-primary)}.bg-primary\/10{background-color:#5d31361a}@supports (color:color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.bg-primary\/20{background-color:#5d313633}@supports (color:color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.bg-primary\/25{background-color:#5d313640}@supports (color:color-mix(in lab,red,red)){.bg-primary\/25{background-color:color-mix(in oklab,var(--color-primary)25%,transparent)}}.bg-primary\/30{background-color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.bg-primary\/30{background-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.bg-primary\/40{background-color:#5d313666}@supports (color:color-mix(in lab,red,red)){.bg-primary\/40{background-color:color-mix(in oklab,var(--color-primary)40%,transparent)}}.bg-primary\/50{background-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.bg-primary\/50{background-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.bg-primary\/60{background-color:#5d313699}@supports (color:color-mix(in lab,red,red)){.bg-primary\/60{background-color:color-mix(in oklab,var(--color-primary)60%,transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-surface{background-color:var(--color-surface)}.bg-white\/5{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.bg-white\/5{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-tr{--tw-gradient-position:to top right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-\[linear-gradient\(45deg\,transparent_25\%\,rgba\(93\,49\,54\,0\.1\)_25\%\,rgba\(93\,49\,54\,0\.1\)_50\%\,transparent_50\%\,transparent_75\%\,rgba\(93\,49\,54\,0\.1\)_75\%\)\]{background-image:linear-gradient(45deg,#0000 25%,#5d31361a 25%,#5d31361a 50%,#0000 50%,#0000 75%,#5d31361a 75%)}.bg-\[radial-gradient\(circle_at_50\%_50\%\,rgba\(255\,255\,255\,0\.1\)_1px\,transparent_1px\)\]{background-image:radial-gradient(circle,#ffffff1a 1px,#0000 1px)}.from-accent-200{--tw-gradient-from:var(--color-accent-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-accent-600{--tw-gradient-from:var(--color-accent-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-base-100{--tw-gradient-from:var(--color-base-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary{--tw-gradient-from:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-accent-300{--tw-gradient-via:var(--color-accent-300);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-base-200{--tw-gradient-via:var(--color-base-200);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-primary\/90{--tw-gradient-via:#5d3136e6}@supports (color:color-mix(in lab,red,red)){.via-primary\/90{--tw-gradient-via:color-mix(in oklab,var(--color-primary)90%,transparent)}}.via-primary\/90{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-white\/5{--tw-gradient-via:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.via-white\/5{--tw-gradient-via:color-mix(in oklab,var(--color-white)5%,transparent)}}.via-white\/5{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-accent-400{--tw-gradient-to:var(--color-accent-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-accent-500{--tw-gradient-to:var(--color-accent-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-accent-800{--tw-gradient-to:var(--color-accent-800);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-base-300{--tw-gradient-to:var(--color-base-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-primary{--tw-gradient-to:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.bg-\[length\:8px_8px\]{background-size:8px 8px}.bg-\[length\:20px_20px\]{background-size:20px 20px}.bg-repeat{background-repeat:repeat}.mask-no-clip{-webkit-mask-clip:no-clip;mask-clip:no-clip}.mask-repeat{-webkit-mask-repeat:repeat;mask-repeat:repeat}.object-contain{object-fit:contain}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.px-10{padding-inline:calc(var(--spacing)*10)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-6{padding-block:calc(var(--spacing)*6)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-6{padding-top:calc(var(--spacing)*6)}.pt-8{padding-top:calc(var(--spacing)*8)}.pt-10{padding-top:calc(var(--spacing)*10)}.pt-12{padding-top:calc(var(--spacing)*12)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.pb-8{padding-bottom:calc(var(--spacing)*8)}.pb-16{padding-bottom:calc(var(--spacing)*16)}.text-center{text-align:center}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-8xl{font-size:var(--text-8xl);line-height:var(--tw-leading,var(--text-8xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-\[0\.95\]{--tw-leading:.95;line-height:.95}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[\.25em\]{--tw-tracking:.25em;letter-spacing:.25em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-wrap{text-wrap:wrap}.break-normal{overflow-wrap:normal;word-break:normal}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.text-amber-500{color:var(--color-amber-500)}.text-amber-800{color:var(--color-amber-800)}.text-background{color:var(--color-background)}.text-base-100{color:var(--color-base-100)}.text-base-100\/90{color:#fefcfae6}@supports (color:color-mix(in lab,red,red)){.text-base-100\/90{color:color-mix(in oklab,var(--color-base-100)90%,transparent)}}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-800{color:var(--color-blue-800)}.text-foreground{color:var(--color-foreground)}.text-green-600{color:var(--color-green-600)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-primary{color:var(--color-primary)}.text-primary\/30{color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.text-primary\/30{color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-white{color:var(--color-white)}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.opacity-0{opacity:0}.opacity-5{opacity:.05}.opacity-10{opacity:.1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-medium{--tw-shadow:0 4px 16px 0 var(--tw-shadow-color,#5d31361f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-soft{--tw-shadow:0 2px 8px 0 var(--tw-shadow-color,#5d313614);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-strong{--tw-shadow:0 8px 32px 0 var(--tw-shadow-color,#5d313629);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-primary{--tw-ring-color:var(--color-primary)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.outline-primary\/50{outline-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.outline-primary\/50{outline-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-xl{--tw-blur:blur(var(--blur-xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a))drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a)drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-invert{--tw-backdrop-invert:invert(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition\!{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-700{--tw-duration:.7s;transition-duration:.7s}.select-none{-webkit-user-select:none;user-select:none}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.group-hover\:scale-\[0\.9\]:is(:where(.group):hover *){scale:.9}}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}@media (hover:hover){.hover\:-translate-y-1:hover{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:border-primary\/30:hover{border-color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/30:hover{border-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.hover\:border-primary\/50:hover{border-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.hover\:bg-\[\#1ed760\]:hover{background-color:#1ed760}.hover\:bg-accent-200:hover{background-color:var(--color-accent-200)}.hover\:bg-black\/10:hover{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/10:hover{background-color:color-mix(in oklab,var(--color-black)10%,transparent)}}.hover\:bg-card:hover{background-color:var(--color-card)}.hover\:bg-muted:hover{background-color:var(--color-muted)}.hover\:bg-primary:hover{background-color:var(--color-primary)}.hover\:bg-primary-hover:hover{background-color:var(--color-primary-hover)}.hover\:text-background:hover{color:var(--color-background)}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:text-white:hover{color:var(--color-white)}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-medium:hover{--tw-shadow:0 4px 16px 0 var(--tw-shadow-color,#5d31361f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-strong:hover{--tw-shadow:0 8px 32px 0 var(--tw-shadow-color,#5d313629);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.focus\:border-primary:focus{border-color:var(--color-primary)}.focus\:border-red-500:focus{border-color:var(--color-red-500)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-4:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-primary\/40:focus{--tw-ring-color:#5d313666}@supports (color:color-mix(in lab,red,red)){.focus\:ring-primary\/40:focus{--tw-ring-color:color-mix(in oklab,var(--color-primary)40%,transparent)}}.focus\:ring-primary\/50:focus{--tw-ring-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.focus\:ring-primary\/50:focus{--tw-ring-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.focus\:ring-red-500\/50:focus{--tw-ring-color:#fb2c3680}@supports (color:color-mix(in lab,red,red)){.focus\:ring-red-500\/50:focus{--tw-ring-color:color-mix(in oklab,var(--color-red-500)50%,transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-primary-focus:focus-visible{--tw-ring-color:var(--color-primary-focus)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-muted:disabled{background-color:var(--color-muted)}.disabled\:opacity-50:disabled{opacity:.5}@media (min-width:40rem){.sm\:top-4{top:calc(var(--spacing)*4)}.sm\:right-4{right:calc(var(--spacing)*4)}.sm\:right-6{right:calc(var(--spacing)*6)}.sm\:bottom-4{bottom:calc(var(--spacing)*4)}.sm\:left-6{left:calc(var(--spacing)*6)}.sm\:mt-4{margin-top:calc(var(--spacing)*4)}.sm\:mt-6{margin-top:calc(var(--spacing)*6)}.sm\:block{display:block}.sm\:h-4{height:calc(var(--spacing)*4)}.sm\:h-5{height:calc(var(--spacing)*5)}.sm\:h-6{height:calc(var(--spacing)*6)}.sm\:h-8{height:calc(var(--spacing)*8)}.sm\:h-12{height:calc(var(--spacing)*12)}.sm\:h-80{height:calc(var(--spacing)*80)}.sm\:h-\[120px\]{height:120px}.sm\:w-2{width:calc(var(--spacing)*2)}.sm\:w-4{width:calc(var(--spacing)*4)}.sm\:w-5{width:calc(var(--spacing)*5)}.sm\:w-6{width:calc(var(--spacing)*6)}.sm\:w-8{width:calc(var(--spacing)*8)}.sm\:w-12{width:calc(var(--spacing)*12)}.sm\:w-16{width:calc(var(--spacing)*16)}.sm\:w-56{width:calc(var(--spacing)*56)}.sm\:w-60{width:calc(var(--spacing)*60)}.sm\:max-w-none{max-width:none}.sm\:scale-125{--tw-scale-x:125%;--tw-scale-y:125%;--tw-scale-z:125%;scale:var(--tw-scale-x)var(--tw-scale-y)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:gap-3{gap:calc(var(--spacing)*3)}.sm\:gap-6{gap:calc(var(--spacing)*6)}:where(.sm\:space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}.sm\:p-3{padding:calc(var(--spacing)*3)}.sm\:p-4{padding:calc(var(--spacing)*4)}.sm\:px-0{padding-inline:calc(var(--spacing)*0)}.sm\:px-3{padding-inline:calc(var(--spacing)*3)}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:px-8{padding-inline:calc(var(--spacing)*8)}.sm\:py-1{padding-block:calc(var(--spacing)*1)}.sm\:pt-2{padding-top:calc(var(--spacing)*2)}.sm\:pt-8{padding-top:calc(var(--spacing)*8)}.sm\:pt-10{padding-top:calc(var(--spacing)*10)}.sm\:pt-12{padding-top:calc(var(--spacing)*12)}.sm\:pt-16{padding-top:calc(var(--spacing)*16)}.sm\:pb-6{padding-bottom:calc(var(--spacing)*6)}.sm\:pb-8{padding-bottom:calc(var(--spacing)*8)}.sm\:pb-12{padding-bottom:calc(var(--spacing)*12)}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media (min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.md\:text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}.md\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media (min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}}html{scroll-behavior:smooth}@media (max-width:640px){html{font-size:14px}}@keyframes logo-in{0%{opacity:0;filter:blur(3px);transform:scale(.96)}60%{opacity:1;filter:blur();transform:scale(1.01)}to{opacity:1;transform:scale(1)}}@keyframes seed-sweep{0%{transform:translate(-20vw)rotate(-10deg)scale(.9)}50%{transform:translate(15vw)rotate(6deg)scale(1.08)}to{transform:translate(50vw)rotate(0)scale(1)}}@keyframes tagline-in{0%{opacity:0;letter-spacing:.14em;transform:translateY(.8rem)}to{opacity:1;letter-spacing:0;transform:translateY(0)}}@keyframes particle-float{0%{opacity:.65;transform:translate(0)translateY(0)rotate(0)}70%{opacity:.9}to{opacity:0;transform:translate(-120vw)translateY(-10vh)rotate(14deg)}}@keyframes letter-in{0%{opacity:0;filter:blur(2px);transform:translateY(1.6rem)scale(.98)}55%{opacity:1;filter:blur();transform:translateY(0)scale(1.02)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes crt-flicker{0%{opacity:1}50%{opacity:.92}to{opacity:1}}@keyframes banana-float{0%{opacity:.7;transform:translate(0)translateY(0)rotate(0)}70%{opacity:.9}to{opacity:0;transform:translate(-120vw)translateY(-10vh)rotate(18deg)}}@keyframes banana-fly{0%{opacity:0;transform:translateY(-30vh)rotate(0)}10%{opacity:.8}80%{opacity:1}to{opacity:0;transform:translateY(120vh)rotate(20deg)}}@keyframes logo-bounce-in{0%{opacity:0;transform:scale(8)translateY(-50vh)}40%{opacity:1;transform:scale(1.8)translateY(0)}55%{transform:scale(1.65)}70%{transform:scale(1.85)}85%{transform:scale(1.75)}to{transform:scale(1.8)}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}} diff --git a/frontend/dist/assets/index-CZH8FzHQ.js b/frontend/dist/assets/index-CZH8FzHQ.js new file mode 100644 index 0000000000..b19f059a71 --- /dev/null +++ b/frontend/dist/assets/index-CZH8FzHQ.js @@ -0,0 +1,58 @@ +var lh=Object.defineProperty;var ih=(r,i,l)=>i in r?lh(r,i,{enumerable:!0,configurable:!0,writable:!0,value:l}):r[i]=l;var Id=(r,i,l)=>ih(r,typeof i!="symbol"?i+"":i,l);(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))a(c);new MutationObserver(c=>{for(const d of c)if(d.type==="childList")for(const m of d.addedNodes)m.tagName==="LINK"&&m.rel==="modulepreload"&&a(m)}).observe(document,{childList:!0,subtree:!0});function l(c){const d={};return c.integrity&&(d.integrity=c.integrity),c.referrerPolicy&&(d.referrerPolicy=c.referrerPolicy),c.crossOrigin==="use-credentials"?d.credentials="include":c.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function a(c){if(c.ep)return;c.ep=!0;const d=l(c);fetch(c.href,d)}})();function xf(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var ga={exports:{}},Oo={},va={exports:{}},ge={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Md;function sh(){if(Md)return ge;Md=1;var r=Symbol.for("react.element"),i=Symbol.for("react.portal"),l=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),c=Symbol.for("react.profiler"),d=Symbol.for("react.provider"),m=Symbol.for("react.context"),g=Symbol.for("react.forward_ref"),h=Symbol.for("react.suspense"),v=Symbol.for("react.memo"),k=Symbol.for("react.lazy"),C=Symbol.iterator;function j(E){return E===null||typeof E!="object"?null:(E=C&&E[C]||E["@@iterator"],typeof E=="function"?E:null)}var N={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},M=Object.assign,D={};function T(E,_,F){this.props=E,this.context=_,this.refs=D,this.updater=F||N}T.prototype.isReactComponent={},T.prototype.setState=function(E,_){if(typeof E!="object"&&typeof E!="function"&&E!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,E,_,"setState")},T.prototype.forceUpdate=function(E){this.updater.enqueueForceUpdate(this,E,"forceUpdate")};function z(){}z.prototype=T.prototype;function $(E,_,F){this.props=E,this.context=_,this.refs=D,this.updater=F||N}var B=$.prototype=new z;B.constructor=$,M(B,T.prototype),B.isPureReactComponent=!0;var Y=Array.isArray,q=Object.prototype.hasOwnProperty,le={current:null},K={key:!0,ref:!0,__self:!0,__source:!0};function I(E,_,F){var V,G={},ie=null,se=null;if(_!=null)for(V in _.ref!==void 0&&(se=_.ref),_.key!==void 0&&(ie=""+_.key),_)q.call(_,V)&&!K.hasOwnProperty(V)&&(G[V]=_[V]);var ye=arguments.length-2;if(ye===1)G.children=F;else if(1>>1,_=L[E];if(0>>1;Ec(G,H))ie<_&&0>c(se,G)?(L[E]=se,L[ie]=H,E=ie):(L[E]=G,L[V]=H,E=V);else if(ie<_&&0>c(se,H))L[E]=se,L[ie]=H,E=ie;else break e}}return te}function c(L,te){var H=L.sortIndex-te.sortIndex;return H!==0?H:L.id-te.id}if(typeof performance=="object"&&typeof performance.now=="function"){var d=performance;r.unstable_now=function(){return d.now()}}else{var m=Date,g=m.now();r.unstable_now=function(){return m.now()-g}}var h=[],v=[],k=1,C=null,j=3,N=!1,M=!1,D=!1,T=typeof setTimeout=="function"?setTimeout:null,z=typeof clearTimeout=="function"?clearTimeout:null,$=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function B(L){for(var te=l(v);te!==null;){if(te.callback===null)a(v);else if(te.startTime<=L)a(v),te.sortIndex=te.expirationTime,i(h,te);else break;te=l(v)}}function Y(L){if(D=!1,B(L),!M)if(l(h)!==null)M=!0,be(q);else{var te=l(v);te!==null&&me(Y,te.startTime-L)}}function q(L,te){M=!1,D&&(D=!1,z(I),I=-1),N=!0;var H=j;try{for(B(te),C=l(h);C!==null&&(!(C.expirationTime>te)||L&&!de());){var E=C.callback;if(typeof E=="function"){C.callback=null,j=C.priorityLevel;var _=E(C.expirationTime<=te);te=r.unstable_now(),typeof _=="function"?C.callback=_:C===l(h)&&a(h),B(te)}else a(h);C=l(h)}if(C!==null)var F=!0;else{var V=l(v);V!==null&&me(Y,V.startTime-te),F=!1}return F}finally{C=null,j=H,N=!1}}var le=!1,K=null,I=-1,re=5,ce=-1;function de(){return!(r.unstable_now()-ceL||125E?(L.sortIndex=H,i(v,L),l(h)===null&&L===l(v)&&(D?(z(I),I=-1):D=!0,me(Y,H-E))):(L.sortIndex=_,i(h,L),M||N||(M=!0,be(q))),L},r.unstable_shouldYield=de,r.unstable_wrapCallback=function(L){var te=j;return function(){var H=j;j=te;try{return L.apply(this,arguments)}finally{j=H}}}}(wa)),wa}var Ud;function dh(){return Ud||(Ud=1,xa.exports=ch()),xa.exports}/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Bd;function fh(){if(Bd)return St;Bd=1;var r=$a(),i=dh();function l(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),h=Object.prototype.hasOwnProperty,v=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,k={},C={};function j(e){return h.call(C,e)?!0:h.call(k,e)?!1:v.test(e)?C[e]=!0:(k[e]=!0,!1)}function N(e,t,n,o){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return o?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function M(e,t,n,o){if(t===null||typeof t>"u"||N(e,t,n,o))return!0;if(o)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function D(e,t,n,o,s,u,f){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=o,this.attributeNamespace=s,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=u,this.removeEmptyString=f}var T={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){T[e]=new D(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];T[t]=new D(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){T[e]=new D(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){T[e]=new D(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){T[e]=new D(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){T[e]=new D(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){T[e]=new D(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){T[e]=new D(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){T[e]=new D(e,5,!1,e.toLowerCase(),null,!1,!1)});var z=/[\-:]([a-z])/g;function $(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(z,$);T[t]=new D(t,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(z,$);T[t]=new D(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(z,$);T[t]=new D(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){T[e]=new D(e,1,!1,e.toLowerCase(),null,!1,!1)}),T.xlinkHref=new D("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){T[e]=new D(e,1,!1,e.toLowerCase(),null,!0,!0)});function B(e,t,n,o){var s=T.hasOwnProperty(t)?T[t]:null;(s!==null?s.type!==0:o||!(2x||s[f]!==u[x]){var w=` +`+s[f].replace(" at new "," at ");return e.displayName&&w.includes("")&&(w=w.replace("",e.displayName)),w}while(1<=f&&0<=x);break}}}finally{F=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?_(e):""}function G(e){switch(e.tag){case 5:return _(e.type);case 16:return _("Lazy");case 13:return _("Suspense");case 19:return _("SuspenseList");case 0:case 2:case 15:return e=V(e.type,!1),e;case 11:return e=V(e.type.render,!1),e;case 1:return e=V(e.type,!0),e;default:return""}}function ie(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case K:return"Fragment";case le:return"Portal";case re:return"Profiler";case I:return"StrictMode";case we:return"Suspense";case Ne:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case de:return(e.displayName||"Context")+".Consumer";case ce:return(e._context.displayName||"Context")+".Provider";case xe:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Fe:return t=e.displayName||null,t!==null?t:ie(e.type)||"Memo";case be:t=e._payload,e=e._init;try{return ie(e(t))}catch{}}return null}function se(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ie(t);case 8:return t===I?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function ye(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Se(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Ee(e){var t=Se(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),o=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var s=n.get,u=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return s.call(this)},set:function(f){o=""+f,u.call(this,f)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return o},setValue:function(f){o=""+f},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Tt(e){e._valueTracker||(e._valueTracker=Ee(e))}function at(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),o="";return e&&(o=Se(e)?e.checked?"true":"false":e.value),e=o,e!==n?(t.setValue(e),!0):!1}function Jn(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function $t(e,t){var n=t.checked;return H({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Zn(e,t){var n=t.defaultValue==null?"":t.defaultValue,o=t.checked!=null?t.checked:t.defaultChecked;n=ye(t.value!=null?t.value:n),e._wrapperState={initialChecked:o,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function cn(e,t){t=t.checked,t!=null&&B(e,"checked",t,!1)}function gr(e,t){cn(e,t);var n=ye(t.value),o=t.type;if(n!=null)o==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(o==="submit"||o==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?er(e,t.type,n):t.hasOwnProperty("defaultValue")&&er(e,t.type,ye(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Yr(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var o=t.type;if(!(o!=="submit"&&o!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function er(e,t,n){(t!=="number"||Jn(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var mt=Array.isArray;function Ut(e,t,n,o){if(e=e.options,t){t={};for(var s=0;s"+t.valueOf().toString()+"",t=Bt.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Rn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var ht={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ll=["Webkit","ms","Moz","O"];Object.keys(ht).forEach(function(e){ll.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ht[t]=ht[e]})});function il(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||ht.hasOwnProperty(e)&&ht[e]?(""+t).trim():t+"px"}function sl(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var o=n.indexOf("--")===0,s=il(n,t[n],o);n==="float"&&(n="cssFloat"),o?e.setProperty(n,s):e[n]=s}}var Jr=H({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function vr(e,t){if(t){if(Jr[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(l(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(l(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(l(61))}if(t.style!=null&&typeof t.style!="object")throw Error(l(62))}}function Zr(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var yr=null;function eo(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var to=null,Tn=null,ze=null;function et(e){if(e=So(e)){if(typeof to!="function")throw Error(l(280));var t=e.stateNode;t&&(t=Rl(t),to(e.stateNode,e.type,t))}}function tt(e){Tn?ze?ze.push(e):ze=[e]:Tn=e}function Vt(){if(Tn){var e=Tn,t=ze;if(ze=Tn=null,et(e),t)for(e=0;e>>=0,e===0?32:31-(kp(e)/Sp|0)|0}var cl=64,dl=4194304;function ro(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function fl(e,t){var n=e.pendingLanes;if(n===0)return 0;var o=0,s=e.suspendedLanes,u=e.pingedLanes,f=n&268435455;if(f!==0){var x=f&~s;x!==0?o=ro(x):(u&=f,u!==0&&(o=ro(u)))}else f=n&~s,f!==0?o=ro(f):u!==0&&(o=ro(u));if(o===0)return 0;if(t!==0&&t!==o&&(t&s)===0&&(s=o&-o,u=t&-t,s>=u||s===16&&(u&4194240)!==0))return t;if((o&4)!==0&&(o|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=o;0n;n++)t.push(e);return t}function oo(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Gt(t),e[t]=n}function bp(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var o=e.eventTimes;for(e=e.expirationTimes;0=po),Ru=" ",Tu=!1;function Pu(e,t){switch(e){case"keyup":return em.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Du(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var kr=!1;function nm(e,t){switch(e){case"compositionend":return Du(t);case"keypress":return t.which!==32?null:(Tu=!0,Ru);case"textInput":return e=t.data,e===Ru&&Tu?null:e;default:return null}}function rm(e,t){if(kr)return e==="compositionend"||!Xi&&Pu(e,t)?(e=Su(),vl=Wi=zn=null,kr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=o}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Au(n)}}function $u(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?$u(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Uu(){for(var e=window,t=Jn();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Jn(e.document)}return t}function Zi(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function fm(e){var t=Uu(),n=e.focusedElem,o=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&$u(n.ownerDocument.documentElement,n)){if(o!==null&&Zi(n)){if(t=o.start,e=o.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var s=n.textContent.length,u=Math.min(o.start,s);o=o.end===void 0?u:Math.min(o.end,s),!e.extend&&u>o&&(s=o,o=u,u=s),s=Fu(n,u);var f=Fu(n,o);s&&f&&(e.rangeCount!==1||e.anchorNode!==s.node||e.anchorOffset!==s.offset||e.focusNode!==f.node||e.focusOffset!==f.offset)&&(t=t.createRange(),t.setStart(s.node,s.offset),e.removeAllRanges(),u>o?(e.addRange(t),e.extend(f.node,f.offset)):(t.setEnd(f.node,f.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Sr=null,es=null,vo=null,ts=!1;function Bu(e,t,n){var o=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ts||Sr==null||Sr!==Jn(o)||(o=Sr,"selectionStart"in o&&Zi(o)?o={start:o.selectionStart,end:o.selectionEnd}:(o=(o.ownerDocument&&o.ownerDocument.defaultView||window).getSelection(),o={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focusNode:o.focusNode,focusOffset:o.focusOffset}),vo&&go(vo,o)||(vo=o,o=Nl(es,"onSelect"),0jr||(e.current=ps[jr],ps[jr]=null,jr--)}function Te(e,t){jr++,ps[jr]=e.current,e.current=t}var An={},ot=On(An),vt=On(!1),rr=An;function Rr(e,t){var n=e.type.contextTypes;if(!n)return An;var o=e.stateNode;if(o&&o.__reactInternalMemoizedUnmaskedChildContext===t)return o.__reactInternalMemoizedMaskedChildContext;var s={},u;for(u in n)s[u]=t[u];return o&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=s),s}function yt(e){return e=e.childContextTypes,e!=null}function Tl(){De(vt),De(ot)}function rc(e,t,n){if(ot.current!==An)throw Error(l(168));Te(ot,t),Te(vt,n)}function oc(e,t,n){var o=e.stateNode;if(t=t.childContextTypes,typeof o.getChildContext!="function")return n;o=o.getChildContext();for(var s in o)if(!(s in t))throw Error(l(108,se(e)||"Unknown",s));return H({},n,o)}function Pl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||An,rr=ot.current,Te(ot,e),Te(vt,vt.current),!0}function lc(e,t,n){var o=e.stateNode;if(!o)throw Error(l(169));n?(e=oc(e,t,rr),o.__reactInternalMemoizedMergedChildContext=e,De(vt),De(ot),Te(ot,e)):De(vt),Te(vt,n)}var mn=null,Dl=!1,ms=!1;function ic(e){mn===null?mn=[e]:mn.push(e)}function Em(e){Dl=!0,ic(e)}function Fn(){if(!ms&&mn!==null){ms=!0;var e=0,t=je;try{var n=mn;for(je=1;e>=f,s-=f,hn=1<<32-Gt(t)+s|n<fe?(Xe=ue,ue=null):Xe=ue.sibling;var Ce=O(b,ue,R[fe],W);if(Ce===null){ue===null&&(ue=Xe);break}e&&ue&&Ce.alternate===null&&t(b,ue),S=u(Ce,S,fe),ae===null?oe=Ce:ae.sibling=Ce,ae=Ce,ue=Xe}if(fe===R.length)return n(b,ue),_e&&lr(b,fe),oe;if(ue===null){for(;fefe?(Xe=ue,ue=null):Xe=ue.sibling;var Kn=O(b,ue,Ce.value,W);if(Kn===null){ue===null&&(ue=Xe);break}e&&ue&&Kn.alternate===null&&t(b,ue),S=u(Kn,S,fe),ae===null?oe=Kn:ae.sibling=Kn,ae=Kn,ue=Xe}if(Ce.done)return n(b,ue),_e&&lr(b,fe),oe;if(ue===null){for(;!Ce.done;fe++,Ce=R.next())Ce=U(b,Ce.value,W),Ce!==null&&(S=u(Ce,S,fe),ae===null?oe=Ce:ae.sibling=Ce,ae=Ce);return _e&&lr(b,fe),oe}for(ue=o(b,ue);!Ce.done;fe++,Ce=R.next())Ce=Q(ue,b,fe,Ce.value,W),Ce!==null&&(e&&Ce.alternate!==null&&ue.delete(Ce.key===null?fe:Ce.key),S=u(Ce,S,fe),ae===null?oe=Ce:ae.sibling=Ce,ae=Ce);return e&&ue.forEach(function(oh){return t(b,oh)}),_e&&lr(b,fe),oe}function Be(b,S,R,W){if(typeof R=="object"&&R!==null&&R.type===K&&R.key===null&&(R=R.props.children),typeof R=="object"&&R!==null){switch(R.$$typeof){case q:e:{for(var oe=R.key,ae=S;ae!==null;){if(ae.key===oe){if(oe=R.type,oe===K){if(ae.tag===7){n(b,ae.sibling),S=s(ae,R.props.children),S.return=b,b=S;break e}}else if(ae.elementType===oe||typeof oe=="object"&&oe!==null&&oe.$$typeof===be&&fc(oe)===ae.type){n(b,ae.sibling),S=s(ae,R.props),S.ref=Co(b,ae,R),S.return=b,b=S;break e}n(b,ae);break}else t(b,ae);ae=ae.sibling}R.type===K?(S=pr(R.props.children,b.mode,W,R.key),S.return=b,b=S):(W=li(R.type,R.key,R.props,null,b.mode,W),W.ref=Co(b,S,R),W.return=b,b=W)}return f(b);case le:e:{for(ae=R.key;S!==null;){if(S.key===ae)if(S.tag===4&&S.stateNode.containerInfo===R.containerInfo&&S.stateNode.implementation===R.implementation){n(b,S.sibling),S=s(S,R.children||[]),S.return=b,b=S;break e}else{n(b,S);break}else t(b,S);S=S.sibling}S=da(R,b.mode,W),S.return=b,b=S}return f(b);case be:return ae=R._init,Be(b,S,ae(R._payload),W)}if(mt(R))return J(b,S,R,W);if(te(R))return ne(b,S,R,W);Il(b,R)}return typeof R=="string"&&R!==""||typeof R=="number"?(R=""+R,S!==null&&S.tag===6?(n(b,S.sibling),S=s(S,R),S.return=b,b=S):(n(b,S),S=ca(R,b.mode,W),S.return=b,b=S),f(b)):n(b,S)}return Be}var Lr=pc(!0),mc=pc(!1),Ml=On(null),Ol=null,_r=null,ws=null;function ks(){ws=_r=Ol=null}function Ss(e){var t=Ml.current;De(Ml),e._currentValue=t}function Cs(e,t,n){for(;e!==null;){var o=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,o!==null&&(o.childLanes|=t)):o!==null&&(o.childLanes&t)!==t&&(o.childLanes|=t),e===n)break;e=e.return}}function zr(e,t){Ol=e,ws=_r=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(xt=!0),e.firstContext=null)}function _t(e){var t=e._currentValue;if(ws!==e)if(e={context:e,memoizedValue:t,next:null},_r===null){if(Ol===null)throw Error(l(308));_r=e,Ol.dependencies={lanes:0,firstContext:e}}else _r=_r.next=e;return t}var ir=null;function Es(e){ir===null?ir=[e]:ir.push(e)}function hc(e,t,n,o){var s=t.interleaved;return s===null?(n.next=n,Es(t)):(n.next=s.next,s.next=n),t.interleaved=n,vn(e,o)}function vn(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var $n=!1;function Ns(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function gc(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function yn(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Un(e,t,n){var o=e.updateQueue;if(o===null)return null;if(o=o.shared,(ke&2)!==0){var s=o.pending;return s===null?t.next=t:(t.next=s.next,s.next=t),o.pending=t,vn(e,n)}return s=o.interleaved,s===null?(t.next=t,Es(o)):(t.next=s.next,s.next=t),o.interleaved=t,vn(e,n)}function Al(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var o=t.lanes;o&=e.pendingLanes,n|=o,t.lanes=n,Fi(e,n)}}function vc(e,t){var n=e.updateQueue,o=e.alternate;if(o!==null&&(o=o.updateQueue,n===o)){var s=null,u=null;if(n=n.firstBaseUpdate,n!==null){do{var f={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};u===null?s=u=f:u=u.next=f,n=n.next}while(n!==null);u===null?s=u=t:u=u.next=t}else s=u=t;n={baseState:o.baseState,firstBaseUpdate:s,lastBaseUpdate:u,shared:o.shared,effects:o.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Fl(e,t,n,o){var s=e.updateQueue;$n=!1;var u=s.firstBaseUpdate,f=s.lastBaseUpdate,x=s.shared.pending;if(x!==null){s.shared.pending=null;var w=x,P=w.next;w.next=null,f===null?u=P:f.next=P,f=w;var A=e.alternate;A!==null&&(A=A.updateQueue,x=A.lastBaseUpdate,x!==f&&(x===null?A.firstBaseUpdate=P:x.next=P,A.lastBaseUpdate=w))}if(u!==null){var U=s.baseState;f=0,A=P=w=null,x=u;do{var O=x.lane,Q=x.eventTime;if((o&O)===O){A!==null&&(A=A.next={eventTime:Q,lane:0,tag:x.tag,payload:x.payload,callback:x.callback,next:null});e:{var J=e,ne=x;switch(O=t,Q=n,ne.tag){case 1:if(J=ne.payload,typeof J=="function"){U=J.call(Q,U,O);break e}U=J;break e;case 3:J.flags=J.flags&-65537|128;case 0:if(J=ne.payload,O=typeof J=="function"?J.call(Q,U,O):J,O==null)break e;U=H({},U,O);break e;case 2:$n=!0}}x.callback!==null&&x.lane!==0&&(e.flags|=64,O=s.effects,O===null?s.effects=[x]:O.push(x))}else Q={eventTime:Q,lane:O,tag:x.tag,payload:x.payload,callback:x.callback,next:null},A===null?(P=A=Q,w=U):A=A.next=Q,f|=O;if(x=x.next,x===null){if(x=s.shared.pending,x===null)break;O=x,x=O.next,O.next=null,s.lastBaseUpdate=O,s.shared.pending=null}}while(!0);if(A===null&&(w=U),s.baseState=w,s.firstBaseUpdate=P,s.lastBaseUpdate=A,t=s.shared.interleaved,t!==null){s=t;do f|=s.lane,s=s.next;while(s!==t)}else u===null&&(s.shared.lanes=0);ur|=f,e.lanes=f,e.memoizedState=U}}function yc(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var o=Ps.transition;Ps.transition={};try{e(!1),t()}finally{je=n,Ps.transition=o}}function Oc(){return zt().memoizedState}function Rm(e,t,n){var o=Hn(e);if(n={lane:o,action:n,hasEagerState:!1,eagerState:null,next:null},Ac(e))Fc(t,n);else if(n=hc(e,t,n,o),n!==null){var s=dt();Jt(n,e,o,s),$c(n,t,o)}}function Tm(e,t,n){var o=Hn(e),s={lane:o,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ac(e))Fc(t,s);else{var u=e.alternate;if(e.lanes===0&&(u===null||u.lanes===0)&&(u=t.lastRenderedReducer,u!==null))try{var f=t.lastRenderedState,x=u(f,n);if(s.hasEagerState=!0,s.eagerState=x,Qt(x,f)){var w=t.interleaved;w===null?(s.next=s,Es(t)):(s.next=w.next,w.next=s),t.interleaved=s;return}}catch{}finally{}n=hc(e,t,s,o),n!==null&&(s=dt(),Jt(n,e,o,s),$c(n,t,o))}}function Ac(e){var t=e.alternate;return e===Oe||t!==null&&t===Oe}function Fc(e,t){jo=Bl=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function $c(e,t,n){if((n&4194240)!==0){var o=t.lanes;o&=e.pendingLanes,n|=o,t.lanes=n,Fi(e,n)}}var Hl={readContext:_t,useCallback:lt,useContext:lt,useEffect:lt,useImperativeHandle:lt,useInsertionEffect:lt,useLayoutEffect:lt,useMemo:lt,useReducer:lt,useRef:lt,useState:lt,useDebugValue:lt,useDeferredValue:lt,useTransition:lt,useMutableSource:lt,useSyncExternalStore:lt,useId:lt,unstable_isNewReconciler:!1},Pm={readContext:_t,useCallback:function(e,t){return ln().memoizedState=[e,t===void 0?null:t],e},useContext:_t,useEffect:Tc,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Vl(4194308,4,Lc.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Vl(4194308,4,e,t)},useInsertionEffect:function(e,t){return Vl(4,2,e,t)},useMemo:function(e,t){var n=ln();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var o=ln();return t=n!==void 0?n(t):t,o.memoizedState=o.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},o.queue=e,e=e.dispatch=Rm.bind(null,Oe,e),[o.memoizedState,e]},useRef:function(e){var t=ln();return e={current:e},t.memoizedState=e},useState:jc,useDebugValue:Os,useDeferredValue:function(e){return ln().memoizedState=e},useTransition:function(){var e=jc(!1),t=e[0];return e=jm.bind(null,e[1]),ln().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var o=Oe,s=ln();if(_e){if(n===void 0)throw Error(l(407));n=n()}else{if(n=t(),Ye===null)throw Error(l(349));(ar&30)!==0||Sc(o,t,n)}s.memoizedState=n;var u={value:n,getSnapshot:t};return s.queue=u,Tc(Ec.bind(null,o,u,e),[e]),o.flags|=2048,Po(9,Cc.bind(null,o,u,n,t),void 0,null),n},useId:function(){var e=ln(),t=Ye.identifierPrefix;if(_e){var n=gn,o=hn;n=(o&~(1<<32-Gt(o)-1)).toString(32)+n,t=":"+t+"R"+n,n=Ro++,0<\/script>",e=e.removeChild(e.firstChild)):typeof o.is=="string"?e=f.createElement(n,{is:o.is}):(e=f.createElement(n),n==="select"&&(f=e,o.multiple?f.multiple=!0:o.size&&(f.size=o.size))):e=f.createElementNS(e,n),e[rn]=t,e[ko]=o,id(e,t,!1,!1),t.stateNode=e;e:{switch(f=Zr(n,o),n){case"dialog":Pe("cancel",e),Pe("close",e),s=o;break;case"iframe":case"object":case"embed":Pe("load",e),s=o;break;case"video":case"audio":for(s=0;sFr&&(t.flags|=128,o=!0,Do(u,!1),t.lanes=4194304)}else{if(!o)if(e=$l(f),e!==null){if(t.flags|=128,o=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Do(u,!0),u.tail===null&&u.tailMode==="hidden"&&!f.alternate&&!_e)return it(t),null}else 2*Ue()-u.renderingStartTime>Fr&&n!==1073741824&&(t.flags|=128,o=!0,Do(u,!1),t.lanes=4194304);u.isBackwards?(f.sibling=t.child,t.child=f):(n=u.last,n!==null?n.sibling=f:t.child=f,u.last=f)}return u.tail!==null?(t=u.tail,u.rendering=t,u.tail=t.sibling,u.renderingStartTime=Ue(),t.sibling=null,n=Me.current,Te(Me,o?n&1|2:n&1),t):(it(t),null);case 22:case 23:return sa(),o=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==o&&(t.flags|=8192),o&&(t.mode&1)!==0?(jt&1073741824)!==0&&(it(t),t.subtreeFlags&6&&(t.flags|=8192)):it(t),null;case 24:return null;case 25:return null}throw Error(l(156,t.tag))}function Am(e,t){switch(gs(t),t.tag){case 1:return yt(t.type)&&Tl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ir(),De(vt),De(ot),Ts(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return js(t),null;case 13:if(De(Me),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(l(340));Dr()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return De(Me),null;case 4:return Ir(),null;case 10:return Ss(t.type._context),null;case 22:case 23:return sa(),null;case 24:return null;default:return null}}var Yl=!1,st=!1,Fm=typeof WeakSet=="function"?WeakSet:Set,X=null;function Or(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(o){$e(e,t,o)}else n.current=null}function Ys(e,t,n){try{n()}catch(o){$e(e,t,o)}}var ud=!1;function $m(e,t){if(ss=hl,e=Uu(),Zi(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var o=n.getSelection&&n.getSelection();if(o&&o.rangeCount!==0){n=o.anchorNode;var s=o.anchorOffset,u=o.focusNode;o=o.focusOffset;try{n.nodeType,u.nodeType}catch{n=null;break e}var f=0,x=-1,w=-1,P=0,A=0,U=e,O=null;t:for(;;){for(var Q;U!==n||s!==0&&U.nodeType!==3||(x=f+s),U!==u||o!==0&&U.nodeType!==3||(w=f+o),U.nodeType===3&&(f+=U.nodeValue.length),(Q=U.firstChild)!==null;)O=U,U=Q;for(;;){if(U===e)break t;if(O===n&&++P===s&&(x=f),O===u&&++A===o&&(w=f),(Q=U.nextSibling)!==null)break;U=O,O=U.parentNode}U=Q}n=x===-1||w===-1?null:{start:x,end:w}}else n=null}n=n||{start:0,end:0}}else n=null;for(as={focusedElem:e,selectionRange:n},hl=!1,X=t;X!==null;)if(t=X,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,X=e;else for(;X!==null;){t=X;try{var J=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(J!==null){var ne=J.memoizedProps,Be=J.memoizedState,b=t.stateNode,S=b.getSnapshotBeforeUpdate(t.elementType===t.type?ne:Yt(t.type,ne),Be);b.__reactInternalSnapshotBeforeUpdate=S}break;case 3:var R=t.stateNode.containerInfo;R.nodeType===1?R.textContent="":R.nodeType===9&&R.documentElement&&R.removeChild(R.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(l(163))}}catch(W){$e(t,t.return,W)}if(e=t.sibling,e!==null){e.return=t.return,X=e;break}X=t.return}return J=ud,ud=!1,J}function Lo(e,t,n){var o=t.updateQueue;if(o=o!==null?o.lastEffect:null,o!==null){var s=o=o.next;do{if((s.tag&e)===e){var u=s.destroy;s.destroy=void 0,u!==void 0&&Ys(t,n,u)}s=s.next}while(s!==o)}}function Xl(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var o=n.create;n.destroy=o()}n=n.next}while(n!==t)}}function Xs(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function cd(e){var t=e.alternate;t!==null&&(e.alternate=null,cd(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[rn],delete t[ko],delete t[fs],delete t[Sm],delete t[Cm])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function dd(e){return e.tag===5||e.tag===3||e.tag===4}function fd(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||dd(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function qs(e,t,n){var o=e.tag;if(o===5||o===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=jl));else if(o!==4&&(e=e.child,e!==null))for(qs(e,t,n),e=e.sibling;e!==null;)qs(e,t,n),e=e.sibling}function Js(e,t,n){var o=e.tag;if(o===5||o===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(o!==4&&(e=e.child,e!==null))for(Js(e,t,n),e=e.sibling;e!==null;)Js(e,t,n),e=e.sibling}var Je=null,Xt=!1;function Bn(e,t,n){for(n=n.child;n!==null;)pd(e,t,n),n=n.sibling}function pd(e,t,n){if(nn&&typeof nn.onCommitFiberUnmount=="function")try{nn.onCommitFiberUnmount(ul,n)}catch{}switch(n.tag){case 5:st||Or(n,t);case 6:var o=Je,s=Xt;Je=null,Bn(e,t,n),Je=o,Xt=s,Je!==null&&(Xt?(e=Je,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Je.removeChild(n.stateNode));break;case 18:Je!==null&&(Xt?(e=Je,n=n.stateNode,e.nodeType===8?ds(e.parentNode,n):e.nodeType===1&&ds(e,n),uo(e)):ds(Je,n.stateNode));break;case 4:o=Je,s=Xt,Je=n.stateNode.containerInfo,Xt=!0,Bn(e,t,n),Je=o,Xt=s;break;case 0:case 11:case 14:case 15:if(!st&&(o=n.updateQueue,o!==null&&(o=o.lastEffect,o!==null))){s=o=o.next;do{var u=s,f=u.destroy;u=u.tag,f!==void 0&&((u&2)!==0||(u&4)!==0)&&Ys(n,t,f),s=s.next}while(s!==o)}Bn(e,t,n);break;case 1:if(!st&&(Or(n,t),o=n.stateNode,typeof o.componentWillUnmount=="function"))try{o.props=n.memoizedProps,o.state=n.memoizedState,o.componentWillUnmount()}catch(x){$e(n,t,x)}Bn(e,t,n);break;case 21:Bn(e,t,n);break;case 22:n.mode&1?(st=(o=st)||n.memoizedState!==null,Bn(e,t,n),st=o):Bn(e,t,n);break;default:Bn(e,t,n)}}function md(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Fm),t.forEach(function(o){var s=Ym.bind(null,e,o);n.has(o)||(n.add(o),o.then(s,s))})}}function qt(e,t){var n=t.deletions;if(n!==null)for(var o=0;os&&(s=f),o&=~u}if(o=s,o=Ue()-o,o=(120>o?120:480>o?480:1080>o?1080:1920>o?1920:3e3>o?3e3:4320>o?4320:1960*Bm(o/1960))-o,10e?16:e,Wn===null)var o=!1;else{if(e=Wn,Wn=null,ti=0,(ke&6)!==0)throw Error(l(331));var s=ke;for(ke|=4,X=e.current;X!==null;){var u=X,f=u.child;if((X.flags&16)!==0){var x=u.deletions;if(x!==null){for(var w=0;wUe()-ta?dr(e,0):ea|=n),kt(e,t)}function jd(e,t){t===0&&((e.mode&1)===0?t=1:(t=dl,dl<<=1,(dl&130023424)===0&&(dl=4194304)));var n=dt();e=vn(e,t),e!==null&&(oo(e,t,n),kt(e,n))}function Km(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),jd(e,n)}function Ym(e,t){var n=0;switch(e.tag){case 13:var o=e.stateNode,s=e.memoizedState;s!==null&&(n=s.retryLane);break;case 19:o=e.stateNode;break;default:throw Error(l(314))}o!==null&&o.delete(t),jd(e,n)}var Rd;Rd=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||vt.current)xt=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return xt=!1,Mm(e,t,n);xt=(e.flags&131072)!==0}else xt=!1,_e&&(t.flags&1048576)!==0&&sc(t,_l,t.index);switch(t.lanes=0,t.tag){case 2:var o=t.type;Kl(e,t),e=t.pendingProps;var s=Rr(t,ot.current);zr(t,n),s=Ls(null,t,o,e,s,n);var u=_s();return t.flags|=1,typeof s=="object"&&s!==null&&typeof s.render=="function"&&s.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,yt(o)?(u=!0,Pl(t)):u=!1,t.memoizedState=s.state!==null&&s.state!==void 0?s.state:null,Ns(t),s.updater=Gl,t.stateNode=s,s._reactInternals=t,Fs(t,o,e,n),t=Vs(null,t,o,!0,u,n)):(t.tag=0,_e&&u&&hs(t),ct(null,t,s,n),t=t.child),t;case 16:o=t.elementType;e:{switch(Kl(e,t),e=t.pendingProps,s=o._init,o=s(o._payload),t.type=o,s=t.tag=qm(o),e=Yt(o,e),s){case 0:t=Bs(null,t,o,e,n);break e;case 1:t=ed(null,t,o,e,n);break e;case 11:t=Yc(null,t,o,e,n);break e;case 14:t=Xc(null,t,o,Yt(o.type,e),n);break e}throw Error(l(306,o,""))}return t;case 0:return o=t.type,s=t.pendingProps,s=t.elementType===o?s:Yt(o,s),Bs(e,t,o,s,n);case 1:return o=t.type,s=t.pendingProps,s=t.elementType===o?s:Yt(o,s),ed(e,t,o,s,n);case 3:e:{if(td(t),e===null)throw Error(l(387));o=t.pendingProps,u=t.memoizedState,s=u.element,gc(e,t),Fl(t,o,null,n);var f=t.memoizedState;if(o=f.element,u.isDehydrated)if(u={element:o,isDehydrated:!1,cache:f.cache,pendingSuspenseBoundaries:f.pendingSuspenseBoundaries,transitions:f.transitions},t.updateQueue.baseState=u,t.memoizedState=u,t.flags&256){s=Mr(Error(l(423)),t),t=nd(e,t,o,n,s);break e}else if(o!==s){s=Mr(Error(l(424)),t),t=nd(e,t,o,n,s);break e}else for(bt=Mn(t.stateNode.containerInfo.firstChild),Nt=t,_e=!0,Kt=null,n=mc(t,null,o,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Dr(),o===s){t=xn(e,t,n);break e}ct(e,t,o,n)}t=t.child}return t;case 5:return xc(t),e===null&&ys(t),o=t.type,s=t.pendingProps,u=e!==null?e.memoizedProps:null,f=s.children,us(o,s)?f=null:u!==null&&us(o,u)&&(t.flags|=32),Zc(e,t),ct(e,t,f,n),t.child;case 6:return e===null&&ys(t),null;case 13:return rd(e,t,n);case 4:return bs(t,t.stateNode.containerInfo),o=t.pendingProps,e===null?t.child=Lr(t,null,o,n):ct(e,t,o,n),t.child;case 11:return o=t.type,s=t.pendingProps,s=t.elementType===o?s:Yt(o,s),Yc(e,t,o,s,n);case 7:return ct(e,t,t.pendingProps,n),t.child;case 8:return ct(e,t,t.pendingProps.children,n),t.child;case 12:return ct(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(o=t.type._context,s=t.pendingProps,u=t.memoizedProps,f=s.value,Te(Ml,o._currentValue),o._currentValue=f,u!==null)if(Qt(u.value,f)){if(u.children===s.children&&!vt.current){t=xn(e,t,n);break e}}else for(u=t.child,u!==null&&(u.return=t);u!==null;){var x=u.dependencies;if(x!==null){f=u.child;for(var w=x.firstContext;w!==null;){if(w.context===o){if(u.tag===1){w=yn(-1,n&-n),w.tag=2;var P=u.updateQueue;if(P!==null){P=P.shared;var A=P.pending;A===null?w.next=w:(w.next=A.next,A.next=w),P.pending=w}}u.lanes|=n,w=u.alternate,w!==null&&(w.lanes|=n),Cs(u.return,n,t),x.lanes|=n;break}w=w.next}}else if(u.tag===10)f=u.type===t.type?null:u.child;else if(u.tag===18){if(f=u.return,f===null)throw Error(l(341));f.lanes|=n,x=f.alternate,x!==null&&(x.lanes|=n),Cs(f,n,t),f=u.sibling}else f=u.child;if(f!==null)f.return=u;else for(f=u;f!==null;){if(f===t){f=null;break}if(u=f.sibling,u!==null){u.return=f.return,f=u;break}f=f.return}u=f}ct(e,t,s.children,n),t=t.child}return t;case 9:return s=t.type,o=t.pendingProps.children,zr(t,n),s=_t(s),o=o(s),t.flags|=1,ct(e,t,o,n),t.child;case 14:return o=t.type,s=Yt(o,t.pendingProps),s=Yt(o.type,s),Xc(e,t,o,s,n);case 15:return qc(e,t,t.type,t.pendingProps,n);case 17:return o=t.type,s=t.pendingProps,s=t.elementType===o?s:Yt(o,s),Kl(e,t),t.tag=1,yt(o)?(e=!0,Pl(t)):e=!1,zr(t,n),Bc(t,o,s),Fs(t,o,s,n),Vs(null,t,o,!0,e,n);case 19:return ld(e,t,n);case 22:return Jc(e,t,n)}throw Error(l(156,t.tag))};function Td(e,t){return au(e,t)}function Xm(e,t,n,o){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=o,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Mt(e,t,n,o){return new Xm(e,t,n,o)}function ua(e){return e=e.prototype,!(!e||!e.isReactComponent)}function qm(e){if(typeof e=="function")return ua(e)?1:0;if(e!=null){if(e=e.$$typeof,e===xe)return 11;if(e===Fe)return 14}return 2}function Qn(e,t){var n=e.alternate;return n===null?(n=Mt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function li(e,t,n,o,s,u){var f=2;if(o=e,typeof e=="function")ua(e)&&(f=1);else if(typeof e=="string")f=5;else e:switch(e){case K:return pr(n.children,s,u,t);case I:f=8,s|=8;break;case re:return e=Mt(12,n,t,s|2),e.elementType=re,e.lanes=u,e;case we:return e=Mt(13,n,t,s),e.elementType=we,e.lanes=u,e;case Ne:return e=Mt(19,n,t,s),e.elementType=Ne,e.lanes=u,e;case me:return ii(n,s,u,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case ce:f=10;break e;case de:f=9;break e;case xe:f=11;break e;case Fe:f=14;break e;case be:f=16,o=null;break e}throw Error(l(130,e==null?e:typeof e,""))}return t=Mt(f,n,t,s),t.elementType=e,t.type=o,t.lanes=u,t}function pr(e,t,n,o){return e=Mt(7,e,o,t),e.lanes=n,e}function ii(e,t,n,o){return e=Mt(22,e,o,t),e.elementType=me,e.lanes=n,e.stateNode={isHidden:!1},e}function ca(e,t,n){return e=Mt(6,e,null,t),e.lanes=n,e}function da(e,t,n){return t=Mt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Jm(e,t,n,o,s){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Ai(0),this.expirationTimes=Ai(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ai(0),this.identifierPrefix=o,this.onRecoverableError=s,this.mutableSourceEagerHydrationData=null}function fa(e,t,n,o,s,u,f,x,w){return e=new Jm(e,t,n,x,w),t===1?(t=1,u===!0&&(t|=8)):t=0,u=Mt(3,null,null,t),e.current=u,u.stateNode=e,u.memoizedState={element:o,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},Ns(u),e}function Zm(e,t,n){var o=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(r)}catch(i){console.error(i)}}return r(),ya.exports=fh(),ya.exports}var Wd;function ph(){if(Wd)return pi;Wd=1;var r=wf();return pi.createRoot=r.createRoot,pi.hydrateRoot=r.hydrateRoot,pi}var mh=ph();const hh=xf(mh);/** + * react-router v7.8.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */var Hd="popstate";function gh(r={}){function i(a,c){let{pathname:d,search:m,hash:g}=a.location;return Da("",{pathname:d,search:m,hash:g},c.state&&c.state.usr||null,c.state&&c.state.key||"default")}function l(a,c){return typeof c=="string"?c:Wo(c)}return yh(i,l,null,r)}function Ae(r,i){if(r===!1||r===null||typeof r>"u")throw new Error(i)}function an(r,i){if(!r){typeof console<"u"&&console.warn(i);try{throw new Error(i)}catch{}}}function vh(){return Math.random().toString(36).substring(2,10)}function Gd(r,i){return{usr:r.state,key:r.key,idx:i}}function Da(r,i,l=null,a){return{pathname:typeof r=="string"?r:r.pathname,search:"",hash:"",...typeof i=="string"?Vr(i):i,state:l,key:i&&i.key||a||vh()}}function Wo({pathname:r="/",search:i="",hash:l=""}){return i&&i!=="?"&&(r+=i.charAt(0)==="?"?i:"?"+i),l&&l!=="#"&&(r+=l.charAt(0)==="#"?l:"#"+l),r}function Vr(r){let i={};if(r){let l=r.indexOf("#");l>=0&&(i.hash=r.substring(l),r=r.substring(0,l));let a=r.indexOf("?");a>=0&&(i.search=r.substring(a),r=r.substring(0,a)),r&&(i.pathname=r)}return i}function yh(r,i,l,a={}){let{window:c=document.defaultView,v5Compat:d=!1}=a,m=c.history,g="POP",h=null,v=k();v==null&&(v=0,m.replaceState({...m.state,idx:v},""));function k(){return(m.state||{idx:null}).idx}function C(){g="POP";let T=k(),z=T==null?null:T-v;v=T,h&&h({action:g,location:D.location,delta:z})}function j(T,z){g="PUSH";let $=Da(D.location,T,z);v=k()+1;let B=Gd($,v),Y=D.createHref($);try{m.pushState(B,"",Y)}catch(q){if(q instanceof DOMException&&q.name==="DataCloneError")throw q;c.location.assign(Y)}d&&h&&h({action:g,location:D.location,delta:1})}function N(T,z){g="REPLACE";let $=Da(D.location,T,z);v=k();let B=Gd($,v),Y=D.createHref($);m.replaceState(B,"",Y),d&&h&&h({action:g,location:D.location,delta:0})}function M(T){return xh(T)}let D={get action(){return g},get location(){return r(c,m)},listen(T){if(h)throw new Error("A history only accepts one active listener");return c.addEventListener(Hd,C),h=T,()=>{c.removeEventListener(Hd,C),h=null}},createHref(T){return i(c,T)},createURL:M,encodeLocation(T){let z=M(T);return{pathname:z.pathname,search:z.search,hash:z.hash}},push:j,replace:N,go(T){return m.go(T)}};return D}function xh(r,i=!1){let l="http://localhost";typeof window<"u"&&(l=window.location.origin!=="null"?window.location.origin:window.location.href),Ae(l,"No window.location.(origin|href) available to create URL");let a=typeof r=="string"?r:Wo(r);return a=a.replace(/ $/,"%20"),!i&&a.startsWith("//")&&(a=l+a),new URL(a,l)}function kf(r,i,l="/"){return wh(r,i,l,!1)}function wh(r,i,l,a){let c=typeof i=="string"?Vr(i):i,d=Cn(c.pathname||"/",l);if(d==null)return null;let m=Sf(r);kh(m);let g=null;for(let h=0;g==null&&h{let h={relativePath:g===void 0?d.path||"":g,caseSensitive:d.caseSensitive===!0,childrenIndex:m,route:d};h.relativePath.startsWith("/")&&(Ae(h.relativePath.startsWith(a),`Absolute route path "${h.relativePath}" nested under path "${a}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),h.relativePath=h.relativePath.slice(a.length));let v=Sn([a,h.relativePath]),k=l.concat(h);d.children&&d.children.length>0&&(Ae(d.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${v}".`),Sf(d.children,i,k,v)),!(d.path==null&&!d.index)&&i.push({path:v,score:Rh(v,d.index),routesMeta:k})};return r.forEach((d,m)=>{var g;if(d.path===""||!((g=d.path)!=null&&g.includes("?")))c(d,m);else for(let h of Cf(d.path))c(d,m,h)}),i}function Cf(r){let i=r.split("/");if(i.length===0)return[];let[l,...a]=i,c=l.endsWith("?"),d=l.replace(/\?$/,"");if(a.length===0)return c?[d,""]:[d];let m=Cf(a.join("/")),g=[];return g.push(...m.map(h=>h===""?d:[d,h].join("/"))),c&&g.push(...m),g.map(h=>r.startsWith("/")&&h===""?"/":h)}function kh(r){r.sort((i,l)=>i.score!==l.score?l.score-i.score:Th(i.routesMeta.map(a=>a.childrenIndex),l.routesMeta.map(a=>a.childrenIndex)))}var Sh=/^:[\w-]+$/,Ch=3,Eh=2,Nh=1,bh=10,jh=-2,Qd=r=>r==="*";function Rh(r,i){let l=r.split("/"),a=l.length;return l.some(Qd)&&(a+=jh),i&&(a+=Eh),l.filter(c=>!Qd(c)).reduce((c,d)=>c+(Sh.test(d)?Ch:d===""?Nh:bh),a)}function Th(r,i){return r.length===i.length&&r.slice(0,-1).every((a,c)=>a===i[c])?r[r.length-1]-i[i.length-1]:0}function Ph(r,i,l=!1){let{routesMeta:a}=r,c={},d="/",m=[];for(let g=0;g{if(k==="*"){let M=g[j]||"";m=d.slice(0,d.length-M.length).replace(/(.)\/+$/,"$1")}const N=g[j];return C&&!N?v[k]=void 0:v[k]=(N||"").replace(/%2F/g,"/"),v},{}),pathname:d,pathnameBase:m,pattern:r}}function Dh(r,i=!1,l=!0){an(r==="*"||!r.endsWith("*")||r.endsWith("/*"),`Route path "${r}" will be treated as if it were "${r.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${r.replace(/\*$/,"/*")}".`);let a=[],c="^"+r.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(m,g,h)=>(a.push({paramName:g,isOptional:h!=null}),h?"/?([^\\/]+)?":"/([^\\/]+)"));return r.endsWith("*")?(a.push({paramName:"*"}),c+=r==="*"||r==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):l?c+="\\/*$":r!==""&&r!=="/"&&(c+="(?:(?=\\/|$))"),[new RegExp(c,i?void 0:"i"),a]}function Lh(r){try{return r.split("/").map(i=>decodeURIComponent(i).replace(/\//g,"%2F")).join("/")}catch(i){return an(!1,`The URL path "${r}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${i}).`),r}}function Cn(r,i){if(i==="/")return r;if(!r.toLowerCase().startsWith(i.toLowerCase()))return null;let l=i.endsWith("/")?i.length-1:i.length,a=r.charAt(l);return a&&a!=="/"?null:r.slice(l)||"/"}function _h(r,i="/"){let{pathname:l,search:a="",hash:c=""}=typeof r=="string"?Vr(r):r;return{pathname:l?l.startsWith("/")?l:zh(l,i):i,search:Oh(a),hash:Ah(c)}}function zh(r,i){let l=i.replace(/\/+$/,"").split("/");return r.split("/").forEach(c=>{c===".."?l.length>1&&l.pop():c!=="."&&l.push(c)}),l.length>1?l.join("/"):"/"}function ka(r,i,l,a){return`Cannot include a '${r}' character in a manually specified \`to.${i}\` field [${JSON.stringify(a)}]. Please separate it out to the \`to.${l}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function Ih(r){return r.filter((i,l)=>l===0||i.route.path&&i.route.path.length>0)}function Ef(r){let i=Ih(r);return i.map((l,a)=>a===i.length-1?l.pathname:l.pathnameBase)}function Nf(r,i,l,a=!1){let c;typeof r=="string"?c=Vr(r):(c={...r},Ae(!c.pathname||!c.pathname.includes("?"),ka("?","pathname","search",c)),Ae(!c.pathname||!c.pathname.includes("#"),ka("#","pathname","hash",c)),Ae(!c.search||!c.search.includes("#"),ka("#","search","hash",c)));let d=r===""||c.pathname==="",m=d?"/":c.pathname,g;if(m==null)g=l;else{let C=i.length-1;if(!a&&m.startsWith("..")){let j=m.split("/");for(;j[0]==="..";)j.shift(),C-=1;c.pathname=j.join("/")}g=C>=0?i[C]:"/"}let h=_h(c,g),v=m&&m!=="/"&&m.endsWith("/"),k=(d||m===".")&&l.endsWith("/");return!h.pathname.endsWith("/")&&(v||k)&&(h.pathname+="/"),h}var Sn=r=>r.join("/").replace(/\/\/+/g,"/"),Mh=r=>r.replace(/\/+$/,"").replace(/^\/*/,"/"),Oh=r=>!r||r==="?"?"":r.startsWith("?")?r:"?"+r,Ah=r=>!r||r==="#"?"":r.startsWith("#")?r:"#"+r;function Fh(r){return r!=null&&typeof r.status=="number"&&typeof r.statusText=="string"&&typeof r.internal=="boolean"&&"data"in r}var bf=["POST","PUT","PATCH","DELETE"];new Set(bf);var $h=["GET",...bf];new Set($h);var Wr=y.createContext(null);Wr.displayName="DataRouter";var Ri=y.createContext(null);Ri.displayName="DataRouterState";y.createContext(!1);var jf=y.createContext({isTransitioning:!1});jf.displayName="ViewTransition";var Uh=y.createContext(new Map);Uh.displayName="Fetchers";var Bh=y.createContext(null);Bh.displayName="Await";var un=y.createContext(null);un.displayName="Navigation";var Xo=y.createContext(null);Xo.displayName="Location";var Nn=y.createContext({outlet:null,matches:[],isDataRoute:!1});Nn.displayName="Route";var Ua=y.createContext(null);Ua.displayName="RouteError";function Vh(r,{relative:i}={}){Ae(qo(),"useHref() may be used only in the context of a component.");let{basename:l,navigator:a}=y.useContext(un),{hash:c,pathname:d,search:m}=Jo(r,{relative:i}),g=d;return l!=="/"&&(g=d==="/"?l:Sn([l,d])),a.createHref({pathname:g,search:m,hash:c})}function qo(){return y.useContext(Xo)!=null}function qn(){return Ae(qo(),"useLocation() may be used only in the context of a component."),y.useContext(Xo).location}var Rf="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Tf(r){y.useContext(un).static||y.useLayoutEffect(r)}function Ba(){let{isDataRoute:r}=y.useContext(Nn);return r?ng():Wh()}function Wh(){Ae(qo(),"useNavigate() may be used only in the context of a component.");let r=y.useContext(Wr),{basename:i,navigator:l}=y.useContext(un),{matches:a}=y.useContext(Nn),{pathname:c}=qn(),d=JSON.stringify(Ef(a)),m=y.useRef(!1);return Tf(()=>{m.current=!0}),y.useCallback((h,v={})=>{if(an(m.current,Rf),!m.current)return;if(typeof h=="number"){l.go(h);return}let k=Nf(h,JSON.parse(d),c,v.relative==="path");r==null&&i!=="/"&&(k.pathname=k.pathname==="/"?i:Sn([i,k.pathname])),(v.replace?l.replace:l.push)(k,v.state,v)},[i,l,d,c,r])}y.createContext(null);function Jo(r,{relative:i}={}){let{matches:l}=y.useContext(Nn),{pathname:a}=qn(),c=JSON.stringify(Ef(l));return y.useMemo(()=>Nf(r,JSON.parse(c),a,i==="path"),[r,c,a,i])}function Hh(r,i){return Pf(r,i)}function Pf(r,i,l,a){var z;Ae(qo(),"useRoutes() may be used only in the context of a component.");let{navigator:c}=y.useContext(un),{matches:d}=y.useContext(Nn),m=d[d.length-1],g=m?m.params:{},h=m?m.pathname:"/",v=m?m.pathnameBase:"/",k=m&&m.route;{let $=k&&k.path||"";Df(h,!k||$.endsWith("*")||$.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${h}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. + +Please change the parent to .`)}let C=qn(),j;if(i){let $=typeof i=="string"?Vr(i):i;Ae(v==="/"||((z=$.pathname)==null?void 0:z.startsWith(v)),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${v}" but pathname "${$.pathname}" was given in the \`location\` prop.`),j=$}else j=C;let N=j.pathname||"/",M=N;if(v!=="/"){let $=v.replace(/^\//,"").split("/");M="/"+N.replace(/^\//,"").split("/").slice($.length).join("/")}let D=kf(r,{pathname:M});an(k||D!=null,`No routes matched location "${j.pathname}${j.search}${j.hash}" `),an(D==null||D[D.length-1].route.element!==void 0||D[D.length-1].route.Component!==void 0||D[D.length-1].route.lazy!==void 0,`Matched leaf route at location "${j.pathname}${j.search}${j.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let T=Xh(D&&D.map($=>Object.assign({},$,{params:Object.assign({},g,$.params),pathname:Sn([v,c.encodeLocation?c.encodeLocation($.pathname).pathname:$.pathname]),pathnameBase:$.pathnameBase==="/"?v:Sn([v,c.encodeLocation?c.encodeLocation($.pathnameBase).pathname:$.pathnameBase])})),d,l,a);return i&&T?y.createElement(Xo.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...j},navigationType:"POP"}},T):T}function Gh(){let r=tg(),i=Fh(r)?`${r.status} ${r.statusText}`:r instanceof Error?r.message:JSON.stringify(r),l=r instanceof Error?r.stack:null,a="rgba(200,200,200, 0.5)",c={padding:"0.5rem",backgroundColor:a},d={padding:"2px 4px",backgroundColor:a},m=null;return console.error("Error handled by React Router default ErrorBoundary:",r),m=y.createElement(y.Fragment,null,y.createElement("p",null,"💿 Hey developer 👋"),y.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",y.createElement("code",{style:d},"ErrorBoundary")," or"," ",y.createElement("code",{style:d},"errorElement")," prop on your route.")),y.createElement(y.Fragment,null,y.createElement("h2",null,"Unexpected Application Error!"),y.createElement("h3",{style:{fontStyle:"italic"}},i),l?y.createElement("pre",{style:c},l):null,m)}var Qh=y.createElement(Gh,null),Kh=class extends y.Component{constructor(r){super(r),this.state={location:r.location,revalidation:r.revalidation,error:r.error}}static getDerivedStateFromError(r){return{error:r}}static getDerivedStateFromProps(r,i){return i.location!==r.location||i.revalidation!=="idle"&&r.revalidation==="idle"?{error:r.error,location:r.location,revalidation:r.revalidation}:{error:r.error!==void 0?r.error:i.error,location:i.location,revalidation:r.revalidation||i.revalidation}}componentDidCatch(r,i){console.error("React Router caught the following error during render",r,i)}render(){return this.state.error!==void 0?y.createElement(Nn.Provider,{value:this.props.routeContext},y.createElement(Ua.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function Yh({routeContext:r,match:i,children:l}){let a=y.useContext(Wr);return a&&a.static&&a.staticContext&&(i.route.errorElement||i.route.ErrorBoundary)&&(a.staticContext._deepestRenderedBoundaryId=i.route.id),y.createElement(Nn.Provider,{value:r},l)}function Xh(r,i=[],l=null,a=null){if(r==null){if(!l)return null;if(l.errors)r=l.matches;else if(i.length===0&&!l.initialized&&l.matches.length>0)r=l.matches;else return null}let c=r,d=l==null?void 0:l.errors;if(d!=null){let h=c.findIndex(v=>v.route.id&&(d==null?void 0:d[v.route.id])!==void 0);Ae(h>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(d).join(",")}`),c=c.slice(0,Math.min(c.length,h+1))}let m=!1,g=-1;if(l)for(let h=0;h=0?c=c.slice(0,g+1):c=[c[0]];break}}}return c.reduceRight((h,v,k)=>{let C,j=!1,N=null,M=null;l&&(C=d&&v.route.id?d[v.route.id]:void 0,N=v.route.errorElement||Qh,m&&(g<0&&k===0?(Df("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),j=!0,M=null):g===k&&(j=!0,M=v.route.hydrateFallbackElement||null)));let D=i.concat(c.slice(0,k+1)),T=()=>{let z;return C?z=N:j?z=M:v.route.Component?z=y.createElement(v.route.Component,null):v.route.element?z=v.route.element:z=h,y.createElement(Yh,{match:v,routeContext:{outlet:h,matches:D,isDataRoute:l!=null},children:z})};return l&&(v.route.ErrorBoundary||v.route.errorElement||k===0)?y.createElement(Kh,{location:l.location,revalidation:l.revalidation,component:N,error:C,children:T(),routeContext:{outlet:null,matches:D,isDataRoute:!0}}):T()},null)}function Va(r){return`${r} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function qh(r){let i=y.useContext(Wr);return Ae(i,Va(r)),i}function Jh(r){let i=y.useContext(Ri);return Ae(i,Va(r)),i}function Zh(r){let i=y.useContext(Nn);return Ae(i,Va(r)),i}function Wa(r){let i=Zh(r),l=i.matches[i.matches.length-1];return Ae(l.route.id,`${r} can only be used on routes that contain a unique "id"`),l.route.id}function eg(){return Wa("useRouteId")}function tg(){var a;let r=y.useContext(Ua),i=Jh("useRouteError"),l=Wa("useRouteError");return r!==void 0?r:(a=i.errors)==null?void 0:a[l]}function ng(){let{router:r}=qh("useNavigate"),i=Wa("useNavigate"),l=y.useRef(!1);return Tf(()=>{l.current=!0}),y.useCallback(async(c,d={})=>{an(l.current,Rf),l.current&&(typeof c=="number"?r.navigate(c):await r.navigate(c,{fromRouteId:i,...d}))},[r,i])}var Kd={};function Df(r,i,l){!i&&!Kd[r]&&(Kd[r]=!0,an(!1,l))}y.memo(rg);function rg({routes:r,future:i,state:l}){return Pf(r,void 0,l,i)}function vi(r){Ae(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function og({basename:r="/",children:i=null,location:l,navigationType:a="POP",navigator:c,static:d=!1}){Ae(!qo(),"You cannot render a inside another . You should never have more than one in your app.");let m=r.replace(/^\/*/,"/"),g=y.useMemo(()=>({basename:m,navigator:c,static:d,future:{}}),[m,c,d]);typeof l=="string"&&(l=Vr(l));let{pathname:h="/",search:v="",hash:k="",state:C=null,key:j="default"}=l,N=y.useMemo(()=>{let M=Cn(h,m);return M==null?null:{location:{pathname:M,search:v,hash:k,state:C,key:j},navigationType:a}},[m,h,v,k,C,j,a]);return an(N!=null,` is not able to match the URL "${h}${v}${k}" because it does not start with the basename, so the won't render anything.`),N==null?null:y.createElement(un.Provider,{value:g},y.createElement(Xo.Provider,{children:i,value:N}))}function lg({children:r,location:i}){return Hh(La(r),i)}function La(r,i=[]){let l=[];return y.Children.forEach(r,(a,c)=>{if(!y.isValidElement(a))return;let d=[...i,c];if(a.type===y.Fragment){l.push.apply(l,La(a.props.children,d));return}Ae(a.type===vi,`[${typeof a.type=="string"?a.type:a.type.name}] is not a component. All component children of must be a or `),Ae(!a.props.index||!a.props.children,"An index route cannot have child routes.");let m={id:a.props.id||d.join("-"),caseSensitive:a.props.caseSensitive,element:a.props.element,Component:a.props.Component,index:a.props.index,path:a.props.path,loader:a.props.loader,action:a.props.action,hydrateFallbackElement:a.props.hydrateFallbackElement,HydrateFallback:a.props.HydrateFallback,errorElement:a.props.errorElement,ErrorBoundary:a.props.ErrorBoundary,hasErrorBoundary:a.props.hasErrorBoundary===!0||a.props.ErrorBoundary!=null||a.props.errorElement!=null,shouldRevalidate:a.props.shouldRevalidate,handle:a.props.handle,lazy:a.props.lazy};a.props.children&&(m.children=La(a.props.children,d)),l.push(m)}),l}var yi="get",xi="application/x-www-form-urlencoded";function Ti(r){return r!=null&&typeof r.tagName=="string"}function ig(r){return Ti(r)&&r.tagName.toLowerCase()==="button"}function sg(r){return Ti(r)&&r.tagName.toLowerCase()==="form"}function ag(r){return Ti(r)&&r.tagName.toLowerCase()==="input"}function ug(r){return!!(r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)}function cg(r,i){return r.button===0&&(!i||i==="_self")&&!ug(r)}var mi=null;function dg(){if(mi===null)try{new FormData(document.createElement("form"),0),mi=!1}catch{mi=!0}return mi}var fg=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Sa(r){return r!=null&&!fg.has(r)?(an(!1,`"${r}" is not a valid \`encType\` for \`\`/\`\` and will default to "${xi}"`),null):r}function pg(r,i){let l,a,c,d,m;if(sg(r)){let g=r.getAttribute("action");a=g?Cn(g,i):null,l=r.getAttribute("method")||yi,c=Sa(r.getAttribute("enctype"))||xi,d=new FormData(r)}else if(ig(r)||ag(r)&&(r.type==="submit"||r.type==="image")){let g=r.form;if(g==null)throw new Error('Cannot submit a +
+ + {/* Create/Edit Form */} + {(showCreateForm || editingCategory) && ( + +

+ {editingCategory ? 'Edit Category' : 'Create Category'} +

+ +
+
+ + setFormData({ ...formData, id: e.target.value })} + required + disabled={!!editingCategory} + /> +
+
+ + setFormData({ ...formData, name: e.target.value })} + required + /> +
+
+ + setFormData({ ...formData, unit: e.target.value })} + required + /> +
+
+ + +
+
+
+ + setFormData({ ...formData, description: e.target.value })} + /> +
+
+ + setFormData({ ...formData, question: e.target.value })} + /> +
+
+ setFormData({ ...formData, unitVisible: e.target.checked })} + className="rounded border-border" + /> + +
+
+ + +
+ +
+ )} + + {/* Categories List */} +
+ {sortedCategories.map((category) => ( + +
+
+

{category.name}

+

ID: {category.id}

+ {category.description && ( +

{category.description}

+ )} + {category.question && ( +

Q: {category.question}

+ )} +
+ Unit: {category.unit} + Sort: {category.sort} + Unit Visible: {category.unitVisible ? 'Yes' : 'No'} +
+
+
+ + +
+
+
+ ))} +
+
+ ); +}; + +export default CategoriesTab; diff --git a/frontend/src/components/admin/ItemsTab.tsx b/frontend/src/components/admin/ItemsTab.tsx new file mode 100644 index 0000000000..e61ca791eb --- /dev/null +++ b/frontend/src/components/admin/ItemsTab.tsx @@ -0,0 +1,237 @@ +import React, { useState, useMemo } from 'react'; +import { Button, Card, Input, Label } from '../../ui'; +import { Item, Category } from '../../types/admin'; + +interface ItemsTabProps { + items: Record; + categories: Category[]; + onEdit: (item: Item) => void; + onDelete: (id: string) => Promise; + onCreate: () => void; + editingItem: Item | null; + showCreateForm: boolean; + onSave: (data: Partial) => Promise; + onUpdate: (id: string, data: Partial) => Promise; + onCancel: () => void; + selectedCategoryFilter: string; + setSelectedCategoryFilter: (filter: string) => void; +} + +const ItemsTab: React.FC = ({ + items, + categories, + onEdit, + onDelete, + onCreate, + editingItem, + showCreateForm, + onSave, + onUpdate, + onCancel, + selectedCategoryFilter, + setSelectedCategoryFilter +}) => { + const [formData, setFormData] = useState>({ + id: '', + name: '', + value: 0, + label: '', + categoryId: '' + }); + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + let success = false; + + if (editingItem) { + success = await onUpdate(editingItem.id, formData); + } else { + success = await onSave(formData); + } + + if (success) { + setFormData({ id: '', name: '', value: 0, label: '', categoryId: '' }); + } + }; + + const handleEdit = (item: Item) => { + setFormData(item); + onEdit(item); + }; + + const handleCancel = () => { + setFormData({ id: '', name: '', value: 0, label: '', categoryId: '' }); + onCancel(); + }; + + // Sort and group items by category, then alphabetically within each category + const sortedAndGroupedItems = useMemo(() => { + const filteredItems = selectedCategoryFilter === 'all' + ? Object.values(items).flat() + : items[selectedCategoryFilter] || []; + + // Group by category + const grouped = filteredItems.reduce((acc, item) => { + const categoryId = item.categoryId; + if (!acc[categoryId]) { + acc[categoryId] = []; + } + acc[categoryId].push(item); + return acc; + }, {} as Record); + + // Sort items within each category alphabetically + Object.keys(grouped).forEach(categoryId => { + grouped[categoryId].sort((a, b) => a.name.localeCompare(b.name)); + }); + + return grouped; + }, [items, selectedCategoryFilter]); + + return ( +
+
+

Items

+ +
+ + {/* Create/Edit Form */} + {(showCreateForm || editingItem) && ( + +

+ {editingItem ? 'Edit Item' : 'Create Item'} +

+
+
+
+ + setFormData({ ...formData, id: e.target.value })} + required + disabled={!!editingItem} + /> +
+
+ + setFormData({ ...formData, name: e.target.value })} + required + /> +
+
+ + setFormData({ ...formData, value: Number(e.target.value) })} + required + /> +
+
+ + setFormData({ ...formData, label: e.target.value })} + required + /> +
+
+
+ + +
+
+ + +
+
+
+ )} + + {/* Items List */} +
+ {/* Category Filter */} +
+ + {Object.keys(items).map((categoryId) => { + const category = categories.find(c => c.id === categoryId); + return ( + + ); + })} +
+ + {Object.entries(sortedAndGroupedItems).map(([categoryId, categoryItems]) => ( +
+

+ {categories.find(c => c.id === categoryId)?.name || 'Unknown Category'} +

+
+ {categoryItems.map((item) => ( + +
+
+

{item.name}

+

ID: {item.id}

+
+ Value: {item.value} + Label: {item.label} + + Category: {categories.find(c => c.id === categoryId)?.name || 'Unknown'} + +
+
+
+ + +
+
+
+ ))} +
+
+ ))} +
+
+ ); +}; + +export default ItemsTab; diff --git a/frontend/src/components/admin/LoginForm.tsx b/frontend/src/components/admin/LoginForm.tsx new file mode 100644 index 0000000000..8e8c9a7aef --- /dev/null +++ b/frontend/src/components/admin/LoginForm.tsx @@ -0,0 +1,86 @@ +import React, { useState } from 'react'; +import { Heading, Button, Card, Input, Label, ErrorMessage } from '../../ui'; +import { DotPattern } from '../../ui'; + +interface LoginFormProps { + onLogin: (username: string, password: string) => Promise<{ success: boolean; error?: string }>; + loading: boolean; + error: string; +} + +const LoginForm: React.FC = ({ onLogin, loading, error }) => { + const [formData, setFormData] = useState({ username: '', password: '' }); + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + const result = await onLogin(formData.username, formData.password); + if (result.success) { + setFormData({ username: '', password: '' }); + } + }; + + return ( +
+
+
+ +
+
+
+
+ Admin Access +
+ + Admin Login + +

+ Enter your credentials to access the admin panel. +

+
+ +
+ +
+ {error && } + +
+ + setFormData({ ...formData, username: e.target.value })} + required + disabled={loading} + /> +
+ +
+ + setFormData({ ...formData, password: e.target.value })} + required + disabled={loading} + /> +
+ + + +
+
+
+
+
+ ); +}; + +export default LoginForm; diff --git a/frontend/src/hooks/useAuth.ts b/frontend/src/hooks/useAuth.ts new file mode 100644 index 0000000000..bb21f65bf2 --- /dev/null +++ b/frontend/src/hooks/useAuth.ts @@ -0,0 +1,111 @@ +import { useState, useEffect } from 'react'; +import { config } from '../config/environment'; +import { Admin } from '../types/admin'; + +export const useAuth = () => { + const [isAuthenticated, setIsAuthenticated] = useState(false); + const [admin, setAdmin] = useState(null); + const [token, setToken] = useState(localStorage.getItem('adminToken')); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(''); + + useEffect(() => { + if (token) { + checkAuth(); + } + }, [token]); + + const checkAuth = async () => { + try { + const response = await fetch(`${config.backendUrl}/api/admin/profile`, { + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + } + }); + + if (response.ok) { + const data = await response.json(); + if (data.success && data.data) { + setAdmin(data.data.admin); + setIsAuthenticated(true); + } else { + logout(); + } + } else { + logout(); + } + } catch (error) { + console.error('Auth check failed:', error); + logout(); + } + }; + + const login = async (username: string, password: string) => { + setError(''); + setLoading(true); + + try { + const response = await fetch(`${config.backendUrl}/api/admin/login`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ username, password }) + }); + + const data = await response.json(); + + if (response.ok && data.success && data.data) { + localStorage.setItem('adminToken', data.data.token); + setToken(data.data.token); + setAdmin(data.data.admin); + setIsAuthenticated(true); + return { success: true }; + } else { + const errorMessage = data.error?.message || data.message || 'Login failed'; + setError(errorMessage); + return { success: false, error: errorMessage }; + } + } catch (error) { + setError('Network error occurred'); + return { success: false, error: 'Network error occurred' }; + } finally { + setLoading(false); + } + }; + + const logout = async () => { + try { + if (token) { + await fetch(`${config.backendUrl}/api/admin/logout`, { + method: 'POST', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + } + }); + } + } catch (error) { + console.error('Logout error:', error); + } finally { + localStorage.removeItem('adminToken'); + setToken(null); + setAdmin(null); + setIsAuthenticated(false); + } + }; + + const clearError = () => setError(''); + + return { + isAuthenticated, + admin, + token, + loading, + error, + login, + logout, + clearError + }; +}; diff --git a/frontend/src/hooks/useCategories.ts b/frontend/src/hooks/useCategories.ts new file mode 100644 index 0000000000..6d2decbdca --- /dev/null +++ b/frontend/src/hooks/useCategories.ts @@ -0,0 +1,148 @@ +import { useState, useEffect } from 'react'; +import { config } from '../config/environment'; +import { Category } from '../types/admin'; + +export const useCategories = (token: string | null) => { + const [categories, setCategories] = useState([]); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(''); + + const fetchCategories = async () => { + if (!token) return; + + try { + setLoading(true); + const response = await fetch(`${config.backendUrl}/api/admin/categories`, { + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + } + }); + + if (response.ok) { + const data = await response.json(); + if (data.success && data.data) { + setCategories(data.data.categories); + } else { + setError(data.error?.message || 'Failed to fetch categories'); + } + } else { + const data = await response.json(); + setError(data.error?.message || data.message || 'Failed to fetch categories'); + } + } catch (error) { + setError('Network error occurred'); + } finally { + setLoading(false); + } + }; + + const createCategory = async (categoryData: Partial) => { + if (!token) return false; + + try { + setLoading(true); + const response = await fetch(`${config.backendUrl}/api/admin/categories`, { + method: 'POST', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + }, + body: JSON.stringify(categoryData) + }); + + if (response.ok) { + await fetchCategories(); + return true; + } else { + const data = await response.json(); + setError(data.error?.message || data.message || 'Failed to create category'); + return false; + } + } catch (error) { + setError('Network error occurred'); + return false; + } finally { + setLoading(false); + } + }; + + const updateCategory = async (id: string, categoryData: Partial) => { + if (!token) return false; + + try { + setLoading(true); + const response = await fetch(`${config.backendUrl}/api/admin/categories/${id}`, { + method: 'PUT', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + }, + body: JSON.stringify(categoryData) + }); + + if (response.ok) { + await fetchCategories(); + return true; + } else { + const data = await response.json(); + setError(data.error?.message || data.message || 'Failed to update category'); + return false; + } + } catch (error) { + setError('Network error occurred'); + return false; + } finally { + setLoading(false); + } + }; + + const deleteCategory = async (id: string) => { + if (!token) return false; + + if (!confirm('Are you sure you want to delete this category?')) return false; + + try { + setLoading(true); + const response = await fetch(`${config.backendUrl}/api/admin/categories/${id}`, { + method: 'DELETE', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + } + }); + + if (response.ok) { + await fetchCategories(); + return true; + } else { + const data = await response.json(); + setError(data.error?.message || data.message || 'Failed to delete category'); + return false; + } + } catch (error) { + setError('Network error occurred'); + return false; + } finally { + setLoading(false); + } + }; + + const clearError = () => setError(''); + + useEffect(() => { + if (token) { + fetchCategories(); + } + }, [token]); + + return { + categories, + loading, + error, + createCategory, + updateCategory, + deleteCategory, + clearError + }; +}; diff --git a/frontend/src/hooks/useItems.ts b/frontend/src/hooks/useItems.ts new file mode 100644 index 0000000000..a558d067fa --- /dev/null +++ b/frontend/src/hooks/useItems.ts @@ -0,0 +1,148 @@ +import { useState, useEffect } from 'react'; +import { config } from '../config/environment'; +import { Item } from '../types/admin'; + +export const useItems = (token: string | null) => { + const [items, setItems] = useState([]); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(''); + + const fetchItems = async () => { + if (!token) return; + + try { + setLoading(true); + const response = await fetch(`${config.backendUrl}/api/admin/items`, { + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + } + }); + + if (response.ok) { + const data = await response.json(); + if (data.success && data.data) { + setItems(data.data.items); + } else { + setError(data.error?.message || 'Failed to fetch items'); + } + } else { + const data = await response.json(); + setError(data.error?.message || data.message || 'Failed to fetch items'); + } + } catch (error) { + setError('Network error occurred'); + } finally { + setLoading(false); + } + }; + + const createItem = async (itemData: Partial) => { + if (!token) return false; + + try { + setLoading(true); + const response = await fetch(`${config.backendUrl}/api/admin/items`, { + method: 'POST', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + }, + body: JSON.stringify(itemData) + }); + + if (response.ok) { + await fetchItems(); + return true; + } else { + const data = await response.json(); + setError(data.error?.message || data.message || 'Failed to create item'); + return false; + } + } catch (error) { + setError('Network error occurred'); + return false; + } finally { + setLoading(false); + } + }; + + const updateItem = async (id: string, itemData: Partial) => { + if (!token) return false; + + try { + setLoading(true); + const response = await fetch(`${config.backendUrl}/api/admin/items/${id}`, { + method: 'PUT', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + }, + body: JSON.stringify(itemData) + }); + + if (response.ok) { + await fetchItems(); + return true; + } else { + const data = await response.json(); + setError(data.error?.message || data.message || 'Failed to update item'); + return false; + } + } catch (error) { + setError('Network error occurred'); + return false; + } finally { + setLoading(false); + } + }; + + const deleteItem = async (id: string) => { + if (!token) return false; + + if (!confirm('Are you sure you want to delete this item?')) return false; + + try { + setLoading(true); + const response = await fetch(`${config.backendUrl}/api/admin/items/${id}`, { + method: 'DELETE', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + } + }); + + if (response.ok) { + await fetchItems(); + return true; + } else { + const data = await response.json(); + setError(data.error?.message || data.message || 'Failed to delete item'); + return false; + } + } catch (error) { + setError('Network error occurred'); + return false; + } finally { + setLoading(false); + } + }; + + const clearError = () => setError(''); + + useEffect(() => { + if (token) { + fetchItems(); + } + }, [token]); + + return { + items, + loading, + error, + createItem, + updateItem, + deleteItem, + clearError + }; +}; diff --git a/frontend/src/pages/AdminPage.tsx b/frontend/src/pages/AdminPage.tsx new file mode 100644 index 0000000000..1b003c7bfd --- /dev/null +++ b/frontend/src/pages/AdminPage.tsx @@ -0,0 +1,174 @@ +import React, { useState, useMemo } from 'react'; +import { Heading, Button, ErrorMessage } from '../ui'; +import { DotPattern } from '../ui'; +import { useAuth } from '../hooks/useAuth'; +import { useCategories } from '../hooks/useCategories'; +import { useItems } from '../hooks/useItems'; +import LoginForm from '../components/admin/LoginForm'; +import CategoriesTab from '../components/admin/CategoriesTab'; +import ItemsTab from '../components/admin/ItemsTab'; + +const AdminPage: React.FC = () => { + const { isAuthenticated, admin, token, login, logout, error: authError, loading: authLoading } = useAuth(); + const { + categories, + createCategory, + updateCategory, + deleteCategory, + error: categoriesError + } = useCategories(token); + const { + items, + createItem, + updateItem, + deleteItem, + error: itemsError + } = useItems(token); + + const [activeTab, setActiveTab] = useState<'categories' | 'items'>('categories'); + const [editingCategory, setEditingCategory] = useState(null); + const [editingItem, setEditingItem] = useState(null); + const [showCreateForm, setShowCreateForm] = useState(false); + const [selectedCategoryFilter, setSelectedCategoryFilter] = useState('all'); + + // Sort and group items by category + const sortedAndGroupedItems = useMemo(() => { + const filteredItems = selectedCategoryFilter === 'all' + ? items + : items.filter(item => item.categoryId === selectedCategoryFilter); + + // Group by category + const grouped = filteredItems.reduce((acc, item) => { + const categoryId = item.categoryId; + if (!acc[categoryId]) { + acc[categoryId] = []; + } + acc[categoryId].push(item); + return acc; + }, {} as Record); + + // Sort items within each category alphabetically + Object.keys(grouped).forEach(categoryId => { + grouped[categoryId].sort((a, b) => a.name.localeCompare(b.name)); + }); + + return grouped; + }, [items, selectedCategoryFilter]); + + const handleLogin = async (username: string, password: string) => { + return await login(username, password); + }; + + const handleLogout = () => { + logout(); + }; + + if (!isAuthenticated) { + return ( + + ); + } + + return ( +
+ {/* Fixed Logout Button */} +
+ +
+ +
+
+ +
+ +
+ {/* Header */} +
+
+
+ Admin Panel +
+ + Quiz Management + +

+ Welcome back, {admin?.username} +

+
+
+ + {/* Error Messages */} + {(authError || categoriesError || itemsError) && ( +
+ +
+ )} + + {/* Tabs */} +
+ + +
+ + {/* Content */} + {activeTab === 'categories' ? ( + setShowCreateForm(true)} + editingCategory={editingCategory} + showCreateForm={showCreateForm} + onSave={createCategory} + onUpdate={updateCategory} + onCancel={() => { + setEditingCategory(null); + setShowCreateForm(false); + }} + /> + ) : ( + setShowCreateForm(true)} + editingItem={editingItem} + showCreateForm={showCreateForm} + onSave={createItem} + onUpdate={updateItem} + onCancel={() => { + setEditingItem(null); + setShowCreateForm(false); + }} + selectedCategoryFilter={selectedCategoryFilter} + setSelectedCategoryFilter={setSelectedCategoryFilter} + /> + )} +
+
+
+ ); +}; + +export default AdminPage; diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index bfac87cf85..a0bb1d5470 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -2,6 +2,7 @@ import React from "react"; import { Link, useNavigate } from "react-router-dom"; import { OrientationGuard } from "../components/OrientationGuard"; import { GameBoard } from "../components/GameBoard"; +import { CategorySelector } from "../components/CategorySelector"; import { Heading, DotPattern } from "../ui"; import { useGame } from "../store/game"; import { GameSettings } from "../components/GameSettings"; diff --git a/frontend/src/types/admin.ts b/frontend/src/types/admin.ts new file mode 100644 index 0000000000..99e7de5f35 --- /dev/null +++ b/frontend/src/types/admin.ts @@ -0,0 +1,12 @@ +import type { GameCategory, GameItem } from './game'; + +export interface Admin { + id: string; + username: string; + email: string; + lastLogin?: string; +} + +// Re-export the types from game.ts for convenience +export type Category = GameCategory; +export type Item = GameItem; diff --git a/frontend/src/types/game.ts b/frontend/src/types/game.ts index 4cb99c5d6d..0fa76556ab 100644 --- a/frontend/src/types/game.ts +++ b/frontend/src/types/game.ts @@ -13,9 +13,13 @@ export type GameCategory = { _id?: string; // mongodb ID id: string; name: string; // "Animals", "Celebrities", etc. + description?: string; question: string; // "Which animal weighs the most?" unit: string; + unitVisible?: boolean; + sort?: 'asc' | 'desc'; source?: { name: string; url?: string }; + version?: number; }; export type Team = { diff --git a/frontend/src/ui/index.ts b/frontend/src/ui/index.ts index d39c1417d2..37da687dfd 100644 --- a/frontend/src/ui/index.ts +++ b/frontend/src/ui/index.ts @@ -1,4 +1,7 @@ export { Button } from './Button'; export { Card, CardHeader, CardContent } from './Card'; export { Heading } from './Heading'; -export { DotPattern } from './DotPattern'; \ No newline at end of file +export { DotPattern } from './DotPattern'; +export { ErrorMessage } from './ErrorMessage'; +export { Input } from './Input'; +export { Label } from './Label'; \ No newline at end of file From e026424bf0b8eed3c651d7602bc28ae46e646993 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Fri, 22 Aug 2025 15:27:29 +0200 Subject: [PATCH 065/127] game settings up and running --- frontend/src/components/GameBoard.tsx | 61 +++++--- frontend/src/components/GameSettings.tsx | 95 +++++++---- frontend/src/pages/GameMode.tsx | 45 ++++-- frontend/src/store/game.ts | 191 +++++++++++++++++++++-- frontend/src/types/game.ts | 15 +- 5 files changed, 330 insertions(+), 77 deletions(-) diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index f12e744ced..b5291bf15b 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -37,24 +37,28 @@ const DropSlot: React.FC<{ id: string; show: boolean }> = ({ id, show }) => { }; export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { - const { - teams, - currentTeamIndex, - phase, - currentCard, - startGame, - startTurn, - placeAt, - drawAnother, - lockIn, - confirmPlacement, - loading, - error, - clearError, - pendingIndex, - lastPlacementCorrect, - selectedCategory, - } = useGame(); + // ---- En hook per fält/action (inga object-literals → inga nya referenser per render) + const teams = useGame((s) => s.teams); + const currentTeamIndex = useGame((s) => s.currentTeamIndex); + const phase = useGame((s) => s.phase); + const currentCard = useGame((s) => s.currentCard); + + const startGame = useGame((s) => s.startGame); + const startTurn = useGame((s) => s.startTurn); + const placeAt = useGame((s) => s.placeAt); + const drawAnother = useGame((s) => s.drawAnother); + const lockIn = useGame((s) => s.lockIn); + const confirmPlacement = useGame((s) => s.confirmPlacement); + + const loading = useGame((s) => s.loading); + const error = useGame((s) => s.error); + const clearError = useGame((s) => s.clearError); + + const pendingIndex = useGame((s) => s.pendingIndex); + const lastPlacementCorrect = useGame((s) => s.lastPlacementCorrect); + const selectedCategory = useGame((s) => s.selectedCategory); + const lastTurnFeedback = useGame((s) => s.lastTurnFeedback); + const turnTimeline = useGame((s) => s.turnTimeline); const team = teams[currentTeamIndex]; @@ -79,12 +83,13 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { /** Timeline i liten skala; kort växer på hover */ const renderTimeline = () => { + const teamTimeline = team?.timeline ?? []; const base = phase === "DRAWN" || phase === "PLACED_PENDING" || phase === "CHOICE_AFTER_CORRECT" - ? useGame.getState().turnTimeline - : team.timeline; + ? turnTimeline + : teamTimeline; const showSlots = phase === "DRAWN" || phase === "PLACED_PENDING"; @@ -245,6 +250,22 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { + {/* Time's up-feedback (visas mellan turer) */} + {lastTurnFeedback?.timeUp && ( +
+ Time’s up.{" "} + {lastTurnFeedback.correct === true && ( + You were correct! + )} + {lastTurnFeedback.correct === false && ( + That was incorrect. + )} + {lastTurnFeedback.correct == null && ( + No answer placed. + )} +
+ )} + {/* Kontroller */}
{phase === "TURN_START" && ( diff --git a/frontend/src/components/GameSettings.tsx b/frontend/src/components/GameSettings.tsx index ed51ba0048..b82870e42f 100644 --- a/frontend/src/components/GameSettings.tsx +++ b/frontend/src/components/GameSettings.tsx @@ -1,4 +1,3 @@ -// src/components/GameSettings.tsx import React from "react"; import { Card, Button } from "../ui"; import { useGame } from "../store/game"; @@ -6,18 +5,26 @@ import { useGame } from "../store/game"; type Props = { onClose?: () => void; onContinue?: () => void }; export const GameSettings: React.FC = ({ onClose, onContinue }) => { - const { selectedCategory } = useGame(); + const { + selectedCategory, + settings, + setTeamCount, + setTeamName, + setTurnSeconds, + setRevealMode, + applySettings, + } = useGame(); - const [teamA, setTeamA] = React.useState("Team A"); - const [teamB, setTeamB] = React.useState("Team B"); - const [turnTime, setTurnTime] = React.useState<30 | 60 | 90>(60); - const [reveal, setReveal] = React.useState<"hidden" | "shown">("hidden"); + const handleContinue = () => { + applySettings(); + onContinue?.(); + }; return (
-
- Selected: {selectedCategory?.question} +
+ {settings.teamNames.length} teams • {settings.turnSeconds}s per turn
{onClose && (
- -
Teams
-
- setTeamA(e.target.value)} - className="w-full rounded-md border border-border bg-card px-3 py-2" - placeholder="Team A name" - /> - setTeamB(e.target.value)} - className="w-full rounded-md border border-border bg-card px-3 py-2" - placeholder="Team B name" - /> + +
Teams
+ +
+ + +
+ +
+ {settings.teamNames.map((name, i) => ( + setTeamName(i, e.target.value)} + className="w-full rounded-md border border-border bg-card px-3 py-2" + placeholder={`Team ${i + 1} name`} + /> + ))}
- -
Turn time
+ +
Turn time
- -
Value & unit display
+ +
Value & unit display
- +
); diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index bfac87cf85..b407aa1e04 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -5,6 +5,7 @@ import { GameBoard } from "../components/GameBoard"; import { Heading, DotPattern } from "../ui"; import { useGame } from "../store/game"; import { GameSettings } from "../components/GameSettings"; +import { CategorySelector } from "../components/CategorySelector"; export default function GameMode() { const navigate = useNavigate(); @@ -18,6 +19,13 @@ export default function GameMode() { const scoreA = teams[0]?.timeline.length ?? 0; const scoreB = teams[1]?.timeline.length ?? 0; +const { settings, timer } = useGame(); +const total = settings.turnSeconds; +const left = timer.secondsLeft; +const elapsed = total - left; +const pct = Math.max(0, Math.min(100, Math.round((elapsed / total) * 100))); + + const chip = "px-2 py-1 rounded-full bg-primary/10 border border-border text-xs tracking-wider uppercase text-muted-foreground"; const dot = "inline-block w-2 h-2 rounded-sm bg-primary shadow-soft"; @@ -68,17 +76,16 @@ export default function GameMode() { {/* Top-right: A/B Team */} -
-
-
- A Team {scoreA} -
-
- B Team {scoreB} -
-
- +
+
+ {teams.map((t, i) => ( +
+ {t.name} {t.timeline?.length ?? 0}
+ ))} +
+ +
{/* Bottom-left: Round */}
@@ -92,6 +99,24 @@ export default function GameMode() {
+ {/* Timer */} +{(phase === "DRAWN" || phase === "PLACED_PENDING" || phase === "CHOICE_AFTER_CORRECT") && ( +
+
+ {String(Math.floor(left / 60)).padStart(2, "0")}:{String(left % 60).padStart(2, "0")} +
+
+
+
+
+)} + {/* Innehållssektion med DotPattern – växla mellan SETUP (Settings) och Board */}
diff --git a/frontend/src/store/game.ts b/frontend/src/store/game.ts index af262bd542..c565e26173 100644 --- a/frontend/src/store/game.ts +++ b/frontend/src/store/game.ts @@ -1,6 +1,6 @@ // src/store/game.ts import { create } from "zustand"; -import type { GameItem, GameState, GameCategory } from "../types/game"; +import type { GameItem, GameState, GameCategory, GameSettings, RevealMode } from "../types/game"; import { apiService } from "../services/api"; import { shuffle } from "../lib/shuffle"; @@ -30,6 +30,12 @@ const drawOne = (pool: GameItem[]) => { }; // ---------- extra UI-state ---------- +type TimerState = { + turnDeadline: number | null; + secondsLeft: number; + timerId: number | null; +}; + type UIState = { loading: boolean; error: string | null; @@ -39,6 +45,10 @@ type UIState = { turnTimeline: GameItem[]; categories: GameCategory[]; selectedCategory: GameCategory | null; + settings: GameSettings; + timer: TimerState; + lastTurnFeedback: { timeUp?: boolean; correct?: boolean | null } | null; + }; // ---------- actions ---------- @@ -53,6 +63,26 @@ type Actions = { drawAnother: () => Promise; lockIn: () => void; nextTeam: () => void; + setTeamCount: (count: number) => void; + setTeamName: (index: number, name: string) => void; + setTurnSeconds: (sec: 30 | 60 | 90) => void; + setRevealMode: (mode: RevealMode) => void; + applySettings: () => void; + startTimer: () => void; + stopTimer: () => void; + timeUp: () => void; +}; + +const initialSettings: GameSettings = { + teamNames: ["Team Bang", "Team Ganza"], + turnSeconds: 60, + revealMode: "hidden", +}; + +const initialTimer: TimerState = { + turnDeadline: null, + secondsLeft: initialSettings.turnSeconds, + timerId: null, }; export const useGame = create()((set, get) => ({ @@ -74,6 +104,10 @@ export const useGame = create()((set, get) => ({ turnTimeline: [], categories: [], selectedCategory: null, + settings: initialSettings, + timer: initialTimer, + + lastTurnFeedback: null, clearError: () => set({ error: null }), @@ -91,7 +125,7 @@ export const useGame = create()((set, get) => ({ set({ selectedCategory: category }); }, - startGame: async () => { + startGame: async () => { const state = get(); if (!state.selectedCategory) { set({ error: "Please select a category first" }); @@ -103,20 +137,19 @@ export const useGame = create()((set, get) => ({ const deck = await apiService.getItemsWithValues(state.selectedCategory.id); if (!deck || deck.length < 2) throw new Error("Not enough items"); - // Shuffle the deck to randomize the order of items const shuffledDeck = shuffle(deck); - const pool = shuffledDeck.slice(); - const startA = drawOne(pool); - const startB = drawOne(pool); + + const names = get().settings.teamNames; + const teams = names.map((name, i) => { + const start = drawOne(pool); + return { id: String(i), name, timeline: [start], score: 0 }; + }); set({ deck: pool, discard: [], - teams: [ - { id: "A", name: "Team A", timeline: [startA], score: 0 }, - { id: "B", name: "Team B", timeline: [startB], score: 0 }, - ], + teams, currentTeamIndex: 0, currentCard: undefined, roundBaselineTimeline: [], @@ -154,8 +187,10 @@ export const useGame = create()((set, get) => ({ : s2.turnTimeline, pendingIndex: null, lastPlacementCorrect: null, + lastTurnFeedback: null, phase: "DRAWN", }); + get().startTimer(); }, placeAt: (slotIndex: number) => { @@ -166,7 +201,7 @@ export const useGame = create()((set, get) => ({ phase: "PLACED_PENDING", }); }, - + confirmPlacement: () => { const s = get(); const card = s.currentCard; @@ -193,6 +228,7 @@ export const useGame = create()((set, get) => ({ lastPlacementCorrect: false, phase: "TURN_START", }); + get().stopTimer(); get().nextTeam(); } }, @@ -206,6 +242,12 @@ export const useGame = create()((set, get) => ({ const tIdx = s.currentTeamIndex; const committed = s.turnTimeline; + get().stopTimer(); + + // extra explicit reset (syns direkt i UI även om batched) + const full = get().settings.turnSeconds; + set((state) => ({ timer: { ...state.timer, secondsLeft: full } })); + set({ teams: s.teams.map((t, i) => i === tIdx ? { ...t, timeline: committed } : t @@ -219,11 +261,136 @@ export const useGame = create()((set, get) => ({ nextTeam: () => { const s = get(); + const next = (s.currentTeamIndex + 1) % s.teams.length; set({ - currentTeamIndex: (s.currentTeamIndex === 0 ? 1 : 0) as 0 | 1, + currentTeamIndex: next, currentCard: undefined, pendingIndex: null, phase: "TURN_START", }); }, + + setTeamCount: (count) => { + const s = get().settings; + const names = s.teamNames.slice(0, count); + while (names.length < count) names.push(`Team ${names.length + 1}`); + set({ settings: { ...s, teamNames: names } }); + }, + + setTeamName: (index, name) => { + const s = get().settings; + const names = s.teamNames.slice(); + names[index] = name; + set({ settings: { ...s, teamNames: names } }); + }, + + setTurnSeconds: (sec) => { + const s = get().settings; + set({ + settings: { ...s, turnSeconds: sec }, + timer: { ...get().timer, secondsLeft: sec }, + }); + }, + + setRevealMode: (mode) => { + const s = get().settings; + set({ settings: { ...s, revealMode: mode } }); + }, + + applySettings: () => { + const { settings, timer } = get(); + set({ timer: { ...timer, secondsLeft: settings.turnSeconds } }); + }, + +timeUp: () => { + const s = get(); + + // Har spelaren lagt ett kort i en slot (PLACED_PENDING)? + if (s.pendingIndex != null && s.currentCard) { + const ok = isPlacementCorrect(s.turnTimeline, s.currentCard, s.pendingIndex); + + if (ok) { + // ✅ Rätt: lägg in kortet i turnTimeline och låt spelaren välja + const staged = insertAt(s.turnTimeline, s.currentCard, s.pendingIndex); + set({ + turnTimeline: staged, + currentCard: undefined, + pendingIndex: null, + lastPlacementCorrect: true, + lastTurnFeedback: { timeUp: true, correct: true }, + }); + get().stopTimer(); // stoppa & nollställ klockan + set({ phase: "CHOICE_AFTER_CORRECT" }); // stanna i valet (inte lockIn) + return; + } else { + // ❌ Fel: återställ till baseline och avsluta turen + set({ + turnTimeline: s.roundBaselineTimeline.slice(), + currentCard: undefined, + pendingIndex: null, + lastPlacementCorrect: false, + lastTurnFeedback: { timeUp: true, correct: false }, + }); + get().stopTimer(); + get().lockIn(); // commit baseline + nästa lag + return; + } + } + + // ⏱️ Tiden slut utan att något lades (ingen pending) + set({ + lastPlacementCorrect: null, + lastTurnFeedback: { timeUp: true, correct: null }, + }); + get().stopTimer(); + get().lockIn(); // commit nuvarande turnTimeline (baseline) + nästa lag +}, + + + startTimer: () => { + const prev = get().timer.timerId; + if (prev) window.clearInterval(prev); + + const { turnSeconds } = get().settings; + const deadline = Date.now() + turnSeconds * 1000; + + const id = window.setInterval(() => { + const left = Math.max(0, Math.ceil((deadline - Date.now()) / 1000)); + set({ + timer: { + ...get().timer, + secondsLeft: left, + turnDeadline: deadline, + timerId: id, + }, + }); + if (left <= 0) { + get().timeUp(); + } + }, 250); + + set({ + timer: { + ...get().timer, + secondsLeft: turnSeconds, + turnDeadline: deadline, + timerId: id, + }, + }); + }, + + stopTimer: () => { + const { timerId } = get().timer; + if (timerId) window.clearInterval(timerId); + const full = get().settings.turnSeconds; + set({ + timer: { + ...get().timer, + timerId: null, + turnDeadline: null, + secondsLeft: full, // reset till max + }, + }); + }, + })); diff --git a/frontend/src/types/game.ts b/frontend/src/types/game.ts index 4cb99c5d6d..7c45999e14 100644 --- a/frontend/src/types/game.ts +++ b/frontend/src/types/game.ts @@ -19,7 +19,7 @@ export type GameCategory = { }; export type Team = { - id: "A" | "B"; + id: string; name: string; timeline: GameItem[]; score: number; @@ -34,15 +34,24 @@ export type Phase = | "CHOICE_AFTER_CORRECT" | "PLACED_WRONG"; -export type GameState = { +export type RevealMode = "hidden" | "shown"; + +export type GameSettings = { + teamNames: string[]; + turnSeconds: 30 | 60 | 90; + revealMode: RevealMode; +}; + + export type GameState = { deck: GameItem[]; discard: GameItem[]; teams: Team[]; - currentTeamIndex: 0 | 1; + currentTeamIndex: number; currentCard?: GameItem; roundBaselineTimeline: GameItem[]; pendingIndex: number | null; lastPlacementCorrect: boolean | null; + phase: Phase; }; From 0e657350f8a4a7dbc9d41d5fff23e2c36b962602 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Fri, 22 Aug 2025 16:24:25 +0200 Subject: [PATCH 066/127] Update GameMode.tsx --- frontend/src/pages/GameMode.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index f9c2e81c60..8007dd77c3 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -6,7 +6,6 @@ import { CategorySelector } from "../components/CategorySelector"; import { Heading, DotPattern } from "../ui"; import { useGame } from "../store/game"; import { GameSettings } from "../components/GameSettings"; -import { CategorySelector } from "../components/CategorySelector"; export default function GameMode() { const navigate = useNavigate(); From a2b85adb3f1db85935302c976a0fbb80496c05de Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Fri, 22 Aug 2025 16:49:35 +0200 Subject: [PATCH 067/127] Improving Timer logic --- frontend/src/components/GameSettings.tsx | 24 ------------------------ frontend/src/store/game.ts | 5 ++++- 2 files changed, 4 insertions(+), 25 deletions(-) diff --git a/frontend/src/components/GameSettings.tsx b/frontend/src/components/GameSettings.tsx index b82870e42f..56f4d338fd 100644 --- a/frontend/src/components/GameSettings.tsx +++ b/frontend/src/components/GameSettings.tsx @@ -78,30 +78,6 @@ export const GameSettings: React.FC = ({ onClose, onContinue }) => { - -
Value & unit display
-
- - -
-
-
diff --git a/frontend/src/store/game.ts b/frontend/src/store/game.ts index c565e26173..6e7dd6d3b1 100644 --- a/frontend/src/store/game.ts +++ b/frontend/src/store/game.ts @@ -190,7 +190,7 @@ export const useGame = create()((set, get) => ({ lastTurnFeedback: null, phase: "DRAWN", }); - get().startTimer(); +if (startingNewRound) get().startTimer(); }, placeAt: (slotIndex: number) => { @@ -213,6 +213,9 @@ export const useGame = create()((set, get) => ({ if (correct) { const staged = insertAt(base, card, i); + + get().stopTimer(); + set({ turnTimeline: staged, currentCard: undefined, From ccf18043ddab93ce556be52d89c6366d352bc2a8 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Fri, 22 Aug 2025 18:27:35 +0200 Subject: [PATCH 068/127] Created Winner function --- backend/package.json | 6 +- frontend/src/store/game.ts | 613 ++++++++++++++++++++----------------- frontend/src/types/game.ts | 5 +- 3 files changed, 345 insertions(+), 279 deletions(-) diff --git a/backend/package.json b/backend/package.json index 77384fdd7d..bcb919e154 100644 --- a/backend/package.json +++ b/backend/package.json @@ -33,12 +33,12 @@ "@types/express": "^4.17.21", "@types/jsonwebtoken": "^9.0.10", "@types/mongoose": "^5.11.96", - "@types/node": "^20.14.2", + "@types/node": "^20.19.11", "@typescript-eslint/eslint-plugin": "^8.39.0", "@typescript-eslint/parser": "^8.39.0", "eslint": "^8.57.0", - "nodemon": "^3.1.3", + "nodemon": "^3.1.10", "tsx": "^4.20.4", - "typescript": "^5.4.5" + "typescript": "^5.9.2" } } diff --git a/frontend/src/store/game.ts b/frontend/src/store/game.ts index 6e7dd6d3b1..bcf23a9ff8 100644 --- a/frontend/src/store/game.ts +++ b/frontend/src/store/game.ts @@ -1,9 +1,17 @@ // src/store/game.ts import { create } from "zustand"; -import type { GameItem, GameState, GameCategory, GameSettings, RevealMode } from "../types/game"; +import type { + GameItem, + GameState, + GameCategory, + GameSettings, + RevealMode, +} from "../types/game"; import { apiService } from "../services/api"; import { shuffle } from "../lib/shuffle"; +const WIN_TARGET = 10; + const insertAt = (arr: GameItem[], item: GameItem, idx: number) => { const copy = arr.slice(); copy.splice(idx, 0, item); @@ -17,7 +25,7 @@ const isPlacementCorrect = ( ) => { const y = Y(card); if (y === undefined) return false; - + const left = i - 1 >= 0 ? Y(timeline[i - 1]) : undefined; const right = i < timeline.length ? Y(timeline[i]) : undefined; return ( @@ -48,7 +56,7 @@ type UIState = { settings: GameSettings; timer: TimerState; lastTurnFeedback: { timeUp?: boolean; correct?: boolean | null } | null; - + winner: { teamIndex: number; teamName: string } | null; }; // ---------- actions ---------- @@ -85,315 +93,374 @@ const initialTimer: TimerState = { timerId: null, }; -export const useGame = create()((set, get) => ({ - deck: [], - discard: [], - teams: [ - { id: "A", name: "Team A", timeline: [], score: 0 }, - { id: "B", name: "Team B", timeline: [], score: 0 }, - ], - currentTeamIndex: 0, - currentCard: undefined, - phase: "SETUP", - - loading: false, - error: null, - lastPlacementCorrect: null, - pendingIndex: null, - roundBaselineTimeline: [], - turnTimeline: [], - categories: [], - selectedCategory: null, - settings: initialSettings, - timer: initialTimer, - - lastTurnFeedback: null, - - clearError: () => set({ error: null }), - - loadCategories: async () => { - set({ loading: true, error: null }); - try { - const categories = await apiService.getCategories(); - set({ categories, loading: false }); - } catch (error: any) { - set({ error: error?.message ?? "Failed to load categories", loading: false }); - } - }, - - selectCategory: (category: GameCategory) => { - set({ selectedCategory: category }); - }, - - startGame: async () => { - const state = get(); - if (!state.selectedCategory) { - set({ error: "Please select a category first" }); - return; - } - - set({ loading: true, error: null }); - try { - const deck = await apiService.getItemsWithValues(state.selectedCategory.id); - if (!deck || deck.length < 2) throw new Error("Not enough items"); - - const shuffledDeck = shuffle(deck); - const pool = shuffledDeck.slice(); - - const names = get().settings.teamNames; - const teams = names.map((name, i) => { - const start = drawOne(pool); - return { id: String(i), name, timeline: [start], score: 0 }; - }); - - set({ - deck: pool, - discard: [], - teams, - currentTeamIndex: 0, - currentCard: undefined, - roundBaselineTimeline: [], - turnTimeline: [], - pendingIndex: null, - lastPlacementCorrect: null, - phase: "TURN_START", - }); - } catch (e: any) { - set({ error: e?.message ?? "Failed to load items" }); - } finally { - set({ loading: false }); - } - }, - - startTurn: async () => { +export const useGame = create()((set, get) => { + // 🔹 Nu kan du definiera helpers här: + const declareWinner = (staged: GameItem[]) => { const s = get(); - if (!s.deck.length) { - await get().startGame(); - } - const s2 = get(); - if (!s2.deck.length) return; + const tIdx = s.currentTeamIndex; - const [card, ...rest] = s2.deck; - const startingNewRound = s2.phase === "TURN_START"; + get().stopTimer(); set({ - deck: rest, - currentCard: card, - roundBaselineTimeline: startingNewRound - ? s2.teams[s2.currentTeamIndex].timeline.slice() - : s2.roundBaselineTimeline, - turnTimeline: startingNewRound - ? s2.teams[s2.currentTeamIndex].timeline.slice() - : s2.turnTimeline, + teams: s.teams.map((t, i) => + i === tIdx ? { ...t, timeline: staged } : t + ) as GameState["teams"], + currentCard: undefined, pendingIndex: null, - lastPlacementCorrect: null, - lastTurnFeedback: null, - phase: "DRAWN", + lastPlacementCorrect: true, + phase: "TURN_START", + winner: { teamIndex: tIdx, teamName: s.teams[tIdx].name }, }); -if (startingNewRound) get().startTimer(); - }, + }; + + // 🔹 Här returnerar du store-objektet som tidigare + return { + deck: [], + discard: [], + teams: [ + { id: "A", name: "Team A", timeline: [], score: 0 }, + { id: "B", name: "Team B", timeline: [], score: 0 }, + ], + currentTeamIndex: 0, + currentCard: undefined, + phase: "SETUP", + + loading: false, + error: null, + lastPlacementCorrect: null, + pendingIndex: null, + roundBaselineTimeline: [], + turnTimeline: [], + categories: [], + selectedCategory: null, + settings: initialSettings, + timer: initialTimer, + winner: null, + + lastTurnFeedback: null, + + clearError: () => set({ error: null }), + + loadCategories: async () => { + set({ loading: true, error: null }); + try { + const categories = await apiService.getCategories(); + set({ categories, loading: false }); + } catch (error: any) { + set({ + error: error?.message ?? "Failed to load categories", + loading: false, + }); + } + }, - placeAt: (slotIndex: number) => { - const s = get(); - if (!s.currentCard) return; - set({ - pendingIndex: slotIndex, - phase: "PLACED_PENDING", - }); - }, - - confirmPlacement: () => { - const s = get(); - const card = s.currentCard; - const i = s.pendingIndex; - if (!card || i == null) return; + selectCategory: (category: GameCategory) => { + set({ selectedCategory: category }); + }, - const base = s.turnTimeline; - const correct = isPlacementCorrect(base, card, i); + startGame: async () => { + const state = get(); + if (!state.selectedCategory) { + set({ error: "Please select a category first" }); + return; + } - if (correct) { - const staged = insertAt(base, card, i); - - get().stopTimer(); + set({ loading: true, error: null }); + try { + const deck = await apiService.getItemsWithValues( + state.selectedCategory.id + ); + if (!deck || deck.length < 2) throw new Error("Not enough items"); + + const shuffledDeck = shuffle(deck); + const pool = shuffledDeck.slice(); + + const names = get().settings.teamNames; + const teams = names.map((name, i) => { + const start = drawOne(pool); + return { id: String(i), name, timeline: [start], score: 0 }; + }); + + set({ + deck: pool, + discard: [], + teams, + currentTeamIndex: 0, + currentCard: undefined, + roundBaselineTimeline: [], + turnTimeline: [], + pendingIndex: null, + lastPlacementCorrect: null, + phase: "TURN_START", + winner: null, + }); + } catch (e: any) { + set({ error: e?.message ?? "Failed to load items" }); + } finally { + set({ loading: false }); + } + }, + + startTurn: async () => { + const s = get(); + if (s.winner) return; + if (!s.deck.length) { + await get().startGame(); + } + const s2 = get(); + if (!s2.deck.length) return; + + const [card, ...rest] = s2.deck; + const startingNewRound = s2.phase === "TURN_START"; set({ - turnTimeline: staged, - currentCard: undefined, + deck: rest, + currentCard: card, + roundBaselineTimeline: startingNewRound + ? s2.teams[s2.currentTeamIndex].timeline.slice() + : s2.roundBaselineTimeline, + turnTimeline: startingNewRound + ? s2.teams[s2.currentTeamIndex].timeline.slice() + : s2.turnTimeline, pendingIndex: null, - lastPlacementCorrect: true, - phase: "CHOICE_AFTER_CORRECT", + lastPlacementCorrect: null, + lastTurnFeedback: null, + phase: "DRAWN", }); - } else { + get().startTimer(); + }, + + placeAt: (slotIndex: number) => { + const s = get(); + if (!s.currentCard) return; set({ - turnTimeline: s.roundBaselineTimeline.slice(), - currentCard: undefined, - pendingIndex: null, - lastPlacementCorrect: false, - phase: "TURN_START", + pendingIndex: slotIndex, + phase: "PLACED_PENDING", }); - get().stopTimer(); - get().nextTeam(); - } - }, - - drawAnother: async () => { - await get().startTurn(); - }, - - lockIn: () => { - const s = get(); - const tIdx = s.currentTeamIndex; - const committed = s.turnTimeline; - - get().stopTimer(); + }, + + confirmPlacement: () => { + const s = get(); + const card = s.currentCard; + const i = s.pendingIndex; + if (!card || i == null) return; + + const base = s.turnTimeline; + const correct = isPlacementCorrect(base, card, i); + + if (correct) { + const staged = insertAt(base, card, i); + if (staged.length >= WIN_TARGET) { + declareWinner(staged); + return; + } + + get().stopTimer(); + + set({ + turnTimeline: staged, + currentCard: undefined, + pendingIndex: null, + lastPlacementCorrect: true, + phase: "CHOICE_AFTER_CORRECT", + }); + } else { + set({ + turnTimeline: s.roundBaselineTimeline.slice(), + currentCard: undefined, + pendingIndex: null, + lastPlacementCorrect: false, + phase: "TURN_START", + }); + get().stopTimer(); + get().nextTeam(); + } + }, - // extra explicit reset (syns direkt i UI även om batched) - const full = get().settings.turnSeconds; - set((state) => ({ timer: { ...state.timer, secondsLeft: full } })); + drawAnother: async () => { + await get().startTurn(); + }, - set({ - teams: s.teams.map((t, i) => - i === tIdx ? { ...t, timeline: committed } : t - ) as GameState["teams"], - phase: "TURN_START", - lastPlacementCorrect: null, - }); + lockIn: () => { + const s = get(); + if (s.winner) return; - get().nextTeam(); - }, + const tIdx = s.currentTeamIndex; + const committed = s.turnTimeline; - nextTeam: () => { - const s = get(); - const next = (s.currentTeamIndex + 1) % s.teams.length; - set({ - currentTeamIndex: next, - currentCard: undefined, - pendingIndex: null, - phase: "TURN_START", - }); - }, - - setTeamCount: (count) => { - const s = get().settings; - const names = s.teamNames.slice(0, count); - while (names.length < count) names.push(`Team ${names.length + 1}`); - set({ settings: { ...s, teamNames: names } }); - }, - - setTeamName: (index, name) => { - const s = get().settings; - const names = s.teamNames.slice(); - names[index] = name; - set({ settings: { ...s, teamNames: names } }); - }, - - setTurnSeconds: (sec) => { - const s = get().settings; - set({ - settings: { ...s, turnSeconds: sec }, - timer: { ...get().timer, secondsLeft: sec }, - }); - }, + get().stopTimer(); - setRevealMode: (mode) => { - const s = get().settings; - set({ settings: { ...s, revealMode: mode } }); - }, + // extra explicit reset (syns direkt i UI även om batched) + const full = get().settings.turnSeconds; + set((state) => ({ timer: { ...state.timer, secondsLeft: full } })); - applySettings: () => { - const { settings, timer } = get(); - set({ timer: { ...timer, secondsLeft: settings.turnSeconds } }); - }, + if (committed.length >= WIN_TARGET) { + declareWinner(committed); + return; + } -timeUp: () => { - const s = get(); + set({ + teams: s.teams.map((t, i) => + i === tIdx ? { ...t, timeline: committed } : t + ) as GameState["teams"], + phase: "TURN_START", + lastPlacementCorrect: null, + }); - // Har spelaren lagt ett kort i en slot (PLACED_PENDING)? - if (s.pendingIndex != null && s.currentCard) { - const ok = isPlacementCorrect(s.turnTimeline, s.currentCard, s.pendingIndex); + get().nextTeam(); + }, - if (ok) { - // ✅ Rätt: lägg in kortet i turnTimeline och låt spelaren välja - const staged = insertAt(s.turnTimeline, s.currentCard, s.pendingIndex); + nextTeam: () => { + const s = get(); + const next = (s.currentTeamIndex + 1) % s.teams.length; set({ - turnTimeline: staged, + currentTeamIndex: next, currentCard: undefined, pendingIndex: null, - lastPlacementCorrect: true, - lastTurnFeedback: { timeUp: true, correct: true }, + phase: "TURN_START", }); - get().stopTimer(); // stoppa & nollställ klockan - set({ phase: "CHOICE_AFTER_CORRECT" }); // stanna i valet (inte lockIn) - return; - } else { - // ❌ Fel: återställ till baseline och avsluta turen + }, + + setTeamCount: (count) => { + const s = get().settings; + const names = s.teamNames.slice(0, count); + while (names.length < count) names.push(`Team ${names.length + 1}`); + set({ settings: { ...s, teamNames: names } }); + }, + + setTeamName: (index, name) => { + const s = get().settings; + const names = s.teamNames.slice(); + names[index] = name; + set({ settings: { ...s, teamNames: names } }); + }, + + setTurnSeconds: (sec) => { + const s = get().settings; set({ - turnTimeline: s.roundBaselineTimeline.slice(), - currentCard: undefined, - pendingIndex: null, - lastPlacementCorrect: false, - lastTurnFeedback: { timeUp: true, correct: false }, + settings: { ...s, turnSeconds: sec }, + timer: { ...get().timer, secondsLeft: sec }, }); - get().stopTimer(); - get().lockIn(); // commit baseline + nästa lag - return; - } - } - - // ⏱️ Tiden slut utan att något lades (ingen pending) - set({ - lastPlacementCorrect: null, - lastTurnFeedback: { timeUp: true, correct: null }, - }); - get().stopTimer(); - get().lockIn(); // commit nuvarande turnTimeline (baseline) + nästa lag -}, + }, + + setRevealMode: (mode) => { + const s = get().settings; + set({ settings: { ...s, revealMode: mode } }); + }, + + applySettings: () => { + const { settings, timer } = get(); + set({ timer: { ...timer, secondsLeft: settings.turnSeconds } }); + }, + + timeUp: () => { + const s = get(); + + // Har spelaren lagt ett kort i en slot (PLACED_PENDING)? + if (s.pendingIndex != null && s.currentCard) { + const ok = isPlacementCorrect( + s.turnTimeline, + s.currentCard, + s.pendingIndex + ); + + if (ok) { + // ✅ Rätt: lägg in kortet i turnTimeline och låt spelaren välja + const staged = insertAt( + s.turnTimeline, + s.currentCard, + s.pendingIndex + ); + if (staged.length >= WIN_TARGET) { + // Commit + vinnare + set({ + currentCard: undefined, + pendingIndex: null, + lastPlacementCorrect: true, + lastTurnFeedback: { timeUp: true, correct: true }, + }); + declareWinner(staged); + return; + } + + set({ + turnTimeline: staged, + currentCard: undefined, + pendingIndex: null, + lastPlacementCorrect: true, + lastTurnFeedback: { timeUp: true, correct: true }, + }); + get().stopTimer(); // stoppa & nollställ klockan + set({ phase: "CHOICE_AFTER_CORRECT" }); // stanna i valet (inte lockIn) + return; + } else { + // ❌ Fel: återställ till baseline och avsluta turen + set({ + turnTimeline: s.roundBaselineTimeline.slice(), + currentCard: undefined, + pendingIndex: null, + lastPlacementCorrect: false, + lastTurnFeedback: { timeUp: true, correct: false }, + }); + get().stopTimer(); + get().lockIn(); // commit baseline + nästa lag + return; + } + } + // ⏱️ Tiden slut utan att något lades (ingen pending) + set({ + lastPlacementCorrect: null, + lastTurnFeedback: { timeUp: true, correct: null }, + }); + get().stopTimer(); + get().lockIn(); // commit nuvarande turnTimeline (baseline) + nästa lag + }, startTimer: () => { - const prev = get().timer.timerId; - if (prev) window.clearInterval(prev); + const prev = get().timer.timerId; + if (prev) window.clearInterval(prev); + + const { turnSeconds } = get().settings; + const deadline = Date.now() + turnSeconds * 1000; + + const id = window.setInterval(() => { + const left = Math.max(0, Math.ceil((deadline - Date.now()) / 1000)); + set({ + timer: { + ...get().timer, + secondsLeft: left, + turnDeadline: deadline, + timerId: id, + }, + }); + if (left <= 0) { + get().timeUp(); + } + }, 250); - const { turnSeconds } = get().settings; - const deadline = Date.now() + turnSeconds * 1000; - - const id = window.setInterval(() => { - const left = Math.max(0, Math.ceil((deadline - Date.now()) / 1000)); set({ timer: { ...get().timer, - secondsLeft: left, + secondsLeft: turnSeconds, turnDeadline: deadline, timerId: id, }, }); - if (left <= 0) { - get().timeUp(); - } - }, 250); + }, - set({ - timer: { - ...get().timer, - secondsLeft: turnSeconds, - turnDeadline: deadline, - timerId: id, - }, - }); - }, - - stopTimer: () => { - const { timerId } = get().timer; - if (timerId) window.clearInterval(timerId); - const full = get().settings.turnSeconds; - set({ - timer: { - ...get().timer, - timerId: null, - turnDeadline: null, - secondsLeft: full, // reset till max - }, - }); - }, - -})); + stopTimer: () => { + const { timerId } = get().timer; + if (timerId) window.clearInterval(timerId); + const full = get().settings.turnSeconds; + set({ + timer: { + ...get().timer, + timerId: null, + turnDeadline: null, + secondsLeft: full, // reset till max + }, + }); + }, + }; +}); diff --git a/frontend/src/types/game.ts b/frontend/src/types/game.ts index 3bbadb823b..6afe924c4e 100644 --- a/frontend/src/types/game.ts +++ b/frontend/src/types/game.ts @@ -17,7 +17,7 @@ export type GameCategory = { question: string; // "Which animal weighs the most?" unit: string; unitVisible?: boolean; - sort?: 'asc' | 'desc'; + sort?: "asc" | "desc"; source?: { name: string; url?: string }; version?: number; }; @@ -46,7 +46,7 @@ export type GameSettings = { revealMode: RevealMode; }; - export type GameState = { +export type GameState = { deck: GameItem[]; discard: GameItem[]; teams: Team[]; @@ -56,6 +56,5 @@ export type GameSettings = { pendingIndex: number | null; lastPlacementCorrect: boolean | null; - phase: Phase; }; From 38a2a990af94086c48d8352582788a86b39fc8c2 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Mon, 25 Aug 2025 10:20:22 +0200 Subject: [PATCH 069/127] Current team showing in game mode --- frontend/src/pages/GameMode.tsx | 22 +++++++++++++++++----- frontend/src/store/game.ts | 2 +- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index 8007dd77c3..cbca090105 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -77,12 +77,24 @@ const pct = Math.max(0, Math.min(100, Math.round((elapsed / total) * 100))); {/* Top-right: A/B Team */}
+
+ {teams[currentTeamIndex]?.name} is playing +
- {teams.map((t, i) => ( -
- {t.name} {t.timeline?.length ?? 0} -
- ))} + {teams.map((t, i) => { + const active = currentTeamIndex === i; + const base = "px-2 py-1 rounded-full border text-xs tracking-wider uppercase"; + const cls = active + ? `${base} bg-primary text-base-100 border-primary shadow-soft scale-105` + : `${base} bg-primary/10 border-border text-muted-foreground`; + return ( +
+ {t.name} + {t.timeline?.length ?? 0} + +
+ ); + })}
diff --git a/frontend/src/store/game.ts b/frontend/src/store/game.ts index bcf23a9ff8..b078034b35 100644 --- a/frontend/src/store/game.ts +++ b/frontend/src/store/game.ts @@ -82,7 +82,7 @@ type Actions = { }; const initialSettings: GameSettings = { - teamNames: ["Team Bang", "Team Ganza"], + teamNames: ["Team Bang", "Team Ganza", "Team Anga", "Team Zaba"], turnSeconds: 60, revealMode: "hidden", }; From f0ff350bfe140c49ab045b6d03f43684d1889795 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Mon, 25 Aug 2025 11:01:00 +0200 Subject: [PATCH 070/127] Winner feedback --- frontend/src/components/GameBoard.tsx | 69 +++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index b5291bf15b..83b8aee360 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -62,6 +62,8 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { const team = teams[currentTeamIndex]; + const winner = useGame ((s) => (s as any).winner); + const sensors = useSensors( useSensor(PointerSensor, { activationConstraint: { distance: 6 } }) ); @@ -81,6 +83,35 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { placeAt(n); }; + const [showWinner, setShowWinner] = React.useState(true); +React.useEffect(() => { + setShowWinner(true); + const onKey = (e: KeyboardEvent) => { + if (e.key === "Escape") setShowWinner(false); + }; + window.addEventListener("keydown", onKey); + return () => window.removeEventListener("keydown", onKey); +}, [winner]); + + + const winnerName = React.useMemo(() => { + if (!winner) return null; + if (typeof winner === "number") return teams[winner]?.name ?? "Team"; + if (typeof winner === "string") return winner; + if (typeof winner === "object") { + if ("teamIndex" in winner) return teams[(winner as any).teamIndex]?.name ?? "Team"; + if ("index" in winner) return teams[(winner as any).index]?.name ?? "Team"; + if ("name" in winner) return (winner as any).name ?? "Team"; + } + const bestIdx = teams.reduce( + (best, _, i, arr) => + (arr[i].timeline?.length ?? 0) > (arr[best].timeline?.length ?? 0) ? i : best, + 0 + ); + return teams[bestIdx]?.name ?? "Team"; +}, [winner, teams]); + + /** Timeline i liten skala; kort växer på hover */ const renderTimeline = () => { const teamTimeline = team?.timeline ?? []; @@ -291,6 +322,44 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => {
)} + +{winner && showWinner && ( +
setShowWinner(false)} + > +
+
e.stopPropagation()} + > + + +
+ Congratulations! +
+
+ {winnerName ? `${winnerName} wins` : `Winner!`} +
+ +
+ +
+
+
+)} + + +
); }; From ced815fb726c670d88732ec5965cef59a3d1658a Mon Sep 17 00:00:00 2001 From: Idahel Date: Mon, 25 Aug 2025 11:07:06 +0200 Subject: [PATCH 071/127] added game reset and confirmation pop up for homepage link on game mode board --- frontend/src/components/ConfirmModal.tsx | 96 ++++++++++++++++++++++++ frontend/src/pages/GameMode.tsx | 32 +++++++- frontend/src/store/game.ts | 32 ++++++++ 3 files changed, 157 insertions(+), 3 deletions(-) create mode 100644 frontend/src/components/ConfirmModal.tsx diff --git a/frontend/src/components/ConfirmModal.tsx b/frontend/src/components/ConfirmModal.tsx new file mode 100644 index 0000000000..989ec34557 --- /dev/null +++ b/frontend/src/components/ConfirmModal.tsx @@ -0,0 +1,96 @@ +import React from "react"; +import { Button } from "../ui"; + +interface ConfirmModalProps { + isOpen: boolean; + onClose: () => void; + onConfirm: () => void; + title: string; + message: string; + confirmText?: string; + cancelText?: string; +} + +export const ConfirmModal: React.FC = ({ + isOpen, + onClose, + onConfirm, + title, + message, + confirmText = "Confirm", + cancelText = "Cancel", +}) => { + if (!isOpen) return null; + + const handleConfirm = () => { + onConfirm(); + onClose(); + }; + + const handleCancel = () => { + onClose(); + }; + + // Handle escape key + React.useEffect(() => { + const handleEscape = (e: KeyboardEvent) => { + if (e.key === "Escape") { + onClose(); + } + }; + + if (isOpen) { + document.addEventListener("keydown", handleEscape); + return () => document.removeEventListener("keydown", handleEscape); + } + }, [isOpen, onClose]); + + // Prevent body scroll when modal is open + React.useEffect(() => { + if (isOpen) { + document.body.style.overflow = "hidden"; + return () => { + document.body.style.overflow = "unset"; + }; + } + }, [isOpen]); + + return ( +
+ {/* Backdrop */} + + ); +}; diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index 8007dd77c3..1c2b44e0fd 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -4,12 +4,14 @@ import { OrientationGuard } from "../components/OrientationGuard"; import { GameBoard } from "../components/GameBoard"; import { CategorySelector } from "../components/CategorySelector"; import { Heading, DotPattern } from "../ui"; +import { ConfirmModal } from "../components/ConfirmModal"; import { useGame } from "../store/game"; import { GameSettings } from "../components/GameSettings"; export default function GameMode() { const navigate = useNavigate(); - const { teams, currentTeamIndex, selectedCategory, phase, startGame } = useGame(); + const { teams, currentTeamIndex, selectedCategory, phase, startGame, resetGame } = useGame(); + const [showConfirmModal, setShowConfirmModal] = React.useState(false); const categoryLabel = "Category"; const categoryValue = selectedCategory?.name || "Select Category"; @@ -30,6 +32,16 @@ const pct = Math.max(0, Math.min(100, Math.round((elapsed / total) * 100))); "px-2 py-1 rounded-full bg-primary/10 border border-border text-xs tracking-wider uppercase text-muted-foreground"; const dot = "inline-block w-2 h-2 rounded-sm bg-primary shadow-soft"; + const handleHomeClick = (e: React.MouseEvent) => { + e.preventDefault(); + setShowConfirmModal(true); + }; + + const handleConfirmHome = () => { + resetGame(); + navigate("/"); + }; + // --- 1) Fallback: ingen kategori vald --- if (!selectedCategory) { return ( @@ -70,10 +82,13 @@ const pct = Math.max(0, Math.min(100, Math.round((elapsed / total) * 100))); {/* Top-left: Home */} - + {/* Top-right: A/B Team */}
@@ -164,6 +179,17 @@ const pct = Math.max(0, Math.min(100, Math.round((elapsed / total) * 100))); )}
+ + {/* Confirmation Modal */} + setShowConfirmModal(false)} + onConfirm={handleConfirmHome} + title="End Game?" + message="Are you sure you want to end the current game and return to the home page? All progress will be lost." + confirmText="Yes, End Game" + cancelText="Continue Playing" + />
); } \ No newline at end of file diff --git a/frontend/src/store/game.ts b/frontend/src/store/game.ts index bcf23a9ff8..effcdf6429 100644 --- a/frontend/src/store/game.ts +++ b/frontend/src/store/game.ts @@ -79,6 +79,7 @@ type Actions = { startTimer: () => void; stopTimer: () => void; timeUp: () => void; + resetGame: () => void; }; const initialSettings: GameSettings = { @@ -462,5 +463,36 @@ export const useGame = create()((set, get) => { }, }); }, + + resetGame: () => { + const { timerId } = get().timer; + if (timerId) window.clearInterval(timerId); + + set({ + deck: [], + discard: [], + teams: [ + { id: "A", name: "Team A", timeline: [], score: 0 }, + { id: "B", name: "Team B", timeline: [], score: 0 }, + ], + currentTeamIndex: 0, + currentCard: undefined, + phase: "SETUP", + loading: false, + error: null, + lastPlacementCorrect: null, + pendingIndex: null, + roundBaselineTimeline: [], + turnTimeline: [], + selectedCategory: null, + winner: null, + lastTurnFeedback: null, + timer: { + turnDeadline: null, + secondsLeft: initialSettings.turnSeconds, + timerId: null, + }, + }); + }, }; }); From 2751bb0fda8a94ee67c859fe8c82a2eddb0d58a7 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Mon, 25 Aug 2025 11:13:24 +0200 Subject: [PATCH 072/127] Winner feedback + options after game is over --- frontend/src/components/GameBoard.tsx | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index 83b8aee360..06f5e37136 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -12,6 +12,7 @@ import { closestCenter, } from "@dnd-kit/core"; import { restrictToWindowEdges } from "@dnd-kit/modifiers"; +import { useNavigate } from "react-router-dom"; import { useGame } from "../store/game"; import { Button } from "../ui"; @@ -62,6 +63,8 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { const team = teams[currentTeamIndex]; + const navigate = useNavigate(); + const winner = useGame ((s) => (s as any).winner); const sensors = useSensors( @@ -351,9 +354,20 @@ React.useEffect(() => { {winnerName ? `${winnerName} wins` : `Winner!`}
-
- -
+
+ + +
)} From e66990dcba776f189547ce66f2463b77bbdec6dd Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Mon, 25 Aug 2025 11:24:34 +0200 Subject: [PATCH 073/127] Limiting intro using session storage --- frontend/src/pages/Home.tsx | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/frontend/src/pages/Home.tsx b/frontend/src/pages/Home.tsx index d23bb97a9b..2fa04eebe7 100644 --- a/frontend/src/pages/Home.tsx +++ b/frontend/src/pages/Home.tsx @@ -6,7 +6,9 @@ import BanganzaIntro from "../components/BanganzaIntro"; import { CategorySelector } from "../components/CategorySelector"; export const Home = () => { - const [introDone, setIntroDone] = useState(false); +const [introDone, setIntroDone] = useState(() => + sessionStorage.getItem("introDone") === "1" +); const [ready, setReady] = useState(false); const catsRef = useRef(null); const location = useLocation(); @@ -17,12 +19,18 @@ export const Home = () => { return () => clearTimeout(t); }, []); - useEffect(() => { - if ((location.state as any)?.scrollTo === "categories") { - catsRef.current?.scrollIntoView({ behavior: "smooth", block: "start" }); - window.history.replaceState({}, ""); // rensa state så det inte triggas igen +useEffect(() => { + const s = (location.state as any) || {}; + if (s.scrollTo === "categories") { + if (!introDone) { + setIntroDone(true); + sessionStorage.setItem("introDone", "1"); } - }, [location.state]); + catsRef.current?.scrollIntoView({ behavior: "smooth", block: "start" }); + window.history.replaceState({}, ""); // rensa state så det inte triggas igen + } +}, [location.state, introDone]); + const scrollToCategories = () => { catsRef.current?.scrollIntoView({ behavior: "smooth", block: "start" }); @@ -31,7 +39,14 @@ export const Home = () => { return (
- {!introDone && setIntroDone(true)} />} +{!introDone && ( + { + setIntroDone(true); + sessionStorage.setItem("introDone", "1"); + }} + /> +)}
Date: Mon, 25 Aug 2025 12:40:33 +0200 Subject: [PATCH 074/127] changed team names in game settings --- frontend/src/components/GameBoard.tsx | 2 +- frontend/src/components/Timeline.tsx | 2 +- frontend/src/store/game.ts | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index 06f5e37136..6e2d8d55e6 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -264,7 +264,7 @@ React.useEffect(() => { > {/* Ny layout: tidslinjen överst, current card *under* tidslinjen */}
-
{renderTimeline()}
+
{renderTimeline()}
{/* Current card alltid placerat under tidslinjen */} {phase === "DRAWN" && currentCard && ( diff --git a/frontend/src/components/Timeline.tsx b/frontend/src/components/Timeline.tsx index 84deef5cd9..2c8fc47022 100644 --- a/frontend/src/components/Timeline.tsx +++ b/frontend/src/components/Timeline.tsx @@ -55,7 +55,7 @@ export const Timeline: React.FC = ({ timeline, category, showSlots = true, - size = "xs", + size = "md", className, }) => { const sz = SIZES[size]; diff --git a/frontend/src/store/game.ts b/frontend/src/store/game.ts index fbf20c5e67..75a7d59e00 100644 --- a/frontend/src/store/game.ts +++ b/frontend/src/store/game.ts @@ -119,8 +119,8 @@ export const useGame = create()((set, get) => { deck: [], discard: [], teams: [ - { id: "A", name: "Team A", timeline: [], score: 0 }, - { id: "B", name: "Team B", timeline: [], score: 0 }, + { id: "A", name: "Team Bang", timeline: [], score: 0 }, + { id: "B", name: "Team Ganza", timeline: [], score: 0 }, ], currentTeamIndex: 0, currentCard: undefined, From e226024cbf77d13a6f663c993d20837cb17139ae Mon Sep 17 00:00:00 2001 From: tildetilde Date: Mon, 25 Aug 2025 14:21:12 +0200 Subject: [PATCH 075/127] less wide timeline --- frontend/src/pages/GameMode.tsx | 163 +++++++++++++++++++++----------- 1 file changed, 107 insertions(+), 56 deletions(-) diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index ef514fa377..6e0aa7a525 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -10,7 +10,14 @@ import { GameSettings } from "../components/GameSettings"; export default function GameMode() { const navigate = useNavigate(); - const { teams, currentTeamIndex, selectedCategory, phase, startGame, resetGame } = useGame(); + const { + teams, + currentTeamIndex, + selectedCategory, + phase, + startGame, + resetGame, + } = useGame(); const [showConfirmModal, setShowConfirmModal] = React.useState(false); const categoryLabel = "Category"; @@ -21,12 +28,11 @@ export default function GameMode() { const scoreA = teams[0]?.timeline.length ?? 0; const scoreB = teams[1]?.timeline.length ?? 0; -const { settings, timer } = useGame(); -const total = settings.turnSeconds; -const left = timer.secondsLeft; -const elapsed = total - left; -const pct = Math.max(0, Math.min(100, Math.round((elapsed / total) * 100))); - + const { settings, timer } = useGame(); + const total = settings.turnSeconds; + const left = timer.secondsLeft; + const elapsed = total - left; + const pct = Math.max(0, Math.min(100, Math.round((elapsed / total) * 100))); const chip = "px-2 py-1 rounded-full bg-primary/10 border border-border text-xs tracking-wider uppercase text-muted-foreground"; @@ -59,7 +65,10 @@ const pct = Math.max(0, Math.min(100, Math.round((elapsed / total) * 100))); Select a Category @@ -87,65 +96,95 @@ const pct = Math.max(0, Math.min(100, Math.round((elapsed / total) * 100))); className="fixed z-50 top-3 sm:top-4 left-3 sm:left-6 flex items-center gap-2 hover:opacity-80 transition-opacity cursor-pointer" > -
Home
+
+ Home +
{/* Top-right: A/B Team */} -
-
- {teams[currentTeamIndex]?.name} is playing -
-
- {teams.map((t, i) => { - const active = currentTeamIndex === i; - const base = "px-2 py-1 rounded-full border text-xs tracking-wider uppercase"; - const cls = active - ? `${base} bg-primary text-base-100 border-primary shadow-soft scale-105` - : `${base} bg-primary/10 border-border text-muted-foreground`; - return ( -
- {t.name} - {t.timeline?.length ?? 0} - +
+
+ {teams[currentTeamIndex]?.name} is playing +
+
+ {teams.map((t, i) => { + const active = currentTeamIndex === i; + const base = + "px-2 py-1 rounded-full border text-xs tracking-wider uppercase"; + const cls = active + ? `${base} bg-primary text-base-100 border-primary shadow-soft scale-105` + : `${base} bg-primary/10 border-border text-muted-foreground`; + return ( +
+ {t.name}{" "} + + {t.timeline?.length ?? 0} + +
+ ); + })}
- ); - })} -
- -
+ +
{/* Bottom-left: Round */}
-
{roundLabel}: {roundValue}
+
+ {roundLabel}:{" "} + {roundValue} +
{/* Bottom-right: Category */}
-
{categoryLabel}: {categoryValue}
+
+ {categoryLabel}:{" "} + {categoryValue} +
{/* Timer */} -{(phase === "DRAWN" || phase === "PLACED_PENDING" || phase === "CHOICE_AFTER_CORRECT") && ( -
-
- {String(Math.floor(left / 60)).padStart(2, "0")}:{String(left % 60).padStart(2, "0")} -
-
-
-
-
-)} + {(phase === "DRAWN" || + phase === "PLACED_PENDING" || + phase === "CHOICE_AFTER_CORRECT") && ( +
+
+ {String(Math.floor(left / 60)).padStart(2, "0")}: + {String(left % 60).padStart(2, "0")} +
+
+
+
+
+ )} {/* Innehållssektion med DotPattern – växla mellan SETUP (Settings) och Board */} -
+
@@ -154,11 +193,16 @@ const pct = Math.max(0, Math.min(100, Math.round((elapsed / total) * 100))); {phase === "SETUP" ? ( <>
-
Game Settings
+
+ Game Settings +
Configure your match @@ -166,7 +210,9 @@ const pct = Math.max(0, Math.min(100, Math.round((elapsed / total) * 100)));
navigate("/", { state: { scrollTo: "categories" } })} + onClose={() => + navigate("/", { state: { scrollTo: "categories" } }) + } onContinue={() => startGame()} />
@@ -174,17 +220,22 @@ const pct = Math.max(0, Math.min(100, Math.round((elapsed / total) * 100))); ) : ( <>
-
Game Question
+
+ Game Question +
{selectedCategory.question}
-
+
@@ -204,4 +255,4 @@ const pct = Math.max(0, Math.min(100, Math.round((elapsed / total) * 100))); />
); -} \ No newline at end of file +} From 2930c671f03b60f23f41b5322a96abeae9c5d1fb Mon Sep 17 00:00:00 2001 From: Idahel Date: Mon, 25 Aug 2025 14:30:04 +0200 Subject: [PATCH 076/127] added deployed backend URL --- backend/src/index.ts | 5 +++ frontend/dist/assets/index-BuVI6kgl.js | 58 +++++++++++++++++++++++++ frontend/dist/assets/index-C0FSA73Q.css | 1 - frontend/dist/assets/index-CZH8FzHQ.js | 58 ------------------------- frontend/dist/assets/index-DS7Byclm.css | 1 + frontend/dist/index.html | 4 +- frontend/src/config/environment.ts | 2 +- 7 files changed, 67 insertions(+), 62 deletions(-) create mode 100644 frontend/dist/assets/index-BuVI6kgl.js delete mode 100644 frontend/dist/assets/index-C0FSA73Q.css delete mode 100644 frontend/dist/assets/index-CZH8FzHQ.js create mode 100644 frontend/dist/assets/index-DS7Byclm.css diff --git a/backend/src/index.ts b/backend/src/index.ts index cf2ca57dcf..cdc0af4748 100644 --- a/backend/src/index.ts +++ b/backend/src/index.ts @@ -18,6 +18,11 @@ app.use( origin: [ config.FRONTEND_URI, "https://banganza.netlify.app", + // Development origins + "http://127.0.0.1:5173", + "http://localhost:5173", + "http://127.0.0.1:3000", + "http://localhost:3000", ], credentials: true, // Allow cookies methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"], diff --git a/frontend/dist/assets/index-BuVI6kgl.js b/frontend/dist/assets/index-BuVI6kgl.js new file mode 100644 index 0000000000..0d93db6b50 --- /dev/null +++ b/frontend/dist/assets/index-BuVI6kgl.js @@ -0,0 +1,58 @@ +var uh=Object.defineProperty;var ch=(r,l,i)=>l in r?uh(r,l,{enumerable:!0,configurable:!0,writable:!0,value:i}):r[l]=i;var Md=(r,l,i)=>ch(r,typeof l!="symbol"?l+"":l,i);(function(){const l=document.createElement("link").relList;if(l&&l.supports&&l.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))a(c);new MutationObserver(c=>{for(const d of c)if(d.type==="childList")for(const p of d.addedNodes)p.tagName==="LINK"&&p.rel==="modulepreload"&&a(p)}).observe(document,{childList:!0,subtree:!0});function i(c){const d={};return c.integrity&&(d.integrity=c.integrity),c.referrerPolicy&&(d.referrerPolicy=c.referrerPolicy),c.crossOrigin==="use-credentials"?d.credentials="include":c.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function a(c){if(c.ep)return;c.ep=!0;const d=i(c);fetch(c.href,d)}})();function kf(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var va={exports:{}},Ao={},ya={exports:{}},ye={};/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Od;function dh(){if(Od)return ye;Od=1;var r=Symbol.for("react.element"),l=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),c=Symbol.for("react.profiler"),d=Symbol.for("react.provider"),p=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),v=Symbol.for("react.memo"),w=Symbol.for("react.lazy"),C=Symbol.iterator;function N(b){return b===null||typeof b!="object"?null:(b=C&&b[C]||b["@@iterator"],typeof b=="function"?b:null)}var L={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},P=Object.assign,k={};function _(b,M,J){this.props=b,this.context=M,this.refs=k,this.updater=J||L}_.prototype.isReactComponent={},_.prototype.setState=function(b,M){if(typeof b!="object"&&typeof b!="function"&&b!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,b,M,"setState")},_.prototype.forceUpdate=function(b){this.updater.enqueueForceUpdate(this,b,"forceUpdate")};function z(){}z.prototype=_.prototype;function I(b,M,J){this.props=b,this.context=M,this.refs=k,this.updater=J||L}var A=I.prototype=new z;A.constructor=I,P(A,_.prototype),A.isPureReactComponent=!0;var H=Array.isArray,B=Object.prototype.hasOwnProperty,X={current:null},K={key:!0,ref:!0,__self:!0,__source:!0};function O(b,M,J){var le,he={},fe=null,ce=null;if(M!=null)for(le in M.ref!==void 0&&(ce=M.ref),M.key!==void 0&&(fe=""+M.key),M)B.call(M,le)&&!K.hasOwnProperty(le)&&(he[le]=M[le]);var ke=arguments.length-2;if(ke===1)he.children=J;else if(1>>1,M=D[b];if(0>>1;bc(he,V))fec(ce,he)?(D[b]=ce,D[fe]=V,b=fe):(D[b]=he,D[le]=V,b=le);else if(fec(ce,V))D[b]=ce,D[fe]=V,b=fe;else break e}}return Q}function c(D,Q){var V=D.sortIndex-Q.sortIndex;return V!==0?V:D.id-Q.id}if(typeof performance=="object"&&typeof performance.now=="function"){var d=performance;r.unstable_now=function(){return d.now()}}else{var p=Date,h=p.now();r.unstable_now=function(){return p.now()-h}}var g=[],v=[],w=1,C=null,N=3,L=!1,P=!1,k=!1,_=typeof setTimeout=="function"?setTimeout:null,z=typeof clearTimeout=="function"?clearTimeout:null,I=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function A(D){for(var Q=i(v);Q!==null;){if(Q.callback===null)a(v);else if(Q.startTime<=D)a(v),Q.sortIndex=Q.expirationTime,l(g,Q);else break;Q=i(v)}}function H(D){if(k=!1,A(D),!P)if(i(g)!==null)P=!0,ue(B);else{var Q=i(v);Q!==null&&ie(H,Q.startTime-D)}}function B(D,Q){P=!1,k&&(k=!1,z(O),O=-1),L=!0;var V=N;try{for(A(Q),C=i(g);C!==null&&(!(C.expirationTime>Q)||D&&!ge());){var b=C.callback;if(typeof b=="function"){C.callback=null,N=C.priorityLevel;var M=b(C.expirationTime<=Q);Q=r.unstable_now(),typeof M=="function"?C.callback=M:C===i(g)&&a(g),A(Q)}else a(g);C=i(g)}if(C!==null)var J=!0;else{var le=i(v);le!==null&&ie(H,le.startTime-Q),J=!1}return J}finally{C=null,N=V,L=!1}}var X=!1,K=null,O=-1,ne=5,de=-1;function ge(){return!(r.unstable_now()-deD||125b?(D.sortIndex=V,l(v,D),i(g)===null&&D===i(v)&&(k?(z(O),O=-1):k=!0,ie(H,V-b))):(D.sortIndex=M,l(g,D),P||L||(P=!0,ue(B))),D},r.unstable_shouldYield=ge,r.unstable_wrapCallback=function(D){var Q=N;return function(){var V=N;N=Q;try{return D.apply(this,arguments)}finally{N=V}}}}(ka)),ka}var Bd;function hh(){return Bd||(Bd=1,wa.exports=mh()),wa.exports}/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var Wd;function gh(){if(Wd)return Ct;Wd=1;var r=Ba(),l=hh();function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),g=Object.prototype.hasOwnProperty,v=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,w={},C={};function N(e){return g.call(C,e)?!0:g.call(w,e)?!1:v.test(e)?C[e]=!0:(w[e]=!0,!1)}function L(e,t,n,o){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return o?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function P(e,t,n,o){if(t===null||typeof t>"u"||L(e,t,n,o))return!0;if(o)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function k(e,t,n,o,s,u,m){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=o,this.attributeNamespace=s,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=u,this.removeEmptyString=m}var _={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){_[e]=new k(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];_[t]=new k(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){_[e]=new k(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){_[e]=new k(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){_[e]=new k(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){_[e]=new k(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){_[e]=new k(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){_[e]=new k(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){_[e]=new k(e,5,!1,e.toLowerCase(),null,!1,!1)});var z=/[\-:]([a-z])/g;function I(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(z,I);_[t]=new k(t,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(z,I);_[t]=new k(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(z,I);_[t]=new k(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){_[e]=new k(e,1,!1,e.toLowerCase(),null,!1,!1)}),_.xlinkHref=new k("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){_[e]=new k(e,1,!1,e.toLowerCase(),null,!0,!0)});function A(e,t,n,o){var s=_.hasOwnProperty(t)?_[t]:null;(s!==null?s.type!==0:o||!(2x||s[m]!==u[x]){var S=` +`+s[m].replace(" at new "," at ");return e.displayName&&S.includes("")&&(S=S.replace("",e.displayName)),S}while(1<=m&&0<=x);break}}}finally{J=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?M(e):""}function he(e){switch(e.tag){case 5:return M(e.type);case 16:return M("Lazy");case 13:return M("Suspense");case 19:return M("SuspenseList");case 0:case 2:case 15:return e=le(e.type,!1),e;case 11:return e=le(e.type.render,!1),e;case 1:return e=le(e.type,!0),e;default:return""}}function fe(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case K:return"Fragment";case X:return"Portal";case ne:return"Profiler";case O:return"StrictMode";case Se:return"Suspense";case be:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case ge:return(e.displayName||"Context")+".Consumer";case de:return(e._context.displayName||"Context")+".Provider";case xe:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case G:return t=e.displayName||null,t!==null?t:fe(e.type)||"Memo";case ue:t=e._payload,e=e._init;try{return fe(e(t))}catch{}}return null}function ce(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return fe(t);case 8:return t===O?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function ke(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Ee(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function je(e){var t=Ee(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),o=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var s=n.get,u=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return s.call(this)},set:function(m){o=""+m,u.call(this,m)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return o},setValue:function(m){o=""+m},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Tt(e){e._valueTracker||(e._valueTracker=je(e))}function ut(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),o="";return e&&(o=Ee(e)?e.checked?"true":"false":e.value),e=o,e!==n?(t.setValue(e),!0):!1}function Zn(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Ut(e,t){var n=t.checked;return V({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function er(e,t){var n=t.defaultValue==null?"":t.defaultValue,o=t.checked!=null?t.checked:t.defaultChecked;n=ke(t.value!=null?t.value:n),e._wrapperState={initialChecked:o,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function dn(e,t){t=t.checked,t!=null&&A(e,"checked",t,!1)}function vr(e,t){dn(e,t);var n=ke(t.value),o=t.type;if(n!=null)o==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(o==="submit"||o==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?tr(e,t.type,n):t.hasOwnProperty("defaultValue")&&tr(e,t.type,ke(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Xr(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var o=t.type;if(!(o!=="submit"&&o!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function tr(e,t,n){(t!=="number"||Zn(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var ht=Array.isArray;function Bt(e,t,n,o){if(e=e.options,t){t={};for(var s=0;s"+t.valueOf().toString()+"",t=Wt.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Tn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var gt={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ll=["Webkit","ms","Moz","O"];Object.keys(gt).forEach(function(e){ll.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),gt[t]=gt[e]})});function il(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||gt.hasOwnProperty(e)&>[e]?(""+t).trim():t+"px"}function sl(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var o=n.indexOf("--")===0,s=il(n,t[n],o);n==="float"&&(n="cssFloat"),o?e.setProperty(n,s):e[n]=s}}var Zr=V({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function yr(e,t){if(t){if(Zr[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(i(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(i(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(t.style!=null&&typeof t.style!="object")throw Error(i(62))}}function eo(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var xr=null;function to(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var no=null,Pn=null,Me=null;function tt(e){if(e=Co(e)){if(typeof no!="function")throw Error(i(280));var t=e.stateNode;t&&(t=Rl(t),no(e.stateNode,e.type,t))}}function nt(e){Pn?Me?Me.push(e):Me=[e]:Pn=e}function Vt(){if(Pn){var e=Pn,t=Me;if(Me=Pn=null,tt(e),t)for(e=0;e>>=0,e===0?32:31-(Np(e)/bp|0)|0}var cl=64,dl=4194304;function oo(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function fl(e,t){var n=e.pendingLanes;if(n===0)return 0;var o=0,s=e.suspendedLanes,u=e.pingedLanes,m=n&268435455;if(m!==0){var x=m&~s;x!==0?o=oo(x):(u&=m,u!==0&&(o=oo(u)))}else m=n&~s,m!==0?o=oo(m):u!==0&&(o=oo(u));if(o===0)return 0;if(t!==0&&t!==o&&(t&s)===0&&(s=o&-o,u=t&-t,s>=u||s===16&&(u&4194240)!==0))return t;if((o&4)!==0&&(o|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=o;0n;n++)t.push(e);return t}function lo(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Qt(t),e[t]=n}function Pp(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var o=e.eventTimes;for(e=e.expirationTimes;0=mo),Tu=" ",Pu=!1;function Du(e,t){switch(e){case"keyup":return om.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Lu(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Sr=!1;function im(e,t){switch(e){case"compositionend":return Lu(t);case"keypress":return t.which!==32?null:(Pu=!0,Tu);case"textInput":return e=t.data,e===Tu&&Pu?null:e;default:return null}}function sm(e,t){if(Sr)return e==="compositionend"||!qi&&Du(e,t)?(e=Cu(),vl=Hi=zn=null,Sr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=o}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Fu(n)}}function Uu(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Uu(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Bu(){for(var e=window,t=Zn();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Zn(e.document)}return t}function es(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function gm(e){var t=Bu(),n=e.focusedElem,o=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Uu(n.ownerDocument.documentElement,n)){if(o!==null&&es(n)){if(t=o.start,e=o.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var s=n.textContent.length,u=Math.min(o.start,s);o=o.end===void 0?u:Math.min(o.end,s),!e.extend&&u>o&&(s=o,o=u,u=s),s=$u(n,u);var m=$u(n,o);s&&m&&(e.rangeCount!==1||e.anchorNode!==s.node||e.anchorOffset!==s.offset||e.focusNode!==m.node||e.focusOffset!==m.offset)&&(t=t.createRange(),t.setStart(s.node,s.offset),e.removeAllRanges(),u>o?(e.addRange(t),e.extend(m.node,m.offset)):(t.setEnd(m.node,m.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Cr=null,ts=null,yo=null,ns=!1;function Wu(e,t,n){var o=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ns||Cr==null||Cr!==Zn(o)||(o=Cr,"selectionStart"in o&&es(o)?o={start:o.selectionStart,end:o.selectionEnd}:(o=(o.ownerDocument&&o.ownerDocument.defaultView||window).getSelection(),o={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focusNode:o.focusNode,focusOffset:o.focusOffset}),yo&&vo(yo,o)||(yo=o,o=Nl(ts,"onSelect"),0Rr||(e.current=ms[Rr],ms[Rr]=null,Rr--)}function De(e,t){Rr++,ms[Rr]=e.current,e.current=t}var Fn={},lt=An(Fn),yt=An(!1),or=Fn;function Tr(e,t){var n=e.type.contextTypes;if(!n)return Fn;var o=e.stateNode;if(o&&o.__reactInternalMemoizedUnmaskedChildContext===t)return o.__reactInternalMemoizedMaskedChildContext;var s={},u;for(u in n)s[u]=t[u];return o&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=s),s}function xt(e){return e=e.childContextTypes,e!=null}function Tl(){_e(yt),_e(lt)}function oc(e,t,n){if(lt.current!==Fn)throw Error(i(168));De(lt,t),De(yt,n)}function lc(e,t,n){var o=e.stateNode;if(t=t.childContextTypes,typeof o.getChildContext!="function")return n;o=o.getChildContext();for(var s in o)if(!(s in t))throw Error(i(108,ce(e)||"Unknown",s));return V({},n,o)}function Pl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Fn,or=lt.current,De(lt,e),De(yt,yt.current),!0}function ic(e,t,n){var o=e.stateNode;if(!o)throw Error(i(169));n?(e=lc(e,t,or),o.__reactInternalMemoizedMergedChildContext=e,_e(yt),_e(lt),De(lt,e)):_e(yt),De(yt,n)}var hn=null,Dl=!1,hs=!1;function sc(e){hn===null?hn=[e]:hn.push(e)}function Rm(e){Dl=!0,sc(e)}function $n(){if(!hs&&hn!==null){hs=!0;var e=0,t=Re;try{var n=hn;for(Re=1;e>=m,s-=m,gn=1<<32-Qt(t)+s|n<pe?(qe=ae,ae=null):qe=ae.sibling;var Ne=F(j,ae,R[pe],W);if(Ne===null){ae===null&&(ae=qe);break}e&&ae&&Ne.alternate===null&&t(j,ae),E=u(Ne,E,pe),se===null?oe=Ne:se.sibling=Ne,se=Ne,ae=qe}if(pe===R.length)return n(j,ae),ze&&ir(j,pe),oe;if(ae===null){for(;pepe?(qe=ae,ae=null):qe=ae.sibling;var Yn=F(j,ae,Ne.value,W);if(Yn===null){ae===null&&(ae=qe);break}e&&ae&&Yn.alternate===null&&t(j,ae),E=u(Yn,E,pe),se===null?oe=Yn:se.sibling=Yn,se=Yn,ae=qe}if(Ne.done)return n(j,ae),ze&&ir(j,pe),oe;if(ae===null){for(;!Ne.done;pe++,Ne=R.next())Ne=U(j,Ne.value,W),Ne!==null&&(E=u(Ne,E,pe),se===null?oe=Ne:se.sibling=Ne,se=Ne);return ze&&ir(j,pe),oe}for(ae=o(j,ae);!Ne.done;pe++,Ne=R.next())Ne=Y(ae,j,pe,Ne.value,W),Ne!==null&&(e&&Ne.alternate!==null&&ae.delete(Ne.key===null?pe:Ne.key),E=u(Ne,E,pe),se===null?oe=Ne:se.sibling=Ne,se=Ne);return e&&ae.forEach(function(ah){return t(j,ah)}),ze&&ir(j,pe),oe}function We(j,E,R,W){if(typeof R=="object"&&R!==null&&R.type===K&&R.key===null&&(R=R.props.children),typeof R=="object"&&R!==null){switch(R.$$typeof){case B:e:{for(var oe=R.key,se=E;se!==null;){if(se.key===oe){if(oe=R.type,oe===K){if(se.tag===7){n(j,se.sibling),E=s(se,R.props.children),E.return=j,j=E;break e}}else if(se.elementType===oe||typeof oe=="object"&&oe!==null&&oe.$$typeof===ue&&pc(oe)===se.type){n(j,se.sibling),E=s(se,R.props),E.ref=Eo(j,se,R),E.return=j,j=E;break e}n(j,se);break}else t(j,se);se=se.sibling}R.type===K?(E=mr(R.props.children,j.mode,W,R.key),E.return=j,j=E):(W=li(R.type,R.key,R.props,null,j.mode,W),W.ref=Eo(j,E,R),W.return=j,j=W)}return m(j);case X:e:{for(se=R.key;E!==null;){if(E.key===se)if(E.tag===4&&E.stateNode.containerInfo===R.containerInfo&&E.stateNode.implementation===R.implementation){n(j,E.sibling),E=s(E,R.children||[]),E.return=j,j=E;break e}else{n(j,E);break}else t(j,E);E=E.sibling}E=fa(R,j.mode,W),E.return=j,j=E}return m(j);case ue:return se=R._init,We(j,E,se(R._payload),W)}if(ht(R))return Z(j,E,R,W);if(Q(R))return re(j,E,R,W);zl(j,R)}return typeof R=="string"&&R!==""||typeof R=="number"?(R=""+R,E!==null&&E.tag===6?(n(j,E.sibling),E=s(E,R),E.return=j,j=E):(n(j,E),E=da(R,j.mode,W),E.return=j,j=E),m(j)):n(j,E)}return We}var _r=mc(!0),hc=mc(!1),Ml=An(null),Ol=null,Ir=null,ks=null;function Ss(){ks=Ir=Ol=null}function Cs(e){var t=Ml.current;_e(Ml),e._currentValue=t}function Es(e,t,n){for(;e!==null;){var o=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,o!==null&&(o.childLanes|=t)):o!==null&&(o.childLanes&t)!==t&&(o.childLanes|=t),e===n)break;e=e.return}}function zr(e,t){Ol=e,ks=Ir=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(wt=!0),e.firstContext=null)}function _t(e){var t=e._currentValue;if(ks!==e)if(e={context:e,memoizedValue:t,next:null},Ir===null){if(Ol===null)throw Error(i(308));Ir=e,Ol.dependencies={lanes:0,firstContext:e}}else Ir=Ir.next=e;return t}var sr=null;function Ns(e){sr===null?sr=[e]:sr.push(e)}function gc(e,t,n,o){var s=t.interleaved;return s===null?(n.next=n,Ns(t)):(n.next=s.next,s.next=n),t.interleaved=n,yn(e,o)}function yn(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var Un=!1;function bs(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function vc(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function xn(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Bn(e,t,n){var o=e.updateQueue;if(o===null)return null;if(o=o.shared,(Ce&2)!==0){var s=o.pending;return s===null?t.next=t:(t.next=s.next,s.next=t),o.pending=t,yn(e,n)}return s=o.interleaved,s===null?(t.next=t,Ns(o)):(t.next=s.next,s.next=t),o.interleaved=t,yn(e,n)}function Al(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var o=t.lanes;o&=e.pendingLanes,n|=o,t.lanes=n,$i(e,n)}}function yc(e,t){var n=e.updateQueue,o=e.alternate;if(o!==null&&(o=o.updateQueue,n===o)){var s=null,u=null;if(n=n.firstBaseUpdate,n!==null){do{var m={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};u===null?s=u=m:u=u.next=m,n=n.next}while(n!==null);u===null?s=u=t:u=u.next=t}else s=u=t;n={baseState:o.baseState,firstBaseUpdate:s,lastBaseUpdate:u,shared:o.shared,effects:o.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Fl(e,t,n,o){var s=e.updateQueue;Un=!1;var u=s.firstBaseUpdate,m=s.lastBaseUpdate,x=s.shared.pending;if(x!==null){s.shared.pending=null;var S=x,T=S.next;S.next=null,m===null?u=T:m.next=T,m=S;var $=e.alternate;$!==null&&($=$.updateQueue,x=$.lastBaseUpdate,x!==m&&(x===null?$.firstBaseUpdate=T:x.next=T,$.lastBaseUpdate=S))}if(u!==null){var U=s.baseState;m=0,$=T=S=null,x=u;do{var F=x.lane,Y=x.eventTime;if((o&F)===F){$!==null&&($=$.next={eventTime:Y,lane:0,tag:x.tag,payload:x.payload,callback:x.callback,next:null});e:{var Z=e,re=x;switch(F=t,Y=n,re.tag){case 1:if(Z=re.payload,typeof Z=="function"){U=Z.call(Y,U,F);break e}U=Z;break e;case 3:Z.flags=Z.flags&-65537|128;case 0:if(Z=re.payload,F=typeof Z=="function"?Z.call(Y,U,F):Z,F==null)break e;U=V({},U,F);break e;case 2:Un=!0}}x.callback!==null&&x.lane!==0&&(e.flags|=64,F=s.effects,F===null?s.effects=[x]:F.push(x))}else Y={eventTime:Y,lane:F,tag:x.tag,payload:x.payload,callback:x.callback,next:null},$===null?(T=$=Y,S=U):$=$.next=Y,m|=F;if(x=x.next,x===null){if(x=s.shared.pending,x===null)break;F=x,x=F.next,F.next=null,s.lastBaseUpdate=F,s.shared.pending=null}}while(!0);if($===null&&(S=U),s.baseState=S,s.firstBaseUpdate=T,s.lastBaseUpdate=$,t=s.shared.interleaved,t!==null){s=t;do m|=s.lane,s=s.next;while(s!==t)}else u===null&&(s.shared.lanes=0);cr|=m,e.lanes=m,e.memoizedState=U}}function xc(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var o=Ds.transition;Ds.transition={};try{e(!1),t()}finally{Re=n,Ds.transition=o}}function Ac(){return It().memoizedState}function Lm(e,t,n){var o=Gn(e);if(n={lane:o,action:n,hasEagerState:!1,eagerState:null,next:null},Fc(e))$c(t,n);else if(n=gc(e,t,n,o),n!==null){var s=ft();Zt(n,e,o,s),Uc(n,t,o)}}function _m(e,t,n){var o=Gn(e),s={lane:o,action:n,hasEagerState:!1,eagerState:null,next:null};if(Fc(e))$c(t,s);else{var u=e.alternate;if(e.lanes===0&&(u===null||u.lanes===0)&&(u=t.lastRenderedReducer,u!==null))try{var m=t.lastRenderedState,x=u(m,n);if(s.hasEagerState=!0,s.eagerState=x,Kt(x,m)){var S=t.interleaved;S===null?(s.next=s,Ns(t)):(s.next=S.next,S.next=s),t.interleaved=s;return}}catch{}finally{}n=gc(e,t,s,o),n!==null&&(s=ft(),Zt(n,e,o,s),Uc(n,t,o))}}function Fc(e){var t=e.alternate;return e===Fe||t!==null&&t===Fe}function $c(e,t){Ro=Bl=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Uc(e,t,n){if((n&4194240)!==0){var o=t.lanes;o&=e.pendingLanes,n|=o,t.lanes=n,$i(e,n)}}var Hl={readContext:_t,useCallback:it,useContext:it,useEffect:it,useImperativeHandle:it,useInsertionEffect:it,useLayoutEffect:it,useMemo:it,useReducer:it,useRef:it,useState:it,useDebugValue:it,useDeferredValue:it,useTransition:it,useMutableSource:it,useSyncExternalStore:it,useId:it,unstable_isNewReconciler:!1},Im={readContext:_t,useCallback:function(e,t){return sn().memoizedState=[e,t===void 0?null:t],e},useContext:_t,useEffect:Pc,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Wl(4194308,4,_c.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Wl(4194308,4,e,t)},useInsertionEffect:function(e,t){return Wl(4,2,e,t)},useMemo:function(e,t){var n=sn();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var o=sn();return t=n!==void 0?n(t):t,o.memoizedState=o.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},o.queue=e,e=e.dispatch=Lm.bind(null,Fe,e),[o.memoizedState,e]},useRef:function(e){var t=sn();return e={current:e},t.memoizedState=e},useState:Rc,useDebugValue:As,useDeferredValue:function(e){return sn().memoizedState=e},useTransition:function(){var e=Rc(!1),t=e[0];return e=Dm.bind(null,e[1]),sn().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var o=Fe,s=sn();if(ze){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),Xe===null)throw Error(i(349));(ur&30)!==0||Cc(o,t,n)}s.memoizedState=n;var u={value:n,getSnapshot:t};return s.queue=u,Pc(Nc.bind(null,o,u,e),[e]),o.flags|=2048,Do(9,Ec.bind(null,o,u,n,t),void 0,null),n},useId:function(){var e=sn(),t=Xe.identifierPrefix;if(ze){var n=vn,o=gn;n=(o&~(1<<32-Qt(o)-1)).toString(32)+n,t=":"+t+"R"+n,n=To++,0<\/script>",e=e.removeChild(e.firstChild)):typeof o.is=="string"?e=m.createElement(n,{is:o.is}):(e=m.createElement(n),n==="select"&&(m=e,o.multiple?m.multiple=!0:o.size&&(m.size=o.size))):e=m.createElementNS(e,n),e[on]=t,e[So]=o,sd(e,t,!1,!1),t.stateNode=e;e:{switch(m=eo(n,o),n){case"dialog":Le("cancel",e),Le("close",e),s=o;break;case"iframe":case"object":case"embed":Le("load",e),s=o;break;case"video":case"audio":for(s=0;s$r&&(t.flags|=128,o=!0,Lo(u,!1),t.lanes=4194304)}else{if(!o)if(e=$l(m),e!==null){if(t.flags|=128,o=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Lo(u,!0),u.tail===null&&u.tailMode==="hidden"&&!m.alternate&&!ze)return st(t),null}else 2*Be()-u.renderingStartTime>$r&&n!==1073741824&&(t.flags|=128,o=!0,Lo(u,!1),t.lanes=4194304);u.isBackwards?(m.sibling=t.child,t.child=m):(n=u.last,n!==null?n.sibling=m:t.child=m,u.last=m)}return u.tail!==null?(t=u.tail,u.rendering=t,u.tail=t.sibling,u.renderingStartTime=Be(),t.sibling=null,n=Ae.current,De(Ae,o?n&1|2:n&1),t):(st(t),null);case 22:case 23:return aa(),o=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==o&&(t.flags|=8192),o&&(t.mode&1)!==0?(Rt&1073741824)!==0&&(st(t),t.subtreeFlags&6&&(t.flags|=8192)):st(t),null;case 24:return null;case 25:return null}throw Error(i(156,t.tag))}function Bm(e,t){switch(vs(t),t.tag){case 1:return xt(t.type)&&Tl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Mr(),_e(yt),_e(lt),Ps(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return Rs(t),null;case 13:if(_e(Ae),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));Lr()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return _e(Ae),null;case 4:return Mr(),null;case 10:return Cs(t.type._context),null;case 22:case 23:return aa(),null;case 24:return null;default:return null}}var Yl=!1,at=!1,Wm=typeof WeakSet=="function"?WeakSet:Set,q=null;function Ar(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(o){Ue(e,t,o)}else n.current=null}function Xs(e,t,n){try{n()}catch(o){Ue(e,t,o)}}var cd=!1;function Vm(e,t){if(as=hl,e=Bu(),es(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var o=n.getSelection&&n.getSelection();if(o&&o.rangeCount!==0){n=o.anchorNode;var s=o.anchorOffset,u=o.focusNode;o=o.focusOffset;try{n.nodeType,u.nodeType}catch{n=null;break e}var m=0,x=-1,S=-1,T=0,$=0,U=e,F=null;t:for(;;){for(var Y;U!==n||s!==0&&U.nodeType!==3||(x=m+s),U!==u||o!==0&&U.nodeType!==3||(S=m+o),U.nodeType===3&&(m+=U.nodeValue.length),(Y=U.firstChild)!==null;)F=U,U=Y;for(;;){if(U===e)break t;if(F===n&&++T===s&&(x=m),F===u&&++$===o&&(S=m),(Y=U.nextSibling)!==null)break;U=F,F=U.parentNode}U=Y}n=x===-1||S===-1?null:{start:x,end:S}}else n=null}n=n||{start:0,end:0}}else n=null;for(us={focusedElem:e,selectionRange:n},hl=!1,q=t;q!==null;)if(t=q,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,q=e;else for(;q!==null;){t=q;try{var Z=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(Z!==null){var re=Z.memoizedProps,We=Z.memoizedState,j=t.stateNode,E=j.getSnapshotBeforeUpdate(t.elementType===t.type?re:Xt(t.type,re),We);j.__reactInternalSnapshotBeforeUpdate=E}break;case 3:var R=t.stateNode.containerInfo;R.nodeType===1?R.textContent="":R.nodeType===9&&R.documentElement&&R.removeChild(R.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(i(163))}}catch(W){Ue(t,t.return,W)}if(e=t.sibling,e!==null){e.return=t.return,q=e;break}q=t.return}return Z=cd,cd=!1,Z}function _o(e,t,n){var o=t.updateQueue;if(o=o!==null?o.lastEffect:null,o!==null){var s=o=o.next;do{if((s.tag&e)===e){var u=s.destroy;s.destroy=void 0,u!==void 0&&Xs(t,n,u)}s=s.next}while(s!==o)}}function Xl(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var o=n.create;n.destroy=o()}n=n.next}while(n!==t)}}function qs(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function dd(e){var t=e.alternate;t!==null&&(e.alternate=null,dd(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[on],delete t[So],delete t[ps],delete t[bm],delete t[jm])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function fd(e){return e.tag===5||e.tag===3||e.tag===4}function pd(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||fd(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Js(e,t,n){var o=e.tag;if(o===5||o===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=jl));else if(o!==4&&(e=e.child,e!==null))for(Js(e,t,n),e=e.sibling;e!==null;)Js(e,t,n),e=e.sibling}function Zs(e,t,n){var o=e.tag;if(o===5||o===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(o!==4&&(e=e.child,e!==null))for(Zs(e,t,n),e=e.sibling;e!==null;)Zs(e,t,n),e=e.sibling}var Ze=null,qt=!1;function Wn(e,t,n){for(n=n.child;n!==null;)md(e,t,n),n=n.sibling}function md(e,t,n){if(rn&&typeof rn.onCommitFiberUnmount=="function")try{rn.onCommitFiberUnmount(ul,n)}catch{}switch(n.tag){case 5:at||Ar(n,t);case 6:var o=Ze,s=qt;Ze=null,Wn(e,t,n),Ze=o,qt=s,Ze!==null&&(qt?(e=Ze,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Ze.removeChild(n.stateNode));break;case 18:Ze!==null&&(qt?(e=Ze,n=n.stateNode,e.nodeType===8?fs(e.parentNode,n):e.nodeType===1&&fs(e,n),co(e)):fs(Ze,n.stateNode));break;case 4:o=Ze,s=qt,Ze=n.stateNode.containerInfo,qt=!0,Wn(e,t,n),Ze=o,qt=s;break;case 0:case 11:case 14:case 15:if(!at&&(o=n.updateQueue,o!==null&&(o=o.lastEffect,o!==null))){s=o=o.next;do{var u=s,m=u.destroy;u=u.tag,m!==void 0&&((u&2)!==0||(u&4)!==0)&&Xs(n,t,m),s=s.next}while(s!==o)}Wn(e,t,n);break;case 1:if(!at&&(Ar(n,t),o=n.stateNode,typeof o.componentWillUnmount=="function"))try{o.props=n.memoizedProps,o.state=n.memoizedState,o.componentWillUnmount()}catch(x){Ue(n,t,x)}Wn(e,t,n);break;case 21:Wn(e,t,n);break;case 22:n.mode&1?(at=(o=at)||n.memoizedState!==null,Wn(e,t,n),at=o):Wn(e,t,n);break;default:Wn(e,t,n)}}function hd(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Wm),t.forEach(function(o){var s=Zm.bind(null,e,o);n.has(o)||(n.add(o),o.then(s,s))})}}function Jt(e,t){var n=t.deletions;if(n!==null)for(var o=0;os&&(s=m),o&=~u}if(o=s,o=Be()-o,o=(120>o?120:480>o?480:1080>o?1080:1920>o?1920:3e3>o?3e3:4320>o?4320:1960*Gm(o/1960))-o,10e?16:e,Hn===null)var o=!1;else{if(e=Hn,Hn=null,ti=0,(Ce&6)!==0)throw Error(i(331));var s=Ce;for(Ce|=4,q=e.current;q!==null;){var u=q,m=u.child;if((q.flags&16)!==0){var x=u.deletions;if(x!==null){for(var S=0;SBe()-na?fr(e,0):ta|=n),St(e,t)}function Rd(e,t){t===0&&((e.mode&1)===0?t=1:(t=dl,dl<<=1,(dl&130023424)===0&&(dl=4194304)));var n=ft();e=yn(e,t),e!==null&&(lo(e,t,n),St(e,n))}function Jm(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Rd(e,n)}function Zm(e,t){var n=0;switch(e.tag){case 13:var o=e.stateNode,s=e.memoizedState;s!==null&&(n=s.retryLane);break;case 19:o=e.stateNode;break;default:throw Error(i(314))}o!==null&&o.delete(t),Rd(e,n)}var Td;Td=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||yt.current)wt=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return wt=!1,$m(e,t,n);wt=(e.flags&131072)!==0}else wt=!1,ze&&(t.flags&1048576)!==0&&ac(t,_l,t.index);switch(t.lanes=0,t.tag){case 2:var o=t.type;Kl(e,t),e=t.pendingProps;var s=Tr(t,lt.current);zr(t,n),s=_s(null,t,o,e,s,n);var u=Is();return t.flags|=1,typeof s=="object"&&s!==null&&typeof s.render=="function"&&s.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,xt(o)?(u=!0,Pl(t)):u=!1,t.memoizedState=s.state!==null&&s.state!==void 0?s.state:null,bs(t),s.updater=Gl,t.stateNode=s,s._reactInternals=t,$s(t,o,e,n),t=Vs(null,t,o,!0,u,n)):(t.tag=0,ze&&u&&gs(t),dt(null,t,s,n),t=t.child),t;case 16:o=t.elementType;e:{switch(Kl(e,t),e=t.pendingProps,s=o._init,o=s(o._payload),t.type=o,s=t.tag=th(o),e=Xt(o,e),s){case 0:t=Ws(null,t,o,e,n);break e;case 1:t=td(null,t,o,e,n);break e;case 11:t=Xc(null,t,o,e,n);break e;case 14:t=qc(null,t,o,Xt(o.type,e),n);break e}throw Error(i(306,o,""))}return t;case 0:return o=t.type,s=t.pendingProps,s=t.elementType===o?s:Xt(o,s),Ws(e,t,o,s,n);case 1:return o=t.type,s=t.pendingProps,s=t.elementType===o?s:Xt(o,s),td(e,t,o,s,n);case 3:e:{if(nd(t),e===null)throw Error(i(387));o=t.pendingProps,u=t.memoizedState,s=u.element,vc(e,t),Fl(t,o,null,n);var m=t.memoizedState;if(o=m.element,u.isDehydrated)if(u={element:o,isDehydrated:!1,cache:m.cache,pendingSuspenseBoundaries:m.pendingSuspenseBoundaries,transitions:m.transitions},t.updateQueue.baseState=u,t.memoizedState=u,t.flags&256){s=Or(Error(i(423)),t),t=rd(e,t,o,n,s);break e}else if(o!==s){s=Or(Error(i(424)),t),t=rd(e,t,o,n,s);break e}else for(jt=On(t.stateNode.containerInfo.firstChild),bt=t,ze=!0,Yt=null,n=hc(t,null,o,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Lr(),o===s){t=wn(e,t,n);break e}dt(e,t,o,n)}t=t.child}return t;case 5:return wc(t),e===null&&xs(t),o=t.type,s=t.pendingProps,u=e!==null?e.memoizedProps:null,m=s.children,cs(o,s)?m=null:u!==null&&cs(o,u)&&(t.flags|=32),ed(e,t),dt(e,t,m,n),t.child;case 6:return e===null&&xs(t),null;case 13:return od(e,t,n);case 4:return js(t,t.stateNode.containerInfo),o=t.pendingProps,e===null?t.child=_r(t,null,o,n):dt(e,t,o,n),t.child;case 11:return o=t.type,s=t.pendingProps,s=t.elementType===o?s:Xt(o,s),Xc(e,t,o,s,n);case 7:return dt(e,t,t.pendingProps,n),t.child;case 8:return dt(e,t,t.pendingProps.children,n),t.child;case 12:return dt(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(o=t.type._context,s=t.pendingProps,u=t.memoizedProps,m=s.value,De(Ml,o._currentValue),o._currentValue=m,u!==null)if(Kt(u.value,m)){if(u.children===s.children&&!yt.current){t=wn(e,t,n);break e}}else for(u=t.child,u!==null&&(u.return=t);u!==null;){var x=u.dependencies;if(x!==null){m=u.child;for(var S=x.firstContext;S!==null;){if(S.context===o){if(u.tag===1){S=xn(-1,n&-n),S.tag=2;var T=u.updateQueue;if(T!==null){T=T.shared;var $=T.pending;$===null?S.next=S:(S.next=$.next,$.next=S),T.pending=S}}u.lanes|=n,S=u.alternate,S!==null&&(S.lanes|=n),Es(u.return,n,t),x.lanes|=n;break}S=S.next}}else if(u.tag===10)m=u.type===t.type?null:u.child;else if(u.tag===18){if(m=u.return,m===null)throw Error(i(341));m.lanes|=n,x=m.alternate,x!==null&&(x.lanes|=n),Es(m,n,t),m=u.sibling}else m=u.child;if(m!==null)m.return=u;else for(m=u;m!==null;){if(m===t){m=null;break}if(u=m.sibling,u!==null){u.return=m.return,m=u;break}m=m.return}u=m}dt(e,t,s.children,n),t=t.child}return t;case 9:return s=t.type,o=t.pendingProps.children,zr(t,n),s=_t(s),o=o(s),t.flags|=1,dt(e,t,o,n),t.child;case 14:return o=t.type,s=Xt(o,t.pendingProps),s=Xt(o.type,s),qc(e,t,o,s,n);case 15:return Jc(e,t,t.type,t.pendingProps,n);case 17:return o=t.type,s=t.pendingProps,s=t.elementType===o?s:Xt(o,s),Kl(e,t),t.tag=1,xt(o)?(e=!0,Pl(t)):e=!1,zr(t,n),Wc(t,o,s),$s(t,o,s,n),Vs(null,t,o,!0,e,n);case 19:return id(e,t,n);case 22:return Zc(e,t,n)}throw Error(i(156,t.tag))};function Pd(e,t){return uu(e,t)}function eh(e,t,n,o){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=o,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Mt(e,t,n,o){return new eh(e,t,n,o)}function ca(e){return e=e.prototype,!(!e||!e.isReactComponent)}function th(e){if(typeof e=="function")return ca(e)?1:0;if(e!=null){if(e=e.$$typeof,e===xe)return 11;if(e===G)return 14}return 2}function Kn(e,t){var n=e.alternate;return n===null?(n=Mt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function li(e,t,n,o,s,u){var m=2;if(o=e,typeof e=="function")ca(e)&&(m=1);else if(typeof e=="string")m=5;else e:switch(e){case K:return mr(n.children,s,u,t);case O:m=8,s|=8;break;case ne:return e=Mt(12,n,t,s|2),e.elementType=ne,e.lanes=u,e;case Se:return e=Mt(13,n,t,s),e.elementType=Se,e.lanes=u,e;case be:return e=Mt(19,n,t,s),e.elementType=be,e.lanes=u,e;case ie:return ii(n,s,u,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case de:m=10;break e;case ge:m=9;break e;case xe:m=11;break e;case G:m=14;break e;case ue:m=16,o=null;break e}throw Error(i(130,e==null?e:typeof e,""))}return t=Mt(m,n,t,s),t.elementType=e,t.type=o,t.lanes=u,t}function mr(e,t,n,o){return e=Mt(7,e,o,t),e.lanes=n,e}function ii(e,t,n,o){return e=Mt(22,e,o,t),e.elementType=ie,e.lanes=n,e.stateNode={isHidden:!1},e}function da(e,t,n){return e=Mt(6,e,null,t),e.lanes=n,e}function fa(e,t,n){return t=Mt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function nh(e,t,n,o,s){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Fi(0),this.expirationTimes=Fi(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Fi(0),this.identifierPrefix=o,this.onRecoverableError=s,this.mutableSourceEagerHydrationData=null}function pa(e,t,n,o,s,u,m,x,S){return e=new nh(e,t,n,x,S),t===1?(t=1,u===!0&&(t|=8)):t=0,u=Mt(3,null,null,t),e.current=u,u.stateNode=e,u.memoizedState={element:o,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},bs(u),e}function rh(e,t,n){var o=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(r)}catch(l){console.error(l)}}return r(),xa.exports=gh(),xa.exports}var Hd;function vh(){if(Hd)return pi;Hd=1;var r=Sf();return pi.createRoot=r.createRoot,pi.hydrateRoot=r.hydrateRoot,pi}var yh=vh();const xh=kf(yh);/** + * react-router v7.8.0 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */var Gd="popstate";function wh(r={}){function l(a,c){let{pathname:d,search:p,hash:h}=a.location;return _a("",{pathname:d,search:p,hash:h},c.state&&c.state.usr||null,c.state&&c.state.key||"default")}function i(a,c){return typeof c=="string"?c:Ho(c)}return Sh(l,i,null,r)}function $e(r,l){if(r===!1||r===null||typeof r>"u")throw new Error(l)}function un(r,l){if(!r){typeof console<"u"&&console.warn(l);try{throw new Error(l)}catch{}}}function kh(){return Math.random().toString(36).substring(2,10)}function Qd(r,l){return{usr:r.state,key:r.key,idx:l}}function _a(r,l,i=null,a){return{pathname:typeof r=="string"?r:r.pathname,search:"",hash:"",...typeof l=="string"?Vr(l):l,state:i,key:l&&l.key||a||kh()}}function Ho({pathname:r="/",search:l="",hash:i=""}){return l&&l!=="?"&&(r+=l.charAt(0)==="?"?l:"?"+l),i&&i!=="#"&&(r+=i.charAt(0)==="#"?i:"#"+i),r}function Vr(r){let l={};if(r){let i=r.indexOf("#");i>=0&&(l.hash=r.substring(i),r=r.substring(0,i));let a=r.indexOf("?");a>=0&&(l.search=r.substring(a),r=r.substring(0,a)),r&&(l.pathname=r)}return l}function Sh(r,l,i,a={}){let{window:c=document.defaultView,v5Compat:d=!1}=a,p=c.history,h="POP",g=null,v=w();v==null&&(v=0,p.replaceState({...p.state,idx:v},""));function w(){return(p.state||{idx:null}).idx}function C(){h="POP";let _=w(),z=_==null?null:_-v;v=_,g&&g({action:h,location:k.location,delta:z})}function N(_,z){h="PUSH";let I=_a(k.location,_,z);v=w()+1;let A=Qd(I,v),H=k.createHref(I);try{p.pushState(A,"",H)}catch(B){if(B instanceof DOMException&&B.name==="DataCloneError")throw B;c.location.assign(H)}d&&g&&g({action:h,location:k.location,delta:1})}function L(_,z){h="REPLACE";let I=_a(k.location,_,z);v=w();let A=Qd(I,v),H=k.createHref(I);p.replaceState(A,"",H),d&&g&&g({action:h,location:k.location,delta:0})}function P(_){return Ch(_)}let k={get action(){return h},get location(){return r(c,p)},listen(_){if(g)throw new Error("A history only accepts one active listener");return c.addEventListener(Gd,C),g=_,()=>{c.removeEventListener(Gd,C),g=null}},createHref(_){return l(c,_)},createURL:P,encodeLocation(_){let z=P(_);return{pathname:z.pathname,search:z.search,hash:z.hash}},push:N,replace:L,go(_){return p.go(_)}};return k}function Ch(r,l=!1){let i="http://localhost";typeof window<"u"&&(i=window.location.origin!=="null"?window.location.origin:window.location.href),$e(i,"No window.location.(origin|href) available to create URL");let a=typeof r=="string"?r:Ho(r);return a=a.replace(/ $/,"%20"),!l&&a.startsWith("//")&&(a=i+a),new URL(a,i)}function Cf(r,l,i="/"){return Eh(r,l,i,!1)}function Eh(r,l,i,a){let c=typeof l=="string"?Vr(l):l,d=En(c.pathname||"/",i);if(d==null)return null;let p=Ef(r);Nh(p);let h=null;for(let g=0;h==null&&g{let g={relativePath:h===void 0?d.path||"":h,caseSensitive:d.caseSensitive===!0,childrenIndex:p,route:d};g.relativePath.startsWith("/")&&($e(g.relativePath.startsWith(a),`Absolute route path "${g.relativePath}" nested under path "${a}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),g.relativePath=g.relativePath.slice(a.length));let v=Cn([a,g.relativePath]),w=i.concat(g);d.children&&d.children.length>0&&($e(d.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${v}".`),Ef(d.children,l,w,v)),!(d.path==null&&!d.index)&&l.push({path:v,score:Lh(v,d.index),routesMeta:w})};return r.forEach((d,p)=>{var h;if(d.path===""||!((h=d.path)!=null&&h.includes("?")))c(d,p);else for(let g of Nf(d.path))c(d,p,g)}),l}function Nf(r){let l=r.split("/");if(l.length===0)return[];let[i,...a]=l,c=i.endsWith("?"),d=i.replace(/\?$/,"");if(a.length===0)return c?[d,""]:[d];let p=Nf(a.join("/")),h=[];return h.push(...p.map(g=>g===""?d:[d,g].join("/"))),c&&h.push(...p),h.map(g=>r.startsWith("/")&&g===""?"/":g)}function Nh(r){r.sort((l,i)=>l.score!==i.score?i.score-l.score:_h(l.routesMeta.map(a=>a.childrenIndex),i.routesMeta.map(a=>a.childrenIndex)))}var bh=/^:[\w-]+$/,jh=3,Rh=2,Th=1,Ph=10,Dh=-2,Kd=r=>r==="*";function Lh(r,l){let i=r.split("/"),a=i.length;return i.some(Kd)&&(a+=Dh),l&&(a+=Rh),i.filter(c=>!Kd(c)).reduce((c,d)=>c+(bh.test(d)?jh:d===""?Th:Ph),a)}function _h(r,l){return r.length===l.length&&r.slice(0,-1).every((a,c)=>a===l[c])?r[r.length-1]-l[l.length-1]:0}function Ih(r,l,i=!1){let{routesMeta:a}=r,c={},d="/",p=[];for(let h=0;h{if(w==="*"){let P=h[N]||"";p=d.slice(0,d.length-P.length).replace(/(.)\/+$/,"$1")}const L=h[N];return C&&!L?v[w]=void 0:v[w]=(L||"").replace(/%2F/g,"/"),v},{}),pathname:d,pathnameBase:p,pattern:r}}function zh(r,l=!1,i=!0){un(r==="*"||!r.endsWith("*")||r.endsWith("/*"),`Route path "${r}" will be treated as if it were "${r.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${r.replace(/\*$/,"/*")}".`);let a=[],c="^"+r.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(p,h,g)=>(a.push({paramName:h,isOptional:g!=null}),g?"/?([^\\/]+)?":"/([^\\/]+)"));return r.endsWith("*")?(a.push({paramName:"*"}),c+=r==="*"||r==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):i?c+="\\/*$":r!==""&&r!=="/"&&(c+="(?:(?=\\/|$))"),[new RegExp(c,l?void 0:"i"),a]}function Mh(r){try{return r.split("/").map(l=>decodeURIComponent(l).replace(/\//g,"%2F")).join("/")}catch(l){return un(!1,`The URL path "${r}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${l}).`),r}}function En(r,l){if(l==="/")return r;if(!r.toLowerCase().startsWith(l.toLowerCase()))return null;let i=l.endsWith("/")?l.length-1:l.length,a=r.charAt(i);return a&&a!=="/"?null:r.slice(i)||"/"}function Oh(r,l="/"){let{pathname:i,search:a="",hash:c=""}=typeof r=="string"?Vr(r):r;return{pathname:i?i.startsWith("/")?i:Ah(i,l):l,search:Uh(a),hash:Bh(c)}}function Ah(r,l){let i=l.replace(/\/+$/,"").split("/");return r.split("/").forEach(c=>{c===".."?i.length>1&&i.pop():c!=="."&&i.push(c)}),i.length>1?i.join("/"):"/"}function Sa(r,l,i,a){return`Cannot include a '${r}' character in a manually specified \`to.${l}\` field [${JSON.stringify(a)}]. Please separate it out to the \`to.${i}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function Fh(r){return r.filter((l,i)=>i===0||l.route.path&&l.route.path.length>0)}function bf(r){let l=Fh(r);return l.map((i,a)=>a===l.length-1?i.pathname:i.pathnameBase)}function jf(r,l,i,a=!1){let c;typeof r=="string"?c=Vr(r):(c={...r},$e(!c.pathname||!c.pathname.includes("?"),Sa("?","pathname","search",c)),$e(!c.pathname||!c.pathname.includes("#"),Sa("#","pathname","hash",c)),$e(!c.search||!c.search.includes("#"),Sa("#","search","hash",c)));let d=r===""||c.pathname==="",p=d?"/":c.pathname,h;if(p==null)h=i;else{let C=l.length-1;if(!a&&p.startsWith("..")){let N=p.split("/");for(;N[0]==="..";)N.shift(),C-=1;c.pathname=N.join("/")}h=C>=0?l[C]:"/"}let g=Oh(c,h),v=p&&p!=="/"&&p.endsWith("/"),w=(d||p===".")&&i.endsWith("/");return!g.pathname.endsWith("/")&&(v||w)&&(g.pathname+="/"),g}var Cn=r=>r.join("/").replace(/\/\/+/g,"/"),$h=r=>r.replace(/\/+$/,"").replace(/^\/*/,"/"),Uh=r=>!r||r==="?"?"":r.startsWith("?")?r:"?"+r,Bh=r=>!r||r==="#"?"":r.startsWith("#")?r:"#"+r;function Wh(r){return r!=null&&typeof r.status=="number"&&typeof r.statusText=="string"&&typeof r.internal=="boolean"&&"data"in r}var Rf=["POST","PUT","PATCH","DELETE"];new Set(Rf);var Vh=["GET",...Rf];new Set(Vh);var Hr=y.createContext(null);Hr.displayName="DataRouter";var Ri=y.createContext(null);Ri.displayName="DataRouterState";y.createContext(!1);var Tf=y.createContext({isTransitioning:!1});Tf.displayName="ViewTransition";var Hh=y.createContext(new Map);Hh.displayName="Fetchers";var Gh=y.createContext(null);Gh.displayName="Await";var cn=y.createContext(null);cn.displayName="Navigation";var Xo=y.createContext(null);Xo.displayName="Location";var bn=y.createContext({outlet:null,matches:[],isDataRoute:!1});bn.displayName="Route";var Wa=y.createContext(null);Wa.displayName="RouteError";function Qh(r,{relative:l}={}){$e(qo(),"useHref() may be used only in the context of a component.");let{basename:i,navigator:a}=y.useContext(cn),{hash:c,pathname:d,search:p}=Jo(r,{relative:l}),h=d;return i!=="/"&&(h=d==="/"?i:Cn([i,d])),a.createHref({pathname:h,search:p,hash:c})}function qo(){return y.useContext(Xo)!=null}function Jn(){return $e(qo(),"useLocation() may be used only in the context of a component."),y.useContext(Xo).location}var Pf="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Df(r){y.useContext(cn).static||y.useLayoutEffect(r)}function Ti(){let{isDataRoute:r}=y.useContext(bn);return r?ig():Kh()}function Kh(){$e(qo(),"useNavigate() may be used only in the context of a component.");let r=y.useContext(Hr),{basename:l,navigator:i}=y.useContext(cn),{matches:a}=y.useContext(bn),{pathname:c}=Jn(),d=JSON.stringify(bf(a)),p=y.useRef(!1);return Df(()=>{p.current=!0}),y.useCallback((g,v={})=>{if(un(p.current,Pf),!p.current)return;if(typeof g=="number"){i.go(g);return}let w=jf(g,JSON.parse(d),c,v.relative==="path");r==null&&l!=="/"&&(w.pathname=w.pathname==="/"?l:Cn([l,w.pathname])),(v.replace?i.replace:i.push)(w,v.state,v)},[l,i,d,c,r])}y.createContext(null);function Jo(r,{relative:l}={}){let{matches:i}=y.useContext(bn),{pathname:a}=Jn(),c=JSON.stringify(bf(i));return y.useMemo(()=>jf(r,JSON.parse(c),a,l==="path"),[r,c,a,l])}function Yh(r,l){return Lf(r,l)}function Lf(r,l,i,a){var z;$e(qo(),"useRoutes() may be used only in the context of a component.");let{navigator:c}=y.useContext(cn),{matches:d}=y.useContext(bn),p=d[d.length-1],h=p?p.params:{},g=p?p.pathname:"/",v=p?p.pathnameBase:"/",w=p&&p.route;{let I=w&&w.path||"";_f(g,!w||I.endsWith("*")||I.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${g}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. + +Please change the parent to .`)}let C=Jn(),N;if(l){let I=typeof l=="string"?Vr(l):l;$e(v==="/"||((z=I.pathname)==null?void 0:z.startsWith(v)),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${v}" but pathname "${I.pathname}" was given in the \`location\` prop.`),N=I}else N=C;let L=N.pathname||"/",P=L;if(v!=="/"){let I=v.replace(/^\//,"").split("/");P="/"+L.replace(/^\//,"").split("/").slice(I.length).join("/")}let k=Cf(r,{pathname:P});un(w||k!=null,`No routes matched location "${N.pathname}${N.search}${N.hash}" `),un(k==null||k[k.length-1].route.element!==void 0||k[k.length-1].route.Component!==void 0||k[k.length-1].route.lazy!==void 0,`Matched leaf route at location "${N.pathname}${N.search}${N.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let _=eg(k&&k.map(I=>Object.assign({},I,{params:Object.assign({},h,I.params),pathname:Cn([v,c.encodeLocation?c.encodeLocation(I.pathname).pathname:I.pathname]),pathnameBase:I.pathnameBase==="/"?v:Cn([v,c.encodeLocation?c.encodeLocation(I.pathnameBase).pathname:I.pathnameBase])})),d,i,a);return l&&_?y.createElement(Xo.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...N},navigationType:"POP"}},_):_}function Xh(){let r=lg(),l=Wh(r)?`${r.status} ${r.statusText}`:r instanceof Error?r.message:JSON.stringify(r),i=r instanceof Error?r.stack:null,a="rgba(200,200,200, 0.5)",c={padding:"0.5rem",backgroundColor:a},d={padding:"2px 4px",backgroundColor:a},p=null;return console.error("Error handled by React Router default ErrorBoundary:",r),p=y.createElement(y.Fragment,null,y.createElement("p",null,"💿 Hey developer 👋"),y.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",y.createElement("code",{style:d},"ErrorBoundary")," or"," ",y.createElement("code",{style:d},"errorElement")," prop on your route.")),y.createElement(y.Fragment,null,y.createElement("h2",null,"Unexpected Application Error!"),y.createElement("h3",{style:{fontStyle:"italic"}},l),i?y.createElement("pre",{style:c},i):null,p)}var qh=y.createElement(Xh,null),Jh=class extends y.Component{constructor(r){super(r),this.state={location:r.location,revalidation:r.revalidation,error:r.error}}static getDerivedStateFromError(r){return{error:r}}static getDerivedStateFromProps(r,l){return l.location!==r.location||l.revalidation!=="idle"&&r.revalidation==="idle"?{error:r.error,location:r.location,revalidation:r.revalidation}:{error:r.error!==void 0?r.error:l.error,location:l.location,revalidation:r.revalidation||l.revalidation}}componentDidCatch(r,l){console.error("React Router caught the following error during render",r,l)}render(){return this.state.error!==void 0?y.createElement(bn.Provider,{value:this.props.routeContext},y.createElement(Wa.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function Zh({routeContext:r,match:l,children:i}){let a=y.useContext(Hr);return a&&a.static&&a.staticContext&&(l.route.errorElement||l.route.ErrorBoundary)&&(a.staticContext._deepestRenderedBoundaryId=l.route.id),y.createElement(bn.Provider,{value:r},i)}function eg(r,l=[],i=null,a=null){if(r==null){if(!i)return null;if(i.errors)r=i.matches;else if(l.length===0&&!i.initialized&&i.matches.length>0)r=i.matches;else return null}let c=r,d=i==null?void 0:i.errors;if(d!=null){let g=c.findIndex(v=>v.route.id&&(d==null?void 0:d[v.route.id])!==void 0);$e(g>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(d).join(",")}`),c=c.slice(0,Math.min(c.length,g+1))}let p=!1,h=-1;if(i)for(let g=0;g=0?c=c.slice(0,h+1):c=[c[0]];break}}}return c.reduceRight((g,v,w)=>{let C,N=!1,L=null,P=null;i&&(C=d&&v.route.id?d[v.route.id]:void 0,L=v.route.errorElement||qh,p&&(h<0&&w===0?(_f("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),N=!0,P=null):h===w&&(N=!0,P=v.route.hydrateFallbackElement||null)));let k=l.concat(c.slice(0,w+1)),_=()=>{let z;return C?z=L:N?z=P:v.route.Component?z=y.createElement(v.route.Component,null):v.route.element?z=v.route.element:z=g,y.createElement(Zh,{match:v,routeContext:{outlet:g,matches:k,isDataRoute:i!=null},children:z})};return i&&(v.route.ErrorBoundary||v.route.errorElement||w===0)?y.createElement(Jh,{location:i.location,revalidation:i.revalidation,component:L,error:C,children:_(),routeContext:{outlet:null,matches:k,isDataRoute:!0}}):_()},null)}function Va(r){return`${r} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function tg(r){let l=y.useContext(Hr);return $e(l,Va(r)),l}function ng(r){let l=y.useContext(Ri);return $e(l,Va(r)),l}function rg(r){let l=y.useContext(bn);return $e(l,Va(r)),l}function Ha(r){let l=rg(r),i=l.matches[l.matches.length-1];return $e(i.route.id,`${r} can only be used on routes that contain a unique "id"`),i.route.id}function og(){return Ha("useRouteId")}function lg(){var a;let r=y.useContext(Wa),l=ng("useRouteError"),i=Ha("useRouteError");return r!==void 0?r:(a=l.errors)==null?void 0:a[i]}function ig(){let{router:r}=tg("useNavigate"),l=Ha("useNavigate"),i=y.useRef(!1);return Df(()=>{i.current=!0}),y.useCallback(async(c,d={})=>{un(i.current,Pf),i.current&&(typeof c=="number"?r.navigate(c):await r.navigate(c,{fromRouteId:l,...d}))},[r,l])}var Yd={};function _f(r,l,i){!l&&!Yd[r]&&(Yd[r]=!0,un(!1,i))}y.memo(sg);function sg({routes:r,future:l,state:i}){return Lf(r,void 0,i,l)}function vi(r){$e(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function ag({basename:r="/",children:l=null,location:i,navigationType:a="POP",navigator:c,static:d=!1}){$e(!qo(),"You cannot render a inside another . You should never have more than one in your app.");let p=r.replace(/^\/*/,"/"),h=y.useMemo(()=>({basename:p,navigator:c,static:d,future:{}}),[p,c,d]);typeof i=="string"&&(i=Vr(i));let{pathname:g="/",search:v="",hash:w="",state:C=null,key:N="default"}=i,L=y.useMemo(()=>{let P=En(g,p);return P==null?null:{location:{pathname:P,search:v,hash:w,state:C,key:N},navigationType:a}},[p,g,v,w,C,N,a]);return un(L!=null,` is not able to match the URL "${g}${v}${w}" because it does not start with the basename, so the won't render anything.`),L==null?null:y.createElement(cn.Provider,{value:h},y.createElement(Xo.Provider,{children:l,value:L}))}function ug({children:r,location:l}){return Yh(Ia(r),l)}function Ia(r,l=[]){let i=[];return y.Children.forEach(r,(a,c)=>{if(!y.isValidElement(a))return;let d=[...l,c];if(a.type===y.Fragment){i.push.apply(i,Ia(a.props.children,d));return}$e(a.type===vi,`[${typeof a.type=="string"?a.type:a.type.name}] is not a component. All component children of must be a or `),$e(!a.props.index||!a.props.children,"An index route cannot have child routes.");let p={id:a.props.id||d.join("-"),caseSensitive:a.props.caseSensitive,element:a.props.element,Component:a.props.Component,index:a.props.index,path:a.props.path,loader:a.props.loader,action:a.props.action,hydrateFallbackElement:a.props.hydrateFallbackElement,HydrateFallback:a.props.HydrateFallback,errorElement:a.props.errorElement,ErrorBoundary:a.props.ErrorBoundary,hasErrorBoundary:a.props.hasErrorBoundary===!0||a.props.ErrorBoundary!=null||a.props.errorElement!=null,shouldRevalidate:a.props.shouldRevalidate,handle:a.props.handle,lazy:a.props.lazy};a.props.children&&(p.children=Ia(a.props.children,d)),i.push(p)}),i}var yi="get",xi="application/x-www-form-urlencoded";function Pi(r){return r!=null&&typeof r.tagName=="string"}function cg(r){return Pi(r)&&r.tagName.toLowerCase()==="button"}function dg(r){return Pi(r)&&r.tagName.toLowerCase()==="form"}function fg(r){return Pi(r)&&r.tagName.toLowerCase()==="input"}function pg(r){return!!(r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)}function mg(r,l){return r.button===0&&(!l||l==="_self")&&!pg(r)}var mi=null;function hg(){if(mi===null)try{new FormData(document.createElement("form"),0),mi=!1}catch{mi=!0}return mi}var gg=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Ca(r){return r!=null&&!gg.has(r)?(un(!1,`"${r}" is not a valid \`encType\` for \`
\`/\`\` and will default to "${xi}"`),null):r}function vg(r,l){let i,a,c,d,p;if(dg(r)){let h=r.getAttribute("action");a=h?En(h,l):null,i=r.getAttribute("method")||yi,c=Ca(r.getAttribute("enctype"))||xi,d=new FormData(r)}else if(cg(r)||fg(r)&&(r.type==="submit"||r.type==="image")){let h=r.form;if(h==null)throw new Error('Cannot submit a - -
- Congratulations! -
-
- {winnerName ? `${winnerName} wins` : `Winner!`} -
- -
- - -
-
-
-)} - - + {winner && showWinner && ( +
setShowWinner(false)} + > +
+
e.stopPropagation()} + > + + +
+ Congratulations! +
+
+ {winnerName ? `${winnerName} wins` : `Winner!`} +
+
+ + +
+
+
+ )}
); }; From 093e91e851b32d085e60fe4b2235e458aad7774d Mon Sep 17 00:00:00 2001 From: Idahel Date: Mon, 25 Aug 2025 14:47:48 +0200 Subject: [PATCH 078/127] added netlify redirects and toml --- backend/dist/index.js | 5 +++++ backend/dist/index.js.map | 2 +- frontend/public/_redirects | 1 + netlify.toml | 8 ++++++++ 4 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 frontend/public/_redirects create mode 100644 netlify.toml diff --git a/backend/dist/index.js b/backend/dist/index.js index 5015674462..10e6a7413b 100644 --- a/backend/dist/index.js +++ b/backend/dist/index.js @@ -15,6 +15,11 @@ app.use(cors({ origin: [ config.FRONTEND_URI, "https://banganza.netlify.app", + // Development origins + "http://127.0.0.1:5173", + "http://localhost:5173", + "http://127.0.0.1:3000", + "http://localhost:3000", ], credentials: true, // Allow cookies methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"], diff --git a/backend/dist/index.js.map b/backend/dist/index.js.map index 6274c00849..9431ce5768 100644 --- a/backend/dist/index.js.map +++ b/backend/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,OAAO,OAA8B,MAAM,SAAS,CAAC;AACrD,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,UAAU,MAAM,wBAAwB,CAAC;AAChD,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;AACtB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;AAEzB,aAAa;AACb,GAAG,CAAC,GAAG,CACL,IAAI,CAAC;IACH,MAAM,EAAE;QACN,MAAM,CAAC,YAAY;QACnB,8BAA8B;KAC/B;IACD,WAAW,EAAE,IAAI,EAAE,gBAAgB;IACnC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC;IACpD,cAAc,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,QAAQ,CAAC;CAC5D,CAAC,CACH,CAAC;AACF,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,mCAAmC;AAE5D,wBAAwB;AACxB,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IAC3C,GAAG,CAAC,IAAI,CAAC;QACP,OAAO,EAAE,4BAA4B;QACrC,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,MAAM,CAAC,QAAQ;QAC5B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,QAAQ,EAAE,MAAM,CAAC,YAAY;KAC9B,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,oDAAoD;AACpD,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;IACjD,MAAM,MAAM,GAAG;QACb,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;QACxB,WAAW,EAAE,MAAM,CAAC,QAAQ;QAC5B,QAAQ,EACN,QAAQ,CAAC,UAAU,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc;KACtE,CAAC;IAEF,IAAI,MAAM,CAAC,QAAQ,KAAK,cAAc,EAAE,CAAC;QACvC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC;AAEH,0BAA0B;AAC1B,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAEjC,mBAAmB;AACnB,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AAEnC,cAAc;AACd,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAElB,4BAA4B;AAC5B,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAEtB,qBAAqB;AACrB,SAAS,EAAE,CAAC;AAEZ,mBAAmB;AACnB,GAAG;KACA,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;IACjB,MAAM,CAAC,IAAI,CAAC,qCAAqC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IACnE,IAAI,MAAM,CAAC,QAAQ,KAAK,YAAY,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,sCAAsC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;IACtE,CAAC;AACH,CAAC,CAAC;KACD,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;IACnB,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/frontend/public/_redirects b/frontend/public/_redirects new file mode 100644 index 0000000000..ad37e2c2c9 --- /dev/null +++ b/frontend/public/_redirects @@ -0,0 +1 @@ +/* /index.html 200 diff --git a/netlify.toml b/netlify.toml new file mode 100644 index 0000000000..e532a5c2f4 --- /dev/null +++ b/netlify.toml @@ -0,0 +1,8 @@ +[build] + publish = "frontend/dist" + command = "cd frontend && npm run build" + +[[redirects]] + from = "/*" + to = "/index.html" + status = 200 From 01eb30d4a921e728dc5b11aefd456efbf3c72692 Mon Sep 17 00:00:00 2001 From: Idahel Date: Mon, 25 Aug 2025 14:54:49 +0200 Subject: [PATCH 079/127] changed netlify toml --- netlify.toml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/netlify.toml b/netlify.toml index e532a5c2f4..fba8de4b3a 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,6 +1,7 @@ [build] - publish = "frontend/dist" - command = "cd frontend && npm run build" + base = "frontend" + publish = "dist" + command = "npm run build" [[redirects]] from = "/*" From 6c58fae402317073e0995f2427c8a931450ddae6 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Mon, 25 Aug 2025 16:56:07 +0200 Subject: [PATCH 080/127] Implemented spinner --- TODO.md | 8 +-- backend/data/items/celebrities.items.json | 2 +- frontend/src/components/CategorySelector.tsx | 7 +-- frontend/src/index.css | 56 ++++++++++++++++++++ frontend/src/ui/Spinner.tsx | 30 +++++++++++ 5 files changed, 95 insertions(+), 8 deletions(-) create mode 100644 frontend/src/ui/Spinner.tsx diff --git a/TODO.md b/TODO.md index 9c7facce10..b924e7948e 100644 --- a/TODO.md +++ b/TODO.md @@ -1,6 +1,6 @@ -- logik för när spelet är slut när man lagt 10 kort i rad -- game settings för antal lag +- logik för när spelet är slut när man lagt 10 kort i rad [X] +- game settings för antal lag [X] - display cards för kategorier -- admin login + logik för att redigera spelet +- admin login + logik för att redigera spelet [X ] - mobilvy -- tillgänglighet \ No newline at end of file +- tillgänglighet diff --git a/backend/data/items/celebrities.items.json b/backend/data/items/celebrities.items.json index e4c7e21c1f..0f28f64328 100644 --- a/backend/data/items/celebrities.items.json +++ b/backend/data/items/celebrities.items.json @@ -353,7 +353,7 @@ }, { "id": "celeb-45", - "name": "Kate Blanchett", + "name": "Cate Blanchett", "label": "Born 1969", "value": 1969, "categoryId": "celebrities.age", diff --git a/frontend/src/components/CategorySelector.tsx b/frontend/src/components/CategorySelector.tsx index 4a026881b0..68d14e655a 100644 --- a/frontend/src/components/CategorySelector.tsx +++ b/frontend/src/components/CategorySelector.tsx @@ -1,6 +1,7 @@ import React, { useEffect } from 'react'; import { useGame } from '../store/game'; import { Card } from '../ui/Card'; +import { Spinner } from '../ui/Spinner'; // import { Button } from '../ui/Button'; import { useNavigate } from 'react-router-dom'; @@ -11,9 +12,9 @@ export const CategorySelector: React.FC = () => { useEffect(() => { loadCategories(); }, [loadCategories]); if (loading) return ( -
-
Loading categories...
-
+
+ +
); if (error) return ( diff --git a/frontend/src/index.css b/frontend/src/index.css index 3b3ea81b05..52802e80d7 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -91,6 +91,62 @@ html { scroll-behavior: smooth; } +/* --- Mono / CRT spinner --- */ +.mono-spinner { + position: relative; + width: 3.25rem; /* 52px */ + height: 3.25rem; + filter: contrast(110%) saturate(80%); +} + +.mono-spinner::before { + content: ""; + position: absolute; + inset: 0; + border: 1px solid var(--color-border); + border-radius: 0.5rem; + box-shadow: + 0 0 0 1px var(--color-border-muted) inset, + var(--shadow-soft); +} + +/* roterande “radar‑skiva” med wedge */ +.mono-spinner .disc { + position: absolute; + inset: 6px; + border-radius: 9999px; + background: + radial-gradient(circle at center, var(--color-surface) 60%, transparent 61%), + conic-gradient(from 0deg, + var(--color-foreground) 0 120deg, + transparent 120deg 360deg); + animation: spin 1.1s linear infinite; +} + +/* subtila scanlines + flicker */ +.mono-spinner .scan { + content: ""; + position: absolute; + inset: 0; + border-radius: 0.5rem; + background: + repeating-linear-gradient( + 0deg, + rgba(40, 21, 23, 0.08), + rgba(40, 21, 23, 0.08) 2px, + transparent 2px, + transparent 4px + ); + mix-blend-mode: multiply; + pointer-events: none; + animation: crt-flicker 1.8s ease-in-out infinite; +} + +@keyframes spin { + to { transform: rotate(360deg); } +} + + @media (max-width: 640px) { html { font-size: 14px; diff --git a/frontend/src/ui/Spinner.tsx b/frontend/src/ui/Spinner.tsx new file mode 100644 index 0000000000..84339b53b8 --- /dev/null +++ b/frontend/src/ui/Spinner.tsx @@ -0,0 +1,30 @@ +import React from "react"; + +type SpinnerProps = { label?: string; size?: "sm" | "md" | "lg" }; + +const S = { + sm: "h-6 w-6 border-2", + md: "h-10 w-10 border-[3px]", + lg: "h-14 w-14 border-[4px]", +}; + +export const Spinner: React.FC = ({ label, size = "md" }) => { + const ring = S[size]; + return ( +
+
+ {label ? ( +
+ {label} +
+ ) : null} +
+ ); +}; From 25789f5985174319c1df33e1e523af95c70e372d Mon Sep 17 00:00:00 2001 From: tildetilde Date: Mon, 25 Aug 2025 19:02:03 +0200 Subject: [PATCH 081/127] new intro --- frontend/public/intro.mp4 | Bin 0 -> 4021145 bytes frontend/src/components/BanganzaIntro.tsx | 75 ++++++++-------------- frontend/src/pages/Home.tsx | 62 ++++++++++-------- 3 files changed, 61 insertions(+), 76 deletions(-) create mode 100644 frontend/public/intro.mp4 diff --git a/frontend/public/intro.mp4 b/frontend/public/intro.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..eab20e4279306427fbbf38e36e9156fb12419eca GIT binary patch literal 4021145 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

oSW$lLk^Y9UA< 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ñ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%0DAbfO?peC!tOg|KXyESU4k7e-3@ZMD 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 &8Ki7F(C74%bZ?X?lUJ59)MIMDnEj;7fV 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�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%0A@4t>T0=NDB$Rq{4*~935yU(xkssBPPFq zB@ifVa^mRibU#eoB?<$iifCJdUnqm9tDzfN4J6;~h!~UjPWw9?C1-1U$0O6YHgQyp zPO;Uvi&|^WDe{__h0>4bR^`t2kWm!ca`P@GC|TWDY~R zJ&(MS!h8|%r)#?})QN5O1ks9QwbIMU>DpttIZg{FE(1EP@g!=ycQUmV9x`MD(;UFG zw))WjOCwIV!_5l8L~s7zr0Yc;YO?$7g*&bh(}btmjCrizGgsk9OPDr2MhG6J9(XL4 zFE(bJhSw<9pzo%Gp_wQycn~DH8)2 zukv0YH2dAueU)8{igs2!ohx}=Hwc8|_a$EY&kXg($uv7MqAcsNjA@^c|j zu#LroVK; zO0D1ySbG|4a7`lW-Lo>Swyh-ZSdIt*u@m>DcJ|AVnsPE*F=&JBSiO=GoLr zbXRuu6HZJR8qUV8t4Yve6e*UWy3t z3GQj4tt7n1q%@AxDLxko*a4X=@9*iYwK4HIWpSStAN0RiD7O@`Qvp?!tXY8<voFsg69~StjSZkIvwi+~oW@VFqqNTYlo(6}Pt7ztFk_#h|o} znQT*hOg|*!S6v`um736z4(cC9(9)^+4QtE0A}CKjqSe~S?u??zKj1D&p09`sLA|RU z;8MipY(+FG$qIV4^;}3{2HuCnuF2cLIn;mbuDs;&B|xA;pKzP2(Ar;%baG|D1DO9^ z1&p>n?H5%1n8f*4;&8;g%1LKo4YaMy9RToPoCd})y!pdv^iVw+t%;pnUS&VQ;&m(D z6%$Moo*ZJQIW&|yVitESJa2y`@I$*Dng~?6tudM+Si%@FiogE#gQ>tgVY7Z044rl8 zL_`P)?hbBk6%3ja!cs~mxwM@||6z+IiD+z0x$UP=Q5835ntcdwDgoA*ML#e*eOda3 z1KXwkDneANjNr+_7vN3hT-A~&-9mWNMs53a^Zy&$S(2!=lda6Kp-rkQp zE3fUOaJ;)&HTqDG-$N}IJnQcRTu8NrgZ66=hPKJ4z7t_HhA#$fbNK7%t-a?M+Fm|0 z`<)Zi4npH57RU~6%PosaQ(Gx;BiL?Te&D7yNS`7jinA*oxctZ zfSA#+ehgX7dHA@rQGh6cY>;uIb_(~0L`>AKFvZaP+m46!SjDm@IY0zfO<2xL`>94$ zSBe)?m~sNb`}lkkAE}QxTZT>d5Zz5=RUn_}U#VtRm>4&hSkbWnM6o5JspBxT&s^zz z%CmCB6tz+(AdG@6wN+rlg>qvi(Sr7zPgK&w5*zyD!)*ZDzhPnmBNtsY02y3MCrSgH zXVtYR`C5CNeOv9LeV1#4TkR!1cnr=#n4OsUe$h{8)PF)Vq-;EsAEx=Gl{riuApp@p zLR)UZW_Ncjrb0D~mdJr>lq!Adw+iWKe4VfvbdN6%X51zZ=diMiq*$kAYY4v2fNse z5mDtzjyDj$v+3F0^sq9=W?3`pDMr|nVsMjF)M35ww+v63 zcpyw?L5S;9zi*I6#zy~F#r(lL0C=bl18`B@6-SIhlcDBG^4LmOvK5;+p{Uqn=djc4 z5Hq^~K~d8B1b5W;%!(>u(3qNh=J6%MM6T(R!0Y)YK~pH$U1T9*2_~we z11errMykTM<-LBqzW)cue5{O`=&;K=%~8$iJ$-4Y?zEUU4;C6}dZca5*H z`h;2)nMuYjhHoqqP0KTLs{uRfUi7q2FS6A=(40G6u@fnTXs4{d>}brP(Aswea?w5u zN=d4hLd@W9cw9K?Y`MjlK7Eldqt1A;THqZJ^(jTg0q<7DSzY7}d=PHc9*k))KLnR+u@|a749gW%;ok~${(c*XrSC~ z;i$NF#|jX7`+NpvEpy@ihSl_iy}jm-R%B$(GN&wu{;{$rfsW|Ez_A=~`h>Z6MW1c% zwYIKFbg(2M1uV)DFnDc82$v3f!?kHwy2!~2MKO+fQD+TAmLWI8s3COw{R|7Re|*xl zfjRwE*%!G-K-fCG8$4(DrZIItAsBq@fadw5oIT9lYNKNqh_;O)A-mai+k42=;t*k$ zJLPza+IhneA@Ucu)7AqaexITFX1|b8)3ZSm5~in$ zoGL+~7iNj6(`8ZFGTz9;Z)6gv>ut6SVYzVfK8U_ZG;UNY z3>vk&^h$9CZPHgvpPO;LM&CDf^z%&xtg|4-7%g+oK=-+{$Y@J%{L}4WxxM;XiQajq zIWzWlkxH1({0VZ(a-)7KfzOLro6qt%t^*hVJ&bSEs1$UVw592PI@WZ(O_B_G7QW{_ zu;g@QFirT=AgBG~Lr}#ZH=@II*xW49e!u-vzezq`_iJT)l}ciYEli1@CcOqCXw^EoQt$9BR{f{q`G#rMu2l&3 z`FcGHrzJIjmoAVIrZcVwTayJus4FkoyjA6lTI-u3xk+ilW92)tOrRzlx2mErMtI^d z@kWU7IvZ!_ltf>G@!+B`Vq5P?z!vYf%pVP2;1>`YGAVwMi;*V%i9(zPZbot%jsF!I zR)Nphwwn?iDMQ{7s_U+TFKt3*SwXE&0>z+8W1Ab z?kEOBFgW*=oohO9;em@lqnd1JKPrjzyHqLG2%Iw6PF^GDyp363lXp3x1eUzw zkgb+hoG|K8@$?ZBO?|I`Fk-SlqwyboS=O%-H1M=;uQylRJ>UYKXMYzxqQ=ICkz+p4iSgOJfz~$Jf%?}E`p{e~`c&)eS z5_!YbdnB7&?KAB?^pb5wg)i5-jk#B5!EH*yjS}{D^e>>Ddlh?F*7$01vLZ@}hj)dUQ0#T1j(LC|z&ipJ3MF^(iCW&%sN)j6I_}Z|x$}g8+p9=TanHuMiiDkvGx9$PKfW zM@2zP0h&`wExM1)NfA477hTfSJ#pSo!BXYl5L19lqi;m^9uf(W=T1BRo!F>c@ z(8=9WU!tr-I^h%^VD(L%{Wv+DV9zGKMg3FMAqAMr{c=QMWp~6}QUfn+z4VvF%)8qT z9??L6e$86y$Z%&!ejL9#bYjcji05d?$zwJ#;&Z^5n?-aY7@rYz`p+sbK zG#`eZ)D7L0G0o-jPEH!b!um7c{n7%1a@MH3>1Vz&mnu$9681uw9bKq^qsC@bbbZbe zo=u$1@K#+qR_*h>DiuZvm&VYkp{0)X*R<|@j;pMNPUn2SXyUU9t7MqGbjs77M};RMZZW4yLv z+aSnWLtS;maNSa|M5sj4Ik{j&kszIeldX~U$eRdA4v@D}38X!N7eGJvIF&LzN-%@C%plrZMY~ zg*&GiLb@&%QqR8Pi)Y%*Q)xO3g2N)b09-apQ>Y13S^kh#6N)z2sO^A5+B;s5BCd%? zcjN(Dq7dT#%e6zjd=yne~{Y-A7;KitGq-<yFOu!g<+nGR19UNFnOfK_RH-_GZ`zdjH69cxh;%J zgZ11)576^|;hPQvB8IX(*e#&RF1vPKIOWI(Bmgj&;iX95N3lTUird;w+zB1yc9s8v(*{?C)+GLw%ohF7(<*u@My%e0Ni^XBDwrFOZA3 zYJ_TTl@eZz~mvBu}6g!DQWzAi4Rb=EESH6Ft6 zW1oLhXOuwq-vxkaX)*(y!h~vwpQnsL;4YG-oZ_YA1cyPyy6OCpHO6mRhU!45ZCh*e zaVBF?!LPrm3k4^SGA9k5&4KfWif6L6si-Q9DIiQi%>4)>T{bWLMdjCI4y$v`^<;Mp z09lX{tI!qZ89L*C!JVla!}rbt&6@YSik%g>C@*WV>B-hwA1c~2YbBe(JY?LaXc!VV z-GZlcN~c3TV%+~z+wrsCiibsIk-2mWU-1*+tvpnhsI~PhgL|U;K;Se>#IytWL*JVy ztf5%KXKPzWjqAd8I5^E7E2zu18d63Ty7+3pgBRV>OPF=Be3I08F@Bc+;XHG~n4!Rp+VmPn*)ao8nnuE?vdKSx2 zofX5!b;iH=f(k;dLo%@((JFlkJw5yx{iHj()_0DDGa_P7Jwzs#S6Hg^Ob` z@^R01bnVG&8WLHg7NBK2E%^aVf(T18r&C~gCyukIE=X~L#;J=*wLViL<%@^hJB@uy zG=-`WF5|Dna6HA7P8^Ir?g&LltWV@^g&ROy$g;r9Ied+>o>6M|Yz6d6;C|N^m}Do2 z2@(iia_%!ATLAHO=gFu@YUSIcVwRn> zR^6Z|G!1$f;g01U?~cfLhnXKGc954sc|XpVv=WFbf{Lerk4Sosg||Vo`pL`0MY7bk#<&>DZfD2MiVVv})j1|biHp-k_(H4U-<2F~tQ$#5*(y~j7L34m?omqSLArTgGO(fs6h6OsC=!7lw>-S7`x2iuxRgp6lwejqR3hiyA3^F5FN1ve*8-CO3yG9cDBzPQ3&FsjKTX zNp6#P)B4^^GXOmK5jzFV@~(HVgRghV?MVf^TCjwYO<_Vw=r0^wE7C#t2sL=U5Lc|7N}rd703bpRIR){y)P$EYX(peEn}B9vvNml|6){3n>$4E-#5O${ zdDL3?t!jcg9!BOB?Y?I zzB(`%YLCvW_cGGpQp^R%O&KyBoD5mMGQxcZ6{2@!G?#|1;I`Ny{9wY5Md~>WJ;UIz z!twtI2Kdol5Ly~^j4QhS`YMMHN_P|Zro((MKaf^b0l(UAmKpd@hNh6Soh3|n;eX&C z*-{0gem1+mT9iW2_g9TMWYLC~?S!B@4_Cmlpa@cuDg;Def7TKN*r0AWB-l!_h_NrG zjh5EZe<}GQf%x0n8ZO*MMPrMTlitv54 z*&;c-uKqtHu9e!0kpMDmY-oP6&{{us@P;!n%O&7cKEARaatD5a_H4T z@F-y{`EfQ)##UO`q>hv7GMLrt#UEd$P24Y+l>XvyfD_1nMeRV;ume$2dhC(hA~TSm$e)bA=DaPO)$Ns z$h%7Hg<$MIU}!!9OOQMCT69v_S6??=6b$@Kc2(02<(ZsCe(XtU-O%FBmjlj%t7C}5 zh4IDq9x1a1tdqtpJ>5C-^tJ-J834Y}=R*$qr;I%#QY@==4kRa^fTMiOy?c7u@e%)A zvfp>KUFWLVqe4$A6mjb-R2MzE)*T_9^(4!vYP9k#uvjM6N<+Gw5+EUGH=}7+5pkQY z8kWSOh--B>>`YOP(5!1g=TbZwAJKo)ohkW+hamIcX4yg@L zQ}N$tpjrM0(8{`iO9OlSG(9p5v*3Y6@e{k9=DNLC+(2ldaj|(xl@0~qJ3Fskex5;Z zOPNz}&UJe6Y(4XMg&jqq+8m+OJTTR+sbmutz{AW?;9}+*Bg|AjVQGqnKKFkS?v0i! zXB@HB(S`}aYJ)p)CRJB*F__v?$)H^nJ9ulM>-U3WKk?)?m(EGiV3sYOtw`!a=cePv z#0m-N{l`WV_Poz~>EH!u$Q;3AO!vTP7kr^!?DW1vlE$>B-4V}MFk7-d>jGM#@UP`I zqp!AA>Xg|gnLC3Tj<3QCt!!W!&U4Zg6Zc~DjToNzOO_(Gm2L|kzm$90ekJpyKmIaGz3t8(o1%XvSC-r^ySB% z%U%rniL+`a8cXe)KyN)#aBosRuR_Dz-yr)VU&2E6i(+po{f-hIZPvV9?&L%A&>w_P z!J&h!KuehwT6BYm*%oIo+d zNw`y&6=UoCs}P1BSwDDAjqj;Lq)o6X2p}92};U9{?O7o14i~ z7=;9fuB$7D1uD5#vP0w(&i6ssrRW<>iLp%W$)xSDv)J4y3v(zah9r@{%9UQpgwdPSSrZX!1$fiJi%0i=}l;@XfQpxv?RP~mZs=l9hL7cK0IAW4z*T#Gqt-6 z*dEdW-74b~>t+9}m}!J9?g^>e$1-bK!EYBRuIHQo@4>+{=u`5=Rqk~hI;-RWY~N?= z;xr}c^iVBt>+S|+O^LD zF|{n-IbU4b8T_C}`G{Xb)))uHcQtDsCFx#V(ff6K17ktX+rXX_mM0P1u(@02+0-io zT&Kysqj0Y;xS;Z{a0qPOivMI13R^q~aWLAb2Af$lW`auA`E;_BZYD6p?pyn$qjlOr z20T1jKn3&sw^WP9O$hnucuNAVOp&V3z(MmCZCj7hKPEwgl+FMn1Yu`T5@B3%w z^j{-jtJRz1m17(2iK3J*NO?#FxW9_H0pHCrMl913T`DHzXaA(rGA2IQpyrZGUITTo z2j|74^{Cd*vUR#?M$|WWH^kvyZcf(rM!_7<4zW)n0Q0~Q$tB%y{ygDzbh93fknUqVX)x1fS@uTiD|4=_QDPSf_^>MGV_CCaLLJIozg&c)@ zlPDvhlS_(#Cg_pngrwS?Np^ReBJSdxxXH2vGIK$xAlxgRjMAxhp9{BLm0PFvd7jI~ zk{DIq&6P)ro0_=vqGE&&BY15+tziR+l6C&eebUYA2cF#-k+Mg}+`hu^x%+O`T@?Tc zt>s=pfGRPxWzp5alB?ytpq8Ad ztX(51tiQ4yE5)73K8b0Ck1#x19xg_TMy^E>Jev*7$tQ+P%vt5gHF8q7S!7XY{VGZ1 zgzP@X`aX`I0unvS76CVJ_h%o4B^Mz-m__{LsWEib+=rpq`eBe8 zwep2*=j6-@u2!WE0VT^7iM$g&rA3B=YrOmAvt46kbir#k2dMA&ptEmXqs>HRXO|z4N z$e3k$BsoEs zmNy+{GPaKttAz$^1%shjIxPe ztK^MyAAQ$(*IJI@QFS;7=gF{MyUdO^NZbE;*4#G9a~=G@T#DwV_&N zrLGpm&7i(*SGy~byWwd;tLgE;CwLrfyEeRiK&ht_iv>M@FtoRULR$X(JHgfDuk<~} zo)%QC>XSH%5@ahuBVely({z;`UyHHdx_LGSm zUjWi4qdd{oB}{J58YwzbRx@+Aonz#qHjKLJ`OiuuzhsGu6Y&nEo)q0JUR2q!%a2PY zdW?j^h?;w7dI$iSa z3j6KM~y=`Mr#5CO*^>Kpg&x)G6!(&`}K8h+8;j1a`>IL%o^7*1?e>jFNb}u zev@4VqLm?huTwW-ACqAFyAeb$KIQ(;k=fkpi6uZ!Uq`|IDV6)VV=;pFf}lg>qONO6 zy=rA={b(ix9*^m1ypHfyL#;en5d3s5GjL0-{MZ+?fN0V()M*RaZE4D2{Zze4>Lq-Q z5y^B3b{oEQq9B&KAGH%@>ZRK-Nr*5R^MVuX}pcI)$Kf`q40pBzjAM7DHl8)Y^Z zI7L4H-a0Ff9hRTE2w7++H~Eajk1@`vvd8ECP(wgN*sF_=joTOv28f05-pJ4M6VH{F zXwL=>;FuyvBC!XClm79a^<)u^M_FU(tCYfvHTEXV;uITU4aJsj7z=)^80Xf|1Oz7RyS)mqvCn;n@6FiggND*QhbVqRP8-D z4KJ#{6MT1P4+LpzPv$b`>LtN&F+S(T3;|otI9GcBNhpPwhpIpCfG`ZpF#W<%)@xCc z^Rf>q-7hURVgH?JmZ#Hx*@sqN4eA$hSH`;>OE|x0);}z1cE~+tgg)mgiP^EOPYKyt zLWubNXJv2@pR`veF76PQ#be}DNBr?=A|gYDTj|XSm1n;^C_x^}WU?8q>p6<4C?X%_ zfr|!!M#c)=_r6VPZ-Pt^kjnUl{X?F>Y0|@Fc#1>YXQI;3PVspbjk&H=D_Hl<>Gv`Y zJq<;FlfRV5I?#&rNTXZlkYfmKb@TdIT>MWtS=pWweOS|C_*&{*$<47d>-u-?CW^3N z<=>{$vwI8?iVN96+}brEs0MP@8l1lP3umb(fZA_6jP_BpE<~F`9{*b&nT^E6U4W?> z*G0>XPI|3{sXHFVDbd^Lo;8Y2V)7k!L&v`PCFm{F`je)h)g8Wjy{4ReE~#3X;U=w0 z;%n4%c`VL4xI((B!*tjd)j@Vjx6&`zwoW1AXwHTvtS#o9^T3meLVBjid4aCTu5>ce z93u83ne>08#g$caY$1=kwjLrwPu{rAn;v}kvdF%U(rVNE1r%u6`>28?MC*aRTMNp# zbnMj6DO6LROxe1eVJU<$n&lqT5)FUeg90^anNgTM6UAzm!L)}kC!ore1Fw^iWh>Yj zJh99MIa9gNC1tV1?Ne}RS@F5yH1>>@zDiAY$sMx+xCkY_1#8}`g)G!d)2+CGW)U(( z3%5k2+rDDWXDbK)39lzE0dA~}WlI8Gu{#h3I0LYMvj>^uROCqD6YW%$^n7BEYeubFy*i7v zUdy!nHX2p<2eY-GU;|9bRJ(o!Ixl=tu|M&ln)m%JIy-cbGp6QhQ~9naEmy1KJikr) z1!2+w0xDu#Zyctj<_^)QkM@i!Gl$-%e*<*AwPoGvJ~0v(?WV~kicaq&rWed_{4614 zp{xs>+K|2bpA|**RR$8y2~SW4d^p5K-``OeEQ;<9IFS`=@nb=?mCkf3_(RmYuq!pK zfkd_4en?^$1>fm$Q9MoaEgU0AU4ocIV6J?g?)Flty)~!|cA=pLzq+`F3s@(?bMSBB zre@hj65Uhb*FFIvOxz~5jCDGFHwn+VUF;P*wrHzJ993ll+{}o=KXD&tmUP5ak8k9k z2AlrCmgGP8-stL{+wqRKtWpZ%Mzny;14K>`i@L~WZJVgN)3=r7jkeyzEE?J*#ELh= zi3)%?TYOzgUPk7PA4QuC_{HuP*(z1A2^3*!_%YF6Ihm%T)w2vvY1*ebP%$<%7(Ri! zp9v$dTH+QsKdA6^zeRO&BoqPl4t_f?z;$nq zKkn21UP)A(uQApsz(CymB|TQkiv0~~5WwX9Bn%`F-e2JHGSW^*pKCRY|D7!I83P_J z9gU#K@LVI}7QTD~fW{Qyy^Bm@W$oF-*En50&ftRfs4Dt+L=vp`j`AF~{TdVI$v#WG zwmB%ebh2@&`r;sKzz8Qpba6%J;w6WJw&t#Hy!%K8FxGDPR)Vxn9uvl4DfFOw|0dch#F@>|^ZisStqbcqHVMTk=E z-Sp&s{pEYbq)wwE0og%o5WPi8zlVDhKD*i9(5AEhKpbVa_ImHHJOU$vupz=(N#fGk zRlEBiDi&*niu|@Z_$eWFyC1PxT%}4{z^jvx^j@h}ZLYl;^_z}~D$}OdGK7OUvvd;jL=6 zoSUB6tyzLo+HAm7T3Z00!2!>qYG)yf7c=BWaNEb5TOR8Il-mbAS9zi_bSBBs{_4LdIU(oeRfaX43Nfnh;pHbLhZ44yM1h0DgmM!HXhk0-0~Z_# zv32BbAH3Y6cDpYWU{&*Rjt*MGfMRi}Mx(Ru_@Z8jtbEzzq>=UHidKdLdI()mXS+~_ zPEb#1Y5RoGhR(vzbGxh{cTa5+dn4iSYtpBrWu>bj!X@jKS;Jg^?TEj|(R(CS7zNdV zL=xoP6E{=eI9=jgzhxNqIuzm!8AxLNQ$nCgmPOVIz@_^TsCn9uR7sM=M=3=wW3KBj zWC`A{wlytZVpR*p_h_X?;zEyKCPto)tjCChLU~>G#Wchh8pHlI_Ex*7Rr7GX;6%|s z;t^2U7EvmW@*7Kgy#AkIuv_0T9h@EzW2}Y7SL5i0#zUJ$P#m0<9UM7`v^6O}v@wbE zRzc08!dj2tV<_={wmC>~#-tnY2K7_=KeV`ONIDGxvs7}8;9^eooF{P7C;pYZ=ww?r zvj6WbUnzQkE!``doFKO1W!H%r0KCm@APQh^5VuR(mDMYP@6_@SgCcbhyejnt$82sV zrG)np2UHTI)>JJ!k*wHj9F=kI|M~TMzxA1+=)Ni2UU}Nidf4X7#0bM z9032KQ%2Ua&AXF~ISwLSp_iR|%Td&H())VX}U2KvSg`LS#MpFLeA~vA+p!WoL6>ly;9r@t_(SR}IO{ zD_O8bVk06P@g4ih)_%4GH*i&`7Ue*YD*QW;{K~xmRb|b`zZh}9Fy9hr?CnF?nHhgA zsW{))69yeAV}+@n^L|ZPaT`#K^7&BtraV=|g9|umt$Tuj#_agliQ5D~5s?zn=G~%HB13wzQAx zD;5bG)pKVk0Vo6g zU9YO{Ly{M4D#U#(d`)v0PR_dzpmRn*Fr7K0p*oC*AjEhuoA{L>v7Z|DC}NRydkYxF z{JE?(^1>#w@?}hs1Q9?~fcU=YeP=zG;ldvg@3#ErY=Nsxdb_5vf6Q#-Jvh(=5aNFc z$$$FX96ZS7wI%c-b{P~f>`pgB!k2HD-~3amoABfX#V})a&WJE5?wC8x=d_cGn`FTttv9)-yVt&(0hNt-bf}3+HT~LKz1`iJpsjr z%y2q4EtA>jU=G3s#4cegl9VZp4Z{<(PyUEiE)+_N%-)=;0Zg&eH=1(L>1rQQ0?>l= zWs1;iY=C2euD!Rt^^@tOA?jOvmak3p(C;LwfgJPs@`0@e-?Ywrm|7$KBpy2_9jlxGH#8e}Pp+9a5+ z)y@&h;%mCR;yU1t*NA?Fs@`bL_3{iz2mp=`O0Qt-hi4Y`vQSK9(UsvCVZYPimnzW% z!*sG(SGw0e0X<`WCTOhD$W{^@wC|?uM=QoUC_<_4O|1W4^?S{lwu8nQJ%7=54#G z-I|m92c{!yu&FuA4&e6YcdKoc3`+QFzsWNW8042frstZVkEz z%F5EYR#!GSMz2K{l?>K43qu;Oz?y<6pFcn|QPOItSe=4f*?>Sd0>P#NWc3zitNNSz zj^JF9CY%XFgRH&FgtOU(!9N@-{;Wk1VOX#KSkW#;pw6#XjJAto$IzG`` z8df-Y;Ea2WuPBNsCxn@J9!c-kIpbUcjB%K(2>B8h90@E;9`}Aw`Alt9SF=n3NeWn0 z?7Mp-99cZ+!A2{5qv%jcjE>Bt<}siV@fN{8#u;02SaaPcx-}g+MoL2|NaOXkeKbM# zJ7l7SH2x03!$>v8DpA3qir8aDImoSaflajyZ-BV;b@+F ztqr}cQP<&%0|F6@ODpt!d|=vF(#2UnQgXcczp&8DrmM>EaY0Jr{ws zqpYIgHuF|`9tv?y*M-=wuMgk`1j-C!eCx74o z0FY?`p6f(Ujn+V8?gX+Rdza4;sl$20MT7E386Lu=)|A==#?dOD^Cu*{f^c6e!kz^d z9hTF%I6+_Okh|Ena|(X*JcOqI0k^RV&vpumt-{rj(vv0l_LxkzZ>G{H>>@sI!WnqB zW?@nWG#C5u@It;6#A+}z?sgYN8QFuC;Ur8n7qg*}8g9Idt~dmwNyzmUl#hUPP8U*+ z1Lp?7eQg$mGXyg;J7ukBZSX~wtrZANehrS^5uq+zo(pT+UO2}~69$>4A&2cArh;G7 z#CRFY{p4N0G~I^&o0=7ZJ?HX?(6AM&$p z)Qs``K-PpZd0@nDf!Di_TH=`R#~lQ}O?~l+F65s5-A{wydSt=dGVAe%0okdlh6Y~Y zlsKUVRRu2SMa6!kF2$L0YH86F(#!GA8*zmQ9M3)S05j_>y@FUVVGTBoxV`1yh>_ByCX+6Ui?+BZOp3{j zE6G0dJzl7xd9e027G5A0v$HnJD%pyQD-qRe?$wBvDR<=C2$J=KG?j2`)%FVEc#ND9 zehfvvRB*!V>xP^wen&jG{H3bkqaX;EvZ_tYlS`Hae9$h^L33hJO@~FaB4Pu`UkvW$ z)&1(8Ujkf7`pn%uKyb<>*r64=ri8hLYaE5^mXe|>`e<2H8mQ!PP784(;6fv z&k(4wgY^Ru8rq1)V9{N80V9U4lJ%@m7MZ(A->H~oDd6v&@30HCjvUT+1IYh!!Q~wsk&s<_@2uk824MrKAHI}f*y4@-4;f-p$ zF|*hVZr<5aPY71)0<% z;rTby%x)a~4(o*z@o|r%b~DfFY*=y2i3z@xgmo4nc?Fy~RJGB6o@E{uEr~(wB4zGC zlv+gEO!Xq?(%8|}<}S)CPw!mTW@cAOwN&W>Ffx#SbDxd4sEhLvR&lzH?CzUYuCr;M z{FjK+X`$^G*-=u!zl7!Pf`Wf3mePOnF=wk2@=e&1$2a1YY4$NiB^pTO-%Wa{DsCc_v!@>Z@d zQJKq0f>iZmAHlHMi7mLGdG7z5LJ;zx3V~`a$i;6bG+bpWL@GNk?i4fDl)L$u1bpNB z0qh@yfG*aR6-s#|g^E53ke0K>je={`=pa7pX$Q?J3w~)|$_a&vRAex#i>!{b8e$vw zB}{h{#iD1I>ELFLkeNSx39n3_#9&@^$tV|NmB1UzJD!k`LNG7|xRY#Iq^L#NTPzn< zkBcmt@x6)_uw9<2mygMKrTCby6YB_u+(L~*y9$2&j3FSjHp{G?>CM9m`*^m4y%@KQ zdeC_E5Wk_C5z7De#8k#FvvyPU-NAm1!i3bk)sJx*v8x`vd+hTSx#+fv;b3ii5uolp^Hx@muuED`a0 zkFLK`@%Bj3vopn&{e<#5@kxD#k+m$-EmapxhfZtv(Vi^bfFpno65V6b34?LmI&_c0 z8LA$y+aj5Ta^%NM?nmev#)j#7?-|Z=f>0)r zf>Xq!(+G{twQN(=XTAyC2T)J%j1kU&w>in8m5pi1=y|6EjSqQ;Kygk*vB|_%0fqsp zSu0DiQy?*`vjK4Z5J4oRl`a*?IrexO`EDxP1M;*wJ72ntM_g?Upa%sL%Nhq?)3DGo zCI)ZJu9r$i8%m*vCIU;+)1|R_|&0CYp*Xn zL%)!orPnwT5_wuzU7- zu@2N88Mc+ZTp{*DXEB(&zA(zrUR2zvE zel4H7hKRlm>tP>Fmx2YQA}fbe^iykX3sPjVy_YD7$p>g1<>|*xVBHPGy@*qF_Cn-K z%5|7F(G0~keM{AF*qsn&IKHV6$yVg&wm=jS{fZE(Km`Gop9BPtv0>RLvXsX$VZ!Ef~9{ z&}07-+2f01oeZtxXj!eKW!nhCV_M%brcZ|Vp!B|$pNEHZsCZUY9jdQi0WYFvv zZlj!A(qTckqosUKyy87p9mo^FBYehJ!sk{1MrbH*k&2L7`m}+YyvvX!J?bFx-i9@< zDC_tu$CldoC!?GIT7w2&gp|>Z2z%imCk$^6rN*Pt_;s`8k#FU)HbUgHNHuM0pfBLvs`8p-VXmH!T zCFH~@lORV(9CyXS3zTmHms`y36kHMH4`n>ib6ZMxs|C-blN!k zTz4ygp33|XfBVCVo7J{q(+z(F)q9Tu%G$G4>Cd3zGN1*y_yYl=gmuLzVYw{h(8Y9+ z#h^q~^6_dP3xJQQ1BQ}uS(+SJIw-&--?B-z46}7GmpwIV>ENF2qQUah!zk~SC3Nsv zv5)*dxw%O~kSO9(o!is&s^&woR_A>t8!&CL?eB|c&|Qbwm6#Q+U&+)GG>*0#UiEg# zVyXJ(5l*Ko4AE%{Q`;}oLQ}Nni*bwC++6m84rt-{4&wAT}>ZfRR7FN_C-o?Jf zu1hjrtdR=rT-}oS?^T%pYP`1Yxv}$M`Y<@kGKt!5*6S`t3n~Pa={%y7Y*wt3P3UUDY@^_&jnnUv_q$V z{*P-teLIw}C}hOO76_d#*N;l76~Cj!#P%qvoYT`APnvwRrKJn_se5vSanVf$_x(J{ zi)31wUZ;oA>)^JuCFR#^q`!W`O@2!flN|I^!<_SE>4r~Yu@{H@m1kN(4v6%yMynDK z0<<}m)i-t%BteQG)FshIj5wHk{7%T@V_xX~n?431`(G349)DBES1Q6xB4sZRa`RKy z6D?p-@*^=hCfvwRB-Q^x^=1a5lSXCSGlc7#a}Yu;E$+#D%r{JeJb5ud8U3h+Ocv&l zQ;WGn5sDEup%o{G|DML6HcBz{YFj5YQ=nATPF0T1+YagMMsZ7L-+6o9LY)h!RPl`x zNSccW^Fj{r_*-_R{vJI;r~#br(0ECV_2D>9{=HfN1M8V^4}7~KX|aIZ)Q=)(q0%R+ zHfHnMQkV-RSrOjS@?fXqg3>Hkh7qTNv*S*6EyL1rZ2l(Xs8HZu&Q7SHQS2ftsu|Dl zTR2mx8<#2yX?MTZ89|r={PU@hZ%uOmp7z-W(xV=HXEG|EIsaHU0Q5)8xs8^O_mehEHN4$W=IiH$}E$1 z!n_4XDq%nZ&8JZwi_35v9KAk=!a%X=2srLp;Ufq3516%@(z%x_rxqAw0|H_kX{00f zpRM8+M&!-z*Akua`m+qDq7R6t6mO(QqLbe=tpV?&PYH9weT20j*7yc!c`7~&qTfz~ zm#$q78g1(k!3sA~_j;Y`FCj^fOH!#H?yLx##etJ=zp~nO5o6i45YkTxa`rl{uN}eV zU%!RZmbae3YEb-gvr1XoLO63lZomob{+SqaaA75IFvhq^6aPCi^{hsSJG3R=ox`qxx!cIOs`%<%IHEHfbvP#rTtddq+IfFA6OZLbT2$iBtKiR z70Yg5Z~a6!X7E1pfzawjuS5UTPb7M=ldk|*@hlfOdWVnIC0;VE&r2f zyca;$${Aqi-=0;M^}6rCXn6`GC>d+?Oj;DUAhl0o(rN1?=YkVTqn?aDdmja-HvhcR zN95XzD1uQL4-2^;E5!{l4{ZmInj?iq&%NeABbPo?#tuZ9U6-q1)}a+pnCLPu?DFrQ zGT+eZ#$)tqm#@$}v!*#jm8n@^iZ{82dT1evMF0O|BNefCOSB-xW6qSx!Xc3QZT^o( zP6xrsRHy*0P=e4=Ua5C0C=}*Doicm#Jn{Xg09j4s$6ys{?~qapR<*vCI`S*c!UZ@J zg|>lBg9D95jW&lciEZ(`mO7u(rS3kqBZn$(KwRi` zodXPtFO!^ulsVhY+?TWQ7_+p4dhlUp@52MBXV*RE21b9sC!m$tNSo7@=7@!T&FEmI zwpisb8fmNA#R>8P@6l9!Z`-<0vQ7OO2)~M* zB4Th}MC3i%481?;`h;6dld^3m`ww({n^58350ro!GORL~c_Y&KrJf9pHzuXI;f9_B6R-G1ik)L8P(yo@DI*Bt4 z6ef*7=-2eUlFC8fkY1@@XKxKPwa_L!vHGh(i((LGylj>Xwv33{3vLs8@->S-z+_yk z@o1z^jlUrK-W9~3i|q?=mfz( zqYgkCN)y%W>93snZm`m;3s;>n8Clt7MaatG6ec4Qn(g(!S`Z@FKYhZQ$N|3^pmRF)ixAwU*@)93&=iSWhHZ#5?ohH4e3} zGy&G^>EqOcd}|rbqVCpba7r6z5(E+UC)ywNOMHR(uXXT(sEV%EY{0*MrnhN#h6prf zpV(}=G$!rhaw_W31_O#@G|0XDBH8&+_n(c=qp*muz}WIk@2ByuW;4Er!r;#4ua!ES zQ-a8po7Hp?yeF9oqP{5U5Y=-5B#CX2MD1 z_VNuq>lGq`4>kO)KP_%3yMQU_ve`ACD$8KVFam1+A$+BDt_fG) z0)oUL;}SSgjnP%yEO}k0(5Yp77ce4=`K#GrOFkSdF!q}Vs!i{RYd;1{{>l36qKu}> z2KVrN_PYm_dH3wz+wbDRp4CyWQgGnKx%9%OAzx!vMQ|bFph+$oLCFRYoQ6a(LhW6> zu?&SQ5o&xuC~FA$T%! zc`PCEc|DxA8K>)4wrLym2M6*vJSJG}7#LaF zY>~XALXcY;B^Rid4dRQg)a=98UxUb=;?rPC`fD?5(+#!2L4(s8*a>z!@)#>a(R$X8GbX z!r$u3oI5k}LkYE|XoIh}u=|ots;8G)JOFY8O;;+8CM=LH+>#oa-|FT`;U(otR9uQhJLPx}t*b+F^BL5PjqWfQ{NSIMFkbi*Ou_2iVQKm^uLW|g z_}oIQJd3cumjitWVqxzhA9NU|)f>v$k$9N9Oz}ie^(jHnD2C>NEU`XlFg7OKni>NXWu?WXKn<@Mjh07gk^?Ti#9zk zXZHG33TcNPLtR5zkg6y=)NUxt1KHhe3x<9&1qO=s_1PvID1ndF81%Zeg2Np_x!;Qe z_mLJC#o-o-3!@Dl&DvvyWVYfejp%}VOCsDH-33J5iK0Ogs zFwssLxElJ?F&VAYaj9M;BeiB&x62IS)DiffQUm*9i~j$MMj>s_Ol#fm2tSPi8OZa^ zVVWR5k7%emaU4H~Ta@VngwM-|HE7wm)kf*>bj!2wG~ zmm6X*IN9@DkoH#aaI`@5V{aFze7Dqf+c{6 zc)akHAd4e!(~z1R4L;Ug5fq(BqZrUBH_%h|qy!T?i7owc_PZRotbzkmI&15Sf2f88 ziSE6A8>(MT{4d>(eis~DBE9E0_@BGm5$0mrUq;b|<0||!@j(Nvh&JemFzl0;9WM`( z)+PmwYM+u-f_V(fLuFUFMaQg;3D>I!g*?gWqtj*|!Y2oekqiVzLvL^2J69GLF;>F$ z=RySDn~lb<%DD8dYIeR9O2KzjT3-#|)H1NRW~M@M?06gwVWoIVqb_)%?Pj`xXXtJ2 za<#Ht9VLvI7t1F*DOK6vm2ePkcrG@DuHhy+kiKE`;dw)w__lZ9kRtVF6)TObd!j&L zOd4Pt?$r{*k4ViGLbhyK#^6 z8g}+F^-pZ|SFu9@0XL)~a$UR~rJ++o`cmF-K*U8>4J3IkI;L+`Z5J|KzyM10)znrg z1|q8jldAa+nnHNwu9SUb?!&t&m|9*kdZEL%=>|Mf&htsjP~S@gHmcPUW6{i$m*yV3 zd50{3$WFV@j)03zNUE@N`)m`pA+RReNC;l&+#w53&BYhbHhpQa+j{J^^#Y*P|Xm8Qf3vgOJJy#2_n6L#*x-$2rsbC*F6cVxWD)t&K|)^&>yLLVw_b7))kE! z9eI(<0x02Y%O)`3=Jkt<^yjvSgJ?-<^;#&t@J=t&ao<6n*QhZUZ{!&#h)V73oE5LZ zHdE3G2=FT|_{Xxscwj)eC6rrK8f_y<(^HHr{?-#zke)VxhI_wZfGUAd;~Qhu9&|#- z^idqiPa^jT08Y#>u_3uQiW8Qog{LY7Ygpb)LzH>)M4te(bK?{-B(_B0FPL z2)m(8sVQ@t()P`+>yg?D8m+RM1bV_pq^-^p8xSk)BCfYzW?-!rKxp_&zN}f@4eA@D zI(|U;apQsy4F=3$8p^phT5|r{GyJ7zOu6c577^TnXH`JQlHT#P0x|zmP7Mc=3l`gr zj#Z3jE%Uv?lK(mHhUBXWUaX`g^W55)f-?guiq#hhgSnrykL;b(9}~2omb@M<4wz7c zduuhKK3NK=3u<#6%dO}%J80uZRo$z|ymoIitp42s+UPcDQxit}UX7ZWayMC=kV-)lwWQVjrU?~-+!t+CLC2~H}^pIS~SJs)J9M%sgF_Uw)eBfi{ko7(DilE3;+Gq_DAUAe&czYlcuKuK28*$si z_x~5}EiWS28I8>vj50f#0Z7bFF}w@Zgqditf(de5jmfQ#pSBbXQ{bD7w+!W;UucD) z?64L87qr{YynxTDnOaQ#T_*dk1J4QG(hLluxAoZ)EhAaw1?PgUV>64lA?rtI6pQPa z7ApPYRx3^-b69+cD55Fr|Fko!g^`;EoY4_XG3dPJd6I44FD8FxC|RK6u@%}AST^5) z+{eXY-p+0y3BXS9JGOBhR4MtUdc^w2S1BD zn%l+w$e%pyy@m_o6fbLqnI#SZ!!S*}S2j+2nFA_^vxm2d>H38!cW_RUf=xmx&PjAS z{^4_EUc7zLCZt0ao{lTt?VaR+O=V-a}iYE*sLei zE!p$-i}5h&Z)a(`td2Vufp`8s&oApW$U9A)rNdLKO!%N_yq@`0SAYxQ_2{XNRoUR~ zzT`nnjz?8b8zY0`WN*ZQ0dAk3URAq_h^WwHE$;I#tlH!Avlfi&6gLJ+MCzTRri;^r zF!n*ONq$eLO9Cfw+#?f+1^c@gE~aHoU~}8%w2AJHkwyKrP3`!6X4yPODTZ0r?UPB& zfHy1l3k2g`6?8~$X?#V0=o^(9ht-&%^m+a^+tO39wuVI0CGW6ZMey~(?ryg-iI5i( zWAY$nJiAd4hTv$4aEEH;^CD056kcErEacCMV*EVjl}qBrif60An?Y(8j{DX!go#x< z_P@lQQ%1k>R$ECNK@B>slPzx7utcoYQ@Q1Uh4TgMdf03yE+?x*#>^Z9n~0S`kqff% zpOI6Tll;S?Bcgb@H~#CRo9;cLUnb3ngVlU2|YAoIpB|7M6O@JQ|gYz5G5GK z6)G~uge)l+aXofO>1ZEB*}uJ%YAY=5Hpr?46`@hRC_zfz)5%?7gohCzvMYN^E!UTq z^${n@kuq6Vkl^W#%Y}G^#Ckwai&&C+U~OM?{J-)0HTO{rR2p>Z>-+>r8{^`{VqK82 zM%20aI~7VCP@kQ-%a$C4=0{>_{`RZ0Sii1Dr*s8t0%e7U5cgd}k?YHskkhO+F%v-ylO@&9p&IkvJP zuX@A(>`IlvuIPL}ONA^9)NI5Ja?A%Nb^X%lr?V?LU0vSOQOq%?_ITnV8Xyq+6V)3y zv3#pF7e?0Kd2P9kBNFw*?N7mfae^gqUgrP*Ja7V`ywKww;W%%1%bH>&ZBLHE z>llq;ywC+(3;S21OhK;g34A`~2woqA%*1|Wk#etb&Tz(J^(MeyjF_I*eMS+UN+=SX zn;20~?DW7n8!|$ax_7H}?eM>u2qR1!UrCR%2*aW`$gk7Um~2+zkGfTa0VYEuC_^j!R z?WOHhIK1plb>tC5Id0b82VT0o&cvTFE~0p9q&do&U*|83M-8xnbta%(;(3u`jM+KF z3x7G>YVud5SK}ZaQDvikbWNLNW()qsi<BiwC9sc&Pz!-;|{gL$;#XO;oO*uVM^_a(Ei-&x9ZuA>aSzCuKXFZ#4WK{ z-V>3yM#I-$Z8%MInx908X}!uYova^9 z-Y7=P>`mBNyC{F7(bV=Zv?TR!^TSXoMW>!4hqUX<1CPhe5Iq7q$sx@gsux?ldG{nb zJ>lJzBbD(w4{T-Q>R5r98L&`kh+EV_2-OnCNOEcg_$1!uom+M~E%p>VMR^i6&P%F< zjL#~qcPufiTKLVmIv?$6V4i1ly_Am8jax9FB$a}BSOa>>#{?7 zhJ`u!b@fmMIl)kyw(4rZk<;B08*W;aAnxOuU`#}S#Y<a=XG@{{wlSZ;&2D@5*kUysro&GXLTdpzbrXjt)89@G4*GG@4!8ERn`|W-nlGfc#(zW`rPL)^csWwCBL^BUE;| zwvC_BG}sBDCxY<4jr~}h^Y3M{70+A7mJ<=#*IVaKUVYSiL@vOlS&*(TNR}G`U zjHg=;7^Q8;yf-uP){{Viup^dAf~B1~ofrt6b>Rd>4z`5ot9A5m9752~W8m;&=d>vuc`DIr3dxz96>&*vzDy9z0o~**t-MCD zLDu5d*GxLl%<+t0e3n`G@o#pb-U;{EUwLoR!_*~vYDvIH!AxY5yO=}yH_isf^UNR@ zjRew>Ec0ErywV8Z4z^1E@KtKw%Rf$jsGh}0ULe%Mm$N;lD1Tqgll&YF-1m|o(S2GlhbFNQ-I$m7X z@R*El(h4%O$`AaC)N3>>l{$Z3-TUplJ*vV%laYg}iu60wVel^wD3;40yI7Iop7rhc zMsMbLrI{@#S?6M`4;=-6TSpTjHP)ZgH(6Bmt}B28@G(E_8sa(v{}H zKPhQmQ)Xc(d$A!IkPw$|^NvuiCM?*5_eh-FFSq2Fv09@xKv0lU8)W2UdHKz)mpuiv z;7DyI`E=S?U(W{Y?Ad$(?d?x7qwCJwqj@(?QYW_7d|A?1xUOQKRBOlHLT>I+?!Ar6 z#xx&ubJM#i5M|{@N&7M<+}4_sh#_RG^nk32tBirmD4m-+SE{MZhiK|2|D749-HnPA z&#D~!$UI<&9OqPA34@C0DB|X}M$0nWz$m5j=nZpeLo=+)u98HmYb2zhqVBTis(#;8 z*ytVh5;FTt<3=^Y^LNAS0&@9aIgTy$1-WIb?t;t$nyqFm&ftu;E5OJwL!vqeg7>Sf zNz|oK)-LN9w*an4N)(gbsT8K=m08@|x;&!hZI{KQSxd<#fTmCla5K8a6*HDM$GxYO zPyuE+pIdAVWh1ar{k`B_vqFDJ9{+iyW4wW6M`utoYG!`YxM=q+RyWW)B@1%#M9YX_fKzl{pb=5!+2p(B4>&_S7hbdcD^e z2v1yfdUvuL|DCg*`2m`oxC1zEmS-YkG10&-gS|S?-5R8C$T~#kE0UN@WJ{ycQl@YD zD_wL#|D0F7v8-CuHVyz27cxlhPi58kBEE3qApKRRV zU7hQfD<#5gv#mjGwnz^)RjHv2ui+q5e zHjl5PulmO+IELhT4MxT?`m6sa{gy=;S`}~G!yLR5>!2=2wcU8R>`n-v`yDX*459_w zW?HPwt81!U8Y{%x-4wP!%mrkuF;y$sA+RCmYM)m@J9c^WDp2vazdWF!*U19>8P?-5 z4nc zvl`{kwc2F(v*WWQDK4fnU&8P(MWYZ|`v_<<_|3xFY#p@$G9&h#e}bI2IoSC)R*h;D z&Hmg@`wLNC;~NcW_ji(d^H$4Leena=ot3SCJCHnRW2in>K0A79Z0+O@8HXR$3d3XR zEJcK1Bwlf-w!hpr)t?(Vd;VR{CLt03dtK8!+XE1^=if-TPV)Iq_4DHp^-`B)0qh2z zSNX&~wuBR0ESZFGE<2rwBgH9`UU#;6E=8N+*Q4tqn~(dR zgsi()XzO6H@YyY6Hl53Ho25(1|m)@HYHLG*aM&SC8Qo^c_#zzjN?Bz zgrO3|diD{P&i13LCm9UlV3?lcQ}yDMrisXrvXSoTC{_*dD1fm^ww)>{rAtBX9Pff zJ@P{E+}cAxe!YvCe)NL-7K_D(p+(b1TDYc|z-jByXF*VxdCE|;22`M2Hfdu=U6N?0 zKN`jnk7v)FNg1Y$aK`cKsg`rO+Y#(@;aRNi8CL`>gE9 z2gy-{R9zd!b+UK$_=;GHZ|hGSvPT-y?xO>UykY~@@?)T3{aIEoXJ2CTa0&nCAdAz0 zNrk>@?^u0v=hYcr%t>-^%HJW}O9xM=CV_%RCbQRC`1vUj@83{4n} zVtP<3Khaeo5WfG!(c? zg=qn+31kO!6aUZRuhLj6t;JM)!h6z3X4t;9K|N*7J1z$(GsSV-*;dg>au=U2hl_}| zPO+#aHS|ae&{Bw>Q-O>vbPqTx_a8VP?c-0g3L`WIgsFskuBh_ssl*7u_W_+#BW3K# zl3;wR*8=K|cdi#9&C2~v;hS4+nh-1>@S<);LYisN>x^mJ3TwMd6lS<&%hwgT@Cj?R z9m=5Z{dG`I%G#$=HZyN9=HjS9%lj!JaUYJi9!CU`_n`9^xtyi(*3fvhho-)ON&D2W z^gns<$0}D&9wq(1*o=R#6tSJC(cT7&gymPKFaYv)qvfJf84w;M2`?^_0|3M#X=avK zQoxLEQRB=)@20E=rqvl&msM(`H7^iEF{3Y74HBe~k_UXnW8WW{rAdL^CSR-=rn<4d z>svRPsQlalxsO0UDBw(WXRL_}A_aI0C#1tXDr|^N?*!Vx9b}{S(=-|v&)%2vvGZeB z_b6ZLH{5JD21~ zcZCDY?i6}|CJXvp#Y;c*FMH1jW%^)(?o|c*d<9p$txS_B3gZv}Jx`EoE~qIHq4#F5 z?Hz;P()Qovl&?jX+~z@lF2A#`vF3T(>pr2jYt*n~E6$sQsb0P5y8+eZ@m;cO&YZCG zh&yUUs=XhSkj|UhsGcb4N`SyIYw=Key>F+`wa@SY*yBZ6>ME_@s7GTfRWP*O@_3We z4RsPL?w-m2D)FjL(xcGYfQ<2e#$9+_+|l_`m41QLlgVd(naW0L$uoUa`QD1h?AnH#zv%>D z7oeZqwcgOwTIi-db3Hk5x7|eFW>S8fRiUp zuPc%X7K@7HhtAV+s9)tuf<1omV`B;lSuis@`+3pFO4*4dv1lN?@s2oZa8dJ2D@3Rb z+NboUF{TdnmUZWkp^Ji;ZK0V&GmLcLoqzCWpgvKi<098Rfh$2D5kLQ4jHTKby{))` z38%xt5sSjKUHv=9VwP_19L$cE2lY7ToNLkvDBN*qaw3)MY4;ErO?e9GLsY;a+NhgA ziS?~q90&h068M^c@-(xMz>XH1!e8@+OrU4}Q(t8FZJX0jqi6;VW!R8d{-soRQ4OX& zhikM}G1uCcx@X?*N)1q}M9%b|5Ya26<{<};G~^KA4`X4_=x29NdzG&&pIyuAG?KSy zS)bba5Zd0TudX7*=fRhl_D)oNmKO?mKpsC4SM4?w9R)CR2yj>JU`4#Iw|xI4Wk2KS zIpfuPB$xi~BFBa5?+qAOq1OXNA@klJ;%L4|Jyz?I^RktHEWFZRvCp1|46jh#79hB?0fS&Uz#xXh_MNpL~KX@D$y zq&|DX(!Xr+v(;|3DW*7Ulvt{@`MD~vUM$5)kBi699gz6j85fWzeG9>MFJx`-k4XM9 z^x=8!%T%xbWJE5+bZ%o4IxC5ub3*nCe;E+1s>*jO@DwTy{zATi=7X;f)F-q18+`s{ ze0HL=nwoy_IRx!~$*5A&Pm(T08vQf8z@7)kjP*DwmC~PFoI>NECC7b?2j% zDJ`pgRBnd~m0&m=l@5)wZ|@)G)bCVrK*HQ27afT(wqepxVf4|q;dZ)a{>^&;_1VH> zawcoEaYjP+JwN~K)l|U*^KGR%STQR!8!~T8s`})BwO{3QylFuK&2t^knBdTjqgvT0 z!rlKk{xKl87v1{BCAXaSV=VGpmTozuo1?$qa!A~l*>2E53Uf5j+2tK52zk!yOAR0J zj4Yc(Vm;8HWt+GyK-ZBN!1k1(t%<)fVk@!YAp3yK7(dBG^}Tk3*fscDH_B3hqM)B- z%*@IylHE2C~9FQ!KwsIHtmtVwQN81CX?o1-&TeDZ`!j%-_~ z`-V&pt(G;adHm}HbngF8I&N#NDi42kxeInk?5-8)Hs5{ymFV+MA|w#YS9&KPBQau> zErdZlWhktmMdxSnumxqGWwUP4TFX;mGDZ_;B8jJp*s_NzszdwxtJiPHfkNYFke2=T zl>c%tFc4^0rAsVcbd*J*c>t^T-yu`7-%zcAbpu+#xRfgxci`j4oL?DtBFa{-_~ek6 zJpGq9fKLC{7%!BJaGE8!y9aC$-29=v!Bem&a=k`B(})*xV&kJW83hRZ6nczb)hdl+ zV|_}2@8nWi60R5QJlYp#8urV-EA5m45-;om@lnc=c&k|tSxI@3o%*l-xS9kbw=D8};e~Yz+0l`)pykZY7 z;e9gmj8z7OFM?(bEAmRja75WpMI5}+7GaNSz9ND0<>cN3+T*rCu`%H`JRFMP`w|@S z_J{BS6Z$rI?len=7pcTV*4O3<0Q1wPVm?LHt@ccXdF&Ad_Iv8|l%Fo4gSk3O%gBjk zv0;t7AkZ+)Gn^#AzpqGAmeJt!J};FrUl1TkJV+zpYEhz3nmp(MbYsxF-C(&_WKb1=%A?IS$Eza_H-n-2UisxeWH3sZ}x4OH;zXaw5ue8ex%E zuue?lGh=+eoQ#=HenFTmu zCJe}s9;+Elc7^UR2g-OEz<$Q(j5D0O$Sd|rX_;pkYobJ}g0wMN1AW5r-PS2Vl_qN{ z45^AJ9tIs&m(j|h(}wM9s2RXLFE;dJ_9vUC@%_qt-B~c9Tl4&q1DXX{HFHixW&_C! zPlc}HStW^u5#idr0IVdETRz=^TsfE4(xUH1vp5FRij9A6+aV6hQ*iEo(b+*Iv)g%! zb-u|`P=!rkt^KL$Jc+E#tH=_#%^roAtCj{Mqv$j7RW77hWM28JjBoo$hKvBH6Z7k9 zdH&Z}MQr!wEoMRU1x5>3;gjC_Z-0yZ{!A{}qE1edIdCAimfSU|O8kT2Kd4h(nj?G; zt70S|>gm2?d{M}1UIwu;5{-(G1P&UyriOIR#51C4v78CN_vD9`w+f1kXB?cCSN}Yh ziWu$;z4HQbb6>Pq947&lsjNubtMzyw6dzwy5tOhCLAY(!^*dLDQN~GtA&X<}Oexk= zF(ufo(DNgYvM*OLz3?G?apxeOT3N}=DL2>jxSX#S`P&-kf$7T9MDAs_lj_?)|4jx~ zVHYt6k0lksPjpFF) zk}Fh5=pQE!=0L&tfh1W8%RmJnM4?+sX{55kuQ=vFn~BKkQ&!z-sBQ(ftr7?tPYb9k z#44}J3xXayo~#!;@IgmeNN*im+0QGYS}03K2VT;`JJ55Oa-6=)KPhN>O1?=@!}}!8 z-+7Pe4x?TWo8!ci3+7alwmE}8pq*v!%)0b-SJ-yhK}PZHT|Cc$YSam9g7nJNzT}~2 z&jqc99Yk-|pMGU`6*TvVe0O&R_oVg?gFIRH4S`hv z5qWf#a=W5BfTI|b7r^ii%zKIK@6>cb4+>bw8@WOWwH}3Uy&gz`9Q+GJK#Hr_Wit}-d_lgQ*gcV{!Gz^Nlwy9tul|`eQEmRawt4xG++7avBJ*-5Jh+d==q1^#BsP;L@&h z@=k|l=r>6+Mf11`&&u_*=-=Bvr?)0Wr$C^)Znt;U`RL703H5VKWsb-_|Dd?yNSex< z7r9ek4N!|7r{xOCkWrR(-P6DLS0Fp^9Erti&nYfS`Kf)vHjqduB*RX!SO=ELy8kPq zqxHwaMEG;-0>=RyO_VgG%Q=x6H$mV@p@X}!Q?nE*^5KXxw(09H(0HQz5W3XcG?Qjq zpN~kUPc6q2{D_ZAF;^3RU4Zd&NQMU^bkpWqNq;#oB=Fcx)`ViGx3SX%t*w6(L-`Yl~y!Y*`X zv8oLG&Q0@c>c}W4lae3-+4&W!^OcSOc_4s(74BpVy}4hWF|!khk(pNbO^9!f z^P7>n?+xl;14D7z<#qFSVL$^@Zh5CwH8KDyEc#(OFp&NwZSxv&fqN*?N}k0L>70;+ zI;~&3D`)-ARxQ-$N*#_ncX2nCY0KLM7_3S-$WqelKc9J()Vf_a|KNxTc+~9>5ZJ}# z${_!b-v!%-WE|pPb!a{uq*dcjY+%!_u2a3lPo^tUBf5#632+ROvQZ{ZW>%iXCqQJ{ zJRDg{XTX_mfQURcGnLhqgsB<(WT>#AGTNI^2e;#3Ci^DpmIP5d_b6y#hW{eAf<1LM z^YsaG6&w&q3KH0cmSF7Y3ef(}*%4{|Zw`ijj+=1?jDq}vy(CJ@Bdzrg8KfrFcH?wr zUZ=JBJ+cDCDE)xPqHEYfZ8+&yu){53Rme&hnC_Wft_f!(O=y($dxd`Afb(5xBWD3J zKWfcSu|dh8bkS&J+7#Snaq+enPjIRT3Um{*e{qKB{DXMWIW#L;W^aFZM=xB&gLTT^ z878smlS5>)(hyf)m?0NU5L^#cy3)PKjz1U#+2!YXnD~YnShZUD-w9~(4cu7px!I(( zoVGaxyB%^1#coFRUuUa$ddA|hpNllG|24o)HbP*wwA(M&r!LR2cvIl(ViCQqg74Z5 zlkndkUIzn({xqM7Q7AE^tu+NH*2o!bH1Fbio*f5K*pNL=N(dyV=3Gd~5bJta+Y5KI3IsqNJmxTwlVYlJ)IfzM`=Ke6kq)NevT zp}RsRK8!aqD`*i}6Y6XBDu%!A_E_K5ez$zi33#ZvxlmvSe;(Q5$T(Nmmq`uz57;Ibdjx zqoN=rhYLA7$vn75t~EGn z5mr<*d~1o@<)^El^!`#E9K$@*N{B{An0D@$NP-sZ_0h}Cnkt<3e>v-eDZ&%CsWZD3?ddfE{{sjp6}ES=yWip z-I=FN2&YaTN^269jwxjC9}R=3oYN}>Xy+`)XIzhgqk2)|=to(*A=J{+jais9GF>uz zk|Bh>xQ|4rHz|l?m{Hc^FF92^%lXBD50oiQ4z>Mum?+DsaEbPR*!IheRh0QpWQtJ~ zS0dRsBSmuZeFrP((onH)t=KF|ucI-+&K6<*Yb*r;z?&dn27^4jvB_owwg8JA#(~mI zW~rM0!Qp_%&AnIL%v-_q?0ngGCdz7t`4(>IT?_3AMDR-tjqhQ1j4@qZ`!LepvsqX& zB(G_4jCW!XU$kZ<>un2xe*prShpj>6N0IqALjqHl7<Y;>l7RaSN3v7VO zutN!p;j#&&;!qTj4A|kBx)qIqwR%*MPk}f5F?6TsopG5yEt_&NqRfi9ztE+*eAilg za5Us`jIr$p4-#rDorS8+5cHtX`04E!*HX~Z2UT2P0&=C$EnB#^3lzF)j~e8%_5L?@ zn$*gLH=Olo3v~*oMhvJkm6)@w+pYU?dGSn0oe>N$r%0UImovKA!|pg_<|BAS_9gT7NAU;JCdOQM_Bs4iUUi%A(Cn=A|8f{1P^~%#DArmV7IlI*#w@Z9g)~*#YwnCnT&(H% z`&f)~!1xr>!0-f2WstT{$bZiBM9uFxx{n%TS(&40msZq`B4bmt3CYUPws#$|zaOYh#9oUPX6vV#*M#u2x13R)1Qp`;jW!r5tWPV&wDUg1x7z5n9Sk`o zuSD6UEajso@^rBjbEuS4p>=cwGWOl$@TGV(=+*@2A49kLFMxLgwp}9^pxLuKA4Rrb zIOIe7G}c~4TdsTB8C9t$Dg$hdTOvj?(f$+V9Y_ro@(77RFnA_(T<>F`bx|vj&bbn? zM8~0Xr4u58I2E*i?>-@aYPE&#KlZUflj`RnlsCrO<6kTL0zo1+E|4>!z9uUa5yPC` z!40m~3uoY5+botBK*=d-V$yln7z~s!{We@_CaC=Stx}TdNWQiQZc;L@ne?ESq4P1L zRCt+3yS^oY)!4cYMWkLd(@8z}Dm+1VWSe9>&FF+j|4rt1kLgsFY+SRMHNa*VFv)|6 zVwxTl<&b*}DW#S2CTpM255xYc99pW~%T%$Dije?|r7=!^Q1Aq!sbCcHa%VJi3L75= zozfI*27v+tPx2<{yDhQQj-ga_(pQo}=Ej1V7uJF01>= zi7z$4nnS*zGnxHouDp?V0WupP+i6E)YN-XnrC!A%LV{7&2|P^EC~VTp65}1Aw^5nU zn@Cf=S^K@%bTHixP+2Fm91ezyIbCQD@eB_&Y-ICs zgDpqk1(4iQ4bM8V0MCA~d#gK52c{3Dq_Q}fk{gHP;118KWgM`V2OF;p!N5V|9$|Qw z4BuwC%m74#Z!;;}9HjG}W;^MRz?+FQc#*<_S|9|wm9(8@7+Ny%jJ&cm$2;*&+5%DF zJyPt=1SxZi`ax0A$em`NDyK3=r2RJPh9Rp=9lAEzQKFbfg*KN4>_E^rV&rBxRG^ti zhDm8IUR`)ld^2DAV;A!KZ7(}k9NM^V1K+4aDLI<-w*i`+CLEH~ksP#?2^+%sV(tzB zitzKG6<;nAb8KRRmW$Y9g$SE@YWC{-{7+iNG}+~@uNR8&I_m^cgh$dRnLcbJ@*ssf zT0#*_Uj-@|9J=HT;Q{377)XcV4y}7AZn1y;=)2JzBKrC&y(%}tOB|87+UalS#hpad*>`{J- zDLQRCC)s%1+H&g6v*_feK}z)mGh^78WFGG@z5~LBIs1`3Ubj(vd{Ci2e>qk>8vlNI zy04a$p5ApuwHa$-uFfR{N(ARWOrVVBiw#JmBDrC1w!#`v$=1*ly^N*uvpT#=kDzf7 zfvHIg4`>4G6aN@T(SB*BGLZpa65ZfdEyx<>cu7d8B!wy1CX1>04&!o&1Wc5ii_8c# zS0+%IG@Bi<2jV^yiaXI*z9=3^;i@4ZXaa%6;>Y(nsTIO*VEH-4Bzx7fszF0ADu$8Q zuezqhQMp#-tVVN0!kbZcIy$R+s{M!KNrQE z{zTNDapVm)LUy}(om9`OV28Y;ex7z96MO-^#97>FEz}hh``-rXAj6H@)K4^NGq3|} z5ad3!iHnOInCl#w8hiWBrlW3|`+~n_pY@CCC}kr@FC37p^F@D`8p0Uy&qa-YUMC`P zbS=NvLllM!8$INS%@?_~=^(}VrB&)yKla`*Er^1u85bo(tr-A2K*YcHY~@unQ!_QQ zRbo>_y`}(hXX18-Qrw{G8s)U-YQye33wN)cpvSBg7ZjnsDeWwmL6s9ymaQE0uo?+E ziZFM$Xz2;iHSFMt3x7Sq5$Ol^5r+94ahU_Elh``a6fpEGv-?;K9vcZfb{yk3^8;-< z%3f+Tr9w2r79ozdT}~xi&2!XtKl-V}%HdB~%`uj(>n3Bah^7ZX1Mqqni6f0|O7{Oy z9f@;nLHE=AHEMX|ZG&}$prr1)ZQOiFa+S}L5byA3_@^gtZ#ra_wL0od9P*G_OUCy? z5=pztQf*{*YNaxVZ<@|QoFcOxKUA&2%F)7d6BaN?H8}Vs@WYLI9W15ptY#>$JGm1| zLZ}f`N`pW3wJ=9d7seB0gsgTW2wSf~^2-)h%-}Xd-|U&v`(W=oc`q8sCvA=Z;<-xF z?RwjI2m@Vu*8#gb7_Y~P;$-i>BVigUm(oy4m3B!rVcJklP+HO_nz0VC$u+Yw;Z2YR z&^gq}ABj-+mu;5YakFd^HfQZ+dVhmAWo^{!c<_H2u|VD{h@>&rixe3sG^W^-m^CD@ zEV;v6|5S<%z@-RwdG@-Wt=*{IrSii4BCaCC;AFE!)=ESaqV{`^pu{PlRFt}juU27K zRpQ&8JalFmTol)Gp(-7e}h0|Ue>o4W2ip*rl4Gn^#)sj@DFayeYmXoTai-F=c8J^rJ ztNHtupkG_MaOhOnz5fL;qt2;75IE3m^eB~a#OQ7H4-Sj`DF)iHTr?azjHQ z!tkX%U5#x%r2W2*?Fd(FfmLT~UG_Kb6TNeOZ0%rAIvfk4)7vtrXt z^u_t)+)I)5oagW9sv5y)ULP@b;gZsSTyFpGxh=`NKcyozUIlAEgR@ck@sIQ3;jfUo z_$m01^T{>bQ2Luj1O9x)%*&JSi@!qEAuWSwDdfl-jt=-!yG}T~zg#tfU%N;hS39)U zNULLxdF_SexTH;CdyVO9e>%ohz-jGtY+kZgeoqget`**|T4w;3bRYKUtc*SHBM$hyaxSl$<`a|UyD|qtZ zlL|aVTc;^IiuZ#)THL!_OUYA{ldx7FK*eby61F>c zT2ei~hG3jsM-e6Ko<&}@Az|`ul^ON?Wd;LGwVM@%r)gX=(3wqoUYg{JG&GE}^FwYu z2NlmG{5tc5v%zE2Tr3RR=YKIaQ;@kR+}s#rpy7zo`}su7tA3TqQCh3fZGGlE;i4|= z{k7oHhTMbBT;)-r(JNgaC=)A61T58nS+6E3;A#qkB|risSOc&iV@b5H=*2<=Bh&v9 zqGnymqLp@39~c(|xr~HJ?sZ0j)mVB(sVfvIT$20xiuX>naBtYQT|>B!R`0QdmXn8+ z0y^_=qCHti3-5Yq+b+{44hD;XqC=k}d}JC(#d(NCX{mJxk#Bjs_JG~8i3DfcKeXt% zudu<*!^sMvr^PK}0VSoI7RG2R6a#!H^rCmRb@@z{m5RdcSV~N8;zE>2sW#OB*1yMi zy(%5V`B|ecOa|1$=+ncmwF{YtP2sn-n~^I*&$|r($ihuAvR@kTxMt$gO- zey1B`D9xgO<^0P!6>LwTND$sO4TYkzyp$l&?rv&p!0;}b^oe~+MIm)h1OOr#~10DbB++Wummg$!ZR?H=I3!LNfEOGypl zht~AW_C&$Apf%Z4P91*eIFm6IahBt^`!)1B5q)jxASWGH{;;9Lwh)If+`jmLWvbM{h&y zANVyl@%$rGUgC>?7MC%EZyhsWvB%v2rna3z)TX_e{FjJxp^omp4&&3xw>kHn(W#TB?}5-BF- zj17#6Fb|39fc<>Fz!$+m5a}=$PdzOm1&xMp97=GaHwLOxLoNDz8fCWSM~QtpDHRKp ztYFJZ{1b(3TySolh0-t(v7s*)bXK`mQRR`C@?`e8cplOLdA%|Z>+=Plms&Rd zAg;Rfd6N@D%)W~@riocM(TNgNCZPijOvKYp=?U#B{+{u{jBeXlgXPE?AS_pJEc*j1 zWs|4XtyQ@jKLNza!UnzEIm~J22p1X=2nJf&(?%OQ>e`ZqF*RjTN&oH|YHa7Qq~zFO z?1_ygTdcX)3$XR$A#TV zA2>=o+?acAhN=yDyZ*6cgDc9o*ReA2uLXW3IXUk7m}6!f7!TyukA$`3FRf0%BVAFk z6jHaxf1x@u@r=%Q+=nBSO=_#XXmCV5}O`JZQ@)dR9#sPA} zF@64v4~fcBRvHHZF`IRnA3yye`i^QGwKiu3P#9DT2yom^1>D1jFR{<0Z zx`%PpC)cp??UYwSH5@L|5(dSfz*J;+--6e z5BcxQb_ZW+Haz7JNSm`Vy}^E*KExwP?9NV*9YlB{9#{*h8fx)=-hWU8jL>xX`4BL+ zJusomKz3S7L@uEa&tsJvhJm>0*B_`2PQ6LW_XpU)p|sfKN{RpCOF@T&kf(#|M#3*a zm2M^EnI(NrFk7t|ax|P%7SiP9u^j^+6fT`+J6DP}GGiSeRO@&-^h~|Rf%X?aWg5$V ze{d4)&lST%LxRK}jX*%S*4}xwLSR=8xgNt;pz~+UG9oYTbe}#6#ER0O)k(JYF{c4J6J6L0q$b$ ze5i^8!`3;}X#&2{zgtm`$kVEM-$-be=YWiYcuj*w@USn=URE(kf%{9xGrO9Z+yLB| zNHy1Y!ZCHN&3ztYb$Sc!6|sb__LwPxH=pFf2Af48#;<9lPD%i+py7qhOCm~o5$Os7 z4P35-i?bE(HQAr{jlgxonn^}mhGDho{};gbqiQYaP-^|n-@7%wzI`2?#W%bFjX`xs zzB;MB#(9n`ZLwk|xMdDQ@}}al7E^yV5-RNXwJ4TRfd-LoP3w>%e%Pm0l_Uvz-|h_O zre>hJ9Dw8yOh&={qEGob=5*e=lDP!`{P2`!+krGskriOctCA3M690Dyn97Kwv&+!I ziP~krj9fh!`q&ZJ$E8L0yND_v+304Xodis8Ls^b{Hl~>RbuSumq%F7t)H4v^Ti(Ju+`ikVnR? zB~q;)glL55=*g3 z<4dfhLlB_L5ncFxyP$yBM`9?c)Z6Dm$iD*T-1s~^)rZceQ8D*-;*m+GEcMa(Kh?#o z!;V>;qTX!n2+e?!ZB+ZrsaB_m>9X^IdDL;(y!A!>VnIS#=ca!<$u!z23z^%+PFpyL zj)g_3s2|aKvLypnKb@5NXr?^2`>x1FX0*IgTN!jj*SxTL#j&fBtd6w@_-HF~l^S4g z*VquG4a+m=bTL_jSZ@kolUM^}3&h6T-+*|T_?3$;Lu_uc<){;jiT@*pO9Kn&!Jt0; zcT2OgAI+92-*yMgutPylAQc(e5aRhOXgl*9RVFRi@MN|p5v0SgfWwipT%FA6s_N~w zOTq21)UfN!6Xy#9JNW0EGYhE%(a!}3%e}HV>4fbgmD1A zS67l^Ah%df!6=SLtt1)eRDel{!yB?k4u>=(*g)aLbzvqZWo_lUFg5&wY$&q{;_qzQ zTB|N9lU@<`Q6fRKFcQz3fJku2!GQ~Ffj##8fe%qW~R(!DWU zfFG$+gaF0Z(JSK@*m+}xKX)-7zKn4cnK zp(s)W(BK|4mROt2x8Chomg{$mhn_=r)moH_3jYLGsMt^JNzqph zAalxcxE;b~j9Fsc};Gs?0E^qojvpeq_*3d-sl1-qjZU1Vl&xM;+CT3P6ta z>ApAt`Cgm9#!+e6yYt|O%qd$S?I&`~EYp)_$5=yznQ9auw+?5z=`|%L2?_@8aEi9W zGcS<3H2`FxCPC?l`mIVx;}^UKQIR@}Kmvc4{Q2bp4&sI~-az~q3{IjW3$1GN@4qAn zqB7b}2)jB#$Y6rahi-_C1DZ*qBugrNO(d)oVavwx9mhf&Y@v2rwEw*AAXx3f5ywrW z5W4Xn32VtbU$G*yl{Sh@xM>5VVCsKB*`(2Y*R2(vgYga72R63aAE))GkM&w2&7Yr5 zWrg=(7gpBEbhOYy_KuX|$oAQIem;d?`|WgIoJKg7F+onOps)K2q0ME zRj-4N%oG%TsG7*BpVUgRdF3`*jS`__9e1;m{tq@LW8-JvB+TGmSqM+ayTF(5_-uSR zb6M(EYR{#VrQs8L< z#H1o^a=k|HodWwO;{zeoPn)c)AL+Ofbq`}>1^)bqXfXOA;$tN&1z7~*696sj>#yf%lE9j;>%+`rm?pXn%Y!SBu*4nlb2VZf1XS0hNyPDAPp zxVjbW@riJ#j_tw!A;tjiQHp$q<=FN#WK$-Zz4Ohf0zwaFYJ{H;t9R%YfrFi$x0&^X zuJ9k6co-}aF!LTnaN-Lr@zRZY!~Y5^aPv-OG~Lqx3S~aT7A5ycgCGD!>lsn&pQ?Av zs66Tfxjod+S}JUX>g611{>s1d{SQn%hUvJE=~FgF9?zl2PM-iNKHjm^_(`q|sK*7$ z+nar_myuJ>oLxwwwvlT*&)?-uTssy_J=4K$(HeqTysSGZ*%~QUxh*K#bTVJ})fPY) zUhRfG2Z%^sgX?pS14%4WAc81MV=+0cs+NNG9X+z}w}f1Yu_z7Y7OzJ~RVP{9T1hu> z=}T(2Pdx5w=?FE3&EE>##z?$x0p?Y?<4*dv^hRT%&&o?Y1uOD#twe_!bCpMTxk~H& z*I80Kz3lfcr5ifDL%Q2*x0IN7dz6QLZvW1d_*6pf$Lt*vz-WeJOb0v&MMRDH5j#W>^>^Fr2JzD?a)@MsBfWDCtKP178{d*< zT7R+OP4@|4T1LSrg|9=@;pK6Gw&Lfyz)1W&{nk-z>_xMA;VyRH{TSq%V^&xmKc6tc z?RvKH{plg{YN!!ypFC|Dw^)zgWzgM*V~E2+r@hxGmL&{pnlrH*?)zG1gw%Y6n^;jb_XdBRrj~K!3+Dz}3V0w%}9FBD?_>^ARW9 zrD{(W5M)RNP6kawdFJQ&+5cs@f#-)-v}tzpYu9$r&Ba?_p|xlNeVrlHD3e43u8%4L zW)6*5h3c*fU#cOOcHzbBa&MhN)txQ`Dx(aOPhy)}MDxn*0aH^uW;M)E9@eNVtyn`x zEM~z>GGTS^DJZB)gowhq9L9gt!=TOO8%<06TzLm7PyhD&qrCFC9=>{h16G6YT(q%u ziDqWA8YRs!f3>V0Hvxj>Gx;>rw;r2dXL@^Nzu<+2qSQS)NoP@9l=Rr zt=jTEbw>!W^&~EnCic(u0VtgvDFqBZCb<^u#Di925WPNuO2v z@*rOA-do%3=y$1oiG5O>qBfOrK&Y3XY_r2l6lCxJ0qH{d#2KVL*bh+YRf8!dn03G? z%ew5Cy3Pcrvuqhs_+@JUI6oZOIVE|7_xr|@2aTGR^1YQpvnDhDq$n0o+5CyC9khpp z$HicsS*oqSDTX!fc+ z7Z@4{Q$Eg|!yrWGQ01Uzrjvv>>dp=#JMY4zR{W%~o<}IH2wUZn*K2FiFS53Lc zZQ>k#2Ie3{t?^+#YX^_;0K3&TmCWo432xh(Q)Q7?L04#NR>5MSUHcs?+BzwVE&t&= zSrg0MH)m4Mrp&%`SU7VeM^b(?SX}Y9J}h57{;-;n{{e514rO6s335jl&<-!Omfqpv zh<^ni`%v&ZXWzmPg^*ryxlcQ3fW}!xirux(^$23zQ`mdUD|}z0P{qhpj|^$96-qBa z`O0Qy{rzLxv>kc1#S3!*92?Ri%An3L?zhQ0MOP}RX01dEv6n;sIic=&x9Z84HlZ~1 z9SbKh)wsR?2o%U?xmCu)0Zr)x&?H)St?~D$IXP852xcv|NciBr0%0XZ+|C*7d%4V1 zxE}sPeaKW80biA=42W*#e&3t}2o<;eBq@xJ_BCmzVQg zaz)wOB$nfTOGmMoMo4fOj2KPjqjr;`aROD|Cvp8*;d(LydUyglRCFPgbRlM**740uoW1y?R;-NCp^&P+jwzHk6grRgR3OdxZ zB_VAuQ5=6FCi+ZlXF+s<|ExYc_ET6{!uX!MFh2XFbBk+w zsAgd^T)U#0bAM`9Swg_ZGk!GUm5DYxMiom`Wl4wkFjc*Jlm*lD@oKW$#4|@^KOAL% zHKgMQ=znOYhbiKU+tql**cBx)JyyDL>fl8EC#^>Hk!j&76=w-N#3eG;!1dH-yWSna zw*lJA|Kb_uI?V1KaUqTv0R0 (7Rsy%u-&ICeHh3>T-*t--b~dQHm>Wr(RVk;A(T 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�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%0A!HDB!Z|26oZ=pK0O( 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

  • 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
  • ); diff --git a/frontend/src/pages/Home.tsx b/frontend/src/pages/Home.tsx index 2fa04eebe7..2536f0085e 100644 --- a/frontend/src/pages/Home.tsx +++ b/frontend/src/pages/Home.tsx @@ -6,51 +6,57 @@ import BanganzaIntro from "../components/BanganzaIntro"; import { CategorySelector } from "../components/CategorySelector"; export const Home = () => { -const [introDone, setIntroDone] = useState(() => - sessionStorage.getItem("introDone") === "1" -); + const [introDone, setIntroDone] = useState( + () => sessionStorage.getItem("introDone") === "1" + ); + const [showIntro, setShowIntro] = useState( + () => sessionStorage.getItem("introDone") !== "1" + ); // ⬅️ nytt + const FADE_MS = 600; const [ready, setReady] = useState(false); const catsRef = useRef(null); const location = useLocation(); - useEffect(() => { const t = setTimeout(() => setReady(true), 250); return () => clearTimeout(t); }, []); -useEffect(() => { - const s = (location.state as any) || {}; - if (s.scrollTo === "categories") { - if (!introDone) { - setIntroDone(true); - sessionStorage.setItem("introDone", "1"); + useEffect(() => { + const s = (location.state as any) || {}; + if (s.scrollTo === "categories") { + if (!introDone) { + setIntroDone(true); + sessionStorage.setItem("introDone", "1"); + } + catsRef.current?.scrollIntoView({ behavior: "smooth", block: "start" }); + window.history.replaceState({}, ""); // rensa state så det inte triggas igen } - catsRef.current?.scrollIntoView({ behavior: "smooth", block: "start" }); - window.history.replaceState({}, ""); // rensa state så det inte triggas igen - } -}, [location.state, introDone]); - + }, [location.state, introDone]); const scrollToCategories = () => { catsRef.current?.scrollIntoView({ behavior: "smooth", block: "start" }); }; - return ( -
    -{!introDone && ( - { - setIntroDone(true); - sessionStorage.setItem("introDone", "1"); - }} - /> -)} +
    + {/* INTROT: ligger överst och fadar ut när videon är klar */} + {showIntro && ( + { + // starta Home-fade-in + setIntroDone(true); + sessionStorage.setItem("introDone", "1"); + // vänta tills Home är synligt → SEN unmounta introt + setTimeout(() => setShowIntro(false), FADE_MS); + }} + /> + )} + {/* HOME: ligger under introt och fadar in */}
    @@ -67,7 +73,7 @@ useEffect(() => { >

    - WHEN THE BANGERS ARE TOO GOOD… YOU JUST NEED TO + BEYOND THE ANSWERS… THERE IS

    { BANGANZA - {/* 🔽 Diskret scroll-hint i stället för Start Game */} + {/* 🔽 Diskret scroll-hint i stället för Start Game */}
    )} - {phase === "DRAWN" && ( -
    - Drag the card and drop it between two cards. -
    - )} + {phase === "CHOICE_AFTER_CORRECT" && ( <> diff --git a/frontend/src/components/TimeLineCard.tsx b/frontend/src/components/TimeLineCard.tsx index 53c86ced85..202a03bf18 100644 --- a/frontend/src/components/TimeLineCard.tsx +++ b/frontend/src/components/TimeLineCard.tsx @@ -22,7 +22,7 @@ const TOKENS: Record< xs: { wrapper: "w-[144px] h-[202px]", value: "text-2xl", - name: "text-xs font-semibold", + name: "text-base font-semibold", label: "text-[10px]", badge: "w-5 h-5 text-[10px]", padHeader: "pt-2 pb-1 px-2", @@ -32,7 +32,7 @@ const TOKENS: Record< sm: { wrapper: "w-[196px] h-[259px]", value: "text-3xl", - name: "text-sm font-semibold", + name: "text-lg font-semibold", label: "text-xs", badge: "w-6 h-6 text-xs", padHeader: "pt-3 pb-2 px-3", @@ -42,7 +42,7 @@ const TOKENS: Record< md: { wrapper: "w-[346px] h-[461px]", value: "text-6xl", - name: "text-4xl font-semibold", + name: "text-6xl font-semibold", label: "text-3xl font-medium", badge: "w-8 h-8 text-lg", padHeader: "pt-6 pb-4 px-6", diff --git a/frontend/src/components/admin/LoginForm.tsx b/frontend/src/components/admin/LoginForm.tsx index 8e8c9a7aef..2baf8d3829 100644 --- a/frontend/src/components/admin/LoginForm.tsx +++ b/frontend/src/components/admin/LoginForm.tsx @@ -22,9 +22,6 @@ const LoginForm: React.FC = ({ onLogin, loading, error }) => { return (
    -
    - -
    diff --git a/frontend/src/pages/AdminPage.tsx b/frontend/src/pages/AdminPage.tsx index 1b003c7bfd..fbaefcfe9a 100644 --- a/frontend/src/pages/AdminPage.tsx +++ b/frontend/src/pages/AdminPage.tsx @@ -83,10 +83,6 @@ const AdminPage: React.FC = () => {
    -
    - -
    -
    {/* Header */}
    diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index 6e0aa7a525..845bf1016d 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -54,9 +54,6 @@ export default function GameMode() {
    -
    - -
    @@ -135,30 +132,12 @@ export default function GameMode() {
    - {/* Bottom-left: Round */} -
    - -
    - {roundLabel}:{" "} - {roundValue} -
    -
    - - {/* Bottom-right: Category */} -
    -
    - {categoryLabel}:{" "} - {categoryValue} -
    - -
    - - {/* Timer */} + {/* Timer - positioned at top center to align with Home and Teams */} {(phase === "DRAWN" || phase === "PLACED_PENDING" || phase === "CHOICE_AFTER_CORRECT") && (
    )} - {/* Innehållssektion med DotPattern – växla mellan SETUP (Settings) och Board */} -
    -
    - + {/* Bottom-left: Round */} +
    + +
    + {roundLabel}:{" "} + {roundValue}
    +
    + {/* Bottom-right: Category */} +
    +
    + {categoryLabel}:{" "} + {categoryValue} +
    + +
    + + + + {/* Innehållssektion med DotPattern – växla mellan SETUP (Settings) och Board */} +
    {phase === "SETUP" ? ( <> @@ -233,6 +228,8 @@ export default function GameMode() { > {selectedCategory.question} + +
    From 125e30aea1eb7c96426f131ca8e9a40f0627fa85 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Tue, 26 Aug 2025 17:30:48 +0200 Subject: [PATCH 088/127] New category look --- frontend/src/components/CategorySelector.tsx | 108 +++++++++++++------ frontend/src/index.css | 63 +++++++++++ 2 files changed, 136 insertions(+), 35 deletions(-) diff --git a/frontend/src/components/CategorySelector.tsx b/frontend/src/components/CategorySelector.tsx index 68d14e655a..9e80fc0463 100644 --- a/frontend/src/components/CategorySelector.tsx +++ b/frontend/src/components/CategorySelector.tsx @@ -1,9 +1,44 @@ -import React, { useEffect } from 'react'; -import { useGame } from '../store/game'; -import { Card } from '../ui/Card'; -import { Spinner } from '../ui/Spinner'; -// import { Button } from '../ui/Button'; -import { useNavigate } from 'react-router-dom'; +import React, { useEffect } from "react"; +import { useGame } from "../store/game"; +import { Spinner } from "../ui/Spinner"; +import { useNavigate } from "react-router-dom"; + +const AnimalIcon = () => ( + +); + + + +const PersonIcon = () => ( + +); + +const GlobeIcon = () => ( + +); export const CategorySelector: React.FC = () => { const { categories, loading, error, loadCategories, selectCategory, selectedCategory } = useGame(); @@ -12,9 +47,9 @@ export const CategorySelector: React.FC = () => { useEffect(() => { loadCategories(); }, [loadCategories]); if (loading) return ( -
    - -
    +
    + +
    ); if (error) return ( @@ -23,37 +58,40 @@ export const CategorySelector: React.FC = () => {
    ); + const iconFor = (id: string) => { + if (id.startsWith("animals")) return ; + if (id.startsWith("celebrities")) return ; + return ; + }; + return ( -
    +
    -

    Choose a Category

    -

    Select a category to start playing

    +

    Choose a Category

    +

    Pick one to start playing

    - -
    - {categories.map((category) => ( - { - selectCategory(category); // ✔️ bara välja - navigate('/gamemode'); // ✔️ till GameMode (SETUP) - }} - > -
    -

    {category.question}

    -
    -

    Unit: {category.unit}

    - {category.source &&

    Source: {category.source.name}

    } + +
    + {categories.map((c) => { + const active = selectedCategory?.id === c.id; + return ( +
    - - ))} + + ); + })}
    - - {/* ⬇️ Ta bort "Start Game with …"-knappen */}
    ); }; diff --git a/frontend/src/index.css b/frontend/src/index.css index 52802e80d7..b1b710e219 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -142,6 +142,69 @@ html { animation: crt-flicker 1.8s ease-in-out infinite; } +/* --- Report-like category cards --- */ +.report-card { + position: relative; + display: flex; + aspect-ratio: 16 / 7; /* bred, “platta” kort */ + background: var(--color-surface); + border: 1px solid var(--color-border); + border-radius: 1rem; /* ~rounded-2xl */ + box-shadow: var(--shadow-soft); + transition: transform 200ms ease, box-shadow 200ms ease, border-color 200ms ease, background-color 200ms ease; + overflow: hidden; +} + +/* inner border + subtle bevel */ +.report-card::before { + content: ""; + position: absolute; + inset: 0; + border-radius: inherit; + box-shadow: 0 0 0 1px var(--color-border-muted) inset; + pointer-events: none; +} + +/* fine noise texture */ +.report-card::after { + content: ""; + position: absolute; + inset: 0; + border-radius: inherit; + background-image: + radial-gradient(rgba(40,21,23,0.05) 1px, transparent 1.2px); + background-size: 3px 3px; + opacity: 0.6; + mix-blend-mode: multiply; + pointer-events: none; + transition: opacity 200ms ease; +} + +/* hover / focus style */ +.report-card:hover, +.report-card:focus-visible { + transform: translateY(-2px); + box-shadow: var(--shadow-medium); + border-color: var(--color-foreground); + background-color: color-mix(in srgb, var(--color-accent-100) 10%, var(--color-surface)); +} + +/* active (vald kategori) */ +.report-card--active { + border-color: var(--color-primary); + background-color: color-mix(in srgb, var(--color-primary) 12%, var(--color-surface)); + box-shadow: var(--shadow-medium); +} + +/* reduce motion */ +@media (prefers-reduced-motion: reduce) { + .report-card { transition: none; } + .report-card::after { transition: none; } +} + + + + @keyframes spin { to { transform: rotate(360deg); } } From d5ef2d0d0c1797c1b474b6ae061ef2bb320232da Mon Sep 17 00:00:00 2001 From: Idahel Date: Wed, 27 Aug 2025 10:05:16 +0200 Subject: [PATCH 089/127] resized cards: timeline, current card. Changed size on heading, removed heading from game settings --- frontend/src/components/CurrentCard.tsx | 22 +++++++++++----------- frontend/src/components/GameBoard.tsx | 20 ++++++++++---------- frontend/src/components/GameSettings.tsx | 4 ++-- frontend/src/components/StartCard.tsx | 2 +- frontend/src/components/TimeLineCard.tsx | 13 +++++++++---- frontend/src/pages/GameMode.tsx | 18 +++++++++--------- 6 files changed, 42 insertions(+), 37 deletions(-) diff --git a/frontend/src/components/CurrentCard.tsx b/frontend/src/components/CurrentCard.tsx index 590ad0ba6f..de54515d12 100644 --- a/frontend/src/components/CurrentCard.tsx +++ b/frontend/src/components/CurrentCard.tsx @@ -25,17 +25,17 @@ export const CurrentCard: React.FC<{ card: GameItem; dragging?: boolean }> = ({ dragging ? "opacity-0" : "" }`} > - - -
    + + +
    Place in timeline
    - -
    + +
    {card.name}
    -
    +
    ?
    @@ -47,17 +47,17 @@ export const CurrentCard: React.FC<{ card: GameItem; dragging?: boolean }> = ({ // Preview för DragOverlay (samma look) export const CurrentCardPreview: React.FC<{ card: GameItem }> = ({ card }) => (
    - - -
    + + +
    Place in timeline
    -
    +
    {card.name}
    -
    +
    ?
    diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index 2a3cf6abaf..72d9b8e6fc 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -20,7 +20,7 @@ import { ErrorMessage } from "../ui/ErrorMessage"; import { TimeLineCard } from "./TimeLineCard"; import { CurrentCard, CurrentCardPreview } from "./CurrentCard"; -/** Smalare och lägre “drop slots” för kompakt timeline */ +/** Smalare och lägre "drop slots" för kompakt timeline */ const DropSlot: React.FC<{ id: string; show: boolean }> = ({ id, show }) => { const { setNodeRef, isOver } = useDroppable({ id }); if (!show) return null; @@ -137,7 +137,7 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { if (phase === "PLACED_PENDING" && pendingIndex === i && currentCard) { children.push(
    -
    +
    @@ -155,8 +155,8 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { key={c?._id ?? c?.id ?? i} className="group relative flex-shrink-0" > - {/* Bas: ~60% storlek. Hover: ~90%. Origin i botten så den "poppar uppåt". */} -
    + {/* Bas: ~60% storlek. Hover: ~75%. Origin i botten så den "poppar uppåt". */} +
    = ({ className }) => { children.length - 1, 0,
    -
    +
    @@ -264,13 +264,13 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { collisionDetection={closestCenter} modifiers={[restrictToWindowEdges]} > - {/* Ny layout: tidslinjen överst, current card *under* tidslinjen */} -
    + {/* Ny layout: tidslinjen överst, instruction text under till vänster */} +
    {renderTimeline()}
    - {/* Instruction text centered under timeline */} + {/* Instruction text positioned under timeline, aligned to the left */} {phase === "DRAWN" && currentCard && ( -
    +
    Drag the card and drop it between two cards.
    )} @@ -279,7 +279,7 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { {phase === "DRAWN" && currentCard && (
    {/* Gör kortet något större för tydlighet */} -
    +
    diff --git a/frontend/src/components/GameSettings.tsx b/frontend/src/components/GameSettings.tsx index 03a7f79ef4..4b1dde9348 100644 --- a/frontend/src/components/GameSettings.tsx +++ b/frontend/src/components/GameSettings.tsx @@ -21,7 +21,7 @@ export const GameSettings: React.FC = ({ onClose, onContinue }) => { }; return ( -
    +
    {settings.teamNames.length} teams • {settings.turnSeconds}s per turn @@ -78,7 +78,7 @@ export const GameSettings: React.FC = ({ onClose, onContinue }) => { -
    +
    diff --git a/frontend/src/components/StartCard.tsx b/frontend/src/components/StartCard.tsx index 7de1f6a4ee..af26477e23 100644 --- a/frontend/src/components/StartCard.tsx +++ b/frontend/src/components/StartCard.tsx @@ -24,7 +24,7 @@ export const StartCard: React.FC = ({ }) => ( = { xs: { - wrapper: "w-[144px] h-[202px]", + wrapper: "w-[120px] h-[169px]", value: "text-2xl", name: "text-base font-semibold", label: "text-[10px]", @@ -30,7 +30,7 @@ const TOKENS: Record< vspace: "space-y-1", }, sm: { - wrapper: "w-[196px] h-[259px]", + wrapper: "w-[164px] h-[217px]", value: "text-3xl", name: "text-lg font-semibold", label: "text-xs", @@ -40,7 +40,7 @@ const TOKENS: Record< vspace: "space-y-2", }, md: { - wrapper: "w-[346px] h-[461px]", + wrapper: "w-[290px] h-[387px]", value: "text-6xl", name: "text-6xl font-semibold", label: "text-3xl font-medium", @@ -77,11 +77,16 @@ export const TimeLineCard: React.FC = ({ }) => { const t = TOKENS[size]; const unit = category?.unit; + + // Use responsive sizing for sm size to match CurrentCard + const responsiveWrapper = size === "sm" + ? "w-[120px] h-[169px] sm:w-[164px] sm:h-[217px]" + : t.wrapper; return ( {phase === "SETUP" ? ( <> -
    -
    +
    +
    Game Settings
    - Configure your match - + */}
    @@ -214,7 +214,7 @@ export default function GameMode() { ) : ( <> -
    +
    Game Question
    @@ -222,7 +222,7 @@ export default function GameMode() { level={1} className="leading-[0.95] text-foreground" style={{ - fontSize: "clamp(2rem, 6vw, 4.5rem)", + fontSize: "clamp(2rem, 3vw, 4rem)", letterSpacing: "-0.02em", }} > @@ -232,7 +232,7 @@ export default function GameMode() {
    -
    +
    From 16b1acd184262735be71e33cfecee9bcfdd0661e Mon Sep 17 00:00:00 2001 From: Idahel Date: Wed, 27 Aug 2025 10:38:04 +0200 Subject: [PATCH 090/127] game reset when choosing new category --- frontend/dist/_redirects | 1 + frontend/dist/assets/banana-DrMeE8r5.png | Bin 591550 -> 0 bytes .../dist/assets/banganzalogo-DkEbuI83.svg | 126 ------------------ frontend/dist/assets/index-BuVI6kgl.js | 58 -------- frontend/dist/assets/index-CPyMreUb.js | 58 ++++++++ frontend/dist/assets/index-DS7Byclm.css | 1 - frontend/dist/assets/index-nXWZrOFJ.css | 1 + frontend/dist/banganzalogo.svg | 111 +++++++++++++++ frontend/dist/index.html | 6 +- frontend/dist/intro.mp4 | Bin 0 -> 4021145 bytes frontend/dist/intropic.png | Bin 0 -> 1224223 bytes frontend/src/components/GameBoard.tsx | 7 +- frontend/src/store/game.ts | 6 + 13 files changed, 184 insertions(+), 191 deletions(-) create mode 100644 frontend/dist/_redirects delete mode 100644 frontend/dist/assets/banana-DrMeE8r5.png delete mode 100644 frontend/dist/assets/banganzalogo-DkEbuI83.svg delete mode 100644 frontend/dist/assets/index-BuVI6kgl.js create mode 100644 frontend/dist/assets/index-CPyMreUb.js delete mode 100644 frontend/dist/assets/index-DS7Byclm.css create mode 100644 frontend/dist/assets/index-nXWZrOFJ.css create mode 100644 frontend/dist/banganzalogo.svg create mode 100644 frontend/dist/intro.mp4 create mode 100644 frontend/dist/intropic.png diff --git a/frontend/dist/_redirects b/frontend/dist/_redirects new file mode 100644 index 0000000000..ad37e2c2c9 --- /dev/null +++ b/frontend/dist/_redirects @@ -0,0 +1 @@ +/* /index.html 200 diff --git a/frontend/dist/assets/banana-DrMeE8r5.png b/frontend/dist/assets/banana-DrMeE8r5.png deleted file mode 100644 index d7f46bd573d1223f519b3cd05497d799495d9491..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 591550 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

    6H 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

    rqhqU9JyDh| z@n6C;kD1L<5!-k=E94s9P}awkLwn}n>7A#RJ5v+nccUV!YcR!2)*)7uX-GVnds1w= zl}ZYLa1zp-cQ!fiFw;eCP$TRlEX=h}N!51Un2h*M4K(F14N(>wB~|B?RMemts#Coz zyDJt3YN;(j&1eGDRHG5C98k$=m$6T>z*1)(GXNYJMd2aeZoj^aN$O!>Y{Sgdr(_kA zg|m}&frWIT7+037wu^-#*cT&^o+O~^uMto`f9c2#P16>rA=-4Iy28AdlW`4d)^Kr7 zmfy47<|_kij+>+te))01-e|PVErKdc@(9|f0_)of|kfiG2~?o%?>C z{iTn6;(NdUFaE3F{}=0b?>u_r_dfsAKla1_)qnDzf9F5_?bml-=1R?B@{qpC2Ix zpicKW$}UbgMw6rFYNi2#f^3S+0`-?E4vhv9GIKAE`s-NRkd#H~G@nQb%@2=IAtau$ zJlTfu8A|=s2ujuPk;^5S0Ar2mMXC#=b4KS*bYNA^qnqX#xaOFmJ;>D2#ATEv_cU*| z*x-4PH^GT9WNN2&HuWl)ieN9ThOIm|r38rP6*gaR-edN4OAI(b?HJ}20OE5dPEN)g zCNPph)2V3#Ul$JlbjX^TQ4(`Rrn8(;GnZ)msia(K9(QR-|yne6*tqQRsx8^jN+`(`LI@HtT_&SdmT*o<{vm^#dA9GbG+sf2Z zjGB~_=ST)AB~=&NR(v}Dn8=GU1RzamqI5Wm=~S5H-cu+ORV01KW(uaz%w(@P=5e7_ z0pn8%Sz{2!F6PlT60dV=n@#o_49t%%`2s_|YhC6v4_(qH2%D<%ay@?0-H$G+Zgy{~DhNt}COQ8EI820vkcGq{W{o;rZyubbY z&DU?e{Rej*e);yJuid%z==OuF_x<5N_HX{cfBeonZ@ql?J^8(?;-_NzAUksbgzqU-dsth+3s2BJ+pVx>@yWAQ+ooUnjmC_c)P5UUc>y7Pr`QDsNGPqDRjiwzXec1+iRfS}7D|PJsAm%jr^wvrT^O?*_rqKSAuSYa z5+rn*LTlQA<6?yh86jeNP-L?N$en~L4RNR?i$ydAi^28Jtcu3@0a<*8XEW(w_jz}P z_KCbV2`r#uqH>WkF+)bDA{<@Okd>V?5RQlym%mVY>C&Q1Xv|MzaqM0#^{^_0vlmm4 ze*4~aPAxRY7T1s@ajD?=7=3oqy1Wy7t58Ul50Xwow<;*<@l3a;x~rTmAOUj`5zj&1 znsVe2rrj*KzEz)hc>rKr^;9D#P507jeyKH69Le#ax2jXOeo(%v4U3Q`G(x3GYX#Tw zKLqszm)SdkT9kw9()cxH4G23Oae<=g**g_iGNbrFHfLumr)C@U)do`~6=omD5v{On zR%$!7Q8_OQw>k+4wCREA38T@EhjVD#+qq zzv*>=Z~;XIb%2&`Htr$_i>jo0n}1ynq$b-`9KoIoMkAPkIg^DfoQYD3Fe>zqbGmm> zO0uJUB~A0(D_8t@>f|Nhvxg+x*U-dsnp$ikCH$eW+mBqk>Jm~Q!MGo zTZuN^sgq}zQp^o;rp7-Mx)hf+`f6_7pI%DrNRPFarsnlZuX^)Mgv0&e|Qg2HJu32mlBpI5Q+MQM%k&Qd^v3>~8-i=h+Y_;8Z)tN8% z8qtx(6gIo@9SanrrbWGPxa$jKEakGrJ>ONMF@3dc%*!Kj;g>8NPkO;ss82<(H;few z9;(0Nd+T_XQfQt&eEQ~Bkp1Le`^#^?c=4Y1y${<|%H4R(Tp6!kcXjXDN?;~4>$4ls zydg97H8p-Ac95R?_J`CI&3-FZ4yNiq^T)p@ZQ<#cY8Xj8kiMo&(|FNNq0pg1U!u$+xQcM9~IVi zaxsyGnzowaHWFpXq!1zGX5Qej|LGUy%fTj`g;PYLUhZ9d7MxI-1)iLP1E@s~6i|}V z)rMZ5K}+|7Fs|MmQ%aLmO3xIGgOkq2Dgg;{>AeWVZ-s10pcOdSfp+EXY}?+heYkB z0 zN~Ssni;7>;JO7r)1E!i;X4p0ZgvT_zfUGC?kFX*&_D(8U91j()7v0sg*?wHKX4sR~ zB&Sex;a>>+0pHR`zg(2c-OAPAAttlBeg{9QX+bF%iW3y;Mb0%@(8nxI_xb4+9%QO3 z#Fy|X8~DU1*T6gMJ4vI3x>DbJ6}!g2kZRZn?F>KVYe$9XNiO;u#Yg$k94%L`5xqG8aGLykHnoy(qfk3oRO zU;cnT{+v4<+sVhDu)@Ge(~Pklt=P-p+13&A`fTisW;xN9$HmY@Dj0pgedC=XWP{XB zrmI|2Luz*OGT9?hb@23~+SxSq=Y`k;nR%UJsdVbay&iUYQwEu!lCtI&zWOOZb=XK9 zaF!_B>lBl9!|)tMoRwqAP1hz7fh+iZ6+ENJMv`R!vO;V0#A9YMG|Rh|8=EO<=zsSC z?SgN80TYR~tv$>%lVAZ1$wikx(<7bfutE%SXkJd)wg!aAMvoUy@0_m`eCqbwT>wAz zzyIj_Jb7>DJp+tC#rnz`Q(N{i6|8xy*SY=PJzMLr^P};5PX!t^*N3U4Rd*T8XWn`E z_O0jN{XO3URjGu=00LB($q2v)gA0^mujUmLA&8?-yD)72p=!fvI!9HLO^efP{a7KPnN~?s>hCAuIU2tOSx^&_ zi;A=&Lm!zdgizr&6!3V_08S?rt}6i+fE<6x9^-QaW~(GGN{c+a0 zm0SpA_9(FDV&w5W!CK;rrv8&_<5NJaojHDyEy3mB)I0jq5R4&I)CJ4p(2%aBs7*%x zO>gH&aydnur93-0>B7`i32ui>Rs8DnV)THVC8h!z@|L{pPt+ntHFspcrMz%zo?p`> zOB}ymy2ad}kycHdwG3%0VCcOH$F|mI2=nL&7{{f6ZW@w2w*_0T_+~3p93M#uKp~g9 z3l5Mp(MVv$aeQJVL+2O07HJqbu-m%L!=qPF2%@QKZTE&U(UtcnQNw$=P#Ve+%=I{w zCdQ{08-o*2vpf!FmY6-wvggoQoI2Ir1d6O2tuYVlN)~l2W z91ikm{xi?$34;>1C3{tcU`lt3pnV{rx+fCWY+YE! zKc{fFSej^7H~;`I>D2wxq1R69b80#+CBdtMw53@dMp=K{7#{=}Qoh59klw}7W79-! zVNUJ-l_&z0xM@)acHZ2j3DgBf8XZ96m*xq`-6m6}Tp(2lkN!1#LlQ%3iv<}PQX((NMu)XLHY+XN%6Hx>fJ$tD-vyyEIYP*13^XY@E zwIfv6RL4&NA-z#&i_4y`$;upXatv#R)~gsaW8rmkWWeY}DZL$ib}?(H_tkLERTf`; z5-vL&*I*Q(5-;LPE@7uov)i4dP9BP`$GFrjm>PBn9|!ZHq|A{r=9x=QmFyEVqe9Nk zN;{TM3!nnxqAyBJ5F|_&cEO~xsbX~&c}sKiaDkSI@D$T3ha?fH=+BAQ)Hx!QZV-%n z1j`_4Goh6>}Ef{&OVCzHO7g4r$A zXYR?UZ6idkvQseH%@g4)*O#Z-sdg^9Ste6B%N1yDy75_V zZsdSGw~|}LUie_5jKQ_65D6xEBNH9miQa*OQUnuMlaocx{$p4}XRbT7nFnKt4DV7FF4_X1V^?C&U!IoHq-94^07jXK-x5wSS_0IDr zSNA*==ZLl;!K6(S_9xwBfzz9SWdquEiyeCIYdK+)f9lto655)?9H%Tu@4a;E;T!+( z3t#%!cl;AC-hLPaA*B$ebPAhWEE$q%EWN$-P8AeY!c@CPo6}`LpYn z9{i)<``vH)$a{UM{_R^2o4Vb-@4I;}fu~nMC^qs22EaQbSZ^+0yjuc8NA)77$Yi^^ zhx6{%uP1k+4FbWCW!urY#LU82a{qZ1lmi*vt?oN-K(g@(NuS`_PTt!`hc9 zsx&6VLC(5e9x1?OCg|fE=E8KLvH`2616J!3U>my7XJ?gZc0ukuj7`caOyM&bMYnEp zFcf;TDi6g1XF6JeZ*{$9VmH^5US~0Do9-mK_mdh4NSQUCV#hFfrQoi6P1`z;SAD~z zEPI~$U4px3vJRgv?y^2~*wIhy<)Vy3|YPI6&xE%hPA1Jim4OAQ|*~^%Bno3oro5hC> zJbfn&xJi^3CjOQVXaY~;EXC=Q66u0fOpmyL7Z5pXuOi-@K%*J`5><%MvpF^568tm& zsC>6t!B}dIKX_OaRttk=#zMEQtu-$F&7{;HG9~e@n4UKiuMAI;KeaZkSmh=zuCl(; z;U_D|R4%}l?#F*Z)2`4eHo8}Bs8&w861r!@_#BV5oOM-L;;doe7pfG*lS~aYpYV(? z2)(mcJOYetdMUkGlqghM%I`$m*x*Txj-@1{sS^*bw^eH)IGP)wH7PJgP0;SoX2!#L z<$1))k^PfAwzMNf80`LQ_b)P-Mp?;)Cd8dSs7bo0rXX3<7B_`}B0i%a!%USZ6Vm^D zp?NJ_oKRezVyI@=IF}X%YV_>mNR9^6DzhBcaQVUzWSn}K3q9U3IU4}|< zJz67ZSAtu!lWfYIRZ*(iS&{)2W)BRS?Yo5@qQ(rZ0<{Uc=8Cmib1bji9@paQMLm4^H%DpQ9l zX+>!`n7t6qPzP+O^Qglf&RJ6H>=R6}BgloNVX(={i{Jdr&#Qj#d*9>7;3?N&JEQJa zD`B-vXlEp>+c&RR8l9CIYWwQZJ$h!$PB+@U^ACUj_x}8!`?F0Do;>b(G{5VbTq-PD ziotODKQ+*8R4z!CDH1yKUI3h#{W?e_0;UF;0+V>M$yQD5pf;ava~J#5@7xtkA?id? zpVCxqofOS9WP!qMCT1padxAgX@>5;!5+rfKZ^j|3+c((3!vNVpgV-wY?!r)#ZSi35 z4R8%Eh`NFx%ivQ4mV}+o-2+?mfy|7Upjj9geW32hlILV=n@nL8kGRiBke{KmXGU?% zK1S^*9JAQ|oX)sd(Vp_2dYhk$`_nC>m$}lWCjL4Y2jb9Zl9*zTN@l78doh_6MzI~> zhT&c1p7o7=FJj?Pd5>L)&#Z8f6SuVV+J{~e#ri8e?={OOnMy`8@H;d=-X)Gv3VK$< zvlO$ZmziDCuWtKDCrZ$)s}mtX8S~10$u0Bhe0mWk-5J$xhVoG;aQUyaLQ!C#C*y$R z>{ThTtrx1y5q&UeAy_ppGI3B{$1X4HwDsgVEzB8&L^(xM>pfabN`g>HWz(9`i&olt|cHOr3n@Z;2*L`+YLD9h~IT1PC@k%1QT zdPw}D+tW00S~uvV7e!MlDPXW(rmk&<;Jw?7mr_5^p% zoQCPRrub2CBJxbAqVE?hEboqV1&qIzamR-UtWs|sLw~s$x0I_k{yBWc9qUXg#xmW; z9R$-WBV?OYiz6X3?}DJY4)eL^%Xf$JqFT+tjc49TBc?JVK4o!g8MJa4Q!oT+XpeSs z6Z4=ueyn*xle1@m)_+qiT~AU*3TJ`6J3gA2ULQPpp!~nS<9!|xkal`8!9o2bWxyo5 z+QtkBNsgD3DgxC@5E3;9p$<$pDMp@Nse?%YjMR0lX0KH>&2_DPIr`KR;#7rVFq)n0 z#6aGP=isDc{S-Sgy%%Y6RJj$;0<0g6)U(X917mP|{D_n98j;<=UPolRz9kuxKodj3 zyS}|Pv&8t|YH7XE@Uo0a43n8t6|YYpKfbyTCCvP^c*d_|!Ax!g^0E1O%p!e5gu8e+ zc6JuaV5f>gdkHUH)An!vmB0FO!?Y*!H*OaV#L%(yVvRo4dxVat>~DzHRxBKKve z=w^2BSTSebJ6#VotosmLZ<& zv#CIZzof!M7v@Xj@D>u9#I#UcTw=p|LCXupjIKS^6oP!Pp@^Oh3d*JTYff1AM?P1o z(v(AvLy;$PBX`NI$hv4v(@OwjR@7w4&^tquB1-BX6&=!9r`<)<2PUiM4=7{#+mz%G zbVY^~Rx-lhg{i0!$=&Hgu ze`LaNcH?cM;Ou-Xvz@@@M_M4u6hI#7jBweG?rWTL1BN;gN=;aa@Fge`|E&?)jnKTlu|rdFQ;2Hcx?uFvS$Cq`d1zpUL~;1^hjd|A zFE@DLsgj_AuO1Q4QfxZl6eEeP1>27|t z7KacrCqi8E!{VVd3i-qzB=gecJG?}ee!eEK3FCaRNF)CEC2XYnqHOL+>C?GqHy0VJ zSzSUKdox8o<@Djy1c&ryXNK@^@Wkp_c%@TZ_i8BXBtobvJWVFTC7xj@7Z%u9p-`xm zm%BQp(TzhVAX#_}Gj*LeBR7U+I*K=(IE{pMG-wxhmRAz=FlgJP!3k0&2g0mm+jicW z%G88}sf>9$54swTPJA4u!7{9Kov`ABWGj4626Q%hEzgpAY^2PLVQ_`XLnQQ~2*N3z zTm<>(On;MH-e@(i$@$oY5_A_oE|d6Lq0NkgvB9rqki@Q+LMGjLHePPsXQF&UEc`Eg z&b;_>`B=Z@oF`9weS6B}s%FnEjzZJJFg~-@hs{;_I9yz%^)bJ?>UU6e9y7s4B)8|U zUvkHq4X&~Zueu@7fm`(Unm6uI7jorxt%QaHVy$8mm>w%guXeDY`h z)`wqt<8cXxI)ty###~zhlTqMkH%T(~>2ysuw&ECW@+Ni~qi$os zZVUvjox*9;_OEP#HZPi@4&c^_iz11UxJ4WrsS-7kt4O9PilR)4y!YIve!joC50!QH z*?X-y#~kA~9_E;H&9(O0l&Rd#XwrN6nxPqmKQI&`UBWpuC9Fi`5kWAX0khBaTA_FQ z%O*j1V(yApJaOB2RRBY?!4;Usl5?dTKTPKyeN$C!r)-!=kUQjvF7?z2bKZztoIBRU zp6CfF_nj^6uoCNz!9#227)V;+5vry!7A$U0{VB2lh(QFw&u+0oJPTl_7~574^3ElL zG;|>-95N7B3f4jj2MlIv^mcGKZoxSTa|BcQb4bh11xJ6HYf&(#jy2p4z;}TdzT!-q zUKsCex=LJ77u!lRKF&wh@*6c13q)=7hy)K3>ttGfQtQehrGUwRRc8uSI2|jYvQy*) zeUmCg*tLGRP6EZWLq@1bSg?(M=_=sqc6=HPcXg+^@&YW6=5#DGYK(g?3#W2z``nn_ zR5XS5V)30L#_E`;_AO0ikU8`qt&MWsROsw875sPQ zF6x6Vh!Y*m>a#$mD=qYSIbDf^)QDhSR$-veX6_8{!;M@ehPF&hHKntH9FX0s>GF46 z%p!5|S(<6WZvg3jauIa%gYd`y!@4k4Fb^5BEcy20^uL?J5$7G~0 zpvzt+g6me+BMWH%EeZO%x(Q9IFAP%`^Mf&e@!|VleDmSeJ3qt6_dI15g*YhxEN-zT zps=^>(O_Z5IX|4JW5O+Qp9S!NZc>$nkD8hgg)BQv%Y_z_jKEdv#ky%}DzY*Lp|f5@ z$T0I##z?bbF;IA9;n>y;;Dw?onVSr%LUKAgbyf8$Jn-+OgCCyj7v1h1t6m#E7_orK zDas48IOe58wv~z4WiNOp(Jm3O?NBXK`2f~N5lbrV2O`CTZ=Y>@t2mnFr9K8#p>45> zDgzDqWK=N@r)3P*M(K(41n9R@K68;){!R9I9Rt;hoi_qaZXGiD;c{Jljv2BdA*KnU zIBk%m(wW6r3&Z(DhBCCnXGD}h8NIgiTu5SmStpmOAQ5ve3D0;LwYYKQQ8{P@$AqT5 z!(RU47N@9#B*@LS9CfO#^O#GTvJ2ToK%J`Gq-8$gA&{W$wdM@~18L35z<;jCG(4oN zw@c{Q3E1r5Ej!Fy^@|~ilqjr5S$p(>nNroQLIiAVLy%>fSJbrs-8W&n)6lka17$RMFR*%Fycx-sjNBaIj@J^Qf{$*g!=? z8DDWsWp2u_b49KX;9<20CxWoyPFBr*GJY^i)e8hXJG0t|K3&opMd%U{eLL${5)>!a zJVCwe;5qdjwh8Cuj)_U)ZgrX|WbZU0vhwH!mByh<=m`vmh7FY`-NpNWIW)x0N2gWO zOq3~naL28Td0@BSK;G-fi7qcB)BEs8>)-K`96LF)R0S>e_K@)wSbv7 zT@&tVG~G`=63+?P1r9cJxKW&G(9>(Zsoqh5aSXF)-RLr6)}nuTIoF7XTsJ$Pt1yfF zX4|NSu(pVt=b<%P=s``SZnXn<`7d$70tbd%;GA^(kh5yj)(8%(l7qvAiYV2#VG=7+ znNHrQ(n^U2=j5^5%4CO57~<0)x;eTF@HD5COOMuxT&u>%yyqFKwyu?SnSnNp>n!%p zou{hy>wT}i{ua>v+>DPi5cb^9U5<=qg-M%gvsIy<{bT6q*BSGayHV+-oAX}WdE(pm zcYpZpZ+>$1;*EFSZKXl}G#Af5y8&RW6*l+g9^_@*7r!@)ZQ9*W~r+~T4oL-!z?H2wKC`hWk zMfL1fSE8IhAXMrE%azj$^fB`ozon3gJT$;sp`2e8)FnH#{Lra?i zU;(7b?&D4sue$YFW}qJMM;MI4xB#X?QPCU!u89^?cW(m|B`^b@$&2raQ(n9`8y=c9 zF%>BCF3ug@%u)hkkLHgFI^Ey94gIa4%tr?rcEYu8nK_z*Md(!;9|0XQB6hhhd7o~588y|05}MHc=OKl5FSlW|IIDfWabMKWJq<_`pfnKnp3vCSGR1g37)?JXy~>EigoZ)i}hw*fJXCubL@|BMZdMCSlh@hCK7m3x`Q= z?as_7)2O@=gNulx&oI;hPR=T6T&}~%Jh$x@OVvpyMpB;OoG_12+1}neztG@76HzMvj7FetlIMsictu=gX2ZN`ZvN@Z&1akyX|h^W#}c zgFtj->y?0%CY*9F6qQR@aoU^*&$`5vZRn~!1>;Dy!n;EcALBS&g8)oGv%fE01grYA zwb7^$U8tPE#8$y3YG=aQ6k*ifqSd$-)7?9B3>cW`&MVgSp#LMAoaZ1 zeSDfVwtvhUDn}q z9qpPK;I!6BDU8`3&zfholo{Pi?tyb0dH}SPKT{W9O$luJainGdFZ^Wcjh|_J`|UR( z=bf{3m%X0)*&!AWCwV8j9G(qC0_j|IogB5mD8N(*1;cwC`(OT}-@W#maStAnLcTmC zNEU()vPHKympjs+h_gu1`Rf*yLzDtGB-Stp^{@BedwKnxPoMt!-~P>gSMae%(e3)f=x)4 zJ#?{)WK1$v_yz)uG$=3zDf3zNElxzw5GMf15vkGV$#H%PHr=9t1%&u$Ue8%~)k5v@ zuARD&!*eTJ3IO{G~gVVpPsbHLV8s*!;|6q~-!hBONIn*VB;BHA?L0 zs7#R^mLR5R5^)G^4x-r3K{1L~h9$B*V5b?Qv+YIcCVX|IF|6t*^R1@phrv2h{BiI5 zzxWJWoOvfrGRR5nNwc3M?=i6vQ4@RqX@M0y0!vtwOdH!IqiW4{5I0xN136*bUOp|B zwmG3XdW{u-anmkCXnw-AKIyh+>khM9txi-T&LCMI<%vBa9Ezeamm1FZ&f%>)97riO znIaElD#PNUiGZm?PuWYTP-k|Ylah97eb#YE$$5=cv~A()xo3uDJ^9Oklu0&=jn<7` zS}(EEs1a`dWxhI5f-@SnY{g<_H1vsF!(ndaU?Gj90NB|xY*-m7(AIs5C6=jo=j-FF zxsXuUltVI)?dfl$$tG28s+7mlH01)Ya(kz5)LFw-i;0^(qr*Lyt-o~QQ4}q}=Kg{w z<1{b7@ZHJKBp+Ty^~L_|7OMn-i`9|^M2|oI=rOI_A>WCwYQuCWjd>f&Gw!u}v>YBx z8CV=-Hwczy1zk^JcWZt3uif$RIlp56X(1}HygCo$$J8p+F>4AAXH$2XJ5f+_E|@2`l1S$*cLX^s?ckO zI@i~5wKIM_rGQ<3Nj37~UiXOrhgJD3pf)Z*qDmNP6+U%EqZpX<#R*O@>u}pfBp$o2NWng!LPQSe#-08b7hu8$`Qr8Q^jp zYE`1s$lGoe`z9Qf6j4*HhSM}QRiFDA$)I(ouZ`sdMAeSQ)MF+gUKVKc?T)d=`&bQN zlv+eRaHl*iV>5j;%=E|W3sDVH5Jei!{pWymLT98|Cy`-jVo`i8W2%{~Kx&40Gls;~ zd@l#e^THXkGi$Qy=sl%t*d}*srSHIw$t07Mzot%=-RjR|>9SM0EO1nYN;A>mRg|Dj zx9#|tMlB63sVN9^aDpA@<)G-fVKH|ou{vaV;haJps{)WBxgHM=<{fHh2O@|cs|faU zWDe^&wnIQ8zQ7_wHF+=mbQ_a!W%VAjy3W|bwk@oy%AP3eW3!Chro0o6+)27xq9`(k z`2wj!e%WQb;6=9PE%qT?6S8Za?P_~y*fY6$perT?fP=Lq9Ob%S1k*^5?bZi(`lyj= zj>@5-thEPWHc2a|^SZr*Ch38U(O|VsnRb#9ny^D@AJ=)X_+0#a9)t&Wj1P16Sr+ej zHg9ctRiP(kapD~&ly$vDT2=b|vK1e*c9F1g*RipiSDYp7&p ze(z;2AM*9tI3{1As*Bc95B%XUTzdVftp?i>w2HZYbUTPGS-T;OPLLTfs55xT8f68? zyp!8W#xafJte9E!DcDG-N2(FjfEq6V7FKZ{yoT+=O|Z-|(MOu~;(s>bS_hf?HYiUR zw(+NPL6Wq_<;6Mgmz7RQ`3I{yb;fLV+p_Ii4Q+w3V*7NC@b%L=q z_7-tGs5MUn^RA_OAg$6D(Vg{E$PB^HqCfTE7$+{Tz5WFjN{-o5Y-(1hQ?|C$Pux*t zwS2*j3t+vN5$PTcwW$;B!-o$=)Ia%yKm7XF-~IT>CrVuf)TdI$SbX1;cLI%ce3iT7 za`x1TT*NR6m)md$!t_@Cbi8}@;QIbYAAaA@%6|2){dGauO>&7IfX+eY(Q?atKSy>x?*HIwzDU+%yrlV0b#DRw) zKAatF2h(ouNkrPkNh6hIIR=|qa8s_9RZF4SW^CIjeVtko<4{N?-Ikmsmc@FUOA{yK z3%$}ubD7PXkepc*P`{lRW>(+{zaQQ@3K+n+bzlb^$l~u!uVrB$2DYf&{5=7TgVW^NL z5*JCFCpT?y2|)^OT*_RCGS3>OK1OxbZ3>5{hKKWnDr^wN2e-4`VlHG+-j-{n4>-J! zlu{hDDs8)pOkBYipHp76b8!l)>}1G*fl1yJGUpn<6VtV-^-v{FiS)(qrdi8eM^;V| z8=$7cw6Krd9KYmJ*X@w;OtbbJbq$qRV7HTwa17iqaNnLyttp9){(~v$g0JqAC~Y;& zWpUBg*4l7eT-_sSm5f?=Gir)-NM;i2QOc`Q(LPoMdr5lcLbG!9N(QBOhuzP#`67d~ z90bCVGTFg=7eNXY=}siixe1t>p{(;Ze=UtFmJ?ley`5dy6Hb?09Y`p{ zUGSb%Yk%DzA!(U}J2z3d>lYuAlZ&xX6%9PQEi1_z4l%c0m9iNtMQd~3&6ylI#BhuWCU_G%!001ZCwDzDO2rnirPBXA35oip_>DR~FT9b5~6qn?S#XK~>S{Mp-Yz8lfC@32_`po#ux4YiZ9vr(%4aenMaF#rqXfN|<{31VbH(+8bW7I8KO9OU z#YaPqJlm+5kYvHuMu&_Q2kVpBmkPnED(b0{lMVLbK*Nbh3TgGdSc$2Lt2uZ`a#q;R z-hgY2pU6|5xpvt7+wC=>go1RDhFxd#YrSYl)|?%5(YYR5v%XbQC}%FB%O&lcB`X9l z@U^m*aU3FR7$^(o-2)>zb5?F@dVw3^$NiWZTk0=;p(9AI;TFE6gx24B+JvJtt1RtxfG1Z+!}2SHxIr_>DUVUkCH$8dbKJI))FCIMV|LM{Rp%3KPYM~7swCiB&c z7Gu$8=m5izbUashZrRPes`MA1_*ZMf*Jx^ku=}Q&G*F$^C~jT-2wrc(P<mnr9!x%3lr`S?>cpigLv{ZKCLl zZr*$R>0cPyoqX$>&pdUV0WmM$z2jk7+FJc{8aYk3XrD`hR9z|APPmMk_dML~>9ZTo zX@&ag<*To~oqf}hrsyGL^TmJokqC*EbK=P=pjXokdNpxS!($UP9s+;w8~^10WS2L- z_=T4@&#$jvT$_ivDNm?24EW-SmW64{gX>5C{`(*N z`rrOLs60>4FS<8b5a|pVjMm9&F$dBA1a;@cjWVk0t=i66eHCr8vKBqNw$Y?&TfM9x zK)_6(jQQ?{MwDFK(wS3wFdW((kl9nO`ep89_Mj z*bkpKz?1R0dP=#XzDii0u$SS=p@T}@=w6AH*&3#V?j zzfG6uCz=;J&*0*Y*^S6akEam~V|LO|=Svs#{AXBxf-R%T`@W**Mi;n1Y$B^T-`4J$6l5%!ThJ z9XM=lR+Ctq)8ZVpC_DxvA}0KIxTT~F*YV! zUAatBUz*X7m$51?Y>?$C2lcB>?Xz1>aa%I4#hx*a4Mih*tZJOc@`b86=eN}GZac~{ zHD$2{US;c+jF^2@oCq+nH(&2IYkVG@gkRTb8Xclm3lbtq&WeQ9XXwugC+=VBcNyQuf?&v$WN`M?PU&bjqYzOPpvapEn`Hk<<7t9#_e*4!{HkS>!{h_i`dwE6L%D#;^3 z+K|2OpcW+2oT4y@vzX0&x*fY?AFSmgydglR%N)hB!XEW?T$!ZWwMXsePu9 zz;u$pR=lEnRGWRMErfF-bv>DDUvL6%cGr6WTfPyp!w|f#;+H0-2}M#tx(sbYQQho# z4;zJrW1gu412CO3P@!;wXT}T(ESXhBOgi2>kMDlnWWjxIGbvB)kd$7#j3mo6N1w%( zaLe*o5|lY!-g)51&do|Uq1L)tm;E_h1~DV9E+tRKeDVBA-VF9uiRVSAHpb3nv=eW( z)3oSadq9hy!zb06!ZU+p7!40jQo>Ha)k)WVk709OG{+ZJtU54RZm1?J?V4mtpjpda z79POvVZ*bfgXf3|g}t5loE++^1FL4j4H3mrdsx)COpLDyJg@;t8{A_Zx@?OyH{7A z{qRR2F#Z_#>Pv}I<21|&z-30w20NGMEactSU+?YYzQ@fvJ$L7vvw8h>!vZ*4#(diS z>TkdGQviANcS~{2y|kbOG|MntaaN%fP_uN(ZuG)rXK<{eFa>f^L)gRDkpA93_?y~(=3W?dHfEqiA5KXeN7}3HJGi0`&rRV2&I8GtuY4P;#^DY|JmtVfPfA{Xk zAO8sDFaFx!VxmlFqy9efxV`YtWkC!OYm-=ZYJVYg#`RQLyoqos*hgtD@xZ{ZLy%Y! zAf!wsoi-bbTVhpl0&#^?4r(9&&fL5=w$({ah^~i3Rd8a9WAm1z93vmV3z7z=BO-<> z@H+;!e*%8-nap}EF9fD;J+Jk?1L1c%OX>Fn9(L0wxNdB)T2i>ox zV+kh(HSHEB1o%-s4bFYm;DxO)&XcHXwo-s zj!4Z|3(eH#iMnfpN8W|F2+DxdG(+18h01FOOmVbpDoWapHBs&)gGYup#WGDTyYnL2 zLVTt}q0cvAWYkE0LM*~g)(8^Olaaj|ZjehxHkD>fp&h&!=zVB*lMWRu?!`F!gpg~- zuYHOVfls`9)s$w?uDD`uO(7kwpLpyVVhISlkUD6ClDMR_DO;bTIZ=RbO%lJ!w z&=oUcX~r+2*!A{~S{iB8KV-?nDF0!e9Xxww>s4p{e*!D7htw0F{KY4zyGmX2xE$4U zY{2GKc5Q3Lo(kpwdSYqi{{$&|IElHk&S9oB%F~zLAvDvCt!c_jc@*?pZ%IU@R{0q!TkX>qESj{P=KAZ={qIa zwy~}|GhbXip`>N{PPX$2&$&!*1P1c%qx;`~?>k@r>f6`u>VNq}7R)}DEn*>SW!pJx zCJp~|=~E1*S{S`W6>*25C?pF5kcd$Qt+m6Vt?2I|U1s~TZKNU+ zA)Xucs9%+KxCtZwVl|TT)x5F>42kE!WRK6sIOVwtn0g1B7biTn*v6y)h^Ds5nNls_ z+T(nt6c@Ej{Zv8(9F#lm@R*=boB1*-l33>4jk`+Le=_bG0;LSeWYfOXb}o7r^tD;(q|6L zBB@@S1XDtj7?E)>A82!YZJVdI48_f-XQwLeQ`t^o}vCBG8R?5+4rIS~rWLY0`Q^AwVsfF`b0S;%mCj)ya^JAoS>jLhd|aH#`y_aWm&o z$pUFR{VN#r9kP_8aiMXY#6C-Q*)g`5qnO2#xJjZzh>ZtDys9ZOql{S$je-RzgK&o( ztm~Iivo=N!C5B!46byk%aW_C-ZuIaJhCvY7ph-GzYf`uo z6d2mEWO*ce7sm0-h4nAx^(vcQSt4Fs&D|lSf^3{a?CuShOH{Y0LPsZR4RYhr9n3*a zkg7hmN7IzelWBlg)*EM~V4#9yCS3=&W(exJ3!{#7flW5bx`|Lf_bN|9;3rNwxdd2z z?gm>7}cT z!tQ}@>pd%AievBH7N2QiU1Vl9W-`GQbPw-dfBU;X`1SwnmuYy_GxcY#a)q!TU?9@; z#I_Wn7cV*Yz_IBySF+XJp4^p2CwSsPDu20|uG?ScZBiJ)cTgRk)S>yb+&k~>LTxQi z#1gzhC7IAWxzR3`T=H-Tr}u`CWYjAc>>c^9&o)gt93^BI+{0WkhM?XC5nO8 zDcbSy2D}j~@wuJ)yQ)qnvL+<}(;TZ5glSCjAT*gfEXqnJs%v|AHr|n~Bo#`U$}cky z20U~PA-$-8YjL__l^Z9I5dhB!K9Lq4)|dkMm#1mW7!^D`FKL zc0Mg8CN~}iq}`anfTsx}BjVP<>c+JR<6iMjeV=t9ZOe?xQ1w?}T_|g(qPn=zCPmIh zR(h=v9l2=Yo4tG0FOGrKx~wQ{Xxkf!)nC zBjfhDbVg7}uGY+h(QL1ib@gH4iw_--eUP>muoaQ6Q!qShLQ*FzNHY%dCT9Vtl@f$v zvVg3K6rHWcvjXt$_ILpqNAnbCKK$?mpu0FxrDoaO*PC4V*kk7roY0E=2%&YR%*tcZ z{w~n2da}F`QL-y{q(dfH(#bVxktv$EEPLj9(>qNXnP#{&s?WN;xlvHnY^Y8Gi*rg= zE^Tjw&OyA8g%z(`MPNVDb~a0CuCHHck8wPw${ZQh4lB}#cYGcu5>&CAm!nZg!4ilr zxkFZw5S1`{*D$4s^#+`^qNd55w|@9>xsOLIl&~re6fe}5rxP(vV+%Bp^CPFUY*f%U z$(Y~wh?3FZ+H|LrzqG}Z)+LXJv`t8 zsW@0?F|VJCj=q`m=x(9kr9d7imE~%G%l-f2fBB!D7`9*ig3AD9M_);Cz2Aa+mrL<1 zrJw6`Po6)u^XP#u;}tUmH9Ng~@2RKGCB!e_gl4v-*ZmKkzxdU^`}f%Xh516alFWC> z1%NFCLC|sXml;b#asucLZ_Rq?r~Gs=#U>C%!W6^@T~1Ukw}Ydkn6KxORopHB;-A^_ zqxS^T+>pE>Kr2IXMoirt?jX4pl~m!>xXTo{)iO#dtU3|tqRc1`jMLEuV7lZHjx?tu zQN9ZKsj4;sLfgP}dTtSRa*m3_ju4a=AdJuzv<{E-l8-QjqRf*~?9IZQl3%)t8rfF@!zbVWvd@GBX2k|SN&Eg);7XCa*4vnQcCbG+7uu~Be!r$ z_Pi}ztC}A*<`wjT-{n9cRdRgzHaut>TlU)M)y_bg=4}d60+n30;?n91_V&spma z;ZfSU^n@XRs;<_~)Ltx)O3UUVg+S`46|3P(e@TFf|mefcO@ zXu?_KcWb?X#7EoWe|Abb3t200_h0I$ysiJC7^X7J*v6 z8(StKvF?N6M&QHt=w2_-q@k^Ul;|lFi(}eqZ=?Oxs+#FCY0+3ZK0AUtf8KbzNyxJxX1y%Hw?egZDoYjyFzww90_x$R&e%oHKaBQ&uRjezQi; zV>K2!O9u+925mzt;x1EVO+0LOAHDG!=k#!88meI*={?ovruFL`GT?IK8PYPBV)IJs zn17T%Isfjxhd}?c-~HcTcVgTeYB!2^la1?7tq3}aH+CAELh63)zLwB)ctBvVr%#RP z7O0Hc_mr7Aw8)U@dYgC`3?f)wKJbO~~iT{&%GO}Z{=@jdvYeQZ}PHV`a z1DJ`jYO4G6pDpK_b>hrw!?S*sDKbNzogXs`K{G)XEj;23VvHS}V3<%xx)_G4vQD+- zAB7b~JCmwzQx*#)I6IE zN+B*jxl0zPdCNTUPlpUroD4=EV^!Q@IE%5LYc5Q>l}pV}i^6!*VmR5nIRY>s4tCXt?e@v*aQgHkMbzmorny zXZ@P5;c0TD=O2P{VFP5?6OFBUxKfgo`I2OXwQDf$GZ47XuNhifNp^PeJ_AL@k|*wXK^m8EhYTr(y|$LMBqh+=!b)RalKosSuAIFp-gVH4jlz(1kuD;X9Oki646 zX}elHHch>cTQd(cOyv>X-aMfd(hUGU?H|3c^|HkWlPztPMaSTd)4l#s8WKv8ZACnXr&!COj0TYr=Y??9r2MPzX#Do(5+V*afJF);9 zZ=O-$by`OLLO!99$?Q6>VX5YtOp9vDl+grM(*~~2uF`ILl;!ltNl{nwQuX<@-hnAg zx~L~47F1f-YJIub7*@=k>fz&S%IP~brL#=ay4sKk7n@&aEIB$0#g6IVqtvc^WrW-rS%Ofk<9I%_)cfFCeE;A_A9@aq z30EHI;>4VTtKfHC%VX%AeQNyDx_&IU+9@&t1~a3hpNG*|6Rw(Kp#)hRlFmQ8Z2`9h;uC1cY1%xW50v2j6@5jRz0E@@|?G+g_CQ z4jB1@yvMn0{AP?XQiY~0v<1j43`DV1&as0YE3Qe~@vBAbk}wVPYz9?UNEFFxVio$< zfi7bfJ8bExmcp_Gn2RlK2q*Mjn&Mq;J4|Wk@%R zkPat~uPGGet&{??v3tk?2z443-szIF%_QJtxA>3GVJ5#}s|j-fgLP!nBD0&6KS6;N#AU z2~!m81=F~h@#LmJ9X)Y~p~AWER0UyLw4>S|2hJ3!MFrk>Sx$V_tqT)8s6pwMo7dI z@nN}3Otk{3Xgb!ms9Z?gdYpg)wq?-%_K8u`im1Mi+W= zhz~M)5dAa1*Ye`tlc%4!m;KS}Z<3{xG(pdCK<~v$XVoG1$pC%Cpza^LpX{egrtp5} z?yG)5?pxpb^LO5Q<3~=`8@x@ZG8}swrdwdJLQjy}<(^o5r2xd{5oRsBpsj#=0JS}T z`uyhU%lkQ0-~RUZzWYmm{TH~9h`SFxC$|k@{Q+#Opkq>pg{uH_MloRg3vg#2b4|Sn zREd!)yMQ7p!ssx;d8ajwqo%Q0{7>J3tw}~V)w9#ThB!%do%l8hD5w?|Xmp~Pt}v$h zLi*q#F}~|}(}jVSueKi0iC@u?I2(zM!)yk%;K?a`KEPGw{|hk!Tk$qEaZ!?9GfsZ2 ze#FJbMR$7_m6b5m`e5&x$0`oB%H+9d*_9u&yPSYIvD60x*fmSNHCxLwVaH1Y=&?(; zWugS+1AmwHLBR-zwG}CSDje?`PMK-}n3TM}JQBC8rZ`LoPHl^%MwIbv88G(e)`m$D zt}PPXZff&Iti})xXK#`S9`1TzEH(o=fN|!bY_YYA3MsqxM!|Z)tlv|RSQfPq>2Vc4 zOVf6sa)&u>sgtMCPrKZa={X_?q+^yJpY5M>tcea1ZpR?qJv%G)4WAify<;?6tZO2J(w}QoB3_>f8>6wNX9tkS?cmCZV!Cdv^g$;UDW-pmiIc&@Rx$SW6UsrT*~DxCxym5N)O%=tU*^_BPiMV4l6R(s_Y_Z8lK z;|s6eefY}N%bUJXXEIl8uodZxfiz9m9>-Ssx*K?;@}QIc`ZWXWu(7N}{K3EelOJC_ zd;P2LK7abyjqwH-Cm4B&FR?0(mBknjrc9Vh+4K7Twd)7A4A4YtKMLoedoC|rdA9s( z?|t;iFZ}ASh`*~(f26atv;*Loux3eLg8(sW0y`oRllM+36~q5&)CHjai<_<7$8x3&$* zSthUvVub3q@GjDOa!kBKJhHXW;3q{O_7f15+Vv%Z%IOp@!h)-{pTQ~;JfbI^F`2I(FF zEo6is9F3HyRdpu60K^me5$hN|4>;>yM%PdYtbJuU7HNwbLVd7pzG?54fo;#9#?3w-0G~xyh$YLqY zB$QIb(fKsS=onUO#3hc+Ts6;?ab*W2m=td@&H{C?lYKRd&W(p@)twB_W?c`Y>xpzu?mQZ%Ti-kXG(*;^VS)$^{8EeW zh+lV$9@u_7t(qxfDtt~wKug92a~+Cd5f2<^_FFV`nStipJbU%>pa0|EeQVNb`q z(^BJ3%6+39Qd0}fTVo`z;M3Yzn~tIDIS4v4N3*Ja)H=Pd=y#TSegFB3$AtXafAimI z{?Y>>c)d&|0MJhmYoRsVBQE8$HmTkLZkeXf<;$5dAzn~e;D)N zWHn2e5i-u_Q?%GNxyj7P4go%k2g-LktBT%ki^KLLfdyW;QG%mTRdS1J9|1tGT*c9A zJxI8gfiY9ghR^EtwHT8NylI7Jd`QP>-K;g&jrY+fpx(i5oBd>&LRYGv^fZ76{SJ}E ziNuV#Ey)}?mDel7z!I`sB4eMJs815oR*M9;)ANhkicJVa&5~*@v-pKF@;d%nfj}Q~ zSdtZ9aEK-7!n;+M#3dyRkqrWl1!CWrta1j;A8zD9c{-JbSt^N#%7pbStdEaMBuQUHf>)cFBFo~?e&3}Ut(TomJ2GZ52_+7Ry%-yn2}YWnl;q1RX&QY&Z0=o zI7i?jqW#JG{H(4R&_3#YGkCD6Vxd4Y z=jw5}Y5j!p@7I40=JZowBj+zL&IQo%5;_ELJxOD(cj8NB5CfwYv4zAq&HLR`)%!wh-+%RJAD& zM4Q#e4cjD6^el074-cF4+H?(s?wq>!*{47B3$I^z<&~S~&zxOLFGAVSZ6E~7ZE*(m zD9a><@X|Lj?>wTcFuQyA=}tVt+?Z&6koGsuEm3LN(ggwwY zeCGbQPNACtu=&#c9nadme*eQCymIy8Kls_3L= zee{Gb-)o|(C_T+j1$O=A0<~;W+QHnFS?_2v&Ma`~lX6KWRjF^uYreKpfz{&klDlH4 zDgpCI9ZiAmaHL{2nJ_I*h*&Tby7t$Led=6}YvsKO*6MP1WPmpvT+b@N6wRTsQxS+E zLVb2)S!(9*wGytK)Y%4!UN{~k2`a+|Z-sH1L3S92MG!9(GZ&lWB=XTEW{tPY)uSH}?K=+yp zid~^k^~Cn%b$@5** zYyr{U^64bQ*UJ0kU|5{NRzfTSYElR%^Rzvlt5*0bwc3-Wn=8z}nCm?LSeQ>!Q(dqrDD#KvXl#(?u7|g^%CP{9@0YGKI!Z+;*x_94fy02{I zg{$xV+i&6Bb*cuAkT)@@$IMm~+2rZsDdi43UG{^jVg|VZc#qLB`ihOGH?GWU`RR{8 zd*^Fk!6(%itgrtuNCmYrnyq}X)H>NENRCw@C!QD$Cf+%nakXJJ0bnegNy?O@8!c2MqpmMgy8pLmp1T>nDCUsHX(55810pG$ra z{iRB2wkcHloYFKgk1!QQ05@j^qE+n{&i{t ziIR_|5yGLJ#}Jb{=FRF1g4hbS1tqynfTmz*MLqVCCj(031S?$DC8ERSRfTv;GgVEl zCStg-RCUgK!<<3ZrT8SHTIe$XH1!+wdR_-tFc3K<|4Sp zt%&5k5F;?`ws2+Xw*!IBl4f#m3+a( zBh=Mg-e_nUE|g>16=H(0#gCn+cET>pQ*5ZRY%F8gU;xw_)3TIGOD)k4QtHkNorN~V z4<`+jr+!tb*Z<5>K0Nj>7yEJ$E~M3ABMoQs==Le6S7-m&_JmHrXp{p2)PD+=rfj~N zsAL|W%Z_;|*zIQH4>O7el-wGA?}~=jz);}KyPm_f8=_JKfkqALHs-y$`@pS3Y$Cm= z99U$zDJVpril8O!+%thKLlVc`#ADFty(q%*0K*@)<%>%fKxPV`81nd-bVYlFktQrd zg}PotOg!f}Owb|5N!v5mnGb@L{T2X`X%oMGtRif|ow!|US;h)8^OEa@=OHsLmMRd> z-S&Eb5;s|W?HY5Px0hZ3vz_GBzDe`!GEoV0D?{N#;)tyhCJo)O^ zej1SMui;B0H1JF7jI1rKrK2>RIwCE*dppsxPVR|z<}qf!H+8G$k3ah0#pe<@44BVXb$iiXR4 zOGE)s9+{g|H*InRRdU+wpB=qeF_ziEi(cDLap(+oqa!OpP4%+UbcjPnI0e+1)*>)(BSM*5?BbP5$LL^`l9E4Lm(kD*_AII} z2|7_BktN30oq= zL0bd`$IiJ4O)o^?5HTshuy3j;4^@(DV1HHkAM3C{oo9VJ7L~^6oF>NeG^Aiar}6AX zy-U)Zxz2#3Mg$yjY;y@6lt~?{hPw4DY&VmrLLZ~UC5p=&t^%f4q0^t%;hH%B*A3#x zdYuzjpEgq{{T8W5J5fdTU&c!`7BHn{jp)JadKcg`n^~aL)POH^1RD(~!8RhFVJKgcr&d z)_a&xk0w-zjh&l*Pp!eySIF_!a}1)|Gy^g;Ib(LbA1ZzQoh`^?)x}39!aRL5viHo8 z-J0lQ*!PfE>7%@d3n?03U-`y;E$)5epZx(0egpo-&<;8+=aJ-IHz|V`^5RIIiEZph zcYfrCO|q+U^O)U=+!Oqs-hJ`O^OwK&-~N|=ozq+bw7%jUmyyPU-7bhPSw$s{SRmUv z5JWJKvM|t~fN8!9#?EtMf;!rbHp+Wtfd%9|E~E<8yij^f2%eiphkMl-4hLKp#x2Jx zXenUvt9|NULW^72oOuOXAu)skEZ+)`JW>wG-dQuHI%mMqVX?GL^)f}hY2%10^tRMz zP33IHqOpoeg_$fGm1K7qgm%2-E~IrjB~YbL-eRXHF6pO!S1>M{)FKEVUI|3r<=;7l_76?q!Rm~&RBy2mF@7oWFS*@KWCK+>=rVeK<7{@w+h7wuf zQj{#$O-ikqC46;3Tqyd;VaBb zNL%Ogd<|oV zZhq{2B>*~YvxU^edTy27vJ7}4{|o?MK%l=)#~OjVe` zbIGc+G`6!qoW&=K1dYrX={VWhe1(&n`=ZE?UI5fP)~fJO#r_KENte7+NyY0ptWX>z zcRdJ6%Ta|yf#q`Tsso$!9HE(wrh!Rymc8$BY**j>x8Hotlh`tbVRqgNh1>mIADJmEU80SXQdQ%;L z^T7t7>;<8w8y9B2OXevt7Vw3A5jbTqmA#IBeXM(`@*+zU0E&$%m`!6o==R%-rXUa0 z-cL}R$pqM!nAc>AYA&&i!>l}QZqIxMsoLb4yyCyfgq;g>B^Hu;y6+Lj7dZ)ivl6A{ zAthNP*6OLTsn1kWxQ1#2tsW(%Eb<(yVd2lxx@%FhO0GgS2gYw?C7>C|d%BCmd}J@b zvOF++1IE6L*$&FkEkm&yvTjQW_`*o-qK$*{rK1IlHhoW{s9En#T!3cxGNY{@0U1c8 z3gm(&cNu(m7BDr?s*}Yq&2ONMK=zN3V&@*Ao46u#3v7{ zy@KK2r9QXMu;!Lei@gE~xRPIV&9_q>KG^mDDV#l3NBhVQS&DfU2q)QnW?d z^s4V5o#k6ei`OpmW|PcAwHl&cEZIejtmvvJf=d#jVOYsVDOUo(l z&{ng_g%gZ3f-2Y)M4Q3LU~|KA?f^8IS^$ukd3Ffp0hWumZb9?}=L^H;()#6mlwmK{ zhHQ{{#K0DsVmfHYL1Z00Cd3KMHNw;wT7@Y{-3_{g@+H``AQMxQD}`nIyMUrt&u^Kany;xC8Af{cf)@`So0Vk?5v(wnPcYD z*RsKyj%@8Yr_-eA+k7;vUUf;Wln*FL_gpDU0b|b~k((?{cy-ryOLwyvKJ3{U_6hIK zjW&=uj9{H`IRr@Ip&k1cGcW@LPa{-uIAH3PZJxK8D?2o;B%vt&_F{jp$Hc``N$yrn6qYg|`3!TnEX9z8|F>wa0 z_DIV+@Grf|<~!e49P}((=&*Jmmrx*%y$~v5@g{PNl)SL_&h7M}6d0Y!dL!45@g~Q;*AL&IAmQ{7WiI-QPImUoy*029;je527 zXgVeib-FC?WZhILU6$gl3Iudvmo1XXu%;s=0xUyYYp>HV@MyNyg*b$wtr>fENuvcH zpX=&{!mN5iR#-R{C>k&38dH3gIFoR6yUZ@R;Bd$=#Dv!xYiNx;n71GE2b_7WQg}*C zwK|Xxs|`nT$*OO#jQ!bA^a0i(@FR#Uhg>F$8p`AAIkA-!(49F`td51FiGSE;!wiCu zX2nCZSt0~cL2n7<%wfsNJImt?P&o;^%xt2aF$-4~KG0Ic&${Eh?rPr}dt?6$iLBX- zQpkx5Wucrlg=Ks=A|`9$Fl1uk_%X0`7ERM-(sPRT-l2+7y|J!$_+Q>FjB7F*Yjq-% zqHvtH$Z*IzHBd$`7*B0@SL)-WhV|d(GPY(QX;kuPYg6tyv4aRRnQV(Hw!!YzV5*+ z-}-;P{pBye_4LNjVc5eDi>*d$nS!x!VS3lCyK;-QJJ%X#)W+M|KGz8Fo){w_?>%_% zwDXLscfa;Epi8o?4w$75a2P1JiGUJ{6zmPjZPj}9Z}xq%v4_qXaZO|Y=o{brxu5&0 zXX&(%b zzx3BIxq9{)zJ5tAw`NsowjXq%Q)baI0V_^Us?Sc5xe;o1%Y9%Aj0JFE23KQ&74;08 zg0{@SaO>9~;I`13^3}}7h!?md_5yc(KmRW9e5T)g#1W8?rWX_#jJs)E#Px;Vb&Wz~ z@MJVi{0x;s{bE@&U&o>`bz1CHVI_50<%J?MpUmHM<_z;wOaSq=<+@o7+U2iVrV3q1Oth+?!FuwXKIKQ0Z^TkF)#f(V z>!3>dE-eE*ndDy5?Qzm^Sm$Fi&{3~DWA`jTAWLg7b9S~YE7|wz9C4;VW3L$9Z=BOy zuE`*CGMggszHCuL65}9XSe+Sh-UNsxV^w^#qbfd{dnr&wT#7UElBpUrTJ>F~xlVUm zhf%J9gmK@A#O+{~gU2KT#j~5qPY1&m|3;mF)kHV{TxjCJExiYb_hv26u|@-cWW28 zBCxH6ri*RQx7U=_C$&Pg?i#pY7Kb!H5kk*iw8LR`Es9LSbgh0Kt(PV=Gx8<8K9%V- zPcm5B!YS&oI%PCvUUDv!bxK(dO_alv%6jtlsRm~*TNfoV2UV3o5{xME4|G{ViPDRC zah$)B1#k|IThcH0lU|UZZ>SoEw3zM%m6I@HHiVFF}p#;|xxLdNPR{F32sjh}c8OZs*jJUWTQ zFb|3!cF4zNvUWhl=-5p(Qnu*3-lhCHX#>=C^Z1v*tpMP?5|CLvt z`3f0$yA7>&CMB5Z&aCatm28uWEQo z9_*Po<`$lvbHCZrOAp7@^gL0gfTF*7hgmP?-EH#HkFznSn+QPo;p3ZM{*AwrzTE{i zg&mmYIL$>as0Od`vU4Fqo61D5-1<=ai*MA;=eFj=;95&c0z*SKEkyJ8x*iuZ_lPrs zOkIa%-ntkw+YKhbx{pEebO@!%&p2ACt*s;Phhadf^~w$aBV*m=y>bGC7yD{kG!|co zwIFn(FB%ozXUPCS;_wJprJ)9O^A%xx@ML&&wnn{6pGVUDBhv_FZE-$BCqe8{R?QUJ zMqKcnu90DzY}R0xCZ~1nl?_L_)fqIaAJzvy2Vp;W_}1XI--a1Wf4j1-;pw>%u~XhB zt96foJ9Yt&LAX%i?wjj7(+-rPLz8*-X5K>pvb?KgSqH-IhgTZA=m0GmQgd6tt5VrJ zf=n>oxule^AXBMo_RN)9t%-bLCY!$HClv+R8f2WP91d_o1r6yn4bll9d(HCJJxG>-O#jzFc!$t%zxoKJQ2ucZU)|1t`JreEcch%FIJIl($E*07hAq#!@PNb zd+4$pN0-iuMvyQqy%ENcdf?Gf$rcSA!LJrb05V`Rk4$n*wN^{Vfjx>h8b}8NZxtP( zb-SwN>r28)W{D8jF89=@lkQkQR~6KQmYTP{nskMui{0b}8~@>II4RTV+jYq5siUg3 zUrInNzxnr?wYf~^S=*V2n$r{v9F_;CC;_X=(OI(SjBx(V9QYAL2DS)j(Gu zgk0xw^`D-#^YZyk-`u54xkLPoy%k1ziR`Fo0u9Aegz*ra?yc)v@pI-uz zEz;P2O6`nM6L4v~wpm@cbQqESRwf$onkUo|E|i*JkH3dA9_y72F0SBQZ4o48vZ~pB z7CWY%=9rc$cb!hnx@Ap-R!utF9=Z&QErm7gT$1|tK_qE5L=K|5a-R056M<(9;SvEnEToaxv(z4D$xQ?fx>bFX|vO3gwWt2GalGUo6C2e-k( zWhcqUz=^5tsAFiS$=<;ruwBK8q?yYwlVB1Ql}X7N?sp;kAoZ)S=yu`o#4k2pG zL8Ybm1CjYJzN!x(7sSD{<8Y$O-5Sm~^@Y+*q;}7#FyiCJ(qRBhGUl}-ZW9{dR2D=? z_<|bbmN;2yO~xX;c6214AhVm2xSq&9sY_8CW=&18NvG_ee`1i8#wy(k+^KU+WcZu{ zST;gb7KJ{~rRSi`0Z2yfkDb<$j257Q`Ty|;(!y@WiR*4Wz z(Yk%D)V5ncsRpHnc!FSOax+Nnm1msEoOk*GvA)f$JYpOKg7HMEF$VZxkhld+9+ZF5 z!rLgR>kxIBYY3q{ecYTCfF%pf`&QK;>IN9bqK#0cX|QNPIJ4=Cer&fczm3xmfOJCO zmr%P^;ah+BhZ;Y8@JPz?Ybojf{CSUPoevD3fP)U;y*&>G#gfjgei_zT+`FOxf7p^#W5*Lu60WBlejk z2Q1xr^y0y|fmFdehW1n2Il##X3PKrBsL!CV3ncWTD7an3&3^Pqh@EJg=~=+8W(IGMXO%GX&V zvmP5Fs7lqU- zDo`xB6jgaPt+Ndr^J`>?L%BJo2*@=F3p%Zr>#&8`IXy+1YB@a7P=5{uKFUuwKVni0 zDpSh~uiVxyT8h*G%mlLXB29n3R3oUZ|In8XNptNaI)x{>wwFeTxt5>uK?Z8FRa*+< zETN2#3~?DI9a3SOSb&)Fdx|BIz|S3nKeq+d%f9h=-5bL|-Sc$mrU(UMq+P*dEH8M% z2Cs|jfDty8aj7P&mJMx<;wPFrm=wULe*~gdRJDb3Hy_D_;Y6COiqr96I6UjI1R#MH zQ05pp6%{5Uu-GM04qaf*_QE9UYChF#j8aFa`ogJIW@P!g{Bn{Ba?&%(8Wu5SlNl6=zkckrC5@wGQgWNC zNI8W;^hr1bYTu7t+l~q(ENu(FPM&f)&a(-br5C12R*`v3rwJQ?vy%ob!aPIP<0dd0 z+Mud;Ck0F3hTmJh%Wf*VbfP(7j`p6*aPc<%sp+|Guw}rw#0W|DStNi_V@}LyNFwle zv@0nO6QOx6F_lCoozdjNF^h#V>(zYOk1Og0MFId>I$#AqMB1`RI4g{0HbFUaxX}I$ zd?qG@j3;{P9LRT<93!*}GvJoAJ5|=N1MBMh=^8Iuj(6PT&LHQ!_4hfmd5ibZ6hQyzMU;4D+pL z#I$C86a!i{&j>4nGD9Y`?}R=`6yxW4TeGHEE-#)FJH{y_Q>jJMzO(N94X^@k-Q4-} z29lkK%t2Vxa}t1i5=)xYSF7o|)AFV`EV)bspi?sEBoLEM^|B7rh@R=@ojjSTXvmOC zqhaYN(<}wBoU_ZM7?u}8T=3;oyB4&Yqtu)&@`nU*F;E6!Yi(P#K1d==c!?l~b}58| z2=q@bktj@GV2{R5$)$cn7Rvmj4xTJh0KslEWjk$!j;1#^H7^LlBbp6*HK@xSO>3{S zZ7>$)y9qPd5vO2e#odL!)>JlE@Qx;#X~L_w;gx^dS1x8rqRxUN`tiH$aJ}O?mdrZZ`8Ny%xLq0s8Dl3<`zVw@{poij!N+_7lwlC}GYRLCTmE#9K>O z=!)|txdqb3Dtr^2a9|u1Zi@#Ua2jFWR1aZhR39c(G4i#2D~Z*VU`SF{X)giMgWF@q07~)SC4=Er|R>C}qGQ&Uto^M2y&fT z859;%(?3!ziW%H9%Msg-x$ox) z*`juR^eAntae#5P+7@CBmc-S6W}t(E&&=jdB9HC3Xt+TKWzjlIk;L>n#HiOzqrkX-VzioWJW2Xbb(;LL8_qOah;XRvIpo{EPlc zM^i6NqG273dh*Vqgm%BZy*@l!U|kfRsaCS`w3VotxcF;F+1O0Av`A58M>Xb+Z)kX`v~M?quL}i%J2cIumE*uBZSesuOhvQ<&AD;zqe8u|Gf3Rm3MRzTf%5TB z!BaKS=tII0@ln)$rX*6WChG#zzgkT*lJ^+_wf(|r_*Ju{bH5AyEZhtoHvJs_$eM6h z0z=Qw8Y=i3DHDf%L1MR@;*+QNZbG#pV4?%SK#KEa9tVRF@XR$;u)g-l^K}M?75U7_ z<^{k4BDXOm;s&_LSi3l%gA^)KD0h3*L2{Gm*Uqty<$?z{boBy7oq@o>fCnI(EU`9~ z)b=vlFBsxBo2F{I#s>%c0pF}BTUFDx^M}rsid8S_%;W34_c|x`V?wW3L;qL*_rLto zm)6+Q@<d)85cKs2bERI!QSm)=Q74Y5`QBq}4k2+Hjk`zxVneNa2_+NeY^6HCUeCvf11~Er4 zOK|2$K<;eQ!J=FeJpJ+XHQm`Q z8w;K}w@#YJ1DVrpyobx&o;o&oxUQQJ`&h6^@}c#22seSTyY8I9XAKPZ8?}{Z91b}Q z_o0@+GS{3=L(ku>w>pfpZh}U+!#bu(%~l{zL(!6P7QJCSick>SN$0Ab3IKNQIrE8d zmaGC0{9zi73TsIA;989q>@E$3RRe$k;VKTXE!J^4yb7%UpQ$?wzO_y3`u^YZJNE?LZ-cREXix^b zQ6K~?P{I%sM5Piwp`EV@V^@}8kp3gUawJvYry)-%m5iAE-oFkS*TV z;ipUuC2rOxEM4W>l?g#8z0S3b^6%UjN|(lIX&0}D1Rc^?`{bnE#y}wjGJm$&36ip9 zNis;!l-4{om+=Nax&G#2$V!QxDcZ`{yG_^NXdKqEnaRzd?M0ABWRS`L5@vJ)?G3pS zMnHF7Vi!12)rhd2#LortH_siJy|aI0?4vqES)90(lE0>{H7~X$unaFzz0U@jFv{h5 zt~gATIsQ3Z8B=??y1F&9f+w=4E;_mJK6uS=VLku}6vX0)y&4*n-po~yN2UwEfEImF zSFKtGwXzAxUCr8|X#%m@hYcengIeAi&^69x(wQggutZoLkhjbT(z1~jeiSJo*^woknpY>u>no7?;=wu-G#6_P$fv%jw4RM5P>E|K*VoI$8+ZEwf~&9pmVKzb zlYd99KGNuZc)oYp?|_;8Mk3<}`>?DhquGN+1Y2YMy}$XBFKF65$7b}ZhONXpmDqZU z9h(Q5_&e$Fv$8!#QbI~C^E=dYF_}Fyc=zs|FMs*VYV^l`;14s>$K@BSuo)cycB>Rm zGn@s}Rv`r;<#UVibRN0hIZ&1tmlQ3wIV&v7in7S%u6p}-tY@IyD|{lH(j`*dlT(VP zt3%$bnMW4@`FtQ)ZU9nygj*^>vF9^%Eoq1ZbBR;o)i{6IYao<3r>2#up}XF&Kh~e{ z&+qPqgi)$_nlw}wmuq)SQ97JET^iEXW>E-X-sjScpX4)4vSg~Cdl`s0v$oi7ZFBeV z(nqBCiL>i4nPtZSor!#6|K$$4Q(+^&xr_*-gPm2tc$qnanAItQap3q!pn^Hgd?l;> z^ooX!Mh*~juY2$MLAa(d65?NVs~5&o{r^2rJwoLg`L(cmcg{>ov-NGk%mS) zuI1X`kRk;#QHP_8n%Ij)n^Mk+rBn4|0;0)02-Ps(yTUXj)nn-ncxh%Fr2B1Ch-WhWVktJOinCL8b z&?rK@B})!CZjyMiP_qdX4tqC@=#hMhti5{RqC&b2Cq#MVV#$&*CL8>uH8^-Z76cfXt)LeIt4VR0<lw=GAV;$^9JizTPY_-#1{u*^fhwX7xQuO zb{~@oUTs7jof1^ym0DYjj@Y`*1_Xog0Lcq`nmg^@OtUO1Sis-(-;hk^2|A57Wmw1( z6?lX&rtcBjK8F%IJFXu+ah?3ujW>VoAAjlU@q6F*zK4&L;MnN#e;MCpUjlXbM46Cp zu(MiKX*M@CLMd%M>z1{#KI)R%TMr)kc=$Jc=lA08k;Rg;ksdM*GtS?&H&T?fg_ikf zQi{f^9n;OHJ|5q6e)Y3I_2cip%Z{7AsG+kA$yX54tb$}hYxk!;38-|L*i{0L3ii!( zl8?o{Jkx1`fRt^=jA!@me)iWtb?@GdSH9w_Z{E1}OO4eiegqj(=O2Tv{n-pWFlJy| z`QJ;3b=Zzz#_zlc-4djIS(@`43j8U*dh?TEr^*HO{~Xyb<#fe+S*;VGtR~DRtn*x-JwqRar2XL zCvEd2ii(;6MrG5+Oiy2Yb(5}rLoTK2137_^O~y+noY-k&S*ju-xsHQX8No&4-r z^=H5Gk#wpNPcL!Rd@T!YzRYoqXMHW)T z!IUMX0Y#RnOQ~p=QXEtgocT!)J0q?f2ZH7QUGA7;vSwWi0U3us5e>yKa2fDA6Idmn zwj;`Z!QYftG`Sp?^H09c%^7y&fj_-t*F3oD(GblcPR=Ln;vi#WIZ|?I zgV=-_dIh+y`WC)p+J%~~Log&WIIC0ItqNRa-Dn1BE76H6;i({7OP~JM`oI7EpOJaK zPs1~S-E)92h(>6H8WZx{jJTi7!A(#_$=!9;S!L>uN}$Hj^)EB8L3ZcXqepMJd;h}g zzTC~SfJGL>R#yzpvK-GM017MabFCs5b|S?{WN2K&wB)*R<>~#aXFvPXKl_3AzVCqt z-XFJ64&oK?Bw2(S(hVD-_CS7@uuj2BkP+3ANp@Vz9fY^^0q7Oo|_*_=NJs+m*=2?EOVoeqYycBrwvOO!KKDdwtFSX!)u*qBFK`hu<5ZrTL2KIpw$se$j#tOo7%AAKLVgd4 zB5g9@Qnj(AC9=v&I*31&n&d*21b>|5q0iQaoSqzyqj4WUWin%;is)hV2YbQbYojFJ z`gCCHL3URePYfn+C~$kZg0zyyW^l`igRu*Yp6Ly*XOFH|AX&c5pzBf^c*Tj%wlg^6 zz3^ir(++__9U729U<>r6eO^)cq#LdQ+IFd%6VUL$LiDkTmRxu)oOhwk<;~V;YOt7H zdQm>Ew5l29Pac-pjV$J!BEESsA!jTdD`pJ#gIErru)5v+krVRq;K|=9s(+!^e&QI} zNw_03g6w1Mfq?<%!hRkGRGDUa$PzEy{GzJ%a5w@Jvs%x*(@s2@C%ziX(+q4lkwQ+v zS}v8n#L{Il%l+^KK3wxDw%lpkjCL1=+uuNXw8ts0EuY5)MrUsOYI?jI$!zvCY}o{ZDd#OUK=SV5o1@%_leS^gVPx_fsEtar5RqzuIJ=pxHDh`1Du7; z7T)Iz`_HQu?(a5%aRSL2I3m$h7g5%9=lao?zWCPl2fy|k-gxsZ-=!0peeSNOe+ce( z=DNV)E9A0IqWQYIPV2L?L^IRR>Q#Ru#s!D#C(6o`hfhEC<+uLuAOF$3^`-O~Ih^g8 z;2j_vN)ecfpn!|eExsKXy zGWg&Rj!a4OkgUm+*S8VCFd()XVxmC{S=fdC8LOu7ZxYn z@xO}$0NRLMx87!q2ud;NY{?I0pWl#gSoCX6b+$4i9G|B|DhITIl#%4DmkA34@+O!v z%72Z9^d$uombG;)Ie6f#Vplm%yc0%m4sN3=6MEE!Co%e zp%gv6ttm-ZI@L5S3s?C-59k()D4I-HUK!aCLB5JmaOPJbr*XdIm$_t-muv`9jRKoj zy@RP3mzn(`u!1{Jchg-yoHOH0+2t0Ut>v?H=P2Gu+gooUzL!?C9=8WRfY|b}0*I6KumxS5J3OuYK(* zT}N~(J;d(Rt%^_G)+I4APz!;}C@P6M#TOS#yoYTAFg(*vW<^nZ0b-goIC_UoHwYfh z_|EnBpmmu>+8nhPB**D)hNrs3MbWEg`k=Q^(((^}=I?&>Ywtqw^v;#3t&?$S!XgjM zH;B9O>#R4}x-isL0f;;@HHL|^_X6kFU%#&7t#rylXWeiUKh zb`NX67grJ6OpsmNB$)$2RH%}-bhJQlZQ$80)36Vc|H{YzXR_b(>Z^eA>lDa5wFe;A z337IKV5@Znxd3p3IOT#!=K@al&O{Gc->5?uZjaGjUq1xmcl_XwG`&d0o&-GWWA=oh ztVuo}oXN0u5!KVad89(8G0ei4i3?RuVbtKFRLF;wk0i*5CS&Yj5-PQ1EaFThHA)=X zNx<8Vx!lDqxo!U$#AA|kkipJ1F%q9XGD)X?G z1=T_WJk{`(A%KPc5G7Bd$B5XrTEMuX$cTXKszA(1$ih`dP~DL^3a>YZmWX|P?$rm}0=5FpczO?;bv zCcf6S7{ox94Oq*7SzdtYTB_AJVl6BQi5Y`19{a=4F0-Yp*UYE1LfLWFl%FWG=g>RB z=$xil*PXcbkPD)9L(7ONRazz>v1hlT#^AZefK8kme?#z?L=mE{^j2t_S4`XOZV6M8 z%uaEMQhSb&CFeq;d-lS<9)Gw@X=Bn~_D^+|qim_4G1C~xksY9>lF*EoK z6~+kte9Y{@PFjW-SHqcXJ0qDrV=SPvhwwqvU2u$d`aTBa2gB_QwJh}7+vH~DF^r@V zNG|Q4ydpdVnjK?E^{#<6IvbJ+IN<9cR#w;51OJZfBxEN7O+TIQ9aNoE*sPPmwneX(RrO-+z=7J4)&wQo@i>#l)IDj{2x z*Ogs@MO*{H(@f&K5c`wdR`~E~L2T(y0!N+4>q!G6rzoJHW$&o;nNYg%W*q@fM44GBFQp zpi96m(T|d{2wK>s1CQ04?{EFwn{R)^H+@9o)sy@C;$-1Qr~(9Gwch+umdd>{lOvPI z@dTAP^VfIi+_-)B(XFeW{%e07^V80(eeg~`Y{d*tsb?(&VC~E?!?e2RY zXwNVZ^waJ=4`|VVoDpw)?z1o5yn6kk-^!n>J2aFL&ngs)W`mMNdli?-cN|%m*Tf0! z0lqvxX!ShO>8!XYL4JYrc4`}vn(cG(a~jfR-|pa z;88WOzp!ZTcg@AUbE+jJ@**@|$%g5LYNMI3XHqUY+-s zz>AB=^G-uYJRAYUs?H&3tUyfL)+q8ADR(j(fr$4Q;S{1sFFIG2h7JeIfC6a{ zBn5qz7Wj%4OZF~-wh}5HXGs(swiQ8>ee-<=9PTuctlBONR>Xw~3~6YKTkP$*#g68& zC&^tksU_EdRtcW4oT|{rqL&-H+_xk?>X3yhF%`8%m5{1)3kVrJubTVvFPk;d#X>FB z4HE2}^qsWOQZlBI9mLeUt_kb7DlrF1sWvTM$3M^=kQ;%g7z9bXaZ4-;8RV zaRE?oEofRHRj?eI3zM?}-(i~2yn}eWEflgZd&~-G#jzBPw$1xysR)87f5BEssa%LEk-9W&yHBHs^3_@)a72XA}AYymJB8}J87kV>n_66n) zK6Zx8>_L{}UWGDJ`_06J^g44#W=_c#qZoTkbtvQ6Z`P831}t28LlKohmj* zhPK$5B=2-;!KA{yEM_ap!Bt|LgNxnjVCEhCGh9wqd1rj91Z>Fx#d=fCk&b3tfVQt4 z^*$@{@H3zO;*+a)zvn%VuOAxr!yH;h=%tR8n7P?{(Jnc~$93K=TJ@zMM!FA?@4~7u zRU1&sYlTT5xN;!+tsFh6JW2U6ae@YxQNaJzl) z_HTUp6JP(eU)90mw|$%ZwC^hlvhyI8E*_MV&V9vB0%Ue-SXu0fkasjjF|rE7k-`9&dDLEuy`OZkJxFb*b)0afaua8Ryrrgshz>R1JtL!wFm(lUxqW zHMVaA2MZR>sk?a7kzE;{B`K^6Z`fM8<>1TE_XS#%-oVR5-Tj{pN za=>lUSkPyxcw~HS?UmAAjrbJSR4%$m#TRTL&S1@q^lAg_e3X*30B0zbudb8n&jvzD z*QNFJ73JDl7#E4pLvgW3=f!yLZ;|M@hz|rDjf6z4COYr*T~Iy4GEYLLY18H#en<6kiHCdI7*F? zWl2-S8lzT|6fu8?@KoS$=vnAHmVKAEdT|SlOfx_?-12 z@5;q7)i~ zr!nHCBL1e*Hu+u!;Lp9*;Kl^46hFUrk} zrlf8JP%paK=i0T7kXHIjPyBrr&bZsx6L(GC53%%1?Vjm*cKhC)NB18R^wID6K1`jV zJbBm|hzHvqUYVyV+CN;_ZfYY`_=@OAR^~%{Vljpe`HEMSQ+`MCLkNxMeR<&Ct7nO;`qskuLE&uYFj z!rK_6Xj5sk_E1XU$&Mw&Dnw$v8rKHV2)b4wZ_D{AEy+PNcVO73KaP?DfY$IY2ux`#&Za|8JmrPJZJrFPEE(MgavsL4qT5c!&aaYms1!^Ry&YEHd7H266(9n zp@(%OfiTC(AI`PSeTM0&c{CT}m&y^)H3P&BN{-qFmfq7Z3(JDWZaHer!Zx>^GOFT| zJ?{i4Kh{#5bS`#W`{ZIppZrF02SF#!Oyt$Kle8)69&LA1n$a8Yn%P_#VF5|u0I^JmXA)4Olzv1PfuN|J z_JNbBV6^p|k+EV50rk$|n&2m?$@a$2|IMFzNlM>ykGv=IT}U5};HhX5hS>X~ z>qqq1-GhT5552%D87zyN+{<;7X~}-;3t#x+E4Qw`@+03^a;UGJtC*3QvERO1@yQX; zbspmUax(;BrV71Oa<@wkeKuXTJbmNMFI+u+<<-}GR`LZ;|4Az!Ible-Ku(icyJbn1 zk>S|ogq@;$+tYpQ_u)6cZfBX^55wGg`1tz4^^@=V!5=c=Jbv)-wx@NCR!*=>p0?$aHyiZe7(yodK6F zc*aH13Q-0abDFj}F!V_$zTpZir2Q758ZpI)Q#(I1r@`Wol?h;60|WLFw?tL0i$kSe z;CJscHy{#GG8=a&L|S`;ElGqFFlgm*UCI}=5l?$`Y$JJ3b0l8=#gd}DXIA6qLY8r} zAHDHVEVZEL4}&*bwBWem!(}bTkGn0b29{}xC?+#TlYFJRB(kBfEj6rWmn-?p7;CO9 zM6kG(NOSsxnE?s$9^{!^&Q74ib1SjKeSnQd{)+uGoVbMB&Lp)eR~mXyD077@kk2x6kpyYyTc_6_ z_Mf;=MyE8;c{c3(ndbsUX*Pr>9NGoA($)z|Ga0{%FKaeJx^}Jcu*@_xWqeS_?l6+* zqiUz|(?({!_R1gcJEO=db-N{TU>)Ata0lufDul}1Syq<-D?lhZ-M7s(G83y)WAL^~ zY2z>?Yg-hE43IdV`i@w|_iX--ENLr$2e1vO9AVwDGc6L6xkE4E`6U7)V>`sG!jKU` z*Iu;tEfm8~s^g7*uPo5ALM%*WTh5cZ1X#rhhYexxMKk<*R}HJJveEDn zm2012D=rPOV4>?`Nd`ZD+)||Um@&-tAfEP?F3&aEA%UHIHek!b*`t2&DEpTHO)oHd zr`Qpz6Q%k7JXD;4!2&FU2nexO7K(ognPT6(;*;VJZrpmoO!e`f`0=m#s`qeAMX)nF^wF4=c= z;rj#b>4T>}*S>%&r?V1$H*`X;DQ9(3ILcCH-`dwHX1rLsTpDDqaXi5uJPj-;q8J zZHz>0W8Jn340!v@fqGdDaa4UWN zj7>46R^I2r0%W;{7~q{z0P|EBX>q(mPwP7q8BFH*|;M&mg+)@LC92Osuz>GDCO^rUt_vPb4X@%Zzn}tP-bw( z<0^K?cw;wL(wl8dNGx8ktqoaWD?g*!<$>Dgh?d08uev5D?~>EIUVL~XPyUoO*g{ON z|Iv4Lb%=lJKv-usV3(q}j-s&bMZ|`cUd(#k!(Qyt5{3VL!_2)GA3u8g zmw)BcU-|l1U%z=@nXD9Yp*ZkTB03*3Z-lSe8FKgT-lfDC_08+HV&hD-8}mJyW`t;Q zq5S4cFMR$ppa1B$eYEuOG3BSu*9TgTSCO;h49VqTxe-hS*QhvOu3lneVpNaYJpK8< z{ZrWPzWBm3-_lKwE8dU$K^nKyEq*h!D_q6a`MDvh#l7}&uQ%s$XecPwol%-*6Y;ur`ZXF^KyjI25tfZ)zEpzqRmnkyi?pdDCU2<*}Soha51Uhn@&W)x)QbeBL6|Ilbc~QC!saT#{#mBnkg&o_HP|B5l%Vz}Sr3Bf= z9egN8AIri@H@J3`!HM4-nvpAa2Vw1%Wm1|BLc+2cg$p+P!rs!(B&>|;EO&E0+@tM@ znTA{+YQtME%1V4&j_Wz zoX>H8d-s>*GOs!NbT3EsP7#Bd+r-(wmcTZYI4~woI)I_cZ;rM?!_N^c$!nW6qv*w<2i&i3KP2Wz@BWhxUVppYS^X-<6S zFfGHplTZqQQnAO&!(#(oi1+iIv#6;qgg6o50EbNE=OD|H;ek_rMbapn#>)z+ee}Z7 zGi4#MZw$M@rA`;t{O>LFv#X8Ra#iV`+zcalAkf8z#4a(al1NW+89M^S!s<%n%&J_% z5lgB{k`1duTvHm1gh{h&#A(hU`8-TC*5Z{-<5&n8=>n`S8>m?_wpg{1i~cehU|SJ~ z)qI&Hh@#ze6om6@jBJ>qJRt7oIxd+^Oi7oh1%x}q5QJ{-c8IL9A&-#td*`3M|L{Bi(0Avb8$HTq zwHIUBOPC4hkO=4c-IlC4PHgtrzsr|nL} zAN!EH@ZeIk87zKN;L-SS%bAUOo?fbM1FwWRJXR1M$<0M$XK`;Nm#CMV!Cl=r3FdE%r{WA> zyK|oa2^l!JHBQUPiqvsMluPl#imV~fGt?!R7cacZ0nT}jucHg#)*@PfxQMJqoW4A6 z>&PD}>?Z!wA6)5SFl7EZG86i;Pc2xo&4?D>#EslQ&*7nyq5=NN}6mcLeAAj*fBt*3<-gNDn?$NDIH;I4Tu`IhrZsEa0u++pVEVB zDYi04X8I3t*KRsSlMg4#DbcTpLsi$lqZmwq+i-*e^6wwGeLrm*~-jE$(+>7l@K!IA>fQ zoYHUv81@OInbqAwqj|2i=3PexqR##&91W2d1D4w4Z|=!xqiTG|nEYV61i-Vj0sK5IlunYg+!e-aLA zQ}v9`WS|AGW9@rlKwS98gv+d-6icgW#Z*)x8Wd8ZD%q(>=^-~7Hl3m{ty}67l5`T5 zB;6Zw{JfnC0SZC??@;>_Klb0fk{K;8cWTozDhK*$8yBiU-9_d_y^o}ObguC1YfvQh z9XCN*R>}6}MvucSTW>$QcAkCp9e?CUai6ON4qBqU1IH2hkMV* zf-XsW`=xt4{N%6v>T7p>8${ni{$1iTSz6Ax88VQr$0Txn?ehHNULb91_$J zqnFx3*=p1G+j!jXBfsYxtUmh5tCq8YS?)I`Ln?&J9MUqjL~ZQumF3M+Qm5z(Pzh6) z^6bn%`oY`ZrrW;Rv}+QjRwpD|V@NqyS!NycFl~Maq&Cr!Vtlq=uBEZ8FmW{2D9b6E zKVrd!h7!BI2yCO9r3VI>>d%CQN=ELAw@{6WG^MJAaS!q8=g#w|Sw zDVM#Yjm3tNbbok!bm=R5N1&wS0ZN~z9DTfa$U6muII!eWK`SL3@Ri7nSP_ffVTE#i z=XlW~-NM0p*PJqKYz?A#%s}B%u(~K0hT+-J(%NZ6ITE&z%l|UTUaG@;EHmz0~s-mGTQ}RUoS{`q8nG~%n7MUJ;-KAq0>N;6RTp5LK#&N3=vvubZdJC* zBk$$q1nAxdU%eJ^=lOGXmBmFYA&Wqsw8SnCGvfC7QjN4HB7a@mk25T3Ov8TsgRPXN zH<6b&r50_rX3Q)l`SJ`zS3wV?2r9~rzml>%#&Q@nCSsn>20pChovW$IUUJ53E}_{8 zMIVWNN5VADr(x1KEH3kKx8jcF`2EXQ~;eCvx zY4()u3Su`J_b@>*3Va`3bI-C7$0#&~eV#}>4NCG{EE323WCt5t!gJD?RFTzEU27Ri z6iXTbTJtYEov7)m%rRgYf*`!s zn8&QbYqUPQ`O+(5^^^bokA3hx@AZo=cdwc?Q!ZFt*LK;suU$AWVEg91rf?yZzw)gIDg}eElQe;yS7?!kqr5SkbxZ`(hz5JRsZ%Y7Bx} z9|Bv6SFDj`4$N>~efm?s{;v1FTgbY$ersuJ5iWfj?t|->UVC?b^^_U*Nxr>s6d~~TZFh6QAp}+^_*!Ft^yyGgw!65K zp1AJ(mzJWDBSW5F5OR6Xa-`5`cQ;U{2uc#iUIU~oimQxbLp_e099pwhx7V`aCL$>c zsSzJbaBJya^H@U>fz|?7p0_nYmvUX$m@jmxuCz0(RH0@Bd_q<}SLY_B?g+u)9n5F- zrmredQ?G7P+W`?z{ginZgG%kl^fQ~Mj?YZTxUIU%3PO&L-qnG^I4GN&?1*_tWALx5 z%Bb5Gs^Y$Ndh^ntr?dQ<=ZPv5&HCtz4_`4%a`ww96Xt7^_A?-xzw@V44@ zmotbKq+(Amg*xnP-FFaGO7ckvqjWXDdewLM_=49v8{^%##e*98Xh@X4uIa4X`>6rcVAsm6WMVavElU zOl?X~OBz=-25A3|Iz!08(mRp_RqK;HEg`_Rw(H$|FU0^N*8XKtfZ=rTwBw5~ds1b#E*}5>T zBwW&1{ESuY`l|0iot)HU65!ja6xrPP@340*QDrAmoDKjrHMyXnBVy^QQ;#&;74P~` z$S$sNgt;+~tmgcM46yC?;q3z@uay$u4enwvMaVd+%yfeu0Rs##%&+FZ&oU%I>+R^s)TE zdCzJ1FaO$S-v8l$;=XT-yLvQxFgJOkrV%NVGC&FjZI7wx>6UzGC}PS*@{{g&)|@O{ zU*EoS=Qls`kKg;^-CHlcX6d$24kNaM-KCLIZn@Oc_M51}TzA{00#wjq$cyguJbv?y zH>taR^w7PUXE*M$;<4)re)px*^TU`>uCp{I55aG~1i2A@XERn^l1HKO7&W0!pWM51 z_cOottEnjzybar(xDvHd!-#^beY1w0tW8kqQCK&G?Kc({6CjgTyD0Es&SGqG3DhMm ztL?Y^Jd<<)m354fo0CLqg#S> z8!?k|K1u0bM{#i|9kh|ZSGGEe&QAYwSy!ND^yZyoNQ|Y1F4h8yB^fyJM3-POj+xO* z(F7GA#M3p~vVa#%Cahe`*oLqJmw`;f6M~Fv78J>4r_@Yn!^fxp9LCllqJ6{uxy=|IIEihddi6*Ry?+YZbLqB z1hU(Q>zb)jko1yR@iRq*yWp8Ynadu+VLMMoliwM+D+gVK$&Oe8O$F=}*+K1`sw;TY zn2ZHpYgBoGuGxu45o^ecJc^~UzBF2-cCq88pP<#%PaWgzM6L3{{G1iT-jhZMn@EmM zgyoYi0?)|41T?PB+p=Fl$s{t#pD)Mw$(WlXV`6cQ(Tkm}FnS!Usf&s&unLe#eHwG8 ziDA`b(ZQ}iXEkmgo=tD%>I_EaJf_}L(A&4=g3bPXETdM@3faZwb>%za#eh`KWLRy; z;vzZVv%iIre|b?kgITNwLi2iy634S7&HPF#X)tTcmNIi@bWro9p4zRlRL>Sr;(%}H z#mE8L=iP}Kse!5UhzX+E5-he8w*{kQMh39#H%y1y*&p-hhZQmpu9gLv?Hso${LmOq zvFsZVyC9vqEKg$pbkEUY+cCfvtc)4*2n%%HZJNZoOVg1ip?3nacBYCcAM5ZoniBF< zx)B?gN%lH6ZV442yYUy>(>>gN;}bvkGe}=^`u@m7*EhGCc;!wZ<*KXI9+3kwCAV+& zt+E0X1az~BL5b`Nuz8<_mEJxW=_@Nf_qor1^B?&A{TkBs{j#>NKHxPDRcNCCXdN{R zg*-|FXE=o6{5xQ+P&tD`XJ88fLM*8u3vF&0P#{)2&@EdrNrXw z=8C3gH?HqL_+20VnqT-wpSbn#?HhMqbiR+QLMU|$VlHLg0P); zTVgSz$7Pg+X(4gsCXuAS$Q!-xjCXAJ4>>8yhD4&8xf(ZN2U7{=*LD!{G^z zg(`~qd}2xP&V5&*bc74x#m0L>8pC3lmb3OLuWHZA=g!zEn+tkOO#*|poU~e(M(i49N*>BE-#LSJFz! z-z_AI5x(8Cl-<=A@PK{2Ikn$Z^#PccFDKSJ%_Z#&!f0k&qzOJyG*k-TiL&OM@hzD$ zJX!>q%>I@2<_X>g9k)<8FY%5Axqk&k$JSNtG6r$vl^F2_PNQOt7&0L3oy0F2H+uEU zqZxX@G%?E)%SwzKCz&GdXTk9|B{W3Fo%Gd^{RD-u+$2P$)*R@UrD0_9+O5ngLG)ev zThXkCOT&T9W&Rn)1tT3$&5thh#TbkcD80KOdM+Jd(`(5&r>ZNdTg${w@2x(~5o8Uqo45VkAA1&vn0-#f>7y^fb+K`c%pt7@ z$Mo@HfN-XaO>)z2(pajiz$83;`J3y(Xk#khO31!h^+MBkp~Q5F5o`6^4o~W+Ur>k= z)6#f_i+0koH|YfYPk-^x!sX7(cL?y+ZOWvl&Ki}R>-zNd<7;6>-3f53fgULpWj?zc z&8)&yx4dlTCzC%hzVYDk_y5QbGvw;}p_yJv5uR6;XiLS6Ec$ade8@SekkPrug)p%* z5S)hfd9}VQ)&|NF!Z0tB8#82Idsd!2X|fxaSu?r%q{zY^(pC`DbhD4~J-vGMwO4-g zt%twyfBk(QyT9Hg`GDl)FdVqt1O6FGGxVJ42IHcs2rRHo94x_^Ls;R;(qh;ltur_t_2&zj@$(b7ydj`V^1IwAA=G#KE{9!7#46sD-y?}vn8A^J{AF-&iWM_jE zg+j(-r)W99Xq2nFY8&H>nLTNn%?enuxiNeQBq8r?=~3c0x*3Ng-`25!X5@f?B;rsW z)5%_lHN-|=sOro-B8TS0+RrT6+?!o>qtQ=UE^UPHQW@%lumS)8_ayq+nDm7aiJo)eJ;U^Vtjf*NOA!DP@{^2_wF=rtv_2#HH?kw%)u4Vg4z zCx4NlaZI8ukcp;R9T#HrbgU$#b1y;+&Q|UXMe0iDV^R-m#M@{AE(U=qfi?-Pi@245 zXp%gqTES=^ngP8c8xT8>Z-q=$QBGhiR7f!b`Lo6mkhypRpFMMY{m6PZi3=2w} z39Gx^%Oa*~HAve5$n&U0iF=FUTw5-d3O2e*!;B;?J83Junm>?aE2SqB*S~>dP1u=f*0@xxaAa^5z@$t=*BOs95yM^{qdmEM=B>@}wBe?AlX}xW*D-^7%Wx zxEU3q4685Uy4o)a`PT58mXrRgT{uEYO}9CEbgv7vIQVs_M8J1j|?W0)QaywaKKZhxU&;< zRgMvyHBgvel*VNw!eL*gR+wB-du)!(sRlb;N6TE8cV_Dp9S7Sr?QyaTky$dR2IJC( zglC%(^NYMvWdJW0C#KBck=A1;!pO`q-dE6rf@I60oVs!MWz9eRH$MJV?|#=EYm%$S zw>%qfRoleSj7I^pRv3&NJX$>iK}0#gTA+3@-p`x+QkcFMPHvlS(Y$c|*2DYH9)I5- z|6^Hz6M$^9NX@)zougr{Zy`JF7tASGQlW{#55{soc;5BCSKj#YmtVMhM=p8bU0@T= zwkD&NER5*+I8Cw26ugF*)8eC7)O;?~GYO^;Dd4s6RYFdHdh^nQ=j4FDR!(cFDqEqTCs3mL zLw-t1t$w&+&yyq8P-6s^C_`f`=C5QKs>=#mQr7^KnwyUpiA%grMa8w##UR%*n`H&b zxEgLq$>ZL3?4!{d&4MCdHT>uyx%gREJ4ML`s)4a*9QgpOO)KHwdjSh8eqhMg{ zeo#qco0q&i7Jv2sK6% z*lbWk1@1(`NUlb9v|6xHaPe%d%!IF&#jgoH(uMG7Dn%M=4S?Fw`$OrlKu`WMuEzor zRbEysw4=dT>QCxS9eBK~0xsuxM3Z;)%Y^wizjPRB=hoLQAd_F>`ga0Md*kYo#|8iS zEA8g>mB_L|`-t<#;qZ?4bkS1A7q^Et?a_3kMA> z5C(#RQUT4djnVlO!i?|KWLlbXx^OBMmx~<7ck0O9YvQ(iW~bLlfT<8=-~iCp+fqGG zY2Uy&S}wx6Q{NP&v7n&eh;9Df!cN?ed9$pHL$>@*1z?ji#&mJyx8+P&Nz{hs{7x5^ zCOPQ21Y()4uEiHJ<);^xp5V^%?$+wshl3N>d=mmug>#%mj8%?zPh^X|x>fl`Q<~c{ z8|mH~t+X1#GlLwe^^`$&lz#1Ka;{ch+QR1|-Ek87;~fh-hfEx2eTGkpuKGbB-W7NK zic$-{>9YXpG3<+tDO849lxqWsizqK#fBCn5@&Eb6@BOCVbN~KBQ~hHPwVOw0niKRs z5ikqqN>iKuS|cYoo67lN)hV&L*t40f?q7Fg$Z;g%H| z2m)?(+x}`~m=`*S8vSqe5LTskruIIarJ;P&d!oe7rSCk-gREha*WjAc3CZI8DEFi{ zV~#zfW#D3srIEh%L^~MrA+`e7ev4+4X$egARxP-epQ&bhVq@$C4+%MN($aV*VZ$&p zl8bBu1=noj&O(?#CWZVux&$_`o{vKpa~fBt(&@_ns`HF)P?4?%4GSZ=a0+%MHR9B# zd$0~%O-#4t%z7h|A~j8QT?>I^oVnV&t3e=6LM*t-Q^Xi%=fYGl)+jlu{Pq)C{^=@s z2eK&zhqg-UG$;JD^DFEx=7k1=6*^BLSm>1(EgrfOkcR{dSbrOJ1QON5w^6mraA<6Q zF|%)(sg@o0kBNpZwY%~V)H7iH%N*r7s8S4SPP!mHE_mX=C+ z*-;3DGctp5=SdDlT~d|`j6}wMOLr~#*0V>L5R9L}>yjWImmBuIvtb0;ypcRL8Cj&t z#p5*tG%b&(u~E1~3&+ApJHL<&Kw@Y1N%z9xi?DKb_Ty~CdgWJg=i*>L2{YBzXseSx z{gVqSMGt~_tvIf-q&MdelJ8_lcYX4UQ>+4ALs#74XC>R8B9f({J*NQ8h*hQJH5@a` z8-9nZq${Miqn*H_srk7g%LsH%q2xw}c_+(T6Qt-UTTss4_=uQoglk@7CfU48Ou(GF zc3P7p;a6c(4Vl#%SCU}Z0G2nL5_0vin_dKEasKvmb~~JqS#{BsYc6ljWj^hG8s2Hkg7S)3C5%x7b)w0VMp4 z$BBw#>>RUGG!ev=ut~hIbTx?IP7H2)qD*lA?qB{3U%tA2&wJkW@cL~vz%8&+VMD&P zpKH@fb(P@eV;>mLO9IU0Aa(i4(*SMSz}?rmVQOZ@B6WTWD7CazVoecs+aGsPJxa3EfF6 z8_#fVwQ^P!Y20a{gsS$nA(mb8{~VAk;wRj)BC}T$>Lrl<4ZX2t$0QRWW~Fx(ru}2M zmhCmaZ0;nydqId6XmSuNpT~u9&gMu_NT;omvWJn$iIcQysiCxyJwQk)^sCsEV3pvq zNL0zUo%d{$t~p3fD(qV^G=yw}q+M_vWMjb3pz1_OWnzOS=R<8qXdtcm-~{k8G0CH3_K?jdOT@J}8P>(Ce)_Y{Fo}z8BFVx?2}b0Bc8VcZQTXlbyr^Uy=tI z>j2b26)5e*7Bf33yC_xl2u!sJZwq{Qp9aW*x-6SkOYM z7e`d9Hja1=_6GbMS^x4oopI&y^HsJ2Nn<&$tB|z?-C9sK5?R9fz`VpuN;H=^I@CYyC+cJpwZaO!u@2SwPeO};%8>U3Hws{`g>sk|^z0FU zEDs?{PC*fYxzMv?w4B^VA6Bl(WMLq%a8tFQlw4C$#QiJM%-b_49fk}AHJ@c!9)(4R zY7H$CPyJ;uScai@GEaPGbM~WbQ&E?_cD01kNoEA~vY*6JXY-n>SDQ9w1{(IX{$AZT zO`&28{@E1*T}#l|@^01Od0a~M25U5nvAtVYX7Q*0^?&|fz5c?BPwq3j83a&!PIxf# z>E^A+ZlC9NoZWIWLAqt=H)HlR3iM0doc55qdm^&6Cu5AB&wuI7ANo^&Li#>^@J7=K z;gBgwR!*~rN1FiHuO~VFh~r5Q&T@v&SmtAs_p@*Q_HXlzzRh#46S!K?PtL=QjfKGD zdosoK2G*f=^}xO_o15t_S6L4f?rfKZO*Ql(w0C{|)|-Fu+rRzK{x^U1OTYY!H*UT1 z^yY)B#|@$&UAbCeVZ4VWXK~NFW?I84%URdKSvjGZ;nG8raKVclP#%R_9Fzj%!IugW zjL_~`Oc3KB3nE?i%6Bxa={3&dq}iG5?VmiC2{X)Km!b}GSH?%&W$EVBF&0_>NHBqC zO#8^3mRDdWS)y@N=p%SO781Ba0vpst)4Z9A)3Z`J%d?(*W^~noDRx7yRHLr*D@rq? zbw)FbKO1`yLn4&Ve}klPYoLUXI+j8u9l==|ZlzZBby-Bz;TXR*}bj_?M9pRC;W5SJZ&Oc%YSg7Xd^?lH!Cl9oC&G ziL;5IULqVKLc3BM0ZRP<iOCP!v}ClDwbLLpXr2@nEh21SSya~wx7 zZW(yA0VhQ#8KzVyU0cKtC^BVpt$4+K1^Xkld6e}Z{-%0~zEiBg%C2dWAZ zFtJnYs7`{NEH9YP$(L`)*l}_X+Z1Jb^0Oi4wWI0GV@_50hb@XzS;B;=qG=~fN&_@U zpo*iblB$a|(y{Ag!ko$Oj4ONC*##|j!t3eHo_Qz<;zib6I3b!RWB5-a$4{A}6zd4H zpJ77Td6uA%LjXs-R#>?57@yCJJ-xbj&zHac?f>-`e&0vG<^J`3-`D0t;VfJ%Z#o4J zl2(dbU@C{Y@a9Q6cFn&|f~ljZu$fhF-4Q@*Yd^E*8(`kPy77m8@JDrb*%N7?b$`p&=);!e7+xeb;-r^5@(r&%*>bpMt-uL~{k9~6%-2ULR8xO8-zOb4( zGpaV(>uu5Rkp=QM3d?|A9BP;^0rFFKpUpcCC*|Z!(M@p)Tyia&6TJPZ+}UR*{5ZPn zn&o5{8~TYI0t$<(L>})@8|4!5y!Bwg9%$fLzGW;VI&uP#ks6k|_Ufe`yOxGe#NG z>nt#OT*wI=AN%dKOV6;seNH2`R(c^_oMXFa* z1rf|UOLf}WYcOvH7|kRltaB}_7hg2kKj!#DA!~Ef{|<6QO9jPcb4T7_f+kO9_mZ|u zUN)4?NiVFaaj_W<4J7;(6#1{! zSEA7*+6k$MAlm)E<|^JSDBTeZj9AM7R;tLmo?ZdP0$ydX$_PeM`8^McY+OZi7jIhM z!$f-(=HgcXWK}`689|&vK+dFBf^c2dXVW5@vJO}0R(NM;VwYn{>vF}MN+jXoM^Dv* z3kC)7Hlgw7gn>X1YGg%Y-E(e?6|K9!^ml&ljjOBI-u7iQ zDa0_=mV2ETG7MJm37&>$uYB77-i!5)p}xub>d{wy)3?6s_N})+^IJ}+0jgZ6%>*%a zmkauAXhW5!ep}XKa(-3D19z+7VzzAZMKeLkvwRk=V$0RX4<5Yr`~S)Bd~pBizyAH- z%dQ)DU%h(vsHKvP(Iwjg1WPJP3RO`xZDx1TBE*Y=4M7P*qJgkvAV&o30zt2B zkvu9o(PL4Izopw*?G?mDS(p4jd6HGT^GJI|$#Dj4+&u@gza>pz!XeDpby^&e7sCot z_F~t_<`Wb~(t?h`x@Bf-wQ3MLriKCfkZ9x@P+D4xur}O+K{tXd&-AVk=ga;4uSOvcEvi~d@B0-F64^kC|MZ$Y~X$h^fn_ac`KA95$*!yrP03Yc#(7_kwXabY`rKJy`tmQ(BFe;(Fb4> zVhi6%3!!;YC`)D1vhE_bODV zQt+B8UAG;!j~B)J(uH#t;a=MIlp=aV>(ZA}ft2WHZUVl2mI!HlPTx zufT!sI7Q3lTT@OBFtlta5?Go?k9XP7{6$wuJZYleF-k3!+g*35qT$Qbgz+`rovvl< z^90!{sM%*9UE)>FQ4ol|4hXwpeG$c3FG1J_S%sg1bOnNU2n6A@vah7yAs!+p8=y{s8F4D7? zWiuGwzGR?u2@MWLG$i#GQSc0-FwCz~VvHpTGVOvQDaUfAiK2V*LHFPS zl;k0sOgrO?Q9r2$ioZu&yVOe5u_k|go%3TOXae(NhZ>7AfOfqdaXldurLzlS?V!OY zdpjpwE`hHJ0_8+`JGy-BU;E}V!cc^VY5QrPV()UroPnT=OpXUoK{`pc*w!wSjxvnc%dF5m z0T|yxfsk1;d*cx4%2JPpQmISHUWBrMh#rQLlfL7j<On%O1-~ihl&By zrHC~lRy5Z?$`v%DO=I(gxXwth?7=Sm1Xz=@B83@~3?qMQVRMP3tUad|kXd!n zm?!>c;e1d+pT|gJXA@KbKMy$2=Wrafj)BPrw$PlD1H#Yq?M>%&4o@{M=2Qm{E48PP z{pe-(?t0Yi%=P({Z{q3e`|;XJp_cOtenr!vY%I6WrK5>rjj7e4%2x87v*W16bSNnMH5W;5QGzwBbMdeQ-VN&ZE4t5dEwx|eBc{`E0wlq;?{$!}~1zxJ_j{)mAO%G*zGHR;Kt zXZ*Q|)l`~$ z?Qaxr$%VNP>x!NWG2}_FZ1h@5)T?dea&-@idFH%PV8xFNN6so3Y`f4p{iANg& z4(1i_x{gO>3)&$sOfpJ-wvnY4dtfpvs>imYRD+~x61;W8mz@-jsIp8bX;GJiukkXD z<6O0Ry+;Uhk_oYfWkW;zN&E37>v)8zDw^>U^>@>0GK+Bx_xccs5p@(0A~>8cDCu2LckS>K^|tH(VAq>CacglqBw zT4U(s#2lGBP)H79z^s6t%Y*z|ju1N^&f!9&d{f7Ck}GFIPOtdRp5u67ttpqGPnurF z#2A#zj|&JY*^FG|?4vJ)n+o#+*;)+!?!n|2dg6zn<+OvIdW#c`WyOT}ds0xiv|y|m z@$!acloSqsW~63^**_twf2LLwme$@Cp_A60BlXlSJQteK9GO5;LWnL>&q&Ms#%HlO z9+OCITG7~NmVZs00Y%p7!_`!^;2uE2VZxad4&Lw11%+&9R|Hm-AV>~V8DTZn8AG+Z zbFb%^*t-C=sZ5a@RhwVBwdJRO%FrXLv&D;5AZ1xY^e zCVHhIdR8@e(w#Kh;4f7j66KvT?@^)8>f{CH7?Q0)cgx%P!pFS0kjoo1>ChN)dq-J< zv~JWS&^A;uLRP0H#|uYhMavzKr0C?H{bd)*Bl9dbTRV=OkGX(2;q51LdkB&YpQeSJ z)Ix|aJ35OPyYGZ@=)lU;ID6^ziz%_kH00n{V}G*iGNQ z9yM{Dmn!;Df^UWNYwG8vv`i+-wzx3wkKlj4b)pz~qpYokP zSFQnAHUypr&x-~7FW26VF)D3970k^a2gw$; zzVXWKyIs&RD-D|{*<;Odk>;c6)PbTx;I@2T$wU6!zS%e1u--lPKEGZBTh_VXe)GwL z>xZwr^2*2F|K30JwcT`o_Uh|{ZnK?I)s@sPP4$)7*u2>2g>nGrqn#4JYeKgA=1v6d zk0-mSsQG2m70B)A?x98r`9anTKDQ@+Vshc0z7|bsF$5}F+Y#g~7tH7*S-lij| zGo-&UCQ5vuS^;dhH0u0WR|TZ4(bxI5;2~4BcZ$y)FTOO|`ZG21VD2@#QCIP~y52mQ z!>O6|De`|=xX4(X)>0(0yVG%hLWdlGcK<(_S{hZewWO0y zd>KaIN zQJzpTPtZHt=*;4zdc9t$b7!u=VJTnOxZxc>2)xfEDNuHG0W2fAo~gu^w)rM`=g45> z4fJ6`HHiqeP$+59a(S=tK551q3QPq1TYA`+* zMW)%WYe5ShG$`GM`_=4+Ncylo{Rky*bWd@6g&~ zQ1SxqYf|mX6T16 zfAB*e`OsJV;xGQv?R$40+}{;o{ct|0s^tXc!~}QAFp19Xx@!99p zc>lOHvRm`dt{&Zg^IO0Ddp>o2|KIx4D;bMJX0<4~86X;2v*=0rQ0 zF^8+csL#Nzc%?W)I6u$j*%V?c5J1A!;yo|t8bTSHc zLNeWG$fi|9_!c$)MGEVLXV`Qg#zSQOFq@-9Oi>*K4x=QUrKL`K8-CStM_z<9pz?Ra z0KT1xQgs%62@Jnr=snG7`bb>uMV!D^zcGfmn9LXL$xMDU{fRoIQ7%G9EIIUPL7dn@ zR2C*_8(`-GG6Ljouy0-gl*1`n(g#jyp=GTzKEvz)2xDQ=d+y$G-(f>R8?oMa$hJ~* zuk2Z8;AWtsqR*be9SE%SI?*vr2d51f{fRpjmwl5)QBtjDp!vIJxD@)8#R57c#V-U_ z%WyVl$c=r6wQM9a$we;JMt=1{G!K%*@6t8Bvm4F9mb~Q5 zsu9(d#!0}U@Po$APA_K3E`h+4JDH|y!?~UHljG@{zE&(@k+qB)7zZD%{lJ<(8y9t< zBg=bX$R4}IO>ysHlrdU;)^X@#$p)AZzTV^^n6CaZz_I#r^PZA&?_IaAu7B(={gsdW z?yv01yYzJ{eK!r^nltbtvLRmGH<`n*ubXoMlMjABZO^oNI&B5&G7PS7nr5Hee)^9- z`{^J0=YDuk(%<*gdFy)yw+)u+*nm1A$wq6blCWTT{;`(9uJkiGS3=Xz*%Zp_H<|VC z{RjWy|NGg`zI^Ycf}9-Ys#G2p;7y*hxOqU&vRJL?OwV;H&k1r#O<1ZQoYA|BRKoe3 zfK&Zjw;w!x{OF6H{*&MLy?_3H{PF+$ul&X9t5=`Bc<<`z{i~;UEP3v@FVXiMrEp%s zi~)-;@UndaHo3C}lnp5-#7)ImGApYCJ0TUf`l|5F_XfEG_97f;25fTYj9``nt3rlz zT;#XJsaiuL)&^`pd600xVrPIxLINOEO%PR>bZvplDa7?-$qkG~qL$g3a*ftWUM-AJ z>Pk=-!70*9=~7~5kQ2pRNaNYhpUhJRmt+_jcG;G~33Pngb1&Zf)wWBmK!ccJ*b`TF zP)i+Fma@p>re&6&5BmmtN!_FvS#UHe5wXmg2*1=Vzq7}DIx^Og)QNI+G_D2yx6nJM_3lN zY%+1r16!CyY3-g&8W0qH=imtu2;|??~CfQELq9nhedug1DTBj?}igc0debyVp z_RZf%QH&FE@x0p*^8I83{bj%*z~w8b8UtI{kSsvuGY2Q3-2>3#*up=9V{a!}t@18A zAPU>l_nZa+Q$u#yA#GM%v>?nV1muv2U0GjZm`d1okjKg+hlS=W%ueD#X>Kuq+0l0z z)H>d3gf~J; zKCI_mAc9<1OSCX|sIPnu(#<6snPj%Oo{yE=$O0q-7#Uj&3x5eo*3zD{DT4NqUIlN` z%ECB$#Khi_*Z0Mez;dtVkEP#g5uTApE0;0^4%DP<(zqve4gLkT3`QW?ipaFg{o;=I zRD)Q$Xh(hJK1tg&FNn!rHVRN&{<|?9370A>|IRjV4o{hyU=Yvk-Gvi z8p!|vKmbWZK~!Z!GPouU(+J0Z+6x2)r18+bb0jl+fGWX#5j7rU1a2Hfz$q_c^^)vI z$Ik`lx`qiBT|UmWFQ5P9$N$zF4<3Hx>we$Ex8F8ncPZYVNG*8jEtF1kA3yfVPa@iy zJ*Pdt0b|GzugRf_`QGnUw!S?oqzZb|G`V|dbcw*70CIMOKs+`b9>+z z+9NVMiI3ktHH_apx0Zq>tbGHIc30_LKIsC7M-Ohl;a5zqUi^WN{oa56PyEYw9=&;W z`;{ktzOU-nm+D?!_vyfp!4En92U##`yA=80bWlg>P4}*$o+)iiq@T?bUFN5P43aO_ z710(!Gu<10GgYV`bwu?r)b!3rz!8|tXq+>&!`>4=&Zpu)T_Mh1w0@e!pCalY?=L9T zy*aqkXW~S~!(5x;5Otvv{VAq+B3W3sXcep@uXaL;T=H?)DK>?GZ4HW3Xs9cZk`b7R zoH0<~W?myW61JbD=i~j`#rEsuuqUJ^79mX3^VitnhyD7L8dIlHCF7g)|G9q5;4~)J9tgH{ylNFUkB(Z5s z{v|a!B)m?vQ;m|FJFl7%wGZ+^Z332d3C7dKk}YtP&{y$f=WLcdPDdg;STQggflr5% zo>B`qH9}xlI5Yi-ZGni?zjE^bXX;LXZ`-!IzW-12Kj++g-@UIB5NrSiu~hKUieeK4 zjV6{QRcb{|sbJY8mKG7p1{D*dRh9-~8>=K5Oe~|uO2tG&jDiwHR1gt)^nyTvz=PM^ z{`C2Le{&yn{r7+GwdNdijNfSHm~+jw_S)IJJQbw&=bFu4r_wV|&1CMyLYPd#;3N!& z78u}M+01=-R<75VM%EFMf}8eW%qBrPtag<~MOUI=2vVqKg*?8n>vSZKu*1x*+^Aq< zGxSXw1i-+NqsbnsngE_XTM_*9_TA?g{7e4CAA9kR4sy#gV2y_LZ%>bx4ft;MGse{` z@p0|jS-NEG%sQTIMR9IwI3g5Px6ik1?Ke}e-}?jq_NA+*KmHRxb?R|qC(}jUS+1zh zI8<3MN8@W3dW1bH)P01SX7#kP^mvJR$E zo>XP#s-$r(O3s&CXy2$*FF;k>Gk4G2BNI7xy(ep#^@zY>w%dCQ)|x+kiv8x<`4PMd zyc1^fw)un-(hBH>O~ZnA7;Y=W4OTRyXPRb*wp3oA9zC!x?-mdV#jsU2UYJm`vDn(5 z6miq?`<^;AjlwHUx)ltqf!8o zN>gFqn^$4f1ky_yVj-JCd?;UKNPK!ZjBV?3Gh9rk9n2X;V9hcOCsRy29VR4+l#a{b zjUu4nRu7n`>%cSRJeLDs1A1I4VD>A; z$myhU5zoci$1~Y>RAFUH)&Y+)@~R-rZp-1~fi<+hz+O*LSt~FWf|$i7yRrPb!~!69 zPmv7)IlKw}L<9pct^8w`WxAwStv%ut8bajnnxcLBLq7w-YyZ|RE8M@Vc@ae`aI$_%##Pe>|T0e?+wgpYPZMsH3%0$ z#Z}Fm zM&tSD@$KjC-20aA`ZvGymwf8e>$^`Mz0xKKa9^eKKQg(P8) zMzGzUt|-keR?e#SXMXPIeaQ3I-}H@N_l|eI?Y^(0ae zbY+Hg9f;8CZNwU+od!O=>4)!H+<1D;*y;T8>#zLc&-{=6@xT7gulk!`^7x5R@pBI> zL;Lg@o*3j-;hjLO8&E4OnncdjN!C22VaZ?fH6cZDhvRc5KzS4WitK|doG8(_o_*|A zS(Y#!>F4tg+t!fzcx?a>G73`7XV9RWniAJUWMoAJPZ8YksV1onIt6^v9IZ=EHS8p7 z>#&u>qHv;>o@ESG+1i@gh~)zQUBF$;mLX@vra_p4NgYJTfJ=k?glqoTsw2V@w~}QX z8u5Y9tOOW{&zLkbq&l{=o)?S!f_O@1Pe0m~cOruX<#x_|9Bi*upv+%~39`d>Txvq` z3~2A^lxZ%I?Ob8tpwE{WmokKHogGs35;rYBC zaMT&Dxf^EPj~ZHbrSnK6lOo4o_KlcB$VZSQ5&kJSDP-~RCNIOA9m0|NvK5es>t73~ z)a*vc(hvwMM6xENWVEbNk0|i7p1yo=X;D(1E1MIF~5o%D^cL7@O{gGo=HAo-dIP)C>UX>=rquy0D&`?zFUr}&zXQ4hVCfLGn?h3 zJtW{HnIvBPyQbzZ2A_4V3_iF?#P$rXtU-&VxRZsj_O-)wBXPYK=1urCpKpZkjobG+ zLI29X@)zECaP^Zu@}nNUdH?qH-Ti3W6Qei-rVmw*Gw%4taBHvY>^FI`os6#fAY(J>+gj6ao<6YUvsZaO}5(YIo|-cup1Z+n{Dr~kB%`i=kDZ@vD&4_#fq_}DM# z+$nw+nt%~yP%nlqLq?&CvA;Z2VM;CjrNqYd?3|wU@r6X*tj)Z?n9KH3EPbym+N)E$9^JW*?1$j`UxoO{1#qusbR8+h9d=nraq_(hQK8vtveXUxrP? z2}#fr0j*97u#@MuWI#IpX|CUm9?O$|*5^ZjC0Q!Hv!I=H({*FLYcRnoMw>bM(@2mU zhuN$x^G-PF)+7=gf)t!1 z<-v~ks%PeaN>U`)wRK(pbZl^HwJ0GXyCFLmvf=h9{cqr+`v(bw?;xoOn+ga6Eo(%~&s;~!=bvkj}8ItyA zBP@KY6&ysP)x?ZrdU>yQROw6B5T(erS#dUtvWPoTN;RT^Yc2@q`o9%aodoQ@(}rjN zy%;#}BeqIfiMdk4bR5L?d~!gX7BbGp7}ve4Q`o-|>zsdtGvK^~1Ff^?>G6hiyTBJM z;|tsN6O*1@!U{cN00B`x$(;D@1wydeC99iCi2^NZunv+hM9tJL$0_#F zV<(QN6;A}iZ--&Tc^5i~SvJ#OKs{;#TePvP2O9EP7VHoc`-ji^Oggc{FkR#lT0U`V z0XI?-?U25yq#kiPN=nT|@gFcBaB}+mT-(iK=ZWmT6%(z9JP7i6Y-=w}ltUME2eZg@ z?u>{rLxKR3y$0#POaC0No=5GBKd;OOr)2|e(}F(ZodbgM%mIFI@Ypv9k!fDv_En#K z;jN-w&yqS!34|zFEz-=>_{4cxH~=)CVkFu+g@0CpE~u?T6i2C?nPAJFP3zJV^2@}E zEURrtWz;5X9oUJg|J+GBp9rRn5HxFsu7KCO16-3vg+%$!!u6(0JcY0Si#-;J$Ly(t zY$vR-JKbpJ%+GPlXLvCJkm(JBl9O%_y0G4D(OSSsAxEX$3O`j(rAa$Dpt58Oh zgHn^ybX=%KmA+MWE>gBqf(8J6MTeS^;>}Zos-y;?t|wp|`m8a{cS{rFC+iU4Ke=cI z;}TjsSDno#@yI=tMT>aZnNu;)S|qL4caqlBfxx5?4Zx&(-?z`=k#}s`9?N$>RWJ&+ z>2jC@SrBq=Y=y$vmdWnBNGqO zf^P6A5^?7fjYhz-{2Y`HnlE?c6findKche_ZMi;QV4Pv;NaG$rQ{?Pu75YMDO8G=t$kxT>&2&HgLYNyu7NXfyraBTQ!g|j| zC?d6~Ush{#yU;iy%``5no{>{5=a?6A2G-KY397>11%yrJht}<1aT?Ppx z3&?!8EQ*rslRH`(3X#xV@aDK0ug6`a6nf0k)ybl+7TxX4J7z~{c`t(GJhK}rL^C+D zQ&Z z+IiUgM#~JyLn8}nRWnN_(zafr-V&EFtD$YjcE{FXlh`_i4h(K`stdtX;=}X+CzJ%-~#jWyPBp&0=>~|+&h5-7RDGhO<1X1VVO8Xhi z&I~zjYLArh>`r*Ur_|#-$){O&hUP+0dz*md7t`L8>*X*1%_ymeRuC`0s4Jj24>0;3 zXH2wiAHyY9Ef6$mh{+9Krq9_%P%=TEniw~4Ab^#F5DsPs;2?CjPMV3G<;|+FX%x)P zUadoJP+ZIAur*BRLP0zGXS@O|z4lt;VidOJ2;v!bE~NM8wKzBUtTtfch-sQJ;F<;n*z6yGxv7pi`cs0x)W-eU zjctarFi2sHia#&gLCazV2%g!L{aJci7@7b`Q^@oEv6$tJL~L54QY!!^; z=QhP#fj7lf{tQ3}1^K2C>lNr2ZohY~ZM?9Y4^#^Y#}vu6M{(FDH--RqXJsL~h@H)q zH}vK?O=xox1Wk^`+EMZBJ!Of^JBy9PHybFI9p~;s#z#a8q*#nSxhIaNUB+36t`Nd`Y9)+}Rn2E}W!RDJg&XEs zrDfhd;H}=LF6Jph4+}?Kh?_a7flq!B5?yC3#cfWr^i_G|VYiUGiukv__)qE}Z+YwU zS8qOW&snGPdMa@}t>s!zG}>)?u`uGFX6+fF9xGQ7w$&6k>gP|~>kM;1ZoY8$`##ct;D)Eey;MXj~qLOZCNqa@u{vMsT8HZE!xC^MCI6QV|RNXs-iHPrLfQS+03ab*}@@pqb^PLiQcCOV8qyZjY$JL zaowUBC*ln1C64*E%8hN=JwcU6gL{@rRR9AywpiQ2O)xjLK74S72QG*E!j=7C;xVDc zzN&%(S8R*IxuGfN%$nnkVd%Y%W#TwSv7*~4)ht$Ri!bWiY7*pyk)20~R&UlE#;u4l zk%N$y5WHokbrOOCm5H83c00FE4+?Pxon46_@ zJtrX=a76(lV!SO>&?;0_ItVou2j`_CVZ&yofIGX34WtgF-!*KyMZ3~pIE4*vTpy66 zcRF4qG<}I%#+!NMi1HJ;-b7a+Uh`^?)|hlZWXRD>T(&RGt$PG!Lc^S)J4iA-qSxmd zN~K}cvh&GvN)uE~oZ@RU9vx$Yrjq7574NMt3p~3|XH{4o9SN(KXHq+wZap1<*lzhPQC8q>#a_hVeuLFoi^dt&19rA@>tT%B~!3fXgFsP}=`2e~>7gv&fD) zG`zggno{NH^XRm?_T=t#+3%+(LPto)kha^!&Wm4?ae_+7UEO-_osj*RKlx`r`on(g z8*e_i;VWZzZd<0FCe{{6Za#O*PoTnAxLQ-!#de=$Ke&*INU1;c_!mU=Z9R%XZ{NA| zf$#hNyH`(t)@S|3>(0l@V;)(nyA=yUZY%#(o>eHzXgG;9Zk&%WKJgRm)A55}M+T@^ zoyBH3!QdAN9^ZfS=EFBW;?q9ub3f--|DAvE|J{7?9k*R9FT6cxvG2GsBpYF1T2e4K z%J#?{MaBj_mNhB0cyPCYy(TKnnLV<8bM&D3uKq1Q=>Ez_{e+LYd-MA9e(9%Qb5>s{ zSVGJ4-OEy!nJBD_3fS}Y%GV>e#(g|LrG+OzwxS9UYw$&HFoY;$Z1@>wU)LkZKq9WhAKR1*ToEl zUL{jS=_=rJk)cGno}ySBE=OhJb&bOY6>m2AZzdTwLJ4eV!PqniQU57udJ<2zF#jf= zNS00JAxO7o7@W6!*SptLETqszj~d#Z%h-Ml>y7b9y#03Dw}FjAl5%gJ4oC9WlA_Rd znp^4eTCJm5E@+2hQ#Vs4FboQ{=$v7Bxv_30*6Os6-=>G&ZRFbNm4@xqfM2U*>yBlF zDRRMo`+74~l(02*mkrG2PC9E+-^ ziy3NX{HINvIKunrbTM1U#~|x`vv%J|$tEf>JEyi#i515iAd@Z*89z|7Rr{r(@vk|)q_C}prJwr53zH3HzU?3bo7vddGQ%U9L5NY?lA#*)-2uE|J> z8DiB&drX=m3ipB_n=rT@Zkxo;j5}10jAaHRsF|Q~3${$)O;FHS46C^y%qHO(!}P*w zog#ncmCj$iFUuFANtuu9<-UGXY^}iY;b9T+yJ$KRpFNryYkj%8ej> z8N9Y?DRoR5lQamwN(7mu{T$x}ec&5L2)5U;X6j zxgM9_c=H7D#}$GsW5)+UhSEp|nF^v06cYNy#+=lEhr?b5a`n zcNr^1s|e5hkGZJ;o}EV{W_a(p8?RU;MUNPt%BEc`$~Rd<^b%ttQo}+5!YZalP=k{0 z6S-vK(7b@kY^#``Hu_?|(+=jV0ypfI9qJ)gCoSpwi|k^JPZ(JK`rwJ=4k z1GEF;mMC&h9%4CU{mi*-dE-<0!qh>f@KuZptoN_4qW@8)mFIV z+qFWB`PkN1W0g%5?*e32tL!Yr^V~9c>PJ-yPDSCqa|kRkCeDsl(ApWLou)N(Xd0g9 zV9C6hgRphZO&%%5%KNTJ6e0H(!{)_qDm>(u(aX7m)+8Peh!K1n(Paeokl+?5`4u9> z6BIfKSUc$z1~293;-g!){~)ZtA|PPAvrHNLM})+=;F9znuxN7gjEl!QS3$O zA){|A!4>QO~$owHV+Q&VKV;~%ZoFI+uTPk&xgxE|1D+{}el z=9-_2uWHeqwgH|0Nh>1GSD@$lGiDcZ8pOfG%}2Z5)t-Y(2RWtl=1N*xRz@C4wZW!{ zYR5}SFULGWM+e0i^G16J7g`fW`{Th>VeeQ~dtO=tvmBLY`;SWZL0CHMbw%h&5@; z+yp)KZ4h$RhE!i9uB@DzSyLgMPSQwv3ZrQFk>^vZ#NO<8=ez6GsY}a?(puGJBot{q z*4XxZm>C8JWT`&@#ks?nCl?!i!-hE1t1dW9oinD`(l%L(cn``*RfIahj8@kh3(F5_ zl%Q#fMS^=*Mpl7k?lW>-bTxYz0j`E~`^V7CHp|4fAvU?kx$qz6b(ZD~)sn)f%|{(ZUo=v~#b#=%cgolfjGNkKc|vwx+W@wP&Wf^> zBcXDhjGNLSFN$(dng%$D`5{xL=g6vT)4pyolh#%d5{7Lu9oSS**f=g}7Cjo+ZKvun zPPH&=FPbhRK(PH&th3ye7W4 zI4{D}z&430!n&?h(j5JgytC#BA5pjSxGP&+Tj@L4ssS-;H%2c>nu7-u>r(_HV!S#Fx{gM<>N{ho-a>W4nX- z*gO}T3+xuLn;3?4=8{*UPsIG4CwoR zZa%o}dbBh)SeU66~V60jb28_>=VTAto9yeEK z;!(3ycm@y6v$m=WP9>OaIIF)<4W!eKAp;k}YzJ#8g|69Du`{3glk|@NS-nT+A z-Wh92*^cOgNN_}|3M;9BE?aNJ#{4?S!Wr8GPiLPqW<gSSbHCQbDTE{+Hi^^GA)em|v(WQE? z*;*rX1+Q%VMkUfA8fP#%CoemfpdL)?qpIkS(5WeOtLao znO8vr+ok_@zL;N=ZbQJo5eZbYw|rRF=vaB?!|v(L9(pq$0T%53BFY5#`-~Xd?$H{* zygw0vqz~}uP_nKKSA5Z#q2} zMi%KMpC&chv;tpFv9o;Yq3cF{!RWGf->K-zOtZRN?e?^^7cj26KfUrhY5(%;-~Ed| z<5M2reanrjH*epK$yN#BrycMMl(~JjE%Iljf^}wL19ur8?@)01Lv?!1;vmCZOax*X zGAcaX`tD&5Z@&JPpZ4+p^Pl){zT#`Y_WHroTX#q-XbG_JZeE5LQ*v&4h`H`m2%I_l z347UNF_&);q@#!RGI8H=(Ap)7Tdiok@$hGV%t!p5&;P?+)w=g~^B7j!DdlliNBO*Y zGxj-S&TaMzW5c3eBem^aD@ zt@WU2&d*7wU$InwUwWK#`YKlDmrIuqiAd{grZl#U5sD655NfO`{&qIFS+!?Gp57VV z&Qzc2KmYqpLZUGNY2gZOo$EySR7icImV09jUdI)lSNjWBJ)(YR@y2^yI3??5Wr{%6 znlOjki%TJ)gm^Jf{NmNasla(%*?e%gmc7T z@9|zf%bOdXG^`yoLv=*d7jjk(wv}IE7+e17F8Ue7e4$}r$(l)V@a`28T2HUT_~1%J zayGkyZc%|%b|hv~rKU2|Ss~)a@4zu`b|yBzG>hsB*3MK~>=<$k$mQSZ8GRgvym}3( zu%Bt?4hn+JP{CboGL&@C`|0FamAEvcCYxYtPuoy8530Y>b0I{Qv1(ucBYnK!ooRhg zmQ65t+;dxlr&r@99S}{*tkJZ?j^;%2FEm7miU3r2@D?zq3n0sn$2$xD+5c#PbF2!i z_;Gq&Q3Ie>lC2J_63uw>#rXy!7HHKIgfTKW&pVH?AP!C|!&FsKpkz&uk;CBh;x$@q z0IyS*fd@hJ%&D7p_T0(4>#-Ut!6bv$Y&=62mebKxDrf_vHIlS0AfHLE1`Cr}?N)f` zhjoo{W@lu@QjS<~3`uR%BByj^ijaaFHFX?@pTWm5O8jsW0y@4PM~&;N=YEXn_{)F( zFaPA9^kHwl`Nl97);UHK-(YuTj!Bgi4@SM#IkZk#1AcYDn8L;WjuGyWpM39`u6`%Y z-Q!nJfB4PUe#_^7K?-Vn-;!as-ut!oU>8v{m+_#Z48#sHZ{^vtpHfeB8Yx+JY5-uy zMOt=)F2tD5R-mPF9Tnw0TD*DvZZrm zC86NaXX6OUOvtJ`>eEdv)HNNto4)S)eRSW6j-`91c;mH~fBaAWD8K3cMgQfmZTix* z2gkv))|Jh5XNR<-`1umn@i$RIL(DU7mQ9s9l5w$Mn`&CEVU|`sz6_R{h(jZ?`j#{6 z87UEUPu!B8@F;kqZ2pa&FPKzoJFHYtML^^n7-VA^3j2?|H6c8eQU>DMHyNwmipl_{2C0gtx+u!SwnDHWY}A~!$EHYICz zt14^Y+^uIgHWxw6p#^oJ-$@w~(N7M060k-j(jmeH$A}66182hWAuV!r<6O!fW3BFl zay&8JgbueuhIye98Ogb(K!{xm_(T>q?I!pfCLk%?mz5U2ao3%Y+gbg2xIMi%S*_w+N}@Mqky7RMn&0|dehC3Ln`FI1-X{(|X=M0{&b9{KGIlJC z(g^J`WT%v0@g;xewWm*h%7=f^7?0d+Ryv5|Knf3@#^bW*DpcZJ$NQTF4^cr*c-mVl%eF>PTfg{c51W*HFmewHyNa0QL*?y@JVWLJ#hoHGj9lJfeV;K>*GFvG?q96@b#JgrcU zTa(2?rvawPaBdI@A}8H&K-I{E6IP5Bj&w#G{;U%RmI`%7>(Aj7-yl1y)uUD&!vYrK z4UmXaXN;G~$kN;^*^P509fuTA5D-F>>D^SpQADeGPOA# z+o`}KY)H-GWYSvRITKR4KYQVUUc+vRaCNL1v4$6`po$w`Xi291vnvyY8vYQSe%OG= zoB*H+cKbMFs)kHPU7SIc)RB#H7s9*QqD_M->=Kl)9IUC5WPl7;F}yZ>lNL~gdt;cAR5qCvz>5K7M^f>&6NYwCXGy-X8cYvVQ8+V zJbR>RYorq84vDtFZuA;?8u6E_inm`7(|`C2|KLZy^Mk-D=rZSmu3UPjBOJAat?pl7 zy0m=f_O+c&=d4sIyzPtOgwJ~^cgMq9w0i!|KY#bPea>(GmE9@*;5D8=8rJl%b3$*n zs<{-fzBZ{T5*61#t{ddAD0wFSv{3sy?y5`U-G4Y;Vb{u zH$Q!N-{?)k<3~cuIQaDO?L8!)4}fzkaS!caq(?ont>H$15n9(PlJYph&ZCGd9lH16 zQ495tUcdj=x4rnz+c$sTuleN=Ts^vTb=w6U48yZfbxa< znMcM5D?XcqQwY@!skQ8fgDt*sDG}iiEeTyYKbY^FneN6cwrW-(O;cx>0gS;JE6Jt7%2To~Q>|ld7%@7nCO9KBti-D&nEZ#d%G6Le zWHq1Z5!YPdl8c7)WrZ`YV?_UH6+PD;>@(;DH^zq9-9UlA#B*PPKy!$*7kQht`8l00&lsGUp0W7(r}70n(Bf-E(S+x|sv+dmlqI zWM+!wU0`S!v&BH*bjemBGD0q1+xRHoEnVxU@yovg8!!>um=v(A7ndors~e8j``nUU zt?p1?NPbpgyo7~&q1(u(#iEqb>$4%AN#zvPg#qFzWQ2~UG=j}hS=FH)O_azp-~_GP z7Pwhj!|=y28cck6-rDt@C%5iAzIpdszx>O-?+0K0xQ~C=Yp-~Mo9|b3agVBv+;ydJ z#dZJrwjFbrhmG;wLM|$lCYnSGXku9l=cG?>UqAT3>#tlr{p{cKhc$Zq=uMhWYl<|^ z&5sRH1s5LH@Dc>}4ik3dfxI;#$4tu9ZP}zl5WCxH)4RBrm4d9P4XrN6afYt@Z``Z~obz@^N4JHUI3bFTEW`bad_OASK>@ytNMC8oBw)<41jY2M<5S(^4QmY-)4~ zdi`a;ca*LE>;6ICdqY_ z;Ae^`VfjQCmOjYLD2IwoRFe|g0ys0N9~c%#mfA%~tu)X1=$sR%5uGuxn?w+tm_?=- zTkndSINQl;J+I>k#!VltXRRN`+h1ppwbsnca6Gr7t9fd~500U$kKTp*EPyI& zuD=c20B5J<2Q$@@h|*@t%dc?@xBmu!Sk<7(vd<;b3^mx@+SY6!y#6Va86DIKE6L72 zn;U|K)yy)FM-T$Rf%B%)XpeUk7Q53mzvMn~7PdU|Y-&ZRP?68)&5<>Ccu4`|7Nzd3 zX>F!?T&m^YPIetgX64FAB2a-*6^nr;i{;wGeY%snSUmfFa|asLSG<4l3`#&so_ zcXB0^H-sS1(npJDCcEX?17@j&4|%4H;gJ<@ODt`Wok(NIjSLNYnPXN>^{Ezytkf9= zNDj1R{6ejb; z_KWnb-uJjD#%M0zM|r6U4Vbo2IcGJCc58W;9Yw>Q&}C$o;-T_6+h7SC13f~uibzAZQu3odoR4D1ZcrVLpfT1Z4lmf z&YA$rjU)ni+hqp(8Dl**<8Fh$Na_LVv@UZ3<`%jaUwrAuJ$L&Hf75R;Icu8!h1WXx4 zV79d4G5>qG7NlH&++2MTYabyzO1yB+8)uP!Jiy~-`Jg@pGby8=zZ>RhKg?>ukF|HU zp-!6A$tw$9g6m~$NNB|Q_t`>-lAR(d@3~T{s0YK+mk4o~Pc>Q&P~r$5f-HMf9|uiF zggDb;V0>ge6rQ6ByX703IRW>=d^^faxYf`EFNaKorATLYqzcgwYE1yNM{;8Ys zXr{@2n^#>sAtU7_fhb;!#K|^sG^Wq`7HZE8Yw%BgFq}{C3{f33tqbF~|aQ)Cv zk6+(?<@>(-%f9~G-t{p*_2K=8`b=VsRW6&me%zvAvv#S`bKL4w`eJ?Fa6DAb@YYuOOyi^jK2E(3j&kP0cyoCvoFP-t&P^ z`NU88(*Nflz49I3^6;h!#C?Xzfg41!R@NxYxZxja#Rrpn!6TE3=^*KRv21^+)2c2} z2aMxo*4eIvO<{X@W-Fr(>m!wk=)$rLKoV|fhKGV>w4%BOc$6^JMmvjZIEJbePLDWP zNbo_*g<-jfI&rO}Cg;|YpfXg-9Ul-kRGDgFHpuf!dt&hru<;7D9{{qFH=M~LNv5E( zbk+cKa&|#V+4*=H!711X^9k|hM|gN0{B@+%K$Mr*6LZ#3mRLJA3Q4sAq$XX;6l&Kt zLjh_07z+(&ELV2dVQQA_y_Ch8o?{-WHr&EksMYHfhPiB#Rb!xvwDsQYMHAV9ia*ZB zP%$ZN^73d(wewdPNE{grGsdnmu2S6`>|=@?XCK{Z9es#4#$XQQY;?$q2UAJiFTk;i zcr(uQI^A>uS)YV-Sw2P3F7lP<3)G9NAf!kO1*x_LDiV(h*ECWNz%gLz54|^K{=u_9 zf@7jM$25BZRt9Qbn@w{!{5lXW+V;HFIjpk2#TB;rYq5bA^IaRN4@Waphdte5N(|ad ztsVGDSQS=P*D%-@eTk@#E6ffBWES4kb4QDiQ-x&24Q%rWdZx>>wQG`CN-|gg2udZHt@q^yHZz|C8t6pazI&iA{>ZnJ@IhA!X)0w=H9TPd%tMB5Oz%1M1%V>PwYtlEM(R`yfqgdS7UA-B?gLfK5rgfq3b_1r+ zuq*Tr-uBYlKIq={ANrinrkn3iHvSrckRL^g8{XJ8zEXsfuemG@L=LV^M?#L_RH-B< zJ4BG&(SosaD&-Au0coL^EKpE(-y*_1dDI7N(5?7PS)rxIT4p&>I zoT=9ha+d8`1Po;0E~v&ND~89!eOD{+ZO(mQ$MDj8fiYcBo9Lu=kZf$n^r6+M$Gg$0 zF`_;o+qiqhR#)w*AQgcwJ9&fkv0U!Hjaq*N|WM`H!9aCCc}p& ze8?6naj>tsL;E(=$6F+XfpJrIgn_Y6#=a4bzAWGX8U3C$cc>QpgyyJiL;|BNd87<# zifm~iIl|s;o#=;FtDxdDNXX{bh3_PKTR=|k41MY7n)huOoB(J*m%r03o8Z2ec+fS~ zZM0j%XC03{QBt9FMs%|C=Vm9#Lx3BWfE@xnjS%ePII`1Tw~I?g?u^Mte<>jm1S5|z zOE;iKqN^*+AhJ}mbZc?tmqe~=jonzg33&YkP1|tB&@P$@rGwzJby)fGYdh{{rH0|$`K+RD9|zjiPV-E(ndJucH2DwgFxTMLv`R5-vWXGb z7G$a)>zOqwY0g)LPLHw^iOnXxA7XlKB9hGdAe@0{6TLz%w8@`ROI6L;>D617$;t9& zY#m)X$l|qX%%)We;_1v1}! zGmpLb+;h)=&Afe*=DCaMyoV8h@yYzS@94*q9nps4xj*>7J zjOhYB#Un1yEha5%u8-qu=Mpmr8jN#LPgA^jEA%DUn@=9TdF$!@FaBp={oeZzzyJHb z``*154A|#lXoi(dZurHLoZ?g<%;eARyig*@u`m_9EMc*`9jOF@{X&7>a`oi)%dfur z^FQGe|Mpk?^H=}vH(g!7&ER%*jaSO&nkGm-1;2elaoiV!^Y3uR)af;+Y>_N7$@~~+ zJvX!C;ctl|^{pUVF5(|E2IqCL0=!^u|JgWl0ievb9IFJkdQd`hihXPqP~D+dpy#io zF3AT8HK~2DM*|A|kmamu8=RBgW@b=y#q=~(cGmM}6Fi**#M4(R3f(hhiKfOa?6rTu zgx7vh8LRp=aZvwD3#QIE=hU=_EgFtsRCY>IvFmix)~z&{2u#kPe`V`w-Vsx5;+1Pe z;q{7kFqsz`jY3}{n<+C&TM6Remc-BeE=!iYI0^AZoZ%@5i7N-;+}qhENE2WGw}?rv z_y(!G#xxXM5+bPi<(32~Qo0=Y(}&ZVYIJGBP7q|cr7b)@GoIJQjhU%>Z6a|vbkS@I zR--UD0^ECp8oB}zf{6z0S+`8LSSFLj&VC0;=u_BDj=SsMpw@Z1|xqlO}% z9KG=%*f`iqXrVf(GTi~DCf76t90twv%N&vQaPz<5=}pxF@riRmmJa+Z5=Cfz*7f}4 z@q@I>6b18vz7CKEb+=kBG#k_s*sDT2!!K!LN*DgI<)wvg*+3K2c5Hh`k~(pQNnNff zkW?VhmKub1Nq*Cj6)Mpg)o5sPus#@m`~^ukYg*DIG!r>w#IcVNoI#D!_@w!Xq8PM* zR5=lhtSv(Ak=%Ae`_-TN+~5BE&6{s~>yLf?jW?Z&B0yS*!Z@z|n%m({sIvGeXkJ?0 zHCj`~)1b?R0QqK+kR!};d(c7}r&PL~s)ICB?946q_Kyaux;$4rdHUeK@wMA{-+1NG zo#+12pZub){FZOIbA8hjX-#cz+;Qo_f@?!L3)Cj{n_hGsfdv}V(*4YRkH;FVg1e{_ zV^KmTDjZ~y-P{5P@C?K^ijZNPFb4blPE{tYObP4aTaiP9}5MD^Xn zqb*eh0JB860FzAYv@~0l%{od8-~POW6b^_{cRX{=8jF{>X4V6yfnkOegbXgB#kvTL z!>GJZ$*kIdGA_N%9V{m5v&dpqoWucb?|CUjH^OQnL>9DJIiJpl>KkpRytnq{8C<9t z*7)R=btuKDJ@;s`WZP_MNZERT45dwdY$}PmlJ2YD?^lf zR#?g|aZC!~GfI9hLNZnm(<}>?GPLa=0+lBaL940s*TO7qba`!+PCsTVcTC9{MG$m7 za!)wX3)m!yN;u$Q(LmN*pG0I0FtbYm5#0{tXqWJ})SsL}EM74|l2XsiIuw_N>QH&^ z+0dmOg${x644y2u3ALk4w7Hw|iAI8t@{0jZ92|3v0CK*}ZU{%&{=qN)R+V8hR|KQ$ zEeo*Rbgv=sSUuZerE)qL$c{T`tLH)jthc92uF9LO*cgkBzArWA(PcY=Wz&c*on{asSO%1_1vi z1HRs!GE&>4N7wiI4qFRvIi0l{ofmh>w@%-fut=t4XP9^HS&@JK`P={W>%Zz9&)@qS z-}|1Mk3G@l)vE`-T3+Pl+yZs$XT<=(i$uGNyZKQejkuCK7PeVs{WrJbl*upit@H_Q z?l@b*yz%|!z8+wTqh0Ivoq!jfR_34He(vs|_c-1!|EFK|jqmw^ z8}Iy(r?3CO@$ZkGV_?^a;>OjC+YNmLH@{0hjktF1cBm*H0w2Y!ae8k3G54{I7AFv3 z&zN-f&NCWj$I0Cg;KKZFdeG;Lua_Y)3=6_zF+NZ^GaSD21VAzEt)N}!bmI}^0aG)~ z++6KMlgpl$>NPKow2n<4*m*$ZMTTw2+O=);~wC^tg&{K zzq^9c<7jGC;?Byz@HifgAFX3Qd{C48QM(4Z@?vN&mh~e@Duz9_@pq-R`S?z?eQ@E! zPAqgVwWlp#ARfoEIfl5+Wj!BlIj&LlD1ts2Qz`*$m}l%LZ4S5FA<-_-F-lVN;?3LqJimuDKg}Q^kflm3@bJsnw-P-np7w*0EJ@38$2maibm$EU;huk>%S_#Z#{3UqNs<3- zvf`+*R@#qaV4}-}o#w?>jO9e!5=V>r{snLZWY`kuEwJ`DPD-pBZJyepkU)LL^`i?b zZhdid;o4RjDP!ll#+1vI9oz<{a-8OxTg}nr#2ZiFd{3w{%4V0jb`*xFZK~Uek0jP zlfz~ToU!^*b;@E{CPPhczHOH0FtePvs6K=R?sdOoS*|LTDT^XJoK>F*B!0e&=pjXs zWzxAaCDR>c%{pMPD-$NftzNV!J?&ZQeqbP>@k~Q z5YLt47O-dc^{o2^C+cSrReLXWwa-m$D->N>a7t|!o`3Q4Lu7YYPk(2o#ZT5kI9yRE zF6%Acj?Ik252=$27A+)x^<|h|CzGmXb@U3mqYG&GA>yz4g}ptDkZ2?k9izCw}m~ z=U;wu|F#_Nq$qY&IF1J4(d`?zDe3c#Y67BdJqSMRLX9N)N1 zit-#=RfS{nqi-|IQHUiGa3887Y$Jz$As$rt1*x0Q|JR@Oi~iQ%`Uju&D}LFJ{NN9J zW}Gjo?d-YmXIbA#_k{ry$@?ufFH%j^E0eE5n;xQ{P7#&AAy!XeggvGyC!|lSoH3y3iv409AyG z;R4kY0hc?JMc}Q8$B2%&$tv+CBY#*U@Kr{<5~U^qPL#a#Vk{n;Tky8`-b zTOb{mgf06sYrOn*&$-PZ2JUzuOHEx2f6Eh_xF}NFTHoeg&F!;*K|T%CO;~Lu5)2WT ze>;3O>1>}OhZ5svHriB}hlf3_3+2R~n&{;q87Gj(BYk$Uh6`*F^H=yo6i7vtsBGW6 z+D<7-!~r{GMF=@+b#->*@ureod<-16C`?p(3~<&GIm$TBButtXG`W-8H%Cd_x-`n- ziMR*#wbKIwLG4XL3*EYAA=mg+tAk~CaY_TL-kl4>4;2j}#gbV-JmEejpsU*t*<3C;UVU}K~U>wcW z&3nE#oT6dLdW%(iCB9fGnoJ1i??#0z6yVf4gOfDA6|#-%1codT)W&xR2dAT9Wbkvo z6tmO2u_G#7;048gB5QK2cM=GM;Y14(szBHcIrR|R_aPv2+|&up#o$k#+&1I;t6%uJ zwEJ=I_@LJxKe)cS{X`c@+x5?uXxH>92LptUAT;%aGb+*I+3;38TI0HeRZ86Qb5{=^ z`z@B|Z{Pdp@Ba2L_&uK|Q#^j~=7R=?lOh@x!e@?t+XL8-i3)p$DvQMC*-V-W?z?0G zzRWvQO%nx~gs)G8rL&q83%Cg-BOR;d8gPewaT7<`sDuWZ~TN0 z|8Zu}fAx?2f#%59_hg2xsNtvwX%8|LyMT`G5RvhzWG>4i6NH5eXVY`+t ztP^y<;nH2kTxcz&M7EHIOBcWmEARX7tfn1y9=G<@V#@3}YEAHQcz(wyP^e06-b=sO zhOjMeS!Jie+NNXKrt{SppOLIi>Qz~8Z9g^q*)dWiwJ{vd_6vKxQk{duB_Nq6ZaM^Y zgHc)^g`9-gOa2=_OTF`@GNr9~sO#W8+Vosi~k9U^VQBA17r9z4| zH^IwyQ%WNx#ZN($x|NJ!l$1KBCc%y*tEgS8eMH6a87c3z6UZ|+qEdoqgjCKC9WxnP zG)6u;@9Og9#~g_admquNWC;Bvz87E`I}Hk?J>g&&S$8u{8GQh1<*3t`G~&>ho$wu} zAk;n~dRpPSi**>EiRySqa$saVMfy*{Hsj(uFP~7y2XUq#o1$tf>TP&t{(9{W>E2b| zOK^yXb;WUBH_&A42k~&qxH@VuX4Q;@olE9Ago%{G{J5*v7>Vlo=2FR!NV)UxtduU; zHb`iEL8atU&gp!Yv+E$5Ye`s+vFrRVUH8A>iPu0zV^4z91=QPNx3MjqsVasFmo#sx z(;dqs1dX%W=6#GDt)MRsX}fM-U!(18oBqc}`pZtFYCQK@E$rgLvU9e@EWfr!(gb>B zb5d+)lt~`9dM?F-5eJ95KnQ#9p_I+lP8vNn8BA3q=6PpdTk}f;t<)|^{HB-n86_P3 z{Erc|pLG4)$9~*Tf9E?s_)SlsJ93Pzt&k_PRqOrAHGdkg43&-fDc5%*#=EqfCE5lS zobtrex4h-<```EKKmYoF^)+w4a^vp3Tle30_4wA~n~ySyKdln5^)Ow>(TZmlPH>?> zuS9@i{1+iu&kD*Ni^p$W~?pl{eCa9W41@U*GigK)s@w zYPI=sSbX8{@+9l$?!EZlfA@p`^4q@kUy2{o(>LBLbfzrP(RAT z^QbwgUH(5#GL=e(;l*@=5`6se19&0G_&456Jz zyJ@98QGt6^3%dLyWDwVS_R_H%*AKU*t_K^r&>i2Pz9=&>b@UQZ+P8RCE$a+YZkP%V zgCsml-}RH-xu*D7fnS&PfNa=GZakQS%9?iT>vfmT9_~4dMDB`Oxe_;=X+^Il#SZW% zYE{+LQv!my{)jCgp;#0~PiTdmRG}O@WGy4hgNdKw*_;j5f$9Z71uSw^+66l??IX0XL(;N0+wZ zf&1F3PU<|cONlH(7c!?&zMJW229*G7uFd#P(-07SV!sh|8q6un8a&RU`G0P*0C>p- zcrH=IIyLqsX^@KSxu#k@!(WPY(#-PN^NcqD99U6o^2A>;8-T1-1%rUWc=J>SGOm{( zY96V#5?1PEgZ>qH)BM;2ey4sIqQRipj9z7X*=_WkrCa5NYP<^IbEI&1iZ|PlHl-GK zW03Ubs;m^#W(V3QtiE>q8f%x)%MJyS$A}iRUPGG5b;Tjf;ISxp8d?_9NNgE!@HJpt zhX{c>H*Fj?y^lH%*cmH(Of?qyE*gNvgVEa|E7Non{rTzY_H~27GznS_PLn>lEtdtdS(GCVD;DNk3Cqp>f`Tid^S^UYU(;!pUAFJC?WsxSQuODWGHNcl`QOzf>a z45raB`l-6%3I613UR8V+HX*?fB-TI^Ng05vhEaxJnFjfCH$szY$Cj&>g0%~$cXkP4 z=Et)${83_^1?(@mU=;gFa!P|dGo?#SJ2NKKYud)R*-$yeKCh?1(ch#I0IuAU?1Kk$ zjM_6Hs(pOmtVy5(#7+lPYLh$yMHikh3IftcZ(rs`kAszDW8r#Qj9LecV^e?_qOb2` zv(TaB5gqQN^gcIlr~VHTTTfKJ@7Tq?^(`DpM7e(-YpyxbA=%eA z!8p#QU%ETIU07UXDOo?U98yyT>^7nd72|~kHz3YTQ<3R8AOGC9lB&Xx78j3XSo~OE zr{|1}p(qY}TL$zYo$iVSL{P&d7b@o2oS_ zcs3@TTadUrsI71vE&C}mCC6*PXRFgRemTgtp^-)L%XAf?(O(7+LT1jY*{TT7mnqe^ z_!75u`2QCIA>gt7FQkrcKVw!Kow^wXI9wUrCG?YjbE; z$Z@$zBdkinS**^`IT-idzIT1~>iZsE-}=*k{=fgG@A}@u-nzRh3xTwnRx}kujLtZg zG4`FQ7Bl=+=TxWx1yA>@xigPVTVltWy4=y=Y@yk3sgD-6$JP7Jo;SbU6tp$bEWVp?+x z-Z7a_MG$JV$DQq^I=jWe?8MW#b&MsEiq&y}6*k7#Yw8WMXT{jCd|wbMK8Cy)Xit+V zzdRc@WnhPVA&aj|M~sh!+!3qQ4qhOqO|GpnhIu?jO+m0qj(4t{caR)MKeePadTIub z^*Vb?$y|BP$n6uyK67aMiheVN z!9$=4g(wIcchw6FOeF}(pI9>x!$CKoy^s$OjcVrS-W)6T)j_H`i2q?yUBdU zlRdK>F1D5&k{>J5H)Iw9VDm%00|(pyV2W{0_r@>hz8H-O3zRYnjMU*%0kGHuUO`~} zr|$k$RTPxa?JV22b+}*hJ2*)9kXSg_sD(j5!t6}lZ@~0`wX#m{GzMSg?SAyMbNGNZ=0n(*A@4r_+`ssmul@9& z^5M^a^iR8W|K&SRo%0qa@DWwV=aLuD5fG;C-ipOD=O`fI#zZ}dN*+$F~OtYY1 zr>Xq`bzmn1Ls_h!Q?x;^*>t@!i3?xvWeT$NAB~qFkol^5wn)c91XaVQyQmOZUS4O= z9JB6jaClD5?X0lm$aZlba}3!On87nNHWHM7n;cb$&v4f2T)DY@Su*Wxc%~RbZ?O%4 z);wx3-dcD4dN%alh?_30Czr=V(hnqLmEk#>rlzWODEJYTeE@R`=qPZ>(!#5-Q*_*) zL2_kzZ9x~=8KNd@QkqL8GRrr1vZs=g>0+S$lVq_knhPcXl2Ta5{M6)uWHmx$(&p_2 zMN2{66SCm8!)3~lCbudZDh0K>V4y?cnUXoBh0gNVIH#p=ZMhYH&E4k_ujGv02hNb- z!D8#ki3-2)ow-g34S?fWMiZ*0;Ixi^x%kAxSsz;f7lrdaqZV(+EcM%Tfg;NQ#AlV1 z_0&<2v@^*FD9Wq=cHLEpo_T^zaSc^!tf^C@sfNtlAm!E{V?9mrR|P6h#V-|0E3s#J z_DtLvW}{Si`YAtl#hk)9s7IitOCGPpOT&b^yO6Ar=^zR98s;Klc#u^eTm((aW6}W* z@a9CVN)L64W`Sw3l2W0rsX@lD-*yb0l7_H*Ion!JKlcZD`? zJ$(4UAnqG(PEi}pjprtHkax|!doOlmxjonWrkpn4_r_~~@PGMBjTetSFNkf!pW=E& z_N*_bMQ$oQb^)jaO{tW_O44AroUja5elI(h$A+!Q);#l;LuOmtN`v!76>3`Ei(_gn z)cb5HOMA%&5H(J<9=K}o^y!=LvoP{!|H@zZt{?cm$9})>_U*f#o9~J9=j`b5jYs{| z1-PNYJC|mqx?-UU*mUb0zM!UlD|@~mXfyD`_T1fj&s|;pmH+k+QIAI+2{0#D=iAzS zAz8}IY*YyK*`XDRx=aCyJw6Csm)S*jgR*^!p(Mqz-0w7Pvh#x(Hr}1SO6+^}K z)b-^YwLFh~o&*5au|hc5b8`aMVMDr*<;Brg3`}UsW8y))BHrRE#Jtl_5znLq$Gokb zEV9fytRzom8_*3b!cX9Q?{_uP+Ndff7XFi!%Cik8(MW_ zbXHVXnm8k|T>+%XBNWUv>u4w8iW@t(8)=G-8q~ok5}W2W`KAM2iDKXvGF7oeff+%S zbSZ{9jl(dv54PQzgt_XP?B=C)-qLfH3|Lu^O@4Y=ags+kxCm3a9&j`SI(n=bv|9__L1p2luyX*Sx?|n`6m99bpB*BCxq{DPnh&V7xAQ^}dgdsB2Ap(Nf z5k!=X5D{sH0~7-T1%-e*1cXRLOwc%h1VZ{ym4<{Om5_$2N~(Le-n-5JUO(U8I`@Th z|M#4|*Pd(6-~7$F=30B7ea;C`m_xFD86;t$suVZ4C*aUlW|TKLM_2PoMJMI+JV)ku zE0qSPuE9+|tW|UArRDH*=B+gQ&%tRSS^Yj)y0iT0j=inJ3gzrgyJPJ!6PUB+L&fyv zr@uHVU3r>oXF#D&JIT3V;}U|SdbCP6kGy-;$9fkeHO3v{<8eZ)%W8fZDb=}LIk2== zknGS21MvySmR6104oJ_JF0G)JhH1-4iaa9Ho8={=d22&k+mz=-kD#8vljl`xDul6T zn_Erbu-M38y-Kj zI#c>wt8v&blRD@f$?k3G9rYV-4Kp=)&*#>ohy8x545XUC2Kke294q&VcF30CcbsecT&f_c5RO`PU!ccmF~zsI?83ylyyi26DR|(Y_p35c-|_ivH3bJLKc2563Fd z9BlGKRv(|Ao^_-olIhKHfX9ekuj`w0eWE8mbxY7FNHUq01uoignP$Ju_283!`LBQT z>t6dk-|;QC@A@{Ima^6`BB5SH0LHKSOk-C$dMp!Ny>JVO#HUn&k`=xbsN?}DH>ok9 z>HX6E_kY?a|J<+os=spkmB-iayx_Own#=Rq*;Mxv5H1VOiEk9~pV3C0<^Z3yOU)|- zY?TkjLaXgH?oO}f0*CY~y;&f#Y}p_Jtm~TD%4BwN;=_HmB(v>RB$i{UgY_jvk8PT% z*5b9KNXPU$dC=}4C64BM@&#?P*cAbF;Hod@a3`{U;>A|H`tWe?9;UdG+jsDl9_F$} z8A&4uMa>p-L?0%~nbwP42t2k`lS!|@7x8Eeu-MxRWdYG5m zjp^CY-e7S#f*u^nfOA2|&P=XCWUpy3aABq7JSRJ=MrGs3_ zoiva>ahfA#0KE?3rJr!{D3(N!RgOA*ZV)T216S{mkBFef;M4}qrWcAT#LAW?N@zU6 zo&k3%q(vlcI5s48M2@!9r^t&RKMqk;7no)edjagRD%0D>gsppXFS;W?fKOQvp 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

    aJbmd(iAV_rqDjC9`WH~ccPFN_IxRvOD z>ColpU7RgM%7G!C!TZ^7`Uz7Smg0qFr<%ynbDQWa@^CBMEolSWs0e3^LP5OQPRk8f zJMt*}Qd&$CNjPBiRSs4)8m^y*IcepN)=J6eJ7h9sHa)8Wrt2#weW$eapuhfwdsJns zE$1q4pZ5E>$$q?SwPUG6%42HqK1u*6-=ytj#e%n~CoT0I$3C(iGs!@<*G# zT#fbUqEh4i5m+*H_fjioJ*pQYxrORypW11N*CHMgL=~G8#)cu}55Np9NiUmdNdd$si ztPQK1aj?y(cJimN?T9Cwt~ypGBZteZ8$1rnC^8FN()pK^O^7KODEwF*HR&BKHw8d# zLXo^BX$K`O`EhPdXwDkM1&+k5;)ST+=m{!>!L*yUMZh|F9! z14gTOlbpl+CnzL0a;sy`TBx5+_*fEi$I6?x;`K_bT1Z4h>+xyu zj%IUs=rvA7YgCQP@9KhfEI$I5Ng*iXBhgp~V~0+YZ-&#a2k&t=Z^0;9n~EIM=0WCQ z$JoU?#e7=CDdhWp34z!q?$(2g+G=qMbu|GRQW=`=^fhm54Uz}6bJaM^IJ_;G@rU{1 zfhDQgZo@}~S8kf7mj^O6y;~3&gTEwBjT}xKeCIGCIB_%qj z?{hk2D0~*vRzZ)J=q=s#H?XnUDuYM+*((?i4gK|g`}yY|O;KJ`WuX4MRBdYYzQf-t zZ?s4ZN+>|hsnyzKNasriXM?8{24ueXdVeLwK|sqjPd|#tWQxT;YM{X*CccXJOxKuG z@nBS7G;wjmDKVt!*AAlBIMGC11(&N$VI7r~-ig#TZ{$2fbaeq2Q54>M8MLyLElTD% zlpRbb>9spQ0-S9OEyZo*bkl2;_nPvy5Tx9@aavubPpr}Sx#n=1PeF#fdr?aOL18bq z=inGv=;axN?t9ar+=nWq4ez48%AKcpqZ*}Re@-#=iy4>BeG>s4wjkpHn zUZdAA`$3scsS0)5;%47}LwL~JxN^1BA5uK9kq9roF=MP%F4tA+-SqCx{R zzdd8Rgm>B{3JlHSmM&eTWYl?SLLp6)Mh7E5E(;LN-fjSUf1+DgcX8*=v4g`*E?$n> zdv&?C0y7?156{9LDzuw=J8*I{$Uq*iv72zL(4y`Io=~x#wTgHfO`zKJucpCBg#Mhl zZ76}cUf4uj$|w#76<-p*j;)(!YS1-gS2wO;hWfL#P}dlt<~Wkt{MEj0G*Rb2?TW zm+!4|%~fjrGzW$KlN-V5I07i)O;e}>l#BXevII!&3?!2qWlV;~CyfV#k`{xx5%bB( zvFi10?v`wUF^+!E1JJ7-&v4pC-?l8wrEb%kK!G7u6t-qGtIFZR&88He8%d6(XbFGK zg{do`4szi8H(y9)yt`kJAiN)5(YR3^3=HK=(9?sq04I^rHEKyYep)K_6~zIz+pUpE zZVvFqcj}Rz=2Z9d8rZL{Z2nA7hHj)dkTeABFzT>o#YD?PZWoVAS!zSo>^^T6ccWs! z@P$TX$;eXINn1+!2Q zimRyyKJ`pDq_Emd7&50=$6q7(9y=|lml%1zz9Rvt#lkF@M@4gq;Q*$5Y;e6y-1MO5 zTu!lLvw1@bH+Q@^1<8L0Y(e!`PkNZ+I8D5hJLybE%8?mR$4j1g->DU*JaSdtFY*w` zSvj`;0%79Y!V#Lm^wdQmQDlk^J^nAnbVZSv{?9MJw)v|a`8|I2uFz>pFJm4VFBq5^hVIR?zIO&NaF>xVfn7>N&Fjq{pWo5zxm-x_z3u{;gVd=bC?_@mGg zcH_mHPRrF|l$IdjhJqoF!=V!S6coc5j`q?~i6QJs%d#X;bHQ4&zOh3IRaES=R4B@ ze3pLU7Ao3w2$NY;md}yaKOZ0kdoB`2aFUc{HNp7m-cFwk=*qLocuS_qoxis*kZjH~ zG5|=>Qa)&L&<1*Tsimz2CIL1)vM{>~csYTe8%W~ZC!G9P4J>lX$%dN_FQ?IH@qQ>SHebZcE5w& zs0isLLnU$BJGGCKCY?)}DjXC&yn>yl(n-WFD$-p8uEw{e^p8cZNo{KldveCc-~| zwog&1x(7R9!wb;LpgkfTTQ!Nr09(2=`cEhQ)%1+i$Rjyvt;##HdoMLNDf|fZ>+;JG zuVR{Z9(9oxSYID(lT`ni&QPb>=&+QN`GA#pCNjZgNLJ3oV35hmhSVXHTQUy3;G}8G z5UZiZ+rNh93IN8B6Rg@TrD5)$rSsP)D=~HaKg_A3apnTB7&)lafRuv;3sIKB%>h27 zgsIFG#1^Iqo!EZP<}_pratu_6=quu_Dd%jMYd0V~YynV~e8c>^)p}4jm_U-4-0!l& z)7f@Q4IFrY-BL?x$nk|wN~&b|z`&A|mYRFJvcs@LGO<%^n@+pUpx zWPeuEQ+KN9ASMQJ*N(NTD+}XQ6Tf-Z{%CrwjwwZmZ$NB2^Znjk$ogrszb+XQYTlNA zO9xg0S+;X-_kQ&M^nJ)?V7W4QY1}&0q}$fMg(*V%8@M(BUJGkkS<=Vl@pyl|e(Vft z*7wWgl?=YnSMgnnu;LVERCI(MlZsxMvus0C06g-As&;DMee^<0J9n81L!R*NXpb@) z=XEim&@WSINTx^H_R!@7(ky0X7q5a?9CM%IZmWPtE?PQhPVN*48}l%LJ5~##<9KLY zCs07~quvE7wm5jIkQtQt(_0BFw;gyag#t9c0xZI_xbjzB2r$%YiJC|b|dzq(f+fxX{bXti$w!( zyfd}6k#TI>)HZ9z78>raK*U3YjDfh}CnN@lDwKj)kZZz7@D(rv_e-JpP?>TWoo>0*+qYg1n+&ia4W7X)eo5w zC0LjBj#cl_-lGb(>_QG-ic7?>KzpW)ZG;l)RMgx54WgyK~SeS39uDQNPgj3j zovOtfP2AH_m_?Y0X_>KNc?W0i@4xpwX(YL5!Wd}Asyo}f%R*tsUR6FtfmYVj&#wHc z4rfTOTU+9RdcF5J(=yxYWk5KW0gidsZx-&ZCKDu2IERxRIc@HGPiN^MYMasqTA8la z-^QQtEP?^2%o8LAQ){kz&0NVq^WUIUwjs$O;t3S;PH@m~$Ces>nbE~KU|;?W+vlv@ zKK(6~C>iUugRl=@Q!f}1 zC2CEdoVE5;A65a`DK5B{mp-h%#k$c4#ZXn%5Xz}0Jz!M>lP)G}xi`X#j>4ruW5OKn z|2aZoq3#!oD%`cVQR|cd<;}RNVk4Vy)5A6GmwPq9zhpM3A?R9A0GPgI$Z81w-Q(+q zh~8`Xfsz>CrmbYh`7Jd+rO`5v?ZbHJ~H35kJ|I4c`Tx7gMS zK-9<7dgMqdG9H=ha-0m|%jzprHZ&}X*R{`OWKdg1&3dD^B;|hLPwnmeVoxoar&?$^ zGK*AssSM8-DyT9F&bi~*qwuy*3#lP5c6l-MxhB68Y%uq_6<=k0UgfqbHh#}@GEh2> zhm8BD;rkCaLa7-JmTVkkZNUb;;bUD~>08VQw8RcB&`gYs5|UP*>r2k6%Y=%e+#4^@uw&O&55NhaAf&6@$}k zVukZ9D$x;(_8h=BFn{-)f3Wp^DgJ~;pOftN8dwOas4Xob$o%Wh6*HjaDo%JN+^x z)S~5PtkFV^jov{Abjqs)cIZVvj&@$S>`H=E5Q|C8|t z%l()$ymOp`G*s8ZTw^=F?os#XhErFN`WnZb$)gAghb|T^Qnho`Co$2Y>$koU4$cz; zbx4u`F+Mi-)vJgj+$(txkdWNx%eLM#p1|^pL&h$&87j|a`~rISqG~JXZx`82J9z1y zs!bPSX=Y38=9xjw&AV5@-u_&QtT^gY<9kt7)?%pOiXPYYO$hku)+l(p$_(T=x%t9C z+J_*PtCOW1&O?_UM)s-;50#Ez{MkJM4b)utDo1++y|HLniV9mvQ3QL8qF8qDQoSRa zyRe^$T)!`~4?9uzWkNva6hZm;`JtT!SI!S(7g+>E#iT*rI3u*w~R8Y!;= zcW(Mb8ag%edW%bevm?~I%kkJU30UuDXPK;Q3Q+F2TmErMd%BGUTU?e!CAtPXt$wV^ zt$HvKeU;5+`wrrEt3c7Ta2T<)$wVyhu~ewTLj^|{MhaM|kvbJ$cdHi%tP>^8_`S^R z)T3J~R}nJ#D%b9`>t0F)*~kSzjyw2wyGpsT!+LYs=%9xFBqE7Q|NY#$GWS3q4}zpgdq5^Sgp%zhkqY_nQYhFEiSkV%rlq z-7Tj&ZdIev5`NgCeeyN1`PaV1%#gqLjc{UNe5bv_@UkuoI4%nuicWl{x61lZwd91J zcMG0&r&Kg}n~x;F_`#=mfid3t@FSyluN#KjA`tdqbmm$BPQUgVrvWq6M2nkns?%_B zt{n_8l4wQW5&oCy6`2C@0W&HduxqS{dpzkR;*p~wU@G=BAkp<4i;20+oM1g@$O8_G@yF~ zIHsOgU})(*XpP0q@a_Q3kh6u7>^5*f>mm|(>s=;_T)am}gEyBP^vuw1>w?#Mu`-@U zIsmRQX86-|n1-}FxD4!#ge)3Ld1xdn%?ahS*H1bkXwz!Mf`JNBgjJs4Z3Z>KJi=05 zG^d0q87bEv%ss}y1L4dGb;sw6VZ4x^Bik!%$!W2z)VRlro5sF?u=p}%RixS@h!9Q29GH!&17V63$8$_IDwB%u`bJtf$A; zBg({H)LzY+$#ilpi(d9dcw<_j2W*+c)`YZm^O*6Mb4(aElG^WR-{&c^G@HjNa@6j_ z* zoIVQXwA$!k;oFRDs+6P6F}utIyA_GxWL&%tCI0-4+@W~0_iSgBZ)Cy=hX?vMRU2pJ>m{`{krcuLCf3dBo*vlAiSMY>s_DUez5W1-d0$KFNUhxxtv zSB<-_V7R+bZm^rZT5_Cs%YkqNRn)JF#XfKPLrQH3+W7^JquU0R>C}8GT2r(Tha61T z*=1LRz>uVqWy6k_V>vR4&;M_F34*XvRvPO3R{#h24~YJA)7eoTQ$O2aBHlR=>&VOm;_mbW_IMq!j66&g(k z>Fu*D6dRcB<|8`}Z)4etI&=1RHHNAKdMAVShRh>W$3|cJU`zwU?q}D@(-SW>w$pfO zS@dx(y)@}It_fIR%~tIX80V|Qi4_b%>Jg2u2U;Ztu1pFWt6Rg$%maHjju_pBZq{3| zpkeBEBCWLfzWF`y&}eEd*OA?OsWq2Lk)^Fm7A|po z*42O<6Un|Rpgj%POx)A zsz6LOFe3iPP8l7%x*U}>3FeCi3g-*Wl+d>zXeA~QUQA>A z+?j#WDGFn4Q!yJXX27BUj*H-0E;qJ27f`L3X)ZvxpcG=w@|j^)%JccU1-RKde~)C# z7_sK5Mmi+9)3R&Ds>&6GG^F#4YLt^9USsf>ZLt#aZdAm&q54|-gy!U z&D(QaYAH57Nm4i_Yo7`m*)q_HQ!ks9Wl`07pW|j?IY1xnd5y;QVJ&<5VvW%O z6PeCt5uorQXCELlghy%cT&0qSPS5h)GrJp>T4L;mLm~7s!?yBdU$AFEt(_s zHZLQ>zhPjm_ssESVfP`(`L3GS{+kpwi=3J;{%p{?RNiThtH2|w#_>S!eOLpfd8<;D zt}LWhIGQqZtzAyJVIoLy85kOxpWV?& zK7XQ|4|%+Un-90;N$IlTYB5;dA)xj?s}CD*&tcQgRYiU2X)0zk7LF6mk#gNLl&5*3 z!xFVroevaRwmwx5gRiB1z!pEp28tpeFnHyugRaAhWnf4`(wY~E z{UZ%(jt`_Jdi*PDsW{Rcv{sd5|SdWS)Y=_9LSVRUX>n{tC{H?!Iy zIVx(UP^vt1mj=o*M45&pHJ1jHyad=jlAh+CePrZ!xXk1~tjM%-Koaa7ld$J`f zxW;+UYb?5A~|o9adv zxS3*Ebs+IV$g7I+&61`A0@ITzwflx{>KU(f{|&GH5MH__PLEToAc09TU2_ZRs^U%! zmw{pzod{>`c2p%&w0ruSL&09rAYluTO)Y*#EK6Q12xOjbnabsfvU=z1Y>1ww=j=Ah zFK4EZcN9%Fi*uui1D0~;sNXN$d*u8rHreeL1UhXe3Q8P;&GfFA+u0DJN-j~b&o2*; zxENb>Jafg6B~Le}v)Cvotto9KfE==3VMEJ4+SzDaMP}WLV5+=3sy*^V+iveV7M`Z>sg!2mg$zfGIN(r##g zXzri){~yrI=LYT9lEem4?RalyZ0|rSz50|&pBj*}n+C&lCTF@)RBcXnWW;PY^tKwy zylhl2G@J8EKn1!~Zotw^crIP4Y{wSleHQQmMr^Da^wTOK~|{Y>G)yv>w-PN~Yf#+qdB0}UFcRy=~{IMgLp^P#ww zJ!c|;l66kqM-=0EqtYpqkz`alai8YG({I_Xde$(7Gv=i0GnUh=XJpz3bbfrU4{{2N z{;~`Y5ccbxWE}65LeU&W-4b9fdcnJbtz(7N?*J;zciBarClLl%xJ^9a<_Wx9O%TA7OI5MJrqH&FN@dgmucP=`sACv@NnRKN=%P z4VoAwG}GS<)#m#lw?-1qMH;993oRXulgmBFqHNM!Y1q|F7SDRp4JlXUJ=Ia3jdCDM z1;Xjp^<<$Ue+k5gCev|Vtx0K0UVo0+;t8}qlBpV*QruyRma=K!#Clt0Myy@b4y`-M z3e)C787Vqk?gD5!yxJhPoX22IAs;FOop#weNk8^EjGK~$ETfziR|jOYXd^8^Uo`Gm zQ}2v`A%PJBrXh0JbY0R`nhkA2mH^G_^g)v9qUndjVQg14DvHkCj4{pc>Y?bjdfAZ# zd&I^e)u85eccg%9`|L+WH(xTLAs%LBZ$soc!`dO=Q_C#}B``1ov`=@p<8fa2g6SpI z{reOsj-K)nl5ZS0RV&ruOxyX@XD4&eX@N*^uUck7OWYTx?>1N^a1z~##9XgVA)mjX z$bsHmSUXQW3NgTpu2@ABYklsQh2e)>cUhA!8#4wRZSH(p-v**#io*dAUo&E=h&|WR z)6kdCrTbj)gA7znBESk*_U5d-HFpHamIK4T?t|yaCs2+>`UQx*0LdwTOhFdSO)Vhh zLa94HZtw+XkTNvdqgHPei|r_tl(&zjjjo&I={a>Ld{}S#?tMEBY@@Ld&i~4{4<4HU z<_>$)o-Hh6?J10e18_4uu}Qkq?%@?*3vZShIvCEEW2lN%V(bJT6?5)vEC#+ z!#WAvYpR=eaXk=q#Vm!}3YarZlHD1}1zpIUX*%pjXVXNyh6w^J9~ zH{qQyx~yG9D;%%I&q0zI(Vn@4T`n{J@}H7*wYL-%)?I3w;Z_=-rcVCduDF0a)KqyI z3A`%$mLZmPA=o(6!>2TK+kR9iKaoon&@d=zb4Hwpx26&u#IWH<_Ii4d-+@?jR<*m42Bcubnv$HrhN-_!T z$#=sOYfKlf=imjaCj2Nsu9~*ra@m*j48xX&E~j>nq)^hEQ}^_9*%eB_MamEnFl{$^ zgKsUV>a=qT-l9NhE=(*o2G1Css^J#n3f#$>al&necApHdvtQ=Sx}@}Wl7!(MyWu(T zmMr!R-0z)s09#w_7LRylmH^?}J1s*t!V4w&B=m=a*!zrvqq^F<8Aa8f=qW&ogLV_g zkJ^Wa&lQb4=ij^XDUOuvl`txJ-h1<#kEUNl3>e2-0#-fpwN=pJ7ijY+;i4(d zs)2sJY{7Z+GpMThAE=zjvc8M#g25T`kWJ{|t;RYV%?sP}?bFWs**E z3>248!mU$R8uMJ!%M!g*m=l@Q)A`F?2aQ)GIlZ*5gzlb+cx0md2tB6?^y(c&$!B%X z`x$_&6LzRyVB(7k0$wlqOce&5QspWn<8{b}J<82|(UQpufEAFxqb?3ehItHx-(jKa zfUc_MnH*QrB1h_~0>{jdyYoX&g5pGS7j1n(<~%BUVsr0^k2NnX#9F&M(guS)|NCh# zqW$nREOYD(PZlYsP*vzNaHCNdg`NPQ_v>INsn|z2mOxHmS@?=)NV&g%y@TsmH~mxS z2U~X+gqIQPt~flhnaLtMJk^(`#Bh#Gw#V{jw`OdfTma z+qO86znhtpA)s%J#R=uu=$3WBI_iw#=?twSdvi*qcCouAZCaj2R{kq|I`JACYVLsH82iz?T<> zkLHki(BITHd>KWTW^%0!>s8wO9%9FlGEBN0+t@hgtj`tiAd6McmC=>KM)8PL+E#4O zCGDwyIu#;J(orS|dczD{jMCr6U5qFh(vbk76Y{-IGDQ9MGszZ6{d95MdeHpn^>P5= zn8{K9y0!kMIcV}fz}m~V^1B=|d{OIEr&-%u)J*gyR_}Xi-<|4sIFfTDW*TkGjy2K9 zpyUyezAm@K*?>YAd(A{cu3|((p=n?rGVhc?C~S1f$gt5@usg}$ebkA)M)@{ws=&J_ zc&!xAg}aggqtLWWZnGtdsNjezRI{{`t z*(3u-!OCcsnDfKdt@RXVWrx{|i4gYYj3l31D|{UrFZc{jLE6k9hGIC;U8w10%h}v7 zHrU$)tY{On&28?a&;M>(&V}Jkb2u3aW2Xd#z9qI1Y3?;?^H+geAs_8<&XHa2aC7r0 zeT%-=26J*+3aGOsL#?@N_;O98XZfee4om)s~T1H9Bji& zja>-=W=b+qGUzP^6Xur|N){?Zdm6SX6+tG1u92C=TEY?%DtzVVeNNNSfAOQ^(*Cl- zoVf!F)(s50uY22_;Ywo9tE)><`JmxSK@hU%6)?9?sNgkDs6t~Y{=gKYP|OX3>YZ50 zR(?6NG#~OupkOPfw6&M6d-tWNZqijWy3#?_CVR@8N6-4(3tnC=Onum;X97wb}41ogynC3wsx%JqSk^TDq=E zp_cMIW4jYWDEDWJ1V5^%RIMD9Ng+kxK#oIh&XFjreQ#MFT1}HbjZ4C{7@{5{traIL z1W0<#9bPU8fpU{KuNONV6(KEK;|=&4s?jrB8<-9TD&K1)NdtCd)4p$5Z;Z{?h^S^% zkvvKmTQDg>d=Uh|EtRm<=$AL@X}LP+Vt+d?G?^eSdMS?Od2*}lTx%4jh^1&6@;S|L zmq#@ZR5<*P#9eia#Bgp!Y??8;n`vh#R}jzcjHW#4PQfkRBZP8Hl$S27j)LMoqx(~n z%^bWmu{S(WX`!Ivh@+HDZA81tyh4j;BSQb9s??np12G=@$#0~-@Ca&uGBTpm?f+C! zTLo#t*L4*6jmFCW3hg<3g0!8-w&VneG3xoxe zEUaaPP}#yuo-Q;3S&B{wpXs5EX4-N-7%hhrfOGc=oV9nU+)eEQ(QNU^uLh;WF@=UI zj=lRkJ)JsQFQ`cDLwr|IBEOADT>euUj*8Q>6?7UH1?=?I*T)w!p0x8so2sUpZP52{FZVL@yy$CyJZdaHNjdA`nw27I6pVL z;htZWBzlK1FNZnJa5_8TxG-kgjJ_}}2^+E94>`BaMuY15x(4s*r-lJsu0>ZU_v+yvE4;*>vX?N zSn^cin|BJx2LmvdLS6&wl})e8I@^?}9^p&5hS2S-mI<*q&}f3JrwgisX3_Y-&TOvv8z$Eii!R82+>h->gPaglNkg z_tTbh7&Bxu`WPE6Cr?R1XVqxOSJew0HM6fbm&VD6aFSi_%uvdNW-Cj!CrpOv|KHTT zEy!`}NEEef%m4qKXP)PBEX$s?1FW7YwW>2o5C{Z7kePMqyw>ZWcjo5M%{3}3FKQXN z{+;BG=2cFJZwXp@ls_v6yaUE5T|<~_p&=mcRXiz@K<~a^s?Sx@Y4lUEcz-`TSOZ6e zgz{N1s&N_FdwI385~L-A)MVi+Cs_3(Xnz0t?T@x^UHw+vglfGKHGV2W0I*R-`sRK7ne=&eB7 zn_BU;LNnb|!_wZi9YYo0%F3p-tq&Iv-X8^;FPxnJLt^(0Duv8;t7oqow0~C}7QwlY z2TprCJ-^0hk)Dsvn$Jt+sOD#Jt=HI_V^YsRfEM?F>BlF9j-2=9g{2a_sKx@z1p*0uCzmYc-Dn}E3vdaN8uX5dz6{)e{&YFgl_$pLg5FYcCAAQcWQ(ZYJ6I{9saM?^HyaMs z=9MsQ9PfGflhDqc&GHgnZ(#a92`Yd8o+Rg7FzIs9UmuxIIT+csR5<1Ze=}fqPIL7r z{UIqHSaTfqh$_9ODk((=lQw1`_8c8FS0tvPx34=;+{bn(+I8vGzlcz}z}*HnkYA|I zXByQ6j$B#}(2&`!zzsc?oHB_X26z1F;QC>)=IA`(47S!9IU< z14Bq?${`JQ1f7-@F&egn3kc}l?-A0w6>Z9OZEWYWaON4&wuM=BnvV=+Iy;E3unyzA9$5zNr)DrJf21bNVlS`a zjxV{B!n$swV8kLy=VPFaXQ&toGT|93o9BoQN}}53#>G2xRm{MH4FRWi6;6h_+Kt_C z3j5C5Mzld@{k(SB3ZA!Mc+M9vgMK2A}=JH6`h_VCH7|1-COU1jqUc$83oZjqSxxDn7em(K#mtF@2 zYR-C|b)hLMmKgN3C{B;#5Uyx8ZUe{S)wOc3zhbq4eQSCLyZ)0o-GcIcg)B@P{JSns z*pRMYw|U*#9DAFp^A<-r?#3z1bve&1uQ3!L&?+y~miRH;OtA>vbx0L9H_3#2nlF5d zuV^;PW7&RGQc|9Kpq-o2p=!L1GU?)A0tjEFbw;V(>KHPyD})>Fd9bpprrs^Uqn*wp z-(?vo`uEy3#eC;aoh5vUWXd$fI!Tg%phUqZ<#-)4_qo(k(0sw=^C<+XS}O?T?Du_A}Ugyva|YlFgzzwJ2CHRINT)j?fk<699u9FmKOfg zGhP8wIjzPV7$})McPtFM7gQP%S-ht#Un*^vHpNeRrD!n-YB^(6X%q}!W8T~GdS^e2er6Qu0NXG1)XissLzWlD;`m^@m@2w^W=6-a9H^d)gQ$7r^Q z4au?Ga8w+WvsCkqg`UQPQ_~j9mJu-GMH@3S>9o}-)X`eRb4S? z?cJ2`qWghG`!UQJK8&FyCf!p3G*~}=% zxL{fz=WmV;|F^#FCwjnwTl2#1Go{iOO32 zV_5D8)~)xmcnC|Os`kAZD1~pDNz!2V4$e&Oj$^(zJNUJa2?V4(p?|149h?ChJX8g& zo;UkCX=X-|-=&QR*6KL?21HLHB3Nm!3zGxV#F^f)=Y@Bu)zsQD^cEBMBILRS-_CXXy3iR z=rlzeQBW8FfP%_U_aQdFCQz8RW+g0+&D_G?ra}cQL$Bwwwl)x$YR|*H%wr1G7K; zY;2@AvPo^0NPqs2Z^SG*GLU|41Ax&u1-LMeFWz~S4NIM(c)R#%QFLf8S}gRfp9{%S zOAdiosVO0zlcWp*7r6%mq0>1(87bfQrXd=K3RUFrhR5RyDuEocJQ7t9nw>{hw6;*>wV;hE$6ikoD3 zvqg@e;-brh&n22S@rvx0aG83LVxh#nFV+Z0hQ?hkXUns|Cw5<~q_>kLl7k3u1?r0| ze8EePvMpEYg`^GdsHPjMHLp4}E*ksAzk=&s7gY+#y@8AEvo3})Or;RGNn$eD; zh%tIQzY*TF&M-MMWt@}OMR~=}vk{g5G}z!%P~4v+k|rton@<9IL(;H_z}o>mL4UAY zAbSC5lVUpzPSG5s{Roibh=h(9H~U!ZG>8kj?in*s{l0Jdyp_A;DdjQ+y8l(xHrj?L zIlOS77xFTE?j)EouF22lZ1oN9ORA<1<1rPSh0K8n5)-SY&Jh(1g!knokay zU5Ax#yz_g{$cBJUa^AZX)JmBevaHZSm&=+peIeu>)KLjxk5^ zS(TFnc`lkY;B)VWldbF-afKG^lTKXd=jC!OwT0c=3Ka!HQDczNU`yP z*tF_iCD2C2 zUK^T(=WQP!ciNLb8FI(B4erjztOq_ByaCBX+U7VVGO|VkA(Re_t|%t2-B^aEmQ7+E zPT@`TgAuT%qNj`+vI+A7O$Kb(D#v?{kY*xoOi3Od#PoN?-;93FW^aTybz2%=%_W%- z?8KwD{a;hl1U8#2XXS3L#k>@1G8Inwofqd63ddDm#%J;#blN(^lQ#3A4bApyy{zss zw2RD&_J^O9Z|GJ;489DUb*`z}1L>(v8ZsFg=CTfB>zJ4M*Qqy7<{a$yh<=A}*ose- zIrY@th|>lkNx()V!q{wDbk`TW(m3R+*$^5=Cu6Rh%n^XNJutu%-`q(i zL!)MqZ8-bHDGbWO-QKG~{9B!=p$oD8 zE4vexg!I`Nn``l-kpA3fK<0Ab*^CgqHE9VK$-COl+;Vb^oq#!_nPdZtg}h5C>uPoC8ro*Dm%doSgL77Tj@0hl2c1p9pX6S_oxe zMOTKfm$N<-TUlu@0#dgD?qKR*HLyxz@VUP&murFESAqGARyUZ-C}##6_@kW+b7ctu z2fY~36bnEb0<$%Cl#;zPMn|6TOIQ3sAa$J+TP>9}*%ZgT4O(g)q2fr`jH5gnzx9`s zdb5IECNYi2A<3#}=4dM-!|%DBD6zV#Ih1qF|9}4HU-=-XDT1tUO#!R@L8Ep;&2SsZ zDybJmqB|#VhEGdFHqUZN{8|#|YJJ-5-F#?d|AW9tsnMflpcK5W`okVco|#T`L(Eie ztnmc+kS8TX!Dt^;=Fz*rFNYvs;8Id*rak8)$UHqhYU{`Uzz+%V`DpF;Jfp!_OHrd^ zG=`9g<;x9eSfB#a1eP1Ho#uAI-7seeO{JeO=r!iP8`*|{wuL^h{$t++{^1UojB}Lo zR*oTN#qSD@q_+{F`BEnzSBWSG`_fe3uyN$(RfITJH3*E!h;`hORU)7$6BBcg_K7)= z8CF~s&92O~EWyMY@*w4DNmnErRu1GZ6CEY`Ng*I_m#Pg@PJQY0%5Hc);BkZ4ShGa# z%^hJ1bv(pa2ZmJUMro0Kb1NVA;4eC*5Twv94Fb~xhpcx?u)vwk0a*kSI~nwDugz8s z4ai>r3gsNX)?gr(v5A$DkB8221v%1~h=|x|D;EAl`yWxWQj*?lD-2Wu8k4=*Mg@7fq)+2RH^Yjif8lAA|kAl{oSoC*B5e zZkRZgo;gBNKw1V{_m2PJ%H>{RrANBjI*9uak|`)ohk=7MzuQ2%*yE7IIDcdO7{&5@ zF?J{#ez`PB5a#IWj7z=CuSwD-9~>Ul#kv=m(N?tLYC5gfj>|fIdo+5rziT5(A}tKqqyg-R~bqBx67Hi5{vr)|GF`AX3g_gH7o1Ou6DDe)D!l;mM?e8HMp z{_+l}95MFnh}Ep*yaSiB_XmnduRIcC#dEVMyggz$@unw3OO?;;i=ukhJqI@n@)StT z!&H)-E-hRL+;WTrV6$}y3%ZsiiEQc6uA&`cFnX?b?YB|qvKg=>3oIK?V;ghF9<=IwiC{t4AEs*`v zN$1$i9b*q%k(wjIvpGq&v7Wc3b=)=j#(ok!0Z{|Yqbzwdu#r3{`EJRlkdmvIcN1lj zRcRI}1z1bVU5j(Mt6ARZa9nxs<5^pQIoGnStHASE( z6qh3M(f@R=fy;FAh$E-`A}&>~km>Tk)!p~bwJBs&ajEP~LAwP9D}|1ti-O+jwi*f# z%$^%BSKktj#@0EkZVA*6XJd$8s;uIeXi==0iBFg!VdU4e2cr$z#*VF2%{5k7FRzGg zg=Vxc>D97Q6WrOtLyNRbyGdjeEt~1_9M1GMqpvLRh?d*H9nTs#^+9_$BEWS>fWumy zkwuOV`|_bJ-5RRoBkFRA{KJ-mX@Fmti=AK_v!Go4*L+HIU&>L{g1i^PfI#lhvfJ?S zX@tVnOQKLO`P=w9bB-1!I_?f5l?gc+bw#-1xy#g!Hx+3BD z87+>vix6!uWXrMU-O)Qd_WE5ezaeM1;H2%4>C0hCnnGo&;bU84J`i4LiX*1jb7~ZL zG+6D1L2m_?>{c)2bRA5V67s91=Cy9(`Kxit39uZ;GnCTKmT4g)6Mj;{4P?b@=nHP;2Ax(Cd0}l zcltZt%Qi0y7iKRXZqyvewdGwTo2zO23@j%)=Ry<5r(Z};0?Wyx5i)Cuqq-3I1kQPh z=sIQ#Rn-B^@DN9Y_xrgCW7>G*UJU}-yE!@nET+!DlcBi)^j4c-&;yt`*>pa{AI*gg zq2!hYB~xqFPNx$9(^WG;o1FTmA^3~EGxD~WETRgM?#ty!!u=GS02~Grqjbk!18UB+ zUq<4`!F{Z*Y+k&*?5Zl37^_Z8L4#`CuHrt%)uh^0$VEYzLe+ht7S~>^wPtBtP*Mlj zZfX?;t_=qJK5!3AAsbW2Oo!)$m~ibP3osXXUI60lD+(y%Bkv6CwyLg%k7~+amZLD! z`J!hNZzyWHAuUdf%rr7MbuJhvTiB$ZzY*P#o}K#hR#vQ(%f?|C;dMdIQ%+TGtZQ41 zTJY%J1(jEMX(|5q&0IL!Ee(d+5}n1CiibR}oUA&;d`C+FoKSR2(H6hMSmTM+zuiDZ zAq}h^fsnX%NlIvzT@DL@(`Mk28Tc%&odR}G1|RaCDsJj@!&a}Z#UX^PF~M$KC(?^q zN?R&;JtaxW(iZPNDoL`LyVmp;EZN&aa!Q0_PRab%@A=hsf8fh6nduK9&Td1%;%-Je z9u|i&v(+d@yU(m2;gfmRoi=kdX&-HK^A{fmnf&f)*#R@Y`Cd74i>unba{UOLiXs>i zX1NCRCY0j}#cHeGQgxS)z%-9Jm_G(pNfI*`I!k4}quQ|e(80%dP#I{>P6H1@cFzkI zsUo}2OedO)bI=^eTbmK)q)PBCeq}gl1ve)G6TLezZdK8FqhQb*j;?fagyh=QsM6z? zU%ZXcv&M^Bw)aAK?#!9yxOH6)Wn=xLD6OM*ItLsCye*MLlPg?i)H5I!+UWHV5toqE zdbH*}HejgoyM4x`ybTrQW`yht|0Jm`Hb+`qZBcjS;-AxH7cIa_?|v;sWhp~1|8v%` zsE)O%jhwXl4pKUrzispZ9%Cf6hLA8|w9PNe7Du9JQ2o;W^J^-BO?@OR4>#TV7$LPR zZBx)ziER@uu~}%1NMPyLOF8kn=xc8a7l;J>N2zBsg8Kq0J2b=d&wsfg@8LA=6Dp6^ zz;R^cHBYo}kv64U6|~U80V4kA71fRAqjA`eo^?4W#%!2@4UHPXE+P8s9_3;&8A?PD ztZOhjowk%M00{?uCa4NzuxD$#O{cl3rTu|$xo^xnTv>FLXkC63dUK;KEmfa;LDhaO z1ZFgU^xx#a04#T}QrJiB_S40sx$Bn4q3L%ivk5On+yaf9&_>CY2ghv!f+}(?>g<{i z?QaTPrx^BZZ0)_fYOhaki6ta{KIFC=w#k(7085(badsS1*rq6&N0h^(S7U~1MtJwU z3!)__%`yhbjo8I{`9!lQmOI6un0_%c*Mj<`oWDgng&EFNCArKYbCQl3i0hkFd6Di~ z8&dcZjqgIUnWrZjw=ipeIN8$THKTub=aD;MFUJPJ5H6>zdkp?C!_PnCwieb}C~_xL z2CgPuyHRXvVBh@-kvg;uTRDy&Nh{HRUK(DHUX-7 z^{s^hhZUF3Dw9tDAsjg$buBpE+vvsSb}f_5G&6;fp(0sfl0sfkwCSAr#enWAsS4h% zJy$eCGG>ZPU?=a`q5m@}3c6B@4UV6ffmEzfvHRrKkeqjB6K5MqORoZD4?E)2Yz!B3 zZE(AsncD1i0G@6me|T&CC37_SpPeerdAr+hi|C9nVW6(kIBo;5d~k3cd2YV{-Jh)e z)eg0_GM(o!2e*7Y-y>(f*Bvj=$4M5Uuy`Lx^2cslE;p%n=~6!U$x5jkm}2T*@7Z$M27!LW`YOzP z;#5O}?Wb^$#&nRMu#QX*Rhm7$gg6*G7&i& z)lOv>>&v=wEd0xM;Woawy;t|5?Dlpc)o#*)=-|}tpe|ate&$PuvJ;d*KD!e z_4Fyk!#vm59f;l_u_3hWnF#duIG~8NSQ&igDC2E;bbzZ;L(VXvS6W-BT|N5y(gdT;kol9n+(tnVec2s5sNec5nD^J=MG0sl9dWg zUujY(+ku36%giD$d}Ue-hUXb-a5p((Df(h5_krjp9^}$??&5<=b|+Yl&1) z$Rv_BU30x@Sj1DE+Z^;V+kEfsmfo+_ewsg*s7EUBAy_Nb3cxLmMiM}7j(Z@$% zitmc>5lh`@scPj`XB$DuZsW!3k&p-TL6|Bgjw32Q&~cHPBWoE>7hStS6~Z|mr6oXP z|N4`b7~*nZXo#(%8C|S6sU`8ExSE{35ykPOWv;oYMYI1clwz6tL2}atGkY5xz{j}~ z?VX2Kr53v8Bq_gJEtCV0Q&F2=%Z%DWkz`7(2Ad3qFv+pLe49NoXgQQYj7PW(A#={r zA@im-!~#JlWL-m-e@Y;_yYHmYj?crYc~){Swi;eVqgPK_953A#r*gR!CU13m1j&UF zNdDImmVj}Pv+yq+n;7Dxs}yPA?57?EI(=tfxwg4RO{TY0&=xZrenl{Z?@g`2ppURy z=$y)9@uuB>Ez3W#G@)ZDKYAOQUvyGBW=ZE_{q*eGsOY%KUtsdZ@1QN)nhZHwb?zWn zs4Ji(VBj-t>DNGsc?*I4-U43_@{u;(8%{1ZR+TpMSB9!kwWgbx(!HQ;Ags&ENMb-& zB==``@-=s)oNYzw8REMmBcz!jm;qmkLPR;_WvuitauqZAHEU_;Y% zBy{RuS0@#$_JyV5hot~b`CdAStAJJCU?s1b!`(#nU{U7qNDU^r=qJCQ1dbEWjN;jQ zwdomV+-}+dRsPuQHwr(;09*TGdTCvwgVtJ^=V9VvB>SmTuXRC^o4j0gb6VmU%bk4% zg@R&~M;ZG$hzzW5I%|$$!#CGTjF1Pro9*5gxdPhIJ*V2}AFpv$~ia!0q|J#cO7Yf2XVEYaY=*fvN2WupDhtU<{KN*j&+?(3XFA% znLXaN9u-Sq)uo1s$eWd^*caa z7MV*ZZD}5#&Mo|DX5n7i*Y3Pe3RDf~tvrN3J=q^g+ZJq*>Rt4~NNN=<>nWI}c}m3w z=8M)sxtLO>!aHpiL{-E5=P}a_@!YIOW?QFUrRx-4+{vVEQ?>Qgmc{9KNKK*`%Nr)@ z@@$E$uHuTuS*k8Yb$&GkxElWAZ(a)tum&z;sk~bh8g3&}Im)Y*tuZ&yiL=+gz3vXLn( z;tdz1n+zMn`NG_$CM98vdSqPAv3k+%cR56&=%vT+-+EWsLv_PFL#uVZ^nCHgQe~0s zI(kCd#gL-;mB$K%Twl%2)F5%b9fP?CnO3Q<%Mkq}a_5$=$Vu61S*BB*Of^SL_Hjug zdQ;`7XajCcXrVUL|B)Z7$y^rB_mq?Dex1E!d|D4at9XVYzYB|!t2;c7rNF%q+gR~A zf5027sU3b#$0x^N_Omy$*IU-+!^$y}a%z}O3_DGX#dhvd+9c^-ZjSHbX=zRgB&>JE zLDeYI=pYAqw3fm1jfY|Bqe?cGWg`8ZL zW+z_^ZMLjHEtGawKAhv8+rrvxY<%~~3b$dy9|M}#M{y{qxQ(4HgVVfj!O6kpPr&g> zG3jPvs_0}QaE12uwsYPP0=HD?j3QRa_!G@#R9h3x6nc#J&kDgxMEGeA;=!Y$T=i_g z^fU_tcAV1!#wuOVq&Ki*TQfarJ1a}V8)%5(jC7e*^h>a^PSKZ%CQiGjpsuVCueiiY zN=pMj!RwFrP!q7=`9WudYk!|-LvI9cY(~cDv)YLJdT%0{>+b`wV7AAaUH22%YMt9rSNf1x=i;H+kB>=MZr=aqEE=bD2k!bTh1 z*0Pny(D1Z^?@u4al})4s6BiQn#8q0zEn)A%cqNDL!`u`jcHZPv(@0CmJ!0-a($Un= z&RBB4dp{E)0b!3Jlu>mzS3s3)#U3EtFMNWOQMQXKm-yCsVoGkkE}PndWmgHKz-S9k zM*%JTibarUcxEc5kZ6QEFuLl;L53;Y#9_-xPt5Yc7oo>YUgfGw+tzX`I_aw>v%-vo zXmxPOt7jTUgX3O9!pYqp4;AxV?z67LIERhm8>RsrC388OLB$4Fm&4wwlu<_`p`7+zfK+pVfU)!l1|;0xz#*&MP-=s*uav3aF3-Fa zhvzw}DE#W>+X6llUG&^IK?a`6n$XHBMXy zBx#L&MWLWdKlgZAflBtlxLXU(moOUX0j9JuoC}`)c4O?6vq7tQq>GOrxoRm3`fvHs z?x1b7>qV^;r)0B;hGnwq#>b+0A|ORkrj@@1w4H7mvKEu6C2V3B!DO5YhxWYgB(#wr z5PoH;U%m`t4>a06rigokIN%M>7-jTF}o+{b0 zqA|=Vg5h0aQ+lohd$jZlONm5|tr6~^jjVP7T1UudJ!4m|E~(~ej+{Bd_+){Y8oXt% z%b|&-OAj|>PYd&qP@C}l-3#X|!J*~w(BuBu3QjTvJaKi>_!w)gvCu_mvdjf@#h)%R zcxYg=yi9PMu>ICdcyje}d0top>4W=e&=vmvVod`JVRXD@<>JfNd0Jdm-PnM~Sf@+2 z^of3XlFs%V#cuIkf(2>&q+QW9|Ds42mB*5i9I=j+qK7Laj`bKGCyrZDrd*drcAly? z)TvlxnkX8v2N+e%PO}VY)%(wX6%xv@Ll4`Ci=zx3r`>gof+ciq^fk}-595qn4W)+9 z``diNV-))(`g9fV{ec#SHjzUw08Bx}bdb;PQj?fu^&PjyyYc9^&VvV7F^g`n3=F$h zokODUw3*0O;65y8T&-l`F=XkHN18)*@*-e^GCU`~tjwdAC39yBnb$#0{mZP$4mlfA zs#iXcuy2n#N*SfWBfy_I=|C=m)Z0KlIen7B;8g47L29oM=1l)w1)Z4eLlQttZSam>u?i zIlvb!oqld$49Cc(oZ6qh%gMEZ14 z|Mgp;pDLzx{h+_JkJ}89XIgb>ciLie_0kA|Xds$e0D8^E@YVp&>$08FUD7OT7mFyB zT;PLkr`tE_27P*rVj?Ym72#6eCrBo491JCMkPT+c33;88Dv^#Ag9 zv>4pjFIBwBmHnV)%w;qyn*ukx^WBf4zgI?IOz9bh)`CSRKm3Fz#-qxX%sV{1^Hltt zf#>6D5-E*MSO+K$v{O0gksNex3}!7NphZF#xZf zqUp(}nPs#tjdRM*hI-|ZtrYvj#2+ODu{J80)7s@$v#kJWWp+?dPIEM~@99*E>Oa$^r<1a&Ht19fZsoMMZQ&A8KJ zhk1i^PLM7#Jy(&>J zNEPJ?1JH=u?<|m7@KQy^0x;VX02x2|>(Q^}VxLp;h{P%e6Px<%-IRlHA*bf7L)&HA z6 z4UL&Gf8FxgTibrRV;l^o9b~B}H3h_X@XT=~&soG^;CB5oCn9pzGeV-I(fhxyX{##^ zE_|c(XlyJnmy!DBHiL*<|XbO81a z(0EwpO zuxQrXg+?>I*{0wB1rCy3t%Sibs+D{>~@oQ#vHwYB;N`~^m!@?z6rvU)i8ubm0 zg@c{}5P}NGhENztFFow0Q9}#yo6lUR;gC0n!tW8=rNvCqxqz~+bFaR==ZaBYcm!PB znI^M6(Do15M9AZ0{Lazx%0N-<725;|X8ah4gu%eKiMDigo+E}M!K~lHBej$Qt_`uP zmv(71H^sCeVN(ke<%5<@*!0BsG}hWumhRy!WQg#bM57)68k+G@1bc)}A&HC5WsRgY zs;s*F8zFS%T4p12PDtKQn*qfaL_iZb^zgdT=^DfC#bU1r)dHMa0f z-g7C@U2sF@dF?py4ZfX5PAf?8Mw0pNlopqlTcveap2TB?Y+2arE~y)hK#->GedFf# zu#qUn(@sHotn^95z`@X*66iP!ua7Jns$+1$>}zwaF+%+v9AaN{nu% zou*hm<@Fh2hPPdPd|86-lU|1J-7Y|~k~=ZCf;eKcCF*Nry23cg?$r=vWt>{Xi5Ob~ z2EJQ`oVB}8-m!2wP9g`Tbf_XB2IzN%(aqPEleSpv>lR|raeF(1aTS(~lpOcdDl0i4 z;cRxHsAcxXd*H$YzHBx&;3+x{3AR($BEp^(aZO( z0GI>Rma8Dh$xr=_{7h_^uHLIdunUOjttC_uwZ)ZM3bV7G@I?M@sjwKq^Sud|*Yu~& zfgxQoCg19EzAj6fk4EY2UrI`cg|9sdd0^%xZ5{;5zY1$JlFp9vkO`SVpfcUW83Xk% zCFmjC8yNI%c-BU2?-Jbsi&`4Yd&AP6{&P2u=e`|_*bptU;1L17c~trCxCzzNOW6kd z9r?48Q=lJ0s)z|-EJV&vce4JB1)wA!+6Z^a7@+-&pcl%g+%M2$D^h6k1B~49T(f`X z(>A3X&$j|@U!K`jueR~E)3CAqNV>2(__u4uEak;|j^ ze8EPcM@TwD7})8Q;kt%oA@1^KnpdUiWMcC@M%*Y0UMa1+kgTgboRclFVV+Yl;P|7Q zU7zGkas`1%0kzph0-0jO_cC{x_|mN140XIdk}J*$G>xutap$tCmDkV{^}$HmDxDGT zsafV(cn7OAAW(2$d1}UXY;aXI?V!uB!0pGv|CrifmWnqP%D?g^f)+Mn%h&|Wf47lK zxTS1Z774bxpSF)4mf|Vz%^xjJU||XFZSg3nrL}#H!00M$ zem9MmgA=5t+)A37m~mQtTWGSKLX~vtvy!bg{UY4on9qC(RGvk1@v01!UZ3yT&Zz)U zyXD!0Sw0jkjU|FrmIWJF`nqkD!o0q_CgP0teRWJc)SWvfk7MD;g|u{kBF6NVMPb(N z3Qu!+YfM8+n`VNSD)NVp>OWyS15k_a7;2ba#~L;%?l{JEEa>%>JLyR;bnZ;VJgK)~ zkDu+|AOwT0MsL-RF#{z75%ltc?gZv?hWil+8b~Iv49uNOcmFt#8=q!vRYhkks^*FJ zsLJd{Lc7l0y(Q3nsvX`||EF=E=8{k?3+)L@edv^s% zp=Wj88BdZmNSbu>F4dG1*d~(lJXIN75HERb7i^oTmJcqf%zd+DRWiUbN2i0Hjit7C z|BQ-#eoRN^C;@t!6BRX1=ga-x&7?erCSeas$`E&wz~@MRT&Gc;qbrBA>-3x=Zk(}M zNlicKPT6@nvw{MNkTKIL?PjEJ)L^I^`)0xkL&m_OqoEw5HEp4q{xWU+&{3-I4oaPO z&*OpA5G2FQ@g7v|^hoG}1eiI{Y>mVOrZ8uF<%RESj7gnAPE3%cePy50rzF3YI7OVN zywRP}v^@ZmC!n9?UtEp=Qe1PC~`V|COf2^uR|*Nio-oX(1pPWkts$ zi-l$x?pRN6VDhGFVU;}Lit+Fi+eq@dRjm&YCEc^&9YeB$Ha=41N#l7PK>`|mdyKk{ z=R%OSj%7IJL)?6LAd7yf1|Q1URx{~64=CCAe)~6AJ*AxkW$GJ(bdPw`J%{^kP%hR^ zPoA-k^!dtA>};wxR+q`PV8~H?o^Y8o)qcDGKu;Gji#}VD_&v5Q=wh)~_q&BIxl0q0 zy`nx|D>ZSoK1)P|XEe>lTsZtldu?i1X=jf*9%0ZDm__inW{aNxJ-2Ff7I5rA5P zu{E!k14o0FU_iB%FDOCHv%m_$(D^k;W0~;UNfDM9r2Sucz2krSQ$saoJv(NdwB*X3 z;yMHzXZ8^|a1u4o)8H z?v7fsb?pxJHI~hYA3o&fkMhlTmBxLA=05!x?!yb+nP?tyf}>2+#Z1{pf2y02vc2ox z9_XV7WAWYSAG6c){ z6F!PIs>za7|D4+&^aZ+$WHimen}&7r;r3TWA)R-XC)gex)yaE-GT~r*K*Nk zI{em+NeLhm?BlzO0EuIoZzIsOo$r;wd;z}XVy~HdaS3YIuA79rAmp8kw@puh zGrANkgl(WKmMhH{Y!(B`ht0IQ1F|&Qi2$>71cYbt&Q%N=xY16vS45a{xon<8&}5!R zglPmXz5OHxsQI~S^`a{FNt8NgFH zs;d~J*&~++C%=t3#~m9Up4lGVd~K`-M!lmaJI#%yKH8d@UpOm8iNyoCSIEX~!*?^; z7-Yt4M8%Q19z8Uoy*Ym$b? zYN(1$rVS5zb>t+8-6gUcU_jCdMp91FKJgi9e+KaUXD-cjCbNNAanMde3o$)e(c;MT z*TYXTMzy$xTo-eFFNa=Y6}Vm|1669VLYQQB^tSZ!4IPs{FbY!VRdQ81> zWi`l!ehjQW#BIN4kvm4Waq%3<0q!2ev})f zo`;r=SX>m`eSt*%q2qV1RtpK=r{EH>iUH zu)!w-|B+J>8tuFv$$4kA&(|pgyI?bdJCees|5C9PoW`)rFvHB&E~juxc9)4UlH0c| zShMmCh+K6nNJ~fZoJ?J6nlQJNk?j0X&Y4a%;;z~KCYMoUio!Xwga}VFD6ygvro~JX z!JG3Aw-VbALc(rEvuHJpg^tNcQS!8y=}W8x<*j?1*KS%r@pE1C!7ej8IRfgNA>sXhg!M zZfXn<#-J0=oFu_y_r1v_uo8GFlnvmgt&49lDdEoUfW_EM$c&V)f?RH+yb{*8(2$|o z14XGv{)%-kmn;y0_rI{_X26_gk{apacK+Z3m?Key3L4u5;@EU~?pFV!`5y zodftc^btNy6JTe&0SrT#0LQjRP6Kl|DD?J);7?!xvnY{L+^U$B?u$gGthO+qzZJT% z4P1FGMm2(3TzjKM`J;O}&4m(U%SrDZ6-1+(Q;ZoEH`N~x$PC#ucLHq-yk!8H&R2*H z%bi!@0(v~RJFKs%o!x#q&;90F>dOHSud}cCAipBx!n%m(Z;yQDb$9r75O~8cRT4L7 zIS?nt8T;7IFG^sTzkMrqD!W7}9eY!xTWr)C)%}&g$3|i;tN9K*>wdPm(dD@ED~`Dk z-nKH?9Vs(caJ`n?{>FB*sh!#`)*kHAEL-2)-j`OZPC1xGpX3c?nDc8eb`>NpedPn0 zC+Si$@a34FILS^9PR+|b%Zi4JX|E_9jJ*&5w$6y%9|UjSSi?wDRFL`}6ff<;KzZ~& z*ulGOZ-=B)m)wYpB5pX}OXZuA$K-~OliMcFNazhpVF4e7)MzXY62o-`m1?Hp+NJ)4 z$y-FSxSJUVW^ANtm^LX!MGGrD5ba8vLNMZ;=l~ZNn)V`AKF(i_^h8eYKIZ5D0y2}y Uxt5@K5dZ)H07*qoM6N<$f(cMDGXMYp diff --git a/frontend/dist/assets/banganzalogo-DkEbuI83.svg b/frontend/dist/assets/banganzalogo-DkEbuI83.svg deleted file mode 100644 index 7e13ea3ce0..0000000000 --- a/frontend/dist/assets/banganzalogo-DkEbuI83.svg +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/frontend/dist/assets/index-BuVI6kgl.js b/frontend/dist/assets/index-BuVI6kgl.js deleted file mode 100644 index 0d93db6b50..0000000000 --- a/frontend/dist/assets/index-BuVI6kgl.js +++ /dev/null @@ -1,58 +0,0 @@ -var uh=Object.defineProperty;var ch=(r,l,i)=>l in r?uh(r,l,{enumerable:!0,configurable:!0,writable:!0,value:i}):r[l]=i;var Md=(r,l,i)=>ch(r,typeof l!="symbol"?l+"":l,i);(function(){const l=document.createElement("link").relList;if(l&&l.supports&&l.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))a(c);new MutationObserver(c=>{for(const d of c)if(d.type==="childList")for(const p of d.addedNodes)p.tagName==="LINK"&&p.rel==="modulepreload"&&a(p)}).observe(document,{childList:!0,subtree:!0});function i(c){const d={};return c.integrity&&(d.integrity=c.integrity),c.referrerPolicy&&(d.referrerPolicy=c.referrerPolicy),c.crossOrigin==="use-credentials"?d.credentials="include":c.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function a(c){if(c.ep)return;c.ep=!0;const d=i(c);fetch(c.href,d)}})();function kf(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var va={exports:{}},Ao={},ya={exports:{}},ye={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Od;function dh(){if(Od)return ye;Od=1;var r=Symbol.for("react.element"),l=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),c=Symbol.for("react.profiler"),d=Symbol.for("react.provider"),p=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),v=Symbol.for("react.memo"),w=Symbol.for("react.lazy"),C=Symbol.iterator;function N(b){return b===null||typeof b!="object"?null:(b=C&&b[C]||b["@@iterator"],typeof b=="function"?b:null)}var L={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},P=Object.assign,k={};function _(b,M,J){this.props=b,this.context=M,this.refs=k,this.updater=J||L}_.prototype.isReactComponent={},_.prototype.setState=function(b,M){if(typeof b!="object"&&typeof b!="function"&&b!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,b,M,"setState")},_.prototype.forceUpdate=function(b){this.updater.enqueueForceUpdate(this,b,"forceUpdate")};function z(){}z.prototype=_.prototype;function I(b,M,J){this.props=b,this.context=M,this.refs=k,this.updater=J||L}var A=I.prototype=new z;A.constructor=I,P(A,_.prototype),A.isPureReactComponent=!0;var H=Array.isArray,B=Object.prototype.hasOwnProperty,X={current:null},K={key:!0,ref:!0,__self:!0,__source:!0};function O(b,M,J){var le,he={},fe=null,ce=null;if(M!=null)for(le in M.ref!==void 0&&(ce=M.ref),M.key!==void 0&&(fe=""+M.key),M)B.call(M,le)&&!K.hasOwnProperty(le)&&(he[le]=M[le]);var ke=arguments.length-2;if(ke===1)he.children=J;else if(1>>1,M=D[b];if(0>>1;bc(he,V))fec(ce,he)?(D[b]=ce,D[fe]=V,b=fe):(D[b]=he,D[le]=V,b=le);else if(fec(ce,V))D[b]=ce,D[fe]=V,b=fe;else break e}}return Q}function c(D,Q){var V=D.sortIndex-Q.sortIndex;return V!==0?V:D.id-Q.id}if(typeof performance=="object"&&typeof performance.now=="function"){var d=performance;r.unstable_now=function(){return d.now()}}else{var p=Date,h=p.now();r.unstable_now=function(){return p.now()-h}}var g=[],v=[],w=1,C=null,N=3,L=!1,P=!1,k=!1,_=typeof setTimeout=="function"?setTimeout:null,z=typeof clearTimeout=="function"?clearTimeout:null,I=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function A(D){for(var Q=i(v);Q!==null;){if(Q.callback===null)a(v);else if(Q.startTime<=D)a(v),Q.sortIndex=Q.expirationTime,l(g,Q);else break;Q=i(v)}}function H(D){if(k=!1,A(D),!P)if(i(g)!==null)P=!0,ue(B);else{var Q=i(v);Q!==null&&ie(H,Q.startTime-D)}}function B(D,Q){P=!1,k&&(k=!1,z(O),O=-1),L=!0;var V=N;try{for(A(Q),C=i(g);C!==null&&(!(C.expirationTime>Q)||D&&!ge());){var b=C.callback;if(typeof b=="function"){C.callback=null,N=C.priorityLevel;var M=b(C.expirationTime<=Q);Q=r.unstable_now(),typeof M=="function"?C.callback=M:C===i(g)&&a(g),A(Q)}else a(g);C=i(g)}if(C!==null)var J=!0;else{var le=i(v);le!==null&&ie(H,le.startTime-Q),J=!1}return J}finally{C=null,N=V,L=!1}}var X=!1,K=null,O=-1,ne=5,de=-1;function ge(){return!(r.unstable_now()-deD||125b?(D.sortIndex=V,l(v,D),i(g)===null&&D===i(v)&&(k?(z(O),O=-1):k=!0,ie(H,V-b))):(D.sortIndex=M,l(g,D),P||L||(P=!0,ue(B))),D},r.unstable_shouldYield=ge,r.unstable_wrapCallback=function(D){var Q=N;return function(){var V=N;N=Q;try{return D.apply(this,arguments)}finally{N=V}}}}(ka)),ka}var Bd;function hh(){return Bd||(Bd=1,wa.exports=mh()),wa.exports}/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Wd;function gh(){if(Wd)return Ct;Wd=1;var r=Ba(),l=hh();function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),g=Object.prototype.hasOwnProperty,v=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,w={},C={};function N(e){return g.call(C,e)?!0:g.call(w,e)?!1:v.test(e)?C[e]=!0:(w[e]=!0,!1)}function L(e,t,n,o){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return o?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function P(e,t,n,o){if(t===null||typeof t>"u"||L(e,t,n,o))return!0;if(o)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function k(e,t,n,o,s,u,m){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=o,this.attributeNamespace=s,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=u,this.removeEmptyString=m}var _={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){_[e]=new k(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];_[t]=new k(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){_[e]=new k(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){_[e]=new k(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){_[e]=new k(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){_[e]=new k(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){_[e]=new k(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){_[e]=new k(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){_[e]=new k(e,5,!1,e.toLowerCase(),null,!1,!1)});var z=/[\-:]([a-z])/g;function I(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(z,I);_[t]=new k(t,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(z,I);_[t]=new k(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(z,I);_[t]=new k(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){_[e]=new k(e,1,!1,e.toLowerCase(),null,!1,!1)}),_.xlinkHref=new k("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){_[e]=new k(e,1,!1,e.toLowerCase(),null,!0,!0)});function A(e,t,n,o){var s=_.hasOwnProperty(t)?_[t]:null;(s!==null?s.type!==0:o||!(2x||s[m]!==u[x]){var S=` -`+s[m].replace(" at new "," at ");return e.displayName&&S.includes("")&&(S=S.replace("",e.displayName)),S}while(1<=m&&0<=x);break}}}finally{J=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?M(e):""}function he(e){switch(e.tag){case 5:return M(e.type);case 16:return M("Lazy");case 13:return M("Suspense");case 19:return M("SuspenseList");case 0:case 2:case 15:return e=le(e.type,!1),e;case 11:return e=le(e.type.render,!1),e;case 1:return e=le(e.type,!0),e;default:return""}}function fe(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case K:return"Fragment";case X:return"Portal";case ne:return"Profiler";case O:return"StrictMode";case Se:return"Suspense";case be:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case ge:return(e.displayName||"Context")+".Consumer";case de:return(e._context.displayName||"Context")+".Provider";case xe:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case G:return t=e.displayName||null,t!==null?t:fe(e.type)||"Memo";case ue:t=e._payload,e=e._init;try{return fe(e(t))}catch{}}return null}function ce(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return fe(t);case 8:return t===O?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function ke(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Ee(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function je(e){var t=Ee(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),o=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var s=n.get,u=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return s.call(this)},set:function(m){o=""+m,u.call(this,m)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return o},setValue:function(m){o=""+m},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Tt(e){e._valueTracker||(e._valueTracker=je(e))}function ut(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),o="";return e&&(o=Ee(e)?e.checked?"true":"false":e.value),e=o,e!==n?(t.setValue(e),!0):!1}function Zn(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function Ut(e,t){var n=t.checked;return V({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function er(e,t){var n=t.defaultValue==null?"":t.defaultValue,o=t.checked!=null?t.checked:t.defaultChecked;n=ke(t.value!=null?t.value:n),e._wrapperState={initialChecked:o,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function dn(e,t){t=t.checked,t!=null&&A(e,"checked",t,!1)}function vr(e,t){dn(e,t);var n=ke(t.value),o=t.type;if(n!=null)o==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(o==="submit"||o==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?tr(e,t.type,n):t.hasOwnProperty("defaultValue")&&tr(e,t.type,ke(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Xr(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var o=t.type;if(!(o!=="submit"&&o!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function tr(e,t,n){(t!=="number"||Zn(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var ht=Array.isArray;function Bt(e,t,n,o){if(e=e.options,t){t={};for(var s=0;s"+t.valueOf().toString()+"",t=Wt.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Tn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var gt={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ll=["Webkit","ms","Moz","O"];Object.keys(gt).forEach(function(e){ll.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),gt[t]=gt[e]})});function il(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||gt.hasOwnProperty(e)&>[e]?(""+t).trim():t+"px"}function sl(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var o=n.indexOf("--")===0,s=il(n,t[n],o);n==="float"&&(n="cssFloat"),o?e.setProperty(n,s):e[n]=s}}var Zr=V({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function yr(e,t){if(t){if(Zr[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(i(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(i(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(t.style!=null&&typeof t.style!="object")throw Error(i(62))}}function eo(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var xr=null;function to(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var no=null,Pn=null,Me=null;function tt(e){if(e=Co(e)){if(typeof no!="function")throw Error(i(280));var t=e.stateNode;t&&(t=Rl(t),no(e.stateNode,e.type,t))}}function nt(e){Pn?Me?Me.push(e):Me=[e]:Pn=e}function Vt(){if(Pn){var e=Pn,t=Me;if(Me=Pn=null,tt(e),t)for(e=0;e>>=0,e===0?32:31-(Np(e)/bp|0)|0}var cl=64,dl=4194304;function oo(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function fl(e,t){var n=e.pendingLanes;if(n===0)return 0;var o=0,s=e.suspendedLanes,u=e.pingedLanes,m=n&268435455;if(m!==0){var x=m&~s;x!==0?o=oo(x):(u&=m,u!==0&&(o=oo(u)))}else m=n&~s,m!==0?o=oo(m):u!==0&&(o=oo(u));if(o===0)return 0;if(t!==0&&t!==o&&(t&s)===0&&(s=o&-o,u=t&-t,s>=u||s===16&&(u&4194240)!==0))return t;if((o&4)!==0&&(o|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=o;0n;n++)t.push(e);return t}function lo(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Qt(t),e[t]=n}function Pp(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var o=e.eventTimes;for(e=e.expirationTimes;0=mo),Tu=" ",Pu=!1;function Du(e,t){switch(e){case"keyup":return om.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Lu(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Sr=!1;function im(e,t){switch(e){case"compositionend":return Lu(t);case"keypress":return t.which!==32?null:(Pu=!0,Tu);case"textInput":return e=t.data,e===Tu&&Pu?null:e;default:return null}}function sm(e,t){if(Sr)return e==="compositionend"||!qi&&Du(e,t)?(e=Cu(),vl=Hi=zn=null,Sr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=o}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Fu(n)}}function Uu(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Uu(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Bu(){for(var e=window,t=Zn();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Zn(e.document)}return t}function es(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function gm(e){var t=Bu(),n=e.focusedElem,o=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&Uu(n.ownerDocument.documentElement,n)){if(o!==null&&es(n)){if(t=o.start,e=o.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var s=n.textContent.length,u=Math.min(o.start,s);o=o.end===void 0?u:Math.min(o.end,s),!e.extend&&u>o&&(s=o,o=u,u=s),s=$u(n,u);var m=$u(n,o);s&&m&&(e.rangeCount!==1||e.anchorNode!==s.node||e.anchorOffset!==s.offset||e.focusNode!==m.node||e.focusOffset!==m.offset)&&(t=t.createRange(),t.setStart(s.node,s.offset),e.removeAllRanges(),u>o?(e.addRange(t),e.extend(m.node,m.offset)):(t.setEnd(m.node,m.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Cr=null,ts=null,yo=null,ns=!1;function Wu(e,t,n){var o=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ns||Cr==null||Cr!==Zn(o)||(o=Cr,"selectionStart"in o&&es(o)?o={start:o.selectionStart,end:o.selectionEnd}:(o=(o.ownerDocument&&o.ownerDocument.defaultView||window).getSelection(),o={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focusNode:o.focusNode,focusOffset:o.focusOffset}),yo&&vo(yo,o)||(yo=o,o=Nl(ts,"onSelect"),0Rr||(e.current=ms[Rr],ms[Rr]=null,Rr--)}function De(e,t){Rr++,ms[Rr]=e.current,e.current=t}var Fn={},lt=An(Fn),yt=An(!1),or=Fn;function Tr(e,t){var n=e.type.contextTypes;if(!n)return Fn;var o=e.stateNode;if(o&&o.__reactInternalMemoizedUnmaskedChildContext===t)return o.__reactInternalMemoizedMaskedChildContext;var s={},u;for(u in n)s[u]=t[u];return o&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=s),s}function xt(e){return e=e.childContextTypes,e!=null}function Tl(){_e(yt),_e(lt)}function oc(e,t,n){if(lt.current!==Fn)throw Error(i(168));De(lt,t),De(yt,n)}function lc(e,t,n){var o=e.stateNode;if(t=t.childContextTypes,typeof o.getChildContext!="function")return n;o=o.getChildContext();for(var s in o)if(!(s in t))throw Error(i(108,ce(e)||"Unknown",s));return V({},n,o)}function Pl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Fn,or=lt.current,De(lt,e),De(yt,yt.current),!0}function ic(e,t,n){var o=e.stateNode;if(!o)throw Error(i(169));n?(e=lc(e,t,or),o.__reactInternalMemoizedMergedChildContext=e,_e(yt),_e(lt),De(lt,e)):_e(yt),De(yt,n)}var hn=null,Dl=!1,hs=!1;function sc(e){hn===null?hn=[e]:hn.push(e)}function Rm(e){Dl=!0,sc(e)}function $n(){if(!hs&&hn!==null){hs=!0;var e=0,t=Re;try{var n=hn;for(Re=1;e>=m,s-=m,gn=1<<32-Qt(t)+s|n<pe?(qe=ae,ae=null):qe=ae.sibling;var Ne=F(j,ae,R[pe],W);if(Ne===null){ae===null&&(ae=qe);break}e&&ae&&Ne.alternate===null&&t(j,ae),E=u(Ne,E,pe),se===null?oe=Ne:se.sibling=Ne,se=Ne,ae=qe}if(pe===R.length)return n(j,ae),ze&&ir(j,pe),oe;if(ae===null){for(;pepe?(qe=ae,ae=null):qe=ae.sibling;var Yn=F(j,ae,Ne.value,W);if(Yn===null){ae===null&&(ae=qe);break}e&&ae&&Yn.alternate===null&&t(j,ae),E=u(Yn,E,pe),se===null?oe=Yn:se.sibling=Yn,se=Yn,ae=qe}if(Ne.done)return n(j,ae),ze&&ir(j,pe),oe;if(ae===null){for(;!Ne.done;pe++,Ne=R.next())Ne=U(j,Ne.value,W),Ne!==null&&(E=u(Ne,E,pe),se===null?oe=Ne:se.sibling=Ne,se=Ne);return ze&&ir(j,pe),oe}for(ae=o(j,ae);!Ne.done;pe++,Ne=R.next())Ne=Y(ae,j,pe,Ne.value,W),Ne!==null&&(e&&Ne.alternate!==null&&ae.delete(Ne.key===null?pe:Ne.key),E=u(Ne,E,pe),se===null?oe=Ne:se.sibling=Ne,se=Ne);return e&&ae.forEach(function(ah){return t(j,ah)}),ze&&ir(j,pe),oe}function We(j,E,R,W){if(typeof R=="object"&&R!==null&&R.type===K&&R.key===null&&(R=R.props.children),typeof R=="object"&&R!==null){switch(R.$$typeof){case B:e:{for(var oe=R.key,se=E;se!==null;){if(se.key===oe){if(oe=R.type,oe===K){if(se.tag===7){n(j,se.sibling),E=s(se,R.props.children),E.return=j,j=E;break e}}else if(se.elementType===oe||typeof oe=="object"&&oe!==null&&oe.$$typeof===ue&&pc(oe)===se.type){n(j,se.sibling),E=s(se,R.props),E.ref=Eo(j,se,R),E.return=j,j=E;break e}n(j,se);break}else t(j,se);se=se.sibling}R.type===K?(E=mr(R.props.children,j.mode,W,R.key),E.return=j,j=E):(W=li(R.type,R.key,R.props,null,j.mode,W),W.ref=Eo(j,E,R),W.return=j,j=W)}return m(j);case X:e:{for(se=R.key;E!==null;){if(E.key===se)if(E.tag===4&&E.stateNode.containerInfo===R.containerInfo&&E.stateNode.implementation===R.implementation){n(j,E.sibling),E=s(E,R.children||[]),E.return=j,j=E;break e}else{n(j,E);break}else t(j,E);E=E.sibling}E=fa(R,j.mode,W),E.return=j,j=E}return m(j);case ue:return se=R._init,We(j,E,se(R._payload),W)}if(ht(R))return Z(j,E,R,W);if(Q(R))return re(j,E,R,W);zl(j,R)}return typeof R=="string"&&R!==""||typeof R=="number"?(R=""+R,E!==null&&E.tag===6?(n(j,E.sibling),E=s(E,R),E.return=j,j=E):(n(j,E),E=da(R,j.mode,W),E.return=j,j=E),m(j)):n(j,E)}return We}var _r=mc(!0),hc=mc(!1),Ml=An(null),Ol=null,Ir=null,ks=null;function Ss(){ks=Ir=Ol=null}function Cs(e){var t=Ml.current;_e(Ml),e._currentValue=t}function Es(e,t,n){for(;e!==null;){var o=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,o!==null&&(o.childLanes|=t)):o!==null&&(o.childLanes&t)!==t&&(o.childLanes|=t),e===n)break;e=e.return}}function zr(e,t){Ol=e,ks=Ir=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(wt=!0),e.firstContext=null)}function _t(e){var t=e._currentValue;if(ks!==e)if(e={context:e,memoizedValue:t,next:null},Ir===null){if(Ol===null)throw Error(i(308));Ir=e,Ol.dependencies={lanes:0,firstContext:e}}else Ir=Ir.next=e;return t}var sr=null;function Ns(e){sr===null?sr=[e]:sr.push(e)}function gc(e,t,n,o){var s=t.interleaved;return s===null?(n.next=n,Ns(t)):(n.next=s.next,s.next=n),t.interleaved=n,yn(e,o)}function yn(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var Un=!1;function bs(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function vc(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function xn(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Bn(e,t,n){var o=e.updateQueue;if(o===null)return null;if(o=o.shared,(Ce&2)!==0){var s=o.pending;return s===null?t.next=t:(t.next=s.next,s.next=t),o.pending=t,yn(e,n)}return s=o.interleaved,s===null?(t.next=t,Ns(o)):(t.next=s.next,s.next=t),o.interleaved=t,yn(e,n)}function Al(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var o=t.lanes;o&=e.pendingLanes,n|=o,t.lanes=n,$i(e,n)}}function yc(e,t){var n=e.updateQueue,o=e.alternate;if(o!==null&&(o=o.updateQueue,n===o)){var s=null,u=null;if(n=n.firstBaseUpdate,n!==null){do{var m={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};u===null?s=u=m:u=u.next=m,n=n.next}while(n!==null);u===null?s=u=t:u=u.next=t}else s=u=t;n={baseState:o.baseState,firstBaseUpdate:s,lastBaseUpdate:u,shared:o.shared,effects:o.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Fl(e,t,n,o){var s=e.updateQueue;Un=!1;var u=s.firstBaseUpdate,m=s.lastBaseUpdate,x=s.shared.pending;if(x!==null){s.shared.pending=null;var S=x,T=S.next;S.next=null,m===null?u=T:m.next=T,m=S;var $=e.alternate;$!==null&&($=$.updateQueue,x=$.lastBaseUpdate,x!==m&&(x===null?$.firstBaseUpdate=T:x.next=T,$.lastBaseUpdate=S))}if(u!==null){var U=s.baseState;m=0,$=T=S=null,x=u;do{var F=x.lane,Y=x.eventTime;if((o&F)===F){$!==null&&($=$.next={eventTime:Y,lane:0,tag:x.tag,payload:x.payload,callback:x.callback,next:null});e:{var Z=e,re=x;switch(F=t,Y=n,re.tag){case 1:if(Z=re.payload,typeof Z=="function"){U=Z.call(Y,U,F);break e}U=Z;break e;case 3:Z.flags=Z.flags&-65537|128;case 0:if(Z=re.payload,F=typeof Z=="function"?Z.call(Y,U,F):Z,F==null)break e;U=V({},U,F);break e;case 2:Un=!0}}x.callback!==null&&x.lane!==0&&(e.flags|=64,F=s.effects,F===null?s.effects=[x]:F.push(x))}else Y={eventTime:Y,lane:F,tag:x.tag,payload:x.payload,callback:x.callback,next:null},$===null?(T=$=Y,S=U):$=$.next=Y,m|=F;if(x=x.next,x===null){if(x=s.shared.pending,x===null)break;F=x,x=F.next,F.next=null,s.lastBaseUpdate=F,s.shared.pending=null}}while(!0);if($===null&&(S=U),s.baseState=S,s.firstBaseUpdate=T,s.lastBaseUpdate=$,t=s.shared.interleaved,t!==null){s=t;do m|=s.lane,s=s.next;while(s!==t)}else u===null&&(s.shared.lanes=0);cr|=m,e.lanes=m,e.memoizedState=U}}function xc(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var o=Ds.transition;Ds.transition={};try{e(!1),t()}finally{Re=n,Ds.transition=o}}function Ac(){return It().memoizedState}function Lm(e,t,n){var o=Gn(e);if(n={lane:o,action:n,hasEagerState:!1,eagerState:null,next:null},Fc(e))$c(t,n);else if(n=gc(e,t,n,o),n!==null){var s=ft();Zt(n,e,o,s),Uc(n,t,o)}}function _m(e,t,n){var o=Gn(e),s={lane:o,action:n,hasEagerState:!1,eagerState:null,next:null};if(Fc(e))$c(t,s);else{var u=e.alternate;if(e.lanes===0&&(u===null||u.lanes===0)&&(u=t.lastRenderedReducer,u!==null))try{var m=t.lastRenderedState,x=u(m,n);if(s.hasEagerState=!0,s.eagerState=x,Kt(x,m)){var S=t.interleaved;S===null?(s.next=s,Ns(t)):(s.next=S.next,S.next=s),t.interleaved=s;return}}catch{}finally{}n=gc(e,t,s,o),n!==null&&(s=ft(),Zt(n,e,o,s),Uc(n,t,o))}}function Fc(e){var t=e.alternate;return e===Fe||t!==null&&t===Fe}function $c(e,t){Ro=Bl=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Uc(e,t,n){if((n&4194240)!==0){var o=t.lanes;o&=e.pendingLanes,n|=o,t.lanes=n,$i(e,n)}}var Hl={readContext:_t,useCallback:it,useContext:it,useEffect:it,useImperativeHandle:it,useInsertionEffect:it,useLayoutEffect:it,useMemo:it,useReducer:it,useRef:it,useState:it,useDebugValue:it,useDeferredValue:it,useTransition:it,useMutableSource:it,useSyncExternalStore:it,useId:it,unstable_isNewReconciler:!1},Im={readContext:_t,useCallback:function(e,t){return sn().memoizedState=[e,t===void 0?null:t],e},useContext:_t,useEffect:Pc,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Wl(4194308,4,_c.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Wl(4194308,4,e,t)},useInsertionEffect:function(e,t){return Wl(4,2,e,t)},useMemo:function(e,t){var n=sn();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var o=sn();return t=n!==void 0?n(t):t,o.memoizedState=o.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},o.queue=e,e=e.dispatch=Lm.bind(null,Fe,e),[o.memoizedState,e]},useRef:function(e){var t=sn();return e={current:e},t.memoizedState=e},useState:Rc,useDebugValue:As,useDeferredValue:function(e){return sn().memoizedState=e},useTransition:function(){var e=Rc(!1),t=e[0];return e=Dm.bind(null,e[1]),sn().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var o=Fe,s=sn();if(ze){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),Xe===null)throw Error(i(349));(ur&30)!==0||Cc(o,t,n)}s.memoizedState=n;var u={value:n,getSnapshot:t};return s.queue=u,Pc(Nc.bind(null,o,u,e),[e]),o.flags|=2048,Do(9,Ec.bind(null,o,u,n,t),void 0,null),n},useId:function(){var e=sn(),t=Xe.identifierPrefix;if(ze){var n=vn,o=gn;n=(o&~(1<<32-Qt(o)-1)).toString(32)+n,t=":"+t+"R"+n,n=To++,0<\/script>",e=e.removeChild(e.firstChild)):typeof o.is=="string"?e=m.createElement(n,{is:o.is}):(e=m.createElement(n),n==="select"&&(m=e,o.multiple?m.multiple=!0:o.size&&(m.size=o.size))):e=m.createElementNS(e,n),e[on]=t,e[So]=o,sd(e,t,!1,!1),t.stateNode=e;e:{switch(m=eo(n,o),n){case"dialog":Le("cancel",e),Le("close",e),s=o;break;case"iframe":case"object":case"embed":Le("load",e),s=o;break;case"video":case"audio":for(s=0;s$r&&(t.flags|=128,o=!0,Lo(u,!1),t.lanes=4194304)}else{if(!o)if(e=$l(m),e!==null){if(t.flags|=128,o=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Lo(u,!0),u.tail===null&&u.tailMode==="hidden"&&!m.alternate&&!ze)return st(t),null}else 2*Be()-u.renderingStartTime>$r&&n!==1073741824&&(t.flags|=128,o=!0,Lo(u,!1),t.lanes=4194304);u.isBackwards?(m.sibling=t.child,t.child=m):(n=u.last,n!==null?n.sibling=m:t.child=m,u.last=m)}return u.tail!==null?(t=u.tail,u.rendering=t,u.tail=t.sibling,u.renderingStartTime=Be(),t.sibling=null,n=Ae.current,De(Ae,o?n&1|2:n&1),t):(st(t),null);case 22:case 23:return aa(),o=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==o&&(t.flags|=8192),o&&(t.mode&1)!==0?(Rt&1073741824)!==0&&(st(t),t.subtreeFlags&6&&(t.flags|=8192)):st(t),null;case 24:return null;case 25:return null}throw Error(i(156,t.tag))}function Bm(e,t){switch(vs(t),t.tag){case 1:return xt(t.type)&&Tl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Mr(),_e(yt),_e(lt),Ps(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return Rs(t),null;case 13:if(_e(Ae),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));Lr()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return _e(Ae),null;case 4:return Mr(),null;case 10:return Cs(t.type._context),null;case 22:case 23:return aa(),null;case 24:return null;default:return null}}var Yl=!1,at=!1,Wm=typeof WeakSet=="function"?WeakSet:Set,q=null;function Ar(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(o){Ue(e,t,o)}else n.current=null}function Xs(e,t,n){try{n()}catch(o){Ue(e,t,o)}}var cd=!1;function Vm(e,t){if(as=hl,e=Bu(),es(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var o=n.getSelection&&n.getSelection();if(o&&o.rangeCount!==0){n=o.anchorNode;var s=o.anchorOffset,u=o.focusNode;o=o.focusOffset;try{n.nodeType,u.nodeType}catch{n=null;break e}var m=0,x=-1,S=-1,T=0,$=0,U=e,F=null;t:for(;;){for(var Y;U!==n||s!==0&&U.nodeType!==3||(x=m+s),U!==u||o!==0&&U.nodeType!==3||(S=m+o),U.nodeType===3&&(m+=U.nodeValue.length),(Y=U.firstChild)!==null;)F=U,U=Y;for(;;){if(U===e)break t;if(F===n&&++T===s&&(x=m),F===u&&++$===o&&(S=m),(Y=U.nextSibling)!==null)break;U=F,F=U.parentNode}U=Y}n=x===-1||S===-1?null:{start:x,end:S}}else n=null}n=n||{start:0,end:0}}else n=null;for(us={focusedElem:e,selectionRange:n},hl=!1,q=t;q!==null;)if(t=q,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,q=e;else for(;q!==null;){t=q;try{var Z=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(Z!==null){var re=Z.memoizedProps,We=Z.memoizedState,j=t.stateNode,E=j.getSnapshotBeforeUpdate(t.elementType===t.type?re:Xt(t.type,re),We);j.__reactInternalSnapshotBeforeUpdate=E}break;case 3:var R=t.stateNode.containerInfo;R.nodeType===1?R.textContent="":R.nodeType===9&&R.documentElement&&R.removeChild(R.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(i(163))}}catch(W){Ue(t,t.return,W)}if(e=t.sibling,e!==null){e.return=t.return,q=e;break}q=t.return}return Z=cd,cd=!1,Z}function _o(e,t,n){var o=t.updateQueue;if(o=o!==null?o.lastEffect:null,o!==null){var s=o=o.next;do{if((s.tag&e)===e){var u=s.destroy;s.destroy=void 0,u!==void 0&&Xs(t,n,u)}s=s.next}while(s!==o)}}function Xl(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var o=n.create;n.destroy=o()}n=n.next}while(n!==t)}}function qs(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function dd(e){var t=e.alternate;t!==null&&(e.alternate=null,dd(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[on],delete t[So],delete t[ps],delete t[bm],delete t[jm])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function fd(e){return e.tag===5||e.tag===3||e.tag===4}function pd(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||fd(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Js(e,t,n){var o=e.tag;if(o===5||o===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=jl));else if(o!==4&&(e=e.child,e!==null))for(Js(e,t,n),e=e.sibling;e!==null;)Js(e,t,n),e=e.sibling}function Zs(e,t,n){var o=e.tag;if(o===5||o===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(o!==4&&(e=e.child,e!==null))for(Zs(e,t,n),e=e.sibling;e!==null;)Zs(e,t,n),e=e.sibling}var Ze=null,qt=!1;function Wn(e,t,n){for(n=n.child;n!==null;)md(e,t,n),n=n.sibling}function md(e,t,n){if(rn&&typeof rn.onCommitFiberUnmount=="function")try{rn.onCommitFiberUnmount(ul,n)}catch{}switch(n.tag){case 5:at||Ar(n,t);case 6:var o=Ze,s=qt;Ze=null,Wn(e,t,n),Ze=o,qt=s,Ze!==null&&(qt?(e=Ze,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Ze.removeChild(n.stateNode));break;case 18:Ze!==null&&(qt?(e=Ze,n=n.stateNode,e.nodeType===8?fs(e.parentNode,n):e.nodeType===1&&fs(e,n),co(e)):fs(Ze,n.stateNode));break;case 4:o=Ze,s=qt,Ze=n.stateNode.containerInfo,qt=!0,Wn(e,t,n),Ze=o,qt=s;break;case 0:case 11:case 14:case 15:if(!at&&(o=n.updateQueue,o!==null&&(o=o.lastEffect,o!==null))){s=o=o.next;do{var u=s,m=u.destroy;u=u.tag,m!==void 0&&((u&2)!==0||(u&4)!==0)&&Xs(n,t,m),s=s.next}while(s!==o)}Wn(e,t,n);break;case 1:if(!at&&(Ar(n,t),o=n.stateNode,typeof o.componentWillUnmount=="function"))try{o.props=n.memoizedProps,o.state=n.memoizedState,o.componentWillUnmount()}catch(x){Ue(n,t,x)}Wn(e,t,n);break;case 21:Wn(e,t,n);break;case 22:n.mode&1?(at=(o=at)||n.memoizedState!==null,Wn(e,t,n),at=o):Wn(e,t,n);break;default:Wn(e,t,n)}}function hd(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Wm),t.forEach(function(o){var s=Zm.bind(null,e,o);n.has(o)||(n.add(o),o.then(s,s))})}}function Jt(e,t){var n=t.deletions;if(n!==null)for(var o=0;os&&(s=m),o&=~u}if(o=s,o=Be()-o,o=(120>o?120:480>o?480:1080>o?1080:1920>o?1920:3e3>o?3e3:4320>o?4320:1960*Gm(o/1960))-o,10e?16:e,Hn===null)var o=!1;else{if(e=Hn,Hn=null,ti=0,(Ce&6)!==0)throw Error(i(331));var s=Ce;for(Ce|=4,q=e.current;q!==null;){var u=q,m=u.child;if((q.flags&16)!==0){var x=u.deletions;if(x!==null){for(var S=0;SBe()-na?fr(e,0):ta|=n),St(e,t)}function Rd(e,t){t===0&&((e.mode&1)===0?t=1:(t=dl,dl<<=1,(dl&130023424)===0&&(dl=4194304)));var n=ft();e=yn(e,t),e!==null&&(lo(e,t,n),St(e,n))}function Jm(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Rd(e,n)}function Zm(e,t){var n=0;switch(e.tag){case 13:var o=e.stateNode,s=e.memoizedState;s!==null&&(n=s.retryLane);break;case 19:o=e.stateNode;break;default:throw Error(i(314))}o!==null&&o.delete(t),Rd(e,n)}var Td;Td=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||yt.current)wt=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return wt=!1,$m(e,t,n);wt=(e.flags&131072)!==0}else wt=!1,ze&&(t.flags&1048576)!==0&&ac(t,_l,t.index);switch(t.lanes=0,t.tag){case 2:var o=t.type;Kl(e,t),e=t.pendingProps;var s=Tr(t,lt.current);zr(t,n),s=_s(null,t,o,e,s,n);var u=Is();return t.flags|=1,typeof s=="object"&&s!==null&&typeof s.render=="function"&&s.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,xt(o)?(u=!0,Pl(t)):u=!1,t.memoizedState=s.state!==null&&s.state!==void 0?s.state:null,bs(t),s.updater=Gl,t.stateNode=s,s._reactInternals=t,$s(t,o,e,n),t=Vs(null,t,o,!0,u,n)):(t.tag=0,ze&&u&&gs(t),dt(null,t,s,n),t=t.child),t;case 16:o=t.elementType;e:{switch(Kl(e,t),e=t.pendingProps,s=o._init,o=s(o._payload),t.type=o,s=t.tag=th(o),e=Xt(o,e),s){case 0:t=Ws(null,t,o,e,n);break e;case 1:t=td(null,t,o,e,n);break e;case 11:t=Xc(null,t,o,e,n);break e;case 14:t=qc(null,t,o,Xt(o.type,e),n);break e}throw Error(i(306,o,""))}return t;case 0:return o=t.type,s=t.pendingProps,s=t.elementType===o?s:Xt(o,s),Ws(e,t,o,s,n);case 1:return o=t.type,s=t.pendingProps,s=t.elementType===o?s:Xt(o,s),td(e,t,o,s,n);case 3:e:{if(nd(t),e===null)throw Error(i(387));o=t.pendingProps,u=t.memoizedState,s=u.element,vc(e,t),Fl(t,o,null,n);var m=t.memoizedState;if(o=m.element,u.isDehydrated)if(u={element:o,isDehydrated:!1,cache:m.cache,pendingSuspenseBoundaries:m.pendingSuspenseBoundaries,transitions:m.transitions},t.updateQueue.baseState=u,t.memoizedState=u,t.flags&256){s=Or(Error(i(423)),t),t=rd(e,t,o,n,s);break e}else if(o!==s){s=Or(Error(i(424)),t),t=rd(e,t,o,n,s);break e}else for(jt=On(t.stateNode.containerInfo.firstChild),bt=t,ze=!0,Yt=null,n=hc(t,null,o,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Lr(),o===s){t=wn(e,t,n);break e}dt(e,t,o,n)}t=t.child}return t;case 5:return wc(t),e===null&&xs(t),o=t.type,s=t.pendingProps,u=e!==null?e.memoizedProps:null,m=s.children,cs(o,s)?m=null:u!==null&&cs(o,u)&&(t.flags|=32),ed(e,t),dt(e,t,m,n),t.child;case 6:return e===null&&xs(t),null;case 13:return od(e,t,n);case 4:return js(t,t.stateNode.containerInfo),o=t.pendingProps,e===null?t.child=_r(t,null,o,n):dt(e,t,o,n),t.child;case 11:return o=t.type,s=t.pendingProps,s=t.elementType===o?s:Xt(o,s),Xc(e,t,o,s,n);case 7:return dt(e,t,t.pendingProps,n),t.child;case 8:return dt(e,t,t.pendingProps.children,n),t.child;case 12:return dt(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(o=t.type._context,s=t.pendingProps,u=t.memoizedProps,m=s.value,De(Ml,o._currentValue),o._currentValue=m,u!==null)if(Kt(u.value,m)){if(u.children===s.children&&!yt.current){t=wn(e,t,n);break e}}else for(u=t.child,u!==null&&(u.return=t);u!==null;){var x=u.dependencies;if(x!==null){m=u.child;for(var S=x.firstContext;S!==null;){if(S.context===o){if(u.tag===1){S=xn(-1,n&-n),S.tag=2;var T=u.updateQueue;if(T!==null){T=T.shared;var $=T.pending;$===null?S.next=S:(S.next=$.next,$.next=S),T.pending=S}}u.lanes|=n,S=u.alternate,S!==null&&(S.lanes|=n),Es(u.return,n,t),x.lanes|=n;break}S=S.next}}else if(u.tag===10)m=u.type===t.type?null:u.child;else if(u.tag===18){if(m=u.return,m===null)throw Error(i(341));m.lanes|=n,x=m.alternate,x!==null&&(x.lanes|=n),Es(m,n,t),m=u.sibling}else m=u.child;if(m!==null)m.return=u;else for(m=u;m!==null;){if(m===t){m=null;break}if(u=m.sibling,u!==null){u.return=m.return,m=u;break}m=m.return}u=m}dt(e,t,s.children,n),t=t.child}return t;case 9:return s=t.type,o=t.pendingProps.children,zr(t,n),s=_t(s),o=o(s),t.flags|=1,dt(e,t,o,n),t.child;case 14:return o=t.type,s=Xt(o,t.pendingProps),s=Xt(o.type,s),qc(e,t,o,s,n);case 15:return Jc(e,t,t.type,t.pendingProps,n);case 17:return o=t.type,s=t.pendingProps,s=t.elementType===o?s:Xt(o,s),Kl(e,t),t.tag=1,xt(o)?(e=!0,Pl(t)):e=!1,zr(t,n),Wc(t,o,s),$s(t,o,s,n),Vs(null,t,o,!0,e,n);case 19:return id(e,t,n);case 22:return Zc(e,t,n)}throw Error(i(156,t.tag))};function Pd(e,t){return uu(e,t)}function eh(e,t,n,o){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=o,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Mt(e,t,n,o){return new eh(e,t,n,o)}function ca(e){return e=e.prototype,!(!e||!e.isReactComponent)}function th(e){if(typeof e=="function")return ca(e)?1:0;if(e!=null){if(e=e.$$typeof,e===xe)return 11;if(e===G)return 14}return 2}function Kn(e,t){var n=e.alternate;return n===null?(n=Mt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function li(e,t,n,o,s,u){var m=2;if(o=e,typeof e=="function")ca(e)&&(m=1);else if(typeof e=="string")m=5;else e:switch(e){case K:return mr(n.children,s,u,t);case O:m=8,s|=8;break;case ne:return e=Mt(12,n,t,s|2),e.elementType=ne,e.lanes=u,e;case Se:return e=Mt(13,n,t,s),e.elementType=Se,e.lanes=u,e;case be:return e=Mt(19,n,t,s),e.elementType=be,e.lanes=u,e;case ie:return ii(n,s,u,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case de:m=10;break e;case ge:m=9;break e;case xe:m=11;break e;case G:m=14;break e;case ue:m=16,o=null;break e}throw Error(i(130,e==null?e:typeof e,""))}return t=Mt(m,n,t,s),t.elementType=e,t.type=o,t.lanes=u,t}function mr(e,t,n,o){return e=Mt(7,e,o,t),e.lanes=n,e}function ii(e,t,n,o){return e=Mt(22,e,o,t),e.elementType=ie,e.lanes=n,e.stateNode={isHidden:!1},e}function da(e,t,n){return e=Mt(6,e,null,t),e.lanes=n,e}function fa(e,t,n){return t=Mt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function nh(e,t,n,o,s){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Fi(0),this.expirationTimes=Fi(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Fi(0),this.identifierPrefix=o,this.onRecoverableError=s,this.mutableSourceEagerHydrationData=null}function pa(e,t,n,o,s,u,m,x,S){return e=new nh(e,t,n,x,S),t===1?(t=1,u===!0&&(t|=8)):t=0,u=Mt(3,null,null,t),e.current=u,u.stateNode=e,u.memoizedState={element:o,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},bs(u),e}function rh(e,t,n){var o=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(r)}catch(l){console.error(l)}}return r(),xa.exports=gh(),xa.exports}var Hd;function vh(){if(Hd)return pi;Hd=1;var r=Sf();return pi.createRoot=r.createRoot,pi.hydrateRoot=r.hydrateRoot,pi}var yh=vh();const xh=kf(yh);/** - * react-router v7.8.0 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */var Gd="popstate";function wh(r={}){function l(a,c){let{pathname:d,search:p,hash:h}=a.location;return _a("",{pathname:d,search:p,hash:h},c.state&&c.state.usr||null,c.state&&c.state.key||"default")}function i(a,c){return typeof c=="string"?c:Ho(c)}return Sh(l,i,null,r)}function $e(r,l){if(r===!1||r===null||typeof r>"u")throw new Error(l)}function un(r,l){if(!r){typeof console<"u"&&console.warn(l);try{throw new Error(l)}catch{}}}function kh(){return Math.random().toString(36).substring(2,10)}function Qd(r,l){return{usr:r.state,key:r.key,idx:l}}function _a(r,l,i=null,a){return{pathname:typeof r=="string"?r:r.pathname,search:"",hash:"",...typeof l=="string"?Vr(l):l,state:i,key:l&&l.key||a||kh()}}function Ho({pathname:r="/",search:l="",hash:i=""}){return l&&l!=="?"&&(r+=l.charAt(0)==="?"?l:"?"+l),i&&i!=="#"&&(r+=i.charAt(0)==="#"?i:"#"+i),r}function Vr(r){let l={};if(r){let i=r.indexOf("#");i>=0&&(l.hash=r.substring(i),r=r.substring(0,i));let a=r.indexOf("?");a>=0&&(l.search=r.substring(a),r=r.substring(0,a)),r&&(l.pathname=r)}return l}function Sh(r,l,i,a={}){let{window:c=document.defaultView,v5Compat:d=!1}=a,p=c.history,h="POP",g=null,v=w();v==null&&(v=0,p.replaceState({...p.state,idx:v},""));function w(){return(p.state||{idx:null}).idx}function C(){h="POP";let _=w(),z=_==null?null:_-v;v=_,g&&g({action:h,location:k.location,delta:z})}function N(_,z){h="PUSH";let I=_a(k.location,_,z);v=w()+1;let A=Qd(I,v),H=k.createHref(I);try{p.pushState(A,"",H)}catch(B){if(B instanceof DOMException&&B.name==="DataCloneError")throw B;c.location.assign(H)}d&&g&&g({action:h,location:k.location,delta:1})}function L(_,z){h="REPLACE";let I=_a(k.location,_,z);v=w();let A=Qd(I,v),H=k.createHref(I);p.replaceState(A,"",H),d&&g&&g({action:h,location:k.location,delta:0})}function P(_){return Ch(_)}let k={get action(){return h},get location(){return r(c,p)},listen(_){if(g)throw new Error("A history only accepts one active listener");return c.addEventListener(Gd,C),g=_,()=>{c.removeEventListener(Gd,C),g=null}},createHref(_){return l(c,_)},createURL:P,encodeLocation(_){let z=P(_);return{pathname:z.pathname,search:z.search,hash:z.hash}},push:N,replace:L,go(_){return p.go(_)}};return k}function Ch(r,l=!1){let i="http://localhost";typeof window<"u"&&(i=window.location.origin!=="null"?window.location.origin:window.location.href),$e(i,"No window.location.(origin|href) available to create URL");let a=typeof r=="string"?r:Ho(r);return a=a.replace(/ $/,"%20"),!l&&a.startsWith("//")&&(a=i+a),new URL(a,i)}function Cf(r,l,i="/"){return Eh(r,l,i,!1)}function Eh(r,l,i,a){let c=typeof l=="string"?Vr(l):l,d=En(c.pathname||"/",i);if(d==null)return null;let p=Ef(r);Nh(p);let h=null;for(let g=0;h==null&&g{let g={relativePath:h===void 0?d.path||"":h,caseSensitive:d.caseSensitive===!0,childrenIndex:p,route:d};g.relativePath.startsWith("/")&&($e(g.relativePath.startsWith(a),`Absolute route path "${g.relativePath}" nested under path "${a}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),g.relativePath=g.relativePath.slice(a.length));let v=Cn([a,g.relativePath]),w=i.concat(g);d.children&&d.children.length>0&&($e(d.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${v}".`),Ef(d.children,l,w,v)),!(d.path==null&&!d.index)&&l.push({path:v,score:Lh(v,d.index),routesMeta:w})};return r.forEach((d,p)=>{var h;if(d.path===""||!((h=d.path)!=null&&h.includes("?")))c(d,p);else for(let g of Nf(d.path))c(d,p,g)}),l}function Nf(r){let l=r.split("/");if(l.length===0)return[];let[i,...a]=l,c=i.endsWith("?"),d=i.replace(/\?$/,"");if(a.length===0)return c?[d,""]:[d];let p=Nf(a.join("/")),h=[];return h.push(...p.map(g=>g===""?d:[d,g].join("/"))),c&&h.push(...p),h.map(g=>r.startsWith("/")&&g===""?"/":g)}function Nh(r){r.sort((l,i)=>l.score!==i.score?i.score-l.score:_h(l.routesMeta.map(a=>a.childrenIndex),i.routesMeta.map(a=>a.childrenIndex)))}var bh=/^:[\w-]+$/,jh=3,Rh=2,Th=1,Ph=10,Dh=-2,Kd=r=>r==="*";function Lh(r,l){let i=r.split("/"),a=i.length;return i.some(Kd)&&(a+=Dh),l&&(a+=Rh),i.filter(c=>!Kd(c)).reduce((c,d)=>c+(bh.test(d)?jh:d===""?Th:Ph),a)}function _h(r,l){return r.length===l.length&&r.slice(0,-1).every((a,c)=>a===l[c])?r[r.length-1]-l[l.length-1]:0}function Ih(r,l,i=!1){let{routesMeta:a}=r,c={},d="/",p=[];for(let h=0;h{if(w==="*"){let P=h[N]||"";p=d.slice(0,d.length-P.length).replace(/(.)\/+$/,"$1")}const L=h[N];return C&&!L?v[w]=void 0:v[w]=(L||"").replace(/%2F/g,"/"),v},{}),pathname:d,pathnameBase:p,pattern:r}}function zh(r,l=!1,i=!0){un(r==="*"||!r.endsWith("*")||r.endsWith("/*"),`Route path "${r}" will be treated as if it were "${r.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${r.replace(/\*$/,"/*")}".`);let a=[],c="^"+r.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(p,h,g)=>(a.push({paramName:h,isOptional:g!=null}),g?"/?([^\\/]+)?":"/([^\\/]+)"));return r.endsWith("*")?(a.push({paramName:"*"}),c+=r==="*"||r==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):i?c+="\\/*$":r!==""&&r!=="/"&&(c+="(?:(?=\\/|$))"),[new RegExp(c,l?void 0:"i"),a]}function Mh(r){try{return r.split("/").map(l=>decodeURIComponent(l).replace(/\//g,"%2F")).join("/")}catch(l){return un(!1,`The URL path "${r}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${l}).`),r}}function En(r,l){if(l==="/")return r;if(!r.toLowerCase().startsWith(l.toLowerCase()))return null;let i=l.endsWith("/")?l.length-1:l.length,a=r.charAt(i);return a&&a!=="/"?null:r.slice(i)||"/"}function Oh(r,l="/"){let{pathname:i,search:a="",hash:c=""}=typeof r=="string"?Vr(r):r;return{pathname:i?i.startsWith("/")?i:Ah(i,l):l,search:Uh(a),hash:Bh(c)}}function Ah(r,l){let i=l.replace(/\/+$/,"").split("/");return r.split("/").forEach(c=>{c===".."?i.length>1&&i.pop():c!=="."&&i.push(c)}),i.length>1?i.join("/"):"/"}function Sa(r,l,i,a){return`Cannot include a '${r}' character in a manually specified \`to.${l}\` field [${JSON.stringify(a)}]. Please separate it out to the \`to.${i}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function Fh(r){return r.filter((l,i)=>i===0||l.route.path&&l.route.path.length>0)}function bf(r){let l=Fh(r);return l.map((i,a)=>a===l.length-1?i.pathname:i.pathnameBase)}function jf(r,l,i,a=!1){let c;typeof r=="string"?c=Vr(r):(c={...r},$e(!c.pathname||!c.pathname.includes("?"),Sa("?","pathname","search",c)),$e(!c.pathname||!c.pathname.includes("#"),Sa("#","pathname","hash",c)),$e(!c.search||!c.search.includes("#"),Sa("#","search","hash",c)));let d=r===""||c.pathname==="",p=d?"/":c.pathname,h;if(p==null)h=i;else{let C=l.length-1;if(!a&&p.startsWith("..")){let N=p.split("/");for(;N[0]==="..";)N.shift(),C-=1;c.pathname=N.join("/")}h=C>=0?l[C]:"/"}let g=Oh(c,h),v=p&&p!=="/"&&p.endsWith("/"),w=(d||p===".")&&i.endsWith("/");return!g.pathname.endsWith("/")&&(v||w)&&(g.pathname+="/"),g}var Cn=r=>r.join("/").replace(/\/\/+/g,"/"),$h=r=>r.replace(/\/+$/,"").replace(/^\/*/,"/"),Uh=r=>!r||r==="?"?"":r.startsWith("?")?r:"?"+r,Bh=r=>!r||r==="#"?"":r.startsWith("#")?r:"#"+r;function Wh(r){return r!=null&&typeof r.status=="number"&&typeof r.statusText=="string"&&typeof r.internal=="boolean"&&"data"in r}var Rf=["POST","PUT","PATCH","DELETE"];new Set(Rf);var Vh=["GET",...Rf];new Set(Vh);var Hr=y.createContext(null);Hr.displayName="DataRouter";var Ri=y.createContext(null);Ri.displayName="DataRouterState";y.createContext(!1);var Tf=y.createContext({isTransitioning:!1});Tf.displayName="ViewTransition";var Hh=y.createContext(new Map);Hh.displayName="Fetchers";var Gh=y.createContext(null);Gh.displayName="Await";var cn=y.createContext(null);cn.displayName="Navigation";var Xo=y.createContext(null);Xo.displayName="Location";var bn=y.createContext({outlet:null,matches:[],isDataRoute:!1});bn.displayName="Route";var Wa=y.createContext(null);Wa.displayName="RouteError";function Qh(r,{relative:l}={}){$e(qo(),"useHref() may be used only in the context of a component.");let{basename:i,navigator:a}=y.useContext(cn),{hash:c,pathname:d,search:p}=Jo(r,{relative:l}),h=d;return i!=="/"&&(h=d==="/"?i:Cn([i,d])),a.createHref({pathname:h,search:p,hash:c})}function qo(){return y.useContext(Xo)!=null}function Jn(){return $e(qo(),"useLocation() may be used only in the context of a component."),y.useContext(Xo).location}var Pf="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Df(r){y.useContext(cn).static||y.useLayoutEffect(r)}function Ti(){let{isDataRoute:r}=y.useContext(bn);return r?ig():Kh()}function Kh(){$e(qo(),"useNavigate() may be used only in the context of a component.");let r=y.useContext(Hr),{basename:l,navigator:i}=y.useContext(cn),{matches:a}=y.useContext(bn),{pathname:c}=Jn(),d=JSON.stringify(bf(a)),p=y.useRef(!1);return Df(()=>{p.current=!0}),y.useCallback((g,v={})=>{if(un(p.current,Pf),!p.current)return;if(typeof g=="number"){i.go(g);return}let w=jf(g,JSON.parse(d),c,v.relative==="path");r==null&&l!=="/"&&(w.pathname=w.pathname==="/"?l:Cn([l,w.pathname])),(v.replace?i.replace:i.push)(w,v.state,v)},[l,i,d,c,r])}y.createContext(null);function Jo(r,{relative:l}={}){let{matches:i}=y.useContext(bn),{pathname:a}=Jn(),c=JSON.stringify(bf(i));return y.useMemo(()=>jf(r,JSON.parse(c),a,l==="path"),[r,c,a,l])}function Yh(r,l){return Lf(r,l)}function Lf(r,l,i,a){var z;$e(qo(),"useRoutes() may be used only in the context of a component.");let{navigator:c}=y.useContext(cn),{matches:d}=y.useContext(bn),p=d[d.length-1],h=p?p.params:{},g=p?p.pathname:"/",v=p?p.pathnameBase:"/",w=p&&p.route;{let I=w&&w.path||"";_f(g,!w||I.endsWith("*")||I.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${g}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. - -Please change the parent to .`)}let C=Jn(),N;if(l){let I=typeof l=="string"?Vr(l):l;$e(v==="/"||((z=I.pathname)==null?void 0:z.startsWith(v)),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${v}" but pathname "${I.pathname}" was given in the \`location\` prop.`),N=I}else N=C;let L=N.pathname||"/",P=L;if(v!=="/"){let I=v.replace(/^\//,"").split("/");P="/"+L.replace(/^\//,"").split("/").slice(I.length).join("/")}let k=Cf(r,{pathname:P});un(w||k!=null,`No routes matched location "${N.pathname}${N.search}${N.hash}" `),un(k==null||k[k.length-1].route.element!==void 0||k[k.length-1].route.Component!==void 0||k[k.length-1].route.lazy!==void 0,`Matched leaf route at location "${N.pathname}${N.search}${N.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let _=eg(k&&k.map(I=>Object.assign({},I,{params:Object.assign({},h,I.params),pathname:Cn([v,c.encodeLocation?c.encodeLocation(I.pathname).pathname:I.pathname]),pathnameBase:I.pathnameBase==="/"?v:Cn([v,c.encodeLocation?c.encodeLocation(I.pathnameBase).pathname:I.pathnameBase])})),d,i,a);return l&&_?y.createElement(Xo.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...N},navigationType:"POP"}},_):_}function Xh(){let r=lg(),l=Wh(r)?`${r.status} ${r.statusText}`:r instanceof Error?r.message:JSON.stringify(r),i=r instanceof Error?r.stack:null,a="rgba(200,200,200, 0.5)",c={padding:"0.5rem",backgroundColor:a},d={padding:"2px 4px",backgroundColor:a},p=null;return console.error("Error handled by React Router default ErrorBoundary:",r),p=y.createElement(y.Fragment,null,y.createElement("p",null,"💿 Hey developer 👋"),y.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",y.createElement("code",{style:d},"ErrorBoundary")," or"," ",y.createElement("code",{style:d},"errorElement")," prop on your route.")),y.createElement(y.Fragment,null,y.createElement("h2",null,"Unexpected Application Error!"),y.createElement("h3",{style:{fontStyle:"italic"}},l),i?y.createElement("pre",{style:c},i):null,p)}var qh=y.createElement(Xh,null),Jh=class extends y.Component{constructor(r){super(r),this.state={location:r.location,revalidation:r.revalidation,error:r.error}}static getDerivedStateFromError(r){return{error:r}}static getDerivedStateFromProps(r,l){return l.location!==r.location||l.revalidation!=="idle"&&r.revalidation==="idle"?{error:r.error,location:r.location,revalidation:r.revalidation}:{error:r.error!==void 0?r.error:l.error,location:l.location,revalidation:r.revalidation||l.revalidation}}componentDidCatch(r,l){console.error("React Router caught the following error during render",r,l)}render(){return this.state.error!==void 0?y.createElement(bn.Provider,{value:this.props.routeContext},y.createElement(Wa.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function Zh({routeContext:r,match:l,children:i}){let a=y.useContext(Hr);return a&&a.static&&a.staticContext&&(l.route.errorElement||l.route.ErrorBoundary)&&(a.staticContext._deepestRenderedBoundaryId=l.route.id),y.createElement(bn.Provider,{value:r},i)}function eg(r,l=[],i=null,a=null){if(r==null){if(!i)return null;if(i.errors)r=i.matches;else if(l.length===0&&!i.initialized&&i.matches.length>0)r=i.matches;else return null}let c=r,d=i==null?void 0:i.errors;if(d!=null){let g=c.findIndex(v=>v.route.id&&(d==null?void 0:d[v.route.id])!==void 0);$e(g>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(d).join(",")}`),c=c.slice(0,Math.min(c.length,g+1))}let p=!1,h=-1;if(i)for(let g=0;g=0?c=c.slice(0,h+1):c=[c[0]];break}}}return c.reduceRight((g,v,w)=>{let C,N=!1,L=null,P=null;i&&(C=d&&v.route.id?d[v.route.id]:void 0,L=v.route.errorElement||qh,p&&(h<0&&w===0?(_f("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),N=!0,P=null):h===w&&(N=!0,P=v.route.hydrateFallbackElement||null)));let k=l.concat(c.slice(0,w+1)),_=()=>{let z;return C?z=L:N?z=P:v.route.Component?z=y.createElement(v.route.Component,null):v.route.element?z=v.route.element:z=g,y.createElement(Zh,{match:v,routeContext:{outlet:g,matches:k,isDataRoute:i!=null},children:z})};return i&&(v.route.ErrorBoundary||v.route.errorElement||w===0)?y.createElement(Jh,{location:i.location,revalidation:i.revalidation,component:L,error:C,children:_(),routeContext:{outlet:null,matches:k,isDataRoute:!0}}):_()},null)}function Va(r){return`${r} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function tg(r){let l=y.useContext(Hr);return $e(l,Va(r)),l}function ng(r){let l=y.useContext(Ri);return $e(l,Va(r)),l}function rg(r){let l=y.useContext(bn);return $e(l,Va(r)),l}function Ha(r){let l=rg(r),i=l.matches[l.matches.length-1];return $e(i.route.id,`${r} can only be used on routes that contain a unique "id"`),i.route.id}function og(){return Ha("useRouteId")}function lg(){var a;let r=y.useContext(Wa),l=ng("useRouteError"),i=Ha("useRouteError");return r!==void 0?r:(a=l.errors)==null?void 0:a[i]}function ig(){let{router:r}=tg("useNavigate"),l=Ha("useNavigate"),i=y.useRef(!1);return Df(()=>{i.current=!0}),y.useCallback(async(c,d={})=>{un(i.current,Pf),i.current&&(typeof c=="number"?r.navigate(c):await r.navigate(c,{fromRouteId:l,...d}))},[r,l])}var Yd={};function _f(r,l,i){!l&&!Yd[r]&&(Yd[r]=!0,un(!1,i))}y.memo(sg);function sg({routes:r,future:l,state:i}){return Lf(r,void 0,i,l)}function vi(r){$e(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function ag({basename:r="/",children:l=null,location:i,navigationType:a="POP",navigator:c,static:d=!1}){$e(!qo(),"You cannot render a inside another . You should never have more than one in your app.");let p=r.replace(/^\/*/,"/"),h=y.useMemo(()=>({basename:p,navigator:c,static:d,future:{}}),[p,c,d]);typeof i=="string"&&(i=Vr(i));let{pathname:g="/",search:v="",hash:w="",state:C=null,key:N="default"}=i,L=y.useMemo(()=>{let P=En(g,p);return P==null?null:{location:{pathname:P,search:v,hash:w,state:C,key:N},navigationType:a}},[p,g,v,w,C,N,a]);return un(L!=null,` is not able to match the URL "${g}${v}${w}" because it does not start with the basename, so the won't render anything.`),L==null?null:y.createElement(cn.Provider,{value:h},y.createElement(Xo.Provider,{children:l,value:L}))}function ug({children:r,location:l}){return Yh(Ia(r),l)}function Ia(r,l=[]){let i=[];return y.Children.forEach(r,(a,c)=>{if(!y.isValidElement(a))return;let d=[...l,c];if(a.type===y.Fragment){i.push.apply(i,Ia(a.props.children,d));return}$e(a.type===vi,`[${typeof a.type=="string"?a.type:a.type.name}] is not a component. All component children of must be a or `),$e(!a.props.index||!a.props.children,"An index route cannot have child routes.");let p={id:a.props.id||d.join("-"),caseSensitive:a.props.caseSensitive,element:a.props.element,Component:a.props.Component,index:a.props.index,path:a.props.path,loader:a.props.loader,action:a.props.action,hydrateFallbackElement:a.props.hydrateFallbackElement,HydrateFallback:a.props.HydrateFallback,errorElement:a.props.errorElement,ErrorBoundary:a.props.ErrorBoundary,hasErrorBoundary:a.props.hasErrorBoundary===!0||a.props.ErrorBoundary!=null||a.props.errorElement!=null,shouldRevalidate:a.props.shouldRevalidate,handle:a.props.handle,lazy:a.props.lazy};a.props.children&&(p.children=Ia(a.props.children,d)),i.push(p)}),i}var yi="get",xi="application/x-www-form-urlencoded";function Pi(r){return r!=null&&typeof r.tagName=="string"}function cg(r){return Pi(r)&&r.tagName.toLowerCase()==="button"}function dg(r){return Pi(r)&&r.tagName.toLowerCase()==="form"}function fg(r){return Pi(r)&&r.tagName.toLowerCase()==="input"}function pg(r){return!!(r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)}function mg(r,l){return r.button===0&&(!l||l==="_self")&&!pg(r)}var mi=null;function hg(){if(mi===null)try{new FormData(document.createElement("form"),0),mi=!1}catch{mi=!0}return mi}var gg=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Ca(r){return r!=null&&!gg.has(r)?(un(!1,`"${r}" is not a valid \`encType\` for \`\`/\`\` and will default to "${xi}"`),null):r}function vg(r,l){let i,a,c,d,p;if(dg(r)){let h=r.getAttribute("action");a=h?En(h,l):null,i=r.getAttribute("method")||yi,c=Ca(r.getAttribute("enctype"))||xi,d=new FormData(r)}else if(cg(r)||fg(r)&&(r.type==="submit"||r.type==="image")){let h=r.form;if(h==null)throw new Error('Cannot submit a diff --git a/frontend/src/store/game.ts b/frontend/src/store/game.ts index 75a7d59e00..8221ee73af 100644 --- a/frontend/src/store/game.ts +++ b/frontend/src/store/game.ts @@ -80,6 +80,7 @@ type Actions = { stopTimer: () => void; timeUp: () => void; resetGame: () => void; + resetGameAndCategory: () => void; }; const initialSettings: GameSettings = { @@ -494,5 +495,10 @@ export const useGame = create()((set, get) => { }, }); }, + + resetGameAndCategory: () => { + get().resetGame(); + set({ selectedCategory: null }); + }, }; }); From 238f3c10a3801d4f8b4a469cc31d931102069f46 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Wed, 27 Aug 2025 10:43:19 +0200 Subject: [PATCH 091/127] new icons and question names --- backend/data/categories/animals.json | 4 +- backend/data/categories/celebrities.json | 26 ++-- frontend/src/components/CategorySelector.tsx | 127 +++++++++++++------ 3 files changed, 101 insertions(+), 56 deletions(-) diff --git a/backend/data/categories/animals.json b/backend/data/categories/animals.json index aeeb0cd431..b92ab543a9 100644 --- a/backend/data/categories/animals.json +++ b/backend/data/categories/animals.json @@ -2,7 +2,7 @@ "id": "animals.weight", "name": "Animals", "description": "Quiz about animal weights in kilograms", - "question": "Which animal weighs the most?", + "question": "Which animal is heaviest?", "unit": "kg", "unitVisible": true, "sort": "desc", @@ -11,4 +11,4 @@ "url": "https://en.wikipedia.org/wiki/List_of_largest_organisms" }, "version": 1 -} \ No newline at end of file +} diff --git a/backend/data/categories/celebrities.json b/backend/data/categories/celebrities.json index 133ecd43fb..81ad4a309b 100644 --- a/backend/data/categories/celebrities.json +++ b/backend/data/categories/celebrities.json @@ -1,14 +1,14 @@ { - "id": "celebrities.age", - "name": "Celebrities", - "description": "Oldest to Youngest Celebrities", - "question": "What year was the celebrity born in?", - "unit": "year", - "unitVisible": true, - "sort": "desc", - "source": { - "name": "", - "url": "" - }, - "version": 1 - } \ No newline at end of file + "id": "celebrities.age", + "name": "Celebrities", + "description": "Oldest to Youngest Celebrities", + "question": "Who was born first", + "unit": "year", + "unitVisible": true, + "sort": "desc", + "source": { + "name": "", + "url": "" + }, + "version": 1 +} diff --git a/frontend/src/components/CategorySelector.tsx b/frontend/src/components/CategorySelector.tsx index 9e80fc0463..575d28ca0d 100644 --- a/frontend/src/components/CategorySelector.tsx +++ b/frontend/src/components/CategorySelector.tsx @@ -4,59 +4,97 @@ import { Spinner } from "../ui/Spinner"; import { useNavigate } from "react-router-dom"; const AnimalIcon = () => ( - + + + + + + + ); - - const PersonIcon = () => ( -

    - ); + if (loading) + return ( +
    + +
    + ); - if (error) return ( -
    -
    Error: {error}
    -
    - ); + if (error) + return ( +
    +
    Error: {error}
    +
    + ); const iconFor = (id: string) => { if (id.startsWith("animals")) return ; @@ -67,7 +105,9 @@ export const CategorySelector: React.FC = () => { return (
    -

    Choose a Category

    +

    + Choose a Category +

    Pick one to start playing

    @@ -78,8 +118,13 @@ export const CategorySelector: React.FC = () => {
    )} - - {phase === "CHOICE_AFTER_CORRECT" && ( <> )} + + {(lastPlacementCorrect === false || phase === "PLACED_WRONG") && ( + + )}
    )} diff --git a/frontend/src/index.css b/frontend/src/index.css index b1b710e219..2642372c86 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -369,6 +369,38 @@ html { } } +@keyframes typewriter { + 0% { + width: 0; + overflow: hidden; + white-space: nowrap; + } + 100% { + width: 100%; + overflow: visible; + white-space: normal; + } +} + +@keyframes typewriter-smooth { + 0% { + clip-path: inset(0 100% 0 0); + } + 100% { + clip-path: inset(0 0% 0 0); + } +} + +@keyframes pulsate { + 0% { transform: scale(1); } + 50% { transform: scale(1.05); } + 100% { transform: scale(1); } +} + +.animate-pulsate { + animation: pulsate 2s ease-in-out infinite; +} + @media (prefers-reduced-motion: reduce) { * { animation: none !important; diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index 5780e9c735..1f6cf49d28 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -3,11 +3,12 @@ import { Link, useNavigate } from "react-router-dom"; import { OrientationGuard } from "../components/OrientationGuard"; import { GameBoard } from "../components/GameBoard"; import { CategorySelector } from "../components/CategorySelector"; -import { Heading, DotPattern } from "../ui"; +import { Heading } from "../ui"; import { ConfirmModal } from "../components/ConfirmModal"; import { useGame } from "../store/game"; import { GameSettings } from "../components/GameSettings"; + export default function GameMode() { const navigate = useNavigate(); const { @@ -20,6 +21,8 @@ export default function GameMode() { } = useGame(); const [showConfirmModal, setShowConfirmModal] = React.useState(false); + + const categoryLabel = "Category"; const categoryValue = selectedCategory?.name || "Select Category"; const roundLabel = "Round"; @@ -109,12 +112,15 @@ export default function GameMode() { const base = "px-2 py-1 rounded-full border text-xs tracking-wider uppercase"; const cls = active - ? `${base} bg-primary text-base-100 border-primary shadow-soft scale-105` + ? `${base} bg-primary text-base-100 border-primary scale-105 animate-pulse animate-pulsate` : `${base} bg-primary/10 border-border text-muted-foreground`; return (
    {t.name}{" "} diff --git a/frontend/src/store/game.ts b/frontend/src/store/game.ts index 8221ee73af..0f0553e576 100644 --- a/frontend/src/store/game.ts +++ b/frontend/src/store/game.ts @@ -272,10 +272,11 @@ export const useGame = create()((set, get) => { currentCard: undefined, pendingIndex: null, lastPlacementCorrect: false, - phase: "TURN_START", + phase: "PLACED_WRONG", }); get().stopTimer(); - get().nextTeam(); + // Don't automatically call nextTeam for wrong answers + // Let the user click "Next Team" manually to see the feedback } }, @@ -309,17 +310,32 @@ export const useGame = create()((set, get) => { lastPlacementCorrect: null, }); - get().nextTeam(); + // Only automatically switch teams if the last placement was correct + // If it was wrong, wait for user to click "Next Team" + if (s.lastPlacementCorrect !== false) { + get().nextTeam(); + } }, nextTeam: () => { const s = get(); - const next = (s.currentTeamIndex + 1) % s.teams.length; + const currentTeamIdx = s.currentTeamIndex; + const next = (currentTeamIdx + 1) % s.teams.length; + const nextTeam = s.teams[next]; + + // Commit the current team's timeline before switching + const committed = s.turnTimeline; set({ + teams: s.teams.map((t, i) => + i === currentTeamIdx ? { ...t, timeline: committed } : t + ) as GameState["teams"], currentTeamIndex: next, currentCard: undefined, pendingIndex: null, phase: "TURN_START", + lastPlacementCorrect: null, + lastTurnFeedback: null, + turnTimeline: nextTeam?.timeline?.slice() || [], }); }, @@ -405,7 +421,8 @@ export const useGame = create()((set, get) => { lastTurnFeedback: { timeUp: true, correct: false }, }); get().stopTimer(); - get().lockIn(); // commit baseline + nästa lag + // Don't automatically call lockIn for wrong answers + // Let the user click "Next Team" manually return; } } @@ -416,7 +433,9 @@ export const useGame = create()((set, get) => { lastTurnFeedback: { timeUp: true, correct: null }, }); get().stopTimer(); - get().lockIn(); // commit nuvarande turnTimeline (baseline) + nästa lag + // Don't automatically call lockIn when no answer was placed + // Let the user click "Next Team" manually + return; }, startTimer: () => { diff --git a/frontend/src/types/admin.ts b/frontend/src/types/admin.ts index 99e7de5f35..e834a6c661 100644 --- a/frontend/src/types/admin.ts +++ b/frontend/src/types/admin.ts @@ -7,6 +7,6 @@ export interface Admin { lastLogin?: string; } -// Re-export the types from game.ts for convenience +// Re-export the types from game.ts export type Category = GameCategory; export type Item = GameItem; From 7daeaf74246eb147423aa21e7b8d20cf7b22c13c Mon Sep 17 00:00:00 2001 From: Idahel Date: Wed, 27 Aug 2025 16:54:18 +0200 Subject: [PATCH 096/127] changed card font to mono --- frontend/src/components/CurrentCard.tsx | 8 ++++---- frontend/src/components/TimeLineCard.tsx | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/src/components/CurrentCard.tsx b/frontend/src/components/CurrentCard.tsx index de54515d12..ed3319c0ee 100644 --- a/frontend/src/components/CurrentCard.tsx +++ b/frontend/src/components/CurrentCard.tsx @@ -32,10 +32,10 @@ export const CurrentCard: React.FC<{ card: GameItem; dragging?: boolean }> = ({
    -
    +
    {card.name}
    -
    +
    ?
    @@ -54,10 +54,10 @@ export const CurrentCardPreview: React.FC<{ card: GameItem }> = ({ card }) => (
    -
    +
    {card.name}
    -
    +
    ?
    diff --git a/frontend/src/components/TimeLineCard.tsx b/frontend/src/components/TimeLineCard.tsx index 81d001f264..b1825de8e3 100644 --- a/frontend/src/components/TimeLineCard.tsx +++ b/frontend/src/components/TimeLineCard.tsx @@ -111,12 +111,12 @@ export const TimeLineCard: React.FC = ({ >
    {/* VALUE + UNIT */} -
    +
    {isRevealed ? formatValue(item.value, unit) : "??"}
    {/* NAME */} -
    +
    {item.name}
    From 88820a8f959eaac27fb2dfd614e7ef45856ca01a Mon Sep 17 00:00:00 2001 From: tildetilde Date: Wed, 27 Aug 2025 18:04:54 +0200 Subject: [PATCH 097/127] improved home --- frontend/src/assets/cygnito-mono-regular.otf | Bin 0 -> 66704 bytes frontend/src/components/CategorySelector.tsx | 12 ++- frontend/src/index.css | 101 +++++++++++++------ frontend/src/pages/Home.tsx | 16 +-- 4 files changed, 83 insertions(+), 46 deletions(-) create mode 100755 frontend/src/assets/cygnito-mono-regular.otf diff --git a/frontend/src/assets/cygnito-mono-regular.otf b/frontend/src/assets/cygnito-mono-regular.otf new file mode 100755 index 0000000000000000000000000000000000000000..0956c58e28ddb3705cdf645bf9a5dc8293ceb9d9 GIT binary patch literal 66704 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 QrN4K&DT;?FNu3G*2fd!p$^ZZW literal 0 HcmV?d00001 diff --git a/frontend/src/components/CategorySelector.tsx b/frontend/src/components/CategorySelector.tsx index 4cdb272142..caac224d27 100644 --- a/frontend/src/components/CategorySelector.tsx +++ b/frontend/src/components/CategorySelector.tsx @@ -105,10 +105,12 @@ export const CategorySelector: React.FC = () => { return (
    -

    - Choose a Category +

    + THE CATEGORIES

    -

    Pick one to start playing

    +

    + Pick one to start playing +

    @@ -122,14 +124,14 @@ export const CategorySelector: React.FC = () => { selectCategory(c); navigate("/gamemode"); }} - className={`report-card group focus-visible:outline focus-visible:outline-offset-4 focus-visible:outline-primary ${ + className={`[font-family:var(--font-family-mono)] report-card font-[var(--font-family-mono)] group focus-visible:outline focus-visible:outline-offset-4 focus-visible:outline-primary ${ active ? "report-card--active" : "" }`} aria-pressed={active} >
    {iconFor(c.id)} -

    +

    {c.question}

    diff --git a/frontend/src/index.css b/frontend/src/index.css index 2642372c86..0b7f0417ae 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -1,7 +1,21 @@ @import "tailwindcss"; +@import url("https://fonts.googleapis.com/css2?family=Zen+Kaku+Gothic+New:wght@400;500;700&display=swap"); + +/* index.css */ +@import url("https://fonts.googleapis.com/css2?family=Zen+Kaku+Gothic+New:wght@400;500;700&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&display=swap"); + +@font-face { + font-family: "Cygnito Mono"; + src: url("/src/assets/cygnito-mono-regular.otf") format("truetype"); + font-weight: 400; + font-style: normal; +} @theme { --font-family-sans: "Zen Kaku Gothic New", sans-serif; + --font-family-mono: "Cygnito Mono", ui-monospace, SFMono-Regular, Menlo, + Monaco, Consolas, monospace; /* Base scale colors */ --color-base-100: #fefcfa; @@ -94,7 +108,7 @@ html { /* --- Mono / CRT spinner --- */ .mono-spinner { position: relative; - width: 3.25rem; /* 52px */ + width: 3.25rem; /* 52px */ height: 3.25rem; filter: contrast(110%) saturate(80%); } @@ -105,9 +119,7 @@ html { inset: 0; border: 1px solid var(--color-border); border-radius: 0.5rem; - box-shadow: - 0 0 0 1px var(--color-border-muted) inset, - var(--shadow-soft); + box-shadow: 0 0 0 1px var(--color-border-muted) inset, var(--shadow-soft); } /* roterande “radar‑skiva” med wedge */ @@ -115,11 +127,16 @@ html { position: absolute; inset: 6px; border-radius: 9999px; - background: - radial-gradient(circle at center, var(--color-surface) 60%, transparent 61%), - conic-gradient(from 0deg, + background: radial-gradient( + circle at center, + var(--color-surface) 60%, + transparent 61% + ), + conic-gradient( + from 0deg, var(--color-foreground) 0 120deg, - transparent 120deg 360deg); + transparent 120deg 360deg + ); animation: spin 1.1s linear infinite; } @@ -129,14 +146,13 @@ html { position: absolute; inset: 0; border-radius: 0.5rem; - background: - repeating-linear-gradient( - 0deg, - rgba(40, 21, 23, 0.08), - rgba(40, 21, 23, 0.08) 2px, - transparent 2px, - transparent 4px - ); + background: repeating-linear-gradient( + 0deg, + rgba(40, 21, 23, 0.08), + rgba(40, 21, 23, 0.08) 2px, + transparent 2px, + transparent 4px + ); mix-blend-mode: multiply; pointer-events: none; animation: crt-flicker 1.8s ease-in-out infinite; @@ -146,12 +162,13 @@ html { .report-card { position: relative; display: flex; - aspect-ratio: 16 / 7; /* bred, “platta” kort */ + aspect-ratio: 16 / 7; /* bred, “platta” kort */ background: var(--color-surface); border: 1px solid var(--color-border); - border-radius: 1rem; /* ~rounded-2xl */ + border-radius: 1rem; /* ~rounded-2xl */ box-shadow: var(--shadow-soft); - transition: transform 200ms ease, box-shadow 200ms ease, border-color 200ms ease, background-color 200ms ease; + transition: transform 200ms ease, box-shadow 200ms ease, + border-color 200ms ease, background-color 200ms ease; overflow: hidden; } @@ -171,8 +188,10 @@ html { position: absolute; inset: 0; border-radius: inherit; - background-image: - radial-gradient(rgba(40,21,23,0.05) 1px, transparent 1.2px); + background-image: radial-gradient( + rgba(40, 21, 23, 0.05) 1px, + transparent 1.2px + ); background-size: 3px 3px; opacity: 0.6; mix-blend-mode: multiply; @@ -186,30 +205,40 @@ html { transform: translateY(-2px); box-shadow: var(--shadow-medium); border-color: var(--color-foreground); - background-color: color-mix(in srgb, var(--color-accent-100) 10%, var(--color-surface)); + background-color: color-mix( + in srgb, + var(--color-accent-100) 10%, + var(--color-surface) + ); } /* active (vald kategori) */ .report-card--active { border-color: var(--color-primary); - background-color: color-mix(in srgb, var(--color-primary) 12%, var(--color-surface)); + background-color: color-mix( + in srgb, + var(--color-primary) 12%, + var(--color-surface) + ); box-shadow: var(--shadow-medium); } /* reduce motion */ @media (prefers-reduced-motion: reduce) { - .report-card { transition: none; } - .report-card::after { transition: none; } + .report-card { + transition: none; + } + .report-card::after { + transition: none; + } } - - - @keyframes spin { - to { transform: rotate(360deg); } + to { + transform: rotate(360deg); + } } - @media (max-width: 640px) { html { font-size: 14px; @@ -392,9 +421,15 @@ html { } @keyframes pulsate { - 0% { transform: scale(1); } - 50% { transform: scale(1.05); } - 100% { transform: scale(1); } + 0% { + transform: scale(1); + } + 50% { + transform: scale(1.05); + } + 100% { + transform: scale(1); + } } .animate-pulsate { diff --git a/frontend/src/pages/Home.tsx b/frontend/src/pages/Home.tsx index e2e6b75528..ad2d71adf5 100644 --- a/frontend/src/pages/Home.tsx +++ b/frontend/src/pages/Home.tsx @@ -67,12 +67,12 @@ export const Home = () => {
    -

    +

    BEYOND THE ANSWERS… THERE IS

    @@ -86,23 +86,23 @@ export const Home = () => { className="mx-auto w-[min(95vw,1800px)] h-auto text-[var(--color-base-400)]" /> - {/* 🔽 Diskret scroll-hint */} - + */}
    - - {/* Kategorierna under (hintas genom negativ margin) */} + {/* Kategorierna under (hintas genom negativ margin) */}+{" "}
    From 38020fb233f315f850478f56cb8e70f6c15ee864 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Wed, 27 Aug 2025 19:03:34 +0200 Subject: [PATCH 098/127] improved layout --- backend/data/categories/celebrities.json | 2 +- frontend/src/components/GameBoard.tsx | 59 +++++++++++++++--------- frontend/src/components/GameSettings.tsx | 21 +++++---- frontend/src/components/TimeLineCard.tsx | 34 +++++++++----- frontend/src/pages/GameMode.tsx | 24 +++++----- 5 files changed, 83 insertions(+), 57 deletions(-) diff --git a/backend/data/categories/celebrities.json b/backend/data/categories/celebrities.json index 526fe19e05..23e2f34a51 100644 --- a/backend/data/categories/celebrities.json +++ b/backend/data/categories/celebrities.json @@ -4,7 +4,7 @@ "description": "Oldest to Youngest Celebrities", "question": "What year was the celebrity born in?", "unit": "year", - "unitVisible": true, + "unitVisible": false, "sort": "desc", "source": { "name": "", diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index 7097a8bd1d..ea91b898be 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -74,7 +74,11 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { const [isDragging, setIsDragging] = React.useState(false); const onDragStart = (e: DragStartEvent) => { - if (e.active.id === "current-card" && lastPlacementCorrect !== false && phase !== "PLACED_WRONG") { + if ( + e.active.id === "current-card" && + lastPlacementCorrect !== false && + phase !== "PLACED_WRONG" + ) { setIsDragging(true); } }; @@ -82,7 +86,7 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { const onDragEnd = (e: DragEndEvent) => { setIsDragging(false); if (lastPlacementCorrect === false || phase === "PLACED_WRONG") return; // Don't allow placement if team has lost - + const overId = e.over?.id as string | undefined; if (!overId || !overId.startsWith("slot-")) return; const n = Number(overId.slice(5)); @@ -221,11 +225,9 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { {children}
    - {lastPlacementCorrect === true && ( + {lastPlacementCorrect === true && (
    - - CORRECT! - + CORRECT!
    )} {phase === "PLACED_PENDING" && ( @@ -287,29 +289,36 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { modifiers={[restrictToWindowEdges]} > {/* Ny layout: tidslinjen överst, instruction text under till vänster */} -
    +
    {renderTimeline()}
    {/* Instruction text positioned under timeline, aligned to the left */} - {phase === "DRAWN" && currentCard && lastPlacementCorrect !== false && ( -
    - Drag the card and drop it between two cards. -
    - )} + {phase === "DRAWN" && + currentCard && + lastPlacementCorrect !== false && ( +
    + Drag the card and drop it between two cards. +
    + )} {/* Current card alltid placerat under tidslinjen */} - {phase === "DRAWN" && currentCard && lastPlacementCorrect !== false && ( -
    - {/* Gör kortet något större för tydlighet */} -
    - + {phase === "DRAWN" && + currentCard && + lastPlacementCorrect !== false && ( +
    + {/* Gör kortet något större för tydlighet */} +
    + +
    -
    - )} + )}
    - {isDragging && currentCard && lastPlacementCorrect !== false && phase !== "PLACED_WRONG" ? ( + {isDragging && + currentCard && + lastPlacementCorrect !== false && + phase !== "PLACED_WRONG" ? ( ) : null} @@ -336,7 +345,7 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { )} {/* Kontroller */} -
    +
    {phase === "TURN_START" && lastPlacementCorrect !== false && ( )} @@ -351,9 +360,13 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { )} - + {(lastPlacementCorrect === false || phase === "PLACED_WRONG") && ( - )} diff --git a/frontend/src/components/GameSettings.tsx b/frontend/src/components/GameSettings.tsx index 4b1dde9348..e6d4378db9 100644 --- a/frontend/src/components/GameSettings.tsx +++ b/frontend/src/components/GameSettings.tsx @@ -26,18 +26,15 @@ export const GameSettings: React.FC = ({ onClose, onContinue }) => {
    {settings.teamNames.length} teams • {settings.turnSeconds}s per turn
    - {onClose && ( - - )}
    Teams
    - + setTurnSeconds(Number(e.target.value) as 30 | 60 | 90)} + onChange={(e) => + setTurnSeconds(Number(e.target.value) as 30 | 60 | 90) + } className="w-full sm:w-56 rounded-md border border-border bg-card px-3 py-2" > @@ -78,7 +77,13 @@ export const GameSettings: React.FC = ({ onClose, onContinue }) => { -
    +
    + {onClose && ( + + )} +
    diff --git a/frontend/src/components/TimeLineCard.tsx b/frontend/src/components/TimeLineCard.tsx index b1825de8e3..8fe05888b8 100644 --- a/frontend/src/components/TimeLineCard.tsx +++ b/frontend/src/components/TimeLineCard.tsx @@ -30,7 +30,7 @@ const TOKENS: Record< vspace: "space-y-1", }, sm: { - wrapper: "w-[164px] h-[217px]", + wrapper: "w-[164px] h-[217px]", value: "text-3xl", name: "text-lg font-semibold", label: "text-xs", @@ -77,11 +77,11 @@ export const TimeLineCard: React.FC = ({ }) => { const t = TOKENS[size]; const unit = category?.unit; - + const unitVisible = category?.unitVisible ?? true; + // Use responsive sizing for sm size to match CurrentCard - const responsiveWrapper = size === "sm" - ? "w-[120px] h-[169px] sm:w-[164px] sm:h-[217px]" - : t.wrapper; + const responsiveWrapper = + size === "sm" ? "w-[120px] h-[169px] sm:w-[164px] sm:h-[217px]" : t.wrapper; return ( = ({
    - - {/* NAMN i mitten */}
    {/* VALUE + UNIT */} -
    +
    {isRevealed ? formatValue(item.value, unit) : "??"}
    - + {/* NAME */} -
    +
    {item.name}
    @@ -132,7 +140,9 @@ export const TimeLineCard: React.FC = ({ )} aria-label={isCorrect ? "Correct placement" : "Incorrect placement"} > - {isCorrect ? "✓" : "✗"} + + {isCorrect ? "✓" : "✗"} +
    )} diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index 1f6cf49d28..4d4e932401 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -8,7 +8,6 @@ import { ConfirmModal } from "../components/ConfirmModal"; import { useGame } from "../store/game"; import { GameSettings } from "../components/GameSettings"; - export default function GameMode() { const navigate = useNavigate(); const { @@ -21,8 +20,6 @@ export default function GameMode() { } = useGame(); const [showConfirmModal, setShowConfirmModal] = React.useState(false); - - const categoryLabel = "Category"; const categoryValue = selectedCategory?.name || "Select Category"; const roundLabel = "Round"; @@ -118,9 +115,14 @@ export default function GameMode() {
    {t.name}{" "} @@ -186,8 +188,6 @@ export default function GameMode() {
    - - {/* Innehållssektion med DotPattern – växla mellan SETUP (Settings) och Board */}
    @@ -220,13 +220,13 @@ export default function GameMode() { ) : ( <> -
    -
    +
    +
    Game Question
    {selectedCategory.question} - -
    From 172562848c5963ca01ea153d03528d302f3fc2fe Mon Sep 17 00:00:00 2001 From: tildetilde Date: Wed, 27 Aug 2025 19:23:49 +0200 Subject: [PATCH 099/127] connected font --- frontend/index.html | 7 +++++++ frontend/src/index.css | 10 +++------- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/frontend/index.html b/frontend/index.html index e7c9cf527a..4fb722ca24 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -3,6 +3,13 @@ + + + + BANGANZA diff --git a/frontend/src/index.css b/frontend/src/index.css index 0b7f0417ae..40210b424e 100644 --- a/frontend/src/index.css +++ b/frontend/src/index.css @@ -1,19 +1,15 @@ @import "tailwindcss"; -@import url("https://fonts.googleapis.com/css2?family=Zen+Kaku+Gothic+New:wght@400;500;700&display=swap"); - -/* index.css */ -@import url("https://fonts.googleapis.com/css2?family=Zen+Kaku+Gothic+New:wght@400;500;700&display=swap"); -@import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&display=swap"); +@import url("https://fonts.googleapis.com/css2?family=Zen+Kaku+Gothic+Antique:wght@400;500;700&display=swap"); @font-face { font-family: "Cygnito Mono"; - src: url("/src/assets/cygnito-mono-regular.otf") format("truetype"); + src: url("/src/assets/cygnito-mono-regular.otf") format("opentype"); font-weight: 400; font-style: normal; } @theme { - --font-family-sans: "Zen Kaku Gothic New", sans-serif; + --font-family-sans: "Zen Kaku Gothic Antique", system-ui, sans-serif; --font-family-mono: "Cygnito Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; From ad76c6f293690cb34098aa0dfb4c251a15eae8a1 Mon Sep 17 00:00:00 2001 From: tildetilde Date: Wed, 27 Aug 2025 20:11:52 +0200 Subject: [PATCH 100/127] Improved feedback system and card logic --- frontend/index.html | 1 - frontend/src/components/GameBoard.tsx | 89 ++++++++++++++++----------- 2 files changed, 54 insertions(+), 36 deletions(-) diff --git a/frontend/index.html b/frontend/index.html index 4fb722ca24..e2201134e1 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -9,7 +9,6 @@ href="https://fonts.googleapis.com/css2?family=Zen+Kaku+Gothic+Antique:wght@400;500;700&display=swap" rel="stylesheet" /> - BANGANZA diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index ea91b898be..2909efb3b1 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -138,14 +138,39 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { const showSlots = phase === "DRAWN" || phase === "PLACED_PENDING"; - // If team has lost (wrong answer), show message instead of timeline - if (lastPlacementCorrect === false || phase === "PLACED_WRONG") { + // TIME'S UP + no answer → stor panel i samma stil som OH NO! + if (lastTurnFeedback?.timeUp && lastTurnFeedback.correct == null) { return (
    - OH NO! + TIME’S UP! +
    +
    + + No answer placed. + +
    +
    +
    +
    + ); + } + + // Felplacerat (inkl. TIME'S UP + wrong) → rubriken blir TIME'S UP! om tiden gick + if ( + lastPlacementCorrect === false || + phase === "PLACED_WRONG" || + (lastTurnFeedback?.timeUp && lastTurnFeedback.correct === false) + ) { + const heading = lastTurnFeedback?.timeUp ? "TIME’S UP!" : "OH NO!"; + return ( +
    +
    +
    +
    + {heading}
    @@ -225,16 +250,14 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { {children}
    - {lastPlacementCorrect === true && ( + {(lastPlacementCorrect === true || + (lastTurnFeedback?.timeUp && lastTurnFeedback.correct === true)) && (
    - CORRECT! -
    - )} - {phase === "PLACED_PENDING" && ( -
    - + + {lastTurnFeedback?.timeUp && lastTurnFeedback.correct === true + ? "Time’s up. Correct!" + : "CORRECT!"} +
    )}
    @@ -295,7 +318,8 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { {/* Instruction text positioned under timeline, aligned to the left */} {phase === "DRAWN" && currentCard && - lastPlacementCorrect !== false && ( + lastPlacementCorrect !== false && + !lastTurnFeedback?.timeUp && (
    Drag the card and drop it between two cards.
    @@ -304,7 +328,8 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { {/* Current card alltid placerat under tidslinjen */} {phase === "DRAWN" && currentCard && - lastPlacementCorrect !== false && ( + lastPlacementCorrect !== false && + !lastTurnFeedback?.timeUp && (
    {/* Gör kortet något större för tydlighet */}
    @@ -318,31 +343,14 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { {isDragging && currentCard && lastPlacementCorrect !== false && - phase !== "PLACED_WRONG" ? ( + phase !== "PLACED_WRONG" && + !lastTurnFeedback?.timeUp ? ( ) : null} - {/* Time's up-feedback (visas mellan turer) */} - {lastTurnFeedback?.timeUp && ( -
    - Time’s up.{" "} - {lastTurnFeedback.correct === true && ( - You were correct! - )} - {lastTurnFeedback.correct === false && ( - That was incorrect. - )} - {lastTurnFeedback.correct == null && ( - No answer placed. - )} -
    - )} + {/* (tidigare liten "Time's up"-rad borttagen – all feedback hanteras i panelerna ovan) */} {/* Kontroller */}
    @@ -361,7 +369,18 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { )} - {(lastPlacementCorrect === false || phase === "PLACED_WRONG") && ( + {phase === "PLACED_PENDING" && ( +
    + +
    + )} + + {(lastPlacementCorrect === false || + phase === "PLACED_WRONG" || + (lastTurnFeedback?.timeUp && + lastTurnFeedback.correct !== true)) && (
    @@ -239,6 +265,39 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { ); }; + // Timer component to be displayed above timeline + const renderTimer = () => { + if (phase !== "DRAWN" && phase !== "PLACED_PENDING" && phase !== "CHOICE_AFTER_CORRECT") { + return null; + } + + const total = settings.turnSeconds; + const left = timer.secondsLeft; + const elapsed = total - left; + const pct = Math.max(0, Math.min(100, Math.round((elapsed / total) * 100))); + + return ( +
    +
    + {String(Math.floor(left / 60)).padStart(2, "0")}: + {String(left % 60).padStart(2, "0")} +
    +
    +
    +
    +
    + ); + }; + return (
    {/* Errors / loading */} @@ -287,18 +346,21 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { modifiers={[restrictToWindowEdges]} > {/* Ny layout: tidslinjen överst, instruction text under till vänster */} -
    +
    + {/* Timer positioned above timeline, centered */} + {renderTimer()} +
    {renderTimeline()}
    {/* Instruction text positioned under timeline, aligned to the left */} - {phase === "DRAWN" && currentCard && lastPlacementCorrect !== false && ( + {phase === "DRAWN" && currentCard && lastPlacementCorrect !== false && !(lastTurnFeedback?.timeUp && lastTurnFeedback.correct === null) && (
    Drag the card and drop it between two cards.
    )} {/* Current card alltid placerat under tidslinjen */} - {phase === "DRAWN" && currentCard && lastPlacementCorrect !== false && ( + {phase === "DRAWN" && currentCard && lastPlacementCorrect !== false && !(lastTurnFeedback?.timeUp && lastTurnFeedback.correct === null) && (
    {/* Gör kortet något större för tydlighet */}
    @@ -316,44 +378,55 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { {/* Time's up-feedback (visas mellan turer) */} - {lastTurnFeedback?.timeUp && ( + {lastTurnFeedback?.timeUp && lastTurnFeedback.correct !== null && (
    - Time’s up.{" "} + Time's up.{" "} {lastTurnFeedback.correct === true && ( - You were correct! + You were correct! )} {lastTurnFeedback.correct === false && ( - That was incorrect. - )} - {lastTurnFeedback.correct == null && ( - No answer placed. + That was incorrect. )}
    )} {/* Kontroller */} -
    +
    {phase === "TURN_START" && lastPlacementCorrect !== false && ( - + )} {phase === "CHOICE_AFTER_CORRECT" && ( <> - - )} - {(lastPlacementCorrect === false || phase === "PLACED_WRONG") && ( - )} diff --git a/frontend/src/components/TimeLineCard.tsx b/frontend/src/components/TimeLineCard.tsx index b1825de8e3..09aac02f5d 100644 --- a/frontend/src/components/TimeLineCard.tsx +++ b/frontend/src/components/TimeLineCard.tsx @@ -84,21 +84,17 @@ export const TimeLineCard: React.FC = ({ : t.wrapper; return ( - - {/* diskret mönster */} -
    -
    -
    + {/* diskret mönster - removed for better visibility */} @@ -111,12 +107,12 @@ export const TimeLineCard: React.FC = ({ >
    {/* VALUE + UNIT */} -
    +
    {isRevealed ? formatValue(item.value, unit) : "??"}
    {/* NAME */} -
    +
    {item.name}
    @@ -136,8 +132,7 @@ export const TimeLineCard: React.FC = ({
    )} - {/* glint */} -
    + {/* glint - removed for better visibility */} ); }; diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index 1f6cf49d28..ba8e76a385 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -31,15 +31,11 @@ export default function GameMode() { const scoreA = teams[0]?.timeline.length ?? 0; const scoreB = teams[1]?.timeline.length ?? 0; - const { settings, timer } = useGame(); - const total = settings.turnSeconds; - const left = timer.secondsLeft; - const elapsed = total - left; - const pct = Math.max(0, Math.min(100, Math.round((elapsed / total) * 100))); + const chip = - "px-2 py-1 rounded-full bg-primary/10 border border-border text-xs tracking-wider uppercase text-muted-foreground"; - const dot = "inline-block w-2 h-2 rounded-sm bg-primary shadow-soft"; + "px-2 py-1 rounded-full bg-primary/10 border border-[#f9ecdf] text-xs tracking-wider uppercase text-[#f9ecdf]"; + const dot = "inline-block w-2 h-2 rounded-sm bg-[#f9ecdf] shadow-soft"; const handleHomeClick = (e: React.MouseEvent) => { e.preventDefault(); @@ -59,7 +55,7 @@ export default function GameMode() {
    -
    +
    Choose Your Game
    +
    {/* Top-left: Home */} @@ -97,7 +93,7 @@ export default function GameMode() { >
    - Home + Home
    @@ -112,8 +108,8 @@ export default function GameMode() { const base = "px-2 py-1 rounded-full border text-xs tracking-wider uppercase"; const cls = active - ? `${base} bg-primary text-base-100 border-primary scale-105 animate-pulse animate-pulsate` - : `${base} bg-primary/10 border-border text-muted-foreground`; + ? `${base} bg-[#f9ecdf] text-[#2a0d0d] border-[#f9ecdf] scale-105 animate-pulse animate-pulsate` + : `${base} bg-primary/10 border-[#f9ecdf] text-[#f9ecdf]`; return (
    {t.timeline?.length ?? 0} @@ -138,42 +134,14 @@ export default function GameMode() {
    - {/* Timer - positioned at top center to align with Home and Teams */} - {(phase === "DRAWN" || - phase === "PLACED_PENDING" || - phase === "CHOICE_AFTER_CORRECT") && ( -
    -
    - {String(Math.floor(left / 60)).padStart(2, "0")}: - {String(left % 60).padStart(2, "0")} -
    -
    -
    -
    -
    - )} + {/* Bottom-left: Round */}
    {roundLabel}:{" "} - {roundValue} + {roundValue}
    @@ -181,7 +149,7 @@ export default function GameMode() {
    {categoryLabel}:{" "} - {categoryValue} + {categoryValue}
    @@ -220,13 +188,13 @@ export default function GameMode() { ) : ( <> -
    -
    +
    +
    Game Question
    Date: Wed, 27 Aug 2025 22:12:10 +0200 Subject: [PATCH 102/127] fixed missed closing tag --- frontend/src/components/GameBoard.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index 95259f006b..2b8080bb92 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -403,7 +403,8 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => {
    - )} +
    + )}
    From c2bfd3c7636a3e0afafebc7da36f4fddb25b6dca Mon Sep 17 00:00:00 2001 From: Idahel Date: Wed, 27 Aug 2025 22:22:00 +0200 Subject: [PATCH 103/127] small design changes --- frontend/src/components/GameBoard.tsx | 8 +- frontend/src/pages/GameMode.tsx | 160 ++++++++++++-------------- 2 files changed, 78 insertions(+), 90 deletions(-) diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index 2b8080bb92..60273343c8 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -143,15 +143,15 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { // TIME'S UP + no answer → stor panel i samma stil som OH NO! if (lastTurnFeedback?.timeUp && lastTurnFeedback.correct == null) { return ( -
    +
    -
    +
    TIME’S UP!
    -
    +
    - No answer placed. + Your turn is over, it's time for the next team.
    diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index 245ec1850d..03459a3336 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -51,24 +51,6 @@ export default function GameMode() {
    -
    -
    - Choose Your Game -
    - - Select a Category - -

    - Choose a category to start playing the timeline game. -

    -
    @@ -83,78 +65,84 @@ export default function GameMode() {
    - {/* Top-left: Home */} - - - {/* Top-right: A/B Team */} -
    -
    - {teams[currentTeamIndex]?.name} is playing -
    -
    - {teams.map((t, i) => { - const active = currentTeamIndex === i; - const base = - "px-2 py-1 rounded-full border text-xs tracking-wider uppercase"; - const cls = active - ? `${base} bg-[#f9ecdf] text-[#2a0d0d] border-[#f9ecdf] scale-105 animate-pulse animate-pulsate` - : `${base} bg-primary/10 border-[#f9ecdf] text-[#f9ecdf]`; - return ( -
    - {t.name}{" "} - + +
    + Home +
    + + )} + + {/* Top-right: A/B Team - Only show when not in SETUP */} + {phase !== "SETUP" && ( +
    +
    + {teams[currentTeamIndex]?.name} is playing +
    +
    + {teams.map((t, i) => { + const active = currentTeamIndex === i; + const base = + "px-2 py-1 rounded-full border text-xs tracking-wider uppercase"; + const cls = active + ? `${base} bg-[#f9ecdf] text-[#2a0d0d] border-[#f9ecdf] scale-105 animate-pulse animate-pulsate` + : `${base} bg-primary/10 border-[#f9ecdf] text-[#f9ecdf]`; + return ( +
    - {t.timeline?.length ?? 0} - -
    - ); - })} + {t.name}{" "} + + {t.timeline?.length ?? 0} + +
    + ); + })} +
    +
    - -
    - - - - {/* Bottom-left: Round */} -
    - -
    - {roundLabel}:{" "} - {roundValue} + )} + + {/* Bottom-left: Round - Only show when not in SETUP */} + {phase !== "SETUP" && ( +
    + +
    + {roundLabel}:{" "} + {roundValue} +
    -
    - - {/* Bottom-right: Category */} -
    -
    - {categoryLabel}:{" "} - {categoryValue} + )} + + {/* Bottom-right: Category - Only show when not in SETUP */} + {phase !== "SETUP" && ( +
    +
    + {categoryLabel}:{" "} + {categoryValue} +
    +
    - -
    + )} {/* Innehållssektion med DotPattern – växla mellan SETUP (Settings) och Board */}
    @@ -189,7 +177,7 @@ export default function GameMode() { ) : ( <> -
    +
    Game Question
    From 730dc25407d83ab68095ff62c617e8d28aeba4d1 Mon Sep 17 00:00:00 2001 From: Idahel Date: Thu, 28 Aug 2025 08:54:34 +0200 Subject: [PATCH 104/127] changed drag and drop to work better on mobile --- frontend/src/components/GameBoard.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index 60273343c8..1d97ca7ccd 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -2,7 +2,8 @@ import React from "react"; import { DndContext, - PointerSensor, + MouseSensor, + TouchSensor, useSensor, useSensors, DragStartEvent, @@ -71,7 +72,8 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { const winner = useGame((s) => (s as any).winner); const sensors = useSensors( - useSensor(PointerSensor, { activationConstraint: { distance: 6 } }) + useSensor(MouseSensor), + useSensor(TouchSensor, { activationConstraint: { delay: 250, tolerance: 5 } }) ); const [isDragging, setIsDragging] = React.useState(false); @@ -379,7 +381,6 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { onDragStart={onDragStart} onDragEnd={onDragEnd} collisionDetection={closestCenter} - modifiers={[restrictToWindowEdges]} > {/* Ny layout: tidslinjen överst, instruction text under till vänster */} From d843046ecf7509d1427729aab29fb19a1befd9bd Mon Sep 17 00:00:00 2001 From: Idahel Date: Thu, 28 Aug 2025 14:30:58 +0200 Subject: [PATCH 105/127] mobile view --- frontend/src/components/CurrentCard.tsx | 42 ++++++++++++------------ frontend/src/components/GameBoard.tsx | 18 +++++----- frontend/src/components/TimeLineCard.tsx | 34 +++++++++---------- frontend/src/pages/GameMode.tsx | 18 +++++----- frontend/src/ui/Button.tsx | 3 +- frontend/tailwind.config.ts | 10 ++++++ 6 files changed, 68 insertions(+), 57 deletions(-) diff --git a/frontend/src/components/CurrentCard.tsx b/frontend/src/components/CurrentCard.tsx index ec2c407585..d85f836f92 100644 --- a/frontend/src/components/CurrentCard.tsx +++ b/frontend/src/components/CurrentCard.tsx @@ -21,21 +21,21 @@ export const CurrentCard: React.FC<{ card: GameItem; dragging?: boolean }> = ({ style={style} {...listeners} {...attributes} - className={`w-[102px] sm:w-48 cursor-grab active:cursor-grabbing select-none ${ + className={`w-[90px] lg:w-48 cursor-grab active:cursor-grabbing select-none ${ dragging ? "opacity-0" : "" }`} > - - -
    + + +
    Place in timeline
    - -
    + +
    {card.name}
    -
    +
    ?
    @@ -47,20 +47,20 @@ export const CurrentCard: React.FC<{ card: GameItem; dragging?: boolean }> = ({ // Preview för DragOverlay (samma look) export const CurrentCardPreview: React.FC<{ card: GameItem }> = ({ card }) => (
    - - -
    - Place in timeline -
    -
    - -
    - {card.name} -
    -
    - ? -
    -
    + + +
    + Place in timeline +
    +
    + +
    + {card.name} +
    +
    + ? +
    +
    ); diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index 1d97ca7ccd..6286c2185f 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -148,10 +148,10 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => {
    -
    +
    TIME’S UP!
    -
    +
    Your turn is over, it's time for the next team. @@ -174,10 +174,10 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => {
    -
    +
    OH NO!
    -
    +
    Wrong answer. Your turn is over. @@ -194,10 +194,10 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => {
    -
    +
    TIME'S UP!
    -
    +
    Your turn is over, it's time for the next team. @@ -276,7 +276,7 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => {
    {lastPlacementCorrect === true && ( -
    +
    @@ -500,10 +500,10 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { × -
    +
    Congratulations!
    -
    +
    {winnerName ? `${winnerName} wins` : `Winner!`}
    diff --git a/frontend/src/components/TimeLineCard.tsx b/frontend/src/components/TimeLineCard.tsx index fa62521c10..87846f98f0 100644 --- a/frontend/src/components/TimeLineCard.tsx +++ b/frontend/src/components/TimeLineCard.tsx @@ -20,24 +20,24 @@ const TOKENS: Record< } > = { xs: { - wrapper: "w-[120px] h-[169px]", - value: "text-2xl", - name: "text-base font-semibold", - label: "text-[10px]", - badge: "w-5 h-5 text-[10px]", - padHeader: "pt-2 pb-1 px-2", - padContent: "px-2 pb-2", - vspace: "space-y-1", + wrapper: "w-[90px] h-[127px]", + value: "text-xl", + name: "text-sm font-semibold", + label: "text-[9px]", + badge: "w-4 h-4 text-[9px]", + padHeader: "pt-1.5 pb-0.5 px-1.5", + padContent: "px-1.5 pb-1.5", + vspace: "space-y-0.5", }, sm: { - wrapper: "w-[164px] h-[217px]", - value: "text-3xl", - name: "text-lg font-semibold", - label: "text-xs", - badge: "w-6 h-6 text-xs", - padHeader: "pt-3 pb-2 px-3", - padContent: "px-3 pb-3", - vspace: "space-y-2", + wrapper: "w-[90px] h-[127px] lg:w-[164px] lg:h-[217px]", + value: "text-xl lg:text-3xl", + name: "text-sm lg:text-lg font-semibold", + label: "text-[9px] lg:text-xs", + badge: "w-4 h-4 lg:w-6 lg:h-6 text-[9px] lg:text-xs", + padHeader: "pt-1.5 pb-0.5 px-1.5 lg:pt-3 lg:pb-2 lg:px-3", + padContent: "px-1.5 pb-1.5 lg:px-3 lg:pb-3", + vspace: "space-y-0.5 lg:space-y-2", }, md: { wrapper: "w-[290px] h-[387px]", @@ -81,7 +81,7 @@ export const TimeLineCard: React.FC = ({ // Use responsive sizing for sm size to match CurrentCard const responsiveWrapper = - size === "sm" ? "w-[120px] h-[169px] sm:w-[164px] sm:h-[217px]" : t.wrapper; + size === "sm" ? "w-[90px] h-[127px] lg:w-[164px] lg:h-[217px]" : t.wrapper; return ( - -
    + +
    Home
    @@ -84,11 +84,11 @@ export default function GameMode() {
    {teams[currentTeamIndex]?.name} is playing
    -
    +
    {teams.map((t, i) => { const active = currentTeamIndex === i; const base = - "px-2 py-1 rounded-full border text-xs tracking-wider uppercase"; + "px-2 py-1 rounded-full border text-xs tracking-wider uppercase text-right sm:text-center"; const cls = active ? `${base} bg-[#f9ecdf] text-[#2a0d0d] border-[#f9ecdf] scale-105 animate-pulse animate-pulsate` : `${base} bg-primary/10 border-[#f9ecdf] text-[#f9ecdf]`; @@ -118,14 +118,14 @@ export default function GameMode() { ); })}
    - +
    )} {/* Bottom-left: Round - Only show when not in SETUP */} {phase !== "SETUP" && (
    - +
    {roundLabel}:{" "} {roundValue} @@ -140,7 +140,7 @@ export default function GameMode() { {categoryLabel}:{" "} {categoryValue}
    - +
    )} @@ -177,7 +177,7 @@ export default function GameMode() { ) : ( <> -
    +
    Game Question
    @@ -186,7 +186,7 @@ export default function GameMode() { className="leading-[0.95] text-[#f9ecdf]" style={{ - fontSize: "clamp(2rem, 3vw, 4rem)", + fontSize: "clamp(1rem, 3vw, 4rem)", letterSpacing: "-0.02em", }} > diff --git a/frontend/src/ui/Button.tsx b/frontend/src/ui/Button.tsx index 28d4c1f377..bc96bf82b4 100644 --- a/frontend/src/ui/Button.tsx +++ b/frontend/src/ui/Button.tsx @@ -3,7 +3,7 @@ import { cn } from "../lib/utils"; interface ButtonProps extends React.ButtonHTMLAttributes { variant?: "primary" | "secondary" | "outline" | "ghost"; - size?: "sm" | "md" | "lg"; + size?: "xs" | "sm" | "md" | "lg"; children: React.ReactNode; } @@ -25,6 +25,7 @@ export const Button = React.forwardRef( }; const sizes = { + xs: "h-8 px-2 text-xs", sm: "h-9 px-3 text-sm", md: "h-11 px-6 text-base", lg: "h-12 px-8 text-lg", diff --git a/frontend/tailwind.config.ts b/frontend/tailwind.config.ts index ca99aea8c8..41dfef4824 100644 --- a/frontend/tailwind.config.ts +++ b/frontend/tailwind.config.ts @@ -4,6 +4,16 @@ import animate from "tailwindcss-animate"; const config: Config = { darkMode: "class", content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"], + theme: { + extend: { + screens: { + 'xs': '1023px', + 'lg': '1024px', + 'xl': '1280px', + '2xl': '1536px', + }, + }, + }, plugins: [animate], }; From 8303f02be72e089e6ddf35a0eada749daa4e6ada Mon Sep 17 00:00:00 2001 From: Idahel Date: Thu, 28 Aug 2025 15:42:12 +0200 Subject: [PATCH 106/127] adjustments to fit mobile --- frontend/src/components/CategorySelector.tsx | 4 +-- frontend/src/components/GameBoard.tsx | 9 ++--- frontend/src/components/GameSettings.tsx | 10 +++--- frontend/src/pages/GameMode.tsx | 36 ++++++++------------ frontend/src/pages/Home.tsx | 2 +- frontend/tailwind.config.ts | 4 ++- 6 files changed, 31 insertions(+), 34 deletions(-) diff --git a/frontend/src/components/CategorySelector.tsx b/frontend/src/components/CategorySelector.tsx index e2f797ac43..2cb86658e2 100644 --- a/frontend/src/components/CategorySelector.tsx +++ b/frontend/src/components/CategorySelector.tsx @@ -123,12 +123,12 @@ export const CategorySelector: React.FC = () => { selectCategory(c); navigate("/gamemode"); }} - className={`[font-family:var(--font-family-mono)] report-card font-[var(--font-family-mono)] group focus-visible:outline focus-visible:outline-offset-4 focus-visible:outline-primary ${ + className={`flex items-center justify-center w-full max-w-sm justify-self-center sm:justify-self-stretch [font-family:var(--font-family-mono)] report-card font-[var(--font-family-mono)] group focus-visible:outline focus-visible:outline-offset-4 focus-visible:outline-primary ${ active ? "report-card--active" : "" }`} aria-pressed={active} > -
    +
    {iconFor(c.id)}

    {c.question} diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index 6286c2185f..24521d4a39 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -316,19 +316,19 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { return (
    -
    +
    {String(Math.floor(left / 60)).padStart(2, "0")}: {String(left % 60).padStart(2, "0")}
    @@ -384,7 +384,8 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { > {/* Ny layout: tidslinjen överst, instruction text under till vänster */} -
    +
    + {/* Timer positioned above timeline, centered */} {renderTimer()} diff --git a/frontend/src/components/GameSettings.tsx b/frontend/src/components/GameSettings.tsx index e6d4378db9..70c93689ca 100644 --- a/frontend/src/components/GameSettings.tsx +++ b/frontend/src/components/GameSettings.tsx @@ -21,14 +21,14 @@ export const GameSettings: React.FC = ({ onClose, onContinue }) => { }; return ( -
    +
    {settings.teamNames.length} teams • {settings.turnSeconds}s per turn
    - +
    Teams
    @@ -61,7 +61,7 @@ export const GameSettings: React.FC = ({ onClose, onContinue }) => {
    - +
    Turn time
    -
    +
    {onClose && ( - - -
    -

    - -
    - Component Examples -
    - - - - - - INFO BLOCK - - - - - - - - - - MORE INFO - - - - - - - - - - EVEN MORE - - - - - - - - - - SO MUCH INFO - - - - -
    -
    - -
    - Button Variants -
    - - - - -
    -
    - -
    - Typography Scale -
    - Heading 1 - Display - Heading 2 - Page Title - Heading 3 - Section - Heading 4 - Subsection - Heading 5 - Component - Heading 6 - Label -

    - Body text - Regular paragraph content -

    -

    - Small text - Secondary information -

    -
    -
    -
    -
    -
    - ); -}; diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index b8bc4a6e97..daa097d02e 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -1,5 +1,5 @@ import React from "react"; -import { Link, useNavigate } from "react-router-dom"; +import { useNavigate } from "react-router-dom"; import { OrientationGuard } from "../components/OrientationGuard"; import { GameBoard } from "../components/GameBoard"; import { CategorySelector } from "../components/CategorySelector"; diff --git a/frontend/src/pages/Home.tsx b/frontend/src/pages/Home.tsx index 192e8f5e70..24e3a17a23 100644 --- a/frontend/src/pages/Home.tsx +++ b/frontend/src/pages/Home.tsx @@ -1,6 +1,4 @@ import { useEffect, useState, useRef } from "react"; -import { Link } from "react-router-dom"; -import { Button, Heading } from "../ui"; import { useLocation } from "react-router-dom"; import BanganzaIntro from "../components/BanganzaIntro"; import { CategorySelector } from "../components/CategorySelector"; diff --git a/package.json b/package.json index 680d190772..11a5026257 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,9 @@ "name": "project-final-parent", "version": "1.0.0", "scripts": { - "postinstall": "npm install --prefix backend" + "postinstall": "npm install --prefix backend", + "lint": "npm --prefix frontend run lint", + "lint:fix": "npm --prefix frontend run lint:fix", + "prune": "ts-prune" } -} \ No newline at end of file +} From 6620b05031afae654354629c6ea4218d4148f9f9 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Fri, 29 Aug 2025 14:44:52 +0200 Subject: [PATCH 112/127] Cleaning up --- README.md | 25 +- TODO.md | 6 - frontend/src/components/BanganzaIntro.tsx | 5 +- frontend/src/components/ConfirmModal.tsx | 5 - frontend/src/components/CurrentCard.tsx | 1 - frontend/src/components/GameBoard.tsx | 42 +--- frontend/src/components/LoginForm.tsx | 89 ------- frontend/src/components/LoginModal.tsx | 229 ------------------- frontend/src/components/OrientationGuard.tsx | 3 +- frontend/src/components/StartCard.tsx | 3 - frontend/src/components/TimeLineCard.tsx | 12 +- frontend/src/components/Timeline.tsx | 2 - frontend/src/index.css | 94 +------- frontend/src/pages/GameMode.tsx | 59 +++-- frontend/src/pages/Home.tsx | 17 +- frontend/src/services/api.ts | 10 +- frontend/src/store/game.ts | 26 +-- frontend/src/types/admin.ts | 1 - frontend/src/types/game.ts | 18 +- frontend/src/ui/index.ts | 3 +- frontend/vite.config.ts | 2 +- 21 files changed, 87 insertions(+), 565 deletions(-) delete mode 100644 TODO.md delete mode 100644 frontend/src/components/LoginForm.tsx delete mode 100644 frontend/src/components/LoginModal.tsx diff --git a/README.md b/README.md index 31466b54c2..59e798cca0 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,22 @@ -# Final Project +Banganza – Final Project +Banganza is an interactive multiplayer quiz game where teams compete by placing items in the correct order on a timeline. Categories include animals, elements, internet phenomena, and more. The project was built as a final assignment to demonstrate full-stack development with React, TypeScript, Node.js and MongoDB. -Replace this readme with your own information about your project. +The problem +The goal was to create a fully functioning game that combines accessibility, design, and game mechanics in one app. +Key challenges included state management for multiple teams, drag-and-drop interactions, and an admin interface for managing categories and items. -Start by briefly describing the assignment in a sentence or two. Keep it short and to the point. +Technologies and tools used: +Frontend: React 18, TypeScript, Vite, Tailwind CSS, custom UI components +Backend: Node.js, Express, MongoDB +Features: JWT authentication, admin panel for CRUD operations, accessible design with ARIA and keyboard support, animated intro and transitions -## The problem +Planning involved sketching wireframes, defining game phases, and structuring code with clean practices and reusable components. -Describe how you approached to problem, and what tools and techniques you used to solve it. How did you plan? What technologies did you use? If you had more time, what would be next? +If there was more time, next steps would include: +Adding live multiplayer with WebSockets +More categories and item sets +Enhanced animations and sounds +Analytics and scoring history -## View it live - -Every project should be deployed somewhere. Be sure to include the link to the deployed project so that the viewer can click around and see what it's all about. \ No newline at end of file +View it live +You can try the game here: https://banganza.netlify.app diff --git a/TODO.md b/TODO.md deleted file mode 100644 index b924e7948e..0000000000 --- a/TODO.md +++ /dev/null @@ -1,6 +0,0 @@ -- logik för när spelet är slut när man lagt 10 kort i rad [X] -- game settings för antal lag [X] -- display cards för kategorier -- admin login + logik för att redigera spelet [X ] -- mobilvy -- tillgänglighet diff --git a/frontend/src/components/BanganzaIntro.tsx b/frontend/src/components/BanganzaIntro.tsx index 1f6bb05e98..6aa1eb1e6f 100644 --- a/frontend/src/components/BanganzaIntro.tsx +++ b/frontend/src/components/BanganzaIntro.tsx @@ -10,7 +10,6 @@ export default function BanganzaIntro({ onFinish }: Props) { if (doneRef.current) return; doneRef.current = true; setExiting(true); - // vänta tills mörka overlayn hunnit tona in (matchar duration-500) setTimeout(() => onFinish?.(), 100); } @@ -28,14 +27,14 @@ export default function BanganzaIntro({ onFinish }: Props) { preload="auto" poster="/intropic.png" onEnded={endWithFade} - onClick={endWithFade} /* klick för att hoppa över */ + onClick={endWithFade} className="w-full h-full object-cover" > Your browser does not support video :( - {/* mörk overlay som fadar in vid exit → undviker ljus flash */} + {/* dark overlay fading in on exit → prevents bright flash */}
    = ({ onClose(); }, [onClose]); - // Handle escape key React.useEffect(() => { const handleEscape = (e: KeyboardEvent) => { if (e.key === "Escape") { @@ -43,7 +42,6 @@ export const ConfirmModal: React.FC = ({ } }, [isOpen, onClose]); - // Prevent body scroll when modal is open React.useEffect(() => { if (isOpen) { document.body.style.overflow = "hidden"; @@ -53,21 +51,18 @@ export const ConfirmModal: React.FC = ({ } }, [isOpen]); - // Don't render anything if modal is not open if (!isOpen) { return null; } return (
    - {/* Backdrop */}
    - {/* Kategorierna under (hintas genom negativ margin) */}+{" "}
    { return pool.splice(i, 1)[0]; }; -// ---------- extra UI-state ---------- type TimerState = { turnDeadline: number | null; secondsLeft: number; @@ -59,7 +57,6 @@ type UIState = { winner: { teamIndex: number; teamName: string } | null; }; -// ---------- actions ---------- type Actions = { clearError: () => void; loadCategories: () => Promise; @@ -96,7 +93,6 @@ const initialTimer: TimerState = { }; export const useGame = create()((set, get) => { - // 🔹 Nu kan du definiera helpers här: const declareWinner = (staged: GameItem[]) => { const s = get(); const tIdx = s.currentTeamIndex; @@ -115,7 +111,6 @@ export const useGame = create()((set, get) => { }); }; - // 🔹 Här returnerar du store-objektet som tidigare return { deck: [], discard: [], @@ -275,8 +270,6 @@ export const useGame = create()((set, get) => { phase: "PLACED_WRONG", }); get().stopTimer(); - // Don't automatically call nextTeam for wrong answers - // Let the user click "Next Team" manually to see the feedback } }, @@ -293,7 +286,6 @@ export const useGame = create()((set, get) => { get().stopTimer(); - // extra explicit reset (syns direkt i UI även om batched) const full = get().settings.turnSeconds; set((state) => ({ timer: { ...state.timer, secondsLeft: full } })); @@ -310,8 +302,6 @@ export const useGame = create()((set, get) => { lastPlacementCorrect: null, }); - // Only automatically switch teams if the last placement was correct - // If it was wrong, wait for user to click "Next Team" if (s.lastPlacementCorrect !== false) { get().nextTeam(); } @@ -323,7 +313,6 @@ export const useGame = create()((set, get) => { const next = (currentTeamIdx + 1) % s.teams.length; const nextTeam = s.teams[next]; - // Commit the current team's timeline before switching const committed = s.turnTimeline; set({ teams: s.teams.map((t, i) => @@ -374,7 +363,6 @@ export const useGame = create()((set, get) => { timeUp: () => { const s = get(); - // Har spelaren lagt ett kort i en slot (PLACED_PENDING)? if (s.pendingIndex != null && s.currentCard) { const ok = isPlacementCorrect( s.turnTimeline, @@ -383,14 +371,12 @@ export const useGame = create()((set, get) => { ); if (ok) { - // ✅ Rätt: lägg in kortet i turnTimeline och låt spelaren välja const staged = insertAt( s.turnTimeline, s.currentCard, s.pendingIndex ); if (staged.length >= WIN_TARGET) { - // Commit + vinnare set({ currentCard: undefined, pendingIndex: null, @@ -408,11 +394,10 @@ export const useGame = create()((set, get) => { lastPlacementCorrect: true, lastTurnFeedback: { timeUp: true, correct: true }, }); - get().stopTimer(); // stoppa & nollställ klockan - set({ phase: "CHOICE_AFTER_CORRECT" }); // stanna i valet (inte lockIn) + get().stopTimer(); + set({ phase: "CHOICE_AFTER_CORRECT" }); return; } else { - // ❌ Fel: återställ till baseline och avsluta turen set({ turnTimeline: s.roundBaselineTimeline.slice(), currentCard: undefined, @@ -421,20 +406,15 @@ export const useGame = create()((set, get) => { lastTurnFeedback: { timeUp: true, correct: false }, }); get().stopTimer(); - // Don't automatically call lockIn for wrong answers - // Let the user click "Next Team" manually return; } } - // ⏱️ Tiden slut utan att något lades (ingen pending) set({ lastPlacementCorrect: null, lastTurnFeedback: { timeUp: true, correct: null }, }); get().stopTimer(); - // Don't automatically call lockIn when no answer was placed - // Let the user click "Next Team" manually return; }, @@ -479,7 +459,7 @@ export const useGame = create()((set, get) => { ...get().timer, timerId: null, turnDeadline: null, - secondsLeft: full, // reset till max + secondsLeft: full, }, }); }, diff --git a/frontend/src/types/admin.ts b/frontend/src/types/admin.ts index e834a6c661..8daef925c6 100644 --- a/frontend/src/types/admin.ts +++ b/frontend/src/types/admin.ts @@ -7,6 +7,5 @@ export interface Admin { lastLogin?: string; } -// Re-export the types from game.ts export type Category = GameCategory; export type Item = GameItem; diff --git a/frontend/src/types/game.ts b/frontend/src/types/game.ts index 6afe924c4e..fb24d6875d 100644 --- a/frontend/src/types/game.ts +++ b/frontend/src/types/game.ts @@ -1,20 +1,20 @@ export type GameItem = { - _id?: string; // mongodb ID - id: string; // stable ID, ex. "animal-1" / "music-1" - name: string; // ex. "Blue Whale" / "Elvis Presley" - label?: string; // ex. "Weight 150000 kg" / "Jailhouse Rock" - value: number; // ex. 150000 / 1958 - categoryId: string; // "animals.weight" / "music.releaseYear" + _id?: string; + id: string; + name: string; + label?: string; + value: number; + categoryId: string; source?: { name: string; url?: string }; meta?: Record; }; export type GameCategory = { - _id?: string; // mongodb ID + _id?: string; id: string; - name: string; // "Animals", "Celebrities", etc. + name: string; description?: string; - question: string; // "Which animal weighs the most?" + question: string; unit: string; unitVisible?: boolean; sort?: "asc" | "desc"; diff --git a/frontend/src/ui/index.ts b/frontend/src/ui/index.ts index 37da687dfd..9cf4dccb76 100644 --- a/frontend/src/ui/index.ts +++ b/frontend/src/ui/index.ts @@ -4,4 +4,5 @@ export { Heading } from './Heading'; export { DotPattern } from './DotPattern'; export { ErrorMessage } from './ErrorMessage'; export { Input } from './Input'; -export { Label } from './Label'; \ No newline at end of file +export { Label } from './Label'; +export {Spinner} from './Spinner'; \ No newline at end of file diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index b4c9c01fbf..e79cad931b 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -2,7 +2,7 @@ import { defineConfig } from "vite"; import react from "@vitejs/plugin-react"; import tailwindcss from "@tailwindcss/vite"; -// https://vitejs.dev/config/ + export default defineConfig({ plugins: [react(), tailwindcss()], server: { From 10bb70a6b1e0c7bb53007d9b122ca8ae8be24331 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Fri, 29 Aug 2025 14:46:17 +0200 Subject: [PATCH 113/127] cleaning up --- frontend/eslint.config.js | 13 ------------- frontend/src/config/environment.ts | 4 ---- frontend/src/pages/AdminPage.tsx | 8 -------- 3 files changed, 25 deletions(-) diff --git a/frontend/eslint.config.js b/frontend/eslint.config.js index 153a7905fc..f648297c04 100644 --- a/frontend/eslint.config.js +++ b/frontend/eslint.config.js @@ -1,8 +1,3 @@ -// ESLint flat config for React 18 + TS 5.9 + Vite -// Needs: eslint ^8.57, @eslint/js ^8, typescript-eslint ^8, -// eslint-plugin-react ^7, eslint-plugin-react-hooks ^4, -// eslint-plugin-unused-imports ^3, globals ^15 - import js from "@eslint/js"; import globals from "globals"; import tseslint from "typescript-eslint"; @@ -14,9 +9,7 @@ export default [ { ignores: ["dist/**", "node_modules/**", "public/**", "coverage/**"] }, js.configs.recommended, - // TypeScript (no type-aware, snabb/stabil) ...tseslint.configs.recommended, - // React react.configs.flat.recommended, { @@ -38,18 +31,14 @@ export default [ react: { version: "detect" }, }, rules: { - // Hooks "react-hooks/rules-of-hooks": "error", "react-hooks/exhaustive-deps": "warn", - // Ny JSX-transform: kräver inte React i scope "react/react-in-jsx-scope": "off", "react/jsx-uses-react": "off", - // Snällare textregler – du har UI-copy med apostrofer "react/no-unescaped-entities": "off", - // Rensa oanvända imports/variabler "unused-imports/no-unused-imports": "error", "unused-imports/no-unused-vars": [ "warn", @@ -61,14 +50,12 @@ export default [ }, ], - // TS hygien – börja mjukt (du har några any just nu) "@typescript-eslint/no-explicit-any": "warn", "@typescript-eslint/no-unused-vars": [ "warn", { argsIgnorePattern: "^_" }, ], - // Övrigt "no-console": ["warn", { allow: ["warn", "error"] }], "no-debugger": "warn", "react/prop-types": "off", diff --git a/frontend/src/config/environment.ts b/frontend/src/config/environment.ts index ca27da60e0..dc755bf2a6 100644 --- a/frontend/src/config/environment.ts +++ b/frontend/src/config/environment.ts @@ -1,12 +1,8 @@ -// Environment configuration export const config = { - // Backend API URL - Use production for OAuth, local for development backendUrl: import.meta.env.VITE_BACKEND_URL || "https://project-final-pfy9.onrender.com", - // Frontend URL frontendUrl: import.meta.env.VITE_FRONTEND_URL || "http://127.0.0.1:5173", - // App name appName: "Banganza", }; diff --git a/frontend/src/pages/AdminPage.tsx b/frontend/src/pages/AdminPage.tsx index 0a11f817bd..be3b338797 100644 --- a/frontend/src/pages/AdminPage.tsx +++ b/frontend/src/pages/AdminPage.tsx @@ -30,13 +30,11 @@ const AdminPage: React.FC = () => { const [showCreateForm, setShowCreateForm] = useState(false); const [selectedCategoryFilter, setSelectedCategoryFilter] = useState('all'); - // Sort and group items by category const sortedAndGroupedItems = useMemo(() => { const filteredItems = selectedCategoryFilter === 'all' ? items : items.filter(item => item.categoryId === selectedCategoryFilter); - // Group by category const grouped = filteredItems.reduce((acc, item) => { const categoryId = item.categoryId; if (!acc[categoryId]) { @@ -46,7 +44,6 @@ const AdminPage: React.FC = () => { return acc; }, {} as Record); - // Sort items within each category alphabetically Object.keys(grouped).forEach(categoryId => { grouped[categoryId].sort((a, b) => a.name.localeCompare(b.name)); }); @@ -74,7 +71,6 @@ const AdminPage: React.FC = () => { return (
    - {/* Fixed Logout Button */}
    - {/* Content */} {activeTab === 'categories' ? ( Date: Fri, 29 Aug 2025 14:57:58 +0200 Subject: [PATCH 114/127] align eslint deps (ts-eslint v7) + route prune via frontend --- .../assets/cygnito-mono-regular-CF-bI0VJ.otf | Bin 0 -> 66704 bytes frontend/dist/assets/index-BcL_AcIl.css | 1 + frontend/dist/assets/index-Bw2yZ5N9.css | 1 - frontend/dist/assets/index-CSpEcqvL.js | 58 ----------------- frontend/dist/assets/index-DiSMbBlE.js | 60 ++++++++++++++++++ frontend/dist/index.html | 10 ++- frontend/package.json | 2 +- package.json | 2 +- 8 files changed, 71 insertions(+), 63 deletions(-) create mode 100644 frontend/dist/assets/cygnito-mono-regular-CF-bI0VJ.otf create mode 100644 frontend/dist/assets/index-BcL_AcIl.css delete mode 100644 frontend/dist/assets/index-Bw2yZ5N9.css delete mode 100644 frontend/dist/assets/index-CSpEcqvL.js create mode 100644 frontend/dist/assets/index-DiSMbBlE.js diff --git a/frontend/dist/assets/cygnito-mono-regular-CF-bI0VJ.otf b/frontend/dist/assets/cygnito-mono-regular-CF-bI0VJ.otf new file mode 100644 index 0000000000000000000000000000000000000000..0956c58e28ddb3705cdf645bf9a5dc8293ceb9d9 GIT binary patch literal 66704 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 QrN4K&DT;?FNu3G*2fd!p$^ZZW literal 0 HcmV?d00001 diff --git a/frontend/dist/assets/index-BcL_AcIl.css b/frontend/dist/assets/index-BcL_AcIl.css new file mode 100644 index 0000000000..2394a5424e --- /dev/null +++ b/frontend/dist/assets/index-BcL_AcIl.css @@ -0,0 +1 @@ +/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-800:oklch(47.3% .137 46.201);--color-green-500:oklch(72.3% .219 149.579);--color-blue-50:oklch(97% .014 254.604);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-800:oklch(42.4% .199 265.638);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-xl:36rem;--container-2xl:42rem;--container-5xl:64rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--text-8xl:6rem;--text-8xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--animate-bounce:bounce 1s infinite;--blur-sm:8px;--blur-xl:24px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--font-family-sans:"Zen Kaku Gothic Antique",system-ui,sans-serif;--font-family-mono:"Cygnito Mono",ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--color-base-100:#fefcfa;--color-base-200:#fdf8f3;--color-base-300:#fbf4ec;--color-base-400:#f9ecdf;--color-accent-100:#934d56;--color-accent-200:#86464e;--color-accent-300:#783f46;--color-accent-400:#6b383e;--color-accent-900:#281517;--color-accent-950:#1b0e0f;--color-primary:#5d3136;--color-primary-hover:#4a272b;--color-primary-focus:#6b3a40;--color-background:#f9ecdf;--color-surface:#fefcfa;--color-card:#fdf8f3;--color-muted:#f0dbc5;--color-muted-foreground:#946971;--color-foreground:#5d3136;--color-border:#ebd2b8;--color-border-muted:#f5e4d2;--shadow-soft:0 2px 8px 0 #5d313614;--shadow-medium:0 4px 16px 0 #5d31361f;--spacing-30:7.5rem}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip:auto;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-1{top:calc(var(--spacing)*1)}.top-1\/3{top:33.3333%}.top-2{top:calc(var(--spacing)*2)}.top-3{top:calc(var(--spacing)*3)}.top-4{top:calc(var(--spacing)*4)}.-right-16{right:calc(var(--spacing)*-16)}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.right-2{right:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-1{bottom:calc(var(--spacing)*1)}.bottom-1\/4{bottom:25%}.bottom-2{bottom:calc(var(--spacing)*2)}.bottom-3{bottom:calc(var(--spacing)*3)}.bottom-4{bottom:calc(var(--spacing)*4)}.-left-20{left:calc(var(--spacing)*-20)}.left-0{left:calc(var(--spacing)*0)}.left-1{left:calc(var(--spacing)*1)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing)*2)}.left-3{left:calc(var(--spacing)*3)}.left-4{left:calc(var(--spacing)*4)}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-\[60\]{z-index:60}.z-\[70\]{z-index:70}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-auto{margin-inline:auto}.-mt-10{margin-top:calc(var(--spacing)*-10)}.-mt-25{margin-top:calc(var(--spacing)*-25)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-16{margin-top:calc(var(--spacing)*16)}.mb-0\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.mb-16{margin-bottom:calc(var(--spacing)*16)}.ml-1{margin-left:calc(var(--spacing)*1)}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.h-0\.5{height:calc(var(--spacing)*.5)}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-12{height:calc(var(--spacing)*12)}.h-14{height:calc(var(--spacing)*14)}.h-16{height:calc(var(--spacing)*16)}.h-72{height:calc(var(--spacing)*72)}.h-80{height:calc(var(--spacing)*80)}.h-\[96px\]{height:96px}.h-\[127px\]{height:127px}.h-\[140px\]{height:140px}.h-\[169px\]{height:169px}.h-\[180px\]{height:180px}.h-\[217px\]{height:217px}.h-\[387px\]{height:387px}.h-auto{height:auto}.h-full{height:100%}.min-h-\[90vh\]{min-height:90vh}.min-h-\[140px\]{min-height:140px}.min-h-screen{min-height:100vh}.w-0\.5{width:calc(var(--spacing)*.5)}.w-1{width:calc(var(--spacing)*1)}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-2{width:calc(var(--spacing)*2)}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-14{width:calc(var(--spacing)*14)}.w-16{width:calc(var(--spacing)*16)}.w-24{width:calc(var(--spacing)*24)}.w-60{width:calc(var(--spacing)*60)}.w-72{width:calc(var(--spacing)*72)}.w-80{width:calc(var(--spacing)*80)}.w-\[90px\]{width:90px}.w-\[100px\]{width:100px}.w-\[102px\]{width:102px}.w-\[120px\]{width:120px}.w-\[136px\]{width:136px}.w-\[164px\]{width:164px}.w-\[290px\]{width:290px}.w-\[min\(26rem\,90vw\)\]{width:min(26rem,90vw)}.w-\[min\(95vw\,1800px\)\]{width:min(95vw,1800px)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-\[100px\]{min-width:100px}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.origin-bottom{transform-origin:bottom}.origin-top{transform-origin:top}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-1px\]{--tw-translate-y:-1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-none{translate:none}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-3d{scale:var(--tw-scale-x)var(--tw-scale-y)var(--tw-scale-z)}.scale-\[0\.8\]{scale:.8}.-rotate-45{rotate:-45deg}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.rotate-\[-45deg\]{rotate:-45deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-\[typewriter-smooth_1\.5s_ease-out\]{animation:1.5s ease-out typewriter-smooth}.animate-bounce{animation:var(--animate-bounce)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,)var(--tw-pan-y,)var(--tw-pinch-zoom,)}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0{gap:calc(var(--spacing)*0)}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-5{gap:calc(var(--spacing)*5)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*1)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px*var(--tw-divide-x-reverse));border-inline-end-width:calc(1px*calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}.justify-self-center{justify-self:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-visible{overflow-y:visible}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-3xl{border-top-left-radius:var(--radius-3xl);border-top-right-radius:var(--radius-3xl)}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-\[3px\]{border-style:var(--tw-border-style);border-width:3px}.border-\[4px\]{border-style:var(--tw-border-style);border-width:4px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-\[\#2a0d0d\]{border-color:#2a0d0d}.border-\[\#e1c09e\]{border-color:#e1c09e}.border-\[\#f9ecdf\]{border-color:#f9ecdf}.border-\[var\(--color-muted-foreground\)\]{border-color:var(--color-muted-foreground)}.border-accent-400{border-color:var(--color-accent-400)}.border-amber-200{border-color:var(--color-amber-200)}.border-base-100{border-color:var(--color-base-100)}.border-blue-200{border-color:var(--color-blue-200)}.border-border{border-color:var(--color-border)}.border-border\/60{border-color:#ebd2b899}@supports (color:color-mix(in lab,red,red)){.border-border\/60{border-color:color-mix(in oklab,var(--color-border)60%,transparent)}}.border-current{border-color:currentColor}.border-primary{border-color:var(--color-primary)}.border-primary\/20{border-color:#5d313633}@supports (color:color-mix(in lab,red,red)){.border-primary\/20{border-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.border-primary\/30{border-color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.border-primary\/30{border-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.border-red-200{border-color:var(--color-red-200)}.border-red-400{border-color:var(--color-red-400)}.border-t-\[var\(--color-foreground\)\]{border-top-color:var(--color-foreground)}.bg-\[\#2a0d0d\]{background-color:#2a0d0d}.bg-\[\#f9ecdf\]{background-color:#f9ecdf}.bg-\[\#fdf8f3\]{background-color:#fdf8f3}.bg-accent-300{background-color:var(--color-accent-300)}.bg-accent-900\/80{background-color:#281517cc}@supports (color:color-mix(in lab,red,red)){.bg-accent-900\/80{background-color:color-mix(in oklab,var(--color-accent-900)80%,transparent)}}.bg-amber-50{background-color:var(--color-amber-50)}.bg-background{background-color:var(--color-background)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-card{background-color:var(--color-card)}.bg-current{background-color:currentColor}.bg-green-500{background-color:var(--color-green-500)}.bg-muted{background-color:var(--color-muted)}.bg-primary{background-color:var(--color-primary)}.bg-primary\/10{background-color:#5d31361a}@supports (color:color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.bg-primary\/20{background-color:#5d313633}@supports (color:color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.bg-primary\/25{background-color:#5d313640}@supports (color:color-mix(in lab,red,red)){.bg-primary\/25{background-color:color-mix(in oklab,var(--color-primary)25%,transparent)}}.bg-primary\/30{background-color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.bg-primary\/30{background-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.bg-primary\/40{background-color:#5d313666}@supports (color:color-mix(in lab,red,red)){.bg-primary\/40{background-color:color-mix(in oklab,var(--color-primary)40%,transparent)}}.bg-primary\/50{background-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.bg-primary\/50{background-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.bg-primary\/60{background-color:#5d313699}@supports (color:color-mix(in lab,red,red)){.bg-primary\/60{background-color:color-mix(in oklab,var(--color-primary)60%,transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-500{background-color:var(--color-red-500)}.bg-surface{background-color:var(--color-surface)}.bg-white\/5{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.bg-white\/5{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-\[linear-gradient\(45deg\,transparent_25\%\,rgba\(93\,49\,54\,0\.1\)_25\%\,rgba\(93\,49\,54\,0\.1\)_50\%\,transparent_50\%\,transparent_75\%\,rgba\(93\,49\,54\,0\.1\)_75\%\)\]{background-image:linear-gradient(45deg,#0000 25%,#5d31361a 25%,#5d31361a 50%,#0000 50%,#0000 75%,#5d31361a 75%)}.from-base-100{--tw-gradient-from:var(--color-base-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary{--tw-gradient-from:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-base-200{--tw-gradient-via:var(--color-base-200);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-primary\/90{--tw-gradient-via:#5d3136e6}@supports (color:color-mix(in lab,red,red)){.via-primary\/90{--tw-gradient-via:color-mix(in oklab,var(--color-primary)90%,transparent)}}.via-primary\/90{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-base-300{--tw-gradient-to:var(--color-base-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-primary{--tw-gradient-to:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.bg-\[length\:8px_8px\]{background-size:8px 8px}.bg-repeat{background-repeat:repeat}.mask-no-clip{-webkit-mask-clip:no-clip;mask-clip:no-clip}.mask-repeat{-webkit-mask-repeat:repeat;mask-repeat:repeat}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-16{padding:calc(var(--spacing)*16)}.px-0{padding-inline:calc(var(--spacing)*0)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-8{padding-block:calc(var(--spacing)*8)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-1\.5{padding-top:calc(var(--spacing)*1.5)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-6{padding-top:calc(var(--spacing)*6)}.pt-8{padding-top:calc(var(--spacing)*8)}.pt-10{padding-top:calc(var(--spacing)*10)}.pt-12{padding-top:calc(var(--spacing)*12)}.pb-0\.5{padding-bottom:calc(var(--spacing)*.5)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-1\.5{padding-bottom:calc(var(--spacing)*1.5)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.pb-8{padding-bottom:calc(var(--spacing)*8)}.pb-16{padding-bottom:calc(var(--spacing)*16)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.\[font-family\:var\(--font-family-mono\)\]{font-family:var(--font-family-mono)}.\[font-family\:var\(--font-family-sans\)\]{font-family:var(--font-family-sans)}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[clamp\(0\.9rem\,2\.5vw\,1\.1rem\)\]{font-size:clamp(.9rem,2.5vw,1.1rem)}.leading-\[0\.95\]{--tw-leading:.95;line-height:.95}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-\[var\(--font-family-mono\)\]{--tw-font-weight:var(--font-family-mono);font-weight:var(--font-family-mono)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[\.25em\]{--tw-tracking:.25em;letter-spacing:.25em}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.\[text-wrap\:balance\]{text-wrap:balance}.text-wrap{text-wrap:wrap}.break-normal{overflow-wrap:normal;word-break:normal}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.text-\[\#2a0d0d\]{color:#2a0d0d}.text-\[\#f9ecdf\]{color:#f9ecdf}.text-\[\#fefcfa\]{color:#fefcfa}.text-\[var\(--color-base-100\)\]{color:var(--color-base-100)}.text-\[var\(--color-base-400\)\]{color:var(--color-base-400)}.text-\[var\(--color-muted-foreground\)\]{color:var(--color-muted-foreground)}.text-amber-500{color:var(--color-amber-500)}.text-amber-800{color:var(--color-amber-800)}.text-background{color:var(--color-background)}.text-base-100{color:var(--color-base-100)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-800{color:var(--color-blue-800)}.text-foreground{color:var(--color-foreground)}.text-foreground\/90{color:#5d3136e6}@supports (color:color-mix(in lab,red,red)){.text-foreground\/90{color:color-mix(in oklab,var(--color-foreground)90%,transparent)}}.text-muted-foreground{color:var(--color-muted-foreground)}.text-primary{color:var(--color-primary)}.text-primary\/30{color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.text-primary\/30{color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-800{color:var(--color-red-800)}.text-white{color:var(--color-white)}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.opacity-0{opacity:0}.opacity-5{opacity:.05}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\[0_-16px_40px_rgba\(0\,0\,0\,0\.35\)\]{--tw-shadow:0 -16px 40px var(--tw-shadow-color,#00000059);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-medium{--tw-shadow:0 4px 16px 0 var(--tw-shadow-color,#5d31361f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-soft{--tw-shadow:0 2px 8px 0 var(--tw-shadow-color,#5d313614);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-strong{--tw-shadow:0 8px 32px 0 var(--tw-shadow-color,#5d313629);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.outline-primary\/50{outline-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.outline-primary\/50{outline-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-xl{--tw-blur:blur(var(--blur-xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a))drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a)drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-invert{--tw-backdrop-invert:invert(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition\!{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-250{--tw-duration:.25s;transition-duration:.25s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-700{--tw-duration:.7s;transition-duration:.7s}.select-none{-webkit-user-select:none;user-select:none}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.group-hover\:scale-\[1\]:is(:where(.group):hover *){scale:1}}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}@media (hover:hover){.hover\:-translate-y-1:hover{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:border-primary\/30:hover{border-color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/30:hover{border-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.hover\:border-primary\/50:hover{border-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.hover\:bg-\[\#1a0a0a\]:hover{background-color:#1a0a0a}.hover\:bg-\[\#f0dbc5\]:hover{background-color:#f0dbc5}.hover\:bg-accent-200:hover{background-color:var(--color-accent-200)}.hover\:bg-black\/10:hover{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/10:hover{background-color:color-mix(in oklab,var(--color-black)10%,transparent)}}.hover\:bg-card:hover{background-color:var(--color-card)}.hover\:bg-card\/80:hover{background-color:#fdf8f3cc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-card\/80:hover{background-color:color-mix(in oklab,var(--color-card)80%,transparent)}}.hover\:bg-muted:hover{background-color:var(--color-muted)}.hover\:bg-primary:hover{background-color:var(--color-primary)}.hover\:bg-primary-hover:hover{background-color:var(--color-primary-hover)}.hover\:text-background:hover{color:var(--color-background)}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:text-white:hover{color:var(--color-white)}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-medium:hover{--tw-shadow:0 4px 16px 0 var(--tw-shadow-color,#5d31361f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-strong:hover{--tw-shadow:0 8px 32px 0 var(--tw-shadow-color,#5d313629);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.focus\:border-primary:focus{border-color:var(--color-primary)}.focus\:border-red-500:focus{border-color:var(--color-red-500)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-4:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-primary\/40:focus{--tw-ring-color:#5d313666}@supports (color:color-mix(in lab,red,red)){.focus\:ring-primary\/40:focus{--tw-ring-color:color-mix(in oklab,var(--color-primary)40%,transparent)}}.focus\:ring-primary\/50:focus{--tw-ring-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.focus\:ring-primary\/50:focus{--tw-ring-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.focus\:ring-red-500\/50:focus{--tw-ring-color:#fb2c3680}@supports (color:color-mix(in lab,red,red)){.focus\:ring-red-500\/50:focus{--tw-ring-color:color-mix(in oklab,var(--color-red-500)50%,transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-primary-focus:focus-visible{--tw-ring-color:var(--color-primary-focus)}.focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-offset-4:focus-visible{outline-offset:4px}.focus-visible\:outline-primary:focus-visible{outline-color:var(--color-primary)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-muted:disabled{background-color:var(--color-muted)}.disabled\:opacity-50:disabled{opacity:.5}@media (min-width:40rem){.sm\:top-4{top:calc(var(--spacing)*4)}.sm\:right-4{right:calc(var(--spacing)*4)}.sm\:right-6{right:calc(var(--spacing)*6)}.sm\:bottom-4{bottom:calc(var(--spacing)*4)}.sm\:left-6{left:calc(var(--spacing)*6)}.sm\:mt-4{margin-top:calc(var(--spacing)*4)}.sm\:block{display:block}.sm\:inline-block{display:inline-block}.sm\:h-64{height:calc(var(--spacing)*64)}.sm\:h-\[120px\]{height:120px}.sm\:h-\[217px\]{height:217px}.sm\:w-1{width:calc(var(--spacing)*1)}.sm\:w-16{width:calc(var(--spacing)*16)}.sm\:w-48{width:calc(var(--spacing)*48)}.sm\:w-56{width:calc(var(--spacing)*56)}.sm\:w-\[164px\]{width:164px}.sm\:w-auto{width:auto}.sm\:scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:gap-0\.5{gap:calc(var(--spacing)*.5)}.sm\:gap-2{gap:calc(var(--spacing)*2)}:where(.sm\:space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}.sm\:justify-self-stretch{justify-self:stretch}.sm\:border{border-style:var(--tw-border-style);border-width:1px}.sm\:p-3{padding:calc(var(--spacing)*3)}.sm\:px-0{padding-inline:calc(var(--spacing)*0)}.sm\:px-3{padding-inline:calc(var(--spacing)*3)}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:px-8{padding-inline:calc(var(--spacing)*8)}.sm\:py-1{padding-block:calc(var(--spacing)*1)}.sm\:py-10{padding-block:calc(var(--spacing)*10)}.sm\:pt-2{padding-top:calc(var(--spacing)*2)}.sm\:pt-6{padding-top:calc(var(--spacing)*6)}.sm\:pt-8{padding-top:calc(var(--spacing)*8)}.sm\:pt-12{padding-top:calc(var(--spacing)*12)}.sm\:pt-16{padding-top:calc(var(--spacing)*16)}.sm\:pb-2{padding-bottom:calc(var(--spacing)*2)}.sm\:pb-6{padding-bottom:calc(var(--spacing)*6)}.sm\:pb-8{padding-bottom:calc(var(--spacing)*8)}.sm\:pb-12{padding-bottom:calc(var(--spacing)*12)}.sm\:text-center{text-align:center}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media (min-width:48rem){.md\:-mt-30{margin-top:calc(var(--spacing-30)*-1)}.md\:w-56{width:calc(var(--spacing)*56)}.md\:max-w-md{max-width:var(--container-md)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:gap-5{gap:calc(var(--spacing)*5)}:where(.md\:space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.md\:space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.md\:pt-12{padding-top:calc(var(--spacing)*12)}.md\:pb-24{padding-bottom:calc(var(--spacing)*24)}.md\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media (min-width:64rem){.lg\:mt-2{margin-top:calc(var(--spacing)*2)}.lg\:block{display:block}.lg\:h-3{height:calc(var(--spacing)*3)}.lg\:h-6{height:calc(var(--spacing)*6)}.lg\:h-\[217px\]{height:217px}.lg\:w-6{width:calc(var(--spacing)*6)}.lg\:w-32{width:calc(var(--spacing)*32)}.lg\:w-48{width:calc(var(--spacing)*48)}.lg\:w-\[164px\]{width:164px}.lg\:max-w-xl{max-width:var(--container-xl)}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:gap-1{gap:calc(var(--spacing)*1)}.lg\:gap-4{gap:calc(var(--spacing)*4)}:where(.lg\:space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}.lg\:px-2{padding-inline:calc(var(--spacing)*2)}.lg\:px-3{padding-inline:calc(var(--spacing)*3)}.lg\:pt-3{padding-top:calc(var(--spacing)*3)}.lg\:pt-6{padding-top:calc(var(--spacing)*6)}.lg\:pt-8{padding-top:calc(var(--spacing)*8)}.lg\:pb-2{padding-bottom:calc(var(--spacing)*2)}.lg\:pb-3{padding-bottom:calc(var(--spacing)*3)}.lg\:pb-8{padding-bottom:calc(var(--spacing)*8)}.lg\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.lg\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.lg\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.lg\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.lg\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.lg\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.lg\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}}@font-face{font-family:Cygnito Mono;src:url(/assets/cygnito-mono-regular-CF-bI0VJ.otf)format("opentype");font-weight:400;font-style:normal}html{scroll-behavior:smooth}.mono-spinner{filter:contrast(110%)saturate(80%);width:3.25rem;height:3.25rem;position:relative}.mono-spinner:before{content:"";border:1px solid var(--color-border);box-shadow:0 0 0 1px var(--color-border-muted) inset,var(--shadow-soft);border-radius:.5rem;position:absolute;top:0;right:0;bottom:0;left:0}.mono-spinner .disc{background:radial-gradient(circle at center,var(--color-surface)60%,transparent 61%),conic-gradient(from 0deg,var(--color-foreground)0 120deg,transparent 120deg 360deg);border-radius:9999px;animation:1.1s linear infinite spin;position:absolute;top:6px;right:6px;bottom:6px;left:6px}.mono-spinner .scan{content:"";mix-blend-mode:multiply;pointer-events:none;background:repeating-linear-gradient(0deg,#28151714,#28151714 2px,#0000 2px,#0000 4px);border-radius:.5rem;animation:1.8s ease-in-out infinite crt-flicker;position:absolute;top:0;right:0;bottom:0;left:0}.border-\[\#f9ecdf\]{border-color:#e1c09e}.report-card{aspect-ratio:16/7;background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-soft);border-radius:1rem;transition:transform .2s,box-shadow .2s,border-color .2s,background-color .2s;display:flex;position:relative;overflow:hidden}.report-card:before{content:"";border-radius:inherit;box-shadow:0 0 0 1px var(--color-border-muted) inset;pointer-events:none;position:absolute;top:0;right:0;bottom:0;left:0}.report-card:after{content:"";border-radius:inherit;opacity:.6;mix-blend-mode:multiply;pointer-events:none;background-image:radial-gradient(#2815170d 1px,#0000 1.2px);background-size:3px 3px;transition:opacity .2s;position:absolute;top:0;right:0;bottom:0;left:0}.report-card:hover,.report-card:focus-visible{box-shadow:var(--shadow-medium);border-color:var(--color-foreground);background-color:#f3ebea;transform:translateY(-2px)}@supports (color:color-mix(in lab,red,red)){.report-card:hover,.report-card:focus-visible{background-color:color-mix(in srgb,var(--color-accent-100)10%,var(--color-surface))}}.report-card--active{border-color:var(--color-primary);background-color:#ebe4e2}@supports (color:color-mix(in lab,red,red)){.report-card--active{background-color:color-mix(in srgb,var(--color-primary)12%,var(--color-surface))}}.report-card--active{box-shadow:var(--shadow-medium)}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width:640px){html{font-size:14px}}@keyframes logo-in{0%{opacity:0;filter:blur(3px);transform:scale(.96)}60%{opacity:1;filter:blur();transform:scale(1.01)}to{opacity:1;transform:scale(1)}}@keyframes seed-sweep{0%{transform:translate(-20vw)rotate(-10deg)scale(.9)}50%{transform:translate(15vw)rotate(6deg)scale(1.08)}to{transform:translate(50vw)rotate(0)scale(1)}}@keyframes tagline-in{0%{opacity:0;letter-spacing:.14em;transform:translateY(.8rem)}to{opacity:1;letter-spacing:0;transform:translateY(0)}}@keyframes particle-float{0%{opacity:.65;transform:translate(0)translateY(0)rotate(0)}70%{opacity:.9}to{opacity:0;transform:translate(-120vw)translateY(-10vh)rotate(14deg)}}@keyframes letter-in{0%{opacity:0;filter:blur(2px);transform:translateY(1.6rem)scale(.98)}55%{opacity:1;filter:blur();transform:translateY(0)scale(1.02)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes crt-flicker{0%{opacity:1}50%{opacity:.92}to{opacity:1}}@keyframes typewriter{0%{white-space:nowrap;width:0;overflow:hidden}to{white-space:normal;width:100%;overflow:visible}}@keyframes typewriter-smooth{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0% 0 0)}}@keyframes pulsate{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}.animate-pulsate{animation:2s ease-in-out infinite pulsate}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}} diff --git a/frontend/dist/assets/index-Bw2yZ5N9.css b/frontend/dist/assets/index-Bw2yZ5N9.css deleted file mode 100644 index 8e9e61791c..0000000000 --- a/frontend/dist/assets/index-Bw2yZ5N9.css +++ /dev/null @@ -1 +0,0 @@ -/*! tailwindcss v4.1.12 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-pan-x:initial;--tw-pan-y:initial;--tw-pinch-zoom:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-divide-y-reverse:0;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-100:oklch(93.6% .032 17.717);--color-red-200:oklch(88.5% .062 18.334);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-500:oklch(76.9% .188 70.08);--color-amber-800:oklch(47.3% .137 46.201);--color-green-500:oklch(72.3% .219 149.579);--color-blue-50:oklch(97% .014 254.604);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-800:oklch(42.4% .199 265.638);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-sm:24rem;--container-md:28rem;--container-xl:36rem;--container-2xl:42rem;--container-5xl:64rem;--container-6xl:72rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--text-8xl:6rem;--text-8xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--animate-bounce:bounce 1s infinite;--blur-sm:8px;--blur-xl:24px;--blur-3xl:64px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-base-100:#fefcfa;--color-base-200:#fdf8f3;--color-base-300:#fbf4ec;--color-base-400:#f9ecdf;--color-accent-100:#934d56;--color-accent-200:#86464e;--color-accent-300:#783f46;--color-accent-400:#6b383e;--color-accent-900:#281517;--color-primary:#5d3136;--color-primary-hover:#4a272b;--color-primary-focus:#6b3a40;--color-background:#f9ecdf;--color-surface:#fefcfa;--color-card:#fdf8f3;--color-muted:#f0dbc5;--color-muted-foreground:#946971;--color-foreground:#5d3136;--color-border:#ebd2b8;--color-border-muted:#f5e4d2;--shadow-soft:0 2px 8px 0 #5d313614;--shadow-medium:0 4px 16px 0 #5d31361f}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.not-sr-only{clip:auto;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-1{top:calc(var(--spacing)*1)}.top-1\/3{top:33.3333%}.top-2{top:calc(var(--spacing)*2)}.top-3{top:calc(var(--spacing)*3)}.top-4{top:calc(var(--spacing)*4)}.-right-1{right:calc(var(--spacing)*-1)}.-right-16{right:calc(var(--spacing)*-16)}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.right-2{right:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.-bottom-1{bottom:calc(var(--spacing)*-1)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-1{bottom:calc(var(--spacing)*1)}.bottom-1\/4{bottom:25%}.bottom-2{bottom:calc(var(--spacing)*2)}.bottom-3{bottom:calc(var(--spacing)*3)}.bottom-4{bottom:calc(var(--spacing)*4)}.-left-20{left:calc(var(--spacing)*-20)}.left-0{left:calc(var(--spacing)*0)}.left-1{left:calc(var(--spacing)*1)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing)*2)}.left-3{left:calc(var(--spacing)*3)}.left-4{left:calc(var(--spacing)*4)}.isolate{isolation:isolate}.isolation-auto{isolation:auto}.z-10{z-index:10}.z-50{z-index:50}.z-\[60\]{z-index:60}.z-\[70\]{z-index:70}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.mx-4{margin-inline:calc(var(--spacing)*4)}.mx-auto{margin-inline:auto}.-mt-10{margin-top:calc(var(--spacing)*-10)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mt-16{margin-top:calc(var(--spacing)*16)}.mb-0\.5{margin-bottom:calc(var(--spacing)*.5)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.mb-16{margin-bottom:calc(var(--spacing)*16)}.ml-0\.5{margin-left:calc(var(--spacing)*.5)}.ml-1{margin-left:calc(var(--spacing)*1)}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.list-item{display:list-item}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-column{display:table-column}.table-column-group{display:table-column-group}.table-footer-group{display:table-footer-group}.table-header-group{display:table-header-group}.table-row{display:table-row}.table-row-group{display:table-row-group}.h-0{height:calc(var(--spacing)*0)}.h-0\.5{height:calc(var(--spacing)*.5)}.h-1{height:calc(var(--spacing)*1)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-11{height:calc(var(--spacing)*11)}.h-12{height:calc(var(--spacing)*12)}.h-14{height:calc(var(--spacing)*14)}.h-16{height:calc(var(--spacing)*16)}.h-72{height:calc(var(--spacing)*72)}.h-80{height:calc(var(--spacing)*80)}.h-\[96px\]{height:96px}.h-\[140px\]{height:140px}.h-\[169px\]{height:169px}.h-\[180px\]{height:180px}.h-\[217px\]{height:217px}.h-\[387px\]{height:387px}.h-auto{height:auto}.h-full{height:100%}.max-h-\[90vh\]{max-height:90vh}.min-h-\[140px\]{min-height:140px}.min-h-screen{min-height:100vh}.w-0{width:calc(var(--spacing)*0)}.w-0\.5{width:calc(var(--spacing)*.5)}.w-1{width:calc(var(--spacing)*1)}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-2{width:calc(var(--spacing)*2)}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-7{width:calc(var(--spacing)*7)}.w-8{width:calc(var(--spacing)*8)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-14{width:calc(var(--spacing)*14)}.w-16{width:calc(var(--spacing)*16)}.w-24{width:calc(var(--spacing)*24)}.w-60{width:calc(var(--spacing)*60)}.w-72{width:calc(var(--spacing)*72)}.w-80{width:calc(var(--spacing)*80)}.w-\[100px\]{width:100px}.w-\[102px\]{width:102px}.w-\[120px\]{width:120px}.w-\[136px\]{width:136px}.w-\[164px\]{width:164px}.w-\[290px\]{width:290px}.w-\[min\(26rem\,90vw\)\]{width:min(26rem,90vw)}.w-\[min\(95vw\,1800px\)\]{width:min(95vw,1800px)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xs{max-width:var(--container-xs)}.min-w-\[100px\]{min-width:100px}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.origin-bottom{transform-origin:bottom}.origin-top{transform-origin:top}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-1px\]{--tw-translate-y:-1px;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-none{translate:none}.scale-95{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-3d{scale:var(--tw-scale-x)var(--tw-scale-y)var(--tw-scale-z)}.scale-\[0\.8\]{scale:.8}.-rotate-45{rotate:-45deg}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.rotate-\[-45deg\]{rotate:-45deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-\[typewriter-smooth_1\.5s_ease-out\]{animation:1.5s ease-out typewriter-smooth}.animate-bounce{animation:var(--animate-bounce)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-pinch-zoom{--tw-pinch-zoom:pinch-zoom;touch-action:var(--tw-pan-x,)var(--tw-pan-y,)var(--tw-pinch-zoom,)}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0{gap:calc(var(--spacing)*0)}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-5{gap:calc(var(--spacing)*5)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-12>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*12)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*12)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-reverse>:not(:last-child)){--tw-space-y-reverse:1}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*1)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-reverse>:not(:last-child)){--tw-space-x-reverse:1}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px*var(--tw-divide-x-reverse));border-inline-end-width:calc(1px*calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-y-reverse>:not(:last-child)){--tw-divide-y-reverse:1}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-visible{overflow-y:visible}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-s{border-start-start-radius:.25rem;border-end-start-radius:.25rem}.rounded-ss{border-start-start-radius:.25rem}.rounded-e{border-start-end-radius:.25rem;border-end-end-radius:.25rem}.rounded-se{border-start-end-radius:.25rem}.rounded-ee{border-end-end-radius:.25rem}.rounded-es{border-end-start-radius:.25rem}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-\[3px\]{border-style:var(--tw-border-style);border-width:3px}.border-\[4px\]{border-style:var(--tw-border-style);border-width:4px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-\[4px\]{border-top-style:var(--tw-border-style);border-top-width:4px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-b-\[4px\]{border-bottom-style:var(--tw-border-style);border-bottom-width:4px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-l-\[6px\]{border-left-style:var(--tw-border-style);border-left-width:6px}.border-\[\#1DB954\]{border-color:#1db954}.border-\[\#2a0d0d\]{border-color:#2a0d0d}.border-\[\#f9ecdf\]{border-color:#f9ecdf}.border-\[var\(--color-muted-foreground\)\]{border-color:var(--color-muted-foreground)}.border-accent-400{border-color:var(--color-accent-400)}.border-amber-200{border-color:var(--color-amber-200)}.border-base-100{border-color:var(--color-base-100)}.border-base-100\/30{border-color:#fefcfa4d}@supports (color:color-mix(in lab,red,red)){.border-base-100\/30{border-color:color-mix(in oklab,var(--color-base-100)30%,transparent)}}.border-blue-200{border-color:var(--color-blue-200)}.border-border{border-color:var(--color-border)}.border-border-muted{border-color:var(--color-border-muted)}.border-border\/60{border-color:#ebd2b899}@supports (color:color-mix(in lab,red,red)){.border-border\/60{border-color:color-mix(in oklab,var(--color-border)60%,transparent)}}.border-current{border-color:currentColor}.border-primary{border-color:var(--color-primary)}.border-primary\/20{border-color:#5d313633}@supports (color:color-mix(in lab,red,red)){.border-primary\/20{border-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.border-primary\/30{border-color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.border-primary\/30{border-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.border-red-200{border-color:var(--color-red-200)}.border-red-400{border-color:var(--color-red-400)}.border-white\/30{border-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.border-white\/30{border-color:color-mix(in oklab,var(--color-white)30%,transparent)}}.border-t-\[var\(--color-foreground\)\]{border-top-color:var(--color-foreground)}.border-t-base-100{border-top-color:var(--color-base-100)}.border-t-transparent{border-top-color:#0000}.border-t-white{border-top-color:var(--color-white)}.border-b-transparent{border-bottom-color:#0000}.border-l-base-100{border-left-color:var(--color-base-100)}.bg-\[\#1DB954\]{background-color:#1db954}.bg-\[\#2a0d0d\]{background-color:#2a0d0d}.bg-\[\#f9ecdf\]{background-color:#f9ecdf}.bg-accent-300{background-color:var(--color-accent-300)}.bg-accent-900\/80{background-color:#281517cc}@supports (color:color-mix(in lab,red,red)){.bg-accent-900\/80{background-color:color-mix(in oklab,var(--color-accent-900)80%,transparent)}}.bg-amber-50{background-color:var(--color-amber-50)}.bg-background{background-color:var(--color-background)}.bg-base-100{background-color:var(--color-base-100)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-card{background-color:var(--color-card)}.bg-current{background-color:currentColor}.bg-green-500{background-color:var(--color-green-500)}.bg-muted{background-color:var(--color-muted)}.bg-muted-foreground{background-color:var(--color-muted-foreground)}.bg-muted\/30{background-color:#f0dbc54d}@supports (color:color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--color-muted)30%,transparent)}}.bg-primary{background-color:var(--color-primary)}.bg-primary\/10{background-color:#5d31361a}@supports (color:color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--color-primary)10%,transparent)}}.bg-primary\/20{background-color:#5d313633}@supports (color:color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.bg-primary\/25{background-color:#5d313640}@supports (color:color-mix(in lab,red,red)){.bg-primary\/25{background-color:color-mix(in oklab,var(--color-primary)25%,transparent)}}.bg-primary\/30{background-color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.bg-primary\/30{background-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.bg-primary\/40{background-color:#5d313666}@supports (color:color-mix(in lab,red,red)){.bg-primary\/40{background-color:color-mix(in oklab,var(--color-primary)40%,transparent)}}.bg-primary\/50{background-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.bg-primary\/50{background-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.bg-primary\/60{background-color:#5d313699}@supports (color:color-mix(in lab,red,red)){.bg-primary\/60{background-color:color-mix(in oklab,var(--color-primary)60%,transparent)}}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-surface{background-color:var(--color-surface)}.bg-white\/5{background-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.bg-white\/5{background-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-\[linear-gradient\(45deg\,transparent_25\%\,rgba\(93\,49\,54\,0\.1\)_25\%\,rgba\(93\,49\,54\,0\.1\)_50\%\,transparent_50\%\,transparent_75\%\,rgba\(93\,49\,54\,0\.1\)_75\%\)\]{background-image:linear-gradient(45deg,#0000 25%,#5d31361a 25%,#5d31361a 50%,#0000 50%,#0000 75%,#5d31361a 75%)}.from-accent-200{--tw-gradient-from:var(--color-accent-200);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-base-100{--tw-gradient-from:var(--color-base-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary{--tw-gradient-from:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-base-200{--tw-gradient-via:var(--color-base-200);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-primary\/90{--tw-gradient-via:#5d3136e6}@supports (color:color-mix(in lab,red,red)){.via-primary\/90{--tw-gradient-via:color-mix(in oklab,var(--color-primary)90%,transparent)}}.via-primary\/90{--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-accent-400{--tw-gradient-to:var(--color-accent-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-base-300{--tw-gradient-to:var(--color-base-300);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-primary{--tw-gradient-to:var(--color-primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.bg-\[length\:8px_8px\]{background-size:8px 8px}.bg-repeat{background-repeat:repeat}.mask-no-clip{-webkit-mask-clip:no-clip;mask-clip:no-clip}.mask-repeat{-webkit-mask-repeat:repeat;mask-repeat:repeat}.object-cover{object-fit:cover}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-16{padding:calc(var(--spacing)*16)}.px-0{padding-inline:calc(var(--spacing)*0)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.px-8{padding-inline:calc(var(--spacing)*8)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-8{padding-block:calc(var(--spacing)*8)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-6{padding-top:calc(var(--spacing)*6)}.pt-8{padding-top:calc(var(--spacing)*8)}.pt-10{padding-top:calc(var(--spacing)*10)}.pt-12{padding-top:calc(var(--spacing)*12)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-3{padding-bottom:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.pb-8{padding-bottom:calc(var(--spacing)*8)}.pb-16{padding-bottom:calc(var(--spacing)*16)}.text-center{text-align:center}.text-left{text-align:left}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.text-8xl{font-size:var(--text-8xl);line-height:var(--tw-leading,var(--text-8xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[10px\]{font-size:10px}.text-\[clamp\(0\.9rem\,2\.5vw\,1\.1rem\)\]{font-size:clamp(.9rem,2.5vw,1.1rem)}.leading-\[0\.95\]{--tw-leading:.95;line-height:.95}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[\.25em\]{--tw-tracking:.25em;letter-spacing:.25em}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-wrap{text-wrap:wrap}.break-normal{overflow-wrap:normal;word-break:normal}.text-clip{text-overflow:clip}.text-ellipsis{text-overflow:ellipsis}.text-\[\#2a0d0d\]{color:#2a0d0d}.text-\[\#f9ecdf\]{color:#f9ecdf}.text-\[\#fefcfa\]{color:#fefcfa}.text-\[var\(--color-base-100\)\]{color:var(--color-base-100)}.text-\[var\(--color-base-400\)\]{color:var(--color-base-400)}.text-\[var\(--color-muted-foreground\)\]{color:var(--color-muted-foreground)}.text-amber-500{color:var(--color-amber-500)}.text-amber-800{color:var(--color-amber-800)}.text-background{color:var(--color-background)}.text-base-100{color:var(--color-base-100)}.text-blue-500{color:var(--color-blue-500)}.text-blue-600{color:var(--color-blue-600)}.text-blue-800{color:var(--color-blue-800)}.text-foreground{color:var(--color-foreground)}.text-foreground\/90{color:#5d3136e6}@supports (color:color-mix(in lab,red,red)){.text-foreground\/90{color:color-mix(in oklab,var(--color-foreground)90%,transparent)}}.text-muted-foreground{color:var(--color-muted-foreground)}.text-primary{color:var(--color-primary)}.text-primary\/30{color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.text-primary\/30{color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-white{color:var(--color-white)}.text-white\/70{color:#ffffffb3}@supports (color:color-mix(in lab,red,red)){.text-white\/70{color:color-mix(in oklab,var(--color-white)70%,transparent)}}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.diagonal-fractions{--tw-numeric-fraction:diagonal-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.stacked-fractions{--tw-numeric-fraction:stacked-fractions;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.normal-nums{font-variant-numeric:normal}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.subpixel-antialiased{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}.opacity-0{opacity:0}.opacity-5{opacity:.05}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-medium{--tw-shadow:0 4px 16px 0 var(--tw-shadow-color,#5d31361f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-soft{--tw-shadow:0 2px 8px 0 var(--tw-shadow-color,#5d313614);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-strong{--tw-shadow:0 8px 32px 0 var(--tw-shadow-color,#5d313629);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.inset-ring{--tw-inset-ring-shadow:inset 0 0 0 1px var(--tw-inset-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.outline-primary\/50{outline-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.outline-primary\/50{outline-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.blur-xl{--tw-blur:blur(var(--blur-xl));filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a))drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a)drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-grayscale{--tw-backdrop-grayscale:grayscale(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-invert{--tw-backdrop-invert:invert(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-sepia{--tw-backdrop-sepia:sepia(100%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition\!{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events!important;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function))!important;transition-duration:var(--tw-duration,var(--default-transition-duration))!important}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-250{--tw-duration:.25s;transition-duration:.25s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-700{--tw-duration:.7s;transition-duration:.7s}.select-none{-webkit-user-select:none;user-select:none}:where(.divide-x-reverse>:not(:last-child)){--tw-divide-x-reverse:1}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.group-hover\:scale-\[1\]:is(:where(.group):hover *){scale:1}}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}@media (hover:hover){.hover\:-translate-y-1:hover{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:border-primary\/30:hover{border-color:#5d31364d}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/30:hover{border-color:color-mix(in oklab,var(--color-primary)30%,transparent)}}.hover\:border-primary\/50:hover{border-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.hover\:bg-\[\#1a0a0a\]:hover{background-color:#1a0a0a}.hover\:bg-\[\#1ed760\]:hover{background-color:#1ed760}.hover\:bg-\[\#f0dbc5\]:hover{background-color:#f0dbc5}.hover\:bg-accent-200:hover{background-color:var(--color-accent-200)}.hover\:bg-black\/10:hover{background-color:#0000001a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/10:hover{background-color:color-mix(in oklab,var(--color-black)10%,transparent)}}.hover\:bg-card:hover{background-color:var(--color-card)}.hover\:bg-card\/80:hover{background-color:#fdf8f3cc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-card\/80:hover{background-color:color-mix(in oklab,var(--color-card)80%,transparent)}}.hover\:bg-muted:hover{background-color:var(--color-muted)}.hover\:bg-primary:hover{background-color:var(--color-primary)}.hover\:bg-primary-hover:hover{background-color:var(--color-primary-hover)}.hover\:text-background:hover{color:var(--color-background)}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:text-white:hover{color:var(--color-white)}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-medium:hover{--tw-shadow:0 4px 16px 0 var(--tw-shadow-color,#5d31361f);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-strong:hover{--tw-shadow:0 8px 32px 0 var(--tw-shadow-color,#5d313629);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}}.focus\:border-primary:focus{border-color:var(--color-primary)}.focus\:border-red-500:focus{border-color:var(--color-red-500)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-4:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(4px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-primary\/40:focus{--tw-ring-color:#5d313666}@supports (color:color-mix(in lab,red,red)){.focus\:ring-primary\/40:focus{--tw-ring-color:color-mix(in oklab,var(--color-primary)40%,transparent)}}.focus\:ring-primary\/50:focus{--tw-ring-color:#5d313680}@supports (color:color-mix(in lab,red,red)){.focus\:ring-primary\/50:focus{--tw-ring-color:color-mix(in oklab,var(--color-primary)50%,transparent)}}.focus\:ring-red-500\/50:focus{--tw-ring-color:#fb2c3680}@supports (color:color-mix(in lab,red,red)){.focus\:ring-red-500\/50:focus{--tw-ring-color:color-mix(in oklab,var(--color-red-500)50%,transparent)}}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-primary-focus:focus-visible{--tw-ring-color:var(--color-primary-focus)}.focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-offset-4:focus-visible{outline-offset:4px}.focus-visible\:outline-primary:focus-visible{outline-color:var(--color-primary)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-muted:disabled{background-color:var(--color-muted)}.disabled\:opacity-50:disabled{opacity:.5}@media (min-width:40rem){.sm\:top-4{top:calc(var(--spacing)*4)}.sm\:right-4{right:calc(var(--spacing)*4)}.sm\:right-6{right:calc(var(--spacing)*6)}.sm\:bottom-4{bottom:calc(var(--spacing)*4)}.sm\:left-6{left:calc(var(--spacing)*6)}.sm\:mt-4{margin-top:calc(var(--spacing)*4)}.sm\:mt-6{margin-top:calc(var(--spacing)*6)}.sm\:block{display:block}.sm\:h-4{height:calc(var(--spacing)*4)}.sm\:h-5{height:calc(var(--spacing)*5)}.sm\:h-6{height:calc(var(--spacing)*6)}.sm\:h-8{height:calc(var(--spacing)*8)}.sm\:h-12{height:calc(var(--spacing)*12)}.sm\:h-64{height:calc(var(--spacing)*64)}.sm\:h-\[120px\]{height:120px}.sm\:h-\[217px\]{height:217px}.sm\:w-1{width:calc(var(--spacing)*1)}.sm\:w-4{width:calc(var(--spacing)*4)}.sm\:w-5{width:calc(var(--spacing)*5)}.sm\:w-6{width:calc(var(--spacing)*6)}.sm\:w-8{width:calc(var(--spacing)*8)}.sm\:w-12{width:calc(var(--spacing)*12)}.sm\:w-16{width:calc(var(--spacing)*16)}.sm\:w-48{width:calc(var(--spacing)*48)}.sm\:w-56{width:calc(var(--spacing)*56)}.sm\:w-\[164px\]{width:164px}.sm\:w-auto{width:auto}.sm\:max-w-none{max-width:none}.sm\:scale-105{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:gap-2{gap:calc(var(--spacing)*2)}.sm\:gap-3{gap:calc(var(--spacing)*3)}:where(.sm\:space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.sm\:space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}.sm\:p-3{padding:calc(var(--spacing)*3)}.sm\:p-4{padding:calc(var(--spacing)*4)}.sm\:px-0{padding-inline:calc(var(--spacing)*0)}.sm\:px-3{padding-inline:calc(var(--spacing)*3)}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:px-8{padding-inline:calc(var(--spacing)*8)}.sm\:py-1{padding-block:calc(var(--spacing)*1)}.sm\:py-10{padding-block:calc(var(--spacing)*10)}.sm\:pt-2{padding-top:calc(var(--spacing)*2)}.sm\:pt-8{padding-top:calc(var(--spacing)*8)}.sm\:pt-10{padding-top:calc(var(--spacing)*10)}.sm\:pt-12{padding-top:calc(var(--spacing)*12)}.sm\:pt-16{padding-top:calc(var(--spacing)*16)}.sm\:pb-6{padding-bottom:calc(var(--spacing)*6)}.sm\:pb-8{padding-bottom:calc(var(--spacing)*8)}.sm\:pb-12{padding-bottom:calc(var(--spacing)*12)}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.sm\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media (min-width:48rem){.md\:max-w-md{max-width:var(--container-md)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.md\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media (min-width:64rem){.lg\:max-w-xl{max-width:var(--container-xl)}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}}html{scroll-behavior:smooth}.mono-spinner{filter:contrast(110%)saturate(80%);width:3.25rem;height:3.25rem;position:relative}.mono-spinner:before{content:"";border:1px solid var(--color-border);box-shadow:0 0 0 1px var(--color-border-muted) inset,var(--shadow-soft);border-radius:.5rem;position:absolute;top:0;right:0;bottom:0;left:0}.mono-spinner .disc{background:radial-gradient(circle at center,var(--color-surface)60%,transparent 61%),conic-gradient(from 0deg,var(--color-foreground)0 120deg,transparent 120deg 360deg);border-radius:9999px;animation:1.1s linear infinite spin;position:absolute;top:6px;right:6px;bottom:6px;left:6px}.mono-spinner .scan{content:"";mix-blend-mode:multiply;pointer-events:none;background:repeating-linear-gradient(0deg,#28151714,#28151714 2px,#0000 2px,#0000 4px);border-radius:.5rem;animation:1.8s ease-in-out infinite crt-flicker;position:absolute;top:0;right:0;bottom:0;left:0}.report-card{aspect-ratio:16/7;background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-soft);border-radius:1rem;transition:transform .2s,box-shadow .2s,border-color .2s,background-color .2s;display:flex;position:relative;overflow:hidden}.report-card:before{content:"";border-radius:inherit;box-shadow:0 0 0 1px var(--color-border-muted) inset;pointer-events:none;position:absolute;top:0;right:0;bottom:0;left:0}.report-card:after{content:"";border-radius:inherit;opacity:.6;mix-blend-mode:multiply;pointer-events:none;background-image:radial-gradient(#2815170d 1px,#0000 1.2px);background-size:3px 3px;transition:opacity .2s;position:absolute;top:0;right:0;bottom:0;left:0}.report-card:hover,.report-card:focus-visible{box-shadow:var(--shadow-medium);border-color:var(--color-foreground);background-color:#f3ebea;transform:translateY(-2px)}@supports (color:color-mix(in lab,red,red)){.report-card:hover,.report-card:focus-visible{background-color:color-mix(in srgb,var(--color-accent-100)10%,var(--color-surface))}}.report-card--active{border-color:var(--color-primary);background-color:#ebe4e2}@supports (color:color-mix(in lab,red,red)){.report-card--active{background-color:color-mix(in srgb,var(--color-primary)12%,var(--color-surface))}}.report-card--active{box-shadow:var(--shadow-medium)}@media (prefers-reduced-motion:reduce){.report-card,.report-card:after{transition:none}}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width:640px){html{font-size:14px}}@keyframes logo-in{0%{opacity:0;filter:blur(3px);transform:scale(.96)}60%{opacity:1;filter:blur();transform:scale(1.01)}to{opacity:1;transform:scale(1)}}@keyframes seed-sweep{0%{transform:translate(-20vw)rotate(-10deg)scale(.9)}50%{transform:translate(15vw)rotate(6deg)scale(1.08)}to{transform:translate(50vw)rotate(0)scale(1)}}@keyframes tagline-in{0%{opacity:0;letter-spacing:.14em;transform:translateY(.8rem)}to{opacity:1;letter-spacing:0;transform:translateY(0)}}@keyframes particle-float{0%{opacity:.65;transform:translate(0)translateY(0)rotate(0)}70%{opacity:.9}to{opacity:0;transform:translate(-120vw)translateY(-10vh)rotate(14deg)}}@keyframes letter-in{0%{opacity:0;filter:blur(2px);transform:translateY(1.6rem)scale(.98)}55%{opacity:1;filter:blur();transform:translateY(0)scale(1.02)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes crt-flicker{0%{opacity:1}50%{opacity:.92}to{opacity:1}}@keyframes banana-float{0%{opacity:.7;transform:translate(0)translateY(0)rotate(0)}70%{opacity:.9}to{opacity:0;transform:translate(-120vw)translateY(-10vh)rotate(18deg)}}@keyframes banana-fly{0%{opacity:0;transform:translateY(-30vh)rotate(0)}10%{opacity:.8}80%{opacity:1}to{opacity:0;transform:translateY(120vh)rotate(20deg)}}@keyframes logo-bounce-in{0%{opacity:0;transform:scale(8)translateY(-50vh)}40%{opacity:1;transform:scale(1.8)translateY(0)}55%{transform:scale(1.65)}70%{transform:scale(1.85)}85%{transform:scale(1.75)}to{transform:scale(1.8)}}@keyframes typewriter{0%{white-space:nowrap;width:0;overflow:hidden}to{white-space:normal;width:100%;overflow:visible}}@keyframes typewriter-smooth{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0% 0 0)}}@keyframes pulsate{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}.animate-pulsate{animation:2s ease-in-out infinite pulsate}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-pan-x{syntax:"*";inherits:false}@property --tw-pan-y{syntax:"*";inherits:false}@property --tw-pinch-zoom{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}} diff --git a/frontend/dist/assets/index-CSpEcqvL.js b/frontend/dist/assets/index-CSpEcqvL.js deleted file mode 100644 index 019d4f610a..0000000000 --- a/frontend/dist/assets/index-CSpEcqvL.js +++ /dev/null @@ -1,58 +0,0 @@ -var ah=Object.defineProperty;var uh=(r,l,i)=>l in r?ah(r,l,{enumerable:!0,configurable:!0,writable:!0,value:i}):r[l]=i;var zd=(r,l,i)=>uh(r,typeof l!="symbol"?l+"":l,i);(function(){const l=document.createElement("link").relList;if(l&&l.supports&&l.supports("modulepreload"))return;for(const c of document.querySelectorAll('link[rel="modulepreload"]'))a(c);new MutationObserver(c=>{for(const d of c)if(d.type==="childList")for(const p of d.addedNodes)p.tagName==="LINK"&&p.rel==="modulepreload"&&a(p)}).observe(document,{childList:!0,subtree:!0});function i(c){const d={};return c.integrity&&(d.integrity=c.integrity),c.referrerPolicy&&(d.referrerPolicy=c.referrerPolicy),c.crossOrigin==="use-credentials"?d.credentials="include":c.crossOrigin==="anonymous"?d.credentials="omit":d.credentials="same-origin",d}function a(c){if(c.ep)return;c.ep=!0;const d=i(c);fetch(c.href,d)}})();function wf(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var ga={exports:{}},Oo={},va={exports:{}},ye={};/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Md;function ch(){if(Md)return ye;Md=1;var r=Symbol.for("react.element"),l=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),c=Symbol.for("react.profiler"),d=Symbol.for("react.provider"),p=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),g=Symbol.for("react.suspense"),v=Symbol.for("react.memo"),x=Symbol.for("react.lazy"),C=Symbol.iterator;function N(b){return b===null||typeof b!="object"?null:(b=C&&b[C]||b["@@iterator"],typeof b=="function"?b:null)}var T={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,S={};function P(b,z,Q){this.props=b,this.context=z,this.refs=S,this.updater=Q||T}P.prototype.isReactComponent={},P.prototype.setState=function(b,z){if(typeof b!="object"&&typeof b!="function"&&b!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,b,z,"setState")},P.prototype.forceUpdate=function(b){this.updater.enqueueForceUpdate(this,b,"forceUpdate")};function F(){}F.prototype=P.prototype;function L(b,z,Q){this.props=b,this.context=z,this.refs=S,this.updater=Q||T}var O=L.prototype=new F;O.constructor=L,_(O,P.prototype),O.isPureReactComponent=!0;var H=Array.isArray,G=Object.prototype.hasOwnProperty,K={current:null},X={key:!0,ref:!0,__self:!0,__source:!0};function A(b,z,Q){var q,pe={},ae=null,se=null;if(z!=null)for(q in z.ref!==void 0&&(se=z.ref),z.key!==void 0&&(ae=""+z.key),z)G.call(z,q)&&!X.hasOwnProperty(q)&&(pe[q]=z[q]);var ve=arguments.length-2;if(ve===1)pe.children=Q;else if(1>>1,z=I[b];if(0>>1;bc(pe,W))aec(se,pe)?(I[b]=se,I[ae]=W,b=ae):(I[b]=pe,I[q]=W,b=q);else if(aec(se,W))I[b]=se,I[ae]=W,b=ae;else break e}}return M}function c(I,M){var W=I.sortIndex-M.sortIndex;return W!==0?W:I.id-M.id}if(typeof performance=="object"&&typeof performance.now=="function"){var d=performance;r.unstable_now=function(){return d.now()}}else{var p=Date,h=p.now();r.unstable_now=function(){return p.now()-h}}var g=[],v=[],x=1,C=null,N=3,T=!1,_=!1,S=!1,P=typeof setTimeout=="function"?setTimeout:null,F=typeof clearTimeout=="function"?clearTimeout:null,L=typeof setImmediate<"u"?setImmediate:null;typeof navigator<"u"&&navigator.scheduling!==void 0&&navigator.scheduling.isInputPending!==void 0&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function O(I){for(var M=i(v);M!==null;){if(M.callback===null)a(v);else if(M.startTime<=I)a(v),M.sortIndex=M.expirationTime,l(g,M);else break;M=i(v)}}function H(I){if(S=!1,O(I),!_)if(i(g)!==null)_=!0,he(G);else{var M=i(v);M!==null&&ue(H,M.startTime-I)}}function G(I,M){_=!1,S&&(S=!1,F(A),A=-1),T=!0;var W=N;try{for(O(M),C=i(g);C!==null&&(!(C.expirationTime>M)||I&&!me());){var b=C.callback;if(typeof b=="function"){C.callback=null,N=C.priorityLevel;var z=b(C.expirationTime<=M);M=r.unstable_now(),typeof z=="function"?C.callback=z:C===i(g)&&a(g),O(M)}else a(g);C=i(g)}if(C!==null)var Q=!0;else{var q=i(v);q!==null&&ue(H,q.startTime-M),Q=!1}return Q}finally{C=null,N=W,T=!1}}var K=!1,X=null,A=-1,ne=5,fe=-1;function me(){return!(r.unstable_now()-feI||125b?(I.sortIndex=W,l(v,I),i(g)===null&&I===i(v)&&(S?(F(A),A=-1):S=!0,ue(H,W-b))):(I.sortIndex=z,l(g,I),_||T||(_=!0,he(G))),I},r.unstable_shouldYield=me,r.unstable_wrapCallback=function(I){var M=N;return function(){var W=N;N=M;try{return I.apply(this,arguments)}finally{N=W}}}})(wa)),wa}var Ud;function mh(){return Ud||(Ud=1,xa.exports=ph()),xa.exports}/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */var Bd;function hh(){if(Bd)return Ct;Bd=1;var r=Ua(),l=mh();function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),g=Object.prototype.hasOwnProperty,v=/^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/,x={},C={};function N(e){return g.call(C,e)?!0:g.call(x,e)?!1:v.test(e)?C[e]=!0:(x[e]=!0,!1)}function T(e,t,n,o){if(n!==null&&n.type===0)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":return o?!1:n!==null?!n.acceptsBooleans:(e=e.toLowerCase().slice(0,5),e!=="data-"&&e!=="aria-");default:return!1}}function _(e,t,n,o){if(t===null||typeof t>"u"||T(e,t,n,o))return!0;if(o)return!1;if(n!==null)switch(n.type){case 3:return!t;case 4:return t===!1;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}function S(e,t,n,o,s,u,m){this.acceptsBooleans=t===2||t===3||t===4,this.attributeName=o,this.attributeNamespace=s,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=u,this.removeEmptyString=m}var P={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){P[e]=new S(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var t=e[0];P[t]=new S(t,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){P[e]=new S(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){P[e]=new S(e,2,!1,e,null,!1,!1)}),"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(e){P[e]=new S(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){P[e]=new S(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){P[e]=new S(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){P[e]=new S(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){P[e]=new S(e,5,!1,e.toLowerCase(),null,!1,!1)});var F=/[\-:]([a-z])/g;function L(e){return e[1].toUpperCase()}"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(e){var t=e.replace(F,L);P[t]=new S(t,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var t=e.replace(F,L);P[t]=new S(t,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var t=e.replace(F,L);P[t]=new S(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){P[e]=new S(e,1,!1,e.toLowerCase(),null,!1,!1)}),P.xlinkHref=new S("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){P[e]=new S(e,1,!1,e.toLowerCase(),null,!0,!0)});function O(e,t,n,o){var s=P.hasOwnProperty(t)?P[t]:null;(s!==null?s.type!==0:o||!(2w||s[m]!==u[w]){var k=` -`+s[m].replace(" at new "," at ");return e.displayName&&k.includes("")&&(k=k.replace("",e.displayName)),k}while(1<=m&&0<=w);break}}}finally{Q=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?z(e):""}function pe(e){switch(e.tag){case 5:return z(e.type);case 16:return z("Lazy");case 13:return z("Suspense");case 19:return z("SuspenseList");case 0:case 2:case 15:return e=q(e.type,!1),e;case 11:return e=q(e.type.render,!1),e;case 1:return e=q(e.type,!0),e;default:return""}}function ae(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case X:return"Fragment";case K:return"Portal";case ne:return"Profiler";case A:return"StrictMode";case Ee:return"Suspense";case Re:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case me:return(e.displayName||"Context")+".Consumer";case fe:return(e._context.displayName||"Context")+".Provider";case je:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Se:return t=e.displayName||null,t!==null?t:ae(e.type)||"Memo";case he:t=e._payload,e=e._init;try{return ae(e(t))}catch{}}return null}function se(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return ae(t);case 8:return t===A?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function ve(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function we(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function be(e){var t=we(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),o=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var s=n.get,u=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return s.call(this)},set:function(m){o=""+m,u.call(this,m)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return o},setValue:function(m){o=""+m},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function Tt(e){e._valueTracker||(e._valueTracker=be(e))}function ut(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),o="";return e&&(o=we(e)?e.checked?"true":"false":e.value),e=o,e!==n?(t.setValue(e),!0):!1}function Zn(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function $t(e,t){var n=t.checked;return W({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function er(e,t){var n=t.defaultValue==null?"":t.defaultValue,o=t.checked!=null?t.checked:t.defaultChecked;n=ve(t.value!=null?t.value:n),e._wrapperState={initialChecked:o,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function dn(e,t){t=t.checked,t!=null&&O(e,"checked",t,!1)}function gr(e,t){dn(e,t);var n=ve(t.value),o=t.type;if(n!=null)o==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(o==="submit"||o==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?tr(e,t.type,n):t.hasOwnProperty("defaultValue")&&tr(e,t.type,ve(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Yr(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var o=t.type;if(!(o!=="submit"&&o!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function tr(e,t,n){(t!=="number"||Zn(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var ht=Array.isArray;function Ut(e,t,n,o){if(e=e.options,t){t={};for(var s=0;s"+t.valueOf().toString()+"",t=Bt.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function Tn(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var gt={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ol=["Webkit","ms","Moz","O"];Object.keys(gt).forEach(function(e){ol.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),gt[t]=gt[e]})});function ll(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||gt.hasOwnProperty(e)&>[e]?(""+t).trim():t+"px"}function il(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var o=n.indexOf("--")===0,s=ll(n,t[n],o);n==="float"&&(n="cssFloat"),o?e.setProperty(n,s):e[n]=s}}var Jr=W({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function vr(e,t){if(t){if(Jr[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(i(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(i(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(i(61))}if(t.style!=null&&typeof t.style!="object")throw Error(i(62))}}function Zr(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var yr=null;function eo(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var to=null,Pn=null,Me=null;function tt(e){if(e=So(e)){if(typeof to!="function")throw Error(i(280));var t=e.stateNode;t&&(t=jl(t),to(e.stateNode,e.type,t))}}function nt(e){Pn?Me?Me.push(e):Me=[e]:Pn=e}function Wt(){if(Pn){var e=Pn,t=Me;if(Me=Pn=null,tt(e),t)for(e=0;e>>=0,e===0?32:31-(Ep(e)/bp|0)|0}var ul=64,cl=4194304;function ro(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function dl(e,t){var n=e.pendingLanes;if(n===0)return 0;var o=0,s=e.suspendedLanes,u=e.pingedLanes,m=n&268435455;if(m!==0){var w=m&~s;w!==0?o=ro(w):(u&=m,u!==0&&(o=ro(u)))}else m=n&~s,m!==0?o=ro(m):u!==0&&(o=ro(u));if(o===0)return 0;if(t!==0&&t!==o&&(t&s)===0&&(s=o&-o,u=t&-t,s>=u||s===16&&(u&4194240)!==0))return t;if((o&4)!==0&&(o|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=o;0n;n++)t.push(e);return t}function oo(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Gt(t),e[t]=n}function Tp(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var o=e.eventTimes;for(e=e.expirationTimes;0=po),Ru=" ",Tu=!1;function Pu(e,t){switch(e){case"keyup":return rm.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Du(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var kr=!1;function lm(e,t){switch(e){case"compositionend":return Du(t);case"keypress":return t.which!==32?null:(Tu=!0,Ru);case"textInput":return e=t.data,e===Ru&&Tu?null:e;default:return null}}function im(e,t){if(kr)return e==="compositionend"||!Xi&&Pu(e,t)?(e=Su(),gl=Vi=zn=null,kr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=o}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Au(n)}}function $u(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?$u(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Uu(){for(var e=window,t=Zn();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Zn(e.document)}return t}function Zi(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function hm(e){var t=Uu(),n=e.focusedElem,o=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&$u(n.ownerDocument.documentElement,n)){if(o!==null&&Zi(n)){if(t=o.start,e=o.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var s=n.textContent.length,u=Math.min(o.start,s);o=o.end===void 0?u:Math.min(o.end,s),!e.extend&&u>o&&(s=o,o=u,u=s),s=Fu(n,u);var m=Fu(n,o);s&&m&&(e.rangeCount!==1||e.anchorNode!==s.node||e.anchorOffset!==s.offset||e.focusNode!==m.node||e.focusOffset!==m.offset)&&(t=t.createRange(),t.setStart(s.node,s.offset),e.removeAllRanges(),u>o?(e.addRange(t),e.extend(m.node,m.offset)):(t.setEnd(m.node,m.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Sr=null,es=null,vo=null,ts=!1;function Bu(e,t,n){var o=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;ts||Sr==null||Sr!==Zn(o)||(o=Sr,"selectionStart"in o&&Zi(o)?o={start:o.selectionStart,end:o.selectionEnd}:(o=(o.ownerDocument&&o.ownerDocument.defaultView||window).getSelection(),o={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focusNode:o.focusNode,focusOffset:o.focusOffset}),vo&&go(vo,o)||(vo=o,o=El(es,"onSelect"),0jr||(e.current=ps[jr],ps[jr]=null,jr--)}function Le(e,t){jr++,ps[jr]=e.current,e.current=t}var Fn={},lt=An(Fn),yt=An(!1),or=Fn;function Rr(e,t){var n=e.type.contextTypes;if(!n)return Fn;var o=e.stateNode;if(o&&o.__reactInternalMemoizedUnmaskedChildContext===t)return o.__reactInternalMemoizedMaskedChildContext;var s={},u;for(u in n)s[u]=t[u];return o&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=s),s}function xt(e){return e=e.childContextTypes,e!=null}function Rl(){Ie(yt),Ie(lt)}function rc(e,t,n){if(lt.current!==Fn)throw Error(i(168));Le(lt,t),Le(yt,n)}function oc(e,t,n){var o=e.stateNode;if(t=t.childContextTypes,typeof o.getChildContext!="function")return n;o=o.getChildContext();for(var s in o)if(!(s in t))throw Error(i(108,se(e)||"Unknown",s));return W({},n,o)}function Tl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Fn,or=lt.current,Le(lt,e),Le(yt,yt.current),!0}function lc(e,t,n){var o=e.stateNode;if(!o)throw Error(i(169));n?(e=oc(e,t,or),o.__reactInternalMemoizedMergedChildContext=e,Ie(yt),Ie(lt),Le(lt,e)):Ie(yt),Le(yt,n)}var hn=null,Pl=!1,ms=!1;function ic(e){hn===null?hn=[e]:hn.push(e)}function jm(e){Pl=!0,ic(e)}function $n(){if(!ms&&hn!==null){ms=!0;var e=0,t=Te;try{var n=hn;for(Te=1;e>=m,s-=m,gn=1<<32-Gt(t)+s|n<ce?(qe=ie,ie=null):qe=ie.sibling;var Ce=$(j,ie,R[ce],V);if(Ce===null){ie===null&&(ie=qe);break}e&&ie&&Ce.alternate===null&&t(j,ie),E=u(Ce,E,ce),le===null?oe=Ce:le.sibling=Ce,le=Ce,ie=qe}if(ce===R.length)return n(j,ie),ze&&ir(j,ce),oe;if(ie===null){for(;cece?(qe=ie,ie=null):qe=ie.sibling;var Yn=$(j,ie,Ce.value,V);if(Yn===null){ie===null&&(ie=qe);break}e&&ie&&Yn.alternate===null&&t(j,ie),E=u(Yn,E,ce),le===null?oe=Yn:le.sibling=Yn,le=Yn,ie=qe}if(Ce.done)return n(j,ie),ze&&ir(j,ce),oe;if(ie===null){for(;!Ce.done;ce++,Ce=R.next())Ce=B(j,Ce.value,V),Ce!==null&&(E=u(Ce,E,ce),le===null?oe=Ce:le.sibling=Ce,le=Ce);return ze&&ir(j,ce),oe}for(ie=o(j,ie);!Ce.done;ce++,Ce=R.next())Ce=Y(ie,j,ce,Ce.value,V),Ce!==null&&(e&&Ce.alternate!==null&&ie.delete(Ce.key===null?ce:Ce.key),E=u(Ce,E,ce),le===null?oe=Ce:le.sibling=Ce,le=Ce);return e&&ie.forEach(function(sh){return t(j,sh)}),ze&&ir(j,ce),oe}function We(j,E,R,V){if(typeof R=="object"&&R!==null&&R.type===X&&R.key===null&&(R=R.props.children),typeof R=="object"&&R!==null){switch(R.$$typeof){case G:e:{for(var oe=R.key,le=E;le!==null;){if(le.key===oe){if(oe=R.type,oe===X){if(le.tag===7){n(j,le.sibling),E=s(le,R.props.children),E.return=j,j=E;break e}}else if(le.elementType===oe||typeof oe=="object"&&oe!==null&&oe.$$typeof===he&&fc(oe)===le.type){n(j,le.sibling),E=s(le,R.props),E.ref=Co(j,le,R),E.return=j,j=E;break e}n(j,le);break}else t(j,le);le=le.sibling}R.type===X?(E=mr(R.props.children,j.mode,V,R.key),E.return=j,j=E):(V=oi(R.type,R.key,R.props,null,j.mode,V),V.ref=Co(j,E,R),V.return=j,j=V)}return m(j);case K:e:{for(le=R.key;E!==null;){if(E.key===le)if(E.tag===4&&E.stateNode.containerInfo===R.containerInfo&&E.stateNode.implementation===R.implementation){n(j,E.sibling),E=s(E,R.children||[]),E.return=j,j=E;break e}else{n(j,E);break}else t(j,E);E=E.sibling}E=da(R,j.mode,V),E.return=j,j=E}return m(j);case he:return le=R._init,We(j,E,le(R._payload),V)}if(ht(R))return Z(j,E,R,V);if(M(R))return re(j,E,R,V);Il(j,R)}return typeof R=="string"&&R!==""||typeof R=="number"?(R=""+R,E!==null&&E.tag===6?(n(j,E.sibling),E=s(E,R),E.return=j,j=E):(n(j,E),E=ca(R,j.mode,V),E.return=j,j=E),m(j)):n(j,E)}return We}var Lr=pc(!0),mc=pc(!1),zl=An(null),Ml=null,_r=null,ws=null;function ks(){ws=_r=Ml=null}function Ss(e){var t=zl.current;Ie(zl),e._currentValue=t}function Cs(e,t,n){for(;e!==null;){var o=e.alternate;if((e.childLanes&t)!==t?(e.childLanes|=t,o!==null&&(o.childLanes|=t)):o!==null&&(o.childLanes&t)!==t&&(o.childLanes|=t),e===n)break;e=e.return}}function Ir(e,t){Ml=e,ws=_r=null,e=e.dependencies,e!==null&&e.firstContext!==null&&((e.lanes&t)!==0&&(wt=!0),e.firstContext=null)}function _t(e){var t=e._currentValue;if(ws!==e)if(e={context:e,memoizedValue:t,next:null},_r===null){if(Ml===null)throw Error(i(308));_r=e,Ml.dependencies={lanes:0,firstContext:e}}else _r=_r.next=e;return t}var sr=null;function Es(e){sr===null?sr=[e]:sr.push(e)}function hc(e,t,n,o){var s=t.interleaved;return s===null?(n.next=n,Es(t)):(n.next=s.next,s.next=n),t.interleaved=n,yn(e,o)}function yn(e,t){e.lanes|=t;var n=e.alternate;for(n!==null&&(n.lanes|=t),n=e,e=e.return;e!==null;)e.childLanes|=t,n=e.alternate,n!==null&&(n.childLanes|=t),n=e,e=e.return;return n.tag===3?n.stateNode:null}var Un=!1;function bs(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function gc(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function xn(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function Bn(e,t,n){var o=e.updateQueue;if(o===null)return null;if(o=o.shared,(ke&2)!==0){var s=o.pending;return s===null?t.next=t:(t.next=s.next,s.next=t),o.pending=t,yn(e,n)}return s=o.interleaved,s===null?(t.next=t,Es(o)):(t.next=s.next,s.next=t),o.interleaved=t,yn(e,n)}function Ol(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,(n&4194240)!==0)){var o=t.lanes;o&=e.pendingLanes,n|=o,t.lanes=n,Fi(e,n)}}function vc(e,t){var n=e.updateQueue,o=e.alternate;if(o!==null&&(o=o.updateQueue,n===o)){var s=null,u=null;if(n=n.firstBaseUpdate,n!==null){do{var m={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};u===null?s=u=m:u=u.next=m,n=n.next}while(n!==null);u===null?s=u=t:u=u.next=t}else s=u=t;n={baseState:o.baseState,firstBaseUpdate:s,lastBaseUpdate:u,shared:o.shared,effects:o.effects},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function Al(e,t,n,o){var s=e.updateQueue;Un=!1;var u=s.firstBaseUpdate,m=s.lastBaseUpdate,w=s.shared.pending;if(w!==null){s.shared.pending=null;var k=w,D=k.next;k.next=null,m===null?u=D:m.next=D,m=k;var U=e.alternate;U!==null&&(U=U.updateQueue,w=U.lastBaseUpdate,w!==m&&(w===null?U.firstBaseUpdate=D:w.next=D,U.lastBaseUpdate=k))}if(u!==null){var B=s.baseState;m=0,U=D=k=null,w=u;do{var $=w.lane,Y=w.eventTime;if((o&$)===$){U!==null&&(U=U.next={eventTime:Y,lane:0,tag:w.tag,payload:w.payload,callback:w.callback,next:null});e:{var Z=e,re=w;switch($=t,Y=n,re.tag){case 1:if(Z=re.payload,typeof Z=="function"){B=Z.call(Y,B,$);break e}B=Z;break e;case 3:Z.flags=Z.flags&-65537|128;case 0:if(Z=re.payload,$=typeof Z=="function"?Z.call(Y,B,$):Z,$==null)break e;B=W({},B,$);break e;case 2:Un=!0}}w.callback!==null&&w.lane!==0&&(e.flags|=64,$=s.effects,$===null?s.effects=[w]:$.push(w))}else Y={eventTime:Y,lane:$,tag:w.tag,payload:w.payload,callback:w.callback,next:null},U===null?(D=U=Y,k=B):U=U.next=Y,m|=$;if(w=w.next,w===null){if(w=s.shared.pending,w===null)break;$=w,w=$.next,$.next=null,s.lastBaseUpdate=$,s.shared.pending=null}}while(!0);if(U===null&&(k=B),s.baseState=k,s.firstBaseUpdate=D,s.lastBaseUpdate=U,t=s.shared.interleaved,t!==null){s=t;do m|=s.lane,s=s.next;while(s!==t)}else u===null&&(s.shared.lanes=0);cr|=m,e.lanes=m,e.memoizedState=B}}function yc(e,t,n){if(e=t.effects,t.effects=null,e!==null)for(t=0;tn?n:4,e(!0);var o=Ps.transition;Ps.transition={};try{e(!1),t()}finally{Te=n,Ps.transition=o}}function Oc(){return It().memoizedState}function Dm(e,t,n){var o=Gn(e);if(n={lane:o,action:n,hasEagerState:!1,eagerState:null,next:null},Ac(e))Fc(t,n);else if(n=hc(e,t,n,o),n!==null){var s=ft();Jt(n,e,o,s),$c(n,t,o)}}function Lm(e,t,n){var o=Gn(e),s={lane:o,action:n,hasEagerState:!1,eagerState:null,next:null};if(Ac(e))Fc(t,s);else{var u=e.alternate;if(e.lanes===0&&(u===null||u.lanes===0)&&(u=t.lastRenderedReducer,u!==null))try{var m=t.lastRenderedState,w=u(m,n);if(s.hasEagerState=!0,s.eagerState=w,Qt(w,m)){var k=t.interleaved;k===null?(s.next=s,Es(t)):(s.next=k.next,k.next=s),t.interleaved=s;return}}catch{}finally{}n=hc(e,t,s,o),n!==null&&(s=ft(),Jt(n,e,o,s),$c(n,t,o))}}function Ac(e){var t=e.alternate;return e===Fe||t!==null&&t===Fe}function Fc(e,t){jo=Ul=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function $c(e,t,n){if((n&4194240)!==0){var o=t.lanes;o&=e.pendingLanes,n|=o,t.lanes=n,Fi(e,n)}}var Vl={readContext:_t,useCallback:it,useContext:it,useEffect:it,useImperativeHandle:it,useInsertionEffect:it,useLayoutEffect:it,useMemo:it,useReducer:it,useRef:it,useState:it,useDebugValue:it,useDeferredValue:it,useTransition:it,useMutableSource:it,useSyncExternalStore:it,useId:it,unstable_isNewReconciler:!1},_m={readContext:_t,useCallback:function(e,t){return sn().memoizedState=[e,t===void 0?null:t],e},useContext:_t,useEffect:Tc,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Bl(4194308,4,Lc.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Bl(4194308,4,e,t)},useInsertionEffect:function(e,t){return Bl(4,2,e,t)},useMemo:function(e,t){var n=sn();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var o=sn();return t=n!==void 0?n(t):t,o.memoizedState=o.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},o.queue=e,e=e.dispatch=Dm.bind(null,Fe,e),[o.memoizedState,e]},useRef:function(e){var t=sn();return e={current:e},t.memoizedState=e},useState:jc,useDebugValue:Os,useDeferredValue:function(e){return sn().memoizedState=e},useTransition:function(){var e=jc(!1),t=e[0];return e=Pm.bind(null,e[1]),sn().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var o=Fe,s=sn();if(ze){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),Xe===null)throw Error(i(349));(ur&30)!==0||Sc(o,t,n)}s.memoizedState=n;var u={value:n,getSnapshot:t};return s.queue=u,Tc(Ec.bind(null,o,u,e),[e]),o.flags|=2048,Po(9,Cc.bind(null,o,u,n,t),void 0,null),n},useId:function(){var e=sn(),t=Xe.identifierPrefix;if(ze){var n=vn,o=gn;n=(o&~(1<<32-Gt(o)-1)).toString(32)+n,t=":"+t+"R"+n,n=Ro++,0<\/script>",e=e.removeChild(e.firstChild)):typeof o.is=="string"?e=m.createElement(n,{is:o.is}):(e=m.createElement(n),n==="select"&&(m=e,o.multiple?m.multiple=!0:o.size&&(m.size=o.size))):e=m.createElementNS(e,n),e[on]=t,e[ko]=o,id(e,t,!1,!1),t.stateNode=e;e:{switch(m=Zr(n,o),n){case"dialog":_e("cancel",e),_e("close",e),s=o;break;case"iframe":case"object":case"embed":_e("load",e),s=o;break;case"video":case"audio":for(s=0;sFr&&(t.flags|=128,o=!0,Do(u,!1),t.lanes=4194304)}else{if(!o)if(e=Fl(m),e!==null){if(t.flags|=128,o=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Do(u,!0),u.tail===null&&u.tailMode==="hidden"&&!m.alternate&&!ze)return st(t),null}else 2*Be()-u.renderingStartTime>Fr&&n!==1073741824&&(t.flags|=128,o=!0,Do(u,!1),t.lanes=4194304);u.isBackwards?(m.sibling=t.child,t.child=m):(n=u.last,n!==null?n.sibling=m:t.child=m,u.last=m)}return u.tail!==null?(t=u.tail,u.rendering=t,u.tail=t.sibling,u.renderingStartTime=Be(),t.sibling=null,n=Ae.current,Le(Ae,o?n&1|2:n&1),t):(st(t),null);case 22:case 23:return sa(),o=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==o&&(t.flags|=8192),o&&(t.mode&1)!==0?(Rt&1073741824)!==0&&(st(t),t.subtreeFlags&6&&(t.flags|=8192)):st(t),null;case 24:return null;case 25:return null}throw Error(i(156,t.tag))}function Um(e,t){switch(gs(t),t.tag){case 1:return xt(t.type)&&Rl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return zr(),Ie(yt),Ie(lt),Ts(),e=t.flags,(e&65536)!==0&&(e&128)===0?(t.flags=e&-65537|128,t):null;case 5:return js(t),null;case 13:if(Ie(Ae),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));Dr()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return Ie(Ae),null;case 4:return zr(),null;case 10:return Ss(t.type._context),null;case 22:case 23:return sa(),null;case 24:return null;default:return null}}var Kl=!1,at=!1,Bm=typeof WeakSet=="function"?WeakSet:Set,J=null;function Or(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(o){Ue(e,t,o)}else n.current=null}function Ys(e,t,n){try{n()}catch(o){Ue(e,t,o)}}var ud=!1;function Wm(e,t){if(ss=ml,e=Uu(),Zi(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var o=n.getSelection&&n.getSelection();if(o&&o.rangeCount!==0){n=o.anchorNode;var s=o.anchorOffset,u=o.focusNode;o=o.focusOffset;try{n.nodeType,u.nodeType}catch{n=null;break e}var m=0,w=-1,k=-1,D=0,U=0,B=e,$=null;t:for(;;){for(var Y;B!==n||s!==0&&B.nodeType!==3||(w=m+s),B!==u||o!==0&&B.nodeType!==3||(k=m+o),B.nodeType===3&&(m+=B.nodeValue.length),(Y=B.firstChild)!==null;)$=B,B=Y;for(;;){if(B===e)break t;if($===n&&++D===s&&(w=m),$===u&&++U===o&&(k=m),(Y=B.nextSibling)!==null)break;B=$,$=B.parentNode}B=Y}n=w===-1||k===-1?null:{start:w,end:k}}else n=null}n=n||{start:0,end:0}}else n=null;for(as={focusedElem:e,selectionRange:n},ml=!1,J=t;J!==null;)if(t=J,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,J=e;else for(;J!==null;){t=J;try{var Z=t.alternate;if((t.flags&1024)!==0)switch(t.tag){case 0:case 11:case 15:break;case 1:if(Z!==null){var re=Z.memoizedProps,We=Z.memoizedState,j=t.stateNode,E=j.getSnapshotBeforeUpdate(t.elementType===t.type?re:Yt(t.type,re),We);j.__reactInternalSnapshotBeforeUpdate=E}break;case 3:var R=t.stateNode.containerInfo;R.nodeType===1?R.textContent="":R.nodeType===9&&R.documentElement&&R.removeChild(R.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(i(163))}}catch(V){Ue(t,t.return,V)}if(e=t.sibling,e!==null){e.return=t.return,J=e;break}J=t.return}return Z=ud,ud=!1,Z}function Lo(e,t,n){var o=t.updateQueue;if(o=o!==null?o.lastEffect:null,o!==null){var s=o=o.next;do{if((s.tag&e)===e){var u=s.destroy;s.destroy=void 0,u!==void 0&&Ys(t,n,u)}s=s.next}while(s!==o)}}function Yl(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var o=n.create;n.destroy=o()}n=n.next}while(n!==t)}}function Xs(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function cd(e){var t=e.alternate;t!==null&&(e.alternate=null,cd(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[on],delete t[ko],delete t[fs],delete t[bm],delete t[Nm])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function dd(e){return e.tag===5||e.tag===3||e.tag===4}function fd(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||dd(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function qs(e,t,n){var o=e.tag;if(o===5||o===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Nl));else if(o!==4&&(e=e.child,e!==null))for(qs(e,t,n),e=e.sibling;e!==null;)qs(e,t,n),e=e.sibling}function Js(e,t,n){var o=e.tag;if(o===5||o===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(o!==4&&(e=e.child,e!==null))for(Js(e,t,n),e=e.sibling;e!==null;)Js(e,t,n),e=e.sibling}var Ze=null,Xt=!1;function Wn(e,t,n){for(n=n.child;n!==null;)pd(e,t,n),n=n.sibling}function pd(e,t,n){if(rn&&typeof rn.onCommitFiberUnmount=="function")try{rn.onCommitFiberUnmount(al,n)}catch{}switch(n.tag){case 5:at||Or(n,t);case 6:var o=Ze,s=Xt;Ze=null,Wn(e,t,n),Ze=o,Xt=s,Ze!==null&&(Xt?(e=Ze,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Ze.removeChild(n.stateNode));break;case 18:Ze!==null&&(Xt?(e=Ze,n=n.stateNode,e.nodeType===8?ds(e.parentNode,n):e.nodeType===1&&ds(e,n),uo(e)):ds(Ze,n.stateNode));break;case 4:o=Ze,s=Xt,Ze=n.stateNode.containerInfo,Xt=!0,Wn(e,t,n),Ze=o,Xt=s;break;case 0:case 11:case 14:case 15:if(!at&&(o=n.updateQueue,o!==null&&(o=o.lastEffect,o!==null))){s=o=o.next;do{var u=s,m=u.destroy;u=u.tag,m!==void 0&&((u&2)!==0||(u&4)!==0)&&Ys(n,t,m),s=s.next}while(s!==o)}Wn(e,t,n);break;case 1:if(!at&&(Or(n,t),o=n.stateNode,typeof o.componentWillUnmount=="function"))try{o.props=n.memoizedProps,o.state=n.memoizedState,o.componentWillUnmount()}catch(w){Ue(n,t,w)}Wn(e,t,n);break;case 21:Wn(e,t,n);break;case 22:n.mode&1?(at=(o=at)||n.memoizedState!==null,Wn(e,t,n),at=o):Wn(e,t,n);break;default:Wn(e,t,n)}}function md(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new Bm),t.forEach(function(o){var s=Jm.bind(null,e,o);n.has(o)||(n.add(o),o.then(s,s))})}}function qt(e,t){var n=t.deletions;if(n!==null)for(var o=0;os&&(s=m),o&=~u}if(o=s,o=Be()-o,o=(120>o?120:480>o?480:1080>o?1080:1920>o?1920:3e3>o?3e3:4320>o?4320:1960*Hm(o/1960))-o,10e?16:e,Hn===null)var o=!1;else{if(e=Hn,Hn=null,ei=0,(ke&6)!==0)throw Error(i(331));var s=ke;for(ke|=4,J=e.current;J!==null;){var u=J,m=u.child;if((J.flags&16)!==0){var w=u.deletions;if(w!==null){for(var k=0;kBe()-ta?fr(e,0):ea|=n),St(e,t)}function jd(e,t){t===0&&((e.mode&1)===0?t=1:(t=cl,cl<<=1,(cl&130023424)===0&&(cl=4194304)));var n=ft();e=yn(e,t),e!==null&&(oo(e,t,n),St(e,n))}function qm(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),jd(e,n)}function Jm(e,t){var n=0;switch(e.tag){case 13:var o=e.stateNode,s=e.memoizedState;s!==null&&(n=s.retryLane);break;case 19:o=e.stateNode;break;default:throw Error(i(314))}o!==null&&o.delete(t),jd(e,n)}var Rd;Rd=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||yt.current)wt=!0;else{if((e.lanes&n)===0&&(t.flags&128)===0)return wt=!1,Fm(e,t,n);wt=(e.flags&131072)!==0}else wt=!1,ze&&(t.flags&1048576)!==0&&sc(t,Ll,t.index);switch(t.lanes=0,t.tag){case 2:var o=t.type;Ql(e,t),e=t.pendingProps;var s=Rr(t,lt.current);Ir(t,n),s=Ls(null,t,o,e,s,n);var u=_s();return t.flags|=1,typeof s=="object"&&s!==null&&typeof s.render=="function"&&s.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,xt(o)?(u=!0,Tl(t)):u=!1,t.memoizedState=s.state!==null&&s.state!==void 0?s.state:null,bs(t),s.updater=Hl,t.stateNode=s,s._reactInternals=t,Fs(t,o,e,n),t=Ws(null,t,o,!0,u,n)):(t.tag=0,ze&&u&&hs(t),dt(null,t,s,n),t=t.child),t;case 16:o=t.elementType;e:{switch(Ql(e,t),e=t.pendingProps,s=o._init,o=s(o._payload),t.type=o,s=t.tag=eh(o),e=Yt(o,e),s){case 0:t=Bs(null,t,o,e,n);break e;case 1:t=ed(null,t,o,e,n);break e;case 11:t=Yc(null,t,o,e,n);break e;case 14:t=Xc(null,t,o,Yt(o.type,e),n);break e}throw Error(i(306,o,""))}return t;case 0:return o=t.type,s=t.pendingProps,s=t.elementType===o?s:Yt(o,s),Bs(e,t,o,s,n);case 1:return o=t.type,s=t.pendingProps,s=t.elementType===o?s:Yt(o,s),ed(e,t,o,s,n);case 3:e:{if(td(t),e===null)throw Error(i(387));o=t.pendingProps,u=t.memoizedState,s=u.element,gc(e,t),Al(t,o,null,n);var m=t.memoizedState;if(o=m.element,u.isDehydrated)if(u={element:o,isDehydrated:!1,cache:m.cache,pendingSuspenseBoundaries:m.pendingSuspenseBoundaries,transitions:m.transitions},t.updateQueue.baseState=u,t.memoizedState=u,t.flags&256){s=Mr(Error(i(423)),t),t=nd(e,t,o,n,s);break e}else if(o!==s){s=Mr(Error(i(424)),t),t=nd(e,t,o,n,s);break e}else for(jt=On(t.stateNode.containerInfo.firstChild),Nt=t,ze=!0,Kt=null,n=mc(t,null,o,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(Dr(),o===s){t=wn(e,t,n);break e}dt(e,t,o,n)}t=t.child}return t;case 5:return xc(t),e===null&&ys(t),o=t.type,s=t.pendingProps,u=e!==null?e.memoizedProps:null,m=s.children,us(o,s)?m=null:u!==null&&us(o,u)&&(t.flags|=32),Zc(e,t),dt(e,t,m,n),t.child;case 6:return e===null&&ys(t),null;case 13:return rd(e,t,n);case 4:return Ns(t,t.stateNode.containerInfo),o=t.pendingProps,e===null?t.child=Lr(t,null,o,n):dt(e,t,o,n),t.child;case 11:return o=t.type,s=t.pendingProps,s=t.elementType===o?s:Yt(o,s),Yc(e,t,o,s,n);case 7:return dt(e,t,t.pendingProps,n),t.child;case 8:return dt(e,t,t.pendingProps.children,n),t.child;case 12:return dt(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(o=t.type._context,s=t.pendingProps,u=t.memoizedProps,m=s.value,Le(zl,o._currentValue),o._currentValue=m,u!==null)if(Qt(u.value,m)){if(u.children===s.children&&!yt.current){t=wn(e,t,n);break e}}else for(u=t.child,u!==null&&(u.return=t);u!==null;){var w=u.dependencies;if(w!==null){m=u.child;for(var k=w.firstContext;k!==null;){if(k.context===o){if(u.tag===1){k=xn(-1,n&-n),k.tag=2;var D=u.updateQueue;if(D!==null){D=D.shared;var U=D.pending;U===null?k.next=k:(k.next=U.next,U.next=k),D.pending=k}}u.lanes|=n,k=u.alternate,k!==null&&(k.lanes|=n),Cs(u.return,n,t),w.lanes|=n;break}k=k.next}}else if(u.tag===10)m=u.type===t.type?null:u.child;else if(u.tag===18){if(m=u.return,m===null)throw Error(i(341));m.lanes|=n,w=m.alternate,w!==null&&(w.lanes|=n),Cs(m,n,t),m=u.sibling}else m=u.child;if(m!==null)m.return=u;else for(m=u;m!==null;){if(m===t){m=null;break}if(u=m.sibling,u!==null){u.return=m.return,m=u;break}m=m.return}u=m}dt(e,t,s.children,n),t=t.child}return t;case 9:return s=t.type,o=t.pendingProps.children,Ir(t,n),s=_t(s),o=o(s),t.flags|=1,dt(e,t,o,n),t.child;case 14:return o=t.type,s=Yt(o,t.pendingProps),s=Yt(o.type,s),Xc(e,t,o,s,n);case 15:return qc(e,t,t.type,t.pendingProps,n);case 17:return o=t.type,s=t.pendingProps,s=t.elementType===o?s:Yt(o,s),Ql(e,t),t.tag=1,xt(o)?(e=!0,Tl(t)):e=!1,Ir(t,n),Bc(t,o,s),Fs(t,o,s,n),Ws(null,t,o,!0,e,n);case 19:return ld(e,t,n);case 22:return Jc(e,t,n)}throw Error(i(156,t.tag))};function Td(e,t){return au(e,t)}function Zm(e,t,n,o){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=o,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Mt(e,t,n,o){return new Zm(e,t,n,o)}function ua(e){return e=e.prototype,!(!e||!e.isReactComponent)}function eh(e){if(typeof e=="function")return ua(e)?1:0;if(e!=null){if(e=e.$$typeof,e===je)return 11;if(e===Se)return 14}return 2}function Kn(e,t){var n=e.alternate;return n===null?(n=Mt(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function oi(e,t,n,o,s,u){var m=2;if(o=e,typeof e=="function")ua(e)&&(m=1);else if(typeof e=="string")m=5;else e:switch(e){case X:return mr(n.children,s,u,t);case A:m=8,s|=8;break;case ne:return e=Mt(12,n,t,s|2),e.elementType=ne,e.lanes=u,e;case Ee:return e=Mt(13,n,t,s),e.elementType=Ee,e.lanes=u,e;case Re:return e=Mt(19,n,t,s),e.elementType=Re,e.lanes=u,e;case ue:return li(n,s,u,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case fe:m=10;break e;case me:m=9;break e;case je:m=11;break e;case Se:m=14;break e;case he:m=16,o=null;break e}throw Error(i(130,e==null?e:typeof e,""))}return t=Mt(m,n,t,s),t.elementType=e,t.type=o,t.lanes=u,t}function mr(e,t,n,o){return e=Mt(7,e,o,t),e.lanes=n,e}function li(e,t,n,o){return e=Mt(22,e,o,t),e.elementType=ue,e.lanes=n,e.stateNode={isHidden:!1},e}function ca(e,t,n){return e=Mt(6,e,null,t),e.lanes=n,e}function da(e,t,n){return t=Mt(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function th(e,t,n,o,s){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Ai(0),this.expirationTimes=Ai(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Ai(0),this.identifierPrefix=o,this.onRecoverableError=s,this.mutableSourceEagerHydrationData=null}function fa(e,t,n,o,s,u,m,w,k){return e=new th(e,t,n,w,k),t===1?(t=1,u===!0&&(t|=8)):t=0,u=Mt(3,null,null,t),e.current=u,u.stateNode=e,u.memoizedState={element:o,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},bs(u),e}function nh(e,t,n){var o=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(r)}catch(l){console.error(l)}}return r(),ya.exports=hh(),ya.exports}var Vd;function gh(){if(Vd)return fi;Vd=1;var r=kf();return fi.createRoot=r.createRoot,fi.hydrateRoot=r.hydrateRoot,fi}var vh=gh();const yh=wf(vh);/** - * react-router v7.8.2 - * - * Copyright (c) Remix Software Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE.md file in the root directory of this source tree. - * - * @license MIT - */var Hd="popstate";function xh(r={}){function l(a,c){let{pathname:d,search:p,hash:h}=a.location;return La("",{pathname:d,search:p,hash:h},c.state&&c.state.usr||null,c.state&&c.state.key||"default")}function i(a,c){return typeof c=="string"?c:Vo(c)}return kh(l,i,null,r)}function $e(r,l){if(r===!1||r===null||typeof r>"u")throw new Error(l)}function un(r,l){if(!r){typeof console<"u"&&console.warn(l);try{throw new Error(l)}catch{}}}function wh(){return Math.random().toString(36).substring(2,10)}function Gd(r,l){return{usr:r.state,key:r.key,idx:l}}function La(r,l,i=null,a){return{pathname:typeof r=="string"?r:r.pathname,search:"",hash:"",...typeof l=="string"?Wr(l):l,state:i,key:l&&l.key||a||wh()}}function Vo({pathname:r="/",search:l="",hash:i=""}){return l&&l!=="?"&&(r+=l.charAt(0)==="?"?l:"?"+l),i&&i!=="#"&&(r+=i.charAt(0)==="#"?i:"#"+i),r}function Wr(r){let l={};if(r){let i=r.indexOf("#");i>=0&&(l.hash=r.substring(i),r=r.substring(0,i));let a=r.indexOf("?");a>=0&&(l.search=r.substring(a),r=r.substring(0,a)),r&&(l.pathname=r)}return l}function kh(r,l,i,a={}){let{window:c=document.defaultView,v5Compat:d=!1}=a,p=c.history,h="POP",g=null,v=x();v==null&&(v=0,p.replaceState({...p.state,idx:v},""));function x(){return(p.state||{idx:null}).idx}function C(){h="POP";let P=x(),F=P==null?null:P-v;v=P,g&&g({action:h,location:S.location,delta:F})}function N(P,F){h="PUSH";let L=La(S.location,P,F);v=x()+1;let O=Gd(L,v),H=S.createHref(L);try{p.pushState(O,"",H)}catch(G){if(G instanceof DOMException&&G.name==="DataCloneError")throw G;c.location.assign(H)}d&&g&&g({action:h,location:S.location,delta:1})}function T(P,F){h="REPLACE";let L=La(S.location,P,F);v=x();let O=Gd(L,v),H=S.createHref(L);p.replaceState(O,"",H),d&&g&&g({action:h,location:S.location,delta:0})}function _(P){return Sh(P)}let S={get action(){return h},get location(){return r(c,p)},listen(P){if(g)throw new Error("A history only accepts one active listener");return c.addEventListener(Hd,C),g=P,()=>{c.removeEventListener(Hd,C),g=null}},createHref(P){return l(c,P)},createURL:_,encodeLocation(P){let F=_(P);return{pathname:F.pathname,search:F.search,hash:F.hash}},push:N,replace:T,go(P){return p.go(P)}};return S}function Sh(r,l=!1){let i="http://localhost";typeof window<"u"&&(i=window.location.origin!=="null"?window.location.origin:window.location.href),$e(i,"No window.location.(origin|href) available to create URL");let a=typeof r=="string"?r:Vo(r);return a=a.replace(/ $/,"%20"),!l&&a.startsWith("//")&&(a=i+a),new URL(a,i)}function Sf(r,l,i="/"){return Ch(r,l,i,!1)}function Ch(r,l,i,a){let c=typeof l=="string"?Wr(l):l,d=En(c.pathname||"/",i);if(d==null)return null;let p=Cf(r);Eh(p);let h=null;for(let g=0;h==null&&g{let x={relativePath:v===void 0?p.path||"":v,caseSensitive:p.caseSensitive===!0,childrenIndex:h,route:p};if(x.relativePath.startsWith("/")){if(!x.relativePath.startsWith(a)&&g)return;$e(x.relativePath.startsWith(a),`Absolute route path "${x.relativePath}" nested under path "${a}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),x.relativePath=x.relativePath.slice(a.length)}let C=Cn([a,x.relativePath]),N=i.concat(x);p.children&&p.children.length>0&&($e(p.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${C}".`),Cf(p.children,l,N,C,g)),!(p.path==null&&!p.index)&&l.push({path:C,score:Dh(C,p.index),routesMeta:N})};return r.forEach((p,h)=>{var g;if(p.path===""||!((g=p.path)!=null&&g.includes("?")))d(p,h);else for(let v of Ef(p.path))d(p,h,!0,v)}),l}function Ef(r){let l=r.split("/");if(l.length===0)return[];let[i,...a]=l,c=i.endsWith("?"),d=i.replace(/\?$/,"");if(a.length===0)return c?[d,""]:[d];let p=Ef(a.join("/")),h=[];return h.push(...p.map(g=>g===""?d:[d,g].join("/"))),c&&h.push(...p),h.map(g=>r.startsWith("/")&&g===""?"/":g)}function Eh(r){r.sort((l,i)=>l.score!==i.score?i.score-l.score:Lh(l.routesMeta.map(a=>a.childrenIndex),i.routesMeta.map(a=>a.childrenIndex)))}var bh=/^:[\w-]+$/,Nh=3,jh=2,Rh=1,Th=10,Ph=-2,Qd=r=>r==="*";function Dh(r,l){let i=r.split("/"),a=i.length;return i.some(Qd)&&(a+=Ph),l&&(a+=jh),i.filter(c=>!Qd(c)).reduce((c,d)=>c+(bh.test(d)?Nh:d===""?Rh:Th),a)}function Lh(r,l){return r.length===l.length&&r.slice(0,-1).every((a,c)=>a===l[c])?r[r.length-1]-l[l.length-1]:0}function _h(r,l,i=!1){let{routesMeta:a}=r,c={},d="/",p=[];for(let h=0;h{if(x==="*"){let _=h[N]||"";p=d.slice(0,d.length-_.length).replace(/(.)\/+$/,"$1")}const T=h[N];return C&&!T?v[x]=void 0:v[x]=(T||"").replace(/%2F/g,"/"),v},{}),pathname:d,pathnameBase:p,pattern:r}}function Ih(r,l=!1,i=!0){un(r==="*"||!r.endsWith("*")||r.endsWith("/*"),`Route path "${r}" will be treated as if it were "${r.replace(/\*$/,"/*")}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${r.replace(/\*$/,"/*")}".`);let a=[],c="^"+r.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(p,h,g)=>(a.push({paramName:h,isOptional:g!=null}),g?"/?([^\\/]+)?":"/([^\\/]+)")).replace(/\/([\w-]+)\?(\/|$)/g,"(/$1)?$2");return r.endsWith("*")?(a.push({paramName:"*"}),c+=r==="*"||r==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):i?c+="\\/*$":r!==""&&r!=="/"&&(c+="(?:(?=\\/|$))"),[new RegExp(c,l?void 0:"i"),a]}function zh(r){try{return r.split("/").map(l=>decodeURIComponent(l).replace(/\//g,"%2F")).join("/")}catch(l){return un(!1,`The URL path "${r}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${l}).`),r}}function En(r,l){if(l==="/")return r;if(!r.toLowerCase().startsWith(l.toLowerCase()))return null;let i=l.endsWith("/")?l.length-1:l.length,a=r.charAt(i);return a&&a!=="/"?null:r.slice(i)||"/"}function Mh(r,l="/"){let{pathname:i,search:a="",hash:c=""}=typeof r=="string"?Wr(r):r;return{pathname:i?i.startsWith("/")?i:Oh(i,l):l,search:$h(a),hash:Uh(c)}}function Oh(r,l){let i=l.replace(/\/+$/,"").split("/");return r.split("/").forEach(c=>{c===".."?i.length>1&&i.pop():c!=="."&&i.push(c)}),i.length>1?i.join("/"):"/"}function ka(r,l,i,a){return`Cannot include a '${r}' character in a manually specified \`to.${l}\` field [${JSON.stringify(a)}]. Please separate it out to the \`to.${i}\` field. Alternatively you may provide the full path as a string in and the router will parse it for you.`}function Ah(r){return r.filter((l,i)=>i===0||l.route.path&&l.route.path.length>0)}function bf(r){let l=Ah(r);return l.map((i,a)=>a===l.length-1?i.pathname:i.pathnameBase)}function Nf(r,l,i,a=!1){let c;typeof r=="string"?c=Wr(r):(c={...r},$e(!c.pathname||!c.pathname.includes("?"),ka("?","pathname","search",c)),$e(!c.pathname||!c.pathname.includes("#"),ka("#","pathname","hash",c)),$e(!c.search||!c.search.includes("#"),ka("#","search","hash",c)));let d=r===""||c.pathname==="",p=d?"/":c.pathname,h;if(p==null)h=i;else{let C=l.length-1;if(!a&&p.startsWith("..")){let N=p.split("/");for(;N[0]==="..";)N.shift(),C-=1;c.pathname=N.join("/")}h=C>=0?l[C]:"/"}let g=Mh(c,h),v=p&&p!=="/"&&p.endsWith("/"),x=(d||p===".")&&i.endsWith("/");return!g.pathname.endsWith("/")&&(v||x)&&(g.pathname+="/"),g}var Cn=r=>r.join("/").replace(/\/\/+/g,"/"),Fh=r=>r.replace(/\/+$/,"").replace(/^\/*/,"/"),$h=r=>!r||r==="?"?"":r.startsWith("?")?r:"?"+r,Uh=r=>!r||r==="#"?"":r.startsWith("#")?r:"#"+r;function Bh(r){return r!=null&&typeof r.status=="number"&&typeof r.statusText=="string"&&typeof r.internal=="boolean"&&"data"in r}var jf=["POST","PUT","PATCH","DELETE"];new Set(jf);var Wh=["GET",...jf];new Set(Wh);var Vr=y.createContext(null);Vr.displayName="DataRouter";var ji=y.createContext(null);ji.displayName="DataRouterState";y.createContext(!1);var Rf=y.createContext({isTransitioning:!1});Rf.displayName="ViewTransition";var Vh=y.createContext(new Map);Vh.displayName="Fetchers";var Hh=y.createContext(null);Hh.displayName="Await";var cn=y.createContext(null);cn.displayName="Navigation";var Yo=y.createContext(null);Yo.displayName="Location";var Nn=y.createContext({outlet:null,matches:[],isDataRoute:!1});Nn.displayName="Route";var Ba=y.createContext(null);Ba.displayName="RouteError";function Gh(r,{relative:l}={}){$e(Xo(),"useHref() may be used only in the context of a component.");let{basename:i,navigator:a}=y.useContext(cn),{hash:c,pathname:d,search:p}=qo(r,{relative:l}),h=d;return i!=="/"&&(h=d==="/"?i:Cn([i,d])),a.createHref({pathname:h,search:p,hash:c})}function Xo(){return y.useContext(Yo)!=null}function Jn(){return $e(Xo(),"useLocation() may be used only in the context of a component."),y.useContext(Yo).location}var Tf="You should call navigate() in a React.useEffect(), not when your component is first rendered.";function Pf(r){y.useContext(cn).static||y.useLayoutEffect(r)}function Ri(){let{isDataRoute:r}=y.useContext(Nn);return r?lg():Qh()}function Qh(){$e(Xo(),"useNavigate() may be used only in the context of a component.");let r=y.useContext(Vr),{basename:l,navigator:i}=y.useContext(cn),{matches:a}=y.useContext(Nn),{pathname:c}=Jn(),d=JSON.stringify(bf(a)),p=y.useRef(!1);return Pf(()=>{p.current=!0}),y.useCallback((g,v={})=>{if(un(p.current,Tf),!p.current)return;if(typeof g=="number"){i.go(g);return}let x=Nf(g,JSON.parse(d),c,v.relative==="path");r==null&&l!=="/"&&(x.pathname=x.pathname==="/"?l:Cn([l,x.pathname])),(v.replace?i.replace:i.push)(x,v.state,v)},[l,i,d,c,r])}y.createContext(null);function qo(r,{relative:l}={}){let{matches:i}=y.useContext(Nn),{pathname:a}=Jn(),c=JSON.stringify(bf(i));return y.useMemo(()=>Nf(r,JSON.parse(c),a,l==="path"),[r,c,a,l])}function Kh(r,l){return Df(r,l)}function Df(r,l,i,a,c){var L;$e(Xo(),"useRoutes() may be used only in the context of a component.");let{navigator:d}=y.useContext(cn),{matches:p}=y.useContext(Nn),h=p[p.length-1],g=h?h.params:{},v=h?h.pathname:"/",x=h?h.pathnameBase:"/",C=h&&h.route;{let O=C&&C.path||"";Lf(v,!C||O.endsWith("*")||O.endsWith("*?"),`You rendered descendant (or called \`useRoutes()\`) at "${v}" (under ) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render. - -Please change the parent to .`)}let N=Jn(),T;if(l){let O=typeof l=="string"?Wr(l):l;$e(x==="/"||((L=O.pathname)==null?void 0:L.startsWith(x)),`When overriding the location using \`\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${x}" but pathname "${O.pathname}" was given in the \`location\` prop.`),T=O}else T=N;let _=T.pathname||"/",S=_;if(x!=="/"){let O=x.replace(/^\//,"").split("/");S="/"+_.replace(/^\//,"").split("/").slice(O.length).join("/")}let P=Sf(r,{pathname:S});un(C||P!=null,`No routes matched location "${T.pathname}${T.search}${T.hash}" `),un(P==null||P[P.length-1].route.element!==void 0||P[P.length-1].route.Component!==void 0||P[P.length-1].route.lazy!==void 0,`Matched leaf route at location "${T.pathname}${T.search}${T.hash}" does not have an element or Component. This means it will render an with a null value by default resulting in an "empty" page.`);let F=Zh(P&&P.map(O=>Object.assign({},O,{params:Object.assign({},g,O.params),pathname:Cn([x,d.encodeLocation?d.encodeLocation(O.pathname).pathname:O.pathname]),pathnameBase:O.pathnameBase==="/"?x:Cn([x,d.encodeLocation?d.encodeLocation(O.pathnameBase).pathname:O.pathnameBase])})),p,i,a,c);return l&&F?y.createElement(Yo.Provider,{value:{location:{pathname:"/",search:"",hash:"",state:null,key:"default",...T},navigationType:"POP"}},F):F}function Yh(){let r=og(),l=Bh(r)?`${r.status} ${r.statusText}`:r instanceof Error?r.message:JSON.stringify(r),i=r instanceof Error?r.stack:null,a="rgba(200,200,200, 0.5)",c={padding:"0.5rem",backgroundColor:a},d={padding:"2px 4px",backgroundColor:a},p=null;return console.error("Error handled by React Router default ErrorBoundary:",r),p=y.createElement(y.Fragment,null,y.createElement("p",null,"💿 Hey developer 👋"),y.createElement("p",null,"You can provide a way better UX than this when your app throws errors by providing your own ",y.createElement("code",{style:d},"ErrorBoundary")," or"," ",y.createElement("code",{style:d},"errorElement")," prop on your route.")),y.createElement(y.Fragment,null,y.createElement("h2",null,"Unexpected Application Error!"),y.createElement("h3",{style:{fontStyle:"italic"}},l),i?y.createElement("pre",{style:c},i):null,p)}var Xh=y.createElement(Yh,null),qh=class extends y.Component{constructor(r){super(r),this.state={location:r.location,revalidation:r.revalidation,error:r.error}}static getDerivedStateFromError(r){return{error:r}}static getDerivedStateFromProps(r,l){return l.location!==r.location||l.revalidation!=="idle"&&r.revalidation==="idle"?{error:r.error,location:r.location,revalidation:r.revalidation}:{error:r.error!==void 0?r.error:l.error,location:l.location,revalidation:r.revalidation||l.revalidation}}componentDidCatch(r,l){this.props.unstable_onError?this.props.unstable_onError(r,l):console.error("React Router caught the following error during render",r)}render(){return this.state.error!==void 0?y.createElement(Nn.Provider,{value:this.props.routeContext},y.createElement(Ba.Provider,{value:this.state.error,children:this.props.component})):this.props.children}};function Jh({routeContext:r,match:l,children:i}){let a=y.useContext(Vr);return a&&a.static&&a.staticContext&&(l.route.errorElement||l.route.ErrorBoundary)&&(a.staticContext._deepestRenderedBoundaryId=l.route.id),y.createElement(Nn.Provider,{value:r},i)}function Zh(r,l=[],i=null,a=null,c=null){if(r==null){if(!i)return null;if(i.errors)r=i.matches;else if(l.length===0&&!i.initialized&&i.matches.length>0)r=i.matches;else return null}let d=r,p=i==null?void 0:i.errors;if(p!=null){let v=d.findIndex(x=>x.route.id&&(p==null?void 0:p[x.route.id])!==void 0);$e(v>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(p).join(",")}`),d=d.slice(0,Math.min(d.length,v+1))}let h=!1,g=-1;if(i)for(let v=0;v=0?d=d.slice(0,g+1):d=[d[0]];break}}}return d.reduceRight((v,x,C)=>{let N,T=!1,_=null,S=null;i&&(N=p&&x.route.id?p[x.route.id]:void 0,_=x.route.errorElement||Xh,h&&(g<0&&C===0?(Lf("route-fallback",!1,"No `HydrateFallback` element provided to render during initial hydration"),T=!0,S=null):g===C&&(T=!0,S=x.route.hydrateFallbackElement||null)));let P=l.concat(d.slice(0,C+1)),F=()=>{let L;return N?L=_:T?L=S:x.route.Component?L=y.createElement(x.route.Component,null):x.route.element?L=x.route.element:L=v,y.createElement(Jh,{match:x,routeContext:{outlet:v,matches:P,isDataRoute:i!=null},children:L})};return i&&(x.route.ErrorBoundary||x.route.errorElement||C===0)?y.createElement(qh,{location:i.location,revalidation:i.revalidation,component:_,error:N,children:F(),routeContext:{outlet:null,matches:P,isDataRoute:!0},unstable_onError:a}):F()},null)}function Wa(r){return`${r} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function eg(r){let l=y.useContext(Vr);return $e(l,Wa(r)),l}function tg(r){let l=y.useContext(ji);return $e(l,Wa(r)),l}function ng(r){let l=y.useContext(Nn);return $e(l,Wa(r)),l}function Va(r){let l=ng(r),i=l.matches[l.matches.length-1];return $e(i.route.id,`${r} can only be used on routes that contain a unique "id"`),i.route.id}function rg(){return Va("useRouteId")}function og(){var a;let r=y.useContext(Ba),l=tg("useRouteError"),i=Va("useRouteError");return r!==void 0?r:(a=l.errors)==null?void 0:a[i]}function lg(){let{router:r}=eg("useNavigate"),l=Va("useNavigate"),i=y.useRef(!1);return Pf(()=>{i.current=!0}),y.useCallback(async(c,d={})=>{un(i.current,Tf),i.current&&(typeof c=="number"?r.navigate(c):await r.navigate(c,{fromRouteId:l,...d}))},[r,l])}var Kd={};function Lf(r,l,i){!l&&!Kd[r]&&(Kd[r]=!0,un(!1,i))}y.memo(ig);function ig({routes:r,future:l,state:i,unstable_onError:a}){return Df(r,void 0,i,a,l)}function gi(r){$e(!1,"A is only ever to be used as the child of element, never rendered directly. Please wrap your in a .")}function sg({basename:r="/",children:l=null,location:i,navigationType:a="POP",navigator:c,static:d=!1}){$e(!Xo(),"You cannot render a inside another . You should never have more than one in your app.");let p=r.replace(/^\/*/,"/"),h=y.useMemo(()=>({basename:p,navigator:c,static:d,future:{}}),[p,c,d]);typeof i=="string"&&(i=Wr(i));let{pathname:g="/",search:v="",hash:x="",state:C=null,key:N="default"}=i,T=y.useMemo(()=>{let _=En(g,p);return _==null?null:{location:{pathname:_,search:v,hash:x,state:C,key:N},navigationType:a}},[p,g,v,x,C,N,a]);return un(T!=null,` is not able to match the URL "${g}${v}${x}" because it does not start with the basename, so the won't render anything.`),T==null?null:y.createElement(cn.Provider,{value:h},y.createElement(Yo.Provider,{children:l,value:T}))}function ag({children:r,location:l}){return Kh(_a(r),l)}function _a(r,l=[]){let i=[];return y.Children.forEach(r,(a,c)=>{if(!y.isValidElement(a))return;let d=[...l,c];if(a.type===y.Fragment){i.push.apply(i,_a(a.props.children,d));return}$e(a.type===gi,`[${typeof a.type=="string"?a.type:a.type.name}] is not a component. All component children of must be a or `),$e(!a.props.index||!a.props.children,"An index route cannot have child routes.");let p={id:a.props.id||d.join("-"),caseSensitive:a.props.caseSensitive,element:a.props.element,Component:a.props.Component,index:a.props.index,path:a.props.path,loader:a.props.loader,action:a.props.action,hydrateFallbackElement:a.props.hydrateFallbackElement,HydrateFallback:a.props.HydrateFallback,errorElement:a.props.errorElement,ErrorBoundary:a.props.ErrorBoundary,hasErrorBoundary:a.props.hasErrorBoundary===!0||a.props.ErrorBoundary!=null||a.props.errorElement!=null,shouldRevalidate:a.props.shouldRevalidate,handle:a.props.handle,lazy:a.props.lazy};a.props.children&&(p.children=_a(a.props.children,d)),i.push(p)}),i}var vi="get",yi="application/x-www-form-urlencoded";function Ti(r){return r!=null&&typeof r.tagName=="string"}function ug(r){return Ti(r)&&r.tagName.toLowerCase()==="button"}function cg(r){return Ti(r)&&r.tagName.toLowerCase()==="form"}function dg(r){return Ti(r)&&r.tagName.toLowerCase()==="input"}function fg(r){return!!(r.metaKey||r.altKey||r.ctrlKey||r.shiftKey)}function pg(r,l){return r.button===0&&(!l||l==="_self")&&!fg(r)}var pi=null;function mg(){if(pi===null)try{new FormData(document.createElement("form"),0),pi=!1}catch{pi=!0}return pi}var hg=new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);function Sa(r){return r!=null&&!hg.has(r)?(un(!1,`"${r}" is not a valid \`encType\` for \`
    \`/\`\` and will default to "${yi}"`),null):r}function gg(r,l){let i,a,c,d,p;if(cg(r)){let h=r.getAttribute("action");a=h?En(h,l):null,i=r.getAttribute("method")||vi,c=Sa(r.getAttribute("enctype"))||yi,d=new FormData(r)}else if(ug(r)||dg(r)&&(r.type==="submit"||r.type==="image")){let h=r.form;if(h==null)throw new Error('Cannot submit a +
    {/* Create/Edit Form */} {(showCreateForm || editingCategory) && ( - +

    {editingCategory ? 'Edit Category' : 'Create Category'}

    -
    +
    = ({ />
    -
    - -
    @@ -163,27 +163,27 @@ const CategoriesTab: React.FC = ({
    {sortedCategories.map((category) => ( -
    -
    -

    {category.name}

    +
    +
    +

    {category.name}

    ID: {category.id}

    {category.description && ( -

    {category.description}

    +

    {category.description}

    )} {category.question && ( -

    Q: {category.question}

    +

    Q: {category.question}

    )} -
    +
    Unit: {category.unit} Sort: {category.sort} Unit Visible: {category.unitVisible ? 'Yes' : 'No'}
    -
    - -
    diff --git a/frontend/src/components/admin/ItemsTab.tsx b/frontend/src/components/admin/ItemsTab.tsx index e61ca791eb..99dfdd9e0d 100644 --- a/frontend/src/components/admin/ItemsTab.tsx +++ b/frontend/src/components/admin/ItemsTab.tsx @@ -90,19 +90,19 @@ const ItemsTab: React.FC = ({ return (
    -
    +

    Items

    - +
    {/* Create/Edit Form */} {(showCreateForm || editingItem) && ( - +

    {editingItem ? 'Edit Item' : 'Create Item'}

    -
    +
    = ({ ))}
    -
    - -
    @@ -174,10 +174,11 @@ const ItemsTab: React.FC = ({ {/* Items List */}
    {/* Category Filter */} -
    +
    @@ -188,6 +189,7 @@ const ItemsTab: React.FC = ({ key={categoryId} variant={selectedCategoryFilter === categoryId ? 'primary' : 'outline'} onClick={() => setSelectedCategoryFilter(categoryId)} + className="text-xs sm:text-sm" > {category?.name || 'Unknown Category'} ({items[categoryId].length}) @@ -203,11 +205,11 @@ const ItemsTab: React.FC = ({
    {categoryItems.map((item) => ( -
    -
    -

    {item.name}

    +
    +
    +

    {item.name}

    ID: {item.id}

    -
    +
    Value: {item.value} Label: {item.label} @@ -215,11 +217,11 @@ const ItemsTab: React.FC = ({
    -
    - -
    diff --git a/frontend/src/lib/utils.ts b/frontend/src/lib/utils.ts index 419614a76e..72508922d0 100644 --- a/frontend/src/lib/utils.ts +++ b/frontend/src/lib/utils.ts @@ -6,5 +6,10 @@ export function cn(...inputs: ClassValue[]) { } export const shuffle = (arr: T[]): T[] => { - return [...arr].sort(() => Math.random() - 0.5); + const shuffled = [...arr]; + for (let i = shuffled.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]; + } + return shuffled; }; diff --git a/frontend/src/pages/AdminPage.tsx b/frontend/src/pages/AdminPage.tsx index be3b338797..c39542df74 100644 --- a/frontend/src/pages/AdminPage.tsx +++ b/frontend/src/pages/AdminPage.tsx @@ -103,16 +103,18 @@ const AdminPage: React.FC = () => {
    )} -
    +
    From 4f9e2a0ac0b9ff49ac4f382a60c9ba2e0f78b389 Mon Sep 17 00:00:00 2001 From: Idahel Date: Wed, 15 Oct 2025 13:55:52 +0200 Subject: [PATCH 121/127] removed unused interfaces from types.ts, removed import of logger.ts and replaced costum logger with consol log in seedDb and create admin --- backend/README.md | 102 +++------------------------- backend/src/services/createAdmin.ts | 10 +-- backend/src/services/seedDb.ts | 15 ++-- backend/src/types/quiz.ts | 28 +------- 4 files changed, 21 insertions(+), 134 deletions(-) diff --git a/backend/README.md b/backend/README.md index 5c33ec4fc6..335fa1620e 100644 --- a/backend/README.md +++ b/backend/README.md @@ -2,7 +2,7 @@ A Node.js/Express/TypeScript backend server for the Banganza quiz application. -## 🏗️ Architecture +## Architecture The backend follows a clean, layered architecture: @@ -15,37 +15,17 @@ src/ ├── routes/ # API route definitions ├── services/ # Business logic services ├── types/ # TypeScript type definitions -└── utils/ # Utility functions and classes ``` -## 🚀 Features -- **RESTful API** with consistent response format -- **JWT Authentication** for admin endpoints -- **MongoDB** with Mongoose ODM -- **TypeScript** for type safety -- **Structured logging** with context -- **Error handling** with custom error classes -- **Input validation** middleware -- **Environment configuration** validation - -## 📋 Prerequisites - -- Node.js 18+ -- MongoDB instance -- TypeScript knowledge - -## 🛠️ Installation +## Installation 1. Install dependencies: ```bash npm install ``` -2. Create a `.env` file based on `.env.example`: -```bash -cp .env.example .env -``` +2. Create a `.env` file 3. Configure environment variables in `.env`: ```env @@ -59,7 +39,7 @@ ADMIN_PASSWORD=secure_password ADMIN_EMAIL=admin@example.com ``` -## 🏃‍♂️ Running the Server +## Running the Server ### Development ```bash @@ -93,7 +73,7 @@ npm run create-admin - `npm run seed` - Seed database with sample data - `npm run create-admin` - Create initial admin user -## 📚 API Endpoints +## API Endpoints ### Public Endpoints - `GET /` - Health check @@ -115,7 +95,7 @@ npm run create-admin - `PUT /api/admin/items/:id` - Update item - `DELETE /api/admin/items/:id` - Delete item -## 🔐 Authentication +## Authentication Admin endpoints require JWT authentication. Include the token in the Authorization header: @@ -123,7 +103,7 @@ Admin endpoints require JWT authentication. Include the token in the Authorizati Authorization: Bearer ``` -## 📝 Response Format +## Response Format All API responses follow a consistent format: @@ -153,10 +133,10 @@ All API responses follow a consistent format: } ``` -## 🗄️ Database Models +## Database Models ### Admin -- Username, password (hashed), email +- Username, password, email - Active status and last login tracking ### Category @@ -165,66 +145,4 @@ All API responses follow a consistent format: ### Item - ID, name, value, label -- Category reference and source - -## 🛡️ Security Features - -- **Password hashing** with bcrypt -- **JWT tokens** with expiration -- **CORS configuration** for frontend -- **Input validation** middleware -- **Error sanitization** in production - -## 📊 Logging - -Structured logging with different levels: -- **ERROR** - Application errors -- **WARN** - Warning conditions -- **INFO** - General information -- **DEBUG** - Debug information (development only) - -## 🧪 Testing - -Run the linter and type checker: -```bash -npm run lint -npm run type-check -``` - -## 🚀 Deployment - -1. Set `NODE_ENV=production` -2. Configure production MongoDB URI -3. Set secure JWT secret -4. Build the application: `npm run build` -5. Start the server: `npm start` - -## 📁 Project Structure - -``` -backend/ -├── src/ -│ ├── config/ # Environment and database config -│ ├── controllers/ # Request handlers -│ ├── middleware/ # Express middleware -│ ├── models/ # Mongoose schemas -│ ├── routes/ # API routes -│ ├── services/ # Business logic -│ ├── types/ # TypeScript interfaces -│ └── utils/ # Utilities and helpers -├── data/ # Seed data files -├── dist/ # Compiled JavaScript -└── package.json # Dependencies and scripts -``` - -## 🤝 Contributing - -1. Follow TypeScript best practices -2. Use the established error handling patterns -3. Maintain consistent API response format -4. Add appropriate logging -5. Run linting before committing - -## 📄 License - -ISC License \ No newline at end of file +- Category reference and source \ No newline at end of file diff --git a/backend/src/services/createAdmin.ts b/backend/src/services/createAdmin.ts index 25e915008b..00e1df5fe5 100644 --- a/backend/src/services/createAdmin.ts +++ b/backend/src/services/createAdmin.ts @@ -1,7 +1,6 @@ import connectDB from '../config/database.js'; import { Admin } from '../models/Admin.js'; import { config } from '../config/environment.js'; -import { logger } from '../utils/logger.js'; const createInitialAdmin = async () => { try { @@ -10,7 +9,7 @@ const createInitialAdmin = async () => { // Check if admin already exists const existingAdmin = await Admin.findOne({ username: config.ADMIN_USERNAME }); if (existingAdmin) { - logger.info('Admin user already exists', 'CreateAdmin'); + console.log('[CreateAdmin] Admin user already exists'); process.exit(0); } @@ -23,14 +22,11 @@ const createInitialAdmin = async () => { }); await admin.save(); - logger.info('Initial admin user created successfully', 'CreateAdmin', { - username: config.ADMIN_USERNAME, - email: config.ADMIN_EMAIL, - }); + console.log(`[CreateAdmin] Initial admin user created successfully: ${config.ADMIN_USERNAME} (${config.ADMIN_EMAIL})`); process.exit(0); } catch (error) { - logger.error('Error creating admin user', 'CreateAdmin', error as Error); + console.error('[CreateAdmin] Error creating admin user', error); process.exit(1); } }; diff --git a/backend/src/services/seedDb.ts b/backend/src/services/seedDb.ts index 85f656f53a..113987e096 100644 --- a/backend/src/services/seedDb.ts +++ b/backend/src/services/seedDb.ts @@ -6,7 +6,6 @@ import { fileURLToPath } from 'url'; import { Item } from '../models/Item.js'; import { Category } from '../models/Category.js'; import { config } from '../config/environment.js'; -import { logger } from '../utils/logger.js'; // Get __dirname equivalent for ES modules const __filename = fileURLToPath(import.meta.url); @@ -18,7 +17,7 @@ const readJsonFile = (filePath: string) => { const fileContent = fs.readFileSync(filePath, 'utf-8'); return JSON.parse(fileContent); } catch (error) { - logger.error(`Error reading or parsing file: ${filePath}`, 'SeedDB', error as Error); + console.error(`[SeedDB] Error reading or parsing file: ${filePath}`, error); return null; } }; @@ -26,12 +25,12 @@ const readJsonFile = (filePath: string) => { const seedData = async () => { try { await mongoose.connect(config.MONGODB_URI); - logger.info('Connected to MongoDB', 'SeedDB'); + console.log('[SeedDB] Connected to MongoDB'); // Clear existing data to prevent duplicates on re-seed await Item.deleteMany({}); await Category.deleteMany({}); - logger.info('Existing data cleared', 'SeedDB'); + console.log('[SeedDB] Existing data cleared'); // Step 1: Read and seed Category data from JSON files const categoriesPath = path.join(__dirname, '../../data/categories'); @@ -41,7 +40,7 @@ const seedData = async () => { const categoryData = readJsonFile(path.join(categoriesPath, file)); if (categoryData) { await mongoose.connection.collection('categories').insertOne(categoryData); - logger.info(`Category "${categoryData.name}" seeded`, 'SeedDB'); + console.log(`[SeedDB] Category "${categoryData.name}" seeded`); } } @@ -53,15 +52,15 @@ const seedData = async () => { const itemsData = readJsonFile(path.join(itemsPath, file)); if (itemsData && Array.isArray(itemsData)) { await Item.insertMany(itemsData); - logger.info(`Items from file "${file}" seeded`, 'SeedDB'); + console.log(`[SeedDB] Items from file "${file}" seeded`); } } - logger.info('Database seeding complete!', 'SeedDB'); + console.log('[SeedDB] Database seeding complete!'); mongoose.connection.close(); } catch (error) { - logger.error('Database seeding failed', 'SeedDB', error as Error); + console.error('[SeedDB] Database seeding failed', error); mongoose.connection.close(); } }; diff --git a/backend/src/types/quiz.ts b/backend/src/types/quiz.ts index 38240be2e1..ece38d8579 100644 --- a/backend/src/types/quiz.ts +++ b/backend/src/types/quiz.ts @@ -24,30 +24,4 @@ export interface QuizCategory { url: string; }; version?: number; -} - -export interface QuizItemsResponse { - question: string; - unit: string; - unitVisible: boolean; - items: Omit[]; -} - -export interface QuizAnswer { - userAnswers: string[]; -} - -export interface QuizResponse { - success: boolean; - data?: QuizItemsResponse | QuizCheckResult; - error?: { - message: string; - stack?: string; - }; -} - -export interface QuizCheckResult { - isCorrect: boolean; - correctOrder?: QuizItem[]; - userOrder?: QuizItem[]; -} +} \ No newline at end of file From ad500c8d3ac7118ca6ee71402240f46314a4f71f Mon Sep 17 00:00:00 2001 From: Idahel Date: Wed, 15 Oct 2025 15:19:44 +0200 Subject: [PATCH 122/127] removed round from game mode, added a card count for current player --- frontend/src/components/GameBoard.tsx | 50 ++++++++++++++++++++++----- frontend/src/pages/GameMode.tsx | 14 +------- frontend/src/store/game.ts | 8 +++++ 3 files changed, 51 insertions(+), 21 deletions(-) diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index 1d9bee4d90..f253d08b2c 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -60,6 +60,7 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { const turnTimeline = useGame((s) => s.turnTimeline); const timer = useGame((s) => s.timer); const settings = useGame((s) => s.settings); + const wrongAnswerCard = useGame((s) => s.wrongAnswerCard); const team = teams[currentTeamIndex]; @@ -163,20 +164,32 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { phase === "PLACED_WRONG" || (lastTurnFeedback?.timeUp && lastTurnFeedback.correct === false) ) { - const heading = lastTurnFeedback?.timeUp ? "TIME’S UP!" : "OH NO!"; + const heading = lastTurnFeedback?.timeUp ? "TIME'S UP!" : "OH NO!"; return (
    -
    +
    - -
    +
    OH NO!
    -
    +
    Wrong answer. Your turn is over.
    + {wrongAnswerCard && ( +
    +
    + +
    +
    + )}
    @@ -261,7 +274,7 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { } return ( -
    +
    {children}
    @@ -294,6 +307,22 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { ); }; + const renderTimelineCounter = () => { + const isActiveTurn = phase === "DRAWN" || phase === "PLACED_PENDING" || phase === "CHOICE_AFTER_CORRECT"; + const currentTimeline = isActiveTurn ? turnTimeline : (team?.timeline ?? []); + const cardCount = currentTimeline.length; + + return ( +
    +
    + + Card{cardCount !== 1 ? 's' : ''}: {cardCount} + +
    +
    + ); + }; + const renderTimer = () => { if (phase !== "DRAWN" && phase !== "PLACED_PENDING" && phase !== "CHOICE_AFTER_CORRECT") { return null; @@ -372,9 +401,14 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => {
    - {renderTimer()} +
    + {renderTimer()} +
    -
    {renderTimeline()}
    +
    + {renderTimelineCounter()} + {renderTimeline()} +
    {phase === "DRAWN" && currentCard && lastPlacementCorrect !== false && !(lastTurnFeedback?.timeUp && lastTurnFeedback.correct === null) && (
    diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index fe1eb43e23..5a18436826 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -22,8 +22,6 @@ export default function GameMode() { const categoryLabel = "Category"; const categoryValue = selectedCategory?.name || "Select Category"; - const roundLabel = "Round"; - const roundValue = "1"; const scoreA = teams[0]?.timeline.length ?? 0; const scoreB = teams[1]?.timeline.length ?? 0; @@ -140,16 +138,6 @@ if (!selectedCategory) {
    )} - {phase !== "SETUP" && ( -
    - -
    - {roundLabel}:{" "} - {roundValue} -
    -
    - )} - {phase !== "SETUP" && (
    @@ -188,7 +176,7 @@ if (!selectedCategory) { <>
    -
    +
    Game Question
    ()((set, get) => { winner: null, lastTurnFeedback: null, + wrongAnswerCard: null, clearError: () => set({ error: null }), @@ -223,6 +225,7 @@ export const useGame = create()((set, get) => { pendingIndex: null, lastPlacementCorrect: null, lastTurnFeedback: null, + wrongAnswerCard: null, phase: "DRAWN", }); get().startTimer(); @@ -269,6 +272,7 @@ export const useGame = create()((set, get) => { pendingIndex: null, lastPlacementCorrect: false, phase: "PLACED_WRONG", + wrongAnswerCard: card, }); get().stopTimer(); } @@ -301,6 +305,7 @@ export const useGame = create()((set, get) => { ) as GameState["teams"], phase: "TURN_START", lastPlacementCorrect: null, + wrongAnswerCard: null, }); if (s.lastPlacementCorrect !== false) { @@ -325,6 +330,7 @@ export const useGame = create()((set, get) => { phase: "TURN_START", lastPlacementCorrect: null, lastTurnFeedback: null, + wrongAnswerCard: null, turnTimeline: nextTeam?.timeline?.slice() || [], }); }, @@ -405,6 +411,7 @@ export const useGame = create()((set, get) => { pendingIndex: null, lastPlacementCorrect: false, lastTurnFeedback: { timeUp: true, correct: false }, + wrongAnswerCard: s.currentCard, }); get().stopTimer(); return; @@ -488,6 +495,7 @@ export const useGame = create()((set, get) => { selectedCategory: null, winner: null, lastTurnFeedback: null, + wrongAnswerCard: null, timer: { turnDeadline: null, secondsLeft: initialSettings.turnSeconds, From d558672798c44c39d7af9452f02c4f677145180e Mon Sep 17 00:00:00 2001 From: Idahel Date: Wed, 15 Oct 2025 15:46:26 +0200 Subject: [PATCH 123/127] changes styling for cardcount --- frontend/src/components/GameBoard.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index f253d08b2c..0ee35f0278 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -314,8 +314,8 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { return (
    -
    - +
    + Card{cardCount !== 1 ? 's' : ''}: {cardCount}
    From deec89d33c0c788bb820a874ef10e682ee56b49c Mon Sep 17 00:00:00 2001 From: Idahel Date: Wed, 15 Oct 2025 16:30:05 +0200 Subject: [PATCH 124/127] made game mode top content absolute for better experience on mobile --- frontend/src/components/GameBoard.tsx | 8 ++++---- frontend/src/components/GameSettings.tsx | 4 ++-- frontend/src/pages/GameMode.tsx | 5 ++--- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/frontend/src/components/GameBoard.tsx b/frontend/src/components/GameBoard.tsx index 0ee35f0278..ffb01cbe16 100644 --- a/frontend/src/components/GameBoard.tsx +++ b/frontend/src/components/GameBoard.tsx @@ -172,7 +172,7 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => {
    OH NO!
    -
    +
    Wrong answer. Your turn is over. @@ -437,7 +437,7 @@ export const GameBoard: React.FC<{ className?: string }> = ({ className }) => { -
    +
    {phase === "TURN_START" && lastPlacementCorrect !== false && ( diff --git a/frontend/src/components/GameSettings.tsx b/frontend/src/components/GameSettings.tsx index 70c93689ca..fb767e2684 100644 --- a/frontend/src/components/GameSettings.tsx +++ b/frontend/src/components/GameSettings.tsx @@ -21,14 +21,14 @@ export const GameSettings: React.FC = ({ onClose, onContinue }) => { }; return ( -
    +
    {settings.teamNames.length} teams • {settings.turnSeconds}s per turn
    - +
    Teams
    diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index 5a18436826..7c3ec15ac7 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -30,7 +30,6 @@ export default function GameMode() { const chip = "px-2 py-1 rounded-full bg-primary/10 border border-[#f9ecdf] text-xs tracking-wider uppercase text-[#f9ecdf]"; - const dot = "inline-block w-2 h-2 rounded-sm bg-[#f9ecdf] shadow-soft"; const handleHomeClick = (e: React.MouseEvent) => { e.preventDefault(); @@ -87,7 +86,7 @@ if (!selectedCategory) { {phase !== "SETUP" && ( +)} +
    { aria-hidden="true" className="mx-auto w-[min(95vw,1800px)] h-auto text-[var(--color-base-400)]" /> -
    +
    +
    setShowInfo(false)} + aria-hidden="true" + /> +
    +
    +
    +

    + Game info +

    +

    + The goal of the game is to place 10 cards correctly according + to the rule for the chosen category. +

    +
    + +
    + +
    +
    +

    + Setup +

    +
      +
    • + + Choose a category. + {" "} + The category decides what you are comparing, for example + earlier vs later in time, lighter vs heavier, shorter vs + longer, or smaller vs larger values. +
    • +
    • + + Form your teams. + {" "} + 2–4 teams, any number of players. Each team gets one + starting card that begins their line. +
    • +
    • + + Pick turn time. + {" "} + Decide whether each turn should be 30, 60, or 90 seconds. +
    • +
    +
    + +
    +

    + Your turn +

    +
      +
    1. Draw the next card.
    2. +
    3. + Decide where it belongs on your team’s line based on the + category rule. +
    4. +
    5. Place the card and confirm your choice.
    6. +
    +

    + Correct:{" "} + The card stays on the line.{" "} + + Incorrect: + {" "} + The card is discarded. +

    +
    + +
    +

    + End of round +

    +

    + The first team with{" "} + + 10 correct cards + {" "} + on their line wins the round. +

    +
    + +
    +
    +
    + )}
    ); }; From e0901dc09e9e52bdea9237e1c73f20b6a19301f8 Mon Sep 17 00:00:00 2001 From: Tilde Egebrand <141025499+tildetilde@users.noreply.github.com> Date: Tue, 25 Nov 2025 09:46:24 +0100 Subject: [PATCH 127/127] Add in-game info modal to GameMode page Introduces an accessible info modal explaining game rules and setup, accessible via a new 'Info' button in both pre-game and in-game phases. The modal can be closed with the Escape key or a close button, improving user guidance and onboarding. --- frontend/src/pages/GameMode.tsx | 210 ++++++++++++++++++++++++++++++++ 1 file changed, 210 insertions(+) diff --git a/frontend/src/pages/GameMode.tsx b/frontend/src/pages/GameMode.tsx index 7c3ec15ac7..eb8ec2e871 100644 --- a/frontend/src/pages/GameMode.tsx +++ b/frontend/src/pages/GameMode.tsx @@ -19,6 +19,9 @@ export default function GameMode() { resetGame, } = useGame(); const [showConfirmModal, setShowConfirmModal] = React.useState(false); + const [showInfo, setShowInfo] = React.useState(false); + const infoTitleId = React.useId(); + const infoDescriptionId = `${infoTitleId}-desc`; const categoryLabel = "Category"; const categoryValue = selectedCategory?.name || "Select Category"; @@ -41,11 +44,35 @@ export default function GameMode() { navigate("/"); }; + React.useEffect(() => { + if (!showInfo) return; + const handleKeyDown = (event: KeyboardEvent) => { + if (event.key === "Escape") setShowInfo(false); + }; + window.addEventListener("keydown", handleKeyDown); + return () => window.removeEventListener("keydown", handleKeyDown); + }, [showInfo]); + + if (!selectedCategory) { return (
    +
    + + +
    +
    + {showInfo && ( +
    +
    setShowInfo(false)} + aria-hidden="true" + /> +
    +
    +
    +

    + Game info +

    +

    + The goal of the game is to place 10 cards correctly according + to the rule for the chosen category. +

    +
    + +
    + +
    +
    +

    + Setup +

    +
      +
    • + Choose a category.{" "} + The category decides what you are comparing, for example earlier vs later in time, lighter vs heavier, + shorter vs longer, or smaller vs larger values. +
    • +
    • + Form your teams.{" "} + 2–4 teams, any number of players. Each team gets one starting card that begins their line. +
    • +
    • + Pick turn time.{" "} + Decide whether each turn should be 30, 60, or 90 seconds. +
    • +
    +
    + +
    +

    + Your turn +

    +
      +
    1. Draw the next card.
    2. +
    3. Decide where it belongs on your team’s line based on the category rule.
    4. +
    5. Place the card and confirm your choice.
    6. +
    +

    + Correct: The card stays on the line.{" "} + Incorrect: The card is discarded. +

    +
    + +
    +

    + End of round +

    +

    + The first team with 10 correct cards on their line + wins the round. +

    +
    +
    +
    +
    + )} + setShowConfirmModal(false)} @@ -83,6 +203,22 @@ if (!selectedCategory) {
    + {phase !== "SETUP" && ( +
    + + +
    + )} + {phase !== "SETUP" && ( +
    + +
    + +
    +

    + Your turn +

    +
      +
    1. Draw the next card.
    2. +
    3. Decide where it belongs on your team’s line based on the category rule.
    4. +
    5. On the line, the lowest value goes on the left and the highest on the right.
    6. +
    7. Place the card and confirm your choice.
    8. +
    +

    + Correct: The card stays on the line.{" "} + Incorrect: The card is discarded. +

    +
    + +
    +

    + End of round +

    +

    + The first team with 10 correct cards on their line wins + the round. +

    +
    +
    +
    +
    + )}
    ); }