A daily game

Initial import

Malcolm Fell 12013af9

+5204
+7
.gitignore
···
··· 1 + node_modules 2 + dist 3 + .env* 4 + *.tsbuildinfo 5 + .cache 6 + .DS_Store 7 + *.pem
+21
components.json
···
··· 1 + { 2 + "$schema": "https://ui.shadcn.com/schema.json", 3 + "style": "new-york", 4 + "rsc": false, 5 + "tsx": true, 6 + "tailwind": { 7 + "config": "", 8 + "css": "src/styles.css", 9 + "baseColor": "neutral", 10 + "cssVariables": true, 11 + "prefix": "" 12 + }, 13 + "aliases": { 14 + "components": "@/components", 15 + "utils": "@/lib/utils", 16 + "ui": "@/components/ui", 17 + "lib": "@/lib", 18 + "hooks": "@/hooks" 19 + }, 20 + "iconLibrary": "lucide" 21 + }
+40
package.json
···
··· 1 + { 2 + "name": "ticks", 3 + "version": "0.0.0", 4 + "type": "module", 5 + "private": true, 6 + "scripts": { 7 + "dev": "waku dev", 8 + "build": "waku build --with-cloudflare", 9 + "start": "waku start" 10 + }, 11 + "dependencies": { 12 + "@fontsource-variable/dm-sans": "^5.2.8", 13 + "@hookform/resolvers": "^5.2.2", 14 + "@radix-ui/react-dialog": "^1.1.15", 15 + "@radix-ui/react-label": "^2.1.7", 16 + "@radix-ui/react-slot": "^1.2.3", 17 + "class-variance-authority": "^0.7.1", 18 + "clsx": "^2.1.1", 19 + "jotai": "^2.14.0", 20 + "lucide-react": "^0.544.0", 21 + "react": "19.1.1", 22 + "react-confetti": "^6.4.0", 23 + "react-dom": "19.1.1", 24 + "react-hook-form": "^7.63.0", 25 + "react-server-dom-webpack": "19.1.1", 26 + "tailwind-merge": "^3.3.1", 27 + "tw-animate-css": "^1.4.0", 28 + "waku": "0.26.1", 29 + "zod": "^4.1.11" 30 + }, 31 + "devDependencies": { 32 + "@tailwindcss/vite": "4.1.13", 33 + "@types/react": "19.1.12", 34 + "@types/react-dom": "19.1.9", 35 + "tailwindcss": "4.1.13", 36 + "typescript": "5.9.2", 37 + "wrangler": "^4.40.2" 38 + } 39 + } 40 +
+3700
pnpm-lock.yaml
···
··· 1 + lockfileVersion: '9.0' 2 + 3 + settings: 4 + autoInstallPeers: true 5 + excludeLinksFromLockfile: false 6 + 7 + importers: 8 + 9 + .: 10 + dependencies: 11 + '@fontsource-variable/dm-sans': 12 + specifier: ^5.2.8 13 + version: 5.2.8 14 + '@hookform/resolvers': 15 + specifier: ^5.2.2 16 + version: 5.2.2(react-hook-form@7.63.0(react@19.1.1)) 17 + '@radix-ui/react-dialog': 18 + specifier: ^1.1.15 19 + version: 1.1.15(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) 20 + '@radix-ui/react-label': 21 + specifier: ^2.1.7 22 + version: 2.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) 23 + '@radix-ui/react-slot': 24 + specifier: ^1.2.3 25 + version: 1.2.3(@types/react@19.1.12)(react@19.1.1) 26 + class-variance-authority: 27 + specifier: ^0.7.1 28 + version: 0.7.1 29 + clsx: 30 + specifier: ^2.1.1 31 + version: 2.1.1 32 + jotai: 33 + specifier: ^2.14.0 34 + version: 2.14.0(@babel/core@7.28.4)(@babel/template@7.27.2)(@types/react@19.1.12)(react@19.1.1) 35 + lucide-react: 36 + specifier: ^0.544.0 37 + version: 0.544.0(react@19.1.1) 38 + react: 39 + specifier: 19.1.1 40 + version: 19.1.1 41 + react-confetti: 42 + specifier: ^6.4.0 43 + version: 6.4.0(react@19.1.1) 44 + react-dom: 45 + specifier: 19.1.1 46 + version: 19.1.1(react@19.1.1) 47 + react-hook-form: 48 + specifier: ^7.63.0 49 + version: 7.63.0(react@19.1.1) 50 + react-server-dom-webpack: 51 + specifier: 19.1.1 52 + version: 19.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(webpack@5.101.3) 53 + tailwind-merge: 54 + specifier: ^3.3.1 55 + version: 3.3.1 56 + tw-animate-css: 57 + specifier: ^1.4.0 58 + version: 1.4.0 59 + waku: 60 + specifier: 0.26.1 61 + version: 0.26.1(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(react-dom@19.1.1(react@19.1.1))(react-server-dom-webpack@19.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(webpack@5.101.3))(react@19.1.1)(terser@5.44.0) 62 + zod: 63 + specifier: ^4.1.11 64 + version: 4.1.11 65 + devDependencies: 66 + '@tailwindcss/vite': 67 + specifier: 4.1.13 68 + version: 4.1.13(vite@7.1.5(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) 69 + '@types/react': 70 + specifier: 19.1.12 71 + version: 19.1.12 72 + '@types/react-dom': 73 + specifier: 19.1.9 74 + version: 19.1.9(@types/react@19.1.12) 75 + tailwindcss: 76 + specifier: 4.1.13 77 + version: 4.1.13 78 + typescript: 79 + specifier: 5.9.2 80 + version: 5.9.2 81 + wrangler: 82 + specifier: ^4.40.2 83 + version: 4.40.2 84 + 85 + packages: 86 + 87 + '@babel/code-frame@7.27.1': 88 + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} 89 + engines: {node: '>=6.9.0'} 90 + 91 + '@babel/compat-data@7.28.4': 92 + resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} 93 + engines: {node: '>=6.9.0'} 94 + 95 + '@babel/core@7.28.4': 96 + resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} 97 + engines: {node: '>=6.9.0'} 98 + 99 + '@babel/generator@7.28.3': 100 + resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} 101 + engines: {node: '>=6.9.0'} 102 + 103 + '@babel/helper-compilation-targets@7.27.2': 104 + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} 105 + engines: {node: '>=6.9.0'} 106 + 107 + '@babel/helper-globals@7.28.0': 108 + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} 109 + engines: {node: '>=6.9.0'} 110 + 111 + '@babel/helper-module-imports@7.27.1': 112 + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} 113 + engines: {node: '>=6.9.0'} 114 + 115 + '@babel/helper-module-transforms@7.28.3': 116 + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} 117 + engines: {node: '>=6.9.0'} 118 + peerDependencies: 119 + '@babel/core': ^7.0.0 120 + 121 + '@babel/helper-plugin-utils@7.27.1': 122 + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} 123 + engines: {node: '>=6.9.0'} 124 + 125 + '@babel/helper-string-parser@7.27.1': 126 + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} 127 + engines: {node: '>=6.9.0'} 128 + 129 + '@babel/helper-validator-identifier@7.27.1': 130 + resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} 131 + engines: {node: '>=6.9.0'} 132 + 133 + '@babel/helper-validator-option@7.27.1': 134 + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} 135 + engines: {node: '>=6.9.0'} 136 + 137 + '@babel/helpers@7.28.4': 138 + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} 139 + engines: {node: '>=6.9.0'} 140 + 141 + '@babel/parser@7.28.4': 142 + resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} 143 + engines: {node: '>=6.0.0'} 144 + hasBin: true 145 + 146 + '@babel/plugin-transform-react-jsx-self@7.27.1': 147 + resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} 148 + engines: {node: '>=6.9.0'} 149 + peerDependencies: 150 + '@babel/core': ^7.0.0-0 151 + 152 + '@babel/plugin-transform-react-jsx-source@7.27.1': 153 + resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==} 154 + engines: {node: '>=6.9.0'} 155 + peerDependencies: 156 + '@babel/core': ^7.0.0-0 157 + 158 + '@babel/template@7.27.2': 159 + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} 160 + engines: {node: '>=6.9.0'} 161 + 162 + '@babel/traverse@7.28.4': 163 + resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} 164 + engines: {node: '>=6.9.0'} 165 + 166 + '@babel/types@7.28.4': 167 + resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} 168 + engines: {node: '>=6.9.0'} 169 + 170 + '@cloudflare/kv-asset-handler@0.4.0': 171 + resolution: {integrity: sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA==} 172 + engines: {node: '>=18.0.0'} 173 + 174 + '@cloudflare/unenv-preset@2.7.4': 175 + resolution: {integrity: sha512-KIjbu/Dt50zseJIoOOK5y4eYpSojD9+xxkePYVK1Rg9k/p/st4YyMtz1Clju/zrenJHrOH+AAcjNArOPMwH4Bw==} 176 + peerDependencies: 177 + unenv: 2.0.0-rc.21 178 + workerd: ^1.20250912.0 179 + peerDependenciesMeta: 180 + workerd: 181 + optional: true 182 + 183 + '@cloudflare/workerd-darwin-64@1.20250924.0': 184 + resolution: {integrity: sha512-/+nWoNDIzdQaQib7MrWYEfeDt1vA40Ah68nXlZGXHonkIqJvkjaTP8dzdKZLuwnQokiV/SpnAXNMH0WGH31XMw==} 185 + engines: {node: '>=16'} 186 + cpu: [x64] 187 + os: [darwin] 188 + 189 + '@cloudflare/workerd-darwin-arm64@1.20250924.0': 190 + resolution: {integrity: sha512-UAjC5mra+WNWy6jMbIDe9orsFmYvvMlfvZdUyn5p3NlQhhU6cc4FkFuXJ/bV+6oVw5hIhlLlFCTnsGatki/uHg==} 191 + engines: {node: '>=16'} 192 + cpu: [arm64] 193 + os: [darwin] 194 + 195 + '@cloudflare/workerd-linux-64@1.20250924.0': 196 + resolution: {integrity: sha512-IcwaoZFXGHq+yOBEj91QZH4qU61ws5upE7T43wVcrUAk8VXgxL12IGUVkMCEqfFXTO40PjKZBmK16B2q1HoFow==} 197 + engines: {node: '>=16'} 198 + cpu: [x64] 199 + os: [linux] 200 + 201 + '@cloudflare/workerd-linux-arm64@1.20250924.0': 202 + resolution: {integrity: sha512-NgKG/cJiRNoJFa8QqweG0/bpkrUYKpR9mA9/qLJcGiwfvJrfK9b+ucw0lCru1BVMlyuS3kWDjagjMWqfujdBkA==} 203 + engines: {node: '>=16'} 204 + cpu: [arm64] 205 + os: [linux] 206 + 207 + '@cloudflare/workerd-windows-64@1.20250924.0': 208 + resolution: {integrity: sha512-PntewemtjgLO2+8Gjw3G/NowDjpWZNKpKk/n4KmOQaWS9jIRq3IG1LkTqxj/BbMXqa4Oyrywk2kdqspj6QllOw==} 209 + engines: {node: '>=16'} 210 + cpu: [x64] 211 + os: [win32] 212 + 213 + '@cspotcode/source-map-support@0.8.1': 214 + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 215 + engines: {node: '>=12'} 216 + 217 + '@emnapi/runtime@1.5.0': 218 + resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} 219 + 220 + '@esbuild/aix-ppc64@0.25.10': 221 + resolution: {integrity: sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==} 222 + engines: {node: '>=18'} 223 + cpu: [ppc64] 224 + os: [aix] 225 + 226 + '@esbuild/aix-ppc64@0.25.4': 227 + resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} 228 + engines: {node: '>=18'} 229 + cpu: [ppc64] 230 + os: [aix] 231 + 232 + '@esbuild/android-arm64@0.25.10': 233 + resolution: {integrity: sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==} 234 + engines: {node: '>=18'} 235 + cpu: [arm64] 236 + os: [android] 237 + 238 + '@esbuild/android-arm64@0.25.4': 239 + resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} 240 + engines: {node: '>=18'} 241 + cpu: [arm64] 242 + os: [android] 243 + 244 + '@esbuild/android-arm@0.25.10': 245 + resolution: {integrity: sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==} 246 + engines: {node: '>=18'} 247 + cpu: [arm] 248 + os: [android] 249 + 250 + '@esbuild/android-arm@0.25.4': 251 + resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} 252 + engines: {node: '>=18'} 253 + cpu: [arm] 254 + os: [android] 255 + 256 + '@esbuild/android-x64@0.25.10': 257 + resolution: {integrity: sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==} 258 + engines: {node: '>=18'} 259 + cpu: [x64] 260 + os: [android] 261 + 262 + '@esbuild/android-x64@0.25.4': 263 + resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} 264 + engines: {node: '>=18'} 265 + cpu: [x64] 266 + os: [android] 267 + 268 + '@esbuild/darwin-arm64@0.25.10': 269 + resolution: {integrity: sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==} 270 + engines: {node: '>=18'} 271 + cpu: [arm64] 272 + os: [darwin] 273 + 274 + '@esbuild/darwin-arm64@0.25.4': 275 + resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} 276 + engines: {node: '>=18'} 277 + cpu: [arm64] 278 + os: [darwin] 279 + 280 + '@esbuild/darwin-x64@0.25.10': 281 + resolution: {integrity: sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==} 282 + engines: {node: '>=18'} 283 + cpu: [x64] 284 + os: [darwin] 285 + 286 + '@esbuild/darwin-x64@0.25.4': 287 + resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} 288 + engines: {node: '>=18'} 289 + cpu: [x64] 290 + os: [darwin] 291 + 292 + '@esbuild/freebsd-arm64@0.25.10': 293 + resolution: {integrity: sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==} 294 + engines: {node: '>=18'} 295 + cpu: [arm64] 296 + os: [freebsd] 297 + 298 + '@esbuild/freebsd-arm64@0.25.4': 299 + resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} 300 + engines: {node: '>=18'} 301 + cpu: [arm64] 302 + os: [freebsd] 303 + 304 + '@esbuild/freebsd-x64@0.25.10': 305 + resolution: {integrity: sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==} 306 + engines: {node: '>=18'} 307 + cpu: [x64] 308 + os: [freebsd] 309 + 310 + '@esbuild/freebsd-x64@0.25.4': 311 + resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} 312 + engines: {node: '>=18'} 313 + cpu: [x64] 314 + os: [freebsd] 315 + 316 + '@esbuild/linux-arm64@0.25.10': 317 + resolution: {integrity: sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==} 318 + engines: {node: '>=18'} 319 + cpu: [arm64] 320 + os: [linux] 321 + 322 + '@esbuild/linux-arm64@0.25.4': 323 + resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} 324 + engines: {node: '>=18'} 325 + cpu: [arm64] 326 + os: [linux] 327 + 328 + '@esbuild/linux-arm@0.25.10': 329 + resolution: {integrity: sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==} 330 + engines: {node: '>=18'} 331 + cpu: [arm] 332 + os: [linux] 333 + 334 + '@esbuild/linux-arm@0.25.4': 335 + resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} 336 + engines: {node: '>=18'} 337 + cpu: [arm] 338 + os: [linux] 339 + 340 + '@esbuild/linux-ia32@0.25.10': 341 + resolution: {integrity: sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==} 342 + engines: {node: '>=18'} 343 + cpu: [ia32] 344 + os: [linux] 345 + 346 + '@esbuild/linux-ia32@0.25.4': 347 + resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} 348 + engines: {node: '>=18'} 349 + cpu: [ia32] 350 + os: [linux] 351 + 352 + '@esbuild/linux-loong64@0.25.10': 353 + resolution: {integrity: sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==} 354 + engines: {node: '>=18'} 355 + cpu: [loong64] 356 + os: [linux] 357 + 358 + '@esbuild/linux-loong64@0.25.4': 359 + resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} 360 + engines: {node: '>=18'} 361 + cpu: [loong64] 362 + os: [linux] 363 + 364 + '@esbuild/linux-mips64el@0.25.10': 365 + resolution: {integrity: sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==} 366 + engines: {node: '>=18'} 367 + cpu: [mips64el] 368 + os: [linux] 369 + 370 + '@esbuild/linux-mips64el@0.25.4': 371 + resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} 372 + engines: {node: '>=18'} 373 + cpu: [mips64el] 374 + os: [linux] 375 + 376 + '@esbuild/linux-ppc64@0.25.10': 377 + resolution: {integrity: sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==} 378 + engines: {node: '>=18'} 379 + cpu: [ppc64] 380 + os: [linux] 381 + 382 + '@esbuild/linux-ppc64@0.25.4': 383 + resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} 384 + engines: {node: '>=18'} 385 + cpu: [ppc64] 386 + os: [linux] 387 + 388 + '@esbuild/linux-riscv64@0.25.10': 389 + resolution: {integrity: sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==} 390 + engines: {node: '>=18'} 391 + cpu: [riscv64] 392 + os: [linux] 393 + 394 + '@esbuild/linux-riscv64@0.25.4': 395 + resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} 396 + engines: {node: '>=18'} 397 + cpu: [riscv64] 398 + os: [linux] 399 + 400 + '@esbuild/linux-s390x@0.25.10': 401 + resolution: {integrity: sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==} 402 + engines: {node: '>=18'} 403 + cpu: [s390x] 404 + os: [linux] 405 + 406 + '@esbuild/linux-s390x@0.25.4': 407 + resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} 408 + engines: {node: '>=18'} 409 + cpu: [s390x] 410 + os: [linux] 411 + 412 + '@esbuild/linux-x64@0.25.10': 413 + resolution: {integrity: sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==} 414 + engines: {node: '>=18'} 415 + cpu: [x64] 416 + os: [linux] 417 + 418 + '@esbuild/linux-x64@0.25.4': 419 + resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} 420 + engines: {node: '>=18'} 421 + cpu: [x64] 422 + os: [linux] 423 + 424 + '@esbuild/netbsd-arm64@0.25.10': 425 + resolution: {integrity: sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==} 426 + engines: {node: '>=18'} 427 + cpu: [arm64] 428 + os: [netbsd] 429 + 430 + '@esbuild/netbsd-arm64@0.25.4': 431 + resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} 432 + engines: {node: '>=18'} 433 + cpu: [arm64] 434 + os: [netbsd] 435 + 436 + '@esbuild/netbsd-x64@0.25.10': 437 + resolution: {integrity: sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==} 438 + engines: {node: '>=18'} 439 + cpu: [x64] 440 + os: [netbsd] 441 + 442 + '@esbuild/netbsd-x64@0.25.4': 443 + resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} 444 + engines: {node: '>=18'} 445 + cpu: [x64] 446 + os: [netbsd] 447 + 448 + '@esbuild/openbsd-arm64@0.25.10': 449 + resolution: {integrity: sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==} 450 + engines: {node: '>=18'} 451 + cpu: [arm64] 452 + os: [openbsd] 453 + 454 + '@esbuild/openbsd-arm64@0.25.4': 455 + resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} 456 + engines: {node: '>=18'} 457 + cpu: [arm64] 458 + os: [openbsd] 459 + 460 + '@esbuild/openbsd-x64@0.25.10': 461 + resolution: {integrity: sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==} 462 + engines: {node: '>=18'} 463 + cpu: [x64] 464 + os: [openbsd] 465 + 466 + '@esbuild/openbsd-x64@0.25.4': 467 + resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} 468 + engines: {node: '>=18'} 469 + cpu: [x64] 470 + os: [openbsd] 471 + 472 + '@esbuild/openharmony-arm64@0.25.10': 473 + resolution: {integrity: sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==} 474 + engines: {node: '>=18'} 475 + cpu: [arm64] 476 + os: [openharmony] 477 + 478 + '@esbuild/sunos-x64@0.25.10': 479 + resolution: {integrity: sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==} 480 + engines: {node: '>=18'} 481 + cpu: [x64] 482 + os: [sunos] 483 + 484 + '@esbuild/sunos-x64@0.25.4': 485 + resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} 486 + engines: {node: '>=18'} 487 + cpu: [x64] 488 + os: [sunos] 489 + 490 + '@esbuild/win32-arm64@0.25.10': 491 + resolution: {integrity: sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==} 492 + engines: {node: '>=18'} 493 + cpu: [arm64] 494 + os: [win32] 495 + 496 + '@esbuild/win32-arm64@0.25.4': 497 + resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} 498 + engines: {node: '>=18'} 499 + cpu: [arm64] 500 + os: [win32] 501 + 502 + '@esbuild/win32-ia32@0.25.10': 503 + resolution: {integrity: sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==} 504 + engines: {node: '>=18'} 505 + cpu: [ia32] 506 + os: [win32] 507 + 508 + '@esbuild/win32-ia32@0.25.4': 509 + resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} 510 + engines: {node: '>=18'} 511 + cpu: [ia32] 512 + os: [win32] 513 + 514 + '@esbuild/win32-x64@0.25.10': 515 + resolution: {integrity: sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==} 516 + engines: {node: '>=18'} 517 + cpu: [x64] 518 + os: [win32] 519 + 520 + '@esbuild/win32-x64@0.25.4': 521 + resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} 522 + engines: {node: '>=18'} 523 + cpu: [x64] 524 + os: [win32] 525 + 526 + '@fontsource-variable/dm-sans@5.2.8': 527 + resolution: {integrity: sha512-AxkvMTvNWgfrmlyjiV05vlHYJa+nRQCf1EfvIrQAPBpFJW0O9VTz7oAFr9S3lvbWdmnFoBk7yFqQL86u64nl2g==} 528 + 529 + '@hono/node-server@1.19.1': 530 + resolution: {integrity: sha512-h44e5s+ByUriaRIbeS/C74O8v90m0A95luyYQGMF7KEn96KkYMXO7bZAwombzTpjQTU4e0TkU8U1WBIXlwuwtA==} 531 + engines: {node: '>=18.14.1'} 532 + peerDependencies: 533 + hono: ^4 534 + 535 + '@hookform/resolvers@5.2.2': 536 + resolution: {integrity: sha512-A/IxlMLShx3KjV/HeTcTfaMxdwy690+L/ZADoeaTltLx+CVuzkeVIPuybK3jrRfw7YZnmdKsVVHAlEPIAEUNlA==} 537 + peerDependencies: 538 + react-hook-form: ^7.55.0 539 + 540 + '@img/sharp-darwin-arm64@0.33.5': 541 + resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==} 542 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 543 + cpu: [arm64] 544 + os: [darwin] 545 + 546 + '@img/sharp-darwin-x64@0.33.5': 547 + resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==} 548 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 549 + cpu: [x64] 550 + os: [darwin] 551 + 552 + '@img/sharp-libvips-darwin-arm64@1.0.4': 553 + resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==} 554 + cpu: [arm64] 555 + os: [darwin] 556 + 557 + '@img/sharp-libvips-darwin-x64@1.0.4': 558 + resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==} 559 + cpu: [x64] 560 + os: [darwin] 561 + 562 + '@img/sharp-libvips-linux-arm64@1.0.4': 563 + resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==} 564 + cpu: [arm64] 565 + os: [linux] 566 + 567 + '@img/sharp-libvips-linux-arm@1.0.5': 568 + resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} 569 + cpu: [arm] 570 + os: [linux] 571 + 572 + '@img/sharp-libvips-linux-s390x@1.0.4': 573 + resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==} 574 + cpu: [s390x] 575 + os: [linux] 576 + 577 + '@img/sharp-libvips-linux-x64@1.0.4': 578 + resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==} 579 + cpu: [x64] 580 + os: [linux] 581 + 582 + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': 583 + resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} 584 + cpu: [arm64] 585 + os: [linux] 586 + 587 + '@img/sharp-libvips-linuxmusl-x64@1.0.4': 588 + resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==} 589 + cpu: [x64] 590 + os: [linux] 591 + 592 + '@img/sharp-linux-arm64@0.33.5': 593 + resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==} 594 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 595 + cpu: [arm64] 596 + os: [linux] 597 + 598 + '@img/sharp-linux-arm@0.33.5': 599 + resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==} 600 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 601 + cpu: [arm] 602 + os: [linux] 603 + 604 + '@img/sharp-linux-s390x@0.33.5': 605 + resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==} 606 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 607 + cpu: [s390x] 608 + os: [linux] 609 + 610 + '@img/sharp-linux-x64@0.33.5': 611 + resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==} 612 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 613 + cpu: [x64] 614 + os: [linux] 615 + 616 + '@img/sharp-linuxmusl-arm64@0.33.5': 617 + resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==} 618 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 619 + cpu: [arm64] 620 + os: [linux] 621 + 622 + '@img/sharp-linuxmusl-x64@0.33.5': 623 + resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==} 624 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 625 + cpu: [x64] 626 + os: [linux] 627 + 628 + '@img/sharp-wasm32@0.33.5': 629 + resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==} 630 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 631 + cpu: [wasm32] 632 + 633 + '@img/sharp-win32-ia32@0.33.5': 634 + resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==} 635 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 636 + cpu: [ia32] 637 + os: [win32] 638 + 639 + '@img/sharp-win32-x64@0.33.5': 640 + resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==} 641 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 642 + cpu: [x64] 643 + os: [win32] 644 + 645 + '@isaacs/fs-minipass@4.0.1': 646 + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} 647 + engines: {node: '>=18.0.0'} 648 + 649 + '@jridgewell/gen-mapping@0.3.13': 650 + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} 651 + 652 + '@jridgewell/remapping@2.3.5': 653 + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} 654 + 655 + '@jridgewell/resolve-uri@3.1.2': 656 + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 657 + engines: {node: '>=6.0.0'} 658 + 659 + '@jridgewell/source-map@0.3.11': 660 + resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} 661 + 662 + '@jridgewell/sourcemap-codec@1.5.5': 663 + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} 664 + 665 + '@jridgewell/trace-mapping@0.3.31': 666 + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} 667 + 668 + '@jridgewell/trace-mapping@0.3.9': 669 + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 670 + 671 + '@poppinss/colors@4.1.5': 672 + resolution: {integrity: sha512-FvdDqtcRCtz6hThExcFOgW0cWX+xwSMWcRuQe5ZEb2m7cVQOAVZOIMt+/v9RxGiD9/OY16qJBXK4CVKWAPalBw==} 673 + 674 + '@poppinss/dumper@0.6.4': 675 + resolution: {integrity: sha512-iG0TIdqv8xJ3Lt9O8DrPRxw1MRLjNpoqiSGU03P/wNLP/s0ra0udPJ1J2Tx5M0J3H/cVyEgpbn8xUKRY9j59kQ==} 676 + 677 + '@poppinss/exception@1.2.2': 678 + resolution: {integrity: sha512-m7bpKCD4QMlFCjA/nKTs23fuvoVFoA83brRKmObCUNmi/9tVu8Ve3w4YQAnJu4q3Tjf5fr685HYIC/IA2zHRSg==} 679 + 680 + '@radix-ui/primitive@1.1.3': 681 + resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} 682 + 683 + '@radix-ui/react-compose-refs@1.1.2': 684 + resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} 685 + peerDependencies: 686 + '@types/react': '*' 687 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 688 + peerDependenciesMeta: 689 + '@types/react': 690 + optional: true 691 + 692 + '@radix-ui/react-context@1.1.2': 693 + resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} 694 + peerDependencies: 695 + '@types/react': '*' 696 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 697 + peerDependenciesMeta: 698 + '@types/react': 699 + optional: true 700 + 701 + '@radix-ui/react-dialog@1.1.15': 702 + resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==} 703 + peerDependencies: 704 + '@types/react': '*' 705 + '@types/react-dom': '*' 706 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 707 + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 708 + peerDependenciesMeta: 709 + '@types/react': 710 + optional: true 711 + '@types/react-dom': 712 + optional: true 713 + 714 + '@radix-ui/react-dismissable-layer@1.1.11': 715 + resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} 716 + peerDependencies: 717 + '@types/react': '*' 718 + '@types/react-dom': '*' 719 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 720 + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 721 + peerDependenciesMeta: 722 + '@types/react': 723 + optional: true 724 + '@types/react-dom': 725 + optional: true 726 + 727 + '@radix-ui/react-focus-guards@1.1.3': 728 + resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==} 729 + peerDependencies: 730 + '@types/react': '*' 731 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 732 + peerDependenciesMeta: 733 + '@types/react': 734 + optional: true 735 + 736 + '@radix-ui/react-focus-scope@1.1.7': 737 + resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} 738 + peerDependencies: 739 + '@types/react': '*' 740 + '@types/react-dom': '*' 741 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 742 + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 743 + peerDependenciesMeta: 744 + '@types/react': 745 + optional: true 746 + '@types/react-dom': 747 + optional: true 748 + 749 + '@radix-ui/react-id@1.1.1': 750 + resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} 751 + peerDependencies: 752 + '@types/react': '*' 753 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 754 + peerDependenciesMeta: 755 + '@types/react': 756 + optional: true 757 + 758 + '@radix-ui/react-label@2.1.7': 759 + resolution: {integrity: sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==} 760 + peerDependencies: 761 + '@types/react': '*' 762 + '@types/react-dom': '*' 763 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 764 + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 765 + peerDependenciesMeta: 766 + '@types/react': 767 + optional: true 768 + '@types/react-dom': 769 + optional: true 770 + 771 + '@radix-ui/react-portal@1.1.9': 772 + resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} 773 + peerDependencies: 774 + '@types/react': '*' 775 + '@types/react-dom': '*' 776 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 777 + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 778 + peerDependenciesMeta: 779 + '@types/react': 780 + optional: true 781 + '@types/react-dom': 782 + optional: true 783 + 784 + '@radix-ui/react-presence@1.1.5': 785 + resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} 786 + peerDependencies: 787 + '@types/react': '*' 788 + '@types/react-dom': '*' 789 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 790 + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 791 + peerDependenciesMeta: 792 + '@types/react': 793 + optional: true 794 + '@types/react-dom': 795 + optional: true 796 + 797 + '@radix-ui/react-primitive@2.1.3': 798 + resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} 799 + peerDependencies: 800 + '@types/react': '*' 801 + '@types/react-dom': '*' 802 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 803 + react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 804 + peerDependenciesMeta: 805 + '@types/react': 806 + optional: true 807 + '@types/react-dom': 808 + optional: true 809 + 810 + '@radix-ui/react-slot@1.2.3': 811 + resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} 812 + peerDependencies: 813 + '@types/react': '*' 814 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 815 + peerDependenciesMeta: 816 + '@types/react': 817 + optional: true 818 + 819 + '@radix-ui/react-use-callback-ref@1.1.1': 820 + resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} 821 + peerDependencies: 822 + '@types/react': '*' 823 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 824 + peerDependenciesMeta: 825 + '@types/react': 826 + optional: true 827 + 828 + '@radix-ui/react-use-controllable-state@1.2.2': 829 + resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} 830 + peerDependencies: 831 + '@types/react': '*' 832 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 833 + peerDependenciesMeta: 834 + '@types/react': 835 + optional: true 836 + 837 + '@radix-ui/react-use-effect-event@0.0.2': 838 + resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} 839 + peerDependencies: 840 + '@types/react': '*' 841 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 842 + peerDependenciesMeta: 843 + '@types/react': 844 + optional: true 845 + 846 + '@radix-ui/react-use-escape-keydown@1.1.1': 847 + resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} 848 + peerDependencies: 849 + '@types/react': '*' 850 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 851 + peerDependenciesMeta: 852 + '@types/react': 853 + optional: true 854 + 855 + '@radix-ui/react-use-layout-effect@1.1.1': 856 + resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} 857 + peerDependencies: 858 + '@types/react': '*' 859 + react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 860 + peerDependenciesMeta: 861 + '@types/react': 862 + optional: true 863 + 864 + '@remix-run/node-fetch-server@0.8.1': 865 + resolution: {integrity: sha512-J1dev372wtJqmqn9U/qbpbZxbJSQrogNN2+Qv1lKlpATpe/WQ9aCZfl/xSb9d2Rgh1IyLSvNxZAXPZxruO6Xig==} 866 + 867 + '@rolldown/pluginutils@1.0.0-beta.34': 868 + resolution: {integrity: sha512-LyAREkZHP5pMom7c24meKmJCdhf2hEyvam2q0unr3or9ydwDL+DJ8chTF6Av/RFPb3rH8UFBdMzO5MxTZW97oA==} 869 + 870 + '@rollup/rollup-android-arm-eabi@4.50.2': 871 + resolution: {integrity: sha512-uLN8NAiFVIRKX9ZQha8wy6UUs06UNSZ32xj6giK/rmMXAgKahwExvK6SsmgU5/brh4w/nSgj8e0k3c1HBQpa0A==} 872 + cpu: [arm] 873 + os: [android] 874 + 875 + '@rollup/rollup-android-arm64@4.50.2': 876 + resolution: {integrity: sha512-oEouqQk2/zxxj22PNcGSskya+3kV0ZKH+nQxuCCOGJ4oTXBdNTbv+f/E3c74cNLeMO1S5wVWacSws10TTSB77g==} 877 + cpu: [arm64] 878 + os: [android] 879 + 880 + '@rollup/rollup-darwin-arm64@4.50.2': 881 + resolution: {integrity: sha512-OZuTVTpj3CDSIxmPgGH8en/XtirV5nfljHZ3wrNwvgkT5DQLhIKAeuFSiwtbMto6oVexV0k1F1zqURPKf5rI1Q==} 882 + cpu: [arm64] 883 + os: [darwin] 884 + 885 + '@rollup/rollup-darwin-x64@4.50.2': 886 + resolution: {integrity: sha512-Wa/Wn8RFkIkr1vy1k1PB//VYhLnlnn5eaJkfTQKivirOvzu5uVd2It01ukeQstMursuz7S1bU+8WW+1UPXpa8A==} 887 + cpu: [x64] 888 + os: [darwin] 889 + 890 + '@rollup/rollup-freebsd-arm64@4.50.2': 891 + resolution: {integrity: sha512-QkzxvH3kYN9J1w7D1A+yIMdI1pPekD+pWx7G5rXgnIlQ1TVYVC6hLl7SOV9pi5q9uIDF9AuIGkuzcbF7+fAhow==} 892 + cpu: [arm64] 893 + os: [freebsd] 894 + 895 + '@rollup/rollup-freebsd-x64@4.50.2': 896 + resolution: {integrity: sha512-dkYXB0c2XAS3a3jmyDkX4Jk0m7gWLFzq1C3qUnJJ38AyxIF5G/dyS4N9B30nvFseCfgtCEdbYFhk0ChoCGxPog==} 897 + cpu: [x64] 898 + os: [freebsd] 899 + 900 + '@rollup/rollup-linux-arm-gnueabihf@4.50.2': 901 + resolution: {integrity: sha512-9VlPY/BN3AgbukfVHAB8zNFWB/lKEuvzRo1NKev0Po8sYFKx0i+AQlCYftgEjcL43F2h9Ui1ZSdVBc4En/sP2w==} 902 + cpu: [arm] 903 + os: [linux] 904 + 905 + '@rollup/rollup-linux-arm-musleabihf@4.50.2': 906 + resolution: {integrity: sha512-+GdKWOvsifaYNlIVf07QYan1J5F141+vGm5/Y8b9uCZnG/nxoGqgCmR24mv0koIWWuqvFYnbURRqw1lv7IBINw==} 907 + cpu: [arm] 908 + os: [linux] 909 + 910 + '@rollup/rollup-linux-arm64-gnu@4.50.2': 911 + resolution: {integrity: sha512-df0Eou14ojtUdLQdPFnymEQteENwSJAdLf5KCDrmZNsy1c3YaCNaJvYsEUHnrg+/DLBH612/R0xd3dD03uz2dg==} 912 + cpu: [arm64] 913 + os: [linux] 914 + 915 + '@rollup/rollup-linux-arm64-musl@4.50.2': 916 + resolution: {integrity: sha512-iPeouV0UIDtz8j1YFR4OJ/zf7evjauqv7jQ/EFs0ClIyL+by++hiaDAfFipjOgyz6y6xbDvJuiU4HwpVMpRFDQ==} 917 + cpu: [arm64] 918 + os: [linux] 919 + 920 + '@rollup/rollup-linux-loong64-gnu@4.50.2': 921 + resolution: {integrity: sha512-OL6KaNvBopLlj5fTa5D5bau4W82f+1TyTZRr2BdnfsrnQnmdxh4okMxR2DcDkJuh4KeoQZVuvHvzuD/lyLn2Kw==} 922 + cpu: [loong64] 923 + os: [linux] 924 + 925 + '@rollup/rollup-linux-ppc64-gnu@4.50.2': 926 + resolution: {integrity: sha512-I21VJl1w6z/K5OTRl6aS9DDsqezEZ/yKpbqlvfHbW0CEF5IL8ATBMuUx6/mp683rKTK8thjs/0BaNrZLXetLag==} 927 + cpu: [ppc64] 928 + os: [linux] 929 + 930 + '@rollup/rollup-linux-riscv64-gnu@4.50.2': 931 + resolution: {integrity: sha512-Hq6aQJT/qFFHrYMjS20nV+9SKrXL2lvFBENZoKfoTH2kKDOJqff5OSJr4x72ZaG/uUn+XmBnGhfr4lwMRrmqCQ==} 932 + cpu: [riscv64] 933 + os: [linux] 934 + 935 + '@rollup/rollup-linux-riscv64-musl@4.50.2': 936 + resolution: {integrity: sha512-82rBSEXRv5qtKyr0xZ/YMF531oj2AIpLZkeNYxmKNN6I2sVE9PGegN99tYDLK2fYHJITL1P2Lgb4ZXnv0PjQvw==} 937 + cpu: [riscv64] 938 + os: [linux] 939 + 940 + '@rollup/rollup-linux-s390x-gnu@4.50.2': 941 + resolution: {integrity: sha512-4Q3S3Hy7pC6uaRo9gtXUTJ+EKo9AKs3BXKc2jYypEcMQ49gDPFU2P1ariX9SEtBzE5egIX6fSUmbmGazwBVF9w==} 942 + cpu: [s390x] 943 + os: [linux] 944 + 945 + '@rollup/rollup-linux-x64-gnu@4.50.2': 946 + resolution: {integrity: sha512-9Jie/At6qk70dNIcopcL4p+1UirusEtznpNtcq/u/C5cC4HBX7qSGsYIcG6bdxj15EYWhHiu02YvmdPzylIZlA==} 947 + cpu: [x64] 948 + os: [linux] 949 + 950 + '@rollup/rollup-linux-x64-musl@4.50.2': 951 + resolution: {integrity: sha512-HPNJwxPL3EmhzeAnsWQCM3DcoqOz3/IC6de9rWfGR8ZCuEHETi9km66bH/wG3YH0V3nyzyFEGUZeL5PKyy4xvw==} 952 + cpu: [x64] 953 + os: [linux] 954 + 955 + '@rollup/rollup-openharmony-arm64@4.50.2': 956 + resolution: {integrity: sha512-nMKvq6FRHSzYfKLHZ+cChowlEkR2lj/V0jYj9JnGUVPL2/mIeFGmVM2mLaFeNa5Jev7W7TovXqXIG2d39y1KYA==} 957 + cpu: [arm64] 958 + os: [openharmony] 959 + 960 + '@rollup/rollup-win32-arm64-msvc@4.50.2': 961 + resolution: {integrity: sha512-eFUvvnTYEKeTyHEijQKz81bLrUQOXKZqECeiWH6tb8eXXbZk+CXSG2aFrig2BQ/pjiVRj36zysjgILkqarS2YA==} 962 + cpu: [arm64] 963 + os: [win32] 964 + 965 + '@rollup/rollup-win32-ia32-msvc@4.50.2': 966 + resolution: {integrity: sha512-cBaWmXqyfRhH8zmUxK3d3sAhEWLrtMjWBRwdMMHJIXSjvjLKvv49adxiEz+FJ8AP90apSDDBx2Tyd/WylV6ikA==} 967 + cpu: [ia32] 968 + os: [win32] 969 + 970 + '@rollup/rollup-win32-x64-msvc@4.50.2': 971 + resolution: {integrity: sha512-APwKy6YUhvZaEoHyM+9xqmTpviEI+9eL7LoCH+aLcvWYHJ663qG5zx7WzWZY+a9qkg5JtzcMyJ9z0WtQBMDmgA==} 972 + cpu: [x64] 973 + os: [win32] 974 + 975 + '@sindresorhus/is@7.1.0': 976 + resolution: {integrity: sha512-7F/yz2IphV39hiS2zB4QYVkivrptHHh0K8qJJd9HhuWSdvf8AN7NpebW3CcDZDBQsUPMoDKWsY2WWgW7bqOcfA==} 977 + engines: {node: '>=18'} 978 + 979 + '@speed-highlight/core@1.2.7': 980 + resolution: {integrity: sha512-0dxmVj4gxg3Jg879kvFS/msl4s9F3T9UXC1InxgOf7t5NvcPD97u/WTA5vL/IxWHMn7qSxBozqrnnE2wvl1m8g==} 981 + 982 + '@standard-schema/utils@0.3.0': 983 + resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==} 984 + 985 + '@swc/core-darwin-arm64@1.13.5': 986 + resolution: {integrity: sha512-lKNv7SujeXvKn16gvQqUQI5DdyY8v7xcoO3k06/FJbHJS90zEwZdQiMNRiqpYw/orU543tPaWgz7cIYWhbopiQ==} 987 + engines: {node: '>=10'} 988 + cpu: [arm64] 989 + os: [darwin] 990 + 991 + '@swc/core-darwin-x64@1.13.5': 992 + resolution: {integrity: sha512-ILd38Fg/w23vHb0yVjlWvQBoE37ZJTdlLHa8LRCFDdX4WKfnVBiblsCU9ar4QTMNdeTBEX9iUF4IrbNWhaF1Ng==} 993 + engines: {node: '>=10'} 994 + cpu: [x64] 995 + os: [darwin] 996 + 997 + '@swc/core-linux-arm-gnueabihf@1.13.5': 998 + resolution: {integrity: sha512-Q6eS3Pt8GLkXxqz9TAw+AUk9HpVJt8Uzm54MvPsqp2yuGmY0/sNaPPNVqctCX9fu/Nu8eaWUen0si6iEiCsazQ==} 999 + engines: {node: '>=10'} 1000 + cpu: [arm] 1001 + os: [linux] 1002 + 1003 + '@swc/core-linux-arm64-gnu@1.13.5': 1004 + resolution: {integrity: sha512-aNDfeN+9af+y+M2MYfxCzCy/VDq7Z5YIbMqRI739o8Ganz6ST+27kjQFd8Y/57JN/hcnUEa9xqdS3XY7WaVtSw==} 1005 + engines: {node: '>=10'} 1006 + cpu: [arm64] 1007 + os: [linux] 1008 + 1009 + '@swc/core-linux-arm64-musl@1.13.5': 1010 + resolution: {integrity: sha512-9+ZxFN5GJag4CnYnq6apKTnnezpfJhCumyz0504/JbHLo+Ue+ZtJnf3RhyA9W9TINtLE0bC4hKpWi8ZKoETyOQ==} 1011 + engines: {node: '>=10'} 1012 + cpu: [arm64] 1013 + os: [linux] 1014 + 1015 + '@swc/core-linux-x64-gnu@1.13.5': 1016 + resolution: {integrity: sha512-WD530qvHrki8Ywt/PloKUjaRKgstQqNGvmZl54g06kA+hqtSE2FTG9gngXr3UJxYu/cNAjJYiBifm7+w4nbHbA==} 1017 + engines: {node: '>=10'} 1018 + cpu: [x64] 1019 + os: [linux] 1020 + 1021 + '@swc/core-linux-x64-musl@1.13.5': 1022 + resolution: {integrity: sha512-Luj8y4OFYx4DHNQTWjdIuKTq2f5k6uSXICqx+FSabnXptaOBAbJHNbHT/06JZh6NRUouaf0mYXN0mcsqvkhd7Q==} 1023 + engines: {node: '>=10'} 1024 + cpu: [x64] 1025 + os: [linux] 1026 + 1027 + '@swc/core-win32-arm64-msvc@1.13.5': 1028 + resolution: {integrity: sha512-cZ6UpumhF9SDJvv4DA2fo9WIzlNFuKSkZpZmPG1c+4PFSEMy5DFOjBSllCvnqihCabzXzpn6ykCwBmHpy31vQw==} 1029 + engines: {node: '>=10'} 1030 + cpu: [arm64] 1031 + os: [win32] 1032 + 1033 + '@swc/core-win32-ia32-msvc@1.13.5': 1034 + resolution: {integrity: sha512-C5Yi/xIikrFUzZcyGj9L3RpKljFvKiDMtyDzPKzlsDrKIw2EYY+bF88gB6oGY5RGmv4DAX8dbnpRAqgFD0FMEw==} 1035 + engines: {node: '>=10'} 1036 + cpu: [ia32] 1037 + os: [win32] 1038 + 1039 + '@swc/core-win32-x64-msvc@1.13.5': 1040 + resolution: {integrity: sha512-YrKdMVxbYmlfybCSbRtrilc6UA8GF5aPmGKBdPvjrarvsmf4i7ZHGCEnLtfOMd3Lwbs2WUZq3WdMbozYeLU93Q==} 1041 + engines: {node: '>=10'} 1042 + cpu: [x64] 1043 + os: [win32] 1044 + 1045 + '@swc/core@1.13.5': 1046 + resolution: {integrity: sha512-WezcBo8a0Dg2rnR82zhwoR6aRNxeTGfK5QCD6TQ+kg3xx/zNT02s/0o+81h/3zhvFSB24NtqEr8FTw88O5W/JQ==} 1047 + engines: {node: '>=10'} 1048 + peerDependencies: 1049 + '@swc/helpers': '>=0.5.17' 1050 + peerDependenciesMeta: 1051 + '@swc/helpers': 1052 + optional: true 1053 + 1054 + '@swc/counter@0.1.3': 1055 + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} 1056 + 1057 + '@swc/types@0.1.25': 1058 + resolution: {integrity: sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==} 1059 + 1060 + '@tailwindcss/node@4.1.13': 1061 + resolution: {integrity: sha512-eq3ouolC1oEFOAvOMOBAmfCIqZBJuvWvvYWh5h5iOYfe1HFC6+GZ6EIL0JdM3/niGRJmnrOc+8gl9/HGUaaptw==} 1062 + 1063 + '@tailwindcss/oxide-android-arm64@4.1.13': 1064 + resolution: {integrity: sha512-BrpTrVYyejbgGo57yc8ieE+D6VT9GOgnNdmh5Sac6+t0m+v+sKQevpFVpwX3pBrM2qKrQwJ0c5eDbtjouY/+ew==} 1065 + engines: {node: '>= 10'} 1066 + cpu: [arm64] 1067 + os: [android] 1068 + 1069 + '@tailwindcss/oxide-darwin-arm64@4.1.13': 1070 + resolution: {integrity: sha512-YP+Jksc4U0KHcu76UhRDHq9bx4qtBftp9ShK/7UGfq0wpaP96YVnnjFnj3ZFrUAjc5iECzODl/Ts0AN7ZPOANQ==} 1071 + engines: {node: '>= 10'} 1072 + cpu: [arm64] 1073 + os: [darwin] 1074 + 1075 + '@tailwindcss/oxide-darwin-x64@4.1.13': 1076 + resolution: {integrity: sha512-aAJ3bbwrn/PQHDxCto9sxwQfT30PzyYJFG0u/BWZGeVXi5Hx6uuUOQEI2Fa43qvmUjTRQNZnGqe9t0Zntexeuw==} 1077 + engines: {node: '>= 10'} 1078 + cpu: [x64] 1079 + os: [darwin] 1080 + 1081 + '@tailwindcss/oxide-freebsd-x64@4.1.13': 1082 + resolution: {integrity: sha512-Wt8KvASHwSXhKE/dJLCCWcTSVmBj3xhVhp/aF3RpAhGeZ3sVo7+NTfgiN8Vey/Fi8prRClDs6/f0KXPDTZE6nQ==} 1083 + engines: {node: '>= 10'} 1084 + cpu: [x64] 1085 + os: [freebsd] 1086 + 1087 + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.13': 1088 + resolution: {integrity: sha512-mbVbcAsW3Gkm2MGwA93eLtWrwajz91aXZCNSkGTx/R5eb6KpKD5q8Ueckkh9YNboU8RH7jiv+ol/I7ZyQ9H7Bw==} 1089 + engines: {node: '>= 10'} 1090 + cpu: [arm] 1091 + os: [linux] 1092 + 1093 + '@tailwindcss/oxide-linux-arm64-gnu@4.1.13': 1094 + resolution: {integrity: sha512-wdtfkmpXiwej/yoAkrCP2DNzRXCALq9NVLgLELgLim1QpSfhQM5+ZxQQF8fkOiEpuNoKLp4nKZ6RC4kmeFH0HQ==} 1095 + engines: {node: '>= 10'} 1096 + cpu: [arm64] 1097 + os: [linux] 1098 + 1099 + '@tailwindcss/oxide-linux-arm64-musl@4.1.13': 1100 + resolution: {integrity: sha512-hZQrmtLdhyqzXHB7mkXfq0IYbxegaqTmfa1p9MBj72WPoDD3oNOh1Lnxf6xZLY9C3OV6qiCYkO1i/LrzEdW2mg==} 1101 + engines: {node: '>= 10'} 1102 + cpu: [arm64] 1103 + os: [linux] 1104 + 1105 + '@tailwindcss/oxide-linux-x64-gnu@4.1.13': 1106 + resolution: {integrity: sha512-uaZTYWxSXyMWDJZNY1Ul7XkJTCBRFZ5Fo6wtjrgBKzZLoJNrG+WderJwAjPzuNZOnmdrVg260DKwXCFtJ/hWRQ==} 1107 + engines: {node: '>= 10'} 1108 + cpu: [x64] 1109 + os: [linux] 1110 + 1111 + '@tailwindcss/oxide-linux-x64-musl@4.1.13': 1112 + resolution: {integrity: sha512-oXiPj5mi4Hdn50v5RdnuuIms0PVPI/EG4fxAfFiIKQh5TgQgX7oSuDWntHW7WNIi/yVLAiS+CRGW4RkoGSSgVQ==} 1113 + engines: {node: '>= 10'} 1114 + cpu: [x64] 1115 + os: [linux] 1116 + 1117 + '@tailwindcss/oxide-wasm32-wasi@4.1.13': 1118 + resolution: {integrity: sha512-+LC2nNtPovtrDwBc/nqnIKYh/W2+R69FA0hgoeOn64BdCX522u19ryLh3Vf3F8W49XBcMIxSe665kwy21FkhvA==} 1119 + engines: {node: '>=14.0.0'} 1120 + cpu: [wasm32] 1121 + bundledDependencies: 1122 + - '@napi-rs/wasm-runtime' 1123 + - '@emnapi/core' 1124 + - '@emnapi/runtime' 1125 + - '@tybys/wasm-util' 1126 + - '@emnapi/wasi-threads' 1127 + - tslib 1128 + 1129 + '@tailwindcss/oxide-win32-arm64-msvc@4.1.13': 1130 + resolution: {integrity: sha512-dziTNeQXtoQ2KBXmrjCxsuPk3F3CQ/yb7ZNZNA+UkNTeiTGgfeh+gH5Pi7mRncVgcPD2xgHvkFCh/MhZWSgyQg==} 1131 + engines: {node: '>= 10'} 1132 + cpu: [arm64] 1133 + os: [win32] 1134 + 1135 + '@tailwindcss/oxide-win32-x64-msvc@4.1.13': 1136 + resolution: {integrity: sha512-3+LKesjXydTkHk5zXX01b5KMzLV1xl2mcktBJkje7rhFUpUlYJy7IMOLqjIRQncLTa1WZZiFY/foAeB5nmaiTw==} 1137 + engines: {node: '>= 10'} 1138 + cpu: [x64] 1139 + os: [win32] 1140 + 1141 + '@tailwindcss/oxide@4.1.13': 1142 + resolution: {integrity: sha512-CPgsM1IpGRa880sMbYmG1s4xhAy3xEt1QULgTJGQmZUeNgXFR7s1YxYygmJyBGtou4SyEosGAGEeYqY7R53bIA==} 1143 + engines: {node: '>= 10'} 1144 + 1145 + '@tailwindcss/vite@4.1.13': 1146 + resolution: {integrity: sha512-0PmqLQ010N58SbMTJ7BVJ4I2xopiQn/5i6nlb4JmxzQf8zcS5+m2Cv6tqh+sfDwtIdjoEnOvwsGQ1hkUi8QEHQ==} 1147 + peerDependencies: 1148 + vite: ^5.2.0 || ^6 || ^7 1149 + 1150 + '@types/babel__core@7.20.5': 1151 + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} 1152 + 1153 + '@types/babel__generator@7.27.0': 1154 + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} 1155 + 1156 + '@types/babel__template@7.4.4': 1157 + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} 1158 + 1159 + '@types/babel__traverse@7.28.0': 1160 + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} 1161 + 1162 + '@types/eslint-scope@3.7.7': 1163 + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} 1164 + 1165 + '@types/eslint@9.6.1': 1166 + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} 1167 + 1168 + '@types/estree@1.0.8': 1169 + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} 1170 + 1171 + '@types/json-schema@7.0.15': 1172 + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 1173 + 1174 + '@types/node@24.5.2': 1175 + resolution: {integrity: sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==} 1176 + 1177 + '@types/react-dom@19.1.9': 1178 + resolution: {integrity: sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ==} 1179 + peerDependencies: 1180 + '@types/react': ^19.0.0 1181 + 1182 + '@types/react@19.1.12': 1183 + resolution: {integrity: sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w==} 1184 + 1185 + '@vitejs/plugin-react@5.0.2': 1186 + resolution: {integrity: sha512-tmyFgixPZCx2+e6VO9TNITWcCQl8+Nl/E8YbAyPVv85QCc7/A3JrdfG2A8gIzvVhWuzMOVrFW1aReaNxrI6tbw==} 1187 + engines: {node: ^20.19.0 || >=22.12.0} 1188 + peerDependencies: 1189 + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 1190 + 1191 + '@vitejs/plugin-rsc@0.4.29': 1192 + resolution: {integrity: sha512-sNR86RuKfk0KQ8H3Ustmp1GC9ABmWyJo736WqCtaipH8mfnxDO2c9gvm+q24yoESerOlNI/zHkCGX8vGm00NCw==} 1193 + peerDependencies: 1194 + react: '*' 1195 + react-dom: '*' 1196 + vite: '*' 1197 + 1198 + '@webassemblyjs/ast@1.14.1': 1199 + resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} 1200 + 1201 + '@webassemblyjs/floating-point-hex-parser@1.13.2': 1202 + resolution: {integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==} 1203 + 1204 + '@webassemblyjs/helper-api-error@1.13.2': 1205 + resolution: {integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==} 1206 + 1207 + '@webassemblyjs/helper-buffer@1.14.1': 1208 + resolution: {integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==} 1209 + 1210 + '@webassemblyjs/helper-numbers@1.13.2': 1211 + resolution: {integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==} 1212 + 1213 + '@webassemblyjs/helper-wasm-bytecode@1.13.2': 1214 + resolution: {integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==} 1215 + 1216 + '@webassemblyjs/helper-wasm-section@1.14.1': 1217 + resolution: {integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==} 1218 + 1219 + '@webassemblyjs/ieee754@1.13.2': 1220 + resolution: {integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==} 1221 + 1222 + '@webassemblyjs/leb128@1.13.2': 1223 + resolution: {integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==} 1224 + 1225 + '@webassemblyjs/utf8@1.13.2': 1226 + resolution: {integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==} 1227 + 1228 + '@webassemblyjs/wasm-edit@1.14.1': 1229 + resolution: {integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==} 1230 + 1231 + '@webassemblyjs/wasm-gen@1.14.1': 1232 + resolution: {integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==} 1233 + 1234 + '@webassemblyjs/wasm-opt@1.14.1': 1235 + resolution: {integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==} 1236 + 1237 + '@webassemblyjs/wasm-parser@1.14.1': 1238 + resolution: {integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==} 1239 + 1240 + '@webassemblyjs/wast-printer@1.14.1': 1241 + resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==} 1242 + 1243 + '@xtuc/ieee754@1.2.0': 1244 + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} 1245 + 1246 + '@xtuc/long@4.2.2': 1247 + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} 1248 + 1249 + acorn-import-phases@1.0.4: 1250 + resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==} 1251 + engines: {node: '>=10.13.0'} 1252 + peerDependencies: 1253 + acorn: ^8.14.0 1254 + 1255 + acorn-loose@8.5.2: 1256 + resolution: {integrity: sha512-PPvV6g8UGMGgjrMu+n/f9E/tCSkNQ2Y97eFvuVdJfG11+xdIeDcLyNdC8SHcrHbRqkfwLASdplyR6B6sKM1U4A==} 1257 + engines: {node: '>=0.4.0'} 1258 + 1259 + acorn-walk@8.3.2: 1260 + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} 1261 + engines: {node: '>=0.4.0'} 1262 + 1263 + acorn@8.14.0: 1264 + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 1265 + engines: {node: '>=0.4.0'} 1266 + hasBin: true 1267 + 1268 + acorn@8.15.0: 1269 + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} 1270 + engines: {node: '>=0.4.0'} 1271 + hasBin: true 1272 + 1273 + ajv-formats@2.1.1: 1274 + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} 1275 + peerDependencies: 1276 + ajv: ^8.0.0 1277 + peerDependenciesMeta: 1278 + ajv: 1279 + optional: true 1280 + 1281 + ajv-keywords@5.1.0: 1282 + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} 1283 + peerDependencies: 1284 + ajv: ^8.8.2 1285 + 1286 + ajv@8.17.1: 1287 + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} 1288 + 1289 + aria-hidden@1.2.6: 1290 + resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} 1291 + engines: {node: '>=10'} 1292 + 1293 + baseline-browser-mapping@2.8.5: 1294 + resolution: {integrity: sha512-TiU4qUT9jdCuh4aVOG7H1QozyeI2sZRqoRPdqBIaslfNt4WUSanRBueAwl2x5jt4rXBMim3lIN2x6yT8PDi24Q==} 1295 + hasBin: true 1296 + 1297 + blake3-wasm@2.1.5: 1298 + resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} 1299 + 1300 + browserslist@4.26.2: 1301 + resolution: {integrity: sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==} 1302 + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 1303 + hasBin: true 1304 + 1305 + buffer-from@1.1.2: 1306 + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 1307 + 1308 + caniuse-lite@1.0.30001743: 1309 + resolution: {integrity: sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==} 1310 + 1311 + chownr@3.0.0: 1312 + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} 1313 + engines: {node: '>=18'} 1314 + 1315 + chrome-trace-event@1.0.4: 1316 + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} 1317 + engines: {node: '>=6.0'} 1318 + 1319 + class-variance-authority@0.7.1: 1320 + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} 1321 + 1322 + clsx@2.1.1: 1323 + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} 1324 + engines: {node: '>=6'} 1325 + 1326 + color-convert@2.0.1: 1327 + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 1328 + engines: {node: '>=7.0.0'} 1329 + 1330 + color-name@1.1.4: 1331 + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 1332 + 1333 + color-string@1.9.1: 1334 + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} 1335 + 1336 + color@4.2.3: 1337 + resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==} 1338 + engines: {node: '>=12.5.0'} 1339 + 1340 + commander@2.20.3: 1341 + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} 1342 + 1343 + convert-source-map@2.0.0: 1344 + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 1345 + 1346 + cookie@1.0.2: 1347 + resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} 1348 + engines: {node: '>=18'} 1349 + 1350 + csstype@3.1.3: 1351 + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 1352 + 1353 + debug@4.4.3: 1354 + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} 1355 + engines: {node: '>=6.0'} 1356 + peerDependencies: 1357 + supports-color: '*' 1358 + peerDependenciesMeta: 1359 + supports-color: 1360 + optional: true 1361 + 1362 + defu@6.1.4: 1363 + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} 1364 + 1365 + detect-libc@2.1.0: 1366 + resolution: {integrity: sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg==} 1367 + engines: {node: '>=8'} 1368 + 1369 + detect-node-es@1.1.0: 1370 + resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} 1371 + 1372 + dotenv@17.2.2: 1373 + resolution: {integrity: sha512-Sf2LSQP+bOlhKWWyhFsn0UsfdK/kCWRv1iuA2gXAwt3dyNabr6QSj00I2V10pidqz69soatm9ZwZvpQMTIOd5Q==} 1374 + engines: {node: '>=12'} 1375 + 1376 + electron-to-chromium@1.5.221: 1377 + resolution: {integrity: sha512-/1hFJ39wkW01ogqSyYoA4goOXOtMRy6B+yvA1u42nnsEGtHzIzmk93aPISumVQeblj47JUHLC9coCjUxb1EvtQ==} 1378 + 1379 + enhanced-resolve@5.18.3: 1380 + resolution: {integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==} 1381 + engines: {node: '>=10.13.0'} 1382 + 1383 + error-stack-parser-es@1.0.5: 1384 + resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} 1385 + 1386 + es-module-lexer@1.7.0: 1387 + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} 1388 + 1389 + esbuild@0.25.10: 1390 + resolution: {integrity: sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==} 1391 + engines: {node: '>=18'} 1392 + hasBin: true 1393 + 1394 + esbuild@0.25.4: 1395 + resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} 1396 + engines: {node: '>=18'} 1397 + hasBin: true 1398 + 1399 + escalade@3.2.0: 1400 + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 1401 + engines: {node: '>=6'} 1402 + 1403 + eslint-scope@5.1.1: 1404 + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} 1405 + engines: {node: '>=8.0.0'} 1406 + 1407 + esrecurse@4.3.0: 1408 + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1409 + engines: {node: '>=4.0'} 1410 + 1411 + estraverse@4.3.0: 1412 + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} 1413 + engines: {node: '>=4.0'} 1414 + 1415 + estraverse@5.3.0: 1416 + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1417 + engines: {node: '>=4.0'} 1418 + 1419 + estree-walker@3.0.3: 1420 + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 1421 + 1422 + events@3.3.0: 1423 + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} 1424 + engines: {node: '>=0.8.x'} 1425 + 1426 + exit-hook@2.2.1: 1427 + resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==} 1428 + engines: {node: '>=6'} 1429 + 1430 + exsolve@1.0.7: 1431 + resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==} 1432 + 1433 + fast-deep-equal@3.1.3: 1434 + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1435 + 1436 + fast-uri@3.1.0: 1437 + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} 1438 + 1439 + fdir@6.5.0: 1440 + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} 1441 + engines: {node: '>=12.0.0'} 1442 + peerDependencies: 1443 + picomatch: ^3 || ^4 1444 + peerDependenciesMeta: 1445 + picomatch: 1446 + optional: true 1447 + 1448 + fsevents@2.3.3: 1449 + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1450 + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1451 + os: [darwin] 1452 + 1453 + gensync@1.0.0-beta.2: 1454 + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1455 + engines: {node: '>=6.9.0'} 1456 + 1457 + get-nonce@1.0.1: 1458 + resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} 1459 + engines: {node: '>=6'} 1460 + 1461 + glob-to-regexp@0.4.1: 1462 + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} 1463 + 1464 + graceful-fs@4.2.11: 1465 + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1466 + 1467 + has-flag@4.0.0: 1468 + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1469 + engines: {node: '>=8'} 1470 + 1471 + hono@4.9.6: 1472 + resolution: {integrity: sha512-doVjXhSFvYZ7y0dNokjwwSahcrAfdz+/BCLvAMa/vHLzjj8+CFyV5xteThGUsKdkaasgN+gF2mUxao+SGLpUeA==} 1473 + engines: {node: '>=16.9.0'} 1474 + 1475 + is-arrayish@0.3.4: 1476 + resolution: {integrity: sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==} 1477 + 1478 + is-reference@3.0.3: 1479 + resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==} 1480 + 1481 + jest-worker@27.5.1: 1482 + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} 1483 + engines: {node: '>= 10.13.0'} 1484 + 1485 + jiti@2.5.1: 1486 + resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} 1487 + hasBin: true 1488 + 1489 + jotai@2.14.0: 1490 + resolution: {integrity: sha512-JQkNkTnqjk1BlSUjHfXi+pGG/573bVN104gp6CymhrWDseZGDReTNniWrLhJ+zXbM6pH+82+UNJ2vwYQUkQMWQ==} 1491 + engines: {node: '>=12.20.0'} 1492 + peerDependencies: 1493 + '@babel/core': '>=7.0.0' 1494 + '@babel/template': '>=7.0.0' 1495 + '@types/react': '>=17.0.0' 1496 + react: '>=17.0.0' 1497 + peerDependenciesMeta: 1498 + '@babel/core': 1499 + optional: true 1500 + '@babel/template': 1501 + optional: true 1502 + '@types/react': 1503 + optional: true 1504 + react: 1505 + optional: true 1506 + 1507 + js-tokens@4.0.0: 1508 + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1509 + 1510 + jsesc@3.1.0: 1511 + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 1512 + engines: {node: '>=6'} 1513 + hasBin: true 1514 + 1515 + json-parse-even-better-errors@2.3.1: 1516 + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1517 + 1518 + json-schema-traverse@1.0.0: 1519 + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} 1520 + 1521 + json5@2.2.3: 1522 + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1523 + engines: {node: '>=6'} 1524 + hasBin: true 1525 + 1526 + kleur@4.1.5: 1527 + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 1528 + engines: {node: '>=6'} 1529 + 1530 + lightningcss-darwin-arm64@1.30.1: 1531 + resolution: {integrity: sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==} 1532 + engines: {node: '>= 12.0.0'} 1533 + cpu: [arm64] 1534 + os: [darwin] 1535 + 1536 + lightningcss-darwin-x64@1.30.1: 1537 + resolution: {integrity: sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==} 1538 + engines: {node: '>= 12.0.0'} 1539 + cpu: [x64] 1540 + os: [darwin] 1541 + 1542 + lightningcss-freebsd-x64@1.30.1: 1543 + resolution: {integrity: sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==} 1544 + engines: {node: '>= 12.0.0'} 1545 + cpu: [x64] 1546 + os: [freebsd] 1547 + 1548 + lightningcss-linux-arm-gnueabihf@1.30.1: 1549 + resolution: {integrity: sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==} 1550 + engines: {node: '>= 12.0.0'} 1551 + cpu: [arm] 1552 + os: [linux] 1553 + 1554 + lightningcss-linux-arm64-gnu@1.30.1: 1555 + resolution: {integrity: sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==} 1556 + engines: {node: '>= 12.0.0'} 1557 + cpu: [arm64] 1558 + os: [linux] 1559 + 1560 + lightningcss-linux-arm64-musl@1.30.1: 1561 + resolution: {integrity: sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==} 1562 + engines: {node: '>= 12.0.0'} 1563 + cpu: [arm64] 1564 + os: [linux] 1565 + 1566 + lightningcss-linux-x64-gnu@1.30.1: 1567 + resolution: {integrity: sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==} 1568 + engines: {node: '>= 12.0.0'} 1569 + cpu: [x64] 1570 + os: [linux] 1571 + 1572 + lightningcss-linux-x64-musl@1.30.1: 1573 + resolution: {integrity: sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==} 1574 + engines: {node: '>= 12.0.0'} 1575 + cpu: [x64] 1576 + os: [linux] 1577 + 1578 + lightningcss-win32-arm64-msvc@1.30.1: 1579 + resolution: {integrity: sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==} 1580 + engines: {node: '>= 12.0.0'} 1581 + cpu: [arm64] 1582 + os: [win32] 1583 + 1584 + lightningcss-win32-x64-msvc@1.30.1: 1585 + resolution: {integrity: sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==} 1586 + engines: {node: '>= 12.0.0'} 1587 + cpu: [x64] 1588 + os: [win32] 1589 + 1590 + lightningcss@1.30.1: 1591 + resolution: {integrity: sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==} 1592 + engines: {node: '>= 12.0.0'} 1593 + 1594 + loader-runner@4.3.0: 1595 + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} 1596 + engines: {node: '>=6.11.5'} 1597 + 1598 + lru-cache@5.1.1: 1599 + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1600 + 1601 + lucide-react@0.544.0: 1602 + resolution: {integrity: sha512-t5tS44bqd825zAW45UQxpG2CvcC4urOwn2TrwSH8u+MjeE+1NnWl6QqeQ/6NdjMqdOygyiT9p3Ev0p1NJykxjw==} 1603 + peerDependencies: 1604 + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 1605 + 1606 + magic-string@0.30.19: 1607 + resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} 1608 + 1609 + merge-stream@2.0.0: 1610 + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1611 + 1612 + mime-db@1.52.0: 1613 + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 1614 + engines: {node: '>= 0.6'} 1615 + 1616 + mime-types@2.1.35: 1617 + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 1618 + engines: {node: '>= 0.6'} 1619 + 1620 + mime@3.0.0: 1621 + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} 1622 + engines: {node: '>=10.0.0'} 1623 + hasBin: true 1624 + 1625 + miniflare@4.20250924.0: 1626 + resolution: {integrity: sha512-eQuWHklTeYYOil7sPPWo7Wrw86I4oac1kGAYfYcjg5dqMgMAiPUHvUWXMlTvW8ON6q33Ew23AsGDirm+Bea9ig==} 1627 + engines: {node: '>=18.0.0'} 1628 + hasBin: true 1629 + 1630 + minipass@7.1.2: 1631 + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1632 + engines: {node: '>=16 || 14 >=14.17'} 1633 + 1634 + minizlib@3.0.2: 1635 + resolution: {integrity: sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==} 1636 + engines: {node: '>= 18'} 1637 + 1638 + mkdirp@3.0.1: 1639 + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} 1640 + engines: {node: '>=10'} 1641 + hasBin: true 1642 + 1643 + ms@2.1.3: 1644 + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 1645 + 1646 + nanoid@3.3.11: 1647 + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 1648 + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1649 + hasBin: true 1650 + 1651 + neo-async@2.6.2: 1652 + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} 1653 + 1654 + node-releases@2.0.21: 1655 + resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==} 1656 + 1657 + ohash@2.0.11: 1658 + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} 1659 + 1660 + path-to-regexp@6.3.0: 1661 + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} 1662 + 1663 + pathe@2.0.3: 1664 + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 1665 + 1666 + periscopic@4.0.2: 1667 + resolution: {integrity: sha512-sqpQDUy8vgB7ycLkendSKS6HnVz1Rneoc3Rc+ZBUCe2pbqlVuCC5vF52l0NJ1aiMg/r1qfYF9/myz8CZeI2rjA==} 1668 + 1669 + picocolors@1.1.1: 1670 + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 1671 + 1672 + picomatch@4.0.3: 1673 + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} 1674 + engines: {node: '>=12'} 1675 + 1676 + postcss@8.5.6: 1677 + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} 1678 + engines: {node: ^10 || ^12 || >=14} 1679 + 1680 + randombytes@2.1.0: 1681 + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} 1682 + 1683 + react-confetti@6.4.0: 1684 + resolution: {integrity: sha512-5MdGUcqxrTU26I2EU7ltkWPwxvucQTuqMm8dUz72z2YMqTD6s9vMcDUysk7n9jnC+lXuCPeJJ7Knf98VEYE9Rg==} 1685 + engines: {node: '>=16'} 1686 + peerDependencies: 1687 + react: ^16.3.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 1688 + 1689 + react-dom@19.1.1: 1690 + resolution: {integrity: sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==} 1691 + peerDependencies: 1692 + react: ^19.1.1 1693 + 1694 + react-hook-form@7.63.0: 1695 + resolution: {integrity: sha512-ZwueDMvUeucovM2VjkCf7zIHcs1aAlDimZu2Hvel5C5907gUzMpm4xCrQXtRzCvsBqFjonB4m3x4LzCFI1ZKWA==} 1696 + engines: {node: '>=18.0.0'} 1697 + peerDependencies: 1698 + react: ^16.8.0 || ^17 || ^18 || ^19 1699 + 1700 + react-refresh@0.17.0: 1701 + resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} 1702 + engines: {node: '>=0.10.0'} 1703 + 1704 + react-remove-scroll-bar@2.3.8: 1705 + resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} 1706 + engines: {node: '>=10'} 1707 + peerDependencies: 1708 + '@types/react': '*' 1709 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 1710 + peerDependenciesMeta: 1711 + '@types/react': 1712 + optional: true 1713 + 1714 + react-remove-scroll@2.7.1: 1715 + resolution: {integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==} 1716 + engines: {node: '>=10'} 1717 + peerDependencies: 1718 + '@types/react': '*' 1719 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc 1720 + peerDependenciesMeta: 1721 + '@types/react': 1722 + optional: true 1723 + 1724 + react-server-dom-webpack@19.1.1: 1725 + resolution: {integrity: sha512-6MJwCAgQKcNxzRQebeyDspWzcncJMxe7JfmA8OFHWCMtp6L++HyJMgScM492iIeQZln3C834HyG4/UeMMZeRMw==} 1726 + engines: {node: '>=0.10.0'} 1727 + peerDependencies: 1728 + react: ^19.1.1 1729 + react-dom: ^19.1.1 1730 + webpack: ^5.59.0 1731 + 1732 + react-style-singleton@2.2.3: 1733 + resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} 1734 + engines: {node: '>=10'} 1735 + peerDependencies: 1736 + '@types/react': '*' 1737 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc 1738 + peerDependenciesMeta: 1739 + '@types/react': 1740 + optional: true 1741 + 1742 + react@19.1.1: 1743 + resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==} 1744 + engines: {node: '>=0.10.0'} 1745 + 1746 + require-from-string@2.0.2: 1747 + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 1748 + engines: {node: '>=0.10.0'} 1749 + 1750 + rollup@4.50.2: 1751 + resolution: {integrity: sha512-BgLRGy7tNS9H66aIMASq1qSYbAAJV6Z6WR4QYTvj5FgF15rZ/ympT1uixHXwzbZUBDbkvqUI1KR0fH1FhMaQ9w==} 1752 + engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1753 + hasBin: true 1754 + 1755 + rsc-html-stream@0.0.7: 1756 + resolution: {integrity: sha512-v9+fuY7usTgvXdNl8JmfXCvSsQbq2YMd60kOeeMIqCJFZ69fViuIxztHei7v5mlMMa2h3SqS+v44Gu9i9xANZA==} 1757 + 1758 + safe-buffer@5.2.1: 1759 + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 1760 + 1761 + scheduler@0.26.0: 1762 + resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} 1763 + 1764 + schema-utils@4.3.2: 1765 + resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} 1766 + engines: {node: '>= 10.13.0'} 1767 + 1768 + semver@6.3.1: 1769 + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1770 + hasBin: true 1771 + 1772 + semver@7.7.2: 1773 + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} 1774 + engines: {node: '>=10'} 1775 + hasBin: true 1776 + 1777 + serialize-javascript@6.0.2: 1778 + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} 1779 + 1780 + sharp@0.33.5: 1781 + resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==} 1782 + engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} 1783 + 1784 + simple-swizzle@0.2.4: 1785 + resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} 1786 + 1787 + source-map-js@1.2.1: 1788 + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 1789 + engines: {node: '>=0.10.0'} 1790 + 1791 + source-map-support@0.5.21: 1792 + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 1793 + 1794 + source-map@0.6.1: 1795 + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 1796 + engines: {node: '>=0.10.0'} 1797 + 1798 + stoppable@1.1.0: 1799 + resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} 1800 + engines: {node: '>=4', npm: '>=6'} 1801 + 1802 + supports-color@10.2.2: 1803 + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} 1804 + engines: {node: '>=18'} 1805 + 1806 + supports-color@8.1.1: 1807 + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} 1808 + engines: {node: '>=10'} 1809 + 1810 + tailwind-merge@3.3.1: 1811 + resolution: {integrity: sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g==} 1812 + 1813 + tailwindcss@4.1.13: 1814 + resolution: {integrity: sha512-i+zidfmTqtwquj4hMEwdjshYYgMbOrPzb9a0M3ZgNa0JMoZeFC6bxZvO8yr8ozS6ix2SDz0+mvryPeBs2TFE+w==} 1815 + 1816 + tapable@2.2.3: 1817 + resolution: {integrity: sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==} 1818 + engines: {node: '>=6'} 1819 + 1820 + tar@7.4.3: 1821 + resolution: {integrity: sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==} 1822 + engines: {node: '>=18'} 1823 + 1824 + terser-webpack-plugin@5.3.14: 1825 + resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} 1826 + engines: {node: '>= 10.13.0'} 1827 + peerDependencies: 1828 + '@swc/core': '*' 1829 + esbuild: '*' 1830 + uglify-js: '*' 1831 + webpack: ^5.1.0 1832 + peerDependenciesMeta: 1833 + '@swc/core': 1834 + optional: true 1835 + esbuild: 1836 + optional: true 1837 + uglify-js: 1838 + optional: true 1839 + 1840 + terser@5.44.0: 1841 + resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==} 1842 + engines: {node: '>=10'} 1843 + hasBin: true 1844 + 1845 + tinyglobby@0.2.15: 1846 + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} 1847 + engines: {node: '>=12.0.0'} 1848 + 1849 + tslib@2.8.1: 1850 + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1851 + 1852 + turbo-stream@3.1.0: 1853 + resolution: {integrity: sha512-tVI25WEXl4fckNEmrq70xU1XumxUwEx/FZD5AgEcV8ri7Wvrg2o7GEq8U7htrNx3CajciGm+kDyhRf5JB6t7/A==} 1854 + 1855 + tw-animate-css@1.4.0: 1856 + resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==} 1857 + 1858 + tween-functions@1.2.0: 1859 + resolution: {integrity: sha512-PZBtLYcCLtEcjL14Fzb1gSxPBeL7nWvGhO5ZFPGqziCcr8uvHp0NDmdjBchp6KHL+tExcg0m3NISmKxhU394dA==} 1860 + 1861 + typescript@5.9.2: 1862 + resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} 1863 + engines: {node: '>=14.17'} 1864 + hasBin: true 1865 + 1866 + ufo@1.6.1: 1867 + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} 1868 + 1869 + undici-types@7.12.0: 1870 + resolution: {integrity: sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==} 1871 + 1872 + undici@7.14.0: 1873 + resolution: {integrity: sha512-Vqs8HTzjpQXZeXdpsfChQTlafcMQaaIwnGwLam1wudSSjlJeQ3bw1j+TLPePgrCnCpUXx7Ba5Pdpf5OBih62NQ==} 1874 + engines: {node: '>=20.18.1'} 1875 + 1876 + unenv@2.0.0-rc.21: 1877 + resolution: {integrity: sha512-Wj7/AMtE9MRnAXa6Su3Lk0LNCfqDYgfwVjwRFVum9U7wsto1imuHqk4kTm7Jni+5A0Hn7dttL6O/zjvUvoo+8A==} 1878 + 1879 + update-browserslist-db@1.1.3: 1880 + resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} 1881 + hasBin: true 1882 + peerDependencies: 1883 + browserslist: '>= 4.21.0' 1884 + 1885 + use-callback-ref@1.3.3: 1886 + resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} 1887 + engines: {node: '>=10'} 1888 + peerDependencies: 1889 + '@types/react': '*' 1890 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc 1891 + peerDependenciesMeta: 1892 + '@types/react': 1893 + optional: true 1894 + 1895 + use-sidecar@1.1.3: 1896 + resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} 1897 + engines: {node: '>=10'} 1898 + peerDependencies: 1899 + '@types/react': '*' 1900 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc 1901 + peerDependenciesMeta: 1902 + '@types/react': 1903 + optional: true 1904 + 1905 + vite@7.1.5: 1906 + resolution: {integrity: sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ==} 1907 + engines: {node: ^20.19.0 || >=22.12.0} 1908 + hasBin: true 1909 + peerDependencies: 1910 + '@types/node': ^20.19.0 || >=22.12.0 1911 + jiti: '>=1.21.0' 1912 + less: ^4.0.0 1913 + lightningcss: ^1.21.0 1914 + sass: ^1.70.0 1915 + sass-embedded: ^1.70.0 1916 + stylus: '>=0.54.8' 1917 + sugarss: ^5.0.0 1918 + terser: ^5.16.0 1919 + tsx: ^4.8.1 1920 + yaml: ^2.4.2 1921 + peerDependenciesMeta: 1922 + '@types/node': 1923 + optional: true 1924 + jiti: 1925 + optional: true 1926 + less: 1927 + optional: true 1928 + lightningcss: 1929 + optional: true 1930 + sass: 1931 + optional: true 1932 + sass-embedded: 1933 + optional: true 1934 + stylus: 1935 + optional: true 1936 + sugarss: 1937 + optional: true 1938 + terser: 1939 + optional: true 1940 + tsx: 1941 + optional: true 1942 + yaml: 1943 + optional: true 1944 + 1945 + vitefu@1.1.1: 1946 + resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==} 1947 + peerDependencies: 1948 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 1949 + peerDependenciesMeta: 1950 + vite: 1951 + optional: true 1952 + 1953 + waku@0.26.1: 1954 + resolution: {integrity: sha512-b8nH8PFlZfnL8Yu1vbHISLAgcyFXeDaJAllKdB3oAWk71INQcTN8x0JfdZGUa0x/b2Lcn7souvub2chkGGh9Lg==} 1955 + engines: {node: ^24.0.0 || ^22.12.0 || ^20.19.0} 1956 + hasBin: true 1957 + peerDependencies: 1958 + react: ~19.1.1 1959 + react-dom: ~19.1.1 1960 + react-server-dom-webpack: ~19.1.1 1961 + 1962 + watchpack@2.4.4: 1963 + resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} 1964 + engines: {node: '>=10.13.0'} 1965 + 1966 + webpack-sources@3.3.3: 1967 + resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} 1968 + engines: {node: '>=10.13.0'} 1969 + 1970 + webpack@5.101.3: 1971 + resolution: {integrity: sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==} 1972 + engines: {node: '>=10.13.0'} 1973 + hasBin: true 1974 + peerDependencies: 1975 + webpack-cli: '*' 1976 + peerDependenciesMeta: 1977 + webpack-cli: 1978 + optional: true 1979 + 1980 + workerd@1.20250924.0: 1981 + resolution: {integrity: sha512-ovO2vwRCcMOlOm3bNwQQrVb8KDcewE/3rjfbZAYSF535BQQDUZ9dE1kyGBYlGx4W5udH3kqmOr+0YqTBLlycyA==} 1982 + engines: {node: '>=16'} 1983 + hasBin: true 1984 + 1985 + wrangler@4.40.2: 1986 + resolution: {integrity: sha512-wcev8GF6GU4ME5AsYY/gUehHrGdRiUCkifuyCeuVvpOtha3TMK4/s39x+jLuJBRtibpgejDekO68rqxfamf16A==} 1987 + engines: {node: '>=18.0.0'} 1988 + hasBin: true 1989 + peerDependencies: 1990 + '@cloudflare/workers-types': ^4.20250924.0 1991 + peerDependenciesMeta: 1992 + '@cloudflare/workers-types': 1993 + optional: true 1994 + 1995 + ws@8.18.0: 1996 + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} 1997 + engines: {node: '>=10.0.0'} 1998 + peerDependencies: 1999 + bufferutil: ^4.0.1 2000 + utf-8-validate: '>=5.0.2' 2001 + peerDependenciesMeta: 2002 + bufferutil: 2003 + optional: true 2004 + utf-8-validate: 2005 + optional: true 2006 + 2007 + yallist@3.1.1: 2008 + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 2009 + 2010 + yallist@5.0.0: 2011 + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} 2012 + engines: {node: '>=18'} 2013 + 2014 + youch-core@0.3.3: 2015 + resolution: {integrity: sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA==} 2016 + 2017 + youch@4.1.0-beta.10: 2018 + resolution: {integrity: sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ==} 2019 + 2020 + zimmerframe@1.1.4: 2021 + resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==} 2022 + 2023 + zod@3.22.3: 2024 + resolution: {integrity: sha512-EjIevzuJRiRPbVH4mGc8nApb/lVLKVpmUhAaR5R5doKGfAnGJ6Gr3CViAVjP+4FWSxCsybeWQdcgCtbX+7oZug==} 2025 + 2026 + zod@4.1.11: 2027 + resolution: {integrity: sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg==} 2028 + 2029 + snapshots: 2030 + 2031 + '@babel/code-frame@7.27.1': 2032 + dependencies: 2033 + '@babel/helper-validator-identifier': 7.27.1 2034 + js-tokens: 4.0.0 2035 + picocolors: 1.1.1 2036 + 2037 + '@babel/compat-data@7.28.4': {} 2038 + 2039 + '@babel/core@7.28.4': 2040 + dependencies: 2041 + '@babel/code-frame': 7.27.1 2042 + '@babel/generator': 7.28.3 2043 + '@babel/helper-compilation-targets': 7.27.2 2044 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) 2045 + '@babel/helpers': 7.28.4 2046 + '@babel/parser': 7.28.4 2047 + '@babel/template': 7.27.2 2048 + '@babel/traverse': 7.28.4 2049 + '@babel/types': 7.28.4 2050 + '@jridgewell/remapping': 2.3.5 2051 + convert-source-map: 2.0.0 2052 + debug: 4.4.3 2053 + gensync: 1.0.0-beta.2 2054 + json5: 2.2.3 2055 + semver: 6.3.1 2056 + transitivePeerDependencies: 2057 + - supports-color 2058 + 2059 + '@babel/generator@7.28.3': 2060 + dependencies: 2061 + '@babel/parser': 7.28.4 2062 + '@babel/types': 7.28.4 2063 + '@jridgewell/gen-mapping': 0.3.13 2064 + '@jridgewell/trace-mapping': 0.3.31 2065 + jsesc: 3.1.0 2066 + 2067 + '@babel/helper-compilation-targets@7.27.2': 2068 + dependencies: 2069 + '@babel/compat-data': 7.28.4 2070 + '@babel/helper-validator-option': 7.27.1 2071 + browserslist: 4.26.2 2072 + lru-cache: 5.1.1 2073 + semver: 6.3.1 2074 + 2075 + '@babel/helper-globals@7.28.0': {} 2076 + 2077 + '@babel/helper-module-imports@7.27.1': 2078 + dependencies: 2079 + '@babel/traverse': 7.28.4 2080 + '@babel/types': 7.28.4 2081 + transitivePeerDependencies: 2082 + - supports-color 2083 + 2084 + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': 2085 + dependencies: 2086 + '@babel/core': 7.28.4 2087 + '@babel/helper-module-imports': 7.27.1 2088 + '@babel/helper-validator-identifier': 7.27.1 2089 + '@babel/traverse': 7.28.4 2090 + transitivePeerDependencies: 2091 + - supports-color 2092 + 2093 + '@babel/helper-plugin-utils@7.27.1': {} 2094 + 2095 + '@babel/helper-string-parser@7.27.1': {} 2096 + 2097 + '@babel/helper-validator-identifier@7.27.1': {} 2098 + 2099 + '@babel/helper-validator-option@7.27.1': {} 2100 + 2101 + '@babel/helpers@7.28.4': 2102 + dependencies: 2103 + '@babel/template': 7.27.2 2104 + '@babel/types': 7.28.4 2105 + 2106 + '@babel/parser@7.28.4': 2107 + dependencies: 2108 + '@babel/types': 7.28.4 2109 + 2110 + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.4)': 2111 + dependencies: 2112 + '@babel/core': 7.28.4 2113 + '@babel/helper-plugin-utils': 7.27.1 2114 + 2115 + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.4)': 2116 + dependencies: 2117 + '@babel/core': 7.28.4 2118 + '@babel/helper-plugin-utils': 7.27.1 2119 + 2120 + '@babel/template@7.27.2': 2121 + dependencies: 2122 + '@babel/code-frame': 7.27.1 2123 + '@babel/parser': 7.28.4 2124 + '@babel/types': 7.28.4 2125 + 2126 + '@babel/traverse@7.28.4': 2127 + dependencies: 2128 + '@babel/code-frame': 7.27.1 2129 + '@babel/generator': 7.28.3 2130 + '@babel/helper-globals': 7.28.0 2131 + '@babel/parser': 7.28.4 2132 + '@babel/template': 7.27.2 2133 + '@babel/types': 7.28.4 2134 + debug: 4.4.3 2135 + transitivePeerDependencies: 2136 + - supports-color 2137 + 2138 + '@babel/types@7.28.4': 2139 + dependencies: 2140 + '@babel/helper-string-parser': 7.27.1 2141 + '@babel/helper-validator-identifier': 7.27.1 2142 + 2143 + '@cloudflare/kv-asset-handler@0.4.0': 2144 + dependencies: 2145 + mime: 3.0.0 2146 + 2147 + '@cloudflare/unenv-preset@2.7.4(unenv@2.0.0-rc.21)(workerd@1.20250924.0)': 2148 + dependencies: 2149 + unenv: 2.0.0-rc.21 2150 + optionalDependencies: 2151 + workerd: 1.20250924.0 2152 + 2153 + '@cloudflare/workerd-darwin-64@1.20250924.0': 2154 + optional: true 2155 + 2156 + '@cloudflare/workerd-darwin-arm64@1.20250924.0': 2157 + optional: true 2158 + 2159 + '@cloudflare/workerd-linux-64@1.20250924.0': 2160 + optional: true 2161 + 2162 + '@cloudflare/workerd-linux-arm64@1.20250924.0': 2163 + optional: true 2164 + 2165 + '@cloudflare/workerd-windows-64@1.20250924.0': 2166 + optional: true 2167 + 2168 + '@cspotcode/source-map-support@0.8.1': 2169 + dependencies: 2170 + '@jridgewell/trace-mapping': 0.3.9 2171 + 2172 + '@emnapi/runtime@1.5.0': 2173 + dependencies: 2174 + tslib: 2.8.1 2175 + optional: true 2176 + 2177 + '@esbuild/aix-ppc64@0.25.10': 2178 + optional: true 2179 + 2180 + '@esbuild/aix-ppc64@0.25.4': 2181 + optional: true 2182 + 2183 + '@esbuild/android-arm64@0.25.10': 2184 + optional: true 2185 + 2186 + '@esbuild/android-arm64@0.25.4': 2187 + optional: true 2188 + 2189 + '@esbuild/android-arm@0.25.10': 2190 + optional: true 2191 + 2192 + '@esbuild/android-arm@0.25.4': 2193 + optional: true 2194 + 2195 + '@esbuild/android-x64@0.25.10': 2196 + optional: true 2197 + 2198 + '@esbuild/android-x64@0.25.4': 2199 + optional: true 2200 + 2201 + '@esbuild/darwin-arm64@0.25.10': 2202 + optional: true 2203 + 2204 + '@esbuild/darwin-arm64@0.25.4': 2205 + optional: true 2206 + 2207 + '@esbuild/darwin-x64@0.25.10': 2208 + optional: true 2209 + 2210 + '@esbuild/darwin-x64@0.25.4': 2211 + optional: true 2212 + 2213 + '@esbuild/freebsd-arm64@0.25.10': 2214 + optional: true 2215 + 2216 + '@esbuild/freebsd-arm64@0.25.4': 2217 + optional: true 2218 + 2219 + '@esbuild/freebsd-x64@0.25.10': 2220 + optional: true 2221 + 2222 + '@esbuild/freebsd-x64@0.25.4': 2223 + optional: true 2224 + 2225 + '@esbuild/linux-arm64@0.25.10': 2226 + optional: true 2227 + 2228 + '@esbuild/linux-arm64@0.25.4': 2229 + optional: true 2230 + 2231 + '@esbuild/linux-arm@0.25.10': 2232 + optional: true 2233 + 2234 + '@esbuild/linux-arm@0.25.4': 2235 + optional: true 2236 + 2237 + '@esbuild/linux-ia32@0.25.10': 2238 + optional: true 2239 + 2240 + '@esbuild/linux-ia32@0.25.4': 2241 + optional: true 2242 + 2243 + '@esbuild/linux-loong64@0.25.10': 2244 + optional: true 2245 + 2246 + '@esbuild/linux-loong64@0.25.4': 2247 + optional: true 2248 + 2249 + '@esbuild/linux-mips64el@0.25.10': 2250 + optional: true 2251 + 2252 + '@esbuild/linux-mips64el@0.25.4': 2253 + optional: true 2254 + 2255 + '@esbuild/linux-ppc64@0.25.10': 2256 + optional: true 2257 + 2258 + '@esbuild/linux-ppc64@0.25.4': 2259 + optional: true 2260 + 2261 + '@esbuild/linux-riscv64@0.25.10': 2262 + optional: true 2263 + 2264 + '@esbuild/linux-riscv64@0.25.4': 2265 + optional: true 2266 + 2267 + '@esbuild/linux-s390x@0.25.10': 2268 + optional: true 2269 + 2270 + '@esbuild/linux-s390x@0.25.4': 2271 + optional: true 2272 + 2273 + '@esbuild/linux-x64@0.25.10': 2274 + optional: true 2275 + 2276 + '@esbuild/linux-x64@0.25.4': 2277 + optional: true 2278 + 2279 + '@esbuild/netbsd-arm64@0.25.10': 2280 + optional: true 2281 + 2282 + '@esbuild/netbsd-arm64@0.25.4': 2283 + optional: true 2284 + 2285 + '@esbuild/netbsd-x64@0.25.10': 2286 + optional: true 2287 + 2288 + '@esbuild/netbsd-x64@0.25.4': 2289 + optional: true 2290 + 2291 + '@esbuild/openbsd-arm64@0.25.10': 2292 + optional: true 2293 + 2294 + '@esbuild/openbsd-arm64@0.25.4': 2295 + optional: true 2296 + 2297 + '@esbuild/openbsd-x64@0.25.10': 2298 + optional: true 2299 + 2300 + '@esbuild/openbsd-x64@0.25.4': 2301 + optional: true 2302 + 2303 + '@esbuild/openharmony-arm64@0.25.10': 2304 + optional: true 2305 + 2306 + '@esbuild/sunos-x64@0.25.10': 2307 + optional: true 2308 + 2309 + '@esbuild/sunos-x64@0.25.4': 2310 + optional: true 2311 + 2312 + '@esbuild/win32-arm64@0.25.10': 2313 + optional: true 2314 + 2315 + '@esbuild/win32-arm64@0.25.4': 2316 + optional: true 2317 + 2318 + '@esbuild/win32-ia32@0.25.10': 2319 + optional: true 2320 + 2321 + '@esbuild/win32-ia32@0.25.4': 2322 + optional: true 2323 + 2324 + '@esbuild/win32-x64@0.25.10': 2325 + optional: true 2326 + 2327 + '@esbuild/win32-x64@0.25.4': 2328 + optional: true 2329 + 2330 + '@fontsource-variable/dm-sans@5.2.8': {} 2331 + 2332 + '@hono/node-server@1.19.1(hono@4.9.6)': 2333 + dependencies: 2334 + hono: 4.9.6 2335 + 2336 + '@hookform/resolvers@5.2.2(react-hook-form@7.63.0(react@19.1.1))': 2337 + dependencies: 2338 + '@standard-schema/utils': 0.3.0 2339 + react-hook-form: 7.63.0(react@19.1.1) 2340 + 2341 + '@img/sharp-darwin-arm64@0.33.5': 2342 + optionalDependencies: 2343 + '@img/sharp-libvips-darwin-arm64': 1.0.4 2344 + optional: true 2345 + 2346 + '@img/sharp-darwin-x64@0.33.5': 2347 + optionalDependencies: 2348 + '@img/sharp-libvips-darwin-x64': 1.0.4 2349 + optional: true 2350 + 2351 + '@img/sharp-libvips-darwin-arm64@1.0.4': 2352 + optional: true 2353 + 2354 + '@img/sharp-libvips-darwin-x64@1.0.4': 2355 + optional: true 2356 + 2357 + '@img/sharp-libvips-linux-arm64@1.0.4': 2358 + optional: true 2359 + 2360 + '@img/sharp-libvips-linux-arm@1.0.5': 2361 + optional: true 2362 + 2363 + '@img/sharp-libvips-linux-s390x@1.0.4': 2364 + optional: true 2365 + 2366 + '@img/sharp-libvips-linux-x64@1.0.4': 2367 + optional: true 2368 + 2369 + '@img/sharp-libvips-linuxmusl-arm64@1.0.4': 2370 + optional: true 2371 + 2372 + '@img/sharp-libvips-linuxmusl-x64@1.0.4': 2373 + optional: true 2374 + 2375 + '@img/sharp-linux-arm64@0.33.5': 2376 + optionalDependencies: 2377 + '@img/sharp-libvips-linux-arm64': 1.0.4 2378 + optional: true 2379 + 2380 + '@img/sharp-linux-arm@0.33.5': 2381 + optionalDependencies: 2382 + '@img/sharp-libvips-linux-arm': 1.0.5 2383 + optional: true 2384 + 2385 + '@img/sharp-linux-s390x@0.33.5': 2386 + optionalDependencies: 2387 + '@img/sharp-libvips-linux-s390x': 1.0.4 2388 + optional: true 2389 + 2390 + '@img/sharp-linux-x64@0.33.5': 2391 + optionalDependencies: 2392 + '@img/sharp-libvips-linux-x64': 1.0.4 2393 + optional: true 2394 + 2395 + '@img/sharp-linuxmusl-arm64@0.33.5': 2396 + optionalDependencies: 2397 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 2398 + optional: true 2399 + 2400 + '@img/sharp-linuxmusl-x64@0.33.5': 2401 + optionalDependencies: 2402 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 2403 + optional: true 2404 + 2405 + '@img/sharp-wasm32@0.33.5': 2406 + dependencies: 2407 + '@emnapi/runtime': 1.5.0 2408 + optional: true 2409 + 2410 + '@img/sharp-win32-ia32@0.33.5': 2411 + optional: true 2412 + 2413 + '@img/sharp-win32-x64@0.33.5': 2414 + optional: true 2415 + 2416 + '@isaacs/fs-minipass@4.0.1': 2417 + dependencies: 2418 + minipass: 7.1.2 2419 + 2420 + '@jridgewell/gen-mapping@0.3.13': 2421 + dependencies: 2422 + '@jridgewell/sourcemap-codec': 1.5.5 2423 + '@jridgewell/trace-mapping': 0.3.31 2424 + 2425 + '@jridgewell/remapping@2.3.5': 2426 + dependencies: 2427 + '@jridgewell/gen-mapping': 0.3.13 2428 + '@jridgewell/trace-mapping': 0.3.31 2429 + 2430 + '@jridgewell/resolve-uri@3.1.2': {} 2431 + 2432 + '@jridgewell/source-map@0.3.11': 2433 + dependencies: 2434 + '@jridgewell/gen-mapping': 0.3.13 2435 + '@jridgewell/trace-mapping': 0.3.31 2436 + 2437 + '@jridgewell/sourcemap-codec@1.5.5': {} 2438 + 2439 + '@jridgewell/trace-mapping@0.3.31': 2440 + dependencies: 2441 + '@jridgewell/resolve-uri': 3.1.2 2442 + '@jridgewell/sourcemap-codec': 1.5.5 2443 + 2444 + '@jridgewell/trace-mapping@0.3.9': 2445 + dependencies: 2446 + '@jridgewell/resolve-uri': 3.1.2 2447 + '@jridgewell/sourcemap-codec': 1.5.5 2448 + 2449 + '@poppinss/colors@4.1.5': 2450 + dependencies: 2451 + kleur: 4.1.5 2452 + 2453 + '@poppinss/dumper@0.6.4': 2454 + dependencies: 2455 + '@poppinss/colors': 4.1.5 2456 + '@sindresorhus/is': 7.1.0 2457 + supports-color: 10.2.2 2458 + 2459 + '@poppinss/exception@1.2.2': {} 2460 + 2461 + '@radix-ui/primitive@1.1.3': {} 2462 + 2463 + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.12)(react@19.1.1)': 2464 + dependencies: 2465 + react: 19.1.1 2466 + optionalDependencies: 2467 + '@types/react': 19.1.12 2468 + 2469 + '@radix-ui/react-context@1.1.2(@types/react@19.1.12)(react@19.1.1)': 2470 + dependencies: 2471 + react: 19.1.1 2472 + optionalDependencies: 2473 + '@types/react': 19.1.12 2474 + 2475 + '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': 2476 + dependencies: 2477 + '@radix-ui/primitive': 1.1.3 2478 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) 2479 + '@radix-ui/react-context': 1.1.2(@types/react@19.1.12)(react@19.1.1) 2480 + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) 2481 + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.1.12)(react@19.1.1) 2482 + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) 2483 + '@radix-ui/react-id': 1.1.1(@types/react@19.1.12)(react@19.1.1) 2484 + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) 2485 + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) 2486 + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) 2487 + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.12)(react@19.1.1) 2488 + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.12)(react@19.1.1) 2489 + aria-hidden: 1.2.6 2490 + react: 19.1.1 2491 + react-dom: 19.1.1(react@19.1.1) 2492 + react-remove-scroll: 2.7.1(@types/react@19.1.12)(react@19.1.1) 2493 + optionalDependencies: 2494 + '@types/react': 19.1.12 2495 + '@types/react-dom': 19.1.9(@types/react@19.1.12) 2496 + 2497 + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': 2498 + dependencies: 2499 + '@radix-ui/primitive': 1.1.3 2500 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) 2501 + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) 2502 + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.12)(react@19.1.1) 2503 + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.1.12)(react@19.1.1) 2504 + react: 19.1.1 2505 + react-dom: 19.1.1(react@19.1.1) 2506 + optionalDependencies: 2507 + '@types/react': 19.1.12 2508 + '@types/react-dom': 19.1.9(@types/react@19.1.12) 2509 + 2510 + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.1.12)(react@19.1.1)': 2511 + dependencies: 2512 + react: 19.1.1 2513 + optionalDependencies: 2514 + '@types/react': 19.1.12 2515 + 2516 + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': 2517 + dependencies: 2518 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) 2519 + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) 2520 + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.12)(react@19.1.1) 2521 + react: 19.1.1 2522 + react-dom: 19.1.1(react@19.1.1) 2523 + optionalDependencies: 2524 + '@types/react': 19.1.12 2525 + '@types/react-dom': 19.1.9(@types/react@19.1.12) 2526 + 2527 + '@radix-ui/react-id@1.1.1(@types/react@19.1.12)(react@19.1.1)': 2528 + dependencies: 2529 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) 2530 + react: 19.1.1 2531 + optionalDependencies: 2532 + '@types/react': 19.1.12 2533 + 2534 + '@radix-ui/react-label@2.1.7(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': 2535 + dependencies: 2536 + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) 2537 + react: 19.1.1 2538 + react-dom: 19.1.1(react@19.1.1) 2539 + optionalDependencies: 2540 + '@types/react': 19.1.12 2541 + '@types/react-dom': 19.1.9(@types/react@19.1.12) 2542 + 2543 + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': 2544 + dependencies: 2545 + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) 2546 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) 2547 + react: 19.1.1 2548 + react-dom: 19.1.1(react@19.1.1) 2549 + optionalDependencies: 2550 + '@types/react': 19.1.12 2551 + '@types/react-dom': 19.1.9(@types/react@19.1.12) 2552 + 2553 + '@radix-ui/react-presence@1.1.5(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': 2554 + dependencies: 2555 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) 2556 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) 2557 + react: 19.1.1 2558 + react-dom: 19.1.1(react@19.1.1) 2559 + optionalDependencies: 2560 + '@types/react': 19.1.12 2561 + '@types/react-dom': 19.1.9(@types/react@19.1.12) 2562 + 2563 + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.1.9(@types/react@19.1.12))(@types/react@19.1.12)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': 2564 + dependencies: 2565 + '@radix-ui/react-slot': 1.2.3(@types/react@19.1.12)(react@19.1.1) 2566 + react: 19.1.1 2567 + react-dom: 19.1.1(react@19.1.1) 2568 + optionalDependencies: 2569 + '@types/react': 19.1.12 2570 + '@types/react-dom': 19.1.9(@types/react@19.1.12) 2571 + 2572 + '@radix-ui/react-slot@1.2.3(@types/react@19.1.12)(react@19.1.1)': 2573 + dependencies: 2574 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.12)(react@19.1.1) 2575 + react: 19.1.1 2576 + optionalDependencies: 2577 + '@types/react': 19.1.12 2578 + 2579 + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.12)(react@19.1.1)': 2580 + dependencies: 2581 + react: 19.1.1 2582 + optionalDependencies: 2583 + '@types/react': 19.1.12 2584 + 2585 + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.12)(react@19.1.1)': 2586 + dependencies: 2587 + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.12)(react@19.1.1) 2588 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) 2589 + react: 19.1.1 2590 + optionalDependencies: 2591 + '@types/react': 19.1.12 2592 + 2593 + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.12)(react@19.1.1)': 2594 + dependencies: 2595 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.12)(react@19.1.1) 2596 + react: 19.1.1 2597 + optionalDependencies: 2598 + '@types/react': 19.1.12 2599 + 2600 + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.1.12)(react@19.1.1)': 2601 + dependencies: 2602 + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.12)(react@19.1.1) 2603 + react: 19.1.1 2604 + optionalDependencies: 2605 + '@types/react': 19.1.12 2606 + 2607 + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.12)(react@19.1.1)': 2608 + dependencies: 2609 + react: 19.1.1 2610 + optionalDependencies: 2611 + '@types/react': 19.1.12 2612 + 2613 + '@remix-run/node-fetch-server@0.8.1': {} 2614 + 2615 + '@rolldown/pluginutils@1.0.0-beta.34': {} 2616 + 2617 + '@rollup/rollup-android-arm-eabi@4.50.2': 2618 + optional: true 2619 + 2620 + '@rollup/rollup-android-arm64@4.50.2': 2621 + optional: true 2622 + 2623 + '@rollup/rollup-darwin-arm64@4.50.2': 2624 + optional: true 2625 + 2626 + '@rollup/rollup-darwin-x64@4.50.2': 2627 + optional: true 2628 + 2629 + '@rollup/rollup-freebsd-arm64@4.50.2': 2630 + optional: true 2631 + 2632 + '@rollup/rollup-freebsd-x64@4.50.2': 2633 + optional: true 2634 + 2635 + '@rollup/rollup-linux-arm-gnueabihf@4.50.2': 2636 + optional: true 2637 + 2638 + '@rollup/rollup-linux-arm-musleabihf@4.50.2': 2639 + optional: true 2640 + 2641 + '@rollup/rollup-linux-arm64-gnu@4.50.2': 2642 + optional: true 2643 + 2644 + '@rollup/rollup-linux-arm64-musl@4.50.2': 2645 + optional: true 2646 + 2647 + '@rollup/rollup-linux-loong64-gnu@4.50.2': 2648 + optional: true 2649 + 2650 + '@rollup/rollup-linux-ppc64-gnu@4.50.2': 2651 + optional: true 2652 + 2653 + '@rollup/rollup-linux-riscv64-gnu@4.50.2': 2654 + optional: true 2655 + 2656 + '@rollup/rollup-linux-riscv64-musl@4.50.2': 2657 + optional: true 2658 + 2659 + '@rollup/rollup-linux-s390x-gnu@4.50.2': 2660 + optional: true 2661 + 2662 + '@rollup/rollup-linux-x64-gnu@4.50.2': 2663 + optional: true 2664 + 2665 + '@rollup/rollup-linux-x64-musl@4.50.2': 2666 + optional: true 2667 + 2668 + '@rollup/rollup-openharmony-arm64@4.50.2': 2669 + optional: true 2670 + 2671 + '@rollup/rollup-win32-arm64-msvc@4.50.2': 2672 + optional: true 2673 + 2674 + '@rollup/rollup-win32-ia32-msvc@4.50.2': 2675 + optional: true 2676 + 2677 + '@rollup/rollup-win32-x64-msvc@4.50.2': 2678 + optional: true 2679 + 2680 + '@sindresorhus/is@7.1.0': {} 2681 + 2682 + '@speed-highlight/core@1.2.7': {} 2683 + 2684 + '@standard-schema/utils@0.3.0': {} 2685 + 2686 + '@swc/core-darwin-arm64@1.13.5': 2687 + optional: true 2688 + 2689 + '@swc/core-darwin-x64@1.13.5': 2690 + optional: true 2691 + 2692 + '@swc/core-linux-arm-gnueabihf@1.13.5': 2693 + optional: true 2694 + 2695 + '@swc/core-linux-arm64-gnu@1.13.5': 2696 + optional: true 2697 + 2698 + '@swc/core-linux-arm64-musl@1.13.5': 2699 + optional: true 2700 + 2701 + '@swc/core-linux-x64-gnu@1.13.5': 2702 + optional: true 2703 + 2704 + '@swc/core-linux-x64-musl@1.13.5': 2705 + optional: true 2706 + 2707 + '@swc/core-win32-arm64-msvc@1.13.5': 2708 + optional: true 2709 + 2710 + '@swc/core-win32-ia32-msvc@1.13.5': 2711 + optional: true 2712 + 2713 + '@swc/core-win32-x64-msvc@1.13.5': 2714 + optional: true 2715 + 2716 + '@swc/core@1.13.5': 2717 + dependencies: 2718 + '@swc/counter': 0.1.3 2719 + '@swc/types': 0.1.25 2720 + optionalDependencies: 2721 + '@swc/core-darwin-arm64': 1.13.5 2722 + '@swc/core-darwin-x64': 1.13.5 2723 + '@swc/core-linux-arm-gnueabihf': 1.13.5 2724 + '@swc/core-linux-arm64-gnu': 1.13.5 2725 + '@swc/core-linux-arm64-musl': 1.13.5 2726 + '@swc/core-linux-x64-gnu': 1.13.5 2727 + '@swc/core-linux-x64-musl': 1.13.5 2728 + '@swc/core-win32-arm64-msvc': 1.13.5 2729 + '@swc/core-win32-ia32-msvc': 1.13.5 2730 + '@swc/core-win32-x64-msvc': 1.13.5 2731 + 2732 + '@swc/counter@0.1.3': {} 2733 + 2734 + '@swc/types@0.1.25': 2735 + dependencies: 2736 + '@swc/counter': 0.1.3 2737 + 2738 + '@tailwindcss/node@4.1.13': 2739 + dependencies: 2740 + '@jridgewell/remapping': 2.3.5 2741 + enhanced-resolve: 5.18.3 2742 + jiti: 2.5.1 2743 + lightningcss: 1.30.1 2744 + magic-string: 0.30.19 2745 + source-map-js: 1.2.1 2746 + tailwindcss: 4.1.13 2747 + 2748 + '@tailwindcss/oxide-android-arm64@4.1.13': 2749 + optional: true 2750 + 2751 + '@tailwindcss/oxide-darwin-arm64@4.1.13': 2752 + optional: true 2753 + 2754 + '@tailwindcss/oxide-darwin-x64@4.1.13': 2755 + optional: true 2756 + 2757 + '@tailwindcss/oxide-freebsd-x64@4.1.13': 2758 + optional: true 2759 + 2760 + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.13': 2761 + optional: true 2762 + 2763 + '@tailwindcss/oxide-linux-arm64-gnu@4.1.13': 2764 + optional: true 2765 + 2766 + '@tailwindcss/oxide-linux-arm64-musl@4.1.13': 2767 + optional: true 2768 + 2769 + '@tailwindcss/oxide-linux-x64-gnu@4.1.13': 2770 + optional: true 2771 + 2772 + '@tailwindcss/oxide-linux-x64-musl@4.1.13': 2773 + optional: true 2774 + 2775 + '@tailwindcss/oxide-wasm32-wasi@4.1.13': 2776 + optional: true 2777 + 2778 + '@tailwindcss/oxide-win32-arm64-msvc@4.1.13': 2779 + optional: true 2780 + 2781 + '@tailwindcss/oxide-win32-x64-msvc@4.1.13': 2782 + optional: true 2783 + 2784 + '@tailwindcss/oxide@4.1.13': 2785 + dependencies: 2786 + detect-libc: 2.1.0 2787 + tar: 7.4.3 2788 + optionalDependencies: 2789 + '@tailwindcss/oxide-android-arm64': 4.1.13 2790 + '@tailwindcss/oxide-darwin-arm64': 4.1.13 2791 + '@tailwindcss/oxide-darwin-x64': 4.1.13 2792 + '@tailwindcss/oxide-freebsd-x64': 4.1.13 2793 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.13 2794 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.13 2795 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.13 2796 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.13 2797 + '@tailwindcss/oxide-linux-x64-musl': 4.1.13 2798 + '@tailwindcss/oxide-wasm32-wasi': 4.1.13 2799 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.13 2800 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.13 2801 + 2802 + '@tailwindcss/vite@4.1.13(vite@7.1.5(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0))': 2803 + dependencies: 2804 + '@tailwindcss/node': 4.1.13 2805 + '@tailwindcss/oxide': 4.1.13 2806 + tailwindcss: 4.1.13 2807 + vite: 7.1.5(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) 2808 + 2809 + '@types/babel__core@7.20.5': 2810 + dependencies: 2811 + '@babel/parser': 7.28.4 2812 + '@babel/types': 7.28.4 2813 + '@types/babel__generator': 7.27.0 2814 + '@types/babel__template': 7.4.4 2815 + '@types/babel__traverse': 7.28.0 2816 + 2817 + '@types/babel__generator@7.27.0': 2818 + dependencies: 2819 + '@babel/types': 7.28.4 2820 + 2821 + '@types/babel__template@7.4.4': 2822 + dependencies: 2823 + '@babel/parser': 7.28.4 2824 + '@babel/types': 7.28.4 2825 + 2826 + '@types/babel__traverse@7.28.0': 2827 + dependencies: 2828 + '@babel/types': 7.28.4 2829 + 2830 + '@types/eslint-scope@3.7.7': 2831 + dependencies: 2832 + '@types/eslint': 9.6.1 2833 + '@types/estree': 1.0.8 2834 + 2835 + '@types/eslint@9.6.1': 2836 + dependencies: 2837 + '@types/estree': 1.0.8 2838 + '@types/json-schema': 7.0.15 2839 + 2840 + '@types/estree@1.0.8': {} 2841 + 2842 + '@types/json-schema@7.0.15': {} 2843 + 2844 + '@types/node@24.5.2': 2845 + dependencies: 2846 + undici-types: 7.12.0 2847 + 2848 + '@types/react-dom@19.1.9(@types/react@19.1.12)': 2849 + dependencies: 2850 + '@types/react': 19.1.12 2851 + 2852 + '@types/react@19.1.12': 2853 + dependencies: 2854 + csstype: 3.1.3 2855 + 2856 + '@vitejs/plugin-react@5.0.2(vite@7.1.5(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0))': 2857 + dependencies: 2858 + '@babel/core': 7.28.4 2859 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) 2860 + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.4) 2861 + '@rolldown/pluginutils': 1.0.0-beta.34 2862 + '@types/babel__core': 7.20.5 2863 + react-refresh: 0.17.0 2864 + vite: 7.1.5(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) 2865 + transitivePeerDependencies: 2866 + - supports-color 2867 + 2868 + '@vitejs/plugin-rsc@0.4.29(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(vite@7.1.5(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0))': 2869 + dependencies: 2870 + '@remix-run/node-fetch-server': 0.8.1 2871 + es-module-lexer: 1.7.0 2872 + estree-walker: 3.0.3 2873 + magic-string: 0.30.19 2874 + periscopic: 4.0.2 2875 + react: 19.1.1 2876 + react-dom: 19.1.1(react@19.1.1) 2877 + turbo-stream: 3.1.0 2878 + vite: 7.1.5(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) 2879 + vitefu: 1.1.1(vite@7.1.5(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) 2880 + 2881 + '@webassemblyjs/ast@1.14.1': 2882 + dependencies: 2883 + '@webassemblyjs/helper-numbers': 1.13.2 2884 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 2885 + 2886 + '@webassemblyjs/floating-point-hex-parser@1.13.2': {} 2887 + 2888 + '@webassemblyjs/helper-api-error@1.13.2': {} 2889 + 2890 + '@webassemblyjs/helper-buffer@1.14.1': {} 2891 + 2892 + '@webassemblyjs/helper-numbers@1.13.2': 2893 + dependencies: 2894 + '@webassemblyjs/floating-point-hex-parser': 1.13.2 2895 + '@webassemblyjs/helper-api-error': 1.13.2 2896 + '@xtuc/long': 4.2.2 2897 + 2898 + '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} 2899 + 2900 + '@webassemblyjs/helper-wasm-section@1.14.1': 2901 + dependencies: 2902 + '@webassemblyjs/ast': 1.14.1 2903 + '@webassemblyjs/helper-buffer': 1.14.1 2904 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 2905 + '@webassemblyjs/wasm-gen': 1.14.1 2906 + 2907 + '@webassemblyjs/ieee754@1.13.2': 2908 + dependencies: 2909 + '@xtuc/ieee754': 1.2.0 2910 + 2911 + '@webassemblyjs/leb128@1.13.2': 2912 + dependencies: 2913 + '@xtuc/long': 4.2.2 2914 + 2915 + '@webassemblyjs/utf8@1.13.2': {} 2916 + 2917 + '@webassemblyjs/wasm-edit@1.14.1': 2918 + dependencies: 2919 + '@webassemblyjs/ast': 1.14.1 2920 + '@webassemblyjs/helper-buffer': 1.14.1 2921 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 2922 + '@webassemblyjs/helper-wasm-section': 1.14.1 2923 + '@webassemblyjs/wasm-gen': 1.14.1 2924 + '@webassemblyjs/wasm-opt': 1.14.1 2925 + '@webassemblyjs/wasm-parser': 1.14.1 2926 + '@webassemblyjs/wast-printer': 1.14.1 2927 + 2928 + '@webassemblyjs/wasm-gen@1.14.1': 2929 + dependencies: 2930 + '@webassemblyjs/ast': 1.14.1 2931 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 2932 + '@webassemblyjs/ieee754': 1.13.2 2933 + '@webassemblyjs/leb128': 1.13.2 2934 + '@webassemblyjs/utf8': 1.13.2 2935 + 2936 + '@webassemblyjs/wasm-opt@1.14.1': 2937 + dependencies: 2938 + '@webassemblyjs/ast': 1.14.1 2939 + '@webassemblyjs/helper-buffer': 1.14.1 2940 + '@webassemblyjs/wasm-gen': 1.14.1 2941 + '@webassemblyjs/wasm-parser': 1.14.1 2942 + 2943 + '@webassemblyjs/wasm-parser@1.14.1': 2944 + dependencies: 2945 + '@webassemblyjs/ast': 1.14.1 2946 + '@webassemblyjs/helper-api-error': 1.13.2 2947 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 2948 + '@webassemblyjs/ieee754': 1.13.2 2949 + '@webassemblyjs/leb128': 1.13.2 2950 + '@webassemblyjs/utf8': 1.13.2 2951 + 2952 + '@webassemblyjs/wast-printer@1.14.1': 2953 + dependencies: 2954 + '@webassemblyjs/ast': 1.14.1 2955 + '@xtuc/long': 4.2.2 2956 + 2957 + '@xtuc/ieee754@1.2.0': {} 2958 + 2959 + '@xtuc/long@4.2.2': {} 2960 + 2961 + acorn-import-phases@1.0.4(acorn@8.15.0): 2962 + dependencies: 2963 + acorn: 8.15.0 2964 + 2965 + acorn-loose@8.5.2: 2966 + dependencies: 2967 + acorn: 8.15.0 2968 + 2969 + acorn-walk@8.3.2: {} 2970 + 2971 + acorn@8.14.0: {} 2972 + 2973 + acorn@8.15.0: {} 2974 + 2975 + ajv-formats@2.1.1(ajv@8.17.1): 2976 + optionalDependencies: 2977 + ajv: 8.17.1 2978 + 2979 + ajv-keywords@5.1.0(ajv@8.17.1): 2980 + dependencies: 2981 + ajv: 8.17.1 2982 + fast-deep-equal: 3.1.3 2983 + 2984 + ajv@8.17.1: 2985 + dependencies: 2986 + fast-deep-equal: 3.1.3 2987 + fast-uri: 3.1.0 2988 + json-schema-traverse: 1.0.0 2989 + require-from-string: 2.0.2 2990 + 2991 + aria-hidden@1.2.6: 2992 + dependencies: 2993 + tslib: 2.8.1 2994 + 2995 + baseline-browser-mapping@2.8.5: {} 2996 + 2997 + blake3-wasm@2.1.5: {} 2998 + 2999 + browserslist@4.26.2: 3000 + dependencies: 3001 + baseline-browser-mapping: 2.8.5 3002 + caniuse-lite: 1.0.30001743 3003 + electron-to-chromium: 1.5.221 3004 + node-releases: 2.0.21 3005 + update-browserslist-db: 1.1.3(browserslist@4.26.2) 3006 + 3007 + buffer-from@1.1.2: {} 3008 + 3009 + caniuse-lite@1.0.30001743: {} 3010 + 3011 + chownr@3.0.0: {} 3012 + 3013 + chrome-trace-event@1.0.4: {} 3014 + 3015 + class-variance-authority@0.7.1: 3016 + dependencies: 3017 + clsx: 2.1.1 3018 + 3019 + clsx@2.1.1: {} 3020 + 3021 + color-convert@2.0.1: 3022 + dependencies: 3023 + color-name: 1.1.4 3024 + 3025 + color-name@1.1.4: {} 3026 + 3027 + color-string@1.9.1: 3028 + dependencies: 3029 + color-name: 1.1.4 3030 + simple-swizzle: 0.2.4 3031 + 3032 + color@4.2.3: 3033 + dependencies: 3034 + color-convert: 2.0.1 3035 + color-string: 1.9.1 3036 + 3037 + commander@2.20.3: {} 3038 + 3039 + convert-source-map@2.0.0: {} 3040 + 3041 + cookie@1.0.2: {} 3042 + 3043 + csstype@3.1.3: {} 3044 + 3045 + debug@4.4.3: 3046 + dependencies: 3047 + ms: 2.1.3 3048 + 3049 + defu@6.1.4: {} 3050 + 3051 + detect-libc@2.1.0: {} 3052 + 3053 + detect-node-es@1.1.0: {} 3054 + 3055 + dotenv@17.2.2: {} 3056 + 3057 + electron-to-chromium@1.5.221: {} 3058 + 3059 + enhanced-resolve@5.18.3: 3060 + dependencies: 3061 + graceful-fs: 4.2.11 3062 + tapable: 2.2.3 3063 + 3064 + error-stack-parser-es@1.0.5: {} 3065 + 3066 + es-module-lexer@1.7.0: {} 3067 + 3068 + esbuild@0.25.10: 3069 + optionalDependencies: 3070 + '@esbuild/aix-ppc64': 0.25.10 3071 + '@esbuild/android-arm': 0.25.10 3072 + '@esbuild/android-arm64': 0.25.10 3073 + '@esbuild/android-x64': 0.25.10 3074 + '@esbuild/darwin-arm64': 0.25.10 3075 + '@esbuild/darwin-x64': 0.25.10 3076 + '@esbuild/freebsd-arm64': 0.25.10 3077 + '@esbuild/freebsd-x64': 0.25.10 3078 + '@esbuild/linux-arm': 0.25.10 3079 + '@esbuild/linux-arm64': 0.25.10 3080 + '@esbuild/linux-ia32': 0.25.10 3081 + '@esbuild/linux-loong64': 0.25.10 3082 + '@esbuild/linux-mips64el': 0.25.10 3083 + '@esbuild/linux-ppc64': 0.25.10 3084 + '@esbuild/linux-riscv64': 0.25.10 3085 + '@esbuild/linux-s390x': 0.25.10 3086 + '@esbuild/linux-x64': 0.25.10 3087 + '@esbuild/netbsd-arm64': 0.25.10 3088 + '@esbuild/netbsd-x64': 0.25.10 3089 + '@esbuild/openbsd-arm64': 0.25.10 3090 + '@esbuild/openbsd-x64': 0.25.10 3091 + '@esbuild/openharmony-arm64': 0.25.10 3092 + '@esbuild/sunos-x64': 0.25.10 3093 + '@esbuild/win32-arm64': 0.25.10 3094 + '@esbuild/win32-ia32': 0.25.10 3095 + '@esbuild/win32-x64': 0.25.10 3096 + 3097 + esbuild@0.25.4: 3098 + optionalDependencies: 3099 + '@esbuild/aix-ppc64': 0.25.4 3100 + '@esbuild/android-arm': 0.25.4 3101 + '@esbuild/android-arm64': 0.25.4 3102 + '@esbuild/android-x64': 0.25.4 3103 + '@esbuild/darwin-arm64': 0.25.4 3104 + '@esbuild/darwin-x64': 0.25.4 3105 + '@esbuild/freebsd-arm64': 0.25.4 3106 + '@esbuild/freebsd-x64': 0.25.4 3107 + '@esbuild/linux-arm': 0.25.4 3108 + '@esbuild/linux-arm64': 0.25.4 3109 + '@esbuild/linux-ia32': 0.25.4 3110 + '@esbuild/linux-loong64': 0.25.4 3111 + '@esbuild/linux-mips64el': 0.25.4 3112 + '@esbuild/linux-ppc64': 0.25.4 3113 + '@esbuild/linux-riscv64': 0.25.4 3114 + '@esbuild/linux-s390x': 0.25.4 3115 + '@esbuild/linux-x64': 0.25.4 3116 + '@esbuild/netbsd-arm64': 0.25.4 3117 + '@esbuild/netbsd-x64': 0.25.4 3118 + '@esbuild/openbsd-arm64': 0.25.4 3119 + '@esbuild/openbsd-x64': 0.25.4 3120 + '@esbuild/sunos-x64': 0.25.4 3121 + '@esbuild/win32-arm64': 0.25.4 3122 + '@esbuild/win32-ia32': 0.25.4 3123 + '@esbuild/win32-x64': 0.25.4 3124 + 3125 + escalade@3.2.0: {} 3126 + 3127 + eslint-scope@5.1.1: 3128 + dependencies: 3129 + esrecurse: 4.3.0 3130 + estraverse: 4.3.0 3131 + 3132 + esrecurse@4.3.0: 3133 + dependencies: 3134 + estraverse: 5.3.0 3135 + 3136 + estraverse@4.3.0: {} 3137 + 3138 + estraverse@5.3.0: {} 3139 + 3140 + estree-walker@3.0.3: 3141 + dependencies: 3142 + '@types/estree': 1.0.8 3143 + 3144 + events@3.3.0: {} 3145 + 3146 + exit-hook@2.2.1: {} 3147 + 3148 + exsolve@1.0.7: {} 3149 + 3150 + fast-deep-equal@3.1.3: {} 3151 + 3152 + fast-uri@3.1.0: {} 3153 + 3154 + fdir@6.5.0(picomatch@4.0.3): 3155 + optionalDependencies: 3156 + picomatch: 4.0.3 3157 + 3158 + fsevents@2.3.3: 3159 + optional: true 3160 + 3161 + gensync@1.0.0-beta.2: {} 3162 + 3163 + get-nonce@1.0.1: {} 3164 + 3165 + glob-to-regexp@0.4.1: {} 3166 + 3167 + graceful-fs@4.2.11: {} 3168 + 3169 + has-flag@4.0.0: {} 3170 + 3171 + hono@4.9.6: {} 3172 + 3173 + is-arrayish@0.3.4: {} 3174 + 3175 + is-reference@3.0.3: 3176 + dependencies: 3177 + '@types/estree': 1.0.8 3178 + 3179 + jest-worker@27.5.1: 3180 + dependencies: 3181 + '@types/node': 24.5.2 3182 + merge-stream: 2.0.0 3183 + supports-color: 8.1.1 3184 + 3185 + jiti@2.5.1: {} 3186 + 3187 + jotai@2.14.0(@babel/core@7.28.4)(@babel/template@7.27.2)(@types/react@19.1.12)(react@19.1.1): 3188 + optionalDependencies: 3189 + '@babel/core': 7.28.4 3190 + '@babel/template': 7.27.2 3191 + '@types/react': 19.1.12 3192 + react: 19.1.1 3193 + 3194 + js-tokens@4.0.0: {} 3195 + 3196 + jsesc@3.1.0: {} 3197 + 3198 + json-parse-even-better-errors@2.3.1: {} 3199 + 3200 + json-schema-traverse@1.0.0: {} 3201 + 3202 + json5@2.2.3: {} 3203 + 3204 + kleur@4.1.5: {} 3205 + 3206 + lightningcss-darwin-arm64@1.30.1: 3207 + optional: true 3208 + 3209 + lightningcss-darwin-x64@1.30.1: 3210 + optional: true 3211 + 3212 + lightningcss-freebsd-x64@1.30.1: 3213 + optional: true 3214 + 3215 + lightningcss-linux-arm-gnueabihf@1.30.1: 3216 + optional: true 3217 + 3218 + lightningcss-linux-arm64-gnu@1.30.1: 3219 + optional: true 3220 + 3221 + lightningcss-linux-arm64-musl@1.30.1: 3222 + optional: true 3223 + 3224 + lightningcss-linux-x64-gnu@1.30.1: 3225 + optional: true 3226 + 3227 + lightningcss-linux-x64-musl@1.30.1: 3228 + optional: true 3229 + 3230 + lightningcss-win32-arm64-msvc@1.30.1: 3231 + optional: true 3232 + 3233 + lightningcss-win32-x64-msvc@1.30.1: 3234 + optional: true 3235 + 3236 + lightningcss@1.30.1: 3237 + dependencies: 3238 + detect-libc: 2.1.0 3239 + optionalDependencies: 3240 + lightningcss-darwin-arm64: 1.30.1 3241 + lightningcss-darwin-x64: 1.30.1 3242 + lightningcss-freebsd-x64: 1.30.1 3243 + lightningcss-linux-arm-gnueabihf: 1.30.1 3244 + lightningcss-linux-arm64-gnu: 1.30.1 3245 + lightningcss-linux-arm64-musl: 1.30.1 3246 + lightningcss-linux-x64-gnu: 1.30.1 3247 + lightningcss-linux-x64-musl: 1.30.1 3248 + lightningcss-win32-arm64-msvc: 1.30.1 3249 + lightningcss-win32-x64-msvc: 1.30.1 3250 + 3251 + loader-runner@4.3.0: {} 3252 + 3253 + lru-cache@5.1.1: 3254 + dependencies: 3255 + yallist: 3.1.1 3256 + 3257 + lucide-react@0.544.0(react@19.1.1): 3258 + dependencies: 3259 + react: 19.1.1 3260 + 3261 + magic-string@0.30.19: 3262 + dependencies: 3263 + '@jridgewell/sourcemap-codec': 1.5.5 3264 + 3265 + merge-stream@2.0.0: {} 3266 + 3267 + mime-db@1.52.0: {} 3268 + 3269 + mime-types@2.1.35: 3270 + dependencies: 3271 + mime-db: 1.52.0 3272 + 3273 + mime@3.0.0: {} 3274 + 3275 + miniflare@4.20250924.0: 3276 + dependencies: 3277 + '@cspotcode/source-map-support': 0.8.1 3278 + acorn: 8.14.0 3279 + acorn-walk: 8.3.2 3280 + exit-hook: 2.2.1 3281 + glob-to-regexp: 0.4.1 3282 + sharp: 0.33.5 3283 + stoppable: 1.1.0 3284 + undici: 7.14.0 3285 + workerd: 1.20250924.0 3286 + ws: 8.18.0 3287 + youch: 4.1.0-beta.10 3288 + zod: 3.22.3 3289 + transitivePeerDependencies: 3290 + - bufferutil 3291 + - utf-8-validate 3292 + 3293 + minipass@7.1.2: {} 3294 + 3295 + minizlib@3.0.2: 3296 + dependencies: 3297 + minipass: 7.1.2 3298 + 3299 + mkdirp@3.0.1: {} 3300 + 3301 + ms@2.1.3: {} 3302 + 3303 + nanoid@3.3.11: {} 3304 + 3305 + neo-async@2.6.2: {} 3306 + 3307 + node-releases@2.0.21: {} 3308 + 3309 + ohash@2.0.11: {} 3310 + 3311 + path-to-regexp@6.3.0: {} 3312 + 3313 + pathe@2.0.3: {} 3314 + 3315 + periscopic@4.0.2: 3316 + dependencies: 3317 + '@types/estree': 1.0.8 3318 + is-reference: 3.0.3 3319 + zimmerframe: 1.1.4 3320 + 3321 + picocolors@1.1.1: {} 3322 + 3323 + picomatch@4.0.3: {} 3324 + 3325 + postcss@8.5.6: 3326 + dependencies: 3327 + nanoid: 3.3.11 3328 + picocolors: 1.1.1 3329 + source-map-js: 1.2.1 3330 + 3331 + randombytes@2.1.0: 3332 + dependencies: 3333 + safe-buffer: 5.2.1 3334 + 3335 + react-confetti@6.4.0(react@19.1.1): 3336 + dependencies: 3337 + react: 19.1.1 3338 + tween-functions: 1.2.0 3339 + 3340 + react-dom@19.1.1(react@19.1.1): 3341 + dependencies: 3342 + react: 19.1.1 3343 + scheduler: 0.26.0 3344 + 3345 + react-hook-form@7.63.0(react@19.1.1): 3346 + dependencies: 3347 + react: 19.1.1 3348 + 3349 + react-refresh@0.17.0: {} 3350 + 3351 + react-remove-scroll-bar@2.3.8(@types/react@19.1.12)(react@19.1.1): 3352 + dependencies: 3353 + react: 19.1.1 3354 + react-style-singleton: 2.2.3(@types/react@19.1.12)(react@19.1.1) 3355 + tslib: 2.8.1 3356 + optionalDependencies: 3357 + '@types/react': 19.1.12 3358 + 3359 + react-remove-scroll@2.7.1(@types/react@19.1.12)(react@19.1.1): 3360 + dependencies: 3361 + react: 19.1.1 3362 + react-remove-scroll-bar: 2.3.8(@types/react@19.1.12)(react@19.1.1) 3363 + react-style-singleton: 2.2.3(@types/react@19.1.12)(react@19.1.1) 3364 + tslib: 2.8.1 3365 + use-callback-ref: 1.3.3(@types/react@19.1.12)(react@19.1.1) 3366 + use-sidecar: 1.1.3(@types/react@19.1.12)(react@19.1.1) 3367 + optionalDependencies: 3368 + '@types/react': 19.1.12 3369 + 3370 + react-server-dom-webpack@19.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(webpack@5.101.3): 3371 + dependencies: 3372 + acorn-loose: 8.5.2 3373 + neo-async: 2.6.2 3374 + react: 19.1.1 3375 + react-dom: 19.1.1(react@19.1.1) 3376 + webpack: 5.101.3 3377 + webpack-sources: 3.3.3 3378 + 3379 + react-style-singleton@2.2.3(@types/react@19.1.12)(react@19.1.1): 3380 + dependencies: 3381 + get-nonce: 1.0.1 3382 + react: 19.1.1 3383 + tslib: 2.8.1 3384 + optionalDependencies: 3385 + '@types/react': 19.1.12 3386 + 3387 + react@19.1.1: {} 3388 + 3389 + require-from-string@2.0.2: {} 3390 + 3391 + rollup@4.50.2: 3392 + dependencies: 3393 + '@types/estree': 1.0.8 3394 + optionalDependencies: 3395 + '@rollup/rollup-android-arm-eabi': 4.50.2 3396 + '@rollup/rollup-android-arm64': 4.50.2 3397 + '@rollup/rollup-darwin-arm64': 4.50.2 3398 + '@rollup/rollup-darwin-x64': 4.50.2 3399 + '@rollup/rollup-freebsd-arm64': 4.50.2 3400 + '@rollup/rollup-freebsd-x64': 4.50.2 3401 + '@rollup/rollup-linux-arm-gnueabihf': 4.50.2 3402 + '@rollup/rollup-linux-arm-musleabihf': 4.50.2 3403 + '@rollup/rollup-linux-arm64-gnu': 4.50.2 3404 + '@rollup/rollup-linux-arm64-musl': 4.50.2 3405 + '@rollup/rollup-linux-loong64-gnu': 4.50.2 3406 + '@rollup/rollup-linux-ppc64-gnu': 4.50.2 3407 + '@rollup/rollup-linux-riscv64-gnu': 4.50.2 3408 + '@rollup/rollup-linux-riscv64-musl': 4.50.2 3409 + '@rollup/rollup-linux-s390x-gnu': 4.50.2 3410 + '@rollup/rollup-linux-x64-gnu': 4.50.2 3411 + '@rollup/rollup-linux-x64-musl': 4.50.2 3412 + '@rollup/rollup-openharmony-arm64': 4.50.2 3413 + '@rollup/rollup-win32-arm64-msvc': 4.50.2 3414 + '@rollup/rollup-win32-ia32-msvc': 4.50.2 3415 + '@rollup/rollup-win32-x64-msvc': 4.50.2 3416 + fsevents: 2.3.3 3417 + 3418 + rsc-html-stream@0.0.7: {} 3419 + 3420 + safe-buffer@5.2.1: {} 3421 + 3422 + scheduler@0.26.0: {} 3423 + 3424 + schema-utils@4.3.2: 3425 + dependencies: 3426 + '@types/json-schema': 7.0.15 3427 + ajv: 8.17.1 3428 + ajv-formats: 2.1.1(ajv@8.17.1) 3429 + ajv-keywords: 5.1.0(ajv@8.17.1) 3430 + 3431 + semver@6.3.1: {} 3432 + 3433 + semver@7.7.2: {} 3434 + 3435 + serialize-javascript@6.0.2: 3436 + dependencies: 3437 + randombytes: 2.1.0 3438 + 3439 + sharp@0.33.5: 3440 + dependencies: 3441 + color: 4.2.3 3442 + detect-libc: 2.1.0 3443 + semver: 7.7.2 3444 + optionalDependencies: 3445 + '@img/sharp-darwin-arm64': 0.33.5 3446 + '@img/sharp-darwin-x64': 0.33.5 3447 + '@img/sharp-libvips-darwin-arm64': 1.0.4 3448 + '@img/sharp-libvips-darwin-x64': 1.0.4 3449 + '@img/sharp-libvips-linux-arm': 1.0.5 3450 + '@img/sharp-libvips-linux-arm64': 1.0.4 3451 + '@img/sharp-libvips-linux-s390x': 1.0.4 3452 + '@img/sharp-libvips-linux-x64': 1.0.4 3453 + '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 3454 + '@img/sharp-libvips-linuxmusl-x64': 1.0.4 3455 + '@img/sharp-linux-arm': 0.33.5 3456 + '@img/sharp-linux-arm64': 0.33.5 3457 + '@img/sharp-linux-s390x': 0.33.5 3458 + '@img/sharp-linux-x64': 0.33.5 3459 + '@img/sharp-linuxmusl-arm64': 0.33.5 3460 + '@img/sharp-linuxmusl-x64': 0.33.5 3461 + '@img/sharp-wasm32': 0.33.5 3462 + '@img/sharp-win32-ia32': 0.33.5 3463 + '@img/sharp-win32-x64': 0.33.5 3464 + 3465 + simple-swizzle@0.2.4: 3466 + dependencies: 3467 + is-arrayish: 0.3.4 3468 + 3469 + source-map-js@1.2.1: {} 3470 + 3471 + source-map-support@0.5.21: 3472 + dependencies: 3473 + buffer-from: 1.1.2 3474 + source-map: 0.6.1 3475 + 3476 + source-map@0.6.1: {} 3477 + 3478 + stoppable@1.1.0: {} 3479 + 3480 + supports-color@10.2.2: {} 3481 + 3482 + supports-color@8.1.1: 3483 + dependencies: 3484 + has-flag: 4.0.0 3485 + 3486 + tailwind-merge@3.3.1: {} 3487 + 3488 + tailwindcss@4.1.13: {} 3489 + 3490 + tapable@2.2.3: {} 3491 + 3492 + tar@7.4.3: 3493 + dependencies: 3494 + '@isaacs/fs-minipass': 4.0.1 3495 + chownr: 3.0.0 3496 + minipass: 7.1.2 3497 + minizlib: 3.0.2 3498 + mkdirp: 3.0.1 3499 + yallist: 5.0.0 3500 + 3501 + terser-webpack-plugin@5.3.14(webpack@5.101.3): 3502 + dependencies: 3503 + '@jridgewell/trace-mapping': 0.3.31 3504 + jest-worker: 27.5.1 3505 + schema-utils: 4.3.2 3506 + serialize-javascript: 6.0.2 3507 + terser: 5.44.0 3508 + webpack: 5.101.3 3509 + 3510 + terser@5.44.0: 3511 + dependencies: 3512 + '@jridgewell/source-map': 0.3.11 3513 + acorn: 8.15.0 3514 + commander: 2.20.3 3515 + source-map-support: 0.5.21 3516 + 3517 + tinyglobby@0.2.15: 3518 + dependencies: 3519 + fdir: 6.5.0(picomatch@4.0.3) 3520 + picomatch: 4.0.3 3521 + 3522 + tslib@2.8.1: {} 3523 + 3524 + turbo-stream@3.1.0: {} 3525 + 3526 + tw-animate-css@1.4.0: {} 3527 + 3528 + tween-functions@1.2.0: {} 3529 + 3530 + typescript@5.9.2: {} 3531 + 3532 + ufo@1.6.1: {} 3533 + 3534 + undici-types@7.12.0: {} 3535 + 3536 + undici@7.14.0: {} 3537 + 3538 + unenv@2.0.0-rc.21: 3539 + dependencies: 3540 + defu: 6.1.4 3541 + exsolve: 1.0.7 3542 + ohash: 2.0.11 3543 + pathe: 2.0.3 3544 + ufo: 1.6.1 3545 + 3546 + update-browserslist-db@1.1.3(browserslist@4.26.2): 3547 + dependencies: 3548 + browserslist: 4.26.2 3549 + escalade: 3.2.0 3550 + picocolors: 1.1.1 3551 + 3552 + use-callback-ref@1.3.3(@types/react@19.1.12)(react@19.1.1): 3553 + dependencies: 3554 + react: 19.1.1 3555 + tslib: 2.8.1 3556 + optionalDependencies: 3557 + '@types/react': 19.1.12 3558 + 3559 + use-sidecar@1.1.3(@types/react@19.1.12)(react@19.1.1): 3560 + dependencies: 3561 + detect-node-es: 1.1.0 3562 + react: 19.1.1 3563 + tslib: 2.8.1 3564 + optionalDependencies: 3565 + '@types/react': 19.1.12 3566 + 3567 + vite@7.1.5(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0): 3568 + dependencies: 3569 + esbuild: 0.25.10 3570 + fdir: 6.5.0(picomatch@4.0.3) 3571 + picomatch: 4.0.3 3572 + postcss: 8.5.6 3573 + rollup: 4.50.2 3574 + tinyglobby: 0.2.15 3575 + optionalDependencies: 3576 + '@types/node': 24.5.2 3577 + fsevents: 2.3.3 3578 + jiti: 2.5.1 3579 + lightningcss: 1.30.1 3580 + terser: 5.44.0 3581 + 3582 + vitefu@1.1.1(vite@7.1.5(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)): 3583 + optionalDependencies: 3584 + vite: 7.1.5(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) 3585 + 3586 + waku@0.26.1(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(react-dom@19.1.1(react@19.1.1))(react-server-dom-webpack@19.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(webpack@5.101.3))(react@19.1.1)(terser@5.44.0): 3587 + dependencies: 3588 + '@hono/node-server': 1.19.1(hono@4.9.6) 3589 + '@swc/core': 1.13.5 3590 + '@vitejs/plugin-react': 5.0.2(vite@7.1.5(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) 3591 + '@vitejs/plugin-rsc': 0.4.29(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(vite@7.1.5(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0)) 3592 + dotenv: 17.2.2 3593 + hono: 4.9.6 3594 + react: 19.1.1 3595 + react-dom: 19.1.1(react@19.1.1) 3596 + react-server-dom-webpack: 19.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(webpack@5.101.3) 3597 + rsc-html-stream: 0.0.7 3598 + vite: 7.1.5(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(terser@5.44.0) 3599 + transitivePeerDependencies: 3600 + - '@swc/helpers' 3601 + - '@types/node' 3602 + - jiti 3603 + - less 3604 + - lightningcss 3605 + - sass 3606 + - sass-embedded 3607 + - stylus 3608 + - sugarss 3609 + - supports-color 3610 + - terser 3611 + - tsx 3612 + - yaml 3613 + 3614 + watchpack@2.4.4: 3615 + dependencies: 3616 + glob-to-regexp: 0.4.1 3617 + graceful-fs: 4.2.11 3618 + 3619 + webpack-sources@3.3.3: {} 3620 + 3621 + webpack@5.101.3: 3622 + dependencies: 3623 + '@types/eslint-scope': 3.7.7 3624 + '@types/estree': 1.0.8 3625 + '@types/json-schema': 7.0.15 3626 + '@webassemblyjs/ast': 1.14.1 3627 + '@webassemblyjs/wasm-edit': 1.14.1 3628 + '@webassemblyjs/wasm-parser': 1.14.1 3629 + acorn: 8.15.0 3630 + acorn-import-phases: 1.0.4(acorn@8.15.0) 3631 + browserslist: 4.26.2 3632 + chrome-trace-event: 1.0.4 3633 + enhanced-resolve: 5.18.3 3634 + es-module-lexer: 1.7.0 3635 + eslint-scope: 5.1.1 3636 + events: 3.3.0 3637 + glob-to-regexp: 0.4.1 3638 + graceful-fs: 4.2.11 3639 + json-parse-even-better-errors: 2.3.1 3640 + loader-runner: 4.3.0 3641 + mime-types: 2.1.35 3642 + neo-async: 2.6.2 3643 + schema-utils: 4.3.2 3644 + tapable: 2.2.3 3645 + terser-webpack-plugin: 5.3.14(webpack@5.101.3) 3646 + watchpack: 2.4.4 3647 + webpack-sources: 3.3.3 3648 + transitivePeerDependencies: 3649 + - '@swc/core' 3650 + - esbuild 3651 + - uglify-js 3652 + 3653 + workerd@1.20250924.0: 3654 + optionalDependencies: 3655 + '@cloudflare/workerd-darwin-64': 1.20250924.0 3656 + '@cloudflare/workerd-darwin-arm64': 1.20250924.0 3657 + '@cloudflare/workerd-linux-64': 1.20250924.0 3658 + '@cloudflare/workerd-linux-arm64': 1.20250924.0 3659 + '@cloudflare/workerd-windows-64': 1.20250924.0 3660 + 3661 + wrangler@4.40.2: 3662 + dependencies: 3663 + '@cloudflare/kv-asset-handler': 0.4.0 3664 + '@cloudflare/unenv-preset': 2.7.4(unenv@2.0.0-rc.21)(workerd@1.20250924.0) 3665 + blake3-wasm: 2.1.5 3666 + esbuild: 0.25.4 3667 + miniflare: 4.20250924.0 3668 + path-to-regexp: 6.3.0 3669 + unenv: 2.0.0-rc.21 3670 + workerd: 1.20250924.0 3671 + optionalDependencies: 3672 + fsevents: 2.3.3 3673 + transitivePeerDependencies: 3674 + - bufferutil 3675 + - utf-8-validate 3676 + 3677 + ws@8.18.0: {} 3678 + 3679 + yallist@3.1.1: {} 3680 + 3681 + yallist@5.0.0: {} 3682 + 3683 + youch-core@0.3.3: 3684 + dependencies: 3685 + '@poppinss/exception': 1.2.2 3686 + error-stack-parser-es: 1.0.5 3687 + 3688 + youch@4.1.0-beta.10: 3689 + dependencies: 3690 + '@poppinss/colors': 4.1.5 3691 + '@poppinss/dumper': 0.6.4 3692 + '@speed-highlight/core': 1.2.7 3693 + cookie: 1.0.2 3694 + youch-core: 0.3.3 3695 + 3696 + zimmerframe@1.1.4: {} 3697 + 3698 + zod@3.22.3: {} 3699 + 3700 + zod@4.1.11: {}
+2
public/robots.txt
···
··· 1 + User-agent: * 2 + Disallow: /RSC/
+55
src/components/debug-game.tsx
···
··· 1 + "use client"; 2 + import { 3 + useBoardMatrix, 4 + useGameResult, 5 + useSessionMatrix, 6 + useVariants, 7 + } from "../lib/hooks"; 8 + 9 + export function DebugGame() { 10 + const variants = useVariants(); 11 + const board = useBoardMatrix(); 12 + const session = useSessionMatrix(); 13 + const result = useGameResult(); 14 + 15 + return ( 16 + <div className=" flex gap-4"> 17 + <div className="flex flex-col"> 18 + <p>Answers</p> 19 + <div className="flex"> 20 + <div className="grid grid-cols-[repeat(5,1fr)] gap-1"> 21 + {board.map((row, y) => 22 + row.map((answer, x) => ( 23 + <div 24 + key={`${x},${y}`} 25 + className="text-center size-12 bg-indigo-100" 26 + > 27 + [{x}, {y}]<br /> 28 + {variants[answer] ?? null} 29 + </div> 30 + )), 31 + )} 32 + </div> 33 + </div> 34 + </div> 35 + <div className="flex flex-col"> 36 + <p>Progress {result && "(Win!)"}</p> 37 + <div className="flex"> 38 + <div className="grid grid-cols-[repeat(5,1fr)] gap-1"> 39 + {session.map((row, y) => 40 + row.map((answer, x) => ( 41 + <div 42 + key={`${x},${y}`} 43 + className="text-center size-12 bg-indigo-100" 44 + > 45 + [{x}, {y}]<br /> 46 + {answer === board[y]![x] ? "✅" : "❌"} 47 + </div> 48 + )), 49 + )} 50 + </div> 51 + </div> 52 + </div> 53 + </div> 54 + ); 55 + }
+51
src/components/game.tsx
···
··· 1 + "use client"; 2 + import { CSSProperties } from "react"; 3 + import { arrayOfSize } from "../lib/game"; 4 + import { useBoardDimensions, useVariants } from "../lib/hooks"; 5 + import { GameButton } from "./game/game-button"; 6 + import { GameHeader } from "./game/game-header"; 7 + import { Celebration } from "./game/celebration"; 8 + import { ClearButton } from "./game/clear-button"; 9 + import { NewGameButton } from "./game/new-game-button"; 10 + import { PreferencesButton } from "./game/preferences-button"; 11 + 12 + interface GameProperties extends CSSProperties { 13 + "--game-width": number; 14 + "--game-height": number; 15 + } 16 + 17 + export function Game() { 18 + const variants = useVariants(); 19 + const [width, height] = useBoardDimensions(); 20 + 21 + return ( 22 + <> 23 + <div> 24 + <div 25 + style={ 26 + { "--game-width": width, "--game-height": height } as GameProperties 27 + } 28 + className="grid grid-cols-[repeat(2,auto)_repeat(var(--game-width),3rem)_repeat(2,auto)] grid-rows-[repeat(2,auto)_repeat(var(--game-height),3rem)_repeat(2,auto)] gap-1 content-stretch" 29 + > 30 + <GameHeader position={"left"} variant={0} /> 31 + <GameHeader position={"top"} variant={1} /> 32 + {variants.length > 2 && <GameHeader position={"right"} variant={2} />} 33 + {variants.length > 3 && ( 34 + <GameHeader position={"bottom"} variant={3} /> 35 + )} 36 + <div className="grid grid-rows-subgrid grid-cols-subgrid row-start-3 -row-end-3 col-start-3 -col-end-3"> 37 + {arrayOfSize(width * height).map((_, i) => ( 38 + <GameButton key={i} index={i} /> 39 + ))} 40 + </div> 41 + </div> 42 + </div> 43 + <div className="grid grid-cols-2 my-6 pt-6 gap-4 border-t-2"> 44 + <ClearButton>Clear</ClearButton> 45 + <NewGameButton>New game</NewGameButton> 46 + <PreferencesButton>Preferences</PreferencesButton> 47 + </div> 48 + <Celebration /> 49 + </> 50 + ); 51 + }
+12
src/components/game/celebration.tsx
···
··· 1 + import { useGameResult } from "@/lib/hooks"; 2 + import ReactConfetti from "react-confetti"; 3 + 4 + export function Celebration() { 5 + const isWin = useGameResult(); 6 + 7 + if (!isWin) { 8 + return null; 9 + } 10 + 11 + return <ReactConfetti />; 12 + }
+14
src/components/game/clear-button.tsx
···
··· 1 + import { sessionAtom } from "@/lib/state"; 2 + import { useResetAtom } from "jotai/utils"; 3 + import { PropsWithChildren } from "react"; 4 + import { Button } from "../ui/button"; 5 + 6 + export function ClearButton(props: PropsWithChildren) { 7 + const clear = useClearGame(); 8 + 9 + return <Button {...props} onClick={() => clear()} size={"lg"} />; 10 + } 11 + 12 + function useClearGame() { 13 + return useResetAtom(sessionAtom); 14 + }
+32
src/components/game/game-button.tsx
···
··· 1 + "use client"; 2 + import { useAtom } from "jotai"; 3 + import { useGameResult, useGuessAt, useVariants } from "../../lib/hooks"; 4 + import { Button } from "../ui/button"; 5 + 6 + interface Props { 7 + index: number; 8 + } 9 + 10 + export function GameButton({ index }: Props) { 11 + const [label, incrValue] = useGameButton(index); 12 + const isWin = useGameResult(); 13 + 14 + return ( 15 + <button 16 + onClick={() => incrValue()} 17 + // variant={isWin ? "noShadow" : "reverse"} 18 + className="flex h-auto text-4xl p-0 justify-center items-center text-main" 19 + > 20 + <span className={isWin ? "animate-bounce" : ""}>{label}</span> 21 + </button> 22 + ); 23 + } 24 + 25 + function useGameButton(index: number) { 26 + const variants = useVariants(); 27 + const guessAtom = useGuessAt(index); 28 + const [currentGuess, incrementGuess] = useAtom(guessAtom); 29 + const label = currentGuess === -1 ? "•" : variants[currentGuess]; 30 + 31 + return [label, incrementGuess] as const; 32 + }
+33
src/components/game/game-header.tsx
···
··· 1 + import { PropsWithChildren } from "react"; 2 + import { groupIntoCols, groupIntoRows } from "../../lib/game"; 3 + import { useBoard, useBoardDimensions, useVariantAt } from "../../lib/hooks"; 4 + import { VariantCaption } from "./variant-caption"; 5 + import { VariantHints } from "./variant-hints"; 6 + 7 + type HeaderProps = { 8 + position: "left" | "top" | "right" | "bottom"; 9 + variant: number; 10 + }; 11 + 12 + export function GameHeader({ 13 + variant, 14 + position, 15 + }: PropsWithChildren<HeaderProps>) { 16 + const label = useVariantAt(variant); 17 + const orientation = ["top", "bottom"].includes(position) 18 + ? "horizontal" 19 + : "vertical"; 20 + const board = useBoard(); 21 + const [width] = useBoardDimensions(); 22 + const items = 23 + orientation === "horizontal" 24 + ? groupIntoCols(board, width) 25 + : groupIntoRows(board, width); 26 + 27 + return ( 28 + <> 29 + <VariantCaption position={position}>{label}</VariantCaption> 30 + <VariantHints variant={variant} position={position} blocks={items} /> 31 + </> 32 + ); 33 + }
+14
src/components/game/new-game-button.tsx
···
··· 1 + import { PropsWithChildren } from "react"; 2 + import { Button } from "../ui/button"; 3 + import { useResetAtom } from "jotai/utils"; 4 + import { boardAtom } from "@/lib/state"; 5 + 6 + export function NewGameButton(props: PropsWithChildren) { 7 + const newGame = useNewGameButton(); 8 + 9 + return <Button {...props} onClick={() => newGame()} size={"lg"} />; 10 + } 11 + 12 + function useNewGameButton() { 13 + return useResetAtom(boardAtom); 14 + }
+12
src/components/game/preferences-button.tsx
···
··· 1 + "use client"; 2 + import { PropsWithChildren } from "react"; 3 + import { Button } from "../ui/button"; 4 + import { PreferencesModal } from "./preferences-modal"; 5 + 6 + export function PreferencesButton({ children }: PropsWithChildren) { 7 + return ( 8 + <PreferencesModal> 9 + <Button size={"lg"}>{children}</Button> 10 + </PreferencesModal> 11 + ); 12 + }
+126
src/components/game/preferences-form.tsx
···
··· 1 + import { zodResolver } from "@hookform/resolvers/zod"; 2 + import { SubmitHandler, useForm } from "react-hook-form"; 3 + import z from "zod"; 4 + import { 5 + Form, 6 + FormControl, 7 + FormField, 8 + FormItem, 9 + FormLabel, 10 + FormMessage, 11 + } from "../ui/form"; 12 + import { Input } from "../ui/input"; 13 + 14 + type FormData = z.infer<typeof formSchema>; 15 + const formSchema = z.object({ 16 + width: z.coerce.number<number>(), 17 + height: z.coerce.number<number>(), 18 + variants: z.array(z.string()).min(2).max(4), 19 + }); 20 + 21 + interface Props { 22 + defaultValues: FormData; 23 + onSubmit: SubmitHandler<FormData>; 24 + buttons?: () => React.ReactNode; 25 + } 26 + 27 + export function PreferencesForm({ defaultValues, onSubmit, buttons }: Props) { 28 + const form = useForm<z.infer<typeof formSchema>>({ 29 + resolver: zodResolver(formSchema), 30 + defaultValues, 31 + }); 32 + 33 + return ( 34 + <Form {...form}> 35 + <form 36 + id="preferences-form" 37 + onSubmit={form.handleSubmit((formData) => { 38 + formData.variants = formData.variants.filter(Boolean); 39 + return onSubmit(formData); 40 + })} 41 + > 42 + <div className="grid gap-4 grid-cols-4"> 43 + <FormField 44 + control={form.control} 45 + name="width" 46 + render={({ field }) => ( 47 + <FormItem className="col-span-2"> 48 + <FormLabel>Columns</FormLabel> 49 + <FormControl> 50 + <Input type="number" {...field} /> 51 + </FormControl> 52 + <FormMessage /> 53 + </FormItem> 54 + )} 55 + /> 56 + <FormField 57 + control={form.control} 58 + name="height" 59 + render={({ field }) => ( 60 + <FormItem className="col-span-2"> 61 + <FormLabel>Rows</FormLabel> 62 + <FormControl> 63 + <Input type="number" {...field} /> 64 + </FormControl> 65 + <FormMessage /> 66 + </FormItem> 67 + )} 68 + /> 69 + <FormField 70 + control={form.control} 71 + name="variants.0" 72 + render={({ field }) => ( 73 + <FormItem> 74 + <FormLabel>Left</FormLabel> 75 + <FormControl> 76 + <Input {...field} className="text-center text-2xl" /> 77 + </FormControl> 78 + <FormMessage /> 79 + </FormItem> 80 + )} 81 + /> 82 + <FormField 83 + control={form.control} 84 + name="variants.1" 85 + render={({ field }) => ( 86 + <FormItem> 87 + <FormLabel>Top</FormLabel> 88 + <FormControl> 89 + <Input {...field} className="text-center text-2xl" /> 90 + </FormControl> 91 + <FormMessage /> 92 + </FormItem> 93 + )} 94 + /> 95 + <FormField 96 + control={form.control} 97 + name="variants.2" 98 + render={({ field }) => ( 99 + <FormItem> 100 + <FormLabel>Right</FormLabel> 101 + <FormControl> 102 + <Input {...field} className="text-center text-2xl" /> 103 + </FormControl> 104 + <FormMessage /> 105 + </FormItem> 106 + )} 107 + /> 108 + <FormField 109 + control={form.control} 110 + name="variants.3" 111 + render={({ field }) => ( 112 + <FormItem> 113 + <FormLabel>Bottom</FormLabel> 114 + <FormControl> 115 + <Input {...field} className="text-center text-2xl" /> 116 + </FormControl> 117 + <FormMessage /> 118 + </FormItem> 119 + )} 120 + /> 121 + <div className="col-span-4">{buttons?.()}</div> 122 + </div> 123 + </form> 124 + </Form> 125 + ); 126 + }
+54
src/components/game/preferences-modal.tsx
···
··· 1 + import { arrayOfSize } from "@/lib/game"; 2 + import { usePreferences } from "@/lib/hooks"; 3 + import { PropsWithChildren, useState } from "react"; 4 + import { Button } from "../ui/button"; 5 + import { 6 + Dialog, 7 + DialogClose, 8 + DialogContent, 9 + DialogDescription, 10 + DialogFooter, 11 + DialogHeader, 12 + DialogTitle, 13 + DialogTrigger, 14 + } from "../ui/dialog"; 15 + import { PreferencesForm } from "./preferences-form"; 16 + 17 + export function PreferencesModal({ children }: PropsWithChildren) { 18 + const [open, setOpen] = useState(false); 19 + const [{ width, height, variants }, setPreferences] = usePreferences(); 20 + const defaultValues = { 21 + width, 22 + height, 23 + variants: arrayOfSize(4).map((_, i) => variants[i] ?? ""), 24 + }; 25 + 26 + return ( 27 + <Dialog open={open} onOpenChange={setOpen}> 28 + <DialogTrigger asChild>{children}</DialogTrigger> 29 + <DialogContent className="sm:max-w-[425px]"> 30 + <DialogHeader> 31 + <DialogTitle>Preferences</DialogTitle> 32 + <DialogDescription> 33 + Configure your game just the way you like it! 34 + </DialogDescription> 35 + </DialogHeader> 36 + <PreferencesForm 37 + defaultValues={defaultValues} 38 + onSubmit={(formData) => { 39 + setPreferences(formData); 40 + setOpen(false); 41 + }} 42 + buttons={() => ( 43 + <DialogFooter className="flex flex-row justify-end"> 44 + <DialogClose asChild> 45 + <Button variant="neutral">Cancel</Button> 46 + </DialogClose> 47 + <Button type="submit">Save changes</Button> 48 + </DialogFooter> 49 + )} 50 + /> 51 + </DialogContent> 52 + </Dialog> 53 + ); 54 + }
+31
src/components/game/variant-caption.tsx
···
··· 1 + import { cva } from "class-variance-authority"; 2 + import { PropsWithChildren } from "react"; 3 + 4 + const caption = cva("flex justify-center text-2xl", { 5 + variants: { 6 + orientation: { 7 + vertical: "grid-rows-subgrid row-start-3 -row-end-3 flex-col", 8 + horizontal: "grid-cols-subgrid col-start-3 -col-end-3", 9 + }, 10 + position: { 11 + left: "col-start-1", 12 + top: "row-start-1", 13 + right: "-col-start-1", 14 + bottom: "-row-start-1", 15 + }, 16 + }, 17 + }); 18 + 19 + interface Props { 20 + position: "left" | "top" | "right" | "bottom"; 21 + } 22 + 23 + export function VariantCaption({ 24 + position, 25 + children, 26 + }: PropsWithChildren<Props>) { 27 + const orientation = ["top", "bottom"].includes(position) 28 + ? "horizontal" 29 + : "vertical"; 30 + return <div className={caption({ position, orientation })}>{children}</div>; 31 + }
+39
src/components/game/variant-header.tsx
···
··· 1 + import { useBoardSubset } from "@/lib/hooks"; 2 + import { cva } from "class-variance-authority"; 3 + 4 + const variantHeader = cva("flex gap-2 text-sm text-main font-bold", { 5 + variants: { 6 + orientation: { 7 + horizontal: "", 8 + vertical: "flex-col items-center", 9 + }, 10 + }, 11 + }); 12 + 13 + type Props = { 14 + variant: number; 15 + }; 16 + 17 + type RowProps = { 18 + row: number; 19 + } & Props; 20 + 21 + type ColProps = { 22 + col: number; 23 + } & Props; 24 + 25 + export function VariantHeader({ variant, ...props }: RowProps | ColProps) { 26 + const orientation = "row" in props ? "horizontal" : "vertical"; 27 + const block = useBoardSubset( 28 + "row" in props ? "row" : "col", 29 + "row" in props ? props.row : props.col, 30 + variant, 31 + ); 32 + return ( 33 + <div className={variantHeader({ orientation })}> 34 + {block.map((count, i) => ( 35 + <p key={i}>{count}</p> 36 + ))} 37 + </div> 38 + ); 39 + }
+57
src/components/game/variant-hints.tsx
···
··· 1 + import { cva } from "class-variance-authority"; 2 + import { VariantHeader } from "./variant-header"; 3 + 4 + const header = cva("grid", { 5 + variants: { 6 + orientation: { 7 + vertical: "grid-rows-subgrid row-start-3 -row-end-3", 8 + horizontal: "grid-cols-subgrid col-start-3 -col-end-3", 9 + }, 10 + position: { 11 + left: "col-start-2", 12 + top: "row-start-2", 13 + right: "-col-start-2", 14 + bottom: "-row-start-2", 15 + }, 16 + }, 17 + }); 18 + 19 + interface Props { 20 + variant: number; 21 + position: "left" | "top" | "right" | "bottom"; 22 + blocks: number[][]; 23 + } 24 + 25 + function headerProps<T extends "row" | "col">(orientation: T) { 26 + return (index: number) => { 27 + return { 28 + [orientation]: index, 29 + } as Record<T, number>; 30 + }; 31 + } 32 + 33 + export function VariantHints({ variant, position, blocks }: Props) { 34 + const orientation = ["top", "bottom"].includes(position) 35 + ? "horizontal" 36 + : "vertical"; 37 + const propsFactory = headerProps( 38 + orientation === "horizontal" ? "col" : "row", 39 + ); 40 + return ( 41 + <div className={header({ position, orientation })}> 42 + {blocks.map((_, i) => ( 43 + <div 44 + key={i} 45 + className={[ 46 + "flex items-center", 47 + orientation === "horizontal" ? "flex-col" : "", 48 + position === "left" ? "justify-end" : "", 49 + position === "top" ? "justify-end" : "", 50 + ].join(" ")} 51 + > 52 + <VariantHeader key={i} variant={variant} {...propsFactory(i)} /> 53 + </div> 54 + ))} 55 + </div> 56 + ); 57 + }
+33
src/components/providers/hydration-provider.tsx
···
··· 1 + "use client"; 2 + 3 + import { useHydrateAtoms } from "jotai/utils"; 4 + import { PropsWithChildren } from "react"; 5 + import { 6 + _boardAtom, 7 + heightAtom, 8 + variantsAtom, 9 + widthAtom, 10 + } from "../../lib/state"; 11 + 12 + interface Props { 13 + width: number; 14 + height: number; 15 + variants: string[]; 16 + board: number[]; 17 + } 18 + 19 + export function HydrationProvider({ 20 + width, 21 + height, 22 + variants, 23 + board, 24 + children, 25 + }: PropsWithChildren<Props>) { 26 + useHydrateAtoms([ 27 + [widthAtom, width], 28 + [heightAtom, height], 29 + [variantsAtom, variants], 30 + [_boardAtom, board], 31 + ]); 32 + return children; 33 + }
+7
src/components/providers/state-provider.tsx
···
··· 1 + "use client"; 2 + import { Provider } from "jotai"; 3 + import { PropsWithChildren } from "react"; 4 + 5 + export function StateProvider({ children }: PropsWithChildren) { 6 + return <Provider>{children}</Provider>; 7 + }
+56
src/components/ui/button.tsx
···
··· 1 + import { Slot } from "@radix-ui/react-slot" 2 + import { cva, type VariantProps } from "class-variance-authority" 3 + 4 + import * as React from "react" 5 + 6 + import { cn } from "@/lib/utils" 7 + 8 + const buttonVariants = cva( 9 + "inline-flex items-center justify-center whitespace-nowrap rounded-base text-sm font-base ring-offset-white transition-all gap-2 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-black focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", 10 + { 11 + variants: { 12 + variant: { 13 + default: 14 + "text-main-foreground bg-main border-2 border-border shadow-shadow hover:translate-x-boxShadowX hover:translate-y-boxShadowY hover:shadow-none", 15 + noShadow: "text-main-foreground bg-main border-2 border-border", 16 + neutral: 17 + "bg-secondary-background text-foreground border-2 border-border shadow-shadow hover:translate-x-boxShadowX hover:translate-y-boxShadowY hover:shadow-none", 18 + reverse: 19 + "text-main-foreground bg-main border-2 border-border hover:translate-x-reverseBoxShadowX hover:translate-y-reverseBoxShadowY hover:shadow-shadow", 20 + }, 21 + size: { 22 + default: "h-10 px-4 py-2", 23 + sm: "h-9 px-3", 24 + lg: "h-11 px-8", 25 + icon: "size-10", 26 + }, 27 + }, 28 + defaultVariants: { 29 + variant: "default", 30 + size: "default", 31 + }, 32 + }, 33 + ) 34 + 35 + function Button({ 36 + className, 37 + variant, 38 + size, 39 + asChild = false, 40 + ...props 41 + }: React.ComponentProps<"button"> & 42 + VariantProps<typeof buttonVariants> & { 43 + asChild?: boolean 44 + }) { 45 + const Comp = asChild ? Slot : "button" 46 + 47 + return ( 48 + <Comp 49 + data-slot="button" 50 + className={cn(buttonVariants({ variant, size, className }))} 51 + {...props} 52 + /> 53 + ) 54 + } 55 + 56 + export { Button, buttonVariants }
+137
src/components/ui/dialog.tsx
···
··· 1 + import * as DialogPrimitive from "@radix-ui/react-dialog" 2 + import { X } from "lucide-react" 3 + 4 + import * as React from "react" 5 + 6 + import { cn } from "@/lib/utils" 7 + 8 + function Dialog({ 9 + ...props 10 + }: React.ComponentProps<typeof DialogPrimitive.Root>) { 11 + return <DialogPrimitive.Root data-slot="dialog" {...props} /> 12 + } 13 + 14 + function DialogTrigger({ 15 + ...props 16 + }: React.ComponentProps<typeof DialogPrimitive.Trigger>) { 17 + return <DialogPrimitive.Trigger data-slot="dialog-trigger" {...props} /> 18 + } 19 + 20 + function DialogPortal({ 21 + ...props 22 + }: React.ComponentProps<typeof DialogPrimitive.Portal>) { 23 + return <DialogPrimitive.Portal data-slot="dialog-portal" {...props} /> 24 + } 25 + 26 + function DialogClose({ 27 + ...props 28 + }: React.ComponentProps<typeof DialogPrimitive.Close>) { 29 + return <DialogPrimitive.Close data-slot="dialog-close" {...props} /> 30 + } 31 + 32 + function DialogOverlay({ 33 + className, 34 + ...props 35 + }: React.ComponentProps<typeof DialogPrimitive.Overlay>) { 36 + return ( 37 + <DialogPrimitive.Overlay 38 + data-slot="dialog-overlay" 39 + className={cn( 40 + "fixed inset-0 z-50 bg-overlay data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", 41 + className, 42 + )} 43 + {...props} 44 + /> 45 + ) 46 + } 47 + 48 + function DialogContent({ 49 + className, 50 + children, 51 + ...props 52 + }: React.ComponentProps<typeof DialogPrimitive.Content>) { 53 + return ( 54 + <DialogPortal> 55 + <DialogOverlay /> 56 + <DialogPrimitive.Content 57 + data-slot="dialog-content" 58 + className={cn( 59 + "bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-base border-2 border-border p-6 shadow-shadow duration-200 sm:max-w-lg", 60 + className, 61 + )} 62 + {...props} 63 + > 64 + {children} 65 + <DialogPrimitive.Close className="absolute right-4 top-4 rounded-base opacity-100 ring-offset-white focus:outline-hidden focus:ring-2 focus:ring-black focus:ring-offset-2 disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4"> 66 + <X /> 67 + <span className="sr-only">Close</span> 68 + </DialogPrimitive.Close> 69 + </DialogPrimitive.Content> 70 + </DialogPortal> 71 + ) 72 + } 73 + 74 + function DialogHeader({ className, ...props }: React.ComponentProps<"div">) { 75 + return ( 76 + <div 77 + data-slot="dialog-header" 78 + className={cn("flex flex-col gap-2 text-center sm:text-left", className)} 79 + {...props} 80 + /> 81 + ) 82 + } 83 + 84 + function DialogFooter({ className, ...props }: React.ComponentProps<"div">) { 85 + return ( 86 + <div 87 + data-slot="dialog-footer" 88 + className={cn( 89 + "flex flex-col-reverse gap-3 sm:flex-row sm:justify-end", 90 + className, 91 + )} 92 + {...props} 93 + /> 94 + ) 95 + } 96 + 97 + function DialogTitle({ 98 + className, 99 + ...props 100 + }: React.ComponentProps<typeof DialogPrimitive.Title>) { 101 + return ( 102 + <DialogPrimitive.Title 103 + data-slot="dialog-title" 104 + className={cn( 105 + "text-lg font-heading leading-none tracking-tight", 106 + className, 107 + )} 108 + {...props} 109 + /> 110 + ) 111 + } 112 + 113 + function DialogDescription({ 114 + className, 115 + ...props 116 + }: React.ComponentProps<typeof DialogPrimitive.Description>) { 117 + return ( 118 + <DialogPrimitive.Description 119 + data-slot="dialog-description" 120 + className={cn("text-sm font-base text-foreground", className)} 121 + {...props} 122 + /> 123 + ) 124 + } 125 + 126 + export { 127 + Dialog, 128 + DialogPortal, 129 + DialogOverlay, 130 + DialogClose, 131 + DialogTrigger, 132 + DialogContent, 133 + DialogHeader, 134 + DialogFooter, 135 + DialogTitle, 136 + DialogDescription, 137 + }
+167
src/components/ui/form.tsx
···
··· 1 + "use client" 2 + 3 + import * as LabelPrimitive from "@radix-ui/react-label" 4 + import { Slot } from "@radix-ui/react-slot" 5 + import { 6 + Controller, 7 + FormProvider, 8 + useFormContext, 9 + useFormState, 10 + type ControllerProps, 11 + type FieldPath, 12 + type FieldValues, 13 + } from "react-hook-form" 14 + 15 + import * as React from "react" 16 + 17 + import { Label } from "@/components/ui/label" 18 + 19 + import { cn } from "@/lib/utils" 20 + 21 + const Form = FormProvider 22 + 23 + type FormFieldContextValue< 24 + TFieldValues extends FieldValues = FieldValues, 25 + TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>, 26 + > = { 27 + name: TName 28 + } 29 + 30 + const FormFieldContext = React.createContext<FormFieldContextValue>( 31 + {} as FormFieldContextValue, 32 + ) 33 + 34 + function FormField< 35 + TFieldValues extends FieldValues = FieldValues, 36 + TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>, 37 + >({ ...props }: ControllerProps<TFieldValues, TName>) { 38 + return ( 39 + <FormFieldContext.Provider value={{ name: props.name }}> 40 + <Controller {...props} /> 41 + </FormFieldContext.Provider> 42 + ) 43 + } 44 + 45 + const useFormField = () => { 46 + const fieldContext = React.useContext(FormFieldContext) 47 + const itemContext = React.useContext(FormItemContext) 48 + const { getFieldState } = useFormContext() 49 + const formState = useFormState({ name: fieldContext.name }) 50 + const fieldState = getFieldState(fieldContext.name, formState) 51 + 52 + if (!fieldContext) { 53 + throw new Error("useFormField should be used within <FormField>") 54 + } 55 + 56 + const { id } = itemContext 57 + 58 + return { 59 + id, 60 + name: fieldContext.name, 61 + formItemId: `${id}-form-item`, 62 + formDescriptionId: `${id}-form-item-description`, 63 + formMessageId: `${id}-form-item-message`, 64 + ...fieldState, 65 + } 66 + } 67 + 68 + type FormItemContextValue = { 69 + id: string 70 + } 71 + 72 + const FormItemContext = React.createContext<FormItemContextValue>( 73 + {} as FormItemContextValue, 74 + ) 75 + 76 + function FormItem({ className, ...props }: React.ComponentProps<"div">) { 77 + const id = React.useId() 78 + 79 + return ( 80 + <FormItemContext.Provider value={{ id }}> 81 + <div 82 + data-slot="form-item" 83 + className={cn("grid gap-2", className)} 84 + {...props} 85 + /> 86 + </FormItemContext.Provider> 87 + ) 88 + } 89 + 90 + function FormLabel({ 91 + className, 92 + ...props 93 + }: React.ComponentProps<typeof LabelPrimitive.Root>) { 94 + const { error, formItemId } = useFormField() 95 + 96 + return ( 97 + <Label 98 + data-slot="form-label" 99 + data-error={!!error} 100 + className={cn("font-heading", className)} 101 + htmlFor={formItemId} 102 + {...props} 103 + /> 104 + ) 105 + } 106 + 107 + function FormControl({ ...props }: React.ComponentProps<typeof Slot>) { 108 + const { error, formItemId, formDescriptionId, formMessageId } = useFormField() 109 + 110 + return ( 111 + <Slot 112 + data-slot="form-control" 113 + id={formItemId} 114 + aria-describedby={ 115 + !error 116 + ? `${formDescriptionId}` 117 + : `${formDescriptionId} ${formMessageId}` 118 + } 119 + aria-invalid={!!error} 120 + {...props} 121 + /> 122 + ) 123 + } 124 + 125 + function FormDescription({ className, ...props }: React.ComponentProps<"p">) { 126 + const { formDescriptionId } = useFormField() 127 + 128 + return ( 129 + <p 130 + data-slot="form-description" 131 + id={formDescriptionId} 132 + className={cn("text-sm font-base text-foreground", className)} 133 + {...props} 134 + /> 135 + ) 136 + } 137 + 138 + function FormMessage({ className, ...props }: React.ComponentProps<"p">) { 139 + const { error, formMessageId } = useFormField() 140 + const body = error ? String(error?.message ?? "") : props.children 141 + 142 + if (!body) { 143 + return null 144 + } 145 + 146 + return ( 147 + <p 148 + data-slot="form-message" 149 + id={formMessageId} 150 + className={cn("text-sm font-base text-red-500", className)} 151 + {...props} 152 + > 153 + {body} 154 + </p> 155 + ) 156 + } 157 + 158 + export { 159 + useFormField, 160 + Form, 161 + FormItem, 162 + FormLabel, 163 + FormControl, 164 + FormDescription, 165 + FormMessage, 166 + FormField, 167 + }
+19
src/components/ui/input.tsx
···
··· 1 + import * as React from "react" 2 + 3 + import { cn } from "@/lib/utils" 4 + 5 + function Input({ className, type, ...props }: React.ComponentProps<"input">) { 6 + return ( 7 + <input 8 + type={type} 9 + data-slot="input" 10 + className={cn( 11 + "flex h-10 w-full rounded-base border-2 border-border bg-secondary-background selection:bg-main selection:text-main-foreground px-3 py-2 text-sm font-base text-foreground file:border-0 file:bg-transparent file:text-sm file:font-heading placeholder:text-foreground/50 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-black focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", 12 + className, 13 + )} 14 + {...props} 15 + /> 16 + ) 17 + } 18 + 19 + export { Input }
+23
src/components/ui/label.tsx
···
··· 1 + import * as LabelPrimitive from "@radix-ui/react-label" 2 + 3 + import * as React from "react" 4 + 5 + import { cn } from "@/lib/utils" 6 + 7 + function Label({ 8 + className, 9 + ...props 10 + }: React.ComponentProps<typeof LabelPrimitive.Root>) { 11 + return ( 12 + <LabelPrimitive.Root 13 + data-slot="label" 14 + className={cn( 15 + "text-sm font-heading leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70", 16 + className, 17 + )} 18 + {...props} 19 + /> 20 + ) 21 + } 22 + 23 + export { Label }
+54
src/lib/game.ts
···
··· 1 + export function arrayOfSize(size: number) { 2 + return new Array<null>(size).fill(null); 3 + } 4 + 5 + export function groupIntoRows<T>(items: T[], columns: number) { 6 + return items.reduce((acc, cur, i) => { 7 + if (i % columns === 0) { 8 + return [...acc, [cur]]; 9 + } 10 + 11 + acc[acc.length - 1] = [...acc[acc.length - 1]!, cur]; 12 + return acc; 13 + }, [] as T[][]); 14 + } 15 + 16 + export function groupIntoCols<T>(items: T[], columns: number) { 17 + const rows = groupIntoRows(items, columns); 18 + return arrayOfSize(rows[0]!.length).map((_, x) => 19 + rows.map((row) => row[x] as T), 20 + ); 21 + } 22 + 23 + // Given a row or column, return an array containing the 24 + // number of contiguous values grouped by variant. 25 + // E.g. given the block [0, 1, 1, 0, 2, 1], return [2, 1] for variant 1. 26 + export function groupByValue<T extends Array<any>>(block: T, value: T[number]) { 27 + const [first, ...rest] = block; 28 + 29 + const grouped = rest 30 + .reduce<T[number][][]>( 31 + (acc, cur) => { 32 + if (acc.at(acc.length - 1)![0] === cur) { 33 + acc[acc.length - 1] = [...acc[acc.length - 1]!, cur]; 34 + return acc; 35 + } 36 + 37 + return [...acc, [cur]]; 38 + }, 39 + [[first]], 40 + ) 41 + .reduce<number[]>((acc, cur) => { 42 + if (cur[0] === value) { 43 + return [...acc, cur.length]; 44 + } 45 + 46 + return acc; 47 + }, []); 48 + 49 + if (grouped.length === 0) { 50 + return [0]; 51 + } 52 + 53 + return grouped; 54 + }
+72
src/lib/hooks.ts
···
··· 1 + import { useAtom, useAtomValue } from "jotai"; 2 + import { useMemo } from "react"; 3 + import { 4 + _boardAtom, 5 + boardAtom, 6 + boardMatrixAtom, 7 + gameResultAtom, 8 + getGuessAtomAt, 9 + getVariantAtomAt, 10 + heightAtom, 11 + preferencesAtom, 12 + sessionMatrixAtom, 13 + variantsAtom, 14 + widthAtom, 15 + } from "./state"; 16 + import { groupByValue, groupIntoCols, groupIntoRows } from "./game"; 17 + 18 + export function useGuessAt(index: number) { 19 + const atomCell = useMemo(() => getGuessAtomAt(index), [index]); 20 + const [cell] = useAtom(atomCell); 21 + return cell; 22 + } 23 + 24 + export function useVariants() { 25 + return useAtomValue(variantsAtom); 26 + } 27 + 28 + export function useVariantAt(index: number) { 29 + const variantAtom = useMemo(() => getVariantAtomAt(index), [index]); 30 + return useAtomValue(variantAtom); 31 + } 32 + 33 + export function useBoard() { 34 + return useAtomValue(boardAtom); 35 + } 36 + 37 + export function useBoardDimensions() { 38 + const width = useAtomValue(widthAtom); 39 + const height = useAtomValue(heightAtom); 40 + return [width, height] as const; 41 + } 42 + 43 + export function useBoardMatrix() { 44 + return useAtomValue(boardMatrixAtom); 45 + } 46 + 47 + export function useSessionMatrix() { 48 + return useAtomValue(sessionMatrixAtom); 49 + } 50 + 51 + export function useGameResult() { 52 + return useAtomValue(gameResultAtom); 53 + } 54 + 55 + export function useBoardSubset( 56 + orientation: "row" | "col", 57 + index: number, 58 + variant: number, 59 + ) { 60 + const [width] = useBoardDimensions(); 61 + const board = useBoard(); 62 + 63 + if (orientation === "row") { 64 + return groupByValue(groupIntoRows(board, width)[index]!, variant); 65 + } else { 66 + return groupByValue(groupIntoCols(board, width)[index]!, variant); 67 + } 68 + } 69 + 70 + export function usePreferences() { 71 + return useAtom(preferencesAtom); 72 + }
+127
src/lib/state.ts
···
··· 1 + import { atom } from "jotai"; 2 + import { atomWithRefresh, atomWithReset, RESET, selectAtom } from "jotai/utils"; 3 + import { arrayOfSize, groupIntoRows } from "./game"; 4 + 5 + export const defaultWidth = 5; 6 + export const defaultHeight = 5; 7 + export const defaultVariants = ["🍒", "🍍"]; 8 + 9 + export const widthAtom = atomWithReset(defaultWidth); 10 + export const heightAtom = atomWithReset(defaultHeight); 11 + export const variantsAtom = atomWithReset(defaultVariants); 12 + 13 + export const entropyAtom = atom((get) => get(variantsAtom).length); 14 + export const sizeAtom = atom((get) => get(widthAtom) * get(heightAtom)); 15 + 16 + export const _boardAtom = atom( 17 + generateBoard(defaultWidth * defaultHeight, defaultVariants.length), 18 + ); 19 + 20 + export const boardAtom = atom( 21 + (get) => get(_boardAtom), 22 + (get, set, _value?: typeof RESET) => { 23 + set(sessionAtom, RESET); 24 + set(_boardAtom, generateBoard(get(sizeAtom), get(entropyAtom))); 25 + }, 26 + ); 27 + 28 + export const boardMatrixAtom = atom((get) => 29 + groupIntoRows(get(_boardAtom), get(widthAtom)), 30 + ); 31 + 32 + const newCell = () => { 33 + const cellAtom = atomWithReset(-1); 34 + return atom( 35 + (get) => get(cellAtom), 36 + (get, set, reset?: typeof RESET) => { 37 + if (reset === RESET) { 38 + return set(cellAtom, RESET); 39 + } 40 + 41 + if (get(gameResultAtom)) { 42 + return; 43 + } 44 + 45 + const options = get(variantsAtom); 46 + const currentValue = get(cellAtom); 47 + 48 + let newValue: number = currentValue + 1; 49 + if (newValue === options.length) { 50 + newValue = -1; 51 + } 52 + 53 + set(cellAtom, newValue); 54 + }, 55 + ); 56 + }; 57 + 58 + const _sessionAtom = atomWithRefresh((get) => 59 + arrayOfSize(get(sizeAtom)).map(() => newCell()), 60 + ); 61 + 62 + export const sessionAtom = atom( 63 + (get) => get(_sessionAtom), 64 + (get, set, _value?: typeof RESET) => 65 + get(_sessionAtom).forEach((cell) => { 66 + if (get(cell) < 0) { 67 + return; 68 + } 69 + set(cell, RESET); 70 + }), 71 + ); 72 + 73 + export const sessionMatrixAtom = atom((get) => 74 + groupIntoRows(get(_sessionAtom).map(get), get(widthAtom)), 75 + ); 76 + 77 + export const gameResultAtom = atom( 78 + (get) => 79 + get(boardMatrixAtom).toString() === get(sessionMatrixAtom).toString(), 80 + ); 81 + 82 + export const preferencesAtom = atom( 83 + (get) => { 84 + return { 85 + width: get(widthAtom), 86 + height: get(heightAtom), 87 + variants: get(variantsAtom), 88 + }; 89 + }, 90 + ( 91 + _get, 92 + set, 93 + { 94 + width, 95 + height, 96 + variants, 97 + }: { width: number; height: number; variants: string[] }, 98 + ) => { 99 + set(widthAtom, width); 100 + set(heightAtom, height); 101 + set(variantsAtom, variants); 102 + set(boardAtom); 103 + }, 104 + ); 105 + 106 + export const getGuessAtomAt = (index: number) => 107 + selectAtom(sessionAtom, (cells) => { 108 + const cellAtom = cells[index]; 109 + if (typeof cellAtom === "undefined") { 110 + throw new Error(`Cell "${index}" not found.`); 111 + } 112 + return cellAtom; 113 + }); 114 + 115 + export function getVariantAtomAt(index: number) { 116 + return selectAtom(variantsAtom, (variants) => { 117 + const variant = variants[index]; 118 + if (typeof variant === "undefined") { 119 + throw new Error(`Variant at ${index} does not exist.`); 120 + } 121 + return variant; 122 + }); 123 + } 124 + 125 + function generateBoard(size: number, entropy: number) { 126 + return arrayOfSize(size).map(() => Math.floor(Math.random() * entropy)); 127 + }
+6
src/lib/utils.ts
···
··· 1 + import { clsx, type ClassValue } from "clsx"; 2 + import { twMerge } from "tailwind-merge"; 3 + 4 + export function cn(...inputs: ClassValue[]) { 5 + return twMerge(clsx(inputs)); 6 + }
+21
src/pages.gen.ts
···
··· 1 + // deno-fmt-ignore-file 2 + // biome-ignore format: generated types do not need formatting 3 + // prettier-ignore 4 + import type { PathsForPages, GetConfigResponse } from 'waku/router'; 5 + 6 + // prettier-ignore 7 + import type { getConfig as File_Index_getConfig } from './pages/index'; 8 + 9 + // prettier-ignore 10 + type Page = 11 + | ({ path: '/' } & GetConfigResponse<typeof File_Index_getConfig>); 12 + 13 + // prettier-ignore 14 + declare module 'waku/router' { 15 + interface RouteConfig { 16 + paths: PathsForPages<Page>; 17 + } 18 + interface CreatePagesConfig { 19 + pages: Page; 20 + } 21 + }
+19
src/pages/_layout.tsx
···
··· 1 + import { PropsWithChildren } from "react"; 2 + import { StateProvider } from "../components/providers/state-provider"; 3 + import "../styles.css"; 4 + 5 + export default async function RootLayout({ children }: PropsWithChildren) { 6 + return ( 7 + <StateProvider> 8 + <div className="h-dvh w-dvw p-4 flex justify-center items-center"> 9 + <main>{children}</main> 10 + </div> 11 + </StateProvider> 12 + ); 13 + } 14 + 15 + export const getConfig = async () => { 16 + return { 17 + render: "static", 18 + } as const; 19 + };
+28
src/pages/index.tsx
···
··· 1 + import { arrayOfSize } from "@/lib/game"; 2 + import { Game } from "../components/game"; 3 + import { HydrationProvider } from "@/components/providers/hydration-provider"; 4 + import { defaultHeight, defaultVariants, defaultWidth } from "@/lib/state"; 5 + 6 + const board = arrayOfSize(defaultWidth * defaultHeight).map(() => 7 + Math.floor(Math.random() * defaultVariants.length), 8 + ); 9 + 10 + export default async function HomePage() { 11 + const props = { 12 + width: defaultWidth, 13 + height: defaultHeight, 14 + variants: defaultVariants, 15 + board, 16 + }; 17 + return ( 18 + <HydrationProvider {...props}> 19 + <Game /> 20 + </HydrationProvider> 21 + ); 22 + } 23 + 24 + export const getConfig = async () => { 25 + return { 26 + render: "dynamic", 27 + } as const; 28 + };
+81
src/styles.css
···
··· 1 + @import "@fontsource-variable/dm-sans/opsz.css"; 2 + @import "tailwindcss"; 3 + @import "tw-animate-css"; 4 + 5 + @custom-variant dark (&:is(.dark *)); 6 + 7 + :root { 8 + --background: oklch(95.08% 0.0481 184.07); 9 + --secondary-background: oklch(100% 0 0); 10 + --foreground: oklch(0% 0 0); 11 + --main-foreground: oklch(0% 0 0); 12 + --main: oklch(78.57% 0.1422 180.36); 13 + --border: oklch(0% 0 0); 14 + --ring: oklch(0% 0 0); 15 + --overlay: oklch(0% 0 0 / 0.8); 16 + --shadow: 4px 4px 0px 0px var(--border); 17 + --chart-1: #00d6bd; 18 + --chart-2: #0099ff; 19 + --chart-3: #7a83ff; 20 + --chart-4: #ff4d50; 21 + --chart-5: #facc00; 22 + --chart-active-dot: #000; 23 + } 24 + 25 + .dark { 26 + --background: oklch(22.65% 0.0236 198.49); 27 + --secondary-background: oklch(23.93% 0 0); 28 + --foreground: oklch(92.49% 0 0); 29 + --main-foreground: oklch(0% 0 0); 30 + --main: oklch(71.47% 0.129261 180.4742); 31 + --border: oklch(0% 0 0); 32 + --ring: oklch(100% 0 0); 33 + --shadow: 4px 4px 0px 0px var(--border); 34 + --chart-1: #00bda7; 35 + --chart-2: #008ae5; 36 + --chart-3: #7a83ff; 37 + --chart-4: #ff6669; 38 + --chart-5: #e0b700; 39 + --chart-active-dot: #fff; 40 + } 41 + 42 + @theme inline { 43 + --default-font-family: "DM Sans Variable", sans-serif; 44 + --color-main: var(--main); 45 + --color-background: var(--background); 46 + --color-secondary-background: var(--secondary-background); 47 + --color-foreground: var(--foreground); 48 + --color-main-foreground: var(--main-foreground); 49 + --color-border: var(--border); 50 + --color-overlay: var(--overlay); 51 + --color-ring: var(--ring); 52 + --color-chart-1: var(--chart-1); 53 + --color-chart-2: var(--chart-2); 54 + --color-chart-3: var(--chart-3); 55 + --color-chart-4: var(--chart-4); 56 + --color-chart-5: var(--chart-5); 57 + 58 + --spacing-boxShadowX: 4px; 59 + --spacing-boxShadowY: 4px; 60 + --spacing-reverseBoxShadowX: -4px; 61 + --spacing-reverseBoxShadowY: -4px; 62 + --radius-base: 15px; 63 + --shadow-shadow: var(--shadow); 64 + --font-weight-base: 500; 65 + --font-weight-heading: 700; 66 + } 67 + 68 + @layer base { 69 + body { 70 + @apply text-foreground font-base bg-background; 71 + } 72 + 73 + h1, 74 + h2, 75 + h3, 76 + h4, 77 + h5, 78 + h6 { 79 + @apply font-heading; 80 + } 81 + }
+21
tsconfig.json
···
··· 1 + { 2 + "compilerOptions": { 3 + "strict": true, 4 + "target": "esnext", 5 + "noEmit": true, 6 + "isolatedModules": true, 7 + "moduleDetection": "force", 8 + "downlevelIteration": true, 9 + "esModuleInterop": true, 10 + "module": "esnext", 11 + "moduleResolution": "bundler", 12 + "skipLibCheck": true, 13 + "noUncheckedIndexedAccess": true, 14 + "exactOptionalPropertyTypes": true, 15 + "jsx": "react-jsx", 16 + "baseUrl": ".", 17 + "paths": { 18 + "@/*": ["./src/*"] 19 + } 20 + } 21 + }
+14
waku.config.ts
···
··· 1 + import { defineConfig } from "waku/config"; 2 + import tailwindcss from "@tailwindcss/vite"; 3 + import path from "node:path"; 4 + 5 + export default defineConfig({ 6 + vite: { 7 + plugins: [tailwindcss()], 8 + resolve: { 9 + alias: { 10 + "@": path.resolve(import.meta.dirname, "./src"), 11 + }, 12 + }, 13 + }, 14 + });
+19
wrangler.jsonc
···
··· 1 + { 2 + "name": "gridly", 3 + "main": "./dist/worker/serve-cloudflare.js", 4 + // https://developers.cloudflare.com/workers/platform/compatibility-dates 5 + "compatibility_date": "2024-11-11", 6 + // nodejs_als is required for Waku server-side request context 7 + // It can be removed if only building static pages 8 + "compatibility_flags": ["nodejs_als"], 9 + // https://developers.cloudflare.com/workers/static-assets/binding/ 10 + "assets": { 11 + "binding": "ASSETS", 12 + "directory": "./dist/assets", 13 + "html_handling": "drop-trailing-slash", 14 + "not_found_handling": "404-page", 15 + }, 16 + "vars": { 17 + "MAX_ITEMS": 10, 18 + }, 19 + }