From 6052ac79e0c825f6423e45a4365f3a7a599c0ea9 Mon Sep 17 00:00:00 2001 From: Tyrel Chambers Date: Tue, 14 Oct 2025 02:51:27 -0400 Subject: [PATCH 01/37] Feat/82 update packages (#94) * chore: add blocks package * feat: install tailwind * chore: install tailwind v3 * fix: remove autoprefixer * Restore package-lock * fix: disable preflight --- astro.config.ts | 2 + package-lock.json | 3899 ++++++++++++++++++++++++++++++- package.json | 7 +- src/components/HeadCommon.astro | 1 + src/styles/tailwind.css | 3 + tailwind.config.js | 12 + 6 files changed, 3883 insertions(+), 41 deletions(-) create mode 100644 src/styles/tailwind.css create mode 100644 tailwind.config.js diff --git a/astro.config.ts b/astro.config.ts index 8cd27ca6b3c..b6f5d6c1d38 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -13,6 +13,7 @@ import yaml from "@rollup/plugin-yaml" import { ccipRedirects } from "./src/config/redirects/ccip" import trailingSlashMiddleware from "./src/integrations/trailing-slash-middleware" import redirectsJson from "./src/features/redirects/redirects.json" +import tailwind from "@astrojs/tailwind" config() // Load .env file // Prepare set of redirect source URLs to exclude from sitemap @@ -39,6 +40,7 @@ export default defineConfig({ ...ccipRedirects, }, integrations: [ + tailwind(), trailingSlashMiddleware(), preact({ include: ["**/preact/*"], diff --git a/package-lock.json b/package-lock.json index 583e6431334..3757697ad6a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,9 @@ "@astrojs/prism": "^3.3.0", "@astrojs/react": "^4.4.0", "@astrojs/sitemap": "^3.6.0", + "@astrojs/tailwind": "^6.0.2", "@astrojs/vercel": "^8.2.8", + "@chainlink/blocks": "^1.3.1", "@chainlink/cl-search-frontend": "^0.12.0", "@chainlink/components": "^0.4.18", "@chainlink/contracts": "1.4.0", @@ -108,6 +110,7 @@ "solhint": "^5.2.0", "solhint-plugin-chainlink-solidity": "github:smartcontractkit/chainlink-solhint-rules", "solhint-plugin-prettier": "^0.1.0", + "tailwindcss": "^3.4.18", "ts-jest": "^29.4.4", "tsconfig-paths": "^4.2.0", "tsx": "^4.20.6", @@ -663,6 +666,49 @@ "zod": "^3.25.76" } }, + "node_modules/@astrojs/tailwind": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@astrojs/tailwind/-/tailwind-6.0.2.tgz", + "integrity": "sha512-j3mhLNeugZq6A8dMNXVarUa8K6X9AW+QHU9u3lKNrPLMHhOQ0S7VeWhHwEeJFpEK1BTKEUY1U78VQv2gN6hNGg==", + "license": "MIT", + "dependencies": { + "autoprefixer": "^10.4.21", + "postcss": "^8.5.3", + "postcss-load-config": "^4.0.2" + }, + "peerDependencies": { + "astro": "^3.0.0 || ^4.0.0 || ^5.0.0", + "tailwindcss": "^3.0.24" + } + }, + "node_modules/@astrojs/tailwind/node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/@astrojs/telemetry": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.0.tgz", @@ -1776,6 +1822,554 @@ "fontkit": "^2.0.2" } }, + "node_modules/@chainlink/blocks": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@chainlink/blocks/-/blocks-1.3.1.tgz", + "integrity": "sha512-0Px46fJA7aIm7cFuF/6CgV1ZSbkNKfe+QBA0XO7j9Ld8cevlIF/r4GsqR5zDbSaHPejvRloMQJVZoBsU9qINnA==", + "license": "ISC", + "dependencies": { + "@floating-ui/react": "0.22.2", + "@hookform/resolvers": "3.9.1", + "@radix-ui/react-accordion": "1.2.1", + "@radix-ui/react-checkbox": "1.1.2", + "@radix-ui/react-dialog": "1.1.6", + "@radix-ui/react-dropdown-menu": "2.0.6", + "@radix-ui/react-label": "2.1.0", + "@radix-ui/react-navigation-menu": "1.1.3", + "@radix-ui/react-popover": "1.1.1", + "@radix-ui/react-radio-group": "1.2.1", + "@radix-ui/react-select": "2.1.2", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-switch": "1.1.1", + "@radix-ui/react-tabs": "1.1.3", + "@radix-ui/react-toast": "1.2.4", + "@radix-ui/react-toggle": "1.1.9", + "@radix-ui/react-toggle-group": "1.1.9", + "@radix-ui/react-tooltip": "1.0.7", + "@tailwindcss/container-queries": "0.1.1", + "@tanstack/react-query": "5.69.0", + "@tanstack/react-table": "8.20.5", + "apexcharts": "4.5.0", + "class-variance-authority": "0.7.0", + "clsx": "2.1.1", + "lucide-react": "0.390.0", + "react": "18.3.1", + "react-apexcharts": "1.7.0", + "react-dom": "18.3.1", + "react-hook-form": "7.53.1", + "react-modal": "3.16.1", + "react-transition-group": "4.4.5", + "sonner": "1.7.3", + "tailwind-merge": "2.3.0", + "tailwindcss": "3.4.4", + "tailwindcss-animate": "1.0.7", + "zod": "3.25.76" + }, + "peerDependencies": { + "react": ">=18.0.0 <19.0.0", + "react-dom": ">=18.0.0 <19.0.0", + "tailwindcss": ">=3.0.0 <4.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": false + }, + "react-dom": { + "optional": false + } + } + }, + "node_modules/@chainlink/blocks/node_modules/@radix-ui/primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.1.tgz", + "integrity": "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==", + "license": "MIT" + }, + "node_modules/@chainlink/blocks/node_modules/@radix-ui/react-dialog": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.6.tgz", + "integrity": "sha512-/IVhJV5AceX620DUJ4uYVMymzsipdKBzo3edo+omeskCKGm9FRHM0ebIdbPnlQVJqyuHbuBltQUOG2mOTq2IYw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.5", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.2", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-portal": "1.1.4", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-slot": "1.1.2", + "@radix-ui/react-use-controllable-state": "1.1.0", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@chainlink/blocks/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz", + "integrity": "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@chainlink/blocks/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-context": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@chainlink/blocks/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.5.tgz", + "integrity": "sha512-E4TywXY6UsXNRhFrECa5HAvE5/4BFcGyfTyK36gP+pAW1ed7UTK4vKwdr53gAJYwqbfCWC6ATvJa3J3R/9+Qrg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-escape-keydown": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@chainlink/blocks/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@chainlink/blocks/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", + "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@chainlink/blocks/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", + "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@chainlink/blocks/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.2.tgz", + "integrity": "sha512-zxwE80FCU7lcXUGWkdt6XpTTCKPitG1XKOwViTxHVKIJhZl9MvIl2dVHeZENCWD9+EdWv05wlaEkRXUykU27RA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@chainlink/blocks/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-focus-scope/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@chainlink/blocks/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-id": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@chainlink/blocks/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-id/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@chainlink/blocks/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-portal": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.4.tgz", + "integrity": "sha512-sn2O9k1rPFYVyKd5LAJfo96JlSGVFpa1fS6UuBJfrZadudiw5tAmru+n1x7aMRQ84qDM71Zh1+SzK5QwU0tJfA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@chainlink/blocks/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@chainlink/blocks/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.2.tgz", + "integrity": "sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@chainlink/blocks/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-presence/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@chainlink/blocks/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-primitive": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.2.tgz", + "integrity": "sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@chainlink/blocks/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.2.tgz", + "integrity": "sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@chainlink/blocks/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@chainlink/blocks/node_modules/@radix-ui/react-dialog/node_modules/@radix-ui/react-use-controllable-state/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@chainlink/blocks/node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.1.tgz", + "integrity": "sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@chainlink/blocks/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/@chainlink/blocks/node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@chainlink/blocks/node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@chainlink/blocks/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/@chainlink/blocks/node_modules/tailwindcss": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", + "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==", + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@chainlink/cl-search-frontend": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/@chainlink/cl-search-frontend/-/cl-search-frontend-0.12.0.tgz", @@ -2219,6 +2813,42 @@ "@ethersproject/strings": "^5.7.0" } }, + "node_modules/@chainlink/components/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/@chainlink/components/node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/@chainlink/components/node_modules/elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", @@ -2288,6 +2918,64 @@ "@ethersproject/wordlists": "5.7.0" } }, + "node_modules/@chainlink/components/node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@chainlink/components/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/@chainlink/components/node_modules/tailwindcss": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", + "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==", + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@chainlink/contracts": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@chainlink/contracts/-/contracts-1.4.0.tgz", @@ -2819,6 +3507,100 @@ "tailwindcss-animate": "1.0.7" } }, + "node_modules/@chainlink/design-system/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/@chainlink/design-system/node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@chainlink/design-system/node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@chainlink/design-system/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/@chainlink/design-system/node_modules/tailwindcss": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", + "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==", + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@chainlink/local": { "version": "0.2.5-beta.0", "resolved": "https://registry.npmjs.org/@chainlink/local/-/local-0.2.5-beta.0.tgz", @@ -6607,6 +7389,15 @@ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, + "node_modules/@hookform/resolvers": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.9.1.tgz", + "integrity": "sha512-ud2HqmGBM0P0IABqoskKWI6PEf6ZDDBZkFqe2Vnl+mTHCEHzr3ISjjZyCwTjC/qpL25JC9aIDkloQejvMeq0ug==", + "license": "MIT", + "peerDependencies": { + "react-hook-form": "^7.0.0" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", @@ -10461,6 +11252,12 @@ "node": ">=18.0.0" } }, + "node_modules/@radix-ui/number": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", + "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==", + "license": "MIT" + }, "node_modules/@radix-ui/primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", @@ -10470,6 +11267,236 @@ "@babel/runtime": "^7.13.10" } }, + "node_modules/@radix-ui/react-accordion": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.1.tgz", + "integrity": "sha512-bg/l7l5QzUjgsh8kjwDFommzAshnUsuVMV5NM56QVCm+7ZckYdd9P/ExR8xG/Oup0OajVxNLaHJ1tb8mXk+nzQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collapsible": "1.1.1", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-accordion/node_modules/@radix-ui/primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", + "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-accordion/node_modules/@radix-ui/react-collection": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", + "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-accordion/node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-accordion/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", + "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-accordion/node_modules/@radix-ui/react-context": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-accordion/node_modules/@radix-ui/react-direction": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-accordion/node_modules/@radix-ui/react-id": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-accordion/node_modules/@radix-ui/react-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", + "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-accordion/node_modules/@radix-ui/react-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-accordion/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-accordion/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-accordion/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-arrow": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", @@ -10494,6 +11521,415 @@ } } }, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.1.2.tgz", + "integrity": "sha512-/i0fl686zaJbDQLNKrkCbMyDm6FQMt4jg323k7HuqitoANm9sE23Ql8yOK3Wusk34HSLKDChhMux05FnP6KUkw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", + "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", + "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-context": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-presence": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.1.tgz", + "integrity": "sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", + "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-use-previous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", + "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox/node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.1.tgz", + "integrity": "sha512-1///SnrfQHJEofLokyczERxQbWfCGQlQ2XsCZMucVs6it+lq9iw4vXy+uDn1edlb58cOZOWSldnfPAYcT4O/Yg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", + "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", + "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-context": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-id": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-presence": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.1.tgz", + "integrity": "sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", + "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-collection": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz", @@ -10758,6 +12194,85 @@ } } }, + "node_modules/@radix-ui/react-label": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.0.tgz", + "integrity": "sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", + "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", + "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label/node_modules/@radix-ui/react-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-menu": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.0.6.tgz", @@ -11456,28 +12971,1677 @@ } } }, + "node_modules/@radix-ui/react-radio-group": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.2.1.tgz", + "integrity": "sha512-kdbv54g4vfRjja9DNWPMxKvXblzqbpEC8kspEkZ6dVP7kQksGCn+iZHkcCz2nb00+lPdRvxrqy4WrvvV1cNqrQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-presence": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", + "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-collection": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", + "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", + "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-context": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-direction": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-id": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-presence": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.1.tgz", + "integrity": "sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", + "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz", + "integrity": "sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-use-previous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", + "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group/node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-roving-focus": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz", "integrity": "sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-collection": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-controllable-state": "1.0.1" + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "1.0.1", + "@radix-ui/react-collection": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-direction": "1.0.1", + "@radix-ui/react-id": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.2.tgz", + "integrity": "sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.1", + "@radix-ui/react-focus-guards": "1.1.1", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.2", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.6.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@floating-ui/react-dom": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz", + "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.4" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", + "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-arrow": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz", + "integrity": "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-collection": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", + "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", + "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-context": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-direction": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.1.tgz", + "integrity": "sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-escape-keydown": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", + "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", + "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-id": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-popper": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.0.tgz", + "integrity": "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-rect": "1.1.0", + "@radix-ui/react-use-size": "1.1.0", + "@radix-ui/rect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-portal": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.2.tgz", + "integrity": "sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", + "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", + "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-use-previous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", + "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-use-rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", + "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-visually-hidden": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz", + "integrity": "sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", + "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-select/node_modules/react-remove-scroll": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", + "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.6", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.1.1.tgz", + "integrity": "sha512-diPqDDoBcZPSicYoMWdWx+bCPuTRH4QSp9J+65IvtdS0Kuzt67bI6n32vCj8q6NZmYW/ah+2orOtMwcX5eQwIg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch/node_modules/@radix-ui/primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", + "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-switch/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", + "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch/node_modules/@radix-ui/react-context": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch/node_modules/@radix-ui/react-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", + "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch/node_modules/@radix-ui/react-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch/node_modules/@radix-ui/react-use-previous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", + "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch/node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.3.tgz", + "integrity": "sha512-9mFyI30cuRDImbmFF6O2KUJdgEOsGh9Vmx9x/Dh9tOhL7BngmQPQfwW4aejKm5OHpfWIdmeV6ySyuxoOGjtNng==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-roving-focus": "1.1.2", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.1.tgz", + "integrity": "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-collection": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.2.tgz", + "integrity": "sha512-9z54IEKRxIa9VityapoEYMuByaG42iSy1ZXlY2KcuLSEtq8x4987/N6m15ppoMffgZX72gER2uHe1D9Y6Unlcw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-slot": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz", + "integrity": "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-context": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-direction": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-id": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-presence": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.2.tgz", + "integrity": "sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-primitive": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.2.tgz", + "integrity": "sha512-Ec/0d38EIuvDF+GZjcMU/Ze6MxntVJYO/fRlCPhCaVUyPY9WTalHJw54tp9sXeJo3tlShWpy41vQRgLRGOuz+w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.2.tgz", + "integrity": "sha512-zgMQWkNO169GtGqRvYrzb0Zf8NhMHS2DuEB/TiEmVnpr5OqPU3i8lfbxaAmC2J/KYuIQxyoQQ6DxepyXp61/xw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-primitive": "2.0.2", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-slot": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.2.tgz", + "integrity": "sha512-YAKxaiGsSQJ38VzKH86/BPRC4rh+b1Jpa+JneA5LRE7skmLPNAyeG8kPJj/oo4STLvlrs8vkf/iYyc3A5stYCQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.4.tgz", + "integrity": "sha512-Sch9idFJHJTMH9YNpxxESqABcAFweJG4tKv+0zo0m5XBvUSL8FM5xKcJLFLXononpePs8IclyX1KieL5SDUNgA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-collection": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.3", + "@radix-ui/react-portal": "1.1.3", + "@radix-ui/react-presence": "1.1.2", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-visually-hidden": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.1.tgz", + "integrity": "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-collection": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.1.tgz", + "integrity": "sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-context": "1.1.1", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-slot": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz", + "integrity": "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-context": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", + "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.3.tgz", + "integrity": "sha512-onrWn/72lQoEucDmJnr8uczSNTujT0vJnA/X5+3AkChVPowr8n1yvIKIabhWyMQeMvvmdpsvcyDqx3X1LEXCPg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.1", + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-escape-keydown": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-portal": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.3.tgz", + "integrity": "sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.1", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-presence": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.2.tgz", + "integrity": "sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-primitive": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.1.tgz", + "integrity": "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-slot": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.1.tgz", + "integrity": "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", + "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast/node_modules/@radix-ui/react-visually-hidden": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.1.tgz", + "integrity": "sha512-vVfA2IZ9q/J+gEamvj761Oq1FpWgCDaNOOIfbPVp2MVPLEomUr5+Vf7kJGwQ24YxZSlQVar7Bes8kyTo5Dshpg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -11488,18 +14652,390 @@ } } }, - "node_modules/@radix-ui/react-slot": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", - "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "node_modules/@radix-ui/react-toggle": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.9.tgz", + "integrity": "sha512-ZoFkBBz9zv9GWer7wIjvdRxmh2wyc2oKWw6C6CseWd6/yq1DK/l5lJ+wnsmFwJZbBYqr02mrf8A2q/CVCuM3ZA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1" + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.9.tgz", + "integrity": "sha512-HJ6gXdYVN38q/5KDdCcd+JTuXUyFZBMJbwXaU/82/Gi+V2ps6KpiZ2sQecAeZCV80POGRfkUBdUIj6hIdF6/MQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-roving-focus": "1.1.9", + "@radix-ui/react-toggle": "1.1.8", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/primitive": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", + "integrity": "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-collection": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.6.tgz", + "integrity": "sha512-PbhRFK4lIEw9ADonj48tiYWzkllz81TM7KVYyyMMw2cwHO7D5h4XKEblL8NlaRisTK3QTe6tBEhDccFUryxHBQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-slot": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-primitive": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.2.tgz", + "integrity": "sha512-uHa+l/lKfxuDD2zjN/0peM/RhhSmRjr5YWdk/37EnSv1nJ88uvG85DPexSm8HdFQROd2VdERJ6ynXbkCFi+APw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.9.tgz", + "integrity": "sha512-ZzrIFnMYHHCNqSNCsuN6l7wlewBEq0O0BCSBkabJMFXVO51LRUTq71gLP1UxFvmrXElqmPjA5VX7IqC9VpazAQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.6", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-slot": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.2.tgz", + "integrity": "sha512-y7TBO4xN4Y94FvcWIOIh18fM4R1A8S4q1jhoz4PNzOoHsFcN8pogcFmZrTYAm4F9VRUrWP/Mw7xSKybIeRI+CQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-toggle": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.8.tgz", + "integrity": "sha512-hrpa59m3zDnsa35LrTOH5s/a3iGv/VD+KKQjjiCTo/W4r0XwPpiWQvAv6Xl1nupSoaZeNNxW6sJH9ZydsjKdYQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle/node_modules/@radix-ui/primitive": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", + "integrity": "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-toggle/node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle/node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle/node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle/node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -11579,6 +15115,39 @@ } } }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event/node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/@radix-ui/react-use-escape-keydown": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", @@ -17421,6 +20990,62 @@ "@supabase/storage-js": "2.12.2" } }, + "node_modules/@svgdotjs/svg.draggable.js": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@svgdotjs/svg.draggable.js/-/svg.draggable.js-3.0.6.tgz", + "integrity": "sha512-7iJFm9lL3C40HQcqzEfezK2l+dW2CpoVY3b77KQGqc8GXWa6LhhmX5Ckv7alQfUXBuZbjpICZ+Dvq1czlGx7gA==", + "license": "MIT", + "peerDependencies": { + "@svgdotjs/svg.js": "^3.2.4" + } + }, + "node_modules/@svgdotjs/svg.filter.js": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@svgdotjs/svg.filter.js/-/svg.filter.js-3.0.9.tgz", + "integrity": "sha512-/69XMRCDoam2HgC4ldHIaDgeQf1ViHIsa0Ld4uWgiXtZ+E24DWHe/9Ib6kbNiZ7WRIdlVokUDR1Fg0kjIpkfbw==", + "license": "MIT", + "dependencies": { + "@svgdotjs/svg.js": "^3.2.4" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/@svgdotjs/svg.js": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@svgdotjs/svg.js/-/svg.js-3.2.5.tgz", + "integrity": "sha512-/VNHWYhNu+BS7ktbYoVGrCmsXDh+chFMaONMwGNdIBcFHrWqk2jY8fNyr3DLdtQUIalvkPfM554ZSFa3dm3nxQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Fuzzyma" + } + }, + "node_modules/@svgdotjs/svg.resize.js": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@svgdotjs/svg.resize.js/-/svg.resize.js-2.0.5.tgz", + "integrity": "sha512-4heRW4B1QrJeENfi7326lUPYBCevj78FJs8kfeDxn5st0IYPIRXoTtOSYvTzFWgaWWXd3YCDE6ao4fmv91RthA==", + "license": "MIT", + "engines": { + "node": ">= 14.18" + }, + "peerDependencies": { + "@svgdotjs/svg.js": "^3.2.4", + "@svgdotjs/svg.select.js": "^4.0.1" + } + }, + "node_modules/@svgdotjs/svg.select.js": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@svgdotjs/svg.select.js/-/svg.select.js-4.0.3.tgz", + "integrity": "sha512-qkMgso1sd2hXKd1FZ1weO7ANq12sNmQJeGDjs46QwDVsxSRcHmvWKL2NDF7Yimpwf3sl5esOLkPqtV2bQ3v/Jg==", + "license": "MIT", + "engines": { + "node": ">= 14.18" + }, + "peerDependencies": { + "@svgdotjs/svg.js": "^3.2.4" + } + }, "node_modules/@swagger-api/apidom-ast": { "version": "1.0.0-beta.47", "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-1.0.0-beta.47.tgz", @@ -18049,6 +21674,65 @@ "tailwindcss": ">=3.2.0" } }, + "node_modules/@tanstack/query-core": { + "version": "5.69.0", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.69.0.tgz", + "integrity": "sha512-Kn410jq6vs1P8Nm+ZsRj9H+U3C0kjuEkYLxbiCyn3MDEiYor1j2DGVULqAz62SLZtUZ/e9Xt6xMXiJ3NJ65WyQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/react-query": { + "version": "5.69.0", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.69.0.tgz", + "integrity": "sha512-Ift3IUNQqTcaFa1AiIQ7WCb/PPy8aexZdq9pZWLXhfLcLxH0+PZqJ2xFImxCpdDZrFRZhLJrh76geevS5xjRhA==", + "license": "MIT", + "dependencies": { + "@tanstack/query-core": "5.69.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^18 || ^19" + } + }, + "node_modules/@tanstack/react-table": { + "version": "8.20.5", + "resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.20.5.tgz", + "integrity": "sha512-WEHopKw3znbUZ61s9i0+i9g8drmDo6asTWbrQh8Us63DAk/M0FkmIqERew6P71HI75ksZ2Pxyuf4vvKh9rAkiA==", + "license": "MIT", + "dependencies": { + "@tanstack/table-core": "8.20.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/@tanstack/table-core": { + "version": "8.20.5", + "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.20.5.tgz", + "integrity": "sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, "node_modules/@theguild/federation-composition": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@theguild/federation-composition/-/federation-composition-0.19.1.tgz", @@ -23382,6 +27066,12 @@ "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", "license": "BSD-2-Clause" }, + "node_modules/@yr/monotone-cubic-spline": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@yr/monotone-cubic-spline/-/monotone-cubic-spline-1.0.3.tgz", + "integrity": "sha512-FQXkOta0XBSUPHndIKON2Y9JeQz5ZeMqLYZVVK93FliNBFm7LNMIZmY6FrMEB9XPcDbE2bekMbZD6kzDkxwYjA==", + "license": "MIT" + }, "node_modules/@zksync/contracts": { "name": "era-contracts", "version": "0.1.0", @@ -23777,6 +27467,20 @@ "node": ">= 8" } }, + "node_modules/apexcharts": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-4.5.0.tgz", + "integrity": "sha512-E7ZkrVqPNBUWy/Rmg8DEIqHNBmElzICE/oxOX5Ekvs2ICQUOK/VkEkMH09JGJu+O/EA0NL31hxlmF+wrwrSLaQ==", + "license": "MIT", + "dependencies": { + "@svgdotjs/svg.draggable.js": "^3.0.4", + "@svgdotjs/svg.filter.js": "^3.0.8", + "@svgdotjs/svg.js": "^3.2.4", + "@svgdotjs/svg.resize.js": "^2.0.2", + "@svgdotjs/svg.select.js": "^4.0.1", + "@yr/monotone-cubic-spline": "^1.0.3" + } + }, "node_modules/apg-lite": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/apg-lite/-/apg-lite-1.0.5.tgz", @@ -24457,6 +28161,43 @@ "tslib": "^2.3.0" } }, + "node_modules/autoprefixer": { + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -30720,6 +34461,19 @@ "dev": true, "license": "MIT" }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -41673,6 +45427,15 @@ "node": ">=0.10.0" } }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/normalize-url": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.2.tgz", @@ -43990,6 +47753,19 @@ "node": ">=0.10.0" } }, + "node_modules/react-apexcharts": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/react-apexcharts/-/react-apexcharts-1.7.0.tgz", + "integrity": "sha512-03oScKJyNLRf0Oe+ihJxFZliBQM9vW3UWwomVn4YVRTN1jsIR58dLWt0v1sb8RwJVHDMbeHiKQueM0KGpn7nOA==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "apexcharts": ">=4.0.0", + "react": ">=0.13" + } + }, "node_modules/react-copy-to-clipboard": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz", @@ -44062,6 +47838,22 @@ "react": "^18.3.1" } }, + "node_modules/react-hook-form": { + "version": "7.53.1", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.53.1.tgz", + "integrity": "sha512-6aiQeBda4zjcuaugWvim9WsGqisoUk+etmFEsSUMm451/Ic8L/UAb7sRtMj3V+Hdzm6mMjU1VhiSzYUZeBm0Vg==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19" + } + }, "node_modules/react-immutable-proptypes": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/react-immutable-proptypes/-/react-immutable-proptypes-2.2.0.tgz", @@ -47380,6 +51172,16 @@ "atomic-sleep": "^1.0.0" } }, + "node_modules/sonner": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/sonner/-/sonner-1.7.3.tgz", + "integrity": "sha512-KXLWQfyR6AHpYZuQk8eO8fCbZSJY3JOpgsu/tbGc++jgPjj8JsR1ZpO8vFhqR/OxvWMQCSAmnSShY0gr4FPqHg==", + "license": "MIT", + "peerDependencies": { + "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" + } + }, "node_modules/source-map": { "version": "0.7.6", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", @@ -48305,33 +52107,33 @@ } }, "node_modules/tailwindcss": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", - "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==", + "version": "3.4.18", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.18.tgz", + "integrity": "sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ==", "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", - "chokidar": "^3.5.3", + "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "fast-glob": "^3.3.0", + "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "jiti": "^1.21.0", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", + "jiti": "^1.21.7", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" + "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", @@ -48386,13 +52188,32 @@ "node": ">= 6" } }, - "node_modules/tailwindcss/node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "node_modules/tailwindcss/node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, "engines": { - "node": ">=10" + "node": "^10 || ^12 || >=14" } }, "node_modules/tailwindcss/node_modules/readdirp": { diff --git a/package.json b/package.json index 31d25ca6f60..ee46f6b560e 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,9 @@ "@astrojs/prism": "^3.3.0", "@astrojs/react": "^4.4.0", "@astrojs/sitemap": "^3.6.0", + "@astrojs/tailwind": "^6.0.2", "@astrojs/vercel": "^8.2.8", + "@chainlink/blocks": "^1.3.1", "@chainlink/cl-search-frontend": "^0.12.0", "@chainlink/components": "^0.4.18", "@chainlink/contracts": "1.4.0", @@ -67,8 +69,6 @@ "@nanostores/preact": "^0.5.2", "@nanostores/react": "^0.8.4", "@openzeppelin/contracts": "^4.9.6", - "@supabase/supabase-js": "^2.58.0", - "astro": "^5.14.1", "@solana-program/compute-budget": "^0.9.0", "@solana-program/system": "^0.8.1", "@solana-program/token": "^0.6.0", @@ -79,6 +79,8 @@ "@solana/wallet-adapter-react": "^0.15.39", "@solana/wallet-adapter-react-ui": "^0.9.39", "@solana/wallet-adapter-wallets": "^0.19.37", + "@supabase/supabase-js": "^2.58.0", + "astro": "^5.14.1", "bignumber.js": "^9.3.1", "bs58": "^6.0.0", "clipboard": "^2.0.11", @@ -145,6 +147,7 @@ "solhint": "^5.2.0", "solhint-plugin-chainlink-solidity": "github:smartcontractkit/chainlink-solhint-rules", "solhint-plugin-prettier": "^0.1.0", + "tailwindcss": "^3.4.18", "ts-jest": "^29.4.4", "tsconfig-paths": "^4.2.0", "tsx": "^4.20.6", diff --git a/src/components/HeadCommon.astro b/src/components/HeadCommon.astro index c3e2b1e4008..32a2f0db7e9 100644 --- a/src/components/HeadCommon.astro +++ b/src/components/HeadCommon.astro @@ -4,6 +4,7 @@ import "../styles/index.css" import "../styles/migrated.css" import "../styles/prism-darcula.css" import "@chainlink/design-system/global-styles.css" +import "../styles/tailwind.css" export interface Props { title: string diff --git a/src/styles/tailwind.css b/src/styles/tailwind.css new file mode 100644 index 00000000000..b5c61c95671 --- /dev/null +++ b/src/styles/tailwind.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 00000000000..01720ea54cf --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,12 @@ +/** @type {import('tailwindcss').Config} */ +export default { + content: ["./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}"], + + theme: { + extend: {}, + }, + plugins: [], + corePlugins: { + preflight: false, + }, +} From 983a0fc376ff752948f92679990bcb5bf2fff4aa Mon Sep 17 00:00:00 2001 From: Tyrel Chambers Date: Tue, 14 Oct 2025 02:51:58 -0400 Subject: [PATCH 02/37] Feat/83 remove secondary header (#95) * Remove DocsNavigation from DocsLayout. Update styling to accomodate. * fix: adjust left grid sticky and padding * Update leftSidebar.module.css * fix: remove docs from tutoriallayout --- .../DocsNavigationDesktop.tsx | 6 +- .../DocsPickerDesktop.tsx | 63 ------------------- src/components/Header/NavBar.tsx | 10 +-- src/components/LeftSidebar/LeftSidebar.astro | 4 +- src/components/PageContent/PageContent.astro | 3 +- src/layouts/DocsLayout.astro | 2 - src/layouts/TutorialLayout.astro | 2 - 7 files changed, 7 insertions(+), 83 deletions(-) delete mode 100644 src/components/DocsNavigation/DocsNavigationDesktop/DocsPickerDesktop.tsx diff --git a/src/components/DocsNavigation/DocsNavigationDesktop/DocsNavigationDesktop.tsx b/src/components/DocsNavigation/DocsNavigationDesktop/DocsNavigationDesktop.tsx index f1a88b5395f..bf09832475c 100644 --- a/src/components/DocsNavigation/DocsNavigationDesktop/DocsNavigationDesktop.tsx +++ b/src/components/DocsNavigation/DocsNavigationDesktop/DocsNavigationDesktop.tsx @@ -1,6 +1,5 @@ import { clsx } from "~/lib/clsx/clsx.ts" import { useNavBar } from "../../Header/useNavBar/useNavBar.ts" -import DocsPickerDesktop from "./DocsPickerDesktop.tsx" import styles from "./docsNavigationDesktop.module.css" import QuickLinksModal from "../../Header/Nav/QuickLinksModal.tsx" import { useState } from "react" @@ -29,10 +28,7 @@ function DocsNavigationDesktop({ })} >
-
- - {children} -
+
{children}
{isCcipPage ? ( /* Custom links for CCIP Directory pages */ diff --git a/src/components/DocsNavigation/DocsNavigationDesktop/DocsPickerDesktop.tsx b/src/components/DocsNavigation/DocsNavigationDesktop/DocsPickerDesktop.tsx deleted file mode 100644 index feb8d80bcfb..00000000000 --- a/src/components/DocsNavigation/DocsNavigationDesktop/DocsPickerDesktop.tsx +++ /dev/null @@ -1,63 +0,0 @@ -import { useState } from "react" -import { isMatchedPath } from "../../Header/Nav/isMatchedPath.ts" -import { getNavigationProps } from "../../Header/getNavigationProps.ts" -import styles from "./docsPickerDesktop.module.css" -import { clsx } from "../../Header/Nav/utils.ts" -import defaultLogo from "../../../assets/product-logos/default-logo.svg" - -function DocsPickerDesktop({ pathname }: { pathname: string }) { - const [productMenuOpen, setProductMenuOpen] = useState(false) - const { subProductsNav } = getNavigationProps() - - const subProductTrigger = subProductsNav?.find(({ href }) => isMatchedPath(pathname, href)) - - const label = subProductTrigger?.label || "Resources" - const icon = subProductTrigger?.label ? subProductTrigger.icon : defaultLogo.src - - return ( -
setProductMenuOpen(true)} - onMouseLeave={() => setProductMenuOpen(false)} - > - - {label} -
- -
- {productMenuOpen && ( -
-
    - {subProductsNav - .filter((item) => !item.hideFromDropdown && item.col === 1) - .map((item) => ( -
  • - - - {item.label} - -
  • - ))} -
-
    - {subProductsNav - .filter((item) => !item.hideFromDropdown && item.col === 2) - .map((item) => ( -
  • - - - {item.label} - -
  • - ))} -
-
- )} -
- ) -} - -export default DocsPickerDesktop diff --git a/src/components/Header/NavBar.tsx b/src/components/Header/NavBar.tsx index 404af835727..108ab4c6cd7 100644 --- a/src/components/Header/NavBar.tsx +++ b/src/components/Header/NavBar.tsx @@ -35,13 +35,9 @@ export const NavBar = ({ / - if the page has been scrolled down and the header is hidden / - if the page is a inner doc page or part of the "pathWithoutDocNav" or not */ - const innerDocNavHeight = 56 - let height = (navRef.current as HTMLElement).clientHeight - let baseHeightNoNav = 0 - if (doubleNavbar()) { - height += innerDocNavHeight - baseHeightNoNav += innerDocNavHeight - } + const height = (navRef.current as HTMLElement).clientHeight + const baseHeightNoNav = 0 + const elements = document.body.querySelectorAll("[data-sticky]") elements.forEach((e: HTMLElement) => { if (!e.classList.contains(styles.animateTop)) { diff --git a/src/components/LeftSidebar/LeftSidebar.astro b/src/components/LeftSidebar/LeftSidebar.astro index 2987c6f3adb..b7bc5a806dd 100644 --- a/src/components/LeftSidebar/LeftSidebar.astro +++ b/src/components/LeftSidebar/LeftSidebar.astro @@ -74,8 +74,8 @@ function removeSlashes(url: string): string { const sidebarSections = getSidebarSections(section) --- -
diff --git a/src/components/RightSidebar/MoreMenu.astro b/src/components/RightSidebar/MoreMenu.astro index fabc6905134..08864571b59 100644 --- a/src/components/RightSidebar/MoreMenu.astro +++ b/src/components/RightSidebar/MoreMenu.astro @@ -80,48 +80,6 @@ const llmsExists = supportedSections.includes(section) ) } - - { - CONFIG.COMMUNITY_INVITE_URL && ( - - ) - } + + + + + diff --git a/src/layouts/DocsV3Layout/README.md b/src/layouts/DocsV3Layout/README.md new file mode 100644 index 00000000000..6d316fbf9ef --- /dev/null +++ b/src/layouts/DocsV3Layout/README.md @@ -0,0 +1,110 @@ +# DocsV3Layout Component Guide + +## What is DocsV3Layout? + +DocsV3Layout is the template that creates the standard layout for documentation pages on the Chainlink Docs website. Think of it as a "frame" that wraps around your content to give it a consistent look and feel. + +## What Does It Do? + +When you use this layout, it automatically creates: + +- **A left sidebar** with navigation links to help users find related pages +- **A main content area** where your documentation content appears +- **A header** that shows the page outline (on mobile devices) +- **Responsive design** that adapts to different screen sizes (mobile, tablet, desktop) + +## How to Use It + +### Basic Setup + +To use this layout for a documentation page, you need to specify it at the top of your Markdown file: + +``` +--- +layout: ~/layouts/DocsV3Layout/DocsV3Layout.astro +title: Your Page Title +section: your-section-name +--- + +Your content goes here... +``` + +### Required Information + +You need to provide two key pieces of information: + +1. **Title** - The name of your documentation page + - Example: `title: Getting Started with Chainlink` + +2. **Section** - Which documentation section this page belongs to + - Example: `section: quickstarts` + - This helps organize pages in the left sidebar navigation + +### Optional Information + +You can also include: + +- **Metadata** - Special settings for the page, like SEO information +- **Link to Wallet** - If your page needs blockchain wallet integration, add: + ``` + metadata: + linkToWallet: true + ``` + +## Example Usage + +Here's a complete example of how to set up a documentation page: + +``` +--- +layout: ~/layouts/DocsV3Layout/DocsV3Layout.astro +title: How to Use Chainlink Data Feeds +section: data-feeds +--- + +# How to Use Chainlink Data Feeds + +This guide will teach you how to use data feeds... + +## Step 1: Prerequisites + +Before you begin, make sure you have... + +## Step 2: Installation + +To install the required packages... +``` + +## What Happens Behind the Scenes + +When you use this layout: + +1. **Your title** becomes the main heading and appears in the page outline +2. **Your headings** (anything starting with `#`, `##`, `###`) are automatically collected and used for navigation +3. **The sidebar** is populated with links based on your section +4. **The layout adapts** to the user's screen size automatically + +## Layout Structure + +The page is divided into three columns: + +``` +┌──────────────┬─────────────────────┬──────────────┐ +│ │ │ │ +│ Left │ Main Content │ Right │ +│ Sidebar │ (Your Docs) │ Sidebar │ +│ (Navigation) │ │ (Future) │ +│ │ │ │ +└──────────────┴─────────────────────┴──────────────┘ +``` + +- **Left Sidebar**: Shows navigation for the current section +- **Main Content**: Your documentation content +- **Right Sidebar**: Reserved for future use (currently empty) + +## Tips for Best Results + +1. **Use clear headings** - Your headings create the page outline, so make them descriptive +2. **Keep titles concise** - The title appears in multiple places, so shorter is better +3. **Choose the right section** - Make sure your page is in the correct section so users can find it +4. **Limit heading depth** - Only headings up to level 4 (`####`) are included in the navigation diff --git a/src/pages/ccip/index.astro b/src/pages/ccip/index.astro index 816caada5a7..9eacf7c22f4 100644 --- a/src/pages/ccip/index.astro +++ b/src/pages/ccip/index.astro @@ -1,6 +1,6 @@ --- -import DocsLayout from "~/layouts/DocsLayout.astro" import { getEntry, render } from "astro:content" +import DocsV3Layout from "~/layouts/DocsV3Layout/DocsV3Layout.astro" const entry = await getEntry("ccip", "index") if (!entry) { @@ -11,6 +11,4 @@ if (!entry) { const { Content, headings } = await render(entry) --- - - - + From 9fb15c3b4c0fba35083b7b978620509e596164e8 Mon Sep 17 00:00:00 2001 From: Tyrel Chambers Date: Thu, 16 Oct 2025 15:59:47 -0400 Subject: [PATCH 15/37] fix spacing --- src/components/Header/Nav/navBar.module.css | 1 - src/components/LeftSidebar/leftSidebar.module.css | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/components/Header/Nav/navBar.module.css b/src/components/Header/Nav/navBar.module.css index 5df2ed4001a..643ac110ed9 100644 --- a/src/components/Header/Nav/navBar.module.css +++ b/src/components/Header/Nav/navBar.module.css @@ -96,7 +96,6 @@ display: flex; justify-content: center; align-items: center; - z-index: 9999; } .modalContentWrapper { diff --git a/src/components/LeftSidebar/leftSidebar.module.css b/src/components/LeftSidebar/leftSidebar.module.css index fbc815e2323..222d0b7f9db 100644 --- a/src/components/LeftSidebar/leftSidebar.module.css +++ b/src/components/LeftSidebar/leftSidebar.module.css @@ -8,7 +8,7 @@ } .navGroups { - padding: 0 40px 40px 0; + padding: 0 var(--space-10x) var(--space-10x) 0; overflow-y: auto; scrollbar-width: thin; @@ -119,7 +119,7 @@ details[open] > .navGroupTitle { } .quickLinks { - margin-top: var(--space-10x); + margin-top: 60px; } .headerLink { From 2c2c2ea4e5f56fe08ce0e1ea7be606f8f9588283 Mon Sep 17 00:00:00 2001 From: Tyrel Chambers Date: Wed, 22 Oct 2025 02:53:54 -0400 Subject: [PATCH 16/37] Feat: Add cards (#101) * add cards * update styling * adjust types * fix heading * cleanup grid styling --- public/assets/icons/Arrow Right.svg | 3 + src/assets/icons/remix-logo.svg | 13 ++++ src/assets/icons/token-icon.svg | 19 ++++++ src/components/Cards/Card.astro | 17 +++++ src/components/Cards/CardLink.astro | 27 ++++++++ src/components/Cards/CardsWrapper.astro | 15 +++++ src/components/Cards/cards.module.css | 65 ++++++++++++++++++++ src/components/Cards/types.ts | 12 ++++ src/components/PageContent/PageContent.astro | 1 + src/layouts/DocsLayout.astro | 1 + src/pages/ccip/index.astro | 4 +- src/pages/index.astro | 55 ++++++++++++++++- 12 files changed, 229 insertions(+), 3 deletions(-) create mode 100644 public/assets/icons/Arrow Right.svg create mode 100644 src/assets/icons/remix-logo.svg create mode 100644 src/assets/icons/token-icon.svg create mode 100644 src/components/Cards/Card.astro create mode 100644 src/components/Cards/CardLink.astro create mode 100644 src/components/Cards/CardsWrapper.astro create mode 100644 src/components/Cards/cards.module.css create mode 100644 src/components/Cards/types.ts diff --git a/public/assets/icons/Arrow Right.svg b/public/assets/icons/Arrow Right.svg new file mode 100644 index 00000000000..c73460f5326 --- /dev/null +++ b/public/assets/icons/Arrow Right.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/remix-logo.svg b/src/assets/icons/remix-logo.svg new file mode 100644 index 00000000000..4580f3bf83b --- /dev/null +++ b/src/assets/icons/remix-logo.svg @@ -0,0 +1,13 @@ + +
+ + + + + + + + + + +
diff --git a/src/assets/icons/token-icon.svg b/src/assets/icons/token-icon.svg new file mode 100644 index 00000000000..2b8c333d430 --- /dev/null +++ b/src/assets/icons/token-icon.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/components/Cards/Card.astro b/src/components/Cards/Card.astro new file mode 100644 index 00000000000..c1331668d75 --- /dev/null +++ b/src/components/Cards/Card.astro @@ -0,0 +1,17 @@ +--- +import CardLink from "./CardLink.astro" +import styles from "./cards.module.css" +import { ICard } from "./types" + +type Props = ICard + +const { title, description, links } = Astro.props +--- + +
+

{title}

+

{description}

+
+ {links && links.map((l) => )} +
+
diff --git a/src/components/Cards/CardLink.astro b/src/components/Cards/CardLink.astro new file mode 100644 index 00000000000..032a29adc02 --- /dev/null +++ b/src/components/Cards/CardLink.astro @@ -0,0 +1,27 @@ +--- +import styles from "./cards.module.css" +import { ILink } from "./types" + +import tokenIcon from "../../assets/icons/token-icon.svg" +import remixIcon from "../../assets/icons/remix-logo.svg" + +interface Props { + link: ILink +} + +const { link } = Astro.props + +const iconMap = { + token: tokenIcon, + remix: remixIcon, +} + +const iconSrc = iconMap[link.icon] +--- + + + + + {link.label} + arrow right + diff --git a/src/components/Cards/CardsWrapper.astro b/src/components/Cards/CardsWrapper.astro new file mode 100644 index 00000000000..cb91045a25d --- /dev/null +++ b/src/components/Cards/CardsWrapper.astro @@ -0,0 +1,15 @@ +--- +import Card from "./Card.astro" +import styles from "./cards.module.css" +import { ICard } from "./types.ts" + +interface Props { + links: ICard[] +} + +const { links } = Astro.props +--- + +
+ {links.map((link) => )} +
diff --git a/src/components/Cards/cards.module.css b/src/components/Cards/cards.module.css new file mode 100644 index 00000000000..ac19502528d --- /dev/null +++ b/src/components/Cards/cards.module.css @@ -0,0 +1,65 @@ +.cardsWrapper { + display: grid; + grid-template-columns: repeat(3, 1fr); + border-left: 1px solid var(--border); + border-top: 1px solid var(--border); +} + +.cardsWrapper h6 { + font-size: 18px; + margin-bottom: var(--space-4x); +} + +:where(.cardsWrapper p) { + font-size: 14px; + line-height: 24px; /* 171.429% */ +} + +.card { + padding: var(--space-5x) var(--space-6x); + background: #fff; + border-right: 1px solid var(--border); + border-bottom: 1px solid var(--border); +} + +.card:hover { + background: var(--gray-100); +} + +.links { + display: flex; + flex-direction: column; + margin-top: var(--space-6x); + gap: var(--space-4x); +} + +.link { + color: var(--Color-Primary, #0e1119); + display: flex; + gap: var(--space-2x); + align-items: center; + cursor: default; +} + +.link:hover span { + opacity: 0.7; +} + +.cardTitle { + font-weight: 525; + margin-bottom: var(--space-4x); + font-size: 18px; + color: var(--foreground); +} + +@media screen and (max-width: 768px) { + .cardsWrapper { + grid-template-columns: repeat(2, 1fr) !important; + } +} + +@media screen and (max-width: 425px) { + .cardsWrapper { + grid-template-columns: repeat(1, 1fr) !important; + } +} diff --git a/src/components/Cards/types.ts b/src/components/Cards/types.ts new file mode 100644 index 00000000000..20007518bc0 --- /dev/null +++ b/src/components/Cards/types.ts @@ -0,0 +1,12 @@ +export type IconType = "token" | "remix" + +export interface ILink { + icon: IconType + href: string + label: string +} +export interface ICard { + title: string + description: string + links?: ILink[] +} diff --git a/src/components/PageContent/PageContent.astro b/src/components/PageContent/PageContent.astro index 7fa2c5880eb..104d4999267 100644 --- a/src/components/PageContent/PageContent.astro +++ b/src/components/PageContent/PageContent.astro @@ -9,6 +9,7 @@ const { titleHeading } = Astro.props

{titleHeading.text}

+
diff --git a/src/layouts/DocsLayout.astro b/src/layouts/DocsLayout.astro index 06235056e82..f94767ed5b0 100644 --- a/src/layouts/DocsLayout.astro +++ b/src/layouts/DocsLayout.astro @@ -10,6 +10,7 @@ import StickyHeader from "~/components/StickyHeader/StickyHeader" import BaseLayout from "./BaseLayout.astro" import { VersionSelector } from "~/components/VersionSelector/index.js" import { detectApiReference } from "@components/VersionSelector/utils/versions" +import CardsWrapper from "~/components/Cards/CardsWrapper.astro" interface Props { frontmatter: BaseFrontmatter diff --git a/src/pages/ccip/index.astro b/src/pages/ccip/index.astro index 9eacf7c22f4..cc8738a8ca7 100644 --- a/src/pages/ccip/index.astro +++ b/src/pages/ccip/index.astro @@ -11,4 +11,6 @@ if (!entry) { const { Content, headings } = await render(entry) --- - + + + diff --git a/src/pages/index.astro b/src/pages/index.astro index 0c08784a072..dabe7c18616 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -1,12 +1,61 @@ --- import ProductTabs from "../features/landing/sections/ProductTabs.astro" -import LandingLayout from "../layouts/LandingLayout.astro" -import HeroCTA from "../features/landing/sections/HeroCTA.astro" import BaseLayout from "~/layouts/BaseLayout.astro" import * as CONFIG from "../config" +import CardsWrapper from "~/components/Cards/CardsWrapper.astro" +import type { ICard } from "~/components/Cards/types" const formattedContentTitle = `${CONFIG.PAGE.titleFallback} | ${CONFIG.SITE.title}` + +const sample: ICard[] = [ + { + title: "Deploy/enable a token across multiple chains", + description: + "Create a new Cross-Chain-Token or enable an established one that can be launched on 50+ chains, providing unparalleled interoperability and reach.", + links: [ + { + icon: "token", + href: "https://example.com", + label: "View Token Manager", + }, + { + icon: "remix", + href: "https://example.com", + label: "Open in Remix", + }, + ], + }, + { + title: "Bridge a token", + description: + "Securely transfer tokens - including ETH, USDC, LINK - and messages between different blockchain networks.", + links: [ + { + icon: "token", + href: "https://example.com", + label: "View Token Manager", + }, + { + icon: "remix", + href: "https://example.com", + label: "Open in Remix", + }, + ], + }, + { + title: "Send a token with data", + description: + "Build token transfers that do more than move value, letting you embed business logic directly into your cross-chain workflows.", + links: [ + { + icon: "remix", + href: "https://example.com", + label: "Open in Remix", + }, + ], + }, +] --- @@ -15,6 +64,8 @@ const formattedContentTitle = `${CONFIG.PAGE.titleFallback} | ${CONFIG.SITE.titl

Chainlink Developer Docs

What are you building?

+ +
From 856c50d711a4c3e68e5f74b73678f3e4a4f889a8 Mon Sep 17 00:00:00 2001 From: Tyrel Chambers Date: Wed, 22 Oct 2025 03:00:16 -0400 Subject: [PATCH 17/37] Feat/93 layout tutorials (#104) * add tutorial foundation * Add tutorial components * add README * support N number of columns and add arrow icon * Update index.astro * remove unused import * Update GridCard.module.css * change how we add borders * make grid responsive --------- Co-authored-by: Simone Cuomo --- public/assets/icons/upper-right-arrow.svg | 3 + src/components/TabGrid/GridCard.module.css | 83 ++++++++++++++++++ src/components/TabGrid/GridCard.tsx | 25 ++++++ src/components/TabGrid/ItemGrid.tsx | 17 ++++ src/components/TabGrid/README.md | 89 +++++++++++++++++++ src/components/TabGrid/TabGrid.module.css | 60 +++++++++++++ src/components/TabGrid/TabGrid.tsx | 40 +++++++++ src/layouts/DocsV3Layout/DocsV3Layout.astro | 96 +++++++++++++++++++++ 8 files changed, 413 insertions(+) create mode 100644 public/assets/icons/upper-right-arrow.svg create mode 100644 src/components/TabGrid/GridCard.module.css create mode 100644 src/components/TabGrid/GridCard.tsx create mode 100644 src/components/TabGrid/ItemGrid.tsx create mode 100644 src/components/TabGrid/README.md create mode 100644 src/components/TabGrid/TabGrid.module.css create mode 100644 src/components/TabGrid/TabGrid.tsx diff --git a/public/assets/icons/upper-right-arrow.svg b/public/assets/icons/upper-right-arrow.svg new file mode 100644 index 00000000000..7f588a0dcbd --- /dev/null +++ b/public/assets/icons/upper-right-arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/TabGrid/GridCard.module.css b/src/components/TabGrid/GridCard.module.css new file mode 100644 index 00000000000..4c4e1b2626e --- /dev/null +++ b/src/components/TabGrid/GridCard.module.css @@ -0,0 +1,83 @@ +.card { + display: flex; + background: var(--color-background); + padding: var(--space-6x); + align-items: start; + gap: var(--space-6x); + border-right: 1px solid var(--border); + border-bottom: 1px solid var(--border); + + &:hover .cardFooter { + opacity: 1; + } +} + +[data-columns="1"] > .card:nth-child(1) { + border-top: 1px solid var(--border); +} + +[data-columns="2"] > .card:nth-child(-n + 2) { + border-top: 1px solid var(--border); +} + +[data-columns="3"] > .card:nth-child(-n + 3) { + border-top: 1px solid var(--border); +} + +[data-columns="4"] > .card:nth-child(-n + 4) { + border-top: 1px solid var(--border); +} + +/* Tablet: adjust border-top for 2-column layouts */ +@media (max-width: 1024px) { + [data-columns="3"] > .card:nth-child(-n + 3), + [data-columns="4"] > .card:nth-child(-n + 4) { + border-top: none; + } + + [data-columns="3"] > .card:nth-child(-n + 2), + [data-columns="4"] > .card:nth-child(-n + 2) { + border-top: 1px solid var(--border); + } +} + +/* Mobile: single column - only first card has border-top */ +@media (max-width: 768px) { + [data-columns] > .card:nth-child(n) { + border-top: none; + } + + [data-columns] > .card:nth-child(1) { + border-top: 1px solid var(--border); + } +} + +.card:hover { + background-color: var(--muted); +} + +.cardFooter { + opacity: 0; + margin-top: auto; + /* enforcing a width */ + min-width: 16px; +} + +.cardFooter img { + width: 10px; + height: 10px; +} + +.cardTitle { + font-size: 16px; + font-weight: 525; + color: var(--foreground); + margin-bottom: var(--space-2x); +} + +.cardDescription { + color: var(--color-text-secondary); + font-size: 0.9375rem; + line-height: 1.6; + margin: 0; +} diff --git a/src/components/TabGrid/GridCard.tsx b/src/components/TabGrid/GridCard.tsx new file mode 100644 index 00000000000..e83883d8426 --- /dev/null +++ b/src/components/TabGrid/GridCard.tsx @@ -0,0 +1,25 @@ +import { Typography } from "@chainlink/blocks" +import styles from "./GridCard.module.css" + +export interface GridItem { + title: string + description: string + link: string +} + +export const GridCard = ({ title, description, link }: GridItem) => { + return ( + +
+

{title}

+ + {description} + +
+ +
+ arrow +
+
+ ) +} diff --git a/src/components/TabGrid/ItemGrid.tsx b/src/components/TabGrid/ItemGrid.tsx new file mode 100644 index 00000000000..0a2ed5e92d3 --- /dev/null +++ b/src/components/TabGrid/ItemGrid.tsx @@ -0,0 +1,17 @@ +import { GridCard, GridItem } from "./GridCard.tsx" +import styles from "./TabGrid.module.css" + +interface ItemGridProps { + links: GridItem[] + columns?: 1 | 2 | 3 | 4 +} + +export const ItemGrid = ({ links, columns = 3 }: ItemGridProps) => { + return ( +
+ {links.map((link, index) => ( + + ))} +
+ ) +} diff --git a/src/components/TabGrid/README.md b/src/components/TabGrid/README.md new file mode 100644 index 00000000000..0edc1934c0c --- /dev/null +++ b/src/components/TabGrid/README.md @@ -0,0 +1,89 @@ +# TabGrid Component + +A tabbed interface for displaying grid items organized by category. + +## What is this? + +The TabGrid component displays a collection of items in a clean, organized layout with tabs. Each tab represents a category of items (like "EVM" or "Solana"), and clicking on a tab shows the relevant items as clickable cards. + +This component is useful when you have multiple items and want to group them by topic or category, making it easier for users to find what they need. + +## Usage + +```tsx +import { TabGrid } from "@components/TabGrid/TabGrid" +; +``` + +## How to set it up + +The component requires a `tabs` prop, which is an array of tab objects. Each tab object contains: + +- A **name** (the label shown on the tab button) +- A list of **links** (the items shown when that tab is active) + +Each grid item needs three pieces of information: + +- **title** - The name of the item +- **description** - A short sentence explaining what the item covers +- **link** - The URL where the item can be found + +## Props Reference + +### `TabGrid` + +| Prop | Type | Required | Description | +| --------- | -------- | -------- | ------------------------------------------------- | +| `header` | `string` | Yes | The heading text displayed above the tabs | +| `tabs` | `Tab[]` | Yes | List of tabs, each containing a category of items | +| `columns` | `number` | No | Number of columns in the grid (defaults to 2) | + +### `Tab` + +| Property | Type | Required | Description | +| -------- | ------------ | -------- | -------------------------------------------------------- | +| `name` | `string` | Yes | The label displayed on the tab (e.g., "Getting Started") | +| `links` | `GridItem[]` | Yes | The list of items to show when this tab is selected | + +### `GridItem` + +| Property | Type | Required | Description | +| ------------- | -------- | -------- | -------------------------------------------- | +| `title` | `string` | Yes | The item's heading | +| `description` | `string` | Yes | A brief explanation of what users will learn | +| `link` | `string` | Yes | The URL path to the item page | + +## Components + +- **TabGrid** - Main container with tabs and header +- **ItemGrid** - Grid layout for item cards +- **GridCard** - Individual item card with hover effects diff --git a/src/components/TabGrid/TabGrid.module.css b/src/components/TabGrid/TabGrid.module.css new file mode 100644 index 00000000000..d20535265a2 --- /dev/null +++ b/src/components/TabGrid/TabGrid.module.css @@ -0,0 +1,60 @@ +.grid { + display: grid; + border-left: 1px solid var(--border); +} + +.gridHeader { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: var(--space-8x); +} + +.tabsTrigger { + height: 32px; + padding: var(--space-1x) var(--space-2x); + justify-content: center; + align-items: center; + border-radius: var(--space-2x); + background-color: var(--pill); + border: 1px solid var(--pill-border); +} + +.tabsTrigger:hover { + background-color: var(--pill-hover); +} + +.tabsTrigger[data-state="active"] { + background-color: var(--pill-active); + border-color: var(--pill-active); + + & h3 { + color: var(--pill-active-foreground); + } +} + +.tabTitle { + color: var(--pill-foreground); + font-weight: 400; +} + +.tabsList { + display: flex; + gap: var(--space-2x); + border-bottom: 0; +} + +/* Tablet: reduce columns to 2 for 3+ column layouts */ +@media (max-width: 1024px) { + [data-columns="3"], + [data-columns="4"] { + grid-template-columns: repeat(2, 1fr) !important; + } +} + +/* Mobile: single column for all layouts */ +@media (max-width: 768px) { + .grid { + grid-template-columns: 1fr !important; + } +} diff --git a/src/components/TabGrid/TabGrid.tsx b/src/components/TabGrid/TabGrid.tsx new file mode 100644 index 00000000000..6e85ec3cfa6 --- /dev/null +++ b/src/components/TabGrid/TabGrid.tsx @@ -0,0 +1,40 @@ +import styles from "./TabGrid.module.css" +import { GridItem } from "./GridCard.tsx" +import { ItemGrid } from "./ItemGrid.tsx" +import { Tabs, TabsContent, TabsList, TabsTrigger, Typography } from "@chainlink/blocks" + +export interface Tab { + name: string + links: GridItem[] +} + +interface TabGridProps { + tabs: Tab[] + header: string + columns?: 1 | 2 | 3 | 4 +} + +export const TabGrid = ({ tabs, header, columns = 3 }: TabGridProps) => { + return ( + +
+ {header} + + {tabs.map((tab) => ( + +

{tab.name}

+
+ ))} +
+
+ + {tabs.map((tab) => ( + +
+ +
+
+ ))} +
+ ) +} diff --git a/src/layouts/DocsV3Layout/DocsV3Layout.astro b/src/layouts/DocsV3Layout/DocsV3Layout.astro index 2f3e272954a..8169548be7a 100644 --- a/src/layouts/DocsV3Layout/DocsV3Layout.astro +++ b/src/layouts/DocsV3Layout/DocsV3Layout.astro @@ -6,6 +6,7 @@ import { BaseFrontmatter } from "~/content.config" import * as CONFIG from "~/config" import LeftSidebar from "~/components/LeftSidebar/LeftSidebar.astro" import PageContent from "~/components/PageContent/PageContent.astro" +import { TabGrid } from "~/components/TabGrid/TabGrid" interface Props { frontmatter: BaseFrontmatter @@ -27,6 +28,100 @@ const formattedContentTitle = `${frontmatter.title} | ${CONFIG.SITE.title}` const currentPage = new URL(Astro.request.url).pathname const includeLinkToWalletScript = !!Astro.props.frontmatter.metadata?.linkToWallet + +// Example tutorial data +const exampleTutorials = [ + { + name: "EVM", + links: [ + { + title: "Acquire Test Tokens", + description: "Get test tokens in minutes; build and test cross-chain apps with zero friction.", + link: "/tutorials/acquire-test-tokens", + }, + { + title: "Transfer Tokens", + description: "Unlock seamless token transfers from contracts; learn, code, and deploy.", + link: "/tutorials/transfer-tokens", + }, + { + title: "Transfer Tokens with Data", + description: "Go beyond basic transfers with logic-infused token movements in your EVM contracts.", + link: "/tutorials/transfer-tokens-data", + }, + { + title: "Using the Token Manager", + description: "Effortlessly manage CCTs by tracking, importing and organizing tokens from your dashboard.", + link: "/tutorials/token-manager", + }, + { + title: "Using the JS SDK", + description: "Integrate CCIP in your frontend or backend effortlessly with JavaScript SDK.", + link: "/tutorials/js-sdk", + }, + { + title: "Check Message Status", + description: "Retrieve real-time status of your offchain transaction from EVM.", + link: "/tutorials/check-message-status", + }, + { + title: "Transfer Tokens Between EOAs", + description: "Send tokens offchain from an Externally Owned Account with clear steps.", + link: "/tutorials/transfer-tokens-eoa", + }, + { + title: "Using the CLI", + description: "Use offchain tools from CCIP to simplify your Ethereum workflows.", + link: "/tutorials/cli", + }, + { + title: "Deploy and Register a CCT", + description: "Use RemixIDE to launch and configure tokens for cross-chain transfers on CCIP.", + link: "/tutorials/deploy-register-cct", + }, + { + title: "Register CCT Burn & Mint EOA", + description: "Implement burn-mint cross-chain token logic with CCIP using Hardhat or Foundry.", + link: "/tutorials/register-cct-burn-mint", + }, + { + title: "Register CCT Lock & Mint EOA", + description: "Implement a lock-mint token registration workflow with CCIP and Hardhat or Foundry.", + link: "/tutorials/register-cct-lock-mint", + }, + { + title: "Set Token Pool Rate Limits", + description: "Update rate limiter settings for your cross-chain tokens using Hardhat or Foundry.", + link: "/tutorials/token-pool-rate-limits", + }, + ], + }, + { + name: "Solana", + links: [ + { + title: "Getting Started with Solana", + description: "Learn the basics of building on Solana blockchain.", + link: "/tutorials/solana-getting-started", + }, + { + title: "Solana Token Transfers", + description: "Transfer tokens on the Solana blockchain.", + link: "/tutorials/solana-transfers", + }, + ], + }, + { + name: "Aptos", + links: [ + { + title: "Getting Started with Aptos", + description: "Start building on the Aptos blockchain.", + link: "/tutorials/aptos-getting-started", + }, + ], + }, +] --- @@ -40,6 +135,7 @@ const includeLinkToWalletScript = !!Astro.props.frontmatter.metadata?.linkToWall
+
From 823224d7571f856da5d74bc3807240879d727c87 Mon Sep 17 00:00:00 2001 From: Tyrel Chambers Date: Thu, 23 Oct 2025 03:02:42 -0400 Subject: [PATCH 18/37] Feat/91 layout hero (#103) * add layout hero * use button component styles for the button links * removing unused styles --- public/images/ccip/ccip-hero-bg.png | Bin 0 -> 151643 bytes public/images/ccip/ccip-hero.png | Bin 0 -> 19767 bytes src/components/LayoutHero/LayoutHero.astro | 45 ++++++++++ .../LayoutHero/LayoutHero.module.css | 64 +++++++++++++ src/components/LayoutHero/README.md | 84 ++++++++++++++++++ .../LeftSidebar/leftSidebar.module.css | 3 + src/layouts/DocsV3Layout/DocsV3Layout.astro | 15 ++-- src/styles/index.css | 4 +- 8 files changed, 208 insertions(+), 7 deletions(-) create mode 100644 public/images/ccip/ccip-hero-bg.png create mode 100644 public/images/ccip/ccip-hero.png create mode 100644 src/components/LayoutHero/LayoutHero.astro create mode 100644 src/components/LayoutHero/LayoutHero.module.css create mode 100644 src/components/LayoutHero/README.md diff --git a/public/images/ccip/ccip-hero-bg.png b/public/images/ccip/ccip-hero-bg.png new file mode 100644 index 0000000000000000000000000000000000000000..5f3bc5df5594b7b8962326f84be8b6146ced24bd GIT binary patch literal 151643 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¥V^eEhr(^GF7JY`32HY3Aza-Wo!p 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 O0000J literal 0 HcmV?d00001 diff --git a/public/images/ccip/ccip-hero.png b/public/images/ccip/ccip-hero.png new file mode 100644 index 0000000000000000000000000000000000000000..306b8cb3ed305a5f5d3148d97840df1974c75bc1 GIT binary patch literal 19767 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 VJ3r;^1370WEX}M + image: string +} + +const { title, description, buttons = [], image } = Astro.props as Props +--- + + diff --git a/src/components/LayoutHero/LayoutHero.module.css b/src/components/LayoutHero/LayoutHero.module.css new file mode 100644 index 00000000000..56f1b8ce711 --- /dev/null +++ b/src/components/LayoutHero/LayoutHero.module.css @@ -0,0 +1,64 @@ +.layoutHero { + display: flex; + flex-direction: column; + gap: var(--space-8x); + margin: 0 auto; + background-color: var(--gray-100); + position: relative; + width: 100%; + height: 345px; + border-left: 1px solid var(--border); + border-right: 1px solid var(--border); + border-bottom: 1px solid var(--border); +} + +.heroContent { + display: flex; + flex-direction: column; + padding-left: 55px; + width: 100%; + height: 100%; + justify-content: center; + max-width: 540px; +} + +.heroContentWrapper { + display: flex; + position: relative; + z-index: 2; + width: 100%; + height: 100%; +} + +.heroBackgroundImg { + position: absolute; + right: 0; + z-index: 1; +} +.heroTitle { + font-size: 3rem; + line-height: 50px; + color: var(--gray-950); + margin-bottom: var(--space-3x); + letter-spacing: -0.48px; + font-weight: 400; +} + +.heroButtons { + display: flex; + flex-wrap: wrap; + gap: var(--space-4x); + margin-top: var(--space-8x); +} + +.heroImage { + display: flex; + position: absolute; + bottom: 35px; + right: 0; +} + +.heroImage img { + max-width: 100%; + height: auto; +} diff --git a/src/components/LayoutHero/README.md b/src/components/LayoutHero/README.md new file mode 100644 index 00000000000..fcc0c16e4d0 --- /dev/null +++ b/src/components/LayoutHero/README.md @@ -0,0 +1,84 @@ +# LayoutHero Component + +## What is it? + +The LayoutHero component is a reusable hero section that displays a title, description, call-to-action buttons, and an optional image. It's perfect for landing pages or the top of important pages where you want to grab attention and guide users to take action. + +## How to Use It + +### Basic Usage + +To use the LayoutHero component in your page, you'll need to import it and provide some information: + +```astro +--- +import { LayoutHero } from "@components" +--- + + +``` + +### What Each Part Does + +**title** (Required) + +- This is the main heading that appears at the top +- Make it clear and attention-grabbing +- Example: "Welcome to Chainlink Docs" + +**description** (Required) + +- A short paragraph explaining what this page or section is about +- Keep it concise but informative +- Example: "Learn how to connect your smart contracts to real-world data" + +**buttons** (Required) + +- An array of buttons that link to other pages +- Each button needs two things: + - `label`: The text shown on the button + - `link`: Where the button takes you when clicked +- The first button will be blue (primary action) +- The second button will be white (secondary action) +- You can have 0, 1, or 2 buttons + +**image** (Required) + +- The path to an image file you want to display +- The image appears on the right side on larger screens +- Below the text on mobile devices +- Example: "/images/my-hero-image.png" + +## Examples + +### With Only One Button + +```astro + +``` + +### With Image and Two Buttons + +```astro + +``` diff --git a/src/components/LeftSidebar/leftSidebar.module.css b/src/components/LeftSidebar/leftSidebar.module.css index 222d0b7f9db..d869aebd2a4 100644 --- a/src/components/LeftSidebar/leftSidebar.module.css +++ b/src/components/LeftSidebar/leftSidebar.module.css @@ -120,6 +120,9 @@ details[open] > .navGroupTitle { .quickLinks { margin-top: 60px; + display: flex; + flex-direction: column; + gap: var(--space-2x); } .headerLink { diff --git a/src/layouts/DocsV3Layout/DocsV3Layout.astro b/src/layouts/DocsV3Layout/DocsV3Layout.astro index 8169548be7a..4eb6a1b23fb 100644 --- a/src/layouts/DocsV3Layout/DocsV3Layout.astro +++ b/src/layouts/DocsV3Layout/DocsV3Layout.astro @@ -7,6 +7,7 @@ import * as CONFIG from "~/config" import LeftSidebar from "~/components/LeftSidebar/LeftSidebar.astro" import PageContent from "~/components/PageContent/PageContent.astro" import { TabGrid } from "~/components/TabGrid/TabGrid" +import LayoutHero from "~/components/LayoutHero/LayoutHero.astro" interface Props { frontmatter: BaseFrontmatter @@ -134,6 +135,15 @@ const exampleTutorials = [
+ @@ -181,11 +191,6 @@ const exampleTutorials = [ max-width: 1505px; } - #grid-left, - #left-bg { - background: #fafbfd; - } - #grid-left, #grid-right { display: flex; diff --git a/src/styles/index.css b/src/styles/index.css index d86b583557a..5d1f3ee074c 100644 --- a/src/styles/index.css +++ b/src/styles/index.css @@ -1,6 +1,6 @@ -/* +/* * Global styles and CSS variables - * + * * This file contains: * 1. CSS reset and base styles * 2. Global CSS variables for theming From a7979c9babed299b21e42b58b2189a56f5b9a437 Mon Sep 17 00:00:00 2001 From: Tyrel Chambers Date: Fri, 24 Oct 2025 08:18:14 -0400 Subject: [PATCH 19/37] Feat/108 info tab (#120) * add info card * Update QuickLinkCard.module.css * Update QuickLinkCard.module.css --- public/images/info-sidebar-img.png | Bin 0 -> 72666 bytes .../QuickLinkCard/QuickLinkCard.astro | 45 ++++ .../QuickLinkCard/QuickLinkCard.module.css | 76 +++++++ src/components/QuickLinkCard/README.md | 214 ++++++++++++++++++ src/layouts/DocsV3Layout/DocsV3Layout.astro | 44 ++++ 5 files changed, 379 insertions(+) create mode 100644 public/images/info-sidebar-img.png create mode 100644 src/components/QuickLinkCard/QuickLinkCard.astro create mode 100644 src/components/QuickLinkCard/QuickLinkCard.module.css create mode 100644 src/components/QuickLinkCard/README.md diff --git a/public/images/info-sidebar-img.png b/public/images/info-sidebar-img.png new file mode 100644 index 0000000000000000000000000000000000000000..44eadb5cfb2ba953e4d92636fa66b28f83c94bd0 GIT binary patch literal 72666 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

n4O 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�hKz7TpCh; z_`*OZK$XjUEaR;e)K*GrcsXYogxKg17JkfJ`05!!VDM4oaUzrlx!bMcjgu z>@2C0bU?z8y%~}p^@;h%4>}M}p9@Q;6gwk1I~P}cY(S>~0-4*Y47vg-GaqG`)yEW> zUFGk&#_{}{lkJ_JtLAA%`rm=3KF+KpS!00#3~jHzs5)|?o3Q;~9r^P-c%%dG00000 LNkvXXu0mjfjPR3P literal 0 HcmV?d00001 diff --git a/src/components/QuickLinkCard/QuickLinkCard.astro b/src/components/QuickLinkCard/QuickLinkCard.astro new file mode 100644 index 00000000000..19cad2f0bc1 --- /dev/null +++ b/src/components/QuickLinkCard/QuickLinkCard.astro @@ -0,0 +1,45 @@ +--- +import { Typography } from "@chainlink/blocks" +import type { ComponentType } from "astro/dist/runtime/server" +import styles from "./QuickLinkCard.module.css" + +interface Link { + icon: ComponentType + label: string + link: string +} + +interface Props { + links: Link[] +} + +const { links } = Astro.props +--- + +

+

Quick Links

+ +
+ + +
+
+ { + links.map((link) => { + const Icon = link.icon + return ( + + + + + + {link.label} + + + ) + }) + } +
+
+
+
diff --git a/src/components/QuickLinkCard/QuickLinkCard.module.css b/src/components/QuickLinkCard/QuickLinkCard.module.css new file mode 100644 index 00000000000..45a4ab3933a --- /dev/null +++ b/src/components/QuickLinkCard/QuickLinkCard.module.css @@ -0,0 +1,76 @@ +.container { + margin: var(--space-6x) 0; +} +.srOnly { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.content { + display: flex; +} + +.sidebar { + width: 32px; + flex-shrink: 0; + background: url("/images/info-sidebar-img.png") lightgray 50% / cover no-repeat; + position: relative; + filter: saturate(0.6); +} + +.main { + flex: 1; + min-width: 0; +} + +.title { + font-size: 2rem; + font-weight: 700; + margin: 0 0 2rem 0; + color: #1a1a1a; +} + +.linksGrid { + display: grid; + grid-template-columns: 1fr; + gap: var(--space-6x); + padding: var(--space-4x) 0 calc(var(--space-4x) - 2px) var(--space-6x); + + border-top: 1px solid var(--border); + border-bottom: 1px solid var(--border); + border-right: 1px solid var(--border); +} + +.linkItem { + display: flex; + align-items: center; + gap: var(--space-2x); +} + +.label { + font-size: 1rem; + font-weight: 500; +} + +@media (min-width: 640px) { + .linksGrid { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (min-width: 1024px) { + .sidebar { + display: block; + } + + .linksGrid { + grid-template-columns: repeat(3, 1fr); + } +} diff --git a/src/components/QuickLinkCard/README.md b/src/components/QuickLinkCard/README.md new file mode 100644 index 00000000000..84ecff72986 --- /dev/null +++ b/src/components/QuickLinkCard/README.md @@ -0,0 +1,214 @@ +# QuickLinkCard Component + +A responsive component that displays a grid of quick links with icons, perfect for creating a "Tools & Utilities" section or similar resource lists. + +## What This Component Does + +The QuickLinkCard component creates a visually appealing section that: + +- Shows a decorative sidebar image on larger screens +- Arranges your links in a responsive grid (1 column on mobile, 2 on tablet, 3 on desktop) +- Each link has an icon and a label +- Icons are displayed in brand color (blue) + +## How to Use It + +### Basic Usage + +1. Import the component and icon components in your Astro page: + +```astro +--- +import QuickLinkCard from "~/components/QuickLinkCard/QuickLinkCard.astro" +import { SvgEyeOptic, SvgStartup, SvgBulletList } from "@chainlink/blocks" +--- +``` + +2. Add the component with your links: + +```astro + +``` + +## Understanding the Props + +The component accepts one prop called `links`, which is a list (array) of link objects. Each link object has three parts: + +### `icon` (required) + +- **What it is:** An icon component that appears next to the link +- **Format:** A component from `@chainlink/blocks` or any other icon component +- **Example:** `SvgEyeOptic`, `SvgStartup`, `SvgBulletList` +- **Tip:** Use icons from the `@chainlink/blocks` package for consistency with the rest of the site + +### `label` (required) + +- **What it is:** The text that appears next to the icon +- **Format:** Plain text +- **Example:** `'View Network Configs'` +- **Tip:** Keep it short and descriptive (2-4 words works best) + +### `link` (required) + +- **What it is:** Where the link goes when clicked +- **Format:** A URL path +- **Example:** `'/network-configs'` or `'https://example.com'` +- **Tip:** Use relative paths (starting with `/`) for internal pages + +## Complete Example + +Here's a full example showing 6 links: + +```astro +--- +import QuickLinkCard from "~/components/QuickLinkCard/QuickLinkCard.astro" +import { + SvgEyeOptic, + SvgTransactionRepeatRecurring, + SvgWaveSignal, + SvgStartup, + SvgCrossChain, + SvgBulletList, +} from "@chainlink/blocks" + +// Define your links here +const quickLinks = [ + { + icon: SvgEyeOptic, + label: "View Network Configs", + link: "https://docs.chain.link/ccip/directory/mainnet", + }, + { + icon: SvgTransactionRepeatRecurring, + label: "Check Transaction Status", + link: "https://ccip.chain.link/", + }, + { + icon: SvgWaveSignal, + label: "View Lane Status", + link: "https://ccip.chain.link/status", + }, + { + icon: SvgStartup, + label: "Get Testnet Tokens", + link: "https://tokenmanager.chain.link/", + }, + { + icon: SvgCrossChain, + label: "Convert Chainlink tokens", + link: "https://www.transporter.io/", + }, + { + icon: SvgBulletList, + label: "View the Changelog", + link: "https://dev.chain.link/changelog?product=CCIP", + }, +] +--- + + +``` + +## Customizing the Look + +### Icon Color + +The icon color is set in the component itself. To change it: + +1. Open: `src/components/QuickLinkCard/QuickLinkCard.astro` +2. Find line with `` +3. Change `"brand"` to another color from `@chainlink/blocks` (e.g., `"blue-600"`, `"green-500"`, etc.) + +### Spacing and Layout + +If you want to change spacing or other visual aspects: + +1. Open the file: `src/components/QuickLinkCard/QuickLinkCard.module.css` +2. Look for the section you want to change: + - `.linkItem` - changes how each link looks + - `.linksGrid` - changes spacing and layout of the grid + - `.sidebar` - changes the sidebar image size + +### Example Customizations + +**Make the grid spacing tighter:** + +```css +.linksGrid { + gap: var(--space-4x); /* Change from var(--space-6x) */ +} +``` + +**Change the sidebar image size:** + +```css +.sidebar img { + width: 48px; /* Change from 32px */ +} +``` + +## Responsive Behavior + +The component automatically adapts to different screen sizes: + +- **Mobile (small screens):** Links stack in 1 column, sidebar image is hidden +- **Tablet (medium screens):** Links display in 2 columns, sidebar image is hidden +- **Desktop (large screens):** Links display in 3 columns, sidebar image appears on the left + +## Available Icons + +The `@chainlink/blocks` package provides many icons. Here are some commonly used ones: + +- `SvgEyeOptic` - Eye/view icon +- `SvgTransactionRepeatRecurring` - Transaction icon +- `SvgWaveSignal` - Signal/status icon +- `SvgStartup` - Rocket/startup icon +- `SvgCrossChain` - Cross-chain/transfer icon +- `SvgBulletList` - List icon +- And many more... + +Explore the `@chainlink/blocks` package to see all available icons. + +## Tips for Best Results + +1. **Icon Tips:** + - Use icons from `@chainlink/blocks` for consistency + - Keep all icons simple and recognizable + - Match the icon to the action (eye for "view", rocket for "get started", etc.) + +2. **Label Tips:** + - Keep labels short (2-4 words) + - Use action words like "View", "Check", "Get", "Convert" + - Be clear about what happens when the link is clicked + +3. **Link Tips:** + - Test all your links to make sure they work + - Use relative paths for internal pages (starts with `/`) + - Use full URLs for external sites (starts with `http://` or `https://`) + +## Need Help? + +If something isn't working: + +1. Check that all three parts (icon, label, link) are included for each link +2. Make sure you've imported the icon components from `@chainlink/blocks` +3. Verify that your links are correct paths +4. Check the browser console for any error messages diff --git a/src/layouts/DocsV3Layout/DocsV3Layout.astro b/src/layouts/DocsV3Layout/DocsV3Layout.astro index 4eb6a1b23fb..e55be9391eb 100644 --- a/src/layouts/DocsV3Layout/DocsV3Layout.astro +++ b/src/layouts/DocsV3Layout/DocsV3Layout.astro @@ -8,6 +8,15 @@ import LeftSidebar from "~/components/LeftSidebar/LeftSidebar.astro" import PageContent from "~/components/PageContent/PageContent.astro" import { TabGrid } from "~/components/TabGrid/TabGrid" import LayoutHero from "~/components/LayoutHero/LayoutHero.astro" +import QuickLinkCard from "~/components/QuickLinkCard/QuickLinkCard.astro" +import { + SvgBulletList, + SvgCrossChain, + SvgEyeOptic, + SvgStartup, + SvgTransactionRepeatRecurring, + SvgWaveSignal, +} from "@chainlink/blocks" interface Props { frontmatter: BaseFrontmatter @@ -123,6 +132,40 @@ const exampleTutorials = [ ], }, ] + +// Quick links data +const quickLinks = [ + { + icon: SvgEyeOptic, + label: "View Network Configs", + link: "https://docs.chain.link/ccip/directory/mainnet", + }, + { + icon: SvgTransactionRepeatRecurring, + label: "Check Transaction Status", + link: "https://ccip.chain.link/", + }, + { + icon: SvgWaveSignal, + label: "View Lane Status", + link: "https://ccip.chain.link/status", + }, + { + icon: SvgStartup, + label: "Get Testnet Tokens", + link: "https://tokenmanager.chain.link/", + }, + { + icon: SvgCrossChain, + label: "Convert Chainlink tokens", + link: "https://www.transporter.io/", + }, + { + icon: SvgBulletList, + label: "View the Changelog", + link: "https://dev.chain.link/changelog?product=CCIP", + }, +] --- @@ -144,6 +187,7 @@ const exampleTutorials = [ ]} image="/images/ccip/ccip-hero.png" /> + From e6d417a0695773083114a5db8396d1e847d80f35 Mon Sep 17 00:00:00 2001 From: Tyrel Chambers Date: Fri, 24 Oct 2025 08:19:54 -0400 Subject: [PATCH 20/37] Feat/112 image (#118) * add media structure * Create README.md --------- Co-authored-by: Simone Cuomo --- public/images/architecture.png | Bin 0 -> 86094 bytes .../MediaSection/MediaSection.astro | 41 ++++++++++++++++ .../MediaSection/MediaSection.module.css | 25 ++++++++++ src/components/MediaSection/README.md | 44 ++++++++++++++++++ src/layouts/DocsV3Layout/DocsV3Layout.astro | 6 +++ 5 files changed, 116 insertions(+) create mode 100644 public/images/architecture.png create mode 100644 src/components/MediaSection/MediaSection.astro create mode 100644 src/components/MediaSection/MediaSection.module.css create mode 100644 src/components/MediaSection/README.md diff --git a/public/images/architecture.png b/public/images/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..076b0418e4f225ebbb61af973bce9465bc3ac0c9 GIT binary patch literal 86094 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%0AM?Ee^ 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

xbaW^RpMPyECBaAyX{uVX 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 ZKI-U7YC3?`HeJXrC!;8x|Cgcf{{q*fQ%V2; literal 0 HcmV?d00001 diff --git a/src/components/MediaSection/MediaSection.astro b/src/components/MediaSection/MediaSection.astro new file mode 100644 index 00000000000..79fc38d8472 --- /dev/null +++ b/src/components/MediaSection/MediaSection.astro @@ -0,0 +1,41 @@ +--- +import { Typography } from "@chainlink/blocks" +import styles from "./MediaSection.module.css" + +interface Props { + heading: string + description: string + image?: string + video?: string +} + +const { heading, description, image, video } = Astro.props +--- + +

+
+ {heading} + + {description} + +
+ + { + image && ( +
+ {heading} +
+ ) + } + + { + !image && video && ( +
+ +
+ ) + } +
diff --git a/src/components/MediaSection/MediaSection.module.css b/src/components/MediaSection/MediaSection.module.css new file mode 100644 index 00000000000..f7c5673f5a8 --- /dev/null +++ b/src/components/MediaSection/MediaSection.module.css @@ -0,0 +1,25 @@ +.section { + display: flex; + flex-direction: column; + gap: var(--space-8x); +} + +.textContent { + display: flex; + flex-direction: column; + gap: var(--space-6x); +} + +.mediaWrapper { + width: 100%; + display: flex; + justify-content: center; + align-items: center; +} + +.media { + width: 100%; + max-width: 100%; + height: auto; + border-radius: var(--space-2x); +} diff --git a/src/components/MediaSection/README.md b/src/components/MediaSection/README.md new file mode 100644 index 00000000000..c03ad7205c6 --- /dev/null +++ b/src/components/MediaSection/README.md @@ -0,0 +1,44 @@ +# MediaSection Component + +## What it does + +The MediaSection component displays a section with a heading, description, and optionally an image or video. It's perfect for explaining concepts with visual aids, like showing architecture diagrams or tutorial videos. + +## How to use it + +Import the component and add it to your page with the content you want to display: + +```astro +import MediaSection from "~/components/MediaSection/MediaSection.astro" + + +``` + +## Props explained + +- **heading** (required) - The title of your section +- **description** (required) - A paragraph explaining the section content +- **image** (optional) - Path to an image file you want to display +- **video** (optional) - Path to a video file you want to display + +**Note:** You can provide either an image OR a video, not both. If you include both, only the image will show. + +## Example + +```astro + +``` + +This will display: + +1. A heading that says "High-level architecture" +2. The description text below it +3. The architecture diagram image at the bottom diff --git a/src/layouts/DocsV3Layout/DocsV3Layout.astro b/src/layouts/DocsV3Layout/DocsV3Layout.astro index e55be9391eb..d9377a1ee8b 100644 --- a/src/layouts/DocsV3Layout/DocsV3Layout.astro +++ b/src/layouts/DocsV3Layout/DocsV3Layout.astro @@ -8,6 +8,7 @@ import LeftSidebar from "~/components/LeftSidebar/LeftSidebar.astro" import PageContent from "~/components/PageContent/PageContent.astro" import { TabGrid } from "~/components/TabGrid/TabGrid" import LayoutHero from "~/components/LayoutHero/LayoutHero.astro" +import MediaSection from "~/components/MediaSection/MediaSection.astro" import QuickLinkCard from "~/components/QuickLinkCard/QuickLinkCard.astro" import { SvgBulletList, @@ -190,6 +191,11 @@ const quickLinks = [ +
From ae1893f359b2c7eb8d88ed2bf1d2e0ecace6bf0b Mon Sep 17 00:00:00 2001 From: Tyrel Chambers Date: Fri, 24 Oct 2025 08:23:59 -0400 Subject: [PATCH 21/37] Add resources grid (#117) * add resources grid * adjust image linking --------- Co-authored-by: Simone Cuomo --- src/components/Resource/README.md | 106 ++++++++++++++++++ src/components/Resource/ResourceCard.astro | 47 ++++++++ .../Resource/ResourceCard.module.css | 79 +++++++++++++ src/components/Resource/ResourceGrid.astro | 24 ++++ .../Resource/ResourceGrid.module.css | 17 +++ src/components/Resource/ResourceSection.astro | 23 ++++ .../Resource/ResourceSection.module.css | 6 + src/components/TabGrid/TabGrid.tsx | 9 +- src/layouts/DocsV3Layout/DocsV3Layout.astro | 28 +++++ 9 files changed, 338 insertions(+), 1 deletion(-) create mode 100644 src/components/Resource/README.md create mode 100644 src/components/Resource/ResourceCard.astro create mode 100644 src/components/Resource/ResourceCard.module.css create mode 100644 src/components/Resource/ResourceGrid.astro create mode 100644 src/components/Resource/ResourceGrid.module.css create mode 100644 src/components/Resource/ResourceSection.astro create mode 100644 src/components/Resource/ResourceSection.module.css diff --git a/src/components/Resource/README.md b/src/components/Resource/README.md new file mode 100644 index 00000000000..e2f6f4d8b44 --- /dev/null +++ b/src/components/Resource/README.md @@ -0,0 +1,106 @@ +# ResourceGrid + +## What it does + +This component displays a grid of resource cards. Each card can represent either an article or a video, with an optional image, title, description, and link. Article cards show a "Read the full article" footer with an arrow. + +## How to use it + +1. Import the component in your Astro layout or page: + +```astro +import ResourceGrid from "~/components/Resource/ResourceGrid.astro" import type {ResourceItem} from "~/components/Resource/ResourceGrid.astro" +``` + +2. (Optional) If you want to use imported images, import them: + +```astro +import myImage from "~/assets/images/my-image.png" +``` + +3. Create an array of resources with the information for each resource card + +4. Add the component to your page and pass in the resources: + +```astro + +``` + +## Example + +Here's a complete example showing how to use the component: + +```astro +--- +import ResourceGrid from "~/components/Resource/ResourceGrid.astro" +import type { ResourceItem } from "~/components/Resource/ResourceGrid.astro" +import tokenPoolImage from "~/assets/images/token-pool.png" + +const resources: ResourceItem[] = [ + { + image: tokenPoolImage, + imageAlt: "Token Pool illustration", + label: "Token Pool Types", + description: + "Explore the various token pool types supported by the Cross-Chain Token (CCT) standard with Chainlink Labs.", + link: "/resources/token-pool-types", + type: "article", + }, + { + label: "Getting Started with CCIP", + description: + "Learn how to build cross-chain applications using Chainlink CCIP in this comprehensive video tutorial.", + link: "https://youtube.com/watch?v=example", + type: "video", + }, + { + image: "/images/cross-chain-messaging.png", + imageAlt: "Cross-chain messaging diagram", + label: "Understanding Cross-Chain Messaging", + description: "A deep dive into how cross-chain messaging works and how to implement it in your smart contracts.", + link: "/resources/cross-chain-messaging", + type: "article", + }, +] +--- + + +``` + +## What you need to provide + +Each item in your `resources` array needs these fields: + +| Field | Required? | What it is | Example | +| --------------- | --------- | -------------------------------------------------------------------------- | ---------------------------------------------------------------- | +| **label** | Yes | The title of the resource | `"Token Pool Types"` | +| **link** | Yes | Where the card should link to (can be internal or external) | `"/resources/token-pool-types"` or `"https://youtube.com/..."` | +| **description** | Yes | A description explaining what the resource covers | `"Explore the various token pool types..."` | +| **type** | Yes | The type of resource - either `"article"` or `"video"` | `"article"` | +| **image** | No | Either an imported image or a path string | `myImage` (imported) or `"/images/token-pool.png"` (string path) | +| **imageAlt** | No | Description of the image for accessibility (required if image is provided) | `"Token Pool illustration"` | + +## Where to put images + +Images are optional for resource cards. You have two options: + +### Option 1: Import images (recommended for images in your project) + +1. Place your image file in the `src/assets/images/` directory +2. Import it at the top of your file: + ```astro + import myImage from "~/assets/images/my-image.png" + ``` +3. Use the imported variable in your resource object + +### Option 2: Use a path string (for public directory or external images) + +1. Place your image file in the `/public/images/` directory +2. Reference it with the full path starting with `/images/` + +Both approaches work! Use imported images for better optimization, or use path strings for simplicity. + +## Resource types + +- **article**: Displays "Read the full article" footer with an arrow icon +- **video**: No special footer (just the card with title and description) diff --git a/src/components/Resource/ResourceCard.astro b/src/components/Resource/ResourceCard.astro new file mode 100644 index 00000000000..e3ef42de9d4 --- /dev/null +++ b/src/components/Resource/ResourceCard.astro @@ -0,0 +1,47 @@ +--- +import { Typography, SvgArrowRight2 } from "@chainlink/blocks" +import type { ImageMetadata } from "astro" +import styles from "./ResourceCard.module.css" + +interface Props { + image?: string | ImageMetadata + imageAlt?: string + label: string + link: string + description: string + type: "article" | "video" +} + +const { image, imageAlt, label, link, description, type } = Astro.props + +const imageSrc = typeof image === "string" ? image : image?.src +--- + + + { + imageSrc && ( +
+ {imageAlt} +
+ ) + } +
+ {label} + + {description} + +
+ { + type === "article" && ( +
+ Read the full article + +
+ ) + } +
diff --git a/src/components/Resource/ResourceCard.module.css b/src/components/Resource/ResourceCard.module.css new file mode 100644 index 00000000000..475a298cbad --- /dev/null +++ b/src/components/Resource/ResourceCard.module.css @@ -0,0 +1,79 @@ +.card { + display: flex; + flex-direction: column; + background: var(--color-background); + padding: var(--space-6x); + gap: var(--space-4x); + border-right: 1px solid var(--border); + border-bottom: 1px solid var(--border); + text-decoration: none; + transition: background-color 0.2s; + min-height: 329px; + cursor: default; +} + +.card:nth-child(-n + 3) { + border-top: 1px solid var(--border); +} + +.card:hover { + background-color: var(--muted); +} + +.imageWrapper { + width: 100%; + aspect-ratio: 16 / 9; + overflow: hidden; + border-radius: var(--space-2x); +} + +.image { + width: 100%; + height: 100%; + object-fit: cover; +} + +.content { + display: flex; + flex-direction: column; + flex: 1; +} + +.cardLabel { + font-size: 16px; + font-weight: 525; + color: var(--foreground); + margin-bottom: var(--space-2x); +} + +.cardFooter { + display: flex; + align-items: center; + width: 100%; + gap: var(--space-2x); + margin-top: var(--space-4x); +} + +.footerText { + font-size: 14px; + color: var(--color-text-secondary); +} +@media screen and (max-width: 1024px) { + .card:nth-child(-n + 3) { + border-top: none; + } + + .card:nth-child(-n + 2) { + border-top: 1px solid var(--border); + } +} + +@media screen and (max-width: 768px) { + .card:nth-child(n) { + border-top: none; + } + + .card:nth-child(1) { + border-top: 1px solid var(--border); + } +} diff --git a/src/components/Resource/ResourceGrid.astro b/src/components/Resource/ResourceGrid.astro new file mode 100644 index 00000000000..1ec37d2aac1 --- /dev/null +++ b/src/components/Resource/ResourceGrid.astro @@ -0,0 +1,24 @@ +--- +import type { ImageMetadata } from "astro" +import ResourceCard from "./ResourceCard.astro" +import styles from "./ResourceGrid.module.css" + +export interface ResourceItem { + image?: string | ImageMetadata + imageAlt?: string + label: string + link: string + description: string + type: "article" | "video" +} + +interface Props { + resources: ResourceItem[] +} + +const { resources } = Astro.props +--- + +
+ {resources.map((resource) => )} +
diff --git a/src/components/Resource/ResourceGrid.module.css b/src/components/Resource/ResourceGrid.module.css new file mode 100644 index 00000000000..02cb548eeb9 --- /dev/null +++ b/src/components/Resource/ResourceGrid.module.css @@ -0,0 +1,17 @@ +.grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + border-left: 1px solid var(--border); +} + +@media (max-width: 1024px) { + .grid { + grid-template-columns: repeat(2, 1fr); + } +} + +@media (max-width: 768px) { + .grid { + grid-template-columns: 1fr; + } +} diff --git a/src/components/Resource/ResourceSection.astro b/src/components/Resource/ResourceSection.astro new file mode 100644 index 00000000000..148f2b2213d --- /dev/null +++ b/src/components/Resource/ResourceSection.astro @@ -0,0 +1,23 @@ +--- +import { Typography } from "@chainlink/blocks" +import ResourceGrid from "./ResourceGrid.astro" +import type { ResourceItem } from "./ResourceGrid.astro" +import styles from "./ResourceSection.module.css" + +interface Props { + title: string + resources: ResourceItem[] +} + +const { title, resources } = Astro.props +--- + +
+ {title} + +
diff --git a/src/components/Resource/ResourceSection.module.css b/src/components/Resource/ResourceSection.module.css new file mode 100644 index 00000000000..13896ba6e6c --- /dev/null +++ b/src/components/Resource/ResourceSection.module.css @@ -0,0 +1,6 @@ +.section { + display: flex; + flex-direction: column; + gap: var(--space-8x); + margin: 56px 0; +} diff --git a/src/components/TabGrid/TabGrid.tsx b/src/components/TabGrid/TabGrid.tsx index 6e85ec3cfa6..ab4962bc6e8 100644 --- a/src/components/TabGrid/TabGrid.tsx +++ b/src/components/TabGrid/TabGrid.tsx @@ -18,7 +18,14 @@ export const TabGrid = ({ tabs, header, columns = 3 }: TabGridProps) => { return (
- {header} + + {header} + {tabs.map((tab) => ( diff --git a/src/layouts/DocsV3Layout/DocsV3Layout.astro b/src/layouts/DocsV3Layout/DocsV3Layout.astro index d9377a1ee8b..e22c08c265b 100644 --- a/src/layouts/DocsV3Layout/DocsV3Layout.astro +++ b/src/layouts/DocsV3Layout/DocsV3Layout.astro @@ -8,6 +8,7 @@ import LeftSidebar from "~/components/LeftSidebar/LeftSidebar.astro" import PageContent from "~/components/PageContent/PageContent.astro" import { TabGrid } from "~/components/TabGrid/TabGrid" import LayoutHero from "~/components/LayoutHero/LayoutHero.astro" +import ResourceSection from "~/components/Resource/ResourceSection.astro" import MediaSection from "~/components/MediaSection/MediaSection.astro" import QuickLinkCard from "~/components/QuickLinkCard/QuickLinkCard.astro" import { @@ -40,6 +41,31 @@ const currentPage = new URL(Astro.request.url).pathname const includeLinkToWalletScript = !!Astro.props.frontmatter.metadata?.linkToWallet +// Example resources data +const exampleResources = [ + { + label: "Token Pool Types", + description: + "Explore the various token pool types supported by the Cross-Chain Token (CCT) standard with Chainlink Labs. Explore the various token pool types supported by the Cross-Chain Token (CCT) standard with Chainlink Labs...", + link: "/resources/token-pool-types", + type: "article", + }, + { + label: "Token Pool Types", + description: + "Explore the various token pool types supported by the Cross-Chain Token (CCT) standard with Chainlink Labs. Explore the various token pool types supported by the Cross-Chain Token (CCT) standard with Chainlink Labs...", + link: "/resources/token-pool-types", + type: "article", + }, + { + label: "Token Pool Types", + description: + "Explore the various token pool types supported by the Cross-Chain Token (CCT) standard with Chainlink Labs. Explore the various token pool types supported by the Cross-Chain Token (CCT) standard with Chainlink Labs...", + link: "/resources/token-pool-types", + type: "article", + }, +] + // Example tutorial data const exampleTutorials = [ { @@ -188,6 +214,8 @@ const quickLinks = [ ]} image="/images/ccip/ccip-hero.png" /> + + From f140ca8178b9c056a4c2427cf787d9be33202f25 Mon Sep 17 00:00:00 2001 From: Tyrel Chambers Date: Fri, 24 Oct 2025 08:26:13 -0400 Subject: [PATCH 22/37] Feat/110 tools utilities (#116) * add grid * Update DocsV3Layout.astro * Update DocsV3Layout.astro * rwd * Update DocsV3Layout.astro * Update DocsV3Layout.astro * Update ToolsUtilitiesGrid.astro * add readme --------- Co-authored-by: Simone Cuomo --- public/images/ccip-logo.svg | 3 + public/images/direct-stacking-logo.svg | 8 ++ public/images/foundry-logo.svg | 11 +++ public/images/hardhat-logo.svg | 20 +++++ public/images/js-logo.svg | 4 + public/images/npm-logo.png | Bin 0 -> 493 bytes public/images/ts-logo.svg | 5 ++ src/components/ToolsUtilitiesGrid/README.md | 82 ++++++++++++++++++ .../ToolsUtilitiesGrid/ToolItem.astro | 28 ++++++ .../ToolsUtilitiesGrid.astro | 26 ++++++ .../toolsUtilities.module.css | 57 ++++++++++++ src/components/ToolsUtilitiesGrid/types.ts | 7 ++ src/layouts/DocsV3Layout/DocsV3Layout.astro | 59 +++++++++++++ 13 files changed, 310 insertions(+) create mode 100644 public/images/ccip-logo.svg create mode 100644 public/images/direct-stacking-logo.svg create mode 100644 public/images/foundry-logo.svg create mode 100644 public/images/hardhat-logo.svg create mode 100644 public/images/js-logo.svg create mode 100644 public/images/npm-logo.png create mode 100644 public/images/ts-logo.svg create mode 100644 src/components/ToolsUtilitiesGrid/README.md create mode 100644 src/components/ToolsUtilitiesGrid/ToolItem.astro create mode 100644 src/components/ToolsUtilitiesGrid/ToolsUtilitiesGrid.astro create mode 100644 src/components/ToolsUtilitiesGrid/toolsUtilities.module.css create mode 100644 src/components/ToolsUtilitiesGrid/types.ts diff --git a/public/images/ccip-logo.svg b/public/images/ccip-logo.svg new file mode 100644 index 00000000000..79f05e8a605 --- /dev/null +++ b/public/images/ccip-logo.svg @@ -0,0 +1,3 @@ + + + diff --git a/public/images/direct-stacking-logo.svg b/public/images/direct-stacking-logo.svg new file mode 100644 index 00000000000..1814e384a6a --- /dev/null +++ b/public/images/direct-stacking-logo.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/public/images/foundry-logo.svg b/public/images/foundry-logo.svg new file mode 100644 index 00000000000..2315253caf3 --- /dev/null +++ b/public/images/foundry-logo.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/images/hardhat-logo.svg b/public/images/hardhat-logo.svg new file mode 100644 index 00000000000..6077c84afae --- /dev/null +++ b/public/images/hardhat-logo.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/public/images/js-logo.svg b/public/images/js-logo.svg new file mode 100644 index 00000000000..a4baee9a679 --- /dev/null +++ b/public/images/js-logo.svg @@ -0,0 +1,4 @@ + + + + diff --git a/public/images/npm-logo.png b/public/images/npm-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..481f9493e8d47536b76f4d4d400813b387d1b52a GIT binary patch literal 493 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?3oVGw3ym^DWND9BhG zw`pVf?%sCc$yExwc%~82#b}jRM$Er60p7~W8F|8cB<+ma|PJA+$Vq^XFk3&pZ zMCCstW218dO1*B{_tk58E_q-0FtLC|OWSw$&O0S@A3X}Kc<1!cxoJvRYl+9N6C(Gm zZ4aJ)$5*nvS0(r}_lz62+{#MNn(u9UH_QK)NlDl=!F%@(us*5$pr>~>b%9;puAn^& zZ#Tz1(zftpDwxc0=hB8LC!bI3jeGn-jO9hx>ag<>>@)7(Z;sbVl8IU>BzMhx&Af?* z2Yi_de%D`KvG#gZZA$br@nw%UvhV0$cJ#T|)6=!Ve;$1mt@Ap@V9p6r2Q*U!!CWJ5 zvNxmk>s_YQDRp1cuWB5ge|hcIgzOCm1<#y4pj!9Yux>iobfB((4h&9zyq$yPViL<< zvtPd;^8TfdoJ?Joht_A;*^AlQ_`c5E-EO;R-ej&&$C=97&zd?;6*%5`x-u!tZ0mmJ Yi1O0QY3X09fU(2i>FVdQ&MBb@0LCEG5dZ)H literal 0 HcmV?d00001 diff --git a/public/images/ts-logo.svg b/public/images/ts-logo.svg new file mode 100644 index 00000000000..047caf543cc --- /dev/null +++ b/public/images/ts-logo.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/components/ToolsUtilitiesGrid/README.md b/src/components/ToolsUtilitiesGrid/README.md new file mode 100644 index 00000000000..550b5ae7de0 --- /dev/null +++ b/src/components/ToolsUtilitiesGrid/README.md @@ -0,0 +1,82 @@ +# ToolsUtilitiesGrid + +## What it does + +This component displays a grid of clickable cards that showcase tools and utilities. Each card includes an icon, title, description, and link. It's perfect for creating a visual directory of resources, tools, or utilities that users can browse and click through to. + +## How to use it + +1. Import the component in your Astro layout or page: + +```astro +import ToolsUtilitiesGrid from "~/components/ToolsUtilitiesGrid/ToolsUtilitiesGrid.astro" +``` + +2. Create an array of links with the information for each tool/utility you want to display + +3. Add the component to your page and pass in the links: + +```astro + +``` + +## Example + +Here's a complete example showing how to use the component: + +```astro +--- +import ToolsUtilitiesGrid from "~/components/ToolsUtilitiesGrid/ToolsUtilitiesGrid.astro" + +const toolsAndUtilities = [ + { + image: "/images/ccip-logo.svg", + imageAlt: "CCIP API icon", + label: "CCIP API", + link: "/ccip/api", + description: "An API for message retrieval and lane latency information.", + }, + { + image: "/images/js-logo.svg", + imageAlt: "JavaScript SDK icon", + label: "Javascript SDK", + link: "https://github.com/smartcontractkit/ccip-javascript-sdk", + description: "Integrate CCIP functionality directly into your web applications for EVM-compatible chains.", + }, + { + image: "/images/hardhat-logo.svg", + imageAlt: "Hardhat icon", + label: "Hardhat Starter Kit", + link: "https://github.com/smartcontractkit/hardhat-starter-kit", + description: + "Ready-to-go boilerplate for basic CCIP use cases that help you get started building quickly with Hardhat.", + }, +] +--- + + +``` + +## What you need to provide + +Each item in your `links` array needs these fields: + +| Field | What it is | Example | +| --------------- | ----------------------------------------------------------- | -------------------------------------------------------------- | +| **image** | The full path to the icon/logo image | `"/images/ccip-logo.svg"` | +| **imageAlt** | Description of the image for accessibility | `"CCIP API icon"` | +| **label** | The title/name of the tool or utility | `"CCIP API"` | +| **link** | Where the card should link to (can be internal or external) | `"/ccip/api"` or `"https://github.com/..."` | +| **description** | A short description explaining what the tool does | `"An API for message retrieval and lane latency information."` | + +## Where to put images + +Place your icon/logo images in the `/public/images/` directory, and reference them with the full path starting with `/images/`. + +For example, if you use `image: "/images/my-tool-logo.svg"`, the actual file should be at: + +``` +/public/images/my-tool-logo.svg +``` + +You can also use images from other locations by providing the full path (e.g., `"/assets/logos/my-logo.png"`). diff --git a/src/components/ToolsUtilitiesGrid/ToolItem.astro b/src/components/ToolsUtilitiesGrid/ToolItem.astro new file mode 100644 index 00000000000..eb5b7f590c7 --- /dev/null +++ b/src/components/ToolsUtilitiesGrid/ToolItem.astro @@ -0,0 +1,28 @@ +--- +import { Typography } from "@chainlink/blocks" +import styles from "./toolsUtilities.module.css" +import { Link } from "./types" + +type Props = Link + +const { description, image, imageAlt, label, link } = Astro.props +--- + + +
{imageAlt}
+ +
+
+ {label} + {description} +
+ + +
+
diff --git a/src/components/ToolsUtilitiesGrid/ToolsUtilitiesGrid.astro b/src/components/ToolsUtilitiesGrid/ToolsUtilitiesGrid.astro new file mode 100644 index 00000000000..fa875b286c8 --- /dev/null +++ b/src/components/ToolsUtilitiesGrid/ToolsUtilitiesGrid.astro @@ -0,0 +1,26 @@ +--- +import styles from "./toolsUtilities.module.css" + +import { Link } from "./types" +import ToolItem from "./ToolItem.astro" +import { Typography } from "@chainlink/blocks" + +interface Props { + links: Link[] +} + +const { links } = Astro.props +--- + +
+ Tools & Utilities + +
+ {links.map((link) => )} +
+
diff --git a/src/components/ToolsUtilitiesGrid/toolsUtilities.module.css b/src/components/ToolsUtilitiesGrid/toolsUtilities.module.css new file mode 100644 index 00000000000..577dc45dbe2 --- /dev/null +++ b/src/components/ToolsUtilitiesGrid/toolsUtilities.module.css @@ -0,0 +1,57 @@ +.wrapper { + padding: 56px 0; +} +.container { + display: grid; + grid-template-columns: repeat(3, 1fr); + margin-top: var(--space-8x); +} + +.card { + padding: var(--space-6x); + display: flex; + gap: var(--space-4x); + align-items: start; +} + +.card:hover { + background: var(--muted); + & .arrow { + opacity: 1; + } +} + +.imageContainer { + min-width: 48px; + height: 48px; + background: var(--background-alt); + border: 1px solid var(--border); + border-radius: var(--space-1x); + display: flex; + align-items: center; + justify-content: center; +} + +.content { + display: flex; + + & > img { + align-self: end; + } +} + +.arrow { + opacity: 0; +} + +@media screen and (max-width: 1135px) { + .container { + grid-template-columns: repeat(2, 1fr); + } +} + +@media screen and (max-width: 525px) { + .container { + grid-template-columns: repeat(1, 1fr); + } +} diff --git a/src/components/ToolsUtilitiesGrid/types.ts b/src/components/ToolsUtilitiesGrid/types.ts new file mode 100644 index 00000000000..2c645744a9f --- /dev/null +++ b/src/components/ToolsUtilitiesGrid/types.ts @@ -0,0 +1,7 @@ +export interface Link { + image: string + imageAlt: string + label: string + link: string + description: string +} diff --git a/src/layouts/DocsV3Layout/DocsV3Layout.astro b/src/layouts/DocsV3Layout/DocsV3Layout.astro index e22c08c265b..98a6989283e 100644 --- a/src/layouts/DocsV3Layout/DocsV3Layout.astro +++ b/src/layouts/DocsV3Layout/DocsV3Layout.astro @@ -7,6 +7,8 @@ import * as CONFIG from "~/config" import LeftSidebar from "~/components/LeftSidebar/LeftSidebar.astro" import PageContent from "~/components/PageContent/PageContent.astro" import { TabGrid } from "~/components/TabGrid/TabGrid" + +import ToolsUtilitiesGrid from "~/components/ToolsUtilitiesGrid/ToolsUtilitiesGrid.astro" import LayoutHero from "~/components/LayoutHero/LayoutHero.astro" import ResourceSection from "~/components/Resource/ResourceSection.astro" import MediaSection from "~/components/MediaSection/MediaSection.astro" @@ -41,6 +43,61 @@ const currentPage = new URL(Astro.request.url).pathname const includeLinkToWalletScript = !!Astro.props.frontmatter.metadata?.linkToWallet +const toolsAndUtilities = [ + { + image: "ccip-logo.svg", + imageAlt: "CCIP API icon", + label: "CCIP API", + link: "/ccip/api", + description: "An API for message retrieval and lane latency information.", + }, + { + image: "js-logo.svg", + imageAlt: "JavaScript SDK icon", + label: "Javascript SDK", + link: "https://github.com/smartcontractkit/ccip-javascript-sdk", + description: "Integrate CCIP functionality directly into your web applications for EVM-compatible chains.", + }, + { + image: "ts-logo.svg", + imageAlt: "CLI icon", + label: "CLI", + link: "https://github.com/smartcontractkit/ccip-tools-ts", + description: "TypeScript command-line interface and library designed for interacting with deployed CCIP contracts.", + }, + { + image: "hardhat-logo.svg", + imageAlt: "Hardhat icon", + label: "Hardhat Starter Kit", + link: "https://github.com/smartcontractkit/hardhat-starter-kit", + description: + "Ready-to-go boilerplate for basic CCIP use cases that help you get started building quickly with Hardhat.", + }, + { + image: "foundry-logo.svg", + imageAlt: "Foundry icon", + label: "Foundry Starter Kit", + link: "https://github.com/smartcontractkit/foundry-starter-kit", + description: + "Ready-to-go boilerplate for basic CCIP use cases that help you get started building quickly with Foundry.", + }, + { + image: "npm-logo.png", + imageAlt: "NPM icon", + label: "CCIP Contracts NPM", + link: "https://www.npmjs.com/package/@chainlink/contracts-ccip", + description: + "An npm package providing Solidity smart contract implementations to integrate CCIP into your EVM-based project.", + }, + { + image: "direct-stacking-logo.svg", + imageAlt: "Direct Staking icon", + label: "Direct Staking", + link: "https://github.com/Aphyla/chainlink-csr", + description: + "Stake native tokens on supported L2 networks and receive liquid staked tokens directly on the same chain.", + }, +] // Example resources data const exampleResources = [ { @@ -205,6 +262,7 @@ const quickLinks = [
+ + Date: Mon, 27 Oct 2025 03:04:58 -0400 Subject: [PATCH 23/37] Feat/make overview page (#122) * move all new components to overview (index mdx) page * fix css rule * update example links to real links * fix linkchecker --- src/components/Cards/cards.module.css | 1 + .../MediaSection/MediaSection.astro | 7 +- src/components/PageContent/PageContent.astro | 319 ++++++++------- .../QuickLinkCard/QuickLinkCard.astro | 3 +- .../QuickLinkCard/QuickLinkCard.module.css | 7 - src/components/TabGrid/TabGrid.module.css | 3 + src/components/TabGrid/TabGrid.tsx | 2 +- .../toolsUtilities.module.css | 2 +- src/config/sidebar.ts | 2 +- src/content.config.ts | 2 + src/content/ccip/index.mdx | 378 ++++++++++++++---- src/layouts/DocsV3Layout/DocsV3Layout.astro | 249 +----------- src/pages/index.astro | 1 - 13 files changed, 484 insertions(+), 492 deletions(-) diff --git a/src/components/Cards/cards.module.css b/src/components/Cards/cards.module.css index ac19502528d..ea602f47b0b 100644 --- a/src/components/Cards/cards.module.css +++ b/src/components/Cards/cards.module.css @@ -3,6 +3,7 @@ grid-template-columns: repeat(3, 1fr); border-left: 1px solid var(--border); border-top: 1px solid var(--border); + margin: 56px 0; } .cardsWrapper h6 { diff --git a/src/components/MediaSection/MediaSection.astro b/src/components/MediaSection/MediaSection.astro index 79fc38d8472..6189f9326e7 100644 --- a/src/components/MediaSection/MediaSection.astro +++ b/src/components/MediaSection/MediaSection.astro @@ -14,7 +14,12 @@ const { heading, description, image, video } = Astro.props
- {heading} + {heading} {description} diff --git a/src/components/PageContent/PageContent.astro b/src/components/PageContent/PageContent.astro index 104d4999267..e29180351b4 100644 --- a/src/components/PageContent/PageContent.astro +++ b/src/components/PageContent/PageContent.astro @@ -3,197 +3,222 @@ import { MarkdownHeading } from "astro" export type Props = { titleHeading: MarkdownHeading + disableDefaultStyles?: boolean + hideTitle?: boolean } -const { titleHeading } = Astro.props +const { titleHeading, disableDefaultStyles, hideTitle } = Astro.props --- -
-

{titleHeading.text}

+
+

{titleHeading.text}

diff --git a/src/components/QuickLinkCard/QuickLinkCard.astro b/src/components/QuickLinkCard/QuickLinkCard.astro index 19cad2f0bc1..e4e13bc9e71 100644 --- a/src/components/QuickLinkCard/QuickLinkCard.astro +++ b/src/components/QuickLinkCard/QuickLinkCard.astro @@ -1,10 +1,9 @@ --- import { Typography } from "@chainlink/blocks" -import type { ComponentType } from "astro/dist/runtime/server" import styles from "./QuickLinkCard.module.css" interface Link { - icon: ComponentType + icon: any label: string link: string } diff --git a/src/components/QuickLinkCard/QuickLinkCard.module.css b/src/components/QuickLinkCard/QuickLinkCard.module.css index 45a4ab3933a..cfb8562b389 100644 --- a/src/components/QuickLinkCard/QuickLinkCard.module.css +++ b/src/components/QuickLinkCard/QuickLinkCard.module.css @@ -30,13 +30,6 @@ min-width: 0; } -.title { - font-size: 2rem; - font-weight: 700; - margin: 0 0 2rem 0; - color: #1a1a1a; -} - .linksGrid { display: grid; grid-template-columns: 1fr; diff --git a/src/components/TabGrid/TabGrid.module.css b/src/components/TabGrid/TabGrid.module.css index d20535265a2..8b0df827fee 100644 --- a/src/components/TabGrid/TabGrid.module.css +++ b/src/components/TabGrid/TabGrid.module.css @@ -1,3 +1,6 @@ +.tabGridWrapper { + margin: 56px 0; +} .grid { display: grid; border-left: 1px solid var(--border); diff --git a/src/components/TabGrid/TabGrid.tsx b/src/components/TabGrid/TabGrid.tsx index ab4962bc6e8..5b73bcdd43b 100644 --- a/src/components/TabGrid/TabGrid.tsx +++ b/src/components/TabGrid/TabGrid.tsx @@ -16,7 +16,7 @@ interface TabGridProps { export const TabGrid = ({ tabs, header, columns = 3 }: TabGridProps) => { return ( - +
> = { section: "Chainlink CCIP", contents: [ { - title: "About CCIP", + title: "Overview", url: "ccip", }, { diff --git a/src/content.config.ts b/src/content.config.ts index 1c3604bf7e4..40a9635c376 100644 --- a/src/content.config.ts +++ b/src/content.config.ts @@ -58,6 +58,8 @@ const baseFrontmatter = z whatsnext: z.record(z.string(), z.string()).optional(), isMdx: z.boolean().optional(), isIndex: z.boolean().optional(), + disableDefaultStyles: z.boolean().optional(), + hideTitle: z.boolean().optional(), metadata, datafeedtype: z.string().optional(), fileExtension: z.string().optional(), diff --git a/src/content/ccip/index.mdx b/src/content/ccip/index.mdx index 6fc9aa3db25..da23f249706 100644 --- a/src/content/ccip/index.mdx +++ b/src/content/ccip/index.mdx @@ -8,95 +8,299 @@ metadata: datePublished: "2023-08-03" lastModified: "2025-05-19" isIndex: true -whatsnext: - "Complete the Getting Started guide to learn the basics": "/ccip/getting-started" - "CCIP Directory": "/ccip/directory" - "Learn how to transfer tokens": "/ccip/tutorials/evm/transfer-tokens-from-contract" - "Learn more about CCIP architecture": "/ccip/concepts/architecture" +disableDefaultStyles: true +hideTitle: true --- -import { ClickToZoom, Aside } from "@components" -import CcipCommon from "@features/ccip/CcipCommon.astro" - - - -Blockchain interoperability protocols are important for the Web3 ecosystem and traditional systems that need to interact with different blockchains. These protocols are the foundation for building blockchain abstraction layers, allowing traditional backends and dApps to interact with any blockchain network through a single middleware solution. Without a blockchain interoperability protocol, Web2 systems and dApps would need to build separate in-house implementations for each cross-chain interaction that they want to use, which is a time-consuming, resource-intensive, and complex process. - -Blockchain interoperability protocols provide the following capabilities: - -- You can transfer assets and information across multiple blockchains. -- Application developers can leverage the strengths and benefits of different chains. -- Collaboration between developers from diverse blockchain ecosystems enables the building of cross-chain applications to serve more users and provide additional features or products for them. - -The _Chainlink Cross-Chain Interoperability Protocol (CCIP)_ provides these capabilities and enables a variety of [use cases](#common-use-cases). - -## What is Chainlink CCIP? - -Chainlink CCIP is a blockchain interoperability protocol that enables developers to build secure applications that can transfer tokens, messages (data), or both tokens and messages across chains. - -Given the [inherent risks of cross-chain interoperability](/resources/bridge-risks), CCIP features [defense-in-depth security](https://blog.chain.link/five-levels-cross-chain-security/#level_5__defense-in-depth) and is powered by Chainlink's industry-standard oracle networks which have a proven track record of securing tens of billions of dollars and enabling over $14 trillion in onchain transaction value. - -CCIP provides several key security benefits: - -- Multiple independent nodes run by independent key holders. -- Three decentralized networks all executing and verifying every cross-chain transaction. -- Separation of responsibilities, with distinct sets of node operators, and with no nodes shared between the transactional DONs and the [Risk Management Network](/ccip/concepts/architecture/key-concepts#risk-management-network). -- Increased decentralization with two separate code bases across two different implementations, written in two different languages to create a previously unseen diversity of software clients in the cross-chain world. -- Novel risk management system with [level-5 security](https://blog.chain.link/five-levels-cross-chain-security/#level_5__defense-in-depth) that can be rapidly adapted to any new risks or attacks that appear in cross-chain messaging. - - -To understand how Chainlink CCIP works, refer to the [architecture](/ccip/concepts/architecture) section. If you are new to using Chainlink CCIP, read these guides before you deploy any contracts that use CCIP. - -## Chainlink CCIP core capabilities - -Chainlink CCIP supports three main capabilities: - -### Arbitrary Messaging - -The ability to send arbitrary data (encoded as bytes) to a receiving smart contract on a different blockchain. The developer is free to encode any data they wish to send. - -Typically, developers use arbitrary messaging to trigger an informed action on the receiving smart contract, such as rebalancing an index, minting a specific NFT, or calling an arbitrary function with the sent data as custom parameters. Developers can encode multiple instructions in a single message, enabling them to orchestrate complex, multi-step, multi-chain tasks. + -### Token Transfer - -The ability to transfer tokens to an account on a different blockchain. This capability enables the seamless movement of assets across chains. - -### Programmable Token Transfer - -The ability to simultaneously transfer tokens and arbitrary data (encoded as bytes) within a single transaction. This mechanism allows users to transfer tokens and send instructions on what to do with those tokens. - -For example, a user could transfer tokens to a lending protocol with instructions to leverage those tokens as collateral for a loan, borrowing another asset to be sent back to the user. - -### Receiving account types - -With CCIP, you send transactions with data (arbitrary messaging), tokens, or both data and tokens (programmable token transfer). The receiver of a CCIP transaction varies by blockchain family: - -| CCIP capability | What is sent | Receiving account types | -| --------------------------- | --------------- | --------------------------------------------------------------------------------------- | -| Arbitrary Messaging | Data | EVM: Smart contracts only
SVM: Programs only | -| Token Transfer | Tokens | EVM: Smart contracts and EOAs
SVM: User wallets or program-controlled PDAs | -| Programmable Token Transfer | Data and tokens | EVM: Smart contracts only
SVM: Data to programs, tokens to program-controlled PDAs | - -**Note**: On EVM chains, EOAs cannot receive messages. On Solana (SVM), programs work with Program Derived Addresses (PDAs) to manage token reception. - -## Common use cases - -Chainlink CCIP enables a variety of use cases: - -- **Cross-chain lending:** Chainlink CCIP enables users to lend and borrow a wide range of crypto assets across multiple DeFi platforms running on independent chains. -- **Low-cost transaction computation:** Chainlink CCIP can help offload the computation of transaction data on cost-optimized chains. -- **Optimizing cross-chain yield:** Users can leverage Chainlink CCIP to move collateral to new DeFi protocols to maximize yield across chains. -- **Creating new kinds of dApps:** Chainlink CCIP enables users to take advantage of network effects on certain chains while harnessing compute and storage capabilities of other chains. - -Read [What Are Cross-Chain Smart Contracts](https://chain.link/education-hub/cross-chain-smart-contracts) to learn about cross-chain smart contracts and examples of use cases they enable. - -## CCIP Directory - -See the [CCIP Directory](/ccip/directory) page for a list of supported networks, tokens, and contract addresses. - -To learn about tokens, token pools, and the token onboarding process, see the [CCIP Architecture](/ccip/concepts/cross-chain-token/evm/token-pools) page. + + + + + diff --git a/src/layouts/DocsV3Layout/DocsV3Layout.astro b/src/layouts/DocsV3Layout/DocsV3Layout.astro index 98a6989283e..3e752a738af 100644 --- a/src/layouts/DocsV3Layout/DocsV3Layout.astro +++ b/src/layouts/DocsV3Layout/DocsV3Layout.astro @@ -6,21 +6,6 @@ import { BaseFrontmatter } from "~/content.config" import * as CONFIG from "~/config" import LeftSidebar from "~/components/LeftSidebar/LeftSidebar.astro" import PageContent from "~/components/PageContent/PageContent.astro" -import { TabGrid } from "~/components/TabGrid/TabGrid" - -import ToolsUtilitiesGrid from "~/components/ToolsUtilitiesGrid/ToolsUtilitiesGrid.astro" -import LayoutHero from "~/components/LayoutHero/LayoutHero.astro" -import ResourceSection from "~/components/Resource/ResourceSection.astro" -import MediaSection from "~/components/MediaSection/MediaSection.astro" -import QuickLinkCard from "~/components/QuickLinkCard/QuickLinkCard.astro" -import { - SvgBulletList, - SvgCrossChain, - SvgEyeOptic, - SvgStartup, - SvgTransactionRepeatRecurring, - SvgWaveSignal, -} from "@chainlink/blocks" interface Props { frontmatter: BaseFrontmatter @@ -42,214 +27,6 @@ const formattedContentTitle = `${frontmatter.title} | ${CONFIG.SITE.title}` const currentPage = new URL(Astro.request.url).pathname const includeLinkToWalletScript = !!Astro.props.frontmatter.metadata?.linkToWallet - -const toolsAndUtilities = [ - { - image: "ccip-logo.svg", - imageAlt: "CCIP API icon", - label: "CCIP API", - link: "/ccip/api", - description: "An API for message retrieval and lane latency information.", - }, - { - image: "js-logo.svg", - imageAlt: "JavaScript SDK icon", - label: "Javascript SDK", - link: "https://github.com/smartcontractkit/ccip-javascript-sdk", - description: "Integrate CCIP functionality directly into your web applications for EVM-compatible chains.", - }, - { - image: "ts-logo.svg", - imageAlt: "CLI icon", - label: "CLI", - link: "https://github.com/smartcontractkit/ccip-tools-ts", - description: "TypeScript command-line interface and library designed for interacting with deployed CCIP contracts.", - }, - { - image: "hardhat-logo.svg", - imageAlt: "Hardhat icon", - label: "Hardhat Starter Kit", - link: "https://github.com/smartcontractkit/hardhat-starter-kit", - description: - "Ready-to-go boilerplate for basic CCIP use cases that help you get started building quickly with Hardhat.", - }, - { - image: "foundry-logo.svg", - imageAlt: "Foundry icon", - label: "Foundry Starter Kit", - link: "https://github.com/smartcontractkit/foundry-starter-kit", - description: - "Ready-to-go boilerplate for basic CCIP use cases that help you get started building quickly with Foundry.", - }, - { - image: "npm-logo.png", - imageAlt: "NPM icon", - label: "CCIP Contracts NPM", - link: "https://www.npmjs.com/package/@chainlink/contracts-ccip", - description: - "An npm package providing Solidity smart contract implementations to integrate CCIP into your EVM-based project.", - }, - { - image: "direct-stacking-logo.svg", - imageAlt: "Direct Staking icon", - label: "Direct Staking", - link: "https://github.com/Aphyla/chainlink-csr", - description: - "Stake native tokens on supported L2 networks and receive liquid staked tokens directly on the same chain.", - }, -] -// Example resources data -const exampleResources = [ - { - label: "Token Pool Types", - description: - "Explore the various token pool types supported by the Cross-Chain Token (CCT) standard with Chainlink Labs. Explore the various token pool types supported by the Cross-Chain Token (CCT) standard with Chainlink Labs...", - link: "/resources/token-pool-types", - type: "article", - }, - { - label: "Token Pool Types", - description: - "Explore the various token pool types supported by the Cross-Chain Token (CCT) standard with Chainlink Labs. Explore the various token pool types supported by the Cross-Chain Token (CCT) standard with Chainlink Labs...", - link: "/resources/token-pool-types", - type: "article", - }, - { - label: "Token Pool Types", - description: - "Explore the various token pool types supported by the Cross-Chain Token (CCT) standard with Chainlink Labs. Explore the various token pool types supported by the Cross-Chain Token (CCT) standard with Chainlink Labs...", - link: "/resources/token-pool-types", - type: "article", - }, -] - -// Example tutorial data -const exampleTutorials = [ - { - name: "EVM", - links: [ - { - title: "Acquire Test Tokens", - description: "Get test tokens in minutes; build and test cross-chain apps with zero friction.", - link: "/tutorials/acquire-test-tokens", - }, - { - title: "Transfer Tokens", - description: "Unlock seamless token transfers from contracts; learn, code, and deploy.", - link: "/tutorials/transfer-tokens", - }, - { - title: "Transfer Tokens with Data", - description: "Go beyond basic transfers with logic-infused token movements in your EVM contracts.", - link: "/tutorials/transfer-tokens-data", - }, - { - title: "Using the Token Manager", - description: "Effortlessly manage CCTs by tracking, importing and organizing tokens from your dashboard.", - link: "/tutorials/token-manager", - }, - { - title: "Using the JS SDK", - description: "Integrate CCIP in your frontend or backend effortlessly with JavaScript SDK.", - link: "/tutorials/js-sdk", - }, - { - title: "Check Message Status", - description: "Retrieve real-time status of your offchain transaction from EVM.", - link: "/tutorials/check-message-status", - }, - { - title: "Transfer Tokens Between EOAs", - description: "Send tokens offchain from an Externally Owned Account with clear steps.", - link: "/tutorials/transfer-tokens-eoa", - }, - { - title: "Using the CLI", - description: "Use offchain tools from CCIP to simplify your Ethereum workflows.", - link: "/tutorials/cli", - }, - { - title: "Deploy and Register a CCT", - description: "Use RemixIDE to launch and configure tokens for cross-chain transfers on CCIP.", - link: "/tutorials/deploy-register-cct", - }, - { - title: "Register CCT Burn & Mint EOA", - description: "Implement burn-mint cross-chain token logic with CCIP using Hardhat or Foundry.", - link: "/tutorials/register-cct-burn-mint", - }, - { - title: "Register CCT Lock & Mint EOA", - description: "Implement a lock-mint token registration workflow with CCIP and Hardhat or Foundry.", - link: "/tutorials/register-cct-lock-mint", - }, - { - title: "Set Token Pool Rate Limits", - description: "Update rate limiter settings for your cross-chain tokens using Hardhat or Foundry.", - link: "/tutorials/token-pool-rate-limits", - }, - ], - }, - { - name: "Solana", - links: [ - { - title: "Getting Started with Solana", - description: "Learn the basics of building on Solana blockchain.", - link: "/tutorials/solana-getting-started", - }, - { - title: "Solana Token Transfers", - description: "Transfer tokens on the Solana blockchain.", - link: "/tutorials/solana-transfers", - }, - ], - }, - { - name: "Aptos", - links: [ - { - title: "Getting Started with Aptos", - description: "Start building on the Aptos blockchain.", - link: "/tutorials/aptos-getting-started", - }, - ], - }, -] - -// Quick links data -const quickLinks = [ - { - icon: SvgEyeOptic, - label: "View Network Configs", - link: "https://docs.chain.link/ccip/directory/mainnet", - }, - { - icon: SvgTransactionRepeatRecurring, - label: "Check Transaction Status", - link: "https://ccip.chain.link/", - }, - { - icon: SvgWaveSignal, - label: "View Lane Status", - link: "https://ccip.chain.link/status", - }, - { - icon: SvgStartup, - label: "Get Testnet Tokens", - link: "https://tokenmanager.chain.link/", - }, - { - icon: SvgCrossChain, - label: "Convert Chainlink tokens", - link: "https://www.transporter.io/", - }, - { - icon: SvgBulletList, - label: "View the Changelog", - link: "https://dev.chain.link/changelog?product=CCIP", - }, -] --- @@ -262,27 +39,11 @@ const quickLinks = [
- - - - - - - - - +
diff --git a/src/pages/index.astro b/src/pages/index.astro index dabe7c18616..0c9d1812721 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -64,7 +64,6 @@ const sample: ICard[] = [

Chainlink Developer Docs

What are you building?

-
From 12ac1c0ad7501ac5c32f2549596945fda145a291 Mon Sep 17 00:00:00 2001 From: Tyrel Chambers Date: Mon, 3 Nov 2025 06:41:39 -0500 Subject: [PATCH 24/37] Feat/115 mobile components (#119) * RWD layout hero * RWD cards and tutorials * improve mobile spacing * fix tab trigger jump --- src/components/Cards/cards.module.css | 4 +- .../LayoutHero/LayoutHero.module.css | 37 +++++++++++++- src/components/OverviewWrapper.astro | 20 ++++++++ .../QuickLinkCard/QuickLinkCard.module.css | 3 -- .../Resource/ResourceSection.module.css | 7 ++- src/components/TabGrid/TabGrid.module.css | 27 ++++++++-- .../toolsUtilities.module.css | 9 ++-- src/content/ccip/index.mdx | 24 +++++---- src/layouts/DocsV3Layout/DocsV3Layout.astro | 6 +++ src/pages/index.astro | 51 ------------------- 10 files changed, 113 insertions(+), 75 deletions(-) create mode 100644 src/components/OverviewWrapper.astro diff --git a/src/components/Cards/cards.module.css b/src/components/Cards/cards.module.css index ea602f47b0b..db4e076ab55 100644 --- a/src/components/Cards/cards.module.css +++ b/src/components/Cards/cards.module.css @@ -3,7 +3,6 @@ grid-template-columns: repeat(3, 1fr); border-left: 1px solid var(--border); border-top: 1px solid var(--border); - margin: 56px 0; } .cardsWrapper h6 { @@ -59,8 +58,9 @@ } } -@media screen and (max-width: 425px) { +@media screen and (max-width: 600px) { .cardsWrapper { grid-template-columns: repeat(1, 1fr) !important; + margin-top: 0; } } diff --git a/src/components/LayoutHero/LayoutHero.module.css b/src/components/LayoutHero/LayoutHero.module.css index 56f1b8ce711..08edb61ed40 100644 --- a/src/components/LayoutHero/LayoutHero.module.css +++ b/src/components/LayoutHero/LayoutHero.module.css @@ -46,7 +46,7 @@ .heroButtons { display: flex; - flex-wrap: wrap; + gap: var(--space-4x); margin-top: var(--space-8x); } @@ -62,3 +62,38 @@ max-width: 100%; height: auto; } + +@media screen and (max-width: 425px) { + .layoutHero { + height: auto; + padding: var(--space-8x) 0; + } +} + +/* lesser values cause overlapping of elements */ +@media screen and (max-width: 1400px) { + .layoutHero { + border: none; + background-color: transparent; + } + .heroImage, + .heroBackgroundImg { + display: none; + } + + .heroContent { + padding-left: 0; + } + + .heroButtons { + margin-top: var(--space-6x); + } + + .heroButtons a { + width: fit-content; + } + + .heroTitle { + font-size: 40px; + } +} diff --git a/src/components/OverviewWrapper.astro b/src/components/OverviewWrapper.astro new file mode 100644 index 00000000000..e3eaef0fa90 --- /dev/null +++ b/src/components/OverviewWrapper.astro @@ -0,0 +1,20 @@ +
+ +
+ + diff --git a/src/components/QuickLinkCard/QuickLinkCard.module.css b/src/components/QuickLinkCard/QuickLinkCard.module.css index cfb8562b389..f514f3a06a0 100644 --- a/src/components/QuickLinkCard/QuickLinkCard.module.css +++ b/src/components/QuickLinkCard/QuickLinkCard.module.css @@ -1,6 +1,3 @@ -.container { - margin: var(--space-6x) 0; -} .srOnly { position: absolute; width: 1px; diff --git a/src/components/Resource/ResourceSection.module.css b/src/components/Resource/ResourceSection.module.css index 13896ba6e6c..434df633c45 100644 --- a/src/components/Resource/ResourceSection.module.css +++ b/src/components/Resource/ResourceSection.module.css @@ -2,5 +2,10 @@ display: flex; flex-direction: column; gap: var(--space-8x); - margin: 56px 0; +} + +@media screen and (max-width: 425px) { + .section { + gap: var(--space-6x); + } } diff --git a/src/components/TabGrid/TabGrid.module.css b/src/components/TabGrid/TabGrid.module.css index 8b0df827fee..86fcc0aaa87 100644 --- a/src/components/TabGrid/TabGrid.module.css +++ b/src/components/TabGrid/TabGrid.module.css @@ -1,9 +1,7 @@ -.tabGridWrapper { - margin: 56px 0; -} .grid { display: grid; border-left: 1px solid var(--border); + margin-top: 36px 0; } .gridHeader { @@ -30,6 +28,7 @@ .tabsTrigger[data-state="active"] { background-color: var(--pill-active); border-color: var(--pill-active); + border-bottom: 1px solid var(--pill-active); & h3 { color: var(--pill-active-foreground); @@ -60,4 +59,26 @@ .grid { grid-template-columns: 1fr !important; } + + .gridHeader > h2 { + font-size: 28px; + } +} + +@media screen and (max-width: 425px) { + .gridSection { + margin-top: 0; + } + + .gridHeader { + margin-bottom: var(--space-6x); + } +} + +@media screen and (max-width: 390px) { + .gridHeader { + flex-direction: column; + align-items: start; + gap: var(--space-2x); + } } diff --git a/src/components/ToolsUtilitiesGrid/toolsUtilities.module.css b/src/components/ToolsUtilitiesGrid/toolsUtilities.module.css index 88bdd481d95..c1e36191486 100644 --- a/src/components/ToolsUtilitiesGrid/toolsUtilities.module.css +++ b/src/components/ToolsUtilitiesGrid/toolsUtilities.module.css @@ -1,6 +1,3 @@ -.wrapper { - margin: 56px 0; -} .container { display: grid; grid-template-columns: repeat(3, 1fr); @@ -55,3 +52,9 @@ grid-template-columns: repeat(1, 1fr); } } + +@media screen and (max-width: 425px) { + .container { + margin-top: var(--space-6x); + } +} diff --git a/src/content/ccip/index.mdx b/src/content/ccip/index.mdx index da23f249706..8982eb282a1 100644 --- a/src/content/ccip/index.mdx +++ b/src/content/ccip/index.mdx @@ -19,6 +19,7 @@ import QuickLinkCard from "@components/QuickLinkCard/QuickLinkCard.astro" import ToolsUtilitiesGrid from "@components/ToolsUtilitiesGrid/ToolsUtilitiesGrid.astro" import MediaSection from "@components/MediaSection/MediaSection.astro" import CardsWrapper from "@components/Cards/CardsWrapper.astro" +import OverviewWrapper from "@components/OverviewWrapper.astro" import { SvgEyeOptic, SvgTransactionRepeatRecurring, @@ -293,14 +294,15 @@ export const cardLinks = [ image="/images/ccip/ccip-hero.png" /> - - - - - - - + + + + + + + + diff --git a/src/layouts/DocsV3Layout/DocsV3Layout.astro b/src/layouts/DocsV3Layout/DocsV3Layout.astro index 3e752a738af..05aa3478a5e 100644 --- a/src/layouts/DocsV3Layout/DocsV3Layout.astro +++ b/src/layouts/DocsV3Layout/DocsV3Layout.astro @@ -76,6 +76,12 @@ const includeLinkToWalletScript = !!Astro.props.frontmatter.metadata?.linkToWall min-width: 0; } + @media screen and (max-width: 768px) { + #grid-main { + padding: 0 var(--space-12x) var(--doc-padding) var(--space-12x); + } + } + @media (min-width: 50em) { main { display: grid; diff --git a/src/pages/index.astro b/src/pages/index.astro index 0c9d1812721..3cdc6ebef20 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -3,59 +3,8 @@ import ProductTabs from "../features/landing/sections/ProductTabs.astro" import BaseLayout from "~/layouts/BaseLayout.astro" import * as CONFIG from "../config" -import CardsWrapper from "~/components/Cards/CardsWrapper.astro" -import type { ICard } from "~/components/Cards/types" const formattedContentTitle = `${CONFIG.PAGE.titleFallback} | ${CONFIG.SITE.title}` - -const sample: ICard[] = [ - { - title: "Deploy/enable a token across multiple chains", - description: - "Create a new Cross-Chain-Token or enable an established one that can be launched on 50+ chains, providing unparalleled interoperability and reach.", - links: [ - { - icon: "token", - href: "https://example.com", - label: "View Token Manager", - }, - { - icon: "remix", - href: "https://example.com", - label: "Open in Remix", - }, - ], - }, - { - title: "Bridge a token", - description: - "Securely transfer tokens - including ETH, USDC, LINK - and messages between different blockchain networks.", - links: [ - { - icon: "token", - href: "https://example.com", - label: "View Token Manager", - }, - { - icon: "remix", - href: "https://example.com", - label: "Open in Remix", - }, - ], - }, - { - title: "Send a token with data", - description: - "Build token transfers that do more than move value, letting you embed business logic directly into your cross-chain workflows.", - links: [ - { - icon: "remix", - href: "https://example.com", - label: "Open in Remix", - }, - ], - }, -] --- From 0f7f145b8d38109a884129312f84a8816df86e84 Mon Sep 17 00:00:00 2001 From: Tyrel Chambers Date: Mon, 3 Nov 2025 07:01:37 -0500 Subject: [PATCH 25/37] Add chainlink journey (#133) * add journey cards * move components --------- Co-authored-by: Simone Cuomo --- .../JourneyCards/JourneyCards.astro | 211 ++++++++++++++++++ src/pages/index.astro | 67 ++++-- 2 files changed, 255 insertions(+), 23 deletions(-) create mode 100644 src/components/JourneyCards/JourneyCards.astro diff --git a/src/components/JourneyCards/JourneyCards.astro b/src/components/JourneyCards/JourneyCards.astro new file mode 100644 index 00000000000..77735771660 --- /dev/null +++ b/src/components/JourneyCards/JourneyCards.astro @@ -0,0 +1,211 @@ +--- +import { Tag, Typography } from "@chainlink/blocks" + +const columns = [ + { + title: "Learn & Explore", + items: [ + { + title: "Explore Cross-Chain Interoperability with CCIP", + description: "Learn cross-chain concepts, workflows, and real-world use cases.", + badge: "CCIP", + href: "/", + }, + { + title: "Understand How Data Feeds Power dApps", + description: "See how oracle data feeds deliver price feeds and reference data.", + badge: "DATA FEEDS", + href: "/", + }, + { + title: "Learn How Data Streams Deliver Real-Time Data", + description: "Understand how low-latency streams support time-sensitive applications.", + badge: "CCIP", + href: "/", + }, + { + title: "Discover Off-Chain Compute with Functions", + description: "Learn how Functions connect smart contracts to APIs and custom logic.", + badge: "DATA FEEDS", + href: "/", + }, + ], + }, + { + title: "Build & Integrate", + items: [ + { + title: "Build Cross-Chain Apps with CCIP Tutorials", + description: "Follow step-by-step guides with language switching (EVM, Rust, Move, etc.).", + badge: "CCIP", + href: "/", + }, + { + title: "Integrate Data Feeds into Smart Contracts", + description: "Plug feeds into your apps with examples and addresses.", + badge: "DATA FEEDS", + href: "/", + }, + { + title: "Implement Real-Time Use Cases with Data Streams", + description: "Use low-latency data in trading, gaming, and other live applications.", + badge: "CCIP", + href: "/", + }, + { + title: "Connect Contracts to APIs with Functions", + description: "Add external data and custom logic to your dApps.", + badge: "DATA FEEDS", + href: "/", + }, + ], + }, + { + title: "Operate & Scale", + items: [ + { + title: "Monitor CCIP Transactions in Real Time", + description: "Track the progress and status of cross-chain transactions.", + badge: "CCIP", + href: "/", + }, + { + title: "Stay Up to Date with Data Feeds", + description: "Rely on changelogs and schema updates for accuracy.", + badge: "DATA FEEDS", + href: "/", + }, + { + title: "Deliver Reliable Low-Latency Data with Streams", + description: "Operate Data Streams at scale for critical, time-sensitive use cases.", + badge: "CCIP", + href: "/", + }, + { + title: "Scale and Optimize Functions", + description: "Debug, manage workloads, and grow your applications.", + badge: "DATA FEEDS", + href: "/", + }, + ], + }, +] +--- + +
+ { + columns.map((column) => ( +
+
+ + {column.title} + +
+ {column.items.map((item) => ( + +
+ {item.title} + + {item.description} + +
+ +
+ + {item.badge} + + +
+
+ ))} +
+ )) + } +
+ + diff --git a/src/pages/index.astro b/src/pages/index.astro index 3cdc6ebef20..4e798f8a2fc 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -1,8 +1,10 @@ --- import ProductTabs from "../features/landing/sections/ProductTabs.astro" +import JourneyCards from "~/components/JourneyCards/JourneyCards.astro" import BaseLayout from "~/layouts/BaseLayout.astro" import * as CONFIG from "../config" +import { Typography } from "@chainlink/blocks" const formattedContentTitle = `${CONFIG.PAGE.titleFallback} | ${CONFIG.SITE.title}` --- @@ -17,18 +19,26 @@ const formattedContentTitle = `${CONFIG.PAGE.titleFallback} | ${CONFIG.SITE.titl
-
+ + + +