{item.title}
14 |{price}
15 | 18 |├── .codesandbox └── tasks.json ├── .gitignore ├── package-lock.json ├── public ├── cleveland-museum.jpg ├── gwen-artist.png ├── koopa-troopa.png ├── pikachu.png ├── shopping-cart-backpack.jpg ├── shopping-cart-can-opener.jpg ├── shopping-cart-coffee-machine.jpg ├── shopping-cart-night-light.png └── vader.png └── src ├── app ├── exercises │ ├── 01-clock │ │ ├── Clock.js │ │ ├── page.js │ │ └── styles.css │ ├── 02-checkout │ │ ├── CartTable.js │ │ ├── CheckoutFlow.js │ │ ├── StoreItem.js │ │ ├── data.js │ │ ├── page.js │ │ ├── reducer.js │ │ └── styles.css │ └── 03-interview │ │ ├── Interview.js │ │ ├── page.js │ │ └── styles.css ├── layout.js ├── page.js └── styles.css └── components └── Spinner ├── Spinner.js ├── Spinner.module.css └── index.js /.codesandbox/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | // These tasks will run in order when initializing your CodeSandbox project. 3 | "setupTasks": [ 4 | { 5 | "name": "Install Dependencies", 6 | "command": "npm install" 7 | } 8 | ], 9 | 10 | // These tasks can be run from CodeSandbox. Running one will open a log in the app. 11 | "tasks": { 12 | "dev": { 13 | "name": "dev", 14 | "command": "npm run dev", 15 | "runAtStart": true, 16 | "preview": { 17 | "port": 3000 18 | } 19 | }, 20 | "build": { 21 | "name": "build", 22 | "command": "npm run build", 23 | "runAtStart": false 24 | }, 25 | "start": { 26 | "name": "start", 27 | "command": "npm run start", 28 | "runAtStart": false 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env.local 29 | .env.development.local 30 | .env.test.local 31 | .env.production.local 32 | 33 | # vercel 34 | .vercel 35 | .vscode 36 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "next-13-ssr-exercises", 3 | "version": "0.1.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "next-13-ssr-exercises", 9 | "version": "0.1.0", 10 | "dependencies": { 11 | "date-fns": "2.28.0", 12 | "immer": "10.0.2", 13 | "next": "^15.0.4", 14 | "react": "^19.0.0", 15 | "react-dom": "^19.0.0", 16 | "react-feather": "2.0.10", 17 | "react-responsive": "9.0.2" 18 | } 19 | }, 20 | "node_modules/@emnapi/runtime": { 21 | "version": "1.3.1", 22 | "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", 23 | "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==", 24 | "license": "MIT", 25 | "optional": true, 26 | "dependencies": { 27 | "tslib": "^2.4.0" 28 | } 29 | }, 30 | "node_modules/@img/sharp-darwin-arm64": { 31 | "version": "0.33.5", 32 | "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", 33 | "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", 34 | "cpu": [ 35 | "arm64" 36 | ], 37 | "license": "Apache-2.0", 38 | "optional": true, 39 | "os": [ 40 | "darwin" 41 | ], 42 | "engines": { 43 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 44 | }, 45 | "funding": { 46 | "url": "https://opencollective.com/libvips" 47 | }, 48 | "optionalDependencies": { 49 | "@img/sharp-libvips-darwin-arm64": "1.0.4" 50 | } 51 | }, 52 | "node_modules/@img/sharp-darwin-x64": { 53 | "version": "0.33.5", 54 | "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", 55 | "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", 56 | "cpu": [ 57 | "x64" 58 | ], 59 | "license": "Apache-2.0", 60 | "optional": true, 61 | "os": [ 62 | "darwin" 63 | ], 64 | "engines": { 65 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 66 | }, 67 | "funding": { 68 | "url": "https://opencollective.com/libvips" 69 | }, 70 | "optionalDependencies": { 71 | "@img/sharp-libvips-darwin-x64": "1.0.4" 72 | } 73 | }, 74 | "node_modules/@img/sharp-libvips-darwin-arm64": { 75 | "version": "1.0.4", 76 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", 77 | "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", 78 | "cpu": [ 79 | "arm64" 80 | ], 81 | "license": "LGPL-3.0-or-later", 82 | "optional": true, 83 | "os": [ 84 | "darwin" 85 | ], 86 | "funding": { 87 | "url": "https://opencollective.com/libvips" 88 | } 89 | }, 90 | "node_modules/@img/sharp-libvips-darwin-x64": { 91 | "version": "1.0.4", 92 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", 93 | "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", 94 | "cpu": [ 95 | "x64" 96 | ], 97 | "license": "LGPL-3.0-or-later", 98 | "optional": true, 99 | "os": [ 100 | "darwin" 101 | ], 102 | "funding": { 103 | "url": "https://opencollective.com/libvips" 104 | } 105 | }, 106 | "node_modules/@img/sharp-libvips-linux-arm": { 107 | "version": "1.0.5", 108 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", 109 | "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", 110 | "cpu": [ 111 | "arm" 112 | ], 113 | "license": "LGPL-3.0-or-later", 114 | "optional": true, 115 | "os": [ 116 | "linux" 117 | ], 118 | "funding": { 119 | "url": "https://opencollective.com/libvips" 120 | } 121 | }, 122 | "node_modules/@img/sharp-libvips-linux-arm64": { 123 | "version": "1.0.4", 124 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", 125 | "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", 126 | "cpu": [ 127 | "arm64" 128 | ], 129 | "license": "LGPL-3.0-or-later", 130 | "optional": true, 131 | "os": [ 132 | "linux" 133 | ], 134 | "funding": { 135 | "url": "https://opencollective.com/libvips" 136 | } 137 | }, 138 | "node_modules/@img/sharp-libvips-linux-s390x": { 139 | "version": "1.0.4", 140 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", 141 | "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", 142 | "cpu": [ 143 | "s390x" 144 | ], 145 | "license": "LGPL-3.0-or-later", 146 | "optional": true, 147 | "os": [ 148 | "linux" 149 | ], 150 | "funding": { 151 | "url": "https://opencollective.com/libvips" 152 | } 153 | }, 154 | "node_modules/@img/sharp-libvips-linux-x64": { 155 | "version": "1.0.4", 156 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", 157 | "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", 158 | "cpu": [ 159 | "x64" 160 | ], 161 | "license": "LGPL-3.0-or-later", 162 | "optional": true, 163 | "os": [ 164 | "linux" 165 | ], 166 | "funding": { 167 | "url": "https://opencollective.com/libvips" 168 | } 169 | }, 170 | "node_modules/@img/sharp-libvips-linuxmusl-arm64": { 171 | "version": "1.0.4", 172 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", 173 | "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", 174 | "cpu": [ 175 | "arm64" 176 | ], 177 | "license": "LGPL-3.0-or-later", 178 | "optional": true, 179 | "os": [ 180 | "linux" 181 | ], 182 | "funding": { 183 | "url": "https://opencollective.com/libvips" 184 | } 185 | }, 186 | "node_modules/@img/sharp-libvips-linuxmusl-x64": { 187 | "version": "1.0.4", 188 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", 189 | "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", 190 | "cpu": [ 191 | "x64" 192 | ], 193 | "license": "LGPL-3.0-or-later", 194 | "optional": true, 195 | "os": [ 196 | "linux" 197 | ], 198 | "funding": { 199 | "url": "https://opencollective.com/libvips" 200 | } 201 | }, 202 | "node_modules/@img/sharp-linux-arm": { 203 | "version": "0.33.5", 204 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", 205 | "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", 206 | "cpu": [ 207 | "arm" 208 | ], 209 | "license": "Apache-2.0", 210 | "optional": true, 211 | "os": [ 212 | "linux" 213 | ], 214 | "engines": { 215 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 216 | }, 217 | "funding": { 218 | "url": "https://opencollective.com/libvips" 219 | }, 220 | "optionalDependencies": { 221 | "@img/sharp-libvips-linux-arm": "1.0.5" 222 | } 223 | }, 224 | "node_modules/@img/sharp-linux-arm64": { 225 | "version": "0.33.5", 226 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", 227 | "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", 228 | "cpu": [ 229 | "arm64" 230 | ], 231 | "license": "Apache-2.0", 232 | "optional": true, 233 | "os": [ 234 | "linux" 235 | ], 236 | "engines": { 237 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 238 | }, 239 | "funding": { 240 | "url": "https://opencollective.com/libvips" 241 | }, 242 | "optionalDependencies": { 243 | "@img/sharp-libvips-linux-arm64": "1.0.4" 244 | } 245 | }, 246 | "node_modules/@img/sharp-linux-s390x": { 247 | "version": "0.33.5", 248 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", 249 | "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", 250 | "cpu": [ 251 | "s390x" 252 | ], 253 | "license": "Apache-2.0", 254 | "optional": true, 255 | "os": [ 256 | "linux" 257 | ], 258 | "engines": { 259 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 260 | }, 261 | "funding": { 262 | "url": "https://opencollective.com/libvips" 263 | }, 264 | "optionalDependencies": { 265 | "@img/sharp-libvips-linux-s390x": "1.0.4" 266 | } 267 | }, 268 | "node_modules/@img/sharp-linux-x64": { 269 | "version": "0.33.5", 270 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", 271 | "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", 272 | "cpu": [ 273 | "x64" 274 | ], 275 | "license": "Apache-2.0", 276 | "optional": true, 277 | "os": [ 278 | "linux" 279 | ], 280 | "engines": { 281 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 282 | }, 283 | "funding": { 284 | "url": "https://opencollective.com/libvips" 285 | }, 286 | "optionalDependencies": { 287 | "@img/sharp-libvips-linux-x64": "1.0.4" 288 | } 289 | }, 290 | "node_modules/@img/sharp-linuxmusl-arm64": { 291 | "version": "0.33.5", 292 | "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", 293 | "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", 294 | "cpu": [ 295 | "arm64" 296 | ], 297 | "license": "Apache-2.0", 298 | "optional": true, 299 | "os": [ 300 | "linux" 301 | ], 302 | "engines": { 303 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 304 | }, 305 | "funding": { 306 | "url": "https://opencollective.com/libvips" 307 | }, 308 | "optionalDependencies": { 309 | "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" 310 | } 311 | }, 312 | "node_modules/@img/sharp-linuxmusl-x64": { 313 | "version": "0.33.5", 314 | "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", 315 | "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", 316 | "cpu": [ 317 | "x64" 318 | ], 319 | "license": "Apache-2.0", 320 | "optional": true, 321 | "os": [ 322 | "linux" 323 | ], 324 | "engines": { 325 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 326 | }, 327 | "funding": { 328 | "url": "https://opencollective.com/libvips" 329 | }, 330 | "optionalDependencies": { 331 | "@img/sharp-libvips-linuxmusl-x64": "1.0.4" 332 | } 333 | }, 334 | "node_modules/@img/sharp-wasm32": { 335 | "version": "0.33.5", 336 | "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", 337 | "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", 338 | "cpu": [ 339 | "wasm32" 340 | ], 341 | "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", 342 | "optional": true, 343 | "dependencies": { 344 | "@emnapi/runtime": "^1.2.0" 345 | }, 346 | "engines": { 347 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 348 | }, 349 | "funding": { 350 | "url": "https://opencollective.com/libvips" 351 | } 352 | }, 353 | "node_modules/@img/sharp-win32-ia32": { 354 | "version": "0.33.5", 355 | "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", 356 | "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", 357 | "cpu": [ 358 | "ia32" 359 | ], 360 | "license": "Apache-2.0 AND LGPL-3.0-or-later", 361 | "optional": true, 362 | "os": [ 363 | "win32" 364 | ], 365 | "engines": { 366 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 367 | }, 368 | "funding": { 369 | "url": "https://opencollective.com/libvips" 370 | } 371 | }, 372 | "node_modules/@img/sharp-win32-x64": { 373 | "version": "0.33.5", 374 | "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", 375 | "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", 376 | "cpu": [ 377 | "x64" 378 | ], 379 | "license": "Apache-2.0 AND LGPL-3.0-or-later", 380 | "optional": true, 381 | "os": [ 382 | "win32" 383 | ], 384 | "engines": { 385 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 386 | }, 387 | "funding": { 388 | "url": "https://opencollective.com/libvips" 389 | } 390 | }, 391 | "node_modules/@next/env": { 392 | "version": "15.0.4", 393 | "resolved": "https://registry.npmjs.org/@next/env/-/env-15.0.4.tgz", 394 | "integrity": "sha512-WNRvtgnRVDD4oM8gbUcRc27IAhaL4eXQ/2ovGbgLnPGUvdyDr8UdXP4Q/IBDdAdojnD2eScryIDirv0YUCjUVw==", 395 | "license": "MIT" 396 | }, 397 | "node_modules/@next/swc-darwin-arm64": { 398 | "version": "15.0.4", 399 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.0.4.tgz", 400 | "integrity": "sha512-QecQXPD0yRHxSXWL5Ff80nD+A56sUXZG9koUsjWJwA2Z0ZgVQfuy7gd0/otjxoOovPVHR2eVEvPMHbtZP+pf9w==", 401 | "cpu": [ 402 | "arm64" 403 | ], 404 | "license": "MIT", 405 | "optional": true, 406 | "os": [ 407 | "darwin" 408 | ], 409 | "engines": { 410 | "node": ">= 10" 411 | } 412 | }, 413 | "node_modules/@next/swc-darwin-x64": { 414 | "version": "15.0.4", 415 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.0.4.tgz", 416 | "integrity": "sha512-pb7Bye3y1Og3PlCtnz2oO4z+/b3pH2/HSYkLbL0hbVuTGil7fPen8/3pyyLjdiTLcFJ+ymeU3bck5hd4IPFFCA==", 417 | "cpu": [ 418 | "x64" 419 | ], 420 | "license": "MIT", 421 | "optional": true, 422 | "os": [ 423 | "darwin" 424 | ], 425 | "engines": { 426 | "node": ">= 10" 427 | } 428 | }, 429 | "node_modules/@next/swc-linux-arm64-gnu": { 430 | "version": "15.0.4", 431 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.0.4.tgz", 432 | "integrity": "sha512-12oSaBFjGpB227VHzoXF3gJoK2SlVGmFJMaBJSu5rbpaoT5OjP5OuCLuR9/jnyBF1BAWMs/boa6mLMoJPRriMA==", 433 | "cpu": [ 434 | "arm64" 435 | ], 436 | "license": "MIT", 437 | "optional": true, 438 | "os": [ 439 | "linux" 440 | ], 441 | "engines": { 442 | "node": ">= 10" 443 | } 444 | }, 445 | "node_modules/@next/swc-linux-arm64-musl": { 446 | "version": "15.0.4", 447 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.0.4.tgz", 448 | "integrity": "sha512-QARO88fR/a+wg+OFC3dGytJVVviiYFEyjc/Zzkjn/HevUuJ7qGUUAUYy5PGVWY1YgTzeRYz78akQrVQ8r+sMjw==", 449 | "cpu": [ 450 | "arm64" 451 | ], 452 | "license": "MIT", 453 | "optional": true, 454 | "os": [ 455 | "linux" 456 | ], 457 | "engines": { 458 | "node": ">= 10" 459 | } 460 | }, 461 | "node_modules/@next/swc-linux-x64-gnu": { 462 | "version": "15.0.4", 463 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.0.4.tgz", 464 | "integrity": "sha512-Z50b0gvYiUU1vLzfAMiChV8Y+6u/T2mdfpXPHraqpypP7yIT2UV9YBBhcwYkxujmCvGEcRTVWOj3EP7XW/wUnw==", 465 | "cpu": [ 466 | "x64" 467 | ], 468 | "license": "MIT", 469 | "optional": true, 470 | "os": [ 471 | "linux" 472 | ], 473 | "engines": { 474 | "node": ">= 10" 475 | } 476 | }, 477 | "node_modules/@next/swc-linux-x64-musl": { 478 | "version": "15.0.4", 479 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.0.4.tgz", 480 | "integrity": "sha512-7H9C4FAsrTAbA/ENzvFWsVytqRYhaJYKa2B3fyQcv96TkOGVMcvyS6s+sj4jZlacxxTcn7ygaMXUPkEk7b78zw==", 481 | "cpu": [ 482 | "x64" 483 | ], 484 | "license": "MIT", 485 | "optional": true, 486 | "os": [ 487 | "linux" 488 | ], 489 | "engines": { 490 | "node": ">= 10" 491 | } 492 | }, 493 | "node_modules/@next/swc-win32-arm64-msvc": { 494 | "version": "15.0.4", 495 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.0.4.tgz", 496 | "integrity": "sha512-Z/v3WV5xRaeWlgJzN9r4PydWD8sXV35ywc28W63i37G2jnUgScA4OOgS8hQdiXLxE3gqfSuHTicUhr7931OXPQ==", 497 | "cpu": [ 498 | "arm64" 499 | ], 500 | "license": "MIT", 501 | "optional": true, 502 | "os": [ 503 | "win32" 504 | ], 505 | "engines": { 506 | "node": ">= 10" 507 | } 508 | }, 509 | "node_modules/@next/swc-win32-x64-msvc": { 510 | "version": "15.0.4", 511 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.0.4.tgz", 512 | "integrity": "sha512-NGLchGruagh8lQpDr98bHLyWJXOBSmkEAfK980OiNBa7vNm6PsNoPvzTfstT78WyOeMRQphEQ455rggd7Eo+Dw==", 513 | "cpu": [ 514 | "x64" 515 | ], 516 | "license": "MIT", 517 | "optional": true, 518 | "os": [ 519 | "win32" 520 | ], 521 | "engines": { 522 | "node": ">= 10" 523 | } 524 | }, 525 | "node_modules/@swc/counter": { 526 | "version": "0.1.3", 527 | "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", 528 | "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", 529 | "license": "Apache-2.0" 530 | }, 531 | "node_modules/@swc/helpers": { 532 | "version": "0.5.13", 533 | "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz", 534 | "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==", 535 | "license": "Apache-2.0", 536 | "dependencies": { 537 | "tslib": "^2.4.0" 538 | } 539 | }, 540 | "node_modules/busboy": { 541 | "version": "1.6.0", 542 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", 543 | "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", 544 | "dependencies": { 545 | "streamsearch": "^1.1.0" 546 | }, 547 | "engines": { 548 | "node": ">=10.16.0" 549 | } 550 | }, 551 | "node_modules/caniuse-lite": { 552 | "version": "1.0.30001588", 553 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001588.tgz", 554 | "integrity": "sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ==", 555 | "funding": [ 556 | { 557 | "type": "opencollective", 558 | "url": "https://opencollective.com/browserslist" 559 | }, 560 | { 561 | "type": "tidelift", 562 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite" 563 | }, 564 | { 565 | "type": "github", 566 | "url": "https://github.com/sponsors/ai" 567 | } 568 | ] 569 | }, 570 | "node_modules/client-only": { 571 | "version": "0.0.1", 572 | "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", 573 | "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", 574 | "license": "MIT" 575 | }, 576 | "node_modules/color": { 577 | "version": "4.2.3", 578 | "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", 579 | "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", 580 | "license": "MIT", 581 | "optional": true, 582 | "dependencies": { 583 | "color-convert": "^2.0.1", 584 | "color-string": "^1.9.0" 585 | }, 586 | "engines": { 587 | "node": ">=12.5.0" 588 | } 589 | }, 590 | "node_modules/color-convert": { 591 | "version": "2.0.1", 592 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 593 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 594 | "license": "MIT", 595 | "optional": true, 596 | "dependencies": { 597 | "color-name": "~1.1.4" 598 | }, 599 | "engines": { 600 | "node": ">=7.0.0" 601 | } 602 | }, 603 | "node_modules/color-name": { 604 | "version": "1.1.4", 605 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 606 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 607 | "license": "MIT", 608 | "optional": true 609 | }, 610 | "node_modules/color-string": { 611 | "version": "1.9.1", 612 | "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", 613 | "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", 614 | "license": "MIT", 615 | "optional": true, 616 | "dependencies": { 617 | "color-name": "^1.0.0", 618 | "simple-swizzle": "^0.2.2" 619 | } 620 | }, 621 | "node_modules/css-mediaquery": { 622 | "version": "0.1.2", 623 | "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", 624 | "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==" 625 | }, 626 | "node_modules/date-fns": { 627 | "version": "2.28.0", 628 | "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", 629 | "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==", 630 | "engines": { 631 | "node": ">=0.11" 632 | }, 633 | "funding": { 634 | "type": "opencollective", 635 | "url": "https://opencollective.com/date-fns" 636 | } 637 | }, 638 | "node_modules/detect-libc": { 639 | "version": "2.0.3", 640 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", 641 | "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", 642 | "license": "Apache-2.0", 643 | "optional": true, 644 | "engines": { 645 | "node": ">=8" 646 | } 647 | }, 648 | "node_modules/hyphenate-style-name": { 649 | "version": "1.0.4", 650 | "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", 651 | "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" 652 | }, 653 | "node_modules/immer": { 654 | "version": "10.0.2", 655 | "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.2.tgz", 656 | "integrity": "sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA==", 657 | "funding": { 658 | "type": "opencollective", 659 | "url": "https://opencollective.com/immer" 660 | } 661 | }, 662 | "node_modules/is-arrayish": { 663 | "version": "0.3.2", 664 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", 665 | "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", 666 | "license": "MIT", 667 | "optional": true 668 | }, 669 | "node_modules/js-tokens": { 670 | "version": "4.0.0", 671 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 672 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 673 | }, 674 | "node_modules/loose-envify": { 675 | "version": "1.4.0", 676 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 677 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 678 | "dependencies": { 679 | "js-tokens": "^3.0.0 || ^4.0.0" 680 | }, 681 | "bin": { 682 | "loose-envify": "cli.js" 683 | } 684 | }, 685 | "node_modules/matchmediaquery": { 686 | "version": "0.3.1", 687 | "resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.3.1.tgz", 688 | "integrity": "sha512-Hlk20WQHRIm9EE9luN1kjRjYXAQToHOIAHPJn9buxBwuhfTHoKUcX+lXBbxc85DVQfXYbEQ4HcwQdd128E3qHQ==", 689 | "dependencies": { 690 | "css-mediaquery": "^0.1.2" 691 | } 692 | }, 693 | "node_modules/nanoid": { 694 | "version": "3.3.7", 695 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", 696 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", 697 | "funding": [ 698 | { 699 | "type": "github", 700 | "url": "https://github.com/sponsors/ai" 701 | } 702 | ], 703 | "bin": { 704 | "nanoid": "bin/nanoid.cjs" 705 | }, 706 | "engines": { 707 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 708 | } 709 | }, 710 | "node_modules/next": { 711 | "version": "15.0.4", 712 | "resolved": "https://registry.npmjs.org/next/-/next-15.0.4.tgz", 713 | "integrity": "sha512-nuy8FH6M1FG0lktGotamQDCXhh5hZ19Vo0ht1AOIQWrYJLP598TIUagKtvJrfJ5AGwB/WmDqkKaKhMpVifvGPA==", 714 | "license": "MIT", 715 | "dependencies": { 716 | "@next/env": "15.0.4", 717 | "@swc/counter": "0.1.3", 718 | "@swc/helpers": "0.5.13", 719 | "busboy": "1.6.0", 720 | "caniuse-lite": "^1.0.30001579", 721 | "postcss": "8.4.31", 722 | "styled-jsx": "5.1.6" 723 | }, 724 | "bin": { 725 | "next": "dist/bin/next" 726 | }, 727 | "engines": { 728 | "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" 729 | }, 730 | "optionalDependencies": { 731 | "@next/swc-darwin-arm64": "15.0.4", 732 | "@next/swc-darwin-x64": "15.0.4", 733 | "@next/swc-linux-arm64-gnu": "15.0.4", 734 | "@next/swc-linux-arm64-musl": "15.0.4", 735 | "@next/swc-linux-x64-gnu": "15.0.4", 736 | "@next/swc-linux-x64-musl": "15.0.4", 737 | "@next/swc-win32-arm64-msvc": "15.0.4", 738 | "@next/swc-win32-x64-msvc": "15.0.4", 739 | "sharp": "^0.33.5" 740 | }, 741 | "peerDependencies": { 742 | "@opentelemetry/api": "^1.1.0", 743 | "@playwright/test": "^1.41.2", 744 | "babel-plugin-react-compiler": "*", 745 | "react": "^18.2.0 || 19.0.0-rc-66855b96-20241106 || ^19.0.0", 746 | "react-dom": "^18.2.0 || 19.0.0-rc-66855b96-20241106 || ^19.0.0", 747 | "sass": "^1.3.0" 748 | }, 749 | "peerDependenciesMeta": { 750 | "@opentelemetry/api": { 751 | "optional": true 752 | }, 753 | "@playwright/test": { 754 | "optional": true 755 | }, 756 | "babel-plugin-react-compiler": { 757 | "optional": true 758 | }, 759 | "sass": { 760 | "optional": true 761 | } 762 | } 763 | }, 764 | "node_modules/object-assign": { 765 | "version": "4.1.1", 766 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 767 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 768 | "engines": { 769 | "node": ">=0.10.0" 770 | } 771 | }, 772 | "node_modules/picocolors": { 773 | "version": "1.0.0", 774 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 775 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 776 | }, 777 | "node_modules/postcss": { 778 | "version": "8.4.31", 779 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", 780 | "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", 781 | "funding": [ 782 | { 783 | "type": "opencollective", 784 | "url": "https://opencollective.com/postcss/" 785 | }, 786 | { 787 | "type": "tidelift", 788 | "url": "https://tidelift.com/funding/github/npm/postcss" 789 | }, 790 | { 791 | "type": "github", 792 | "url": "https://github.com/sponsors/ai" 793 | } 794 | ], 795 | "dependencies": { 796 | "nanoid": "^3.3.6", 797 | "picocolors": "^1.0.0", 798 | "source-map-js": "^1.0.2" 799 | }, 800 | "engines": { 801 | "node": "^10 || ^12 || >=14" 802 | } 803 | }, 804 | "node_modules/prop-types": { 805 | "version": "15.8.1", 806 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", 807 | "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", 808 | "dependencies": { 809 | "loose-envify": "^1.4.0", 810 | "object-assign": "^4.1.1", 811 | "react-is": "^16.13.1" 812 | } 813 | }, 814 | "node_modules/react": { 815 | "version": "19.0.0", 816 | "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", 817 | "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", 818 | "license": "MIT", 819 | "engines": { 820 | "node": ">=0.10.0" 821 | } 822 | }, 823 | "node_modules/react-dom": { 824 | "version": "19.0.0", 825 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz", 826 | "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==", 827 | "license": "MIT", 828 | "dependencies": { 829 | "scheduler": "^0.25.0" 830 | }, 831 | "peerDependencies": { 832 | "react": "^19.0.0" 833 | } 834 | }, 835 | "node_modules/react-feather": { 836 | "version": "2.0.10", 837 | "resolved": "https://registry.npmjs.org/react-feather/-/react-feather-2.0.10.tgz", 838 | "integrity": "sha512-BLhukwJ+Z92Nmdcs+EMw6dy1Z/VLiJTzEQACDUEnWMClhYnFykJCGWQx+NmwP/qQHGX/5CzQ+TGi8ofg2+HzVQ==", 839 | "dependencies": { 840 | "prop-types": "^15.7.2" 841 | }, 842 | "peerDependencies": { 843 | "react": ">=16.8.6" 844 | } 845 | }, 846 | "node_modules/react-is": { 847 | "version": "16.13.1", 848 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 849 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 850 | }, 851 | "node_modules/react-responsive": { 852 | "version": "9.0.2", 853 | "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-9.0.2.tgz", 854 | "integrity": "sha512-+4CCab7z8G8glgJoRjAwocsgsv6VA2w7JPxFWHRc7kvz8mec1/K5LutNC2MG28Mn8mu6+bu04XZxHv5gyfT7xQ==", 855 | "dependencies": { 856 | "hyphenate-style-name": "^1.0.0", 857 | "matchmediaquery": "^0.3.0", 858 | "prop-types": "^15.6.1", 859 | "shallow-equal": "^1.2.1" 860 | }, 861 | "engines": { 862 | "node": ">=0.10" 863 | }, 864 | "peerDependencies": { 865 | "react": ">=16.8.0" 866 | } 867 | }, 868 | "node_modules/scheduler": { 869 | "version": "0.25.0", 870 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", 871 | "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", 872 | "license": "MIT" 873 | }, 874 | "node_modules/semver": { 875 | "version": "7.6.3", 876 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", 877 | "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", 878 | "license": "ISC", 879 | "optional": true, 880 | "bin": { 881 | "semver": "bin/semver.js" 882 | }, 883 | "engines": { 884 | "node": ">=10" 885 | } 886 | }, 887 | "node_modules/shallow-equal": { 888 | "version": "1.2.1", 889 | "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", 890 | "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" 891 | }, 892 | "node_modules/sharp": { 893 | "version": "0.33.5", 894 | "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", 895 | "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", 896 | "hasInstallScript": true, 897 | "license": "Apache-2.0", 898 | "optional": true, 899 | "dependencies": { 900 | "color": "^4.2.3", 901 | "detect-libc": "^2.0.3", 902 | "semver": "^7.6.3" 903 | }, 904 | "engines": { 905 | "node": "^18.17.0 || ^20.3.0 || >=21.0.0" 906 | }, 907 | "funding": { 908 | "url": "https://opencollective.com/libvips" 909 | }, 910 | "optionalDependencies": { 911 | "@img/sharp-darwin-arm64": "0.33.5", 912 | "@img/sharp-darwin-x64": "0.33.5", 913 | "@img/sharp-libvips-darwin-arm64": "1.0.4", 914 | "@img/sharp-libvips-darwin-x64": "1.0.4", 915 | "@img/sharp-libvips-linux-arm": "1.0.5", 916 | "@img/sharp-libvips-linux-arm64": "1.0.4", 917 | "@img/sharp-libvips-linux-s390x": "1.0.4", 918 | "@img/sharp-libvips-linux-x64": "1.0.4", 919 | "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", 920 | "@img/sharp-libvips-linuxmusl-x64": "1.0.4", 921 | "@img/sharp-linux-arm": "0.33.5", 922 | "@img/sharp-linux-arm64": "0.33.5", 923 | "@img/sharp-linux-s390x": "0.33.5", 924 | "@img/sharp-linux-x64": "0.33.5", 925 | "@img/sharp-linuxmusl-arm64": "0.33.5", 926 | "@img/sharp-linuxmusl-x64": "0.33.5", 927 | "@img/sharp-wasm32": "0.33.5", 928 | "@img/sharp-win32-ia32": "0.33.5", 929 | "@img/sharp-win32-x64": "0.33.5" 930 | } 931 | }, 932 | "node_modules/simple-swizzle": { 933 | "version": "0.2.2", 934 | "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", 935 | "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", 936 | "license": "MIT", 937 | "optional": true, 938 | "dependencies": { 939 | "is-arrayish": "^0.3.1" 940 | } 941 | }, 942 | "node_modules/source-map-js": { 943 | "version": "1.0.2", 944 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 945 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 946 | "engines": { 947 | "node": ">=0.10.0" 948 | } 949 | }, 950 | "node_modules/streamsearch": { 951 | "version": "1.1.0", 952 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", 953 | "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", 954 | "engines": { 955 | "node": ">=10.0.0" 956 | } 957 | }, 958 | "node_modules/styled-jsx": { 959 | "version": "5.1.6", 960 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", 961 | "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", 962 | "license": "MIT", 963 | "dependencies": { 964 | "client-only": "0.0.1" 965 | }, 966 | "engines": { 967 | "node": ">= 12.0.0" 968 | }, 969 | "peerDependencies": { 970 | "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" 971 | }, 972 | "peerDependenciesMeta": { 973 | "@babel/core": { 974 | "optional": true 975 | }, 976 | "babel-plugin-macros": { 977 | "optional": true 978 | } 979 | } 980 | }, 981 | "node_modules/tslib": { 982 | "version": "2.8.1", 983 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", 984 | "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", 985 | "license": "0BSD" 986 | } 987 | }, 988 | "dependencies": { 989 | "@emnapi/runtime": { 990 | "version": "1.3.1", 991 | "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", 992 | "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==", 993 | "optional": true, 994 | "requires": { 995 | "tslib": "^2.4.0" 996 | } 997 | }, 998 | "@img/sharp-darwin-arm64": { 999 | "version": "0.33.5", 1000 | "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", 1001 | "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", 1002 | "optional": true, 1003 | "requires": { 1004 | "@img/sharp-libvips-darwin-arm64": "1.0.4" 1005 | } 1006 | }, 1007 | "@img/sharp-darwin-x64": { 1008 | "version": "0.33.5", 1009 | "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", 1010 | "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", 1011 | "optional": true, 1012 | "requires": { 1013 | "@img/sharp-libvips-darwin-x64": "1.0.4" 1014 | } 1015 | }, 1016 | "@img/sharp-libvips-darwin-arm64": { 1017 | "version": "1.0.4", 1018 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", 1019 | "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", 1020 | "optional": true 1021 | }, 1022 | "@img/sharp-libvips-darwin-x64": { 1023 | "version": "1.0.4", 1024 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", 1025 | "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", 1026 | "optional": true 1027 | }, 1028 | "@img/sharp-libvips-linux-arm": { 1029 | "version": "1.0.5", 1030 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", 1031 | "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", 1032 | "optional": true 1033 | }, 1034 | "@img/sharp-libvips-linux-arm64": { 1035 | "version": "1.0.4", 1036 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", 1037 | "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", 1038 | "optional": true 1039 | }, 1040 | "@img/sharp-libvips-linux-s390x": { 1041 | "version": "1.0.4", 1042 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", 1043 | "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", 1044 | "optional": true 1045 | }, 1046 | "@img/sharp-libvips-linux-x64": { 1047 | "version": "1.0.4", 1048 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", 1049 | "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", 1050 | "optional": true 1051 | }, 1052 | "@img/sharp-libvips-linuxmusl-arm64": { 1053 | "version": "1.0.4", 1054 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", 1055 | "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", 1056 | "optional": true 1057 | }, 1058 | "@img/sharp-libvips-linuxmusl-x64": { 1059 | "version": "1.0.4", 1060 | "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", 1061 | "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", 1062 | "optional": true 1063 | }, 1064 | "@img/sharp-linux-arm": { 1065 | "version": "0.33.5", 1066 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", 1067 | "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", 1068 | "optional": true, 1069 | "requires": { 1070 | "@img/sharp-libvips-linux-arm": "1.0.5" 1071 | } 1072 | }, 1073 | "@img/sharp-linux-arm64": { 1074 | "version": "0.33.5", 1075 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", 1076 | "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", 1077 | "optional": true, 1078 | "requires": { 1079 | "@img/sharp-libvips-linux-arm64": "1.0.4" 1080 | } 1081 | }, 1082 | "@img/sharp-linux-s390x": { 1083 | "version": "0.33.5", 1084 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", 1085 | "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", 1086 | "optional": true, 1087 | "requires": { 1088 | "@img/sharp-libvips-linux-s390x": "1.0.4" 1089 | } 1090 | }, 1091 | "@img/sharp-linux-x64": { 1092 | "version": "0.33.5", 1093 | "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", 1094 | "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", 1095 | "optional": true, 1096 | "requires": { 1097 | "@img/sharp-libvips-linux-x64": "1.0.4" 1098 | } 1099 | }, 1100 | "@img/sharp-linuxmusl-arm64": { 1101 | "version": "0.33.5", 1102 | "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", 1103 | "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", 1104 | "optional": true, 1105 | "requires": { 1106 | "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" 1107 | } 1108 | }, 1109 | "@img/sharp-linuxmusl-x64": { 1110 | "version": "0.33.5", 1111 | "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", 1112 | "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", 1113 | "optional": true, 1114 | "requires": { 1115 | "@img/sharp-libvips-linuxmusl-x64": "1.0.4" 1116 | } 1117 | }, 1118 | "@img/sharp-wasm32": { 1119 | "version": "0.33.5", 1120 | "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", 1121 | "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", 1122 | "optional": true, 1123 | "requires": { 1124 | "@emnapi/runtime": "^1.2.0" 1125 | } 1126 | }, 1127 | "@img/sharp-win32-ia32": { 1128 | "version": "0.33.5", 1129 | "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", 1130 | "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", 1131 | "optional": true 1132 | }, 1133 | "@img/sharp-win32-x64": { 1134 | "version": "0.33.5", 1135 | "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", 1136 | "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", 1137 | "optional": true 1138 | }, 1139 | "@next/env": { 1140 | "version": "15.0.4", 1141 | "resolved": "https://registry.npmjs.org/@next/env/-/env-15.0.4.tgz", 1142 | "integrity": "sha512-WNRvtgnRVDD4oM8gbUcRc27IAhaL4eXQ/2ovGbgLnPGUvdyDr8UdXP4Q/IBDdAdojnD2eScryIDirv0YUCjUVw==" 1143 | }, 1144 | "@next/swc-darwin-arm64": { 1145 | "version": "15.0.4", 1146 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.0.4.tgz", 1147 | "integrity": "sha512-QecQXPD0yRHxSXWL5Ff80nD+A56sUXZG9koUsjWJwA2Z0ZgVQfuy7gd0/otjxoOovPVHR2eVEvPMHbtZP+pf9w==", 1148 | "optional": true 1149 | }, 1150 | "@next/swc-darwin-x64": { 1151 | "version": "15.0.4", 1152 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.0.4.tgz", 1153 | "integrity": "sha512-pb7Bye3y1Og3PlCtnz2oO4z+/b3pH2/HSYkLbL0hbVuTGil7fPen8/3pyyLjdiTLcFJ+ymeU3bck5hd4IPFFCA==", 1154 | "optional": true 1155 | }, 1156 | "@next/swc-linux-arm64-gnu": { 1157 | "version": "15.0.4", 1158 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.0.4.tgz", 1159 | "integrity": "sha512-12oSaBFjGpB227VHzoXF3gJoK2SlVGmFJMaBJSu5rbpaoT5OjP5OuCLuR9/jnyBF1BAWMs/boa6mLMoJPRriMA==", 1160 | "optional": true 1161 | }, 1162 | "@next/swc-linux-arm64-musl": { 1163 | "version": "15.0.4", 1164 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.0.4.tgz", 1165 | "integrity": "sha512-QARO88fR/a+wg+OFC3dGytJVVviiYFEyjc/Zzkjn/HevUuJ7qGUUAUYy5PGVWY1YgTzeRYz78akQrVQ8r+sMjw==", 1166 | "optional": true 1167 | }, 1168 | "@next/swc-linux-x64-gnu": { 1169 | "version": "15.0.4", 1170 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.0.4.tgz", 1171 | "integrity": "sha512-Z50b0gvYiUU1vLzfAMiChV8Y+6u/T2mdfpXPHraqpypP7yIT2UV9YBBhcwYkxujmCvGEcRTVWOj3EP7XW/wUnw==", 1172 | "optional": true 1173 | }, 1174 | "@next/swc-linux-x64-musl": { 1175 | "version": "15.0.4", 1176 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.0.4.tgz", 1177 | "integrity": "sha512-7H9C4FAsrTAbA/ENzvFWsVytqRYhaJYKa2B3fyQcv96TkOGVMcvyS6s+sj4jZlacxxTcn7ygaMXUPkEk7b78zw==", 1178 | "optional": true 1179 | }, 1180 | "@next/swc-win32-arm64-msvc": { 1181 | "version": "15.0.4", 1182 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.0.4.tgz", 1183 | "integrity": "sha512-Z/v3WV5xRaeWlgJzN9r4PydWD8sXV35ywc28W63i37G2jnUgScA4OOgS8hQdiXLxE3gqfSuHTicUhr7931OXPQ==", 1184 | "optional": true 1185 | }, 1186 | "@next/swc-win32-x64-msvc": { 1187 | "version": "15.0.4", 1188 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.0.4.tgz", 1189 | "integrity": "sha512-NGLchGruagh8lQpDr98bHLyWJXOBSmkEAfK980OiNBa7vNm6PsNoPvzTfstT78WyOeMRQphEQ455rggd7Eo+Dw==", 1190 | "optional": true 1191 | }, 1192 | "@swc/counter": { 1193 | "version": "0.1.3", 1194 | "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", 1195 | "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" 1196 | }, 1197 | "@swc/helpers": { 1198 | "version": "0.5.13", 1199 | "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz", 1200 | "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==", 1201 | "requires": { 1202 | "tslib": "^2.4.0" 1203 | } 1204 | }, 1205 | "busboy": { 1206 | "version": "1.6.0", 1207 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", 1208 | "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", 1209 | "requires": { 1210 | "streamsearch": "^1.1.0" 1211 | } 1212 | }, 1213 | "caniuse-lite": { 1214 | "version": "1.0.30001588", 1215 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001588.tgz", 1216 | "integrity": "sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ==" 1217 | }, 1218 | "client-only": { 1219 | "version": "0.0.1", 1220 | "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", 1221 | "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" 1222 | }, 1223 | "color": { 1224 | "version": "4.2.3", 1225 | "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", 1226 | "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", 1227 | "optional": true, 1228 | "requires": { 1229 | "color-convert": "^2.0.1", 1230 | "color-string": "^1.9.0" 1231 | } 1232 | }, 1233 | "color-convert": { 1234 | "version": "2.0.1", 1235 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1236 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1237 | "optional": true, 1238 | "requires": { 1239 | "color-name": "~1.1.4" 1240 | } 1241 | }, 1242 | "color-name": { 1243 | "version": "1.1.4", 1244 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1245 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1246 | "optional": true 1247 | }, 1248 | "color-string": { 1249 | "version": "1.9.1", 1250 | "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", 1251 | "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", 1252 | "optional": true, 1253 | "requires": { 1254 | "color-name": "^1.0.0", 1255 | "simple-swizzle": "^0.2.2" 1256 | } 1257 | }, 1258 | "css-mediaquery": { 1259 | "version": "0.1.2", 1260 | "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz", 1261 | "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==" 1262 | }, 1263 | "date-fns": { 1264 | "version": "2.28.0", 1265 | "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", 1266 | "integrity": "sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw==" 1267 | }, 1268 | "detect-libc": { 1269 | "version": "2.0.3", 1270 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", 1271 | "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", 1272 | "optional": true 1273 | }, 1274 | "hyphenate-style-name": { 1275 | "version": "1.0.4", 1276 | "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", 1277 | "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" 1278 | }, 1279 | "immer": { 1280 | "version": "10.0.2", 1281 | "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.2.tgz", 1282 | "integrity": "sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA==" 1283 | }, 1284 | "is-arrayish": { 1285 | "version": "0.3.2", 1286 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", 1287 | "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", 1288 | "optional": true 1289 | }, 1290 | "js-tokens": { 1291 | "version": "4.0.0", 1292 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1293 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1294 | }, 1295 | "loose-envify": { 1296 | "version": "1.4.0", 1297 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 1298 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 1299 | "requires": { 1300 | "js-tokens": "^3.0.0 || ^4.0.0" 1301 | } 1302 | }, 1303 | "matchmediaquery": { 1304 | "version": "0.3.1", 1305 | "resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.3.1.tgz", 1306 | "integrity": "sha512-Hlk20WQHRIm9EE9luN1kjRjYXAQToHOIAHPJn9buxBwuhfTHoKUcX+lXBbxc85DVQfXYbEQ4HcwQdd128E3qHQ==", 1307 | "requires": { 1308 | "css-mediaquery": "^0.1.2" 1309 | } 1310 | }, 1311 | "nanoid": { 1312 | "version": "3.3.7", 1313 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", 1314 | "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" 1315 | }, 1316 | "next": { 1317 | "version": "15.0.4", 1318 | "resolved": "https://registry.npmjs.org/next/-/next-15.0.4.tgz", 1319 | "integrity": "sha512-nuy8FH6M1FG0lktGotamQDCXhh5hZ19Vo0ht1AOIQWrYJLP598TIUagKtvJrfJ5AGwB/WmDqkKaKhMpVifvGPA==", 1320 | "requires": { 1321 | "@next/env": "15.0.4", 1322 | "@next/swc-darwin-arm64": "15.0.4", 1323 | "@next/swc-darwin-x64": "15.0.4", 1324 | "@next/swc-linux-arm64-gnu": "15.0.4", 1325 | "@next/swc-linux-arm64-musl": "15.0.4", 1326 | "@next/swc-linux-x64-gnu": "15.0.4", 1327 | "@next/swc-linux-x64-musl": "15.0.4", 1328 | "@next/swc-win32-arm64-msvc": "15.0.4", 1329 | "@next/swc-win32-x64-msvc": "15.0.4", 1330 | "@swc/counter": "0.1.3", 1331 | "@swc/helpers": "0.5.13", 1332 | "busboy": "1.6.0", 1333 | "caniuse-lite": "^1.0.30001579", 1334 | "postcss": "8.4.31", 1335 | "sharp": "^0.33.5", 1336 | "styled-jsx": "5.1.6" 1337 | } 1338 | }, 1339 | "object-assign": { 1340 | "version": "4.1.1", 1341 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1342 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" 1343 | }, 1344 | "picocolors": { 1345 | "version": "1.0.0", 1346 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1347 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 1348 | }, 1349 | "postcss": { 1350 | "version": "8.4.31", 1351 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", 1352 | "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", 1353 | "requires": { 1354 | "nanoid": "^3.3.6", 1355 | "picocolors": "^1.0.0", 1356 | "source-map-js": "^1.0.2" 1357 | } 1358 | }, 1359 | "prop-types": { 1360 | "version": "15.8.1", 1361 | "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", 1362 | "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", 1363 | "requires": { 1364 | "loose-envify": "^1.4.0", 1365 | "object-assign": "^4.1.1", 1366 | "react-is": "^16.13.1" 1367 | } 1368 | }, 1369 | "react": { 1370 | "version": "19.0.0", 1371 | "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", 1372 | "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==" 1373 | }, 1374 | "react-dom": { 1375 | "version": "19.0.0", 1376 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz", 1377 | "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==", 1378 | "requires": { 1379 | "scheduler": "^0.25.0" 1380 | } 1381 | }, 1382 | "react-feather": { 1383 | "version": "2.0.10", 1384 | "resolved": "https://registry.npmjs.org/react-feather/-/react-feather-2.0.10.tgz", 1385 | "integrity": "sha512-BLhukwJ+Z92Nmdcs+EMw6dy1Z/VLiJTzEQACDUEnWMClhYnFykJCGWQx+NmwP/qQHGX/5CzQ+TGi8ofg2+HzVQ==", 1386 | "requires": { 1387 | "prop-types": "^15.7.2" 1388 | } 1389 | }, 1390 | "react-is": { 1391 | "version": "16.13.1", 1392 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", 1393 | "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" 1394 | }, 1395 | "react-responsive": { 1396 | "version": "9.0.2", 1397 | "resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-9.0.2.tgz", 1398 | "integrity": "sha512-+4CCab7z8G8glgJoRjAwocsgsv6VA2w7JPxFWHRc7kvz8mec1/K5LutNC2MG28Mn8mu6+bu04XZxHv5gyfT7xQ==", 1399 | "requires": { 1400 | "hyphenate-style-name": "^1.0.0", 1401 | "matchmediaquery": "^0.3.0", 1402 | "prop-types": "^15.6.1", 1403 | "shallow-equal": "^1.2.1" 1404 | } 1405 | }, 1406 | "scheduler": { 1407 | "version": "0.25.0", 1408 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", 1409 | "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==" 1410 | }, 1411 | "semver": { 1412 | "version": "7.6.3", 1413 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", 1414 | "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", 1415 | "optional": true 1416 | }, 1417 | "shallow-equal": { 1418 | "version": "1.2.1", 1419 | "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz", 1420 | "integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==" 1421 | }, 1422 | "sharp": { 1423 | "version": "0.33.5", 1424 | "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", 1425 | "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", 1426 | "optional": true, 1427 | "requires": { 1428 | "@img/sharp-darwin-arm64": "0.33.5", 1429 | "@img/sharp-darwin-x64": "0.33.5", 1430 | "@img/sharp-libvips-darwin-arm64": "1.0.4", 1431 | "@img/sharp-libvips-darwin-x64": "1.0.4", 1432 | "@img/sharp-libvips-linux-arm": "1.0.5", 1433 | "@img/sharp-libvips-linux-arm64": "1.0.4", 1434 | "@img/sharp-libvips-linux-s390x": "1.0.4", 1435 | "@img/sharp-libvips-linux-x64": "1.0.4", 1436 | "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", 1437 | "@img/sharp-libvips-linuxmusl-x64": "1.0.4", 1438 | "@img/sharp-linux-arm": "0.33.5", 1439 | "@img/sharp-linux-arm64": "0.33.5", 1440 | "@img/sharp-linux-s390x": "0.33.5", 1441 | "@img/sharp-linux-x64": "0.33.5", 1442 | "@img/sharp-linuxmusl-arm64": "0.33.5", 1443 | "@img/sharp-linuxmusl-x64": "0.33.5", 1444 | "@img/sharp-wasm32": "0.33.5", 1445 | "@img/sharp-win32-ia32": "0.33.5", 1446 | "@img/sharp-win32-x64": "0.33.5", 1447 | "color": "^4.2.3", 1448 | "detect-libc": "^2.0.3", 1449 | "semver": "^7.6.3" 1450 | } 1451 | }, 1452 | "simple-swizzle": { 1453 | "version": "0.2.2", 1454 | "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", 1455 | "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", 1456 | "optional": true, 1457 | "requires": { 1458 | "is-arrayish": "^0.3.1" 1459 | } 1460 | }, 1461 | "source-map-js": { 1462 | "version": "1.0.2", 1463 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 1464 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 1465 | }, 1466 | "streamsearch": { 1467 | "version": "1.1.0", 1468 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", 1469 | "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" 1470 | }, 1471 | "styled-jsx": { 1472 | "version": "5.1.6", 1473 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", 1474 | "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", 1475 | "requires": { 1476 | "client-only": "0.0.1" 1477 | } 1478 | }, 1479 | "tslib": { 1480 | "version": "2.8.1", 1481 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", 1482 | "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" 1483 | } 1484 | } 1485 | } 1486 | -------------------------------------------------------------------------------- /public/cleveland-museum.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gangludev/next-ssr-exercises/30c358d7b3e72daa7a6a98a82ed813cc30160960/public/cleveland-museum.jpg -------------------------------------------------------------------------------- /public/gwen-artist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gangludev/next-ssr-exercises/30c358d7b3e72daa7a6a98a82ed813cc30160960/public/gwen-artist.png -------------------------------------------------------------------------------- /public/koopa-troopa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gangludev/next-ssr-exercises/30c358d7b3e72daa7a6a98a82ed813cc30160960/public/koopa-troopa.png -------------------------------------------------------------------------------- /public/pikachu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gangludev/next-ssr-exercises/30c358d7b3e72daa7a6a98a82ed813cc30160960/public/pikachu.png -------------------------------------------------------------------------------- /public/shopping-cart-backpack.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gangludev/next-ssr-exercises/30c358d7b3e72daa7a6a98a82ed813cc30160960/public/shopping-cart-backpack.jpg -------------------------------------------------------------------------------- /public/shopping-cart-can-opener.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gangludev/next-ssr-exercises/30c358d7b3e72daa7a6a98a82ed813cc30160960/public/shopping-cart-can-opener.jpg -------------------------------------------------------------------------------- /public/shopping-cart-coffee-machine.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gangludev/next-ssr-exercises/30c358d7b3e72daa7a6a98a82ed813cc30160960/public/shopping-cart-coffee-machine.jpg -------------------------------------------------------------------------------- /public/shopping-cart-night-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gangludev/next-ssr-exercises/30c358d7b3e72daa7a6a98a82ed813cc30160960/public/shopping-cart-night-light.png -------------------------------------------------------------------------------- /public/vader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gangludev/next-ssr-exercises/30c358d7b3e72daa7a6a98a82ed813cc30160960/public/vader.png -------------------------------------------------------------------------------- /src/app/exercises/01-clock/Clock.js: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | import React from 'react'; 3 | import format from 'date-fns/format'; 4 | 5 | function Clock() { 6 | const [time, setTime] = React.useState(new Date()); 7 | 8 | React.useEffect(() => { 9 | const intervalId = window.setInterval(() => { 10 | setTime(new Date()); 11 | }, 50); 12 | 13 | return () => { 14 | window.clearInterval(intervalId); 15 | }; 16 | }, []); 17 | 18 | return ( 19 |
{format(time, 'hh:mm:ss.S a')}
20 | ); 21 | } 22 | 23 | export default Clock; 24 | -------------------------------------------------------------------------------- /src/app/exercises/01-clock/page.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import Clock from './Clock'; 4 | import './styles.css'; 5 | 6 | function ClockExercise() { 7 | return ( 8 |Title | 10 |Price | 11 |# | 12 |13 | |
---|---|---|---|
{item.title} | 19 |${item.price} | 20 |{item.quantity} | 21 |22 | 27 | | 28 |
Your Cart is Empty
15 |Subtotal | 39 |{priceFormatter.format(subtotal)} | 40 |
---|---|
Taxes | 43 |{priceFormatter.format(taxes)} | 44 |
Total | 47 |{priceFormatter.format(total)} | 48 |
{price}
15 | 18 |15 | Interviewer: It's a pleasure to 16 | have you with us today. Your work has recently been 17 | making waves on social media. Can you start by 18 | telling us a little about yourself and your journey 19 | into the world of art? 20 |
21 | 22 |23 | Gwen: I've always had a fondness 24 | for both traditional art and popular culture. I 25 | studied fine art in college, but found that I kept 26 | coming back to the characters and stories that I 27 | grew up with. Combining the two felt natural, a way 28 | to bridge the gap between high art and everyday pop 29 | culture. 30 |
31 | 32 |33 | Interviewer: What inspired you to 34 | combine traditional oil painting with modern pop 35 | culture references? 36 |
37 | 38 |39 | Gwen: I think there's a certain 40 | beauty in taking something modern, something often 41 | seen as lowbrow or transient, and giving it a 42 | timeless quality through the medium of oil painting. 43 | There's also an element of nostalgia and joy in 44 | these characters that I think resonates with a lot 45 | of people, myself included. 46 |
47 | 48 |49 | Interviewer: Your style is very 50 | unique. How did you develop this approach? 51 |
52 | 53 |54 | Gwen: It was a process of trial and 55 | error, really. Initially, I tried to keep the pop 56 | culture and traditional elements separate, but it 57 | felt disjointed. I started experimenting with 58 | blending the two more seamlessly, incorporating 59 | elements from each into a cohesive whole. I wanted 60 | each painting to feel like it could hang in a 61 | museum, but also fit right in at a comic convention. 62 |
63 | 64 |65 | Interviewer: What message, if any, 66 | do you hope people take away from your artwork? 67 |
68 | 69 |70 | Gwen: I hope people see that art 71 | can be fun, and that it doesn't have to fit into a 72 | traditional box to be valuable or meaningful. I also 73 | hope that it encourages people to embrace the things 74 | that they love, even if they might seem silly or 75 | inconsequential to others. 76 |
77 | 78 |79 | Interviewer: Fascinating. Lastly, 80 | what's next for you? Can we expect more of these 81 | incredible crossovers in the future? 82 |
83 | 84 |85 | Gwen: I definitely plan on 86 | continuing this series, there's still so many 87 | characters I want to explore. I'm also considering 88 | branching out into other mediums, maybe even some 3D 89 | work. As for what's next, well, you'll just have to 90 | wait and see. 91 |
92 | 93 |7 | This repository consists of three exercises: 8 |
9 |