learn and share notes on atproto (wip) 🦉 malfestio.stormlightlabs.org/
readability solid axum atproto srs

build: add Tailwind CSS and Vitest, remove boilerplate UI and styling

+2055 -183
+4 -4
docs/todo.md
··· 47 47 48 48 - Monorepo layout (crates/server/, web/, lexicons/, crates/cli/, crates/core/) 49 49 - core: domain logic, data models 50 - - server: axum, postgres, search, eventing, auth 51 - - cli: entry point for local dev, PDS sync 52 - - web: solidjs app 50 + - server: axum, postgres, search, eventing, auth (tokio, deadpool-postgres, tokio-postgres) 51 + - cli: entry point for local dev, PDS sync, Db migrations (clap, owo-colors) 52 + - web: vite, solidjs app, tailwindcss 53 53 - CI: format/lint/test + schema validation + typegen 54 54 - Axum: 55 55 - health, auth stub, error model, request IDs, structured logging 56 56 - Solid: 57 - - tailwind, router shell, auth gate, initial pages + layout system 57 + - router shell, auth gate, initial pages + layout system (IBM Carbon inspired design) 58 58 59 59 #### Acceptance 60 60
+13 -10
web/index.html
··· 1 1 <!doctype html> 2 2 <html lang="en"> 3 - <head> 4 - <meta charset="UTF-8" /> 5 - <link rel="icon" type="image/svg+xml" href="/vite.svg" /> 6 - <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 7 - <title>frontend</title> 8 - </head> 9 - <body> 10 - <div id="root"></div> 11 - <script type="module" src="/src/index.tsx"></script> 12 - </body> 3 + 4 + <head> 5 + <meta charset="UTF-8" /> 6 + <link rel="icon" type="image/svg+xml" href="/vite.svg" /> 7 + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 8 + <title>Malfestio</title> 9 + </head> 10 + 11 + <body> 12 + <div id="root"></div> 13 + <script type="module" src="/src/index.tsx"></script> 14 + </body> 15 + 13 16 </html>
+18 -23
web/package.json
··· 1 1 { 2 - "name": "malfestio-web", 3 - "private": true, 4 - "version": "0.0.0", 5 - "type": "module", 6 - "scripts": { 7 - "dev": "vite", 8 - "build": "tsc -b && vite build", 9 - "preview": "vite preview" 10 - }, 11 - "dependencies": { 12 - "solid-js": "^1.9.10" 13 - }, 14 - "devDependencies": { 15 - "@types/node": "^24.10.1", 16 - "typescript": "~5.9.3", 17 - "vite": "npm:rolldown-vite@7.2.5", 18 - "vite-plugin-solid": "^2.11.10" 19 - }, 20 - "pnpm": { 21 - "overrides": { 22 - "vite": "npm:rolldown-vite@7.2.5" 23 - } 24 - } 2 + "name": "malfestio-web", 3 + "private": true, 4 + "version": "0.0.0", 5 + "type": "module", 6 + "scripts": { "dev": "vite", "build": "tsc -b && vite build", "preview": "vite preview", "test": "vitest" }, 7 + "dependencies": { "@tailwindcss/vite": "^4.1.18", "solid-js": "^1.9.10", "tailwindcss": "^4.1.18" }, 8 + "devDependencies": { 9 + "@solidjs/testing-library": "^0.8.10", 10 + "@testing-library/jest-dom": "^6.9.1", 11 + "@testing-library/user-event": "^14.6.1", 12 + "@types/node": "^24.10.1", 13 + "jsdom": "^27.4.0", 14 + "typescript": "~5.9.3", 15 + "vite": "npm:rolldown-vite@7.2.5", 16 + "vite-plugin-solid": "^2.11.10", 17 + "vitest": "^4.0.16" 18 + }, 19 + "pnpm": { "overrides": { "vite": "npm:rolldown-vite@7.2.5" } } 25 20 }
+2003
web/pnpm-lock.yaml
··· 1 + lockfileVersion: '9.0' 2 + 3 + settings: 4 + autoInstallPeers: true 5 + excludeLinksFromLockfile: false 6 + 7 + overrides: 8 + vite: npm:rolldown-vite@7.2.5 9 + 10 + importers: 11 + 12 + .: 13 + dependencies: 14 + '@tailwindcss/vite': 15 + specifier: ^4.1.18 16 + version: 4.1.18(rolldown-vite@7.2.5(@types/node@24.10.4)(jiti@2.6.1)) 17 + solid-js: 18 + specifier: ^1.9.10 19 + version: 1.9.10 20 + tailwindcss: 21 + specifier: ^4.1.18 22 + version: 4.1.18 23 + devDependencies: 24 + '@solidjs/testing-library': 25 + specifier: ^0.8.10 26 + version: 0.8.10(solid-js@1.9.10) 27 + '@testing-library/jest-dom': 28 + specifier: ^6.9.1 29 + version: 6.9.1 30 + '@testing-library/user-event': 31 + specifier: ^14.6.1 32 + version: 14.6.1(@testing-library/dom@10.4.1) 33 + '@types/node': 34 + specifier: ^24.10.1 35 + version: 24.10.4 36 + jsdom: 37 + specifier: ^27.4.0 38 + version: 27.4.0 39 + typescript: 40 + specifier: ~5.9.3 41 + version: 5.9.3 42 + vite: 43 + specifier: npm:rolldown-vite@7.2.5 44 + version: rolldown-vite@7.2.5(@types/node@24.10.4)(jiti@2.6.1) 45 + vite-plugin-solid: 46 + specifier: ^2.11.10 47 + version: 2.11.10(@testing-library/jest-dom@6.9.1)(rolldown-vite@7.2.5(@types/node@24.10.4)(jiti@2.6.1))(solid-js@1.9.10) 48 + vitest: 49 + specifier: ^4.0.16 50 + version: 4.0.16(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0) 51 + 52 + packages: 53 + 54 + '@acemir/cssom@0.9.30': 55 + resolution: {integrity: sha512-9CnlMCI0LmCIq0olalQqdWrJHPzm0/tw3gzOA9zJSgvFX7Xau3D24mAGa4BtwxwY69nsuJW6kQqqCzf/mEcQgg==} 56 + 57 + '@adobe/css-tools@4.4.4': 58 + resolution: {integrity: sha512-Elp+iwUx5rN5+Y8xLt5/GRoG20WGoDCQ/1Fb+1LiGtvwbDavuSk0jhD/eZdckHAuzcDzccnkv+rEjyWfRx18gg==} 59 + 60 + '@asamuzakjp/css-color@4.1.1': 61 + resolution: {integrity: sha512-B0Hv6G3gWGMn0xKJ0txEi/jM5iFpT3MfDxmhZFb4W047GvytCf1DHQ1D69W3zHI4yWe2aTZAA0JnbMZ7Xc8DuQ==} 62 + 63 + '@asamuzakjp/dom-selector@6.7.6': 64 + resolution: {integrity: sha512-hBaJER6A9MpdG3WgdlOolHmbOYvSk46y7IQN/1+iqiCuUu6iWdQrs9DGKF8ocqsEqWujWf/V7b7vaDgiUmIvUg==} 65 + 66 + '@asamuzakjp/nwsapi@2.3.9': 67 + resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} 68 + 69 + '@babel/code-frame@7.27.1': 70 + resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} 71 + engines: {node: '>=6.9.0'} 72 + 73 + '@babel/compat-data@7.28.5': 74 + resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} 75 + engines: {node: '>=6.9.0'} 76 + 77 + '@babel/core@7.28.5': 78 + resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} 79 + engines: {node: '>=6.9.0'} 80 + 81 + '@babel/generator@7.28.5': 82 + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} 83 + engines: {node: '>=6.9.0'} 84 + 85 + '@babel/helper-compilation-targets@7.27.2': 86 + resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} 87 + engines: {node: '>=6.9.0'} 88 + 89 + '@babel/helper-globals@7.28.0': 90 + resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} 91 + engines: {node: '>=6.9.0'} 92 + 93 + '@babel/helper-module-imports@7.18.6': 94 + resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==} 95 + engines: {node: '>=6.9.0'} 96 + 97 + '@babel/helper-module-imports@7.27.1': 98 + resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} 99 + engines: {node: '>=6.9.0'} 100 + 101 + '@babel/helper-module-transforms@7.28.3': 102 + resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==} 103 + engines: {node: '>=6.9.0'} 104 + peerDependencies: 105 + '@babel/core': ^7.0.0 106 + 107 + '@babel/helper-plugin-utils@7.27.1': 108 + resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} 109 + engines: {node: '>=6.9.0'} 110 + 111 + '@babel/helper-string-parser@7.27.1': 112 + resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} 113 + engines: {node: '>=6.9.0'} 114 + 115 + '@babel/helper-validator-identifier@7.28.5': 116 + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} 117 + engines: {node: '>=6.9.0'} 118 + 119 + '@babel/helper-validator-option@7.27.1': 120 + resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} 121 + engines: {node: '>=6.9.0'} 122 + 123 + '@babel/helpers@7.28.4': 124 + resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} 125 + engines: {node: '>=6.9.0'} 126 + 127 + '@babel/parser@7.28.5': 128 + resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} 129 + engines: {node: '>=6.0.0'} 130 + hasBin: true 131 + 132 + '@babel/plugin-syntax-jsx@7.27.1': 133 + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} 134 + engines: {node: '>=6.9.0'} 135 + peerDependencies: 136 + '@babel/core': ^7.0.0-0 137 + 138 + '@babel/runtime@7.28.4': 139 + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} 140 + engines: {node: '>=6.9.0'} 141 + 142 + '@babel/template@7.27.2': 143 + resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} 144 + engines: {node: '>=6.9.0'} 145 + 146 + '@babel/traverse@7.28.5': 147 + resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} 148 + engines: {node: '>=6.9.0'} 149 + 150 + '@babel/types@7.28.5': 151 + resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==} 152 + engines: {node: '>=6.9.0'} 153 + 154 + '@csstools/color-helpers@5.1.0': 155 + resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} 156 + engines: {node: '>=18'} 157 + 158 + '@csstools/css-calc@2.1.4': 159 + resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} 160 + engines: {node: '>=18'} 161 + peerDependencies: 162 + '@csstools/css-parser-algorithms': ^3.0.5 163 + '@csstools/css-tokenizer': ^3.0.4 164 + 165 + '@csstools/css-color-parser@3.1.0': 166 + resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} 167 + engines: {node: '>=18'} 168 + peerDependencies: 169 + '@csstools/css-parser-algorithms': ^3.0.5 170 + '@csstools/css-tokenizer': ^3.0.4 171 + 172 + '@csstools/css-parser-algorithms@3.0.5': 173 + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} 174 + engines: {node: '>=18'} 175 + peerDependencies: 176 + '@csstools/css-tokenizer': ^3.0.4 177 + 178 + '@csstools/css-syntax-patches-for-csstree@1.0.22': 179 + resolution: {integrity: sha512-qBcx6zYlhleiFfdtzkRgwNC7VVoAwfK76Vmsw5t+PbvtdknO9StgRk7ROvq9so1iqbdW4uLIDAsXRsTfUrIoOw==} 180 + engines: {node: '>=18'} 181 + 182 + '@csstools/css-tokenizer@3.0.4': 183 + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} 184 + engines: {node: '>=18'} 185 + 186 + '@emnapi/core@1.7.1': 187 + resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} 188 + 189 + '@emnapi/runtime@1.7.1': 190 + resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} 191 + 192 + '@emnapi/wasi-threads@1.1.0': 193 + resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} 194 + 195 + '@exodus/bytes@1.6.0': 196 + resolution: {integrity: sha512-y32mI9627q5LR/L8fLc4YyDRJQOi+jK0D9okzLilAdiU3F9we3zC7Y7CFrR/8vAvUyv7FgBAYcNHtvbmhKCFcw==} 197 + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} 198 + peerDependencies: 199 + '@exodus/crypto': ^1.0.0-rc.4 200 + peerDependenciesMeta: 201 + '@exodus/crypto': 202 + optional: true 203 + 204 + '@jridgewell/gen-mapping@0.3.13': 205 + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} 206 + 207 + '@jridgewell/remapping@2.3.5': 208 + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} 209 + 210 + '@jridgewell/resolve-uri@3.1.2': 211 + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 212 + engines: {node: '>=6.0.0'} 213 + 214 + '@jridgewell/sourcemap-codec@1.5.5': 215 + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} 216 + 217 + '@jridgewell/trace-mapping@0.3.31': 218 + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} 219 + 220 + '@napi-rs/wasm-runtime@1.1.0': 221 + resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==} 222 + 223 + '@oxc-project/runtime@0.97.0': 224 + resolution: {integrity: sha512-yH0zw7z+jEws4dZ4IUKoix5Lh3yhqIJWF9Dc8PWvhpo7U7O+lJrv7ZZL4BeRO0la8LBQFwcCewtLBnVV7hPe/w==} 225 + engines: {node: ^20.19.0 || >=22.12.0} 226 + 227 + '@oxc-project/types@0.97.0': 228 + resolution: {integrity: sha512-lxmZK4xFrdvU0yZiDwgVQTCvh2gHWBJCBk5ALsrtsBWhs0uDIi+FTOnXRQeQfs304imdvTdaakT/lqwQ8hkOXQ==} 229 + 230 + '@rolldown/binding-android-arm64@1.0.0-beta.50': 231 + resolution: {integrity: sha512-XlEkrOIHLyGT3avOgzfTFSjG+f+dZMw+/qd+Y3HLN86wlndrB/gSimrJCk4gOhr1XtRtEKfszpadI3Md4Z4/Ag==} 232 + engines: {node: ^20.19.0 || >=22.12.0} 233 + cpu: [arm64] 234 + os: [android] 235 + 236 + '@rolldown/binding-darwin-arm64@1.0.0-beta.50': 237 + resolution: {integrity: sha512-+JRqKJhoFlt5r9q+DecAGPLZ5PxeLva+wCMtAuoFMWPoZzgcYrr599KQ+Ix0jwll4B4HGP43avu9My8KtSOR+w==} 238 + engines: {node: ^20.19.0 || >=22.12.0} 239 + cpu: [arm64] 240 + os: [darwin] 241 + 242 + '@rolldown/binding-darwin-x64@1.0.0-beta.50': 243 + resolution: {integrity: sha512-fFXDjXnuX7/gQZQm/1FoivVtRcyAzdjSik7Eo+9iwPQ9EgtA5/nB2+jmbzaKtMGG3q+BnZbdKHCtOacmNrkIDA==} 244 + engines: {node: ^20.19.0 || >=22.12.0} 245 + cpu: [x64] 246 + os: [darwin] 247 + 248 + '@rolldown/binding-freebsd-x64@1.0.0-beta.50': 249 + resolution: {integrity: sha512-F1b6vARy49tjmT/hbloplzgJS7GIvwWZqt+tAHEstCh0JIh9sa8FAMVqEmYxDviqKBaAI8iVvUREm/Kh/PD26Q==} 250 + engines: {node: ^20.19.0 || >=22.12.0} 251 + cpu: [x64] 252 + os: [freebsd] 253 + 254 + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.50': 255 + resolution: {integrity: sha512-U6cR76N8T8M6lHj7EZrQ3xunLPxSvYYxA8vJsBKZiFZkT8YV4kjgCO3KwMJL0NOjQCPGKyiXO07U+KmJzdPGRw==} 256 + engines: {node: ^20.19.0 || >=22.12.0} 257 + cpu: [arm] 258 + os: [linux] 259 + 260 + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.50': 261 + resolution: {integrity: sha512-ONgyjofCrrE3bnh5GZb8EINSFyR/hmwTzZ7oVuyUB170lboza1VMCnb8jgE6MsyyRgHYmN8Lb59i3NKGrxrYjw==} 262 + engines: {node: ^20.19.0 || >=22.12.0} 263 + cpu: [arm64] 264 + os: [linux] 265 + 266 + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.50': 267 + resolution: {integrity: sha512-L0zRdH2oDPkmB+wvuTl+dJbXCsx62SkqcEqdM+79LOcB+PxbAxxjzHU14BuZIQdXcAVDzfpMfaHWzZuwhhBTcw==} 268 + engines: {node: ^20.19.0 || >=22.12.0} 269 + cpu: [arm64] 270 + os: [linux] 271 + 272 + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.50': 273 + resolution: {integrity: sha512-gyoI8o/TGpQd3OzkJnh1M2kxy1Bisg8qJ5Gci0sXm9yLFzEXIFdtc4EAzepxGvrT2ri99ar5rdsmNG0zP0SbIg==} 274 + engines: {node: ^20.19.0 || >=22.12.0} 275 + cpu: [x64] 276 + os: [linux] 277 + 278 + '@rolldown/binding-linux-x64-musl@1.0.0-beta.50': 279 + resolution: {integrity: sha512-zti8A7M+xFDpKlghpcCAzyOi+e5nfUl3QhU023ce5NCgUxRG5zGP2GR9LTydQ1rnIPwZUVBWd4o7NjZDaQxaXA==} 280 + engines: {node: ^20.19.0 || >=22.12.0} 281 + cpu: [x64] 282 + os: [linux] 283 + 284 + '@rolldown/binding-openharmony-arm64@1.0.0-beta.50': 285 + resolution: {integrity: sha512-eZUssog7qljrrRU9Mi0eqYEPm3Ch0UwB+qlWPMKSUXHNqhm3TvDZarJQdTevGEfu3EHAXJvBIe0YFYr0TPVaMA==} 286 + engines: {node: ^20.19.0 || >=22.12.0} 287 + cpu: [arm64] 288 + os: [openharmony] 289 + 290 + '@rolldown/binding-wasm32-wasi@1.0.0-beta.50': 291 + resolution: {integrity: sha512-nmCN0nIdeUnmgeDXiQ+2HU6FT162o+rxnF7WMkBm4M5Ds8qTU7Dzv2Wrf22bo4ftnlrb2hKK6FSwAJSAe2FWLg==} 292 + engines: {node: '>=14.0.0'} 293 + cpu: [wasm32] 294 + 295 + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.50': 296 + resolution: {integrity: sha512-7kcNLi7Ua59JTTLvbe1dYb028QEPaJPJQHqkmSZ5q3tJueUeb6yjRtx8mw4uIqgWZcnQHAR3PrLN4XRJxvgIkA==} 297 + engines: {node: ^20.19.0 || >=22.12.0} 298 + cpu: [arm64] 299 + os: [win32] 300 + 301 + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.50': 302 + resolution: {integrity: sha512-lL70VTNvSCdSZkDPPVMwWn/M2yQiYvSoXw9hTLgdIWdUfC3g72UaruezusR6ceRuwHCY1Ayu2LtKqXkBO5LIwg==} 303 + engines: {node: ^20.19.0 || >=22.12.0} 304 + cpu: [ia32] 305 + os: [win32] 306 + 307 + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.50': 308 + resolution: {integrity: sha512-4qU4x5DXWB4JPjyTne/wBNPqkbQU8J45bl21geERBKtEittleonioACBL1R0PsBu0Aq21SwMK5a9zdBkWSlQtQ==} 309 + engines: {node: ^20.19.0 || >=22.12.0} 310 + cpu: [x64] 311 + os: [win32] 312 + 313 + '@rolldown/pluginutils@1.0.0-beta.50': 314 + resolution: {integrity: sha512-5e76wQiQVeL1ICOZVUg4LSOVYg9jyhGCin+icYozhsUzM+fHE7kddi1bdiE0jwVqTfkjba3jUFbEkoC9WkdvyA==} 315 + 316 + '@solidjs/testing-library@0.8.10': 317 + resolution: {integrity: sha512-qdeuIerwyq7oQTIrrKvV0aL9aFeuwTd86VYD3afdq5HYEwoox1OBTJy4y8A3TFZr8oAR0nujYgCzY/8wgHGfeQ==} 318 + engines: {node: '>= 14'} 319 + peerDependencies: 320 + '@solidjs/router': '>=0.9.0' 321 + solid-js: '>=1.0.0' 322 + peerDependenciesMeta: 323 + '@solidjs/router': 324 + optional: true 325 + 326 + '@standard-schema/spec@1.1.0': 327 + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} 328 + 329 + '@tailwindcss/node@4.1.18': 330 + resolution: {integrity: sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==} 331 + 332 + '@tailwindcss/oxide-android-arm64@4.1.18': 333 + resolution: {integrity: sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==} 334 + engines: {node: '>= 10'} 335 + cpu: [arm64] 336 + os: [android] 337 + 338 + '@tailwindcss/oxide-darwin-arm64@4.1.18': 339 + resolution: {integrity: sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==} 340 + engines: {node: '>= 10'} 341 + cpu: [arm64] 342 + os: [darwin] 343 + 344 + '@tailwindcss/oxide-darwin-x64@4.1.18': 345 + resolution: {integrity: sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==} 346 + engines: {node: '>= 10'} 347 + cpu: [x64] 348 + os: [darwin] 349 + 350 + '@tailwindcss/oxide-freebsd-x64@4.1.18': 351 + resolution: {integrity: sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==} 352 + engines: {node: '>= 10'} 353 + cpu: [x64] 354 + os: [freebsd] 355 + 356 + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': 357 + resolution: {integrity: sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==} 358 + engines: {node: '>= 10'} 359 + cpu: [arm] 360 + os: [linux] 361 + 362 + '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': 363 + resolution: {integrity: sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==} 364 + engines: {node: '>= 10'} 365 + cpu: [arm64] 366 + os: [linux] 367 + 368 + '@tailwindcss/oxide-linux-arm64-musl@4.1.18': 369 + resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==} 370 + engines: {node: '>= 10'} 371 + cpu: [arm64] 372 + os: [linux] 373 + 374 + '@tailwindcss/oxide-linux-x64-gnu@4.1.18': 375 + resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==} 376 + engines: {node: '>= 10'} 377 + cpu: [x64] 378 + os: [linux] 379 + 380 + '@tailwindcss/oxide-linux-x64-musl@4.1.18': 381 + resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==} 382 + engines: {node: '>= 10'} 383 + cpu: [x64] 384 + os: [linux] 385 + 386 + '@tailwindcss/oxide-wasm32-wasi@4.1.18': 387 + resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==} 388 + engines: {node: '>=14.0.0'} 389 + cpu: [wasm32] 390 + bundledDependencies: 391 + - '@napi-rs/wasm-runtime' 392 + - '@emnapi/core' 393 + - '@emnapi/runtime' 394 + - '@tybys/wasm-util' 395 + - '@emnapi/wasi-threads' 396 + - tslib 397 + 398 + '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': 399 + resolution: {integrity: sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==} 400 + engines: {node: '>= 10'} 401 + cpu: [arm64] 402 + os: [win32] 403 + 404 + '@tailwindcss/oxide-win32-x64-msvc@4.1.18': 405 + resolution: {integrity: sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==} 406 + engines: {node: '>= 10'} 407 + cpu: [x64] 408 + os: [win32] 409 + 410 + '@tailwindcss/oxide@4.1.18': 411 + resolution: {integrity: sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==} 412 + engines: {node: '>= 10'} 413 + 414 + '@tailwindcss/vite@4.1.18': 415 + resolution: {integrity: sha512-jVA+/UpKL1vRLg6Hkao5jldawNmRo7mQYrZtNHMIVpLfLhDml5nMRUo/8MwoX2vNXvnaXNNMedrMfMugAVX1nA==} 416 + peerDependencies: 417 + vite: ^5.2.0 || ^6 || ^7 418 + 419 + '@testing-library/dom@10.4.1': 420 + resolution: {integrity: sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==} 421 + engines: {node: '>=18'} 422 + 423 + '@testing-library/jest-dom@6.9.1': 424 + resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} 425 + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} 426 + 427 + '@testing-library/user-event@14.6.1': 428 + resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==} 429 + engines: {node: '>=12', npm: '>=6'} 430 + peerDependencies: 431 + '@testing-library/dom': '>=7.21.4' 432 + 433 + '@tybys/wasm-util@0.10.1': 434 + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} 435 + 436 + '@types/aria-query@5.0.4': 437 + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} 438 + 439 + '@types/babel__core@7.20.5': 440 + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} 441 + 442 + '@types/babel__generator@7.27.0': 443 + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} 444 + 445 + '@types/babel__template@7.4.4': 446 + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} 447 + 448 + '@types/babel__traverse@7.28.0': 449 + resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} 450 + 451 + '@types/chai@5.2.3': 452 + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} 453 + 454 + '@types/deep-eql@4.0.2': 455 + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} 456 + 457 + '@types/estree@1.0.8': 458 + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} 459 + 460 + '@types/node@24.10.4': 461 + resolution: {integrity: sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==} 462 + 463 + '@vitest/expect@4.0.16': 464 + resolution: {integrity: sha512-eshqULT2It7McaJkQGLkPjPjNph+uevROGuIMJdG3V+0BSR2w9u6J9Lwu+E8cK5TETlfou8GRijhafIMhXsimA==} 465 + 466 + '@vitest/mocker@4.0.16': 467 + resolution: {integrity: sha512-yb6k4AZxJTB+q9ycAvsoxGn+j/po0UaPgajllBgt1PzoMAAmJGYFdDk0uCcRcxb3BrME34I6u8gHZTQlkqSZpg==} 468 + peerDependencies: 469 + msw: ^2.4.9 470 + vite: ^6.0.0 || ^7.0.0-0 471 + peerDependenciesMeta: 472 + msw: 473 + optional: true 474 + vite: 475 + optional: true 476 + 477 + '@vitest/pretty-format@4.0.16': 478 + resolution: {integrity: sha512-eNCYNsSty9xJKi/UdVD8Ou16alu7AYiS2fCPRs0b1OdhJiV89buAXQLpTbe+X8V9L6qrs9CqyvU7OaAopJYPsA==} 479 + 480 + '@vitest/runner@4.0.16': 481 + resolution: {integrity: sha512-VWEDm5Wv9xEo80ctjORcTQRJ539EGPB3Pb9ApvVRAY1U/WkHXmmYISqU5E79uCwcW7xYUV38gwZD+RV755fu3Q==} 482 + 483 + '@vitest/snapshot@4.0.16': 484 + resolution: {integrity: sha512-sf6NcrYhYBsSYefxnry+DR8n3UV4xWZwWxYbCJUt2YdvtqzSPR7VfGrY0zsv090DAbjFZsi7ZaMi1KnSRyK1XA==} 485 + 486 + '@vitest/spy@4.0.16': 487 + resolution: {integrity: sha512-4jIOWjKP0ZUaEmJm00E0cOBLU+5WE0BpeNr3XN6TEF05ltro6NJqHWxXD0kA8/Zc8Nh23AT8WQxwNG+WeROupw==} 488 + 489 + '@vitest/utils@4.0.16': 490 + resolution: {integrity: sha512-h8z9yYhV3e1LEfaQ3zdypIrnAg/9hguReGZoS7Gl0aBG5xgA410zBqECqmaF/+RkTggRsfnzc1XaAHA6bmUufA==} 491 + 492 + agent-base@7.1.4: 493 + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} 494 + engines: {node: '>= 14'} 495 + 496 + ansi-regex@5.0.1: 497 + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 498 + engines: {node: '>=8'} 499 + 500 + ansi-styles@5.2.0: 501 + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 502 + engines: {node: '>=10'} 503 + 504 + aria-query@5.3.0: 505 + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 506 + 507 + aria-query@5.3.2: 508 + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} 509 + engines: {node: '>= 0.4'} 510 + 511 + assertion-error@2.0.1: 512 + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 513 + engines: {node: '>=12'} 514 + 515 + babel-plugin-jsx-dom-expressions@0.40.3: 516 + resolution: {integrity: sha512-5HOwwt0BYiv/zxl7j8Pf2bGL6rDXfV6nUhLs8ygBX+EFJXzBPHM/euj9j/6deMZ6wa52Wb2PBaAV5U/jKwIY1w==} 517 + peerDependencies: 518 + '@babel/core': ^7.20.12 519 + 520 + babel-preset-solid@1.9.10: 521 + resolution: {integrity: sha512-HCelrgua/Y+kqO8RyL04JBWS/cVdrtUv/h45GntgQY+cJl4eBcKkCDV3TdMjtKx1nXwRaR9QXslM/Npm1dxdZQ==} 522 + peerDependencies: 523 + '@babel/core': ^7.0.0 524 + solid-js: ^1.9.10 525 + peerDependenciesMeta: 526 + solid-js: 527 + optional: true 528 + 529 + baseline-browser-mapping@2.9.11: 530 + resolution: {integrity: sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==} 531 + hasBin: true 532 + 533 + bidi-js@1.0.3: 534 + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} 535 + 536 + browserslist@4.28.1: 537 + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} 538 + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 539 + hasBin: true 540 + 541 + caniuse-lite@1.0.30001761: 542 + resolution: {integrity: sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==} 543 + 544 + chai@6.2.2: 545 + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} 546 + engines: {node: '>=18'} 547 + 548 + convert-source-map@2.0.0: 549 + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 550 + 551 + css-tree@3.1.0: 552 + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} 553 + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 554 + 555 + css.escape@1.5.1: 556 + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} 557 + 558 + cssstyle@5.3.5: 559 + resolution: {integrity: sha512-GlsEptulso7Jg0VaOZ8BXQi3AkYM5BOJKEO/rjMidSCq70FkIC5y0eawrCXeYzxgt3OCf4Ls+eoxN+/05vN0Ag==} 560 + engines: {node: '>=20'} 561 + 562 + csstype@3.2.3: 563 + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} 564 + 565 + data-urls@6.0.0: 566 + resolution: {integrity: sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==} 567 + engines: {node: '>=20'} 568 + 569 + debug@4.4.3: 570 + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} 571 + engines: {node: '>=6.0'} 572 + peerDependencies: 573 + supports-color: '*' 574 + peerDependenciesMeta: 575 + supports-color: 576 + optional: true 577 + 578 + decimal.js@10.6.0: 579 + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} 580 + 581 + dequal@2.0.3: 582 + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 583 + engines: {node: '>=6'} 584 + 585 + detect-libc@2.1.2: 586 + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} 587 + engines: {node: '>=8'} 588 + 589 + dom-accessibility-api@0.5.16: 590 + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} 591 + 592 + dom-accessibility-api@0.6.3: 593 + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} 594 + 595 + electron-to-chromium@1.5.267: 596 + resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} 597 + 598 + enhanced-resolve@5.18.4: 599 + resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==} 600 + engines: {node: '>=10.13.0'} 601 + 602 + entities@6.0.1: 603 + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} 604 + engines: {node: '>=0.12'} 605 + 606 + es-module-lexer@1.7.0: 607 + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} 608 + 609 + escalade@3.2.0: 610 + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 611 + engines: {node: '>=6'} 612 + 613 + estree-walker@3.0.3: 614 + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 615 + 616 + expect-type@1.3.0: 617 + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} 618 + engines: {node: '>=12.0.0'} 619 + 620 + fdir@6.5.0: 621 + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} 622 + engines: {node: '>=12.0.0'} 623 + peerDependencies: 624 + picomatch: ^3 || ^4 625 + peerDependenciesMeta: 626 + picomatch: 627 + optional: true 628 + 629 + fsevents@2.3.3: 630 + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 631 + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 632 + os: [darwin] 633 + 634 + gensync@1.0.0-beta.2: 635 + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 636 + engines: {node: '>=6.9.0'} 637 + 638 + graceful-fs@4.2.11: 639 + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 640 + 641 + html-encoding-sniffer@6.0.0: 642 + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} 643 + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} 644 + 645 + html-entities@2.3.3: 646 + resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} 647 + 648 + http-proxy-agent@7.0.2: 649 + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} 650 + engines: {node: '>= 14'} 651 + 652 + https-proxy-agent@7.0.6: 653 + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} 654 + engines: {node: '>= 14'} 655 + 656 + indent-string@4.0.0: 657 + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} 658 + engines: {node: '>=8'} 659 + 660 + is-potential-custom-element-name@1.0.1: 661 + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} 662 + 663 + is-what@4.1.16: 664 + resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} 665 + engines: {node: '>=12.13'} 666 + 667 + jiti@2.6.1: 668 + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} 669 + hasBin: true 670 + 671 + js-tokens@4.0.0: 672 + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 673 + 674 + jsdom@27.4.0: 675 + resolution: {integrity: sha512-mjzqwWRD9Y1J1KUi7W97Gja1bwOOM5Ug0EZ6UDK3xS7j7mndrkwozHtSblfomlzyB4NepioNt+B2sOSzczVgtQ==} 676 + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} 677 + peerDependencies: 678 + canvas: ^3.0.0 679 + peerDependenciesMeta: 680 + canvas: 681 + optional: true 682 + 683 + jsesc@3.1.0: 684 + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} 685 + engines: {node: '>=6'} 686 + hasBin: true 687 + 688 + json5@2.2.3: 689 + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 690 + engines: {node: '>=6'} 691 + hasBin: true 692 + 693 + lightningcss-android-arm64@1.30.2: 694 + resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==} 695 + engines: {node: '>= 12.0.0'} 696 + cpu: [arm64] 697 + os: [android] 698 + 699 + lightningcss-darwin-arm64@1.30.2: 700 + resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==} 701 + engines: {node: '>= 12.0.0'} 702 + cpu: [arm64] 703 + os: [darwin] 704 + 705 + lightningcss-darwin-x64@1.30.2: 706 + resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==} 707 + engines: {node: '>= 12.0.0'} 708 + cpu: [x64] 709 + os: [darwin] 710 + 711 + lightningcss-freebsd-x64@1.30.2: 712 + resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==} 713 + engines: {node: '>= 12.0.0'} 714 + cpu: [x64] 715 + os: [freebsd] 716 + 717 + lightningcss-linux-arm-gnueabihf@1.30.2: 718 + resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==} 719 + engines: {node: '>= 12.0.0'} 720 + cpu: [arm] 721 + os: [linux] 722 + 723 + lightningcss-linux-arm64-gnu@1.30.2: 724 + resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==} 725 + engines: {node: '>= 12.0.0'} 726 + cpu: [arm64] 727 + os: [linux] 728 + 729 + lightningcss-linux-arm64-musl@1.30.2: 730 + resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==} 731 + engines: {node: '>= 12.0.0'} 732 + cpu: [arm64] 733 + os: [linux] 734 + 735 + lightningcss-linux-x64-gnu@1.30.2: 736 + resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==} 737 + engines: {node: '>= 12.0.0'} 738 + cpu: [x64] 739 + os: [linux] 740 + 741 + lightningcss-linux-x64-musl@1.30.2: 742 + resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==} 743 + engines: {node: '>= 12.0.0'} 744 + cpu: [x64] 745 + os: [linux] 746 + 747 + lightningcss-win32-arm64-msvc@1.30.2: 748 + resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==} 749 + engines: {node: '>= 12.0.0'} 750 + cpu: [arm64] 751 + os: [win32] 752 + 753 + lightningcss-win32-x64-msvc@1.30.2: 754 + resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==} 755 + engines: {node: '>= 12.0.0'} 756 + cpu: [x64] 757 + os: [win32] 758 + 759 + lightningcss@1.30.2: 760 + resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==} 761 + engines: {node: '>= 12.0.0'} 762 + 763 + lru-cache@11.2.4: 764 + resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} 765 + engines: {node: 20 || >=22} 766 + 767 + lru-cache@5.1.1: 768 + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 769 + 770 + lz-string@1.5.0: 771 + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} 772 + hasBin: true 773 + 774 + magic-string@0.30.21: 775 + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} 776 + 777 + mdn-data@2.12.2: 778 + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} 779 + 780 + merge-anything@5.1.7: 781 + resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==} 782 + engines: {node: '>=12.13'} 783 + 784 + min-indent@1.0.1: 785 + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 786 + engines: {node: '>=4'} 787 + 788 + ms@2.1.3: 789 + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 790 + 791 + nanoid@3.3.11: 792 + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} 793 + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 794 + hasBin: true 795 + 796 + node-releases@2.0.27: 797 + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} 798 + 799 + obug@2.1.1: 800 + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} 801 + 802 + parse5@7.3.0: 803 + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} 804 + 805 + parse5@8.0.0: 806 + resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==} 807 + 808 + pathe@2.0.3: 809 + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} 810 + 811 + picocolors@1.1.1: 812 + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 813 + 814 + picomatch@4.0.3: 815 + resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} 816 + engines: {node: '>=12'} 817 + 818 + postcss@8.5.6: 819 + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} 820 + engines: {node: ^10 || ^12 || >=14} 821 + 822 + pretty-format@27.5.1: 823 + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} 824 + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} 825 + 826 + punycode@2.3.1: 827 + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 828 + engines: {node: '>=6'} 829 + 830 + react-is@17.0.2: 831 + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} 832 + 833 + redent@3.0.0: 834 + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} 835 + engines: {node: '>=8'} 836 + 837 + require-from-string@2.0.2: 838 + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} 839 + engines: {node: '>=0.10.0'} 840 + 841 + rolldown-vite@7.2.5: 842 + resolution: {integrity: sha512-u09tdk/huMiN8xwoiBbig197jKdCamQTtOruSalOzbqGje3jdHiV0njQlAW0YvzoahkirFePNQ4RYlfnRQpXZA==} 843 + engines: {node: ^20.19.0 || >=22.12.0} 844 + hasBin: true 845 + peerDependencies: 846 + '@types/node': ^20.19.0 || >=22.12.0 847 + esbuild: ^0.25.0 848 + jiti: '>=1.21.0' 849 + less: ^4.0.0 850 + sass: ^1.70.0 851 + sass-embedded: ^1.70.0 852 + stylus: '>=0.54.8' 853 + sugarss: ^5.0.0 854 + terser: ^5.16.0 855 + tsx: ^4.8.1 856 + yaml: ^2.4.2 857 + peerDependenciesMeta: 858 + '@types/node': 859 + optional: true 860 + esbuild: 861 + optional: true 862 + jiti: 863 + optional: true 864 + less: 865 + optional: true 866 + sass: 867 + optional: true 868 + sass-embedded: 869 + optional: true 870 + stylus: 871 + optional: true 872 + sugarss: 873 + optional: true 874 + terser: 875 + optional: true 876 + tsx: 877 + optional: true 878 + yaml: 879 + optional: true 880 + 881 + rolldown@1.0.0-beta.50: 882 + resolution: {integrity: sha512-JFULvCNl/anKn99eKjOSEubi0lLmNqQDAjyEMME2T4CwezUDL0i6t1O9xZsu2OMehPnV2caNefWpGF+8TnzB6A==} 883 + engines: {node: ^20.19.0 || >=22.12.0} 884 + hasBin: true 885 + 886 + saxes@6.0.0: 887 + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} 888 + engines: {node: '>=v12.22.7'} 889 + 890 + semver@6.3.1: 891 + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 892 + hasBin: true 893 + 894 + seroval-plugins@1.3.3: 895 + resolution: {integrity: sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w==} 896 + engines: {node: '>=10'} 897 + peerDependencies: 898 + seroval: ^1.0 899 + 900 + seroval@1.3.2: 901 + resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==} 902 + engines: {node: '>=10'} 903 + 904 + siginfo@2.0.0: 905 + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 906 + 907 + solid-js@1.9.10: 908 + resolution: {integrity: sha512-Coz956cos/EPDlhs6+jsdTxKuJDPT7B5SVIWgABwROyxjY7Xbr8wkzD68Et+NxnV7DLJ3nJdAC2r9InuV/4Jew==} 909 + 910 + solid-refresh@0.6.3: 911 + resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==} 912 + peerDependencies: 913 + solid-js: ^1.3 914 + 915 + source-map-js@1.2.1: 916 + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 917 + engines: {node: '>=0.10.0'} 918 + 919 + stackback@0.0.2: 920 + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 921 + 922 + std-env@3.10.0: 923 + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} 924 + 925 + strip-indent@3.0.0: 926 + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 927 + engines: {node: '>=8'} 928 + 929 + symbol-tree@3.2.4: 930 + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} 931 + 932 + tailwindcss@4.1.18: 933 + resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==} 934 + 935 + tapable@2.3.0: 936 + resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} 937 + engines: {node: '>=6'} 938 + 939 + tinybench@2.9.0: 940 + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} 941 + 942 + tinyexec@1.0.2: 943 + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} 944 + engines: {node: '>=18'} 945 + 946 + tinyglobby@0.2.15: 947 + resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} 948 + engines: {node: '>=12.0.0'} 949 + 950 + tinyrainbow@3.0.3: 951 + resolution: {integrity: sha512-PSkbLUoxOFRzJYjjxHJt9xro7D+iilgMX/C9lawzVuYiIdcihh9DXmVibBe8lmcFrRi/VzlPjBxbN7rH24q8/Q==} 952 + engines: {node: '>=14.0.0'} 953 + 954 + tldts-core@7.0.19: 955 + resolution: {integrity: sha512-lJX2dEWx0SGH4O6p+7FPwYmJ/bu1JbcGJ8RLaG9b7liIgZ85itUVEPbMtWRVrde/0fnDPEPHW10ZsKW3kVsE9A==} 956 + 957 + tldts@7.0.19: 958 + resolution: {integrity: sha512-8PWx8tvC4jDB39BQw1m4x8y5MH1BcQ5xHeL2n7UVFulMPH/3Q0uiamahFJ3lXA0zO2SUyRXuVVbWSDmstlt9YA==} 959 + hasBin: true 960 + 961 + tough-cookie@6.0.0: 962 + resolution: {integrity: sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==} 963 + engines: {node: '>=16'} 964 + 965 + tr46@6.0.0: 966 + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} 967 + engines: {node: '>=20'} 968 + 969 + tslib@2.8.1: 970 + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 971 + 972 + typescript@5.9.3: 973 + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} 974 + engines: {node: '>=14.17'} 975 + hasBin: true 976 + 977 + undici-types@7.16.0: 978 + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} 979 + 980 + update-browserslist-db@1.2.3: 981 + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} 982 + hasBin: true 983 + peerDependencies: 984 + browserslist: '>= 4.21.0' 985 + 986 + vite-plugin-solid@2.11.10: 987 + resolution: {integrity: sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw==} 988 + peerDependencies: 989 + '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.* 990 + solid-js: ^1.7.2 991 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 992 + peerDependenciesMeta: 993 + '@testing-library/jest-dom': 994 + optional: true 995 + 996 + vitefu@1.1.1: 997 + resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==} 998 + peerDependencies: 999 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 1000 + peerDependenciesMeta: 1001 + vite: 1002 + optional: true 1003 + 1004 + vitest@4.0.16: 1005 + resolution: {integrity: sha512-E4t7DJ9pESL6E3I8nFjPa4xGUd3PmiWDLsDztS2qXSJWfHtbQnwAWylaBvSNY48I3vr8PTqIZlyK8TE3V3CA4Q==} 1006 + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} 1007 + hasBin: true 1008 + peerDependencies: 1009 + '@edge-runtime/vm': '*' 1010 + '@opentelemetry/api': ^1.9.0 1011 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 1012 + '@vitest/browser-playwright': 4.0.16 1013 + '@vitest/browser-preview': 4.0.16 1014 + '@vitest/browser-webdriverio': 4.0.16 1015 + '@vitest/ui': 4.0.16 1016 + happy-dom: '*' 1017 + jsdom: '*' 1018 + peerDependenciesMeta: 1019 + '@edge-runtime/vm': 1020 + optional: true 1021 + '@opentelemetry/api': 1022 + optional: true 1023 + '@types/node': 1024 + optional: true 1025 + '@vitest/browser-playwright': 1026 + optional: true 1027 + '@vitest/browser-preview': 1028 + optional: true 1029 + '@vitest/browser-webdriverio': 1030 + optional: true 1031 + '@vitest/ui': 1032 + optional: true 1033 + happy-dom: 1034 + optional: true 1035 + jsdom: 1036 + optional: true 1037 + 1038 + w3c-xmlserializer@5.0.0: 1039 + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} 1040 + engines: {node: '>=18'} 1041 + 1042 + webidl-conversions@8.0.0: 1043 + resolution: {integrity: sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==} 1044 + engines: {node: '>=20'} 1045 + 1046 + whatwg-mimetype@4.0.0: 1047 + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} 1048 + engines: {node: '>=18'} 1049 + 1050 + whatwg-url@15.1.0: 1051 + resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==} 1052 + engines: {node: '>=20'} 1053 + 1054 + why-is-node-running@2.3.0: 1055 + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 1056 + engines: {node: '>=8'} 1057 + hasBin: true 1058 + 1059 + ws@8.18.3: 1060 + resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} 1061 + engines: {node: '>=10.0.0'} 1062 + peerDependencies: 1063 + bufferutil: ^4.0.1 1064 + utf-8-validate: '>=5.0.2' 1065 + peerDependenciesMeta: 1066 + bufferutil: 1067 + optional: true 1068 + utf-8-validate: 1069 + optional: true 1070 + 1071 + xml-name-validator@5.0.0: 1072 + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} 1073 + engines: {node: '>=18'} 1074 + 1075 + xmlchars@2.2.0: 1076 + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} 1077 + 1078 + yallist@3.1.1: 1079 + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 1080 + 1081 + snapshots: 1082 + 1083 + '@acemir/cssom@0.9.30': {} 1084 + 1085 + '@adobe/css-tools@4.4.4': {} 1086 + 1087 + '@asamuzakjp/css-color@4.1.1': 1088 + dependencies: 1089 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) 1090 + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) 1091 + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) 1092 + '@csstools/css-tokenizer': 3.0.4 1093 + lru-cache: 11.2.4 1094 + 1095 + '@asamuzakjp/dom-selector@6.7.6': 1096 + dependencies: 1097 + '@asamuzakjp/nwsapi': 2.3.9 1098 + bidi-js: 1.0.3 1099 + css-tree: 3.1.0 1100 + is-potential-custom-element-name: 1.0.1 1101 + lru-cache: 11.2.4 1102 + 1103 + '@asamuzakjp/nwsapi@2.3.9': {} 1104 + 1105 + '@babel/code-frame@7.27.1': 1106 + dependencies: 1107 + '@babel/helper-validator-identifier': 7.28.5 1108 + js-tokens: 4.0.0 1109 + picocolors: 1.1.1 1110 + 1111 + '@babel/compat-data@7.28.5': {} 1112 + 1113 + '@babel/core@7.28.5': 1114 + dependencies: 1115 + '@babel/code-frame': 7.27.1 1116 + '@babel/generator': 7.28.5 1117 + '@babel/helper-compilation-targets': 7.27.2 1118 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) 1119 + '@babel/helpers': 7.28.4 1120 + '@babel/parser': 7.28.5 1121 + '@babel/template': 7.27.2 1122 + '@babel/traverse': 7.28.5 1123 + '@babel/types': 7.28.5 1124 + '@jridgewell/remapping': 2.3.5 1125 + convert-source-map: 2.0.0 1126 + debug: 4.4.3 1127 + gensync: 1.0.0-beta.2 1128 + json5: 2.2.3 1129 + semver: 6.3.1 1130 + transitivePeerDependencies: 1131 + - supports-color 1132 + 1133 + '@babel/generator@7.28.5': 1134 + dependencies: 1135 + '@babel/parser': 7.28.5 1136 + '@babel/types': 7.28.5 1137 + '@jridgewell/gen-mapping': 0.3.13 1138 + '@jridgewell/trace-mapping': 0.3.31 1139 + jsesc: 3.1.0 1140 + 1141 + '@babel/helper-compilation-targets@7.27.2': 1142 + dependencies: 1143 + '@babel/compat-data': 7.28.5 1144 + '@babel/helper-validator-option': 7.27.1 1145 + browserslist: 4.28.1 1146 + lru-cache: 5.1.1 1147 + semver: 6.3.1 1148 + 1149 + '@babel/helper-globals@7.28.0': {} 1150 + 1151 + '@babel/helper-module-imports@7.18.6': 1152 + dependencies: 1153 + '@babel/types': 7.28.5 1154 + 1155 + '@babel/helper-module-imports@7.27.1': 1156 + dependencies: 1157 + '@babel/traverse': 7.28.5 1158 + '@babel/types': 7.28.5 1159 + transitivePeerDependencies: 1160 + - supports-color 1161 + 1162 + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': 1163 + dependencies: 1164 + '@babel/core': 7.28.5 1165 + '@babel/helper-module-imports': 7.27.1 1166 + '@babel/helper-validator-identifier': 7.28.5 1167 + '@babel/traverse': 7.28.5 1168 + transitivePeerDependencies: 1169 + - supports-color 1170 + 1171 + '@babel/helper-plugin-utils@7.27.1': {} 1172 + 1173 + '@babel/helper-string-parser@7.27.1': {} 1174 + 1175 + '@babel/helper-validator-identifier@7.28.5': {} 1176 + 1177 + '@babel/helper-validator-option@7.27.1': {} 1178 + 1179 + '@babel/helpers@7.28.4': 1180 + dependencies: 1181 + '@babel/template': 7.27.2 1182 + '@babel/types': 7.28.5 1183 + 1184 + '@babel/parser@7.28.5': 1185 + dependencies: 1186 + '@babel/types': 7.28.5 1187 + 1188 + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)': 1189 + dependencies: 1190 + '@babel/core': 7.28.5 1191 + '@babel/helper-plugin-utils': 7.27.1 1192 + 1193 + '@babel/runtime@7.28.4': {} 1194 + 1195 + '@babel/template@7.27.2': 1196 + dependencies: 1197 + '@babel/code-frame': 7.27.1 1198 + '@babel/parser': 7.28.5 1199 + '@babel/types': 7.28.5 1200 + 1201 + '@babel/traverse@7.28.5': 1202 + dependencies: 1203 + '@babel/code-frame': 7.27.1 1204 + '@babel/generator': 7.28.5 1205 + '@babel/helper-globals': 7.28.0 1206 + '@babel/parser': 7.28.5 1207 + '@babel/template': 7.27.2 1208 + '@babel/types': 7.28.5 1209 + debug: 4.4.3 1210 + transitivePeerDependencies: 1211 + - supports-color 1212 + 1213 + '@babel/types@7.28.5': 1214 + dependencies: 1215 + '@babel/helper-string-parser': 7.27.1 1216 + '@babel/helper-validator-identifier': 7.28.5 1217 + 1218 + '@csstools/color-helpers@5.1.0': {} 1219 + 1220 + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': 1221 + dependencies: 1222 + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) 1223 + '@csstools/css-tokenizer': 3.0.4 1224 + 1225 + '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': 1226 + dependencies: 1227 + '@csstools/color-helpers': 5.1.0 1228 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) 1229 + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) 1230 + '@csstools/css-tokenizer': 3.0.4 1231 + 1232 + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': 1233 + dependencies: 1234 + '@csstools/css-tokenizer': 3.0.4 1235 + 1236 + '@csstools/css-syntax-patches-for-csstree@1.0.22': {} 1237 + 1238 + '@csstools/css-tokenizer@3.0.4': {} 1239 + 1240 + '@emnapi/core@1.7.1': 1241 + dependencies: 1242 + '@emnapi/wasi-threads': 1.1.0 1243 + tslib: 2.8.1 1244 + optional: true 1245 + 1246 + '@emnapi/runtime@1.7.1': 1247 + dependencies: 1248 + tslib: 2.8.1 1249 + optional: true 1250 + 1251 + '@emnapi/wasi-threads@1.1.0': 1252 + dependencies: 1253 + tslib: 2.8.1 1254 + optional: true 1255 + 1256 + '@exodus/bytes@1.6.0': {} 1257 + 1258 + '@jridgewell/gen-mapping@0.3.13': 1259 + dependencies: 1260 + '@jridgewell/sourcemap-codec': 1.5.5 1261 + '@jridgewell/trace-mapping': 0.3.31 1262 + 1263 + '@jridgewell/remapping@2.3.5': 1264 + dependencies: 1265 + '@jridgewell/gen-mapping': 0.3.13 1266 + '@jridgewell/trace-mapping': 0.3.31 1267 + 1268 + '@jridgewell/resolve-uri@3.1.2': {} 1269 + 1270 + '@jridgewell/sourcemap-codec@1.5.5': {} 1271 + 1272 + '@jridgewell/trace-mapping@0.3.31': 1273 + dependencies: 1274 + '@jridgewell/resolve-uri': 3.1.2 1275 + '@jridgewell/sourcemap-codec': 1.5.5 1276 + 1277 + '@napi-rs/wasm-runtime@1.1.0': 1278 + dependencies: 1279 + '@emnapi/core': 1.7.1 1280 + '@emnapi/runtime': 1.7.1 1281 + '@tybys/wasm-util': 0.10.1 1282 + optional: true 1283 + 1284 + '@oxc-project/runtime@0.97.0': {} 1285 + 1286 + '@oxc-project/types@0.97.0': {} 1287 + 1288 + '@rolldown/binding-android-arm64@1.0.0-beta.50': 1289 + optional: true 1290 + 1291 + '@rolldown/binding-darwin-arm64@1.0.0-beta.50': 1292 + optional: true 1293 + 1294 + '@rolldown/binding-darwin-x64@1.0.0-beta.50': 1295 + optional: true 1296 + 1297 + '@rolldown/binding-freebsd-x64@1.0.0-beta.50': 1298 + optional: true 1299 + 1300 + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.50': 1301 + optional: true 1302 + 1303 + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.50': 1304 + optional: true 1305 + 1306 + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.50': 1307 + optional: true 1308 + 1309 + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.50': 1310 + optional: true 1311 + 1312 + '@rolldown/binding-linux-x64-musl@1.0.0-beta.50': 1313 + optional: true 1314 + 1315 + '@rolldown/binding-openharmony-arm64@1.0.0-beta.50': 1316 + optional: true 1317 + 1318 + '@rolldown/binding-wasm32-wasi@1.0.0-beta.50': 1319 + dependencies: 1320 + '@napi-rs/wasm-runtime': 1.1.0 1321 + optional: true 1322 + 1323 + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.50': 1324 + optional: true 1325 + 1326 + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.50': 1327 + optional: true 1328 + 1329 + '@rolldown/binding-win32-x64-msvc@1.0.0-beta.50': 1330 + optional: true 1331 + 1332 + '@rolldown/pluginutils@1.0.0-beta.50': {} 1333 + 1334 + '@solidjs/testing-library@0.8.10(solid-js@1.9.10)': 1335 + dependencies: 1336 + '@testing-library/dom': 10.4.1 1337 + solid-js: 1.9.10 1338 + 1339 + '@standard-schema/spec@1.1.0': {} 1340 + 1341 + '@tailwindcss/node@4.1.18': 1342 + dependencies: 1343 + '@jridgewell/remapping': 2.3.5 1344 + enhanced-resolve: 5.18.4 1345 + jiti: 2.6.1 1346 + lightningcss: 1.30.2 1347 + magic-string: 0.30.21 1348 + source-map-js: 1.2.1 1349 + tailwindcss: 4.1.18 1350 + 1351 + '@tailwindcss/oxide-android-arm64@4.1.18': 1352 + optional: true 1353 + 1354 + '@tailwindcss/oxide-darwin-arm64@4.1.18': 1355 + optional: true 1356 + 1357 + '@tailwindcss/oxide-darwin-x64@4.1.18': 1358 + optional: true 1359 + 1360 + '@tailwindcss/oxide-freebsd-x64@4.1.18': 1361 + optional: true 1362 + 1363 + '@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18': 1364 + optional: true 1365 + 1366 + '@tailwindcss/oxide-linux-arm64-gnu@4.1.18': 1367 + optional: true 1368 + 1369 + '@tailwindcss/oxide-linux-arm64-musl@4.1.18': 1370 + optional: true 1371 + 1372 + '@tailwindcss/oxide-linux-x64-gnu@4.1.18': 1373 + optional: true 1374 + 1375 + '@tailwindcss/oxide-linux-x64-musl@4.1.18': 1376 + optional: true 1377 + 1378 + '@tailwindcss/oxide-wasm32-wasi@4.1.18': 1379 + optional: true 1380 + 1381 + '@tailwindcss/oxide-win32-arm64-msvc@4.1.18': 1382 + optional: true 1383 + 1384 + '@tailwindcss/oxide-win32-x64-msvc@4.1.18': 1385 + optional: true 1386 + 1387 + '@tailwindcss/oxide@4.1.18': 1388 + optionalDependencies: 1389 + '@tailwindcss/oxide-android-arm64': 4.1.18 1390 + '@tailwindcss/oxide-darwin-arm64': 4.1.18 1391 + '@tailwindcss/oxide-darwin-x64': 4.1.18 1392 + '@tailwindcss/oxide-freebsd-x64': 4.1.18 1393 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.18 1394 + '@tailwindcss/oxide-linux-arm64-gnu': 4.1.18 1395 + '@tailwindcss/oxide-linux-arm64-musl': 4.1.18 1396 + '@tailwindcss/oxide-linux-x64-gnu': 4.1.18 1397 + '@tailwindcss/oxide-linux-x64-musl': 4.1.18 1398 + '@tailwindcss/oxide-wasm32-wasi': 4.1.18 1399 + '@tailwindcss/oxide-win32-arm64-msvc': 4.1.18 1400 + '@tailwindcss/oxide-win32-x64-msvc': 4.1.18 1401 + 1402 + '@tailwindcss/vite@4.1.18(rolldown-vite@7.2.5(@types/node@24.10.4)(jiti@2.6.1))': 1403 + dependencies: 1404 + '@tailwindcss/node': 4.1.18 1405 + '@tailwindcss/oxide': 4.1.18 1406 + tailwindcss: 4.1.18 1407 + vite: rolldown-vite@7.2.5(@types/node@24.10.4)(jiti@2.6.1) 1408 + 1409 + '@testing-library/dom@10.4.1': 1410 + dependencies: 1411 + '@babel/code-frame': 7.27.1 1412 + '@babel/runtime': 7.28.4 1413 + '@types/aria-query': 5.0.4 1414 + aria-query: 5.3.0 1415 + dom-accessibility-api: 0.5.16 1416 + lz-string: 1.5.0 1417 + picocolors: 1.1.1 1418 + pretty-format: 27.5.1 1419 + 1420 + '@testing-library/jest-dom@6.9.1': 1421 + dependencies: 1422 + '@adobe/css-tools': 4.4.4 1423 + aria-query: 5.3.2 1424 + css.escape: 1.5.1 1425 + dom-accessibility-api: 0.6.3 1426 + picocolors: 1.1.1 1427 + redent: 3.0.0 1428 + 1429 + '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)': 1430 + dependencies: 1431 + '@testing-library/dom': 10.4.1 1432 + 1433 + '@tybys/wasm-util@0.10.1': 1434 + dependencies: 1435 + tslib: 2.8.1 1436 + optional: true 1437 + 1438 + '@types/aria-query@5.0.4': {} 1439 + 1440 + '@types/babel__core@7.20.5': 1441 + dependencies: 1442 + '@babel/parser': 7.28.5 1443 + '@babel/types': 7.28.5 1444 + '@types/babel__generator': 7.27.0 1445 + '@types/babel__template': 7.4.4 1446 + '@types/babel__traverse': 7.28.0 1447 + 1448 + '@types/babel__generator@7.27.0': 1449 + dependencies: 1450 + '@babel/types': 7.28.5 1451 + 1452 + '@types/babel__template@7.4.4': 1453 + dependencies: 1454 + '@babel/parser': 7.28.5 1455 + '@babel/types': 7.28.5 1456 + 1457 + '@types/babel__traverse@7.28.0': 1458 + dependencies: 1459 + '@babel/types': 7.28.5 1460 + 1461 + '@types/chai@5.2.3': 1462 + dependencies: 1463 + '@types/deep-eql': 4.0.2 1464 + assertion-error: 2.0.1 1465 + 1466 + '@types/deep-eql@4.0.2': {} 1467 + 1468 + '@types/estree@1.0.8': {} 1469 + 1470 + '@types/node@24.10.4': 1471 + dependencies: 1472 + undici-types: 7.16.0 1473 + 1474 + '@vitest/expect@4.0.16': 1475 + dependencies: 1476 + '@standard-schema/spec': 1.1.0 1477 + '@types/chai': 5.2.3 1478 + '@vitest/spy': 4.0.16 1479 + '@vitest/utils': 4.0.16 1480 + chai: 6.2.2 1481 + tinyrainbow: 3.0.3 1482 + 1483 + '@vitest/mocker@4.0.16(rolldown-vite@7.2.5(@types/node@24.10.4)(jiti@2.6.1))': 1484 + dependencies: 1485 + '@vitest/spy': 4.0.16 1486 + estree-walker: 3.0.3 1487 + magic-string: 0.30.21 1488 + optionalDependencies: 1489 + vite: rolldown-vite@7.2.5(@types/node@24.10.4)(jiti@2.6.1) 1490 + 1491 + '@vitest/pretty-format@4.0.16': 1492 + dependencies: 1493 + tinyrainbow: 3.0.3 1494 + 1495 + '@vitest/runner@4.0.16': 1496 + dependencies: 1497 + '@vitest/utils': 4.0.16 1498 + pathe: 2.0.3 1499 + 1500 + '@vitest/snapshot@4.0.16': 1501 + dependencies: 1502 + '@vitest/pretty-format': 4.0.16 1503 + magic-string: 0.30.21 1504 + pathe: 2.0.3 1505 + 1506 + '@vitest/spy@4.0.16': {} 1507 + 1508 + '@vitest/utils@4.0.16': 1509 + dependencies: 1510 + '@vitest/pretty-format': 4.0.16 1511 + tinyrainbow: 3.0.3 1512 + 1513 + agent-base@7.1.4: {} 1514 + 1515 + ansi-regex@5.0.1: {} 1516 + 1517 + ansi-styles@5.2.0: {} 1518 + 1519 + aria-query@5.3.0: 1520 + dependencies: 1521 + dequal: 2.0.3 1522 + 1523 + aria-query@5.3.2: {} 1524 + 1525 + assertion-error@2.0.1: {} 1526 + 1527 + babel-plugin-jsx-dom-expressions@0.40.3(@babel/core@7.28.5): 1528 + dependencies: 1529 + '@babel/core': 7.28.5 1530 + '@babel/helper-module-imports': 7.18.6 1531 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) 1532 + '@babel/types': 7.28.5 1533 + html-entities: 2.3.3 1534 + parse5: 7.3.0 1535 + 1536 + babel-preset-solid@1.9.10(@babel/core@7.28.5)(solid-js@1.9.10): 1537 + dependencies: 1538 + '@babel/core': 7.28.5 1539 + babel-plugin-jsx-dom-expressions: 0.40.3(@babel/core@7.28.5) 1540 + optionalDependencies: 1541 + solid-js: 1.9.10 1542 + 1543 + baseline-browser-mapping@2.9.11: {} 1544 + 1545 + bidi-js@1.0.3: 1546 + dependencies: 1547 + require-from-string: 2.0.2 1548 + 1549 + browserslist@4.28.1: 1550 + dependencies: 1551 + baseline-browser-mapping: 2.9.11 1552 + caniuse-lite: 1.0.30001761 1553 + electron-to-chromium: 1.5.267 1554 + node-releases: 2.0.27 1555 + update-browserslist-db: 1.2.3(browserslist@4.28.1) 1556 + 1557 + caniuse-lite@1.0.30001761: {} 1558 + 1559 + chai@6.2.2: {} 1560 + 1561 + convert-source-map@2.0.0: {} 1562 + 1563 + css-tree@3.1.0: 1564 + dependencies: 1565 + mdn-data: 2.12.2 1566 + source-map-js: 1.2.1 1567 + 1568 + css.escape@1.5.1: {} 1569 + 1570 + cssstyle@5.3.5: 1571 + dependencies: 1572 + '@asamuzakjp/css-color': 4.1.1 1573 + '@csstools/css-syntax-patches-for-csstree': 1.0.22 1574 + css-tree: 3.1.0 1575 + 1576 + csstype@3.2.3: {} 1577 + 1578 + data-urls@6.0.0: 1579 + dependencies: 1580 + whatwg-mimetype: 4.0.0 1581 + whatwg-url: 15.1.0 1582 + 1583 + debug@4.4.3: 1584 + dependencies: 1585 + ms: 2.1.3 1586 + 1587 + decimal.js@10.6.0: {} 1588 + 1589 + dequal@2.0.3: {} 1590 + 1591 + detect-libc@2.1.2: {} 1592 + 1593 + dom-accessibility-api@0.5.16: {} 1594 + 1595 + dom-accessibility-api@0.6.3: {} 1596 + 1597 + electron-to-chromium@1.5.267: {} 1598 + 1599 + enhanced-resolve@5.18.4: 1600 + dependencies: 1601 + graceful-fs: 4.2.11 1602 + tapable: 2.3.0 1603 + 1604 + entities@6.0.1: {} 1605 + 1606 + es-module-lexer@1.7.0: {} 1607 + 1608 + escalade@3.2.0: {} 1609 + 1610 + estree-walker@3.0.3: 1611 + dependencies: 1612 + '@types/estree': 1.0.8 1613 + 1614 + expect-type@1.3.0: {} 1615 + 1616 + fdir@6.5.0(picomatch@4.0.3): 1617 + optionalDependencies: 1618 + picomatch: 4.0.3 1619 + 1620 + fsevents@2.3.3: 1621 + optional: true 1622 + 1623 + gensync@1.0.0-beta.2: {} 1624 + 1625 + graceful-fs@4.2.11: {} 1626 + 1627 + html-encoding-sniffer@6.0.0: 1628 + dependencies: 1629 + '@exodus/bytes': 1.6.0 1630 + transitivePeerDependencies: 1631 + - '@exodus/crypto' 1632 + 1633 + html-entities@2.3.3: {} 1634 + 1635 + http-proxy-agent@7.0.2: 1636 + dependencies: 1637 + agent-base: 7.1.4 1638 + debug: 4.4.3 1639 + transitivePeerDependencies: 1640 + - supports-color 1641 + 1642 + https-proxy-agent@7.0.6: 1643 + dependencies: 1644 + agent-base: 7.1.4 1645 + debug: 4.4.3 1646 + transitivePeerDependencies: 1647 + - supports-color 1648 + 1649 + indent-string@4.0.0: {} 1650 + 1651 + is-potential-custom-element-name@1.0.1: {} 1652 + 1653 + is-what@4.1.16: {} 1654 + 1655 + jiti@2.6.1: {} 1656 + 1657 + js-tokens@4.0.0: {} 1658 + 1659 + jsdom@27.4.0: 1660 + dependencies: 1661 + '@acemir/cssom': 0.9.30 1662 + '@asamuzakjp/dom-selector': 6.7.6 1663 + '@exodus/bytes': 1.6.0 1664 + cssstyle: 5.3.5 1665 + data-urls: 6.0.0 1666 + decimal.js: 10.6.0 1667 + html-encoding-sniffer: 6.0.0 1668 + http-proxy-agent: 7.0.2 1669 + https-proxy-agent: 7.0.6 1670 + is-potential-custom-element-name: 1.0.1 1671 + parse5: 8.0.0 1672 + saxes: 6.0.0 1673 + symbol-tree: 3.2.4 1674 + tough-cookie: 6.0.0 1675 + w3c-xmlserializer: 5.0.0 1676 + webidl-conversions: 8.0.0 1677 + whatwg-mimetype: 4.0.0 1678 + whatwg-url: 15.1.0 1679 + ws: 8.18.3 1680 + xml-name-validator: 5.0.0 1681 + transitivePeerDependencies: 1682 + - '@exodus/crypto' 1683 + - bufferutil 1684 + - supports-color 1685 + - utf-8-validate 1686 + 1687 + jsesc@3.1.0: {} 1688 + 1689 + json5@2.2.3: {} 1690 + 1691 + lightningcss-android-arm64@1.30.2: 1692 + optional: true 1693 + 1694 + lightningcss-darwin-arm64@1.30.2: 1695 + optional: true 1696 + 1697 + lightningcss-darwin-x64@1.30.2: 1698 + optional: true 1699 + 1700 + lightningcss-freebsd-x64@1.30.2: 1701 + optional: true 1702 + 1703 + lightningcss-linux-arm-gnueabihf@1.30.2: 1704 + optional: true 1705 + 1706 + lightningcss-linux-arm64-gnu@1.30.2: 1707 + optional: true 1708 + 1709 + lightningcss-linux-arm64-musl@1.30.2: 1710 + optional: true 1711 + 1712 + lightningcss-linux-x64-gnu@1.30.2: 1713 + optional: true 1714 + 1715 + lightningcss-linux-x64-musl@1.30.2: 1716 + optional: true 1717 + 1718 + lightningcss-win32-arm64-msvc@1.30.2: 1719 + optional: true 1720 + 1721 + lightningcss-win32-x64-msvc@1.30.2: 1722 + optional: true 1723 + 1724 + lightningcss@1.30.2: 1725 + dependencies: 1726 + detect-libc: 2.1.2 1727 + optionalDependencies: 1728 + lightningcss-android-arm64: 1.30.2 1729 + lightningcss-darwin-arm64: 1.30.2 1730 + lightningcss-darwin-x64: 1.30.2 1731 + lightningcss-freebsd-x64: 1.30.2 1732 + lightningcss-linux-arm-gnueabihf: 1.30.2 1733 + lightningcss-linux-arm64-gnu: 1.30.2 1734 + lightningcss-linux-arm64-musl: 1.30.2 1735 + lightningcss-linux-x64-gnu: 1.30.2 1736 + lightningcss-linux-x64-musl: 1.30.2 1737 + lightningcss-win32-arm64-msvc: 1.30.2 1738 + lightningcss-win32-x64-msvc: 1.30.2 1739 + 1740 + lru-cache@11.2.4: {} 1741 + 1742 + lru-cache@5.1.1: 1743 + dependencies: 1744 + yallist: 3.1.1 1745 + 1746 + lz-string@1.5.0: {} 1747 + 1748 + magic-string@0.30.21: 1749 + dependencies: 1750 + '@jridgewell/sourcemap-codec': 1.5.5 1751 + 1752 + mdn-data@2.12.2: {} 1753 + 1754 + merge-anything@5.1.7: 1755 + dependencies: 1756 + is-what: 4.1.16 1757 + 1758 + min-indent@1.0.1: {} 1759 + 1760 + ms@2.1.3: {} 1761 + 1762 + nanoid@3.3.11: {} 1763 + 1764 + node-releases@2.0.27: {} 1765 + 1766 + obug@2.1.1: {} 1767 + 1768 + parse5@7.3.0: 1769 + dependencies: 1770 + entities: 6.0.1 1771 + 1772 + parse5@8.0.0: 1773 + dependencies: 1774 + entities: 6.0.1 1775 + 1776 + pathe@2.0.3: {} 1777 + 1778 + picocolors@1.1.1: {} 1779 + 1780 + picomatch@4.0.3: {} 1781 + 1782 + postcss@8.5.6: 1783 + dependencies: 1784 + nanoid: 3.3.11 1785 + picocolors: 1.1.1 1786 + source-map-js: 1.2.1 1787 + 1788 + pretty-format@27.5.1: 1789 + dependencies: 1790 + ansi-regex: 5.0.1 1791 + ansi-styles: 5.2.0 1792 + react-is: 17.0.2 1793 + 1794 + punycode@2.3.1: {} 1795 + 1796 + react-is@17.0.2: {} 1797 + 1798 + redent@3.0.0: 1799 + dependencies: 1800 + indent-string: 4.0.0 1801 + strip-indent: 3.0.0 1802 + 1803 + require-from-string@2.0.2: {} 1804 + 1805 + rolldown-vite@7.2.5(@types/node@24.10.4)(jiti@2.6.1): 1806 + dependencies: 1807 + '@oxc-project/runtime': 0.97.0 1808 + fdir: 6.5.0(picomatch@4.0.3) 1809 + lightningcss: 1.30.2 1810 + picomatch: 4.0.3 1811 + postcss: 8.5.6 1812 + rolldown: 1.0.0-beta.50 1813 + tinyglobby: 0.2.15 1814 + optionalDependencies: 1815 + '@types/node': 24.10.4 1816 + fsevents: 2.3.3 1817 + jiti: 2.6.1 1818 + 1819 + rolldown@1.0.0-beta.50: 1820 + dependencies: 1821 + '@oxc-project/types': 0.97.0 1822 + '@rolldown/pluginutils': 1.0.0-beta.50 1823 + optionalDependencies: 1824 + '@rolldown/binding-android-arm64': 1.0.0-beta.50 1825 + '@rolldown/binding-darwin-arm64': 1.0.0-beta.50 1826 + '@rolldown/binding-darwin-x64': 1.0.0-beta.50 1827 + '@rolldown/binding-freebsd-x64': 1.0.0-beta.50 1828 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-beta.50 1829 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-beta.50 1830 + '@rolldown/binding-linux-arm64-musl': 1.0.0-beta.50 1831 + '@rolldown/binding-linux-x64-gnu': 1.0.0-beta.50 1832 + '@rolldown/binding-linux-x64-musl': 1.0.0-beta.50 1833 + '@rolldown/binding-openharmony-arm64': 1.0.0-beta.50 1834 + '@rolldown/binding-wasm32-wasi': 1.0.0-beta.50 1835 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-beta.50 1836 + '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.50 1837 + '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.50 1838 + 1839 + saxes@6.0.0: 1840 + dependencies: 1841 + xmlchars: 2.2.0 1842 + 1843 + semver@6.3.1: {} 1844 + 1845 + seroval-plugins@1.3.3(seroval@1.3.2): 1846 + dependencies: 1847 + seroval: 1.3.2 1848 + 1849 + seroval@1.3.2: {} 1850 + 1851 + siginfo@2.0.0: {} 1852 + 1853 + solid-js@1.9.10: 1854 + dependencies: 1855 + csstype: 3.2.3 1856 + seroval: 1.3.2 1857 + seroval-plugins: 1.3.3(seroval@1.3.2) 1858 + 1859 + solid-refresh@0.6.3(solid-js@1.9.10): 1860 + dependencies: 1861 + '@babel/generator': 7.28.5 1862 + '@babel/helper-module-imports': 7.27.1 1863 + '@babel/types': 7.28.5 1864 + solid-js: 1.9.10 1865 + transitivePeerDependencies: 1866 + - supports-color 1867 + 1868 + source-map-js@1.2.1: {} 1869 + 1870 + stackback@0.0.2: {} 1871 + 1872 + std-env@3.10.0: {} 1873 + 1874 + strip-indent@3.0.0: 1875 + dependencies: 1876 + min-indent: 1.0.1 1877 + 1878 + symbol-tree@3.2.4: {} 1879 + 1880 + tailwindcss@4.1.18: {} 1881 + 1882 + tapable@2.3.0: {} 1883 + 1884 + tinybench@2.9.0: {} 1885 + 1886 + tinyexec@1.0.2: {} 1887 + 1888 + tinyglobby@0.2.15: 1889 + dependencies: 1890 + fdir: 6.5.0(picomatch@4.0.3) 1891 + picomatch: 4.0.3 1892 + 1893 + tinyrainbow@3.0.3: {} 1894 + 1895 + tldts-core@7.0.19: {} 1896 + 1897 + tldts@7.0.19: 1898 + dependencies: 1899 + tldts-core: 7.0.19 1900 + 1901 + tough-cookie@6.0.0: 1902 + dependencies: 1903 + tldts: 7.0.19 1904 + 1905 + tr46@6.0.0: 1906 + dependencies: 1907 + punycode: 2.3.1 1908 + 1909 + tslib@2.8.1: 1910 + optional: true 1911 + 1912 + typescript@5.9.3: {} 1913 + 1914 + undici-types@7.16.0: {} 1915 + 1916 + update-browserslist-db@1.2.3(browserslist@4.28.1): 1917 + dependencies: 1918 + browserslist: 4.28.1 1919 + escalade: 3.2.0 1920 + picocolors: 1.1.1 1921 + 1922 + vite-plugin-solid@2.11.10(@testing-library/jest-dom@6.9.1)(rolldown-vite@7.2.5(@types/node@24.10.4)(jiti@2.6.1))(solid-js@1.9.10): 1923 + dependencies: 1924 + '@babel/core': 7.28.5 1925 + '@types/babel__core': 7.20.5 1926 + babel-preset-solid: 1.9.10(@babel/core@7.28.5)(solid-js@1.9.10) 1927 + merge-anything: 5.1.7 1928 + solid-js: 1.9.10 1929 + solid-refresh: 0.6.3(solid-js@1.9.10) 1930 + vite: rolldown-vite@7.2.5(@types/node@24.10.4)(jiti@2.6.1) 1931 + vitefu: 1.1.1(rolldown-vite@7.2.5(@types/node@24.10.4)(jiti@2.6.1)) 1932 + optionalDependencies: 1933 + '@testing-library/jest-dom': 6.9.1 1934 + transitivePeerDependencies: 1935 + - supports-color 1936 + 1937 + vitefu@1.1.1(rolldown-vite@7.2.5(@types/node@24.10.4)(jiti@2.6.1)): 1938 + optionalDependencies: 1939 + vite: rolldown-vite@7.2.5(@types/node@24.10.4)(jiti@2.6.1) 1940 + 1941 + vitest@4.0.16(@types/node@24.10.4)(jiti@2.6.1)(jsdom@27.4.0): 1942 + dependencies: 1943 + '@vitest/expect': 4.0.16 1944 + '@vitest/mocker': 4.0.16(rolldown-vite@7.2.5(@types/node@24.10.4)(jiti@2.6.1)) 1945 + '@vitest/pretty-format': 4.0.16 1946 + '@vitest/runner': 4.0.16 1947 + '@vitest/snapshot': 4.0.16 1948 + '@vitest/spy': 4.0.16 1949 + '@vitest/utils': 4.0.16 1950 + es-module-lexer: 1.7.0 1951 + expect-type: 1.3.0 1952 + magic-string: 0.30.21 1953 + obug: 2.1.1 1954 + pathe: 2.0.3 1955 + picomatch: 4.0.3 1956 + std-env: 3.10.0 1957 + tinybench: 2.9.0 1958 + tinyexec: 1.0.2 1959 + tinyglobby: 0.2.15 1960 + tinyrainbow: 3.0.3 1961 + vite: rolldown-vite@7.2.5(@types/node@24.10.4)(jiti@2.6.1) 1962 + why-is-node-running: 2.3.0 1963 + optionalDependencies: 1964 + '@types/node': 24.10.4 1965 + jsdom: 27.4.0 1966 + transitivePeerDependencies: 1967 + - esbuild 1968 + - jiti 1969 + - less 1970 + - msw 1971 + - sass 1972 + - sass-embedded 1973 + - stylus 1974 + - sugarss 1975 + - terser 1976 + - tsx 1977 + - yaml 1978 + 1979 + w3c-xmlserializer@5.0.0: 1980 + dependencies: 1981 + xml-name-validator: 5.0.0 1982 + 1983 + webidl-conversions@8.0.0: {} 1984 + 1985 + whatwg-mimetype@4.0.0: {} 1986 + 1987 + whatwg-url@15.1.0: 1988 + dependencies: 1989 + tr46: 6.0.0 1990 + webidl-conversions: 8.0.0 1991 + 1992 + why-is-node-running@2.3.0: 1993 + dependencies: 1994 + siginfo: 2.0.0 1995 + stackback: 0.0.2 1996 + 1997 + ws@8.18.3: {} 1998 + 1999 + xml-name-validator@5.0.0: {} 2000 + 2001 + xmlchars@2.2.0: {} 2002 + 2003 + yallist@3.1.1: {}
-27
web/src/App.css
··· 1 - #root { 2 - max-width: 1280px; 3 - margin: 0 auto; 4 - padding: 2rem; 5 - text-align: center; 6 - } 7 - 8 - .logo { 9 - height: 6em; 10 - padding: 1.5em; 11 - will-change: filter; 12 - transition: filter 300ms; 13 - } 14 - .logo:hover { 15 - filter: drop-shadow(0 0 2em #646cffaa); 16 - } 17 - .logo.solid:hover { 18 - filter: drop-shadow(0 0 2em #61dafbaa); 19 - } 20 - 21 - .card { 22 - padding: 2em; 23 - } 24 - 25 - .read-the-docs { 26 - color: #888; 27 - }
+3 -29
web/src/App.tsx
··· 1 - import { createSignal } from 'solid-js' 2 - import solidLogo from './assets/solid.svg' 3 - import viteLogo from '/vite.svg' 4 - import './App.css' 5 - 6 1 function App() { 7 - const [count, setCount] = createSignal(0) 8 - 9 2 return ( 10 3 <> 11 - <div> 12 - <a href="https://vite.dev" target="_blank"> 13 - <img src={viteLogo} class="logo" alt="Vite logo" /> 14 - </a> 15 - <a href="https://solidjs.com" target="_blank"> 16 - <img src={solidLogo} class="logo solid" alt="Solid logo" /> 17 - </a> 18 - </div> 19 - <h1>Vite + Solid</h1> 20 - <div class="card"> 21 - <button onClick={() => setCount((count) => count + 1)}> 22 - count is {count()} 23 - </button> 24 - <p> 25 - Edit <code>src/App.tsx</code> and save to test HMR 26 - </p> 27 - </div> 28 - <p class="read-the-docs"> 29 - Click on the Vite and Solid logos to learn more 30 - </p> 4 + <main>Hello World</main> 31 5 </> 32 - ) 6 + ); 33 7 } 34 8 35 - export default App 9 + export default App;
-1
web/src/assets/solid.svg
··· 1 - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 166 155.3"><path d="M163 35S110-4 69 5l-3 1c-6 2-11 5-14 9l-2 3-15 26 26 5c11 7 25 10 38 7l46 9 18-30z" fill="#76b3e1"/><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="27.5" y1="3" x2="152" y2="63.5"><stop offset=".1" stop-color="#76b3e1"/><stop offset=".3" stop-color="#dcf2fd"/><stop offset="1" stop-color="#76b3e1"/></linearGradient><path d="M163 35S110-4 69 5l-3 1c-6 2-11 5-14 9l-2 3-15 26 26 5c11 7 25 10 38 7l46 9 18-30z" opacity=".3" fill="url(#a)"/><path d="M52 35l-4 1c-17 5-22 21-13 35 10 13 31 20 48 15l62-21S92 26 52 35z" fill="#518ac8"/><linearGradient id="b" gradientUnits="userSpaceOnUse" x1="95.8" y1="32.6" x2="74" y2="105.2"><stop offset="0" stop-color="#76b3e1"/><stop offset=".5" stop-color="#4377bb"/><stop offset="1" stop-color="#1f3b77"/></linearGradient><path d="M52 35l-4 1c-17 5-22 21-13 35 10 13 31 20 48 15l62-21S92 26 52 35z" opacity=".3" fill="url(#b)"/><linearGradient id="c" gradientUnits="userSpaceOnUse" x1="18.4" y1="64.2" x2="144.3" y2="149.8"><stop offset="0" stop-color="#315aa9"/><stop offset=".5" stop-color="#518ac8"/><stop offset="1" stop-color="#315aa9"/></linearGradient><path d="M134 80a45 45 0 00-48-15L24 85 4 120l112 19 20-36c4-7 3-15-2-23z" fill="url(#c)"/><linearGradient id="d" gradientUnits="userSpaceOnUse" x1="75.2" y1="74.5" x2="24.4" y2="260.8"><stop offset="0" stop-color="#4377bb"/><stop offset=".5" stop-color="#1a336b"/><stop offset="1" stop-color="#1a336b"/></linearGradient><path d="M114 115a45 45 0 00-48-15L4 120s53 40 94 30l3-1c17-5 23-21 13-34z" fill="url(#d)"/></svg>
+1 -68
web/src/index.css
··· 1 - :root { 2 - font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; 3 - line-height: 1.5; 4 - font-weight: 400; 5 - 6 - color-scheme: light dark; 7 - color: rgba(255, 255, 255, 0.87); 8 - background-color: #242424; 9 - 10 - font-synthesis: none; 11 - text-rendering: optimizeLegibility; 12 - -webkit-font-smoothing: antialiased; 13 - -moz-osx-font-smoothing: grayscale; 14 - } 15 - 16 - a { 17 - font-weight: 500; 18 - color: #646cff; 19 - text-decoration: inherit; 20 - } 21 - a:hover { 22 - color: #535bf2; 23 - } 24 - 25 - body { 26 - margin: 0; 27 - display: flex; 28 - place-items: center; 29 - min-width: 320px; 30 - min-height: 100vh; 31 - } 32 - 33 - h1 { 34 - font-size: 3.2em; 35 - line-height: 1.1; 36 - } 37 - 38 - button { 39 - border-radius: 8px; 40 - border: 1px solid transparent; 41 - padding: 0.6em 1.2em; 42 - font-size: 1em; 43 - font-weight: 500; 44 - font-family: inherit; 45 - background-color: #1a1a1a; 46 - cursor: pointer; 47 - transition: border-color 0.25s; 48 - } 49 - button:hover { 50 - border-color: #646cff; 51 - } 52 - button:focus, 53 - button:focus-visible { 54 - outline: 4px auto -webkit-focus-ring-color; 55 - } 56 - 57 - @media (prefers-color-scheme: light) { 58 - :root { 59 - color: #213547; 60 - background-color: #ffffff; 61 - } 62 - a:hover { 63 - color: #747bff; 64 - } 65 - button { 66 - background-color: #f9f9f9; 67 - } 68 - } 1 + @import "tailwindcss";
+5 -5
web/src/index.tsx
··· 1 1 /* @refresh reload */ 2 - import { render } from 'solid-js/web' 3 - import './index.css' 4 - import App from './App.tsx' 2 + import { render } from "solid-js/web"; 3 + import "./index.css"; 4 + import App from "./App.tsx"; 5 5 6 - const root = document.getElementById('root') 6 + const root = document.getElementById("root"); 7 7 8 - render(() => <App />, root!) 8 + render(() => <App />, root!);
+1 -3
web/tsconfig.app.json
··· 5 5 "useDefineForClassFields": true, 6 6 "module": "ESNext", 7 7 "lib": ["ES2022", "DOM", "DOM.Iterable"], 8 - "types": ["vite/client"], 8 + "types": ["vite/client", "@testing-library/jest-dom"], 9 9 "skipLibCheck": true, 10 - 11 10 /* Bundler mode */ 12 11 "moduleResolution": "bundler", 13 12 "allowImportingTsExtensions": true, ··· 16 15 "noEmit": true, 17 16 "jsx": "preserve", 18 17 "jsxImportSource": "solid-js", 19 - 20 18 /* Linting */ 21 19 "strict": true, 22 20 "noUnusedLocals": true,
+1 -7
web/tsconfig.json
··· 1 - { 2 - "files": [], 3 - "references": [ 4 - { "path": "./tsconfig.app.json" }, 5 - { "path": "./tsconfig.node.json" } 6 - ] 7 - } 1 + { "files": [], "references": [{ "path": "./tsconfig.app.json" }, { "path": "./tsconfig.node.json" }] }
-2
web/tsconfig.node.json
··· 6 6 "module": "ESNext", 7 7 "types": ["node"], 8 8 "skipLibCheck": true, 9 - 10 9 /* Bundler mode */ 11 10 "moduleResolution": "bundler", 12 11 "allowImportingTsExtensions": true, 13 12 "verbatimModuleSyntax": true, 14 13 "moduleDetection": "force", 15 14 "noEmit": true, 16 - 17 15 /* Linting */ 18 16 "strict": true, 19 17 "noUnusedLocals": true,
+6 -4
web/vite.config.ts
··· 1 - import { defineConfig } from 'vite' 2 - import solid from 'vite-plugin-solid' 1 + import tailwindcss from "@tailwindcss/vite"; 2 + import solid from "vite-plugin-solid"; 3 + import { defineConfig } from "vitest/config"; 3 4 4 5 export default defineConfig({ 5 - plugins: [solid()], 6 - }) 6 + plugins: [solid(), tailwindcss()], 7 + test: { environment: "jsdom", ui: false, watch: false }, 8 + });