diff --git a/platform/docs/docs/migration-guide/3p10-to-3p11/index.md b/platform/docs/docs/migration-guide/3p10-to-3p11/index.md index 90c2dfc5bb7..5001f9f6409 100644 --- a/platform/docs/docs/migration-guide/3p10-to-3p11/index.md +++ b/platform/docs/docs/migration-guide/3p10-to-3p11/index.md @@ -6,10 +6,9 @@ title: 3.10 to 3.11 Migration Guide --- import DocCardList from '@theme/DocCardList'; -import {useCurrentSidebarCategory} from '@docusaurus/theme-common'; # 3.10 to 3.11 Migration Guide Here you can find the migration guides for upgrading from OHIF version 3.10 to version 3.11. - item.docId !== 'migration-guide/3p10-to-3p11/index')}/> + diff --git a/platform/docs/docs/migration-guide/3p12-to-3p13/colors.md b/platform/docs/docs/migration-guide/3p12-to-3p13/colors.md new file mode 100644 index 00000000000..f0f7f31dd2d --- /dev/null +++ b/platform/docs/docs/migration-guide/3p12-to-3p13/colors.md @@ -0,0 +1,99 @@ +--- +sidebar_position: 7 +sidebar_label: Color System +title: Color System Migration +summary: 3.13 continues the migration from legacy color classes to the ui-next semantic color system. This guide maps legacy color names to their ui-next equivalents and shows common text, background, and border replacements. +--- + +# Color System Migration + +This guide covers migrating from legacy color classes to the new ui-next color system. + +## Current State (3.13+) + +The OHIF Viewer is now built entirely with ui-next components, which use the [new color system](/colors-and-theming). The legacy components in `platform/ui` remain on the old color system. For reference, the table below maps the legacy colors to their ui-next equivalents. + +## Color Mapping Reference + +| Legacy Color | Updated color (ui-next) | +| ----------------- | ----------------------- | +| `bkg-low` | `background` | +| `common-bright` | `foreground` (various) | +| `primary-light` | `highlight` | +| `inputfield-main` | `input` | +| `secondary-light` | `input` | +| `primary-dark` | `muted` | +| `bkg-med` | `muted` | +| `aqua-pale` | `muted-foreground` | +| `secondary-dark` | `popover` | +| `primary-active` | `primary` | +| `actions-primary` | `primary` | +| `secondary-main` | | +| `primary-main` | | +| `common-dark` | | +| `customblue` | | + +> **Note:** The legacy variables left blank in the table above (`secondary-main`, `primary-main`, `common-dark`, and `customblue`) have no direct ui-next equivalent. If your code uses any of these, replace them case by case, choosing the semantic token that best fits how the color is used in each component. + +## Generic Color Migrations + +Avoid using generic color values. Use semantic colors instead: + +| Generic Color | Semantic Replacement | +| ---------------------------- | ----------------------- | +| `white` | `foreground` | +| `blue-*` (e.g., `blue-500`) | `primary` or `highlight`| +| `gray-*` (e.g., `gray-800`) | `muted` or `popover` | +| `red-*` | `destructive` | + +> **Note:** `black` is still used in certain cases to replace default browser backgrounds and to match imaging backgrounds. + +## Common Migrations + +### Text Colors + +```diff +- text-white ++ text-foreground + +- text-primary-light ++ text-highlight + +- text-primary-active ++ text-primary + +- text-secondary-light ++ text-muted-foreground +``` + +### Background Colors + +```diff +- bg-primary-dark ++ bg-muted + +- bg-secondary-dark ++ bg-popover + +- bg-black ++ bg-background +``` + +### Border Colors + +```diff +- border-secondary-light ++ border-input + +- border-primary-light ++ border-highlight + +- border-primary-dark ++ border-muted +``` + +## Important Notes + +- Legacy colors without a mapping (empty cells) should be evaluated on a case-by-case basis +- The new color system uses CSS variables, enabling future theme support +- When migrating, test components visually to ensure proper contrast and accessibility diff --git a/platform/docs/docs/migration-guide/3p12-to-3p13/index.md b/platform/docs/docs/migration-guide/3p12-to-3p13/index.md index b4b32711503..3bf5b80cd6e 100644 --- a/platform/docs/docs/migration-guide/3p12-to-3p13/index.md +++ b/platform/docs/docs/migration-guide/3p12-to-3p13/index.md @@ -6,7 +6,6 @@ title: 3.12 to 3.13 Migration Guide --- import DocCardList from '@theme/DocCardList'; -import { useCurrentSidebarCategory } from '@docusaurus/theme-common'; # 3.12 to 3.13 Migration Guide @@ -25,4 +24,4 @@ The largest changes in 3.13 are infrastructure-level: - **[SegmentationService](./segmentation-service.md)** — the `removeSegmentationRepresentations` method was renamed. - item.docId !== 'migration-guide/3p12-to-3p13/index')} /> + diff --git a/platform/docs/docs/migration-guide/3p8-to-3p9/1-segmentation/index.md b/platform/docs/docs/migration-guide/3p8-to-3p9/1-segmentation/index.md index b6fa29f88b4..62b3f920585 100644 --- a/platform/docs/docs/migration-guide/3p8-to-3p9/1-segmentation/index.md +++ b/platform/docs/docs/migration-guide/3p8-to-3p9/1-segmentation/index.md @@ -6,7 +6,6 @@ summary: Migration guide for segmentation architecture changes in OHIF 3.9, cove --- import DocCardList from '@theme/DocCardList'; -import {useCurrentSidebarCategory} from '@docusaurus/theme-common'; :::info This migration involves significant architectural changes to the segmentation system. While we typically aim for incremental updates, the shift from a tool group-centric to a viewport-centric architecture was necessary to support OHIF 3.9's advanced visualization capabilities, and more flexible segmentation handling. @@ -15,4 +14,4 @@ Don't worry - we'll guide you through each change step by step! ::: - + diff --git a/platform/docs/docs/migration-guide/3p8-to-3p9/index.md b/platform/docs/docs/migration-guide/3p8-to-3p9/index.md index c6f3393c379..ca6936af20a 100644 --- a/platform/docs/docs/migration-guide/3p8-to-3p9/index.md +++ b/platform/docs/docs/migration-guide/3p8-to-3p9/index.md @@ -7,8 +7,7 @@ summary: Migration guide for upgrading from OHIF 3.8 to 3.9, covering segmentati import DocCardList from '@theme/DocCardList'; -import {useCurrentSidebarCategory} from '@docusaurus/theme-common'; ## Migration Guide Sections - + diff --git a/platform/docs/docs/migration-guide/3p9-to-3p10/3-UI/1a-Colors.md b/platform/docs/docs/migration-guide/3p9-to-3p10/3-UI/1a-Colors.md index 14b7313b48d..e2b6664d6a9 100644 --- a/platform/docs/docs/migration-guide/3p9-to-3p10/3-UI/1a-Colors.md +++ b/platform/docs/docs/migration-guide/3p9-to-3p10/3-UI/1a-Colors.md @@ -12,7 +12,7 @@ summary: Migration guide for OHIF 3.10's new color system, explaining the transi * **Component Abstraction:** Some styling, especially for interactive elements like buttons, has been abstracted into components (e.g., `ViewportActionButton`, UI library buttons) which use predefined variants (`default`, `secondary`, `ghost`) instead of manual style combinations. :::note -You can look at the set of colors in the [Color System](/colors-and-type) +You can look at the set of colors in the [Color System](/colors-and-theming) ::: diff --git a/platform/docs/docs/migration-guide/3p9-to-3p10/3-UI/3-Migration-3p10-Input.md b/platform/docs/docs/migration-guide/3p9-to-3p10/3-UI/3-Migration-3p10-Input.md index a2b2e57aa92..fab5b1bbc6c 100644 --- a/platform/docs/docs/migration-guide/3p9-to-3p10/3-UI/3-Migration-3p10-Input.md +++ b/platform/docs/docs/migration-guide/3p9-to-3p10/3-UI/3-Migration-3p10-Input.md @@ -13,7 +13,7 @@ This guide explains how to migrate from the existing `Input`, `InputNumber`, `In ## Why Migrate? - See the full list of components in the [Numeric Component Showcase](/components-list#numeric) + See the full list of components in the [Numeric Component](/components/numeric) The old components relied heavily on props, making them complex and difficult to maintain and apply custom styles. The new `Numeric` component provides a structured approach with a context-based API, reducing prop clutter and improving reusability. diff --git a/platform/docs/docs/migration-guide/index.md b/platform/docs/docs/migration-guide/index.md index a293b5cf442..e21738b62f6 100644 --- a/platform/docs/docs/migration-guide/index.md +++ b/platform/docs/docs/migration-guide/index.md @@ -6,10 +6,9 @@ summary: Introduction to OHIF migration guides covering the upgrade paths betwee import DocCardList from '@theme/DocCardList'; -import {useCurrentSidebarCategory} from '@docusaurus/theme-common'; # Migration Guides Based on the version you are migrating from, you can find the migration guide for the latest version of the platform. - + diff --git a/platform/docs/docusaurus.config.js b/platform/docs/docusaurus.config.js index 38332df7ed7..ebd1d91036f 100644 --- a/platform/docs/docusaurus.config.js +++ b/platform/docs/docusaurus.config.js @@ -1,6 +1,10 @@ // read this text file const fs = require('fs'); -const versions = fs.readFileSync('../../version.txt', 'utf8').split('\n'); +const rawVersion = fs.readFileSync('../../version.txt', 'utf8').trim(); +const [major, minor] = rawVersion.split('.'); +const versionLabel = rawVersion.includes('beta') + ? `${major}.${minor} Beta` + : `${major}.${minor}`; const ArchivedVersionsDropdownItems = [ { @@ -35,7 +39,11 @@ const baseUrl = process.env.BASE_URL || '/'; /** @type {import('@docusaurus/types').DocusaurusConfig} */ module.exports = { future: { - experimental_faster: true, + faster: true, + v4: { + removeLegacyPostBuildHeadAttribute: true, + useCssCascadeLayers: true, + }, }, title: 'OHIF', tagline: 'Open-source web-based medical imaging platform', @@ -49,7 +57,11 @@ module.exports = { locales: ['en'], }, onBrokenLinks: 'throw', - onBrokenMarkdownLinks: 'throw', + markdown: { + hooks: { + onBrokenMarkdownLinks: 'throw', + }, + }, favicon: 'img/favicon.ico', themes: ['@docusaurus/theme-live-codeblock'], plugins: [ @@ -97,7 +109,7 @@ module.exports = { // : undefined, versions: { current: { - label: `${versions} (Latest)`, + label: `${versionLabel} (Latest)`, }, }, }, @@ -181,12 +193,6 @@ module.exports = { label: 'Help', position: 'left', }, - { - to: '/migration-guide/3p10-to-3p11/', - //activeBaseRegex: '(^/help$)|(/help)', - label: '3.11 Migration Guides', - position: 'left', - }, { type: 'docsVersionDropdown', position: 'right', @@ -229,78 +235,7 @@ module.exports = { }, footer: { style: 'dark', - links: [ - { - title: ' ', - items: [ - { - // This doesn't show up on dev for some reason, but displays in build - html: ` - - - - `, - }, - ], - }, - { - title: 'Learn', - items: [ - { - label: 'Introduction', - to: '/', - }, - { - label: 'Getting Started', - to: 'development/getting-started', - }, - { - label: 'FAQ', - to: '/faq', - }, - { - label: 'Resources', - to: '/resources', - }, - ], - }, - { - title: 'Community', - items: [ - { - label: 'Discussion board', - href: 'https://community.ohif.org/', - }, - { - label: 'Help', - to: '/help', - }, - ], - }, - { - title: 'More', - items: [ - { - label: 'Donate', - href: 'https://giving.massgeneral.org/ohif', - }, - { - label: 'GitHub', - href: 'https://github.com/OHIF/Viewers', - }, - { - label: 'Twitter', - href: 'https://twitter.com/OHIFviewer', - }, - ], - }, - ], - logo: { - alt: 'OHIF ', - src: 'img/netlify-color-accent.svg', - href: 'https://viewer.ohif.org/', - }, - copyright: `OHIF is open source software released under the MIT license.`, + links: [], }, }), }; diff --git a/platform/docs/package.json b/platform/docs/package.json index c906eca090a..033fd06b5c8 100644 --- a/platform/docs/package.json +++ b/platform/docs/package.json @@ -22,19 +22,19 @@ "write-heading-ids": "docusaurus write-heading-ids" }, "dependencies": { - "@docusaurus/core": "3.7.0", - "@docusaurus/faster": "3.7.0", - "@docusaurus/module-type-aliases": "3.7.0", - "@docusaurus/plugin-client-redirects": "3.7.0", - "@docusaurus/plugin-google-gtag": "3.7.0", - "@docusaurus/plugin-ideal-image": "3.7.0", - "@docusaurus/plugin-pwa": "3.7.0", - "@docusaurus/preset-classic": "3.7.0", - "@docusaurus/remark-plugin-npm2yarn": "3.7.0", - "@docusaurus/theme-classic": "3.7.0", - "@docusaurus/theme-live-codeblock": "3.7.0", - "@docusaurus/tsconfig": "3.0.0", - "@docusaurus/types": "3.0.0", + "@docusaurus/core": "3.10.1", + "@docusaurus/faster": "3.10.1", + "@docusaurus/module-type-aliases": "3.10.1", + "@docusaurus/plugin-client-redirects": "3.10.1", + "@docusaurus/plugin-google-gtag": "3.10.1", + "@docusaurus/plugin-ideal-image": "3.10.1", + "@docusaurus/plugin-pwa": "3.10.1", + "@docusaurus/preset-classic": "3.10.1", + "@docusaurus/remark-plugin-npm2yarn": "3.10.1", + "@docusaurus/theme-classic": "3.10.1", + "@docusaurus/theme-live-codeblock": "3.10.1", + "@docusaurus/tsconfig": "3.10.1", + "@docusaurus/types": "3.10.1", "@mdx-js/react": "3.0.1", "@radix-ui/react-accordion": "1.2.11", "@radix-ui/react-checkbox": "1.3.2", @@ -81,6 +81,7 @@ "tailwind-merge": "2.6.0", "tailwindcss": "3.2.4", "tailwindcss-animate": "1.0.7", + "tailwindcss-scoped-preflight": "3.5.9", "typescript": "5.5.4", "url-loader": "4.1.1" }, diff --git a/platform/docs/src/css/custom.css b/platform/docs/src/css/custom.css index 477fabe9aa7..288f860c3f5 100644 --- a/platform/docs/src/css/custom.css +++ b/platform/docs/src/css/custom.css @@ -10,15 +10,17 @@ :root { --highlight: 191 74% 63%; --neutral: 213 22% 59%; - --background: 236 62% 5%; + --neutral-light: 214 69% 81%; + --neutral-dark: 214 16% 21%; + --background: 0 0% 0%; --foreground: 0 0% 98%; - --card: 236 62% 5%; + --card: 234 64% 10%; --card-foreground: 0 0% 98%; --popover: 219 90% 15%; --popover-foreground: 0 0% 98%; --primary: 214 98% 60%; --primary-foreground: 0 0% 98%; - --secondary: 214 66% 48%; + --secondary: 214 65% 36%; --secondary-foreground: 200 50% 84%; --muted: 234 64% 10%; --muted-foreground: 200 46% 65%; @@ -35,167 +37,24 @@ --chart-4: 280 65% 60%; --chart-5: 340 75% 55%; --radius: 0.5rem; + --success-bg: hsl(143, 85%, 96%); + --success-border: hsl(145, 92%, 91%); + --success-text: hsl(140, 100%, 27%); + --info-bg: hsl(208, 100%, 97%); + --info-border: hsl(221, 91%, 91%); + --info-text: hsl(210, 92%, 45%); + --warning-bg: hsl(49, 100%, 97%); + --warning-border: hsl(49, 91%, 91%); + --warning-text: hsl(31, 92%, 45%); + --error-bg: hsl(359, 100%, 97%); + --error-border: hsl(359, 100%, 94%); + --error-text: hsl(360, 100%, 45%); --badge-new-color: hsl(var(--primary-foreground)); --badge-new-background: linear-gradient(135deg, hsl(var(--highlight)), hsl(var(--primary))); --badge-latest-stable-color: hsl(var(--primary)); } - - .dark { - --background: 0 0% 3.9%; - --foreground: 0 0% 98%; - --card: 0 0% 3.9%; - --card-foreground: 0 0% 98%; - --popover: 0 0% 3.9%; - --popover-foreground: 0 0% 98%; - --primary: 214 98% 60%; - --primary-foreground: 0 0% 98%; - --secondary: 0 0% 14.9%; - --secondary-foreground: 0 0% 98%; - --muted: 0 0% 14.9%; - --muted-foreground: 0 0% 63.9%; - --accent: 0 0% 14.9%; - --accent-foreground: 0 0% 98%; - --destructive: 0 62.8% 30.6%; - --destructive-foreground: 0 0% 98%; - --border: 0 0% 14.9%; - --input: 236 52% 30%; - --ring: 214 98% 60%; - --chart-1: 220 70% 50%; - --chart-2: 160 60% 45%; - --chart-3: 30 80% 55%; - --chart-4: 280 65% 60%; - --chart-5: 340 75% 55%; - --badge-new-color: hsl(var(--primary-foreground)); - --badge-new-background: linear-gradient(135deg, hsl(var(--highlight)), hsl(var(--primary))); - --badge-latest-stable-color: hsl(var(--primary)); - } -} - -/* ORIGINAL THEME for comparison and testing - -@layer base { - :root { - --background: 0 0% 100%; - --foreground: 240 10% 3.9%; - --card: 0 0% 100%; - --card-foreground: 240 10% 3.9%; - --popover: 0 0% 100%; - --popover-foreground: 240 10% 3.9%; - --primary: 240 5.9% 10%; - --primary-foreground: 0 0% 98%; - --secondary: 240 4.8% 95.9%; - --secondary-foreground: 240 5.9% 10%; - --muted: 240 4.8% 95.9%; - --muted-foreground: 240 3.8% 46.1%; - --accent: 240 4.8% 95.9%; - --accent-foreground: 240 5.9% 10%; - --destructive: 0 72.22% 50.59%; - --destructive-foreground: 0 0% 98%; - --border: 240 5.9% 90%; - --input: 240 5.9% 90%; - --ring: 240 5% 64.9%; - --radius: 0.5rem; - - --chart-1: 12 76% 61%; - --chart-2: 173 58% 39%; - --chart-3: 197 37% 24%; - --chart-4: 43 74% 66%; - --chart-5: 27 87% 67%; - } - - - .dark { - --background: 240 10% 3.9%; - --foreground: 0 0% 98%; - --card: 240 10% 3.9%; - --card-foreground: 0 0% 98%; - --popover: 240 10% 3.9%; - --popover-foreground: 0 0% 98%; - --primary: 0 0% 98%; - --primary-foreground: 240 5.9% 10%; - --secondary: 240 3.7% 15.9%; - --secondary-foreground: 0 0% 98%; - --muted: 240 3.7% 15.9%; - --muted-foreground: 240 5% 64.9%; - --accent: 240 3.7% 15.9%; - --accent-foreground: 0 0% 98%; - --destructive: 0 62.8% 30.6%; - --destructive-foreground: 0 85.7% 97.3%; - --border: 240 3.7% 15.9%; - --input: 240 3.7% 15.9%; - --ring: 240 4.9% 83.9%; - - --chart-1: 220 70% 50%; - --chart-2: 160 60% 45%; - --chart-3: 30 80% 55%; - --chart-4: 280 65% 60%; - --chart-5: 340 75% 55%; - } -} - -*/ - -/* Theme Copy Example - -@layer base { - :root { - --background: 0 0% 100%; - --foreground: 224 71.4% 4.1%; - --card: 0 0% 100%; - --card-foreground: 224 71.4% 4.1%; - --popover: 0 0% 100%; - --popover-foreground: 224 71.4% 4.1%; - --primary: 262.1 83.3% 57.8%; - --primary-foreground: 210 20% 98%; - --secondary: 220 14.3% 95.9%; - --secondary-foreground: 220.9 39.3% 11%; - --muted: 220 14.3% 95.9%; - --muted-foreground: 220 8.9% 46.1%; - --accent: 220 14.3% 95.9%; - --accent-foreground: 220.9 39.3% 11%; - --destructive: 0 84.2% 60.2%; - --destructive-foreground: 210 20% 98%; - --border: 220 13% 91%; - --input: 220 13% 91%; - --ring: 262.1 83.3% 57.8%; - --radius: 0.5rem; - --chart-1: ; - --chart-2: ; - --chart-3: ; - --chart-4: ; - --chart-5: ; - } - - .dark { - --background: 224 71.4% 4.1%; - --foreground: 210 20% 98%; - --card: 224 71.4% 4.1%; - --card-foreground: 210 20% 98%; - --popover: 224 71.4% 4.1%; - --popover-foreground: 210 20% 98%; - --primary: 263.4 70% 50.4%; - --primary-foreground: 210 20% 98%; - --secondary: 215 27.9% 16.9%; - --secondary-foreground: 210 20% 98%; - --muted: 215 27.9% 16.9%; - --muted-foreground: 217.9 10.6% 64.9%; - --accent: 215 27.9% 16.9%; - --accent-foreground: 210 20% 98%; - --destructive: 0 62.8% 30.6%; - --destructive-foreground: 210 20% 98%; - --border: 215 27.9% 16.9%; - --input: 215 27.9% 16.9%; - --ring: 263.4 70% 50.4%; - --chart-1: ; - --chart-2: ; - --chart-3: ; - --chart-4: ; - --chart-5: ; - } } -*/ - h2.section-header { @apply py-4 text-2xl font-normal text-white; } @@ -348,31 +207,40 @@ body { font-family: 'Inter', sans-serif; } -h1, -h2, -h3, -h4, -h5 { +.markdown h1, +.markdown h2, +.markdown h3, +.markdown h4, +.markdown h5, +.theme-doc-markdown h1, +.theme-doc-markdown h2, +.theme-doc-markdown h3, +.theme-doc-markdown h4, +.theme-doc-markdown h5 { color: var(--ifm-color-primary); font-weight: 400; font-family: 'Inter', sans-serif; } -blockquote { +.markdown blockquote, +.theme-doc-markdown blockquote { border-left: 3px solid #4042af; } /* Temporary Type Size Changes */ -article header h1 { +.markdown article header h1, +.theme-doc-markdown article header h1 { font-size: 2.6rem !important; } -article h2 { +.markdown article h2, +.theme-doc-markdown article h2 { font-size: 1.85rem !important; } -article header h3 { +.markdown article header h3, +.theme-doc-markdown article header h3 { font-size: 1.5rem !important; } @@ -398,6 +266,17 @@ article header h3 { text-decoration: none; } +.mit-license-link { + color: rgba(255, 255, 255, 0.5) !important; + border-bottom: 1px solid rgba(255, 255, 255, 0.5); + text-decoration: none !important; +} + +.mit-license-link:hover { + color: rgba(255, 255, 255, 0.7) !important; + border-bottom-color: rgba(255, 255, 255, 0.7); +} + .menu { font-weight: 400; font-size: 0.9rem; @@ -483,21 +362,6 @@ html[data-theme='dark'] .docusaurus-highlight-code-line { display: none; } */ -/* Footer logo MGH */ - -@media (max-width: 1200px) { - #mgh-logo { - margin-right: 100px; - width: 300px; - } -} - -@media (max-width: 480px) { - #mgh-logo { - margin-right: 10px; - width: 300px; - } -} .dropdown-separator { margin: 0.3rem 0; @@ -561,45 +425,38 @@ div[class^='announcementBar_'] { align-items: center; } -/* add proper ui link styling */ -/* Bullet point styling */ -ul { +/* List styling — scoped to doc content areas only */ +.markdown ul, +.theme-doc-markdown ul { list-style-type: disc; padding-left: 1.5rem; margin: 1rem 0; } -ul li { +.markdown ul li, +.theme-doc-markdown ul li { margin-bottom: 0.5rem; } -ol { +.markdown ol, +.theme-doc-markdown ol { list-style-type: decimal; padding-left: 1.5rem; margin: 1rem 0; } -ol li { +.markdown ol li, +.theme-doc-markdown ol li { margin-bottom: 0.5rem; } -/* Nested bullet points */ -ul ul { +.markdown ul ul, +.theme-doc-markdown ul ul { list-style-type: circle; margin: 0.5rem 0; } -/* For documentation bullet points specifically */ -.markdown ul { - list-style-type: disc; - padding-left: 1.5rem; -} - -.markdown ul li { - margin-bottom: 0.5rem; -} - /* Markdown link styling */ .markdown a { color: #0066cc; @@ -621,6 +478,12 @@ html[data-theme='dark'] .markdown a:hover { color: #99ccff; } +/* Component sidebar — reset preflight borders that leak from .showcase-isolated */ +.component-sidebar, +.component-sidebar * { + border-width: 0; +} + /* Horizontal rule styling */ .markdown hr { height: 1px; @@ -723,6 +586,63 @@ a.dropdown__link[href='/3.9/migration-guide/3p8-to-3p9/']::after { margin-left: 4px; } -li:first-child { - margin-top: 0.5em; /* Adjust '1em' to your desired spacing */ +.markdown li:first-child, +.theme-doc-markdown li:first-child { + margin-top: 0.5em; +} + +/* Isolate component showcases from Infima/Docusaurus styles. + Requires v4.useCssCascadeLayers: true in docusaurus.config.js */ +.showcase-isolated:not(#a#b) { + &, + * { + @layer docusaurus.infima { + all: revert-layer; + } + } +} + +/* Extend isolation to the showcase demos' portal content. Radix and Sonner + render floating UI (Dialog, Popover, Select, DropdownMenu, Tooltip, toasts) + as direct body children — outside #__docusaurus and .showcase-isolated — so + it misses both the revert-layer and the scoped preflight. + + Scoped to the demos' OWN portal roots, NOT every body child: + - [data-radix-popper-content-wrapper] Popover, Combobox, DropdownMenu, + Select, Tooltip (all popper-based) + - .showcase-portal explicit hook on Dialog demo content + (Radix Dialog isn't popper-based) + - [data-sonner-toaster] Sonner toast container + This deliberately leaves third-party body portals (medium-zoom image overlay, + Algolia DocSearch modal) untouched, which the previous catch-all reset broke. + :where() keeps specificity at zero so Tailwind utility classes always win. */ +:where([data-radix-popper-content-wrapper], .showcase-portal, [data-sonner-toaster]) { + font-family: Inter, sans-serif; + + &, + * { + @layer docusaurus.infima { + all: revert-layer; + } + } +} + +:where([data-radix-popper-content-wrapper], .showcase-portal, [data-sonner-toaster]), +:where([data-radix-popper-content-wrapper], .showcase-portal, [data-sonner-toaster]) * { + box-sizing: border-box; + border-width: 0; + border-style: solid; + border-color: transparent; +} + +:where([data-radix-popper-content-wrapper], .showcase-portal, [data-sonner-toaster]) :where(button, input, select, textarea) { + font-family: inherit; + font-size: inherit; + font-weight: inherit; + line-height: inherit; + color: inherit; + margin: 0; + padding: 0; + background-color: transparent; + background-image: none; } diff --git a/platform/docs/src/pages/colors-and-theming.tsx b/platform/docs/src/pages/colors-and-theming.tsx new file mode 100644 index 00000000000..5ca8a4f0545 --- /dev/null +++ b/platform/docs/src/pages/colors-and-theming.tsx @@ -0,0 +1,994 @@ +import React, { useState } from 'react'; +import '../css/custom.css'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +const themes: Record = { + default: `--highlight: 191 74% 63%; +--neutral: 213 22% 59%; +--neutral-light: 214 69% 81%; +--neutral-dark: 214 16% 21%; +--background: 0 0% 0%; +--foreground: 0 0% 98%; +--card: 234 64% 10%; +--card-foreground: 0 0% 98%; +--popover: 219 90% 15%; +--popover-foreground: 0 0% 98%; +--primary: 214 98% 60%; +--primary-foreground: 0 0% 98%; +--secondary: 214 65% 36%; +--secondary-foreground: 200 50% 84%; +--muted: 234 64% 10%; +--muted-foreground: 200 46% 65%; +--accent: 217 79% 24%; +--accent-foreground: 0 0% 98%; +--destructive: 0 62.8% 30.6%; +--destructive-foreground: 0 0% 98%; +--border: 0 0% 14.9%; +--input: 236 52% 30%; +--ring: 214 98% 60%;`, + + orchid: `--highlight: 292 75% 62%; +--neutral: 270 18% 55%; +--neutral-light: 275 35% 75%; +--neutral-dark: 268 20% 24%; +--background: 270 45% 6%; +--foreground: 280 15% 96%; +--card: 268 40% 10%; +--card-foreground: 280 15% 96%; +--popover: 264 48% 13%; +--popover-foreground: 280 15% 96%; +--primary: 270 85% 65%; +--primary-foreground: 0 0% 98%; +--secondary: 268 45% 32%; +--secondary-foreground: 275 45% 88%; +--muted: 268 40% 10%; +--muted-foreground: 272 30% 60%; +--accent: 268 50% 20%; +--accent-foreground: 280 15% 96%; +--destructive: 0 65% 40%; +--destructive-foreground: 0 0% 98%; +--border: 268 30% 18%; +--input: 268 40% 25%; +--ring: 270 80% 60%;`, + + verdant: `--highlight: 152 79% 52%; +--neutral: 150 15% 52%; +--neutral-light: 145 30% 72%; +--neutral-dark: 155 18% 24%; +--background: 155 40% 5%; +--foreground: 140 15% 95%; +--card: 152 35% 9%; +--card-foreground: 140 15% 95%; +--popover: 167 65% 10%; +--popover-foreground: 140 15% 95%; +--primary: 152 75% 40%; +--primary-foreground: 155 50% 8%; +--secondary: 150 40% 26%; +--secondary-foreground: 145 40% 85%; +--muted: 152 35% 9%; +--muted-foreground: 148 25% 55%; +--accent: 150 45% 16%; +--accent-foreground: 140 15% 95%; +--destructive: 0 65% 38%; +--destructive-foreground: 0 0% 98%; +--border: 150 25% 16%; +--input: 150 35% 22%; +--ring: 152 75% 40%;`, + + arctic: `--highlight: 173 81% 52%; +--neutral: 185 20% 55%; +--neutral-light: 180 40% 78%; +--neutral-dark: 190 18% 22%; +--background: 0 0% 0%; +--foreground: 180 10% 97%; +--card: 203 39% 9%; +--card-foreground: 180 10% 97%; +--popover: 202 54% 11%; +--popover-foreground: 180 10% 97%; +--primary: 175 85% 42%; +--primary-foreground: 185 50% 8%; +--secondary: 180 45% 28%; +--secondary-foreground: 175 50% 88%; +--muted: 203 39% 9%; +--muted-foreground: 185 30% 60%; +--accent: 185 55% 18%; +--accent-foreground: 180 10% 97%; +--destructive: 0 65% 35%; +--destructive-foreground: 0 0% 98%; +--border: 190 25% 17%; +--input: 223 40% 24%; +--ring: 175 85% 42%;`, + + midnight: `--highlight: 188 90% 58%; +--neutral: 213 22% 59%; +--neutral-light: 214 69% 81%; +--neutral-dark: 214 16% 21%; +--background: 240 15% 3%; +--foreground: 0 0% 99%; +--card: 240 12% 8%; +--card-foreground: 0 0% 99%; +--popover: 225 45% 13%; +--popover-foreground: 0 0% 99%; +--primary: 210 100% 62%; +--primary-foreground: 0 0% 99%; +--secondary: 215 55% 32%; +--secondary-foreground: 200 60% 88%; +--muted: 240 12% 8%; +--muted-foreground: 210 40% 70%; +--accent: 220 65% 20%; +--accent-foreground: 0 0% 99%; +--destructive: 0 70% 35%; +--destructive-foreground: 0 0% 99%; +--border: 240 10% 18%; +--input: 225 35% 24%; +--ring: 210 100% 62%;`, + + slate: `--highlight: 217 97% 52%; +--neutral: 0 0% 55%; +--neutral-light: 0 0% 75%; +--neutral-dark: 0 0% 25%; +--background: 0 0% 0%; +--foreground: 0 0% 96%; +--card: 0 0% 7%; +--card-foreground: 0 0% 96%; +--popover: 0 0% 9%; +--popover-foreground: 0 0% 96%; +--primary: 230 75% 55%; +--primary-foreground: 0 0% 98%; +--secondary: 0 0% 25%; +--secondary-foreground: 0 0% 85%; +--muted: 0 0% 7%; +--muted-foreground: 0 0% 60%; +--accent: 0 0% 18%; +--accent-foreground: 0 0% 96%; +--destructive: 0 65% 40%; +--destructive-foreground: 0 0% 98%; +--border: 0 0% 18%; +--input: 0 0% 22%; +--ring: 215 75% 55%;`, + + deep: `--highlight: 184 53% 54%; +--neutral: 215 15% 50%; +--neutral-light: 210 20% 68%; +--neutral-dark: 220 18% 22%; +--background: 0 0% 0%; +--foreground: 215 15% 82%; +--card: 218 25% 5%; +--card-foreground: 215 15% 82%; +--popover: 215 30% 8%; +--popover-foreground: 215 15% 82%; +--primary: 200 43% 48%; +--primary-foreground: 210 20% 92%; +--secondary: 218 30% 18%; +--secondary-foreground: 215 25% 75%; +--muted: 214 28% 5%; +--muted-foreground: 215 18% 48%; +--accent: 216 32% 12%; +--accent-foreground: 215 15% 82%; +--destructive: 0 50% 35%; +--destructive-foreground: 0 15% 90%; +--border: 218 22% 10%; +--input: 216 28% 15%; +--ring: 215 45% 42%;`, +}; + +function Swatch({ color, size = 24 }: { color: string; size?: number }) { + return ( + + ); +} + +function SwatchSm({ color }: { color: string }) { + return ( + + ); +} + +function TokenRow({ + color, + token, + children, +}: { + color: string; + token: string; + children: React.ReactNode; +}) { + return ( +
+ + {token} +
{children}
+
+ ); +} + +function SwatchSet({ colors }: { colors: string[] }) { + return ( +
+ {colors.map((c, i) => ( +
0 ? -13 : 0, + }} + /> + ))} +
+ ); +} + +function CopyThemeLink({ themeName }: { themeName: string }) { + const [copied, setCopied] = useState(false); + + const handleCopy = async (e: React.MouseEvent) => { + e.preventDefault(); + const tokens = themes[themeName]; + if (!tokens) return; + try { + await navigator.clipboard.writeText(tokens); + } catch { + const textarea = document.createElement('textarea'); + textarea.value = tokens; + textarea.style.position = 'fixed'; + textarea.style.opacity = '0'; + document.body.appendChild(textarea); + textarea.select(); + document.execCommand('copy'); + document.body.removeChild(textarea); + } + setCopied(true); + setTimeout(() => setCopied(false), 1500); + }; + + return ( + + {copied ? 'Copied!' : 'Copy Theme'} + + ); +} + +function ThemeRow({ + backgrounds, + text, + interactive, + name, + previewUrl, + themeName, +}: { + backgrounds: string[]; + text: string[]; + interactive: string[]; + name: string; + previewUrl: string; + themeName: string; +}) { + return ( + <> + + + + {name} + + Preview in Viewer + + + + ); +} + +function ContrastTable({ + rows, +}: { + rows: Array<{ + fgLabel: string; + fgColor: string; + bgLabel: string; + bgColor: string; + result: string; + requirement: string; + }>; +}) { + return ( + + + + + + + + + + + {rows.map((r, i) => ( + + + + + + + ))} + +
ForegroundBackgroundResultRequirements
+ + {r.fgLabel} + + + {r.bgLabel} + {r.result}{r.requirement}
+ ); +} + +function Accordion({ title, id, children }: { title: string; id?: string; children: React.ReactNode }) { + const [open, setOpen] = useState(false); + const buttonId = id ? `${id}-button` : undefined; + const contentId = id ? `${id}-content` : undefined; + return ( +
+ + {open && ( +
+ {children} +
+ )} +
+ ); +} + +const BASE_VIEWER = 'https://ohif-theme-apply.netlify.app/viewer?StudyInstanceUIDs=1.3.6.1.4.1.25403.345050719074.3824.20170125095438.5&theme='; + +function ThemingPageContent() { + const ComponentLayout = require('./components/_layout/ComponentLayout').default; + const PageHeader = require('./components/_layout/PageHeader').default; + const Section = require('./components/_layout/Section').default; + + return ( + + + + {/* ================================ */} + {/* APPLYING THEMES */} + {/* ================================ */} + +
+
+

+ The Appearance dialog can be accessed from the settings menu in the + main header. Open the Theme dropdown and choose a preset. The + interface will update immediately, and your selection is remembered the next time + you open the Viewer. Selecting Tonal: OHIF Blue returns to the default. +

+ +

+ Testing custom theme colors: Use this dialog to test your custom themes in + the viewer{' '} + (see more details) +

+ + Appearance modal with the Theme dropdown open, showing the preset options +
+
+ + {/* ================================ */} + {/* COLOR TOKENS AND ROLES */} + {/* ================================ */} + +
+
+

+ While these token names are largely shared across many web applications, within the OHIF Viewer design, + each one plays a specific role in the interface. +

+ + Color roles overview +
+ + {/* Layering Model Accordion */} + +

+ A set of three background colors are used to create a layering system that shows visual depth + and hierarchy in the product. Background color use should align with these details: +

+ +

Three Levels

+ +

+ Level 1: Surface{' '} + {' '} + background +

+
    +
  • The base layer of the entire interface
  • +
  • Includes the app shell, panel backgrounds, and empty or negative space
  • +
  • In the default OHIF theme, this is black to seamlessly match the viewport background
  • +
  • Changing this from black can create more separation from viewports or add a full background color to panels
  • +
+ +

+ Level 2: Working Space{' '} + {' '} + muted or{' '} + card +

+
    +
  • This is the base content layer of the interface
  • +
  • Includes panel content areas, dialog backgrounds, rows of data, etc.
  • +
  • This is the base of the working space separated from the viewer content
  • +
+ +

+ Level 3: Elevated{' '} + {' '} + popover +

+
    +
  • The top-most layer, used for UI that floats above the surface
  • +
  • Includes popovers, dropdown menus, floating components, grouping elements such as panel sections
  • +
  • Use this for any component that needs to appear "above" the content layer
  • +
+ + Layering model overview + +

Creating Contrast

+
    +
  • + The primary color + is used across these different layers to show what elements are interactable. Be sure to review any + new colors for backgrounds work with primary as the foreground at each of the three different levels. +
  • +
  • + See the Creating Themes section + for details on how different levels of contrast can be used to separate these layers. +
  • +
+ +

Alpha Colors

+

+ primary also uses + various alpha values for many components across the product. This allows components to adapt and work + well with different background colors or various layers of the interface. +

+
+ + {/* Token Sections */} +
+

Interactive or Currently Active

+
+ + + The most important color in the system. Primary represents anything the user can interact with + which includes: tool actions, toggles for showing and hiding content, links, navigation elements, etc. + + + + The brightest color in the system. Highlight is used to show the user what is "currently active". + It should not be used more than a few times in flows or screen views. +
    +
  • Highlight border around the active viewport
  • +
  • Highlight background to show the active tool
  • +
  • Highlight color at the end of a selected data row
  • +
+
+ +
+

Text and Content

+
+ + + Used for standard text or for more important text to stand out. This includes headings, + labels for controls, or anything critical for what the user is doing. + + + + Used for secondary text that is paired with standard text. This includes sub titles, + help text, or anything that needs to play a reduced role for content. + + +
+

Background Colors

+

+ See the Layering Model above for detailed notes. +

+
+ + + The base background layer of the product (app shell, panels, negative spaces) + + + The second background layer where most content lives + + + The third background layer for any content that needs to be elevated + + +
+

Supporting Colors

+
+ + + Used for secondary buttons in the interface + + + Text color used on secondary + + + Sometimes used for hover states or other interaction feedback + + + Text color used on accent + + + Used for any destructive action or operations in the interface + + + Text color used on destructive + + +
+

Inputs and Borders

+
+ + + Used on input fields and other interactive components + + + A neutral color used minimally as separators + + + Used as focus rings for accessibility — indicates which components are currently selected + (in use or keyboard highlighted) + + +
+

Neutral Colors

+

+ Neutral colors are used sparingly across the interface in areas such as viewports. +

+
+ + + Used for elements like scrollbars in viewports + + + Lighter text that appears over dark background viewports + + + Darker text that appears over light background viewports + +
+ + {/* ================================ */} + {/* CREATING THEMES */} + {/* ================================ */} + +
+
+ Creating themes overview + +

+ Theming in the OHIF Viewer works by replacing the default color tokens and working with the product + color system outlined in{' '} + Color Tokens and Roles and{' '} + Layering Model. +

+ +

+ When updating any colors in the system, follow the{' '} + Accessibility section to ensure the + product retains accessibility standards. +

+ +

+ OHIF can be themed with a few different approaches. Use the guidance below to match the desired + product or brand feel. +

+
+ +

Approach 1: Tonal

+ +
+

+ A tonal theme applies a hue across the background layers of the product which gives the product a + strong color identity. The default Viewer theme uses this approach with blue. +

+ +
    +
  • All three background layers work within the theme's color hue
  • +
  • Different hues can be used in place of the Viewer's default blue
  • +
  • A tonal theme does not need to match the saturation of the default, see examples
  • +
  • Use this approach if you like the general feel of the Viewer, but want it to be more unique
  • +
+
+ + {/* Tonal theme grid */} +
+ Backgrounds + Text + Interactive + Theme name + + + + + + + +
+ +

Approach 2: Neutral

+ +
+

+ A neutral theme still keeps the full color system in place, but reduces the reliance on color in backgrounds. +

+ +
    +
  • All three background layers are more neutral and are more subtle in their differences
  • +
  • A more unique primary can be chosen if background colors are more similar
  • +
  • Brand color can be emphasized in detailed accents rather than color fills
  • +
  • This approach reduces the focus on color to emphasize image content
  • +
  • Accessibility can be simpler, but testing is still recommended
  • +
+
+ + {/* Neutral theme grid */} +
+ Backgrounds + Text + Interactive + Theme name + + + + + + +
+ +

Approach 3: Custom

+ +
+

+ Themes do not need to follow any of these models and more unique combinations can be + considered by following the core color rules and product principles: +

+ +
    +
  • Three levels of background are separated enough
  • +
  • Primary serves its purpose to show to users what can be interacted with
  • +
  • Colors are accessible in all content scenarios
  • +
+ +

+ Theming is flexible enough to support any direction, as long as the colors still work in the product. +

+
+ +

Experiment with the Color Tool

+ +
+

+ We built a small public web tool that edits the color tokens directly, so you can experiment with + colors and see the results instantly. When a combination looks right, use its{' '} + Copy Theme button and paste the result into the + Custom Theme field in the Viewer’s Appearance dialog (see{' '} + Testing Themes) — an easy + way to iterate quickly and find what works best. The tool is optional; you can also edit tokens by hand. +

+ +

+ + Open the color tool → + +

+
+ +

+ Testing Themes in the Viewer +

+ +
+

+ You can preview a theme without writing any code using the{' '} + Custom Theme option in the Appearance dialog + (settings menu in the main header) — useful while designing a theme around the approaches above. +

+ + Appearance modal showing the Custom Theme button below the Theme dropdown + +

+ The Custom Theme option opens a text field where + you paste CSS color tokens and press Apply to see + them right away. Clear removes them and returns to + the default. A pasted theme is remembered across page reloads. +

+ + Custom theme text field for pasting color tokens, with Apply and Clear buttons +
+ +

For Developers: Adding a New Preset

+ +
+

+ A preset lives in two places. The CSS block is what actually renders; + the JSON only registers the preset so it appears in the dropdown. +

+ +
    +
  • + themes.css — add a{' '} + .theme-{name}{' '} + block to platform/ui-next/src/themes/themes.css{' '} + with the full token set. This is the source of truth for the theme’s colors. +
  • +
  • + {name}.json — create{' '} + platform/ui-next/src/themes/{name}.json{' '} + providing name and{' '} + label (the dropdown entry). + Its cssVars.dark values + are not read at runtime — only{' '} + name and{' '} + label are used — + so the .theme-{name}{' '} + CSS block above is what takes effect. +
  • +
  • + index.ts — import the JSON in{' '} + platform/ui-next/src/themes/index.ts{' '} + and add it to the themePresets array. +
  • +
+ +

+ The dropdown, persistence, and theme switching then work automatically. The JSON{' '} + name field must match the + CSS class suffix (e.g. "name": "orchid"{' '} + ↔ .theme-orchid). +

+
+
+ + {/* ================================ */} + {/* ACCESSIBILITY */} + {/* ================================ */} + +
+
+

+ The OHIF Viewer is a medical imaging product. The interface supports clinicians and other + professionals working and reading images. Colors in theming should never get in the way. + A theme needs to remain accessible with color contrast and other accessibility standards. +

+ +

+ The default OHIF theme has been tested and works out of the box to meet these standards. +

+ +

+ Color contrast must meet{' '} + + WCAG 2.1 Success Criterion 1.4.3 Contrast (Minimum), Level AA + + : text needs a contrast ratio of at least 4.5:1 against + its background (3:1 for large text — 24px, or 18.66px bold). +

+ +

+ The pairs below show the default OHIF theme and how its + colors meet the contrast requirements. The Result column + is each pair's actual contrast ratio, and the Guidance{' '} + column is the minimum it must meet. When creating your own theme, check every foreground against each + background layer it can appear on. +

+
+ +

+ Test Primary Across All Three Background Colors +

+ +

+ The most important color that shows content that can be interactive needs to be tested across + all three background layers. +

+ + + +

+ Test Text Content Across All Three Background Colors +

+ +

+ Text appears on each background layer. Be sure to test each to ensure readability. +

+ + + + + +

+ Test Viewport Text If You Change It +

+ +

+ Be sure to test the viewport neutral text over standard viewport backgrounds, but increase + the contrast here as much as possible since text needs to remain readable over various image content. +

+ + + +

+ Test Foreground Colors Over Their Backgrounds +

+ + +
+
+ ); +} + +export default function ThemingPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/colors-and-type.tsx b/platform/docs/src/pages/colors-and-type.tsx deleted file mode 100644 index 9d7078fc00d..00000000000 --- a/platform/docs/src/pages/colors-and-type.tsx +++ /dev/null @@ -1,434 +0,0 @@ -import React, { useState } from 'react'; -import '../css/custom.css'; - -import Layout from '@theme/Layout'; -import { Label } from '../../../ui-next/src/components/Label'; -import { Input } from '../../../ui-next/src/components/Input'; -import { Separator } from '../../../ui-next/src/components/Separator'; -import { Tabs, TabsList, TabsTrigger } from '../../../ui-next/src/components/Tabs'; -import { - Select, - SelectTrigger, - SelectContent, - SelectItem, - SelectValue, -} from '../../../ui-next/src/components/Select'; -import { Button } from '../../../ui-next/src/components/Button'; -import { Switch } from '../../../ui-next/src/components/Switch'; -import { Checkbox } from '../../../ui-next/src/components/Checkbox'; -import { Toggle } from '../../../ui-next/src/components/Toggle'; -import { Slider } from '../../../ui-next/src/components/Slider'; -import { ScrollArea } from '../../../ui-next/src/components/ScrollArea'; -import { - DropdownMenu, - DropdownMenuTrigger, - DropdownMenuContent, - DropdownMenuItem, -} from '../../../ui-next/src/components/DropdownMenu'; -import { Icons } from '../../../ui-next/src/components/Icons'; -import { Toaster, toast } from '../../../ui-next/src/components/Sonner'; -import { - Card, - CardHeader, - CardFooter, - CardTitle, - CardDescription, - CardContent, -} from '../../../ui-next/src/components/Card'; - -interface ShowcaseRowProps { - title: string; - description?: string; - children: React.ReactNode; - code: string; -} - -export default function ComponentShowcase() { - // Handlers to trigger different types of toasts - const triggerSuccess = () => { - toast.success('This is a success toast!'); - }; - - const triggerError = () => { - toast.error('This is an error toast!'); - }; - - const triggerInfo = () => { - toast.info('This is an info toast!'); - }; - - const triggerWarning = () => { - toast.warning('This is a warning toast!'); - }; - - // Handler to trigger a toast.promise example - const triggerPromiseToast = () => { - const promise = () => - new Promise<{ name: string }>(resolve => - setTimeout(() => resolve({ name: 'Segmentation 1' }), 3000) - ); - - toast.promise(promise(), { - loading: 'Loading Segmentation...', - success: data => `${data.name} has been added`, - error: 'Error', - }); - }; - - // Handler to trigger a toast with description - const triggerDescriptionToast = () => { - toast.success('Success heading', { - description: 'This is a detailed description of the success message.', - }); - }; - - // Handler to trigger a toast with an action button - const triggerActionButtonToast = () => { - toast.info('No active segmentation detected', { - description: 'Create a segmentation before using the Brush', - }); - }; - - // Handler to trigger a toast with a cancel button - const triggerCancelButtonToast = () => { - toast.error('No active segmentation detected', { - description: 'Create a segmentation before using the Brush', - }); - }; - - // Handler to trigger a toast with both action and cancel buttons - const triggerCombinedToast = () => { - toast.warning('Warning!', { - description: 'This is a warning with both action and cancel buttons.', - action: ( - - ), - cancel: ( - - ), - }); - }; - - // Handler to trigger a loading toast using Toaster's default loading icon - const showLoadingToast = () => { - toast.loading('Loading your data...'); - }; - - return ( - -
-
- {/* Navigation cards */} - - -

Colors & Typography

- - -
-
-
-
- highlight -
-
-
-
- Used for active or selected elements in the Viewer. -
-
- -
-
-
-
- primary -
-
-
-
- Used for Actions. Icons use 'primary' at 100% opacity while various components will - use a reduced opacity. Hover and other states increase the opacity. -
-
- -
-
-
-
- popover -
-
-
- muted -
-
-
- background -
-
-
- These three colors are used as background colors. For the lowest level above black - use 'background'. For normal panel backgrounds and other interactive components, use - 'muted'. For elements such as menus and popovers, use 'popover'. -
-
- -
-
-
-
- foreground -
-
-
- muted-foreground -
-
-
- For primary and important text, use 'foreground'. When secondary text is available, - use 'muted-foreground' to create separation and readability. -
-
- -
-
-
-
- input -
-
-
- neutral -
-
-
- Used for borders and UI elements. 'neutral' is typically used at 50% opacity for - elements such as scrollbars and will work over light and dark backgrounds -
-
-
- - -
-
-
- text-base - 13px -
-
-
-
- text-base is used as the base font size of the Viewer interface. Use when putting - text in panels or other interface elements next to medical images. -
-
- -
-
-
- text-lg - 14px -
-
-
-
- text-lg can be used for dialog text or important messaging text within the Viewer. - Use this font size for easier reading on other standard text pages. -
-
- -
-
-
- text-xl - 16px -
-
-
-
- text-xl can be used as headings within dialogs or messaging. -
-
- -
-
-
- text-2xl - 18px -
-
-
-
- text-2xl can be used for page headers in the Viewer application or as dialog titles. -
-
- -
-
-
- text-3xl - 20px -
-
-
-
- text-3xl can be used for extra large text size in the application. -
-
- -
-
-
- text-sm - 12px -
-
-
-
- text-sm can be used for details that do not need to be standard sizes in the Viewer. -
-
-
-
-
-
- ); -} - -function ShowcaseRow({ title, description, children, code }: ShowcaseRowProps) { - const [showCode, setShowCode] = useState(false); - - return ( -
-
-
-

{title}

-
- -
-
-
- {description &&

{description}

} -
-
-
{children}
-
-
- {showCode && ( -
-          {code}
-        
- )} -
- ); -} - -// function ShowcaseRow({ title, description, children, code }: ShowcaseRowProps) { -// const [showCode, setShowCode] = useState(false); - -// return ( -//
-//
-//
-//

{title}

-// {description &&

{description}

} -//
-// -//
-//
{children}
-// {showCode && ( -//
-//           {code}
-//         
-// )} -//
-// ); -// } diff --git a/platform/docs/src/pages/components-list.tsx b/platform/docs/src/pages/components-list.tsx deleted file mode 100644 index 08e88a2fa4f..00000000000 --- a/platform/docs/src/pages/components-list.tsx +++ /dev/null @@ -1,142 +0,0 @@ -import React from 'react'; -import '../css/custom.css'; -import Layout from '@theme/Layout'; -import BrowserOnly from '@docusaurus/BrowserOnly'; - -/** - * Components List page that displays all available UI components - */ -export default function ComponentsList() { - return ( - - }> - {() => { - // Dynamically require all sub-components to avoid SSR issues - const { TooltipProvider } = - require('../../../ui-next/src/components/Tooltip'); - - const { - Card, - CardHeader, - CardTitle, - CardDescription, - } = require('../../../ui-next/src/components/Card'); - const { Icons } = require('../../../ui-next/src/components/Icons'); - - // Showcase modules - const AllinOneMenuShowcase = require('./components/AllinOneMenuShowcase').default; - const ButtonShowcase = require('./components/ButtonShowcase').default; - const CheckboxShowcase = require('./components/CheckboxShowcase').default; - const CinePlayerShowcase = require('./components/CinePlayerShowcase').default; - const ComboboxShowcase = require('./components/ComboboxShowcase').default; - const DataRowShowcase = require('./components/DataRowShowcase').default; - const DialogShowcase = require('./components/DialogShowcase').default; - const DropdownMenuShowcase = require('./components/DropdownMenuShowcase').default; - const HoverCardShowcase = require('./components/HoverCardShowcase').default; - const InputShowcase = require('./components/InputShowcase').default; - const LabelShowcase = require('./components/LabelShowcase').default; - const NumericMetaShowcase = require('./components/NumericMetaShowcase').default; - const PanelSectionShowcase = require('./components/PanelSectionShowcase').default; - const PopoverShowcase = require('./components/PopoverShowcase').default; - const ScrollAreaShowcase = require('./components/ScrollAreaShowcase').default; - const SelectShowcase = require('./components/SelectShowcase').default; - const SliderShowcase = require('./components/SliderShowcase').default; - const SwitchShowcase = require('./components/SwitchShowcase').default; - const TabsShowcase = require('./components/TabsShowcase').default; - const ToastShowcase = require('./components/ToastShowcase').default; - const ToolButtonShowcase = require('./components/ToolButtonShowcase').default; - const ToolButtonListShowcase = require('./components/ToolButtonListShowcase').default; - const TooltipShowcase = require('./components/TooltipShowcase').default; - - return ( - - - - ); - }} - - - ); -} diff --git a/platform/docs/src/pages/components.tsx b/platform/docs/src/pages/components.tsx deleted file mode 100644 index b49931da0fa..00000000000 --- a/platform/docs/src/pages/components.tsx +++ /dev/null @@ -1,265 +0,0 @@ -import React, { useState } from 'react'; -import '../css/custom.css'; - -import Layout from '@theme/Layout'; -import { Label } from '../../../ui-next/src/components/Label'; -import { Input } from '../../../ui-next/src/components/Input'; -import { Separator } from '../../../ui-next/src/components/Separator'; -import { Tabs, TabsList, TabsTrigger } from '../../../ui-next/src/components/Tabs'; -import { - Select, - SelectTrigger, - SelectContent, - SelectItem, - SelectValue, -} from '../../../ui-next/src/components/Select'; -import { Button } from '../../../ui-next/src/components/Button'; -import { Switch } from '../../../ui-next/src/components/Switch'; -import { Checkbox } from '../../../ui-next/src/components/Checkbox'; -import { Toggle } from '../../../ui-next/src/components/Toggle'; -import { Slider } from '../../../ui-next/src/components/Slider'; -import { ScrollArea } from '../../../ui-next/src/components/ScrollArea'; -import { - DropdownMenu, - DropdownMenuTrigger, - DropdownMenuContent, - DropdownMenuItem, -} from '../../../ui-next/src/components/DropdownMenu'; -import { Icons } from '../../../ui-next/src/components/Icons'; -import { Toaster, toast } from '../../../ui-next/src/components/Sonner'; -import { - Card, - CardHeader, - CardFooter, - CardTitle, - CardDescription, - CardContent, -} from '../../../ui-next/src/components/Card'; - -interface ShowcaseRowProps { - title: string; - description?: string; - children: React.ReactNode; - code: string; -} - -export default function ComponentShowcase() { - // Handlers to trigger different types of toasts - const triggerSuccess = () => { - toast.success('This is a success toast!'); - }; - - const triggerError = () => { - toast.error('This is an error toast!'); - }; - - const triggerInfo = () => { - toast.info('This is an info toast!'); - }; - - const triggerWarning = () => { - toast.warning('This is a warning toast!'); - }; - - // Handler to trigger a toast.promise example - const triggerPromiseToast = () => { - const promise = () => - new Promise<{ name: string }>(resolve => - setTimeout(() => resolve({ name: 'Segmentation 1' }), 3000) - ); - - toast.promise(promise(), { - loading: 'Loading Segmentation...', - success: data => `${data.name} has been added`, - error: 'Error', - }); - }; - - // Handler to trigger a toast with description - const triggerDescriptionToast = () => { - toast.success('Success heading', { - description: 'This is a detailed description of the success message.', - }); - }; - - // Handler to trigger a toast with an action button - const triggerActionButtonToast = () => { - toast.info('No active segmentation detected', { - description: 'Create a segmentation before using the Brush', - }); - }; - - // Handler to trigger a toast with a cancel button - const triggerCancelButtonToast = () => { - toast.error('No active segmentation detected', { - description: 'Create a segmentation before using the Brush', - }); - }; - - // Handler to trigger a toast with both action and cancel buttons - const triggerCombinedToast = () => { - toast.warning('Warning!', { - description: 'This is a warning with both action and cancel buttons.', - action: ( - - ), - cancel: ( - - ), - }); - }; - - // Handler to trigger a loading toast using Toaster's default loading icon - const showLoadingToast = () => { - toast.loading('Loading your data...'); - }; - - return ( - - - - ); -} - -function ShowcaseRow({ title, description, children, code }: ShowcaseRowProps) { - const [showCode, setShowCode] = useState(false); - - return ( -
- {/* Header Section */} -
-
-

{title}

-
- -
- - {/* Content Section: 1/3 Left, 2/3 Right */} -
- {/* Left Side: Title and Description */} -
- {description &&

{description}

} -
- - {/* Right Side: Example */} -
-
{children}
-
-
- - {/* Code Section */} - {showCode && ( -
-          {code}
-        
- )} -
- ); -} - -// function ShowcaseRow({ title, description, children, code }: ShowcaseRowProps) { -// const [showCode, setShowCode] = useState(false); - -// return ( -//
-//
-//
-//

{title}

-// {description &&

{description}

} -//
-// -//
-//
{children}
-// {showCode && ( -//
-//           {code}
-//         
-// )} -//
-// ); -// } diff --git a/platform/docs/src/pages/components/AllinOneMenuShowcase.tsx b/platform/docs/src/pages/components/AllinOneMenuShowcase.tsx deleted file mode 100644 index 895d721a15c..00000000000 --- a/platform/docs/src/pages/components/AllinOneMenuShowcase.tsx +++ /dev/null @@ -1,119 +0,0 @@ -import React from 'react'; -import useIsBrowser from '@docusaurus/useIsBrowser'; -import ShowcaseRow from './ShowcaseRow'; - -/** - * Pure‑UI mock of the in‑app Window/Level menu. - * Clickable, but all actions are inert. - */ -export default function AllinOneMenuShowcase() { - const isBrowser = useIsBrowser(); - - if (!isBrowser) { - return null; - } - - const { - default: AllInOneMenu, - IconMenu, - SubMenu, - ItemPanel, - Item, - DividerItem, - HorizontalDirection, - VerticalDirection, - } = require('../../../../ui-next/src/components/AllInOneMenu'); - const { Switch } = require('../../../../ui-next/src/components/Switch'); - - const renderColorLUTItems = () => - [ - 'Grayscale', - 'X Ray', - 'HSV', - 'Hot Iron', - 'Red Hot', - 'S PET', - 'Perfusion', - 'Rainbow', - 'SUV', - 'GE 256', - 'GE', - 'Siemens', - ].map(name => ); - - const renderWindowPresetItems = () => - [ - { desc: 'Soft tissue', wl: '400 / 40' }, - { desc: 'Lung', wl: '1500 / -600' }, - { desc: 'Liver', wl: '150 / 90' }, - { desc: 'Bone', wl: '2500 / 480' }, - { desc: 'Brain', wl: '80 / 40' }, - ].map(p => ( - - )); - - return ( - …`} - > -
- - - - } - useIconSpace={false} - /> - - - - - } - /> - - {renderColorLUTItems()} - - - - - {renderWindowPresetItems()} - - - - - - - Click the icon to explore an example - -
-
- ); -} \ No newline at end of file diff --git a/platform/docs/src/pages/components/ButtonShowcase.tsx b/platform/docs/src/pages/components/ButtonShowcase.tsx deleted file mode 100644 index 2c3debdc402..00000000000 --- a/platform/docs/src/pages/components/ButtonShowcase.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import React from 'react'; -import { Button } from '../../../../ui-next/src/components/Button'; -import ShowcaseRow from './ShowcaseRow'; - -/** - * ButtonShowcase component displays button variants and examples - */ -export default function ButtonShowcase() { - return ( - Primary Button - - - - - - - - - `} - > -
- - - - - -
-
- - -
-
- ); -} diff --git a/platform/docs/src/pages/components/CheckboxShowcase.tsx b/platform/docs/src/pages/components/CheckboxShowcase.tsx deleted file mode 100644 index 4279114857d..00000000000 --- a/platform/docs/src/pages/components/CheckboxShowcase.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import React from 'react'; -import { Checkbox } from '../../../../ui-next/src/components/Checkbox'; -import { Label } from '../../../../ui-next/src/components/Label'; -import ShowcaseRow from './ShowcaseRow'; - -/** - * CheckboxShowcase component displays checkbox variants and examples - */ -export default function CheckboxShowcase() { - return ( - - -
- -
-
- `} - > -
- -
- -
-
- - ); -} diff --git a/platform/docs/src/pages/components/CinePlayerShowcase.tsx b/platform/docs/src/pages/components/CinePlayerShowcase.tsx deleted file mode 100644 index 538d6191ec5..00000000000 --- a/platform/docs/src/pages/components/CinePlayerShowcase.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import React, { useState } from 'react'; -import useIsBrowser from '@docusaurus/useIsBrowser'; -import ShowcaseRow from './ShowcaseRow'; - -/** - * CinePlayerShowcase displays a playable/pausable cine player with FPS control. - */ -export default function CinePlayerShowcase() { - const [isPlaying, setIsPlaying] = useState(false); - const [fps, setFps] = useState(24); - const isBrowser = useIsBrowser(); - - // If not browser, return null to avoid SSR parse errors - if (!isBrowser) { - return null; - } - - const { default: CinePlayer } = require('../../../../ui-next/src/components/CinePlayer/CinePlayer'); - - return ( - console.log('close clicked')} -/> - `} - > - console.log('close clicked')} - /> - - ); -} \ No newline at end of file diff --git a/platform/docs/src/pages/components/ComboboxShowcase.tsx b/platform/docs/src/pages/components/ComboboxShowcase.tsx deleted file mode 100644 index 812d9131cdd..00000000000 --- a/platform/docs/src/pages/components/ComboboxShowcase.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import React from 'react'; -import { Combobox } from '../../../../ui-next/src/components/Combobox/Combobox'; -import ShowcaseRow from './ShowcaseRow'; - -/** - * ComboboxShowcase demonstrates the searchable Combobox component with a - * comprehensive “Modality” list. - */ -export default function ComboboxShowcase() { - const modalities = [ - 'AR', - 'ASMT', - 'AU', - 'BDUS', - 'BI', - 'BMD', - 'CR', - 'CT', - 'CTPROTOCOL', - 'DG', - 'DOC', - 'DX', - 'ECG', - 'EPS', - 'ES', - 'FID', - 'GM', - 'HC', - 'HD', - 'IO', - 'IOL', - 'IVOCT', - 'IVUS', - 'KER', - 'KO', - 'LEN', - 'LS', - 'MG', - 'MR', - 'M3D', - 'NM', - 'OAM', - 'OCT', - 'OP', - 'OPM', - 'OPT', - 'OPTBSV', - 'OPTENF', - 'OPV', - 'OSS', - 'OT', - 'PLAN', - 'PR', - 'PT', - 'PX', - 'REG', - 'RESP', - 'RF', - 'RG', - 'RTDOSE', - 'RTIMAGE', - 'RTINTENT', - 'RTPLAN', - 'RTRAD', - 'RTRECORD', - 'RTSEGANN', - 'RTSTRUCT', - 'RWV', - 'SEG', - 'SM', - 'SMR', - 'SR', - 'SRF', - 'STAIN', - 'TEXTUREMAP', - 'TG', - 'US', - 'VA', - 'XA', - 'XC', - ].map(m => ({ value: m, label: m })); - - return ( - ({ value: m, label: m })); - - - `} - > - - - ); -} diff --git a/platform/docs/src/pages/components/DataRowShowcase.tsx b/platform/docs/src/pages/components/DataRowShowcase.tsx deleted file mode 100644 index 200b165a933..00000000000 --- a/platform/docs/src/pages/components/DataRowShowcase.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react'; -import DataRowExample from '../patterns/DataRowExample'; -import ShowcaseRow from './ShowcaseRow'; - -/** - * DataRowShowcase component displays DataRow variants and examples - */ -export default function DataRowShowcase() { - return ( - - - - ); -} diff --git a/platform/docs/src/pages/components/DialogShowcase.tsx b/platform/docs/src/pages/components/DialogShowcase.tsx deleted file mode 100644 index cb5d29b95db..00000000000 --- a/platform/docs/src/pages/components/DialogShowcase.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import React from 'react'; -import { - Dialog, - DialogTrigger, - DialogContent, - DialogHeader, - DialogFooter, - DialogTitle, - DialogDescription, - DialogClose, -} from '../../../../ui-next/src/components/Dialog/Dialog'; -import { Button } from '../../../../ui-next/src/components/Button'; -import ShowcaseRow from './ShowcaseRow'; - -/** - * DialogShowcase demonstrates a simple Radix‑based dialog. - */ -export default function DialogShowcase() { - return ( - - - - - - - Example Dialog - - - This is a short message inside the dialog. - - - - - - - - - - - - `} - > - - - - - - - - Example Dialog - - - This is a short message inside the dialog. - - - - - - - - - - - - - - ); -} diff --git a/platform/docs/src/pages/components/DropdownMenuShowcase.tsx b/platform/docs/src/pages/components/DropdownMenuShowcase.tsx deleted file mode 100644 index 9eeab0c1664..00000000000 --- a/platform/docs/src/pages/components/DropdownMenuShowcase.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import React from 'react'; -import { - DropdownMenu, - DropdownMenuTrigger, - DropdownMenuContent, - DropdownMenuItem, -} from '../../../../ui-next/src/components/DropdownMenu'; -import { Button } from '../../../../ui-next/src/components/Button'; -import ShowcaseRow from './ShowcaseRow'; - -/** - * DropdownMenuShowcase component displays DropdownMenu variants and examples - */ -export default function DropdownMenuShowcase() { - return ( - - - - - - Item 1 - Item 2 - Long name Item 3 - - - `} - > -
- - - - - - Item 1 - Item 2 - Long name Item 3 - - - - - - - - Item 1 - Item 2 - Long name Item 3 - - - - - - - - Item 1 - Item 2 - Long name Item 3 - - - - - - - - console.debug('Item 1')}>Item 1 - console.debug('Item 2')}>Item 2 - console.debug('Item 3')}> - Long name Item 3 - - - -
-
- ); -} \ No newline at end of file diff --git a/platform/docs/src/pages/components/HoverCardShowcase.tsx b/platform/docs/src/pages/components/HoverCardShowcase.tsx deleted file mode 100644 index 8dbf713f232..00000000000 --- a/platform/docs/src/pages/components/HoverCardShowcase.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import React from 'react'; -import { - HoverCard, - HoverCardTrigger, - HoverCardContent, -} from '../../../../ui-next/src/components/HoverCard/HoverCard'; -import { Button } from '../../../../ui-next/src/components/Button'; -import ShowcaseRow from './ShowcaseRow'; - -/** - * HoverCardShowcase demonstrates a Hover Card that appears on pointer hover. - */ -export default function HoverCardShowcase() { - return ( - - - - - -

Hello there! I'm a hover card.

-
- - `} - > - - - - - -

Hello there! I'm a hover card.

-
-
-
- ); -} \ No newline at end of file diff --git a/platform/docs/src/pages/components/InputShowcase.tsx b/platform/docs/src/pages/components/InputShowcase.tsx deleted file mode 100644 index 77c0484a897..00000000000 --- a/platform/docs/src/pages/components/InputShowcase.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import React from 'react'; -import { Input } from '../../../../ui-next/src/components/Input'; -import { Label } from '../../../../ui-next/src/components/Label'; -import ShowcaseRow from './ShowcaseRow'; - -/** - * InputShowcase component displays Input variants and examples - */ -export default function InputShowcase() { - return ( - -
- -
-
- -
- - `} - > -
-
- -
-
- -
-
-
- ); -} diff --git a/platform/docs/src/pages/components/LabelShowcase.tsx b/platform/docs/src/pages/components/LabelShowcase.tsx deleted file mode 100644 index 7b764b94340..00000000000 --- a/platform/docs/src/pages/components/LabelShowcase.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import React from 'react'; -import { Label } from '../../../../ui-next/src/components/Label/Label'; -import { Switch } from '../../../../ui-next/src/components/Switch'; -import ShowcaseRow from './ShowcaseRow'; - -/** - * LabelShowcase pairs a Label with a Switch inline. - */ -export default function LabelShowcase() { - return ( - - - `} - > -
- - -
-
- ); -} \ No newline at end of file diff --git a/platform/docs/src/pages/components/NumericMetaShowcase.tsx b/platform/docs/src/pages/components/NumericMetaShowcase.tsx deleted file mode 100644 index ba2bf180c40..00000000000 --- a/platform/docs/src/pages/components/NumericMetaShowcase.tsx +++ /dev/null @@ -1,463 +0,0 @@ -import React, { useState } from 'react'; -import Numeric from '../../../../ui-next/src/components/Numeric'; -import Icons from '../../../../ui-next/src/components/Icons'; -import ShowcaseRow from './ShowcaseRow'; - -/** - * NumericShowcase component displays Numeric variants and examples - */ -export default function NumericShowcase() { - const [controlledValue, setControlledValue] = useState(0); - const [controlledValues, setControlledValues] = useState([0, 100] as [number, number]); - const [dimensionGroupNumber, setDimensionGroupNumber] = useState(1); - - return ( -
- {/* Basic Number Input */} - console.debug('Value changed:', val)}> -
- Width - -
- - - console.debug('Value changed:', val)}> - Bolder - - - - console.debug('Value changed:', val)} - min={0} - value={123465789} - max={10000000000000} -> - - - With Icon - - -`} - > -
- console.debug('Value changed:', val)} - > -
- Width - -
-
- - console.debug('Value changed:', val)} - > - - Bolder - - - - - console.debug('Value changed:', val)} - min={0} - value={123465789} - max={10000000000000} - > - - - With Icon - - - -
-
- - {/* Stepper Controls */} - setDimensionGroupNumber(val as number)} - min={1} - max={5} - step={1} -> -
- - Frame -
- - - -
- Opacity - -
-
- - -
- Zoom: - -
-
`} - > -
- setDimensionGroupNumber(val as number)} - min={1} - max={5} - step={1} - > -
- - FPS - - Frame -
-
- - -
- Opacity - -
-
- - -
- - Zoom -
-
-
-
- - {/* Single Range Slider */} - console.debug('Value changed:', val)}> - Brightness - - - - console.debug('Value changed:', val)} -> - Contrast - - - - setControlledValue(val as number)} -> - Controlled State (Parent) - -`} - > -
- console.debug('Value changed:', val)} - > - Brightness - - - - console.debug('Value changed:', val)} - > - Contrast - - - - setControlledValue(val as number)} - > - Controlled State (Parent) - - -
-
- - {/* Double Range Slider */} - ([0, 100]); - - console.debug('Values changed:', vals)} -> - Window Width/Level - - - - console.debug('Values changed:', vals)} -> - Window Width/Level - - - - setControlledValues(vals as [number, number])} -> - Controlled State (Parent) - -`} - > -
- console.debug('Values changed:', vals)} - > - Window Width/Level - - - - console.debug('Values changed:', vals)} - > - Window Width/Level - - - - setControlledValues(vals as [number, number])} - > - Controlled State (Parent) - - -
-
- - {/* Combined Examples */} - - Zoom Factor - - - - -
- Offset - - -
-
- - - Rotation - - - - - CT Window - -`} - > -
- - Zoom Factor - - - - -
- Offset - -
-
- - - Rotation - - - - - CT Window - - -
-
-
- ); -} diff --git a/platform/docs/src/pages/components/PanelSectionShowcase.tsx b/platform/docs/src/pages/components/PanelSectionShowcase.tsx deleted file mode 100644 index 97ec0bae77d..00000000000 --- a/platform/docs/src/pages/components/PanelSectionShowcase.tsx +++ /dev/null @@ -1,52 +0,0 @@ -// docs/src/pages/components/PanelSectionShowcase.tsx -import React from 'react'; -import { PanelSection } from '../../../../ui-next/src/components/PanelSection/PanelSection'; -import { Button } from '../../../../ui-next/src/components/Button'; -import ShowcaseRow from './ShowcaseRow'; - -/** - * PanelSectionShowcase displays an expandable/collapsible panel section. - */ -export default function PanelSectionShowcase() { - return ( - - Series Information - -
-
Images: 120
-
Modality: MR
-
Body Part: Brain
- -
-
- - `} - > - - Series Information - -
-
-
Images: 120
-
Modality: MR
-
Body Part: Brain
-
- -
-
-
-
- ); -} diff --git a/platform/docs/src/pages/components/PopoverShowcase.tsx b/platform/docs/src/pages/components/PopoverShowcase.tsx deleted file mode 100644 index eb86c090172..00000000000 --- a/platform/docs/src/pages/components/PopoverShowcase.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import React from 'react'; -import { - Popover, - PopoverTrigger, - PopoverContent, -} from '../../../../ui-next/src/components/Popover/Popover'; -import { Button } from '../../../../ui-next/src/components/Button'; -import ShowcaseRow from './ShowcaseRow'; - -/** - * PopoverShowcase presents a simple Popover that appears after clicking a button. - */ -export default function PopoverShowcase() { - return ( - - - - - -

- Hello! I’m a Popover. Click outside or press Esc to close me. -

-
- - `} - > - - - - - -

- Hello! I’m a Popover. Click outside or press Esc to close me. -

-
-
-
- ); -} \ No newline at end of file diff --git a/platform/docs/src/pages/components/ScrollAreaShowcase.tsx b/platform/docs/src/pages/components/ScrollAreaShowcase.tsx deleted file mode 100644 index d9eaffdad4b..00000000000 --- a/platform/docs/src/pages/components/ScrollAreaShowcase.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react'; -import { ScrollArea } from '../../../../ui-next/src/components/ScrollArea'; -import ShowcaseRow from './ShowcaseRow'; - -/** - * ScrollAreaShowcase component displays ScrollArea variants and examples - */ -export default function ScrollAreaShowcase() { - return ( - - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco - laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat - non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore - magna aliqua. - - `} - > - - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut - labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco - laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in - voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat - cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem - ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut - labore et dolore magna aliqua. - - - ); -} diff --git a/platform/docs/src/pages/components/SelectShowcase.tsx b/platform/docs/src/pages/components/SelectShowcase.tsx deleted file mode 100644 index 8ee244b3d7e..00000000000 --- a/platform/docs/src/pages/components/SelectShowcase.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import React from 'react'; -import { - Select, - SelectTrigger, - SelectContent, - SelectItem, - SelectValue, -} from '../../../../ui-next/src/components/Select'; -import ShowcaseRow from './ShowcaseRow'; - -/** - * SelectShowcase component displays Select variants and examples - */ -export default function SelectShowcase() { - return ( - - - - - - Light - Dark - System - - - `} - > - - - ); -} diff --git a/platform/docs/src/pages/components/ShowcaseRow.tsx b/platform/docs/src/pages/components/ShowcaseRow.tsx deleted file mode 100644 index 53a6ef59a50..00000000000 --- a/platform/docs/src/pages/components/ShowcaseRow.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import React, { useState } from 'react'; -import { Button } from '../../../../ui-next/src/components/Button'; -import { Icons } from '../../../../ui-next/src/components/Icons'; - -interface ShowcaseRowProps { - title: string; - description?: string; - children: React.ReactNode; - code: string; -} - -/** - * ShowcaseRow component displays a UI component example with title, description, - * and optional code snippet that can be toggled. - */ -export default function ShowcaseRow({ title, description, children, code }: ShowcaseRowProps) { - const [showCode, setShowCode] = useState(false); - - return ( -
-
-
-

{title}

-
- -
-
-
- {description &&

{description}

} -
-
-
{children}
-
-
- {showCode && ( -
-          {code}
-        
- )} -
- ); -} diff --git a/platform/docs/src/pages/components/SliderShowcase.tsx b/platform/docs/src/pages/components/SliderShowcase.tsx deleted file mode 100644 index 0788ceb8df7..00000000000 --- a/platform/docs/src/pages/components/SliderShowcase.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import React from 'react'; -import { Slider } from '../../../../ui-next/src/components/Slider'; -import ShowcaseRow from './ShowcaseRow'; - -/** - * SliderShowcase component displays Slider variants and examples - */ -export default function SliderShowcase() { - return ( - - - - `} - > -
- -
-
- ); -} diff --git a/platform/docs/src/pages/components/SwitchShowcase.tsx b/platform/docs/src/pages/components/SwitchShowcase.tsx deleted file mode 100644 index 7d814a2222e..00000000000 --- a/platform/docs/src/pages/components/SwitchShowcase.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react'; -import { Switch } from '../../../../ui-next/src/components/Switch'; -import { Label } from '../../../../ui-next/src/components/Label'; -import ShowcaseRow from './ShowcaseRow'; - -/** - * SwitchShowcase component displays Switch variants and examples - */ -export default function SwitchShowcase() { - return ( - - `} - > - - - - ); -} diff --git a/platform/docs/src/pages/components/TabsShowcase.tsx b/platform/docs/src/pages/components/TabsShowcase.tsx deleted file mode 100644 index 82b775c3e48..00000000000 --- a/platform/docs/src/pages/components/TabsShowcase.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import React from 'react'; -import { Tabs, TabsList, TabsTrigger } from '../../../../ui-next/src/components/Tabs'; -import { Separator } from '../../../../ui-next/src/components/Separator'; -import ShowcaseRow from './ShowcaseRow'; - -/** - * TabsShowcase component displays Tabs variants and examples - */ -export default function TabsShowcase() { - return ( - console.log(newValue)}> - - Circle - - Sphere - - Square - - - `} - > - console.log(newValue)} - > - - Circle - - Sphere - - Square - - - - ); -} \ No newline at end of file diff --git a/platform/docs/src/pages/components/ToastShowcase.tsx b/platform/docs/src/pages/components/ToastShowcase.tsx deleted file mode 100644 index b79ae5c33c6..00000000000 --- a/platform/docs/src/pages/components/ToastShowcase.tsx +++ /dev/null @@ -1,158 +0,0 @@ -import React from 'react'; -import { Button } from '../../../../ui-next/src/components/Button'; -import { Toaster, toast } from '../../../../ui-next/src/components/Sonner'; -import ShowcaseRow from './ShowcaseRow'; - -/** - * ToastShowcase component displays Toast variants and examples - */ -export default function ToastShowcase() { - // Handlers to trigger different types of toasts - const triggerSuccess = () => { - toast.success('This is a success toast!'); - }; - - const triggerError = () => { - toast.error('This is an error toast!'); - }; - - const triggerInfo = () => { - toast.info('This is an info toast!'); - }; - - const triggerWarning = () => { - toast.warning('This is a warning toast!'); - }; - - // Handler to trigger a toast.promise example - const triggerPromiseToast = () => { - const promise = () => - new Promise<{ name: string }>(resolve => - setTimeout(() => resolve({ name: 'Segmentation 1' }), 3000) - ); - - toast.promise(promise(), { - loading: 'Loading Segmentation...', - success: data => `${data.name} has been added`, - error: 'Error', - }); - }; - - // Handler to trigger a toast with description - const triggerDescriptionToast = () => { - toast.success('Completed', { - description: 'This is a detailed description of the success message.', - }); - }; - - // Handler to trigger a toast with an action button - const triggerActionButtonToast = () => { - toast.info('No active segmentation detected', { - description: 'Create a segmentation before using the Brush', - }); - }; - - // Handler to trigger a toast with a cancel button - const triggerCancelButtonToast = () => { - toast.error('No active segmentation detected', { - description: 'Create a segmentation before using the Brush', - }); - }; - - // Handler to trigger a toast with both action and cancel buttons - const triggerCombinedToast = () => { - toast.warning('Warning!', { - description: 'This is a warning with both action and cancel buttons.', - action: ( - - ), - cancel: ( - - ), - }); - }; - - return ( - - Simple message: -
- - - - - -
- Message with details: -
- - - - -
- -
- ); -} diff --git a/platform/docs/src/pages/components/ToolButtonListShowcase.tsx b/platform/docs/src/pages/components/ToolButtonListShowcase.tsx deleted file mode 100644 index eccae8f9484..00000000000 --- a/platform/docs/src/pages/components/ToolButtonListShowcase.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import React from 'react'; -import { - ToolButtonList, - ToolButton, - ToolButtonListDefault, - ToolButtonListDropDown, - ToolButtonListItem, - ToolButtonListDivider, -} from '../../../../ui-next/src/components/ToolButton'; -import { TooltipProvider } from '../../../../ui-next/src/components/Tooltip'; - -import ShowcaseRow from './ShowcaseRow'; - -/** - * ToolButtonListShowcase component displays ToolButtonList variants and examples - */ -export default function ToolButtonListShowcase() { - return ( - - - console.debug(\`Clicked \${itemId}\`)} - /> - - - - console.debug('Selected Length')} - > - Length - - console.debug('Selected Bidirectional')} - > - Bidirectional - - - - `} - > -
- - - - console.debug(`Clicked ${itemId}`)} - /> - - - - console.debug('Selected Length')} - > - Length - - console.debug('Selected Bidirectional')} - > - Bidirectional - - console.debug('Selected Annotation')} - > - Annotation - - - - -
-
- ); -} diff --git a/platform/docs/src/pages/components/ToolButtonShowcase.tsx b/platform/docs/src/pages/components/ToolButtonShowcase.tsx deleted file mode 100644 index b3dcf103e6e..00000000000 --- a/platform/docs/src/pages/components/ToolButtonShowcase.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import React from 'react'; -import { TooltipProvider } from '../../../../ui-next/src/components/Tooltip'; -import ToolButton from '../../../../ui-next/src/components/ToolButton/ToolButton'; -import ShowcaseRow from './ShowcaseRow'; - -/** - * ToolButtonShowcase component displays ToolButton variants and examples - */ -export default function ToolButtonShowcase() { - return ( - console.debug(\`Clicked \${itemId}\`)} -/> - `} - > -
- - console.debug(`Clicked ${itemId}`)} - /> - console.debug(`Clicked ${itemId}`)} - /> - console.debug(`Clicked ${itemId}`)} - /> - -
-
- ); -} diff --git a/platform/docs/src/pages/components/TooltipShowcase.tsx b/platform/docs/src/pages/components/TooltipShowcase.tsx deleted file mode 100644 index 359add8b804..00000000000 --- a/platform/docs/src/pages/components/TooltipShowcase.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import React from 'react'; -import BrowserOnly from '@docusaurus/BrowserOnly'; -import ShowcaseRow from './ShowcaseRow'; -import { Button } from '../../../../ui-next/src/components/Button'; - -/** - * TooltipShowcase component displays Tooltip variants and examples - */ -export default function TooltipShowcase() { - return ( - }> - {() => { - const { - Tooltip, - TooltipTrigger, - TooltipContent, - TooltipProvider, - } = require('../../../../ui-next/src/components/Tooltip'); - - return ( - - - - - - - Tooltip content - - - `} - > - - - - - Tooltip content - - - - ); - }} - - ); -} \ No newline at end of file diff --git a/platform/docs/src/pages/components/_layout/CodeBlock.tsx b/platform/docs/src/pages/components/_layout/CodeBlock.tsx new file mode 100644 index 00000000000..2286de9e049 --- /dev/null +++ b/platform/docs/src/pages/components/_layout/CodeBlock.tsx @@ -0,0 +1,45 @@ +import React, { useState, useRef, useEffect } from 'react'; + +interface CodeBlockProps { + code: string; +} + +export default function CodeBlock({ code }: CodeBlockProps) { + const [copied, setCopied] = useState(false); + const timerRef = useRef>(); + + useEffect(() => () => clearTimeout(timerRef.current), []); + + const handleCopy = async () => { + try { + await navigator.clipboard.writeText(code.trim()); + } catch { + const textarea = document.createElement('textarea'); + textarea.value = code.trim(); + textarea.style.position = 'fixed'; + textarea.style.opacity = '0'; + document.body.appendChild(textarea); + textarea.select(); + document.execCommand('copy'); + document.body.removeChild(textarea); + } + setCopied(true); + clearTimeout(timerRef.current); + timerRef.current = setTimeout(() => setCopied(false), 2000); + }; + + return ( +
+ +
+        {code}
+      
+
+ ); +} diff --git a/platform/docs/src/pages/components/_layout/ComponentLayout.tsx b/platform/docs/src/pages/components/_layout/ComponentLayout.tsx new file mode 100644 index 00000000000..e340ca67a1f --- /dev/null +++ b/platform/docs/src/pages/components/_layout/ComponentLayout.tsx @@ -0,0 +1,120 @@ +import React, { useState, useRef } from 'react'; +import Layout from '@theme/Layout'; +import Link from '@docusaurus/Link'; +import { useLocation } from '@docusaurus/router'; +import { sidebarSections } from './sidebar-config'; +import TableOfContents from './TableOfContents'; + +interface ComponentLayoutProps { + title: string; + description?: string; + children: React.ReactNode; +} + +export default function ComponentLayout({ title, description, children }: ComponentLayoutProps) { + const [sidebarOpen, setSidebarOpen] = useState(false); + const contentRef = useRef(null); + const { pathname: currentPath } = useLocation(); + const { ScrollArea } = require('../../../../../ui-next/src/components/ScrollArea'); + + return ( + +
+ {/* Mobile sidebar toggle */} + + + {/* Mobile overlay */} + {sidebarOpen && ( +
setSidebarOpen(false)} + /> + )} + + {/* Sidebar */} + + + {/* Content */} +
+
{children}
+
+ + {/* Right-hand table of contents */} + +
+ + ); +} diff --git a/platform/docs/src/pages/components/_layout/ExampleBlock.tsx b/platform/docs/src/pages/components/_layout/ExampleBlock.tsx new file mode 100644 index 00000000000..aba79d96de4 --- /dev/null +++ b/platform/docs/src/pages/components/_layout/ExampleBlock.tsx @@ -0,0 +1,16 @@ +import React from 'react'; + +interface ExampleBlockProps { + title: string; + children: React.ReactNode; + last?: boolean; +} + +export default function ExampleBlock({ title, children, last }: ExampleBlockProps) { + return ( +
+

{title}

+
{children}
+
+ ); +} diff --git a/platform/docs/src/pages/components/_layout/InteractivePicker.tsx b/platform/docs/src/pages/components/_layout/InteractivePicker.tsx new file mode 100644 index 00000000000..44c6c915cfb --- /dev/null +++ b/platform/docs/src/pages/components/_layout/InteractivePicker.tsx @@ -0,0 +1,60 @@ +import React, { useState } from 'react'; + +export interface PickerOption { + value: string; + label: string; + description: string; +} + +interface InteractivePickerProps { + options: PickerOption[]; + defaultValue?: string; + renderPreview: (activeValue: string) => React.ReactNode; +} + +export default function InteractivePicker({ + options, + defaultValue, + renderPreview, +}: InteractivePickerProps) { + const [active, setActive] = useState(defaultValue || options[0]?.value || ''); + const activeOption = options.find(o => o.value === active); + + return ( +
+
+ {options.map(o => ( + + ))} +
+
+ {renderPreview(active)} +
+
+

+ {active} + {' — '} + {activeOption?.description} +

+
+
+ ); +} diff --git a/platform/docs/src/pages/components/_layout/PageHeader.tsx b/platform/docs/src/pages/components/_layout/PageHeader.tsx new file mode 100644 index 00000000000..e89fc269e4b --- /dev/null +++ b/platform/docs/src/pages/components/_layout/PageHeader.tsx @@ -0,0 +1,18 @@ +import React from 'react'; + +interface PageHeaderProps { + title: React.ReactNode; + description: string; +} + +export default function PageHeader({ title, description }: PageHeaderProps) { + return ( +
+

{title}

+

{description}

+
+ ); +} diff --git a/platform/docs/src/pages/components/_layout/PropsTable.tsx b/platform/docs/src/pages/components/_layout/PropsTable.tsx new file mode 100644 index 00000000000..0e8b2fa7fd6 --- /dev/null +++ b/platform/docs/src/pages/components/_layout/PropsTable.tsx @@ -0,0 +1,46 @@ +import React from 'react'; + +export interface PropDef { + name: string; + type: string; + default: string; + description: string; +} + +interface PropsTableProps { + props: PropDef[]; +} + +export default function PropsTable({ props }: PropsTableProps) { + const { + Table, + TableHeader, + TableBody, + TableHead, + TableRow, + TableCell, + } = require('../../../../../ui-next/src/components/Table'); + + return ( + + + + Prop + Type + Default + Description + + + + {props.map(prop => ( + + {prop.name} + {prop.type} + {prop.default} + {prop.description} + + ))} + +
+ ); +} diff --git a/platform/docs/src/pages/components/_layout/Section.tsx b/platform/docs/src/pages/components/_layout/Section.tsx new file mode 100644 index 00000000000..809f7f94e9b --- /dev/null +++ b/platform/docs/src/pages/components/_layout/Section.tsx @@ -0,0 +1,29 @@ +import React from 'react'; + +function slugify(text: string): string { + return text + .toLowerCase() + .replace(/[^a-z0-9]+/g, '-') + .replace(/^-|-$/g, ''); +} + +interface SectionProps { + title: string; + children: React.ReactNode; +} + +export default function Section({ title, children }: SectionProps) { + const id = slugify(title); + + return ( +
+

+ {title} +

+ {children} +
+ ); +} diff --git a/platform/docs/src/pages/components/_layout/TableOfContents.tsx b/platform/docs/src/pages/components/_layout/TableOfContents.tsx new file mode 100644 index 00000000000..be4637bc94e --- /dev/null +++ b/platform/docs/src/pages/components/_layout/TableOfContents.tsx @@ -0,0 +1,101 @@ +import React, { useState, useEffect } from 'react'; + +interface TocItem { + id: string; + text: string; +} + +interface TableOfContentsProps { + contentRef: React.RefObject; +} + +export default function TableOfContents({ contentRef }: TableOfContentsProps) { + const [headings, setHeadings] = useState([]); + const [activeId, setActiveId] = useState(''); + + useEffect(() => { + const container = contentRef.current; + if (!container) return; + + const discoverHeadings = () => { + const h2s = container.querySelectorAll('h2[id]'); + if (h2s.length === 0) return false; + const sections = Array.from(h2s).map(h2 => ({ + id: h2.id, + text: h2.textContent || '', + })); + setHeadings([{ id: 'overview', text: 'Overview' }, ...sections]); + return true; + }; + + if (discoverHeadings()) return; + + // BrowserOnly content renders after mount — watch for it + const observer = new MutationObserver(() => { + if (discoverHeadings()) observer.disconnect(); + }); + observer.observe(container, { childList: true, subtree: true }); + + return () => observer.disconnect(); + }, []); + + useEffect(() => { + if (headings.length === 0) return; + + let rafId = 0; + const handleScroll = () => { + cancelAnimationFrame(rafId); + rafId = requestAnimationFrame(() => { + const scrollTop = window.scrollY + 80; + let current = headings[0]?.id || ''; + + for (const { id } of headings) { + const el = document.getElementById(id); + if (el) { + const top = el.getBoundingClientRect().top + window.scrollY; + if (top <= scrollTop) { + current = id; + } + } + } + + setActiveId(current); + }); + }; + + handleScroll(); + window.addEventListener('scroll', handleScroll, { passive: true }); + return () => { + window.removeEventListener('scroll', handleScroll); + cancelAnimationFrame(rafId); + }; + }, [headings]); + + if (headings.length === 0) return null; + + return ( + + ); +} diff --git a/platform/docs/src/pages/components/_layout/sidebar-config.ts b/platform/docs/src/pages/components/_layout/sidebar-config.ts new file mode 100644 index 00000000000..81822371eec --- /dev/null +++ b/platform/docs/src/pages/components/_layout/sidebar-config.ts @@ -0,0 +1,51 @@ +export interface SidebarItem { + label: string; + href: string; +} + +export interface SidebarSection { + title: string; + items: SidebarItem[]; +} + +export const sidebarSections: SidebarSection[] = [ + { + title: 'Foundations', + items: [ + { label: 'Overview', href: '/components' }, + { label: 'Colors & Theming', href: '/colors-and-theming' }, + { label: 'Iconography', href: '/components/icons' }, + ], + }, + { + title: 'Components', + items: [ + { label: 'AllInOneMenu', href: '/components/all-in-one-menu' }, + { label: 'Button', href: '/components/button' }, + { label: 'Checkbox', href: '/components/checkbox' }, + { label: 'CinePlayer', href: '/components/cine-player' }, + { label: 'Combobox', href: '/components/combobox' }, + { label: 'DataRow', href: '/components/data-row' }, + { label: 'DataTable', href: '/components/data-table' }, + { label: 'Dialog', href: '/components/dialog' }, + { label: 'DropdownMenu', href: '/components/dropdown-menu' }, + { label: 'HoverCard', href: '/components/hover-card' }, + { label: 'Input', href: '/components/input' }, + { label: 'Label', href: '/components/label' }, + { label: 'Numeric', href: '/components/numeric' }, + { label: 'PanelSection', href: '/components/panel-section' }, + { label: 'Popover', href: '/components/popover' }, + { label: 'ScrollArea', href: '/components/scroll-area' }, + { label: 'Select', href: '/components/select' }, + { label: 'Slider', href: '/components/slider' }, + { label: 'SmartScrollbar', href: '/components/smart-scrollbar' }, + { label: 'Switch', href: '/components/switch-toggle' }, + { label: 'Table', href: '/components/table' }, + { label: 'Tabs', href: '/components/tabs' }, + { label: 'Toast', href: '/components/toast' }, + { label: 'ToolButton', href: '/components/tool-button' }, + { label: 'ToolButtonList', href: '/components/tool-button-list' }, + { label: 'Tooltip', href: '/components/tooltip' }, + ], + }, +]; diff --git a/platform/docs/src/pages/components/all-in-one-menu.tsx b/platform/docs/src/pages/components/all-in-one-menu.tsx new file mode 100644 index 00000000000..8c44aa418bf --- /dev/null +++ b/platform/docs/src/pages/components/all-in-one-menu.tsx @@ -0,0 +1,410 @@ +import React, { useState } from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function AllInOneMenuPageContent() { + // Load from the barrel to avoid circular dependency TDZ crash. + // IconMenu, SubMenu, BackItem, and ItemPanel all import from '@ohif/ui-next'. + const { + AllInOneMenu, + Switch, + } = require('../../../../ui-next/src/components'); + + const { + IconMenu, + SubMenu, + ItemPanel, + Item, + DividerItem, + Menu, + HorizontalDirection, + VerticalDirection, + } = AllInOneMenu; + + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const colorLUTs = [ + 'Grayscale', + 'X Ray', + 'HSV', + 'Hot Iron', + 'Red Hot', + 'S PET', + 'Perfusion', + 'Rainbow', + 'SUV', + 'GE 256', + 'GE', + 'Siemens', + ]; + + const windowPresets = [ + { desc: 'Soft tissue', wl: '400 / 40' }, + { desc: 'Lung', wl: '1500 / -600' }, + { desc: 'Liver', wl: '150 / 90' }, + { desc: 'Bone', wl: '2500 / 480' }, + { desc: 'Brain', wl: '80 / 40' }, + ]; + + const menuProps = [ + { name: 'isVisible', type: 'boolean', default: 'false', description: 'Controls menu visibility' }, + { name: 'menuStyle', type: 'CSSProperties', default: '—', description: 'Inline styles on the menu container (e.g. width, maxHeight)' }, + { name: 'menuClassName', type: 'string', default: '—', description: 'Additional CSS classes on the menu container' }, + { name: 'backLabel', type: 'string', default: '"Back"', description: 'Label shown on the back button when inside a SubMenu' }, + { name: 'headerComponent', type: 'ReactNode', default: '—', description: 'Content rendered above the menu items (e.g. a search input)' }, + { name: 'showHeaderDivider', type: 'boolean', default: 'false', description: 'Show a divider below the header component' }, + { name: 'activePanelIndex', type: 'number', default: '0', description: 'Which ItemPanel tab is active (when multiple panels exist)' }, + { name: 'preventHideMenu', type: 'boolean', default: 'false', description: 'Prevent the menu from closing on item click' }, + { name: 'onVisibilityChange', type: '(visible: boolean) => void', default: '—', description: 'Called when visibility changes' }, + { name: 'children', type: 'ReactNode', default: '—', description: 'Menu content (ItemPanel, SubMenu, Item, etc.)' }, + ]; + + const iconMenuProps = [ + { name: 'icon', type: 'string', default: '—', description: 'Icon name from the OHIF icon registry' }, + { name: 'iconClassName', type: 'string', default: '—', description: 'CSS classes on the icon wrapper' }, + { name: 'horizontalDirection', type: 'HorizontalDirection', default: 'LeftToRight', description: 'Which edge of the icon the menu aligns to' }, + { name: 'verticalDirection', type: 'VerticalDirection', default: 'BottomToTop', description: 'Whether the menu opens above or below the icon' }, + { name: 'menuStyle', type: 'CSSProperties', default: '—', description: 'Inline styles passed to the inner Menu' }, + { name: 'menuKey', type: 'string | number', default: '—', description: 'React key for the inner Menu (forces remount on change)' }, + ]; + + const itemProps = [ + { name: 'label', type: 'string', default: '—', description: 'Primary text for the item' }, + { name: 'secondaryLabel', type: 'string', default: '—', description: 'Right-aligned secondary text (e.g. a keyboard shortcut or value)' }, + { name: 'icon', type: 'ReactNode', default: '—', description: 'Icon rendered in the left gutter' }, + { name: 'rightIcon', type: 'ReactNode', default: '—', description: 'Content rendered on the far right (e.g. a Switch toggle)' }, + { name: 'useIconSpace', type: 'boolean', default: 'false', description: 'Reserve left gutter space even when no icon is provided' }, + { name: 'onClick', type: '() => void', default: '—', description: 'Called on click. The menu auto-hides after.' }, + ]; + + const subMenuProps = [ + { name: 'itemLabel', type: 'string', default: '—', description: 'Text shown in the parent menu for this submenu entry' }, + { name: 'itemIcon', type: 'string', default: '—', description: 'Icon name shown next to the submenu label' }, + { name: 'onClick', type: '() => void', default: '—', description: 'Called when the submenu entry is clicked (in addition to navigating)' }, + { name: 'children', type: 'ReactNode', default: '—', description: 'The submenu content (ItemPanel with Items)' }, + ]; + + const itemPanelProps = [ + { name: 'label', type: 'string', default: '—', description: 'Tab label shown in the PanelSelector when multiple panels exist' }, + { name: 'index', type: 'number', default: '0', description: 'Panel index for tab ordering' }, + { name: 'maxHeight', type: 'string', default: '"250px"', description: 'Max height before scrolling (CSS value)' }, + { name: 'className', type: 'string', default: '—', description: 'Additional CSS classes' }, + { name: 'children', type: 'ReactNode', default: '—', description: 'Panel content (Items, SubMenus, DividerItems, etc.)' }, + ]; + + return ( + + + +
+
+

+ AllInOneMenu is a compound component system for + building hierarchical menus with stack-based navigation. Clicking a SubMenu pushes a + new level onto the menu stack; a Back button at the top pops back to the previous level. + This lets users drill into nested options without losing context. +

+

+ In the OHIF Viewer, AllInOneMenu powers the{' '} + viewport action corner menus — Window/Level + presets, color LUT selection, orientation controls, and display options. It is one of the + most heavily used UI patterns in the application. +

+

+ The system consists of several composable parts:{' '} + Menu (root container),{' '} + IconMenu (icon trigger + menu),{' '} + ItemPanel (scrollable panel with optional tabs),{' '} + SubMenu (drills deeper),{' '} + Item (leaf action),{' '} + DividerItem (separator), and{' '} + HeaderItem (section label). +

+
+
+ +
+ +
+
+ + + + } + useIconSpace={false} + /> + + + + + } + /> + + {colorLUTs.map(name => ( + + ))} + + + + + {windowPresets.map(p => ( + + ))} + + + + + + Click to explore the menu hierarchy + +
+
+
+ + +
+
+ + + + + + + + + + + + Simple action list + +
+
+
+ + +
+ + + + + + + + + +
+
+
+ +
+
+

+ A typical AllInOneMenu is structured as an IconMenu wrapping + one or more ItemPanels, each containing{' '} + Items and{' '} + SubMenus. +

+
+{`IconMenu (icon trigger + positioned Menu)
+├── ItemPanel (scrollable, labeled for tabs)
+│   ├── Item (leaf action — label, icon, secondaryLabel)
+│   ├── Item + rightIcon (e.g. Switch toggle)
+│   ├── DividerItem (separator)
+│   ├── SubMenu → pushes a new level
+│   │   └── ItemPanel
+│   │       ├── Item
+│   │       └── Item
+│   └── SubMenu → pushes a new level
+│       └── ItemPanel
+│           └── Item
+└── (optional) second ItemPanel → creates tabbed panels`}
+          
+

+ When a SubMenu is clicked, its children replace the + current view and a Back button appears at the top. + When multiple ItemPanels exist at the same level, + a tab bar appears to switch between them. +

+
+
+ +
+ + + + + + + + + + + + + +// Simple flat menu + + + + + +`} + /> +
+ +
+
+

+ HorizontalDirection controls which edge the menu aligns to: +

+
    +
  • LeftToRight — menu left edge aligns with icon left edge. Use when the icon is near the left side of its container.
  • +
  • RightToLeft — menu right edge aligns with icon right edge. Use when the icon is near the right side.
  • +
+

+ VerticalDirection controls whether the menu opens above or below: +

+
    +
  • TopToBottom — menu appears below the icon. Use when the icon is near the top.
  • +
  • BottomToTop — menu appears above the icon. Use when the icon is near the bottom (default).
  • +
+

+ In the OHIF Viewer, viewport action corners typically use BottomToTop + RightToLeft + (top-right corner) or TopToBottom + LeftToRight (bottom-left corner) depending on + where the trigger lives. +

+
+
+ +
+
+
+

Menu

+

+ Root container. Manages visibility, menu path stack, and panel selection. + Usually used indirectly via IconMenu. +

+ +
+ +
+

IconMenu

+

+ Wraps Menu with a clickable icon trigger and outside-click dismissal. + Inherits all Menu props in addition to the ones below. +

+ +
+ +
+

Item

+

+ A single actionable row. Clicking an Item auto-closes the menu. +

+ +
+ +
+

SubMenu

+

+ Pushes a new level onto the menu stack when clicked. Shows a chevron indicator. + Its children define the content of the new level. +

+ +
+ +
+

ItemPanel

+

+ Scrollable container for Items. When multiple ItemPanels exist at the same menu level, + a tab bar appears to switch between them. +

+ +
+ +
+

DividerItem

+

+ A thin horizontal line separating groups of items. No props. +

+
+ +
+

HeaderItem

+

+ A compact section label rendered in muted text. Accepts children: ReactNode. +

+
+
+
+ +
+ ); +} + +export default function AllInOneMenuPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/button.tsx b/platform/docs/src/pages/components/button.tsx new file mode 100644 index 00000000000..8d5a8e07399 --- /dev/null +++ b/platform/docs/src/pages/components/button.tsx @@ -0,0 +1,147 @@ +import React from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function ButtonPageContent() { + const { Button } = require('../../../../ui-next/src/components/Button'); + const { Icons } = require('../../../../ui-next/src/components/Icons'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const InteractivePicker = require('./_layout/InteractivePicker').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const variants = [ + { value: 'default', label: 'Default', description: 'Primary action. Solid blue background.' }, + { value: 'secondary', label: 'Secondary', description: 'Secondary action. Muted blue background.' }, + { value: 'ghost', label: 'Ghost', description: 'Minimal emphasis. Transparent until hovered. Used in toolbars and panels.' }, + { value: 'outline', label: 'Outline', description: 'Border-only with transparent fill. Presence without weight.' }, + { value: 'link', label: 'Link', description: 'Inline text with underline on hover. For navigation-style actions.' }, + { value: 'destructive', label: 'Destructive', description: 'Red background for dangerous or irreversible actions.' }, + ]; + + const sizes = [ + { value: 'sm', label: 'Small', description: 'Compact. Height: 24px (h-6).' }, + { value: 'default', label: 'Default', description: 'Standard. Height: 28px (h-7).' }, + { value: 'lg', label: 'Large', description: 'Height: 36px (h-9). For prominent dialog actions.' }, + { value: 'icon', label: 'Icon', description: 'Square icon button. 24×24px (h-6 w-6).' }, + ]; + + const props = [ + { name: 'variant', type: '"default" | "secondary" | "ghost" | "outline" | "link" | "destructive"', default: '"default"', description: 'Visual style variant' }, + { name: 'size', type: '"default" | "sm" | "lg" | "icon"', default: '"default"', description: 'Button size' }, + { name: 'asChild', type: 'boolean', default: 'false', description: 'Merge props onto child element instead of rendering a button' }, + { name: 'disabled', type: 'boolean', default: 'false', description: 'Disables interaction and reduces opacity' }, + { name: 'className', type: 'string', default: '—', description: 'Additional CSS classes merged via cn()' }, + ]; + + return ( + + + + {/* Description */} +
+
+

+ The Button component is the primary interactive element for triggering actions. + It supports six variants to express different levels of emphasis and intent. +

+

+ In the OHIF Viewer, default (primary) + buttons appear in dialogs and confirmation screens where a single action is required.{' '} + Ghost buttons are used throughout panels + and toolbars where many actions compete for attention.{' '} + Secondary buttons pair with primary buttons + when a less prominent alternative is needed. +

+
+
+ +
+ ( + + )} + /> +
+ +
+ + active === 'icon' ? ( + + ) : ( + + ) + } + /> +
+ +
+ +
+ + +
+
+ + +
+ + +
+
+ + +
+ + +
+
+
+ +
+ Click me + +`} + /> +
+ +
+ +
+
+ ); +} + +export default function ButtonPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/checkbox.tsx b/platform/docs/src/pages/components/checkbox.tsx new file mode 100644 index 00000000000..046b4bfb25c --- /dev/null +++ b/platform/docs/src/pages/components/checkbox.tsx @@ -0,0 +1,129 @@ +import React from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function CheckboxPageContent() { + const { Checkbox } = require('../../../../ui-next/src/components/Checkbox'); + const { Label } = require('../../../../ui-next/src/components/Label'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const InteractivePicker = require('./_layout/InteractivePicker').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const states = [ + { value: 'unchecked', label: 'Unchecked', description: 'Default state. Empty border.' }, + { value: 'checked', label: 'Checked', description: 'Active state. Filled with primary color and check icon.' }, + { value: 'disabled', label: 'Disabled', description: 'Non-interactive. Reduced opacity.' }, + ]; + + const props = [ + { name: 'checked', type: 'boolean', default: '—', description: 'Controlled checked state' }, + { name: 'defaultChecked', type: 'boolean', default: 'false', description: 'Initial checked state (uncontrolled)' }, + { name: 'onCheckedChange', type: '(checked: boolean) => void', default: '—', description: 'Called when the checked state changes' }, + { name: 'disabled', type: 'boolean', default: 'false', description: 'Disables interaction and reduces opacity' }, + { name: 'className', type: 'string', default: '—', description: 'Additional CSS classes merged via cn()' }, + ]; + + return ( + + + +
+
+

+ Checkbox provides a compact boolean toggle built on Radix UI primitives. + When possible, prefer Switch for + better visibility and touch targets. Use Checkbox when space is constrained + or when multiple options appear in a list. +

+

+ In the OHIF Viewer, checkboxes appear in settings panels and segmentation + controls where multiple independent options need toggling. +

+
+
+ +
+ ( +
+ + +
+ )} + /> +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+ + +
+
+
+ +
+ + + +
`} + /> + + +
+ +
+ + ); +} + +export default function CheckboxPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/cine-player.tsx b/platform/docs/src/pages/components/cine-player.tsx new file mode 100644 index 00000000000..c5e6b26fec4 --- /dev/null +++ b/platform/docs/src/pages/components/cine-player.tsx @@ -0,0 +1,163 @@ +import React, { useState } from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function CinePlayerPageContent() { + // Load from the barrel — CinePlayer.tsx imports { Icons } from '@ohif/ui-next', + // which re-exports CinePlayer, creating a circular dependency TDZ crash if the barrel + // isn't already cached. + const { CinePlayer } = require('../../../../ui-next/src/components'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const [isPlaying1, setIsPlaying1] = useState(false); + const [fps1, setFps1] = useState(24); + + const [isPlaying2, setIsPlaying2] = useState(false); + const [fps2, setFps2] = useState(10); + + const [isPlaying3, setIsPlaying3] = useState(false); + const [fps3, setFps3] = useState(24); + const [dynamicGroup, setDynamicGroup] = useState(3); + + const props = [ + { name: 'isPlaying', type: 'boolean', default: 'false', description: 'Whether cine playback is active. Controls the play/pause icon.' }, + { name: 'frameRate', type: 'number', default: '24', description: 'Current frames per second value' }, + { name: 'minFrameRate', type: 'number', default: '1', description: 'Minimum FPS allowed' }, + { name: 'maxFrameRate', type: 'number', default: '90', description: 'Maximum FPS allowed' }, + { name: 'stepFrameRate', type: 'number', default: '1', description: 'FPS increment step for the stepper and slider' }, + { name: 'onPlayPauseChange', type: '(playing: boolean) => void', default: '—', description: 'Called when play/pause is toggled' }, + { name: 'onFrameRateChange', type: '(fps: number) => void', default: '—', description: 'Called when FPS changes (debounced 100ms)' }, + { name: 'onClose', type: '() => void', default: '—', description: 'Called when the close button is clicked' }, + { name: 'className', type: 'string', default: '—', description: 'Additional CSS classes on the root container' }, + { name: 'dynamicInfo', type: '{ dimensionGroupNumber, numDimensionGroups, label? }', default: '—', description: 'Dynamic volume info for 4D series. Shows group counter and dimension slider.' }, + { name: 'updateDynamicInfo', type: '(info) => void', default: '—', description: 'Called when the dynamic dimension slider changes' }, + ]; + + return ( + + + +
+
+

+ CinePlayer provides play/pause,{' '} + FPS control (stepper + popover slider), + and a close button in a compact floating bar. + It composes Button, Numeric, and Popover internally. +

+

+ In the OHIF Viewer, CinePlayer appears as a{' '} + floating overlay on viewports when cine + mode is activated. For 4D dynamic volumes{' '} + (e.g. cardiac time series), it additionally shows a dimension group counter and + a scrub slider below the main controls. +

+
+
+ +
+ +
+ setIsPlaying1(false)} + /> +
+
+ + +
+ setIsPlaying2(false)} + /> +
+
+ + +
+ setIsPlaying3(false)} + dynamicInfo={{ + dimensionGroupNumber: dynamicGroup, + numDimensionGroups: 12, + label: 'timepoint', + }} + updateDynamicInfo={(info) => setDynamicGroup(info.dimensionGroupNumber)} + /> +
+
+
+ +
+ setCineEnabled(false)} +/> + +// With 4D dynamic volume +`} + /> +
+ +
+ +
+
+ ); +} + +export default function CinePlayerPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/combobox.tsx b/platform/docs/src/pages/components/combobox.tsx new file mode 100644 index 00000000000..af28a07d4dc --- /dev/null +++ b/platform/docs/src/pages/components/combobox.tsx @@ -0,0 +1,102 @@ +import React from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function ComboboxPageContent() { + const { Combobox, Label } = require('../../../../ui-next/src/components'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const modalities = [ + 'AR', 'AU', 'BI', 'CR', 'CT', 'DG', 'DOC', 'DX', 'ECG', 'ES', + 'GM', 'IO', 'KO', 'MG', 'MR', 'NM', 'OCT', 'OP', 'OT', 'PR', + 'PT', 'REG', 'RF', 'RG', 'RTDOSE', 'RTIMAGE', 'RTPLAN', 'RTSTRUCT', + 'SEG', 'SM', 'SR', 'US', 'XA', 'XC', + ].map(m => ({ value: m, label: m })); + + const tools = [ + { value: 'length', label: 'Length' }, + { value: 'bidirectional', label: 'Bidirectional' }, + { value: 'elliptical-roi', label: 'Elliptical ROI' }, + { value: 'rectangle-roi', label: 'Rectangle ROI' }, + { value: 'angle', label: 'Angle' }, + { value: 'cobb-angle', label: 'Cobb Angle' }, + ]; + + const props = [ + { name: 'data', type: '{ value: string; label: string }[]', default: '[]', description: 'Array of selectable options' }, + { name: 'placeholder', type: 'string', default: '"Select item..."', description: 'Placeholder text shown when no value is selected' }, + ]; + + return ( + + + +
+
+

+ Combobox combines a text search input with a dropdown list, allowing users to + filter through large option sets. It's built on top of{' '} + Command (cmdk) and{' '} + Popover components. +

+

+ Use Combobox instead of Select when the option list is long (10+ items) or + when users benefit from type-to-filter. In the OHIF Viewer, it's used for + modality selection and other searchable lists. +

+
+
+ +
+ + + + + + + + + +
+ + +
+
+
+ +
+ `} + /> +
+ +
+ +
+
+ ); +} + +export default function ComboboxPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/data-row.tsx b/platform/docs/src/pages/components/data-row.tsx new file mode 100644 index 00000000000..2c7f938c047 --- /dev/null +++ b/platform/docs/src/pages/components/data-row.tsx @@ -0,0 +1,289 @@ +import React, { useState } from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function DataRowPageContent() { + const { DataRow } = require('../../../../ui-next/src/components/DataRow'); + const { TooltipProvider } = require('../../../../ui-next/src/components/Tooltip'); + const { dataList } = require('../../../../ui-next/assets/data'); + + const roiToolsGroup = dataList.find(g => g.type === 'ROI Tools'); + const measurementItems = roiToolsGroup ? roiToolsGroup.items.slice(0, 5) : []; + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const InteractivePicker = require('./_layout/InteractivePicker').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const [selectedId, setSelectedId] = useState('seg-1'); + const [visibility, setVisibility] = useState({ 'seg-1': true, 'seg-2': true, 'seg-3': true }); + const [locked, setLocked] = useState({ 'seg-1': false, 'seg-2': true, 'seg-3': false }); + + const noop = (e) => e?.stopPropagation?.(); + + const states = [ + { value: 'default', label: 'Default', description: 'Idle state. Muted background, foreground text.' }, + { value: 'selected', label: 'Selected', description: 'Primary selection. Popover background, highlight title and number box.' }, + { value: 'secondary', label: 'Secondary', description: 'Secondary selection. Primary tint overlay, used for inactive segmentation.' }, + { value: 'hidden', label: 'Hidden', description: 'Visibility off. Entire row at 60% opacity.' }, + ]; + + const props = [ + { name: 'number', type: 'number | null', default: '—', description: 'Display index. Renders a colored number box when provided.' }, + { name: 'description', type: 'string', default: '—', description: 'Secondary text shown below the title (e.g. volume, stats).' }, + { name: 'title', type: 'string', default: '—', description: 'Primary text label. Long titles (>25 chars) get a tooltip.' }, + { name: 'colorHex', type: 'string', default: '—', description: 'Hex color for the dot indicator (e.g. segmentation color)' }, + { name: 'isSelected', type: 'boolean', default: 'false', description: 'Primary selection state (highlighted background + title)' }, + { name: 'isSecondarySelected', type: 'boolean', default: 'false', description: 'Secondary selection (primary tint, for inactive segmentation)' }, + { name: 'onSelect', type: '(e) => void', default: '—', description: 'Called when the row is clicked' }, + { name: 'isVisible', type: 'boolean', default: 'true', description: 'Visibility state. Row renders at 60% opacity when false.' }, + { name: 'onToggleVisibility', type: '(e) => void', default: '—', description: 'Called when the eye icon is clicked' }, + { name: 'isLocked', type: 'boolean', default: 'false', description: 'Shows a lock icon when true' }, + { name: 'onToggleLocked', type: '(e) => void', default: '—', description: 'Called when lock is toggled via the action menu' }, + { name: 'disableEditing', type: 'boolean', default: 'false', description: 'Hides the action menu (rename, delete, color, lock)' }, + { name: 'onRename', type: '(e) => void', default: '—', description: 'Called from the action menu' }, + { name: 'onDelete', type: '(e) => void', default: '—', description: 'Called from the action menu' }, + { name: 'onColor', type: '(e) => void', default: '—', description: 'Called from the action menu' }, + { name: 'onCopy', type: '(e) => void', default: '—', description: 'Optional. Adds a "Duplicate" item to the action menu.' }, + { name: 'details', type: '{ primary: string[], secondary: string[] }', default: '—', description: 'Expandable detail lines below the row (max 4 visible)' }, + { name: 'children', type: 'ReactNode', default: '—', description: 'Status indicators via DataRow.Status.Warning/Success/Error/Info' }, + ]; + + return ( + + + + +
+
+

+ DataRow is the primary list item component in OHIF side panels. It displays a + numbered entry with a title, optional{' '} + color dot,{' '} + visibility toggle,{' '} + lock indicator, and a{' '} + three-dot action menu with + rename, delete, color change, duplicate, and lock/unlock options. +

+

+ In the OHIF Viewer, DataRow is used for{' '} + segmentation lists,{' '} + measurement lists, and any panel + where items need selection, visibility control, and contextual actions. It supports + primary selection (active segmentation) and secondary selection (inactive segmentation) + states. +

+
+
+ +
+ ( +
+ + + +
+ )} + /> +
+ +
+ +
+ {[ + { id: 'seg-1', num: 1, title: 'Liver', color: '#E2B93B' }, + { id: 'seg-2', num: 2, title: 'Spleen', color: '#68B9FF' }, + { id: 'seg-3', num: 3, title: 'Kidney Left', color: '#FF5733' }, + ].map((seg) => ( + setSelectedId(seg.id === selectedId ? null : seg.id)} + onToggleVisibility={(e) => { + e.stopPropagation(); + setVisibility(v => ({ ...v, [seg.id]: !v[seg.id] })); + }} + onToggleLocked={(e) => { + e.stopPropagation(); + setLocked(l => ({ ...l, [seg.id]: !l[seg.id] })); + }} + onRename={noop} + onDelete={noop} + onColor={noop} + /> + ))} +
+
+ + +
+ {measurementItems.map((item, index) => ( + + ))} +
+
+ + +
+ + + +
+
+
+ +
+ setSelectedId('liver')} + onToggleVisibility={handleToggleVisibility} + onToggleLocked={handleToggleLocked} + onRename={handleRename} + onDelete={handleDelete} + onColor={handleColor} +> + +`} + /> +
+ +
+ +
+
+
+ ); +} + +export default function DataRowPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/data-table.tsx b/platform/docs/src/pages/components/data-table.tsx new file mode 100644 index 00000000000..d419dc59e63 --- /dev/null +++ b/platform/docs/src/pages/components/data-table.tsx @@ -0,0 +1,352 @@ +import React, { useState } from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function DataTablePageContent() { + const { DataTable } = require('../../../../ui-next/src/components/DataTable'); + const { + Table: BasicTable, + TableHeader: BasicTableHeader, + TableBody: BasicTableBody, + TableHead: BasicTableHead, + TableRow: BasicTableRow, + TableCell: BasicTableCell, + } = require('../../../../ui-next/src/components/Table'); + const { TooltipProvider } = require('../../../../ui-next/src/components/Tooltip'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const [sorting, setSorting] = useState([]); + const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: 5 }); + const [filters, setFilters] = useState([]); + + const studies = [ + { studyInstanceUid: '1.2.840.1', patientName: 'Smith, John', mrn: '12345678', modality: 'CT', date: 'Mar 15, 2024', description: 'CT Chest with Contrast', instances: 245 }, + { studyInstanceUid: '1.2.840.2', patientName: 'Doe, Jane', mrn: '23456789', modality: 'MR', date: 'Mar 14, 2024', description: 'MR Brain without Contrast', instances: 186 }, + { studyInstanceUid: '1.2.840.3', patientName: 'Lee, Alex', mrn: '34567890', modality: 'CT', date: 'Mar 14, 2024', description: 'CT Abdomen/Pelvis', instances: 312 }, + { studyInstanceUid: '1.2.840.4', patientName: 'Garcia, Maria', mrn: '45678901', modality: 'PET/CT', date: 'Mar 13, 2024', description: 'PET/CT Whole Body', instances: 1024 }, + { studyInstanceUid: '1.2.840.5', patientName: 'Brown, Robert', mrn: '56789012', modality: 'MR', date: 'Mar 12, 2024', description: 'MR Knee Left', instances: 92 }, + { studyInstanceUid: '1.2.840.6', patientName: 'Wilson, Emily', mrn: '67890123', modality: 'CT', date: 'Mar 11, 2024', description: 'CT Head without Contrast', instances: 156 }, + { studyInstanceUid: '1.2.840.7', patientName: 'Chen, Wei', mrn: '78901234', modality: 'US', date: 'Mar 10, 2024', description: 'US Abdomen Complete', instances: 48 }, + { studyInstanceUid: '1.2.840.8', patientName: 'Johnson, Sarah', mrn: '89012345', modality: 'MR', date: 'Mar 09, 2024', description: 'MR Lumbar Spine', instances: 220 }, + ]; + + const columns = [ + { + id: 'patientName', + accessorFn: row => row.patientName, + header: ({ column }) => , + cell: ({ row }) =>
{row.getValue('patientName')}
, + meta: { label: 'Patient', minWidth: 160, priority: 100 }, + }, + { + id: 'mrn', + accessorFn: row => row.mrn, + header: ({ column }) => , + cell: ({ row }) =>
{row.getValue('mrn')}
, + meta: { label: 'MRN', minWidth: 110, priority: 20 }, + }, + { + id: 'date', + accessorFn: row => row.date, + header: ({ column }) => , + cell: ({ row }) =>
{row.getValue('date')}
, + meta: { label: 'Study Date', minWidth: 130, priority: 70 }, + }, + { + id: 'modality', + accessorFn: row => row.modality, + header: ({ column }) => , + cell: ({ row }) =>
{row.getValue('modality')}
, + meta: { label: 'Modality', minWidth: 90, priority: 60 }, + }, + { + id: 'description', + accessorFn: row => row.description, + header: ({ column }) => , + cell: ({ row }) => { + const desc = row.getValue('description'); + return ( +
+ {desc || 'No Description'} +
+ ); + }, + meta: { label: 'Description', minWidth: 200, priority: 90 }, + }, + { + id: 'instances', + accessorFn: row => Number(row.instances), + header: ({ column }) => , + cell: ({ row }) =>
{row.getValue('instances')}
, + sortingFn: (a, b) => a.getValue('instances') - b.getValue('instances'), + meta: { label: 'Instances', align: 'right', minWidth: 80, priority: 50 }, + }, + ]; + + const simpleColumns = [ + { + accessorKey: 'patientName', + header: 'Patient', + meta: { label: 'Patient' }, + }, + { + accessorKey: 'modality', + header: 'Modality', + meta: { label: 'Modality' }, + }, + { + accessorKey: 'date', + header: 'Date', + meta: { label: 'Date' }, + }, + { + accessorKey: 'description', + header: 'Description', + meta: { label: 'Description' }, + }, + ]; + + const dataTableProps = [ + { name: 'data', type: 'TData[]', default: '—', description: 'Array of data objects to display in the table' }, + { name: 'columns', type: 'ColumnDef[]', default: '—', description: 'TanStack React Table column definitions' }, + { name: 'getRowId', type: '(row, index) => string', default: '—', description: 'Custom row ID resolver (defaults to row index)' }, + { name: 'initialVisibility', type: 'VisibilityState', default: '{}', description: 'Initial column visibility state' }, + { name: 'sorting', type: 'SortingState', default: '[]', description: 'Controlled sorting state' }, + { name: 'pagination', type: 'PaginationState', default: '{pageIndex: 0, pageSize: 50}', description: 'Controlled pagination state' }, + { name: 'filters', type: 'ColumnFiltersState', default: '[]', description: 'Controlled column filter state' }, + { name: 'onSortingChange', type: '(updater) => void', default: '—', description: 'Called when sorting changes' }, + { name: 'onPaginationChange', type: '(updater) => void', default: '—', description: 'Called when page or page size changes' }, + { name: 'onFiltersChange', type: '(updater) => void', default: '—', description: 'Called when column filters change' }, + { name: 'manualFiltering', type: 'boolean', default: 'false', description: 'Disables automatic client-side filtering (use for server-side filtering)' }, + { name: 'enforceSingleSelection', type: 'boolean', default: 'true', description: 'Restricts row selection to a single row at a time' }, + { name: 'onSelectionChange', type: '(rows: TData[]) => void', default: '—', description: 'Called when the set of selected rows changes' }, + ]; + + const columnMetaProps = [ + { name: 'label', type: 'string', default: '—', description: 'Column label shown in the ViewOptions dropdown and as the default header text' }, + { name: 'headerContent', type: 'ReactNode', default: '—', description: 'Custom header content that replaces the label in the column header' }, + { name: 'align', type: '"left" | "center" | "right"', default: '"left"', description: 'Content alignment for both header and body cells' }, + { name: 'headerClassName', type: 'string', default: '—', description: 'CSS class applied to the header cell' }, + { name: 'cellClassName', type: 'string', default: '—', description: 'CSS class applied to body cells in this column' }, + { name: 'minWidth', type: 'number | string', default: '—', description: 'Fixed column width (used by colgroup)' }, + { name: 'priority', type: 'number', default: '—', description: 'Responsive drop priority — columns with lower values are hidden first when the table is narrow. Columns without a priority are never auto-hidden.' }, + ]; + + return ( + + + + +
+
+

+ DataTable is a compound component built on{' '} + @tanstack/react-table. The root provider + manages table state and exposes it via context to composable child components:{' '} + Toolbar,{' '} + Title,{' '} + Pagination,{' '} + ViewOptions,{' '} + Table,{' '} + Header,{' '} + FilterRow,{' '} + Body,{' '} + ColumnHeader, and{' '} + ActionOverlayCell. +

+

+ In the OHIF Viewer, DataTable powers the{' '} + Study List — the landing page where + users browse, filter, and open studies. It supports sortable columns, per-column + text filters, pagination, column visibility toggling, responsive column dropping, + and row selection with action overlays. Built on top of the{' '} + Table{' '} + primitives. +

+
+
+ +
+ +
+ row.studyInstanceUid} + sorting={sorting} + pagination={pagination} + filters={filters} + onSortingChange={setSorting} + onPaginationChange={setPagination} + onFiltersChange={setFilters} + onSelectionChange={rows => {}} + > + + Study List +
+ + + + + + + row.toggleSelected(), + }} + /> + + +
+ + + + + + + + + + +
+ +
+
+

+ DataTable uses a compound component pattern. The root{' '} + {''} creates the TanStack table + instance and provides it via context. Child components consume that context to render + their piece of the UI. +

+
+
+ + + + Sub-component + Purpose + + + + {[ + ['DataTable.Toolbar', 'Flex container for title, pagination, and view options', 0], + ['DataTable.Title', 'Table heading text', 1], + ['DataTable.Pagination', 'Page navigation with configurable page sizes (25, 50, 100)', 1], + ['DataTable.ViewOptions', 'Column visibility toggle dropdown', 1], + ['DataTable.Table', 'Layout shell — fixed header table + scrollable body table', 0], + ['DataTable.Header', 'Renders column headers with sort indicators', 1], + ['DataTable.FilterRow', 'Row of per-column text filter inputs', 1], + ['DataTable.Body', 'Table rows with selection state and empty/loading states', 1], + ['DataTable.ColumnHeader', 'Individual column header with sort toggle button', 0], + ['DataTable.ActionOverlayCell', 'Cell with a value that swaps to an action overlay on hover or selection', 0], + ].map(([name, purpose, indent]) => ( + + + {indent ? : null} + {name} + + {purpose} + + ))} + + +
+
+ +
+ row.patient, + header: ({ column }) => , + cell: ({ row }) =>
{row.getValue('patient')}
, + meta: { label: 'Patient', minWidth: 160, priority: 100 }, + }, + // ...more columns +]; + +// 3. Manage state +const [sorting, setSorting] = useState([]); +const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: 25 }); +const [filters, setFilters] = useState([]); + +// 4. Compose the table + row.uid} + sorting={sorting} + pagination={pagination} + filters={filters} + onSortingChange={setSorting} + onPaginationChange={setPagination} + onFiltersChange={setFilters} +> + + Studies +
+ + + + + + + row.toggleSelected(), + }} + /> + +`} + /> +
+ +
+ +
+ +
+
+

+ Column metadata is set via the meta property + on each TanStack column definition. It controls header labels, alignment, sizing, and + responsive behavior. +

+
+ +
+
+
+ ); +} + +export default function DataTablePage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/dialog.tsx b/platform/docs/src/pages/components/dialog.tsx new file mode 100644 index 00000000000..c97973cc7df --- /dev/null +++ b/platform/docs/src/pages/components/dialog.tsx @@ -0,0 +1,189 @@ +import React from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function DialogPageContent() { + const { + Dialog, + DialogTrigger, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, + DialogClose, + Button, + Input, + Label, + } = require('../../../../ui-next/src/components'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const props = [ + { name: 'isDraggable', type: 'boolean', default: 'false', description: 'Enables dragging the dialog by its header' }, + { name: 'shouldCloseOnEsc', type: 'boolean', default: 'true', description: 'Whether pressing Escape closes the dialog' }, + { name: 'shouldCloseOnOverlayClick', type: 'boolean', default: 'true', description: 'Whether clicking the overlay closes the dialog' }, + { name: 'showOverlay', type: 'boolean', default: 'true', description: 'Shows a dimmed backdrop behind the dialog' }, + ]; + + return ( + + + +
+
+

+ Dialog is a multi-part component built on Radix UI primitives:{' '} + Dialog (root),{' '} + DialogTrigger,{' '} + DialogContent,{' '} + DialogHeader,{' '} + DialogFooter,{' '} + DialogTitle,{' '} + and DialogDescription. +

+

+ In the OHIF Viewer, dialogs are used for{' '} + confirmation prompts,{' '} + measurement labels,{' '} + export options, and{' '} + settings panels. The draggable variant + lets users reposition the dialog to see underlying content. +

+
+
+ +
+ + + + + + + + Confirm Action + + + Are you sure you want to proceed? This action cannot be undone. + + + + + + + + + + + + + + + + + + + + + Measurement Label + + Enter a label for this measurement annotation. + + +
+
+
+ + +
+
+ + +
+
+
+ + + + + + + + +
+
+
+ + + + + + + + + Draggable Dialog + + + Drag the header to reposition this dialog over the viewport. + + + + + + + + + +
+ +
+ + + + + + + Title + + Description text. + + + + + + + + + +`} + /> +
+ +
+ +
+
+ ); +} + +export default function DialogPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/dropdown-menu.tsx b/platform/docs/src/pages/components/dropdown-menu.tsx new file mode 100644 index 00000000000..40727cdfa13 --- /dev/null +++ b/platform/docs/src/pages/components/dropdown-menu.tsx @@ -0,0 +1,195 @@ +import React from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function DropdownMenuPageContent() { + const { + DropdownMenu, + DropdownMenuTrigger, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuSeparator, + DropdownMenuLabel, + DropdownMenuCheckboxItem, + DropdownMenuShortcut, + } = require('../../../../ui-next/src/components/DropdownMenu'); + const { Button } = require('../../../../ui-next/src/components/Button'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const [showMeasurements, setShowMeasurements] = React.useState(true); + const [showSegmentations, setShowSegmentations] = React.useState(false); + + const props = [ + { name: 'align', type: '"start" | "center" | "end"', default: '"center"', description: 'Horizontal alignment of the menu relative to the trigger (on DropdownMenuContent)' }, + { name: 'side', type: '"top" | "right" | "bottom" | "left"', default: '"bottom"', description: 'Which side of the trigger the menu opens on (on DropdownMenuContent)' }, + { name: 'sideOffset', type: 'number', default: '4', description: 'Distance in pixels between the trigger and the menu (on DropdownMenuContent)' }, + { name: 'onSelect', type: '() => void', default: '—', description: 'Called when a menu item is selected (on DropdownMenuItem)' }, + ]; + + return ( + + + +
+
+

+ DropdownMenu is a multi-part component built on Radix UI primitives:{' '} + DropdownMenu (root),{' '} + DropdownMenuTrigger,{' '} + DropdownMenuContent,{' '} + and DropdownMenuItem. It also supports{' '} + labels,{' '} + separators,{' '} + checkbox items, and{' '} + keyboard shortcuts. +

+

+ In the OHIF Viewer, dropdown menus appear in toolbar overflow menus, viewport + action corners, layout selectors, and context menus for measurements and segments. +

+
+
+ +
+ +
+ + + + + + Item 1 + Item 2 + Long name Item 3 + + + + + + + + Item 1 + Item 2 + Long name Item 3 + + + + + + + + Item 1 + Item 2 + Long name Item 3 + + + + + + + + Item 1 + Item 2 + Long name Item 3 + + +
+
+ + + + + + + + Viewport Layout + + + 1×1 + ⌘1 + + + 1×2 + ⌘2 + + + 2×2 + ⌘3 + + + Custom... + + + + + + + + + + + Visible Overlays + + + Measurements + + + Segmentations + + + + +
+ +
+ + + + + + handleExport()}> + Export + + + Delete + +`} + /> +
+ +
+ +
+
+ ); +} + +export default function DropdownMenuPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/hover-card.tsx b/platform/docs/src/pages/components/hover-card.tsx new file mode 100644 index 00000000000..92df9971136 --- /dev/null +++ b/platform/docs/src/pages/components/hover-card.tsx @@ -0,0 +1,304 @@ +import React from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function HoverCardPageContent() { + const { + HoverCard, + HoverCardTrigger, + HoverCardContent, + Card, + CardHeader, + CardTitle, + CardContent, + CardDescription, + Button, + Icons, + DataRow, + TooltipProvider, + } = require('../../../../ui-next/src/components'); + + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const segments = [ + { title: 'Liver', color: '#E2B93B', stats: { mean: '72.4', std: '18.2', min: '31.0', max: '128.5', volume: '1,847' } }, + { title: 'Spleen', color: '#68B9FF', stats: { mean: '54.1', std: '12.8', min: '22.0', max: '91.3', volume: '423' } }, + { title: 'Left Kidney', color: '#FF6B6B', stats: { mean: '38.7', std: '9.4', min: '15.2', max: '72.1', volume: '312' } }, + { title: 'Right Kidney', color: '#4ECDC4', stats: { mean: '41.2', std: '10.1', min: '18.0', max: '76.8', volume: '298' } }, + { title: 'Aorta', color: '#C084FC', stats: { mean: '62.9', std: '15.6', min: '28.4', max: '105.2', volume: '186' } }, + ]; + + const hoverCardProps = [ + { name: 'openDelay', type: 'number', default: '700', description: 'Delay in ms before the card opens' }, + { name: 'closeDelay', type: 'number', default: '300', description: 'Delay in ms before the card closes' }, + { name: 'children', type: 'ReactNode', default: '—', description: 'Must contain HoverCardTrigger and HoverCardContent' }, + ]; + + const contentProps = [ + { name: 'side', type: '"top" | "right" | "bottom" | "left"', default: '"bottom"', description: 'Which side of the trigger the card appears on' }, + { name: 'align', type: '"start" | "center" | "end"', default: '"center"', description: 'Alignment relative to the trigger along the side axis' }, + { name: 'sideOffset', type: 'number', default: '4', description: 'Distance in pixels from the trigger' }, + { name: 'className', type: 'string', default: '—', description: 'Additional CSS classes on the content container' }, + ]; + + const triggerProps = [ + { name: 'asChild', type: 'boolean', default: 'false', description: 'Merge props onto the child element instead of rendering a span' }, + ]; + + return ( + + + +
+
+

+ HoverCard is built on Radix UI primitives with three parts:{' '} + HoverCard (root with open/close delay),{' '} + HoverCardTrigger (the hover target), and{' '} + HoverCardContent (the floating surface). +

+

+ Unlike tooltips, hover cards can contain structured layouts — metadata grids, + statistics, and interactive elements. In the OHIF Viewer, hover cards are used for{' '} + data source configuration previews,{' '} + segment statistics in the segmentation panel, + and study/measurement metadata. +

+
+
+ +
+ +
+ + Hover the Source button to see the configuration card + + + + + + + + + + Data Source:{' '} + Configure the server connection and storage settings + + + +
+ Project + ohif-cloud-healthcare + Location + us-east1 + Data set + radiology-primary + DICOM store + dicom-store-prod + + + + +
+ + + +
+ + Hover a segment to see its statistics card + + +
+ {segments.map((seg, i) => ( + + +
+ {}} + onToggleVisibility={() => {}} + onToggleLocked={() => {}} + onRename={() => {}} + onDelete={() => {}} + onColor={() => {}} + /> +
+
+ + + +
+
+ {seg.title} +
+ + +
+ {[ + ['Mean', seg.stats.mean], + ['Std Dev', seg.stats.std], + ['Min', seg.stats.min], + ['Max', seg.stats.max], + ['Volume', seg.stats.volume], + ].map(([label, value]) => ( +
+ {label} + + {value}{' '} + {label === 'Volume' ? 'mm³' : 'HU'} + +
+ ))} + + + + + ))} +
+ +
+ + + +
+ + + + + +
+

CT Chest w/ Contrast

+
+

Patient: DOE^JOHN

+

MRN: 123456

+

Date: 2024-03-15

+

Series: 4 · Images: 512

+
+
+
+
+
+
+
+ +
+ + + + + +

Rich preview content here.

+
+ + +// With Card inside (data source pattern) + + + + + + + + Server configuration details + + + Project + my-project + + + + + +// Side positioning (segmentation list pattern) + + +
{/* DataRow or other trigger */}
+
+ + {/* Statistics card */} + +
`} + /> +
+ +
+
+
+

HoverCard

+

+ Root component. Controls open/close timing. +

+ +
+ +
+

HoverCardTrigger

+

+ The element that activates the hover card. Use asChild to merge onto your own element. +

+ +
+ +
+

HoverCardContent

+

+ The floating surface. Positioned relative to the trigger via side, align, and sideOffset. +

+ +
+
+
+
+ ); +} + +export default function HoverCardPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/icons.tsx b/platform/docs/src/pages/components/icons.tsx new file mode 100644 index 00000000000..364ec9b1f91 --- /dev/null +++ b/platform/docs/src/pages/components/icons.tsx @@ -0,0 +1,327 @@ +import React, { useState, useCallback } from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +const FINAL_ICONS = [ + 'ActionNewDialog', + 'Actions', + 'ActionsBidirectional', + 'ActionsCombine', + 'ActionsCombineIntersect', + 'ActionsCombineMerge', + 'ActionsCombineSubtract', + 'ActionsInterpolate', + 'ActionsSetting', + 'ActionsSimplify', + 'ActionsSmooth', + 'Add', + 'Close', + 'CloudSettings', + 'ColorChange', + 'Controls', + 'Copy', + 'Delete', + 'DicomTagBrowser', + 'DisplayFillAndOutline', + 'DisplayFillOnly', + 'DisplayOutlineOnly', + 'Download', + 'Export', + 'ExternalLink', + 'EyeVisible', + 'FeedbackComplete', + 'GearSettings', + 'GroupLayers', + 'Hide', + 'IconColorLUT', + 'IconMPR', + 'Info', + 'InfoLink', + 'InfoSeries', + 'JumpToSlice', + 'LayerBackground', + 'LayerForeground', + 'LayerSegmentation', + 'LayoutAdvanced3DFourUp', + 'LayoutAdvanced3DMain', + 'LayoutAdvanced3DOnly', + 'LayoutAdvanced3DPrimary', + 'LayoutAdvancedAxialPrimary', + 'LayoutCommon1x1', + 'LayoutCommon1x2', + 'LayoutCommon2x2', + 'LayoutCommon2x3', + 'ListView', + 'LoadingSpinner', + 'Lock', + 'More', + 'MultiplePatients', + 'Opacity', + 'OrientationSwitch', + 'OrientationSwitchA', + 'OrientationSwitchC', + 'OrientationSwitchR', + 'OrientationSwitchS', + 'Patient', + 'Pause', + 'Pin', + 'PinFill', + 'Play', + 'Redo', + 'Rename', + 'Series', + 'Settings', + 'Show', + 'SidePanelCloseLeft', + 'SidePanelCloseRight', + 'SocialGithub', + 'SortingNew', + 'SortingNewAscending', + 'SortingNewDescending', + 'StatusError', + 'StatusSuccess', + 'StatusWarning', + 'Tab4D', + 'TabContours', + 'TabLinear', + 'TabPatientInfo', + 'TabRoiThreshold', + 'TabSegmentation', + 'TabStudies', + 'Threshold', + 'ThumbnailView', + 'Tool3DRotate', + 'ToolAngle', + 'ToolAnnotate', + 'ToolBidirectional', + 'ToolBidirectionalSegment', + 'ToolBrush', + 'ToolCalibrate', + 'ToolCapture', + 'ToolCine', + 'ToolCircle', + 'ToolCobbAngle', + 'ToolContract', + 'ToolCreateThreshold', + 'ToolCrosshair', + 'ToolCrosshairChecked', + 'ToolDicomTagBrowser', + 'ToolEraser', + 'ToolExpand', + 'ToolFlipHorizontal', + 'ToolFreehandRoi', + 'ToolInterpolation', + 'ToolInvert', + 'ToolLabelmapAssist', + 'ToolLayout', + 'ToolLength', + 'ToolMagneticRoi', + 'ToolMagnify', + 'ToolMeasureEllipse', + 'ToolMove', + 'ToolPETSegment', + 'ToolRectangle', + 'ToolReferenceLines', + 'ToolReset', + 'ToolRotateRight', + 'ToolSegBrush', + 'ToolSegEraser', + 'ToolSegmentAnything', + 'ToolShape', + 'ToolSplineRoi', + 'ToolStackScroll', + 'ToolThreshold', + 'ToolToggleDicomOverlay', + 'ToolUltrasoundBidirectional', + 'ToolWindowLevel', + 'ToolWindowRegion', + 'ToolZoom', + 'Undo', + 'ViewportViews', + 'ViewportWindowLevel', + 'WindowLevelAdvanced', +]; + +const SIZE_OPTIONS = [16, 20, 24, 32]; + +function IconsPageContent() { + const { Icons } = require('../../../../ui-next/src/components/Icons'); + const { + Tooltip, + TooltipTrigger, + TooltipContent, + TooltipProvider, + } = require('../../../../ui-next/src/components/Tooltip'); + const { Input } = require('../../../../ui-next/src/components/Input'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const CodeBlock = require('./_layout/CodeBlock').default; + + const [searchQuery, setSearchQuery] = useState(''); + const [iconSize, setIconSize] = useState(24); + const [copiedIcon, setCopiedIcon] = useState(null); + + const handleCopyIcon = useCallback(async (name: string) => { + try { + await navigator.clipboard.writeText(name); + } catch { + const textarea = document.createElement('textarea'); + textarea.value = name; + textarea.style.position = 'fixed'; + textarea.style.opacity = '0'; + document.body.appendChild(textarea); + textarea.select(); + document.execCommand('copy'); + document.body.removeChild(textarea); + } + setCopiedIcon(name); + setTimeout(() => setCopiedIcon(null), 1500); + }, []); + + const filteredIcons = searchQuery.trim() + ? FINAL_ICONS.filter(name => name.toLowerCase().includes(searchQuery.toLowerCase())) + : FINAL_ICONS; + + function IconTile({ name }: { name: string }) { + const IconComponent = (Icons as any)[name]; + if (!IconComponent || typeof IconComponent !== 'function') return null; + + const isCopied = copiedIcon === name; + + return ( + + + + + {name} + + ); + } + + return ( + + + +
+

+ Click any icon to copy its name. Use the search to filter by name, and + the size controls to preview at different dimensions. +

+
+ + {/* Controls: search + size toggles */} +
+
+ setSearchQuery(e.target.value)} + placeholder="Search icons..." + className="h-8 w-full px-3" + /> + {searchQuery && ( + + )} +
+ +
+ Size +
+ {SIZE_OPTIONS.map(size => ( + + ))} +
+
+
+ + {/* Icon count */} +

+ {filteredIcons.length === FINAL_ICONS.length + ? `${FINAL_ICONS.length} icons` + : `${filteredIcons.length} of ${FINAL_ICONS.length} icons`} +

+ + {/* Icon grid */} + + {filteredIcons.length > 0 ? ( +
+ {filteredIcons.map(name => ( + + ))} +
+ ) : ( +
+ No icons found matching “{searchQuery}” +
+ )} +
+ +
+ + + +// Dynamic lookup by name + + +// With custom size +`} + /> +
+
+ ); +} + +export default function IconsPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/index.tsx b/platform/docs/src/pages/components/index.tsx new file mode 100644 index 00000000000..93d59e2265b --- /dev/null +++ b/platform/docs/src/pages/components/index.tsx @@ -0,0 +1,156 @@ +import React from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +const foundations = [ + { + label: 'Colors & Theming', + href: '/colors-and-theming', + description: 'Color tokens, theme presets, and accessibility guidance.', + }, + { + label: 'Iconography', + href: '/components/icons', + description: '137 curated icons, searchable, with click-to-copy names.', + }, +]; + +const componentGroups = [ + { + category: 'Simple', + items: [ + { label: 'Button', href: '/components/button' }, + { label: 'Checkbox', href: '/components/checkbox' }, + { label: 'Input', href: '/components/input' }, + { label: 'Label', href: '/components/label' }, + { label: 'Slider', href: '/components/slider' }, + { label: 'Switch', href: '/components/switch-toggle' }, + ], + }, + { + category: 'Compound', + items: [ + { label: 'Combobox', href: '/components/combobox' }, + { label: 'Dialog', href: '/components/dialog' }, + { label: 'DropdownMenu', href: '/components/dropdown-menu' }, + { label: 'HoverCard', href: '/components/hover-card' }, + { label: 'Popover', href: '/components/popover' }, + { label: 'ScrollArea', href: '/components/scroll-area' }, + { label: 'Select', href: '/components/select' }, + { label: 'Table', href: '/components/table' }, + { label: 'Tabs', href: '/components/tabs' }, + { label: 'Toast / Sonner', href: '/components/toast' }, + { label: 'Tooltip', href: '/components/tooltip' }, + ], + }, + { + category: 'OHIF-specific', + items: [ + { label: 'AllInOneMenu', href: '/components/all-in-one-menu' }, + { label: 'CinePlayer', href: '/components/cine-player' }, + { label: 'DataRow', href: '/components/data-row' }, + { label: 'DataTable', href: '/components/data-table' }, + { label: 'Numeric', href: '/components/numeric' }, + { label: 'PanelSection', href: '/components/panel-section' }, + { label: 'SmartScrollbar', href: '/components/smart-scrollbar' }, + { label: 'ToolButton', href: '/components/tool-button' }, + { label: 'ToolButtonList', href: '/components/tool-button-list' }, + ], + }, +]; + +function OverviewContent() { + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const Link = require('@docusaurus/Link').default; + + return ( + + + Components / ui-next + + } + description="Documentation for the OHIF Viewer design system" + /> + +
+

+ Welcome to the component documentation for the OHIF Viewer.{' '} + @ohif/ui-next is the + design system that shapes the viewer's interface, from the smallest + toggle to the panels and toolbars that frame a study. It builds on the + shadcn/ui and Radix foundation many developers already know, styled + with Tailwind and shaped for the realities of medical imaging: dense + layouts, dark viewports, and long clinical sessions where clarity + matters. +

+

+ Whether you're building the viewer, extending it with a new mode, or + crafting a theme, these docs are here to help you move quickly and + stay consistent. Every component is live and interactive, so you're + looking at the real thing, not a picture of it. Pick a component from + the sidebar to see its variants and props, or open the{' '} + Foundations section to + explore the dark-first theming and color roles that tie the whole + system together. +

+
+ +
+
+
+ {foundations.map(item => ( + +
+ {item.label} +
+

+ {item.description} +

+ + ))} +
+
+ +
+
+ {componentGroups.map(group => ( +
+

+ {group.category} +

+
    + {group.items.map(item => ( +
  • + + {item.label} + +
  • + ))} +
+
+ ))} +
+
+
+
+ ); +} + +export default function OverviewPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/input.tsx b/platform/docs/src/pages/components/input.tsx new file mode 100644 index 00000000000..50335e5fdf6 --- /dev/null +++ b/platform/docs/src/pages/components/input.tsx @@ -0,0 +1,121 @@ +import React from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function InputPageContent() { + const { Input } = require('../../../../ui-next/src/components/Input'); + const { Label } = require('../../../../ui-next/src/components/Label'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const InteractivePicker = require('./_layout/InteractivePicker').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const types = [ + { value: 'text', label: 'Text', description: 'Default text input.' }, + { value: 'number', label: 'Number', description: 'Numeric input with stepper controls.' }, + { value: 'password', label: 'Password', description: 'Masked input for sensitive values.' }, + { value: 'search', label: 'Search', description: 'Search input with clear affordance in some browsers.' }, + ]; + + const props = [ + { name: 'type', type: 'string', default: '"text"', description: 'HTML input type (text, number, password, search, etc.)' }, + { name: 'placeholder', type: 'string', default: '—', description: 'Placeholder text shown when empty' }, + { name: 'value', type: 'string', default: '—', description: 'Controlled input value' }, + { name: 'onChange', type: '(e: ChangeEvent) => void', default: '—', description: 'Called when the input value changes' }, + { name: 'disabled', type: 'boolean', default: 'false', description: 'Disables interaction and reduces opacity' }, + { name: 'className', type: 'string', default: '—', description: 'Additional CSS classes merged via cn()' }, + ]; + + return ( + + + +
+
+

+ The Input component is a styled text field that supports all standard HTML input types. + It features a border on focus, hover highlight, and placeholder text styling. +

+

+ In the OHIF Viewer, inputs appear in dialogs for patient weight, window/level values, + measurement labels, and search fields throughout panels. +

+
+
+ +
+ ( +
+ +
+ )} + /> +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + + + +
+ +
+ Patient Weight +`} + /> +
+ +
+ +
+
+ ); +} + +export default function InputPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/label.tsx b/platform/docs/src/pages/components/label.tsx new file mode 100644 index 00000000000..cc23c162539 --- /dev/null +++ b/platform/docs/src/pages/components/label.tsx @@ -0,0 +1,95 @@ +import React from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function LabelPageContent() { + const { Label } = require('../../../../ui-next/src/components/Label'); + const { Switch } = require('../../../../ui-next/src/components/Switch'); + const { Checkbox } = require('../../../../ui-next/src/components/Checkbox'); + const { Input } = require('../../../../ui-next/src/components/Input'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const props = [ + { name: 'htmlFor', type: 'string', default: '—', description: 'ID of the associated form control' }, + { name: 'className', type: 'string', default: '—', description: 'Additional CSS classes merged via cn()' }, + ]; + + return ( + + + +
+
+

+ Label renders accessible text linked to a form control via the{' '} + htmlFor prop. Built on Radix UI's Label + primitive, it automatically handles click-to-focus and screen reader association. +

+

+ Always pair labels with interactive controls — inputs, switches, checkboxes, and selects. + Labels improve usability by expanding the clickable area and providing context. +

+
+
+ +
+ +
+ + +
+
+ + +
+ + +
+
+ + +
+ + +
+
+ + +
+ + +
+
+
+ +
+ Patient Name +`} + /> +
+ +
+ +
+
+ ); +} + +export default function LabelPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/numeric.tsx b/platform/docs/src/pages/components/numeric.tsx new file mode 100644 index 00000000000..ac28660a424 --- /dev/null +++ b/platform/docs/src/pages/components/numeric.tsx @@ -0,0 +1,294 @@ +import React, { useState } from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function NumericPageContent() { + const Numeric = require('../../../../ui-next/src/components/Numeric').default; + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const InteractivePicker = require('./_layout/InteractivePicker').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const [controlledValue, setControlledValue] = useState(50); + const [controlledValues, setControlledValues] = useState([30, 70] as [number, number]); + const [frameNumber, setFrameNumber] = useState(1); + + const modes = [ + { value: 'number', label: 'Number', description: 'Basic number input field with min/max bounds.' }, + { value: 'stepper', label: 'Stepper', description: 'Number input with increment/decrement buttons. Horizontal or vertical layout.' }, + { value: 'singleRange', label: 'Single Range', description: 'Slider for selecting a single value in a range. Optional number input.' }, + { value: 'doubleRange', label: 'Double Range', description: 'Dual-thumb slider for selecting a value range (e.g. window width/level).' }, + ]; + + const containerProps = [ + { name: 'mode', type: '"number" | "singleRange" | "doubleRange" | "stepper"', default: '—', description: 'Which input mode to render' }, + { name: 'value', type: 'number', default: '—', description: 'Controlled single value (number, singleRange, stepper modes)' }, + { name: 'defaultValue', type: 'number', default: 'midpoint', description: 'Initial uncontrolled single value' }, + { name: 'values', type: '[number, number]', default: '—', description: 'Controlled range values (doubleRange mode)' }, + { name: 'defaultValues', type: '[number, number]', default: '[30%, 70%]', description: 'Initial uncontrolled range values' }, + { name: 'onChange', type: '(val: number | [number, number]) => void', default: '—', description: 'Called when any value changes' }, + { name: 'min', type: 'number', default: '0', description: 'Minimum allowed value' }, + { name: 'max', type: 'number', default: '100', description: 'Maximum allowed value' }, + { name: 'step', type: 'number', default: '1', description: 'Step increment' }, + ]; + + return ( + + + +
+
+

+ Numeric is a compound component with 6 sub-components that share state through + context: Numeric.Container (root + mode),{' '} + Numeric.Label,{' '} + Numeric.NumberInput,{' '} + Numeric.NumberStepper,{' '} + Numeric.SingleRange, and{' '} + Numeric.DoubleRange. +

+

+ In the OHIF Viewer, Numeric controls appear in{' '} + segmentation tool settings (brush size, threshold),{' '} + window/level adjustment,{' '} + opacity controls, and{' '} + cine playback frame rate. The{' '} + mode prop on the Container determines which + input type renders. +

+
+
+ +
+ ( +
+ {active === 'number' && ( + +
+ Width + +
+
+ )} + {active === 'stepper' && ( + +
+ Opacity + +
+
+ )} + {active === 'singleRange' && ( + + Brightness + + + )} + {active === 'doubleRange' && ( + + CT Window + + + )} +
+ )} + /> +
+ +
+ +
+ +
+ Width + +
+
+ + + + Threshold + + + +
+
+ + +
+ setFrameNumber(val as number)} + min={1} + max={5} + step={1} + > +
+ + FPS + + Frame +
+
+ + +
+ Opacity + +
+
+ + +
+ + Zoom +
+
+
+
+ + +
+ + Brightness + + + + + Contrast + + + + setControlledValue(val as number)} + > + Controlled + + +
+
+ + +
+ + Window Width/Level + + + + + With number inputs + + +
+
+ + +
+ + Zoom Factor + + + + +
+ Offset + +
+
+ + + Rotation + + + + + CT Window + + +
+
+
+ +
+ + Width + + + +// Stepper + + Frame + + + +// Single range slider + + Opacity + + + +// Double range slider + + CT Window + +`} + /> +
+ +
+ +
+
+ ); +} + +export default function NumericPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/panel-section.tsx b/platform/docs/src/pages/components/panel-section.tsx new file mode 100644 index 00000000000..bf83dec08a9 --- /dev/null +++ b/platform/docs/src/pages/components/panel-section.tsx @@ -0,0 +1,255 @@ +import React from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function PanelSectionPageContent() { + const { PanelSection, Button, DataRow, TooltipProvider } = require('../../../../ui-next/src/components'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const InteractivePicker = require('./_layout/InteractivePicker').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const noop = (e) => e?.stopPropagation?.(); + + const states = [ + { value: 'open', label: 'Open', description: 'Expanded state. Header shows a downward chevron, content is visible.' }, + { value: 'closed', label: 'Closed', description: 'Collapsed state. Header shows a rightward chevron, content is hidden.' }, + ]; + + const props = [ + { name: 'defaultOpen', type: 'boolean', default: 'true', description: 'Whether the section is expanded on first render' }, + { name: 'className', type: 'string', default: '—', description: 'Additional classes on the root accordion container' }, + ]; + + const headerProps = [ + { name: 'children', type: 'ReactNode', default: '—', description: 'Header text or content displayed in the trigger bar' }, + { name: 'className', type: 'string', default: '—', description: 'Additional classes on the trigger element' }, + ]; + + const contentProps = [ + { name: 'children', type: 'ReactNode', default: '—', description: 'Content shown when the section is expanded' }, + { name: 'className', type: 'string', default: '—', description: 'Additional classes on the content wrapper' }, + ]; + + return ( + + + + +
+
+

+ PanelSection is a compound component built on Radix Accordion with three + parts: PanelSection (root),{' '} + PanelSection.Header (clickable trigger + with auto-rotating chevron), and{' '} + PanelSection.Content (collapsible body). +

+

+ In the OHIF Viewer, PanelSection is used throughout{' '} + side panels to organize{' '} + segmentation lists,{' '} + measurement groups,{' '} + series metadata, and{' '} + tool configuration into + collapsible groups. Sections default to open. +

+
+
+ +
+ ( +
+ + Series Information + +
+
Images: 120
+
Modality: MR
+
Body Part: Brain
+
+
+
+
+ )} + /> +
+ +
+ +
+ + Series Information + +
+
Images: 120
+
Modality: MR
+
Body Part: Brain
+
Slice Thickness: 2.0mm
+
+
+
+
+
+ + +
+ + Segmentations + +
+ + +
+
+
+ + + Measurements + +
+ +
+
+
+ + + Display Sets + +
+ CT Axial 2.0mm +
+
+
+
+
+ + +
+ + Patient Information + +
+
Name: DOE^JOHN
+
MRN: 12345678
+
DOB: 1990-01-15
+
Sex: M
+
+
+ +
+
+
+
+
+
+ +
+ + Series Information + +
+
Images: 120
+
Modality: MR
+
+
+ + +// Collapsed by default + + Advanced Settings + + {/* Tool configuration controls */} + +`} + /> +
+ +
+
+

PanelSection

+ +
+
+

PanelSection.Header

+ +
+
+

PanelSection.Content

+ +
+
+
+
+ ); +} + +export default function PanelSectionPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/popover.tsx b/platform/docs/src/pages/components/popover.tsx new file mode 100644 index 00000000000..69d278966db --- /dev/null +++ b/platform/docs/src/pages/components/popover.tsx @@ -0,0 +1,144 @@ +import React from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function PopoverPageContent() { + const { + Popover, + PopoverTrigger, + PopoverContent, + Button, + Input, + Label, + } = require('../../../../ui-next/src/components'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const props = [ + { name: 'align', type: '"start" | "center" | "end"', default: '"center"', description: 'Horizontal alignment relative to the trigger (on PopoverContent)' }, + { name: 'side', type: '"top" | "right" | "bottom" | "left"', default: '"bottom"', description: 'Which side of the trigger the popover opens on (on PopoverContent)' }, + { name: 'sideOffset', type: 'number', default: '4', description: 'Distance in pixels from the trigger (on PopoverContent)' }, + ]; + + return ( + + + +
+
+

+ Popover is a multi-part component built on Radix UI primitives:{' '} + Popover (root),{' '} + PopoverTrigger, and{' '} + PopoverContent. It also exports{' '} + PopoverAnchor for custom positioning. +

+

+ Unlike tooltips which show on hover, popovers require a click and can contain + interactive content like inputs and buttons. In the OHIF Viewer, popovers are + used for inline settings, color pickers, and compact option panels. +

+
+
+ +
+ + + + + + +

+ Click outside or press Escape to close. +

+
+
+
+ + + + + + + +
+
+ + +
+
+ + +
+ +
+
+
+
+ + +
+ + + + + +

Aligned to start

+
+
+ + + + + +

Opens to the right

+
+
+ + + + + +

Opens above

+
+
+
+
+
+ +
+ + + + + +

Popover content here.

+
+`} + /> +
+ +
+ +
+
+ ); +} + +export default function PopoverPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/scroll-area.tsx b/platform/docs/src/pages/components/scroll-area.tsx new file mode 100644 index 00000000000..d974ef81f86 --- /dev/null +++ b/platform/docs/src/pages/components/scroll-area.tsx @@ -0,0 +1,129 @@ +import React from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function ScrollAreaPageContent() { + const { ScrollArea } = require('../../../../ui-next/src/components/ScrollArea'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const tags = [ + 'CT Axial 2.0mm', 'CT Coronal 2.0mm', 'CT Sagittal 2.0mm', + 'PET Axial', 'PET Coronal', 'PET MIP', + 'Segmentation — Liver', 'Segmentation — Spleen', 'Segmentation — Kidney L', + 'Segmentation — Kidney R', 'Segmentation — Aorta', 'RTSTRUCT', + 'Key Images', 'Prior CT 2023-01-15', 'Prior CT 2022-06-20', + ]; + + const props = [ + { name: 'showArrows', type: 'boolean', default: 'false', description: 'Shows gradient arrow indicators at top/bottom when content is scrollable' }, + { name: 'type', type: '"auto" | "always" | "scroll"', default: '"auto"', description: 'Scrollbar visibility behavior' }, + { name: 'className', type: 'string', default: '—', description: 'Additional CSS classes on the root element' }, + ]; + + return ( + + + +
+
+

+ ScrollArea provides consistent, theme-aware scrollbars across all platforms. + Built on Radix UI's ScrollArea primitive, it replaces native scrollbars with + a slim track and thumb styled for the OHIF dark theme. +

+

+ In the OHIF Viewer, scroll areas wrap{' '} + panel content,{' '} + measurement lists,{' '} + segmentation lists, and any + container where content may exceed the visible area. The optional{' '} + showArrows prop adds gradient + indicators at the top and bottom edges. +

+
+
+ +
+ + +

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor + incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis + nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. + Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu + fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in + culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, + consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore + magna aliqua. +

+
+
+ + + +
+ {tags.map((tag) => ( +
+ {tag} +
+ ))} +
+
+
+ + + +
+ {tags.map((tag) => ( +
+ {tag} +
+ ))} +
+
+
+
+ +
+ + {/* Long content here */} + + +// With scroll arrows + + {/* Long content here */} +`} + /> +
+ +
+ +
+
+ ); +} + +export default function ScrollAreaPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/select.tsx b/platform/docs/src/pages/components/select.tsx new file mode 100644 index 00000000000..effb7b51b9f --- /dev/null +++ b/platform/docs/src/pages/components/select.tsx @@ -0,0 +1,152 @@ +import React from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function SelectPageContent() { + const { + Select, + SelectTrigger, + SelectContent, + SelectItem, + SelectValue, + SelectGroup, + SelectLabel, + SelectSeparator, + } = require('../../../../ui-next/src/components/Select'); + const { Label } = require('../../../../ui-next/src/components/Label'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const props = [ + { name: 'value', type: 'string', default: '—', description: 'Controlled selected value' }, + { name: 'defaultValue', type: 'string', default: '—', description: 'Initial value (uncontrolled)' }, + { name: 'onValueChange', type: '(value: string) => void', default: '—', description: 'Called when selection changes' }, + { name: 'disabled', type: 'boolean', default: 'false', description: 'Disables the entire select' }, + { name: 'placeholder', type: 'string', default: '—', description: 'Text shown when no value is selected (on SelectValue)' }, + ]; + + return ( + + + +
+
+

+ Select is a multi-part component built on Radix UI primitives:{' '} + Select (root),{' '} + SelectTrigger (button),{' '} + SelectContent (dropdown),{' '} + and SelectItem (options). +

+

+ In the OHIF Viewer, selects appear in segmentation panels for choosing the active + segmentation, in settings for display presets, and throughout dialogs for configuration options. +

+
+
+ +
+ + + + + +
+ + +
+
+ + + + + + + + +
+ +
+ + + + + + Light + Dark + System + +`} + /> +
+ +
+ +
+
+ ); +} + +export default function SelectPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/slider.tsx b/platform/docs/src/pages/components/slider.tsx new file mode 100644 index 00000000000..6146904d836 --- /dev/null +++ b/platform/docs/src/pages/components/slider.tsx @@ -0,0 +1,121 @@ +import React, { useState } from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function SliderPageContent() { + const { Slider } = require('../../../../ui-next/src/components/Slider'); + const { Label } = require('../../../../ui-next/src/components/Label'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const props = [ + { name: 'defaultValue', type: 'number[]', default: '—', description: 'Initial value (uncontrolled). Array with one element for single thumb.' }, + { name: 'value', type: 'number[]', default: '—', description: 'Controlled value' }, + { name: 'onValueChange', type: '(value: number[]) => void', default: '—', description: 'Called on every value change during drag' }, + { name: 'onValueCommit', type: '(value: number[]) => void', default: '—', description: 'Called when the user releases the thumb' }, + { name: 'min', type: 'number', default: '0', description: 'Minimum value' }, + { name: 'max', type: 'number', default: '100', description: 'Maximum value' }, + { name: 'step', type: 'number', default: '1', description: 'Step increment between values' }, + { name: 'disabled', type: 'boolean', default: 'false', description: 'Disables interaction and reduces opacity' }, + ]; + + function SliderWithValue({ defaultValue = [50], min = 0, max = 100, step = 1, label = '' }) { + const [val, setVal] = useState(defaultValue); + return ( +
+ {label && } + + {val[0]} +
+ ); + } + + return ( + + + +
+
+

+ Slider provides a visual way to select a numeric value by dragging a thumb along + a track. It's built on Radix UI's Slider primitive with custom styling for the + OHIF dark theme. +

+

+ In the OHIF Viewer, sliders appear in{' '} + window/level adjustments,{' '} + opacity controls for overlays + and segmentations, and threshold settings{' '} + in segmentation tools. +

+
+
+ +
+ +
+ +
+
+ + + + + + +
+ + + +
+
+ + +
+ +
+
+
+ +
+ console.log(value[0])} +/>`} + /> +
+ +
+ +
+
+ ); +} + +export default function SliderPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/smart-scrollbar.tsx b/platform/docs/src/pages/components/smart-scrollbar.tsx new file mode 100644 index 00000000000..4311fcf9779 --- /dev/null +++ b/platform/docs/src/pages/components/smart-scrollbar.tsx @@ -0,0 +1,474 @@ +import React, { useState, useRef, useCallback, useEffect } from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +// --------------------------------------------------------------------------- +// Loading simulation — hardcoded to from-indicator pattern, normal speed +// --------------------------------------------------------------------------- + +const LOAD_INTERVAL_MS = 50; +const TOTAL_SLICES = 100; +const START_INDEX = Math.round((TOTAL_SLICES - 1) * 0.2); + +type SimState = 'idle' | 'loading' | 'complete'; + +function buildFromIndicatorQueue(startIndex: number, total: number): number[] { + const queue: number[] = [startIndex]; + let lo = startIndex - 1; + let hi = startIndex + 1; + while (lo >= 0 || hi < total) { + if (hi < total) queue.push(hi++); + if (lo >= 0) queue.push(lo--); + } + return queue; +} + +function useLoadingSimulation(currentIndex: number, useByteArray: any) { + const [simState, setSimState] = useState('idle'); + const loaded = useByteArray(TOTAL_SLICES); + + const queueRef = useRef([]); + const queueIndexRef = useRef(0); + const intervalRef = useRef(null); + const simStateRef = useRef('idle'); + const currentIndexRef = useRef(currentIndex); + const loadedRef = useRef(loaded); + + simStateRef.current = simState; + currentIndexRef.current = currentIndex; + loadedRef.current = loaded; + + const clearTimer = useCallback(() => { + if (intervalRef.current !== null) { + clearInterval(intervalRef.current); + intervalRef.current = null; + } + }, []); + + const play = useCallback(() => { + queueRef.current = buildFromIndicatorQueue(currentIndexRef.current, TOTAL_SLICES); + queueIndexRef.current = 0; + loadedRef.current.resetWith(() => {}); + setSimState('loading'); + simStateRef.current = 'loading'; + + clearTimer(); + intervalRef.current = window.setInterval(() => { + if (queueIndexRef.current >= TOTAL_SLICES) return; + loadedRef.current.setByte(queueRef.current[queueIndexRef.current]); + queueIndexRef.current++; + if (queueIndexRef.current >= TOTAL_SLICES) { + clearTimer(); + setSimState('complete'); + simStateRef.current = 'complete'; + } + }, LOAD_INTERVAL_MS); + }, [clearTimer]); + + useEffect(() => clearTimer, [clearTimer]); + + return { loaded, simState, play }; +} + +function useViewedTracking(currentIndex: number, loadedBytes: Uint8Array, useByteArray: any) { + const viewed = useByteArray(TOTAL_SLICES); + + useEffect(() => { + if (loadedBytes[currentIndex] && !viewed.bytes[currentIndex]) { + viewed.setByte(currentIndex); + } + }, [currentIndex, loadedBytes, viewed]); + + return viewed; +} + +// --------------------------------------------------------------------------- +// Demo viewport with play/replay button +// --------------------------------------------------------------------------- + +const VP_SIZE = 400; +const VP_PAD = 8; + +function DemoViewport({ + children, + simState, + onPlay, + onWheel, + Button, +}: { + children: React.ReactNode; + simState: SimState; + onPlay: () => void; + onWheel: (deltaY: number) => void; + Button: any; +}) { + const ref = useRef(null); + + const handleWheel = useCallback( + (e: WheelEvent) => { + e.preventDefault(); + onWheel(e.deltaY); + }, + [onWheel] + ); + + useEffect(() => { + const el = ref.current; + if (!el) return; + el.addEventListener('wheel', handleWheel, { passive: false }); + return () => el.removeEventListener('wheel', handleWheel); + }, [handleWheel]); + + return ( +
+
+
+
+ + {/* Center prompt */} +
+ Scroll here +
+ + {/* Play / Replay button — top-left corner */} +
+ +
+ + {/* Scrollbar area */} +
+ {children} +
+
+ ); +} + +// --------------------------------------------------------------------------- +// SmartScrollbarDemo — minimal: viewport + play button, that's it +// --------------------------------------------------------------------------- + +function SmartScrollbarDemo({ + SmartScrollbar, + SmartScrollbarTrack, + SmartScrollbarFill, + SmartScrollbarIndicator, + SmartScrollbarEndpoints, + useByteArray, + Button, +}: { + SmartScrollbar: any; + SmartScrollbarTrack: any; + SmartScrollbarFill: any; + SmartScrollbarIndicator: any; + SmartScrollbarEndpoints: any; + useByteArray: any; + Button: any; +}) { + const [currentIndex, setCurrentIndex] = useState(START_INDEX); + const [resetKey, setResetKey] = useState(0); + + const { loaded, simState, play } = useLoadingSimulation(currentIndex, useByteArray); + const viewed = useViewedTracking(currentIndex, loaded.bytes, useByteArray); + + const handleWheel = useCallback((deltaY: number) => { + setCurrentIndex(prev => Math.max(0, Math.min(TOTAL_SLICES - 1, prev + (deltaY > 0 ? 1 : -1)))); + }, []); + + const handlePlay = useCallback(() => { + setResetKey(k => k + 1); + viewed.resetWith(() => {}); + play(); + }, [play, viewed]); + + return ( + + + + + + + + + + + ); +} + +// --------------------------------------------------------------------------- +// Page Content +// --------------------------------------------------------------------------- + +function SmartScrollbarPageContent() { + const { + SmartScrollbar, + SmartScrollbarTrack, + SmartScrollbarFill, + SmartScrollbarIndicator, + SmartScrollbarEndpoints, + useByteArray, + Button, + } = require('../../../../ui-next/src/components'); + const { + Table, + TableHeader, + TableBody, + TableHead, + TableRow, + TableCell, + } = require('../../../../ui-next/src/components/Table'); + + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const scrollbarProps = [ + { name: 'value', type: 'number', default: '—', description: 'Current scroll index (0 to total - 1)' }, + { name: 'total', type: 'number', default: '—', description: 'Total number of items' }, + { name: 'onValueChange', type: '(index: number) => void', default: '—', description: 'Called when scroll position changes via click, drag, or keyboard' }, + { name: 'isLoading', type: 'boolean', default: 'false', description: 'Shows dot-grid loading pattern and expands track width' }, + { name: 'enableKeyboardNavigation', type: 'boolean', default: 'false', description: 'Enables Arrow, Page Up/Down, Home, End key navigation' }, + { name: 'indicator', type: '{ totalWidth, totalHeight, renderIndicator }', default: '—', description: 'Custom indicator configuration to replace the default pill SVG' }, + ]; + + const fillProps = [ + { name: 'marked', type: 'Uint8Array', default: '—', description: 'Byte array where 1 = marked position, 0 = unmarked' }, + { name: 'version', type: 'number', default: '—', description: 'Change token — bump when the array mutates in-place' }, + { name: 'className', type: 'string', default: 'bg-neutral/25', description: 'Fill color class for normal state' }, + { name: 'loadingClassName', type: 'string', default: 'bg-neutral/50', description: 'Fill color class while parent isLoading is true' }, + ]; + + const endpointsProps = [ + { name: 'marked', type: 'Uint8Array', default: '—', description: 'Byte array marking loaded positions' }, + { name: 'version', type: 'number', default: '—', description: 'Change token — bump when the array mutates in-place' }, + ]; + + const byteArrayFields = [ + { name: 'bytes', type: 'Uint8Array', default: '—', description: 'Mutable array — safe for in-place writes' }, + { name: 'version', type: 'number', default: '—', description: 'Invalidation token for React memo dependencies' }, + { name: 'isFull', type: 'boolean', default: '—', description: 'True when all bytes are set to 1' }, + { name: 'setByte(index)', type: 'function', default: '—', description: 'Mark a position as loaded or viewed' }, + { name: 'clearByte(index)', type: 'function', default: '—', description: 'Unmark a position' }, + { name: 'resetWith(fn)', type: 'function', default: '—', description: 'Clear array and optionally bulk-populate via callback' }, + ]; + + return ( + + + +
+
+

+ SmartScrollbar is a{' '} + compound component that composes + Track, Fill, Indicator, and Endpoints into a scrollbar that shows{' '} + what's loaded,{' '} + what's been viewed, and{' '} + where you are in a series. +

+

+ In the OHIF Viewer, it sits on the{' '} + right edge of each viewport and + is driven by Cornerstone image cache events. The{' '} + neutral fill grows as images load + from the server; the primary fill{' '} + tracks which slices the user has scrolled through. A dot-grid pattern animates + behind the track while loading is in progress. +

+

+ The track expands from 4px to 8px{' '} + on hover, drag, or during loading, then contracts 600ms after loading completes. +

+
+
+ +
+
+

+ Press Play to simulate image loading. + Scroll the viewport with the mouse wheel{' '} + or click and drag the scrollbar. Slices you scroll to while loaded are marked as{' '} + viewed (blue fill). +

+
+
+ +
+
+ +
+
+

+ Scrollbar behavior is configured via the{' '} + Customization Service. +

+
+ + + + Key + Default + Description + + + + {[ + ['variant', "'progress'", 'Progress scrollbar or legacy range input'], + ['showLoadedFill', 'true', 'Show the neutral loaded/cached fill'], + ['showViewedFill', 'true', 'Show the primary viewed-slice fill'], + ['showLoadedEndpoints', 'true', 'Show endpoint caps at loaded range boundaries'], + ['showLoadingPattern', 'true', 'Show dot-grid pattern while loading'], + ['viewedDwellMs', '0', 'Delay before marking a slice as viewed (ms)'], + ['loadedBatchIntervalMs', '200', 'Coalesce loaded-state updates for performance (ms)'], + ['indicator', '{}', 'Custom indicator SVG (totalWidth, totalHeight, renderIndicator)'], + ].map(([key, defaultVal, desc]) => ( + + {key} + {defaultVal} + {desc} + + ))} + +
+
+

+ All keys are prefixed with{' '} + viewportScrollbar. in the + customization service. For full configuration examples, screenshots, and the + advanced indicator API, see the{' '} + + Viewport Scrollbar Customization + {' '} + reference. +

+
+
+ +
+
+

+ SmartScrollbar uses a compound component pattern — the root provides layout + context and children render into specific layers of the scrollbar. +

+
+ + + + + + + +`} + /> +
+ +
+
+
+

+ SmartScrollbar +

+ +
+
+

+ SmartScrollbarFill +

+ +
+
+

+ SmartScrollbarEndpoints +

+ +
+
+

+ useByteArray(length) → ByteArrayHandle +

+ +
+
+
+
+ ); +} + +export default function SmartScrollbarSimplePage() { + return }>{() => }; +} diff --git a/platform/docs/src/pages/components/switch-toggle.tsx b/platform/docs/src/pages/components/switch-toggle.tsx new file mode 100644 index 00000000000..99804fcb192 --- /dev/null +++ b/platform/docs/src/pages/components/switch-toggle.tsx @@ -0,0 +1,129 @@ +import React from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function SwitchPageContent() { + const { Switch } = require('../../../../ui-next/src/components/Switch'); + const { Label } = require('../../../../ui-next/src/components/Label'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const InteractivePicker = require('./_layout/InteractivePicker').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const states = [ + { value: 'off', label: 'Off', description: 'Default state. Muted primary background.' }, + { value: 'on', label: 'On', description: 'Active state. Solid primary background with thumb shifted right.' }, + { value: 'disabled', label: 'Disabled', description: 'Non-interactive. Reduced opacity.' }, + ]; + + const props = [ + { name: 'checked', type: 'boolean', default: '—', description: 'Controlled checked state' }, + { name: 'defaultChecked', type: 'boolean', default: 'false', description: 'Initial checked state (uncontrolled)' }, + { name: 'onCheckedChange', type: '(checked: boolean) => void', default: '—', description: 'Called when the checked state changes' }, + { name: 'disabled', type: 'boolean', default: 'false', description: 'Disables interaction and reduces opacity' }, + { name: 'className', type: 'string', default: '—', description: 'Additional CSS classes merged via cn()' }, + ]; + + return ( + + + +
+
+

+ Switch is the preferred toggle control in OHIF. It provides a larger, more visible + target than Checkbox and communicates its current state more clearly through its + sliding thumb animation. +

+

+ Use descriptive labels next to switches that are understandable before interacting. + In the OHIF Viewer, switches control viewport sync, overlay visibility, and + panel-level settings. +

+
+
+ +
+ ( +
+ + +
+ )} + /> +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+ + +
+
+
+ +
+ + + +
`} + /> + + +
+ +
+ + ); +} + +export default function SwitchPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/table.tsx b/platform/docs/src/pages/components/table.tsx new file mode 100644 index 00000000000..eda1d463f98 --- /dev/null +++ b/platform/docs/src/pages/components/table.tsx @@ -0,0 +1,216 @@ +import React from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function TablePageContent() { + const { + Table, + TableHeader, + TableBody, + TableFooter, + TableHead, + TableRow, + TableCell, + TableCaption, + } = require('../../../../ui-next/src/components/Table'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const studies = [ + { id: 'ST-001', patient: 'Smith, John', modality: 'CT', date: '2024-03-15', series: 4, status: 'Complete' }, + { id: 'ST-002', patient: 'Doe, Jane', modality: 'MR', date: '2024-03-14', series: 6, status: 'Complete' }, + { id: 'ST-003', patient: 'Lee, Alex', modality: 'CT', date: '2024-03-14', series: 3, status: 'In Progress' }, + { id: 'ST-004', patient: 'Garcia, Maria', modality: 'PET/CT', date: '2024-03-13', series: 8, status: 'Complete' }, + { id: 'ST-005', patient: 'Brown, Robert', modality: 'MR', date: '2024-03-12', series: 5, status: 'Failed' }, + ]; + + const measurements = [ + { label: 'Lesion 1', tool: 'Bidirectional', value: '24.3 × 18.1 mm', location: 'Liver' }, + { label: 'Lesion 2', tool: 'Length', value: '15.7 mm', location: 'Lung RUL' }, + { label: 'Lesion 3', tool: 'EllipticalROI', value: '42.1 mm²', location: 'Kidney L' }, + ]; + + const tableProps = [ + { name: 'containerClassName', type: 'string', default: '—', description: 'CSS classes applied to the outer scroll container' }, + { name: 'noScroll', type: 'boolean', default: 'false', description: 'Disables the overflow-auto wrapper around the table' }, + { name: 'className', type: 'string', default: '—', description: 'CSS classes applied to the element' }, + ]; + + const tableRowProps = [ + { name: 'data-state', type: '"selected"', default: '—', description: 'Set to "selected" to apply the selected row styling (elevated background + foreground text)' }, + { name: 'className', type: 'string', default: '—', description: 'CSS classes applied to the element' }, + ]; + + return ( + + + +
+
+

+ A set of styled wrappers around native HTML table elements. + Each sub-component (Table,{' '} + TableHeader,{' '} + TableBody,{' '} + TableRow,{' '} + TableHead,{' '} + TableCell,{' '} + TableFooter,{' '} + TableCaption) forwards refs and accepts all native attributes plus optional styling overrides. +

+

+ Rows respond to hover with highlighted text + and to data-state="selected" with + an elevated background — no additional props needed. +

+
+
+ +
+ +
+ + + Study + Patient + Modality + Date + Series + + + + {studies.map(study => ( + + {study.id} + {study.patient} + {study.modality} + {study.date} + {study.series} + + ))} + +
+ + + + + Tracked measurements for current study + + + Label + Tool + Value + Location + + + + {measurements.map(m => ( + + {m.label} + {m.tool} + {m.value} + {m.location} + + ))} + + + + Total measurements + {measurements.length} + + +
+
+ + + + + + Label + Tool + Value + + + + {measurements.map(m => ( + + {m.label} + {m.tool} + {m.value} + + ))} + +
+
+ + +
+ + + + Patient + Modality + Date + + + + {studies.map(study => ( + + {study.patient} + {study.modality} + {study.date} + + ))} + + + +// Row selection via data attribute + + … +`} + /> +
+ +
+ +
+ +
+ +
+ +
+

+ All sub-components (TableHeader,{' '} + TableBody,{' '} + TableFooter,{' '} + TableHead,{' '} + TableCell,{' '} + TableCaption) accept{' '} + className and forward all native HTML attributes and refs. +

+
+ + ); +} + +export default function TablePage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/tabs.tsx b/platform/docs/src/pages/components/tabs.tsx new file mode 100644 index 00000000000..8170364f1d7 --- /dev/null +++ b/platform/docs/src/pages/components/tabs.tsx @@ -0,0 +1,117 @@ +import React from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function TabsPageContent() { + const { Tabs, TabsList, TabsTrigger, TabsContent } = require('../../../../ui-next/src/components/Tabs'); + const { Separator } = require('../../../../ui-next/src/components/Separator'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const props = [ + { name: 'defaultValue', type: 'string', default: '—', description: 'Initial active tab value (uncontrolled)' }, + { name: 'value', type: 'string', default: '—', description: 'Controlled active tab value' }, + { name: 'onValueChange', type: '(value: string) => void', default: '—', description: 'Called when the active tab changes' }, + { name: 'orientation', type: '"horizontal" | "vertical"', default: '"horizontal"', description: 'Layout direction of the tab list' }, + ]; + + return ( + + + +
+
+

+ Tabs is a multi-part component built on Radix UI primitives:{' '} + Tabs (root),{' '} + TabsList (tab bar),{' '} + TabsTrigger (individual tabs),{' '} + and TabsContent (panels). +

+

+ In the OHIF Viewer, tabs appear as{' '} + segmented controls for tool settings + (e.g. brush shape: Circle / Sphere / Square), panel section switchers, and + configuration option groups. +

+
+
+ +
+ + + + Overview + Details + History + + +

Overview panel content goes here.

+
+ +

Details panel content goes here.

+
+ +

History panel content goes here.

+
+
+
+ + + + + Circle + + Sphere + + Square + + + + + + + + Dark + Light + + + +
+ +
+ console.log(v)}> + + Tab 1 + Tab 2 + + First panel + Second panel +`} + /> +
+ +
+ +
+
+ ); +} + +export default function TabsPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/toast.tsx b/platform/docs/src/pages/components/toast.tsx new file mode 100644 index 00000000000..ddc86530aa8 --- /dev/null +++ b/platform/docs/src/pages/components/toast.tsx @@ -0,0 +1,184 @@ +import React from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function ToastPageContent() { + const { Toaster, toast } = require('../../../../ui-next/src/components/Sonner'); + const { Button } = require('../../../../ui-next/src/components/Button'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const toastOptions = [ + { name: 'message', type: 'string', default: '—', description: 'The toast message text (first positional argument)' }, + { name: 'description', type: 'string', default: '—', description: 'Secondary text below the message' }, + { name: 'duration', type: 'number', default: '4000', description: 'Time in ms before auto-dismiss' }, + { name: 'action', type: 'ReactNode', default: '—', description: 'Action button rendered inside the toast' }, + { name: 'cancel', type: 'ReactNode', default: '—', description: 'Cancel button rendered inside the toast' }, + ]; + + const toasterProps = [ + { name: 'position', type: 'string', default: '"bottom-right"', description: 'Where toasts appear on screen' }, + { name: 'expand', type: 'boolean', default: 'false', description: 'Expand toasts by default instead of stacking' }, + { name: 'richColors', type: 'boolean', default: 'false', description: 'Use Sonner built-in colored backgrounds per type' }, + { name: 'duration', type: 'number', default: '4000', description: 'Default auto-dismiss duration for all toasts' }, + ]; + + return ( + + + +
+
+

+ Toasts are powered by Sonner with + custom OHIF icons for each type. Call toast(),{' '} + toast.success(),{' '} + toast.error(),{' '} + toast.warning(),{' '} + toast.info(), or{' '} + toast.promise() to trigger a notification. +

+

+ In the OHIF Viewer, toasts report{' '} + segmentation loading progress,{' '} + export results,{' '} + error states, and other transient + feedback. Multiple toasts stack into a single unit. +

+
+
+ +
+ +
+ + + + +
+
+ + +
+ + +
+
+ + + + + + + + ), + cancel: ( + + ), + }) + } + > + Warning + Buttons + + +
+ +
+ once at your app root + + +// Trigger toasts anywhere +toast.success('Saved'); +toast.error('Failed to load'); +toast.info('3 items exported'); +toast.warning('Unsaved changes', { + description: 'Details here.', +}); + +// Async promise toast +toast.promise(fetchData(), { + loading: 'Loading...', + success: 'Done', + error: 'Failed', +});`} + /> +
+ +
+ +
+ +
+ +
+ + +
+ ); +} + +export default function ToastPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/tool-button-list.tsx b/platform/docs/src/pages/components/tool-button-list.tsx new file mode 100644 index 00000000000..3cb30825518 --- /dev/null +++ b/platform/docs/src/pages/components/tool-button-list.tsx @@ -0,0 +1,214 @@ +import React from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function ToolButtonListPageContent() { + const { + ToolButton, + ToolButtonList, + ToolButtonListDefault, + ToolButtonListDropDown, + ToolButtonListItem, + ToolButtonListDivider, + } = require('../../../../ui-next/src/components/ToolButton'); + const { TooltipProvider } = require('../../../../ui-next/src/components/Tooltip'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const props = [ + { name: 'ToolButtonList', type: 'component', default: '—', description: 'Root flex container for the button + dropdown group' }, + { name: 'ToolButtonListDefault', type: 'component', default: '—', description: 'Wrapper for the primary ToolButton, with optional tooltip' }, + { name: 'ToolButtonListDropDown', type: 'component', default: '—', description: 'Chevron trigger that opens a dropdown of related tools' }, + { name: 'ToolButtonListItem', type: 'component', default: '—', description: 'Menu item inside the dropdown, with optional icon' }, + { name: 'ToolButtonListDivider', type: 'component', default: '—', description: 'Vertical divider between the primary button and dropdown chevron' }, + ]; + + return ( + + + + +
+
+

+ ToolButtonList groups a primary{' '} + ToolButton with a dropdown chevron + that reveals related tool options. It's composed of five sub-components:{' '} + ToolButtonList (root),{' '} + ToolButtonListDefault (primary slot),{' '} + ToolButtonListDivider,{' '} + ToolButtonListDropDown (chevron + menu),{' '} + and ToolButtonListItem (menu items). +

+

+ In the OHIF toolbar, this pattern is used for measurement tool groups (Length, + Bidirectional, Angle), annotation tools, and other sets where one tool is the + default and others are accessible via the dropdown. +

+
+
+ +
+ +
+ + + console.debug(`Clicked ${itemId}`)} + /> + + + + console.debug('Selected Length')} + > + Length + + console.debug('Selected Bidirectional')} + > + Bidirectional + + console.debug('Selected Annotation')} + > + Annotation + + + +
+
+ + +
+ + + {}} + /> + + + + {}} + > + Length + + {}} + > + Bidirectional + + + +
+
+ + +
+ + + {}} + /> + + + + {}}> + Length + + {}}> + Bidirectional + + + + + {}} + /> + {}} + /> +
+
+
+ +
+ + + handleTool(itemId)} + /> + + + + selectTool('Length')}> + Length + + selectTool('Bidirectional')}> + Bidirectional + + +`} + /> +
+ +
+ +
+
+
+ ); +} + +export default function ToolButtonListPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/tool-button.tsx b/platform/docs/src/pages/components/tool-button.tsx new file mode 100644 index 00000000000..16b74c3ecad --- /dev/null +++ b/platform/docs/src/pages/components/tool-button.tsx @@ -0,0 +1,158 @@ +import React, { useState } from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function ToolButtonPageContent() { + const { ToolButton } = require('../../../../ui-next/src/components/ToolButton'); + const { TooltipProvider } = require('../../../../ui-next/src/components/Tooltip'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const InteractivePicker = require('./_layout/InteractivePicker').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const [activeId, setActiveId] = useState('Zoom'); + + const states = [ + { value: 'default', label: 'Default', description: 'Idle state. Transparent background, foreground icon.' }, + { value: 'active', label: 'Active', description: 'Currently selected tool. Highlighted background with inverted icon.' }, + { value: 'toggled', label: 'Toggled', description: 'Toggled on. Transparent background with highlight-colored icon.' }, + { value: 'disabled', label: 'Disabled', description: 'Unavailable. Reduced opacity, cursor not-allowed.' }, + ]; + + const props = [ + { name: 'id', type: 'string', default: '—', description: 'Unique identifier, passed to onInteraction' }, + { name: 'icon', type: 'string', default: '—', description: 'Icon name from the OHIF icon registry' }, + { name: 'label', type: 'string', default: '—', description: 'Accessible label text' }, + { name: 'tooltip', type: 'string', default: '—', description: 'Tooltip text shown on hover' }, + { name: 'size', type: '"default" | "small"', default: '"default"', description: 'Button size (default: 40×40, small: 32×32)' }, + { name: 'isActive', type: 'boolean', default: 'false', description: 'Active tool state (highlighted background)' }, + { name: 'isToggled', type: 'boolean', default: 'false', description: 'Toggled state (highlight-colored icon)' }, + { name: 'disabled', type: 'boolean', default: 'false', description: 'Disables interaction' }, + { name: 'onInteraction', type: '({ itemId, commands }) => void', default: '—', description: 'Called when the button is clicked' }, + ]; + + return ( + + + + +
+
+

+ ToolButton is the primary interactive element in the OHIF toolbar. Each button + represents a tool (Zoom, Pan, Window/Level, measurement tools, etc.) and + visually reflects whether it's the{' '} + active tool,{' '} + toggled on, or{' '} + disabled. +

+

+ It renders an icon from the OHIF icon registry via{' '} + Icons.ByName and wraps disabled + buttons in a span so tooltips still work. Use{' '} + ToolButtonList to group a primary + tool with a dropdown of related tools. +

+
+
+ +
+ ( +
+ {}} + /> +
+ )} + /> +
+ +
+ +
+ {[ + { id: 'Zoom', icon: 'ToolZoom', label: 'Zoom' }, + { id: 'Pan', icon: 'ToolMove', label: 'Pan' }, + { id: 'WL', icon: 'ToolWindowLevel', label: 'Window Level' }, + ].map((tool) => ( + setActiveId(itemId)} + /> + ))} +
+
+ + +
+ {}} + /> + {}} + /> +
+
+
+ +
+ setActiveTool(itemId)} +/>`} + /> +
+ +
+ +
+
+
+ ); +} + +export default function ToolButtonPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/components/tooltip.tsx b/platform/docs/src/pages/components/tooltip.tsx new file mode 100644 index 00000000000..d9a8de73db4 --- /dev/null +++ b/platform/docs/src/pages/components/tooltip.tsx @@ -0,0 +1,148 @@ +import React from 'react'; +import BrowserOnly from '@docusaurus/BrowserOnly'; + +function TooltipPageContent() { + const { + Tooltip, + TooltipTrigger, + TooltipContent, + TooltipProvider, + } = require('../../../../ui-next/src/components/Tooltip'); + const { Button } = require('../../../../ui-next/src/components/Button'); + const { Icons } = require('../../../../ui-next/src/components/Icons'); + const ComponentLayout = require('./_layout/ComponentLayout').default; + const PageHeader = require('./_layout/PageHeader').default; + const Section = require('./_layout/Section').default; + const CodeBlock = require('./_layout/CodeBlock').default; + const ExampleBlock = require('./_layout/ExampleBlock').default; + const PropsTable = require('./_layout/PropsTable').default; + + const props = [ + { name: 'side', type: '"top" | "right" | "bottom" | "left"', default: '"top"', description: 'Which side of the trigger the tooltip appears on (on TooltipContent)' }, + { name: 'sideOffset', type: 'number', default: '4', description: 'Distance in pixels from the trigger (on TooltipContent)' }, + { name: 'delayDuration', type: 'number', default: '700', description: 'Delay in ms before the tooltip opens (on TooltipProvider)' }, + ]; + + return ( + + + + +
+
+

+ Tooltip is a multi-part component built on Radix UI primitives:{' '} + TooltipProvider (context),{' '} + Tooltip (root),{' '} + TooltipTrigger, and{' '} + TooltipContent. +

+

+ Tooltips are non-interactive — they display text only and dismiss on pointer + leave. In the OHIF Viewer, tooltips label{' '} + toolbar icon buttons,{' '} + viewport action icons, and other + controls where space is too tight for visible text. +

+
+
+ +
+ + + + + + Tooltip content + + + + +
+ + + + + Appears above + + + + + + Appears right + + + + + + Appears below + + + + + + Appears left + +
+
+ + +
+ + + + + Settings + + + + + + More options + +
+
+
+ +
+ + + + + + Helpful description + +`} + /> +
+ +
+ +
+
+
+ ); +} + +export default function TooltipPage() { + return ( + }>{() => } + ); +} diff --git a/platform/docs/src/pages/patterns.tsx b/platform/docs/src/pages/patterns.tsx deleted file mode 100644 index e50d20b52a5..00000000000 --- a/platform/docs/src/pages/patterns.tsx +++ /dev/null @@ -1,210 +0,0 @@ -import React, { useState } from 'react'; -import '../css/custom.css'; - -import Layout from '@theme/Layout'; -import { Button } from '../../../ui-next/src/components/Button'; -import { Icons } from '../../../ui-next/src/components/Icons'; -import { Card, CardHeader, CardTitle, CardDescription } from '../../../ui-next/src/components/Card'; - -interface ShowcaseRowProps { - title: string; - description?: string; - children: React.ReactNode; - code: string; -} - -export default function ComponentShowcase() { - // Update function to handle paths correctly - const openLinkInNewWindow = (url: string) => { - // Remove leading dot if present to fix production paths - const cleanUrl = url.startsWith('.') ? url.substring(1) : url; - window.open(cleanUrl, '_blank', 'noopener,noreferrer'); - }; - - return ( - -
-
- {/* Navigation cards */} - - -

Patterns

- - -
- Uses the Data Row component to displays a list of segments. The current - "Segmentation" is chosen with a Select above the current list. -
- -
- } - code={` -aaa - `} - > -
-
- Segmentation Panel -
- - - -
- Uses the Data Row component to displays a list of measurements. A custom "Label" - starts each row with measurement data appearing on the secondary row -
- -
- } - code={` -aaa - `} - > -
-
- Measurements Panel -
- -
-
-
- ); -} - -function ShowcaseRow({ title, description, children, code }: ShowcaseRowProps) { - const [showCode, setShowCode] = useState(false); - - return ( -
-
-
-

{title}

-
- -
-
-
- {description &&

{description}

} -
-
-
{children}
-
-
- {showCode && ( -
-          {code}
-        
- )} -
- ); -} - -// function ShowcaseRow({ title, description, children, code }: ShowcaseRowProps) { -// const [showCode, setShowCode] = useState(false); - -// return ( -//
-//
-//
-//

{title}

-// {description &&

{description}

} -//
-// -//
-//
{children}
-// {showCode && ( -//
-//           {code}
-//         
-// )} -//
-// ); -// } diff --git a/platform/docs/src/pages/patterns/DataRowExample.tsx b/platform/docs/src/pages/patterns/DataRowExample.tsx deleted file mode 100644 index cc398eb449f..00000000000 --- a/platform/docs/src/pages/patterns/DataRowExample.tsx +++ /dev/null @@ -1,89 +0,0 @@ -import React from 'react'; -import { DataRow } from '../../../../ui-next/src/components/DataRow'; - -// Mock data to demonstrate DataRow usage -const mockData = [ - { - id: 1, - title: 'Segment 1', - description: 'Description for Segment 1', - optionalField: 'Optional Info 1', - colorHex: '#FF5733', - details: 'Secondary details or text', - }, - { - id: 2, - title: 'Segment 2', - description: 'Description for Segment 2', - optionalField: 'Optional Info 2', - colorHex: '#33C1FF', - details: 'Secondary details or text', - }, - { - id: 3, - title: 'Segment 3', - description: 'Description for Segment 3', - optionalField: 'Optional Info 3', - colorHex: '#5533FF', - details: 'Secondary details or text', - }, -]; - -// Mock action options map -const actionOptionsMap = { - 'ROI Tools': ['Edit', 'Delete', 'View'], -}; - -interface DataItem { - id: number; - title: string; - description: string; - optionalField?: string; - colorHex?: string; - details?: string; - series?: string; -} - -interface ListGroup { - type: string; - items: DataItem[]; -} - -const DataRowExample: React.FC = () => { - const [selectedRowId, setSelectedRowId] = React.useState(null); - - const handleAction = (id: string, action: string) => { - console.log(`Action "${action}" triggered for item with id: ${id}`); - // Implement actual action logic here - }; - - const handleRowSelect = (id: string) => { - setSelectedRowId(prevSelectedId => (prevSelectedId === id ? null : id)); - }; - - return ( -
- {mockData.map((item, index) => { - const compositeId = `ROI Tools-${item.id}-panel`; // Ensure unique composite ID - return ( - handleAction(compositeId, action)} - isSelected={selectedRowId === compositeId} - onSelect={() => handleRowSelect(compositeId)} - /> - ); - })} -
- ); -}; - -export default DataRowExample; diff --git a/platform/docs/src/pages/patterns/index.tsx b/platform/docs/src/pages/patterns/index.tsx deleted file mode 100644 index fc8f67bb233..00000000000 --- a/platform/docs/src/pages/patterns/index.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import React from 'react'; -import Layout from '@theme/Layout'; -import { useHistory } from '@docusaurus/router'; - -export default function Patterns() { - const history = useHistory(); - - return ( - -
-

Patterns

- - - -
-
- ); -} \ No newline at end of file diff --git a/platform/docs/src/pages/patterns/patterns-measurements.tsx b/platform/docs/src/pages/patterns/patterns-measurements.tsx deleted file mode 100644 index 6347b7891ac..00000000000 --- a/platform/docs/src/pages/patterns/patterns-measurements.tsx +++ /dev/null @@ -1,134 +0,0 @@ -import React, { useState } from 'react'; -import { Button } from '../../../../ui-next/src/components/Button'; -import { Icons } from '../../../../ui-next/src/components/Icons'; -import { - Accordion, - AccordionItem, - AccordionTrigger, - AccordionContent, -} from '../../../../ui-next/src/components/Accordion'; -import { DataRow } from '../../../../ui-next/src/components/DataRow'; -import { actionOptionsMap, dataList } from '../../../../ui-next/assets/data'; -import BrowserOnly from '@docusaurus/BrowserOnly'; -import { TooltipProvider } from '../../../../ui-next/src/components/Tooltip'; - -interface DataItem { - id: number; - title: string; - description: string; - optionalField?: string; - colorHex?: string; - details?: string; - series?: string; -} - -interface ListGroup { - type: string; - items: DataItem[]; -} - -export default function Measurements() { - const [selectedRowId, setSelectedRowId] = useState(null); - const handleAction = (id: string, action: string) => { - console.log(`Action "${action}" triggered for item with id: ${id}`); - // Implement actual action logic here - }; - const handleRowSelect = (id: string) => { - setSelectedRowId(prevSelectedId => (prevSelectedId === id ? null : id)); - }; - - const organSegmentationGroup = dataList.find( - listGroup => listGroup.type === 'Organ Segmentation' - ); - const roiToolsGroup = dataList.find(listGroup => listGroup.type === 'ROI Tools'); - - if (!organSegmentationGroup || !roiToolsGroup) { - return null; // Avoid rendering until these groups are ready. - } - - return ( - - {() => ( -
- - {/* Simulated Panel List for "Segmentation" */} -
- - {/* Segmentation Tools */} - - - Measurements - - -
-
2024-Jan-01
-
- Study title lorem ipsum -
-
- -
-
- - -
-
-
- {roiToolsGroup.items.map((item, index) => { - const compositeId = `${roiToolsGroup.type}-${item.id}-panel`; // Ensure unique composite ID - return ( - handleAction(compositeId, action)} - isSelected={selectedRowId === compositeId} - onSelect={() => handleRowSelect(compositeId)} - /> - ); - })} -
-
-
- - {/* Additional Findings */} - - - Additional Findings - - -
-
-
-
-
-
-
- )} -
- ); -} diff --git a/platform/docs/src/pages/patterns/patterns-segmentation.tsx b/platform/docs/src/pages/patterns/patterns-segmentation.tsx deleted file mode 100644 index 56dd883cbca..00000000000 --- a/platform/docs/src/pages/patterns/patterns-segmentation.tsx +++ /dev/null @@ -1,503 +0,0 @@ -'use client'; - -import React, { useState } from 'react'; - -import { DataRow } from '../../../../ui-next/src/components/DataRow'; -import { Button } from '../../../../ui-next/src/components/Button'; -import { - Select, - SelectValue, - SelectTrigger, - SelectContent, - SelectItem, -} from '../../../../ui-next/src/components/Select'; -import { Icons } from '../../../../ui-next/src/components/Icons'; -import { - DropdownMenu, - DropdownMenuTrigger, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuSeparator, - DropdownMenuLabel, - DropdownMenuSub, - DropdownMenuSubTrigger, - DropdownMenuSubContent, - DropdownMenuPortal, -} from '../../../../ui-next/src/components/DropdownMenu'; -import { - Accordion, - AccordionItem, - AccordionTrigger, - AccordionContent, -} from '../../../../ui-next/src/components/Accordion'; -import { Slider } from '../../../../ui-next/src/components/Slider'; -import { Switch } from '../../../../ui-next/src/components/Switch'; -import { Label } from '../../../../ui-next/src/components/Label'; -import { Input } from '../../../../ui-next/src/components/Input'; -import { Tabs, TabsList, TabsTrigger } from '../../../../ui-next/src/components/Tabs'; -import { actionOptionsMap, dataList } from '../../../../ui-next/assets/data'; -import { TooltipProvider } from '../../../../ui-next/src/components/Tooltip'; -import { - HoverCard, - HoverCardTrigger, - HoverCardContent, -} from '../../../../ui-next/src/components/HoverCard'; -import { DataItem, ListGroup } from '../../../../ui-next/assets/data'; -export default function SegmentationPanel() { - const [selectedRowId, setSelectedRowId] = useState(null); - const [selectedTab, setSelectedTab] = useState('Fill & Outline'); - const handleAction = (id: string, action: string) => { - console.log(`Action "${action}" triggered for item with id: ${id}`); - // Implement actual action logic here - }; - - // Handle row selection - const handleRowSelect = (id: string) => { - setSelectedRowId(prevSelectedId => (prevSelectedId === id ? null : id)); - }; - - const organSegmentationGroup = dataList.find( - (listGroup: any) => listGroup.type === 'Organ Segmentation' - ) as unknown as ListGroup; - - if (!organSegmentationGroup) { - return
Organ Segmentation data not found.
; - } - - // Create a state to track which item's statistics to show - - // Function to render statistics panel - const renderStatisticsPanel = (item: DataItem) => { - if (!item.statistics) { - return null; - } - - const stats = item.statistics; - return ( -
-
-
-

{item.title}

-
- -
-
-
Centroid X
-
- {stats.centroidX.value}{' '} - {stats.centroidX.unit} -
-
- -
-
Centroid Y
-
- {stats.centroidY.value}{' '} - {stats.centroidY.unit} -
-
- -
-
Centroid Z
-
- {stats.centroidZ.value}{' '} - {stats.centroidZ.unit} -
-
- -
-
Frame Duration
-
- {stats.frameDuration.value}{' '} - {stats.frameDuration.unit} -
-
- -
-
Kurtosis
-
- {stats.kurtosis.value}{' '} - {stats.kurtosis.unit} -
-
- -
-
Max
-
- {stats.max.value}{' '} - {stats.max.unit} -
-
- -
-
Max Slice
-
- {stats.maxSlice.value}{' '} - {stats.maxSlice.unit} -
-
- -
-
Mean
-
- {stats.mean.value}{' '} - {stats.mean.unit} -
-
- -
-
Median
-
- {stats.median.value}{' '} - {stats.median.unit} -
-
- -
-
Min
-
- {stats.min.value}{' '} - {stats.min.unit} -
-
- -
-
Regions
-
- {stats.regions.value}{' '} - {stats.regions.unit} -
-
- -
-
Skewness
-
- {stats.skewness.value}{' '} - {stats.skewness.unit} -
-
- -
-
Sphere Diameter
-
- {stats.sphereDiameter.value}{' '} - {stats.sphereDiameter.unit} -
-
- -
-
Standard Deviation
-
- {stats.standardDeviation.value}{' '} - {stats.standardDeviation.unit} -
-
- -
-
SUV Peak
-
- {stats.suvPeak.value}{' '} - {stats.suvPeak.unit} -
-
- -
-
Total
-
- {stats.total.value}{' '} - {stats.total.unit} -
-
- -
-
Glycolysis
-
- {stats.glycolysis.value}{' '} - {stats.glycolysis.unit} -
-
- -
-
Volume
-
- {stats.volume.value}{' '} - {stats.volume.unit} -
-
- -
-
Voxel Count
-
- {stats.voxelCount.value}{' '} - {stats.voxelCount.unit} -
-
-
-
- ); - }; - - return ( -
-
- - - {/* Segmentation Tools */} - - - Segmentation Tools - - -
-
-
- - {/* Segmentation List */} - - - Segmentation List - - -
- {/* Header Controls */} -
- - - - - - - - Create New Segmentation - - - Manage Current Segmentation - - - Remove from Viewport - - - - Rename - - - - - Export & Download - - - - Export DICOM SEG - Download DICOM SEG - Download DICOM RTSTRUCT - - - - - - - Delete - - - - - -
- - {/* Appearance Settings */} - - -
- - Appearance Settings -
-
- -
-
- {/* Display Label with Selected Tab */} -
Show: {selectedTab}
- {/* Tabs Controls */} - - - - - - - - - - - - - -
- {/* Opacity Slider */} -
- - - -
- {/* Border Slider */} -
- - - -
- {/* Sync Changes Switch */} -
- - -
-
- {/* Display Inactive Segmentations Switch */} -
- - -
- {/* Additional Opacity Slider */} -
- - - -
-
-
-
- {/* Action Buttons */} -
- - -
-
- - {/* Data Rows */} -
- {organSegmentationGroup.items.map((item, index) => { - const compositeId = `${organSegmentationGroup.type}-${item.id}-panel`; // Ensure unique composite ID - return ( - - -
- handleAction(compositeId, action)} - isSelected={selectedRowId === compositeId} - onSelect={() => handleRowSelect(compositeId)} - isVisible={true} - isLocked={false} - onToggleVisibility={() => console.debug('Toggle visibility')} - onToggleLocked={() => console.debug('Toggle locked')} - onRename={() => console.debug('Rename')} - onDelete={() => console.debug('Delete')} - onColor={() => console.debug('Color')} - disableEditing={false} - /> -
-
- - {renderStatisticsPanel(item)} - -
- ); - })} -
-
-
-
-
-
-
- ); -} diff --git a/platform/docs/src/pages/patterns/patterns-split-panel.tsx b/platform/docs/src/pages/patterns/patterns-split-panel.tsx deleted file mode 100644 index 3fdc7b7044b..00000000000 --- a/platform/docs/src/pages/patterns/patterns-split-panel.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import React, { useState } from 'react'; - -import { DataRow } from '../../../../ui-next/src/components/DataRow'; -import { Button } from '../../../../ui-next/src/components/Button'; -import { - Select, - SelectValue, - SelectTrigger, - SelectContent, - SelectItem, -} from '../../../../ui-next/src/components/Select'; -import { Icons } from '../../../../ui-next/src/components/Icons'; -import { - Accordion, - AccordionItem, - AccordionTrigger, - AccordionContent, -} from '../../../../ui-next/src/components/Accordion'; -import { Slider } from '../../../../ui-next/src/components/Slider'; -import { Switch } from '../../../../ui-next/src/components/Switch'; -import { Label } from '../../../../ui-next/src/components/Label'; -import { Input } from '../../../../ui-next/src/components/Input'; -import { Tabs, TabsList, TabsTrigger } from '../../../../ui-next/src/components/Tabs'; -import { actionOptionsMap, dataList } from '../../../../ui-next/assets/data'; - -interface DataItem { - id: number; - title: string; - description: string; - optionalField?: string; - colorHex?: string; - details?: string; - series?: string; -} - -interface ListGroup { - type: string; - items: DataItem[]; -} - -export default function SplitPanel() { - return
hellosssssss
; -} diff --git a/platform/docs/src/pages/patterns/patterns-tmtv.tsx b/platform/docs/src/pages/patterns/patterns-tmtv.tsx deleted file mode 100644 index af3b5331691..00000000000 --- a/platform/docs/src/pages/patterns/patterns-tmtv.tsx +++ /dev/null @@ -1,393 +0,0 @@ -import React, { useState } from 'react'; - -import { Button } from '../../../../ui-next/src/components/Button'; -import { - DropdownMenu, - DropdownMenuTrigger, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuSeparator, - DropdownMenuSub, - DropdownMenuSubTrigger, - DropdownMenuSubContent, - DropdownMenuPortal, -} from '../../../../ui-next/src/components/DropdownMenu'; -import { Icons } from '../../../../ui-next/src/components/Icons/Icons'; -import { DataRow } from '../../../../ui-next/src/components/DataRow'; -import { actionOptionsMap, dataList } from '../../../../ui-next/assets/data'; - -import { - Accordion, - AccordionItem, - AccordionTrigger, - AccordionContent, -} from '../../../../ui-next/src/components/Accordion/Accordion'; -import { Slider } from '../../../../ui-next/src/components/Slider'; -import { Switch } from '../../../../ui-next/src/components/Switch'; -import { Label } from '../../../../ui-next/src/components/Label'; -import { Input } from '../../../../ui-next/src/components/Input'; -import { Tabs, TabsList, TabsTrigger } from '../../../../ui-next/src/components/Tabs'; -import BrowserOnly from '@docusaurus/BrowserOnly'; - -interface DataItem { - id: number; - title: string; - description: string; - optionalField?: string; - colorHex?: string; - details?: string; - series?: string; -} - -interface ListGroup { - type: string; - items: DataItem[]; -} - -export default function TMTVPatterns() { - const [selectedRowId, setSelectedRowId] = useState(null); - const [selectedTab, setSelectedTab] = useState('Fill & Outline'); - - const handleAction = (id: string, action: string) => { - console.log(`Action "${action}" triggered for item with id: ${id}`); - // Implement actual action logic here - }; - - // Handle row selection - const handleRowSelect = (id: string) => { - setSelectedRowId(prevSelectedId => (prevSelectedId === id ? null : id)); - }; - - // Find the "TMTV2" group - const tmv2Group = dataList.find((listGroup: ListGroup) => listGroup.type === 'TMTV2'); - - // Find the "TMTV1" group - const tmvGroup = dataList.find((listGroup: ListGroup) => listGroup.type === 'TMTV1'); - - // Check if both groups exist - if (!tmv2Group) { - return
TMTV2 data not found.
; - } - - if (!tmvGroup) { - return
TMTV1 data not found.
; - } - - return ( - - {() => ( -
-
- - {/* Segmentation Tools */} - - - Segmentation Tools - - -
-
-
- {/* Segmentation List */} - - - Segmentation List - - - {/* Appearance Settings */} - - -
- - Appearance Settings -
-
- -
-
- {/* Display Label with Selected Tab */} -
Show: {selectedTab}
- {/* Tabs Controls */} - - - - - - - - - - - - - -
- {/* Opacity Slider */} -
- - - -
- {/* Border Slider */} -
- - - -
- {/* Sync Changes Switch */} -
- - -
-
- {/* Display Inactive Segmentations Switch */} -
- - -
- {/* Additional Opacity Slider */} -
- - - -
-
-
-
- {/* TMTV1 Group */} - - -
- {/* Left Group: DropdownMenu and TMTV1 Label */} -
- - - - - - - - Add Segment - - - - - Remove from Viewport - - - - Rename - - - - Hide or Show all Segments - - - - - Export & Download - - - - Export DICOM SEG - Download DICOM SEG - Download DICOM RTSTRUCT - - - - - - - Delete - - - -
TMTV1 Segmentation
-
-
- -
-
-
- - {/* Data Rows for TMTV1 */} -
- {tmvGroup.items.map((item, index) => { - const compositeId = `${tmvGroup.type}-${item.id}-panel`; // Ensure unique composite ID - return ( - handleAction(compositeId, action)} - isSelected={selectedRowId === compositeId} - onSelect={() => handleRowSelect(compositeId)} - /> - ); - })} -
-
-
- {/* TMTV2 Group */} - - -
-
- - - - - - - - Add Segment - - - - - Remove from Viewport - - - - Rename - - - - Hide or Show all Segments - - - - - Export & Download - - - - Export DICOM SEG - Download DICOM SEG - Download DICOM RTSTRUCT - - - - - - - Delete - - - - -
TMTV2 Segmentation
-
-
- -
-
-
- - {/* Data Rows for TMTV2 */} -
- {tmv2Group.items.map((item, index) => { - const compositeId = `${tmv2Group.type}-${item.id}-panel`; // Ensure unique composite ID - return ( - handleAction(compositeId, action)} - isSelected={selectedRowId === compositeId} - onSelect={() => handleRowSelect(compositeId)} - /> - ); - })} -
-
-
- {/* Footer or Additional Information */} -
- TMTV - 21.555 mL -
-
-
-
-
-
- )} -
- ); -} diff --git a/platform/docs/src/theme/Footer/index.tsx b/platform/docs/src/theme/Footer/index.tsx new file mode 100644 index 00000000000..f8230d4a407 --- /dev/null +++ b/platform/docs/src/theme/Footer/index.tsx @@ -0,0 +1,141 @@ +import React from 'react'; +import Link from '@docusaurus/Link'; + +function FooterLink({ + href, + isInternal = true, + children, +}: { + href: string; + isInternal?: boolean; + children: React.ReactNode; +}) { + const className = + 'text-[#358cfd] text-[16px] leading-[31px] hover:text-white transition-colors no-underline'; + + if (isInternal) { + return ( +
  • + + {children} + +
  • + ); + } + + return ( +
  • + + {children} + +
  • + ); +} + +export default function Footer(): JSX.Element { + return ( +
    +
    +
    + {/* Column 1: OHIF Title */} +
    +

    + Open Health +
    + Imaging Foundation +

    +
    + + {/* Column 2: Internal Links */} +
    +
      + + Roadmap + + + Team + + + License + + + Release Notes + +
    +
    + + {/* Column 3: External Links */} +
    +
      + + Support & Collaborate + + + GitHub + + + Slack Group + + + Discussions + + + LinkedIn + +
    +
    + + {/* Column 4: MGH Logo + License */} +
    +
    + + Massachusetts General Hospital - Founding Member, Mass General Brigham + +
    + +

    + OHIF is open source software released under the{' '} + + MIT license + + . +

    +
    +
    +
    +
    + ); +} diff --git a/platform/docs/static/img/mgh-logo-white.svg b/platform/docs/static/img/mgh-logo-white.svg new file mode 100644 index 00000000000..b2f5c5ebb0f --- /dev/null +++ b/platform/docs/static/img/mgh-logo-white.svg @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/platform/docs/static/img/theming-color-roles.png b/platform/docs/static/img/theming-color-roles.png new file mode 100644 index 00000000000..84eefedfc52 Binary files /dev/null and b/platform/docs/static/img/theming-color-roles.png differ diff --git a/platform/docs/static/img/theming-dialog-01-select-theme.png b/platform/docs/static/img/theming-dialog-01-select-theme.png new file mode 100644 index 00000000000..448d6024152 Binary files /dev/null and b/platform/docs/static/img/theming-dialog-01-select-theme.png differ diff --git a/platform/docs/static/img/theming-dialog-02-default.png b/platform/docs/static/img/theming-dialog-02-default.png new file mode 100644 index 00000000000..618ad5d238b Binary files /dev/null and b/platform/docs/static/img/theming-dialog-02-default.png differ diff --git a/platform/docs/static/img/theming-dialog-03-custom.png b/platform/docs/static/img/theming-dialog-03-custom.png new file mode 100644 index 00000000000..ade82b995c6 Binary files /dev/null and b/platform/docs/static/img/theming-dialog-03-custom.png differ diff --git a/platform/docs/static/img/theming-layers.png b/platform/docs/static/img/theming-layers.png new file mode 100644 index 00000000000..ae4d3d8c8b4 Binary files /dev/null and b/platform/docs/static/img/theming-layers.png differ diff --git a/platform/docs/static/img/theming-themes.png b/platform/docs/static/img/theming-themes.png new file mode 100644 index 00000000000..5fe0f3073cf Binary files /dev/null and b/platform/docs/static/img/theming-themes.png differ diff --git a/platform/docs/tailwind.config.js b/platform/docs/tailwind.config.js index e808b779e2e..11f7518afe2 100644 --- a/platform/docs/tailwind.config.js +++ b/platform/docs/tailwind.config.js @@ -1,8 +1,13 @@ +const { + scopedPreflightStyles, + isolateInsideOfContainer, +} = require('tailwindcss-scoped-preflight'); + module.exports = { - // Don't purge any tailwind classes, usefull for debugging - // ...(process.env.NODE_ENV === 'development' && { - // safelist: [{ pattern: /.*/ }], - // }), + darkMode: ['class', '[data-theme="dark"]'], + corePlugins: { + preflight: false, + }, content: [ './pages/**/*.{ts,tsx}', './components/**/*.{ts,tsx}', @@ -40,6 +45,29 @@ module.exports = { extrabold: '800', black: '900', }, + opacity: { + 0: '0', + 5: '.05', + 10: '.10', + 15: '.15', + 20: '.20', + 25: '.25', + 30: '.30', + 35: '.35', + 40: '.40', + 45: '.45', + 50: '.50', + 55: '.55', + 60: '.60', + 65: '.65', + 70: '.70', + 75: '.75', + 80: '.80', + 85: '.85', + 90: '.90', + 95: '.95', + 100: '1', + }, extend: { colors: { highlight: 'hsl(var(--highlight))', @@ -115,5 +143,10 @@ module.exports = { }, }, }, - plugins: [require('tailwindcss-animate')], + plugins: [ + scopedPreflightStyles({ + isolationStrategy: isolateInsideOfContainer('.showcase-isolated'), + }), + require('tailwindcss-animate'), + ], }; diff --git a/platform/docs/versioned_docs/version-3.11/migration-guide/3p8-to-3p9/1-segmentation/index.md b/platform/docs/versioned_docs/version-3.11/migration-guide/3p8-to-3p9/1-segmentation/index.md index b6fa29f88b4..62b3f920585 100644 --- a/platform/docs/versioned_docs/version-3.11/migration-guide/3p8-to-3p9/1-segmentation/index.md +++ b/platform/docs/versioned_docs/version-3.11/migration-guide/3p8-to-3p9/1-segmentation/index.md @@ -6,7 +6,6 @@ summary: Migration guide for segmentation architecture changes in OHIF 3.9, cove --- import DocCardList from '@theme/DocCardList'; -import {useCurrentSidebarCategory} from '@docusaurus/theme-common'; :::info This migration involves significant architectural changes to the segmentation system. While we typically aim for incremental updates, the shift from a tool group-centric to a viewport-centric architecture was necessary to support OHIF 3.9's advanced visualization capabilities, and more flexible segmentation handling. @@ -15,4 +14,4 @@ Don't worry - we'll guide you through each change step by step! ::: - + diff --git a/platform/docs/versioned_docs/version-3.11/migration-guide/3p8-to-3p9/index.md b/platform/docs/versioned_docs/version-3.11/migration-guide/3p8-to-3p9/index.md index c6f3393c379..ca6936af20a 100644 --- a/platform/docs/versioned_docs/version-3.11/migration-guide/3p8-to-3p9/index.md +++ b/platform/docs/versioned_docs/version-3.11/migration-guide/3p8-to-3p9/index.md @@ -7,8 +7,7 @@ summary: Migration guide for upgrading from OHIF 3.8 to 3.9, covering segmentati import DocCardList from '@theme/DocCardList'; -import {useCurrentSidebarCategory} from '@docusaurus/theme-common'; ## Migration Guide Sections - + diff --git a/platform/docs/versioned_docs/version-3.11/migration-guide/3p9-to-3p10/3-UI/1a-Colors.md b/platform/docs/versioned_docs/version-3.11/migration-guide/3p9-to-3p10/3-UI/1a-Colors.md index 14b7313b48d..e2b6664d6a9 100644 --- a/platform/docs/versioned_docs/version-3.11/migration-guide/3p9-to-3p10/3-UI/1a-Colors.md +++ b/platform/docs/versioned_docs/version-3.11/migration-guide/3p9-to-3p10/3-UI/1a-Colors.md @@ -12,7 +12,7 @@ summary: Migration guide for OHIF 3.10's new color system, explaining the transi * **Component Abstraction:** Some styling, especially for interactive elements like buttons, has been abstracted into components (e.g., `ViewportActionButton`, UI library buttons) which use predefined variants (`default`, `secondary`, `ghost`) instead of manual style combinations. :::note -You can look at the set of colors in the [Color System](/colors-and-type) +You can look at the set of colors in the [Color System](/colors-and-theming) ::: diff --git a/platform/docs/versioned_docs/version-3.11/migration-guide/3p9-to-3p10/3-UI/3-Migration-3p10-Input.md b/platform/docs/versioned_docs/version-3.11/migration-guide/3p9-to-3p10/3-UI/3-Migration-3p10-Input.md index a2b2e57aa92..fab5b1bbc6c 100644 --- a/platform/docs/versioned_docs/version-3.11/migration-guide/3p9-to-3p10/3-UI/3-Migration-3p10-Input.md +++ b/platform/docs/versioned_docs/version-3.11/migration-guide/3p9-to-3p10/3-UI/3-Migration-3p10-Input.md @@ -13,7 +13,7 @@ This guide explains how to migrate from the existing `Input`, `InputNumber`, `In ## Why Migrate? - See the full list of components in the [Numeric Component Showcase](/components-list#numeric) + See the full list of components in the [Numeric Component](/components/numeric) The old components relied heavily on props, making them complex and difficult to maintain and apply custom styles. The new `Numeric` component provides a structured approach with a context-based API, reducing prop clutter and improving reusability. diff --git a/platform/docs/versioned_docs/version-3.11/migration-guide/index.md b/platform/docs/versioned_docs/version-3.11/migration-guide/index.md index a293b5cf442..e21738b62f6 100644 --- a/platform/docs/versioned_docs/version-3.11/migration-guide/index.md +++ b/platform/docs/versioned_docs/version-3.11/migration-guide/index.md @@ -6,10 +6,9 @@ summary: Introduction to OHIF migration guides covering the upgrade paths betwee import DocCardList from '@theme/DocCardList'; -import {useCurrentSidebarCategory} from '@docusaurus/theme-common'; # Migration Guides Based on the version you are migrating from, you can find the migration guide for the latest version of the platform. - + diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7de0e9c38ef..e4f1934950d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -61,43 +61,43 @@ importers: version: 7.29.7(supports-color@8.1.1) '@babel/plugin-syntax-dynamic-import': specifier: 7.8.3 - version: 7.8.3(@babel/core@7.29.7(supports-color@8.1.1)) + version: 7.8.3(@babel/core@7.29.7) '@babel/plugin-transform-arrow-functions': specifier: 7.29.7 - version: 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + version: 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-class-properties': specifier: 7.29.7 - version: 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + version: 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-for-of': specifier: 7.29.7 - version: 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + version: 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-object-rest-spread': specifier: 7.29.7 - version: 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + version: 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-private-methods': specifier: 7.29.7 - version: 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + version: 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-private-property-in-object': specifier: 7.29.7 - version: 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + version: 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-regenerator': specifier: 7.29.7 - version: 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + version: 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-runtime': specifier: 7.29.7 - version: 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + version: 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-typescript': specifier: 7.29.7 - version: 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + version: 7.29.7(@babel/core@7.29.7) '@babel/preset-env': specifier: 7.29.7 - version: 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + version: 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) '@babel/preset-react': specifier: 7.29.7 - version: 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + version: 7.29.7(@babel/core@7.29.7) '@babel/preset-typescript': specifier: 7.29.7 - version: 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + version: 7.29.7(@babel/core@7.29.7) '@istanbuljs/nyc-config-typescript': specifier: 1.0.2 version: 1.0.2(nyc@17.1.0(supports-color@8.1.1)) @@ -115,7 +115,7 @@ importers: version: 29.7.0(@babel/core@7.29.7(supports-color@8.1.1)) babel-loader: specifier: 8.4.1 - version: 8.4.1(@babel/core@7.29.7(supports-color@8.1.1))(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) + version: 8.4.1(@babel/core@7.29.7)(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) babel-plugin-istanbul: specifier: 7.0.1 version: 7.0.1 @@ -871,7 +871,7 @@ importers: devDependencies: '@babel/core': specifier: 7.29.7 - version: 7.29.7 + version: 7.29.7(supports-color@8.1.1) '@babel/plugin-syntax-dynamic-import': specifier: 7.8.3 version: 7.8.3(@babel/core@7.29.7) @@ -901,7 +901,7 @@ importers: version: 7.29.7(@babel/core@7.29.7) '@babel/preset-env': specifier: 7.29.7 - version: 7.29.7(@babel/core@7.29.7) + version: 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) '@babel/preset-react': specifier: 7.29.7 version: 7.29.7(@babel/core@7.29.7) @@ -910,7 +910,7 @@ importers: version: 7.29.7(@babel/core@7.29.7) '@svgr/webpack': specifier: 8.1.0 - version: 8.1.0(typescript@5.5.4) + version: 8.1.0(supports-color@8.1.1)(typescript@5.5.4) babel-loader: specifier: 8.4.1 version: 8.4.1(@babel/core@7.29.7)(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) @@ -1160,7 +1160,7 @@ importers: devDependencies: '@babel/core': specifier: 7.29.7 - version: 7.29.7 + version: 7.29.7(supports-color@8.1.1) '@babel/plugin-syntax-dynamic-import': specifier: 7.8.3 version: 7.8.3(@babel/core@7.29.7) @@ -1187,7 +1187,7 @@ importers: version: 7.29.7(@babel/core@7.29.7) '@babel/preset-env': specifier: 7.29.7 - version: 7.29.7(@babel/core@7.29.7) + version: 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) '@babel/preset-react': specifier: 7.29.7 version: 7.29.7(@babel/core@7.29.7) @@ -1196,7 +1196,7 @@ importers: version: 7.29.7(@babel/core@7.29.7) '@svgr/webpack': specifier: 8.1.0 - version: 8.1.0(typescript@5.5.4) + version: 8.1.0(supports-color@8.1.1)(typescript@5.5.4) babel-loader: specifier: 8.4.1 version: 8.4.1(@babel/core@7.29.7)(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) @@ -1270,7 +1270,7 @@ importers: devDependencies: '@babel/core': specifier: 7.29.7 - version: 7.29.7 + version: 7.29.7(supports-color@8.1.1) '@babel/plugin-syntax-dynamic-import': specifier: 7.8.3 version: 7.8.3(@babel/core@7.29.7) @@ -1297,7 +1297,7 @@ importers: version: 7.29.7(@babel/core@7.29.7) '@babel/preset-env': specifier: 7.29.7 - version: 7.29.7(@babel/core@7.29.7) + version: 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) '@babel/preset-react': specifier: 7.29.7 version: 7.29.7(@babel/core@7.29.7) @@ -1306,7 +1306,7 @@ importers: version: 7.29.7(@babel/core@7.29.7) '@svgr/webpack': specifier: 8.1.0 - version: 8.1.0(typescript@5.5.4) + version: 8.1.0(supports-color@8.1.1)(typescript@5.5.4) babel-loader: specifier: 8.4.1 version: 8.4.1(@babel/core@7.29.7)(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) @@ -1357,7 +1357,7 @@ importers: version: link:../ui-next '@svgr/webpack': specifier: 8.1.0 - version: 8.1.0(typescript@5.5.4) + version: 8.1.0(supports-color@8.1.1)(typescript@5.5.4) '@types/react': specifier: 18.3.23 version: 18.3.23 @@ -1448,13 +1448,13 @@ importers: version: 7.29.7(@babel/core@7.29.7) '@rspack/cli': specifier: ^2.0.0 - version: 2.0.3(@rspack/core@2.0.3(@swc/helpers@0.5.21))(@rspack/dev-server@2.0.1(@rspack/core@2.0.3(@swc/helpers@0.5.21))) + version: 2.0.3(@rspack/core@2.0.3(@swc/helpers@0.5.21))(@rspack/dev-server@2.0.1(@rspack/core@2.0.3(@swc/helpers@0.5.21))(selfsigned@5.5.0)) '@rspack/core': specifier: ^2.0.0 version: 2.0.3(@swc/helpers@0.5.21) '@rspack/dev-server': specifier: ^2.0.0 - version: 2.0.1(@rspack/core@2.0.3(@swc/helpers@0.5.21)) + version: 2.0.1(@rspack/core@2.0.3(@swc/helpers@0.5.21))(selfsigned@5.5.0) '@rspack/plugin-react-refresh': specifier: ^2.0.0 version: 2.0.0(@rspack/core@2.0.3(@swc/helpers@0.5.21))(react-refresh@0.18.0) @@ -1490,7 +1490,7 @@ importers: dependencies: '@babel/core': specifier: 7.29.7 - version: 7.29.7 + version: 7.29.7(supports-color@8.1.1) axios: specifier: 1.17.0 version: 1.17.0 @@ -1613,44 +1613,44 @@ importers: platform/docs: dependencies: '@docusaurus/core': - specifier: 3.7.0 - version: 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + specifier: 3.10.1 + version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) '@docusaurus/faster': - specifier: 3.7.0 - version: 3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21) + specifier: 3.10.1 + version: 3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21) '@docusaurus/module-type-aliases': - specifier: 3.7.0 - version: 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 3.10.1 + version: 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@docusaurus/plugin-client-redirects': - specifier: 3.7.0 - version: 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + specifier: 3.10.1 + version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) '@docusaurus/plugin-google-gtag': - specifier: 3.7.0 - version: 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + specifier: 3.10.1 + version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) '@docusaurus/plugin-ideal-image': - specifier: 3.7.0 - version: 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + specifier: 3.10.1 + version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) '@docusaurus/plugin-pwa': - specifier: 3.7.0 - version: 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@docusaurus/plugin-content-docs@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/babel__core@7.20.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + specifier: 3.10.1 + version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/babel__core@7.20.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) '@docusaurus/preset-classic': - specifier: 3.7.0 - version: 3.7.0(@algolia/client-search@5.49.1)(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.5.4) + specifier: 3.10.1 + version: 3.10.1(@algolia/client-search@5.49.1)(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.5.4) '@docusaurus/remark-plugin-npm2yarn': - specifier: 3.7.0 - version: 3.7.0 + specifier: 3.10.1 + version: 3.10.1 '@docusaurus/theme-classic': - specifier: 3.7.0 - version: 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + specifier: 3.10.1 + version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) '@docusaurus/theme-live-codeblock': - specifier: 3.7.0 - version: 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@docusaurus/plugin-content-docs@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + specifier: 3.10.1 + version: 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) '@docusaurus/tsconfig': - specifier: 3.0.0 - version: 3.0.0 + specifier: 3.10.1 + version: 3.10.1 '@docusaurus/types': - specifier: 3.0.0 - version: 3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 3.10.1 + version: 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mdx-js/react': specifier: 3.0.1 version: 3.0.1(@types/react@18.3.23)(react@18.3.1) @@ -1707,7 +1707,7 @@ importers: version: 1.2.7(@types/react-dom@18.3.7(@types/react@18.3.23))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@svgr/webpack': specifier: 8.1.0 - version: 8.1.0(typescript@5.5.4) + version: 8.1.0(supports-color@8.1.1)(typescript@5.5.4) '@types/react': specifier: 18.3.23 version: 18.3.23 @@ -1731,7 +1731,7 @@ importers: version: 3.6.0 docusaurus-plugin-image-zoom: specifier: 1.0.1 - version: 1.0.1(@docusaurus/theme-classic@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)) + version: 1.0.1(@docusaurus/theme-classic@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)) file-loader: specifier: 6.2.0 version: 6.2.0(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) @@ -1789,6 +1789,9 @@ importers: tailwindcss-animate: specifier: 1.0.7 version: 1.0.7(tailwindcss@3.2.4(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/node@25.9.1)(typescript@5.5.4))) + tailwindcss-scoped-preflight: + specifier: 3.5.9 + version: 3.5.9(postcss@8.5.6)(tailwindcss@3.2.4(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/node@25.9.1)(typescript@5.5.4))) typescript: specifier: 5.5.4 version: 5.5.4 @@ -1929,7 +1932,7 @@ importers: devDependencies: '@babel/core': specifier: 7.29.7 - version: 7.29.7 + version: 7.29.7(supports-color@8.1.1) autoprefixer: specifier: 10.4.21 version: 10.4.21(postcss@8.5.6) @@ -2079,11 +2082,19 @@ packages: '@algolia/autocomplete-core@1.17.9': resolution: {integrity: sha512-O7BxrpLDPJWWHv/DLA9DRFWs+iY1uOJZkqUwjS5HSZAGcl0hIVCQ97LTLewiZmZ402JYUrun+8NqFP+hCknlbQ==} + '@algolia/autocomplete-core@1.19.8': + resolution: {integrity: sha512-3YEorYg44niXcm7gkft3nXYItHd44e8tmh4D33CTszPgP0QWkaLEaFywiNyJBo7UL/mqObA/G9RYuU7R8tN1IA==} + '@algolia/autocomplete-plugin-algolia-insights@1.17.9': resolution: {integrity: sha512-u1fEHkCbWF92DBeB/KHeMacsjsoI0wFhjZtlCq2ddZbAehshbZST6Hs0Avkc0s+4UyBGbMDnSuXHLuvRWK5iDQ==} peerDependencies: search-insights: '>= 1 < 3' + '@algolia/autocomplete-plugin-algolia-insights@1.19.8': + resolution: {integrity: sha512-ZvJWO8ZZJDpc1LNM2TTBdmQsZBLMR4rU5iNR2OYvEeFBiaf/0ESnRSSLQbryarJY4SVxtoz6A2ZtDMNM+iQEAA==} + peerDependencies: + search-insights: '>= 1 < 3' + '@algolia/autocomplete-preset-algolia@1.17.9': resolution: {integrity: sha512-Na1OuceSJeg8j7ZWn5ssMu/Ax3amtOwk76u4h5J4eK2Nx2KB5qt0Z4cOapCsxot9VcEN11ADV5aUSlQF4RhGjQ==} peerDependencies: @@ -2096,6 +2107,12 @@ packages: '@algolia/client-search': '>= 4.9.1 < 6' algoliasearch: '>= 4.9.1 < 6' + '@algolia/autocomplete-shared@1.19.8': + resolution: {integrity: sha512-h5hf2t8ejF6vlOgvLaZzQbWs5SyH2z4PAWygNAvvD/2RI29hdQ54ldUGwqVuj9Srs+n8XUKTPUqb7fvhBhQrnQ==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + '@algolia/client-abtesting@5.49.1': resolution: {integrity: sha512-h6M7HzPin+45/l09q0r2dYmocSSt2MMGOOk5c4O5K/bBBlEwf1BKfN6z+iX4b8WXcQQhf7rgQwC52kBZJt/ZZw==} engines: {node: '>= 14.0.0'} @@ -3134,12 +3151,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-runtime@7.28.0': - resolution: {integrity: sha512-dGopk9nZrtCs2+nfIem25UuHyt5moSJamArzIoh9/vezUQPmYDOzjaHDCkAzuGJibCIkPup8rMT2+wYB6S73cA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-runtime@7.29.7': resolution: {integrity: sha512-xmAscdE/AsqRW7vutbPNoUmu/nF5SrLKPs7aoJgEjo35lLKA/Bc0i2rMv/hr1+Y0o1bQCiVtith3u2vdgRL39Q==} engines: {node: '>=6.9.0'} @@ -3862,119 +3873,127 @@ packages: search-insights: optional: true - '@docusaurus/babel@3.7.0': - resolution: {integrity: sha512-0H5uoJLm14S/oKV3Keihxvh8RV+vrid+6Gv+2qhuzbqHanawga8tYnsdpjEyt36ucJjqlby2/Md2ObWjA02UXQ==} - engines: {node: '>=18.0'} + '@docusaurus/babel@3.10.1': + resolution: {integrity: sha512-DZzFO1K3v/GoEt1fx1DiYHF4en+PuhtQf1AkQJa5zu3CoeKSpr5cpQRUlz3jr0m44wyzmSXu9bVpfir+N4+8bg==} + engines: {node: '>=20.0'} - '@docusaurus/bundler@3.7.0': - resolution: {integrity: sha512-CUUT9VlSGukrCU5ctZucykvgCISivct+cby28wJwCC/fkQFgAHRp/GKv2tx38ZmXb7nacrKzFTcp++f9txUYGg==} - engines: {node: '>=18.0'} + '@docusaurus/bundler@3.10.1': + resolution: {integrity: sha512-HIqQPvbqnnQRe4NsBd1774KRarjXqS6wHsWELtyuSs1gCfvixJO2jUGH/OEBtr1Gvzpw+ze5CjGMvSJ8UE1KUw==} + engines: {node: '>=20.0'} peerDependencies: '@docusaurus/faster': '*' peerDependenciesMeta: '@docusaurus/faster': optional: true - '@docusaurus/core@3.7.0': - resolution: {integrity: sha512-b0fUmaL+JbzDIQaamzpAFpTviiaU4cX3Qz8cuo14+HGBCwa0evEK0UYCBFY3n4cLzL8Op1BueeroUD2LYAIHbQ==} - engines: {node: '>=18.0'} + '@docusaurus/core@3.10.1': + resolution: {integrity: sha512-3pf2fXXw0eVk8WnC3T4LIigRDupcpvngpKo9Vy7mYyBhuddc0klDUuZAIfzMoK6z05pdlk6EFC/vBSX43+1O5w==} + engines: {node: '>=20.0'} hasBin: true peerDependencies: + '@docusaurus/faster': '*' '@mdx-js/react': ^3.0.0 react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@docusaurus/faster': + optional: true - '@docusaurus/cssnano-preset@3.7.0': - resolution: {integrity: sha512-X9GYgruZBSOozg4w4dzv9uOz8oK/EpPVQXkp0MM6Tsgp/nRIU9hJzJ0Pxg1aRa3xCeEQTOimZHcocQFlLwYajQ==} - engines: {node: '>=18.0'} + '@docusaurus/cssnano-preset@3.10.1': + resolution: {integrity: sha512-eNfHGcTKCSq6xmcavAkX3RRclHaE2xRCMParlDXLdXVP01/a2e/jKXMj/0ULnLFQSNwwuI62L0Ge8J+nZsR7UQ==} + engines: {node: '>=20.0'} - '@docusaurus/faster@3.7.0': - resolution: {integrity: sha512-d+7uyOEs3SBk38i2TL79N6mFaP7J4knc5lPX/W9od+jplXZhnDdl5ZMh2u2Lg7JxGV/l33Bd7h/xwv4mr21zag==} - engines: {node: '>=18.0'} + '@docusaurus/faster@3.10.1': + resolution: {integrity: sha512-XTZhE5C1gZ/DaYYMlSk02dwP5vhpQON5QHVz1s3892mSESAywgWanURpXEDAvt4GvGuq7s+XP8rTWHZvfaJmdQ==} + engines: {node: '>=20.0'} peerDependencies: '@docusaurus/types': '*' - '@docusaurus/logger@3.7.0': - resolution: {integrity: sha512-z7g62X7bYxCYmeNNuO9jmzxLQG95q9QxINCwpboVcNff3SJiHJbGrarxxOVMVmAh1MsrSfxWkVGv4P41ktnFsA==} - engines: {node: '>=18.0'} + '@docusaurus/logger@3.10.1': + resolution: {integrity: sha512-oPjNFnfJsRCkePVjkGrxWGq4MvJKRQT0r9jOP0eRBTZ7Wr9FAbzdP/Gjs0I2Ss6YRkPoEgygKG112OkE6skvJw==} + engines: {node: '>=20.0'} - '@docusaurus/lqip-loader@3.7.0': - resolution: {integrity: sha512-bEQ/6o9VSzpqV6OYbyoZUtrKAFJOPKdo8tBmvZCee3M+Hl4V1XAg4TY/KmlAlw6HfMdr42FuqGIy9CsFNxL3CQ==} - engines: {node: '>=18.0'} + '@docusaurus/lqip-loader@3.10.1': + resolution: {integrity: sha512-ushByv88FWxsh3BS9QccWcEbKsW0QnNvWnl0+NCLe7weL5AkHS4HnSDszGMSzn2v5jidT4QjOVHacNVsU5I9Lw==} + engines: {node: '>=20.0'} - '@docusaurus/mdx-loader@3.7.0': - resolution: {integrity: sha512-OFBG6oMjZzc78/U3WNPSHs2W9ZJ723ewAcvVJaqS0VgyeUfmzUV8f1sv+iUHA0DtwiR5T5FjOxj6nzEE8LY6VA==} - engines: {node: '>=18.0'} + '@docusaurus/mdx-loader@3.10.1': + resolution: {integrity: sha512-GRmeb/wQ+iXRrFwcHBfgQhrJxGElgCsoTWZYDhccjsZVne1p8MK/EpQVIloXttz76TCe78kKD5AEG9n1xc1oxQ==} + engines: {node: '>=20.0'} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - '@docusaurus/module-type-aliases@3.7.0': - resolution: {integrity: sha512-g7WdPqDNaqA60CmBrr0cORTrsOit77hbsTj7xE2l71YhBn79sxdm7WMK7wfhcaafkbpIh7jv5ef5TOpf1Xv9Lg==} + '@docusaurus/module-type-aliases@3.10.1': + resolution: {integrity: sha512-YoOZKUdGlp8xSYhuAkGdSo5Ydkbq4V4eK3sD8v0a2hloxCWdQbNBhkc+Ko9QyjpESc0BYcIGM5iHVAy5hdFV6w==} peerDependencies: react: '*' react-dom: '*' - '@docusaurus/plugin-client-redirects@3.7.0': - resolution: {integrity: sha512-6B4XAtE5ZVKOyhPgpgMkb7LwCkN+Hgd4vOnlbwR8nCdTQhLjz8MHbGlwwvZ/cay2SPNRX5KssqKAlcHVZP2m8g==} - engines: {node: '>=18.0'} + '@docusaurus/plugin-client-redirects@3.10.1': + resolution: {integrity: sha512-LHgd+YDvkhfOHMAE6XtUng3DQNzVM765RqVRrMJgHtzAvfopQhY6ieprqjxDVBdv21cLma6I0jHr+YCZH8fL9A==} + engines: {node: '>=20.0'} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - '@docusaurus/plugin-content-blog@3.7.0': - resolution: {integrity: sha512-EFLgEz6tGHYWdPU0rK8tSscZwx+AsyuBW/r+tNig2kbccHYGUJmZtYN38GjAa3Fda4NU+6wqUO5kTXQSRBQD3g==} - engines: {node: '>=18.0'} + '@docusaurus/plugin-content-blog@3.10.1': + resolution: {integrity: sha512-mmkgE6Q2+K74tnkou7tXlpDLvoCU/qkSa2GSQ3XUiHWvcebCoDQzS670RR3tO8PmaWlIyWWISYWzZLuMfxunRA==} + engines: {node: '>=20.0'} peerDependencies: '@docusaurus/plugin-content-docs': '*' react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - '@docusaurus/plugin-content-docs@3.7.0': - resolution: {integrity: sha512-GXg5V7kC9FZE4FkUZA8oo/NrlRb06UwuICzI6tcbzj0+TVgjq/mpUXXzSgKzMS82YByi4dY2Q808njcBCyy6tQ==} - engines: {node: '>=18.0'} + '@docusaurus/plugin-content-docs@3.10.1': + resolution: {integrity: sha512-2jRVrtzjf8LClGTHQlwlwuD3wQXRx3WEoF7XUarJ8Ou+0onV+SLtejsyfY9JLpfUh9hPhXM4pbBGkyAY4Bi3HQ==} + engines: {node: '>=20.0'} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - '@docusaurus/plugin-content-pages@3.7.0': - resolution: {integrity: sha512-YJSU3tjIJf032/Aeao8SZjFOrXJbz/FACMveSMjLyMH4itQyZ2XgUIzt4y+1ISvvk5zrW4DABVT2awTCqBkx0Q==} - engines: {node: '>=18.0'} + '@docusaurus/plugin-content-pages@3.10.1': + resolution: {integrity: sha512-huJpaRPMl42nsFwuCXvV8bVDj2MazuwRJIUylI/RSlmZeJssVoZXeCjVf1y+1Drtpa9SKcdGn8yoJ76IRJijtw==} + engines: {node: '>=20.0'} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - '@docusaurus/plugin-debug@3.7.0': - resolution: {integrity: sha512-Qgg+IjG/z4svtbCNyTocjIwvNTNEwgRjSXXSJkKVG0oWoH0eX/HAPiu+TS1HBwRPQV+tTYPWLrUypYFepfujZA==} - engines: {node: '>=18.0'} + '@docusaurus/plugin-css-cascade-layers@3.10.1': + resolution: {integrity: sha512-r//fn+MNHkE1wCof8T29VAQezt1enGCpsFxoziBbvLgBM4JfXN2P3rxrBaavHmvLvm7lYkpJeitcDthwnmWCTw==} + engines: {node: '>=20.0'} + + '@docusaurus/plugin-debug@3.10.1': + resolution: {integrity: sha512-9KqOpKNfAyqGZykRb9LhIT/vyRF6sm/ykhjj/39JvaJahDS+jZJE0Z1Wfz9q3DUNDTMNN0Q7u/kk4rKKU+IJuA==} + engines: {node: '>=20.0'} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - '@docusaurus/plugin-google-analytics@3.7.0': - resolution: {integrity: sha512-otIqiRV/jka6Snjf+AqB360XCeSv7lQC+DKYW+EUZf6XbuE8utz5PeUQ8VuOcD8Bk5zvT1MC4JKcd5zPfDuMWA==} - engines: {node: '>=18.0'} + '@docusaurus/plugin-google-analytics@3.10.1': + resolution: {integrity: sha512-8o0P1KtmgdYQHH+oInitPpRWI0Of5XednAX4+DMhQNSmGSRNrsEEHg1ebv35m9AgRClfAytCJ5jA9KvcASTyuA==} + engines: {node: '>=20.0'} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - '@docusaurus/plugin-google-gtag@3.7.0': - resolution: {integrity: sha512-M3vrMct1tY65ModbyeDaMoA+fNJTSPe5qmchhAbtqhDD/iALri0g9LrEpIOwNaoLmm6lO88sfBUADQrSRSGSWA==} - engines: {node: '>=18.0'} + '@docusaurus/plugin-google-gtag@3.10.1': + resolution: {integrity: sha512-pu3xIUo5o/zCMLfUY9BO5KOwSH0zIsAGyFRPvXHayFSA5XIhCU/SFuB0g0ZNjFn9niZLCaNvoeAuOGFJZq0fdw==} + engines: {node: '>=20.0'} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - '@docusaurus/plugin-google-tag-manager@3.7.0': - resolution: {integrity: sha512-X8U78nb8eiMiPNg3jb9zDIVuuo/rE1LjGDGu+5m5CX4UBZzjMy+klOY2fNya6x8ACyE/L3K2erO1ErheP55W/w==} - engines: {node: '>=18.0'} + '@docusaurus/plugin-google-tag-manager@3.10.1': + resolution: {integrity: sha512-f6fyGHiCm7kJHBtAisGQS5oNBnpnMTYQZxDXeVrnw/3zWU+LMA22pr6UHGYkBKDbN+qPC5QHG3NuOfzQLq3+Lw==} + engines: {node: '>=20.0'} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - '@docusaurus/plugin-ideal-image@3.7.0': - resolution: {integrity: sha512-1IKmXJ6I7WKxfESdCMroechuoQEo1IZzIOhQlga8m7ioHzu+sb+Egnyrau2buCYh0QJ8gZoXtscSt5TBFlzMOQ==} - engines: {node: '>=18.0'} + '@docusaurus/plugin-ideal-image@3.10.1': + resolution: {integrity: sha512-zIjQ/BtFS6YwEgnk9ypZxuSnA/Z011Z9cuaawKVfgyT7T+vuGx6T6ZgKur0IFnOkpI7EfI1DhbfdABCtfEzWFA==} + engines: {node: '>=20.0'} peerDependencies: jimp: '*' react: ^18.0.0 || ^19.0.0 @@ -3983,30 +4002,30 @@ packages: jimp: optional: true - '@docusaurus/plugin-pwa@3.7.0': - resolution: {integrity: sha512-I/4C2Uuc/+96fDJ3enMBlPJRR2gAzdVRXMKgR/W3U7gAJEl13pKjT8Tn5BTX52+nVMVR23eUmCZsfaipUhiiTA==} - engines: {node: '>=18.0'} + '@docusaurus/plugin-pwa@3.10.1': + resolution: {integrity: sha512-a5RI8Cxx5zeZky2F88CeB9Afel98Q9t7Bu6rgRKSm0biM7qABRDBTW/nTMV120Ehsj09sDPhLEE+x11HycbnkA==} + engines: {node: '>=20.0'} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - '@docusaurus/plugin-sitemap@3.7.0': - resolution: {integrity: sha512-bTRT9YLZ/8I/wYWKMQke18+PF9MV8Qub34Sku6aw/vlZ/U+kuEuRpQ8bTcNOjaTSfYsWkK4tTwDMHK2p5S86cA==} - engines: {node: '>=18.0'} + '@docusaurus/plugin-sitemap@3.10.1': + resolution: {integrity: sha512-C26MbmmqgdjkDq1htaZ3aD7LzEDKFWXfpyQpt0EOUThuq5nV77zDaedV20yHcVo9p+3ey9aZ4pbHA0D3QcZTzg==} + engines: {node: '>=20.0'} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - '@docusaurus/plugin-svgr@3.7.0': - resolution: {integrity: sha512-HByXIZTbc4GV5VAUkZ2DXtXv1Qdlnpk3IpuImwSnEzCDBkUMYcec5282hPjn6skZqB25M1TYCmWS91UbhBGxQg==} - engines: {node: '>=18.0'} + '@docusaurus/plugin-svgr@3.10.1': + resolution: {integrity: sha512-6SFxsmjWFkVLDmBUvFK6i72QjUwqyQFe4Ovz+SUJophJjOyVG3ZZG5IQpBC/kX/Gfv1yWeU9nWauH6F6Q7QX/Q==} + engines: {node: '>=20.0'} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - '@docusaurus/preset-classic@3.7.0': - resolution: {integrity: sha512-nPHj8AxDLAaQXs+O6+BwILFuhiWbjfQWrdw2tifOClQoNfuXDjfjogee6zfx6NGHWqshR23LrcN115DmkHC91Q==} - engines: {node: '>=18.0'} + '@docusaurus/preset-classic@3.10.1': + resolution: {integrity: sha512-YO/FL8v1zmbxoTso6mjMz/RDjhaTJxb1UpFFTDdY5847LLDCeyYiYlrhyTbgN1RIN3xnkLKZ9Lj1x8hUzI4JOg==} + engines: {node: '>=20.0'} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 @@ -4016,9 +4035,9 @@ packages: peerDependencies: react: '*' - '@docusaurus/remark-plugin-npm2yarn@3.7.0': - resolution: {integrity: sha512-2QkZh75vZzPefW5Ljt8gwc1i0ERuS0MRZTEwHsSXSi6vc2NpLVbcmfIuHhwR8o0PcGVTxmBEhQRP0NN1vHdOAA==} - engines: {node: '>=18.0'} + '@docusaurus/remark-plugin-npm2yarn@3.10.1': + resolution: {integrity: sha512-HNxVv5Y9yx934/WLZBHJC7dYua7DVAHvhMl3hbQuzYGOghClP30Rt3hjZ0tqj/K7KqbSbVN0T4M1rBGk+e3t9A==} + engines: {node: '>=20.0'} '@docusaurus/responsive-loader@1.7.1': resolution: {integrity: sha512-jAebZ43f8GVpZSrijLGHVVp7Y0OMIPRaL+HhiIWQ+f/b72lTsKLkSkOVHEzvd2psNJ9lsoiM3gt6akpak6508w==} @@ -4032,65 +4051,59 @@ packages: sharp: optional: true - '@docusaurus/theme-classic@3.7.0': - resolution: {integrity: sha512-MnLxG39WcvLCl4eUzHr0gNcpHQfWoGqzADCly54aqCofQX6UozOS9Th4RK3ARbM9m7zIRv3qbhggI53dQtx/hQ==} - engines: {node: '>=18.0'} + '@docusaurus/theme-classic@3.10.1': + resolution: {integrity: sha512-VU1RK0qb2pab0si4r7HFK37cYco8VzqLj3u1PspVipSr/z/GPVKHO4/HXbnePqHoWDk8urjyGSeatH0NIMBM1A==} + engines: {node: '>=20.0'} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - '@docusaurus/theme-common@3.7.0': - resolution: {integrity: sha512-8eJ5X0y+gWDsURZnBfH0WabdNm8XMCXHv8ENy/3Z/oQKwaB/EHt5lP9VsTDTf36lKEp0V6DjzjFyFIB+CetL0A==} - engines: {node: '>=18.0'} + '@docusaurus/theme-common@3.10.1': + resolution: {integrity: sha512-0YtmIeoNo1fIw65LO8+/1dPgmDV86UmhMkow37gzjytuiCSQm9xob6PJy0L4kuQEMTLfUOGvkXvZr7GPrHquMA==} + engines: {node: '>=20.0'} peerDependencies: '@docusaurus/plugin-content-docs': '*' react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - '@docusaurus/theme-live-codeblock@3.7.0': - resolution: {integrity: sha512-peLs77sk+TuHjAnhyhT8IH3Qsr/zewpwHg5A4EOe/8K4Lj2T8fhro1/Dj66FS8784wwAoxhy5A9Ux9Rsp8h87w==} - engines: {node: '>=18.0'} + '@docusaurus/theme-live-codeblock@3.10.1': + resolution: {integrity: sha512-MKG/0zreelS6YlupQAoKmS5nCw9RRKwDHihJg2FinsU1+rqbrOYNYVq//eQy+m649k9b8XCazEw9VUMTFhpCTg==} + engines: {node: '>=20.0'} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - '@docusaurus/theme-search-algolia@3.7.0': - resolution: {integrity: sha512-Al/j5OdzwRU1m3falm+sYy9AaB93S1XF1Lgk9Yc6amp80dNxJVplQdQTR4cYdzkGtuQqbzUA8+kaoYYO0RbK6g==} - engines: {node: '>=18.0'} + '@docusaurus/theme-search-algolia@3.10.1': + resolution: {integrity: sha512-OTaARARVZj2GvkJQjB+1jOIxntRaXea+G+fMsNqrZBAU1O1vJKDW22R7kECOHW27oJCLFN9HKaZeRrfAUyviug==} + engines: {node: '>=20.0'} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - '@docusaurus/theme-translations@3.7.0': - resolution: {integrity: sha512-Ewq3bEraWDmienM6eaNK7fx+/lHMtGDHQyd1O+4+3EsDxxUmrzPkV7Ct3nBWTuE0MsoZr3yNwQVKjllzCMuU3g==} - engines: {node: '>=18.0'} + '@docusaurus/theme-translations@3.10.1': + resolution: {integrity: sha512-cLMyaKivjBVWKMJuWqyFVVgtqe8DPJNPkog0bn8W1MDVAKcPdxRFycBfC1We1RaNp7Rdk513bmtW78RR6OBxBw==} + engines: {node: '>=20.0'} - '@docusaurus/tsconfig@3.0.0': - resolution: {integrity: sha512-yR9sng4izFudS+v1xV5yboNfc1hATMDpYp9iYfWggbBDwKSm0J1IdIgkygRnqC/AWs1ARUQUpG0gFotPCE/4Ew==} - - '@docusaurus/types@3.0.0': - resolution: {integrity: sha512-Qb+l/hmCOVemReuzvvcFdk84bUmUFyD0Zi81y651ie3VwMrXqC7C0E7yZLKMOsLj/vkqsxHbtkAuYMI89YzNzg==} - peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 + '@docusaurus/tsconfig@3.10.1': + resolution: {integrity: sha512-rYvB7yqkdqWIpAbDzQljGfM4cDBkLTbhmagZBEcsyj6oPUsz47lmW2pYdN1j+7sGFgltbAmQH62xfbrij4Eh6Q==} - '@docusaurus/types@3.7.0': - resolution: {integrity: sha512-kOmZg5RRqJfH31m+6ZpnwVbkqMJrPOG5t0IOl4i/+3ruXyNfWzZ0lVtVrD0u4ONc/0NOsS9sWYaxxWNkH1LdLQ==} + '@docusaurus/types@3.10.1': + resolution: {integrity: sha512-XYMK8k1szDCFMw2V+Xyen0g7Kee1sP3dtFnl7vkGkZOkeAJ/oPDQPL8iz4HBKOo/cwU8QeV6onVjMqtP+tFzsw==} peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - '@docusaurus/utils-common@3.7.0': - resolution: {integrity: sha512-IZeyIfCfXy0Mevj6bWNg7DG7B8G+S6o6JVpddikZtWyxJguiQ7JYr0SIZ0qWd8pGNuMyVwriWmbWqMnK7Y5PwA==} - engines: {node: '>=18.0'} + '@docusaurus/utils-common@3.10.1': + resolution: {integrity: sha512-5mFSgEADtnFxFH7RLw02QA5MpU5JVUCj0MPeIvi/aF4Fi45tQRIuTwXoXDqJ+1VfQJuYJGz3SI63wmGz4HvXzA==} + engines: {node: '>=20.0'} - '@docusaurus/utils-validation@3.7.0': - resolution: {integrity: sha512-w8eiKk8mRdN+bNfeZqC4nyFoxNyI1/VExMKAzD9tqpJfLLbsa46Wfn5wcKH761g9WkKh36RtFV49iL9lh1DYBA==} - engines: {node: '>=18.0'} + '@docusaurus/utils-validation@3.10.1': + resolution: {integrity: sha512-cRv1X69jwaWv47waglllgZVWzeBFLhl53XT/XED/83BerVBTC5FTP8WTcVl8Z6sZOegDSwitu/wpCSPCDOT6lg==} + engines: {node: '>=20.0'} - '@docusaurus/utils@3.7.0': - resolution: {integrity: sha512-e7zcB6TPnVzyUaHMJyLSArKa2AG3h9+4CfvKXKKWNx6hRs+p0a+u7HHTJBgo6KW2m+vqDnuIHK4X+bhmoghAFA==} - engines: {node: '>=18.0'} + '@docusaurus/utils@3.10.1': + resolution: {integrity: sha512-3ojeJry9xBYdJO6qoyyzqeJFSJBVx2mXhyDzSdjwL2+URFQMf+h25gG38iswGImicK0ELjTd1EL2xzk8hf3QPw==} + engines: {node: '>=20.0'} '@emnapi/core@1.10.0': resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} @@ -4098,9 +4111,6 @@ packages: '@emnapi/runtime@1.10.0': resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} - '@emnapi/runtime@1.8.1': - resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} - '@emnapi/wasi-threads@1.2.1': resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} @@ -4478,6 +4488,126 @@ packages: '@jridgewell/trace-mapping@0.3.9': resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + '@jsonjoy.com/base64@1.1.2': + resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + + '@jsonjoy.com/base64@17.67.0': + resolution: {integrity: sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + + '@jsonjoy.com/buffers@1.2.1': + resolution: {integrity: sha512-12cdlDwX4RUM3QxmUbVJWqZ/mrK6dFQH4Zxq6+r1YXKXYBNgZXndx2qbCJwh3+WWkCSn67IjnlG3XYTvmvYtgA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + + '@jsonjoy.com/buffers@17.67.0': + resolution: {integrity: sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + + '@jsonjoy.com/codegen@1.0.0': + resolution: {integrity: sha512-E8Oy+08cmCf0EK/NMxpaJZmOxPqM+6iSe2S4nlSBrPZOORoDJILxtbSUEDKQyTamm/BVAhIGllOBNU79/dwf0g==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + + '@jsonjoy.com/codegen@17.67.0': + resolution: {integrity: sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-core@4.57.8': + resolution: {integrity: sha512-YzVbwggV9452VCeHgo0bjsTaUt1O7JE0XpEsPar93nn/+RAwXk0mb1Y+f5EDJ3TRtRCFe+Ck5RuojdfB4jeHVw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-fsa@4.57.8': + resolution: {integrity: sha512-vmClyvCQMxgqz7uamDiGtRfp4MjzOznk3pcQjCxlIwJcw7TWeyr+bF30hI0x8NxdtNOGMg1pHM74VDIXOeyjuw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-builtins@4.57.8': + resolution: {integrity: sha512-mxXSXw8zZwRVakcjLqR2I/psy4gURFSASZS10kKJ2kJw05GC2nXGroGrWVHxwgkxXgQLsFQnB74QaLzsxzdL/w==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-to-fsa@4.57.8': + resolution: {integrity: sha512-AWZcT/4+H+iDl4XCukbXrarvwEgOrf/prFI5/7eg4ix9FxqVsZysIDJd1Kjd+AjlCeHKHJOaRqjLd5HiGSCJEw==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-utils@4.57.8': + resolution: {integrity: sha512-E/bJ7sQAb4pu9nbeJhbULU3WnqWrswte4N9Js/oHt7aHB746S8/XBqKlcbrqIgnD3095XluovNEZuu5ONT230g==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-node@4.57.8': + resolution: {integrity: sha512-IPEOlDYSnTDYpjQlQg2F8h+eqxKQN3sdbroI0WrteRiQZ462HzVpBo9ZZX485njz4nAacoe3fd4iDiIhk+k5Hg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-print@4.57.8': + resolution: {integrity: sha512-DfzhOBpmvNu5P/KSe4NNQaOnvNliTdcf0qrh/4EReErF/XUQXYkd0vZl/OiJCm/qjEEo8DWRstliw2/JNS84dA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-snapshot@4.57.8': + resolution: {integrity: sha512-L+eqKaWOHLDaiMv1dh/EWQ4hA+o6xAhWSumTo3Teg7OM18jU/KE13/e8Mfal+eAZ/pSl4wIhKHcDiwapJzC8Wg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + + '@jsonjoy.com/json-pack@1.21.0': + resolution: {integrity: sha512-+AKG+R2cfZMShzrF2uQw34v3zbeDYUqnQ+jg7ORic3BGtfw9p/+N6RJbq/kkV8JmYZaINknaEQ2m0/f693ZPpg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + + '@jsonjoy.com/json-pack@17.67.0': + resolution: {integrity: sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + + '@jsonjoy.com/json-pointer@1.0.2': + resolution: {integrity: sha512-Fsn6wM2zlDzY1U+v4Nc8bo3bVqgfNTGcn6dMgs6FjrEnt4ZCe60o6ByKRjOGlI2gow0aE/Q41QOigdTqkyK5fg==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + + '@jsonjoy.com/json-pointer@17.67.0': + resolution: {integrity: sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + + '@jsonjoy.com/util@1.9.0': + resolution: {integrity: sha512-pLuQo+VPRnN8hfPqUTLTHk126wuYdXVxE6aDmjSeV4NCAgyxWbiOIeNJVtID3h1Vzpoi9m4jXezf73I6LgabgQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + + '@jsonjoy.com/util@17.67.0': + resolution: {integrity: sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + '@kitware/vtk.js@35.5.3': resolution: {integrity: sha512-ebc0HDYbTUGxKttW4u0qab1ZgBOslw9MIMkWULS5GpXMaSF9eDdjn2G1ixO3bkAnZakQ7sGGMw74yzTI86/VlA==} hasBin: true @@ -4501,36 +4631,21 @@ packages: '@module-federation/error-codes@0.22.0': resolution: {integrity: sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==} - '@module-federation/error-codes@0.8.4': - resolution: {integrity: sha512-55LYmrDdKb4jt+qr8qE8U3al62ZANp3FhfVaNPOaAmdTh0jHdD8M3yf5HKFlr5xVkVO4eV/F/J2NCfpbh+pEXQ==} - '@module-federation/runtime-core@0.22.0': resolution: {integrity: sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA==} '@module-federation/runtime-tools@0.22.0': resolution: {integrity: sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA==} - '@module-federation/runtime-tools@0.8.4': - resolution: {integrity: sha512-fjVOsItJ1u5YY6E9FnS56UDwZgqEQUrWFnouRiPtK123LUuqUI9FH4redZoKWlE1PB0ir1Z3tnqy8eFYzPO38Q==} - '@module-federation/runtime@0.22.0': resolution: {integrity: sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA==} - '@module-federation/runtime@0.8.4': - resolution: {integrity: sha512-yZeZ7z2Rx4gv/0E97oLTF3V6N25vglmwXGgoeju/W2YjsFvWzVtCDI7zRRb0mJhU6+jmSM8jP1DeQGbea/AiZQ==} - '@module-federation/sdk@0.22.0': resolution: {integrity: sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g==} - '@module-federation/sdk@0.8.4': - resolution: {integrity: sha512-waABomIjg/5m1rPDBWYG4KUhS5r7OUUY7S+avpaVIY/tkPWB3ibRDKy2dNLLAMaLKq0u+B1qIdEp4NIWkqhqpg==} - '@module-federation/webpack-bundler-runtime@0.22.0': resolution: {integrity: sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA==} - '@module-federation/webpack-bundler-runtime@0.8.4': - resolution: {integrity: sha512-HggROJhvHPUX7uqBD/XlajGygMNM1DG0+4OAkk8MBQe4a18QzrRNzZt6XQbRTSG4OaEoyRWhQHvYD3Yps405tQ==} - '@msgpack/msgpack@2.8.0': resolution: {integrity: sha512-h9u4u/jiIRKbq25PM+zymTyW6bhTzELvOoUd+AvYriWOAKpLGnIamaET3pnHYoI5iYphAHBI4ayx0MehR+VVPQ==} engines: {node: '>= 10'} @@ -4554,6 +4669,10 @@ packages: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -4582,6 +4701,43 @@ packages: resolution: {integrity: sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ==} engines: {node: '>=8.0'} + '@peculiar/asn1-cms@2.8.0': + resolution: {integrity: sha512-NgekZOrSJFSBFLFoLfwePguAWAx7z1+f2TEsWFUMyiqqfntZ4+S/S5hzqME3q4pCA0iOsFKdwiQ35dwY24eVqA==} + + '@peculiar/asn1-csr@2.8.0': + resolution: {integrity: sha512-akbF8+uvleHs8sejNPQxwmVFuInAg6FMNHOwMILXfP518YfFJwdR3jr6oNUPOaEJfuEhn/vkNOCIT6ASUd4mbg==} + + '@peculiar/asn1-ecc@2.8.0': + resolution: {integrity: sha512-ohwlk+u9Rv2NOAY1c6MfHj45ATVF8R1DUN/WCgABiRtLi2ZftlZWZX7KvpAbU8v9xPcmoILfELeEABj/rn18AQ==} + + '@peculiar/asn1-pfx@2.8.0': + resolution: {integrity: sha512-5yof1ytoB++RQtaFbqSUJ8pxDJtZT6vbVqZ8XoJ61ph7UjNVvfFwAilnCodqkNsAodpy13gDhoxZXw00pghnyg==} + + '@peculiar/asn1-pkcs8@2.8.0': + resolution: {integrity: sha512-qAKXtLpBEw9LqhKpjw3ajZSXlBur+ipW+y2ivVBQAG6F6qRx94yO+1ZR4mvw+YaCfKSaOzLeYEzsPaBp4SJELA==} + + '@peculiar/asn1-pkcs9@2.8.0': + resolution: {integrity: sha512-b5nDWCnkV60+cQ141D6sVVwK9nz64R5n3zSVnklGd+ECdkW2Ol3U1a6yYFlalpSOaD557yuJB64A+q42jG7lUQ==} + + '@peculiar/asn1-rsa@2.8.0': + resolution: {integrity: sha512-zHEUlCqB2mk7x2lxDwHHJy7hWZOPdGHVlsmITWKB5/PbQo61atbu9PJ/0r9dQNMwFzbKPXZ8uK8/91eUhRznSg==} + + '@peculiar/asn1-schema@2.8.0': + resolution: {integrity: sha512-7YT0U/ze0tF2QOBbE15gKZwy5tvgGyLRiRHLzhlbOpf7BT032oBSd0haZqXn5W6l26WLlu3dyxzjM+2638/z2Q==} + + '@peculiar/asn1-x509-attr@2.8.0': + resolution: {integrity: sha512-tHjkfS/qhMnmrlB2J9NhflQlQ7In3khO3CfmVrriOlpTeErY9ZIKOso1hQ5JQiyrJ7ShvqVPk7E5fQmbclkSKA==} + + '@peculiar/asn1-x509@2.8.0': + resolution: {integrity: sha512-N0CMuhWUzsWEVq6F1q9X6+VKUnWzSW+cSVg+aPaGGwDdbFoFWTYgin5MHwXgpWd6y9COMBxnfy/Qc+Xc7F0Zwg==} + + '@peculiar/utils@2.0.3': + resolution: {integrity: sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==} + + '@peculiar/x509@1.14.3': + resolution: {integrity: sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==} + engines: {node: '>=20.0.0'} + '@perma/map@1.0.3': resolution: {integrity: sha512-Bf5njk0fnJGTFE2ETntq0N1oJ6YdCPIpTDn3R3KYZJQdeYSOCNL7mBrFlGnbqav8YQhJA/p81pvHINX9vAtHkQ==} @@ -5271,11 +5427,6 @@ packages: peerDependencies: '@rsbuild/core': ^1.0.0 || ^2.0.0-0 - '@rspack/binding-darwin-arm64@1.2.0-alpha.0': - resolution: {integrity: sha512-EPprIe6BrkJ9XuWL5HBXJFaH4vvt5C2kBTvyu+t5E3wacyH9A0gIDaMOEmH30Kt3zl4B07OCBC1nCiJ1sTtimw==} - cpu: [arm64] - os: [darwin] - '@rspack/binding-darwin-arm64@1.7.11': resolution: {integrity: sha512-oduECiZVqbO5zlVw+q7Vy65sJFth99fWPTyucwvLJJtJkPL5n17Uiql2cYP6Ijn0pkqtf1SXgK8WjiKLG5bIig==} cpu: [arm64] @@ -5286,11 +5437,6 @@ packages: cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@1.2.0-alpha.0': - resolution: {integrity: sha512-ACwdgWg0V9j0o3gs1wvhqRJ4xui82L+Fii9Fa74az7P974iWO0ZHw4QIUaO5r434+v9OWMqpyBRN1M7cBrx3GA==} - cpu: [x64] - os: [darwin] - '@rspack/binding-darwin-x64@1.7.11': resolution: {integrity: sha512-a1+TtTE9ap6RalgFi7FGIgkJP6O4Vy6ctv+9WGJy53E4kuqHR0RygzaiVxCI/GMc/vBT9vY23hyrpWb3d1vtXA==} cpu: [x64] @@ -5301,12 +5447,6 @@ packages: cpu: [x64] os: [darwin] - '@rspack/binding-linux-arm64-gnu@1.2.0-alpha.0': - resolution: {integrity: sha512-Ex9SviDikz9E36R4I5si/626FsYOJ35l1Lb+DCRUijjjsvoq4k8Shi8csyBfubR+JZ1M0uOXjJftu1Gm5z8Q0Q==} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@rspack/binding-linux-arm64-gnu@1.7.11': resolution: {integrity: sha512-P0QrGRPbTWu6RKWfN0bDtbnEps3rXH0MWIMreZABoUrVmNQKtXR6e73J3ub6a+di5s2+K0M2LJ9Bh2/H4UsDUA==} cpu: [arm64] @@ -5319,12 +5459,6 @@ packages: os: [linux] libc: [glibc] - '@rspack/binding-linux-arm64-musl@1.2.0-alpha.0': - resolution: {integrity: sha512-U320xZmTcTwQ0BR8yIzE1L4olMCqzYkT3VFjXPR6iok/Mj0xjfk/SiKhLoZml473qQrHSGaFJ321cp02zgTFJg==} - cpu: [arm64] - os: [linux] - libc: [musl] - '@rspack/binding-linux-arm64-musl@1.7.11': resolution: {integrity: sha512-6ky7R43VMjWwmx3Yx7Jl7faLBBMAgMDt+/bN35RgwjiPgsIByz65EwytUVuW9rikB43BGHvA/eqlnjLrUzNBqw==} cpu: [arm64] @@ -5337,12 +5471,6 @@ packages: os: [linux] libc: [musl] - '@rspack/binding-linux-x64-gnu@1.2.0-alpha.0': - resolution: {integrity: sha512-GNur7VXJ29NtJhY8PYgv3Fv1Zxbx0XZhDUj/+7Wp40CAXRFsLgXScZIRh2U30TECYaihboZ7BD+xugv8MQPDoA==} - cpu: [x64] - os: [linux] - libc: [glibc] - '@rspack/binding-linux-x64-gnu@1.7.11': resolution: {integrity: sha512-cuOJMfCOvb2Wgsry5enXJ3iT1FGUjdPqtGUBVupQlEG4ntSYsQ2PtF4wIDVasR3wdxC5nQbipOrDiN/u6fYsdQ==} cpu: [x64] @@ -5355,12 +5483,6 @@ packages: os: [linux] libc: [glibc] - '@rspack/binding-linux-x64-musl@1.2.0-alpha.0': - resolution: {integrity: sha512-0IdswzpG9+sgxvGu7KTwSeqfV0hvciaHMoZvGklfZa2txpcUqAg4ASp7uxrNaUo+G2a1fTUMOtP9351Cnl8DBg==} - cpu: [x64] - os: [linux] - libc: [musl] - '@rspack/binding-linux-x64-musl@1.7.11': resolution: {integrity: sha512-CoK37hva4AmHGh3VCsQXmGr40L36m1/AdnN5LEjUX6kx5rEH7/1nEBN6Ii72pejqDVvk9anEROmPDiPw10tpFg==} cpu: [x64] @@ -5381,11 +5503,6 @@ packages: resolution: {integrity: sha512-x2fsw7GzNZEnw444ikj4/b8kVjM0Y0TllxmizHpYZ9gmaQrOk5OXo9RQdz+l4zzoGors0l2IZP5Cc4GJNCaSoQ==} cpu: [wasm32] - '@rspack/binding-win32-arm64-msvc@1.2.0-alpha.0': - resolution: {integrity: sha512-FcFgoWGjSrCfJwDZY5bDA2aO02l5BP7qdyW6ehjwBiMxNZyeSbGvKz3jXl5TtTHR1IgdLzi9kEJkTPYLLMiE1A==} - cpu: [arm64] - os: [win32] - '@rspack/binding-win32-arm64-msvc@1.7.11': resolution: {integrity: sha512-lObFW6e5lCWNgTBNwT//yiEDbsxm9QG4BYUojqeXxothuzJ/L6ibXz6+gLMvbOvLGV3nKgkXmx8GvT9WDKR0mA==} cpu: [arm64] @@ -5396,11 +5513,6 @@ packages: cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@1.2.0-alpha.0': - resolution: {integrity: sha512-cZYFJw6DKCaPPz9VDJPndZ9KSp+/eedgt11Mv8OTpq+MJTUjB2HjtcjqJh8xxVcp3IuwvSMndTkC69WWt/4feA==} - cpu: [ia32] - os: [win32] - '@rspack/binding-win32-ia32-msvc@1.7.11': resolution: {integrity: sha512-0pYGnZd8PPqNR68zQ8skamqNAXEA1sUfXuAdYcknIIRq2wsbiwFzIc0Pov1cIfHYab37G7sSIPBiOUdOWF5Ivw==} cpu: [ia32] @@ -5411,11 +5523,6 @@ packages: cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@1.2.0-alpha.0': - resolution: {integrity: sha512-gfOqb/rq5716NV+Vbk5MteBhV4VhJeSoh2+dRQjdy4EN1wPZ+Uebs9ORVrT9uRjY3JrPn/5PkAHJXtgaOA9Uyg==} - cpu: [x64] - os: [win32] - '@rspack/binding-win32-x64-msvc@1.7.11': resolution: {integrity: sha512-EeQXayoQk/uBkI3pdoXfQBXNIUrADq56L3s/DFyM2pJeUDrWmhfIw2UFIGkYPTMSCo8F2JcdcGM32FGJrSnU0Q==} cpu: [x64] @@ -5426,9 +5533,6 @@ packages: cpu: [x64] os: [win32] - '@rspack/binding@1.2.0-alpha.0': - resolution: {integrity: sha512-rtmDScjtGUxv1zA1m3jXecuX2LsgNp4aWaAjOowHasoO1YqfHK0fMyprCiPowTjoHtpZ7Xt/tnMhii0GlGIITQ==} - '@rspack/binding@1.7.11': resolution: {integrity: sha512-2MGdy2s2HimsDT444Bp5XnALzNRxuBNc7y0JzyuqKbHBywd4x2NeXyhWXXoxufaCFu5PBc9Qq9jyfjW2Aeh06Q==} @@ -5445,15 +5549,6 @@ packages: '@rspack/dev-server': optional: true - '@rspack/core@1.2.0-alpha.0': - resolution: {integrity: sha512-YiD0vFDj+PfHs3ZqJwPNhTYyVTb4xR6FpOI5WJ4jJHV4lgdErS+RChTCPhf1xeqxfuTSSnFA7UeqosLhBuNSqQ==} - engines: {node: '>=16.0.0'} - peerDependencies: - '@swc/helpers': '>=0.5.1' - peerDependenciesMeta: - '@swc/helpers': - optional: true - '@rspack/core@1.7.11': resolution: {integrity: sha512-rsD9b+Khmot5DwCMiB3cqTQo53ioPG3M/A7BySu8+0+RS7GCxKm+Z+mtsjtG/vsu4Tn2tcqCdZtA3pgLoJB+ew==} engines: {node: '>=18.12.0'} @@ -5494,10 +5589,6 @@ packages: selfsigned: optional: true - '@rspack/lite-tapable@1.0.1': - resolution: {integrity: sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==} - engines: {node: '>=16.0.0'} - '@rspack/lite-tapable@1.1.0': resolution: {integrity: sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw==} @@ -5566,13 +5657,6 @@ packages: react: ^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@slorber/react-ideal-image@0.0.14': - resolution: {integrity: sha512-ULJ1VtNg+B5puJp4ZQzEnDqYyDT9erbABoQygmAovg35ltOymLMH8jXPuxJQBVskcmaG29bTZ+++hE/PAXRgxA==} - engines: {node: '>= 8.9.0', npm: '> 3'} - peerDependencies: - react: '>=0.14.x' - react-waypoint: '>=9.0.2' - '@slorber/remark-comment@1.0.0': resolution: {integrity: sha512-RCE24n7jsOj1M0UPvIQCHTe7fI0sFL4S2nwKVWwHyVr/wI/H8GosgsJGyhnsZoGFnD/P2hLf1mSbrrgSLN93NA==} @@ -5927,8 +6011,8 @@ packages: '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - '@types/gtag.js@0.0.12': - resolution: {integrity: sha512-YQV9bUsemkzG81Ea295/nF/5GijnD2Af7QhEofh7xu+kvCN6RdodgNwwGWXB5GMI3NoyvQo0odNctoH/qLMIpg==} + '@types/gtag.js@0.0.20': + resolution: {integrity: sha512-wwAbk3SA2QeU67unN7zPxjEHmPmlXwZXZvQEpbEUQuMCRGgKyE1m6XDuTUA9b6pCGb/GqJmdfMOY5LuDjJSbbg==} '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} @@ -5981,9 +6065,6 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node-forge@1.3.14': - resolution: {integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==} - '@types/node@11.15.54': resolution: {integrity: sha512-1RWYiq+5UfozGsU6MwJyFX6BtktcT10XRjvcAQmskCtMcW3tPske88lM/nHv7BQG1w9KBXI1zPGuu5PnNCX14g==} @@ -6045,8 +6126,8 @@ packages: '@types/resolve@1.20.2': resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} - '@types/retry@0.12.0': - resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + '@types/retry@0.12.2': + resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} @@ -6291,9 +6372,6 @@ packages: ajv@6.15.0: resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} - ajv@8.18.0: - resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} - ajv@8.20.0: resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} @@ -6366,6 +6444,10 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} + ansis@3.17.0: + resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} + engines: {node: '>=14'} + any-observable@0.3.0: resolution: {integrity: sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==} engines: {node: '>=6'} @@ -6443,6 +6525,10 @@ packages: asn1@0.2.6: resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + asn1js@3.0.10: + resolution: {integrity: sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==} + engines: {node: '>=12.0.0'} + assert-plus@1.0.0: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} @@ -6743,6 +6829,10 @@ packages: builtin-status-codes@3.0.0: resolution: {integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==} + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} @@ -6751,6 +6841,10 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} + bytestreamjs@2.0.1: + resolution: {integrity: sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==} + engines: {node: '>=6.0.0'} + cacheable-lookup@7.0.0: resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} engines: {node: '>=14.16'} @@ -7136,10 +7230,6 @@ packages: cornerstone-math@0.1.10: resolution: {integrity: sha512-23XSAyP7t70ANvhFyqwvva+zFd1bQ2d5GL7tg9qKE932WmImjA2Y9tiy5n0iTtnf51W/78Png8Lia2o4dCdJaQ==} - cosmiconfig@6.0.0: - resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==} - engines: {node: '>=8'} - cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} @@ -7594,9 +7684,13 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - default-gateway@6.0.3: - resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} - engines: {node: '>= 10'} + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} + + default-browser@5.5.0: + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} + engines: {node: '>=18'} default-require-extensions@3.0.1: resolution: {integrity: sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==} @@ -7617,6 +7711,10 @@ packages: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} @@ -7624,10 +7722,6 @@ packages: defined@1.0.1: resolution: {integrity: sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==} - del@6.1.1: - resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} - engines: {node: '>=10'} - delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -7668,11 +7762,6 @@ packages: detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} - detect-port-alt@1.1.6: - resolution: {integrity: sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==} - engines: {node: '>= 4.2.1'} - hasBin: true - detect-port@1.6.1: resolution: {integrity: sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==} engines: {node: '>= 4.0.0'} @@ -8200,10 +8289,6 @@ packages: resolution: {integrity: sha512-huzBO8vS15VrEC0ej62GtYCtPUNEsTdHIN3aFBjCUZyFQTr+bW4cpwvPMZssM/r+9/hOh4ikUiJ3L+9kZKBMag==} engines: {node: '>=18'} - filesize@8.0.7: - resolution: {integrity: sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==} - engines: {node: '>= 0.4.0'} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -8227,18 +8312,10 @@ packages: find-root@1.1.0: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - find-up@3.0.0: - resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} - engines: {node: '>=6'} - find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - find-up@6.3.0: resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -8250,15 +8327,6 @@ packages: flatbuffers@1.12.0: resolution: {integrity: sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==} - follow-redirects@1.15.11: - resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - follow-redirects@1.16.0: resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} engines: {node: '>=4.0'} @@ -8283,20 +8351,6 @@ packages: forever-agent@0.6.1: resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} - fork-ts-checker-webpack-plugin@6.5.3: - resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==} - engines: {node: '>=10', yarn: '>=1.0.0'} - peerDependencies: - eslint: '>= 6' - typescript: '>= 2.7' - vue-template-compiler: '*' - webpack: 5.105.0 - peerDependenciesMeta: - eslint: - optional: true - vue-template-compiler: - optional: true - form-data-encoder@2.1.4: resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} engines: {node: '>= 14.17'} @@ -8353,9 +8407,6 @@ packages: resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} engines: {node: '>=10'} - fs-monkey@1.1.0: - resolution: {integrity: sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==} - fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -8458,6 +8509,12 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} + glob-to-regex.js@1.2.0: + resolution: {integrity: sha512-QMwlOQKU/IzqMUOAZWubUOT8Qft+Y0KQWnX9nK3ch0CJg0tTp4TvGZsTfudYKv2NzoQSyPcnA6TYeIQ3jGichQ==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} @@ -8489,14 +8546,6 @@ packages: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} engines: {node: '>=10'} - global-modules@2.0.0: - resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} - engines: {node: '>=6'} - - global-prefix@3.0.0: - resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} - engines: {node: '>=6'} - globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} @@ -8663,9 +8712,6 @@ packages: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} - html-entities@2.6.0: - resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} - html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -8776,6 +8822,10 @@ packages: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} + hyperdyperid@1.2.0: + resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==} + engines: {node: '>=10.18'} + i18next-browser-languagedetector@3.1.1: resolution: {integrity: sha512-JBgFWijjI1t6as4WgGvDdX4GLJPZwC/SMHzLQQ3ef7XaJsEkomlXFqXifKvOVJg09Hj2BVWe6strDdIF4J/0ng==} @@ -8813,8 +8863,8 @@ packages: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} - image-size@1.2.1: - resolution: {integrity: sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==} + image-size@2.0.2: + resolution: {integrity: sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==} engines: {node: '>=16.x'} hasBin: true @@ -8993,6 +9043,11 @@ packages: engines: {node: '>=8'} hasBin: true + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + is-extendable@0.1.1: resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} engines: {node: '>=0.10.0'} @@ -9032,6 +9087,11 @@ packages: is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + is-installed-globally@0.4.0: resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} engines: {node: '>=10'} @@ -9058,6 +9118,10 @@ packages: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} + is-network-error@1.3.2: + resolution: {integrity: sha512-PhBY86zaxNZUuWP6h13Vu5oFe0XY6/UlKzQnYFELzGVHygP3MxmvTfYSG7GN3aIab/iWudSMgjSnG9Dq+nHrgA==} + engines: {node: '>=16'} + is-npm@6.1.0: resolution: {integrity: sha512-O2z4/kNgyjhQwVR1Wpkbfc19JIhggF97NZNCpWTnjH7kVcZMUrnut9XSN7txI7VdyIYk5ZatOq3zvSuWpU8hoA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -9082,10 +9146,6 @@ packages: resolution: {integrity: sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==} engines: {node: '>=4'} - is-path-cwd@2.2.0: - resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} - engines: {node: '>=6'} - is-path-inside@3.0.3: resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} engines: {node: '>=8'} @@ -9116,10 +9176,6 @@ packages: resolution: {integrity: sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==} engines: {node: '>=0.10.0'} - is-root@2.1.0: - resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==} - engines: {node: '>=6'} - is-set@2.0.3: resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} engines: {node: '>= 0.4'} @@ -9182,6 +9238,10 @@ packages: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} + engines: {node: '>=16'} + is-yarn-global@0.4.1: resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} engines: {node: '>=12'} @@ -9202,10 +9262,6 @@ packages: isomorphic-base64@1.0.2: resolution: {integrity: sha512-pQFyLwShVPA1Qr0dE1ZPguJkbOsFGDfSq6Wzz6XaO33v74X6/iQjgYPozwkeKGQxOI1/H3Fz7+ROtnV1veyKEg==} - isomorphic-rslog@0.0.6: - resolution: {integrity: sha512-HM0q6XqQ93psDlqvuViNs/Ea3hAyGDkIdVAHlrEocjjAwGrs1fZ+EdQjS9eUPacnYB7Y8SoDdSY3H8p3ce205A==} - engines: {node: '>=14.17.6'} - isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} @@ -9529,9 +9585,6 @@ packages: engines: {node: '>=6'} hasBin: true - jsonfile@6.2.0: - resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} - jsonfile@6.2.1: resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} @@ -9711,22 +9764,10 @@ packages: resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} engines: {node: '>=8.9.0'} - loader-utils@3.3.1: - resolution: {integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==} - engines: {node: '>= 12.13.0'} - - locate-path@3.0.0: - resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} - engines: {node: '>=6'} - locate-path@5.0.0: resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} engines: {node: '>=8'} - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - locate-path@7.2.0: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -9869,9 +9910,6 @@ packages: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} - markdown-table@2.0.0: - resolution: {integrity: sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==} - markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} @@ -9995,9 +10033,10 @@ packages: medium-zoom@1.1.0: resolution: {integrity: sha512-ewyDsp7k4InCUp3jRmwHBRFGyjBimKps/AJLjRSox+2q/2H4p/PNpQf+pwONWlJiOudkBXtbdmVbFjqyybfTmQ==} - memfs@3.5.3: - resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} - engines: {node: '>= 4.0.0'} + memfs@4.57.8: + resolution: {integrity: sha512-bApYhn8BLpFAnAQmFfEl/NPN+8qx5Ar3V4Qt3ek23mVwBEElzV7c6XoPkb/PCG8ZFpowCEpHcPwMFTwHS7tSMA==} + peerDependencies: + tslib: 2.8.1 memoize-one@5.2.1: resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} @@ -10242,6 +10281,10 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} + mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} @@ -10403,10 +10446,6 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - node-forge@1.4.0: - resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==} - engines: {node: '>= 6.13.0'} - node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} @@ -10557,6 +10596,10 @@ packages: onnxruntime-web@1.17.1: resolution: {integrity: sha512-EotY9uJU4xFY/ZVZ2Zrl2OZmBcbTVTWn/2OOh4cCWODPwtsYN2xeJYgoz8LfCgZSrhenGg0q4ceYUWATXqEsYQ==} + open@10.2.0: + resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} + engines: {node: '>=18'} + open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -10607,18 +10650,10 @@ packages: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-locate@3.0.0: - resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} - engines: {node: '>=6'} - p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - p-locate@6.0.0: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -10635,12 +10670,20 @@ packages: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} + p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + p-queue@8.1.1: resolution: {integrity: sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==} engines: {node: '>=18'} - p-retry@4.6.2: - resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + p-retry@6.2.1: + resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} + engines: {node: '>=16.17'} + + p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} engines: {node: '>=8'} p-timeout@6.1.4: @@ -10708,10 +10751,6 @@ packages: path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} - path-exists@3.0.0: - resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} - engines: {node: '>=4'} - path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} @@ -10821,9 +10860,9 @@ packages: pkg-install@1.0.0: resolution: {integrity: sha512-UGI8bfhrDb1KN01RZ7Bq08GRQc8rmVjxQ2up0g4mUHPCYDTK1FzQ0PMmLOBCHg3yaIijZ2U3Fn9ofLa4N392Ug==} - pkg-up@3.1.0: - resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} - engines: {node: '>=8'} + pkijs@3.4.0: + resolution: {integrity: sha512-emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw==} + engines: {node: '>=16.0.0'} platform@1.3.6: resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} @@ -11767,6 +11806,13 @@ packages: pure-rand@6.1.0: resolution: {integrity: sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==} + pvtsutils@1.3.6: + resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} + + pvutils@1.1.5: + resolution: {integrity: sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA==} + engines: {node: '>=16.0.0'} + qs@6.14.1: resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} engines: {node: '>=0.6'} @@ -11785,9 +11831,6 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - queue@6.0.2: - resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} - quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} @@ -11859,16 +11902,6 @@ packages: peerDependencies: react: '>=16.8.0' - react-dev-utils@12.0.1: - resolution: {integrity: sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==} - engines: {node: '>=14'} - peerDependencies: - typescript: '>=2.7' - webpack: 5.105.0 - peerDependenciesMeta: - typescript: - optional: true - react-dnd-html5-backend@14.0.0: resolution: {integrity: sha512-2wAQqRFC1hbRGmk6+dKhOXsyQQOn3cN8PSZyOUeOun9J8t3tjZ7PS2+aFu7CVu2ujMDwTJR3VTwZh8pj2kCv7g==} @@ -11910,18 +11943,9 @@ packages: peerDependencies: react: '>=16.13.1' - react-error-overlay@6.1.0: - resolution: {integrity: sha512-SN/U6Ytxf1QGkw/9ve5Y+NxBbZM6Ht95tuXNMKs8EJyFa/Vy/+Co3stop3KBHARfn/giv+Lj1uUnTfOJ3moFEQ==} - react-fast-compare@3.2.2: resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} - react-helmet-async@1.3.0: - resolution: {integrity: sha512-9jZ57/dAn9t3q6hneQS0wukqC2ENOBgMNVEhb/ZG9ZSxUetzVIw4iAmEU38IaVg3QGYauQPhSeUTuIUtFglWpg==} - peerDependencies: - react: ^16.6.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.6.0 || ^17.0.0 || ^18.0.0 - react-i18next@12.3.1: resolution: {integrity: sha512-5v8E2XjZDFzK7K87eSwC7AJcAkcLt5xYZ4+yTPDAW1i7C93oOY1dnr4BaQM7un4Hm+GmghuiPvevWwlca5PwDA==} peerDependencies: @@ -11944,11 +11968,11 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react-json-view-lite@1.5.0: - resolution: {integrity: sha512-nWqA1E4jKPklL2jvHWs6s+7Na0qNgw9HCP6xehdQJeg6nPBTFZgGwyko9Q0oj+jQWKTTVRS30u0toM5wiuL3iw==} - engines: {node: '>=14'} + react-json-view-lite@2.5.0: + resolution: {integrity: sha512-tk7o7QG9oYyELWHL8xiMQ8x4WzjCzbWNyig3uexmkLb54r8jO0yH3WCWx8UZS0c49eSA4QUmG5caiRJ8fAn58g==} + engines: {node: '>=18'} peerDependencies: - react: ^16.13.1 || ^17.0.0 || ^18.0.0 + react: ^18.0.0 || ^19.0.0 react-lifecycles-compat@3.0.4: resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} @@ -11960,8 +11984,8 @@ packages: react: '>=18.0.0' react-dom: '>=18.0.0' - react-loadable-ssr-addon-v5-slorber@1.0.1: - resolution: {integrity: sha512-lq3Lyw1lGku8zUEJPDxsNm1AfYHBrO9Y1+olAYwpUJ2IGFBskM0DMKok97A6LWUpHm+o7IvQBOWu9MLenp9Z+A==} + react-loadable-ssr-addon-v5-slorber@1.0.3: + resolution: {integrity: sha512-GXfh9VLwB5ERaCsU6RULh7tkemeX15aNh6wuMEBtfdyMa7fFG8TXrhXlx1SoEK2Ty/l6XIkzzYIQmyaWW3JgdQ==} engines: {node: '>=10.13.0'} peerDependencies: react-loadable: '*' @@ -12094,11 +12118,6 @@ packages: react: '>=16.6.0' react-dom: '>=16.6.0' - react-waypoint@10.3.0: - resolution: {integrity: sha512-iF1y2c1BsoXuEGz08NoahaLFIGI9gTUAAOKip96HUmylRT6DUtpgoBPjk/Y8dfcFVmfVDvUzWjNXpZyKTOV0SQ==} - peerDependencies: - react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - react-window@1.8.11: resolution: {integrity: sha512-+SRbUVT2scadgFSWx+R1P754xHPEqvcfSfVX10QYg6POOz+WNgkN48pS+BtZNIMGiL1HYrSEiCkwsMS15QogEQ==} engines: {node: '>8.0.0'} @@ -12152,9 +12171,6 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} - reading-time@1.5.0: - resolution: {integrity: sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==} - rechoir@0.6.2: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} @@ -12173,16 +12189,15 @@ packages: recma-stringify@1.0.0: resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} - recursive-readdir@2.2.3: - resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} - engines: {node: '>=6.0.0'} - redux@4.2.1: resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} reference-spec-reader@0.2.0: resolution: {integrity: sha512-q0mfCi5yZSSHXpCyxjgQeaORq3tvDsxDyzaadA/5+AbAUwRyRuuTh0aRQuE/vAOt/qzzxidJ5iDeu1cLHaNBlQ==} + reflect-metadata@0.2.2: + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + reflect.getprototypeof@1.0.10: resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} engines: {node: '>= 0.4'} @@ -12280,10 +12295,6 @@ packages: renderkid@3.0.0: resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} - repeat-string@1.6.1: - resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} - engines: {node: '>=0.10'} - request-progress@3.0.0: resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} @@ -12385,6 +12396,10 @@ packages: engines: {node: '>=12.0.0'} hasBin: true + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -12424,10 +12439,6 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sax@1.4.4: - resolution: {integrity: sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==} - engines: {node: '>=11.0.0'} - sax@1.6.0: resolution: {integrity: sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==} engines: {node: '>=11.0.0'} @@ -12439,9 +12450,8 @@ packages: scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - schema-utils@2.7.0: - resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} - engines: {node: '>= 8.9.0'} + schema-dts@1.1.5: + resolution: {integrity: sha512-RJr9EaCmsLzBX2NDiO5Z3ux2BVosNZN5jo0gWgsyKvxKIUL5R3swNvoorulAeL9kLB0iTSX7V6aokhla2m7xbg==} schema-utils@2.7.1: resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} @@ -12472,9 +12482,9 @@ packages: select-hose@2.0.0: resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} - selfsigned@2.4.1: - resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} - engines: {node: '>=10'} + selfsigned@5.5.0: + resolution: {integrity: sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==} + engines: {node: '>=18'} semver-diff@4.0.0: resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} @@ -12484,11 +12494,6 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.4: - resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} - engines: {node: '>=10'} - hasBin: true - semver@7.8.0: resolution: {integrity: sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==} engines: {node: '>=10'} @@ -12502,8 +12507,8 @@ packages: resolution: {integrity: sha512-DuGdB+Po43Q5Jxwpzt1lhyFSYKryqoNjQSA9M92tyw0lyHIOur+XCalOUe0KTJpyqzT8+fQ5A0Jf7vCx/NKmIg==} engines: {node: '>=20.0.0'} - serve-handler@6.1.6: - resolution: {integrity: sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==} + serve-handler@6.1.7: + resolution: {integrity: sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg==} serve-index@1.9.2: resolution: {integrity: sha512-KDj11HScOaLmrPxl70KYNW1PksP4Nb/CLL2yvC+Qd2kHMPEEpfc4Re2e4FOay+bC/+XQl/7zAcWON3JVo5v3KQ==} @@ -12949,6 +12954,12 @@ packages: peerDependencies: tailwindcss: '>=3.0.0 || insiders' + tailwindcss-scoped-preflight@3.5.9: + resolution: {integrity: sha512-Q1lJssrJ2K96bCj8tocF/HCMy1NwMpFE30is3F4qFAAGfS9XYj6pz8JqfATSEnFhr7D6VAGLMn9apr/yqbSgTQ==} + peerDependencies: + postcss: ^8 + tailwindcss: ^3 + tailwindcss@3.2.4: resolution: {integrity: sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==} engines: {node: '>=12.13.0'} @@ -12976,22 +12987,6 @@ packages: resolution: {integrity: sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==} engines: {node: '>=10'} - terser-webpack-plugin@5.3.14: - resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: 5.105.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - terser-webpack-plugin@5.3.16: resolution: {integrity: sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==} engines: {node: '>= 10.13.0'} @@ -13020,9 +13015,6 @@ packages: text-segmentation@1.0.3: resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==} - text-table@0.2.0: - resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -13030,6 +13022,12 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + thingies@2.6.0: + resolution: {integrity: sha512-rMHRjmlFLM1R96UYPvpmnc3LYtdFrT33JIB7L9hetGue1qAPfn1N2LJeEjxUSidu1Iku+haLZXDuEXUHNGO/lg==} + engines: {node: '>=10.18'} + peerDependencies: + tslib: 2.8.1 + throttleit@1.0.1: resolution: {integrity: sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==} @@ -13059,6 +13057,10 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tinypool@1.1.1: + resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} + engines: {node: ^18.0.0 || >=20.0.0} + tldts-core@6.1.86: resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} @@ -13104,6 +13106,12 @@ packages: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} + tree-dump@1.1.0: + resolution: {integrity: sha512-rMuvhU4MCDbcbnleZTFezWsaZXRFemSqAM+7jPnzUl1fo9w3YEKOxAeui0fz3OI4EU4hf23iyA7uQRVko+UaBA==} + engines: {node: '>=10.0'} + peerDependencies: + tslib: 2.8.1 + tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -13134,6 +13142,10 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsyringe@4.10.0: + resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==} + engines: {node: '>= 6.0.0'} + tty-browserify@0.0.1: resolution: {integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==} @@ -13519,15 +13531,18 @@ packages: engines: {node: '>= 10.13.0'} hasBin: true - webpack-dev-middleware@5.3.4: - resolution: {integrity: sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==} - engines: {node: '>= 12.13.0'} + webpack-dev-middleware@7.4.5: + resolution: {integrity: sha512-uxQ6YqGdE4hgDKNf7hUiPXOdtkXvBJXrfEGYSx7P7LC8hnUYGK70X6xQXUvXeNyBDDcsiQXpG2m3G9vxowaEuA==} + engines: {node: '>= 18.12.0'} peerDependencies: webpack: 5.105.0 + peerDependenciesMeta: + webpack: + optional: true - webpack-dev-server@4.15.2: - resolution: {integrity: sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==} - engines: {node: '>= 12.13.0'} + webpack-dev-server@5.2.5: + resolution: {integrity: sha512-4wZtCquSuv9CKX8oybo+mqxtxZqWz47uM1Ch94lxowBztOhWCbhqvRbfC/mODOwxgV2brY+JGZpHq58/SuVFYg==} + engines: {node: '>= 18.12.0'} hasBin: true peerDependencies: webpack: 5.105.0 @@ -13560,11 +13575,17 @@ packages: webpack-cli: optional: true - webpackbar@6.0.1: - resolution: {integrity: sha512-TnErZpmuKdwWBdMoexjio3KKX6ZtoKHRVvLIU0A47R0VVBDtx3ZyOJDktgYixhoJokZTYTt1Z37OkO9pnGJa9Q==} + webpackbar@7.0.0: + resolution: {integrity: sha512-aS9soqSO2iCHgqHoCrj4LbfGQUboDCYJPSFOAchEK+9psIjNrfSWW4Y0YEz67MKURNvMmfo0ycOg9d/+OOf9/Q==} engines: {node: '>=14.21.3'} peerDependencies: + '@rspack/core': '*' webpack: 5.105.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true websocket-driver@0.7.4: resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} @@ -13612,10 +13633,6 @@ packages: resolution: {integrity: sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==} engines: {node: '>= 0.4'} - which@1.3.1: - resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} - hasBin: true - which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -13733,6 +13750,10 @@ packages: utf-8-validate: optional: true + wsl-utils@0.1.0: + resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} + engines: {node: '>=18'} + wslink@2.5.0: resolution: {integrity: sha512-+m7GWH9G3Y2iAN9CP8M5z/Re2u/Q1KEXvUZ2ISGle7CF6T07z2jS8sWfgp4Y8ZRUbUCHp6IJnEL1xkbzeNn18Q==} @@ -13859,6 +13880,15 @@ snapshots: - algoliasearch - search-insights + '@algolia/autocomplete-core@1.19.8(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.19.8(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)(search-insights@2.17.3) + '@algolia/autocomplete-shared': 1.19.8(@algolia/client-search@5.49.1)(algoliasearch@5.49.1) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + '@algolia/autocomplete-plugin-algolia-insights@1.17.9(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)(search-insights@2.17.3)': dependencies: '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.49.1)(algoliasearch@5.49.1) @@ -13867,6 +13897,14 @@ snapshots: - '@algolia/client-search' - algoliasearch + '@algolia/autocomplete-plugin-algolia-insights@1.19.8(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)(search-insights@2.17.3)': + dependencies: + '@algolia/autocomplete-shared': 1.19.8(@algolia/client-search@5.49.1)(algoliasearch@5.49.1) + search-insights: 2.17.3 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + '@algolia/autocomplete-preset-algolia@1.17.9(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)': dependencies: '@algolia/autocomplete-shared': 1.17.9(@algolia/client-search@5.49.1)(algoliasearch@5.49.1) @@ -13878,6 +13916,11 @@ snapshots: '@algolia/client-search': 5.49.1 algoliasearch: 5.49.1 + '@algolia/autocomplete-shared@1.19.8(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)': + dependencies: + '@algolia/client-search': 5.49.1 + algoliasearch: 5.49.1 + '@algolia/client-abtesting@5.49.1': dependencies: '@algolia/client-common': 5.49.1 @@ -13962,9 +14005,9 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@apideck/better-ajv-errors@0.3.6(ajv@8.18.0)': + '@apideck/better-ajv-errors@0.3.6(ajv@8.20.0)': dependencies: - ajv: 8.18.0 + ajv: 8.20.0 json-schema: 0.4.0 jsonpointer: 5.0.1 leven: 3.1.0 @@ -13985,7 +14028,7 @@ snapshots: '@babel/compat-data@7.29.7': {} - '@babel/core@7.28.0': + '@babel/core@7.28.0(supports-color@8.1.1)': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.29.0 @@ -13995,7 +14038,7 @@ snapshots: '@babel/helpers': 7.29.2 '@babel/parser': 7.29.3 '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) '@babel/types': 7.29.0 convert-source-map: 2.0.0 debug: 4.4.3(supports-color@8.1.1) @@ -14005,32 +14048,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/core@7.29.7': - dependencies: - '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.7 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) - '@babel/helpers': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7(supports-color@8.1.1) - '@babel/types': 7.29.7 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.3(supports-color@8.1.1) - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/core@7.29.7(supports-color@8.1.1)': dependencies: '@babel/code-frame': 7.29.7 '@babel/generator': 7.29.7 '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) '@babel/helpers': 7.29.7 '@babel/parser': 7.29.7 '@babel/template': 7.29.7 @@ -14087,25 +14110,12 @@ snapshots: '@babel/helper-create-class-features-plugin@7.29.3(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.0) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.29.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-member-expression-to-functions': 7.29.7 - '@babel/helper-optimise-call-expression': 7.29.7 - '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 '@babel/traverse': 7.29.7(supports-color@8.1.1) semver: 6.3.1 transitivePeerDependencies: @@ -14113,7 +14123,7 @@ snapshots: '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-member-expression-to-functions': 7.29.7 '@babel/helper-optimise-call-expression': 7.29.7 @@ -14126,53 +14136,28 @@ snapshots: '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-annotate-as-pure': 7.27.3 - regexpu-core: 6.4.0 - semver: 6.3.1 - - '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.27.3 regexpu-core: 6.4.0 semver: 6.3.1 '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-annotate-as-pure': 7.27.3 - regexpu-core: 6.4.0 - semver: 6.3.1 - - '@babel/helper-create-regexp-features-plugin@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-annotate-as-pure': 7.27.3 regexpu-core: 6.4.0 semver: 6.3.1 '@babel/helper-create-regexp-features-plugin@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.29.7 regexpu-core: 6.4.0 semver: 6.3.1 '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - debug: 4.4.3(supports-color@8.1.1) - lodash.debounce: 4.0.8 - resolve: 1.22.12 - transitivePeerDependencies: - - supports-color - - '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 debug: 4.4.3(supports-color@8.1.1) @@ -14183,7 +14168,7 @@ snapshots: '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 debug: 4.4.3(supports-color@8.1.1) @@ -14198,7 +14183,7 @@ snapshots: '@babel/helper-member-expression-to-functions@7.28.5': dependencies: - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.7(supports-color@8.1.1) '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -14212,7 +14197,7 @@ snapshots: '@babel/helper-module-imports@7.28.6': dependencies: - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.7(supports-color@8.1.1) '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -14226,10 +14211,10 @@ snapshots: '@babel/helper-module-transforms@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-module-imports': 7.28.6 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -14238,31 +14223,13 @@ snapshots: '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-module-imports': 7.28.6 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-module-imports': 7.29.7 - '@babel/helper-validator-identifier': 7.29.7 '@babel/traverse': 7.29.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-module-imports': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 '@babel/traverse': 7.29.7(supports-color@8.1.1) @@ -14283,25 +14250,16 @@ snapshots: '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-wrap-function': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-wrap-function': 7.29.7 '@babel/traverse': 7.29.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color '@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-wrap-function': 7.29.7 '@babel/traverse': 7.29.7(supports-color@8.1.1) @@ -14310,25 +14268,16 @@ snapshots: '@babel/helper-replace-supers@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-replace-supers@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-member-expression-to-functions': 7.29.7 - '@babel/helper-optimise-call-expression': 7.29.7 '@babel/traverse': 7.29.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color '@babel/helper-replace-supers@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-member-expression-to-functions': 7.29.7 '@babel/helper-optimise-call-expression': 7.29.7 '@babel/traverse': 7.29.7(supports-color@8.1.1) @@ -14337,7 +14286,7 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.7(supports-color@8.1.1) '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -14364,7 +14313,7 @@ snapshots: '@babel/helper-wrap-function@7.28.6': dependencies: '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.7(supports-color@8.1.1) '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -14397,23 +14346,15 @@ snapshots: '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 '@babel/traverse': 7.29.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/traverse': 7.29.7(supports-color@8.1.1) transitivePeerDependencies: @@ -14421,53 +14362,35 @@ snapshots: '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.3(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - transitivePeerDependencies: - - supports-color - '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 transitivePeerDependencies: @@ -14475,25 +14398,16 @@ snapshots: '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 '@babel/plugin-transform-optional-chaining': 7.28.6(@babel/core@7.28.0) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - transitivePeerDependencies: - - supports-color - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7) @@ -14502,23 +14416,15 @@ snapshots: '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 '@babel/traverse': 7.29.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/traverse': 7.29.7(supports-color@8.1.1) transitivePeerDependencies: @@ -14526,89 +14432,50 @@ snapshots: '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.28.6 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.0)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.29.7(supports-color@8.1.1))': + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.29.7)': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.28.0)': + '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-import-assertions@7.28.6(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.28.6 - - '@babel/plugin-syntax-import-assertions@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-import-assertions@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-import-attributes@7.28.6(@babel/core@7.29.7(supports-color@8.1.1))': @@ -14616,31 +14483,16 @@ snapshots: '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) @@ -14648,94 +14500,54 @@ snapshots: '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) @@ -14743,73 +14555,53 @@ snapshots: '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-arrow-functions@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-arrow-functions@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-async-generator-functions@7.29.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.0) - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-async-generator-functions@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) '@babel/traverse': 7.29.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color '@babel/plugin-transform-async-generator-functions@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7) '@babel/traverse': 7.29.7(supports-color@8.1.1) @@ -14818,25 +14610,16 @@ snapshots: '@babel/plugin-transform-async-to-generator@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-module-imports': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.0) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-module-imports': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-async-to-generator@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-module-imports': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7) @@ -14845,53 +14628,35 @@ snapshots: '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-block-scoped-functions@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-block-scoped-functions@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-block-scoping@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-block-scoping@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-block-scoping@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-class-properties@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-properties@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/helper-plugin-utils': 7.29.7 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-class-properties@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: @@ -14899,23 +14664,15 @@ snapshots: '@babel/plugin-transform-class-static-block@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/helper-plugin-utils': 7.29.7 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-class-static-block@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: @@ -14923,31 +14680,19 @@ snapshots: '@babel/plugin-transform-classes@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-globals': 7.28.0 '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.0) - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-classes@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-globals': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) '@babel/traverse': 7.29.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color '@babel/plugin-transform-classes@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-globals': 7.29.7 @@ -14959,41 +14704,27 @@ snapshots: '@babel/plugin-transform-computed-properties@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/template': 7.28.6 - '@babel/plugin-transform-computed-properties@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/template': 7.29.7 - '@babel/plugin-transform-computed-properties@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/template': 7.29.7 '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-destructuring@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 '@babel/traverse': 7.29.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color '@babel/plugin-transform-destructuring@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/traverse': 7.29.7(supports-color@8.1.1) transitivePeerDependencies: @@ -15001,89 +14732,59 @@ snapshots: '@babel/plugin-transform-dotall-regex@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-dotall-regex@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-dotall-regex@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-duplicate-keys@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-duplicate-keys@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-dynamic-import@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-dynamic-import@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-explicit-resource-management@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.0) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-explicit-resource-management@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-explicit-resource-management@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7) transitivePeerDependencies: @@ -15091,53 +14792,35 @@ snapshots: '@babel/plugin-transform-exponentiation-operator@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-exponentiation-operator@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-exponentiation-operator@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-export-namespace-from@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-export-namespace-from@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-for-of@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-for-of@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 transitivePeerDependencies: @@ -15145,25 +14828,16 @@ snapshots: '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-function-name@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 '@babel/traverse': 7.29.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color '@babel/plugin-transform-function-name@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 '@babel/traverse': 7.29.7(supports-color@8.1.1) @@ -15172,83 +14846,55 @@ snapshots: '@babel/plugin-transform-json-strings@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-json-strings@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-json-strings@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-literals@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-literals@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-logical-assignment-operators@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-logical-assignment-operators@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-logical-assignment-operators@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-member-expression-literals@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-member-expression-literals@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-amd@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/helper-plugin-utils': 7.29.7 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-modules-amd@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: @@ -15256,23 +14902,15 @@ snapshots: '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/helper-plugin-utils': 7.29.7 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-modules-commonjs@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: @@ -15280,53 +14918,35 @@ snapshots: '@babel/plugin-transform-modules-systemjs@7.29.4(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.29.4(@babel/core@7.29.7(supports-color@8.1.1))': + '@babel/plugin-transform-modules-systemjs@7.29.4(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.7(supports-color@8.1.1)) '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-systemjs@7.29.4(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.7) - '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 + '@babel/traverse': 7.29.0(supports-color@8.1.1) transitivePeerDependencies: - supports-color '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/helper-plugin-utils': 7.29.7 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-modules-umd@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: @@ -15334,92 +14954,60 @@ snapshots: '@babel/plugin-transform-named-capturing-groups-regex@7.29.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-new-target@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-new-target@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-nullish-coalescing-operator@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-nullish-coalescing-operator@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-nullish-coalescing-operator@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-numeric-separator@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-numeric-separator@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-numeric-separator@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-object-rest-spread@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.0) '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.0) - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-object-rest-spread@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) '@babel/traverse': 7.29.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color '@babel/plugin-transform-object-rest-spread@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7) @@ -15430,23 +15018,15 @@ snapshots: '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-replace-supers': 7.28.6(@babel/core@7.28.0) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-object-super@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-object-super@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) transitivePeerDependencies: @@ -15454,38 +15034,25 @@ snapshots: '@babel/plugin-transform-optional-catch-binding@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-optional-catch-binding@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-optional-catch-binding@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-optional-chaining@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-chaining@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-optional-chaining@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 transitivePeerDependencies: @@ -15493,38 +15060,25 @@ snapshots: '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-parameters@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-parameters@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-private-methods@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-methods@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/helper-plugin-utils': 7.29.7 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-private-methods@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: @@ -15532,25 +15086,16 @@ snapshots: '@babel/plugin-transform-private-property-in-object@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/helper-plugin-utils': 7.29.7 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-private-property-in-object@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 @@ -15559,63 +15104,46 @@ snapshots: '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-property-literals@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-property-literals@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-react-constant-elements@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-react-display-name@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-react-display-name@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-react-jsx-development@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/plugin-transform-react-jsx': 7.28.6(@babel/core@7.28.0) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx-development@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-react-jsx-development@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7) transitivePeerDependencies: - supports-color '@babel/plugin-transform-react-jsx@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-module-imports': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 @@ -15624,20 +15152,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-module-imports': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/types': 7.29.7 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-react-jsx@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-module-imports': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 @@ -15648,97 +15165,51 @@ snapshots: '@babel/plugin-transform-react-pure-annotations@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-react-pure-annotations@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-react-pure-annotations@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-regenerator@7.29.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-regenerator@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-regenerator@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-regexp-modifiers@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-regexp-modifiers@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-regexp-modifiers@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-reserved-words@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-reserved-words@7.29.7(@babel/core@7.29.7)': - dependencies: - '@babel/core': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-runtime@7.28.0(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-plugin-utils': 7.28.6 - babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.28.0) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.0) - babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.28.0) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-module-imports': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7(supports-color@8.1.1)) - babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.7(supports-color@8.1.1)) - babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.7(supports-color@8.1.1)) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color '@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-module-imports': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7) @@ -15750,38 +15221,25 @@ snapshots: '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-shorthand-properties@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-shorthand-properties@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-spread@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-spread@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-spread@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 transitivePeerDependencies: @@ -15789,52 +15247,37 @@ snapshots: '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-sticky-regex@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-sticky-regex@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-template-literals@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-template-literals@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-typeof-symbol@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-typeof-symbol@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.28.6 @@ -15843,20 +15286,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - transitivePeerDependencies: - - supports-color - '@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 @@ -15867,77 +15299,54 @@ snapshots: '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-escapes@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-unicode-escapes@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-unicode-property-regex@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-property-regex@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-unicode-property-regex@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-unicode-sets-regex@7.28.6(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.0) '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-unicode-sets-regex@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-unicode-sets-regex@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 '@babel/preset-env@7.29.5(@babel/core@7.28.0)': dependencies: '@babel/compat-data': 7.29.3 - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-option': 7.27.1 @@ -16011,90 +15420,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': + '@babel/preset-env@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1)': dependencies: '@babel/compat-data': 7.29.7 '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-validator-option': 7.29.7 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-syntax-import-assertions': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-syntax-import-attributes': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-arrow-functions': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-async-generator-functions': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-async-to-generator': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-block-scoped-functions': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-block-scoping': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-class-properties': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-class-static-block': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-classes': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-computed-properties': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-dotall-regex': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-duplicate-keys': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-dynamic-import': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-explicit-resource-management': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-exponentiation-operator': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-export-namespace-from': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-for-of': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-function-name': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-json-strings': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-literals': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-logical-assignment-operators': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-member-expression-literals': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-modules-amd': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-modules-systemjs': 7.29.4(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-modules-umd': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-new-target': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-nullish-coalescing-operator': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-numeric-separator': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-object-rest-spread': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-object-super': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-optional-catch-binding': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-parameters': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-private-methods': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-private-property-in-object': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-property-literals': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-regenerator': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-regexp-modifiers': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-reserved-words': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-shorthand-properties': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-spread': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-sticky-regex': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-template-literals': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-typeof-symbol': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-unicode-escapes': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-unicode-property-regex': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-unicode-sets-regex': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.7(supports-color@8.1.1)) - babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7(supports-color@8.1.1)) - babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.29.7(supports-color@8.1.1)) - babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.7(supports-color@8.1.1)) - core-js-compat: 3.49.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/preset-env@7.29.7(@babel/core@7.29.7)': - dependencies: - '@babel/compat-data': 7.29.7 - '@babel/core': 7.29.7 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-validator-option': 7.29.7 '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.29.7(@babel/core@7.29.7) '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.29.7(@babel/core@7.29.7) '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.29.7(@babel/core@7.29.7) @@ -16130,7 +15462,7 @@ snapshots: '@babel/plugin-transform-member-expression-literals': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-modules-amd': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7) - '@babel/plugin-transform-modules-systemjs': 7.29.4(@babel/core@7.29.7) + '@babel/plugin-transform-modules-systemjs': 7.29.4(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) '@babel/plugin-transform-modules-umd': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-named-capturing-groups-regex': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-new-target': 7.29.7(@babel/core@7.29.7) @@ -16167,28 +15499,21 @@ snapshots: '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.28.6 - '@babel/types': 7.29.0 - esutils: 2.0.3 - - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/types': 7.29.0 esutils: 2.0.3 '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/types': 7.29.0 esutils: 2.0.3 '@babel/preset-react@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-option': 7.27.1 '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.0) @@ -16198,21 +15523,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-react@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-validator-option': 7.29.7 - '@babel/plugin-transform-react-display-name': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-react-pure-annotations': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - transitivePeerDependencies: - - supports-color - '@babel/preset-react@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-validator-option': 7.29.7 '@babel/plugin-transform-react-display-name': 7.29.7(@babel/core@7.29.7) @@ -16224,7 +15537,7 @@ snapshots: '@babel/preset-typescript@7.27.1(@babel/core@7.28.0)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-option': 7.27.1 '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.28.0) @@ -16233,20 +15546,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.29.7(@babel/core@7.29.7(supports-color@8.1.1))': - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-validator-option': 7.29.7 - '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1)) - transitivePeerDependencies: - - supports-color - '@babel/preset-typescript@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-validator-option': 7.29.7 '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) @@ -16280,10 +15582,10 @@ snapshots: '@babel/parser': 7.29.7 '@babel/types': 7.29.7 - '@babel/traverse@7.29.0': + '@babel/traverse@7.29.0(supports-color@8.1.1)': dependencies: '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.1 + '@babel/generator': 7.29.7 '@babel/helper-globals': 7.28.0 '@babel/parser': 7.29.3 '@babel/template': 7.28.6 @@ -16936,20 +16238,19 @@ snapshots: transitivePeerDependencies: - '@algolia/client-search' - '@docusaurus/babel@3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/babel@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@babel/core': 7.28.0 - '@babel/generator': 7.29.1 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-transform-runtime': 7.28.0(@babel/core@7.28.0) - '@babel/preset-env': 7.29.5(@babel/core@7.28.0) - '@babel/preset-react': 7.27.1(@babel/core@7.28.0) - '@babel/preset-typescript': 7.27.1(@babel/core@7.28.0) - '@babel/runtime': 7.29.2 - '@babel/runtime-corejs3': 7.29.0 - '@babel/traverse': 7.29.0 - '@docusaurus/logger': 3.7.0 - '@docusaurus/utils': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/generator': 7.29.7 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.7) + '@babel/plugin-transform-runtime': 7.29.7(@babel/core@7.29.7) + '@babel/preset-env': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/preset-react': 7.29.7(@babel/core@7.29.7) + '@babel/preset-typescript': 7.29.7(@babel/core@7.29.7) + '@babel/runtime': 7.29.7 + '@babel/traverse': 7.29.7(supports-color@8.1.1) + '@docusaurus/logger': 3.10.1 + '@docusaurus/utils': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) babel-plugin-dynamic-import-node: 2.3.3 fs-extra: 11.3.3 tslib: 2.8.1 @@ -16962,15 +16263,15 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/bundler@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': + '@docusaurus/bundler@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': dependencies: - '@babel/core': 7.28.0 - '@docusaurus/babel': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/cssnano-preset': 3.7.0 - '@docusaurus/logger': 3.7.0 - '@docusaurus/types': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - babel-loader: 9.2.1(@babel/core@7.28.0)(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@docusaurus/babel': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/cssnano-preset': 3.10.1 + '@docusaurus/logger': 3.10.1 + '@docusaurus/types': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + babel-loader: 9.2.1(@babel/core@7.29.7)(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) clean-css: 5.3.3 copy-webpack-plugin: 11.0.0(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) css-loader: 6.11.0(@rspack/core@1.7.11(@swc/helpers@0.5.21))(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) @@ -16983,14 +16284,13 @@ snapshots: postcss: 8.5.6 postcss-loader: 7.3.4(postcss@8.5.6)(typescript@5.5.4)(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) postcss-preset-env: 10.6.1(postcss@8.5.6) - react-dev-utils: 12.0.1(typescript@5.5.4)(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) - terser-webpack-plugin: 5.3.14(@swc/core@1.15.13(@swc/helpers@0.5.21))(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) + terser-webpack-plugin: 5.3.16(@swc/core@1.15.13(@swc/helpers@0.5.21))(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) tslib: 2.8.1 url-loader: 4.1.1(file-loader@6.2.0(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))))(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) webpack: 5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21)) - webpackbar: 6.0.1(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) + webpackbar: 7.0.0(@rspack/core@1.7.11(@swc/helpers@0.5.21))(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) optionalDependencies: - '@docusaurus/faster': 3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21) + '@docusaurus/faster': 3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21) transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -16998,25 +16298,23 @@ snapshots: - '@swc/css' - csso - esbuild - - eslint - lightningcss - react - react-dom - supports-color - typescript - uglify-js - - vue-template-compiler - webpack-cli - '@docusaurus/core@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': + '@docusaurus/core@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': dependencies: - '@docusaurus/babel': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/bundler': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/logger': 3.7.0 - '@docusaurus/mdx-loader': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/babel': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/bundler': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/logger': 3.10.1 + '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mdx-js/react': 3.0.1(@types/react@18.3.23)(react@18.3.1) boxen: 6.2.1 chalk: 4.1.2 @@ -17025,38 +16323,39 @@ snapshots: combine-promises: 1.2.0 commander: 8.3.0 core-js: 3.45.1 - del: 6.1.1 detect-port: 1.6.1 escape-html: 1.0.3 eta: 2.2.0 eval: 0.1.8 + execa: 5.1.1 fs-extra: 11.3.3 html-tags: 3.3.1 html-webpack-plugin: 5.6.3(@rspack/core@1.7.11(@swc/helpers@0.5.21))(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) leven: 3.1.0 lodash: 4.18.1 + open: 8.4.2 p-map: 4.0.0 prompts: 2.4.2 react: 18.3.1 - react-dev-utils: 12.0.1(typescript@5.5.4)(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) react-dom: 18.3.1(react@18.3.1) react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)' react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' - react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) + react-loadable-ssr-addon-v5-slorber: 1.0.3(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) react-router: 5.3.4(react@18.3.1) react-router-config: 5.1.1(react-router@5.3.4(react@18.3.1))(react@18.3.1) react-router-dom: 5.3.4(react@18.3.1) - semver: 7.7.4 - serve-handler: 6.1.6 - shelljs: 0.8.5 + semver: 7.8.0 + serve-handler: 6.1.7 + tinypool: 1.1.1 tslib: 2.8.1 update-notifier: 6.0.2 webpack: 5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21)) webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 4.15.2(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) + webpack-dev-server: 5.2.5(tslib@2.8.1)(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) webpack-merge: 6.0.1 + optionalDependencies: + '@docusaurus/faster': 3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21) transitivePeerDependencies: - - '@docusaurus/faster' - '@parcel/css' - '@rspack/core' - '@swc/core' @@ -17065,30 +16364,29 @@ snapshots: - csso - debug - esbuild - - eslint - lightningcss - supports-color - typescript - uglify-js - utf-8-validate - - vue-template-compiler - webpack-cli - '@docusaurus/cssnano-preset@3.7.0': + '@docusaurus/cssnano-preset@3.10.1': dependencies: cssnano-preset-advanced: 6.1.2(postcss@8.5.6) postcss: 8.5.6 postcss-sort-media-queries: 5.2.0(postcss@8.5.6) tslib: 2.8.1 - '@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21)': + '@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21)': dependencies: - '@docusaurus/types': 3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rspack/core': 1.2.0-alpha.0(@swc/helpers@0.5.21) + '@docusaurus/types': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rspack/core': 1.7.11(@swc/helpers@0.5.21) '@swc/core': 1.15.13(@swc/helpers@0.5.21) '@swc/html': 1.15.13 - browserslist: 4.28.1 + browserslist: 4.28.2 lightningcss: 1.31.1 + semver: 7.8.0 swc-loader: 0.2.7(@swc/core@1.15.13(@swc/helpers@0.5.21))(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) tslib: 2.8.1 webpack: 5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21)) @@ -17098,14 +16396,14 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/logger@3.7.0': + '@docusaurus/logger@3.10.1': dependencies: chalk: 4.1.2 tslib: 2.8.1 - '@docusaurus/lqip-loader@3.7.0(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21)))': + '@docusaurus/lqip-loader@3.10.1(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21)))': dependencies: - '@docusaurus/logger': 3.7.0 + '@docusaurus/logger': 3.10.1 file-loader: 6.2.0(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) lodash: 4.18.1 sharp: 0.34.5 @@ -17113,18 +16411,18 @@ snapshots: transitivePeerDependencies: - webpack - '@docusaurus/mdx-loader@3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/mdx-loader@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@docusaurus/logger': 3.7.0 - '@docusaurus/utils': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/logger': 3.10.1 + '@docusaurus/utils': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mdx-js/mdx': 3.1.1 '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 estree-util-value-to-estree: 3.5.0 file-loader: 6.2.0(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) fs-extra: 11.3.3 - image-size: 1.2.1 + image-size: 2.0.2 mdast-util-mdx: 3.0.0 mdast-util-to-string: 4.0.0 react: 18.3.1 @@ -17148,9 +16446,9 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/module-type-aliases@3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/module-type-aliases@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@docusaurus/types': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/history': 4.7.11 '@types/react': 18.3.23 '@types/react-router-config': 5.0.11 @@ -17166,13 +16464,13 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/plugin-client-redirects@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': + '@docusaurus/plugin-client-redirects@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': dependencies: - '@docusaurus/core': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/logger': 3.7.0 - '@docusaurus/utils': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/logger': 3.10.1 + '@docusaurus/utils': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) eta: 2.2.0 fs-extra: 11.3.3 lodash: 4.18.1 @@ -17190,36 +16488,75 @@ snapshots: - csso - debug - esbuild - - eslint - lightningcss - supports-color - typescript - uglify-js - utf-8-validate - - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-blog@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@docusaurus/plugin-content-docs@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': - dependencies: - '@docusaurus/core': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/logger': 3.7.0 - '@docusaurus/mdx-loader': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/plugin-content-docs': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/types': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-blog@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': + dependencies: + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/logger': 3.10.1 + '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) cheerio: 1.0.0-rc.12 + combine-promises: 1.2.0 feed: 4.2.2 fs-extra: 11.3.3 lodash: 4.18.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - reading-time: 1.5.0 - srcset: 4.0.0 + schema-dts: 1.1.5 + srcset: 4.0.0 + tslib: 2.8.1 + unist-util-visit: 5.1.0 + utility-types: 3.11.0 + webpack: 5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21)) + transitivePeerDependencies: + - '@docusaurus/faster' + - '@mdx-js/react' + - '@parcel/css' + - '@rspack/core' + - '@swc/core' + - '@swc/css' + - bufferutil + - csso + - debug + - esbuild + - lightningcss + - supports-color + - typescript + - uglify-js + - utf-8-validate + - webpack-cli + + '@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': + dependencies: + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/logger': 3.10.1 + '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/module-type-aliases': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@types/react-router-config': 5.0.11 + combine-promises: 1.2.0 + fs-extra: 11.3.3 + js-yaml: 4.1.1 + lodash: 4.18.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + schema-dts: 1.1.5 tslib: 2.8.1 - unist-util-visit: 5.1.0 utility-types: 3.11.0 webpack: 5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21)) transitivePeerDependencies: @@ -17233,35 +16570,24 @@ snapshots: - csso - debug - esbuild - - eslint - lightningcss - supports-color - typescript - uglify-js - utf-8-validate - - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-docs@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': - dependencies: - '@docusaurus/core': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/logger': 3.7.0 - '@docusaurus/mdx-loader': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/module-type-aliases': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/types': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/react-router-config': 5.0.11 - combine-promises: 1.2.0 + '@docusaurus/plugin-content-pages@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': + dependencies: + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) fs-extra: 11.3.3 - js-yaml: 4.1.1 - lodash: 4.18.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 - utility-types: 3.11.0 webpack: 5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21)) transitivePeerDependencies: - '@docusaurus/faster' @@ -17274,27 +16600,20 @@ snapshots: - csso - debug - esbuild - - eslint - lightningcss - supports-color - typescript - uglify-js - utf-8-validate - - vue-template-compiler - webpack-cli - '@docusaurus/plugin-content-pages@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': + '@docusaurus/plugin-css-cascade-layers@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': dependencies: - '@docusaurus/core': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/mdx-loader': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/types': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - fs-extra: 11.3.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/types': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tslib: 2.8.1 - webpack: 5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21)) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -17306,24 +16625,24 @@ snapshots: - csso - debug - esbuild - - eslint - lightningcss + - react + - react-dom - supports-color - typescript - uglify-js - utf-8-validate - - vue-template-compiler - webpack-cli - '@docusaurus/plugin-debug@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': + '@docusaurus/plugin-debug@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': dependencies: - '@docusaurus/core': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/types': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/types': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) fs-extra: 11.3.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-json-view-lite: 1.5.0(react@18.3.1) + react-json-view-lite: 2.5.0(react@18.3.1) tslib: 2.8.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -17336,20 +16655,18 @@ snapshots: - csso - debug - esbuild - - eslint - lightningcss - supports-color - typescript - uglify-js - utf-8-validate - - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-analytics@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': + '@docusaurus/plugin-google-analytics@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': dependencies: - '@docusaurus/core': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/types': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/types': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 @@ -17364,21 +16681,19 @@ snapshots: - csso - debug - esbuild - - eslint - lightningcss - supports-color - typescript - uglify-js - utf-8-validate - - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-gtag@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': + '@docusaurus/plugin-google-gtag@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': dependencies: - '@docusaurus/core': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/types': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/gtag.js': 0.0.12 + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/types': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@types/gtag.js': 0.0.20 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 @@ -17393,20 +16708,18 @@ snapshots: - csso - debug - esbuild - - eslint - lightningcss - supports-color - typescript - uglify-js - utf-8-validate - - vue-template-compiler - webpack-cli - '@docusaurus/plugin-google-tag-manager@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': + '@docusaurus/plugin-google-tag-manager@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': dependencies: - '@docusaurus/core': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/types': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/types': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 @@ -17421,27 +16734,23 @@ snapshots: - csso - debug - esbuild - - eslint - lightningcss - supports-color - typescript - uglify-js - utf-8-validate - - vue-template-compiler - webpack-cli - '@docusaurus/plugin-ideal-image@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': + '@docusaurus/plugin-ideal-image@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': dependencies: - '@docusaurus/core': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/lqip-loader': 3.7.0(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/lqip-loader': 3.10.1(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) '@docusaurus/responsive-loader': 1.7.1(sharp@0.34.5) - '@docusaurus/theme-translations': 3.7.0 - '@docusaurus/types': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@slorber/react-ideal-image': 0.0.14(react-waypoint@10.3.0(react@18.3.1))(react@18.3.1) + '@docusaurus/theme-translations': 3.10.1 + '@docusaurus/types': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-waypoint: 10.3.0(react@18.3.1) sharp: 0.34.5 tslib: 2.8.1 webpack: 5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21)) @@ -17456,28 +16765,26 @@ snapshots: - csso - debug - esbuild - - eslint - lightningcss - supports-color - typescript - uglify-js - utf-8-validate - - vue-template-compiler - webpack-cli - '@docusaurus/plugin-pwa@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@docusaurus/plugin-content-docs@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/babel__core@7.20.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': + '@docusaurus/plugin-pwa@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/babel__core@7.20.5)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': dependencies: - '@babel/core': 7.28.0 - '@babel/preset-env': 7.29.5(@babel/core@7.28.0) - '@docusaurus/bundler': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/core': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/logger': 3.7.0 - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/theme-translations': 3.7.0 - '@docusaurus/types': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - babel-loader: 9.2.1(@babel/core@7.28.0)(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/preset-env': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@docusaurus/bundler': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/logger': 3.10.1 + '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/theme-translations': 3.10.1 + '@docusaurus/types': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + babel-loader: 9.2.1(@babel/core@7.29.7)(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) clsx: 2.1.1 core-js: 3.45.1 react: 18.3.1 @@ -17501,23 +16808,21 @@ snapshots: - csso - debug - esbuild - - eslint - lightningcss - supports-color - typescript - uglify-js - utf-8-validate - - vue-template-compiler - webpack-cli - '@docusaurus/plugin-sitemap@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': + '@docusaurus/plugin-sitemap@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': dependencies: - '@docusaurus/core': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/logger': 3.7.0 - '@docusaurus/types': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/logger': 3.10.1 + '@docusaurus/types': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) fs-extra: 11.3.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -17534,23 +16839,21 @@ snapshots: - csso - debug - esbuild - - eslint - lightningcss - supports-color - typescript - uglify-js - utf-8-validate - - vue-template-compiler - webpack-cli - '@docusaurus/plugin-svgr@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': + '@docusaurus/plugin-svgr@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': dependencies: - '@docusaurus/core': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/types': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/types': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@svgr/core': 8.1.0(typescript@5.5.4) - '@svgr/webpack': 8.1.0(typescript@5.5.4) + '@svgr/webpack': 8.1.0(supports-color@8.1.1)(typescript@5.5.4) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) tslib: 2.8.1 @@ -17566,31 +16869,30 @@ snapshots: - csso - debug - esbuild - - eslint - lightningcss - supports-color - typescript - uglify-js - utf-8-validate - - vue-template-compiler - webpack-cli - '@docusaurus/preset-classic@3.7.0(@algolia/client-search@5.49.1)(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.5.4)': - dependencies: - '@docusaurus/core': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/plugin-content-blog': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@docusaurus/plugin-content-docs@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/plugin-content-docs': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/plugin-content-pages': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/plugin-debug': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/plugin-google-analytics': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/plugin-google-gtag': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/plugin-google-tag-manager': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/plugin-sitemap': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/plugin-svgr': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/theme-classic': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/theme-search-algolia': 3.7.0(@algolia/client-search@5.49.1)(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.5.4) - '@docusaurus/types': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/preset-classic@3.10.1(@algolia/client-search@5.49.1)(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.5.4)': + dependencies: + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/plugin-content-blog': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/plugin-content-pages': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/plugin-css-cascade-layers': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/plugin-debug': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/plugin-google-analytics': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/plugin-google-gtag': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/plugin-google-tag-manager': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/plugin-sitemap': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/plugin-svgr': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/theme-classic': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/theme-search-algolia': 3.10.1(@algolia/client-search@5.49.1)(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.5.4) + '@docusaurus/types': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) transitivePeerDependencies: @@ -17606,14 +16908,12 @@ snapshots: - csso - debug - esbuild - - eslint - lightningcss - search-insights - supports-color - typescript - uglify-js - utf-8-validate - - vue-template-compiler - webpack-cli '@docusaurus/react-loadable@6.0.0(react@18.3.1)': @@ -17621,7 +16921,7 @@ snapshots: '@types/react': 18.3.23 react: 18.3.1 - '@docusaurus/remark-plugin-npm2yarn@3.7.0': + '@docusaurus/remark-plugin-npm2yarn@3.10.1': dependencies: mdast-util-mdx: 3.0.0 npm-to-yarn: 3.0.1 @@ -17637,21 +16937,21 @@ snapshots: optionalDependencies: sharp: 0.34.5 - '@docusaurus/theme-classic@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': - dependencies: - '@docusaurus/core': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/logger': 3.7.0 - '@docusaurus/mdx-loader': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/module-type-aliases': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/plugin-content-blog': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@docusaurus/plugin-content-docs@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/plugin-content-docs': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/plugin-content-pages': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/theme-translations': 3.7.0 - '@docusaurus/types': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/theme-classic@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': + dependencies: + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/logger': 3.10.1 + '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/module-type-aliases': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-blog': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/plugin-content-pages': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/theme-translations': 3.10.1 + '@docusaurus/types': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@mdx-js/react': 3.0.1(@types/react@18.3.23)(react@18.3.1) clsx: 2.1.1 copy-text-to-clipboard: 3.2.2 @@ -17678,22 +16978,20 @@ snapshots: - csso - debug - esbuild - - eslint - lightningcss - supports-color - typescript - uglify-js - utf-8-validate - - vue-template-compiler - webpack-cli - '@docusaurus/theme-common@3.7.0(@docusaurus/plugin-content-docs@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/theme-common@3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@docusaurus/mdx-loader': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/module-type-aliases': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/plugin-content-docs': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/utils': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/mdx-loader': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/module-type-aliases': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/utils': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/history': 4.7.11 '@types/react': 18.3.23 '@types/react-router-config': 5.0.11 @@ -17711,12 +17009,12 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/theme-live-codeblock@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@docusaurus/plugin-content-docs@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': + '@docusaurus/theme-live-codeblock@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)': dependencies: - '@docusaurus/core': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/theme-translations': 3.7.0 - '@docusaurus/utils-validation': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/theme-translations': 3.10.1 + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@philpl/buble': 0.19.7 clsx: 2.1.1 fs-extra: 11.3.3 @@ -17736,25 +17034,24 @@ snapshots: - csso - debug - esbuild - - eslint - lightningcss - supports-color - typescript - uglify-js - utf-8-validate - - vue-template-compiler - webpack-cli - '@docusaurus/theme-search-algolia@3.7.0(@algolia/client-search@5.49.1)(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.5.4)': + '@docusaurus/theme-search-algolia@3.10.1(@algolia/client-search@5.49.1)(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3)(typescript@5.5.4)': dependencies: + '@algolia/autocomplete-core': 1.19.8(@algolia/client-search@5.49.1)(algoliasearch@5.49.1)(search-insights@2.17.3) '@docsearch/react': 3.9.0(@algolia/client-search@5.49.1)(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.3) - '@docusaurus/core': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/logger': 3.7.0 - '@docusaurus/plugin-content-docs': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) - '@docusaurus/theme-common': 3.7.0(@docusaurus/plugin-content-docs@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/theme-translations': 3.7.0 - '@docusaurus/utils': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-validation': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/core': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/logger': 3.10.1 + '@docusaurus/plugin-content-docs': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/theme-common': 3.10.1(@docusaurus/plugin-content-docs@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@mdx-js/react@3.0.1(@types/react@18.3.23)(react@18.3.1))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4))(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/theme-translations': 3.10.1 + '@docusaurus/utils': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-validation': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) algoliasearch: 5.49.1 algoliasearch-helper: 3.28.0(algoliasearch@5.49.1) clsx: 2.1.1 @@ -17778,45 +17075,26 @@ snapshots: - csso - debug - esbuild - - eslint - lightningcss - search-insights - supports-color - typescript - uglify-js - utf-8-validate - - vue-template-compiler - webpack-cli - '@docusaurus/theme-translations@3.7.0': + '@docusaurus/theme-translations@3.10.1': dependencies: fs-extra: 11.3.3 tslib: 2.8.1 - '@docusaurus/tsconfig@3.0.0': {} - - '@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@types/history': 4.7.11 - '@types/react': 18.3.23 - commander: 8.3.0 - joi: 17.13.3 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-helmet-async: 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - utility-types: 3.11.0 - webpack: 5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21)) - webpack-merge: 5.10.0 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack-cli + '@docusaurus/tsconfig@3.10.1': {} - '@docusaurus/types@3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@mdx-js/mdx': 3.1.1 '@types/history': 4.7.11 + '@types/mdast': 4.0.4 '@types/react': 18.3.23 commander: 8.3.0 joi: 17.13.3 @@ -17833,9 +17111,9 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-common@3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/utils-common@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@docusaurus/types': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/types': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tslib: 2.8.1 transitivePeerDependencies: - '@swc/core' @@ -17846,11 +17124,11 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils-validation@3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/utils-validation@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@docusaurus/logger': 3.7.0 - '@docusaurus/utils': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/logger': 3.10.1 + '@docusaurus/utils': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) fs-extra: 11.3.3 joi: 17.13.3 js-yaml: 4.1.1 @@ -17865,12 +17143,13 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/utils@3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@docusaurus/utils@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@docusaurus/logger': 3.7.0 - '@docusaurus/types': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@docusaurus/utils-common': 3.7.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/logger': 3.10.1 + '@docusaurus/types': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@docusaurus/utils-common': 3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) escape-string-regexp: 4.0.0 + execa: 5.1.1 file-loader: 6.2.0(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) fs-extra: 11.3.3 github-slugger: 1.5.0 @@ -17880,9 +17159,9 @@ snapshots: js-yaml: 4.1.1 lodash: 4.18.1 micromatch: 4.0.8 + p-queue: 6.6.2 prompts: 2.4.2 resolve-pathname: 3.0.0 - shelljs: 0.8.5 tslib: 2.8.1 url-loader: 4.1.1(file-loader@6.2.0(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))))(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) utility-types: 3.11.0 @@ -17907,11 +17186,6 @@ snapshots: tslib: 2.8.1 optional: true - '@emnapi/runtime@1.8.1': - dependencies: - tslib: 2.8.1 - optional: true - '@emnapi/wasi-threads@1.2.1': dependencies: tslib: 2.8.1 @@ -18102,7 +17376,7 @@ snapshots: '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.8.1 + '@emnapi/runtime': 1.10.0 optional: true '@img/sharp-win32-arm64@0.34.5': @@ -18197,7 +17471,7 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 25.9.1 + '@types/node': 20.19.9 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -18282,7 +17556,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.31 - '@types/node': 25.9.1 + '@types/node': 20.19.9 chalk: 4.1.2 collect-v8-coverage: 1.0.3 exit: 0.1.2 @@ -18329,7 +17603,7 @@ snapshots: '@jest/transform@29.7.0': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.29.7(supports-color@8.1.1) '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.31 babel-plugin-istanbul: 6.1.1 @@ -18391,9 +17665,136 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@jsonjoy.com/base64@1.1.2(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/base64@17.67.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/buffers@1.2.1(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/buffers@17.67.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/codegen@1.0.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/codegen@17.67.0(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-core@4.57.8(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-builtins': 4.57.8(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.57.8(tslib@2.8.1) + thingies: 2.6.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-fsa@4.57.8(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-core': 4.57.8(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.57.8(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.57.8(tslib@2.8.1) + thingies: 2.6.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-builtins@4.57.8(tslib@2.8.1)': + dependencies: + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-to-fsa@4.57.8(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-fsa': 4.57.8(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.57.8(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.57.8(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node-utils@4.57.8(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-builtins': 4.57.8(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-node@4.57.8(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-core': 4.57.8(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.57.8(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.57.8(tslib@2.8.1) + '@jsonjoy.com/fs-print': 4.57.8(tslib@2.8.1) + '@jsonjoy.com/fs-snapshot': 4.57.8(tslib@2.8.1) + glob-to-regex.js: 1.2.0(tslib@2.8.1) + thingies: 2.6.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-print@4.57.8(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/fs-node-utils': 4.57.8(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/fs-snapshot@4.57.8(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.57.8(tslib@2.8.1) + '@jsonjoy.com/json-pack': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pack@1.21.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/base64': 1.1.2(tslib@2.8.1) + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/json-pointer': 1.0.2(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 2.6.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pack@17.67.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/base64': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/json-pointer': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) + hyperdyperid: 1.2.0 + thingies: 2.6.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pointer@1.0.2(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/json-pointer@17.67.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/util@1.9.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 1.2.1(tslib@2.8.1) + '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) + tslib: 2.8.1 + + '@jsonjoy.com/util@17.67.0(tslib@2.8.1)': + dependencies: + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 17.67.0(tslib@2.8.1) + tslib: 2.8.1 + '@kitware/vtk.js@35.5.3(@babel/preset-env@7.29.7(@babel/core@7.29.7))(autoprefixer@10.4.27(postcss@8.5.14))(wslink@2.5.0)': dependencies: - '@babel/preset-env': 7.29.7(@babel/core@7.29.7) + '@babel/preset-env': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) '@types/webxr': 0.5.24 autoprefixer: 10.4.27(postcss@8.5.14) commander: 8.3.0 @@ -18450,8 +17851,6 @@ snapshots: '@module-federation/error-codes@0.22.0': {} - '@module-federation/error-codes@0.8.4': {} - '@module-federation/runtime-core@0.22.0': dependencies: '@module-federation/error-codes': 0.22.0 @@ -18462,38 +17861,19 @@ snapshots: '@module-federation/runtime': 0.22.0 '@module-federation/webpack-bundler-runtime': 0.22.0 - '@module-federation/runtime-tools@0.8.4': - dependencies: - '@module-federation/runtime': 0.8.4 - '@module-federation/webpack-bundler-runtime': 0.8.4 - '@module-federation/runtime@0.22.0': dependencies: '@module-federation/error-codes': 0.22.0 '@module-federation/runtime-core': 0.22.0 '@module-federation/sdk': 0.22.0 - '@module-federation/runtime@0.8.4': - dependencies: - '@module-federation/error-codes': 0.8.4 - '@module-federation/sdk': 0.8.4 - '@module-federation/sdk@0.22.0': {} - '@module-federation/sdk@0.8.4': - dependencies: - isomorphic-rslog: 0.0.6 - '@module-federation/webpack-bundler-runtime@0.22.0': dependencies: '@module-federation/runtime': 0.22.0 '@module-federation/sdk': 0.22.0 - '@module-federation/webpack-bundler-runtime@0.8.4': - dependencies: - '@module-federation/runtime': 0.8.4 - '@module-federation/sdk': 0.8.4 - '@msgpack/msgpack@2.8.0': {} '@multiformats/blake2@2.0.2': @@ -18524,6 +17904,8 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true + '@noble/hashes@1.4.0': {} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -18553,6 +17935,100 @@ snapshots: '@oozcitak/util@8.3.8': {} + '@peculiar/asn1-cms@2.8.0': + dependencies: + '@peculiar/asn1-schema': 2.8.0 + '@peculiar/asn1-x509': 2.8.0 + '@peculiar/asn1-x509-attr': 2.8.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-csr@2.8.0': + dependencies: + '@peculiar/asn1-schema': 2.8.0 + '@peculiar/asn1-x509': 2.8.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-ecc@2.8.0': + dependencies: + '@peculiar/asn1-schema': 2.8.0 + '@peculiar/asn1-x509': 2.8.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-pfx@2.8.0': + dependencies: + '@peculiar/asn1-cms': 2.8.0 + '@peculiar/asn1-pkcs8': 2.8.0 + '@peculiar/asn1-rsa': 2.8.0 + '@peculiar/asn1-schema': 2.8.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-pkcs8@2.8.0': + dependencies: + '@peculiar/asn1-schema': 2.8.0 + '@peculiar/asn1-x509': 2.8.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-pkcs9@2.8.0': + dependencies: + '@peculiar/asn1-cms': 2.8.0 + '@peculiar/asn1-pfx': 2.8.0 + '@peculiar/asn1-pkcs8': 2.8.0 + '@peculiar/asn1-schema': 2.8.0 + '@peculiar/asn1-x509': 2.8.0 + '@peculiar/asn1-x509-attr': 2.8.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-rsa@2.8.0': + dependencies: + '@peculiar/asn1-schema': 2.8.0 + '@peculiar/asn1-x509': 2.8.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-schema@2.8.0': + dependencies: + '@peculiar/utils': 2.0.3 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-x509-attr@2.8.0': + dependencies: + '@peculiar/asn1-schema': 2.8.0 + '@peculiar/asn1-x509': 2.8.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-x509@2.8.0': + dependencies: + '@peculiar/asn1-schema': 2.8.0 + '@peculiar/utils': 2.0.3 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/utils@2.0.3': + dependencies: + tslib: 2.8.1 + + '@peculiar/x509@1.14.3': + dependencies: + '@peculiar/asn1-cms': 2.8.0 + '@peculiar/asn1-csr': 2.8.0 + '@peculiar/asn1-ecc': 2.8.0 + '@peculiar/asn1-pkcs9': 2.8.0 + '@peculiar/asn1-rsa': 2.8.0 + '@peculiar/asn1-schema': 2.8.0 + '@peculiar/asn1-x509': 2.8.0 + pvtsutils: 1.3.6 + reflect-metadata: 0.2.2 + tslib: 2.8.1 + tsyringe: 4.10.0 + '@perma/map@1.0.3': dependencies: '@multiformats/murmur3': 2.2.0 @@ -19185,10 +18661,10 @@ snapshots: '@remix-run/router@1.23.2': {} - '@rollup/plugin-babel@5.3.1(@babel/core@7.28.0)(@types/babel__core@7.20.5)(rollup@2.80.0)': + '@rollup/plugin-babel@5.3.1(@babel/core@7.29.7)(@types/babel__core@7.20.5)(rollup@2.80.0)': dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-imports': 7.28.6 + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/helper-module-imports': 7.29.7 '@rollup/pluginutils': 3.1.0(rollup@2.80.0) rollup: 2.80.0 optionalDependencies: @@ -19282,54 +18758,36 @@ snapshots: transitivePeerDependencies: - webpack-hot-middleware - '@rspack/binding-darwin-arm64@1.2.0-alpha.0': - optional: true - '@rspack/binding-darwin-arm64@1.7.11': optional: true '@rspack/binding-darwin-arm64@2.0.3': optional: true - '@rspack/binding-darwin-x64@1.2.0-alpha.0': - optional: true - '@rspack/binding-darwin-x64@1.7.11': optional: true '@rspack/binding-darwin-x64@2.0.3': optional: true - '@rspack/binding-linux-arm64-gnu@1.2.0-alpha.0': - optional: true - '@rspack/binding-linux-arm64-gnu@1.7.11': optional: true '@rspack/binding-linux-arm64-gnu@2.0.3': optional: true - '@rspack/binding-linux-arm64-musl@1.2.0-alpha.0': - optional: true - '@rspack/binding-linux-arm64-musl@1.7.11': optional: true '@rspack/binding-linux-arm64-musl@2.0.3': optional: true - '@rspack/binding-linux-x64-gnu@1.2.0-alpha.0': - optional: true - '@rspack/binding-linux-x64-gnu@1.7.11': optional: true '@rspack/binding-linux-x64-gnu@2.0.3': optional: true - '@rspack/binding-linux-x64-musl@1.2.0-alpha.0': - optional: true - '@rspack/binding-linux-x64-musl@1.7.11': optional: true @@ -19348,45 +18806,24 @@ snapshots: '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) optional: true - '@rspack/binding-win32-arm64-msvc@1.2.0-alpha.0': - optional: true - '@rspack/binding-win32-arm64-msvc@1.7.11': optional: true '@rspack/binding-win32-arm64-msvc@2.0.3': optional: true - '@rspack/binding-win32-ia32-msvc@1.2.0-alpha.0': - optional: true - '@rspack/binding-win32-ia32-msvc@1.7.11': optional: true '@rspack/binding-win32-ia32-msvc@2.0.3': optional: true - '@rspack/binding-win32-x64-msvc@1.2.0-alpha.0': - optional: true - '@rspack/binding-win32-x64-msvc@1.7.11': optional: true '@rspack/binding-win32-x64-msvc@2.0.3': optional: true - '@rspack/binding@1.2.0-alpha.0': - optionalDependencies: - '@rspack/binding-darwin-arm64': 1.2.0-alpha.0 - '@rspack/binding-darwin-x64': 1.2.0-alpha.0 - '@rspack/binding-linux-arm64-gnu': 1.2.0-alpha.0 - '@rspack/binding-linux-arm64-musl': 1.2.0-alpha.0 - '@rspack/binding-linux-x64-gnu': 1.2.0-alpha.0 - '@rspack/binding-linux-x64-musl': 1.2.0-alpha.0 - '@rspack/binding-win32-arm64-msvc': 1.2.0-alpha.0 - '@rspack/binding-win32-ia32-msvc': 1.2.0-alpha.0 - '@rspack/binding-win32-x64-msvc': 1.2.0-alpha.0 - '@rspack/binding@1.7.11': optionalDependencies: '@rspack/binding-darwin-arm64': 1.7.11 @@ -19413,20 +18850,11 @@ snapshots: '@rspack/binding-win32-ia32-msvc': 2.0.3 '@rspack/binding-win32-x64-msvc': 2.0.3 - '@rspack/cli@2.0.3(@rspack/core@2.0.3(@swc/helpers@0.5.21))(@rspack/dev-server@2.0.1(@rspack/core@2.0.3(@swc/helpers@0.5.21)))': + '@rspack/cli@2.0.3(@rspack/core@2.0.3(@swc/helpers@0.5.21))(@rspack/dev-server@2.0.1(@rspack/core@2.0.3(@swc/helpers@0.5.21))(selfsigned@5.5.0))': dependencies: '@rspack/core': 2.0.3(@swc/helpers@0.5.21) optionalDependencies: - '@rspack/dev-server': 2.0.1(@rspack/core@2.0.3(@swc/helpers@0.5.21)) - - '@rspack/core@1.2.0-alpha.0(@swc/helpers@0.5.21)': - dependencies: - '@module-federation/runtime-tools': 0.8.4 - '@rspack/binding': 1.2.0-alpha.0 - '@rspack/lite-tapable': 1.0.1 - caniuse-lite: 1.0.30001774 - optionalDependencies: - '@swc/helpers': 0.5.21 + '@rspack/dev-server': 2.0.1(@rspack/core@2.0.3(@swc/helpers@0.5.21))(selfsigned@5.5.0) '@rspack/core@1.7.11(@swc/helpers@0.5.21)': dependencies: @@ -19446,12 +18874,12 @@ snapshots: optionalDependencies: '@rspack/core': 2.0.3(@swc/helpers@0.5.21) - '@rspack/dev-server@2.0.1(@rspack/core@2.0.3(@swc/helpers@0.5.21))': + '@rspack/dev-server@2.0.1(@rspack/core@2.0.3(@swc/helpers@0.5.21))(selfsigned@5.5.0)': dependencies: '@rspack/core': 2.0.3(@swc/helpers@0.5.21) '@rspack/dev-middleware': 2.0.1(@rspack/core@2.0.3(@swc/helpers@0.5.21)) - - '@rspack/lite-tapable@1.0.1': {} + optionalDependencies: + selfsigned: 5.5.0 '@rspack/lite-tapable@1.1.0': {} @@ -19508,11 +18936,6 @@ snapshots: react-fast-compare: 3.2.2 shallowequal: 1.1.0 - '@slorber/react-ideal-image@0.0.14(react-waypoint@10.3.0(react@18.3.1))(react@18.3.1)': - dependencies: - react: 18.3.1 - react-waypoint: 10.3.0(react@18.3.1) - '@slorber/remark-comment@1.0.0': dependencies: micromark-factory-space: 1.1.0 @@ -19526,54 +18949,54 @@ snapshots: magic-string: 0.25.9 string.prototype.matchall: 4.0.12 - '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.28.0)': + '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.29.7(supports-color@8.1.1) - '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.28.0)': + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.29.7(supports-color@8.1.1) - '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.28.0)': + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.29.7(supports-color@8.1.1) - '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.28.0)': + '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.29.7(supports-color@8.1.1) - '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.28.0)': + '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.29.7(supports-color@8.1.1) - '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.28.0)': + '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.29.7(supports-color@8.1.1) - '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.28.0)': + '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.29.7(supports-color@8.1.1) - '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.28.0)': + '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.29.7(supports-color@8.1.1) - '@svgr/babel-preset@8.1.0(@babel/core@7.28.0)': + '@svgr/babel-preset@8.1.0(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.28.0 - '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.28.0) - '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.28.0) - '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.28.0) - '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.28.0) - '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.28.0) - '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.28.0) - '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.28.0) - '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.28.0) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.29.7) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.29.7) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.29.7) + '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.29.7) + '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.29.7) + '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.29.7) + '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.29.7) + '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.29.7) '@svgr/core@8.1.0(typescript@5.5.4)': dependencies: - '@babel/core': 7.28.0 - '@svgr/babel-preset': 8.1.0(@babel/core@7.28.0) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@svgr/babel-preset': 8.1.0(@babel/core@7.29.7) camelcase: 6.3.0 cosmiconfig: 8.3.6(typescript@5.5.4) snake-case: 3.0.4 @@ -19588,8 +19011,8 @@ snapshots: '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.5.4))': dependencies: - '@babel/core': 7.28.0 - '@svgr/babel-preset': 8.1.0(@babel/core@7.28.0) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@svgr/babel-preset': 8.1.0(@babel/core@7.29.7) '@svgr/core': 8.1.0(typescript@5.5.4) '@svgr/hast-util-to-babel-ast': 8.0.0 svg-parser: 2.0.4 @@ -19605,9 +19028,9 @@ snapshots: transitivePeerDependencies: - typescript - '@svgr/webpack@8.1.0(typescript@5.5.4)': + '@svgr/webpack@8.1.0(supports-color@8.1.1)(typescript@5.5.4)': dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/plugin-transform-react-constant-elements': 7.27.1(@babel/core@7.28.0) '@babel/preset-env': 7.29.5(@babel/core@7.28.0) '@babel/preset-react': 7.27.1(@babel/core@7.28.0) @@ -19871,7 +19294,7 @@ snapshots: dependencies: '@types/node': 20.19.9 - '@types/gtag.js@0.0.12': {} + '@types/gtag.js@0.0.20': {} '@types/hast@3.0.4': dependencies: @@ -19926,10 +19349,6 @@ snapshots: '@types/ms@2.1.0': {} - '@types/node-forge@1.3.14': - dependencies: - '@types/node': 20.19.9 - '@types/node@11.15.54': {} '@types/node@17.0.45': {} @@ -19992,7 +19411,7 @@ snapshots: '@types/resolve@1.20.2': {} - '@types/retry@0.12.0': {} + '@types/retry@0.12.2': {} '@types/sax@1.2.7': dependencies: @@ -20053,7 +19472,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 25.9.1 + '@types/node': 20.19.9 optional: true '@ungap/structured-clone@1.3.0': {} @@ -20267,13 +19686,6 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.18.0: - dependencies: - fast-deep-equal: 3.1.3 - fast-uri: 3.1.2 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 @@ -20341,6 +19753,8 @@ snapshots: ansi-styles@6.2.3: {} + ansis@3.17.0: {} + any-observable@0.3.0(rxjs@6.6.7): optionalDependencies: rxjs: 6.6.7 @@ -20422,6 +19836,12 @@ snapshots: dependencies: safer-buffer: 2.1.2 + asn1js@3.0.10: + dependencies: + pvtsutils: 1.3.6 + pvutils: 1.1.5 + tslib: 2.8.1 + assert-plus@1.0.0: {} assert@2.1.0: @@ -20502,19 +19922,6 @@ snapshots: - debug - supports-color - babel-jest@29.7.0(@babel/core@7.28.0): - dependencies: - '@babel/core': 7.28.0 - '@jest/transform': 29.7.0 - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.28.0) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - babel-jest@29.7.0(@babel/core@7.29.7(supports-color@8.1.1)): dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) @@ -20528,27 +19935,18 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@8.4.1(@babel/core@7.29.7(supports-color@8.1.1))(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))): - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - find-cache-dir: 3.3.2 - loader-utils: 2.0.4 - make-dir: 3.1.0 - schema-utils: 2.7.1 - webpack: 5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21)) - babel-loader@8.4.1(@babel/core@7.29.7)(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))): dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) find-cache-dir: 3.3.2 loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 webpack: 5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21)) - babel-loader@9.2.1(@babel/core@7.28.0)(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))): + babel-loader@9.2.1(@babel/core@7.29.7)(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))): dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.29.7(supports-color@8.1.1) find-cache-dir: 4.0.0 schema-utils: 4.3.3 webpack: 5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21)) @@ -20593,49 +19991,24 @@ snapshots: babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.28.0): dependencies: '@babel/compat-data': 7.29.3 - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.28.0) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.7(supports-color@8.1.1)): - dependencies: - '@babel/compat-data': 7.29.3 - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7(supports-color@8.1.1)) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.7): dependencies: '@babel/compat-data': 7.29.3 - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.0): - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.28.0) - core-js-compat: 3.49.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.7(supports-color@8.1.1)): - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7(supports-color@8.1.1)) - core-js-compat: 3.49.0 - transitivePeerDependencies: - - supports-color - babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.7): dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) core-js-compat: 3.49.0 transitivePeerDependencies: @@ -20643,23 +20016,15 @@ snapshots: babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.28.0): dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.28.0) core-js-compat: 3.49.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.29.7(supports-color@8.1.1)): - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7(supports-color@8.1.1)) - core-js-compat: 3.49.0 - transitivePeerDependencies: - - supports-color - babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.29.7): dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) core-js-compat: 3.49.0 transitivePeerDependencies: @@ -20667,21 +20032,14 @@ snapshots: babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.28.0): dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.28.0(supports-color@8.1.1) '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.28.0) transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.7(supports-color@8.1.1)): - dependencies: - '@babel/core': 7.29.7(supports-color@8.1.1) - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7(supports-color@8.1.1)) - transitivePeerDependencies: - - supports-color - babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.7): dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) transitivePeerDependencies: - supports-color @@ -20692,25 +20050,6 @@ snapshots: '@babel/template': 7.28.6 tslib: 2.8.1 - babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.0): - dependencies: - '@babel/core': 7.28.0 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.0) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.0) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.0) - '@babel/plugin-syntax-import-attributes': 7.28.6(@babel/core@7.28.0) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.0) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.0) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.0) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.0) - babel-preset-current-node-syntax@1.2.0(@babel/core@7.29.7(supports-color@8.1.1)): dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) @@ -20730,12 +20069,6 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.29.7(supports-color@8.1.1)) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.29.7(supports-color@8.1.1)) - babel-preset-jest@29.6.3(@babel/core@7.28.0): - dependencies: - '@babel/core': 7.28.0 - babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.0) - babel-preset-jest@29.6.3(@babel/core@7.29.7(supports-color@8.1.1)): dependencies: '@babel/core': 7.29.7(supports-color@8.1.1) @@ -20953,10 +20286,16 @@ snapshots: builtin-status-codes@3.0.0: {} + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + bytes@3.0.0: {} bytes@3.1.2: {} + bytestreamjs@2.0.1: {} + cacheable-lookup@7.0.0: {} cacheable-request@10.2.14: @@ -21334,14 +20673,6 @@ snapshots: cornerstone-math@0.1.10: {} - cosmiconfig@6.0.0: - dependencies: - '@types/parse-json': 4.0.2 - import-fresh: 3.3.1 - parse-json: 5.2.0 - path-type: 4.0.0 - yaml: 1.10.3 - cosmiconfig@7.1.0: dependencies: '@types/parse-json': 4.0.2 @@ -21935,9 +21266,12 @@ snapshots: deepmerge@4.3.1: {} - default-gateway@6.0.3: + default-browser-id@5.0.1: {} + + default-browser@5.5.0: dependencies: - execa: 5.1.1 + bundle-name: 4.1.0 + default-browser-id: 5.0.1 default-require-extensions@3.0.1: dependencies: @@ -21957,6 +21291,8 @@ snapshots: define-lazy-prop@2.0.0: {} + define-lazy-prop@3.0.0: {} + define-properties@1.2.1: dependencies: define-data-property: 1.1.4 @@ -21965,17 +21301,6 @@ snapshots: defined@1.0.1: {} - del@6.1.1: - dependencies: - globby: 11.1.0 - graceful-fs: 4.2.11 - is-glob: 4.0.3 - is-path-cwd: 2.2.0 - is-path-inside: 3.0.3 - p-map: 4.0.0 - rimraf: 3.0.2 - slash: 3.0.0 - delayed-stream@1.0.0: {} depd@1.1.2: {} @@ -22003,13 +21328,6 @@ snapshots: detect-node@2.1.0: {} - detect-port-alt@1.1.6: - dependencies: - address: 1.2.2 - debug: 2.6.9 - transitivePeerDependencies: - - supports-color - detect-port@1.6.1: dependencies: address: 1.2.2 @@ -22082,9 +21400,9 @@ snapshots: dependencies: define-properties: 1.2.1 - docusaurus-plugin-image-zoom@1.0.1(@docusaurus/theme-classic@3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)): + docusaurus-plugin-image-zoom@1.0.1(@docusaurus/theme-classic@3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4)): dependencies: - '@docusaurus/theme-classic': 3.7.0(@docusaurus/faster@3.7.0(@docusaurus/types@3.0.0(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) + '@docusaurus/theme-classic': 3.10.1(@docusaurus/faster@3.10.1(@docusaurus/types@3.10.1(@swc/core@1.15.13(@swc/helpers@0.5.21))(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@swc/helpers@0.5.21))(@rspack/core@1.7.11(@swc/helpers@0.5.21))(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.5.4) medium-zoom: 1.1.0 validate-peer-dependencies: 2.2.0 @@ -22666,8 +21984,6 @@ snapshots: dependencies: graceful-fs: 4.2.11 - filesize@8.0.7: {} - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -22699,20 +22015,11 @@ snapshots: find-root@1.1.0: {} - find-up@3.0.0: - dependencies: - locate-path: 3.0.0 - find-up@4.1.0: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - find-up@6.3.0: dependencies: locate-path: 7.2.0 @@ -22722,8 +22029,6 @@ snapshots: flatbuffers@1.12.0: {} - follow-redirects@1.15.11: {} - follow-redirects@1.16.0: {} for-each@0.3.5: @@ -22742,24 +22047,6 @@ snapshots: forever-agent@0.6.1: {} - fork-ts-checker-webpack-plugin@6.5.3(typescript@5.5.4)(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))): - dependencies: - '@babel/code-frame': 7.29.0 - '@types/json-schema': 7.0.15 - chalk: 4.1.2 - chokidar: 3.6.0 - cosmiconfig: 6.0.0 - deepmerge: 4.3.1 - fs-extra: 9.1.0 - glob: 7.2.3 - memfs: 3.5.3 - minimatch: 3.1.5 - schema-utils: 2.7.0 - semver: 7.8.0 - tapable: 2.2.2 - typescript: 5.5.4 - webpack: 5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21)) - form-data-encoder@2.1.4: {} form-data@4.0.6: @@ -22809,7 +22096,7 @@ snapshots: fs-extra@11.3.3: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.2.0 + jsonfile: 6.2.1 universalify: 2.0.1 fs-extra@9.1.0: @@ -22819,8 +22106,6 @@ snapshots: jsonfile: 6.2.1 universalify: 2.0.1 - fs-monkey@1.1.0: {} - fs.realpath@1.0.0: {} fsevents@2.3.2: @@ -22924,6 +22209,10 @@ snapshots: dependencies: is-glob: 4.0.3 + glob-to-regex.js@1.2.0(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + glob-to-regexp@0.4.1: {} glob@10.5.0: @@ -22970,16 +22259,6 @@ snapshots: dependencies: ini: 2.0.0 - global-modules@2.0.0: - dependencies: - global-prefix: 3.0.0 - - global-prefix@3.0.0: - dependencies: - ini: 1.3.8 - kind-of: 6.0.3 - which: 1.3.1 - globalthis@1.0.3: dependencies: define-properties: 1.2.1 @@ -23242,8 +22521,6 @@ snapshots: dependencies: whatwg-encoding: 2.0.0 - html-entities@2.6.0: {} - html-escaper@2.0.2: {} html-minifier-terser@6.1.0: @@ -23357,7 +22634,7 @@ snapshots: http-proxy@1.18.1: dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.11 + follow-redirects: 1.16.0 requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -23388,6 +22665,8 @@ snapshots: human-signals@5.0.0: {} + hyperdyperid@1.2.0: {} + i18next-browser-languagedetector@3.1.1: {} i18next-locize-backend@2.2.2: @@ -23420,15 +22699,14 @@ snapshots: ignore@5.3.2: {} - image-size@1.2.1: - dependencies: - queue: 6.0.2 + image-size@2.0.2: {} image-type@4.1.0: dependencies: file-type: 10.11.0 - immer@9.0.21: {} + immer@9.0.21: + optional: true immutability-helper@3.1.1: {} @@ -23493,7 +22771,7 @@ snapshots: internal-slot@1.1.0: dependencies: es-errors: 1.3.0 - hasown: 2.0.3 + hasown: 2.0.4 side-channel: 1.1.0 internmap@2.0.3: {} @@ -23622,6 +22900,8 @@ snapshots: is-docker@2.2.1: {} + is-docker@3.0.0: {} + is-extendable@0.1.1: {} is-extglob@2.1.1: {} @@ -23654,6 +22934,10 @@ snapshots: is-hexadecimal@2.0.1: {} + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + is-installed-globally@0.4.0: dependencies: global-dirs: 3.0.1 @@ -23674,6 +22958,8 @@ snapshots: is-negative-zero@2.0.3: {} + is-network-error@1.3.2: {} + is-npm@6.1.0: {} is-number-object@1.1.1: @@ -23691,8 +22977,6 @@ snapshots: dependencies: symbol-observable: 1.2.0 - is-path-cwd@2.2.0: {} - is-path-inside@3.0.3: {} is-plain-obj@3.0.0: {} @@ -23716,8 +23000,6 @@ snapshots: is-regexp@1.0.0: {} - is-root@2.1.0: {} - is-set@2.0.3: {} is-shared-array-buffer@1.0.4: @@ -23768,6 +23050,10 @@ snapshots: dependencies: is-docker: 2.2.1 + is-wsl@3.1.1: + dependencies: + is-inside-container: 1.0.0 + is-yarn-global@0.4.1: {} isarray@1.0.0: {} @@ -23780,8 +23066,6 @@ snapshots: isomorphic-base64@1.0.2: {} - isomorphic-rslog@0.0.6: {} - isstream@0.1.2: {} istanbul-lib-coverage@3.2.2: {} @@ -23792,7 +23076,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/parser': 7.29.3 '@istanbuljs/schema': 0.1.6 istanbul-lib-coverage: 3.2.2 @@ -23802,7 +23086,7 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.29.7(supports-color@8.1.1) '@babel/parser': 7.29.3 '@istanbuljs/schema': 0.1.6 istanbul-lib-coverage: 3.2.2 @@ -23982,10 +23266,10 @@ snapshots: jest-config@29.7.0(@types/node@25.9.1)(babel-plugin-macros@3.1.0)(ts-node@10.9.2(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/node@25.9.1)(typescript@5.5.4)): dependencies: - '@babel/core': 7.28.0 + '@babel/core': 7.29.7(supports-color@8.1.1) '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - babel-jest: 29.7.0(@babel/core@7.28.0) + babel-jest: 29.7.0(@babel/core@7.29.7(supports-color@8.1.1)) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -24062,7 +23346,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 25.9.1 + '@types/node': 20.19.9 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -24143,7 +23427,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 25.9.1 + '@types/node': 20.19.9 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -24171,7 +23455,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 25.9.1 + '@types/node': 20.19.9 chalk: 4.1.2 cjs-module-lexer: 1.4.3 collect-v8-coverage: 1.0.3 @@ -24191,15 +23475,15 @@ snapshots: jest-snapshot@29.7.0: dependencies: - '@babel/core': 7.28.0 - '@babel/generator': 7.29.1 - '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.28.0) - '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.28.0) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/generator': 7.29.7 + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.7(supports-color@8.1.1)) + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.7(supports-color@8.1.1)) '@babel/types': 7.29.0 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.0) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.29.7(supports-color@8.1.1)) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -24245,7 +23529,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 25.9.1 + '@types/node': 20.19.9 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -24368,12 +23652,6 @@ snapshots: json5@2.2.3: {} - jsonfile@6.2.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - jsonfile@6.2.1: dependencies: universalify: 2.0.1 @@ -24538,21 +23816,10 @@ snapshots: emojis-list: 3.0.0 json5: 2.2.3 - loader-utils@3.3.1: {} - - locate-path@3.0.0: - dependencies: - p-locate: 3.0.0 - path-exists: 3.0.0 - locate-path@5.0.0: dependencies: p-locate: 4.1.0 - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - locate-path@7.2.0: dependencies: p-locate: 6.0.0 @@ -24671,10 +23938,6 @@ snapshots: markdown-extensions@2.0.0: {} - markdown-table@2.0.0: - dependencies: - repeat-string: 1.6.1 - markdown-table@3.0.4: {} material-colors@1.2.6: {} @@ -24995,9 +24258,22 @@ snapshots: medium-zoom@1.1.0: {} - memfs@3.5.3: - dependencies: - fs-monkey: 1.1.0 + memfs@4.57.8(tslib@2.8.1): + dependencies: + '@jsonjoy.com/fs-core': 4.57.8(tslib@2.8.1) + '@jsonjoy.com/fs-fsa': 4.57.8(tslib@2.8.1) + '@jsonjoy.com/fs-node': 4.57.8(tslib@2.8.1) + '@jsonjoy.com/fs-node-builtins': 4.57.8(tslib@2.8.1) + '@jsonjoy.com/fs-node-to-fsa': 4.57.8(tslib@2.8.1) + '@jsonjoy.com/fs-node-utils': 4.57.8(tslib@2.8.1) + '@jsonjoy.com/fs-print': 4.57.8(tslib@2.8.1) + '@jsonjoy.com/fs-snapshot': 4.57.8(tslib@2.8.1) + '@jsonjoy.com/json-pack': 1.21.0(tslib@2.8.1) + '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) + glob-to-regex.js: 1.2.0(tslib@2.8.1) + thingies: 2.6.0(tslib@2.8.1) + tree-dump: 1.1.0(tslib@2.8.1) + tslib: 2.8.1 memoize-one@5.2.1: {} @@ -25507,6 +24783,10 @@ snapshots: dependencies: mime-db: 1.52.0 + mime-types@3.0.2: + dependencies: + mime-db: 1.54.0 + mime@1.6.0: {} mimic-fn@1.2.0: {} @@ -25632,8 +24912,6 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 - node-forge@1.4.0: {} - node-int64@0.4.0: {} node-preload@0.2.1: @@ -25812,6 +25090,13 @@ snapshots: platform: 1.3.6 protobufjs: 7.6.1 + open@10.2.0: + dependencies: + default-browser: 5.5.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + wsl-utils: 0.1.0 + open@8.4.2: dependencies: define-lazy-prop: 2.0.0 @@ -25862,18 +25147,10 @@ snapshots: dependencies: yocto-queue: 1.2.2 - p-locate@3.0.0: - dependencies: - p-limit: 2.3.0 - p-locate@4.1.0: dependencies: p-limit: 2.3.0 - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - p-locate@6.0.0: dependencies: p-limit: 4.0.0 @@ -25888,16 +25165,26 @@ snapshots: dependencies: aggregate-error: 3.1.0 + p-queue@6.6.2: + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + p-queue@8.1.1: dependencies: eventemitter3: 5.0.4 p-timeout: 6.1.4 - p-retry@4.6.2: + p-retry@6.2.1: dependencies: - '@types/retry': 0.12.0 + '@types/retry': 0.12.2 + is-network-error: 1.3.2 retry: 0.13.1 + p-timeout@3.2.0: + dependencies: + p-finally: 1.0.0 + p-timeout@6.1.4: {} p-try@2.2.0: {} @@ -25978,8 +25265,6 @@ snapshots: path-browserify@1.0.1: {} - path-exists@3.0.0: {} - path-exists@4.0.0: {} path-exists@5.0.0: {} @@ -26065,9 +25350,14 @@ snapshots: '@types/node': 11.15.54 execa: 1.0.0 - pkg-up@3.1.0: + pkijs@3.4.0: dependencies: - find-up: 3.0.0 + '@noble/hashes': 1.4.0 + asn1js: 3.0.10 + bytestreamjs: 2.0.1 + pvtsutils: 1.3.6 + pvutils: 1.1.5 + tslib: 2.8.1 platform@1.3.6: {} @@ -27267,6 +26557,12 @@ snapshots: pure-rand@6.1.0: {} + pvtsutils@1.3.6: + dependencies: + tslib: 2.8.1 + + pvutils@1.1.5: {} + qs@6.14.1: dependencies: side-channel: 1.1.0 @@ -27284,10 +26580,6 @@ snapshots: queue-microtask@1.2.3: {} - queue@6.0.2: - dependencies: - inherits: 2.0.4 - quick-lru@5.1.1: {} quick-lru@6.1.2: {} @@ -27378,40 +26670,6 @@ snapshots: date-fns-jalali: 4.1.0-0 react: 18.3.1 - react-dev-utils@12.0.1(typescript@5.5.4)(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))): - dependencies: - '@babel/code-frame': 7.29.0 - address: 1.2.2 - browserslist: 4.28.2 - chalk: 4.1.2 - cross-spawn: 7.0.6 - detect-port-alt: 1.1.6 - escape-string-regexp: 4.0.0 - filesize: 8.0.7 - find-up: 5.0.0 - fork-ts-checker-webpack-plugin: 6.5.3(typescript@5.5.4)(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) - global-modules: 2.0.0 - globby: 11.1.0 - gzip-size: 6.0.0 - immer: 9.0.21 - is-root: 2.1.0 - loader-utils: 3.3.1 - open: 8.4.2 - pkg-up: 3.1.0 - prompts: 2.4.2 - react-error-overlay: 6.1.0 - recursive-readdir: 2.2.3 - shell-quote: 1.8.4 - strip-ansi: 6.0.1 - text-table: 0.2.0 - webpack: 5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21)) - optionalDependencies: - typescript: 5.5.4 - transitivePeerDependencies: - - eslint - - supports-color - - vue-template-compiler - react-dnd-html5-backend@14.0.0: dependencies: dnd-core: 14.0.0 @@ -27453,20 +26711,8 @@ snapshots: '@babel/runtime': 7.29.2 react: 18.3.1 - react-error-overlay@6.1.0: {} - react-fast-compare@3.2.2: {} - react-helmet-async@1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - '@babel/runtime': 7.29.2 - invariant: 2.2.4 - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-fast-compare: 3.2.2 - shallowequal: 1.1.0 - react-i18next@12.3.1(i18next@17.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.29.2 @@ -27482,7 +26728,7 @@ snapshots: react-is@18.3.1: {} - react-json-view-lite@1.5.0(react@18.3.1): + react-json-view-lite@2.5.0(react@18.3.1): dependencies: react: 18.3.1 @@ -27496,9 +26742,9 @@ snapshots: sucrase: 3.35.1 use-editable: 2.3.3(react@18.3.1) - react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))): + react-loadable-ssr-addon-v5-slorber@1.0.3(@docusaurus/react-loadable@6.0.0(react@18.3.1))(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))): dependencies: - '@babel/runtime': 7.29.2 + '@babel/runtime': 7.29.7 react-loadable: '@docusaurus/react-loadable@6.0.0(react@18.3.1)' webpack: 5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21)) @@ -27565,13 +26811,13 @@ snapshots: react-router-config@5.1.1(react-router@5.3.4(react@18.3.1))(react@18.3.1): dependencies: - '@babel/runtime': 7.29.2 + '@babel/runtime': 7.29.7 react: 18.3.1 react-router: 5.3.4(react@18.3.1) react-router-dom@5.3.4(react@18.3.1): dependencies: - '@babel/runtime': 7.29.2 + '@babel/runtime': 7.29.7 history: 4.10.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -27589,7 +26835,7 @@ snapshots: react-router@5.3.4(react@18.3.1): dependencies: - '@babel/runtime': 7.29.2 + '@babel/runtime': 7.29.7 history: 4.10.1 hoist-non-react-statics: 3.3.2 loose-envify: 1.4.0 @@ -27659,14 +26905,6 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-waypoint@10.3.0(react@18.3.1): - dependencies: - '@babel/runtime': 7.29.2 - consolidated-events: 2.0.2 - prop-types: 15.8.1 - react: 18.3.1 - react-is: 18.3.1 - react-window@1.8.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.29.2 @@ -27745,8 +26983,6 @@ snapshots: dependencies: picomatch: 2.3.2 - reading-time@1.5.0: {} - rechoir@0.6.2: dependencies: resolve: 1.22.12 @@ -27780,16 +27016,14 @@ snapshots: unified: 11.0.5 vfile: 6.0.3 - recursive-readdir@2.2.3: - dependencies: - minimatch: 3.1.5 - redux@4.2.1: dependencies: '@babel/runtime': 7.29.7 reference-spec-reader@0.2.0: {} + reflect-metadata@0.2.2: {} + reflect.getprototypeof@1.0.10: dependencies: call-bind: 1.0.9 @@ -27964,8 +27198,6 @@ snapshots: lodash: 4.18.1 strip-ansi: 6.0.1 - repeat-string@1.6.1: {} - request-progress@3.0.0: dependencies: throttleit: 1.0.1 @@ -28055,6 +27287,8 @@ snapshots: postcss: 8.5.6 strip-json-comments: 3.1.1 + run-applescript@7.1.0: {} + run-async@2.4.1: {} run-parallel@1.2.0: @@ -28098,8 +27332,6 @@ snapshots: safer-buffer@2.1.2: {} - sax@1.4.4: {} - sax@1.6.0: {} saxes@6.0.0: @@ -28110,11 +27342,7 @@ snapshots: dependencies: loose-envify: 1.4.0 - schema-utils@2.7.0: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 6.15.0 - ajv-keywords: 3.5.2(ajv@6.15.0) + schema-dts@1.1.5: {} schema-utils@2.7.1: dependencies: @@ -28150,10 +27378,10 @@ snapshots: select-hose@2.0.0: {} - selfsigned@2.4.1: + selfsigned@5.5.0: dependencies: - '@types/node-forge': 1.3.14 - node-forge: 1.4.0 + '@peculiar/x509': 1.14.3 + pkijs: 3.4.0 semver-diff@4.0.0: dependencies: @@ -28161,8 +27389,6 @@ snapshots: semver@6.3.1: {} - semver@7.7.4: {} - semver@7.8.0: {} send@0.19.2: @@ -28185,7 +27411,7 @@ snapshots: serialize-javascript@7.0.4: {} - serve-handler@6.1.6: + serve-handler@6.1.7: dependencies: bytes: 3.0.0 content-disposition: 0.5.2 @@ -28361,7 +27587,7 @@ snapshots: '@types/node': 17.0.45 '@types/sax': 1.2.7 arg: 5.0.2 - sax: 1.4.4 + sax: 1.6.0 skin-tone@2.0.0: dependencies: @@ -28731,6 +27957,11 @@ snapshots: dependencies: tailwindcss: 3.2.4(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/node@25.9.1)(typescript@5.5.4)) + tailwindcss-scoped-preflight@3.5.9(postcss@8.5.6)(tailwindcss@3.2.4(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/node@25.9.1)(typescript@5.5.4))): + dependencies: + postcss: 8.5.6 + tailwindcss: 3.2.4(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/node@25.9.1)(typescript@5.5.4)) + tailwindcss@3.2.4(postcss@8.5.14)(ts-node@10.9.2(@swc/core@1.15.13(@swc/helpers@0.5.21))(@types/node@20.19.9)(typescript@5.5.4)): dependencies: arg: 5.0.2 @@ -28844,17 +28075,6 @@ snapshots: type-fest: 0.16.0 unique-string: 2.0.0 - terser-webpack-plugin@5.3.14(@swc/core@1.15.13(@swc/helpers@0.5.21))(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))): - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - jest-worker: 27.5.1 - schema-utils: 4.3.3 - serialize-javascript: 7.0.4 - terser: 5.47.1 - webpack: 5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21)) - optionalDependencies: - '@swc/core': 1.15.13(@swc/helpers@0.5.21) - terser-webpack-plugin@5.3.16(@swc/core@1.15.13(@swc/helpers@0.5.21))(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))): dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -28883,8 +28103,6 @@ snapshots: dependencies: utrie: 1.0.2 - text-table@0.2.0: {} - thenify-all@1.6.0: dependencies: thenify: 3.3.1 @@ -28893,6 +28111,10 @@ snapshots: dependencies: any-promise: 1.3.0 + thingies@2.6.0(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + throttleit@1.0.1: {} through@2.3.8: {} @@ -28916,6 +28138,8 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 + tinypool@1.1.1: {} + tldts-core@6.1.86: {} tldts@6.1.86: @@ -28959,6 +28183,10 @@ snapshots: dependencies: punycode: 2.3.1 + tree-dump@1.1.0(tslib@2.8.1): + dependencies: + tslib: 2.8.1 + tree-kill@1.2.2: {} trim-lines@3.0.1: {} @@ -29010,6 +28238,10 @@ snapshots: tslib@2.8.1: {} + tsyringe@4.10.0: + dependencies: + tslib: 2.8.1 + tty-browserify@0.0.1: {} tunnel-agent@0.6.0: @@ -29439,20 +28671,25 @@ snapshots: - bufferutil - utf-8-validate - webpack-dev-middleware@5.3.4(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))): + webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))): dependencies: colorette: 2.0.20 - memfs: 3.5.3 - mime-types: 2.1.35 + memfs: 4.57.8(tslib@2.8.1) + mime-types: 3.0.2 + on-finished: 2.4.1 range-parser: 1.2.1 schema-utils: 4.3.3 + optionalDependencies: webpack: 5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21)) + transitivePeerDependencies: + - tslib - webpack-dev-server@4.15.2(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))): + webpack-dev-server@5.2.5(tslib@2.8.1)(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 '@types/express': 4.17.25 + '@types/express-serve-static-core': 4.19.8 '@types/serve-index': 1.9.4 '@types/serve-static': 1.15.10 '@types/sockjs': 0.3.36 @@ -29463,22 +28700,19 @@ snapshots: colorette: 2.0.20 compression: 1.8.1 connect-history-api-fallback: 2.0.0 - default-gateway: 6.0.3 express: 4.22.1 graceful-fs: 4.2.11 - html-entities: 2.6.0 http-proxy-middleware: 2.0.9(@types/express@4.17.25) ipaddr.js: 2.3.0 launch-editor: 2.13.1 - open: 8.4.2 - p-retry: 4.6.2 - rimraf: 3.0.2 + open: 10.2.0 + p-retry: 6.2.1 schema-utils: 4.3.3 - selfsigned: 2.4.1 + selfsigned: 5.5.0 serve-index: 1.9.2 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 5.3.4(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) + webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))) ws: 8.21.0 optionalDependencies: webpack: 5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21)) @@ -29486,6 +28720,7 @@ snapshots: - bufferutil - debug - supports-color + - tslib - utf-8-validate webpack-merge@5.10.0: @@ -29534,17 +28769,15 @@ snapshots: - esbuild - uglify-js - webpackbar@6.0.1(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))): + webpackbar@7.0.0(@rspack/core@1.7.11(@swc/helpers@0.5.21))(webpack@5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21))): dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 + ansis: 3.17.0 consola: 3.4.2 - figures: 3.2.0 - markdown-table: 2.0.0 pretty-time: 1.1.0 std-env: 3.10.0 + optionalDependencies: + '@rspack/core': 1.7.11(@swc/helpers@0.5.21) webpack: 5.105.0(@swc/core@1.15.13(@swc/helpers@0.5.21)) - wrap-ansi: 7.0.0 websocket-driver@0.7.4: dependencies: @@ -29616,10 +28849,6 @@ snapshots: gopd: 1.2.0 has-tostringtag: 1.0.2 - which@1.3.1: - dependencies: - isexe: 2.0.0 - which@2.0.2: dependencies: isexe: 2.0.0 @@ -29641,16 +28870,16 @@ snapshots: workbox-build@7.4.0(@types/babel__core@7.20.5): dependencies: - '@apideck/better-ajv-errors': 0.3.6(ajv@8.18.0) - '@babel/core': 7.28.0 - '@babel/preset-env': 7.29.5(@babel/core@7.28.0) - '@babel/runtime': 7.29.2 - '@rollup/plugin-babel': 5.3.1(@babel/core@7.28.0)(@types/babel__core@7.20.5)(rollup@2.80.0) + '@apideck/better-ajv-errors': 0.3.6(ajv@8.20.0) + '@babel/core': 7.29.7(supports-color@8.1.1) + '@babel/preset-env': 7.29.7(@babel/core@7.29.7(supports-color@8.1.1))(supports-color@8.1.1) + '@babel/runtime': 7.29.7 + '@rollup/plugin-babel': 5.3.1(@babel/core@7.29.7)(@types/babel__core@7.20.5)(rollup@2.80.0) '@rollup/plugin-node-resolve': 15.3.1(rollup@2.80.0) '@rollup/plugin-replace': 2.4.2(rollup@2.80.0) '@rollup/plugin-terser': 0.4.4(rollup@2.80.0) '@surma/rollup-plugin-off-main-thread': 2.2.3 - ajv: 8.18.0 + ajv: 8.20.0 common-tags: 1.8.2 fast-json-stable-stringify: 2.1.0 fs-extra: 9.1.0 @@ -29790,6 +29019,10 @@ snapshots: ws@8.21.0: {} + wsl-utils@0.1.0: + dependencies: + is-wsl: 3.1.1 + wslink@2.5.0: dependencies: '@msgpack/msgpack': 2.8.0 @@ -29798,7 +29031,7 @@ snapshots: xml-js@1.6.11: dependencies: - sax: 1.4.4 + sax: 1.6.0 xml-name-validator@4.0.0: {}