From fc5d5bc66aede4db88224209e009bfd4cd5b6130 Mon Sep 17 00:00:00 2001 From: aabedraba Date: Thu, 24 Sep 2026 17:46:22 +0200 Subject: [PATCH 1/2] docs(guides): Merge the Tutorials tab into Guides Signed-off-by: aabedraba --- pages/guides/overview.mdx | 21 ++- scripts/update_zudoku_guides.py | 55 ++++---- zudoku.config.tsx | 220 +++++++++++++++++--------------- 3 files changed, 161 insertions(+), 135 deletions(-) diff --git a/pages/guides/overview.mdx b/pages/guides/overview.mdx index ebd42dd5..7ef0c08d 100644 --- a/pages/guides/overview.mdx +++ b/pages/guides/overview.mdx @@ -2,14 +2,31 @@ title: "Guides Overview" --- -This page lists all available guides for deploying applications and services on Unikraft Cloud, grouped by category. -These guides mimic the [examples](https://github.com/unikraft-cloud/examples) repository, and are constantly updated with new content. +This page lists all available guides for Unikraft Cloud. +The guides are in two groups: + +* **Tutorials** explain a platform topic that applies to any app. + Two examples are root filesystem formats and environment variables. +* **Example apps** show how to deploy one specific app or service. + They mimic the [examples](https://github.com/unikraft-cloud/examples) repository, and are constantly updated with new content. :::note Unikraft Cloud can run any workload—define it in a `Dockerfile` and it will run it. These guides are here to make that journey as fast as possible for you. ::: +## Tutorials + +- [Docker To Unikraft Cloud](/tutorials/docker-to-ukc) +- [KraftKit To Unikraft](/tutorials/kraftkit-to-unikraft) +- [Environment Variables](/tutorials/environment-variables) +- [Rootfs Formats](/tutorials/rootfs-formats) +- [Rootfs Compression](/tutorials/rootfs-compression) +- [Rootfses, Volumes and ROMs](/tutorials/rootfs-volumes-roms) +- [Scale To Zero Triggers](/tutorials/scale-to-zero-triggers) + +The sections below list the example apps, grouped by category. + {/* vale off */} ## HTTP Servers diff --git a/scripts/update_zudoku_guides.py b/scripts/update_zudoku_guides.py index d4fdad02..cdf32cf8 100755 --- a/scripts/update_zudoku_guides.py +++ b/scripts/update_zudoku_guides.py @@ -1,9 +1,15 @@ #!/usr/bin/env python3 """ -Rewrite the guides list in zudoku.config.tsx based on the MDX files in pages/guides/. +Rewrite the example apps list in zudoku.config.tsx based on the MDX files in pages/guides/. + +It replaces everything between two sentinel comments in zudoku.config.tsx: + + // AUTO-GENERATED:GUIDES-START + ... + // AUTO-GENERATED:GUIDES-END For each MDX file (except overview.mdx) the title is read from the YAML front-matter. -Entries are sorted alphabetically by title. The overview entry is always first. +Entries are sorted alphabetically by title. Usage: update_zudoku_guides.py GUIDES_DIR ZUDOKU_CONFIG """ @@ -16,12 +22,10 @@ FRONT_MATTER_TITLE = re.compile(r'^title:\s*["\']?(.+?)["\']?\s*$', re.MULTILINE) -# Matches the entire items array inside the "Guides" navigation category. -# Captures the indentation of the first item so we can reproduce it. -GUIDES_ITEMS_PATTERN = re.compile( - r'(label:\s*"Guides"[^[]*items:\s*\[)' # up to and including "items: [" - r'(.*?)' # the current list content (group 2) - r'(\s*\])', # closing "]" with optional whitespace +SENTINEL_PATTERN = re.compile( + r'([ \t]*)// AUTO-GENERATED:GUIDES-START\n' + r'.*?' + r'([ \t]*)// AUTO-GENERATED:GUIDES-END', re.DOTALL, ) @@ -46,41 +50,36 @@ def build_items_block(guides_dir: Path, indent: str) -> str: entries.sort(key=lambda t: t[0].casefold()) - lines: list[str] = [] - lines.append(f'{indent}//TODO: Please keep this list sorted by titles, not filenames !!') - lines.append(f'{indent}"/guides/overview", // Guides Overview') - for title, slug in entries: - lines.append(f'{indent}"/guides/{slug}", // {title}') - - return "\n".join(lines) + "\n" + lines = [f'{indent}"/guides/{slug}", // {title}' for title, slug in entries] + return "\n".join(lines) def update_config(guides_dir: Path, config_path: Path) -> None: content = config_path.read_text(encoding="utf-8") - match = GUIDES_ITEMS_PATTERN.search(content) + match = SENTINEL_PATTERN.search(content) if not match: - print("❌ Could not locate the Guides items list in zudoku.config.tsx", file=sys.stderr) + print( + "❌ Could not locate AUTO-GENERATED:GUIDES-START/END sentinels " + f"in {config_path}", + file=sys.stderr, + ) sys.exit(1) - # Detect indentation from the first non-empty line inside the current block - current_block = match.group(2) - indent_match = re.search(r'\n(\s+)"/', current_block) - indent = indent_match.group(1) if indent_match else " " - + indent = match.group(1) new_block = build_items_block(guides_dir, indent) new_content = ( - content[: match.start(2)] - + "\n" - + new_block - + " ]" # closing "]" with fixed indentation, replacing the captured \s*\] - + content[match.end(3):] + content[: match.start()] + + f'{indent}// AUTO-GENERATED:GUIDES-START\n' + + new_block + "\n" + + f'{indent}// AUTO-GENERATED:GUIDES-END' + + content[match.end():] ) config_path.write_text(new_content, encoding="utf-8") print(f" ✅ Updated guides list in {config_path.name} " - f"({len(new_block.splitlines()) - 2} guide entries)") + f"({len(new_block.splitlines())} guide entries)") def main() -> None: diff --git a/zudoku.config.tsx b/zudoku.config.tsx index 7c5d774d..82919575 100644 --- a/zudoku.config.tsx +++ b/zudoku.config.tsx @@ -193,111 +193,121 @@ const config: ZudokuConfig = { label: "Guides", icon: "graduation-cap", items: [ - //TODO: Please keep this list sorted by titles, not filenames !! - "/guides/overview", // Guides Overview - "/guides/httpserver-dotnet10.0", // .NET HTTP Server - "/guides/node18-agario", // Agar.io (Node) - "/guides/tyk", // API Gateways: Tyk - "/guides/build-environments", // Build and Test Environments with ROMs - "/guides/httpserver-bun", // Bun HTTP Server - "/guides/httpserver-gcc13.2", // C HTTP Server - "/guides/httpserver-boost1.74-gpp13.2", // C++ Boost HTTP Server - "/guides/httpserver-gpp13.2", // C++ HTTP Server - "/guides/caddy2.7-go1.21", // Caddy - "/guides/chromium-cdp", // Chromium CDP - "/guides/chromium-cdp-auth", // Chromium CDP with Token Authentication - "/guides/debian-ssh", // Debian SSH server - "/guides/httpserver-python3.12-django5.0", // Django HTTP Server - "/guides/dragonflydb", // DragonflyDB - "/guides/duckdb-go1.21", // DuckDB with Go - "/guides/httpserver-elixir1.16", // Elixir HTTP Server - "/guides/httpserver-erlang26.2", // Erlang HTTP Server - "/guides/httpserver-expressjs4.18-node21", // Express HTTP Server - "/guides/httpserver-python3.12-fastapi-0.121.3", // FastAPI HTTP Server - "/guides/httpserver-flask-redis", // Flask + Redis HTTP Server - "/guides/httpserver-python3.12-flask3.0-sqlite", // Flask and SQLite HTTP Server - "/guides/httpserver-python3.12-flask3.0", // Flask HTTP Server - "/guides/nginx-flask-mongo", // Flask with MongoDB - "/guides/minecraft", // Game Servers: Minecraft - "/guides/httpserver-go1.22-redis", // Go and Redis HTTP Server - "/guides/httpserver-go1.21", // Go HTTP Server - "/guides/grafana", // Grafana - "/guides/haproxy", // HAProxy - "/guides/httpserver-node-express-puppeteer", // Headless Browsers: Puppeteer HTTP Server - "/guides/hugo0.122", // Hugo - "/guides/imaginary", // Imaginary - "/guides/httpserver-java21", // Java HTTP Server - "/guides/httpserver-lua5.1", // Lua HTTP Server - "/guides/mariadb", // MariaDB - "/guides/mcp-server-arxiv", // MCP Servers: ArXiv MCP Server - "/guides/memcached1.6", // Memcached - "/guides/minio", // Minio - "/guides/mongodb", // MongoDB - "/guides/mysql", // MySQL - "/guides/neo4j", // Neo4j - "/guides/httpserver-node21-nextjs", // Next.js HTTP Server - "/guides/nginx", // Nginx - "/guides/node24-karaoke", // Node AllKaraoke - "/guides/httpserver-node26", // Node HTTP Server - "/guides/node21-websocket", // Node WebSocket Server - "/guides/opentelemetry-collector", // OpenTelemetry Collector - "/guides/httpserver-perl5.42", // Perl HTTP Server - "/guides/phoenix-postgres", // Phoenix with PostgreSQL - "/guides/httpserver-php8.2", // PHP HTTP Server - "/guides/node-playwright-chromium", // Playwright (Chromium) with Node.js - "/guides/python-playwright-chromium", // Playwright (Chromium) with Python FastAPI - "/guides/node-playwright-firefox", // Playwright (Firefox) with Node.js - "/guides/node-playwright-webkit", // Playwright (WebKit) with Node.js - "/guides/httpserver-prisma-expressjs4.19-node18", // Prisma HTTP Server - "/guides/prometheus-grafana", // Prometheus and Grafana - "/guides/httpserver-python3.12", // Python HTTP Server - "/guides/httpserver-node22-react-router", // React Router HTTP Server - "/guides/redis7.2", // Redis - "/guides/novnc-browser", // Remote Desktops: noVNC - "/guides/visual-studio-code-server", // Remote IDEs: Visual Studio Code Server - "/guides/httpserver-ruby3.2", // Ruby HTTP Server - "/guides/ruby3.2-rails", // Ruby on Rails - "/guides/httpserver-rust1.88-actix-web4", // Rust (Actix Web) HTTP Server - "/guides/httpserver-rust-trunkrs-leptos", // Rust (Leptos + Trunk) HTTP Server - "/guides/httpserver-rust1.88-rocket0.5", // Rust (Rocket) HTTP Server - "/guides/httpserver-rust1.75-tokio", // Rust (Tokio) HTTP Server - "/guides/httpserver-rust1.91", // Rust HTTP Server - "/guides/openclaw", // Sandboxes: OpenClaw - "/guides/postgres", // Serverless Databases: PostgreSQL - "/guides/node-code-execution", // Serverless Functions: Node.js Code Execution with ROMs - "/guides/mcp-server-simple", // Simple MCP Server - "/guides/skipper0.18", // Skipper - "/guides/httpserver-node21-solid-start", // SolidJS HTTP Server - "/guides/spin-wagi-http", // Spin - "/guides/httpserver-java17-springboot", // Spring Boot HTTP Server - "/guides/httpserver-java17-spring-petclinic", // Spring PetClinic - "/guides/httpserver-c-debug", // SSH and HTTP Server with C and Debugging Tools - "/guides/httpserver-node22-sveltekit", // SvelteKit HTTP Server - "/guides/traefik", // Traefik - "/guides/httpserver-node-vite-vanilla", // Vite (vanilla) - "/guides/httpserver-node-vite-ssr-vanilla", // Vite (vanilla) SSR - "/guides/httpserver-nginx-vite-vanilla", // Vite HTTP Server - "/guides/vsftpd", // vsftpd - "/guides/wazero-import-go", // Wazero - "/guides/github-webhook-node", // Webhooks: GitHub Webhook Receiver - "/guides/node18-wingsio", // Wings.io (Node) - "/guides/wordpress-all-in-one", // Wordpress - "/guides/wordpress", // Wordpress with Nginx and MariaDB - ] - }, - { - type: "category", - label: "Tutorials", - icon: "book", - items: [ - "/tutorials/docker-to-ukc", - "/tutorials/kraftkit-to-unikraft", - "/tutorials/environment-variables", - "/tutorials/rootfs-formats", - "/tutorials/rootfs-compression", - "/tutorials/rootfs-volumes-roms", - "/tutorials/scale-to-zero-triggers", - ] + "/guides/overview", + { + type: "category", + label: "Tutorials", + icon: "book", + collapsed: false, + items: [ + "/tutorials/docker-to-ukc", + "/tutorials/kraftkit-to-unikraft", + "/tutorials/environment-variables", + "/tutorials/rootfs-formats", + "/tutorials/rootfs-compression", + "/tutorials/rootfs-volumes-roms", + "/tutorials/scale-to-zero-triggers", + ], + }, + { + type: "category", + label: "Example apps", + icon: "boxes", + collapsed: false, + items: [ + // AUTO-GENERATED:GUIDES-START + "/guides/httpserver-dotnet10.0", // .NET HTTP Server + "/guides/node18-agario", // Agar.io (Node) + "/guides/tyk", // API Gateways: Tyk + "/guides/build-environments", // Build and Test Environments with ROMs + "/guides/httpserver-bun", // Bun HTTP Server + "/guides/httpserver-gcc13.2", // C HTTP Server + "/guides/httpserver-boost1.74-gpp13.2", // C++ Boost HTTP Server + "/guides/httpserver-gpp13.2", // C++ HTTP Server + "/guides/caddy2.7-go1.21", // Caddy + "/guides/chromium-cdp", // Chromium CDP + "/guides/chromium-cdp-auth", // Chromium CDP with Token Authentication + "/guides/debian-ssh", // Debian SSH server + "/guides/httpserver-python3.12-django5.0", // Django HTTP Server + "/guides/dragonflydb", // DragonflyDB + "/guides/duckdb-go1.21", // DuckDB with Go + "/guides/httpserver-elixir1.16", // Elixir HTTP Server + "/guides/httpserver-erlang26.2", // Erlang HTTP Server + "/guides/httpserver-expressjs4.18-node21", // Express HTTP Server + "/guides/httpserver-python3.12-fastapi-0.121.3", // FastAPI HTTP Server + "/guides/httpserver-flask-redis", // Flask + Redis HTTP Server + "/guides/httpserver-python3.12-flask3.0-sqlite", // Flask and SQLite HTTP Server + "/guides/httpserver-python3.12-flask3.0", // Flask HTTP Server + "/guides/nginx-flask-mongo", // Flask with MongoDB + "/guides/minecraft", // Game Servers: Minecraft + "/guides/httpserver-go1.22-redis", // Go and Redis HTTP Server + "/guides/httpserver-go1.21", // Go HTTP Server + "/guides/grafana", // Grafana + "/guides/haproxy", // HAProxy + "/guides/httpserver-node-express-puppeteer", // Headless Browsers: Puppeteer HTTP Server + "/guides/hugo0.122", // Hugo + "/guides/imaginary", // Imaginary + "/guides/httpserver-java21", // Java HTTP Server + "/guides/httpserver-lua5.1", // Lua HTTP Server + "/guides/mariadb", // MariaDB + "/guides/mcp-server-arxiv", // MCP Servers: ArXiv MCP Server + "/guides/memcached1.6", // Memcached + "/guides/minio", // Minio + "/guides/mongodb", // MongoDB + "/guides/mysql", // MySQL + "/guides/neo4j", // Neo4j + "/guides/httpserver-node21-nextjs", // Next.js HTTP Server + "/guides/nginx", // Nginx + "/guides/node24-karaoke", // Node AllKaraoke + "/guides/httpserver-node26", // Node HTTP Server + "/guides/node21-websocket", // Node WebSocket Server + "/guides/opentelemetry-collector", // OpenTelemetry Collector + "/guides/httpserver-perl5.42", // Perl HTTP Server + "/guides/phoenix-postgres", // Phoenix with PostgreSQL + "/guides/httpserver-php8.2", // PHP HTTP Server + "/guides/node-playwright-chromium", // Playwright (Chromium) with Node.js + "/guides/python-playwright-chromium", // Playwright (Chromium) with Python FastAPI + "/guides/node-playwright-firefox", // Playwright (Firefox) with Node.js + "/guides/node-playwright-webkit", // Playwright (WebKit) with Node.js + "/guides/httpserver-prisma-expressjs4.19-node18", // Prisma HTTP Server + "/guides/prometheus-grafana", // Prometheus and Grafana + "/guides/httpserver-python3.12", // Python HTTP Server + "/guides/httpserver-node22-react-router", // React Router HTTP Server + "/guides/redis7.2", // Redis + "/guides/novnc-browser", // Remote Desktops: noVNC + "/guides/visual-studio-code-server", // Remote IDEs: Visual Studio Code Server + "/guides/httpserver-ruby3.2", // Ruby HTTP Server + "/guides/ruby3.2-rails", // Ruby on Rails + "/guides/httpserver-rust1.88-actix-web4", // Rust (Actix Web) HTTP Server + "/guides/httpserver-rust-trunkrs-leptos", // Rust (Leptos + Trunk) HTTP Server + "/guides/httpserver-rust1.88-rocket0.5", // Rust (Rocket) HTTP Server + "/guides/httpserver-rust1.75-tokio", // Rust (Tokio) HTTP Server + "/guides/httpserver-rust1.91", // Rust HTTP Server + "/guides/openclaw", // Sandboxes: OpenClaw + "/guides/postgres", // Serverless Databases: PostgreSQL + "/guides/node-code-execution", // Serverless Functions: Node.js Code Execution with ROMs + "/guides/mcp-server-simple", // Simple MCP Server + "/guides/skipper0.18", // Skipper + "/guides/httpserver-node21-solid-start", // SolidJS HTTP Server + "/guides/spin-wagi-http", // Spin + "/guides/httpserver-java17-springboot", // Spring Boot HTTP Server + "/guides/httpserver-java17-spring-petclinic", // Spring PetClinic + "/guides/httpserver-c-debug", // SSH and HTTP Server with C and Debugging Tools + "/guides/httpserver-node22-sveltekit", // SvelteKit HTTP Server + "/guides/traefik", // Traefik + "/guides/httpserver-node-vite-vanilla", // Vite (vanilla) + "/guides/httpserver-node-vite-ssr-vanilla", // Vite (vanilla) SSR + "/guides/httpserver-nginx-vite-vanilla", // Vite HTTP Server + "/guides/vsftpd", // vsftpd + "/guides/wazero-import-go", // Wazero + "/guides/github-webhook-node", // Webhooks: GitHub Webhook Receiver + "/guides/node18-wingsio", // Wings.io (Node) + "/guides/wordpress-all-in-one", // Wordpress + "/guides/wordpress", // Wordpress with Nginx and MariaDB + // AUTO-GENERATED:GUIDES-END + ], + }, + ], }, { type: "category", From 9543488736a018d9d81c2756b6e6cad79d1c20c0 Mon Sep 17 00:00:00 2001 From: aabedraba Date: Thu, 24 Sep 2026 18:39:08 +0200 Subject: [PATCH 2/2] docs: Add Reference menu in navbar Signed-off-by: aabedraba --- package.json | 4 +- pages/introduction.mdx | 2 +- pnpm-lock.yaml | 507 +++++++++++++++++------------------------ src/TopNavMenus.tsx | 223 ++++++++++++++++++ zudoku.config.tsx | 55 +++-- 5 files changed, 468 insertions(+), 323 deletions(-) create mode 100644 src/TopNavMenus.tsx diff --git a/package.json b/package.json index 0f9f9d21..06484987 100644 --- a/package.json +++ b/package.json @@ -16,9 +16,11 @@ "react": ">=19.0.0", "react-dom": ">=19.0.0", "regex-utilities": "^2.3.0", - "zudoku": "^0.86.0" + "zudoku": "^0.88.0" }, "devDependencies": { + "@types/react": "^19", + "@types/react-dom": "^19", "@typescript-eslint/eslint-plugin": "^8.0.0", "@typescript-eslint/parser": "^8.0.0", "eslint": "^9.14.0" diff --git a/pages/introduction.mdx b/pages/introduction.mdx index 1efb3457..c534566c 100644 --- a/pages/introduction.mdx +++ b/pages/introduction.mdx @@ -18,7 +18,7 @@ New: GPU support in enterprise preview - read more [here](/platform/instances#gp ## Quick start - + 1. [Create a free account](https://console.unikraft.cloud/signup). diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 644ac3ec..2aa21133 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,15 +27,21 @@ importers: specifier: ^2.3.0 version: 2.3.0 zudoku: - specifier: ^0.86.0 - version: 0.86.0(@oxc-project/types@0.140.0)(@types/json-schema@7.0.15)(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.33.0)(oxc-parser@0.140.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rolldown@1.1.5)(rollup@4.63.1)(srvx@1.0.3)(supports-color@7.2.0)(use-sync-external-store@1.6.0(react@19.2.8)) + specifier: ^0.88.0 + version: 0.88.0(@oxc-project/types@0.140.0)(@types/json-schema@7.0.15)(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.33.0)(oxc-parser@0.140.0)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(rolldown@1.1.5)(rollup@4.63.1)(srvx@1.0.3)(supports-color@7.2.0)(use-sync-external-store@1.6.0(react@19.2.8)) devDependencies: + '@types/react': + specifier: ^19 + version: 19.2.17 + '@types/react-dom': + specifier: ^19 + version: 19.2.3(@types/react@19.2.17) '@typescript-eslint/eslint-plugin': specifier: ^8.0.0 - version: 8.69.0(@typescript-eslint/parser@8.69.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) + version: 8.69.0(@typescript-eslint/parser@8.69.0(eslint@9.39.5(jiti@2.7.0))(typescript@6.0.3))(eslint@9.39.5(jiti@2.7.0))(supports-color@7.2.0)(typescript@6.0.3) '@typescript-eslint/parser': specifier: ^8.0.0 - version: 8.69.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) + version: 8.69.0(eslint@9.39.5(jiti@2.7.0))(supports-color@7.2.0)(typescript@6.0.3) eslint: specifier: ^9.14.0 version: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) @@ -1722,13 +1728,6 @@ packages: resolution: {integrity: sha512-jx1+rPhY/5Ympkktd656HBWEBLxP7dH06losBLjjf5vgCODXvi9KhtftWcMIwTFIDqBr7cRnQkdLnAG+IOlGvQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] - bundledDependencies: - - '@napi-rs/wasm-runtime' - - '@emnapi/core' - - '@emnapi/runtime' - - '@tybys/wasm-util' - - '@emnapi/wasi-threads' - - tslib '@tailwindcss/oxide-win32-arm64-msvc@4.3.3': resolution: {integrity: sha512-3rc292Ca2ceK6Ulcc/bAVnTs/3nDtoPhyEKlgPv+yQJQi/JS/AMJlqzxvlDacL1nekbrcf6bTqp/jV4qgnPxNQ==} @@ -3806,8 +3805,8 @@ packages: zod@4.4.3: resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} - zudoku@0.86.0: - resolution: {integrity: sha512-NsXwupD6+YG9eIGQKreTZXthgc93jJc4v60KyQlquTr1s/7cNmeOIJhDyiNWM8Sr+qDYIK1CDn5GNHO7MkD4ug==} + zudoku@0.88.0: + resolution: {integrity: sha512-BbMOV2PL1X+772S12fnbEQdrAYJRewIMUrAoZLsUDRrygf3JrLWFUXVOCDxtzL+ZpJN4GMOctJ+tLTJuKKGBeA==} engines: {node: '>=22.22.0'} hasBin: true peerDependencies: @@ -3865,11 +3864,11 @@ snapshots: '@babel/runtime@7.29.7': {} - '@base-ui/react@1.8.0(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@base-ui/react@1.8.0(@types/react@19.2.17)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@babel/runtime': 7.29.7 - '@base-ui/utils': 0.4.0(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@floating-ui/react-dom': 2.1.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@base-ui/utils': 0.4.0(@types/react@19.2.17)(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@floating-ui/react-dom': 2.1.9(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@floating-ui/utils': 0.2.12 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) @@ -3877,7 +3876,7 @@ snapshots: optionalDependencies: '@types/react': 19.2.17 - '@base-ui/utils@0.4.0(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@base-ui/utils@0.4.0(@types/react@19.2.17)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@babel/runtime': 7.29.7 '@floating-ui/utils': 0.2.12 @@ -3888,7 +3887,7 @@ snapshots: optionalDependencies: '@types/react': 19.2.17 - '@devframes/hub@0.8.2(devframe@0.8.2(srvx@1.0.3))': + '@devframes/hub@0.8.2(devframe@0.8.2)(srvx@1.0.3)': dependencies: '@standard-schema/spec': 1.1.0 destr: 2.0.5 @@ -3899,14 +3898,14 @@ snapshots: tinyexec: 1.3.1 zigpty: 0.2.1 - '@devframes/json-render@0.8.2(@devframes/hub@0.8.2(devframe@0.8.2(srvx@1.0.3)))(devframe@0.8.2(srvx@1.0.3))': + '@devframes/json-render@0.8.2(@devframes/hub@0.8.2(devframe@0.8.2))(devframe@0.8.2)(srvx@1.0.3)': dependencies: '@json-render/core': 0.19.0(zod@4.4.3) devframe: 0.8.2(srvx@1.0.3) nostics: 1.2.0 zod: 4.4.3 optionalDependencies: - '@devframes/hub': 0.8.2(devframe@0.8.2(srvx@1.0.3)) + '@devframes/hub': 0.8.2(devframe@0.8.2)(srvx@1.0.3) '@emnapi/core@1.11.1': dependencies: @@ -4030,7 +4029,7 @@ snapshots: '@esbuild/win32-x64@0.28.2': optional: true - '@eslint-community/eslint-utils@4.10.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))': + '@eslint-community/eslint-utils@4.10.1(eslint@9.39.5(jiti@2.7.0))(supports-color@7.2.0)': dependencies: eslint: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) eslint-visitor-keys: 3.4.3 @@ -4042,8 +4041,6 @@ snapshots: '@eslint/object-schema': 2.1.7 debug: 4.4.3(supports-color@7.2.0) minimatch: 3.1.5 - transitivePeerDependencies: - - supports-color '@eslint/config-helpers@0.4.2': dependencies: @@ -4064,8 +4061,6 @@ snapshots: js-yaml: 4.3.2 minimatch: 3.1.5 strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color '@eslint/js@9.39.5': {} @@ -4087,7 +4082,7 @@ snapshots: '@floating-ui/core': 1.8.0 '@floating-ui/utils': 0.2.12 - '@floating-ui/react-dom@2.1.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@floating-ui/react-dom@2.1.9(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@floating-ui/dom': 1.8.0 react: 19.2.8 @@ -4100,8 +4095,6 @@ snapshots: '@n1ru4l/push-pull-async-iterable-iterator': 3.2.0 graphql: 16.14.2 meros: 1.3.2(@types/node@24.13.3) - transitivePeerDependencies: - - '@types/node' '@graphql-tools/executor@1.5.7(graphql@16.14.2)': dependencies: @@ -4244,8 +4237,6 @@ snapshots: unist-util-stringify-position: 4.0.0 unist-util-visit: 5.1.0 vfile: 6.0.3 - transitivePeerDependencies: - - supports-color '@mdx-js/react@3.1.1(@types/react@19.2.17)(react@19.2.8)': dependencies: @@ -4260,8 +4251,6 @@ snapshots: rollup: 4.63.1 source-map: 0.7.6 vfile: 6.0.3 - transitivePeerDependencies: - - supports-color '@n1ru4l/push-pull-async-iterable-iterator@3.2.0': {} @@ -4457,16 +4446,16 @@ snapshots: '@radix-ui/primitive@1.1.7': {} - '@radix-ui/react-accordion@1.2.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-accordion@1.2.20(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collapsible': 1.1.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-collapsible': 1.1.20(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-collection': 1.1.15(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) @@ -4474,44 +4463,44 @@ snapshots: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-alert-dialog@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-alert-dialog@1.1.23(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/primitive': 1.1.7 '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-dialog': 1.1.23(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-arrow@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-arrow@1.1.15(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-aspect-ratio@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-aspect-ratio@1.1.15(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-checkbox@1.3.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-checkbox@1.3.11(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/primitive': 1.1.7 '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.17)(react@19.2.8) react: 19.2.8 @@ -4520,14 +4509,14 @@ snapshots: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-collapsible@1.1.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-collapsible@1.1.20(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/primitive': 1.1.7 '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) react: 19.2.8 @@ -4536,11 +4525,11 @@ snapshots: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-collection@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-collection@1.1.15(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) @@ -4560,18 +4549,18 @@ snapshots: optionalDependencies: '@types/react': 19.2.17 - '@radix-ui/react-dialog@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-dialog@1.1.23(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/primitive': 1.1.7 '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-portal': 1.1.17(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-presence': 1.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) @@ -4589,11 +4578,11 @@ snapshots: optionalDependencies: '@types/react': 19.2.17 - '@radix-ui/react-dismissable-layer@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-dismissable-layer@1.1.19(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/primitive': 1.1.7 '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.17)(react@19.2.8) react: 19.2.8 @@ -4602,14 +4591,14 @@ snapshots: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-dropdown-menu@2.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-dropdown-menu@2.1.24(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/primitive': 1.1.7 '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-menu': 2.1.24(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) @@ -4623,10 +4612,10 @@ snapshots: optionalDependencies: '@types/react': 19.2.17 - '@radix-ui/react-focus-scope@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-focus-scope@1.1.16(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) @@ -4634,16 +4623,16 @@ snapshots: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-hover-card@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-hover-card@1.1.23(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/primitive': 1.1.7 '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-popper': 1.3.7(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-portal': 1.1.17(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-presence': 1.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) @@ -4658,31 +4647,31 @@ snapshots: optionalDependencies: '@types/react': 19.2.17 - '@radix-ui/react-label@2.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-label@2.1.15(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-menu@2.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-menu@2.1.24(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-portal': 1.1.17(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-presence': 1.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-roving-focus': 1.1.19(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) aria-hidden: 1.2.6 @@ -4693,41 +4682,41 @@ snapshots: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-navigation-menu@1.2.22(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-navigation-menu@1.2.22(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-popover@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-popover@1.1.23(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/primitive': 1.1.7 '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-portal': 1.1.17(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-presence': 1.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) aria-hidden: 1.2.6 @@ -4738,13 +4727,13 @@ snapshots: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-popper@1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-popper@1.3.7(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: - '@floating-ui/react-dom': 2.1.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-arrow': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@floating-ui/react-dom': 2.1.9(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-arrow': 1.1.15(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-rect': 1.1.4(@types/react@19.2.17)(react@19.2.8) @@ -4756,9 +4745,9 @@ snapshots: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-portal@1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-portal@1.1.17(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) @@ -4766,7 +4755,7 @@ snapshots: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-presence@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-presence@1.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) react: 19.2.8 @@ -4775,7 +4764,7 @@ snapshots: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-primitive@2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-primitive@2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) react: 19.2.8 @@ -4784,25 +4773,25 @@ snapshots: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-progress@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-progress@1.1.16(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-radio-group@1.4.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-radio-group@1.4.7(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/primitive': 1.1.7 '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-roving-focus': 1.1.19(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.17)(react@19.2.8) react: 19.2.8 @@ -4811,15 +4800,15 @@ snapshots: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-roving-focus@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-roving-focus@1.1.19(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.17)(react@19.2.8) @@ -4830,15 +4819,15 @@ snapshots: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-scroll-area@1.2.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-scroll-area@1.2.18(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/number': 1.1.3 '@radix-ui/primitive': 1.1.7 '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) react: 19.2.8 @@ -4847,28 +4836,28 @@ snapshots: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-select@2.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-select@2.3.7(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/number': 1.1.3 '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-focus-scope': 1.1.16(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-portal': 1.1.17(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-presence': 1.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) aria-hidden: 1.2.6 react: 19.2.8 react-dom: 19.2.8(react@19.2.8) @@ -4877,24 +4866,24 @@ snapshots: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-separator@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-separator@1.1.15(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-slider@1.4.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-slider@1.4.7(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/number': 1.1.3 '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-collection': 1.1.15(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.17)(react@19.2.8) @@ -4912,12 +4901,12 @@ snapshots: optionalDependencies: '@types/react': 19.2.17 - '@radix-ui/react-switch@1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-switch@1.3.7(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/primitive': 1.1.7 '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.17)(react@19.2.8) react: 19.2.8 @@ -4926,15 +4915,15 @@ snapshots: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-tabs@1.1.21(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-tabs@1.1.21(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/primitive': 1.1.7 '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-presence': 1.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-roving-focus': 1.1.19(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) @@ -4942,14 +4931,14 @@ snapshots: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-toggle-group@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-toggle-group@1.1.19(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/primitive': 1.1.7 '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-direction': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-toggle': 1.1.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-roving-focus': 1.1.19(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-toggle': 1.1.18(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) @@ -4957,10 +4946,10 @@ snapshots: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-toggle@1.1.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-toggle@1.1.18(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/primitive': 1.1.7 - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) @@ -4968,21 +4957,21 @@ snapshots: '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@radix-ui/react-tooltip@1.2.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-tooltip@1.2.16(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@radix-ui/primitive': 1.1.7 '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-context': 1.2.2(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-dismissable-layer': 1.1.19(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-popper': 1.3.7(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-portal': 1.1.17(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-presence': 1.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.17)(react@19.2.8) '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: @@ -5043,9 +5032,9 @@ snapshots: optionalDependencies: '@types/react': 19.2.17 - '@radix-ui/react-visually-hidden@1.2.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@radix-ui/react-visually-hidden@1.2.11(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) optionalDependencies: @@ -5360,7 +5349,7 @@ snapshots: tailwindcss: 4.3.3 vite: 8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0) - '@tanem/react-nprogress@6.0.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@tanem/react-nprogress@6.0.3(react@19.2.8)(react-dom@19.2.8(react@19.2.8))': dependencies: '@babel/runtime': 7.29.7 hoist-non-react-statics: 3.3.2 @@ -5423,23 +5412,21 @@ snapshots: '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.69.0(@typescript-eslint/parser@8.69.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.69.0(@typescript-eslint/parser@8.69.0(eslint@9.39.5(jiti@2.7.0))(typescript@6.0.3))(eslint@9.39.5(jiti@2.7.0))(supports-color@7.2.0)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.69.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) + '@typescript-eslint/parser': 8.69.0(eslint@9.39.5(jiti@2.7.0))(supports-color@7.2.0)(typescript@6.0.3) '@typescript-eslint/scope-manager': 8.69.0 - '@typescript-eslint/type-utils': 8.69.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) - '@typescript-eslint/utils': 8.69.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) + '@typescript-eslint/type-utils': 8.69.0(eslint@9.39.5(jiti@2.7.0))(supports-color@7.2.0)(typescript@6.0.3) + '@typescript-eslint/utils': 8.69.0(eslint@9.39.5(jiti@2.7.0))(supports-color@7.2.0)(typescript@6.0.3) '@typescript-eslint/visitor-keys': 8.69.0 eslint: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) ignore: 7.0.8 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/parser@8.69.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)': + '@typescript-eslint/parser@8.69.0(eslint@9.39.5(jiti@2.7.0))(supports-color@7.2.0)(typescript@6.0.3)': dependencies: '@typescript-eslint/scope-manager': 8.69.0 '@typescript-eslint/types': 8.69.0 @@ -5448,8 +5435,6 @@ snapshots: debug: 4.4.3(supports-color@7.2.0) eslint: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) typescript: 6.0.3 - transitivePeerDependencies: - - supports-color '@typescript-eslint/project-service@8.69.0(supports-color@7.2.0)(typescript@6.0.3)': dependencies: @@ -5457,8 +5442,6 @@ snapshots: '@typescript-eslint/types': 8.69.0 debug: 4.4.3(supports-color@7.2.0) typescript: 6.0.3 - transitivePeerDependencies: - - supports-color '@typescript-eslint/scope-manager@8.69.0': dependencies: @@ -5469,17 +5452,15 @@ snapshots: dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.69.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.69.0(eslint@9.39.5(jiti@2.7.0))(supports-color@7.2.0)(typescript@6.0.3)': dependencies: '@typescript-eslint/types': 8.69.0 '@typescript-eslint/typescript-estree': 8.69.0(supports-color@7.2.0)(typescript@6.0.3) - '@typescript-eslint/utils': 8.69.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3) + '@typescript-eslint/utils': 8.69.0(eslint@9.39.5(jiti@2.7.0))(supports-color@7.2.0)(typescript@6.0.3) debug: 4.4.3(supports-color@7.2.0) eslint: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 - transitivePeerDependencies: - - supports-color '@typescript-eslint/types@8.69.0': {} @@ -5495,19 +5476,15 @@ snapshots: tinyglobby: 0.2.17 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/utils@8.69.0(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@6.0.3)': + '@typescript-eslint/utils@8.69.0(eslint@9.39.5(jiti@2.7.0))(supports-color@7.2.0)(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0)) + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.5(jiti@2.7.0))(supports-color@7.2.0) '@typescript-eslint/scope-manager': 8.69.0 '@typescript-eslint/types': 8.69.0 '@typescript-eslint/typescript-estree': 8.69.0(supports-color@7.2.0)(typescript@6.0.3) eslint: 9.39.5(jiti@2.7.0)(supports-color@7.2.0) typescript: 6.0.3 - transitivePeerDependencies: - - supports-color '@typescript-eslint/visitor-keys@8.69.0': dependencies: @@ -5516,14 +5493,14 @@ snapshots: '@ungap/structured-clone@1.4.0': {} - '@unhead/bundler@3.2.3(@oxc-project/types@0.140.0)(esbuild@0.28.2)(lightningcss@1.33.0)(rolldown@1.1.5)(rollup@4.63.1)(srvx@1.0.3)(unhead@3.2.3(esbuild@0.28.2)(rolldown@1.1.5)(rollup@4.63.1)(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)))(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0))': + '@unhead/bundler@3.2.3(@oxc-project/types@0.140.0)(esbuild@0.28.2)(lightningcss@1.33.0)(rolldown@1.1.5)(rollup@4.63.1)(srvx@1.0.3)(unhead@3.2.3(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)))(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0))': dependencies: '@vitejs/devtools-kit': 0.4.12(srvx@1.0.3)(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)) magic-string: 1.2.3 oxc-parser: 0.140.0 oxc-walker: 1.1.1(@oxc-project/types@0.140.0)(oxc-parser@0.140.0)(rolldown@1.1.5) ufo: 1.6.4 - unhead: 3.2.3(esbuild@0.28.2)(rolldown@1.1.5)(rollup@4.63.1)(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)) + unhead: 3.2.3(rolldown@1.1.5)(rollup@4.63.1)(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)) unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.1.5)(rollup@4.63.1)(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)) optionalDependencies: esbuild: 0.28.2 @@ -5534,22 +5511,20 @@ snapshots: - '@farmfe/core' - '@modelcontextprotocol/client' - '@modelcontextprotocol/server' - - '@oxc-project/types' - '@rspack/core' - bun-types-no-globals - cac - ocache - - rollup - - srvx - unloader + - webpack - '@unhead/react@3.2.3(@oxc-project/types@0.140.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.140.0)(react@19.2.8)(rolldown@1.1.5)(rollup@4.63.1)(srvx@1.0.3)(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0))': + '@unhead/react@3.2.3(@oxc-project/types@0.140.0)(lightningcss@1.33.0)(oxc-parser@0.140.0)(react@19.2.8)(rolldown@1.1.5)(rollup@4.63.1)(srvx@1.0.3)(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0))': dependencies: - '@unhead/bundler': 3.2.3(@oxc-project/types@0.140.0)(esbuild@0.28.2)(lightningcss@1.33.0)(rolldown@1.1.5)(rollup@4.63.1)(srvx@1.0.3)(unhead@3.2.3(esbuild@0.28.2)(rolldown@1.1.5)(rollup@4.63.1)(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)))(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)) + '@unhead/bundler': 3.2.3(@oxc-project/types@0.140.0)(esbuild@0.28.2)(lightningcss@1.33.0)(rolldown@1.1.5)(rollup@4.63.1)(srvx@1.0.3)(unhead@3.2.3(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)))(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)) magic-string: 1.2.3 oxc-walker: 1.1.1(@oxc-project/types@0.140.0)(oxc-parser@0.140.0)(rolldown@1.1.5) react: 19.2.8 - unhead: 3.2.3(esbuild@0.28.2)(rolldown@1.1.5)(rollup@4.63.1)(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)) + unhead: 3.2.3(rolldown@1.1.5)(rollup@4.63.1)(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)) unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.1.5)(rollup@4.63.1)(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)) optionalDependencies: vite: 8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0) @@ -5557,24 +5532,18 @@ snapshots: - '@farmfe/core' - '@modelcontextprotocol/client' - '@modelcontextprotocol/server' - - '@oxc-project/types' - '@rspack/core' - '@unhead/cli' - bun-types-no-globals - cac - - esbuild - - lightningcss - ocache - - oxc-parser - - rolldown - - rollup - - srvx - unloader + - webpack '@vitejs/devtools-kit@0.4.12(srvx@1.0.3)(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0))': dependencies: - '@devframes/hub': 0.8.2(devframe@0.8.2(srvx@1.0.3)) - '@devframes/json-render': 0.8.2(@devframes/hub@0.8.2(devframe@0.8.2(srvx@1.0.3)))(devframe@0.8.2(srvx@1.0.3)) + '@devframes/hub': 0.8.2(devframe@0.8.2)(srvx@1.0.3) + '@devframes/json-render': 0.8.2(@devframes/hub@0.8.2(devframe@0.8.2))(devframe@0.8.2)(srvx@1.0.3) devframe: 0.8.2(srvx@1.0.3) local-pkg: 1.2.1 mlly: 1.8.2 @@ -5586,7 +5555,6 @@ snapshots: - '@modelcontextprotocol/server' - cac - ocache - - srvx '@vitejs/plugin-react@6.0.4(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0))': dependencies: @@ -5734,17 +5702,14 @@ snapshots: clsx@2.1.1: {} - cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + cmdk@1.1.1(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)): dependencies: '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-dialog': 1.1.23(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-id': 1.1.4(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-primitive': 2.1.10(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' collapse-white-space@2.1.0: {} @@ -5819,7 +5784,6 @@ snapshots: ufo: 1.6.4 transitivePeerDependencies: - ocache - - srvx devlop@1.1.0: dependencies: @@ -5910,7 +5874,7 @@ snapshots: eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0): dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.5(jiti@2.7.0)(supports-color@7.2.0)) + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.5(jiti@2.7.0))(supports-color@7.2.0) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.21.2(supports-color@7.2.0) '@eslint/config-helpers': 0.4.2 @@ -5946,8 +5910,6 @@ snapshots: optionator: 0.9.4 optionalDependencies: jiti: 2.7.0 - transitivePeerDependencies: - - supports-color espree@10.4.0: dependencies: @@ -6054,7 +6016,7 @@ snapshots: format@0.2.2: {} - framer-motion@12.43.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + framer-motion@12.43.0(react@19.2.8)(react-dom@19.2.8(react@19.2.8)): dependencies: motion-dom: 12.43.0 motion-utils: 12.39.0 @@ -6157,8 +6119,6 @@ snapshots: mdast-util-mdx-jsx: 3.2.0(supports-color@7.2.0) property-information: 7.2.0 style-to-js: 1.1.21 - transitivePeerDependencies: - - supports-color hast-util-raw@9.1.0: dependencies: @@ -6194,8 +6154,6 @@ snapshots: style-to-js: 1.1.21 unist-util-position: 5.0.0 zwitch: 2.0.4 - transitivePeerDependencies: - - supports-color hast-util-to-html@9.0.5: dependencies: @@ -6228,8 +6186,6 @@ snapshots: style-to-js: 1.1.21 unist-util-position: 5.0.0 vfile-message: 4.0.3 - transitivePeerDependencies: - - supports-color hast-util-to-parse5@8.0.1: dependencies: @@ -6521,8 +6477,6 @@ snapshots: parse-entities: 4.0.2 stringify-entities: 4.0.4 unist-util-visit-parents: 6.0.2 - transitivePeerDependencies: - - supports-color mdast-util-find-and-replace@3.0.2: dependencies: @@ -6545,8 +6499,6 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 unist-util-stringify-position: 4.0.0 - transitivePeerDependencies: - - supports-color mdast-util-frontmatter@2.0.1(supports-color@7.2.0): dependencies: @@ -6556,8 +6508,6 @@ snapshots: mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) mdast-util-to-markdown: 2.1.2 micromark-extension-frontmatter: 2.0.0 - transitivePeerDependencies: - - supports-color mdast-util-gfm-autolink-literal@2.0.1: dependencies: @@ -6574,16 +6524,12 @@ snapshots: mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) mdast-util-to-markdown: 2.1.2 micromark-util-normalize-identifier: 2.0.1 - transitivePeerDependencies: - - supports-color mdast-util-gfm-strikethrough@2.0.0(supports-color@7.2.0): dependencies: '@types/mdast': 4.0.4 mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color mdast-util-gfm-table@2.0.0(supports-color@7.2.0): dependencies: @@ -6592,8 +6538,6 @@ snapshots: markdown-table: 3.0.4 mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color mdast-util-gfm-task-list-item@2.0.0(supports-color@7.2.0): dependencies: @@ -6601,8 +6545,6 @@ snapshots: devlop: 1.1.0 mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color mdast-util-gfm@3.1.0(supports-color@7.2.0): dependencies: @@ -6613,8 +6555,6 @@ snapshots: mdast-util-gfm-table: 2.0.0(supports-color@7.2.0) mdast-util-gfm-task-list-item: 2.0.0(supports-color@7.2.0) mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color mdast-util-mdx-expression@2.0.1(supports-color@7.2.0): dependencies: @@ -6624,8 +6564,6 @@ snapshots: devlop: 1.1.0 mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color mdast-util-mdx-jsx@3.2.0(supports-color@7.2.0): dependencies: @@ -6641,8 +6579,6 @@ snapshots: stringify-entities: 4.0.4 unist-util-stringify-position: 4.0.0 vfile-message: 4.0.3 - transitivePeerDependencies: - - supports-color mdast-util-mdx@3.0.0(supports-color@7.2.0): dependencies: @@ -6651,8 +6587,6 @@ snapshots: mdast-util-mdx-jsx: 3.2.0(supports-color@7.2.0) mdast-util-mdxjs-esm: 2.0.1(supports-color@7.2.0) mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color mdast-util-mdxjs-esm@2.0.1(supports-color@7.2.0): dependencies: @@ -6662,8 +6596,6 @@ snapshots: devlop: 1.1.0 mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color mdast-util-phrasing@4.1.0: dependencies: @@ -6994,8 +6926,6 @@ snapshots: micromark-util-subtokenize: 2.1.0 micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - transitivePeerDependencies: - - supports-color minimatch@10.2.6: dependencies: @@ -7020,13 +6950,15 @@ snapshots: motion-utils@12.39.0: {} - motion@12.42.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + motion@12.42.2(react@19.2.8)(react-dom@19.2.8(react@19.2.8)): dependencies: - framer-motion: 12.43.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + framer-motion: 12.43.0(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) tslib: 2.8.1 optionalDependencies: react: 19.2.8 react-dom: 19.2.8(react@19.2.8) + transitivePeerDependencies: + - '@emotion/is-prop-valid' mrmime@2.0.1: {} @@ -7040,7 +6972,7 @@ snapshots: natural-compare@1.4.0: {} - next-themes@0.4.6(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + next-themes@0.4.6(react@19.2.8)(react-dom@19.2.8(react@19.2.8)): dependencies: react: 19.2.8 react-dom: 19.2.8(react@19.2.8) @@ -7249,8 +7181,6 @@ snapshots: unified: 11.0.5 unist-util-visit: 5.1.0 vfile: 6.0.3 - transitivePeerDependencies: - - supports-color react-remove-scroll-bar@2.3.8(@types/react@19.2.17)(react@19.2.8): dependencies: @@ -7271,7 +7201,7 @@ snapshots: optionalDependencies: '@types/react': 19.2.17 - react-router@8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + react-router@8.3.0(react@19.2.8)(react-dom@19.2.8(react@19.2.8)): dependencies: cookie-es: 3.1.1 react: 19.2.8 @@ -7334,8 +7264,6 @@ snapshots: parse-srcset: 1.0.2 unified: 11.0.5 unist-util-visit: 5.1.0 - transitivePeerDependencies: - - supports-color rehype-raw@7.0.0: dependencies: @@ -7348,8 +7276,6 @@ snapshots: '@types/estree': 1.0.9 '@types/hast': 3.0.5 hast-util-to-estree: 3.1.3(supports-color@7.2.0) - transitivePeerDependencies: - - supports-color rehype-slug@6.0.0: dependencies: @@ -7376,8 +7302,6 @@ snapshots: mdast-util-directive: 3.1.0(supports-color@7.2.0) micromark-extension-directive: 3.0.2 unified: 11.0.5 - transitivePeerDependencies: - - supports-color remark-frontmatter@5.0.0(supports-color@7.2.0): dependencies: @@ -7385,8 +7309,6 @@ snapshots: mdast-util-frontmatter: 2.0.1(supports-color@7.2.0) micromark-extension-frontmatter: 2.0.0 unified: 11.0.5 - transitivePeerDependencies: - - supports-color remark-gfm@4.0.1(supports-color@7.2.0): dependencies: @@ -7396,8 +7318,6 @@ snapshots: remark-parse: 11.0.0(supports-color@7.2.0) remark-stringify: 11.0.0 unified: 11.0.5 - transitivePeerDependencies: - - supports-color remark-mdx-frontmatter@5.2.0: dependencies: @@ -7412,8 +7332,6 @@ snapshots: dependencies: mdast-util-mdx: 3.0.0(supports-color@7.2.0) micromark-extension-mdxjs: 3.0.0 - transitivePeerDependencies: - - supports-color remark-parse@11.0.0(supports-color@7.2.0): dependencies: @@ -7421,8 +7339,6 @@ snapshots: mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) micromark-util-types: 2.0.2 unified: 11.0.5 - transitivePeerDependencies: - - supports-color remark-rehype@11.1.2: dependencies: @@ -7651,7 +7567,7 @@ snapshots: undici-types@7.18.2: {} - unhead@3.2.3(esbuild@0.28.2)(rolldown@1.1.5)(rollup@4.63.1)(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)): + unhead@3.2.3(rolldown@1.1.5)(rollup@4.63.1)(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)): dependencies: hookable: 6.1.1 unplugin: 3.3.0(esbuild@0.28.2)(rolldown@1.1.5)(rollup@4.63.1)(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)) @@ -7661,9 +7577,6 @@ snapshots: - '@farmfe/core' - '@rspack/core' - bun-types-no-globals - - esbuild - - rolldown - - rollup - unloader - webpack @@ -7756,14 +7669,11 @@ snapshots: util-deprecate@1.0.2: {} - vaul@1.1.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8): + vaul@1.1.2(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)): dependencies: - '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-dialog': 1.1.23(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) react: 19.2.8 react-dom: 19.2.8(react@19.2.8) - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' vfile-location@5.0.3: dependencies: @@ -7833,10 +7743,10 @@ snapshots: zod@4.4.3: {} - zudoku@0.86.0(@oxc-project/types@0.140.0)(@types/json-schema@7.0.15)(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.33.0)(oxc-parser@0.140.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(rolldown@1.1.5)(rollup@4.63.1)(srvx@1.0.3)(supports-color@7.2.0)(use-sync-external-store@1.6.0(react@19.2.8)): + zudoku@0.88.0(@oxc-project/types@0.140.0)(@types/json-schema@7.0.15)(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.33.0)(oxc-parser@0.140.0)(react@19.2.8)(react-dom@19.2.8(react@19.2.8))(rolldown@1.1.5)(rollup@4.63.1)(srvx@1.0.3)(supports-color@7.2.0)(use-sync-external-store@1.6.0(react@19.2.8)): dependencies: '@apidevtools/json-schema-ref-parser': 15.5.0(@types/json-schema@7.0.15) - '@base-ui/react': 1.8.0(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@base-ui/react': 1.8.0(@types/react@19.2.17)(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@envelop/core': 5.5.1 '@graphiql/toolkit': 0.12.1(@types/node@24.13.3)(graphql@16.14.2) '@graphql-typed-document-node/core': 3.2.0(graphql@16.14.2) @@ -7846,30 +7756,30 @@ snapshots: '@mdx-js/react': 3.1.1(@types/react@19.2.17)(react@19.2.8) '@mdx-js/rollup': 3.1.1(rollup@4.63.1)(supports-color@7.2.0) '@pothos/core': 4.13.1(graphql@16.14.2) - '@radix-ui/react-accordion': 1.2.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-alert-dialog': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-aspect-ratio': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-checkbox': 1.3.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-collapsible': 1.1.20(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-dialog': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-dropdown-menu': 2.1.24(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-hover-card': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-label': 2.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-navigation-menu': 1.2.22(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-popover': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-progress': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-radio-group': 1.4.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-scroll-area': 1.2.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-select': 2.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-separator': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-slider': 1.4.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-accordion': 1.2.20(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-alert-dialog': 1.1.23(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-aspect-ratio': 1.1.15(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-checkbox': 1.3.11(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-collapsible': 1.1.20(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-dialog': 1.1.23(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-dropdown-menu': 2.1.24(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-hover-card': 1.1.23(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-label': 2.1.15(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-navigation-menu': 1.2.22(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-popover': 1.1.23(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-progress': 1.1.16(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-radio-group': 1.4.7(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-scroll-area': 1.2.18(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-select': 2.3.7(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-separator': 1.1.15(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-slider': 1.4.7(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@radix-ui/react-slot': 1.3.3(@types/react@19.2.17)(react@19.2.8) - '@radix-ui/react-switch': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-tabs': 1.1.21(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-toggle': 1.1.18(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-toggle-group': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-tooltip': 1.2.16(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) - '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@radix-ui/react-switch': 1.3.7(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-tabs': 1.1.21(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-toggle': 1.1.18(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-toggle-group': 1.1.19(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-tooltip': 1.2.16(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) + '@radix-ui/react-visually-hidden': 1.2.11(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@scalar/openapi-parser': 0.28.10 '@scalar/snippetz': 0.9.23 '@shikijs/langs': 4.3.1 @@ -7878,17 +7788,17 @@ snapshots: '@shikijs/transformers': 4.3.1 '@tailwindcss/typography': 0.5.20(tailwindcss@4.3.3) '@tailwindcss/vite': 4.3.3(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)) - '@tanem/react-nprogress': 6.0.3(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + '@tanem/react-nprogress': 6.0.3(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) '@tanstack/react-query': 5.101.4(react@19.2.8) '@types/react': 19.2.17 '@types/react-dom': 19.2.3(@types/react@19.2.17) - '@unhead/react': 3.2.3(@oxc-project/types@0.140.0)(esbuild@0.28.2)(lightningcss@1.33.0)(oxc-parser@0.140.0)(react@19.2.8)(rolldown@1.1.5)(rollup@4.63.1)(srvx@1.0.3)(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)) + '@unhead/react': 3.2.3(@oxc-project/types@0.140.0)(lightningcss@1.33.0)(oxc-parser@0.140.0)(react@19.2.8)(rolldown@1.1.5)(rollup@4.63.1)(srvx@1.0.3)(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)) '@vitejs/plugin-react': 6.0.4(vite@8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0)) '@x0k/json-schema-merge': 1.0.4 bs58: 6.0.0 class-variance-authority: 0.7.1 clsx: 2.1.1 - cmdk: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + cmdk: 1.1.1(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) dotenv: 17.4.2 embla-carousel-react: 8.6.0(react@19.2.8) esbuild: 0.28.2 @@ -7915,9 +7825,9 @@ snapshots: mdast-util-mdx: 3.0.0(supports-color@7.2.0) mdast-util-mdx-jsx: 3.2.0(supports-color@7.2.0) micromark-extension-mdxjs: 3.0.0 - motion: 12.42.2(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + motion: 12.42.2(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) nanoevents: 9.1.0 - next-themes: 0.4.6(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + next-themes: 0.4.6(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) oauth4webapi: 3.8.6 openapi-types: 12.1.3 pagefind: 1.5.2 @@ -7931,7 +7841,7 @@ snapshots: react-hook-form: 7.83.0(react@19.2.8) react-is: 19.2.8 react-markdown: 10.1.0(@types/react@19.2.17)(react@19.2.8)(supports-color@7.2.0) - react-router: 8.3.0(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + react-router: 8.3.0(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) rehype-mdx-import-media: 1.4.0(supports-color@7.2.0) rehype-raw: 7.0.0 rehype-slug: 6.0.0 @@ -7950,7 +7860,7 @@ snapshots: tw-animate-css: 1.4.0 unified: 11.0.5 unist-util-visit: 5.1.0 - vaul: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + vaul: 1.1.2(@types/react@19.2.17)(@types/react-dom@19.2.3(@types/react@19.2.17))(react@19.2.8)(react-dom@19.2.8(react@19.2.8)) vfile: 6.0.3 vite: 8.1.5(@types/node@24.13.3)(esbuild@0.28.2)(jiti@2.7.0)(yaml@2.9.0) yaml: 2.9.0 @@ -7963,11 +7873,8 @@ snapshots: - '@farmfe/core' - '@modelcontextprotocol/client' - '@modelcontextprotocol/server' - - '@oxc-project/types' - '@rolldown/plugin-babel' - '@rspack/core' - - '@types/json-schema' - - '@types/node' - '@unhead/cli' - '@vitejs/devtools' - babel-plugin-react-compiler @@ -7976,24 +7883,16 @@ snapshots: - date-fns - graphql-ws - immer - - jiti - less - - lightningcss - ocache - - oxc-parser - - rolldown - - rollup - rxjs - sass - sass-embedded - - srvx - stylus - sugarss - - supports-color - terser - tsx - unloader - - use-sync-external-store - webpack zustand@5.0.14(@types/react@19.2.17)(react@19.2.8)(use-sync-external-store@1.6.0(react@19.2.8)): diff --git a/src/TopNavMenus.tsx b/src/TopNavMenus.tsx new file mode 100644 index 00000000..a14a5ee2 --- /dev/null +++ b/src/TopNavMenus.tsx @@ -0,0 +1,223 @@ +/// +import { useMemo } from "react"; +import type { NavigationItem } from "zudoku"; +import { useZudoku } from "zudoku/hooks"; +import type { LucideIcon } from "zudoku/icons"; +import { Link, useHref } from "zudoku/router"; +import { + NavigationMenu, + NavigationMenuContent, + NavigationMenuItem, + NavigationMenuLink, + NavigationMenuList, + NavigationMenuTrigger, +} from "zudoku/ui/NavigationMenu"; + +export type TopNavMenu = { + label: string; + icon?: LucideIcon; + /** + * Labels of top-level `navigation` items. The menu links to each one, and + * shows in the tab row where the first one was. + */ + tabs: string[]; +}; + +type Tab = { + label: string; + icon?: LucideIcon; + to: string; + href: string; + paths: string[]; +}; + +type ResolvedMenu = TopNavMenu & { items: Tab[]; position: number }; + +const isExternal = (to: string) => /^[a-z][a-z\d+.-]*:/i.test(to); + +const withSlash = (path: string) => (path.startsWith("/") ? path : `/${path}`); + +// Keep in step with getFirstMatchingPath() in Zudoku, because the tab row +// links each tab to this path, and the CSS finds the tab by that href. +const firstPath = (item: NavigationItem): string | undefined => { + switch (item.type) { + case "doc": + case "custom-page": + return withSlash(item.path); + case "link": + return item.to; + case "category": { + if (item.link) { + return item.link.type === "doc" ? withSlash(item.link.path) : item.link.to; + } + const pageIn = (items: NavigationItem[]): string | undefined => { + for (const child of items) { + const path = + child.type === "category" ? pageIn(child.items) : firstPath(child); + if (path) return path; + } + }; + return pageIn(item.items); + } + default: + return undefined; + } +}; + +const allPaths = (item: NavigationItem): string[] => { + switch (item.type) { + case "doc": + case "custom-page": + return [withSlash(item.path)]; + case "link": + return isExternal(item.to) ? [] : [item.to]; + case "category": + return [ + ...(item.link ? [firstPath({ ...item, items: [] })!] : []), + ...item.items.flatMap(allPaths), + ]; + default: + return []; + } +}; + +// A link item such as the Platform API also owns the pages under its path. +const isOn = (pathname: string, paths: string[]) => + paths.some((path) => pathname === path || pathname.startsWith(`${path}/`)); + +const tabSelector = (href: string) => + `div:has(> [data-top-nav-menu]) > nav:not([data-top-nav-menu]) li:has(> a[href=${JSON.stringify(href)}])`; + + +const buildCss = (menus: ResolvedMenu[]) => { + const rules = [ + `div:has(> [data-top-nav-menu]) { justify-content: flex-start; column-gap: 2rem; }`, + `div:has(> [data-top-nav-menu]) > nav:not([data-top-nav-menu]), + div:has(> [data-top-nav-menu]) > nav:not([data-top-nav-menu]) > ul { display: contents; }`, + `div:has(> [data-top-nav-menu]) > :not(nav) { order: 9999; margin-inline-start: auto; }`, + `.top-nav-menu-trigger[data-active]::after { + content: ""; position: absolute; inset-inline: 0; bottom: 0; height: 2px; + background: var(--color-primary); + }`, + ]; + + menus.forEach((menu, index) => { + const first = tabSelector(menu.items[0]!.href); + rules.push(`${first}, ${first} ~ li { order: ${2 * (index + 1)}; }`); + rules.push( + `${menu.items.map((tab) => tabSelector(tab.href)).join(",\n")} { display: none; }`, + ); + }); + + return rules.join("\n"); +}; + +/** + * Groups top-level navigation tabs into drop-down menus in the desktop tab row. + * Use the return value as the "top-navigation-side" slot. + * + * The tabs stay in `navigation`, because they give their pages a sidebar and + * they are the entries in the mobile menu. Only the desktop tab row hides them. + */ +export const topNavMenus = (menus: TopNavMenu[]) => { + const TopNavMenus = ({ location }: { location: { pathname: string } }) => { + const { options } = useZudoku(); + const base = useHref("/").replace(/\/$/, ""); + + const resolved = useMemo(() => { + const navigation = options.navigation ?? []; + + return menus + .flatMap((menu): ResolvedMenu[] => { + const items = menu.tabs.flatMap((label): Tab[] => { + const item = navigation.find((entry) => entry.label === label); + const to = item && firstPath(item); + if (!item || !to) { + if (import.meta.env.DEV) { + console.warn( + `[topNavMenus] "${menu.label}": no top-level navigation item has the label "${label}".`, + ); + } + return []; + } + const icon = "icon" in item ? item.icon : undefined; + return [ + { + label, + icon: typeof icon === "string" ? undefined : icon, + to, + href: isExternal(to) ? to : `${base}${to}`, + paths: allPaths(item), + }, + ]; + }); + if (items.length === 0) return []; + + const position = navigation.findIndex( + (entry) => entry.label === items[0]!.label, + ); + return [{ ...menu, items, position }]; + }) + .sort((a, b) => a.position - b.position); + }, [options.navigation, base]); + + const css = useMemo(() => buildCss(resolved), [resolved]); + + return ( + <> +