this repo has no description

initial commit

+1619
+28
.gitignore
··· 1 + dist 2 + .wrangler 3 + .output 4 + .vercel 5 + .netlify 6 + .vinxi 7 + app.config.timestamp_*.js 8 + 9 + # Environment 10 + .env 11 + .env*.local 12 + 13 + # dependencies 14 + /node_modules 15 + 16 + # IDEs and editors 17 + /.idea 18 + .project 19 + .classpath 20 + *.launch 21 + .settings/ 22 + 23 + # Temp 24 + gitignore 25 + 26 + # System Files 27 + .DS_Store 28 + Thumbs.db
+36
README.md
··· 1 + ## Usage 2 + 3 + Those templates dependencies are maintained via [pnpm](https://pnpm.io) via `pnpm up -Lri`. 4 + 5 + This is the reason you see a `pnpm-lock.yaml`. That being said, any package manager will work. This file can be safely be removed once you clone a template. 6 + 7 + ```bash 8 + $ npm install # or pnpm install or yarn install 9 + ``` 10 + 11 + ### Learn more on the [Solid Website](https://solidjs.com) and come chat with us on our [Discord](https://discord.com/invite/solidjs) 12 + 13 + ## Available Scripts 14 + 15 + In the project directory, you can run: 16 + 17 + ### `npm run dev` or `npm start` 18 + 19 + Runs the app in the development mode.<br> 20 + Open [http://localhost:3000](http://localhost:3000) to view it in the browser. 21 + 22 + The page will reload if you make edits.<br> 23 + 24 + ### `npm run build` 25 + 26 + Builds the app for production to the `dist` folder.<br> 27 + It correctly bundles Solid in production mode and optimizes the build for the best performance. 28 + 29 + The build is minified and the filenames include the hashes.<br> 30 + Your app is ready to be deployed! 31 + 32 + ## Deployment 33 + 34 + You can deploy the `dist` folder to any static host provider (netlify, surge, now, etc.) 35 + 36 + ## This project was created with the [Solid CLI](https://github.com/solidjs-community/solid-cli)
+1171
deno.lock
··· 1 + { 2 + "version": "5", 3 + "specifiers": { 4 + "npm:@tailwindcss/vite@^4.1.13": "4.1.13_vite@7.1.5__picomatch@4.0.3", 5 + "npm:solid-devtools@~0.34.3": "0.34.3_solid-js@1.9.9__seroval@1.3.2_vite@7.1.5__picomatch@4.0.3_@babel+core@7.28.4", 6 + "npm:solid-js@^1.9.9": "1.9.9_seroval@1.3.2", 7 + "npm:tailwindcss@^4.1.13": "4.1.13", 8 + "npm:typescript@^5.9.2": "5.9.2", 9 + "npm:vite-plugin-solid@^2.11.8": "2.11.8_solid-js@1.9.9__seroval@1.3.2_vite@7.1.5__picomatch@4.0.3_@babel+core@7.28.4", 10 + "npm:vite@^7.1.4": "7.1.5_picomatch@4.0.3" 11 + }, 12 + "npm": { 13 + "@babel/code-frame@7.27.1": { 14 + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", 15 + "dependencies": [ 16 + "@babel/helper-validator-identifier", 17 + "js-tokens", 18 + "picocolors" 19 + ] 20 + }, 21 + "@babel/compat-data@7.28.4": { 22 + "integrity": "sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==" 23 + }, 24 + "@babel/core@7.28.4": { 25 + "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", 26 + "dependencies": [ 27 + "@babel/code-frame", 28 + "@babel/generator", 29 + "@babel/helper-compilation-targets", 30 + "@babel/helper-module-transforms", 31 + "@babel/helpers", 32 + "@babel/parser", 33 + "@babel/template", 34 + "@babel/traverse", 35 + "@babel/types", 36 + "@jridgewell/remapping", 37 + "convert-source-map", 38 + "debug", 39 + "gensync", 40 + "json5", 41 + "semver" 42 + ] 43 + }, 44 + "@babel/generator@7.28.3": { 45 + "integrity": "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==", 46 + "dependencies": [ 47 + "@babel/parser", 48 + "@babel/types", 49 + "@jridgewell/gen-mapping", 50 + "@jridgewell/trace-mapping", 51 + "jsesc" 52 + ] 53 + }, 54 + "@babel/helper-compilation-targets@7.27.2": { 55 + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", 56 + "dependencies": [ 57 + "@babel/compat-data", 58 + "@babel/helper-validator-option", 59 + "browserslist", 60 + "lru-cache", 61 + "semver" 62 + ] 63 + }, 64 + "@babel/helper-globals@7.28.0": { 65 + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==" 66 + }, 67 + "@babel/helper-module-imports@7.18.6": { 68 + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", 69 + "dependencies": [ 70 + "@babel/types" 71 + ] 72 + }, 73 + "@babel/helper-module-imports@7.27.1": { 74 + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", 75 + "dependencies": [ 76 + "@babel/traverse", 77 + "@babel/types" 78 + ] 79 + }, 80 + "@babel/helper-module-transforms@7.28.3_@babel+core@7.28.4": { 81 + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", 82 + "dependencies": [ 83 + "@babel/core", 84 + "@babel/helper-module-imports@7.27.1", 85 + "@babel/helper-validator-identifier", 86 + "@babel/traverse" 87 + ] 88 + }, 89 + "@babel/helper-plugin-utils@7.27.1": { 90 + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==" 91 + }, 92 + "@babel/helper-string-parser@7.27.1": { 93 + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==" 94 + }, 95 + "@babel/helper-validator-identifier@7.27.1": { 96 + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==" 97 + }, 98 + "@babel/helper-validator-option@7.27.1": { 99 + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==" 100 + }, 101 + "@babel/helpers@7.28.4": { 102 + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", 103 + "dependencies": [ 104 + "@babel/template", 105 + "@babel/types" 106 + ] 107 + }, 108 + "@babel/parser@7.28.4": { 109 + "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", 110 + "dependencies": [ 111 + "@babel/types" 112 + ], 113 + "bin": true 114 + }, 115 + "@babel/plugin-syntax-jsx@7.27.1_@babel+core@7.28.4": { 116 + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", 117 + "dependencies": [ 118 + "@babel/core", 119 + "@babel/helper-plugin-utils" 120 + ] 121 + }, 122 + "@babel/plugin-syntax-typescript@7.27.1_@babel+core@7.28.4": { 123 + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", 124 + "dependencies": [ 125 + "@babel/core", 126 + "@babel/helper-plugin-utils" 127 + ] 128 + }, 129 + "@babel/template@7.27.2": { 130 + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", 131 + "dependencies": [ 132 + "@babel/code-frame", 133 + "@babel/parser", 134 + "@babel/types" 135 + ] 136 + }, 137 + "@babel/traverse@7.28.4": { 138 + "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", 139 + "dependencies": [ 140 + "@babel/code-frame", 141 + "@babel/generator", 142 + "@babel/helper-globals", 143 + "@babel/parser", 144 + "@babel/template", 145 + "@babel/types", 146 + "debug" 147 + ] 148 + }, 149 + "@babel/types@7.28.4": { 150 + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", 151 + "dependencies": [ 152 + "@babel/helper-string-parser", 153 + "@babel/helper-validator-identifier" 154 + ] 155 + }, 156 + "@emnapi/core@1.5.0": { 157 + "integrity": "sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==", 158 + "dependencies": [ 159 + "@emnapi/wasi-threads", 160 + "tslib" 161 + ] 162 + }, 163 + "@emnapi/runtime@1.5.0": { 164 + "integrity": "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==", 165 + "dependencies": [ 166 + "tslib" 167 + ] 168 + }, 169 + "@emnapi/wasi-threads@1.1.0": { 170 + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", 171 + "dependencies": [ 172 + "tslib" 173 + ] 174 + }, 175 + "@esbuild/aix-ppc64@0.25.9": { 176 + "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==", 177 + "os": ["aix"], 178 + "cpu": ["ppc64"] 179 + }, 180 + "@esbuild/android-arm64@0.25.9": { 181 + "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==", 182 + "os": ["android"], 183 + "cpu": ["arm64"] 184 + }, 185 + "@esbuild/android-arm@0.25.9": { 186 + "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==", 187 + "os": ["android"], 188 + "cpu": ["arm"] 189 + }, 190 + "@esbuild/android-x64@0.25.9": { 191 + "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==", 192 + "os": ["android"], 193 + "cpu": ["x64"] 194 + }, 195 + "@esbuild/darwin-arm64@0.25.9": { 196 + "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==", 197 + "os": ["darwin"], 198 + "cpu": ["arm64"] 199 + }, 200 + "@esbuild/darwin-x64@0.25.9": { 201 + "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==", 202 + "os": ["darwin"], 203 + "cpu": ["x64"] 204 + }, 205 + "@esbuild/freebsd-arm64@0.25.9": { 206 + "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==", 207 + "os": ["freebsd"], 208 + "cpu": ["arm64"] 209 + }, 210 + "@esbuild/freebsd-x64@0.25.9": { 211 + "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==", 212 + "os": ["freebsd"], 213 + "cpu": ["x64"] 214 + }, 215 + "@esbuild/linux-arm64@0.25.9": { 216 + "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==", 217 + "os": ["linux"], 218 + "cpu": ["arm64"] 219 + }, 220 + "@esbuild/linux-arm@0.25.9": { 221 + "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==", 222 + "os": ["linux"], 223 + "cpu": ["arm"] 224 + }, 225 + "@esbuild/linux-ia32@0.25.9": { 226 + "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==", 227 + "os": ["linux"], 228 + "cpu": ["ia32"] 229 + }, 230 + "@esbuild/linux-loong64@0.25.9": { 231 + "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==", 232 + "os": ["linux"], 233 + "cpu": ["loong64"] 234 + }, 235 + "@esbuild/linux-mips64el@0.25.9": { 236 + "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==", 237 + "os": ["linux"], 238 + "cpu": ["mips64el"] 239 + }, 240 + "@esbuild/linux-ppc64@0.25.9": { 241 + "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==", 242 + "os": ["linux"], 243 + "cpu": ["ppc64"] 244 + }, 245 + "@esbuild/linux-riscv64@0.25.9": { 246 + "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==", 247 + "os": ["linux"], 248 + "cpu": ["riscv64"] 249 + }, 250 + "@esbuild/linux-s390x@0.25.9": { 251 + "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==", 252 + "os": ["linux"], 253 + "cpu": ["s390x"] 254 + }, 255 + "@esbuild/linux-x64@0.25.9": { 256 + "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==", 257 + "os": ["linux"], 258 + "cpu": ["x64"] 259 + }, 260 + "@esbuild/netbsd-arm64@0.25.9": { 261 + "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==", 262 + "os": ["netbsd"], 263 + "cpu": ["arm64"] 264 + }, 265 + "@esbuild/netbsd-x64@0.25.9": { 266 + "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==", 267 + "os": ["netbsd"], 268 + "cpu": ["x64"] 269 + }, 270 + "@esbuild/openbsd-arm64@0.25.9": { 271 + "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==", 272 + "os": ["openbsd"], 273 + "cpu": ["arm64"] 274 + }, 275 + "@esbuild/openbsd-x64@0.25.9": { 276 + "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==", 277 + "os": ["openbsd"], 278 + "cpu": ["x64"] 279 + }, 280 + "@esbuild/openharmony-arm64@0.25.9": { 281 + "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==", 282 + "os": ["openharmony"], 283 + "cpu": ["arm64"] 284 + }, 285 + "@esbuild/sunos-x64@0.25.9": { 286 + "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==", 287 + "os": ["sunos"], 288 + "cpu": ["x64"] 289 + }, 290 + "@esbuild/win32-arm64@0.25.9": { 291 + "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==", 292 + "os": ["win32"], 293 + "cpu": ["arm64"] 294 + }, 295 + "@esbuild/win32-ia32@0.25.9": { 296 + "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==", 297 + "os": ["win32"], 298 + "cpu": ["ia32"] 299 + }, 300 + "@esbuild/win32-x64@0.25.9": { 301 + "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==", 302 + "os": ["win32"], 303 + "cpu": ["x64"] 304 + }, 305 + "@isaacs/fs-minipass@4.0.1": { 306 + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", 307 + "dependencies": [ 308 + "minipass" 309 + ] 310 + }, 311 + "@jridgewell/gen-mapping@0.3.13": { 312 + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", 313 + "dependencies": [ 314 + "@jridgewell/sourcemap-codec", 315 + "@jridgewell/trace-mapping" 316 + ] 317 + }, 318 + "@jridgewell/remapping@2.3.5": { 319 + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", 320 + "dependencies": [ 321 + "@jridgewell/gen-mapping", 322 + "@jridgewell/trace-mapping" 323 + ] 324 + }, 325 + "@jridgewell/resolve-uri@3.1.2": { 326 + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==" 327 + }, 328 + "@jridgewell/sourcemap-codec@1.5.5": { 329 + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==" 330 + }, 331 + "@jridgewell/trace-mapping@0.3.30": { 332 + "integrity": "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==", 333 + "dependencies": [ 334 + "@jridgewell/resolve-uri", 335 + "@jridgewell/sourcemap-codec" 336 + ] 337 + }, 338 + "@napi-rs/wasm-runtime@0.2.12": { 339 + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", 340 + "dependencies": [ 341 + "@emnapi/core", 342 + "@emnapi/runtime", 343 + "@tybys/wasm-util" 344 + ] 345 + }, 346 + "@nothing-but/utils@0.17.0": { 347 + "integrity": "sha512-TuCHcHLOqDL0SnaAxACfuRHBNRgNJcNn9X0GiH5H3YSDBVquCr3qEIG3FOQAuMyZCbu9w8nk2CHhOsn7IvhIwQ==" 348 + }, 349 + "@rollup/rollup-android-arm-eabi@4.50.1": { 350 + "integrity": "sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag==", 351 + "os": ["android"], 352 + "cpu": ["arm"] 353 + }, 354 + "@rollup/rollup-android-arm64@4.50.1": { 355 + "integrity": "sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw==", 356 + "os": ["android"], 357 + "cpu": ["arm64"] 358 + }, 359 + "@rollup/rollup-darwin-arm64@4.50.1": { 360 + "integrity": "sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw==", 361 + "os": ["darwin"], 362 + "cpu": ["arm64"] 363 + }, 364 + "@rollup/rollup-darwin-x64@4.50.1": { 365 + "integrity": "sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw==", 366 + "os": ["darwin"], 367 + "cpu": ["x64"] 368 + }, 369 + "@rollup/rollup-freebsd-arm64@4.50.1": { 370 + "integrity": "sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA==", 371 + "os": ["freebsd"], 372 + "cpu": ["arm64"] 373 + }, 374 + "@rollup/rollup-freebsd-x64@4.50.1": { 375 + "integrity": "sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ==", 376 + "os": ["freebsd"], 377 + "cpu": ["x64"] 378 + }, 379 + "@rollup/rollup-linux-arm-gnueabihf@4.50.1": { 380 + "integrity": "sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg==", 381 + "os": ["linux"], 382 + "cpu": ["arm"] 383 + }, 384 + "@rollup/rollup-linux-arm-musleabihf@4.50.1": { 385 + "integrity": "sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw==", 386 + "os": ["linux"], 387 + "cpu": ["arm"] 388 + }, 389 + "@rollup/rollup-linux-arm64-gnu@4.50.1": { 390 + "integrity": "sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw==", 391 + "os": ["linux"], 392 + "cpu": ["arm64"] 393 + }, 394 + "@rollup/rollup-linux-arm64-musl@4.50.1": { 395 + "integrity": "sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w==", 396 + "os": ["linux"], 397 + "cpu": ["arm64"] 398 + }, 399 + "@rollup/rollup-linux-loongarch64-gnu@4.50.1": { 400 + "integrity": "sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q==", 401 + "os": ["linux"], 402 + "cpu": ["loong64"] 403 + }, 404 + "@rollup/rollup-linux-ppc64-gnu@4.50.1": { 405 + "integrity": "sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q==", 406 + "os": ["linux"], 407 + "cpu": ["ppc64"] 408 + }, 409 + "@rollup/rollup-linux-riscv64-gnu@4.50.1": { 410 + "integrity": "sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ==", 411 + "os": ["linux"], 412 + "cpu": ["riscv64"] 413 + }, 414 + "@rollup/rollup-linux-riscv64-musl@4.50.1": { 415 + "integrity": "sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg==", 416 + "os": ["linux"], 417 + "cpu": ["riscv64"] 418 + }, 419 + "@rollup/rollup-linux-s390x-gnu@4.50.1": { 420 + "integrity": "sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg==", 421 + "os": ["linux"], 422 + "cpu": ["s390x"] 423 + }, 424 + "@rollup/rollup-linux-x64-gnu@4.50.1": { 425 + "integrity": "sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA==", 426 + "os": ["linux"], 427 + "cpu": ["x64"] 428 + }, 429 + "@rollup/rollup-linux-x64-musl@4.50.1": { 430 + "integrity": "sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg==", 431 + "os": ["linux"], 432 + "cpu": ["x64"] 433 + }, 434 + "@rollup/rollup-openharmony-arm64@4.50.1": { 435 + "integrity": "sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA==", 436 + "os": ["openharmony"], 437 + "cpu": ["arm64"] 438 + }, 439 + "@rollup/rollup-win32-arm64-msvc@4.50.1": { 440 + "integrity": "sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ==", 441 + "os": ["win32"], 442 + "cpu": ["arm64"] 443 + }, 444 + "@rollup/rollup-win32-ia32-msvc@4.50.1": { 445 + "integrity": "sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A==", 446 + "os": ["win32"], 447 + "cpu": ["ia32"] 448 + }, 449 + "@rollup/rollup-win32-x64-msvc@4.50.1": { 450 + "integrity": "sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA==", 451 + "os": ["win32"], 452 + "cpu": ["x64"] 453 + }, 454 + "@solid-devtools/debugger@0.28.1_solid-js@1.9.9__seroval@1.3.2": { 455 + "integrity": "sha512-6qIUI6VYkXoRnL8oF5bvh2KgH71qlJ18hNw/mwSyY6v48eb80ZR48/5PDXufUa3q+MBSuYa1uqTMwLewpay9eg==", 456 + "dependencies": [ 457 + "@nothing-but/utils", 458 + "@solid-devtools/shared", 459 + "@solid-primitives/bounds", 460 + "@solid-primitives/event-listener", 461 + "@solid-primitives/keyboard", 462 + "@solid-primitives/rootless", 463 + "@solid-primitives/scheduled", 464 + "@solid-primitives/static-store", 465 + "@solid-primitives/utils", 466 + "solid-js" 467 + ] 468 + }, 469 + "@solid-devtools/shared@0.20.0_solid-js@1.9.9__seroval@1.3.2": { 470 + "integrity": "sha512-o5TACmUOQsxpzpOKCjbQqGk8wL8PMi+frXG9WNu4Lh3PQVUB6hs95Kl/S8xc++zwcMguUKZJn8h5URUiMOca6Q==", 471 + "dependencies": [ 472 + "@nothing-but/utils", 473 + "@solid-primitives/event-listener", 474 + "@solid-primitives/media", 475 + "@solid-primitives/refs", 476 + "@solid-primitives/rootless", 477 + "@solid-primitives/scheduled", 478 + "@solid-primitives/static-store", 479 + "@solid-primitives/styles", 480 + "@solid-primitives/utils", 481 + "solid-js" 482 + ] 483 + }, 484 + "@solid-primitives/bounds@0.1.3_solid-js@1.9.9__seroval@1.3.2": { 485 + "integrity": "sha512-UbiyKMdSPmtijcEDnYLQL3zzaejpwWDAJJ4Gt5P0hgVs6A72piov0GyNw7V2SroH7NZFwxlYS22YmOr8A5xc1Q==", 486 + "dependencies": [ 487 + "@solid-primitives/event-listener", 488 + "@solid-primitives/resize-observer", 489 + "@solid-primitives/static-store", 490 + "@solid-primitives/utils", 491 + "solid-js" 492 + ] 493 + }, 494 + "@solid-primitives/event-listener@2.4.3_solid-js@1.9.9__seroval@1.3.2": { 495 + "integrity": "sha512-h4VqkYFv6Gf+L7SQj+Y6puigL/5DIi7x5q07VZET7AWcS+9/G3WfIE9WheniHWJs51OEkRB43w6lDys5YeFceg==", 496 + "dependencies": [ 497 + "@solid-primitives/utils", 498 + "solid-js" 499 + ] 500 + }, 501 + "@solid-primitives/keyboard@1.3.3_solid-js@1.9.9__seroval@1.3.2": { 502 + "integrity": "sha512-9dQHTTgLBqyAI7aavtO+HnpTVJgWQA1ghBSrmLtMu1SMxLPDuLfuNr+Tk5udb4AL4Ojg7h9JrKOGEEDqsJXWJA==", 503 + "dependencies": [ 504 + "@solid-primitives/event-listener", 505 + "@solid-primitives/rootless", 506 + "@solid-primitives/utils", 507 + "solid-js" 508 + ] 509 + }, 510 + "@solid-primitives/media@2.3.3_solid-js@1.9.9__seroval@1.3.2": { 511 + "integrity": "sha512-hQ4hLOGvfbugQi5Eu1BFWAIJGIAzztq9x0h02xgBGl2l0Jaa3h7tg6bz5tV1NSuNYVGio4rPoa7zVQQLkkx9dA==", 512 + "dependencies": [ 513 + "@solid-primitives/event-listener", 514 + "@solid-primitives/rootless", 515 + "@solid-primitives/static-store", 516 + "@solid-primitives/utils", 517 + "solid-js" 518 + ] 519 + }, 520 + "@solid-primitives/refs@1.1.2_solid-js@1.9.9__seroval@1.3.2": { 521 + "integrity": "sha512-K7tf2thy7L+YJjdqXspXOg5xvNEOH8tgEWsp0+1mQk3obHBRD6hEjYZk7p7FlJphSZImS35je3UfmWuD7MhDfg==", 522 + "dependencies": [ 523 + "@solid-primitives/utils", 524 + "solid-js" 525 + ] 526 + }, 527 + "@solid-primitives/resize-observer@2.1.3_solid-js@1.9.9__seroval@1.3.2": { 528 + "integrity": "sha512-zBLje5E06TgOg93S7rGPldmhDnouNGhvfZVKOp+oG2XU8snA+GoCSSCz1M+jpNAg5Ek2EakU5UVQqL152WmdXQ==", 529 + "dependencies": [ 530 + "@solid-primitives/event-listener", 531 + "@solid-primitives/rootless", 532 + "@solid-primitives/static-store", 533 + "@solid-primitives/utils", 534 + "solid-js" 535 + ] 536 + }, 537 + "@solid-primitives/rootless@1.5.2_solid-js@1.9.9__seroval@1.3.2": { 538 + "integrity": "sha512-9HULb0QAzL2r47CCad0M+NKFtQ+LrGGNHZfteX/ThdGvKIg2o2GYhBooZubTCd/RTu2l2+Nw4s+dEfiDGvdrrQ==", 539 + "dependencies": [ 540 + "@solid-primitives/utils", 541 + "solid-js" 542 + ] 543 + }, 544 + "@solid-primitives/scheduled@1.5.2_solid-js@1.9.9__seroval@1.3.2": { 545 + "integrity": "sha512-/j2igE0xyNaHhj6kMfcUQn5rAVSTLbAX+CDEBm25hSNBmNiHLu2lM7Usj2kJJ5j36D67bE8wR1hBNA8hjtvsQA==", 546 + "dependencies": [ 547 + "solid-js" 548 + ] 549 + }, 550 + "@solid-primitives/static-store@0.1.2_solid-js@1.9.9__seroval@1.3.2": { 551 + "integrity": "sha512-ReK+5O38lJ7fT+L6mUFvUr6igFwHBESZF+2Ug842s7fvlVeBdIVEdTCErygff6w7uR6+jrr7J8jQo+cYrEq4Iw==", 552 + "dependencies": [ 553 + "@solid-primitives/utils", 554 + "solid-js" 555 + ] 556 + }, 557 + "@solid-primitives/styles@0.1.2_solid-js@1.9.9__seroval@1.3.2": { 558 + "integrity": "sha512-7iX5K+J5b1PRrbgw3Ki92uvU2LgQ0Kd/QMsrAZxDg5dpUBwMyTijZkA3bbs1ikZsT1oQhS41bTyKbjrXeU0Awg==", 559 + "dependencies": [ 560 + "@solid-primitives/rootless", 561 + "@solid-primitives/utils", 562 + "solid-js" 563 + ] 564 + }, 565 + "@solid-primitives/utils@6.3.2_solid-js@1.9.9__seroval@1.3.2": { 566 + "integrity": "sha512-hZ/M/qr25QOCcwDPOHtGjxTD8w2mNyVAYvcfgwzBHq2RwNqHNdDNsMZYap20+ruRwW4A3Cdkczyoz0TSxLCAPQ==", 567 + "dependencies": [ 568 + "solid-js" 569 + ] 570 + }, 571 + "@tailwindcss/node@4.1.13": { 572 + "integrity": "sha512-eq3ouolC1oEFOAvOMOBAmfCIqZBJuvWvvYWh5h5iOYfe1HFC6+GZ6EIL0JdM3/niGRJmnrOc+8gl9/HGUaaptw==", 573 + "dependencies": [ 574 + "@jridgewell/remapping", 575 + "enhanced-resolve", 576 + "jiti", 577 + "lightningcss", 578 + "magic-string", 579 + "source-map-js", 580 + "tailwindcss" 581 + ] 582 + }, 583 + "@tailwindcss/oxide-android-arm64@4.1.13": { 584 + "integrity": "sha512-BrpTrVYyejbgGo57yc8ieE+D6VT9GOgnNdmh5Sac6+t0m+v+sKQevpFVpwX3pBrM2qKrQwJ0c5eDbtjouY/+ew==", 585 + "os": ["android"], 586 + "cpu": ["arm64"] 587 + }, 588 + "@tailwindcss/oxide-darwin-arm64@4.1.13": { 589 + "integrity": "sha512-YP+Jksc4U0KHcu76UhRDHq9bx4qtBftp9ShK/7UGfq0wpaP96YVnnjFnj3ZFrUAjc5iECzODl/Ts0AN7ZPOANQ==", 590 + "os": ["darwin"], 591 + "cpu": ["arm64"] 592 + }, 593 + "@tailwindcss/oxide-darwin-x64@4.1.13": { 594 + "integrity": "sha512-aAJ3bbwrn/PQHDxCto9sxwQfT30PzyYJFG0u/BWZGeVXi5Hx6uuUOQEI2Fa43qvmUjTRQNZnGqe9t0Zntexeuw==", 595 + "os": ["darwin"], 596 + "cpu": ["x64"] 597 + }, 598 + "@tailwindcss/oxide-freebsd-x64@4.1.13": { 599 + "integrity": "sha512-Wt8KvASHwSXhKE/dJLCCWcTSVmBj3xhVhp/aF3RpAhGeZ3sVo7+NTfgiN8Vey/Fi8prRClDs6/f0KXPDTZE6nQ==", 600 + "os": ["freebsd"], 601 + "cpu": ["x64"] 602 + }, 603 + "@tailwindcss/oxide-linux-arm-gnueabihf@4.1.13": { 604 + "integrity": "sha512-mbVbcAsW3Gkm2MGwA93eLtWrwajz91aXZCNSkGTx/R5eb6KpKD5q8Ueckkh9YNboU8RH7jiv+ol/I7ZyQ9H7Bw==", 605 + "os": ["linux"], 606 + "cpu": ["arm"] 607 + }, 608 + "@tailwindcss/oxide-linux-arm64-gnu@4.1.13": { 609 + "integrity": "sha512-wdtfkmpXiwej/yoAkrCP2DNzRXCALq9NVLgLELgLim1QpSfhQM5+ZxQQF8fkOiEpuNoKLp4nKZ6RC4kmeFH0HQ==", 610 + "os": ["linux"], 611 + "cpu": ["arm64"] 612 + }, 613 + "@tailwindcss/oxide-linux-arm64-musl@4.1.13": { 614 + "integrity": "sha512-hZQrmtLdhyqzXHB7mkXfq0IYbxegaqTmfa1p9MBj72WPoDD3oNOh1Lnxf6xZLY9C3OV6qiCYkO1i/LrzEdW2mg==", 615 + "os": ["linux"], 616 + "cpu": ["arm64"] 617 + }, 618 + "@tailwindcss/oxide-linux-x64-gnu@4.1.13": { 619 + "integrity": "sha512-uaZTYWxSXyMWDJZNY1Ul7XkJTCBRFZ5Fo6wtjrgBKzZLoJNrG+WderJwAjPzuNZOnmdrVg260DKwXCFtJ/hWRQ==", 620 + "os": ["linux"], 621 + "cpu": ["x64"] 622 + }, 623 + "@tailwindcss/oxide-linux-x64-musl@4.1.13": { 624 + "integrity": "sha512-oXiPj5mi4Hdn50v5RdnuuIms0PVPI/EG4fxAfFiIKQh5TgQgX7oSuDWntHW7WNIi/yVLAiS+CRGW4RkoGSSgVQ==", 625 + "os": ["linux"], 626 + "cpu": ["x64"] 627 + }, 628 + "@tailwindcss/oxide-wasm32-wasi@4.1.13": { 629 + "integrity": "sha512-+LC2nNtPovtrDwBc/nqnIKYh/W2+R69FA0hgoeOn64BdCX522u19ryLh3Vf3F8W49XBcMIxSe665kwy21FkhvA==", 630 + "dependencies": [ 631 + "@emnapi/core", 632 + "@emnapi/runtime", 633 + "@emnapi/wasi-threads", 634 + "@napi-rs/wasm-runtime", 635 + "@tybys/wasm-util", 636 + "tslib" 637 + ], 638 + "cpu": ["wasm32"] 639 + }, 640 + "@tailwindcss/oxide-win32-arm64-msvc@4.1.13": { 641 + "integrity": "sha512-dziTNeQXtoQ2KBXmrjCxsuPk3F3CQ/yb7ZNZNA+UkNTeiTGgfeh+gH5Pi7mRncVgcPD2xgHvkFCh/MhZWSgyQg==", 642 + "os": ["win32"], 643 + "cpu": ["arm64"] 644 + }, 645 + "@tailwindcss/oxide-win32-x64-msvc@4.1.13": { 646 + "integrity": "sha512-3+LKesjXydTkHk5zXX01b5KMzLV1xl2mcktBJkje7rhFUpUlYJy7IMOLqjIRQncLTa1WZZiFY/foAeB5nmaiTw==", 647 + "os": ["win32"], 648 + "cpu": ["x64"] 649 + }, 650 + "@tailwindcss/oxide@4.1.13": { 651 + "integrity": "sha512-CPgsM1IpGRa880sMbYmG1s4xhAy3xEt1QULgTJGQmZUeNgXFR7s1YxYygmJyBGtou4SyEosGAGEeYqY7R53bIA==", 652 + "dependencies": [ 653 + "detect-libc", 654 + "tar" 655 + ], 656 + "optionalDependencies": [ 657 + "@tailwindcss/oxide-android-arm64", 658 + "@tailwindcss/oxide-darwin-arm64", 659 + "@tailwindcss/oxide-darwin-x64", 660 + "@tailwindcss/oxide-freebsd-x64", 661 + "@tailwindcss/oxide-linux-arm-gnueabihf", 662 + "@tailwindcss/oxide-linux-arm64-gnu", 663 + "@tailwindcss/oxide-linux-arm64-musl", 664 + "@tailwindcss/oxide-linux-x64-gnu", 665 + "@tailwindcss/oxide-linux-x64-musl", 666 + "@tailwindcss/oxide-wasm32-wasi", 667 + "@tailwindcss/oxide-win32-arm64-msvc", 668 + "@tailwindcss/oxide-win32-x64-msvc" 669 + ], 670 + "scripts": true 671 + }, 672 + "@tailwindcss/vite@4.1.13_vite@7.1.5__picomatch@4.0.3": { 673 + "integrity": "sha512-0PmqLQ010N58SbMTJ7BVJ4I2xopiQn/5i6nlb4JmxzQf8zcS5+m2Cv6tqh+sfDwtIdjoEnOvwsGQ1hkUi8QEHQ==", 674 + "dependencies": [ 675 + "@tailwindcss/node", 676 + "@tailwindcss/oxide", 677 + "tailwindcss", 678 + "vite" 679 + ] 680 + }, 681 + "@tybys/wasm-util@0.10.0": { 682 + "integrity": "sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ==", 683 + "dependencies": [ 684 + "tslib" 685 + ] 686 + }, 687 + "@types/babel__core@7.20.5": { 688 + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", 689 + "dependencies": [ 690 + "@babel/parser", 691 + "@babel/types", 692 + "@types/babel__generator", 693 + "@types/babel__template", 694 + "@types/babel__traverse" 695 + ] 696 + }, 697 + "@types/babel__generator@7.27.0": { 698 + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", 699 + "dependencies": [ 700 + "@babel/types" 701 + ] 702 + }, 703 + "@types/babel__template@7.4.4": { 704 + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", 705 + "dependencies": [ 706 + "@babel/parser", 707 + "@babel/types" 708 + ] 709 + }, 710 + "@types/babel__traverse@7.28.0": { 711 + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", 712 + "dependencies": [ 713 + "@babel/types" 714 + ] 715 + }, 716 + "@types/estree@1.0.8": { 717 + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==" 718 + }, 719 + "babel-plugin-jsx-dom-expressions@0.40.1_@babel+core@7.28.4": { 720 + "integrity": "sha512-b4iHuirqK7RgaMzB2Lsl7MqrlDgQtVRSSazyrmx7wB3T759ggGjod5Rkok5MfHjQXhR7tRPmdwoeGPqBnW2KfA==", 721 + "dependencies": [ 722 + "@babel/core", 723 + "@babel/helper-module-imports@7.18.6", 724 + "@babel/plugin-syntax-jsx", 725 + "@babel/types", 726 + "html-entities", 727 + "parse5", 728 + "validate-html-nesting" 729 + ] 730 + }, 731 + "babel-preset-solid@1.9.9_@babel+core@7.28.4_solid-js@1.9.9__seroval@1.3.2": { 732 + "integrity": "sha512-pCnxWrciluXCeli/dj5PIEHgbNzim3evtTn12snjqqg8QZWJNMjH1AWIp4iG/tbVjqQ72aBEymMSagvmgxubXw==", 733 + "dependencies": [ 734 + "@babel/core", 735 + "babel-plugin-jsx-dom-expressions", 736 + "solid-js" 737 + ], 738 + "optionalPeers": [ 739 + "solid-js" 740 + ] 741 + }, 742 + "browserslist@4.25.4": { 743 + "integrity": "sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==", 744 + "dependencies": [ 745 + "caniuse-lite", 746 + "electron-to-chromium", 747 + "node-releases", 748 + "update-browserslist-db" 749 + ], 750 + "bin": true 751 + }, 752 + "caniuse-lite@1.0.30001741": { 753 + "integrity": "sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==" 754 + }, 755 + "chownr@3.0.0": { 756 + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==" 757 + }, 758 + "convert-source-map@2.0.0": { 759 + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" 760 + }, 761 + "csstype@3.1.3": { 762 + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" 763 + }, 764 + "debug@4.4.1": { 765 + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", 766 + "dependencies": [ 767 + "ms" 768 + ] 769 + }, 770 + "detect-libc@2.0.4": { 771 + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==" 772 + }, 773 + "electron-to-chromium@1.5.215": { 774 + "integrity": "sha512-TIvGp57UpeNetj/wV/xpFNpWGb0b/ROw372lHPx5Aafx02gjTBtWnEEcaSX3W2dLM3OSdGGyHX/cHl01JQsLaQ==" 775 + }, 776 + "enhanced-resolve@5.18.3": { 777 + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", 778 + "dependencies": [ 779 + "graceful-fs", 780 + "tapable" 781 + ] 782 + }, 783 + "entities@6.0.1": { 784 + "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==" 785 + }, 786 + "esbuild@0.25.9": { 787 + "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==", 788 + "optionalDependencies": [ 789 + "@esbuild/aix-ppc64", 790 + "@esbuild/android-arm", 791 + "@esbuild/android-arm64", 792 + "@esbuild/android-x64", 793 + "@esbuild/darwin-arm64", 794 + "@esbuild/darwin-x64", 795 + "@esbuild/freebsd-arm64", 796 + "@esbuild/freebsd-x64", 797 + "@esbuild/linux-arm", 798 + "@esbuild/linux-arm64", 799 + "@esbuild/linux-ia32", 800 + "@esbuild/linux-loong64", 801 + "@esbuild/linux-mips64el", 802 + "@esbuild/linux-ppc64", 803 + "@esbuild/linux-riscv64", 804 + "@esbuild/linux-s390x", 805 + "@esbuild/linux-x64", 806 + "@esbuild/netbsd-arm64", 807 + "@esbuild/netbsd-x64", 808 + "@esbuild/openbsd-arm64", 809 + "@esbuild/openbsd-x64", 810 + "@esbuild/openharmony-arm64", 811 + "@esbuild/sunos-x64", 812 + "@esbuild/win32-arm64", 813 + "@esbuild/win32-ia32", 814 + "@esbuild/win32-x64" 815 + ], 816 + "scripts": true, 817 + "bin": true 818 + }, 819 + "escalade@3.2.0": { 820 + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" 821 + }, 822 + "fdir@6.5.0_picomatch@4.0.3": { 823 + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", 824 + "dependencies": [ 825 + "picomatch" 826 + ], 827 + "optionalPeers": [ 828 + "picomatch" 829 + ] 830 + }, 831 + "fsevents@2.3.3": { 832 + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 833 + "os": ["darwin"], 834 + "scripts": true 835 + }, 836 + "gensync@1.0.0-beta.2": { 837 + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" 838 + }, 839 + "graceful-fs@4.2.11": { 840 + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" 841 + }, 842 + "html-entities@2.3.3": { 843 + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==" 844 + }, 845 + "is-what@4.1.16": { 846 + "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==" 847 + }, 848 + "jiti@2.5.1": { 849 + "integrity": "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==", 850 + "bin": true 851 + }, 852 + "js-tokens@4.0.0": { 853 + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 854 + }, 855 + "jsesc@3.1.0": { 856 + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", 857 + "bin": true 858 + }, 859 + "json5@2.2.3": { 860 + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", 861 + "bin": true 862 + }, 863 + "lightningcss-darwin-arm64@1.30.1": { 864 + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", 865 + "os": ["darwin"], 866 + "cpu": ["arm64"] 867 + }, 868 + "lightningcss-darwin-x64@1.30.1": { 869 + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", 870 + "os": ["darwin"], 871 + "cpu": ["x64"] 872 + }, 873 + "lightningcss-freebsd-x64@1.30.1": { 874 + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", 875 + "os": ["freebsd"], 876 + "cpu": ["x64"] 877 + }, 878 + "lightningcss-linux-arm-gnueabihf@1.30.1": { 879 + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", 880 + "os": ["linux"], 881 + "cpu": ["arm"] 882 + }, 883 + "lightningcss-linux-arm64-gnu@1.30.1": { 884 + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", 885 + "os": ["linux"], 886 + "cpu": ["arm64"] 887 + }, 888 + "lightningcss-linux-arm64-musl@1.30.1": { 889 + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", 890 + "os": ["linux"], 891 + "cpu": ["arm64"] 892 + }, 893 + "lightningcss-linux-x64-gnu@1.30.1": { 894 + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", 895 + "os": ["linux"], 896 + "cpu": ["x64"] 897 + }, 898 + "lightningcss-linux-x64-musl@1.30.1": { 899 + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", 900 + "os": ["linux"], 901 + "cpu": ["x64"] 902 + }, 903 + "lightningcss-win32-arm64-msvc@1.30.1": { 904 + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", 905 + "os": ["win32"], 906 + "cpu": ["arm64"] 907 + }, 908 + "lightningcss-win32-x64-msvc@1.30.1": { 909 + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", 910 + "os": ["win32"], 911 + "cpu": ["x64"] 912 + }, 913 + "lightningcss@1.30.1": { 914 + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", 915 + "dependencies": [ 916 + "detect-libc" 917 + ], 918 + "optionalDependencies": [ 919 + "lightningcss-darwin-arm64", 920 + "lightningcss-darwin-x64", 921 + "lightningcss-freebsd-x64", 922 + "lightningcss-linux-arm-gnueabihf", 923 + "lightningcss-linux-arm64-gnu", 924 + "lightningcss-linux-arm64-musl", 925 + "lightningcss-linux-x64-gnu", 926 + "lightningcss-linux-x64-musl", 927 + "lightningcss-win32-arm64-msvc", 928 + "lightningcss-win32-x64-msvc" 929 + ] 930 + }, 931 + "lru-cache@5.1.1": { 932 + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", 933 + "dependencies": [ 934 + "yallist@3.1.1" 935 + ] 936 + }, 937 + "magic-string@0.30.19": { 938 + "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", 939 + "dependencies": [ 940 + "@jridgewell/sourcemap-codec" 941 + ] 942 + }, 943 + "merge-anything@5.1.7": { 944 + "integrity": "sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==", 945 + "dependencies": [ 946 + "is-what" 947 + ] 948 + }, 949 + "minipass@7.1.2": { 950 + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" 951 + }, 952 + "minizlib@3.0.2": { 953 + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", 954 + "dependencies": [ 955 + "minipass" 956 + ] 957 + }, 958 + "mkdirp@3.0.1": { 959 + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", 960 + "bin": true 961 + }, 962 + "ms@2.1.3": { 963 + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 964 + }, 965 + "nanoid@3.3.11": { 966 + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", 967 + "bin": true 968 + }, 969 + "node-releases@2.0.20": { 970 + "integrity": "sha512-7gK6zSXEH6neM212JgfYFXe+GmZQM+fia5SsusuBIUgnPheLFBmIPhtFoAQRj8/7wASYQnbDlHPVwY0BefoFgA==" 971 + }, 972 + "parse5@7.3.0": { 973 + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", 974 + "dependencies": [ 975 + "entities" 976 + ] 977 + }, 978 + "picocolors@1.1.1": { 979 + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" 980 + }, 981 + "picomatch@4.0.3": { 982 + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==" 983 + }, 984 + "postcss@8.5.6": { 985 + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", 986 + "dependencies": [ 987 + "nanoid", 988 + "picocolors", 989 + "source-map-js" 990 + ] 991 + }, 992 + "rollup@4.50.1": { 993 + "integrity": "sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA==", 994 + "dependencies": [ 995 + "@types/estree" 996 + ], 997 + "optionalDependencies": [ 998 + "@rollup/rollup-android-arm-eabi", 999 + "@rollup/rollup-android-arm64", 1000 + "@rollup/rollup-darwin-arm64", 1001 + "@rollup/rollup-darwin-x64", 1002 + "@rollup/rollup-freebsd-arm64", 1003 + "@rollup/rollup-freebsd-x64", 1004 + "@rollup/rollup-linux-arm-gnueabihf", 1005 + "@rollup/rollup-linux-arm-musleabihf", 1006 + "@rollup/rollup-linux-arm64-gnu", 1007 + "@rollup/rollup-linux-arm64-musl", 1008 + "@rollup/rollup-linux-loongarch64-gnu", 1009 + "@rollup/rollup-linux-ppc64-gnu", 1010 + "@rollup/rollup-linux-riscv64-gnu", 1011 + "@rollup/rollup-linux-riscv64-musl", 1012 + "@rollup/rollup-linux-s390x-gnu", 1013 + "@rollup/rollup-linux-x64-gnu", 1014 + "@rollup/rollup-linux-x64-musl", 1015 + "@rollup/rollup-openharmony-arm64", 1016 + "@rollup/rollup-win32-arm64-msvc", 1017 + "@rollup/rollup-win32-ia32-msvc", 1018 + "@rollup/rollup-win32-x64-msvc", 1019 + "fsevents" 1020 + ], 1021 + "bin": true 1022 + }, 1023 + "semver@6.3.1": { 1024 + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", 1025 + "bin": true 1026 + }, 1027 + "seroval-plugins@1.3.3_seroval@1.3.2": { 1028 + "integrity": "sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w==", 1029 + "dependencies": [ 1030 + "seroval" 1031 + ] 1032 + }, 1033 + "seroval@1.3.2": { 1034 + "integrity": "sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==" 1035 + }, 1036 + "solid-devtools@0.34.3_solid-js@1.9.9__seroval@1.3.2_vite@7.1.5__picomatch@4.0.3_@babel+core@7.28.4": { 1037 + "integrity": "sha512-ZQua959n+Zu3sLbm9g0IRjYUb1YYlYbu83PWLRoKbSsq0a3ItQNhnS2OBU7rQNmOKZiMexNo9Z3izas9BcOKDg==", 1038 + "dependencies": [ 1039 + "@babel/core", 1040 + "@babel/plugin-syntax-typescript", 1041 + "@babel/types", 1042 + "@solid-devtools/debugger", 1043 + "@solid-devtools/shared", 1044 + "solid-js", 1045 + "vite" 1046 + ], 1047 + "optionalPeers": [ 1048 + "vite" 1049 + ] 1050 + }, 1051 + "solid-js@1.9.9_seroval@1.3.2": { 1052 + "integrity": "sha512-A0ZBPJQldAeGCTW0YRYJmt7RCeh5rbFfPZ2aOttgYnctHE7HgKeHCBB/PVc2P7eOfmNXqMFFFoYYdm3S4dcbkA==", 1053 + "dependencies": [ 1054 + "csstype", 1055 + "seroval", 1056 + "seroval-plugins" 1057 + ] 1058 + }, 1059 + "solid-refresh@0.6.3_solid-js@1.9.9__seroval@1.3.2": { 1060 + "integrity": "sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==", 1061 + "dependencies": [ 1062 + "@babel/generator", 1063 + "@babel/helper-module-imports@7.27.1", 1064 + "@babel/types", 1065 + "solid-js" 1066 + ] 1067 + }, 1068 + "source-map-js@1.2.1": { 1069 + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==" 1070 + }, 1071 + "tailwindcss@4.1.13": { 1072 + "integrity": "sha512-i+zidfmTqtwquj4hMEwdjshYYgMbOrPzb9a0M3ZgNa0JMoZeFC6bxZvO8yr8ozS6ix2SDz0+mvryPeBs2TFE+w==" 1073 + }, 1074 + "tapable@2.2.3": { 1075 + "integrity": "sha512-ZL6DDuAlRlLGghwcfmSn9sK3Hr6ArtyudlSAiCqQ6IfE+b+HHbydbYDIG15IfS5do+7XQQBdBiubF/cV2dnDzg==" 1076 + }, 1077 + "tar@7.4.3": { 1078 + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", 1079 + "dependencies": [ 1080 + "@isaacs/fs-minipass", 1081 + "chownr", 1082 + "minipass", 1083 + "minizlib", 1084 + "mkdirp", 1085 + "yallist@5.0.0" 1086 + ] 1087 + }, 1088 + "tinyglobby@0.2.15_picomatch@4.0.3": { 1089 + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", 1090 + "dependencies": [ 1091 + "fdir", 1092 + "picomatch" 1093 + ] 1094 + }, 1095 + "tslib@2.8.1": { 1096 + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" 1097 + }, 1098 + "typescript@5.9.2": { 1099 + "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", 1100 + "bin": true 1101 + }, 1102 + "update-browserslist-db@1.1.3_browserslist@4.25.4": { 1103 + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", 1104 + "dependencies": [ 1105 + "browserslist", 1106 + "escalade", 1107 + "picocolors" 1108 + ], 1109 + "bin": true 1110 + }, 1111 + "validate-html-nesting@1.2.3": { 1112 + "integrity": "sha512-kdkWdCl6eCeLlRShJKbjVOU2kFKxMF8Ghu50n+crEoyx+VKm3FxAxF9z4DCy6+bbTOqNW0+jcIYRnjoIRzigRw==" 1113 + }, 1114 + "vite-plugin-solid@2.11.8_solid-js@1.9.9__seroval@1.3.2_vite@7.1.5__picomatch@4.0.3_@babel+core@7.28.4": { 1115 + "integrity": "sha512-hFrCxBfv3B1BmFqnJF4JOCYpjrmi/zwyeKjcomQ0khh8HFyQ8SbuBWQ7zGojfrz6HUOBFrJBNySDi/JgAHytWg==", 1116 + "dependencies": [ 1117 + "@babel/core", 1118 + "@types/babel__core", 1119 + "babel-preset-solid", 1120 + "merge-anything", 1121 + "solid-js", 1122 + "solid-refresh", 1123 + "vite", 1124 + "vitefu" 1125 + ] 1126 + }, 1127 + "vite@7.1.5_picomatch@4.0.3": { 1128 + "integrity": "sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ==", 1129 + "dependencies": [ 1130 + "esbuild", 1131 + "fdir", 1132 + "picomatch", 1133 + "postcss", 1134 + "rollup", 1135 + "tinyglobby" 1136 + ], 1137 + "optionalDependencies": [ 1138 + "fsevents" 1139 + ], 1140 + "bin": true 1141 + }, 1142 + "vitefu@1.1.1_vite@7.1.5__picomatch@4.0.3": { 1143 + "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==", 1144 + "dependencies": [ 1145 + "vite" 1146 + ], 1147 + "optionalPeers": [ 1148 + "vite" 1149 + ] 1150 + }, 1151 + "yallist@3.1.1": { 1152 + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" 1153 + }, 1154 + "yallist@5.0.0": { 1155 + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==" 1156 + } 1157 + }, 1158 + "workspace": { 1159 + "packageJson": { 1160 + "dependencies": [ 1161 + "npm:@tailwindcss/vite@^4.1.13", 1162 + "npm:solid-devtools@~0.34.3", 1163 + "npm:solid-js@^1.9.9", 1164 + "npm:tailwindcss@^4.1.13", 1165 + "npm:typescript@^5.9.2", 1166 + "npm:vite-plugin-solid@^2.11.8", 1167 + "npm:vite@^7.1.4" 1168 + ] 1169 + } 1170 + } 1171 + }
+27
flake.lock
··· 1 + { 2 + "nodes": { 3 + "nixpkgs": { 4 + "locked": { 5 + "lastModified": 1757068644, 6 + "narHash": "sha256-NOrUtIhTkIIumj1E/Rsv1J37Yi3xGStISEo8tZm3KW4=", 7 + "owner": "nixos", 8 + "repo": "nixpkgs", 9 + "rev": "8eb28adfa3dc4de28e792e3bf49fcf9007ca8ac9", 10 + "type": "github" 11 + }, 12 + "original": { 13 + "owner": "nixos", 14 + "ref": "nixos-unstable", 15 + "repo": "nixpkgs", 16 + "type": "github" 17 + } 18 + }, 19 + "root": { 20 + "inputs": { 21 + "nixpkgs": "nixpkgs" 22 + } 23 + } 24 + }, 25 + "root": "root", 26 + "version": 7 27 + }
+14
flake.nix
··· 1 + { 2 + inputs = { 3 + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; 4 + }; 5 + outputs = {nixpkgs, ...}: { 6 + devShells = nixpkgs.lib.genAttrs ["x86_64-linux"] (system: let 7 + pkgs = import nixpkgs {inherit system;}; 8 + in { 9 + default = pkgs.mkShell { 10 + buildInputs = [pkgs.deno]; 11 + }; 12 + }); 13 + }; 14 + }
+15
index.html
··· 1 + <!DOCTYPE html> 2 + <html lang="en"> 3 + <head> 4 + <meta charset="utf-8" /> 5 + <meta name="viewport" content="width=device-width, initial-scale=1" /> 6 + <meta name="theme-color" content="#000000" /> 7 + <title>Solid App</title> 8 + </head> 9 + <body> 10 + <noscript>You need to enable JavaScript to run this app.</noscript> 11 + <div id="root"></div> 12 + 13 + <script src="/src/index.tsx" type="module"></script> 14 + </body> 15 + </html>
+24
package.json
··· 1 + { 2 + "name": "vite-template-solid", 3 + "version": "0.0.0", 4 + "description": "", 5 + "type": "module", 6 + "scripts": { 7 + "start": "vite", 8 + "dev": "vite", 9 + "build": "vite build", 10 + "serve": "vite preview" 11 + }, 12 + "license": "MIT", 13 + "devDependencies": { 14 + "@tailwindcss/vite": "^4.1.13", 15 + "solid-devtools": "^0.34.3", 16 + "tailwindcss": "^4.1.13", 17 + "typescript": "^5.9.2", 18 + "vite": "^7.1.4", 19 + "vite-plugin-solid": "^2.11.8" 20 + }, 21 + "dependencies": { 22 + "solid-js": "^1.9.9" 23 + } 24 + }
+250
src/App.tsx
··· 1 + import { type Component, createResource, For, Suspense, Show } from "solid-js"; 2 + 3 + export default () => { 4 + const [artistRes] = createResource<ArtistStats>(() => artists("karitham")); 5 + const [groupsRes] = createResource<ReleaseGroupsStats>(() => 6 + release_groups("karitham"), 7 + ); 8 + 9 + return ( 10 + <Suspense fallback={<p>Loading...</p>}> 11 + <Artists artists={artistRes()?.artists || []} /> 12 + <ReleaseGroups groups={groupsRes()?.release_groups || []} /> 13 + </Suspense> 14 + ); 15 + }; 16 + 17 + const Artists: Component<{ artists: ArtistStatsArtist[] }> = (props) => { 18 + return ( 19 + <div class="flex flex-wrap justify-center"> 20 + <For each={props.artists}> 21 + {(artist) => <ArtistsItem artist={artist} />} 22 + </For> 23 + </div> 24 + ); 25 + }; 26 + 27 + const ArtistsItem: Component<{ artist: ArtistStatsArtist }> = (props) => { 28 + const [image] = createResource(async () => { 29 + if (!props.artist.artist_mbid) { 30 + return null; 31 + } 32 + 33 + return await getArtistImageURL(props.artist.artist_mbid); 34 + }); 35 + 36 + return ( 37 + <div class="flex flex-col items-center p-4 m-2 bg-gray-200 rounded-lg shadow-lg"> 38 + <Show 39 + when={!image.loading} 40 + fallback={ 41 + <div class="w-32 h-32 bg-gray-300 rounded-md mb-6 animate-pulse"></div> 42 + } 43 + > 44 + <img 45 + src={image() || "/fallback"} 46 + alt={`Thumbnail for ${props.artist.artist_name}`} 47 + class="w-32 h-32 object-cover rounded-md mb-6 transition-transform duration-300 hover:scale-105" 48 + /> 49 + </Show> 50 + <p class="text-black text-center font-bold truncate w-32"> 51 + {props.artist.artist_name} 52 + </p> 53 + <p class="text-gray-800 text-sm">{props.artist.listen_count} listens</p> 54 + </div> 55 + ); 56 + }; 57 + 58 + const ReleaseGroups: Component<{ groups: ReleaseGroupsGroup[] }> = (props) => { 59 + return ( 60 + <div class="flex flex-wrap justify-center"> 61 + <For each={props.groups}> 62 + {(group) => <ReleaseGroupItem group={group} />} 63 + </For> 64 + </div> 65 + ); 66 + }; 67 + 68 + const ReleaseGroupItem: Component<{ group: ReleaseGroupsGroup }> = (props) => { 69 + const [image] = createResource(async () => { 70 + if (!props.group.caa_release_mbid) { 71 + return null; 72 + } 73 + const result = await getReleaseImageURL( 74 + "release", 75 + props.group.caa_release_mbid, 76 + ); 77 + return result[0]?.image; 78 + }); 79 + 80 + return ( 81 + <div class="flex flex-col items-center p-4 m-2 bg-gray-200 rounded-lg shadow-lg"> 82 + <Show 83 + when={!image.loading} 84 + fallback={ 85 + <div class="w-32 h-32 bg-gray-300 rounded-md mb-6 animate-pulse"></div> 86 + } 87 + > 88 + <img 89 + src={image() || "/fallback"} 90 + alt={`Cover for ${props.group.release_group_name}`} 91 + class="w-32 h-32 object-cover rounded-md mb-6 transition-transform duration-300 hover:scale-105" 92 + /> 93 + </Show> 94 + <p class="text-black text-center font-bold truncate w-32"> 95 + {props.group.release_group_name} 96 + </p> 97 + <p class="text-gray-800 text-sm">{props.group.listen_count} listens</p> 98 + </div> 99 + ); 100 + }; 101 + 102 + const LB_API_URL = `https://api.listenbrainz.org`; 103 + const COVERARTARCHIVE_URL = "https://coverartarchive.org"; 104 + const MB_API_URL = "https://musicbrainz.org"; 105 + 106 + export type Range = "this_week" | "this_month" | "this_year" | "all_time"; 107 + 108 + export type ArtistStats = { 109 + artists: ArtistStatsArtist[]; 110 + count: number; 111 + from_ts: number; 112 + last_updated: number; 113 + offset: number; 114 + range: Range; 115 + to_ts: number; 116 + total_artist_count: number; 117 + user_id: string; 118 + }; 119 + 120 + type ArtistStatsArtist = { 121 + artist_mbid: string; 122 + artist_name: string; 123 + listen_count: number; 124 + }; 125 + 126 + export type ReleaseGroupsStats = { 127 + count: number; 128 + from_ts: number; 129 + last_updated: number; 130 + offset: number; 131 + range: string; 132 + release_groups: ReleaseGroupsGroup[]; 133 + to_ts: number; 134 + total_release_group_count: number; 135 + user_id: string; 136 + }; 137 + 138 + type ReleaseGroupsGroup = { 139 + artist_mbids: string[]; 140 + artist_name: string; 141 + artists: 142 + | { 143 + artist_credit_name: string; 144 + artist_mbid: string; 145 + join_phrase: string; 146 + }[] 147 + | null; 148 + caa_id: number | null; 149 + caa_release_mbid: string | null; 150 + listen_count: number; 151 + release_group_mbid: string | null; 152 + release_group_name: string; 153 + }; 154 + 155 + async function artists( 156 + user: string, 157 + offset: number = 0, 158 + range: Range = "this_week", 159 + count: number = 5, 160 + ): Promise<ArtistStats> { 161 + const url = new URL(`${LB_API_URL}/1/stats/user/${user}/artists`); 162 + 163 + url.searchParams.set("offset", offset.toString()); 164 + url.searchParams.set("range", range); 165 + url.searchParams.set("count", count.toString()); 166 + 167 + return getPayload(url); 168 + } 169 + 170 + async function release_groups( 171 + user: string, 172 + offset: number = 0, 173 + range: Range = "this_week", 174 + count: number = 5, 175 + ): Promise<ReleaseGroupsStats> { 176 + const url = new URL(`${LB_API_URL}/1/stats/user/${user}/release-groups`); 177 + 178 + url.searchParams.set("offset", offset.toString()); 179 + url.searchParams.set("range", range); 180 + url.searchParams.set("count", count.toString()); 181 + 182 + return getPayload(url); 183 + } 184 + 185 + async function getPayload<T>(url: URL): Promise<T> { 186 + const response = await fetch(url, {}); 187 + 188 + if (!response.ok) { 189 + throw new Error(`HTTP error! status: ${response.status}`); 190 + } 191 + 192 + const data = await response.json(); 193 + 194 + return (data as { payload: T }).payload; 195 + } 196 + 197 + export interface Image { 198 + approved: boolean; 199 + back: boolean; 200 + comment: string; 201 + edit: number; 202 + front: boolean; 203 + id: number; 204 + image: string; 205 + thumbnails: Thumbnails; 206 + types: string[]; 207 + } 208 + 209 + export interface Thumbnails { 210 + "1200": string; 211 + "250": string; 212 + "500": string; 213 + large: string; 214 + small: string; 215 + } 216 + 217 + async function getReleaseImageURL( 218 + kind: "release" | "release-group", 219 + mbid: string, 220 + ): Promise<Image[]> { 221 + const url = new URL(`${COVERARTARCHIVE_URL}/${kind}/${mbid}`); 222 + 223 + const response = await fetch(url, {}); 224 + 225 + if (!response.ok) { 226 + throw new Error(`HTTP error! status: ${response.status}`); 227 + } 228 + 229 + const data = await response.json(); 230 + 231 + return (data as { images: Image[] }).images; 232 + } 233 + 234 + async function getArtistImageURL(mbid: string): Promise<string | null> { 235 + const url = new URL(`${MB_API_URL}/ws/2/artist/${mbid}`); 236 + 237 + url.searchParams.set("inc", "url-rels"); 238 + 239 + const response = await fetch(url, {}); 240 + 241 + if (!response.ok) { 242 + throw new Error(`HTTP error! status: ${response.status}`); 243 + } 244 + 245 + const parser = new DOMParser(); 246 + 247 + const doc = parser.parseFromString(await response.text(), "text/xml"); 248 + 249 + return doc?.querySelector("type=image")?.textContent || null; 250 + }
+1
src/index.css
··· 1 + @import 'tailwindcss';
+16
src/index.tsx
··· 1 + /* @refresh reload */ 2 + import './index.css'; 3 + import { render } from 'solid-js/web'; 4 + import 'solid-devtools'; 5 + 6 + import App from './App'; 7 + 8 + const root = document.getElementById('root'); 9 + 10 + if (import.meta.env.DEV && !(root instanceof HTMLElement)) { 11 + throw new Error( 12 + 'Root element not found. Did you forget to add it to your index.html? Or maybe the id attribute got misspelled?', 13 + ); 14 + } 15 + 16 + render(() => <App />, root!);
+20
tsconfig.json
··· 1 + { 2 + "compilerOptions": { 3 + // General 4 + "jsx": "preserve", 5 + "jsxImportSource": "solid-js", 6 + "target": "ESNext", 7 + 8 + // Modules 9 + "allowSyntheticDefaultImports": true, 10 + "esModuleInterop": true, 11 + "isolatedModules": true, 12 + "module": "ESNext", 13 + "moduleResolution": "bundler", 14 + "noEmit": true, 15 + 16 + // Type Checking & Safety 17 + "strict": true, 18 + "types": ["vite/client"] 19 + } 20 + }
+17
vite.config.ts
··· 1 + import tailwindcss from "@tailwindcss/vite"; 2 + import devtools from "solid-devtools/vite"; 3 + import { defineConfig } from "vite"; 4 + import solidPlugin from "vite-plugin-solid"; 5 + 6 + export default defineConfig({ 7 + plugins: [devtools(), solidPlugin(), tailwindcss()], 8 + server: { 9 + port: 3000, 10 + watch: { 11 + followSymlinks: false, 12 + }, 13 + }, 14 + build: { 15 + target: "esnext", 16 + }, 17 + });