diff --git a/Makefile b/Makefile index a2a0e91..0b5c740 100644 --- a/Makefile +++ b/Makefile @@ -5,20 +5,16 @@ scripts_dir := ./scripts help: @cat $(scripts_dir)/help.txt -.PHONY: setup_compose -setup_compose: - $(scripts_dir)/setup_compose.sh - -.PHONY: build -build: setup_compose - $(compose) build - -.PHONY: setup_web -setup_web: build - $(scripts_dir)/setup_web.sh +# Native +.PHONY: dev +dev: + @$(scripts_dir)/setup_native.sh + cd web && pnpm run dev +# Docker Compose .PHONY: up -up: setup_web +up: + @$(scripts_dir)/setup_compose.sh $(compose) up -d .PHONY: down @@ -33,3 +29,4 @@ logs: shell: $(compose) run --rm web bash + diff --git a/README.md b/README.md index 2db08c2..4dae5cd 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,23 @@ ## Run +Choose your preferred development environment: + +### Native + +```bash +make dev +``` + +### Docker Compose + ```bash -make +make up ``` ## Tech Stack -- Docker Compose - TypeScript +- React - Next.js - MDX diff --git a/scripts/help.txt b/scripts/help.txt index 82b654d..d407bed 100644 --- a/scripts/help.txt +++ b/scripts/help.txt @@ -1,9 +1,13 @@ usage: make [command] + +General: help: Show this help message - up: Launch the project in detached mode - setup_web: Prepare the web container for development - build: Build the project using docker compose - setup_compose: Run initial setup scripts for docker compose - down: Take down the containers - logs: Follow logs + +Native: + dev: Set up and start the development server natively + +Docker Compose: + up: Set up and start the development server in Docker + down: Stop the Docker containers + logs: Follow Docker container logs shell: Open a bash shell in the web container diff --git a/scripts/setup_compose.sh b/scripts/setup_compose.sh index 8afa6cd..491f50d 100755 --- a/scripts/setup_compose.sh +++ b/scripts/setup_compose.sh @@ -1,6 +1,20 @@ -#!/bin/env bash +#!/usr/bin/env bash + +set -e + +echo "Setting up docker compose environment..." if [ ! -f compose.override.yaml ]; then - echo "compose.override.yaml not found, creating from example" + echo "Creating compose.override.yaml..." cp compose.override.example.yaml compose.override.yaml fi + +echo "Building containers..." +docker compose build + +if [ ! -d web/node_modules ]; then + echo "Installing dependencies in container..." + docker compose run --rm web pnpm install +fi + +echo "Docker compose setup complete!" diff --git a/scripts/setup_native.sh b/scripts/setup_native.sh new file mode 100755 index 0000000..515b345 --- /dev/null +++ b/scripts/setup_native.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +set -e + +echo "Setting up native environment..." + +cd web + +if ! command -v pnpm &> /dev/null; then + echo "Error: pnpm is not installed" + exit 1 +fi + +if [ ! -d node_modules ]; then + echo "Installing dependencies..." + pnpm install +fi + +echo "Native setup complete!" diff --git a/scripts/setup_web.sh b/scripts/setup_web.sh deleted file mode 100755 index e93306c..0000000 --- a/scripts/setup_web.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/env bash - -if [ ! -d web/node_modules ]; then - echo "node_modules not found, installing" - docker compose run web pnpm install -fi diff --git a/web/next-env.d.ts b/web/next-env.d.ts index 830fb59..c4b7818 100644 --- a/web/next-env.d.ts +++ b/web/next-env.d.ts @@ -1,6 +1,6 @@ /// /// -/// +import "./.next/dev/types/routes.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/web/next.config.ts b/web/next.config.ts index 9e96a7c..50b7a6b 100644 --- a/web/next.config.ts +++ b/web/next.config.ts @@ -2,6 +2,7 @@ import createMDX from "@next/mdx"; import type { NextConfig } from "next"; const nextConfig: NextConfig = { + cacheComponents: true, experimental: { // typedRoutes: true, // mdxRs: true, diff --git a/web/package.json b/web/package.json index defbf7a..6f854bd 100644 --- a/web/package.json +++ b/web/package.json @@ -3,8 +3,8 @@ "version": "1.0.0", "private": true, "scripts": { - "dev": "next dev --turbopack -p 4200", - "build": "next build --turbopack", + "dev": "next dev -p 4200", + "build": "next build", "start": "next start -p 4200", "lint": "biome lint", "lint:fix": "biome lint --write", @@ -21,7 +21,7 @@ "@highlightjs/cdn-assets": "^11.11.1", "@mdx-js/loader": "^3.1.1", "@mdx-js/react": "^3.1.1", - "@next/mdx": "^15.5.4", + "@next/mdx": "16.0.3", "@radix-ui/react-accordion": "^1.2.12", "@radix-ui/react-label": "^2.1.7", "@radix-ui/react-radio-group": "^1.3.8", @@ -35,19 +35,19 @@ "@types/mdx": "^2.0.13", "@types/node": "^24.6.0", "@types/papaparse": "^5.3.16", - "@types/react": "^19.1.16", - "@types/react-dom": "^19.1.9", + "@types/react": "19.2.5", + "@types/react-dom": "19.2.3", "@types/three": "^0.180.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "katex": "^0.16.22", "lucide-react": "^0.544.0", - "next": "^15.5.4", + "next": "16.0.3", "next-themes": "^0.4.6", "papaparse": "^5.5.3", "postcss": "^8.5.6", - "react": "^19.1.1", - "react-dom": "^19.1.1", + "react": "19.2.0", + "react-dom": "19.2.0", "recharts": "^3.2.1", "rehype-autolink-headings": "^7.1.0", "rehype-highlight": "^7.0.2", @@ -65,5 +65,15 @@ "devDependencies": { "@biomejs/biome": "2.2.4" }, - "packageManager": "pnpm@10.18.1+sha512.77a884a165cbba2d8d1c19e3b4880eee6d2fcabd0d879121e282196b80042351d5eb3ca0935fa599da1dc51265cc68816ad2bddd2a2de5ea9fdf92adbec7cd34" + "packageManager": "pnpm@10.18.1+sha512.77a884a165cbba2d8d1c19e3b4880eee6d2fcabd0d879121e282196b80042351d5eb3ca0935fa599da1dc51265cc68816ad2bddd2a2de5ea9fdf92adbec7cd34", + "pnpm": { + "overrides": { + "@types/react": "19.2.5", + "@types/react-dom": "19.2.3" + }, + "onlyBuiltDependencies": [ + "@tailwindcss/oxide", + "sharp" + ] + } } diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml index b343522..f6f6035 100644 --- a/web/pnpm-lock.yaml +++ b/web/pnpm-lock.yaml @@ -4,6 +4,10 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + '@types/react': 19.2.5 + '@types/react-dom': 19.2.3 + importers: .: @@ -19,7 +23,7 @@ importers: version: 7.0.1 '@fortawesome/react-fontawesome': specifier: ^3.0.2 - version: 3.0.2(@fortawesome/fontawesome-svg-core@7.0.1)(react@19.1.1) + version: 3.0.2(@fortawesome/fontawesome-svg-core@7.0.1)(react@19.2.0) '@highlightjs/cdn-assets': specifier: ^11.11.1 version: 11.11.1 @@ -28,28 +32,28 @@ importers: version: 3.1.1(webpack@5.91.0) '@mdx-js/react': specifier: ^3.1.1 - version: 3.1.1(@types/react@19.1.16)(react@19.1.1) + version: 3.1.1(@types/react@19.2.5)(react@19.2.0) '@next/mdx': - specifier: ^15.5.4 - version: 15.5.4(@mdx-js/loader@3.1.1(webpack@5.91.0))(@mdx-js/react@3.1.1(@types/react@19.1.16)(react@19.1.1)) + specifier: 16.0.3 + version: 16.0.3(@mdx-js/loader@3.1.1(webpack@5.91.0))(@mdx-js/react@3.1.1(@types/react@19.2.5)(react@19.2.0)) '@radix-ui/react-accordion': specifier: ^1.2.12 - version: 1.2.12(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-label': specifier: ^2.1.7 - version: 2.1.7(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-radio-group': specifier: ^1.3.8 - version: 1.3.8(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-slider': specifier: ^1.3.6 - version: 1.3.6(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 1.3.6(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@radix-ui/react-slot': specifier: ^1.2.3 - version: 1.2.3(@types/react@19.1.16)(react@19.1.1) + version: 1.2.3(@types/react@19.2.5)(react@19.2.0) '@react-three/fiber': specifier: ^9.3.0 - version: 9.3.0(@types/react@19.1.16)(immer@10.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(three@0.180.0) + version: 9.3.0(@types/react@19.2.5)(immer@10.1.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(three@0.180.0) '@tailwindcss/forms': specifier: ^0.5.10 version: 0.5.10(tailwindcss@4.1.13) @@ -61,7 +65,7 @@ importers: version: 0.5.19(tailwindcss@4.1.13) '@tanstack/react-query': specifier: ^5.90.2 - version: 5.90.2(react@19.1.1) + version: 5.90.2(react@19.2.0) '@types/mdx': specifier: ^2.0.13 version: 2.0.13 @@ -72,11 +76,11 @@ importers: specifier: ^5.3.16 version: 5.3.16 '@types/react': - specifier: ^19.1.16 - version: 19.1.16 + specifier: 19.2.5 + version: 19.2.5 '@types/react-dom': - specifier: ^19.1.9 - version: 19.1.9(@types/react@19.1.16) + specifier: 19.2.3 + version: 19.2.3(@types/react@19.2.5) '@types/three': specifier: ^0.180.0 version: 0.180.0 @@ -91,13 +95,13 @@ importers: version: 0.16.22 lucide-react: specifier: ^0.544.0 - version: 0.544.0(react@19.1.1) + version: 0.544.0(react@19.2.0) next: - specifier: ^15.5.4 - version: 15.5.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + specifier: 16.0.3 + version: 16.0.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0) next-themes: specifier: ^0.4.6 - version: 0.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + version: 0.4.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0) papaparse: specifier: ^5.5.3 version: 5.5.3 @@ -105,14 +109,14 @@ importers: specifier: ^8.5.6 version: 8.5.6 react: - specifier: ^19.1.1 - version: 19.1.1 + specifier: 19.2.0 + version: 19.2.0 react-dom: - specifier: ^19.1.1 - version: 19.1.1(react@19.1.1) + specifier: 19.2.0 + version: 19.2.0(react@19.2.0) recharts: specifier: ^3.2.1 - version: 3.2.1(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react-is@18.3.1)(react@19.1.1)(redux@5.0.1) + version: 3.2.1(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react-is@18.3.1)(react@19.2.0)(redux@5.0.1) rehype-autolink-headings: specifier: ^7.1.0 version: 7.1.0 @@ -413,14 +417,14 @@ packages: '@mdx-js/react@3.1.1': resolution: {integrity: sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw==} peerDependencies: - '@types/react': '>=16' + '@types/react': 19.2.5 react: '>=16' - '@next/env@15.5.4': - resolution: {integrity: sha512-27SQhYp5QryzIT5uO8hq99C69eLQ7qkzkDPsk3N+GuS2XgOgoYEeOav7Pf8Tn4drECOVDsDg8oj+/DVy8qQL2A==} + '@next/env@16.0.3': + resolution: {integrity: sha512-IqgtY5Vwsm14mm/nmQaRMmywCU+yyMIYfk3/MHZ2ZTJvwVbBn3usZnjMi1GacrMVzVcAxJShTCpZlPs26EdEjQ==} - '@next/mdx@15.5.4': - resolution: {integrity: sha512-QUc14KkswCau2/Lul13t13v8QYRiEh3aeyUMUix5mK/Zd8c/J9NQuVvLGhxS7fxGPU+fOcv0GaXqZshkvNaX7A==} + '@next/mdx@16.0.3': + resolution: {integrity: sha512-uVl2JSEGAjBV+EVnpt1cZN88SK3lJ2n7Fc+iqTsgVx2g9+Y6ru+P6nuUgXd38OHPUIwzL6k2V1u4iV3kwuTySQ==} peerDependencies: '@mdx-js/loader': '>=0.15.0' '@mdx-js/react': '>=0.15.0' @@ -430,50 +434,50 @@ packages: '@mdx-js/react': optional: true - '@next/swc-darwin-arm64@15.5.4': - resolution: {integrity: sha512-nopqz+Ov6uvorej8ndRX6HlxCYWCO3AHLfKK2TYvxoSB2scETOcfm/HSS3piPqc3A+MUgyHoqE6je4wnkjfrOA==} + '@next/swc-darwin-arm64@16.0.3': + resolution: {integrity: sha512-MOnbd92+OByu0p6QBAzq1ahVWzF6nyfiH07dQDez4/Nku7G249NjxDVyEfVhz8WkLiOEU+KFVnqtgcsfP2nLXg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@15.5.4': - resolution: {integrity: sha512-QOTCFq8b09ghfjRJKfb68kU9k2K+2wsC4A67psOiMn849K9ZXgCSRQr0oVHfmKnoqCbEmQWG1f2h1T2vtJJ9mA==} + '@next/swc-darwin-x64@16.0.3': + resolution: {integrity: sha512-i70C4O1VmbTivYdRlk+5lj9xRc2BlK3oUikt3yJeHT1unL4LsNtN7UiOhVanFdc7vDAgZn1tV/9mQwMkWOJvHg==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@15.5.4': - resolution: {integrity: sha512-eRD5zkts6jS3VfE/J0Kt1VxdFqTnMc3QgO5lFE5GKN3KDI/uUpSyK3CjQHmfEkYR4wCOl0R0XrsjpxfWEA++XA==} + '@next/swc-linux-arm64-gnu@16.0.3': + resolution: {integrity: sha512-O88gCZ95sScwD00mn/AtalyCoykhhlokxH/wi1huFK+rmiP5LAYVs/i2ruk7xST6SuXN4NI5y4Xf5vepb2jf6A==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-arm64-musl@15.5.4': - resolution: {integrity: sha512-TOK7iTxmXFc45UrtKqWdZ1shfxuL4tnVAOuuJK4S88rX3oyVV4ZkLjtMT85wQkfBrOOvU55aLty+MV8xmcJR8A==} + '@next/swc-linux-arm64-musl@16.0.3': + resolution: {integrity: sha512-CEErFt78S/zYXzFIiv18iQCbRbLgBluS8z1TNDQoyPi8/Jr5qhR3e8XHAIxVxPBjDbEMITprqELVc5KTfFj0gg==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] - '@next/swc-linux-x64-gnu@15.5.4': - resolution: {integrity: sha512-7HKolaj+481FSW/5lL0BcTkA4Ueam9SPYWyN/ib/WGAFZf0DGAN8frNpNZYFHtM4ZstrHZS3LY3vrwlIQfsiMA==} + '@next/swc-linux-x64-gnu@16.0.3': + resolution: {integrity: sha512-Tc3i+nwt6mQ+Dwzcri/WNDj56iWdycGVh5YwwklleClzPzz7UpfaMw1ci7bLl6GRYMXhWDBfe707EXNjKtiswQ==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-linux-x64-musl@15.5.4': - resolution: {integrity: sha512-nlQQ6nfgN0nCO/KuyEUwwOdwQIGjOs4WNMjEUtpIQJPR2NUfmGpW2wkJln1d4nJ7oUzd1g4GivH5GoEPBgfsdw==} + '@next/swc-linux-x64-musl@16.0.3': + resolution: {integrity: sha512-zTh03Z/5PBBPdTurgEtr6nY0vI9KR9Ifp/jZCcHlODzwVOEKcKRBtQIGrkc7izFgOMuXDEJBmirwpGqdM/ZixA==} engines: {node: '>= 10'} cpu: [x64] os: [linux] - '@next/swc-win32-arm64-msvc@15.5.4': - resolution: {integrity: sha512-PcR2bN7FlM32XM6eumklmyWLLbu2vs+D7nJX8OAIoWy69Kef8mfiN4e8TUv2KohprwifdpFKPzIP1njuCjD0YA==} + '@next/swc-win32-arm64-msvc@16.0.3': + resolution: {integrity: sha512-Jc1EHxtZovcJcg5zU43X3tuqzl/sS+CmLgjRP28ZT4vk869Ncm2NoF8qSTaL99gh6uOzgM99Shct06pSO6kA6g==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@15.5.4': - resolution: {integrity: sha512-1ur2tSHZj8Px/KMAthmuI9FMp/YFusMMGoRNJaRZMOlSkgvLjzosSdQI0cJAKogdHl3qXUQKL9MGaYvKwA7DXg==} + '@next/swc-win32-x64-msvc@16.0.3': + resolution: {integrity: sha512-N7EJ6zbxgIYpI/sWNzpVKRMbfEGgsWuOIvzkML7wxAAZhPk1Msxuo/JDu1PKjWGrAoOLaZcIX5s+/pF5LIbBBg==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -487,8 +491,8 @@ packages: '@radix-ui/react-accordion@1.2.12': resolution: {integrity: sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.5 + '@types/react-dom': 19.2.3 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -500,8 +504,8 @@ packages: '@radix-ui/react-collapsible@1.1.12': resolution: {integrity: sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.5 + '@types/react-dom': 19.2.3 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -513,8 +517,8 @@ packages: '@radix-ui/react-collection@1.1.7': resolution: {integrity: sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.5 + '@types/react-dom': 19.2.3 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -526,7 +530,7 @@ packages: '@radix-ui/react-compose-refs@1.1.2': resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.5 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -535,7 +539,7 @@ packages: '@radix-ui/react-context@1.1.2': resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.5 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -544,7 +548,7 @@ packages: '@radix-ui/react-direction@1.1.1': resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.5 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -553,7 +557,7 @@ packages: '@radix-ui/react-id@1.1.1': resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.5 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -562,8 +566,8 @@ packages: '@radix-ui/react-label@2.1.7': resolution: {integrity: sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.5 + '@types/react-dom': 19.2.3 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -575,8 +579,8 @@ packages: '@radix-ui/react-presence@1.1.5': resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.5 + '@types/react-dom': 19.2.3 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -588,8 +592,8 @@ packages: '@radix-ui/react-primitive@2.1.3': resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.5 + '@types/react-dom': 19.2.3 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -601,8 +605,8 @@ packages: '@radix-ui/react-radio-group@1.3.8': resolution: {integrity: sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.5 + '@types/react-dom': 19.2.3 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -614,8 +618,8 @@ packages: '@radix-ui/react-roving-focus@1.1.11': resolution: {integrity: sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.5 + '@types/react-dom': 19.2.3 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -627,8 +631,8 @@ packages: '@radix-ui/react-slider@1.3.6': resolution: {integrity: sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' + '@types/react': 19.2.5 + '@types/react-dom': 19.2.3 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: @@ -640,7 +644,7 @@ packages: '@radix-ui/react-slot@1.2.3': resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.5 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -649,7 +653,7 @@ packages: '@radix-ui/react-use-callback-ref@1.1.1': resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.5 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -658,7 +662,7 @@ packages: '@radix-ui/react-use-controllable-state@1.2.2': resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.5 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -667,7 +671,7 @@ packages: '@radix-ui/react-use-effect-event@0.0.2': resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.5 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -676,7 +680,7 @@ packages: '@radix-ui/react-use-layout-effect@1.1.1': resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.5 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -685,7 +689,7 @@ packages: '@radix-ui/react-use-previous@1.1.1': resolution: {integrity: sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.5 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -694,7 +698,7 @@ packages: '@radix-ui/react-use-size@1.1.1': resolution: {integrity: sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.5 react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': @@ -920,23 +924,23 @@ packages: '@types/papaparse@5.3.16': resolution: {integrity: sha512-T3VuKMC2H0lgsjI9buTB3uuKj3EMD2eap1MOuEQuBQ44EnDx/IkGhU6EwiTf9zG3za4SKlmwKAImdDKdNnCsXg==} - '@types/react-dom@19.1.9': - resolution: {integrity: sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ==} + '@types/react-dom@19.2.3': + resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} peerDependencies: - '@types/react': ^19.0.0 + '@types/react': 19.2.5 '@types/react-reconciler@0.28.9': resolution: {integrity: sha512-HHM3nxyUZ3zAylX8ZEyrDNd2XZOnQ0D5XfunJF5FLQnZbHHYq4UWvW1QfelQNXv1ICNkwYhfxjwfnqivYB6bFg==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.5 '@types/react-reconciler@0.32.1': resolution: {integrity: sha512-RsqPttsBQ+6af0nATFXJJpemYQH7kL9+xLNm1z+0MjQFDKBZDM2R6SBrjdvRmHu9i9fM6povACj57Ft+pKRNOA==} peerDependencies: - '@types/react': '*' + '@types/react': 19.2.5 - '@types/react@19.1.16': - resolution: {integrity: sha512-WBM/nDbEZmDUORKnh5i1bTnAz6vTohUf9b8esSMu+b24+srbaxa04UbJgWx78CVfNXA20sNu0odEIluZDFdCog==} + '@types/react@19.2.5': + resolution: {integrity: sha512-keKxkZMqnDicuvFoJbzrhbtdLSPhj/rZThDlKWCDbgXmUg0rEUFtRssDXKYmtXluZlIqiC5VqkCgRwzuyLHKHw==} '@types/stats.js@0.17.4': resolution: {integrity: sha512-jIBvWWShCvlBqBNIZt0KAshWpvSjhkwkEu4ZUcASoAvhmrgAUI2t1dXrjSL4xXVLB4FznPrIsX3nKXFl/Dt4vA==} @@ -1648,9 +1652,9 @@ packages: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc - next@15.5.4: - resolution: {integrity: sha512-xH4Yjhb82sFYQfY3vbkJfgSDgXvBB6a8xPs9i35k6oZJRoQRihZH+4s9Yo2qsWpzBmZ3lPXaJ2KPXLfkvW4LnA==} - engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0} + next@16.0.3: + resolution: {integrity: sha512-Ka0/iNBblPFcIubTA1Jjh6gvwqfjrGq1Y2MTI5lbjeLIAfmC+p5bQmojpRZqgHHVu5cG4+qdIiwXiBSm/8lZ3w==} + engines: {node: '>=20.9.0'} hasBin: true peerDependencies: '@opentelemetry/api': ^1.1.0 @@ -1706,10 +1710,10 @@ packages: randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - react-dom@19.1.1: - resolution: {integrity: sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==} + react-dom@19.2.0: + resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} peerDependencies: - react: ^19.1.1 + react: ^19.2.0 react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} @@ -1723,7 +1727,7 @@ packages: react-redux@9.2.0: resolution: {integrity: sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==} peerDependencies: - '@types/react': ^18.2.25 || ^19 + '@types/react': 19.2.5 react: ^18.0 || ^19 redux: ^5.0.0 peerDependenciesMeta: @@ -1741,8 +1745,8 @@ packages: react-dom: optional: true - react@19.1.1: - resolution: {integrity: sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==} + react@19.2.0: + resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==} engines: {node: '>=0.10.0'} recharts@3.2.1: @@ -1815,8 +1819,8 @@ packages: scheduler@0.25.0: resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} - scheduler@0.26.0: - resolution: {integrity: sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==} + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} schema-utils@3.3.0: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} @@ -2038,7 +2042,7 @@ packages: resolution: {integrity: sha512-gyPKpIaxY9XcO2vSMrLbiER7QMAMGOQZVRdJ6Zi782jkbzZygq5GI9nG8g+sMgitRtndwaBSl7uiqC49o1SSiw==} engines: {node: '>=12.20.0'} peerDependencies: - '@types/react': '>=18.0.0' + '@types/react': 19.2.5 immer: '>=9.0.6' react: '>=18.0.0' use-sync-external-store: '>=1.2.0' @@ -2117,10 +2121,10 @@ snapshots: dependencies: '@fortawesome/fontawesome-common-types': 7.0.1 - '@fortawesome/react-fontawesome@3.0.2(@fortawesome/fontawesome-svg-core@7.0.1)(react@19.1.1)': + '@fortawesome/react-fontawesome@3.0.2(@fortawesome/fontawesome-svg-core@7.0.1)(react@19.2.0)': dependencies: '@fortawesome/fontawesome-svg-core': 7.0.1 - react: 19.1.1 + react: 19.2.0 '@highlightjs/cdn-assets@11.11.1': {} @@ -2280,271 +2284,271 @@ snapshots: transitivePeerDependencies: - supports-color - '@mdx-js/react@3.1.1(@types/react@19.1.16)(react@19.1.1)': + '@mdx-js/react@3.1.1(@types/react@19.2.5)(react@19.2.0)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 19.1.16 - react: 19.1.1 + '@types/react': 19.2.5 + react: 19.2.0 - '@next/env@15.5.4': {} + '@next/env@16.0.3': {} - '@next/mdx@15.5.4(@mdx-js/loader@3.1.1(webpack@5.91.0))(@mdx-js/react@3.1.1(@types/react@19.1.16)(react@19.1.1))': + '@next/mdx@16.0.3(@mdx-js/loader@3.1.1(webpack@5.91.0))(@mdx-js/react@3.1.1(@types/react@19.2.5)(react@19.2.0))': dependencies: source-map: 0.7.6 optionalDependencies: '@mdx-js/loader': 3.1.1(webpack@5.91.0) - '@mdx-js/react': 3.1.1(@types/react@19.1.16)(react@19.1.1) + '@mdx-js/react': 3.1.1(@types/react@19.2.5)(react@19.2.0) - '@next/swc-darwin-arm64@15.5.4': + '@next/swc-darwin-arm64@16.0.3': optional: true - '@next/swc-darwin-x64@15.5.4': + '@next/swc-darwin-x64@16.0.3': optional: true - '@next/swc-linux-arm64-gnu@15.5.4': + '@next/swc-linux-arm64-gnu@16.0.3': optional: true - '@next/swc-linux-arm64-musl@15.5.4': + '@next/swc-linux-arm64-musl@16.0.3': optional: true - '@next/swc-linux-x64-gnu@15.5.4': + '@next/swc-linux-x64-gnu@16.0.3': optional: true - '@next/swc-linux-x64-musl@15.5.4': + '@next/swc-linux-x64-musl@16.0.3': optional: true - '@next/swc-win32-arm64-msvc@15.5.4': + '@next/swc-win32-arm64-msvc@16.0.3': optional: true - '@next/swc-win32-x64-msvc@15.5.4': + '@next/swc-win32-x64-msvc@16.0.3': optional: true '@radix-ui/number@1.1.1': {} '@radix-ui/primitive@1.1.3': {} - '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.16)(react@19.1.1) - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) + '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.5)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.16 - '@types/react-dom': 19.1.9(@types/react@19.1.16) + '@types/react': 19.2.5 + '@types/react-dom': 19.2.3(@types/react@19.2.5) - '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.16)(react@19.1.1) - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.5)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.16 - '@types/react-dom': 19.1.9(@types/react@19.1.16) + '@types/react': 19.2.5 + '@types/react-dom': 19.2.3(@types/react@19.2.5) - '@radix-ui/react-collection@1.1.7(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.16)(react@19.1.1) - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.5)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.16 - '@types/react-dom': 19.1.9(@types/react@19.1.16) + '@types/react': 19.2.5 + '@types/react-dom': 19.2.3(@types/react@19.2.5) - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.1.16)(react@19.1.1)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.5)(react@19.2.0)': dependencies: - react: 19.1.1 + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.16 + '@types/react': 19.2.5 - '@radix-ui/react-context@1.1.2(@types/react@19.1.16)(react@19.1.1)': + '@radix-ui/react-context@1.1.2(@types/react@19.2.5)(react@19.2.0)': dependencies: - react: 19.1.1 + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.16 + '@types/react': 19.2.5 - '@radix-ui/react-direction@1.1.1(@types/react@19.1.16)(react@19.1.1)': + '@radix-ui/react-direction@1.1.1(@types/react@19.2.5)(react@19.2.0)': dependencies: - react: 19.1.1 + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.16 + '@types/react': 19.2.5 - '@radix-ui/react-id@1.1.1(@types/react@19.1.16)(react@19.1.1)': + '@radix-ui/react-id@1.1.1(@types/react@19.2.5)(react@19.2.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.16)(react@19.1.1) - react: 19.1.1 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.5)(react@19.2.0) + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.16 + '@types/react': 19.2.5 - '@radix-ui/react-label@2.1.7(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@radix-ui/react-label@2.1.7(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.16 - '@types/react-dom': 19.1.9(@types/react@19.1.16) + '@types/react': 19.2.5 + '@types/react-dom': 19.2.3(@types/react@19.2.5) - '@radix-ui/react-presence@1.1.5(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.16)(react@19.1.1) - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.5)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.16 - '@types/react-dom': 19.1.9(@types/react@19.1.16) + '@types/react': 19.2.5 + '@types/react-dom': 19.2.3(@types/react@19.2.5) - '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: - '@radix-ui/react-slot': 1.2.3(@types/react@19.1.16)(react@19.1.1) - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.5)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.16 - '@types/react-dom': 19.1.9(@types/react@19.1.16) + '@types/react': 19.2.5 + '@types/react-dom': 19.2.3(@types/react@19.2.5) - '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.16)(react@19.1.1) - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.5)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.16 - '@types/react-dom': 19.1.9(@types/react@19.1.16) + '@types/react': 19.2.5 + '@types/react-dom': 19.2.3(@types/react@19.2.5) - '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-id': 1.1.1(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.16)(react@19.1.1) - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.5)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.16 - '@types/react-dom': 19.1.9(@types/react@19.1.16) + '@types/react': 19.2.5 + '@types/react-dom': 19.2.3(@types/react@19.2.5) - '@radix-ui/react-slider@1.3.6(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)': + '@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-context': 1.1.2(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-direction': 1.1.1(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.1.9(@types/react@19.1.16))(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.1.16)(react@19.1.1) - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.5))(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.5)(react@19.2.0) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.16 - '@types/react-dom': 19.1.9(@types/react@19.1.16) + '@types/react': 19.2.5 + '@types/react-dom': 19.2.3(@types/react@19.2.5) - '@radix-ui/react-slot@1.2.3(@types/react@19.1.16)(react@19.1.1)': + '@radix-ui/react-slot@1.2.3(@types/react@19.2.5)(react@19.2.0)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.1.16)(react@19.1.1) - react: 19.1.1 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.5)(react@19.2.0) + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.16 + '@types/react': 19.2.5 - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.1.16)(react@19.1.1)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.5)(react@19.2.0)': dependencies: - react: 19.1.1 + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.16 + '@types/react': 19.2.5 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.1.16)(react@19.1.1)': + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.5)(react@19.2.0)': dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.1.16)(react@19.1.1) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.16)(react@19.1.1) - react: 19.1.1 + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.5)(react@19.2.0) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.5)(react@19.2.0) + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.16 + '@types/react': 19.2.5 - '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.1.16)(react@19.1.1)': + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.5)(react@19.2.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.16)(react@19.1.1) - react: 19.1.1 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.5)(react@19.2.0) + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.16 + '@types/react': 19.2.5 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.1.16)(react@19.1.1)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.5)(react@19.2.0)': dependencies: - react: 19.1.1 + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.16 + '@types/react': 19.2.5 - '@radix-ui/react-use-previous@1.1.1(@types/react@19.1.16)(react@19.1.1)': + '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.5)(react@19.2.0)': dependencies: - react: 19.1.1 + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.16 + '@types/react': 19.2.5 - '@radix-ui/react-use-size@1.1.1(@types/react@19.1.16)(react@19.1.1)': + '@radix-ui/react-use-size@1.1.1(@types/react@19.2.5)(react@19.2.0)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.1.16)(react@19.1.1) - react: 19.1.1 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.5)(react@19.2.0) + react: 19.2.0 optionalDependencies: - '@types/react': 19.1.16 + '@types/react': 19.2.5 - '@react-three/fiber@9.3.0(@types/react@19.1.16)(immer@10.1.3)(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(three@0.180.0)': + '@react-three/fiber@9.3.0(@types/react@19.2.5)(immer@10.1.3)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(three@0.180.0)': dependencies: '@babel/runtime': 7.28.4 - '@types/react-reconciler': 0.32.1(@types/react@19.1.16) + '@types/react-reconciler': 0.32.1(@types/react@19.2.5) '@types/webxr': 0.5.24 base64-js: 1.5.1 buffer: 6.0.3 - its-fine: 2.0.0(@types/react@19.1.16)(react@19.1.1) - react: 19.1.1 - react-reconciler: 0.31.0(react@19.1.1) - react-use-measure: 2.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1) + its-fine: 2.0.0(@types/react@19.2.5)(react@19.2.0) + react: 19.2.0 + react-reconciler: 0.31.0(react@19.2.0) + react-use-measure: 2.1.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0) scheduler: 0.25.0 - suspend-react: 0.1.3(react@19.1.1) + suspend-react: 0.1.3(react@19.2.0) three: 0.180.0 - use-sync-external-store: 1.5.0(react@19.1.1) - zustand: 5.0.8(@types/react@19.1.16)(immer@10.1.3)(react@19.1.1)(use-sync-external-store@1.5.0(react@19.1.1)) + use-sync-external-store: 1.5.0(react@19.2.0) + zustand: 5.0.8(@types/react@19.2.5)(immer@10.1.3)(react@19.2.0)(use-sync-external-store@1.5.0(react@19.2.0)) optionalDependencies: - react-dom: 19.1.1(react@19.1.1) + react-dom: 19.2.0(react@19.2.0) transitivePeerDependencies: - '@types/react' - immer - '@reduxjs/toolkit@2.9.0(react-redux@9.2.0(@types/react@19.1.16)(react@19.1.1)(redux@5.0.1))(react@19.1.1)': + '@reduxjs/toolkit@2.9.0(react-redux@9.2.0(@types/react@19.2.5)(react@19.2.0)(redux@5.0.1))(react@19.2.0)': dependencies: '@standard-schema/spec': 1.0.0 '@standard-schema/utils': 0.3.0 @@ -2553,8 +2557,8 @@ snapshots: redux-thunk: 3.1.0(redux@5.0.1) reselect: 5.1.1 optionalDependencies: - react: 19.1.1 - react-redux: 9.2.0(@types/react@19.1.16)(react@19.1.1)(redux@5.0.1) + react: 19.2.0 + react-redux: 9.2.0(@types/react@19.2.5)(react@19.2.0)(redux@5.0.1) '@standard-schema/spec@1.0.0': {} @@ -2648,10 +2652,10 @@ snapshots: '@tanstack/query-core@5.90.2': {} - '@tanstack/react-query@5.90.2(react@19.1.1)': + '@tanstack/react-query@5.90.2(react@19.2.0)': dependencies: '@tanstack/query-core': 5.90.2 - react: 19.1.1 + react: 19.2.0 '@tweenjs/tween.js@23.1.3': {} @@ -2726,19 +2730,19 @@ snapshots: dependencies: '@types/node': 24.6.0 - '@types/react-dom@19.1.9(@types/react@19.1.16)': + '@types/react-dom@19.2.3(@types/react@19.2.5)': dependencies: - '@types/react': 19.1.16 + '@types/react': 19.2.5 - '@types/react-reconciler@0.28.9(@types/react@19.1.16)': + '@types/react-reconciler@0.28.9(@types/react@19.2.5)': dependencies: - '@types/react': 19.1.16 + '@types/react': 19.2.5 - '@types/react-reconciler@0.32.1(@types/react@19.1.16)': + '@types/react-reconciler@0.32.1(@types/react@19.2.5)': dependencies: - '@types/react': 19.1.16 + '@types/react': 19.2.5 - '@types/react@19.1.16': + '@types/react@19.2.5': dependencies: csstype: 3.1.3 @@ -3268,10 +3272,10 @@ snapshots: is-plain-obj@4.1.0: {} - its-fine@2.0.0(@types/react@19.1.16)(react@19.1.1): + its-fine@2.0.0(@types/react@19.2.5)(react@19.2.0): dependencies: - '@types/react-reconciler': 0.28.9(@types/react@19.1.16) - react: 19.1.1 + '@types/react-reconciler': 0.28.9(@types/react@19.2.5) + react: 19.2.0 transitivePeerDependencies: - '@types/react' @@ -3353,9 +3357,9 @@ snapshots: devlop: 1.1.0 highlight.js: 11.11.1 - lucide-react@0.544.0(react@19.1.1): + lucide-react@0.544.0(react@19.2.0): dependencies: - react: 19.1.1 + react: 19.2.0 magic-string@0.30.19: dependencies: @@ -3718,29 +3722,29 @@ snapshots: neo-async@2.6.2: optional: true - next-themes@0.4.6(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + next-themes@0.4.6(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) - next@15.5.4(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + next@16.0.3(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: - '@next/env': 15.5.4 + '@next/env': 16.0.3 '@swc/helpers': 0.5.15 caniuse-lite: 1.0.30001746 postcss: 8.4.31 - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) - styled-jsx: 5.1.6(react@19.1.1) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) + styled-jsx: 5.1.6(react@19.2.0) optionalDependencies: - '@next/swc-darwin-arm64': 15.5.4 - '@next/swc-darwin-x64': 15.5.4 - '@next/swc-linux-arm64-gnu': 15.5.4 - '@next/swc-linux-arm64-musl': 15.5.4 - '@next/swc-linux-x64-gnu': 15.5.4 - '@next/swc-linux-x64-musl': 15.5.4 - '@next/swc-win32-arm64-msvc': 15.5.4 - '@next/swc-win32-x64-msvc': 15.5.4 + '@next/swc-darwin-arm64': 16.0.3 + '@next/swc-darwin-x64': 16.0.3 + '@next/swc-linux-arm64-gnu': 16.0.3 + '@next/swc-linux-arm64-musl': 16.0.3 + '@next/swc-linux-x64-gnu': 16.0.3 + '@next/swc-linux-x64-musl': 16.0.3 + '@next/swc-win32-arm64-msvc': 16.0.3 + '@next/swc-win32-x64-msvc': 16.0.3 sharp: 0.34.4 transitivePeerDependencies: - '@babel/core' @@ -3794,50 +3798,50 @@ snapshots: safe-buffer: 5.2.1 optional: true - react-dom@19.1.1(react@19.1.1): + react-dom@19.2.0(react@19.2.0): dependencies: - react: 19.1.1 - scheduler: 0.26.0 + react: 19.2.0 + scheduler: 0.27.0 react-is@18.3.1: {} - react-reconciler@0.31.0(react@19.1.1): + react-reconciler@0.31.0(react@19.2.0): dependencies: - react: 19.1.1 + react: 19.2.0 scheduler: 0.25.0 - react-redux@9.2.0(@types/react@19.1.16)(react@19.1.1)(redux@5.0.1): + react-redux@9.2.0(@types/react@19.2.5)(react@19.2.0)(redux@5.0.1): dependencies: '@types/use-sync-external-store': 0.0.6 - react: 19.1.1 - use-sync-external-store: 1.5.0(react@19.1.1) + react: 19.2.0 + use-sync-external-store: 1.5.0(react@19.2.0) optionalDependencies: - '@types/react': 19.1.16 + '@types/react': 19.2.5 redux: 5.0.1 - react-use-measure@2.1.7(react-dom@19.1.1(react@19.1.1))(react@19.1.1): + react-use-measure@2.1.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0): dependencies: - react: 19.1.1 + react: 19.2.0 optionalDependencies: - react-dom: 19.1.1(react@19.1.1) + react-dom: 19.2.0(react@19.2.0) - react@19.1.1: {} + react@19.2.0: {} - recharts@3.2.1(@types/react@19.1.16)(react-dom@19.1.1(react@19.1.1))(react-is@18.3.1)(react@19.1.1)(redux@5.0.1): + recharts@3.2.1(@types/react@19.2.5)(react-dom@19.2.0(react@19.2.0))(react-is@18.3.1)(react@19.2.0)(redux@5.0.1): dependencies: - '@reduxjs/toolkit': 2.9.0(react-redux@9.2.0(@types/react@19.1.16)(react@19.1.1)(redux@5.0.1))(react@19.1.1) + '@reduxjs/toolkit': 2.9.0(react-redux@9.2.0(@types/react@19.2.5)(react@19.2.0)(redux@5.0.1))(react@19.2.0) clsx: 2.1.1 decimal.js-light: 2.5.1 es-toolkit: 1.39.10 eventemitter3: 5.0.1 immer: 10.1.3 - react: 19.1.1 - react-dom: 19.1.1(react@19.1.1) + react: 19.2.0 + react-dom: 19.2.0(react@19.2.0) react-is: 18.3.1 - react-redux: 9.2.0(@types/react@19.1.16)(react@19.1.1)(redux@5.0.1) + react-redux: 9.2.0(@types/react@19.2.5)(react@19.2.0)(redux@5.0.1) reselect: 5.1.1 tiny-invariant: 1.3.3 - use-sync-external-store: 1.5.0(react@19.1.1) + use-sync-external-store: 1.5.0(react@19.2.0) victory-vendor: 37.3.6 transitivePeerDependencies: - '@types/react' @@ -3964,7 +3968,7 @@ snapshots: scheduler@0.25.0: {} - scheduler@0.26.0: {} + scheduler@0.27.0: {} schema-utils@3.3.0: dependencies: @@ -4045,19 +4049,19 @@ snapshots: dependencies: inline-style-parser: 0.2.4 - styled-jsx@5.1.6(react@19.1.1): + styled-jsx@5.1.6(react@19.2.0): dependencies: client-only: 0.0.1 - react: 19.1.1 + react: 19.2.0 supports-color@8.1.1: dependencies: has-flag: 4.0.0 optional: true - suspend-react@0.1.3(react@19.1.1): + suspend-react@0.1.3(react@19.2.0): dependencies: - react: 19.1.1 + react: 19.2.0 tailwind-merge@3.3.1: {} @@ -4170,9 +4174,9 @@ snapshots: punycode: 2.3.1 optional: true - use-sync-external-store@1.5.0(react@19.1.1): + use-sync-external-store@1.5.0(react@19.2.0): dependencies: - react: 19.1.1 + react: 19.2.0 util-deprecate@1.0.2: {} @@ -4253,11 +4257,11 @@ snapshots: yallist@5.0.0: {} - zustand@5.0.8(@types/react@19.1.16)(immer@10.1.3)(react@19.1.1)(use-sync-external-store@1.5.0(react@19.1.1)): + zustand@5.0.8(@types/react@19.2.5)(immer@10.1.3)(react@19.2.0)(use-sync-external-store@1.5.0(react@19.2.0)): optionalDependencies: - '@types/react': 19.1.16 + '@types/react': 19.2.5 immer: 10.1.3 - react: 19.1.1 - use-sync-external-store: 1.5.0(react@19.1.1) + react: 19.2.0 + use-sync-external-store: 1.5.0(react@19.2.0) zwitch@2.0.4: {} diff --git a/web/src/app/layout.tsx b/web/src/app/layout.tsx index 9aa3ef3..c031cde 100644 --- a/web/src/app/layout.tsx +++ b/web/src/app/layout.tsx @@ -49,11 +49,12 @@ export const viewport: Viewport = { colorScheme: "dark", }; -export default function RootLayout({ +export default async function RootLayout({ children, }: { children: React.ReactNode; }) { + "use cache"; return ( { +const Home = async () => { + "use cache"; return ( <>
diff --git a/web/src/app/posts/(posts)/layout.tsx b/web/src/app/posts/(posts)/layout.tsx index 05eb8d7..607e786 100644 --- a/web/src/app/posts/(posts)/layout.tsx +++ b/web/src/app/posts/(posts)/layout.tsx @@ -1,7 +1,8 @@ import "katex/dist/katex.min.css"; import "@highlightjs/cdn-assets/styles/github-dark.min.css"; -const PostLayout = ({ children }: { children: React.ReactNode }) => { +const PostLayout = async ({ children }: { children: React.ReactNode }) => { + "use cache"; return (
{ const { meta } = (await import(`@/posts/${name}.mdx`)) as { diff --git a/web/tsconfig.json b/web/tsconfig.json index 4178b8f..81159b3 100644 --- a/web/tsconfig.json +++ b/web/tsconfig.json @@ -12,7 +12,7 @@ "moduleResolution": "bundler", "resolveJsonModule": true, "isolatedModules": true, - "jsx": "preserve", + "jsx": "react-jsx", "incremental": true, "plugins": [ { @@ -32,7 +32,8 @@ "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", - "tailwind.config.ts" + "tailwind.config.ts", + ".next/dev/types/**/*.ts" ], "exclude": ["node_modules"] }