diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index ebeff245..a908e58f 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -19,6 +19,9 @@ jobs: - name: Setup Environment uses: nowely/action-setup-node@v1 + - name: Install Playwright Browsers + run: pnpm dlx playwright install --with-deps chromium + - name: Run Tests run: pnpm test diff --git a/.gitignore b/.gitignore index 341a9ddd..b6f65940 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,5 @@ dist coverage storybook-static package-lock.json -.pnpm-store/** \ No newline at end of file +.pnpm-store/** +.vitest-attachments/ \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index 318bb74e..7659dbc7 100644 --- a/.prettierignore +++ b/.prettierignore @@ -5,6 +5,8 @@ package.json # Build outputs dist/ coverage/ +packages/website/.vercel/ +packages/website/src/content/docs/ # Dependencies node_modules/ diff --git a/README.md b/README.md index 2a41db4c..4c9dc033 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ A React component that lets you combine editable text with any component using annotated text. -**[Documentation](https://markput.vercel.app)** **[Storybook](https://marked-input.vercel.app)** +**[Documentation](https://markput.vercel.app)** **[Storybook](https://marked-input.vercel.app)** ## Feature diff --git a/package.json b/package.json index 61337753..21c570bc 100644 --- a/package.json +++ b/package.json @@ -6,13 +6,11 @@ "pnpm": ">=9" }, "scripts": { - "dev": "pnpm -F app-react dev", + "dev": "pnpm -F @markput/react-app dev", "build": "pnpm -F rc-marked-input run build", "build:all": "pnpm -r run build", - "storybook:dev": "pnpm -F sb run dev", - "storybook:build": "pnpm -F sb run build", - "website:dev": "pnpm -F website run dev", - "website:build": "pnpm -F website run build", + "storybook:dev": "pnpm -F @markput/react-storybook run dev", + "website:dev": "pnpm -F @markput/website run dev", "clean:git": "git clean -xdf", "clean:git:dry": "git clean -xdn", "lint": "oxlint .", @@ -24,12 +22,11 @@ "test": "pnpm -r run test", "test:ui": "pnpm -r run test:ui", "test:watch": "pnpm -r run test:watch", - "test:integration": "pnpm -r run test:integration", - "test:coverage": "pnpm -r run test:coverage", + "test:coverage": "pnpm -r run coverage", "bench": "pnpm -r run bench", - "typecheck": "tsc --noEmit", - "use:local": "sed -i '' 's/\"rc-marked-input\": \"workspace:\\*\"/\"rc-marked-input\": \"file:..\\/markput\\/dist\"/g' packages/tests/package.json packages/storybook/package.json && pnpm install", - "use:workspace": "sed -i '' 's/\"rc-marked-input\": \"file:..\\\/markput\\\/dist\"/\"rc-marked-input\": \"workspace:*\"/g' packages/tests/package.json packages/storybook/package.json && pnpm install", + "typecheck": "tsc --noEmit && pnpm run -F @markput/website check", + "use:local": "sed -i '' 's/\"rc-marked-input\": \"workspace:\\*\"/\"rc-marked-input\": \"file:..\\/markput\\/dist\"/g' packages/storybook/package.json && pnpm install", + "use:workspace": "sed -i '' 's/\"rc-marked-input\": \"file:..\\/markput\\/dist\"/\"rc-marked-input\": \"workspace:*\"/g' packages/storybook/package.json && pnpm install", "preinstall": "npx only-allow pnpm", "publish": "pnpm -F rc-marked-input run publish" }, @@ -38,14 +35,14 @@ "react-dom": "catalog:" }, "devDependencies": { + "@microsoft/api-extractor": "^7.55.1", "@types/react": "catalog:", "@types/react-dom": "catalog:", - "@microsoft/api-extractor": "^7.55.0", "@vitejs/plugin-react-swc": "^4.2.2", - "oxlint": "^1.28.0", - "prettier": "3.6.2", - "typescript": "^5.9.2", - "vite": "^7.2.2", + "oxlint": "^1.31.0", + "prettier": "^3.7.4", + "typescript": "^5.9.3", + "vite": "^7.2.6", "vite-plugin-css-injected-by-js": "^3.5.2" } } diff --git a/packages/app/package.json b/packages/app/package.json index 46ae99a8..ba6c0959 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,5 +1,5 @@ { - "name": "app-react", + "name": "@markput/react-app", "version": "1.0.0", "description": "E2E test application for marked-input", "license": "MIT", @@ -10,6 +10,7 @@ "preview": "vite preview" }, "dependencies": { + "rc-marked-input": "workspace:*", "react": "catalog:", "react-dom": "catalog:" }, @@ -17,8 +18,8 @@ "@types/react": "catalog:", "@types/react-dom": "catalog:", "@vitejs/plugin-react-swc": "^4.2.2", - "typescript": "^5.9.2", - "vite": "^7.2.2" + "typescript": "^5.9.3", + "vite": "^7.2.6" }, "type": "module" } diff --git a/packages/app/src/index.tsx b/packages/app/src/index.tsx index dc733c26..318895b7 100644 --- a/packages/app/src/index.tsx +++ b/packages/app/src/index.tsx @@ -1,10 +1,92 @@ -import React from 'react' +import React, {useState} from 'react' import ReactDOM from 'react-dom/client' import './style.css' -import {Story} from '../../storybook/stories' +import {createMarkedInput, denote} from 'rc-marked-input' +import type {MarkToken, Markup} from 'rc-marked-input' + +const PrimaryMarkup: Markup = '@[__value__](primary:__meta__)' +const DefaultMarkup: Markup = '@[__value__](default:__meta__)' + +const Button = ({label, primary, onClick}: {label: string; primary?: boolean; onClick?: () => void}) => ( + +) + +const ConfiguredMarkedInput = createMarkedInput({ + Mark: Button, + options: [ + { + markup: PrimaryMarkup, + slotProps: { + mark: ({value, meta}) => ({label: value || '', primary: true, onClick: () => alert(meta)}), + overlay: { + trigger: '@', + data: ['First', 'Second', 'Third', 'Fourth', 'Fifth', 'Sixth'], + }, + }, + }, + { + markup: DefaultMarkup, + slotProps: { + mark: ({value}) => ({label: value || ''}), + overlay: { + trigger: '/', + data: ['Seventh', 'Eight', 'Ninth'], + }, + }, + }, + ], +}) + +const App = () => { + const [value, setValue] = useState( + "Enter the '@' for calling @[primary](primary:4) suggestions and '/' for @[default](default:7)!\n" + + 'Mark is can be a any component with any logic. In this example it is the @[Button](primary:54): clickable primary or secondary.\n' + + 'For found mark used @[annotations](default:123).' + ) + + const displayText = denote(value, (mark: MarkToken) => mark.value, [PrimaryMarkup, DefaultMarkup]) + + return ( + <> + console.log('onClick'), + onInput: () => console.log('onInput'), + onBlur: () => console.log('onBlur'), + onFocus: () => console.log('onFocus'), + onKeyDown: () => console.log('onKeyDown'), + }, + }} + /> + +
+ Plain text: +
{value}
+ Display text (denoted): +
{displayText}
+ + ) +} ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( - + ) diff --git a/packages/core/package.json b/packages/core/package.json index d039385e..f97d691b 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -9,6 +9,7 @@ "test:related": "vitest related", "test:ui": "vitest --ui", "test:coverage": "vitest run --coverage", + "coverage": "vitest run --coverage", "bench": "vitest bench --run" }, "module": "./index.ts", diff --git a/packages/core/src/features/parsing/README.md b/packages/core/src/features/parsing/README.md index 41af5340..173a087f 100644 --- a/packages/core/src/features/parsing/README.md +++ b/packages/core/src/features/parsing/README.md @@ -7,20 +7,20 @@ Purpose: Handles parsing of text values into tokens and annotations ### Running Benchmarks ```bash -# Запуск бенчмарков (результаты автоматически сохраняются в JSON) +# Run benchmarks (results are saved to JSON automatically) pnpm run bench -# Watch режим для разработки +# Watch mode for development pnpm -F core run test:bench:watch ``` -**Примечание:** Бенчмарки используют единый файл `parser.bench.ts`. Результаты автоматически сохраняются в `parser.bench.result.json` после каждого запуска. +**Note:** Benchmarks use the single file `parser.bench.ts`. Results are saved to `parser.bench.result.json` after each run. ### Benchmark Results Format -Результаты бенчмарков сохраняются в `parser.bench.result.json` с расширенными метриками производительности. +Benchmark results are stored in `parser.bench.result.json` with extended performance metrics. -#### Структура JSON +#### JSON structure ```json { @@ -56,63 +56,63 @@ pnpm -F core run test:bench:watch } ``` -#### Метрики +#### Metrics -Каждый тест включает следующие метрики: +Each test includes these metrics: **Operations (ops)** -- `avg` - среднее количество операций в секунду -- `min` - минимальное значение -- `max` - максимальное значение -- `p95` - 95-й перцентиль -- `p99` - 99-й перцентиль +- `avg` - average operations per second +- `min` - minimum +- `max` - maximum +- `p95` - 95th percentile +- `p99` - 99th percentile **Latency (latency)** -- Время выполнения одной операции в миллисекундах -- Те же статистики: avg, min, max, p95, p99 +- Execution time of one operation in milliseconds +- Same stats: avg, min, max, p95, p99 **Memory (memory)** -- `heapUsed` - используемая heap память в KB -- `external` - внешняя память в KB +- `heapUsed` - heap memory used (KB) +- `external` - external memory (KB) **Comparison** -- `ratio` - соотношение производительности v1/v2 -- `winner` - какой парсер быстрее -- `performanceGap` - разница в процентах -- `latencyDiff` - соотношение latency -- `memoryRatio` - соотношение потребления памяти +- `ratio` - performance ratio v1/v2 +- `winner` - which parser is faster +- `performanceGap` - percentage difference +- `latencyDiff` - latency ratio +- `memoryRatio` - memory usage ratio -#### Категории тестов +#### Test categories **scalability** -Тесты масштабируемости с различным количеством marks (10, 50, 100, 500) +Scalability tests with different counts of marks (10, 50, 100, 500) **realWorld** -Реальные сценарии использования: +Real-world scenarios: -- social media - посты с упоминаниями и хэштегами -- markdown-like - текст с markdown-подобной разметкой -- code comments - комментарии кода с аннотациями +- social media - posts with mentions and hashtags +- markdown-like - text with markdown-like markup +- code comments - code comments with annotations #### Trends -Автоматический анализ изменений производительности между запусками: +Automatic analysis of performance changes between runs: -- `changeFromLast` - процентное изменение с последнего запуска -- `regressions` - список тестов с деградацией производительности (>5%) +- `changeFromLast` - percent change since the last run +- `regressions` - list of tests with performance degradation (>5%) -#### Интерпретация результатов +#### How to read results -1. **Высокий ops** - больше операций в секунду = лучше -2. **Низкий latency** - меньше времени на операцию = лучше -3. **Низкий memory** - меньше потребление памяти = лучше -4. **p95/p99** - показывают стабильность производительности -5. **Regressions** - требуют внимания при наличии +1. **High ops** - more operations per second = better +2. **Low latency** - less time per operation = better +3. **Low memory** - lower memory usage = better +4. **p95/p99** - show performance stability +5. **Regressions** - need attention if present -### История результатов +### Results history -Файл `parser.bench.result.json` хранит последние 10 запусков бенчмарков для анализа трендов и выявления регрессий. +The file `parser.bench.result.json` stores the last 10 benchmark runs for trend analysis and regression detection. diff --git a/packages/core/src/features/parsing/parser.profile.bench.ts b/packages/core/src/features/parsing/parser.profile.bench.ts index 05a12ab9..6a17fbaa 100644 --- a/packages/core/src/features/parsing/parser.profile.bench.ts +++ b/packages/core/src/features/parsing/parser.profile.bench.ts @@ -154,14 +154,14 @@ function createProfilingResult(currentRun: ProfilingRun, comparison?: ProfilingC const testNames = Object.keys(currentRun.tests) const totalDuration = testNames.reduce((sum, name) => sum + currentRun.tests[name].duration, 0) - // Расчет performance delta на основе comparison + // Calculate performance delta based on the comparison let performanceDelta = '0.0%' if (comparison) { const avgChange = comparison.differences.reduce((sum, diff) => sum + diff.durationChangePercent, 0) / comparison.differences.length - // Инвертируем знак: положительное значение означает улучшение производительности + // Invert the sign: a positive value means performance improved const performanceValue = -avgChange performanceDelta = `${performanceValue >= 0 ? '+' : ''}${performanceValue.toFixed(1)}%` } diff --git a/packages/markput/src/types.ts b/packages/markput/src/types.ts index f6903aac..d12c33dd 100644 --- a/packages/markput/src/types.ts +++ b/packages/markput/src/types.ts @@ -71,8 +71,9 @@ export interface Option ex } } -export interface ConfiguredMarkedInput - extends FunctionComponent> {} +export interface ConfiguredMarkedInput extends FunctionComponent< + MarkedInputProps +> {} /** * Available slots for customizing MarkedInput internal components diff --git a/packages/storybook/main.ts b/packages/storybook/.storybook/main.ts similarity index 89% rename from packages/storybook/main.ts rename to packages/storybook/.storybook/main.ts index c0a4c100..c0db1118 100644 --- a/packages/storybook/main.ts +++ b/packages/storybook/.storybook/main.ts @@ -1,8 +1,8 @@ import type {StorybookConfig} from '@storybook/react-vite' const config: StorybookConfig = { - stories: ['./stories'], - staticDirs: ['./public'], + stories: ['../src/pages'], + staticDirs: ['../public'], addons: ['@storybook/addon-links', '@storybook/addon-docs'], framework: { name: '@storybook/react-vite', diff --git a/packages/storybook/preview.ts b/packages/storybook/.storybook/preview.ts similarity index 100% rename from packages/storybook/preview.ts rename to packages/storybook/.storybook/preview.ts diff --git a/packages/storybook/assets/withStyle.tsx b/packages/storybook/assets/withStyle.tsx deleted file mode 100644 index 6ce225a5..00000000 --- a/packages/storybook/assets/withStyle.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import {useInsertionEffect} from 'react' - -//TODO load css on startup -export const withStyle = (id: string) => (Story: any) => { - useStyleInsertion(id) - return -} - -const useStyleInsertion = (id: string) => - useInsertionEffect((): (() => void) => { - const link = document.getElementById(id) as HTMLLinkElement - - if (!link) throw new Error(`The style ${id} is not found!`) - - link.disabled = false - return () => (link.disabled = true) - }, []) diff --git a/packages/storybook/package.json b/packages/storybook/package.json index 9a212890..549ebc18 100644 --- a/packages/storybook/package.json +++ b/packages/storybook/package.json @@ -1,26 +1,39 @@ { - "name": "sb", + "name": "@markput/react-storybook", "private": true, "scripts": { - "dev": "storybook dev -p 6006 -c ./", - "build": "storybook build -c ./ -o ./dist" + "dev": "storybook dev", + "build": "storybook build -o ./dist", + "test": "vitest run", + "test:watch": "vitest", + "test:ui": "vitest --ui", + "coverage": "vitest run --coverage" }, "dependencies": { - "react": "catalog:", - "react-dom": "catalog:", "@emotion/react": "^11.14.0", "@emotion/styled": "^11.14.1", - "@mui/material": "^7.3.2", + "@faker-js/faker": "catalog:", + "@mui/material": "^7.3.6", "antd": "^5.28.1", "rc-marked-input": "workspace:*", + "react": "catalog:", + "react-dom": "catalog:", "rsuite": "^5.83.3" }, "devDependencies": { - "@storybook/addon-docs": "^10.0.7", - "@storybook/addon-links": "^10.0.7", - "@storybook/cli": "^10.0.7", - "@storybook/react-vite": "^10.0.7", - "storybook": "^10.0.7" + "@storybook/addon-docs": "^10.1.4", + "@storybook/addon-links": "^10.1.4", + "@storybook/cli": "^10.1.4", + "@storybook/react-vite": "^10.1.4", + "@types/node": "^24.10.1", + "@types/react": "catalog:", + "@types/react-dom": "catalog:", + "@vitest/browser-playwright": "^4.0.15", + "@vitest/coverage-v8": "catalog:", + "@vitest/ui": "catalog:", + "storybook": "^10.1.4", + "vitest": "catalog:", + "vitest-browser-react": "^2.0.2" }, "type": "module" } diff --git a/packages/storybook/preview-head.html b/packages/storybook/preview-head.html deleted file mode 100644 index 046d0fe3..00000000 --- a/packages/storybook/preview-head.html +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/packages/storybook/stories/Ant.stories.tsx b/packages/storybook/src/pages/Ant/Ant.stories.tsx similarity index 88% rename from packages/storybook/stories/Ant.stories.tsx rename to packages/storybook/src/pages/Ant/Ant.stories.tsx index 59e0805c..a5cefcc9 100644 --- a/packages/storybook/stories/Ant.stories.tsx +++ b/packages/storybook/src/pages/Ant/Ant.stories.tsx @@ -1,8 +1,8 @@ import {Tag} from 'antd' import {MarkedInput} from 'rc-marked-input' import {useState} from 'react' -import {Text} from '../assets/Text' -import {withStyle} from '../assets/withStyle' +import {Text} from '../../shared/components/Text' +import {withStyle} from '../../shared/lib/withStyle' export default { title: 'Styled/Ant', diff --git a/packages/storybook/src/pages/Base/Base.spec.tsx b/packages/storybook/src/pages/Base/Base.spec.tsx new file mode 100644 index 00000000..a11f9488 --- /dev/null +++ b/packages/storybook/src/pages/Base/Base.spec.tsx @@ -0,0 +1,123 @@ +import {render} from 'vitest-browser-react' +import {page, userEvent} from 'vitest/browser' +import {Focusable, Removable} from '../Dynamic/Dynamic.stories' +import {describe, expect, it} from 'vitest' +import {composeStories} from '@storybook/react-vite' +import * as BaseStories from './Base.stories' +import {focusAtEnd, focusAtStart} from '../../shared/lib/focus' + +//createVisualTests(BaseStories) + +const {Default} = composeStories(BaseStories) + +describe(`Component: MarkedInput`, () => { + it.todo('should set readOnly on selection') + + //TODO mark focus + + it('should correct process an annotation type', async () => { + const {container} = await render() + const [span] = container.querySelectorAll('span') + + await expect.element(span).toHaveTextContent('') + + await userEvent.type(span, '@[[mark](1)') + + await expect.element(page.getByText('@[mark](1)')).not.toBeInTheDocument() + await expect.element(page.getByText('mark')).toBeInTheDocument() + }) + + it.todo('should support ref focusing target', async () => { + const {container} = await render() + const [firstSpan, secondSpan] = container.querySelectorAll('span') + const [firstAbbr] = container.querySelectorAll('abbr') + const firstSpanLength = firstSpan.textContent?.length ?? 0 + const firstAbbrLength = firstAbbr.textContent?.length ?? 0 + + await focusAtStart(firstSpan) + + await userEvent.keyboard(`{ArrowRight>${firstSpanLength + 1}/}`) + await expect.element(firstAbbr).toHaveFocus() + + await userEvent.keyboard(`{ArrowLeft>1/}`) + await expect.element(firstSpan).toHaveFocus() + + await userEvent.keyboard(`{ArrowRight>1/}`) + await expect.element(firstAbbr).toHaveFocus() + + await userEvent.keyboard(`{ArrowRight>${firstAbbrLength + 1}/}`) + await expect.element(secondSpan).toHaveFocus() + + await userEvent.keyboard(`{ArrowLeft>1/}`) + await expect.element(firstAbbr).toHaveFocus() + }) + + it('should support remove itself', async () => { + await render() + + let mark = page.getByText('contain') + await userEvent.click(mark) + await expect.element(page.getByText('contain')).not.toBeInTheDocument() + + mark = page.getByText('marks') + await userEvent.click(mark) + await expect.element(page.getByText('marks')).not.toBeInTheDocument() + }) + + it('should support editable marks', async () => { + await render() + + const worldElement = page.getByText('world').first().element() as HTMLElement + await focusAtEnd(worldElement) + await userEvent.keyboard('123') + + await expect.element(page.getByText('world123').first()).toBeInTheDocument() + await expect.element(page.getByText(/@\[world123]\(Hello! Hello!\)/)).toBeInTheDocument() + }) + + // TODO: user.pointer with offset is not available in vitest/browser. + // Need to rewrite using native Selection API for text selection testing. + it.todo('should be selectable', async () => { + //const {container} = await render() + //const selection = window.getSelection()! + //expect(selection).not.toBeNull() + // await user.pointer([{target: container, offset: 0, keys: '[MouseLeft>]'}, {offset: 8}]) + // expect(selection.toString(), 'Outer div to cross inner mark').toBe(container.textContent?.slice(0, 8)) + //const MarkedText = container.firstElementChild! + //const [span1, mark, span2] = MarkedText.children + // await user.pointer([ + // {target: span1, offset: 0, keys: '[MouseLeft>]'}, + // {target: mark, offset: 2}, + // ]) + // expect(selection.toString(), 'To mark from the start').toBe(container.textContent?.slice(0, 8)) + // await user.pointer([ + // {target: span2, keys: '[MouseLeft>]'}, + // {target: mark, offset: 2}, + // ]) + // expect(selection.toString(), 'To mark from the end').toBe(container.textContent?.slice(8)) + // await user.pointer([ + // {target: span1, keys: '[MouseLeft>]'}, + // {target: mark, offset: 2}, + // ]) + // expect(selection.toString(), 'To mark from before it').toBe(container.textContent?.slice(6, 8)) + // await user.pointer([ + // {target: span2, offset: 0, keys: '[MouseLeft>]'}, + // {target: mark, offset: 2}, + // ]) + // expect(selection.toString(), 'To mark from after it').toBe(container.textContent?.slice(8, 10)) + // await user.pointer([ + // {target: mark, offset: 2, keys: '[MouseLeft>]'}, + // {target: span1, offset: 2}, + // ]) + // expect(selection.toString(), 'To span 1 from mark').toBe(container.textContent?.slice(2, 8)) + // await user.pointer([ + // {target: mark, offset: 2, keys: '[MouseLeft>]'}, + // {target: span2, offset: 1}, + // ]) + // expect(selection.toString(), 'To span 2 from mark').toBe(container.textContent?.slice(8)) + // await user.pointer([{target: span1, offset: 2, keys: '[MouseLeft>]'}, {offset: 4}, {offset: 2}]) + // expect(selection.isCollapsed).toBeTruthy() + //await userEvent.keyboard('abc') + //await expect.element(span1, 'Span stay editable after collapse inner selection').toHaveTextContent(/abc/) + }) +}) diff --git a/packages/storybook/stories/Base.stories.tsx b/packages/storybook/src/pages/Base/Base.stories.tsx similarity index 96% rename from packages/storybook/stories/Base.stories.tsx rename to packages/storybook/src/pages/Base/Base.stories.tsx index 6e24da06..349a71ab 100644 --- a/packages/storybook/stories/Base.stories.tsx +++ b/packages/storybook/src/pages/Base/Base.stories.tsx @@ -2,8 +2,8 @@ import type {Meta, StoryObj} from '@storybook/react-vite' import {MarkedInput, createMarkedInput, denote} from 'rc-marked-input' import type {MarkToken, Markup} from 'rc-marked-input' import {useState} from 'react' -import {Button} from '../assets/Button' -import {Text} from '../assets/Text' +import {Button} from '../../shared/components/Button' +import {Text} from '../../shared/components/Text' export default { title: 'MarkedInput', diff --git a/packages/tests/integrations/MarkedInputHandler.spec.tsx b/packages/storybook/src/pages/Base/MarkedInputHandler.spec.tsx similarity index 73% rename from packages/tests/integrations/MarkedInputHandler.spec.tsx rename to packages/storybook/src/pages/Base/MarkedInputHandler.spec.tsx index 1bce3f90..d27553ac 100644 --- a/packages/tests/integrations/MarkedInputHandler.spec.tsx +++ b/packages/storybook/src/pages/Base/MarkedInputHandler.spec.tsx @@ -1,10 +1,10 @@ -import '@testing-library/jest-dom' -import {render} from '@testing-library/react' +import {render} from 'vitest-browser-react' import {describe, expect, it} from 'vitest' import type {MarkedInputHandler} from 'rc-marked-input' -import {Story} from '../../storybook/stories' +import {composeStories} from '@storybook/react-vite' +import * as BaseStories from './Base.stories' -const {Default} = Story.Base +const {Default} = composeStories(BaseStories) type UseMarkedInputHandler = { value: MarkedInputHandler | null @@ -25,7 +25,7 @@ describe('API: MarkedInputHandler', () => { it('should support the ref prop for accessing component handler', async () => { const handler = useMarkedInputHandler() - render() + await render() expect(handler.value?.container).not.toBeNull() }) diff --git a/packages/storybook/src/pages/Base/createMarkedInput.spec.tsx b/packages/storybook/src/pages/Base/createMarkedInput.spec.tsx new file mode 100644 index 00000000..8a63d0e5 --- /dev/null +++ b/packages/storybook/src/pages/Base/createMarkedInput.spec.tsx @@ -0,0 +1,40 @@ +import {render} from 'vitest-browser-react' +import {page, userEvent} from 'vitest/browser' +import type {MarkedInputHandler} from 'rc-marked-input' +import {createMarkedInput} from 'rc-marked-input' +import {forwardRef} from 'react' +import {describe, expect, it} from 'vitest' +import {composeStories} from '@storybook/react-vite' +import * as BaseStories from './Base.stories' + +const {Configured} = composeStories(BaseStories) + +describe(`Utility: createMarkedInput`, () => { + it('should render', async () => { + const {container} = await render() + await expect.element(container).toBeInTheDocument() + }) + + it.todo('should support to pass a forward overlay', async () => { + const Overlay = forwardRef(() => I'm here!) + const Input = createMarkedInput({Mark: () => null, Overlay}) + + await render() + const span = page.getByText(/hello/i) + await userEvent.click(span) + await userEvent.keyboard('{ArrowRight}') + await expect.element(span).toHaveFocus() + + await expect.element(page.getByText("I'm here!")).toBeInTheDocument() + }) + + it('should to support the ref prop', async () => { + const Input = createMarkedInput({}) + let ref: MarkedInputHandler | null = null + + await render( (ref = el)} value={''} onChange={() => ({})} />) + + //@ts-expect-error - TODO ref is not typed correctly + expect(ref?.container).not.toBeNull() + }) +}) diff --git a/packages/storybook/src/pages/Base/keyboard.spec.tsx b/packages/storybook/src/pages/Base/keyboard.spec.tsx new file mode 100644 index 00000000..5faadaaf --- /dev/null +++ b/packages/storybook/src/pages/Base/keyboard.spec.tsx @@ -0,0 +1,89 @@ +import {render} from 'vitest-browser-react' +import {page, userEvent} from 'vitest/browser' +import {describe, expect, it} from 'vitest' +import {composeStories} from '@storybook/react-vite' +import * as BaseStories from './Base.stories' +import {focusAtEnd, focusAtStart} from '../../shared/lib/focus' + +const {Default} = composeStories(BaseStories) + +describe('Api: keyboard', () => { + it.todo('should support the "Backspace" button', async () => { + await render() + + const tailSpan = page.getByText('!').element() as HTMLElement + await focusAtEnd(tailSpan) + + //Remove last span + await userEvent.keyboard('{Backspace}') + await expect.element(tailSpan).toHaveTextContent('') + + //Remove mark + const mark = page.getByText(/mark/) + await expect.element(mark).toBeInTheDocument() + await userEvent.keyboard('{Backspace}') + await expect.element(mark).not.toBeInTheDocument() + await expect.element(tailSpan).not.toBeInTheDocument() + + // Remove first span + const headSpan = page.getByText(/Hello/).element() as HTMLElement + await focusAtStart(headSpan) + await expect.element(headSpan).toHaveTextContent('Hello') + await expect.element(headSpan).toHaveFocus() + await userEvent.keyboard('{Backspace>7/}') + expect(headSpan.textContent).toBe('') + }) + + it('should support the "Delete" button', async () => { + await render() + + const firstSpan = page.getByText(/Hello/).element() as HTMLElement + await focusAtStart(firstSpan) + + await userEvent.keyboard('{Delete>6/}') + await expect.element(firstSpan).toHaveTextContent('') + + const mark = page.getByText(/mark/) + await expect.element(mark).toBeInTheDocument() + await userEvent.keyboard('{Delete}') + await expect.element(mark).not.toBeInTheDocument() + await expect.element(firstSpan).not.toBeInTheDocument() + + const secondSpan = page.getByText('!').element() as HTMLElement + await expect.element(secondSpan).toHaveFocus() + await expect.element(secondSpan).toHaveTextContent('!') + await userEvent.keyboard('{Delete>2/}') + await expect.element(secondSpan).toHaveTextContent('') + }) + + it('should support focus navigation between spans', async () => { + await render() + + const firstSpan = page.getByText(/Hello/).element() as HTMLElement + await focusAtStart(firstSpan) + + const secondSpan = page.getByText('!').element() as HTMLElement + const firstSpanLength = firstSpan.textContent?.length ?? 0 + await userEvent.keyboard(`{ArrowRight>${firstSpanLength + 1}/}`) + await expect.element(secondSpan).toHaveFocus() + + await userEvent.keyboard(`{ArrowLeft>1/}`) + await expect.element(firstSpan).toHaveFocus() + }) + + //TODO not working + it.todo('should select all text with keyboard shortcut "Ctrl+A"', async () => { + const {container} = await render() + const [span] = container.querySelectorAll('span') + + await focusAtStart(span) + + expect(window.getSelection()?.toString()).toBe('') + + await userEvent.type(span, '{Control>}a{/Control}') + expect(window.getSelection()?.toString()).toBe(container.textContent) + + await userEvent.type(span, '{Control>}A{/Control}') + expect(window.getSelection()?.toString()).toBe(container.textContent) + }) +}) diff --git a/packages/storybook/stories/Dynamic.stories.tsx b/packages/storybook/src/pages/Dynamic/Dynamic.stories.tsx similarity index 98% rename from packages/storybook/stories/Dynamic.stories.tsx rename to packages/storybook/src/pages/Dynamic/Dynamic.stories.tsx index f8d1c63b..50ec4067 100644 --- a/packages/storybook/stories/Dynamic.stories.tsx +++ b/packages/storybook/src/pages/Dynamic/Dynamic.stories.tsx @@ -1,6 +1,6 @@ import {MarkedInput, useMark} from 'rc-marked-input' import {useEffect, useState} from 'react' -import {Text} from '../assets/Text' +import {Text} from '../../shared/components/Text' export default { title: 'MarkedInput/Mark', diff --git a/packages/storybook/stories/experimental/SingleContentEditable.stories.tsx b/packages/storybook/src/pages/Experimental/Experimental.stories.tsx similarity index 89% rename from packages/storybook/stories/experimental/SingleContentEditable.stories.tsx rename to packages/storybook/src/pages/Experimental/Experimental.stories.tsx index 0041d7b5..d425040b 100644 --- a/packages/storybook/stories/experimental/SingleContentEditable.stories.tsx +++ b/packages/storybook/src/pages/Experimental/Experimental.stories.tsx @@ -1,10 +1,11 @@ import type {Meta, StoryObj} from '@storybook/react-vite' import {MarkedInput} from 'rc-marked-input' import {useState} from 'react' -import {Text} from '../../assets/Text' -import {SingleEditableControlled} from './SingleEditableControlled' -import {SingleEditableUncontrolled} from './SingleEditableUncontrolled' -import {SingleEditableMarkdown} from './SingleEditableMarkdown' + +import {SingleEditableControlled} from './components/SingleEditableControlled' +import {SingleEditableUncontrolled} from './components/SingleEditableUncontrolled' +import {SingleEditableMarkdown} from './components/SingleEditableMarkdown' +import {Text} from '../../shared/components/Text' export default { title: 'Experimental/Single ContentEditable', diff --git a/packages/storybook/stories/experimental/SingleEditableControlled/SingleEditableControlled.tsx b/packages/storybook/src/pages/Experimental/components/SingleEditableControlled/SingleEditableControlled.tsx similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableControlled/SingleEditableControlled.tsx rename to packages/storybook/src/pages/Experimental/components/SingleEditableControlled/SingleEditableControlled.tsx diff --git a/packages/storybook/stories/experimental/SingleEditableControlled/components/CustomContainer.tsx b/packages/storybook/src/pages/Experimental/components/SingleEditableControlled/components/CustomContainer.tsx similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableControlled/components/CustomContainer.tsx rename to packages/storybook/src/pages/Experimental/components/SingleEditableControlled/components/CustomContainer.tsx diff --git a/packages/storybook/stories/experimental/SingleEditableControlled/components/HTMLMark.tsx b/packages/storybook/src/pages/Experimental/components/SingleEditableControlled/components/HTMLMark.tsx similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableControlled/components/HTMLMark.tsx rename to packages/storybook/src/pages/Experimental/components/SingleEditableControlled/components/HTMLMark.tsx diff --git a/packages/storybook/stories/experimental/SingleEditableControlled/components/PlainTextSpan.tsx b/packages/storybook/src/pages/Experimental/components/SingleEditableControlled/components/PlainTextSpan.tsx similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableControlled/components/PlainTextSpan.tsx rename to packages/storybook/src/pages/Experimental/components/SingleEditableControlled/components/PlainTextSpan.tsx diff --git a/packages/storybook/stories/experimental/SingleEditableControlled/components/index.ts b/packages/storybook/src/pages/Experimental/components/SingleEditableControlled/components/index.ts similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableControlled/components/index.ts rename to packages/storybook/src/pages/Experimental/components/SingleEditableControlled/components/index.ts diff --git a/packages/storybook/stories/experimental/SingleEditableControlled/index.ts b/packages/storybook/src/pages/Experimental/components/SingleEditableControlled/index.ts similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableControlled/index.ts rename to packages/storybook/src/pages/Experimental/components/SingleEditableControlled/index.ts diff --git a/packages/storybook/stories/experimental/SingleEditableControlled/utils/htmlToPlainText.ts b/packages/storybook/src/pages/Experimental/components/SingleEditableControlled/utils/htmlToPlainText.ts similarity index 97% rename from packages/storybook/stories/experimental/SingleEditableControlled/utils/htmlToPlainText.ts rename to packages/storybook/src/pages/Experimental/components/SingleEditableControlled/utils/htmlToPlainText.ts index 96ba4d9f..2ff3af80 100644 --- a/packages/storybook/stories/experimental/SingleEditableControlled/utils/htmlToPlainText.ts +++ b/packages/storybook/src/pages/Experimental/components/SingleEditableControlled/utils/htmlToPlainText.ts @@ -3,7 +3,7 @@ * * This function walks through DOM nodes and reconstructs the original text format: * - Text nodes → plain text - * - elements → @[value](meta) format + * - elements → `@[value](meta)` format * - Nested content → recursive processing * * @param html - innerHTML from the contentEditable container diff --git a/packages/storybook/stories/experimental/SingleEditableControlled/utils/index.ts b/packages/storybook/src/pages/Experimental/components/SingleEditableControlled/utils/index.ts similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableControlled/utils/index.ts rename to packages/storybook/src/pages/Experimental/components/SingleEditableControlled/utils/index.ts diff --git a/packages/storybook/stories/experimental/SingleEditableMarkdown/SingleEditableMarkdown.tsx b/packages/storybook/src/pages/Experimental/components/SingleEditableMarkdown/SingleEditableMarkdown.tsx similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableMarkdown/SingleEditableMarkdown.tsx rename to packages/storybook/src/pages/Experimental/components/SingleEditableMarkdown/SingleEditableMarkdown.tsx diff --git a/packages/storybook/stories/experimental/SingleEditableMarkdown/components/MarkdownContainer.tsx b/packages/storybook/src/pages/Experimental/components/SingleEditableMarkdown/components/MarkdownContainer.tsx similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableMarkdown/components/MarkdownContainer.tsx rename to packages/storybook/src/pages/Experimental/components/SingleEditableMarkdown/components/MarkdownContainer.tsx diff --git a/packages/storybook/stories/experimental/SingleEditableMarkdown/components/MarkdownMark.tsx b/packages/storybook/src/pages/Experimental/components/SingleEditableMarkdown/components/MarkdownMark.tsx similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableMarkdown/components/MarkdownMark.tsx rename to packages/storybook/src/pages/Experimental/components/SingleEditableMarkdown/components/MarkdownMark.tsx diff --git a/packages/storybook/stories/experimental/SingleEditableMarkdown/components/MarkdownText.tsx b/packages/storybook/src/pages/Experimental/components/SingleEditableMarkdown/components/MarkdownText.tsx similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableMarkdown/components/MarkdownText.tsx rename to packages/storybook/src/pages/Experimental/components/SingleEditableMarkdown/components/MarkdownText.tsx diff --git a/packages/storybook/stories/experimental/SingleEditableMarkdown/components/index.ts b/packages/storybook/src/pages/Experimental/components/SingleEditableMarkdown/components/index.ts similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableMarkdown/components/index.ts rename to packages/storybook/src/pages/Experimental/components/SingleEditableMarkdown/components/index.ts diff --git a/packages/storybook/stories/experimental/SingleEditableMarkdown/index.ts b/packages/storybook/src/pages/Experimental/components/SingleEditableMarkdown/index.ts similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableMarkdown/index.ts rename to packages/storybook/src/pages/Experimental/components/SingleEditableMarkdown/index.ts diff --git a/packages/storybook/stories/experimental/SingleEditableMarkdown/utils/htmlToMarkdown.ts b/packages/storybook/src/pages/Experimental/components/SingleEditableMarkdown/utils/htmlToMarkdown.ts similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableMarkdown/utils/htmlToMarkdown.ts rename to packages/storybook/src/pages/Experimental/components/SingleEditableMarkdown/utils/htmlToMarkdown.ts diff --git a/packages/storybook/stories/experimental/SingleEditableMarkdown/utils/index.ts b/packages/storybook/src/pages/Experimental/components/SingleEditableMarkdown/utils/index.ts similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableMarkdown/utils/index.ts rename to packages/storybook/src/pages/Experimental/components/SingleEditableMarkdown/utils/index.ts diff --git a/packages/storybook/stories/experimental/SingleEditableMarkdown/utils/markdownToHtml.ts b/packages/storybook/src/pages/Experimental/components/SingleEditableMarkdown/utils/markdownToHtml.ts similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableMarkdown/utils/markdownToHtml.ts rename to packages/storybook/src/pages/Experimental/components/SingleEditableMarkdown/utils/markdownToHtml.ts diff --git a/packages/storybook/stories/experimental/SingleEditableUncontrolled/SingleEditableUncontrolled.tsx b/packages/storybook/src/pages/Experimental/components/SingleEditableUncontrolled/SingleEditableUncontrolled.tsx similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableUncontrolled/SingleEditableUncontrolled.tsx rename to packages/storybook/src/pages/Experimental/components/SingleEditableUncontrolled/SingleEditableUncontrolled.tsx diff --git a/packages/storybook/stories/experimental/SingleEditableUncontrolled/components/CustomContainer.tsx b/packages/storybook/src/pages/Experimental/components/SingleEditableUncontrolled/components/CustomContainer.tsx similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableUncontrolled/components/CustomContainer.tsx rename to packages/storybook/src/pages/Experimental/components/SingleEditableUncontrolled/components/CustomContainer.tsx diff --git a/packages/storybook/stories/experimental/SingleEditableUncontrolled/components/HTMLMark.tsx b/packages/storybook/src/pages/Experimental/components/SingleEditableUncontrolled/components/HTMLMark.tsx similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableUncontrolled/components/HTMLMark.tsx rename to packages/storybook/src/pages/Experimental/components/SingleEditableUncontrolled/components/HTMLMark.tsx diff --git a/packages/storybook/stories/experimental/SingleEditableUncontrolled/components/PlainTextSpan.tsx b/packages/storybook/src/pages/Experimental/components/SingleEditableUncontrolled/components/PlainTextSpan.tsx similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableUncontrolled/components/PlainTextSpan.tsx rename to packages/storybook/src/pages/Experimental/components/SingleEditableUncontrolled/components/PlainTextSpan.tsx diff --git a/packages/storybook/stories/experimental/SingleEditableUncontrolled/components/index.ts b/packages/storybook/src/pages/Experimental/components/SingleEditableUncontrolled/components/index.ts similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableUncontrolled/components/index.ts rename to packages/storybook/src/pages/Experimental/components/SingleEditableUncontrolled/components/index.ts diff --git a/packages/storybook/stories/experimental/SingleEditableUncontrolled/index.ts b/packages/storybook/src/pages/Experimental/components/SingleEditableUncontrolled/index.ts similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableUncontrolled/index.ts rename to packages/storybook/src/pages/Experimental/components/SingleEditableUncontrolled/index.ts diff --git a/packages/storybook/stories/experimental/SingleEditableUncontrolled/utils/htmlToPlainText.ts b/packages/storybook/src/pages/Experimental/components/SingleEditableUncontrolled/utils/htmlToPlainText.ts similarity index 97% rename from packages/storybook/stories/experimental/SingleEditableUncontrolled/utils/htmlToPlainText.ts rename to packages/storybook/src/pages/Experimental/components/SingleEditableUncontrolled/utils/htmlToPlainText.ts index 96ba4d9f..2ff3af80 100644 --- a/packages/storybook/stories/experimental/SingleEditableUncontrolled/utils/htmlToPlainText.ts +++ b/packages/storybook/src/pages/Experimental/components/SingleEditableUncontrolled/utils/htmlToPlainText.ts @@ -3,7 +3,7 @@ * * This function walks through DOM nodes and reconstructs the original text format: * - Text nodes → plain text - * - elements → @[value](meta) format + * - elements → `@[value](meta)` format * - Nested content → recursive processing * * @param html - innerHTML from the contentEditable container diff --git a/packages/storybook/stories/experimental/SingleEditableUncontrolled/utils/index.ts b/packages/storybook/src/pages/Experimental/components/SingleEditableUncontrolled/utils/index.ts similarity index 100% rename from packages/storybook/stories/experimental/SingleEditableUncontrolled/utils/index.ts rename to packages/storybook/src/pages/Experimental/components/SingleEditableUncontrolled/utils/index.ts diff --git a/packages/storybook/stories/Material.stories.tsx b/packages/storybook/src/pages/Material/Material.stories.tsx similarity index 94% rename from packages/storybook/stories/Material.stories.tsx rename to packages/storybook/src/pages/Material/Material.stories.tsx index 90ddf35d..c98f6dcb 100644 --- a/packages/storybook/stories/Material.stories.tsx +++ b/packages/storybook/src/pages/Material/Material.stories.tsx @@ -2,8 +2,8 @@ import {Chip, Input} from '@mui/material' import type {MarkToken} from 'rc-marked-input' import {MarkedInput} from 'rc-marked-input' import {useState} from 'react' -import {MaterialMentions} from '../assets/MaterialMentions' -import {Text} from '../assets/Text' +import {MaterialMentions} from '../../shared/components/MaterialMentions' +import {Text} from '../../shared/components/Text' export default { title: 'Styled/Material', diff --git a/packages/storybook/stories/MarkdownOptions.ts b/packages/storybook/src/pages/Nested/MarkdownOptions.ts similarity index 100% rename from packages/storybook/stories/MarkdownOptions.ts rename to packages/storybook/src/pages/Nested/MarkdownOptions.ts diff --git a/packages/storybook/stories/Nested.stories.tsx b/packages/storybook/src/pages/Nested/Nested.stories.tsx similarity index 99% rename from packages/storybook/stories/Nested.stories.tsx rename to packages/storybook/src/pages/Nested/Nested.stories.tsx index d9addaed..cd8bcab9 100644 --- a/packages/storybook/stories/Nested.stories.tsx +++ b/packages/storybook/src/pages/Nested/Nested.stories.tsx @@ -3,8 +3,8 @@ import {MarkedInput, createMarkedInput, useMark} from 'rc-marked-input' import type {MarkToken, Markup} from 'rc-marked-input' import type {ReactNode} from 'react' import {useState} from 'react' -import {Text} from '../assets/Text' -import {useTab} from '../assets/Tabs' +import {Text} from '../../shared/components/Text' +import {useTab} from '../../shared/components/Tabs' import {markdownOptions as MarkdownOptions} from './MarkdownOptions' export default { @@ -365,7 +365,6 @@ Visit our [documentation](https://docs.example.com) for more details. const HtmlDocMark = ({children, value, nested}: {value?: string; children?: ReactNode; nested?: string}) => { const tagName = value?.toLowerCase() || 'span' - // Стили для разных HTML тегов const tagStyles: Record = { div: { display: 'block', diff --git a/packages/tests/integrations/nested.spec.tsx b/packages/storybook/src/pages/Nested/nested.spec.tsx similarity index 62% rename from packages/tests/integrations/nested.spec.tsx rename to packages/storybook/src/pages/Nested/nested.spec.tsx index aa3fc31b..7b78e765 100644 --- a/packages/tests/integrations/nested.spec.tsx +++ b/packages/storybook/src/pages/Nested/nested.spec.tsx @@ -1,5 +1,5 @@ -import '@testing-library/jest-dom' -import {render, screen} from '@testing-library/react' +import {render} from 'vitest-browser-react' +import {page} from 'vitest/browser' import {MarkedInput, useMark} from 'rc-marked-input' import type {Markup} from 'rc-marked-input' import type {ReactNode} from 'react' @@ -16,50 +16,50 @@ describe('Nested Marks Rendering', () => { ) } - it('should render simple nested marks', () => { + it('should render simple nested marks', async () => { const markup: Markup = '@[__nested__]' const value = '@[outer @[inner]]' - render() + await render() - const outerMark = screen.getByTestId('mark-depth-0') - const innerMark = screen.getByTestId('mark-depth-1') + const outerMark = page.getByTestId('mark-depth-0') + const innerMark = page.getByTestId('mark-depth-1') - expect(outerMark).toBeInTheDocument() - expect(innerMark).toBeInTheDocument() - expect(outerMark.getAttribute('data-has-children')).toBe('true') - expect(innerMark.getAttribute('data-has-children')).toBe('false') + await expect.element(outerMark).toBeInTheDocument() + await expect.element(innerMark).toBeInTheDocument() + expect(outerMark.element().getAttribute('data-has-children')).toBe('true') + expect(innerMark.element().getAttribute('data-has-children')).toBe('false') }) - it('should render multiple nesting levels', () => { + it('should render multiple nesting levels', async () => { const markup: Markup = '@[__nested__]' const value = '@[level0 @[level1 @[level2]]]' - render() + await render() - const level0 = screen.getByTestId('mark-depth-0') - const level1 = screen.getByTestId('mark-depth-1') - const level2 = screen.getByTestId('mark-depth-2') + const level0 = page.getByTestId('mark-depth-0') + const level1 = page.getByTestId('mark-depth-1') + const level2 = page.getByTestId('mark-depth-2') - expect(level0).toBeInTheDocument() - expect(level1).toBeInTheDocument() - expect(level2).toBeInTheDocument() + await expect.element(level0).toBeInTheDocument() + await expect.element(level1).toBeInTheDocument() + await expect.element(level2).toBeInTheDocument() }) - it('should render multiple nested marks at same level', () => { + it('should render multiple nested marks at same level', async () => { const markup: Markup = '@[__nested__]' const value = '@[outer @[first] and @[second]]' - render() + await render() - const outerMark = screen.getByTestId('mark-depth-0') - const nestedMarks = screen.getAllByTestId('mark-depth-1') + const outerMark = page.getByTestId('mark-depth-0') + const nestedMarks = page.getByTestId('mark-depth-1').all() - expect(outerMark).toBeInTheDocument() + await expect.element(outerMark).toBeInTheDocument() expect(nestedMarks).toHaveLength(2) }) - it('should render different markup types nested', () => { + it('should render different markup types nested', async () => { const TagMark = ({children}: {value?: string; children?: ReactNode}) => { const mark = useMark() const isTag = mark.label.startsWith('#') @@ -85,26 +85,26 @@ describe('Nested Marks Rendering', () => { /> ) - const tagMark = screen.getByTestId('tag-mark') - const mentionMark = screen.getByTestId('mention-mark') + const tagMark = page.getByTestId('tag-mark') + const mentionMark = page.getByTestId('mention-mark') - expect(tagMark).toBeInTheDocument() - expect(mentionMark).toBeInTheDocument() - expect(tagMark.getAttribute('data-depth')).toBe('0') - expect(mentionMark.getAttribute('data-depth')).toBe('1') + await expect.element(tagMark).toBeInTheDocument() + await expect.element(mentionMark).toBeInTheDocument() + expect(tagMark.element().getAttribute('data-depth')).toBe('0') + expect(mentionMark.element().getAttribute('data-depth')).toBe('1') }) - it('should handle empty nested marks', () => { + it('should handle empty nested marks', async () => { const markup: Markup = '@[__nested__]' const value = '@[@[]]' - render() + await render() - const marks = screen.getAllByTestId(/mark-depth-/) + const marks = page.getByTestId(/mark-depth-/).all() expect(marks).toHaveLength(2) }) - it('should pass children to Mark component for nested content', () => { + it('should pass children to Mark component for nested content', async () => { let hasChildrenAtDepthZero = false const CapturingMark = ({children}: {value?: string; children?: ReactNode}) => { @@ -125,7 +125,7 @@ describe('Nested Marks Rendering', () => { const markup: Markup = '@[__nested__]' const value = '@[before @[nested] after]' - const {container} = render() + const {container} = await render() // With children and value rendered, all text should be visible expect(container.textContent).toContain('before') @@ -137,7 +137,7 @@ describe('Nested Marks Rendering', () => { }) describe('Nested Marks Tree Navigation', () => { - it('should provide correct depth information', () => { + it('should provide correct depth information', async () => { const DepthMark = ({children}: {value?: string; children?: ReactNode}) => { const mark = useMark() return {children} @@ -146,14 +146,14 @@ describe('Nested Marks Tree Navigation', () => { const markup: Markup = '@[__nested__]' const value = '@[d0 @[d1 @[d2]]]' - const {container} = render() + const {container} = await render() const depths = Array.from(container.querySelectorAll('[data-depth]')).map(el => el.getAttribute('data-depth')) expect(depths).toEqual(['0', '1', '2']) }) - it('should provide hasChildren information', () => { + it('should provide hasChildren information', async () => { const ChildrenMark = ({children}: {value?: string; children?: ReactNode}) => { const mark = useMark() return {children} @@ -162,7 +162,7 @@ describe('Nested Marks Tree Navigation', () => { const markup: Markup = '@[__nested__]' const value = '@[parent @[child]]' - const {container} = render() + const {container} = await render() const elements = Array.from(container.querySelectorAll('[data-has-children]')) const hasChildrenValues = elements.map(el => el.getAttribute('data-has-children')) @@ -170,7 +170,7 @@ describe('Nested Marks Tree Navigation', () => { expect(hasChildrenValues).toEqual(['true', 'false']) }) - it('should provide children array', () => { + it('should provide children array', async () => { let capturedChildrenCount = 0 const ChildrenCountMark = ({children}: {value?: string; children?: ReactNode}) => { @@ -184,7 +184,7 @@ describe('Nested Marks Tree Navigation', () => { const markup: Markup = '@[__nested__]' const value = '@[parent @[child1] text @[child2]]' - render() + await render() // Should have 5 children: text, mark, text, mark, text expect(capturedChildrenCount).toBeGreaterThan(0) @@ -192,7 +192,7 @@ describe('Nested Marks Tree Navigation', () => { }) describe('Backward Compatibility', () => { - it('should work with flat marks (no nesting)', () => { + it('should work with flat marks (no nesting)', async () => { const FlatMark = ({value}: {value?: string; meta?: string; children?: ReactNode}) => { return {value} } @@ -200,14 +200,14 @@ describe('Backward Compatibility', () => { const markup: Markup = '@[__value__](__meta__)' const value = '@[test](meta)' - render() + await render() - const mark = screen.getByTestId('flat-mark') - expect(mark).toBeInTheDocument() - expect(mark.textContent).toBe('test') + const mark = page.getByTestId('flat-mark') + await expect.element(mark).toBeInTheDocument() + expect(mark.element().textContent).toBe('test') }) - it('should ignore children prop in flat marks', () => { + it('should ignore children prop in flat marks', async () => { const FlatMark = ({value}: {value?: string; children?: ReactNode}) => { // Old components that don't use children should still work return {value} @@ -216,14 +216,14 @@ describe('Backward Compatibility', () => { const markup: Markup = '@[__value__]' const value = '@[test]' - render() + await render() - const mark = screen.getByTestId('flat-mark') - expect(mark).toBeInTheDocument() - expect(mark.textContent).toBe('test') + const mark = page.getByTestId('flat-mark') + await expect.element(mark).toBeInTheDocument() + expect(mark.element().textContent).toBe('test') }) - it('should not parse nested content in __value__ placeholders', () => { + it('should not parse nested content in __value__ placeholders', async () => { const FlatMark = ({value}: {value?: string}) => { return {value} } @@ -231,18 +231,18 @@ describe('Backward Compatibility', () => { const markup: Markup = '@[__value__]' const value = '@[text with @[nested]]' - render() + await render() // Should only have one mark since __value__ doesn't support nesting - const marks = screen.getAllByTestId('flat-mark') + const marks = page.getByTestId('flat-mark').all() expect(marks).toHaveLength(1) // The inner @[nested] should be part of the value as plain text - expect(marks[0].textContent).toContain('text with @[nested]') + expect(marks[0].element().textContent).toContain('text with @[nested]') }) }) describe('Complex Nesting Scenarios', () => { - it('should handle adjacent nested marks', () => { + it('should handle adjacent nested marks', async () => { const TestMark = ({children}: {value?: string; children?: ReactNode}) => { return {children} } @@ -250,13 +250,13 @@ describe('Complex Nesting Scenarios', () => { const markup: Markup = '@[__nested__]' const value = '@[first]@[second]' - render() + await render() - const marks = screen.getAllByTestId('mark') + const marks = page.getByTestId('mark').all() expect(marks).toHaveLength(2) }) - it('should handle deeply nested structure', () => { + it('should handle deeply nested structure', async () => { const TestMark = ({children}: {value?: string; children?: ReactNode}) => { const mark = useMark() return {children} @@ -265,7 +265,7 @@ describe('Complex Nesting Scenarios', () => { const markup: Markup = '@[__nested__]' const value = '@[@[@[@[@[deep]]]]]' - const {container} = render() + const {container} = await render() const depths = Array.from(container.querySelectorAll('[data-depth]')).map(el => parseInt(el.getAttribute('data-depth') || '0') @@ -274,7 +274,7 @@ describe('Complex Nesting Scenarios', () => { expect(Math.max(...depths)).toBe(4) // 5 levels: 0, 1, 2, 3, 4 }) - it('should handle mixed nested and flat marks', () => { + it('should handle mixed nested and flat marks', async () => { const MixedMark = ({children}: {value?: string; children?: ReactNode}) => { const mark = useMark() return ( @@ -287,13 +287,13 @@ describe('Complex Nesting Scenarios', () => { const nestedMarkup: Markup = '@[__nested__]' const value = '@[nested @[child]] @[another]' - render() + await render() - const marks = screen.getAllByTestId('mark') + const marks = page.getByTestId('mark').all() expect(marks.length).toBeGreaterThanOrEqual(3) }) - it('should render nested structure when Mark component renders children', () => { + it('should render nested structure when Mark component renders children', async () => { const RenderingMark = ({children}: {value?: string; children?: ReactNode}) => { const mark = useMark() // This Mark component explicitly renders children @@ -304,7 +304,7 @@ describe('Complex Nesting Scenarios', () => { const markup: Markup = '@[__nested__]' const value = '@[Hello @[World] from @[Nested] marks]' - const {container} = render() + const {container} = await render() // When Mark renders children/value appropriately, all text content should be visible expect(container.textContent).toContain('Hello') @@ -316,7 +316,7 @@ describe('Complex Nesting Scenarios', () => { }) describe('Edge Cases', () => { - it('should handle empty input', () => { + it('should handle empty input', async () => { const TestMark = ({children}: {value?: string; children?: ReactNode}) => { return {children} } @@ -324,12 +324,12 @@ describe('Edge Cases', () => { const markup: Markup = '@[__nested__]' const value = '' - const {container} = render() + const {container} = await render() expect(container.textContent).toBe('') }) - it('should handle input with no marks', () => { + it('should handle input with no marks', async () => { const TestMark = ({children}: {value?: string; children?: ReactNode}) => { return {children} } @@ -337,12 +337,12 @@ describe('Edge Cases', () => { const markup: Markup = '@[__nested__]' const value = 'Just plain text' - const {container} = render() + const {container} = await render() expect(container.textContent).toBe('Just plain text') }) - it('should handle malformed nested marks gracefully', () => { + it('should handle malformed nested marks gracefully', async () => { const TestMark = ({children}: {value?: string; children?: ReactNode}) => { return {children} } @@ -350,9 +350,9 @@ describe('Edge Cases', () => { const markup: Markup = '@[__nested__]' const value = '@[unclosed @[nested' - const {container} = render() + const {container} = await render() // Should render something without crashing - expect(container).toBeInTheDocument() + await expect.element(container).toBeInTheDocument() }) }) diff --git a/packages/storybook/src/pages/Overlay/Overlay.spec.tsx b/packages/storybook/src/pages/Overlay/Overlay.spec.tsx new file mode 100644 index 00000000..68542aa7 --- /dev/null +++ b/packages/storybook/src/pages/Overlay/Overlay.spec.tsx @@ -0,0 +1,61 @@ +import {render} from 'vitest-browser-react' +import {page, userEvent} from 'vitest/browser' +import {describe, expect, it} from 'vitest' +import {composeStories} from '@storybook/react-vite' +import * as BaseStories from '../Base/Base.stories' +import * as OverlayStories from './Overlay.stories' +import {focusAtEnd} from '../../shared/lib/focus' + +const {Default} = composeStories(BaseStories) +const {DefaultOverlay} = composeStories(OverlayStories) + +describe('API: Overlay and Triggers', () => { + //TODO not working + it.todo('should typed with default values of options', async () => { + const {container} = await render() + + const element = container.firstElementChild?.firstElementChild as HTMLElement + await focusAtEnd(element) + await userEvent.keyboard('abc') + + await expect.element(page.getByText(DefaultOverlay.args.defaultValue + 'abc')).toBeInTheDocument() + }) + + it('should typed with default values of options', async () => { + const {container} = await render() + + const element = container.firstElementChild?.firstElementChild as HTMLElement + await focusAtEnd(element) + await userEvent.keyboard('abc') + + await expect.element(page.getByText(DefaultOverlay.args.defaultValue + 'abc')).toBeInTheDocument() + }) + + // TODO: user.pointer with offset is not available in vitest/browser. + // Need to rewrite using focusAtOffset helper or native Selection API. + it.todo('should appear a overlay component by trigger', async () => { + await render( + + ) + // const span = page.getByText(/@/i) + + // await user.pointer({target: span, offset: 0, keys: '[MouseLeft]'}) + // await user.pointer({target: span, offset: 1, keys: '[MouseLeft]'}) + + await expect.element(page.getByText('Item')).toBeInTheDocument() + }) +}) diff --git a/packages/storybook/stories/Overlay.stories.tsx b/packages/storybook/src/pages/Overlay/Overlay.stories.tsx similarity index 100% rename from packages/storybook/stories/Overlay.stories.tsx rename to packages/storybook/src/pages/Overlay/Overlay.stories.tsx diff --git a/packages/storybook/stories/Rsuite.stories.tsx b/packages/storybook/src/pages/Rsuite/Rsuite.stories.tsx similarity index 96% rename from packages/storybook/stories/Rsuite.stories.tsx rename to packages/storybook/src/pages/Rsuite/Rsuite.stories.tsx index 786f0bab..cf2fce38 100644 --- a/packages/storybook/stories/Rsuite.stories.tsx +++ b/packages/storybook/src/pages/Rsuite/Rsuite.stories.tsx @@ -3,8 +3,8 @@ import {MarkedInput, useOverlay} from 'rc-marked-input' import type {Markup} from 'rc-marked-input' import {useEffect, useState} from 'react' import {Input, Popover, Tag} from 'rsuite' -import {Text} from '../assets/Text' -import {withStyle} from '../assets/withStyle' +import {Text} from '../../shared/components/Text' +import {withStyle} from '../../shared/lib/withStyle' export default { title: 'Styled/Rsuite', diff --git a/packages/storybook/stories/Slots.stories.tsx b/packages/storybook/src/pages/Slots/Slots.stories.tsx similarity index 99% rename from packages/storybook/stories/Slots.stories.tsx rename to packages/storybook/src/pages/Slots/Slots.stories.tsx index 7513b4cf..63caa90a 100644 --- a/packages/storybook/stories/Slots.stories.tsx +++ b/packages/storybook/src/pages/Slots/Slots.stories.tsx @@ -1,7 +1,7 @@ import type {Meta, StoryObj} from '@storybook/react-vite' import {MarkedInput} from 'rc-marked-input' import {forwardRef, useState} from 'react' -import {Text} from '../assets/Text' +import {Text} from '../../shared/components/Text' const meta = { title: 'API/Slots', diff --git a/packages/tests/integrations/slots.spec.tsx b/packages/storybook/src/pages/Slots/slots.spec.tsx similarity index 54% rename from packages/tests/integrations/slots.spec.tsx rename to packages/storybook/src/pages/Slots/slots.spec.tsx index bd29d879..bc22ff02 100644 --- a/packages/tests/integrations/slots.spec.tsx +++ b/packages/storybook/src/pages/Slots/slots.spec.tsx @@ -1,5 +1,5 @@ -import '@testing-library/jest-dom' -import {render, screen, fireEvent} from '@testing-library/react' +import {render} from 'vitest-browser-react' +import {page, userEvent} from 'vitest/browser' import {MarkedInput} from 'rc-marked-input' import {describe, it, expect, vi} from 'vitest' import {forwardRef} from 'react' @@ -8,20 +8,22 @@ describe('Slots API', () => { const TestMark = ({children}: {children?: React.ReactNode}) => {children} describe('Container slot', () => { - it('should use default div component when no slot is provided', () => { - const {container} = render() + it('should use default div component when no slot is provided', async () => { + const {container} = await render( + + ) - const containerDiv = container.querySelector('div') - expect(containerDiv).toBeInTheDocument() + const containerDiv = container.querySelector('div') as HTMLElement + await expect.element(containerDiv).toBeInTheDocument() }) - it('should use custom component from slots.container', () => { + it('should use custom component from slots.container', async () => { const CustomContainer = forwardRef>((props, ref) => (
)) CustomContainer.displayName = 'CustomContainer' - render( + await render( { /> ) - expect(screen.getByTestId('custom-container')).toBeInTheDocument() + await expect.element(page.getByTestId('custom-container')).toBeInTheDocument() }) - it('should pass slotProps.container to the container component', () => { + it('should pass slotProps.container to the container component', async () => { const handleKeyDown = vi.fn() - const {container} = render( + const {container} = await render( { /> ) - const containerDiv = container.querySelector('div') - expect(containerDiv).toHaveAttribute('data-custom', 'test-value') + const containerDiv = container.querySelector('div') as HTMLElement + await expect.element(containerDiv).toHaveAttribute('data-custom', 'test-value') }) - it('should merge className from slotProps with default className', () => { - const {container} = render( + it('should merge className from slotProps with default className', async () => { + const {container} = await render( { /> ) - const containerDiv = container.querySelector('div') - expect(containerDiv).toHaveClass('default-class') + const containerDiv = container.querySelector('div') as HTMLElement + await expect.element(containerDiv).toHaveClass('default-class') }) - it('should merge style from slotProps with default style', () => { - const {container} = render( + it('should merge style from slotProps with default style', async () => { + const {container} = await render( { /> ) - const containerDiv = container.querySelector('div') - expect(containerDiv).toHaveStyle({color: 'rgb(255, 0, 0)', backgroundColor: 'rgb(0, 0, 255)'}) + const containerDiv = container.querySelector('div') as HTMLElement + await expect.element(containerDiv).toHaveStyle({color: 'rgb(255, 0, 0)', backgroundColor: 'rgb(0, 0, 255)'}) }) }) describe('Span slot', () => { - it('should use default span component when no slot is provided', () => { - const {container} = render() + it('should use default span component when no slot is provided', async () => { + const {container} = await render() - const textSpan = container.querySelector('span[contenteditable]') - expect(textSpan).toBeInTheDocument() - expect(textSpan).toHaveTextContent('Hello world') + const textSpan = container.querySelector('span[contenteditable]') as HTMLElement + await expect.element(textSpan).toBeInTheDocument() + await expect.element(textSpan!).toHaveTextContent('Hello world') }) - it('should use custom component from slots.span', () => { + it('should use custom component from slots.span', async () => { const CustomSpan = forwardRef>((props, ref) => ( )) CustomSpan.displayName = 'CustomSpan' - render( + await render( { /> ) - expect(screen.getByTestId('custom-span')).toBeInTheDocument() + await expect.element(page.getByTestId('custom-span')).toBeInTheDocument() }) - it('should pass slotProps.span to the span component', () => { - const {container} = render( + it('should pass slotProps.span to the span component', async () => { + const {container} = await render( { /> ) - const textSpan = container.querySelector('span[contenteditable]') - expect(textSpan).toHaveClass('custom-span-class') - expect(textSpan).toHaveAttribute('data-span-custom', 'span-value') + const textSpan = container.querySelector('span[contenteditable]') as HTMLElement + await expect.element(textSpan).toHaveClass('custom-span-class') + await expect.element(textSpan).toHaveAttribute('data-span-custom', 'span-value') }) - it('should merge style from slotProps.span', () => { - const {container} = render( + it('should merge style from slotProps.span', async () => { + const {container} = await render( { /> ) - const textSpan = container.querySelector('span[contenteditable]') - expect(textSpan).toHaveStyle({fontWeight: 'bold', fontSize: '16px'}) + const textSpan = container.querySelector('span[contenteditable]') as HTMLElement + await expect.element(textSpan).toHaveStyle({fontWeight: 'bold', fontSize: '16px'}) }) }) describe('Both slots', () => { - it('should allow overriding both container and span slots simultaneously', () => { + it('should allow overriding both container and span slots simultaneously', async () => { const CustomContainer = forwardRef>((props, ref) => (
)) @@ -168,7 +170,7 @@ describe('Slots API', () => { )) CustomSpan.displayName = 'CustomSpan' - render( + await render( { /> ) - const container = screen.getByTestId('custom-container') - const span = screen.getByTestId('custom-span') + const container = page.getByTestId('custom-container') + const span = page.getByTestId('custom-span') - expect(container).toBeInTheDocument() - expect(container).toHaveAttribute('data-container-prop', 'container') + await expect.element(container).toBeInTheDocument() + await expect.element(container).toHaveAttribute('data-container-prop', 'container') - expect(span).toBeInTheDocument() - expect(span).toHaveAttribute('data-span-prop', 'span') + await expect.element(span).toBeInTheDocument() + await expect.element(span).toHaveAttribute('data-span-prop', 'span') }) }) describe('TypeScript integration', () => { - it('should work with valid slot types', () => { + it('should work with valid slot types', async () => { // This is a compile-time test - if it compiles, the types are correct const CustomDiv = forwardRef>((props, ref) => (
)) CustomDiv.displayName = 'CustomDiv' - const {container} = render( + const {container} = await render( { /> ) - expect(container).toBeInTheDocument() + await expect.element(container).toBeInTheDocument() }) - it('should support camelCase data attributes in slotProps', () => { - const {container} = render( + it('should support camelCase data attributes in slotProps', async () => { + const {container} = await render( { /> ) - const containerDiv = container.querySelector('div') - expect(containerDiv).toHaveAttribute('data-test-id', 'my-container') - expect(containerDiv).toHaveAttribute('data-user-id', 'user-123') - expect(containerDiv).toHaveAttribute('data-user-name', 'John') + const containerDiv = container.querySelector('div') as HTMLElement + await expect.element(containerDiv).toHaveAttribute('data-test-id', 'my-container') + await expect.element(containerDiv).toHaveAttribute('data-user-id', 'user-123') + await expect.element(containerDiv).toHaveAttribute('data-user-name', 'John') }) }) describe('Span contentEditable attribute', () => { - it('should have contentEditable="true" by default on editable span', () => { - const {container} = render() + it('should have contentEditable="true" by default on editable span', async () => { + const {container} = await render() - const textSpan = container.querySelector('span[contenteditable="true"]') - expect(textSpan).toBeInTheDocument() + const textSpan = container.querySelector('span[contenteditable="true"]') as HTMLElement + await expect.element(textSpan).toBeInTheDocument() }) - it('should have contentEditable="false" when readOnly is true', () => { - const {container} = render() + it('should have contentEditable="false" when readOnly is true', async () => { + const {container} = await render() - const textSpan = container.querySelector('span[contenteditable="false"]') - expect(textSpan).toBeInTheDocument() + const textSpan = container.querySelector('span[contenteditable="false"]') as HTMLElement + await expect.element(textSpan).toBeInTheDocument() }) - it('should maintain contentEditable on span with custom slot', () => { + it('should maintain contentEditable on span with custom slot', async () => { const CustomSpan = forwardRef>((props, ref) => ( )) CustomSpan.displayName = 'CustomSpan' - render() + await render() - const span = screen.getByTestId('custom-span') - expect(span).toHaveAttribute('contenteditable', 'true') + const span = page.getByTestId('custom-span') + await expect.element(span).toHaveAttribute('contenteditable', 'true') }) - it('should respect suppressContentEditableWarning when set', () => { - const {container} = render() + it('should respect suppressContentEditableWarning when set', async () => { + const {container} = await render() - const textSpan = container.querySelector('span[contenteditable]') + const textSpan = container.querySelector('span[contenteditable]') as HTMLElement // Should not throw warning during render - expect(textSpan).toBeInTheDocument() + await expect.element(textSpan).toBeInTheDocument() }) }) describe('Event handlers in slotProps', () => { - it('should call onKeyDown handler from slotProps.container', () => { + it('should call onKeyDown handler from slotProps.container', async () => { const handleKeyDown = vi.fn() - const {container} = render( + const {container} = await render( { /> ) - const div = container.querySelector('div') - fireEvent.keyDown(div!, {key: 'Enter'}) + const div = container.querySelector('div') as HTMLElement + await userEvent.click(div) + await userEvent.keyboard('{Enter}') expect(handleKeyDown).toHaveBeenCalled() }) - it('should call onClick handler from slotProps.container', () => { + it('should call onClick handler from slotProps.container', async () => { const handleClick = vi.fn() - const {container} = render( + const {container} = await render( { /> ) - const div = container.querySelector('div') - fireEvent.click(div!) + const div = container.querySelector('div') as HTMLElement + await userEvent.click(div) expect(handleClick).toHaveBeenCalled() }) - it('should call onFocus and onBlur handlers from slotProps.container', () => { + it('should call onFocus and onBlur handlers from slotProps.container', async () => { const handleFocus = vi.fn() const handleBlur = vi.fn() - const {container} = render( + const {container} = await render( { /> ) - const div = container.querySelector('div') - fireEvent.focus(div!) + const div = container.querySelector('div') as HTMLElement + await userEvent.click(div) expect(handleFocus).toHaveBeenCalled() - fireEvent.blur(div!) + await userEvent.click(page.getByRole('document')) expect(handleBlur).toHaveBeenCalled() }) }) describe('Custom slot components', () => { - it('should pass all required props to custom container slot', () => { + it('should pass all required props to custom container slot', async () => { const CustomContainer = forwardRef>((props, ref) => (
)) CustomContainer.displayName = 'CustomContainer' - render( + await render( { /> ) - const container = screen.getByTestId('custom-container') - expect(container).toHaveClass('outer-class') - expect(container).toHaveClass('inner-class') - expect(container).toHaveStyle({color: 'rgb(255, 0, 0)', backgroundColor: 'rgb(0, 0, 255)'}) + const container = page.getByTestId('custom-container') + await expect.element(container).toHaveClass('outer-class') + await expect.element(container).toHaveClass('inner-class') + await expect.element(container).toHaveStyle({color: 'rgb(255, 0, 0)', backgroundColor: 'rgb(0, 0, 255)'}) }) - it('should allow native HTML elements as slots', () => { - const {container} = render( + it('should allow native HTML elements as slots', async () => { + const {container} = await render( { /> ) - const article = container.querySelector('article') - const div = container.querySelector('div[contenteditable]') + const article = container.querySelector('article') as HTMLElement + const div = container.querySelector('div[contenteditable]') as HTMLElement - expect(article).toBeInTheDocument() - expect(div).toBeInTheDocument() + await expect.element(article).toBeInTheDocument() + await expect.element(div).toBeInTheDocument() }) }) describe('Edge cases', () => { - it('should handle empty value', () => { - const {container} = render() + it('should handle empty value', async () => { + const {container} = await render() - const div = container.querySelector('div') - expect(div).toBeInTheDocument() + const div = container.querySelector('div') as HTMLElement + await expect.element(div).toBeInTheDocument() }) - it('should handle undefined slotProps gracefully', () => { - const {container} = render() + it('should handle undefined slotProps gracefully', async () => { + const {container} = await render() - const div = container.querySelector('div') - expect(div).toBeInTheDocument() + const div = container.querySelector('div') as HTMLElement + await expect.element(div).toBeInTheDocument() }) - it('should handle empty className in slotProps', () => { - const {container} = render( + it('should handle empty className in slotProps', async () => { + const {container} = await render( { /> ) - const div = container.querySelector('div') - expect(div).toBeInTheDocument() + const div = container.querySelector('div') as HTMLElement + await expect.element(div).toBeInTheDocument() }) - it('should handle multiple marked values with custom slots', () => { - const {container} = render( + it('should handle multiple marked values with custom slots', async () => { + const {container} = await render( { expect(spans.length).toBeGreaterThan(0) }) - it('should preserve slot functionality when no slotProps provided', () => { + it('should preserve slot functionality when no slotProps provided', async () => { const CustomContainer = forwardRef>((props, ref) => (
)) CustomContainer.displayName = 'CustomContainer' - render() + await render() - expect(screen.getByTestId('custom-container')).toBeInTheDocument() + await expect.element(page.getByTestId('custom-container')).toBeInTheDocument() }) }) }) diff --git a/packages/storybook/src/pages/stories.spec.tsx b/packages/storybook/src/pages/stories.spec.tsx new file mode 100644 index 00000000..7a754983 --- /dev/null +++ b/packages/storybook/src/pages/stories.spec.tsx @@ -0,0 +1,43 @@ +import {render} from 'vitest-browser-react' +import {composeStories} from '@storybook/react-vite' +import {describe, expect, it} from 'vitest' + +// Automatically import all stories files +const storiesModules = import.meta.glob('./**/*.stories.tsx', {eager: true}) + +// Group stories by category +const storiesByCategory = new Map>() + +for (const [path, module] of Object.entries(storiesModules)) { + // Extract category from the path: ./Ant/Ant.stories.tsx -> Ant + const match = path.match(/\.\/([^/]+)\//) + if (!match) continue + + const category = match[1] + const stories = composeStories(module as any) + + if (!storiesByCategory.has(category)) { + storiesByCategory.set(category, {}) + } + + // Merge stories from the same category file + const categoryStories = storiesByCategory.get(category)! + Object.assign(categoryStories, stories) +} + +//TODO correct type +const getTests = + () => + ([name, Story]: [string, any]) => + it(`Story ${name}`, async () => { + const {container} = await render() + expect(container.textContent?.length).toBeTruthy() + }) + +describe('Component: stories', () => { + for (const [category, stories] of storiesByCategory.entries()) { + describe(`${category} stories`, () => { + Object.entries(stories).map(getTests()) + }) + } +}) diff --git a/packages/storybook/assets/Button/Button.css b/packages/storybook/src/shared/components/Button/Button.css similarity index 100% rename from packages/storybook/assets/Button/Button.css rename to packages/storybook/src/shared/components/Button/Button.css diff --git a/packages/storybook/assets/Button/Button.tsx b/packages/storybook/src/shared/components/Button/Button.tsx similarity index 100% rename from packages/storybook/assets/Button/Button.tsx rename to packages/storybook/src/shared/components/Button/Button.tsx diff --git a/packages/storybook/assets/Button/index.ts b/packages/storybook/src/shared/components/Button/index.ts similarity index 100% rename from packages/storybook/assets/Button/index.ts rename to packages/storybook/src/shared/components/Button/index.ts diff --git a/packages/storybook/assets/MaterialMentions/MaterialMentions.tsx b/packages/storybook/src/shared/components/MaterialMentions/MaterialMentions.tsx similarity index 100% rename from packages/storybook/assets/MaterialMentions/MaterialMentions.tsx rename to packages/storybook/src/shared/components/MaterialMentions/MaterialMentions.tsx diff --git a/packages/storybook/assets/MaterialMentions/Mention.tsx b/packages/storybook/src/shared/components/MaterialMentions/Mention.tsx similarity index 100% rename from packages/storybook/assets/MaterialMentions/Mention.tsx rename to packages/storybook/src/shared/components/MaterialMentions/Mention.tsx diff --git a/packages/storybook/assets/MaterialMentions/UserList/UserItem.tsx b/packages/storybook/src/shared/components/MaterialMentions/UserList/UserItem.tsx similarity index 100% rename from packages/storybook/assets/MaterialMentions/UserList/UserItem.tsx rename to packages/storybook/src/shared/components/MaterialMentions/UserList/UserItem.tsx diff --git a/packages/storybook/assets/MaterialMentions/UserList/UserList.tsx b/packages/storybook/src/shared/components/MaterialMentions/UserList/UserList.tsx similarity index 100% rename from packages/storybook/assets/MaterialMentions/UserList/UserList.tsx rename to packages/storybook/src/shared/components/MaterialMentions/UserList/UserList.tsx diff --git a/packages/storybook/assets/MaterialMentions/UserList/index.ts b/packages/storybook/src/shared/components/MaterialMentions/UserList/index.ts similarity index 100% rename from packages/storybook/assets/MaterialMentions/UserList/index.ts rename to packages/storybook/src/shared/components/MaterialMentions/UserList/index.ts diff --git a/packages/storybook/assets/MaterialMentions/index.ts b/packages/storybook/src/shared/components/MaterialMentions/index.ts similarity index 100% rename from packages/storybook/assets/MaterialMentions/index.ts rename to packages/storybook/src/shared/components/MaterialMentions/index.ts diff --git a/packages/storybook/assets/MaterialMentions/types.ts b/packages/storybook/src/shared/components/MaterialMentions/types.ts similarity index 100% rename from packages/storybook/assets/MaterialMentions/types.ts rename to packages/storybook/src/shared/components/MaterialMentions/types.ts diff --git a/packages/storybook/assets/MaterialMentions/utils/useFetch.tsx b/packages/storybook/src/shared/components/MaterialMentions/utils/useFetch.tsx similarity index 67% rename from packages/storybook/assets/MaterialMentions/utils/useFetch.tsx rename to packages/storybook/src/shared/components/MaterialMentions/utils/useFetch.tsx index ea0a8745..9c287b8f 100644 --- a/packages/storybook/assets/MaterialMentions/utils/useFetch.tsx +++ b/packages/storybook/src/shared/components/MaterialMentions/utils/useFetch.tsx @@ -8,7 +8,11 @@ export const useFetch = (url: string, deps: unknown[]) => { fetch(url, {signal: abortController.signal}) .then(res => res.json()) .then(setData) - //.catch(reason => console.error(reason)) + .catch(error => { + // Ignore aborts triggered during cleanup to avoid noisy test errors. + if ((error as DOMException)?.name === 'AbortError') return + console.error(error) + }) return () => abortController.abort() }, deps) diff --git a/packages/storybook/assets/Tabs/Tabs.tsx b/packages/storybook/src/shared/components/Tabs/Tabs.tsx similarity index 100% rename from packages/storybook/assets/Tabs/Tabs.tsx rename to packages/storybook/src/shared/components/Tabs/Tabs.tsx diff --git a/packages/storybook/assets/Tabs/index.ts b/packages/storybook/src/shared/components/Tabs/index.ts similarity index 100% rename from packages/storybook/assets/Tabs/index.ts rename to packages/storybook/src/shared/components/Tabs/index.ts diff --git a/packages/storybook/assets/Tabs/useTab.tsx b/packages/storybook/src/shared/components/Tabs/useTab.tsx similarity index 100% rename from packages/storybook/assets/Tabs/useTab.tsx rename to packages/storybook/src/shared/components/Tabs/useTab.tsx diff --git a/packages/storybook/assets/Text/Text.css b/packages/storybook/src/shared/components/Text/Text.css similarity index 100% rename from packages/storybook/assets/Text/Text.css rename to packages/storybook/src/shared/components/Text/Text.css diff --git a/packages/storybook/assets/Text/Text.tsx b/packages/storybook/src/shared/components/Text/Text.tsx similarity index 100% rename from packages/storybook/assets/Text/Text.tsx rename to packages/storybook/src/shared/components/Text/Text.tsx diff --git a/packages/storybook/assets/Text/index.ts b/packages/storybook/src/shared/components/Text/index.ts similarity index 100% rename from packages/storybook/assets/Text/index.ts rename to packages/storybook/src/shared/components/Text/index.ts diff --git a/packages/storybook/src/shared/lib/createVisualTests.ts b/packages/storybook/src/shared/lib/createVisualTests.ts new file mode 100644 index 00000000..32e27fb0 --- /dev/null +++ b/packages/storybook/src/shared/lib/createVisualTests.ts @@ -0,0 +1,24 @@ +import React from 'react' +import {render} from 'vitest-browser-react' +import {composeStories} from '@storybook/react-vite' +import {describe, expect, it} from 'vitest' + +/** + * Builds screenshot-based tests for every story in a module. + * + * @param storiesModule - imported stories file (namespace import) + */ +export function createVisualTests(storiesModule: any) { + const stories = composeStories(storiesModule) + + describe('Visual regression tests', () => { + for (const [name, Story] of Object.entries(stories)) { + it(`Story ${name}`, async () => { + const StoryComponent = Story as React.ComponentType + const {container} = await render(React.createElement(StoryComponent)) + expect(container.textContent?.length).toBeTruthy() + await expect(container).toMatchScreenshot() + }) + } + }) +} diff --git a/packages/tests/_utils/focus.tsx b/packages/storybook/src/shared/lib/focus.tsx similarity index 56% rename from packages/tests/_utils/focus.tsx rename to packages/storybook/src/shared/lib/focus.tsx index c97977c9..ac17c3c9 100644 --- a/packages/tests/_utils/focus.tsx +++ b/packages/storybook/src/shared/lib/focus.tsx @@ -1,13 +1,47 @@ -import '@testing-library/jest-dom' -import user from '@testing-library/user-event' +import {userEvent} from 'vitest/browser' import {expect} from 'vitest' +/** + * Sets caret position in a contenteditable element + */ +function setCaretPosition(element: HTMLElement, offset: number) { + const range = document.createRange() + const selection = window.getSelection() + + if (!selection) return + + // Find the text node and offset within it + let currentOffset = 0 + const walker = document.createTreeWalker(element, NodeFilter.SHOW_TEXT, null) + + let node = walker.nextNode() + while (node) { + const nodeLength = node.textContent?.length || 0 + if (currentOffset + nodeLength >= offset) { + range.setStart(node, offset - currentOffset) + range.collapse(true) + selection.removeAllRanges() + selection.addRange(range) + return + } + currentOffset += nodeLength + node = walker.nextNode() + } + + // If offset is beyond content, place at end + range.selectNodeContents(element) + range.collapse(false) + selection.removeAllRanges() + selection.addRange(range) +} + /** * Focuses contenteditable element and places caret at start */ export async function focusAtStart(element: HTMLElement) { - await user.pointer({target: element, offset: 0, keys: '[MouseLeft]'}) - expect(element).toHaveFocus() + await userEvent.click(element) + setCaretPosition(element, 0) + await expect.element(element).toHaveFocus() verifyCaretPosition(element, 0) } @@ -16,10 +50,11 @@ export async function focusAtStart(element: HTMLElement) { * Focuses contenteditable element and places caret at end */ export async function focusAtEnd(element: HTMLElement) { - await user.pointer({target: element, keys: '[MouseLeft]'}) - expect(element).toHaveFocus() - + await userEvent.click(element) const textLength = element.textContent?.length || 0 + setCaretPosition(element, textLength) + await expect.element(element).toHaveFocus() + verifyCaretPosition(element, textLength) } @@ -27,8 +62,9 @@ export async function focusAtEnd(element: HTMLElement) { * Focuses contenteditable element and places caret at specific offset */ export async function focusAtOffset(element: HTMLElement, offset: number) { - await user.pointer({target: element, offset, keys: '[MouseLeft]'}) - expect(element).toHaveFocus() + await userEvent.click(element) + setCaretPosition(element, offset) + await expect.element(element).toHaveFocus() verifyCaretPosition(element, offset) } diff --git a/packages/storybook/src/shared/lib/withStyle.tsx b/packages/storybook/src/shared/lib/withStyle.tsx new file mode 100644 index 00000000..157efbe9 --- /dev/null +++ b/packages/storybook/src/shared/lib/withStyle.tsx @@ -0,0 +1,32 @@ +import {useInsertionEffect} from 'react' + +const ensureStyleLink = (id: string) => { + let link = document.getElementById(id) as HTMLLinkElement | null + + if (!link) { + link = document.createElement('link') + link.id = id + link.rel = 'stylesheet' + // Load from Vite public root so it works in Storybook and Vitest browser runs. + link.href = new URL(`/${id}`, window.location.origin).href + link.disabled = true + document.head.append(link) + } + + return link +} + +export const withStyle = (id: string) => (Story: any) => { + useStyleInsertion(id) + return +} + +const useStyleInsertion = (id: string) => + useInsertionEffect((): (() => void) => { + const link = ensureStyleLink(id) + + link.disabled = false + return () => { + link.disabled = true + } + }, [id]) diff --git a/packages/storybook/stories.tsx b/packages/storybook/stories.tsx deleted file mode 100644 index 3cae7686..00000000 --- a/packages/storybook/stories.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import {composeStories} from '@storybook/react-vite' -import * as AntStories from './stories/Ant.stories' -import * as BaseStories from './stories/Base.stories' -import * as DynamicStories from './stories/Dynamic.stories' -import * as MaterialStories from './stories/Material.stories' -import * as OverlayStories from './stories/Overlay.stories' -import * as RsuiteStories from './stories/Rsuite.stories' - -export const Story: Record> = { - Ant: composeStories(AntStories), - Base: composeStories(BaseStories), - Dynamic: composeStories(DynamicStories), - Material: composeStories(MaterialStories), - Overlay: composeStories(OverlayStories), - Rsuite: composeStories(RsuiteStories), -} diff --git a/packages/storybook/tsconfig.json b/packages/storybook/tsconfig.json index cdf609d4..91de42e7 100644 --- a/packages/storybook/tsconfig.json +++ b/packages/storybook/tsconfig.json @@ -3,6 +3,6 @@ "compilerOptions": { "composite": true }, - "include": ["./**/*.ts", "./**/*.tsx"], + "include": ["./**/*.ts", "./**/*.tsx", "../core/src/**/*.ts"], "exclude": ["node_modules", "dist"] } diff --git a/packages/storybook/vite.config.ts b/packages/storybook/vite.config.ts index 2ec6539d..f5d7d50a 100644 --- a/packages/storybook/vite.config.ts +++ b/packages/storybook/vite.config.ts @@ -1,6 +1,25 @@ import react from '@vitejs/plugin-react-swc' -import {defineConfig} from 'vite' +import {defineConfig} from 'vitest/config' +import {playwright} from '@vitest/browser-playwright' export default defineConfig({ plugins: [react()], + resolve: { + dedupe: ['react', 'react-dom'], + }, + test: { + globals: true, + include: ['src/pages/**/*.spec.ts', 'src/pages/**/*.spec.tsx'], + coverage: { + provider: 'v8', + reporter: ['text', 'json', 'html'], + }, + browser: { + enabled: true, + provider: playwright(), + instances: [{browser: 'chromium'}], + viewport: {width: 1280, height: 720}, + headless: true, + }, + }, }) diff --git a/packages/tests/integrations/MarkedInput.spec.tsx b/packages/tests/integrations/MarkedInput.spec.tsx deleted file mode 100644 index f9893924..00000000 --- a/packages/tests/integrations/MarkedInput.spec.tsx +++ /dev/null @@ -1,126 +0,0 @@ -import '@testing-library/jest-dom' -import {render} from '@testing-library/react' -import user from '@testing-library/user-event' -import {Focusable, Removable} from 'sb/stories/Dynamic.stories' -import {describe, expect, it} from 'vitest' -import {Story} from '../../storybook/stories' -import {focusAtStart} from '../_utils/focus' - -const {Default} = Story.Base - -describe(`Component: MarkedInput`, () => { - it.todo('should set readOnly on selection') - - //TODO mark focus - - it('should correct process an annotation type', async () => { - const {container, queryByText} = render() - const [span] = container.querySelectorAll('span') - - expect(span).toHaveTextContent('') - - await user.type(span, '@[[mark](1)') - - expect(queryByText('@[mark](1)')).toBeNull() - expect(queryByText('mark')).toBeInTheDocument() - }) - - it('should support ref focusing target', async () => { - const {container} = render() - const [firstSpan, secondSpan] = container.querySelectorAll('span') - const [firstAbbr] = container.querySelectorAll('abbr') - const firstSpanLength = firstSpan.textContent?.length ?? 0 - const firstAbbrLength = firstAbbr.textContent?.length ?? 0 - - await focusAtStart(firstSpan) - - await user.keyboard(`{ArrowRight>${firstSpanLength + 1}/}`) - expect(firstAbbr).toHaveFocus() - - await user.keyboard(`{ArrowLeft>1/}`) - expect(firstSpan).toHaveFocus() - - await user.keyboard(`{ArrowRight>1/}`) - expect(firstAbbr).toHaveFocus() - - await user.keyboard(`{ArrowRight>${firstAbbrLength + 1}/}`) - expect(secondSpan).toHaveFocus() - - await user.keyboard(`{ArrowLeft>1/}`) - expect(firstAbbr).toHaveFocus() - }) - - it('should support remove itself', async () => { - const {getByText, queryByText} = render() - - let mark = getByText('contain') - await user.click(mark) - expect(queryByText('contain')).toBeNull() - - mark = getByText('marks') - await user.click(mark) - expect(queryByText('marks')).toBeNull() - }) - - it('should support editable marks', async () => { - const {getByText} = render() - - await user.type(getByText('world'), '123') - - expect(getByText('world123')).toBeInTheDocument() - expect(getByText(/@\[world123]\(Hello! Hello!\)/)).toBeInTheDocument() - }) - - it('should be selectable', async () => { - const {container} = render() - const selection = window.getSelection()! - expect(selection).not.toBeNull() - - await user.pointer([{target: container, offset: 0, keys: '[MouseLeft>]'}, {offset: 8}]) - expect(selection.toString(), 'Outer div to cross inner mark').toBe(container.textContent?.slice(0, 8)) - - const MarkedText = container.firstElementChild! - const [span1, mark, span2] = MarkedText.children - - await user.pointer([ - {target: span1, offset: 0, keys: '[MouseLeft>]'}, - {target: mark, offset: 2}, - ]) - expect(selection.toString(), 'To mark from the start').toBe(container.textContent?.slice(0, 8)) - - await user.pointer([ - {target: span2, keys: '[MouseLeft>]'}, - {target: mark, offset: 2}, - ]) - expect(selection.toString(), 'To mark from the end').toBe(container.textContent?.slice(8)) - - await user.pointer([ - {target: span1, keys: '[MouseLeft>]'}, - {target: mark, offset: 2}, - ]) - expect(selection.toString(), 'To mark from before it').toBe(container.textContent?.slice(6, 8)) - - await user.pointer([ - {target: span2, offset: 0, keys: '[MouseLeft>]'}, - {target: mark, offset: 2}, - ]) - expect(selection.toString(), 'To mark from after it').toBe(container.textContent?.slice(8, 10)) - - await user.pointer([ - {target: mark, offset: 2, keys: '[MouseLeft>]'}, - {target: span1, offset: 2}, - ]) - expect(selection.toString(), 'To span 1 from mark').toBe(container.textContent?.slice(2, 8)) - - await user.pointer([ - {target: mark, offset: 2, keys: '[MouseLeft>]'}, - {target: span2, offset: 1}, - ]) - expect(selection.toString(), 'To span 2 from mark').toBe(container.textContent?.slice(8)) - - await user.pointer([{target: span1, offset: 2, keys: '[MouseLeft>]'}, {offset: 4}, {offset: 2}]) - expect(selection.isCollapsed).toBeTruthy() - await user.keyboard('abc') - expect(span1, 'Span stay editable after collapse inner selection').toHaveTextContent(/abc/) - }) -}) diff --git a/packages/tests/integrations/Overlay.spec.tsx b/packages/tests/integrations/Overlay.spec.tsx deleted file mode 100644 index 797de168..00000000 --- a/packages/tests/integrations/Overlay.spec.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import '@testing-library/jest-dom' -import {act, render} from '@testing-library/react' -import user from '@testing-library/user-event' -import {describe, expect, it, vi} from 'vitest' -import {Story} from '../../storybook/stories' - -const {Default} = Story.Base -const {DefaultOverlay} = Story.Overlay - -describe('API: Overlay and Triggers', () => { - //TODO not working - it.todo('should typed with default values of options', async () => { - const {container, getByText} = render() - - const element = container.firstElementChild?.firstElementChild as HTMLElement - await user.type(element, 'abc') - - expect(getByText(DefaultOverlay.args.defaultValue + 'abc')).toBeInTheDocument() - }) - - it('should typed with default values of options', async () => { - const {container, getByText} = render() - - const element = container.firstElementChild?.firstElementChild as HTMLElement - await user.type(element, 'abc') - - expect(getByText(DefaultOverlay.args.defaultValue + 'abc')).toBeInTheDocument() - }) - - it('should appear a overlay component by trigger', async () => { - //override event listener because 'selectionchange' don't work in here - const events: Record = {} - document.addEventListener = vi.fn((event, callback) => (events[event] = callback)) - document.removeEventListener = vi.fn(event => delete events[event]) - - const {getByText, findByText} = render( - - ) - const span = getByText(/@/i) - - await user.pointer({target: span, offset: 0, keys: '[MouseLeft]'}) - await user.pointer({target: span, offset: 1, keys: '[MouseLeft]'}) - - act(() => { - // @ts-ignore - events['selectionchange']({}) - }) - - expect(await findByText('Item')).toBeInTheDocument() - }) -}) diff --git a/packages/tests/integrations/createMarkedInput.spec.tsx b/packages/tests/integrations/createMarkedInput.spec.tsx deleted file mode 100644 index 70a9f1cc..00000000 --- a/packages/tests/integrations/createMarkedInput.spec.tsx +++ /dev/null @@ -1,50 +0,0 @@ -import '@testing-library/jest-dom' -import {act, render} from '@testing-library/react' -import user from '@testing-library/user-event' -import type {MarkedInputHandler} from 'rc-marked-input' -import {createMarkedInput} from 'rc-marked-input' -import {forwardRef} from 'react' -import {describe, expect, it, vi} from 'vitest' -import {Story} from '../../storybook/stories' - -const {Configured} = Story.Base - -describe(`Utility: createMarkedInput`, () => { - it('should render', () => { - const {container} = render() - expect(container).toBeInTheDocument() - }) - - it('should support to pass a forward overlay', async () => { - //override event listener because 'selectionchange' don't work in here - const events: Record = {} - document.addEventListener = vi.fn((event, callback) => (events[event] = callback)) - document.removeEventListener = vi.fn(event => delete events[event]) - - const Overlay = forwardRef(() => I'm here!) - const Input = createMarkedInput({Mark: () => null, Overlay}) - - const {queryByText, getByText} = render() - const span = getByText(/hello/i) - await user.type(span, '{ArrowRight}') - expect(span).toHaveFocus() - - await act(() => { - // @ts-ignore - events['selectionchange']({}) - }) - - expect(queryByText("I'm here!")).toBeInTheDocument() - }) - - it('should to support the ref prop', async () => { - const Input = createMarkedInput({}) - let ref: MarkedInputHandler | null = null - - render( (ref = el)} value={''} onChange={() => ({})} />) - - await act(() => { - expect(ref?.container).not.toBeNull() - }) - }) -}) diff --git a/packages/tests/integrations/keyboard.spec.tsx b/packages/tests/integrations/keyboard.spec.tsx deleted file mode 100644 index 87a087a5..00000000 --- a/packages/tests/integrations/keyboard.spec.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import '@testing-library/jest-dom' -import {render} from '@testing-library/react' -import user from '@testing-library/user-event' -import {describe, expect, it} from 'vitest' -import {Story} from '../../storybook/stories' -import {focusAtEnd, focusAtStart} from '../_utils/focus' - -const {Default} = Story.Base - -describe('Api: keyboard', () => { - it('should support the "Backspace" button', async () => { - const {getByText} = render() - - const tailSpan = getByText('!') - await focusAtEnd(tailSpan) - - //Remove last span - await user.keyboard('{Backspace}') - expect(tailSpan).toHaveTextContent('') - - //Remove mark - const mark = getByText(/mark/) - expect(mark).toBeInTheDocument() - await user.keyboard('{Backspace}') - expect(mark).not.toBeInTheDocument() - expect(tailSpan).not.toBeInTheDocument() - - // Remove first span - const headSpan = getByText(/Hello/) - expect(headSpan).toHaveTextContent('Hello ', {normalizeWhitespace: false}) - expect(headSpan).toHaveFocus() - await user.keyboard('{Backspace>7/}') - expect(headSpan).toHaveTextContent('') - }) - - it('should support the "Delete" button', async () => { - const {getByText} = render() - - const firstSpan = getByText(/Hello/) - await focusAtStart(firstSpan) - - await user.keyboard('{Delete>6/}') - expect(firstSpan).toHaveTextContent('') - - const mark = getByText(/mark/) - expect(mark).toBeInTheDocument() - await user.keyboard('{Delete}') - expect(mark).not.toBeInTheDocument() - expect(firstSpan).not.toBeInTheDocument() - - const secondSpan = getByText('!') - expect(secondSpan).toHaveFocus() - expect(secondSpan).toHaveTextContent('!') - await user.keyboard('{Delete>2/}') - expect(secondSpan).toHaveTextContent('') - }) - - it('should support focus navigation between spans', async () => { - const {getByText} = render() - - const firstSpan = getByText(/Hello/) - await focusAtStart(firstSpan) - - const secondSpan = getByText('!') - const firstSpanLength = firstSpan.textContent?.length ?? 0 - await user.keyboard(`{ArrowRight>${firstSpanLength + 1}/}`) - expect(secondSpan).toHaveFocus() - - await user.keyboard(`{ArrowLeft>1/}`) - expect(firstSpan).toHaveFocus() - }) - - it('should select all text with keyboard shortcut "Ctrl+A"', async () => { - const {container} = render() - const [span] = container.querySelectorAll('span') - - await focusAtStart(span) - - expect(window.getSelection()?.toString()).toBe('') - - await user.type(span, '{Control>}a{/Control}') - expect(window.getSelection()?.toString()).toBe(container.textContent) - - await user.type(span, '{Control>}A{/Control}') - expect(window.getSelection()?.toString()).toBe(container.textContent) - }) -}) diff --git a/packages/tests/integrations/stories.spec.tsx b/packages/tests/integrations/stories.spec.tsx deleted file mode 100644 index 98c64674..00000000 --- a/packages/tests/integrations/stories.spec.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import '@testing-library/jest-dom' -import {render} from '@testing-library/react' -import {describe, expect, it} from 'vitest' -import {Story} from '../../storybook/stories' - -//TODO correct type -const getTests = ([name, Story]: [string, any]) => - it(`Story ${name}`, async () => { - const {container} = render() - expect(container.textContent?.length).toBeTruthy() - }) - -describe('Component: stories', () => { - describe.todo('Ant stories', () => { - Object.entries(Story.Ant).map(getTests) - }) - - describe('Base stories', () => { - Object.entries(Story.Base).map(getTests) - }) - - describe('Dynamic stories', () => { - Object.entries(Story.Dynamic).map(getTests) - }) - - //TODO invoke 'The operation was aborted' error - describe.todo('Material stories', () => { - Object.entries(Story.Material).map(getTests) - }) - - describe('Overlay stories', () => { - Object.entries(Story.Overlay).map(getTests) - }) - - describe.todo('Rsuite stories', () => { - Object.entries(Story.Rsuite).map(getTests) - }) -}) diff --git a/packages/tests/package.json b/packages/tests/package.json deleted file mode 100644 index 709bb45a..00000000 --- a/packages/tests/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "tests", - "type": "module", - "scripts": { - "test": "vitest run", - "test:integration": "vitest run integrations", - "test:watch": "vitest", - "test:related": "vitest related", - "test:ui": "vitest --ui", - "coverage": "vitest run --coverage", - "run": "vite-node benchmarks/index.ts" - }, - "dependencies": { - "react": "catalog:", - "@faker-js/faker": "catalog:", - "@testing-library/jest-dom": "^6.9.1", - "@testing-library/react": "^16.3.0", - "@testing-library/user-event": "^14.6.1", - "@types/node": "^24.10.1", - "@vitest/coverage-v8": "catalog:", - "@vitest/ui": "catalog:", - "jsdom": "23.1.0", - "vitest": "catalog:", - "rc-marked-input": "workspace:*", - "sb": "workspace:*" - } -} diff --git a/packages/tests/template.ts b/packages/tests/template.ts deleted file mode 100644 index 66249878..00000000 --- a/packages/tests/template.ts +++ /dev/null @@ -1,8 +0,0 @@ -import {describe, it} from 'vitest' - -//Types: Utility, Component, Hook, etc. -describe(`[Type]: [name of tested]`, () => { - it.todo('should do this thing', () => {}) - - it.todo('does this thing', () => {}) -}) diff --git a/packages/tests/tsconfig.json b/packages/tests/tsconfig.json deleted file mode 100644 index 5f8d8e93..00000000 --- a/packages/tests/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "composite": true, - "types": ["vitest/globals"], - "skipLibCheck": true - }, - "include": ["./**/*.ts", "./**/*.tsx", "../core/src/**/*.ts"], - "exclude": ["node_modules", "dist"] -} diff --git a/packages/tests/vitest.config.ts b/packages/tests/vitest.config.ts deleted file mode 100644 index 5e88e282..00000000 --- a/packages/tests/vitest.config.ts +++ /dev/null @@ -1,20 +0,0 @@ -import {defineConfig} from 'vitest/config' -import react from '@vitejs/plugin-react-swc' -import path from 'path' -import {fileURLToPath} from 'url' - -const __filename = fileURLToPath(import.meta.url) -const __dirname = path.dirname(__filename) - -export default defineConfig({ - plugins: [react()] as any, - test: { - globals: true, - environment: 'jsdom', - include: ['**/*.spec.ts', '**/*.spec.tsx'], - coverage: { - provider: 'v8', - reporter: ['text', 'json', 'html'], - }, - }, -}) diff --git a/packages/website/astro.config.ts b/packages/website/astro.config.ts index 28b556b4..31270bc7 100644 --- a/packages/website/astro.config.ts +++ b/packages/website/astro.config.ts @@ -50,7 +50,7 @@ const sidebarConfig = [ }, typeDocSidebarGroup, {label: 'Comparisons', slug: 'comparisons', badge: wipBadge}, -].filter(item => isDev || ('badge' in item && item.badge !== wipBadge)) +].filter(item => isDev || !('badge' in item && item.badge === wipBadge)) // https://astro.build/config export default defineConfig({ @@ -97,6 +97,7 @@ export default defineConfig({ react(), ], vite: { + // @ts-expect-error Vite version type mismatch between Astro internal and workspace plugins: [tailwindcss()], }, }) diff --git a/packages/website/package.json b/packages/website/package.json index 77a63f31..de76c5e7 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -1,5 +1,5 @@ { - "name": "website", + "name": "@markput/website", "type": "module", "version": "0.0.1", "scripts": { @@ -7,22 +7,25 @@ "start": "astro dev", "build": "astro build", "preview": "astro preview", + "check": "astro check", "astro": "astro" }, "dependencies": { + "@astrojs/check": "^0.9.6", "@astrojs/react": "^4.4.2", - "@astrojs/starlight": "^0.36.2", + "@astrojs/starlight": "^0.37.0", "@astrojs/starlight-tailwind": "^4.0.2", "@astrojs/vercel": "^9.0.2", "@tailwindcss/vite": "^4.1.17", - "@types/react": "^19.2.7", - "@types/react-dom": "^19.2.3", - "astro": "^5.16.0", + "@types/react": "catalog:", + "@types/react-dom": "catalog:", + "astro": "^5.16.4", "rc-marked-input": "workspace:*", - "react": "^19.2.0", - "react-dom": "^19.2.0", + "react": "catalog:", + "react-dom": "catalog:", "sharp": "^0.34.5", - "starlight-typedoc": "^0.21.4", - "tailwindcss": "^4.1.17" + "starlight-typedoc": "^0.21.5", + "tailwindcss": "^4.1.17", + "typescript": "^5.9.3" } } \ No newline at end of file diff --git a/packages/website/src/components/demos/Step3Demo.tsx b/packages/website/src/components/demos/Step3Demo.tsx index b0df24f8..3440b701 100644 --- a/packages/website/src/components/demos/Step3Demo.tsx +++ b/packages/website/src/components/demos/Step3Demo.tsx @@ -19,14 +19,11 @@ const CustomOverlay = () => { .then(data => setUsers(data.items?.slice(0, 10) || [])) }, [match.value]) - useEffect(() => ref.current?.showPopover(), []) - return (
} - popover="auto" style={{top: style.top, left: style.left}} - className="border border-gray-200 shadow-md" + className="fixed z-10 bg-white border border-gray-200 shadow-md" > {users?.map(user => ( ; ``` -Defined in: node\_modules/.pnpm/@types+react@18.3.24/node\_modules/@types/react/index.d.ts:1156 +Defined in: node\_modules/.pnpm/@types+react@18.3.27/node\_modules/@types/react/index.d.ts:1156 :::caution[Deprecated] Lets you specify which legacy context is consumed by @@ -68,7 +68,7 @@ FunctionComponent.contextTypes optional defaultProps: Partial>; ``` -Defined in: node\_modules/.pnpm/@types+react@18.3.24/node\_modules/@types/react/index.d.ts:1179 +Defined in: node\_modules/.pnpm/@types+react@18.3.27/node\_modules/@types/react/index.d.ts:1179 Used to define default values for the props accepted by the component. @@ -109,7 +109,7 @@ FunctionComponent.defaultProps optional displayName: string; ``` -Defined in: node\_modules/.pnpm/@types+react@18.3.24/node\_modules/@types/react/index.d.ts:1198 +Defined in: node\_modules/.pnpm/@types+react@18.3.27/node\_modules/@types/react/index.d.ts:1198 Used in debugging messages. You might want to set it explicitly if you want to display a different name for @@ -144,7 +144,7 @@ FunctionComponent.displayName optional propTypes: WeakValidationMap>; ``` -Defined in: node\_modules/.pnpm/@types+react@18.3.24/node\_modules/@types/react/index.d.ts:1147 +Defined in: node\_modules/.pnpm/@types+react@18.3.27/node\_modules/@types/react/index.d.ts:1147 Used to declare the types of the props accepted by the component. These types will be checked during rendering diff --git a/packages/website/src/content/docs/api/interfaces/MarkedInputHandler.md b/packages/website/src/content/docs/api/interfaces/MarkedInputHandler.md index db1271b7..1af57e6f 100644 --- a/packages/website/src/content/docs/api/interfaces/MarkedInputHandler.md +++ b/packages/website/src/content/docs/api/interfaces/MarkedInputHandler.md @@ -5,7 +5,7 @@ prev: false title: "MarkedInputHandler" --- -Defined in: [packages/markput/src/types.ts:102](https://github.com/Nowely/marked-input/blob/next/packages/markput/src/types.ts#L102) +Defined in: [packages/markput/src/types.ts:103](https://github.com/Nowely/marked-input/blob/next/packages/markput/src/types.ts#L103) ## Properties @@ -15,7 +15,7 @@ Defined in: [packages/markput/src/types.ts:102](https://github.com/Nowely/marked readonly container: HTMLDivElement | null; ``` -Defined in: [packages/markput/src/types.ts:104](https://github.com/Nowely/marked-input/blob/next/packages/markput/src/types.ts#L104) +Defined in: [packages/markput/src/types.ts:105](https://github.com/Nowely/marked-input/blob/next/packages/markput/src/types.ts#L105) Container element @@ -27,7 +27,7 @@ Container element readonly overlay: HTMLElement | null; ``` -Defined in: [packages/markput/src/types.ts:106](https://github.com/Nowely/marked-input/blob/next/packages/markput/src/types.ts#L106) +Defined in: [packages/markput/src/types.ts:107](https://github.com/Nowely/marked-input/blob/next/packages/markput/src/types.ts#L107) Overlay element if exists @@ -39,7 +39,7 @@ Overlay element if exists focus(): void; ``` -Defined in: [packages/markput/src/types.ts:108](https://github.com/Nowely/marked-input/blob/next/packages/markput/src/types.ts#L108) +Defined in: [packages/markput/src/types.ts:109](https://github.com/Nowely/marked-input/blob/next/packages/markput/src/types.ts#L109) #### Returns diff --git a/packages/website/src/content/docs/introduction/getting-started.mdx b/packages/website/src/content/docs/introduction/getting-started.mdx index b4426562..bf6fa72f 100644 --- a/packages/website/src/content/docs/introduction/getting-started.mdx +++ b/packages/website/src/content/docs/introduction/getting-started.mdx @@ -122,12 +122,6 @@ The hook handles all the complexity: detecting triggers, tracking the search que In this example, we fetch GitHub users and store the username as `value` and avatar URL as `meta`. The `Mark` component then uses `meta` to display the avatar. You can use any UI library or custom component. Markput doesn't impose styling constraints. - - ## Try It Live Explore these interactive examples on CodeSandbox: diff --git a/packages/website/tsconfig.json b/packages/website/tsconfig.json index 4d3fdcf8..f3e41fdf 100644 --- a/packages/website/tsconfig.json +++ b/packages/website/tsconfig.json @@ -6,6 +6,9 @@ "jsx": "react-jsx", "jsxImportSource": "react", "baseUrl": ".", + "skipLibCheck": true, + "verbatimModuleSyntax": true, + "types": ["astro/client", "vite/client"], "paths": { "@/*": ["src/*"], "@components/*": ["src/components/*"] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c562d1bd..27cada42 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,16 +11,16 @@ catalogs: version: 10.1.0 '@types/react': specifier: ^18.3.24 - version: 18.3.24 + version: 18.3.27 '@types/react-dom': specifier: ^18.3.7 version: 18.3.7 '@vitest/coverage-v8': - specifier: ^4.0.8 - version: 4.0.8 + specifier: ^4.0.15 + version: 4.0.15 '@vitest/ui': - specifier: ^4.0.8 - version: 4.0.8 + specifier: ^4.0.15 + version: 4.0.15 react: specifier: ^18.3.1 version: 18.3.1 @@ -28,8 +28,8 @@ catalogs: specifier: ^18.3.1 version: 18.3.1 vitest: - specifier: ^4.0.8 - version: 4.0.8 + specifier: ^4.0.15 + version: 4.0.15 importers: @@ -43,35 +43,38 @@ importers: version: 18.3.1(react@18.3.1) devDependencies: '@microsoft/api-extractor': - specifier: ^7.55.0 - version: 7.55.0(@types/node@24.10.1) + specifier: ^7.55.1 + version: 7.55.1(@types/node@24.10.1) '@types/react': specifier: 'catalog:' - version: 18.3.24 + version: 18.3.27 '@types/react-dom': specifier: 'catalog:' - version: 18.3.7(@types/react@18.3.24) + version: 18.3.7(@types/react@18.3.27) '@vitejs/plugin-react-swc': specifier: ^4.2.2 - version: 4.2.2(@swc/helpers@0.5.17)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) + version: 4.2.2(@swc/helpers@0.5.17)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) oxlint: - specifier: ^1.28.0 - version: 1.28.0 + specifier: ^1.31.0 + version: 1.31.0 prettier: - specifier: 3.6.2 - version: 3.6.2 + specifier: ^3.7.4 + version: 3.7.4 typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^5.9.3 + version: 5.9.3 vite: - specifier: ^7.2.2 - version: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1) + specifier: ^7.2.6 + version: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) vite-plugin-css-injected-by-js: specifier: ^3.5.2 - version: 3.5.2(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) + version: 3.5.2(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) packages/app: dependencies: + rc-marked-input: + specifier: workspace:* + version: link:../markput react: specifier: 'catalog:' version: 18.3.1 @@ -81,19 +84,19 @@ importers: devDependencies: '@types/react': specifier: 'catalog:' - version: 18.3.24 + version: 18.3.27 '@types/react-dom': specifier: 'catalog:' - version: 18.3.7(@types/react@18.3.24) + version: 18.3.7(@types/react@18.3.27) '@vitejs/plugin-react-swc': specifier: ^4.2.2 - version: 4.2.2(@swc/helpers@0.5.17)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) + version: 4.2.2(@swc/helpers@0.5.17)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) typescript: - specifier: ^5.9.2 - version: 5.9.2 + specifier: ^5.9.3 + version: 5.9.3 vite: - specifier: ^7.2.2 - version: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1) + specifier: ^7.2.6 + version: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) packages/core: devDependencies: @@ -102,13 +105,13 @@ importers: version: 10.1.0 '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.0.8(vitest@4.0.8) + version: 4.0.15(@vitest/browser@4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))(vitest@4.0.15))(vitest@4.0.15) '@vitest/ui': specifier: 'catalog:' - version: 4.0.8(vitest@4.0.8) + version: 4.0.15(vitest@4.0.15) vitest: specifier: 'catalog:' - version: 4.0.8(@types/debug@4.1.12)(@types/node@24.10.1)(@vitest/ui@4.0.8)(jiti@2.6.1)(jsdom@23.1.0)(lightningcss@1.30.2)(yaml@2.8.1) + version: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(@vitest/ui@4.0.15)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) packages/markput: dependencies: @@ -117,22 +120,25 @@ importers: version: link:../core react: specifier: '>=17.0.0' - version: 18.3.1 + version: 19.2.0 packages/storybook: dependencies: '@emotion/react': specifier: ^11.14.0 - version: 11.14.0(@types/react@18.3.24)(react@18.3.1) + version: 11.14.0(@types/react@18.3.27)(react@18.3.1) '@emotion/styled': specifier: ^11.14.1 - version: 11.14.1(@emotion/react@11.14.0(@types/react@18.3.24)(react@18.3.1))(@types/react@18.3.24)(react@18.3.1) + version: 11.14.1(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@types/react@18.3.27)(react@18.3.1) + '@faker-js/faker': + specifier: 'catalog:' + version: 10.1.0 '@mui/material': - specifier: ^7.3.2 - version: 7.3.2(@emotion/react@11.14.0(@types/react@18.3.24)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.24)(react@18.3.1))(@types/react@18.3.24)(react@18.3.1))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: ^7.3.6 + version: 7.3.6(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@types/react@18.3.27)(react@18.3.1))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) antd: specifier: ^5.28.1 - version: 5.28.1(date-fns@2.30.0)(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.29.1(date-fns@2.30.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rc-marked-input: specifier: workspace:* version: link:../markput @@ -144,107 +150,98 @@ importers: version: 18.3.1(react@18.3.1) rsuite: specifier: ^5.83.3 - version: 5.83.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.83.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) devDependencies: '@storybook/addon-docs': - specifier: ^10.0.7 - version: 10.0.7(@types/react@18.3.24)(esbuild@0.25.10)(rollup@4.52.0)(storybook@10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)))(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) + specifier: ^10.1.4 + version: 10.1.4(@types/react@18.3.27)(esbuild@0.27.0)(rollup@4.53.3)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) '@storybook/addon-links': - specifier: ^10.0.7 - version: 10.0.7(react@18.3.1)(storybook@10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))) + specifier: ^10.1.4 + version: 10.1.4(react@18.3.1)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/cli': - specifier: ^10.0.7 - version: 10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) + specifier: ^10.1.4 + version: 10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/react-vite': - specifier: ^10.0.7 - version: 10.0.7(esbuild@0.25.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.52.0)(storybook@10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)))(typescript@5.9.2)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) - storybook: - specifier: ^10.0.7 - version: 10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) - - packages/tests: - dependencies: - '@faker-js/faker': - specifier: 'catalog:' - version: 10.1.0 - '@testing-library/jest-dom': - specifier: ^6.9.1 - version: 6.9.1 - '@testing-library/react': - specifier: ^16.3.0 - version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@testing-library/user-event': - specifier: ^14.6.1 - version: 14.6.1(@testing-library/dom@10.4.1) + specifier: ^10.1.4 + version: 10.1.4(esbuild@0.27.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.53.3)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) '@types/node': specifier: ^24.10.1 version: 24.10.1 + '@types/react': + specifier: 'catalog:' + version: 18.3.27 + '@types/react-dom': + specifier: 'catalog:' + version: 18.3.7(@types/react@18.3.27) + '@vitest/browser-playwright': + specifier: ^4.0.15 + version: 4.0.15(playwright@1.57.0)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))(vitest@4.0.15) '@vitest/coverage-v8': specifier: 'catalog:' - version: 4.0.8(vitest@4.0.8) + version: 4.0.15(@vitest/browser@4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))(vitest@4.0.15))(vitest@4.0.15) '@vitest/ui': specifier: 'catalog:' - version: 4.0.8(vitest@4.0.8) - jsdom: - specifier: 23.1.0 - version: 23.1.0 - rc-marked-input: - specifier: workspace:* - version: link:../markput - react: - specifier: 'catalog:' - version: 18.3.1 - sb: - specifier: workspace:* - version: link:../storybook + version: 4.0.15(vitest@4.0.15) + storybook: + specifier: ^10.1.4 + version: 10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) vitest: specifier: 'catalog:' - version: 4.0.8(@types/debug@4.1.12)(@types/node@24.10.1)(@vitest/ui@4.0.8)(jiti@2.6.1)(jsdom@23.1.0)(lightningcss@1.30.2)(yaml@2.8.1) + version: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(@vitest/ui@4.0.15)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) + vitest-browser-react: + specifier: ^2.0.2 + version: 2.0.2(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vitest@4.0.15) packages/website: dependencies: + '@astrojs/check': + specifier: ^0.9.6 + version: 0.9.6(prettier@3.7.4)(typescript@5.9.3) '@astrojs/react': specifier: ^4.4.2 - version: 4.4.2(@types/node@24.10.1)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(jiti@2.6.1)(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(yaml@2.8.1) + version: 4.4.2(@types/node@24.10.1)(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(jiti@2.6.1)(lightningcss@1.30.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(yaml@2.8.2) '@astrojs/starlight': - specifier: ^0.36.2 - version: 0.36.2(astro@5.16.0(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1)) + specifier: ^0.37.0 + version: 0.37.0(astro@5.16.4(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2)) '@astrojs/starlight-tailwind': specifier: ^4.0.2 - version: 4.0.2(@astrojs/starlight@0.36.2(astro@5.16.0(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1)))(tailwindcss@4.1.17) + version: 4.0.2(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2)))(tailwindcss@4.1.17) '@astrojs/vercel': specifier: ^9.0.2 - version: 9.0.2(astro@5.16.0(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1))(react@19.2.0)(rollup@4.52.0) + version: 9.0.2(astro@5.16.4(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2))(react@18.3.1)(rollup@4.53.3) '@tailwindcss/vite': specifier: ^4.1.17 - version: 4.1.17(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) + version: 4.1.17(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) '@types/react': - specifier: ^19.2.7 - version: 19.2.7 + specifier: 'catalog:' + version: 18.3.27 '@types/react-dom': - specifier: ^19.2.3 - version: 19.2.3(@types/react@19.2.7) + specifier: 'catalog:' + version: 18.3.7(@types/react@18.3.27) astro: - specifier: ^5.16.0 - version: 5.16.0(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1) + specifier: ^5.16.4 + version: 5.16.4(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2) rc-marked-input: specifier: workspace:* version: link:../markput react: - specifier: ^19.2.0 - version: 19.2.0 + specifier: 'catalog:' + version: 18.3.1 react-dom: - specifier: ^19.2.0 - version: 19.2.0(react@19.2.0) + specifier: 'catalog:' + version: 18.3.1(react@18.3.1) sharp: specifier: ^0.34.5 version: 0.34.5 starlight-typedoc: - specifier: ^0.21.4 - version: 0.21.4(@astrojs/starlight@0.36.2(astro@5.16.0(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1)))(typedoc-plugin-markdown@4.9.0(typedoc@0.28.14(typescript@5.9.2)))(typedoc@0.28.14(typescript@5.9.2)) + specifier: ^0.21.5 + version: 0.21.5(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2)))(typedoc-plugin-markdown@4.9.0(typedoc@0.28.15(typescript@5.9.3)))(typedoc@0.28.15(typescript@5.9.3)) tailwindcss: specifier: ^4.1.17 version: 4.1.17 + typescript: + specifier: ^5.9.3 + version: 5.9.3 packages: @@ -285,8 +282,11 @@ packages: peerDependencies: react: '>=16.9.0' - '@asamuzakjp/css-color@3.2.0': - resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + '@astrojs/check@0.9.6': + resolution: {integrity: sha512-jlaEu5SxvSgmfGIFfNgcn5/f+29H61NJzEMfAZ82Xopr4XBchXB1GVlcJsE+elUlsYSbXlptZLX+JMG3b/wZEA==} + hasBin: true + peerDependencies: + typescript: ^5.0.0 '@astrojs/compiler@2.13.0': resolution: {integrity: sha512-mqVORhUJViA28fwHYaWmsXSzLO9osbdZ5ImUfxBarqsYdMlPbqAqGJCxsNzvppp1BEzc1mJNjOVvQqeDN8Vspw==} @@ -294,6 +294,18 @@ packages: '@astrojs/internal-helpers@0.7.5': resolution: {integrity: sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==} + '@astrojs/language-server@2.16.2': + resolution: {integrity: sha512-J3hVx/mFi3FwEzKf8ExYXQNERogD6RXswtbU+TyrxoXRBiQoBO5ooo7/lRWJ+rlUKUd7+rziMPI9jYB7TRlh0w==} + hasBin: true + peerDependencies: + prettier: ^3.0.0 + prettier-plugin-astro: '>=0.11.0' + peerDependenciesMeta: + prettier: + optional: true + prettier-plugin-astro: + optional: true + '@astrojs/markdown-remark@6.3.9': resolution: {integrity: sha512-hX2cLC/KW74Io1zIbn92kI482j9J7LleBLGCVU9EP3BeH5MVrnFawOnqD0t/q6D1Z+ZNeQG2gNKMslCcO36wng==} @@ -325,8 +337,8 @@ packages: '@astrojs/starlight': '>=0.34.0' tailwindcss: ^4.0.0 - '@astrojs/starlight@0.36.2': - resolution: {integrity: sha512-QR8NfO7+7DR13kBikhQwAj3IAoptLLNs9DkyKko2M2l3PrqpcpVUnw1JBJ0msGDIwE6tBbua2UeBND48mkh03w==} + '@astrojs/starlight@0.37.0': + resolution: {integrity: sha512-1AlaEjYYRO+5o6P5maPUBQZr6Q3wtuhMQTmsDQExI07wJVwe7EC2wGhXnFo+jpCjwHv/Bdg33PQheY4UhMj01g==} peerDependencies: astro: ^5.5.0 @@ -339,20 +351,23 @@ packages: peerDependencies: astro: ^5.0.0 + '@astrojs/yaml2ts@0.2.2': + resolution: {integrity: sha512-GOfvSr5Nqy2z5XiwqTouBBpy5FyI6DEe+/g/Mk5am9SjILN1S5fOEvYK0GuWHg98yS/dobP4m8qyqw/URW35fQ==} + '@babel/code-frame@7.27.1': resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.28.4': - resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} + '@babel/compat-data@7.28.5': + resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==} engines: {node: '>=6.9.0'} - '@babel/core@7.28.4': - resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} + '@babel/core@7.28.5': + resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} engines: {node: '>=6.9.0'} - '@babel/generator@7.28.3': - resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==} + '@babel/generator@7.28.5': + resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.27.3': @@ -363,8 +378,8 @@ packages: resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.28.3': - resolution: {integrity: sha512-V9f6ZFIYSLNEbuGA/92uOvYsGCJNsuA8ESZ4ldc09bWk/j8H8TKiPw8Mk1eG6olpnO0ALHJmYfZvF4MEE4gajg==} + '@babel/helper-create-class-features-plugin@7.28.5': + resolution: {integrity: sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 @@ -373,8 +388,8 @@ packages: resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.27.1': - resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} + '@babel/helper-member-expression-to-functions@7.28.5': + resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==} engines: {node: '>=6.9.0'} '@babel/helper-module-imports@7.27.1': @@ -409,10 +424,6 @@ packages: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.28.5': resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} @@ -425,11 +436,6 @@ packages: resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.4': - resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.28.5': resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} engines: {node: '>=6.0.0'} @@ -477,8 +483,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-optional-chaining@7.27.1': - resolution: {integrity: sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg==} + '@babel/plugin-transform-optional-chaining@7.28.5': + resolution: {integrity: sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -501,8 +507,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.28.0': - resolution: {integrity: sha512-4AEiDEBPIZvLQaWlc9liCavE0xRM0dNca41WtBeM3jgFptfUOSG9z0uteLhq6+3rq+WB6jIvUwKDTpXEHPJ2Vg==} + '@babel/plugin-transform-typescript@7.28.5': + resolution: {integrity: sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -513,8 +519,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/preset-typescript@7.27.1': - resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} + '@babel/preset-typescript@7.28.5': + resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -533,12 +539,8 @@ packages: resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} - '@babel/traverse@7.28.4': - resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==} - engines: {node: '>=6.9.0'} - - '@babel/types@7.28.4': - resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} + '@babel/traverse@7.28.5': + resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==} engines: {node: '>=6.9.0'} '@babel/types@7.28.5': @@ -553,37 +555,30 @@ packages: resolution: {integrity: sha512-8XqW8xGn++Eqqbz3e9wKuK7mxryeRjs4LOHLxbh2lwKeSbuNR4NFifDZT4KzvjU6HMOPbiNTsWpniK5EJfTWkg==} engines: {node: '>=18'} - '@csstools/color-helpers@5.1.0': - resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} - engines: {node: '>=18'} + '@ctrl/tinycolor@4.2.0': + resolution: {integrity: sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==} + engines: {node: '>=14'} - '@csstools/css-calc@2.1.4': - resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} - engines: {node: '>=18'} - peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.5 - '@csstools/css-tokenizer': ^3.0.4 + '@emmetio/abbreviation@2.3.3': + resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==} - '@csstools/css-color-parser@3.1.0': - resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} - engines: {node: '>=18'} - peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.5 - '@csstools/css-tokenizer': ^3.0.4 + '@emmetio/css-abbreviation@2.1.8': + resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==} - '@csstools/css-parser-algorithms@3.0.5': - resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} - engines: {node: '>=18'} - peerDependencies: - '@csstools/css-tokenizer': ^3.0.4 + '@emmetio/css-parser@0.4.1': + resolution: {integrity: sha512-2bC6m0MV/voF4CTZiAbG5MWKbq5EBmDPKu9Sb7s7nVcEzNQlrZP6mFFFlIaISM8X6514H9shWMme1fCm8cWAfQ==} - '@csstools/css-tokenizer@3.0.4': - resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} - engines: {node: '>=18'} + '@emmetio/html-matcher@1.3.0': + resolution: {integrity: sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==} - '@ctrl/tinycolor@4.2.0': - resolution: {integrity: sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A==} - engines: {node: '>=14'} + '@emmetio/scanner@1.0.4': + resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==} + + '@emmetio/stream-reader-utils@0.1.0': + resolution: {integrity: sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==} + + '@emmetio/stream-reader@2.2.0': + resolution: {integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==} '@emnapi/runtime@1.7.1': resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} @@ -648,158 +643,314 @@ packages: '@emotion/weak-memoize@0.4.0': resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} - '@esbuild/aix-ppc64@0.25.10': - resolution: {integrity: sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==} + '@esbuild/aix-ppc64@0.25.12': + resolution: {integrity: sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.25.10': - resolution: {integrity: sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==} + '@esbuild/aix-ppc64@0.27.0': + resolution: {integrity: sha512-KuZrd2hRjz01y5JK9mEBSD3Vj3mbCvemhT466rSuJYeE/hjuBrHfjjcjMdTm/sz7au+++sdbJZJmuBwQLuw68A==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.25.12': + resolution: {integrity: sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.25.10': - resolution: {integrity: sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==} + '@esbuild/android-arm64@0.27.0': + resolution: {integrity: sha512-CC3vt4+1xZrs97/PKDkl0yN7w8edvU2vZvAFGD16n9F0Cvniy5qvzRXjfO1l94efczkkQE6g1x0i73Qf5uthOQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.25.12': + resolution: {integrity: sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.27.0': + resolution: {integrity: sha512-j67aezrPNYWJEOHUNLPj9maeJte7uSMM6gMoxfPC9hOg8N02JuQi/T7ewumf4tNvJadFkvLZMlAq73b9uwdMyQ==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.25.10': - resolution: {integrity: sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==} + '@esbuild/android-x64@0.25.12': + resolution: {integrity: sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.27.0': + resolution: {integrity: sha512-wurMkF1nmQajBO1+0CJmcN17U4BP6GqNSROP8t0X/Jiw2ltYGLHpEksp9MpoBqkrFR3kv2/te6Sha26k3+yZ9Q==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.25.10': - resolution: {integrity: sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==} + '@esbuild/darwin-arm64@0.25.12': + resolution: {integrity: sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.27.0': + resolution: {integrity: sha512-uJOQKYCcHhg07DL7i8MzjvS2LaP7W7Pn/7uA0B5S1EnqAirJtbyw4yC5jQ5qcFjHK9l6o/MX9QisBg12kNkdHg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.25.10': - resolution: {integrity: sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==} + '@esbuild/darwin-x64@0.25.12': + resolution: {integrity: sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.0': + resolution: {integrity: sha512-8mG6arH3yB/4ZXiEnXof5MK72dE6zM9cDvUcPtxhUZsDjESl9JipZYW60C3JGreKCEP+p8P/72r69m4AZGJd5g==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.25.10': - resolution: {integrity: sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==} + '@esbuild/freebsd-arm64@0.25.12': + resolution: {integrity: sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.10': - resolution: {integrity: sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==} + '@esbuild/freebsd-arm64@0.27.0': + resolution: {integrity: sha512-9FHtyO988CwNMMOE3YIeci+UV+x5Zy8fI2qHNpsEtSF83YPBmE8UWmfYAQg6Ux7Gsmd4FejZqnEUZCMGaNQHQw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.25.12': + resolution: {integrity: sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.0': + resolution: {integrity: sha512-zCMeMXI4HS/tXvJz8vWGexpZj2YVtRAihHLk1imZj4efx1BQzN76YFeKqlDr3bUWI26wHwLWPd3rwh6pe4EV7g==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.25.10': - resolution: {integrity: sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==} + '@esbuild/linux-arm64@0.25.12': + resolution: {integrity: sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.25.10': - resolution: {integrity: sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==} + '@esbuild/linux-arm64@0.27.0': + resolution: {integrity: sha512-AS18v0V+vZiLJyi/4LphvBE+OIX682Pu7ZYNsdUHyUKSoRwdnOsMf6FDekwoAFKej14WAkOef3zAORJgAtXnlQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.25.12': + resolution: {integrity: sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.25.10': - resolution: {integrity: sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==} + '@esbuild/linux-arm@0.27.0': + resolution: {integrity: sha512-t76XLQDpxgmq2cNXKTVEB7O7YMb42atj2Re2Haf45HkaUpjM2J0UuJZDuaGbPbamzZ7bawyGFUkodL+zcE+jvQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.25.12': + resolution: {integrity: sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.25.10': - resolution: {integrity: sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==} + '@esbuild/linux-ia32@0.27.0': + resolution: {integrity: sha512-Mz1jxqm/kfgKkc/KLHC5qIujMvnnarD9ra1cEcrs7qshTUSksPihGrWHVG5+osAIQ68577Zpww7SGapmzSt4Nw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.25.12': + resolution: {integrity: sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.27.0': + resolution: {integrity: sha512-QbEREjdJeIreIAbdG2hLU1yXm1uu+LTdzoq1KCo4G4pFOLlvIspBm36QrQOar9LFduavoWX2msNFAAAY9j4BDg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.25.10': - resolution: {integrity: sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==} + '@esbuild/linux-mips64el@0.25.12': + resolution: {integrity: sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.27.0': + resolution: {integrity: sha512-sJz3zRNe4tO2wxvDpH/HYJilb6+2YJxo/ZNbVdtFiKDufzWq4JmKAiHy9iGoLjAV7r/W32VgaHGkk35cUXlNOg==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.25.10': - resolution: {integrity: sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==} + '@esbuild/linux-ppc64@0.25.12': + resolution: {integrity: sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.25.10': - resolution: {integrity: sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==} + '@esbuild/linux-ppc64@0.27.0': + resolution: {integrity: sha512-z9N10FBD0DCS2dmSABDBb5TLAyF1/ydVb+N4pi88T45efQ/w4ohr/F/QYCkxDPnkhkp6AIpIcQKQ8F0ANoA2JA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.25.12': + resolution: {integrity: sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.25.10': - resolution: {integrity: sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==} + '@esbuild/linux-riscv64@0.27.0': + resolution: {integrity: sha512-pQdyAIZ0BWIC5GyvVFn5awDiO14TkT/19FTmFcPdDec94KJ1uZcmFs21Fo8auMXzD4Tt+diXu1LW1gHus9fhFQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.25.12': + resolution: {integrity: sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.27.0': + resolution: {integrity: sha512-hPlRWR4eIDDEci953RI1BLZitgi5uqcsjKMxwYfmi4LcwyWo2IcRP+lThVnKjNtk90pLS8nKdroXYOqW+QQH+w==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.25.10': - resolution: {integrity: sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==} + '@esbuild/linux-x64@0.25.12': + resolution: {integrity: sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.25.10': - resolution: {integrity: sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==} + '@esbuild/linux-x64@0.27.0': + resolution: {integrity: sha512-1hBWx4OUJE2cab++aVZ7pObD6s+DK4mPGpemtnAORBvb5l/g5xFGk0vc0PjSkrDs0XaXj9yyob3d14XqvnQ4gw==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.12': + resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.10': - resolution: {integrity: sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==} + '@esbuild/netbsd-arm64@0.27.0': + resolution: {integrity: sha512-6m0sfQfxfQfy1qRuecMkJlf1cIzTOgyaeXaiVaaki8/v+WB+U4hc6ik15ZW6TAllRlg/WuQXxWj1jx6C+dfy3w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.12': + resolution: {integrity: sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.25.10': - resolution: {integrity: sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==} + '@esbuild/netbsd-x64@0.27.0': + resolution: {integrity: sha512-xbbOdfn06FtcJ9d0ShxxvSn2iUsGd/lgPIO2V3VZIPDbEaIj1/3nBBe1AwuEZKXVXkMmpr6LUAgMkLD/4D2PPA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.12': + resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.27.0': + resolution: {integrity: sha512-fWgqR8uNbCQ/GGv0yhzttj6sU/9Z5/Sv/VGU3F5OuXK6J6SlriONKrQ7tNlwBrJZXRYk5jUhuWvF7GYzGguBZQ==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.10': - resolution: {integrity: sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==} + '@esbuild/openbsd-x64@0.25.12': + resolution: {integrity: sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.0': + resolution: {integrity: sha512-aCwlRdSNMNxkGGqQajMUza6uXzR/U0dIl1QmLjPtRbLOx3Gy3otfFu/VjATy4yQzo9yFDGTxYDo1FfAD9oRD2A==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.25.10': - resolution: {integrity: sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==} + '@esbuild/openharmony-arm64@0.25.12': + resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/openharmony-arm64@0.27.0': + resolution: {integrity: sha512-nyvsBccxNAsNYz2jVFYwEGuRRomqZ149A39SHWk4hV0jWxKM0hjBPm3AmdxcbHiFLbBSwG6SbpIcUbXjgyECfA==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.25.10': - resolution: {integrity: sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==} + '@esbuild/sunos-x64@0.25.12': + resolution: {integrity: sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.27.0': + resolution: {integrity: sha512-Q1KY1iJafM+UX6CFEL+F4HRTgygmEW568YMqDA5UV97AuZSm21b7SXIrRJDwXWPzr8MGr75fUZPV67FdtMHlHA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.25.10': - resolution: {integrity: sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==} + '@esbuild/win32-arm64@0.25.12': + resolution: {integrity: sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.25.10': - resolution: {integrity: sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==} + '@esbuild/win32-arm64@0.27.0': + resolution: {integrity: sha512-W1eyGNi6d+8kOmZIwi/EDjrL9nxQIQ0MiGqe/AWc6+IaHloxHSGoeRgDRKHFISThLmsewZ5nHFvGFWdBYlgKPg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.25.12': + resolution: {integrity: sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.27.0': + resolution: {integrity: sha512-30z1aKL9h22kQhilnYkORFYt+3wp7yZsHWus+wSKAJR8JtdfI76LJ4SBdMsCopTR3z/ORqVu5L1vtnHZWVj4cQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.25.10': - resolution: {integrity: sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==} + '@esbuild/win32-x64@0.25.12': + resolution: {integrity: sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.27.0': + resolution: {integrity: sha512-aIitBcjQeyOhMTImhLZmtxfdOcuNRpwlPNmlFKPcHQYPhEssw75Cl1TSXJXpMkzaua9FUetx/4OQKq7eJul5Cg==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -820,8 +971,8 @@ packages: resolution: {integrity: sha512-C3mrr3b5dRVlKPJdfrAXS8+dq+rq8Qm5SNRazca0JKgw1HQERFmrVb0towvMmw5uu8hHKNiQasMaR/tydf3Zsg==} engines: {node: ^20.19.0 || ^22.13.0 || ^23.5.0 || >=24.0.0, npm: '>=10'} - '@gerrit0/mini-shiki@3.15.0': - resolution: {integrity: sha512-L5IHdZIDa4bG4yJaOzfasOH/o22MCesY0mx+n6VATbaiCtMeR59pdRqYk4bEiQkIHfxsHPNgdi7VJlZb2FhdMQ==} + '@gerrit0/mini-shiki@3.17.0': + resolution: {integrity: sha512-Bpf6WuFar20ZXL6qU6VpVl4bVQfyyYiX+6O4xrns4nkU3Mr8paeupDbS1HENpcLOYj7pN4Rkd/yCaPA0vQwKww==} '@img/colour@1.0.0': resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==} @@ -1018,11 +1169,11 @@ packages: '@types/react': '>=16' react: '>=16' - '@microsoft/api-extractor-model@7.32.0': - resolution: {integrity: sha512-QIVJSreb8fGGJy1Qx0yzGVXxvHJN1WXgkFNHFheVv1iBJNqgvp+xeT3ienJmRwXmPPc5Es/cxBrXtKZJR3i7iw==} + '@microsoft/api-extractor-model@7.32.1': + resolution: {integrity: sha512-u4yJytMYiUAnhcNQcZDTh/tVtlrzKlyKrQnLOV+4Qr/5gV+cpufWzCYAB1Q23URFqD6z2RoL2UYncM9xJVGNKA==} - '@microsoft/api-extractor@7.55.0': - resolution: {integrity: sha512-TYc5OtAK/9E3HGgd2bIfSjQDYIwPc0dysf9rPiwXZGsq916I6W2oww9bhm1OxPOeg6rMfOX3PoroGd7oCryYog==} + '@microsoft/api-extractor@7.55.1': + resolution: {integrity: sha512-l8Z+8qrLkZFM3HM95Dbpqs6G39fpCa7O5p8A7AkA6hSevxkgwsOlLrEuPv0ADOyj5dI1Af5WVDiwpKG/ya5G3w==} hasBin: true '@microsoft/tsdoc-config@0.18.0': @@ -1031,16 +1182,16 @@ packages: '@microsoft/tsdoc@0.16.0': resolution: {integrity: sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==} - '@mui/core-downloads-tracker@7.3.2': - resolution: {integrity: sha512-AOyfHjyDKVPGJJFtxOlept3EYEdLoar/RvssBTWVAvDJGIE676dLi2oT/Kx+FoVXFoA/JdV7DEMq/BVWV3KHRw==} + '@mui/core-downloads-tracker@7.3.6': + resolution: {integrity: sha512-QaYtTHlr8kDFN5mE1wbvVARRKH7Fdw1ZuOjBJcFdVpfNfRYKF3QLT4rt+WaB6CKJvpqxRsmEo0kpYinhH5GeHg==} - '@mui/material@7.3.2': - resolution: {integrity: sha512-qXvbnawQhqUVfH1LMgMaiytP+ZpGoYhnGl7yYq2x57GYzcFL/iPzSZ3L30tlbwEjSVKNYcbiKO8tANR1tadjUg==} + '@mui/material@7.3.6': + resolution: {integrity: sha512-R4DaYF3dgCQCUAkr4wW1w26GHXcf5rCmBRHVBuuvJvaGLmZdD8EjatP80Nz5JCw0KxORAzwftnHzXVnjR8HnFw==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.5.0 '@emotion/styled': ^11.3.0 - '@mui/material-pigment-css': ^7.3.2 + '@mui/material-pigment-css': ^7.3.6 '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -1054,8 +1205,8 @@ packages: '@types/react': optional: true - '@mui/private-theming@7.3.2': - resolution: {integrity: sha512-ha7mFoOyZGJr75xeiO9lugS3joRROjc8tG1u4P50dH0KR7bwhHznVMcYg7MouochUy0OxooJm/OOSpJ7gKcMvg==} + '@mui/private-theming@7.3.6': + resolution: {integrity: sha512-Ws9wZpqM+FlnbZXaY/7yvyvWQo1+02Tbx50mVdNmzWEi51C51y56KAbaDCYyulOOBL6BJxuaqG8rNNuj7ivVyw==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -1064,8 +1215,8 @@ packages: '@types/react': optional: true - '@mui/styled-engine@7.3.2': - resolution: {integrity: sha512-PkJzW+mTaek4e0nPYZ6qLnW5RGa0KN+eRTf5FA2nc7cFZTeM+qebmGibaTLrgQBy3UpcpemaqfzToBNkzuxqew==} + '@mui/styled-engine@7.3.6': + resolution: {integrity: sha512-+wiYbtvj+zyUkmDB+ysH6zRjuQIJ+CM56w0fEXV+VDNdvOuSywG+/8kpjddvvlfMLsaWdQe5oTuYGBcodmqGzQ==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.4.1 @@ -1077,8 +1228,8 @@ packages: '@emotion/styled': optional: true - '@mui/system@7.3.2': - resolution: {integrity: sha512-9d8JEvZW+H6cVkaZ+FK56R53vkJe3HsTpcjMUtH8v1xK6Y1TjzHdZ7Jck02mGXJsE6MQGWVs3ogRHTQmS9Q/rA==} + '@mui/system@7.3.6': + resolution: {integrity: sha512-8fehAazkHNP1imMrdD2m2hbA9sl7Ur6jfuNweh5o4l9YPty4iaZzRXqYvBCWQNwFaSHmMEj2KPbyXGp7Bt73Rg==} engines: {node: '>=14.0.0'} peerDependencies: '@emotion/react': ^11.5.0 @@ -1093,16 +1244,16 @@ packages: '@types/react': optional: true - '@mui/types@7.4.6': - resolution: {integrity: sha512-NVBbIw+4CDMMppNamVxyTccNv0WxtDb7motWDlMeSC8Oy95saj1TIZMGynPpFLePt3yOD8TskzumeqORCgRGWw==} + '@mui/types@7.4.9': + resolution: {integrity: sha512-dNO8Z9T2cujkSIaCnWwprfeKmTWh97cnjkgmpFJ2sbfXLx8SMZijCYHOtP/y5nnUb/Rm2omxbDMmtUoSaUtKaw==} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@types/react': optional: true - '@mui/utils@7.3.2': - resolution: {integrity: sha512-4DMWQGenOdLnM3y/SdFQFwKsCLM+mqxzvoWp9+x2XdEzXapkznauHLiXtSohHs/mc0+5/9UACt1GdugCX2te5g==} + '@mui/utils@7.3.6': + resolution: {integrity: sha512-jn+Ba02O6PiFs7nKva8R2aJJ9kJC+3kQ2R0BbKNY3KQQ36Qng98GnPRFTlbwYTdMD6hLEBKaMLUktyg/rTfd2w==} engines: {node: '>=14.0.0'} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -1111,46 +1262,58 @@ packages: '@types/react': optional: true + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + '@oslojs/encoding@1.1.0': resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} - '@oxlint/darwin-arm64@1.28.0': - resolution: {integrity: sha512-H7J41/iKbgm7tTpdSnA/AtjEAhxyzNzCMKWtKU5wDuP2v39jrc3fasQEJruk6hj1YXPbJY4N+1nK/jE27GMGDQ==} + '@oxlint/darwin-arm64@1.31.0': + resolution: {integrity: sha512-HqoYNH5WFZRdqGUROTFGOdBcA9y/YdHNoR/ujlyVO53it+q96dujbgKEvlff/WEuo4LbDKBrKLWKTKvOd/VYdg==} cpu: [arm64] os: [darwin] - '@oxlint/darwin-x64@1.28.0': - resolution: {integrity: sha512-bGsSDEwpyYzNc6FIwhTmbhSK7piREUjMlmWBt7eoR3ract0+RfhZYYG4se1Ngs+4WOFC0B3gbv23fyF+cnbGGQ==} + '@oxlint/darwin-x64@1.31.0': + resolution: {integrity: sha512-gNq+JQXBCkYKQhmJEgSNjuPqmdL8yBEX3v0sueLH3g5ym4OIrNO7ml1M7xzCs0zhINQCR9MsjMJMyBNaF1ed+g==} cpu: [x64] os: [darwin] - '@oxlint/linux-arm64-gnu@1.28.0': - resolution: {integrity: sha512-eNH/evMpV3xAA4jIS8dMLcGkM/LK0WEHM0RO9bxrHPAwfS72jhyPJtd0R7nZhvhG6U1bhn5jhoXbk1dn27XIAQ==} + '@oxlint/linux-arm64-gnu@1.31.0': + resolution: {integrity: sha512-cRmttpr3yHPwbrvtPNlv+0Zw2Oeh0cU902iMI4fFW9ylbW/vUAcz6DvzGMCYZbII8VDiwQ453SV5AA8xBgMbmw==} cpu: [arm64] os: [linux] - '@oxlint/linux-arm64-musl@1.28.0': - resolution: {integrity: sha512-ickvpcekNeRLND3llndiZOtJBb6LDZqNnZICIDkovURkOIWPGJGmAxsHUOI6yW6iny9gLmIEIGl/c1b5nFk6Ag==} + '@oxlint/linux-arm64-musl@1.31.0': + resolution: {integrity: sha512-0p7vn0hdMdNPIUzemw8f1zZ2rRZ/963EkK3o4P0KUXOPgleo+J9ZIPH7gcHSHtyrNaBifN03wET1rH4SuWQYnA==} cpu: [arm64] os: [linux] - '@oxlint/linux-x64-gnu@1.28.0': - resolution: {integrity: sha512-DkgAh4LQ8NR3DwTT7/LGMhaMau0RtZkih91Ez5Usk7H7SOxo1GDi84beE7it2Q+22cAzgY4hbw3c6svonQTjxg==} + '@oxlint/linux-x64-gnu@1.31.0': + resolution: {integrity: sha512-vNIbpSwQ4dwN0CUmojG7Y91O3CXOf0Kno7DSTshk/JJR4+u8HNVuYVjX2qBRk0OMc4wscJbEd7wJCl0VJOoCOw==} cpu: [x64] os: [linux] - '@oxlint/linux-x64-musl@1.28.0': - resolution: {integrity: sha512-VBnMi3AJ2w5p/kgeyrjcGOKNY8RzZWWvlGHjCJwzqPgob4MXu6T+5Yrdi7EVJyIlouL8E3LYPYjmzB9NBi9gZw==} + '@oxlint/linux-x64-musl@1.31.0': + resolution: {integrity: sha512-4avnH09FJRTOT2cULdDPG0s14C+Ku4cnbNye6XO7rsiX6Bprz+aQblLA+1WLOr7UfC/0zF+jnZ9K5VyBBJy9Kw==} cpu: [x64] os: [linux] - '@oxlint/win32-arm64@1.28.0': - resolution: {integrity: sha512-tomhIks+4dKs8axB+s4GXHy+ZWXhUgptf1XnG5cZg8CzRfX4JFX9k8l2fPUgFwytWnyyvZaaXLRPWGzoZ6yoHQ==} + '@oxlint/win32-arm64@1.31.0': + resolution: {integrity: sha512-mQaD5H93OUpxiGjC518t5wLQikf0Ur5mQEKO2VoTlkp01gqmrQ+hyCLOzABlsAIAeDJD58S9JwNOw4KFFnrqdw==} cpu: [arm64] os: [win32] - '@oxlint/win32-x64@1.28.0': - resolution: {integrity: sha512-4+VO5P/UJ2nq9sj6kQToJxFy5cKs7dGIN2DiUSQ7cqyUi7EKYNQKe+98HFcDOjtm33jQOQnc4kw8Igya5KPozg==} + '@oxlint/win32-x64@1.31.0': + resolution: {integrity: sha512-AS/h58HfloccRlVs7P3zbyZfxNS62JuE8/3fYGjkiRlR1ZoDxdqmz5QgLEn+YxxFUTMmclGAPMFHg9z2Pk315A==} cpu: [x64] os: [win32] @@ -1231,8 +1394,8 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' - '@rc-component/qrcode@1.1.0': - resolution: {integrity: sha512-ABA80Yer0c6I2+moqNY0kF3Y1NxIT6wDP/EINIqbiRbfZKP1HtHpKMh8WuTXLgVGYsoWG2g9/n0PgM8KdnJb4Q==} + '@rc-component/qrcode@1.1.1': + resolution: {integrity: sha512-LfLGNymzKdUPjXUbRP+xOhIWY4jQ+YMj5MmWAcgcAq1Ij8XP7tRmAXqyuv96XvLUBE/5cA8hLFl9eO1JQMujrA==} engines: {node: '>=8.x'} peerDependencies: react: '>=16.9.0' @@ -1267,127 +1430,127 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.52.0': - resolution: {integrity: sha512-VxDYCDqOaR7NXzAtvRx7G1u54d2kEHopb28YH/pKzY6y0qmogP3gG7CSiWsq9WvDFxOQMpNEyjVAHZFXfH3o/A==} + '@rollup/rollup-android-arm-eabi@4.53.3': + resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.52.0': - resolution: {integrity: sha512-pqDirm8koABIKvzL59YI9W9DWbRlTX7RWhN+auR8HXJxo89m4mjqbah7nJZjeKNTNYopqL+yGg+0mhCpf3xZtQ==} + '@rollup/rollup-android-arm64@4.53.3': + resolution: {integrity: sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.52.0': - resolution: {integrity: sha512-YCdWlY/8ltN6H78HnMsRHYlPiKvqKagBP1r+D7SSylxX+HnsgXGCmLiV3Y4nSyY9hW8qr8U9LDUx/Lo7M6MfmQ==} + '@rollup/rollup-darwin-arm64@4.53.3': + resolution: {integrity: sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.52.0': - resolution: {integrity: sha512-z4nw6y1j+OOSGzuVbSWdIp1IUks9qNw4dc7z7lWuWDKojY38VMWBlEN7F9jk5UXOkUcp97vA1N213DF+Lz8BRg==} + '@rollup/rollup-darwin-x64@4.53.3': + resolution: {integrity: sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.52.0': - resolution: {integrity: sha512-Q/dv9Yvyr5rKlK8WQJZVrp5g2SOYeZUs9u/t2f9cQ2E0gJjYB/BWoedXfUT0EcDJefi2zzVfhcOj8drWCzTviw==} + '@rollup/rollup-freebsd-arm64@4.53.3': + resolution: {integrity: sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.52.0': - resolution: {integrity: sha512-kdBsLs4Uile/fbjZVvCRcKB4q64R+1mUq0Yd7oU1CMm1Av336ajIFqNFovByipciuUQjBCPMxwJhCgfG2re3rg==} + '@rollup/rollup-freebsd-x64@4.53.3': + resolution: {integrity: sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.52.0': - resolution: {integrity: sha512-aL6hRwu0k7MTUESgkg7QHY6CoqPgr6gdQXRJI1/VbFlUMwsSzPGSR7sG5d+MCbYnJmJwThc2ol3nixj1fvI/zQ==} + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': + resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.52.0': - resolution: {integrity: sha512-BTs0M5s1EJejgIBJhCeiFo7GZZ2IXWkFGcyZhxX4+8usnIo5Mti57108vjXFIQmmJaRyDwmV59Tw64Ap1dkwMw==} + '@rollup/rollup-linux-arm-musleabihf@4.53.3': + resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.52.0': - resolution: {integrity: sha512-uj672IVOU9m08DBGvoPKPi/J8jlVgjh12C9GmjjBxCTQc3XtVmRkRKyeHSmIKQpvJ7fIm1EJieBUcnGSzDVFyw==} + '@rollup/rollup-linux-arm64-gnu@4.53.3': + resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.52.0': - resolution: {integrity: sha512-/+IVbeDMDCtB/HP/wiWsSzduD10SEGzIZX2945KSgZRNi4TSkjHqRJtNTVtVb8IRwhJ65ssI56krlLik+zFWkw==} + '@rollup/rollup-linux-arm64-musl@4.53.3': + resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.52.0': - resolution: {integrity: sha512-U1vVzvSWtSMWKKrGoROPBXMh3Vwn93TA9V35PldokHGqiUbF6erSzox/5qrSMKp6SzakvyjcPiVF8yB1xKr9Pg==} + '@rollup/rollup-linux-loong64-gnu@4.53.3': + resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.52.0': - resolution: {integrity: sha512-X/4WfuBAdQRH8cK3DYl8zC00XEE6aM472W+QCycpQJeLWVnHfkv7RyBFVaTqNUMsTgIX8ihMjCvFF9OUgeABzw==} + '@rollup/rollup-linux-ppc64-gnu@4.53.3': + resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.52.0': - resolution: {integrity: sha512-xIRYc58HfWDBZoLmWfWXg2Sq8VCa2iJ32B7mqfWnkx5mekekl0tMe7FHpY8I72RXEcUkaWawRvl3qA55og+cwQ==} + '@rollup/rollup-linux-riscv64-gnu@4.53.3': + resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.52.0': - resolution: {integrity: sha512-mbsoUey05WJIOz8U1WzNdf+6UMYGwE3fZZnQqsM22FZ3wh1N887HT6jAOjXs6CNEK3Ntu2OBsyQDXfIjouI4dw==} + '@rollup/rollup-linux-riscv64-musl@4.53.3': + resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.52.0': - resolution: {integrity: sha512-qP6aP970bucEi5KKKR4AuPFd8aTx9EF6BvutvYxmZuWLJHmnq4LvBfp0U+yFDMGwJ+AIJEH5sIP+SNypauMWzg==} + '@rollup/rollup-linux-s390x-gnu@4.53.3': + resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.52.0': - resolution: {integrity: sha512-nmSVN+F2i1yKZ7rJNKO3G7ZzmxJgoQBQZ/6c4MuS553Grmr7WqR7LLDcYG53Z2m9409z3JLt4sCOhLdbKQ3HmA==} + '@rollup/rollup-linux-x64-gnu@4.53.3': + resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.52.0': - resolution: {integrity: sha512-2d0qRo33G6TfQVjaMR71P+yJVGODrt5V6+T0BDYH4EMfGgdC/2HWDVjSSFw888GSzAZUwuska3+zxNUCDco6rQ==} + '@rollup/rollup-linux-x64-musl@4.53.3': + resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.52.0': - resolution: {integrity: sha512-A1JalX4MOaFAAyGgpO7XP5khquv/7xKzLIyLmhNrbiCxWpMlnsTYr8dnsWM7sEeotNmxvSOEL7F65j0HXFcFsw==} + '@rollup/rollup-openharmony-arm64@4.53.3': + resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.52.0': - resolution: {integrity: sha512-YQugafP/rH0eOOHGjmNgDURrpYHrIX0yuojOI8bwCyXwxC9ZdTd3vYkmddPX0oHONLXu9Rb1dDmT0VNpjkzGGw==} + '@rollup/rollup-win32-arm64-msvc@4.53.3': + resolution: {integrity: sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.52.0': - resolution: {integrity: sha512-zYdUYhi3Qe2fndujBqL5FjAFzvNeLxtIqfzNEVKD1I7C37/chv1VxhscWSQHTNfjPCrBFQMnynwA3kpZpZ8w4A==} + '@rollup/rollup-win32-ia32-msvc@4.53.3': + resolution: {integrity: sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.52.0': - resolution: {integrity: sha512-fGk03kQylNaCOQ96HDMeT7E2n91EqvCDd3RwvT5k+xNdFCeMGnj5b5hEgTGrQuyidqSsD3zJDQ21QIaxXqTBJw==} + '@rollup/rollup-win32-x64-gnu@4.53.3': + resolution: {integrity: sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.52.0': - resolution: {integrity: sha512-6iKDCVSIUQ8jPMoIV0OytRKniaYyy5EbY/RRydmLW8ZR3cEBhxbWl5ro0rkUNe0ef6sScvhbY79HrjRm8i3vDQ==} + '@rollup/rollup-win32-x64-msvc@4.53.3': + resolution: {integrity: sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ==} cpu: [x64] os: [win32] '@rsuite/icon-font@4.1.0': resolution: {integrity: sha512-q0Y+uQCVvzhD6lFeAFrvCDd1lTjZfM6MIaBjre3lSW1w586VWbuFnhTiqos3v9HIMlUpm3aAsxd3SuM6gYaqqQ==} - '@rsuite/icons@1.3.2': - resolution: {integrity: sha512-3sOdZpPcVePwTCoWcHHIEg4rsjWp9ehwjC84SjvgyqNyEf/BJNVDm0+jDAGGbhOF0HiWYyfU10LwrwnDSAYltA==} + '@rsuite/icons@1.4.0': + resolution: {integrity: sha512-NUOKX/KNO8Qy0nCJ4XzHKRdp0ovUM7zZhvuelteNkdhwwtmc9R0Ap4TlW2q/74sYa1aVXjH1RF+d2EGRD8EOEA==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' - '@rushstack/node-core-library@5.18.0': - resolution: {integrity: sha512-XDebtBdw5S3SuZIt+Ra2NieT8kQ3D2Ow1HxhDQ/2soinswnOu9e7S69VSwTOLlQnx5mpWbONu+5JJjDxMAb6Fw==} + '@rushstack/node-core-library@5.19.0': + resolution: {integrity: sha512-BxAopbeWBvNJ6VGiUL+5lbJXywTdsnMeOS8j57Cn/xY10r6sV/gbsTlfYKjzVCUBZATX2eRzJHSMCchsMTGN6A==} peerDependencies: '@types/node': '*' peerDependenciesMeta: @@ -1405,34 +1568,34 @@ packages: '@rushstack/rig-package@0.6.0': resolution: {integrity: sha512-ZQmfzsLE2+Y91GF15c65L/slMRVhF6Hycq04D4TwtdGaUAbIXXg9c5pKA5KFU7M4QMaihoobp9JJYpYcaY3zOw==} - '@rushstack/terminal@0.19.3': - resolution: {integrity: sha512-0P8G18gK9STyO+CNBvkKPnWGMxESxecTYqOcikHOVIHXa9uAuTK+Fw8TJq2Gng1w7W6wTC9uPX6hGNvrMll2wA==} + '@rushstack/terminal@0.19.4': + resolution: {integrity: sha512-f4XQk02CrKfrMgyOfhYd3qWI944dLC21S4I/LUhrlAP23GTMDNG6EK5effQtFkISwUKCgD9vMBrJZaPSUquxWQ==} peerDependencies: '@types/node': '*' peerDependenciesMeta: '@types/node': optional: true - '@rushstack/ts-command-line@5.1.3': - resolution: {integrity: sha512-Kdv0k/BnnxIYFlMVC1IxrIS0oGQd4T4b7vKfx52Y2+wk2WZSDFIvedr7JrhenzSlm3ou5KwtoTGTGd5nbODRug==} + '@rushstack/ts-command-line@5.1.4': + resolution: {integrity: sha512-H0I6VdJ6sOUbktDFpP2VW5N29w8v4hRoNZOQz02vtEi6ZTYL1Ju8u+TcFiFawUDrUsx/5MQTUhd79uwZZVwVlA==} - '@shikijs/core@3.15.0': - resolution: {integrity: sha512-8TOG6yG557q+fMsSVa8nkEDOZNTSxjbbR8l6lF2gyr6Np+jrPlslqDxQkN6rMXCECQ3isNPZAGszAfYoJOPGlg==} + '@shikijs/core@3.17.0': + resolution: {integrity: sha512-/HjeOnbc62C+n33QFNFrAhUlIADKwfuoS50Ht0pxujxP4QjZAlFp5Q+OkDo531SCTzivx5T18khwyBdKoPdkuw==} - '@shikijs/engine-javascript@3.15.0': - resolution: {integrity: sha512-ZedbOFpopibdLmvTz2sJPJgns8Xvyabe2QbmqMTz07kt1pTzfEvKZc5IqPVO/XFiEbbNyaOpjPBkkr1vlwS+qg==} + '@shikijs/engine-javascript@3.17.0': + resolution: {integrity: sha512-WwF99xdP8KfuDrIbT4wxyypfhoIxMeeOCp1AiuvzzZ6JT5B3vIuoclL8xOuuydA6LBeeNXUF/XV5zlwwex1jlA==} - '@shikijs/engine-oniguruma@3.15.0': - resolution: {integrity: sha512-HnqFsV11skAHvOArMZdLBZZApRSYS4LSztk2K3016Y9VCyZISnlYUYsL2hzlS7tPqKHvNqmI5JSUJZprXloMvA==} + '@shikijs/engine-oniguruma@3.17.0': + resolution: {integrity: sha512-flSbHZAiOZDNTrEbULY8DLWavu/TyVu/E7RChpLB4WvKX4iHMfj80C6Hi3TjIWaQtHOW0KC6kzMcuB5TO1hZ8Q==} - '@shikijs/langs@3.15.0': - resolution: {integrity: sha512-WpRvEFvkVvO65uKYW4Rzxs+IG0gToyM8SARQMtGGsH4GDMNZrr60qdggXrFOsdfOVssG/QQGEl3FnJ3EZ+8w8A==} + '@shikijs/langs@3.17.0': + resolution: {integrity: sha512-icmur2n5Ojb+HAiQu6NEcIIJ8oWDFGGEpiqSCe43539Sabpx7Y829WR3QuUW2zjTM4l6V8Sazgb3rrHO2orEAw==} - '@shikijs/themes@3.15.0': - resolution: {integrity: sha512-8ow2zWb1IDvCKjYb0KiLNrK4offFdkfNVPXb1OZykpLCzRU6j+efkY+Y7VQjNlNFXonSw+4AOdGYtmqykDbRiQ==} + '@shikijs/themes@3.17.0': + resolution: {integrity: sha512-/xEizMHLBmMHwtx4JuOkRf3zwhWD2bmG5BRr0IPjpcWpaq4C3mYEuTk/USAEglN0qPrTwEHwKVpSu/y2jhferA==} - '@shikijs/types@3.15.0': - resolution: {integrity: sha512-BnP+y/EQnhihgHy4oIAN+6FFtmfTekwOLsQbRw9hOKwqgNy8Bdsjq8B05oAt/ZgvIWWFrshV71ytOrlPfYjIJw==} + '@shikijs/types@3.17.0': + resolution: {integrity: sha512-wjLVfutYWVUnxAjsWEob98xgyaGv0dTEnMZDruU5mRjVN7szcGOfgO+997W2yR6odp+1PtSBNeSITRRTfUzK/g==} '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} @@ -1440,39 +1603,39 @@ packages: '@standard-schema/spec@1.0.0': resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==} - '@storybook/addon-docs@10.0.7': - resolution: {integrity: sha512-qQQMoeYZC4W+/8ubfOZiTrE8nYC/f4wWP1uq4peRyDy1N2nIN9SwhyxwMn0m3VpeGmRBga5dLvJY9ko6SnJekg==} + '@storybook/addon-docs@10.1.4': + resolution: {integrity: sha512-TWLDJNLS/S3AUyTf9x0Hb8k7d+VWMJCH9dWAS0QenvJG8ga9VaehO6r+e+3YyIDbO1ev3UST3GCjh9SY8tzwRA==} peerDependencies: - storybook: ^10.0.7 + storybook: ^10.1.4 - '@storybook/addon-links@10.0.7': - resolution: {integrity: sha512-fsstlcBuvxULuExqDs7RHcuf7TXxfL1PY92uPQdB9EEdZCjbf9ZzoGD/soZK1wkBH3yPe2PMPk2aggMXvJUpsQ==} + '@storybook/addon-links@10.1.4': + resolution: {integrity: sha512-GQplzQFYhClraxH1cQDhhiJAuqAlI2loJjcnLjayS9/O2XJfEPyHc0fjkTh83zhF/nIQ6iMpFgpCsrThRUL4ag==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.0.7 + storybook: ^10.1.4 peerDependenciesMeta: react: optional: true - '@storybook/builder-vite@10.0.7': - resolution: {integrity: sha512-wk2TAoUY5+9t78GWVBndu9rEo9lo6Ec3SRrLT4VpIlcS2GPK+5f26UC2uvIBwOF/N7JrUUKq/zWDZ3m+do9QDg==} + '@storybook/builder-vite@10.1.4': + resolution: {integrity: sha512-3mUQoCzMuhqAIjj8fdbGlwh+GgHaFpCvU+sxL8kIxnZqflW09SuwM5kS47Y5QDzYbHAPYCPqcBFyJ4EfRuf0rw==} peerDependencies: - storybook: ^10.0.7 + storybook: ^10.1.4 vite: ^5.0.0 || ^6.0.0 || ^7.0.0 - '@storybook/cli@10.0.7': - resolution: {integrity: sha512-AHlrmU3kmYyeJHBMDTtrn8G2V9bJjZUrPBpYjxGezrV393WOUdvEgY692hLh0QM3QVYPWC+1CWy2/4ZzURxVIQ==} + '@storybook/cli@10.1.4': + resolution: {integrity: sha512-w/v0M4Sz2kACfeMS50mNYCWcU5g45O8Z3iU7EQXR5k+3pLX//0IP97v6Ctqy6Gm+OoHNRM37nuUBNulcVAjTaw==} hasBin: true - '@storybook/codemod@10.0.7': - resolution: {integrity: sha512-bpOEhte8QoANhekhslC+4CpPvLXn/Uu0f0wmxe8pHJmhbMVDrQMY5xTr+hDe2mt54RfRNAQJcXDG1Av8LPHMuw==} + '@storybook/codemod@10.1.4': + resolution: {integrity: sha512-LIZwESPtx9CX4K6p2HB9UuQg2GCEl6tPjRkB9QTQL0p02EDVrbGR5WbVOhd8g/J2p4ekwEWUVfn6jQ5j06/2rA==} - '@storybook/csf-plugin@10.0.7': - resolution: {integrity: sha512-YaYYlCyJBwxaMk7yREOdz+9MDSgxIYGdeJ9EIq/bUndmkoj9SRo1P9/0lC5dseWQoiGy4T3PbZiWruD8uM5m3g==} + '@storybook/csf-plugin@10.1.4': + resolution: {integrity: sha512-nudIBYx8fBz+1j2Xn1pdfGcgMJ78N/1NFB4MYAxI3YEzxGnQwUjihOO1x3siAXPbjFGmnVHoBx7+6IpO3F70GA==} peerDependencies: esbuild: '*' rollup: '*' - storybook: ^10.0.7 + storybook: ^10.1.4 vite: '*' webpack: '*' peerDependenciesMeta: @@ -1488,101 +1651,100 @@ packages: '@storybook/global@5.0.0': resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} - '@storybook/icons@1.6.0': - resolution: {integrity: sha512-hcFZIjW8yQz8O8//2WTIXylm5Xsgc+lW9ISLgUk1xGmptIJQRdlhVIXCpSyLrQaaRiyhQRaVg7l3BD9S216BHw==} - engines: {node: '>=14.0.0'} + '@storybook/icons@2.0.1': + resolution: {integrity: sha512-/smVjw88yK3CKsiuR71vNgWQ9+NuY2L+e8X7IMrFjexjm6ZR8ULrV2DRkTA61aV6ryefslzHEGDInGpnNeIocg==} peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - '@storybook/react-dom-shim@10.0.7': - resolution: {integrity: sha512-bp4OnMtZGwPJQDqNRi4K5iibLbZ2TZZMkWW7oSw5jjPFpGSreSjCe8LH9yj/lDnK8Ox9bGMCBFE5RV5XuML29w==} + '@storybook/react-dom-shim@10.1.4': + resolution: {integrity: sha512-PARu2HA5nYU1AkioNJNc430pz0oyaHFSSAdN3NEaWwkoGrCOo9ZpAXP9V7wlJANCi1pndbC84gSuHVnBXJBG6g==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.0.7 + storybook: ^10.1.4 - '@storybook/react-vite@10.0.7': - resolution: {integrity: sha512-EAv2cwYkRctQNcPC1jLsZPm+C6RVk6t6axKrkc/+cFe/t5MnKG7oRf0c/6apWYi/cQv6kzNsFxMV2jj8r/VoBg==} + '@storybook/react-vite@10.1.4': + resolution: {integrity: sha512-PneYbxBGArczDtDAvQu6Ug5oeDYM5SQiEDSF0i+TNN0ZKO2ROsmbGSI9/7YTFontXR2CqweIO8GyOGQOcz5K9A==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.0.7 + storybook: ^10.1.4 vite: ^5.0.0 || ^6.0.0 || ^7.0.0 - '@storybook/react@10.0.7': - resolution: {integrity: sha512-1GSDIMo2GkdG55DhpIIFaAJv+QzmsRb36qWsKqfbtFjEhnqu5/3zqyys2dCIiHOG1Czba4SGsTS4cay3KDQJgA==} + '@storybook/react@10.1.4': + resolution: {integrity: sha512-ZBMPdQ99QBv/UtlIZBerDGNsQB30ffxk6twe45FIPutSlKXD6W9r0z7rGa5UWnqmmxa9HjARRhclOFsNGkhs9g==} peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^10.0.7 + storybook: ^10.1.4 typescript: '>= 4.9.x' peerDependenciesMeta: typescript: optional: true - '@swc/core-darwin-arm64@1.13.5': - resolution: {integrity: sha512-lKNv7SujeXvKn16gvQqUQI5DdyY8v7xcoO3k06/FJbHJS90zEwZdQiMNRiqpYw/orU543tPaWgz7cIYWhbopiQ==} + '@swc/core-darwin-arm64@1.15.3': + resolution: {integrity: sha512-AXfeQn0CvcQ4cndlIshETx6jrAM45oeUrK8YeEY6oUZU/qzz0Id0CyvlEywxkWVC81Ajpd8TQQ1fW5yx6zQWkQ==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.13.5': - resolution: {integrity: sha512-ILd38Fg/w23vHb0yVjlWvQBoE37ZJTdlLHa8LRCFDdX4WKfnVBiblsCU9ar4QTMNdeTBEX9iUF4IrbNWhaF1Ng==} + '@swc/core-darwin-x64@1.15.3': + resolution: {integrity: sha512-p68OeCz1ui+MZYG4wmfJGvcsAcFYb6Sl25H9TxWl+GkBgmNimIiRdnypK9nBGlqMZAcxngNPtnG3kEMNnvoJ2A==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.13.5': - resolution: {integrity: sha512-Q6eS3Pt8GLkXxqz9TAw+AUk9HpVJt8Uzm54MvPsqp2yuGmY0/sNaPPNVqctCX9fu/Nu8eaWUen0si6iEiCsazQ==} + '@swc/core-linux-arm-gnueabihf@1.15.3': + resolution: {integrity: sha512-Nuj5iF4JteFgwrai97mUX+xUOl+rQRHqTvnvHMATL/l9xE6/TJfPBpd3hk/PVpClMXG3Uvk1MxUFOEzM1JrMYg==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.13.5': - resolution: {integrity: sha512-aNDfeN+9af+y+M2MYfxCzCy/VDq7Z5YIbMqRI739o8Ganz6ST+27kjQFd8Y/57JN/hcnUEa9xqdS3XY7WaVtSw==} + '@swc/core-linux-arm64-gnu@1.15.3': + resolution: {integrity: sha512-2Nc/s8jE6mW2EjXWxO/lyQuLKShcmTrym2LRf5Ayp3ICEMX6HwFqB1EzDhwoMa2DcUgmnZIalesq2lG3krrUNw==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.13.5': - resolution: {integrity: sha512-9+ZxFN5GJag4CnYnq6apKTnnezpfJhCumyz0504/JbHLo+Ue+ZtJnf3RhyA9W9TINtLE0bC4hKpWi8ZKoETyOQ==} + '@swc/core-linux-arm64-musl@1.15.3': + resolution: {integrity: sha512-j4SJniZ/qaZ5g8op+p1G9K1z22s/EYGg1UXIb3+Cg4nsxEpF5uSIGEE4mHUfA70L0BR9wKT2QF/zv3vkhfpX4g==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.13.5': - resolution: {integrity: sha512-WD530qvHrki8Ywt/PloKUjaRKgstQqNGvmZl54g06kA+hqtSE2FTG9gngXr3UJxYu/cNAjJYiBifm7+w4nbHbA==} + '@swc/core-linux-x64-gnu@1.15.3': + resolution: {integrity: sha512-aKttAZnz8YB1VJwPQZtyU8Uk0BfMP63iDMkvjhJzRZVgySmqt/apWSdnoIcZlUoGheBrcqbMC17GGUmur7OT5A==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.13.5': - resolution: {integrity: sha512-Luj8y4OFYx4DHNQTWjdIuKTq2f5k6uSXICqx+FSabnXptaOBAbJHNbHT/06JZh6NRUouaf0mYXN0mcsqvkhd7Q==} + '@swc/core-linux-x64-musl@1.15.3': + resolution: {integrity: sha512-oe8FctPu1gnUsdtGJRO2rvOUIkkIIaHqsO9xxN0bTR7dFTlPTGi2Fhk1tnvXeyAvCPxLIcwD8phzKg6wLv9yug==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.13.5': - resolution: {integrity: sha512-cZ6UpumhF9SDJvv4DA2fo9WIzlNFuKSkZpZmPG1c+4PFSEMy5DFOjBSllCvnqihCabzXzpn6ykCwBmHpy31vQw==} + '@swc/core-win32-arm64-msvc@1.15.3': + resolution: {integrity: sha512-L9AjzP2ZQ/Xh58e0lTRMLvEDrcJpR7GwZqAtIeNLcTK7JVE+QineSyHp0kLkO1rttCHyCy0U74kDTj0dRz6raA==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.13.5': - resolution: {integrity: sha512-C5Yi/xIikrFUzZcyGj9L3RpKljFvKiDMtyDzPKzlsDrKIw2EYY+bF88gB6oGY5RGmv4DAX8dbnpRAqgFD0FMEw==} + '@swc/core-win32-ia32-msvc@1.15.3': + resolution: {integrity: sha512-B8UtogMzErUPDWUoKONSVBdsgKYd58rRyv2sHJWKOIMCHfZ22FVXICR4O/VwIYtlnZ7ahERcjayBHDlBZpR0aw==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.13.5': - resolution: {integrity: sha512-YrKdMVxbYmlfybCSbRtrilc6UA8GF5aPmGKBdPvjrarvsmf4i7ZHGCEnLtfOMd3Lwbs2WUZq3WdMbozYeLU93Q==} + '@swc/core-win32-x64-msvc@1.15.3': + resolution: {integrity: sha512-SpZKMR9QBTecHeqpzJdYEfgw30Oo8b/Xl6rjSzBt1g0ZsXyy60KLXrp6IagQyfTYqNYE/caDvwtF2FPn7pomog==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.13.5': - resolution: {integrity: sha512-WezcBo8a0Dg2rnR82zhwoR6aRNxeTGfK5QCD6TQ+kg3xx/zNT02s/0o+81h/3zhvFSB24NtqEr8FTw88O5W/JQ==} + '@swc/core@1.15.3': + resolution: {integrity: sha512-Qd8eBPkUFL4eAONgGjycZXj1jFCBW8Fd+xF0PzdTlBCWQIV1xnUT7B93wUANtW3KGjl3TRcOyxwSx/u/jyKw/Q==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '>=0.5.17' @@ -1697,21 +1859,6 @@ packages: resolution: {integrity: sha512-zIcONa+hVtVSSep9UT3jZ5rizo2BsxgyDYU7WFD5eICBE7no3881HGeb/QkGfsJs6JTkY1aQhT7rIPC7e+0nnA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - '@testing-library/react@16.3.0': - resolution: {integrity: sha512-kFSyxiEDwv1WLl2fgsq6pPBbw5aWKrsY2/noi1Id0TK0UParSF62oFQFGHXIyaG4pp2tEub/Zlel+fjjZILDsw==} - engines: {node: '>=18'} - peerDependencies: - '@testing-library/dom': ^10.0.0 - '@types/react': ^18.0.0 || ^19.0.0 - '@types/react-dom': ^18.0.0 || ^19.0.0 - react: ^18.0.0 || ^19.0.0 - react-dom: ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - '@testing-library/user-event@14.6.1': resolution: {integrity: sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==} engines: {node: '>=12', npm: '>=6'} @@ -1736,8 +1883,8 @@ packages: '@types/babel__traverse@7.28.0': resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==} - '@types/chai@5.2.2': - resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} '@types/cross-spawn@6.0.6': resolution: {integrity: sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==} @@ -1766,8 +1913,8 @@ packages: '@types/js-yaml@4.0.9': resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} - '@types/lodash@4.17.20': - resolution: {integrity: sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==} + '@types/lodash@4.17.21': + resolution: {integrity: sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==} '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -1798,11 +1945,6 @@ packages: peerDependencies: '@types/react': ^18.0.0 - '@types/react-dom@19.2.3': - resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} - peerDependencies: - '@types/react': ^19.2.0 - '@types/react-transition-group@4.4.12': resolution: {integrity: sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==} peerDependencies: @@ -1811,11 +1953,8 @@ packages: '@types/react-window@1.8.8': resolution: {integrity: sha512-8Ls660bHR1AUA2kuRvVG9D/4XpRC6wjAaPT9dil7Ckc76eP9TKWZwwmgfq8Q1LANX3QNDnoU4Zp48A3w+zK69Q==} - '@types/react@18.3.24': - resolution: {integrity: sha512-0dLEBsA1kI3OezMBF8nSsb7Nk19ZnsyE1LLhB8r27KbgU5H4pvuqZLdtE+aUkJVoXgTVuA+iLIwmZ0TuK4tx6A==} - - '@types/react@19.2.7': - resolution: {integrity: sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==} + '@types/react@18.3.27': + resolution: {integrity: sha512-cisd7gxkzjBKU2GgdYrTdtQx1SORymWyaAFhaxQPK9bYO9ot3Y5OikQRvY0VYQtvwjeQnizCINJAenh/V7MK2w==} '@types/resolve@1.20.6': resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} @@ -1894,11 +2033,22 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - '@vitest/coverage-v8@4.0.8': - resolution: {integrity: sha512-wQgmtW6FtPNn4lWUXi8ZSYLpOIb92j3QCujxX3sQ81NTfQ/ORnE0HtK7Kqf2+7J9jeveMGyGyc4NWc5qy3rC4A==} + '@vitest/browser-playwright@4.0.15': + resolution: {integrity: sha512-94yVpDbb+ykiT7mK6ToonGnq2GIHEQGBTZTAzGxBGQXcVNCh54YKC2/WkfaDzxy0m6Kgw05kq3FYHKHu+wRdIA==} + peerDependencies: + playwright: '*' + vitest: 4.0.15 + + '@vitest/browser@4.0.15': + resolution: {integrity: sha512-zedtczX688KehaIaAv7m25CeDLb0gBtAOa2Oi1G1cqvSO5aLSVfH6lpZMJLW8BKYuWMxLQc9/5GYoM+jgvGIrw==} peerDependencies: - '@vitest/browser': 4.0.8 - vitest: 4.0.8 + vitest: 4.0.15 + + '@vitest/coverage-v8@4.0.15': + resolution: {integrity: sha512-FUJ+1RkpTFW7rQITdgTi93qOCWJobWhBirEPCeXh2SW2wsTlFxy51apDz5gzG+ZEYt/THvWeNmhdAoS9DTwpCw==} + peerDependencies: + '@vitest/browser': 4.0.15 + vitest: 4.0.15 peerDependenciesMeta: '@vitest/browser': optional: true @@ -1906,8 +2056,8 @@ packages: '@vitest/expect@3.2.4': resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} - '@vitest/expect@4.0.8': - resolution: {integrity: sha512-Rv0eabdP/xjAHQGr8cjBm+NnLHNoL268lMDK85w2aAGLFoVKLd8QGnVon5lLtkXQCoYaNL0wg04EGnyKkkKhPA==} + '@vitest/expect@4.0.15': + resolution: {integrity: sha512-Gfyva9/GxPAWXIWjyGDli9O+waHDC0Q0jaLdFP1qPAUUfo1FEXPXUfUkp3eZA0sSq340vPycSyOlYUeM15Ft1w==} '@vitest/mocker@3.2.4': resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} @@ -1920,8 +2070,8 @@ packages: vite: optional: true - '@vitest/mocker@4.0.8': - resolution: {integrity: sha512-9FRM3MZCedXH3+pIh+ME5Up2NBBHDq0wqwhOKkN4VnvCiKbVxddqH9mSGPZeawjd12pCOGnl+lo/ZGHt0/dQSg==} + '@vitest/mocker@4.0.15': + resolution: {integrity: sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==} peerDependencies: msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0-0 @@ -1934,31 +2084,57 @@ packages: '@vitest/pretty-format@3.2.4': resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} - '@vitest/pretty-format@4.0.8': - resolution: {integrity: sha512-qRrjdRkINi9DaZHAimV+8ia9Gq6LeGz2CgIEmMLz3sBDYV53EsnLZbJMR1q84z1HZCMsf7s0orDgZn7ScXsZKg==} + '@vitest/pretty-format@4.0.15': + resolution: {integrity: sha512-SWdqR8vEv83WtZcrfLNqlqeQXlQLh2iilO1Wk1gv4eiHKjEzvgHb2OVc3mIPyhZE6F+CtfYjNlDJwP5MN6Km7A==} - '@vitest/runner@4.0.8': - resolution: {integrity: sha512-mdY8Sf1gsM8hKJUQfiPT3pn1n8RF4QBcJYFslgWh41JTfrK1cbqY8whpGCFzBl45LN028g0njLCYm0d7XxSaQQ==} + '@vitest/runner@4.0.15': + resolution: {integrity: sha512-+A+yMY8dGixUhHmNdPUxOh0la6uVzun86vAbuMT3hIDxMrAOmn5ILBHm8ajrqHE0t8R9T1dGnde1A5DTnmi3qw==} - '@vitest/snapshot@4.0.8': - resolution: {integrity: sha512-Nar9OTU03KGiubrIOFhcfHg8FYaRaNT+bh5VUlNz8stFhCZPNrJvmZkhsr1jtaYvuefYFwK2Hwrq026u4uPWCw==} + '@vitest/snapshot@4.0.15': + resolution: {integrity: sha512-A7Ob8EdFZJIBjLjeO0DZF4lqR6U7Ydi5/5LIZ0xcI+23lYlsYJAfGn8PrIWTYdZQRNnSRlzhg0zyGu37mVdy5g==} '@vitest/spy@3.2.4': resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} - '@vitest/spy@4.0.8': - resolution: {integrity: sha512-nvGVqUunyCgZH7kmo+Ord4WgZ7lN0sOULYXUOYuHr55dvg9YvMz3izfB189Pgp28w0vWFbEEfNc/c3VTrqrXeA==} + '@vitest/spy@4.0.15': + resolution: {integrity: sha512-+EIjOJmnY6mIfdXtE/bnozKEvTC4Uczg19yeZ2vtCz5Yyb0QQ31QWVQ8hswJ3Ysx/K2EqaNsVanjr//2+P3FHw==} - '@vitest/ui@4.0.8': - resolution: {integrity: sha512-F9jI5rSstNknPlTlPN2gcc4gpbaagowuRzw/OJzl368dvPun668Q182S8Q8P9PITgGCl5LAKXpzuue106eM4wA==} + '@vitest/ui@4.0.15': + resolution: {integrity: sha512-sxSyJMaKp45zI0u+lHrPuZM1ZJQ8FaVD35k+UxVrha1yyvQ+TZuUYllUixwvQXlB7ixoDc7skf3lQPopZIvaQw==} peerDependencies: - vitest: 4.0.8 + vitest: 4.0.15 '@vitest/utils@3.2.4': resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} - '@vitest/utils@4.0.8': - resolution: {integrity: sha512-pdk2phO5NDvEFfUTxcTP8RFYjVj/kfLSPIN5ebP2Mu9kcIMeAQTbknqcFEyBcC4z2pJlJI9aS5UQjcYfhmKAow==} + '@vitest/utils@4.0.15': + resolution: {integrity: sha512-HXjPW2w5dxhTD0dLwtYHDnelK3j8sR8cWIaLxr22evTyY6q8pRCjZSmhRWVjBaOVXChQd6AwMzi9pucorXCPZA==} + + '@volar/kit@2.4.26': + resolution: {integrity: sha512-shgNg7PbV8SIxxQLOQh5zMr8KV0JvdG9If0MwJb5L1HMrBU91jBxR0ANi2OJPMMme6/l1vIYm4hCaO6W2JaEcQ==} + peerDependencies: + typescript: '*' + + '@volar/language-core@2.4.26': + resolution: {integrity: sha512-hH0SMitMxnB43OZpyF1IFPS9bgb2I3bpCh76m2WEK7BE0A0EzpYsRp0CCH2xNKshr7kacU5TQBLYn4zj7CG60A==} + + '@volar/language-server@2.4.26': + resolution: {integrity: sha512-Xsyu+VDgM8TyVkQfBz2aIViSEOgH2un0gIJlp0M8rssDDLCqr4ssQzwHOyPf7sT7UIjrlAMnJvRkC/u0mmgtYw==} + + '@volar/language-service@2.4.26': + resolution: {integrity: sha512-ZBPRR1ytXttSV5X4VPvEQR/glxs+7/4IOJIBCOW3/EJk4z77R4mF2y4wM3fNgOXXZT5h16j3sC5w+LGNkz2VlA==} + + '@volar/source-map@2.4.26': + resolution: {integrity: sha512-JJw0Tt/kSFsIRmgTQF4JSt81AUSI1aEye5Zl65EeZ8H35JHnTvFGmpDOBn5iOxd48fyGE+ZvZBp5FcgAy/1Qhw==} + + '@volar/typescript@2.4.26': + resolution: {integrity: sha512-N87ecLD48Sp6zV9zID/5yuS1+5foj0DfuYGdQ6KHj/IbKvyKv1zNX6VCmnKYwtmHadEO6mFc2EKISiu3RDPAvA==} + + '@vscode/emmet-helper@2.11.0': + resolution: {integrity: sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==} + + '@vscode/l10n@0.0.18': + resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} abbrev@3.0.1: resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} @@ -2008,6 +2184,9 @@ packages: ajv@8.13.0: resolution: {integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==} + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} @@ -2031,8 +2210,8 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} - antd@5.28.1: - resolution: {integrity: sha512-ZfPjbv3pY/jRnBFFn3L1UIRltaW9H4QovokZzNA57EgH3hEhWxQ3wWVfWmU6a3Q1GpbOgWQBJK2vsuoPIYuc9g==} + antd@5.29.1: + resolution: {integrity: sha512-TTFVbpKbyL6cPfEoKq6Ya3BIjTUr7uDW9+7Z+1oysRv1gpcN7kQ4luH8r/+rXXwz4n6BIz1iBJ1ezKCdsdNW0w==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -2080,17 +2259,14 @@ packages: peerDependencies: astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 - astro@5.16.0: - resolution: {integrity: sha512-GaDRs2Mngpw3dr2vc085GnORh98NiXxwIjg/EoQQQl/icZt3Z7s0BRsYHDZ8swkZbOA6wZsqWJdrNirl+iKcDg==} + astro@5.16.4: + resolution: {integrity: sha512-rgXI/8/tnO3Y9tfAaUyg/8beKhlIMltbiC8Q6jCoAfEidOyaue4KYKzbe0gJIb6qEdEaG3Kf3BY3EOSLkbWOLg==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true async-sema@3.1.1: resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -2116,8 +2292,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.8.6: - resolution: {integrity: sha512-wrH5NNqren/QMtKUEEJf7z86YjfqW/2uw3IL3/xpqZUC95SSVIFXYQeeGjL6FT/X68IROu6RMehZQS5foy2BXw==} + baseline-browser-mapping@2.8.32: + resolution: {integrity: sha512-OPz5aBThlyLFgxyhdwf/s2+8ab3OvT7AdTNvKHBwpXomIYeXqpUUuT8LrdtxZSsWJ4R4CU1un4XGh5Ez3nlTpw==} hasBin: true bcp-47-match@2.0.3: @@ -2149,18 +2325,14 @@ packages: brotli@1.3.3: resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} - browserslist@4.26.2: - resolution: {integrity: sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==} + browserslist@4.28.0: + resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} - callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -2169,8 +2341,8 @@ packages: resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} engines: {node: '>=16'} - caniuse-lite@1.0.30001743: - resolution: {integrity: sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==} + caniuse-lite@1.0.30001757: + resolution: {integrity: sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -2219,9 +2391,6 @@ packages: resolution: {integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==} engines: {node: '>=8'} - citty@0.1.6: - resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} - classnames@2.5.1: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} @@ -2229,6 +2398,10 @@ packages: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + clone-deep@4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} @@ -2251,10 +2424,6 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} @@ -2278,9 +2447,6 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - confbox@0.2.2: - resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} - consola@3.4.2: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} @@ -2294,8 +2460,8 @@ packages: cookie-es@1.2.2: resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} - cookie@1.0.2: - resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==} + cookie@1.1.1: + resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==} engines: {node: '>=18'} copy-to-clipboard@3.3.3: @@ -2305,8 +2471,8 @@ packages: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} - create-storybook@10.0.7: - resolution: {integrity: sha512-HL1Uy2Qf+tUy/12hhbbhrsifKgmfLJhA2RUjpZHCuQAhtzCSUS4aq2Zcao9tXFSOsMovIsEw254sG8ZbF/IpyA==} + create-storybook@10.1.4: + resolution: {integrity: sha512-jHvTQoxciKXZVFxpesPMt9J/cT0wJpY4qG8rtDEfcX/g72TJ0bS1/Mpbsu3p26orPBDEP1yhN7dEslFINnC+aw==} hasBin: true cross-spawn@7.0.6: @@ -2346,26 +2512,15 @@ packages: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} - cssstyle@4.6.0: - resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} - engines: {node: '>=18'} - - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - data-urls@5.0.0: - resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} - engines: {node: '>=18'} - date-fns@2.30.0: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} engines: {node: '>=0.11'} - dayjs@1.11.18: - resolution: {integrity: sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==} + dayjs@1.11.19: + resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} @@ -2376,9 +2531,6 @@ packages: supports-color: optional: true - decimal.js@10.6.0: - resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} - decode-named-character-reference@1.2.0: resolution: {integrity: sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==} @@ -2389,10 +2541,6 @@ packages: defu@6.1.4: resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -2465,15 +2613,14 @@ packages: resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==} engines: {node: '>=4'} - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.222: - resolution: {integrity: sha512-gA7psSwSwQRE60CEoLz6JBCQPIxNeuzB2nL8vE03GK/OHxlvykbLyeiumQy1iH5C2f3YbRAZpGCMT12a/9ih9w==} + electron-to-chromium@1.5.262: + resolution: {integrity: sha512-NlAsMteRHek05jRUxUR0a5jpjYq9ykk6+kO0yRaMi5moe7u0fVIOeQ3Y30A8dIiWFBNUoQGi1ljb1i5VtS9WQQ==} + + emmet@2.4.11: + resolution: {integrity: sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -2503,27 +2650,11 @@ packages: error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} - es-object-atoms@1.1.1: - resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} - - es-toolkit@1.39.10: - resolution: {integrity: sha512-E0iGnTtbDhkeczB0T+mxmoVlT4YNweEKBLq7oaU4p11mecdsZpNWOglI4895Vh4usbQ+LsJiuLuI2L0Vdmfm2w==} + es-toolkit@1.42.0: + resolution: {integrity: sha512-SLHIyY7VfDJBM8clz4+T2oquwTQxEzu263AyhVK4jREOAwJ+8eebaa4wM3nlvnAqhDrMm2EsA6hWHaQsMPQ1nA==} esast-util-from-estree@2.0.0: resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} @@ -2531,8 +2662,13 @@ packages: esast-util-from-js@2.0.1: resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - esbuild@0.25.10: - resolution: {integrity: sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==} + esbuild@0.25.12: + resolution: {integrity: sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.27.0: + resolution: {integrity: sha512-jd0f4NHbD6cALCyGElNpGAOtWxSq46l9X/sWB0Nzd5er4Kz2YTm+Vl0qKFT9KUJvD8+fiO8AvoHhFvEatfVixA==} engines: {node: '>=18'} hasBin: true @@ -2591,18 +2727,25 @@ packages: expressive-code@0.41.3: resolution: {integrity: sha512-YLnD62jfgBZYrXIPQcJ0a51Afv9h8VlWqEGK9uU2T5nL/5rb8SnA86+7+mgCZe5D34Tff5RNEA5hjNVJYHzrFg==} - exsolve@1.0.8: - resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} - extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} + fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -2640,8 +2783,8 @@ packages: resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} engines: {node: '>=8'} - flow-parser@0.284.0: - resolution: {integrity: sha512-xI6Jbx20hJHrgBubUpYRAn85hJafA2w2OyxFZaK/xuf5aIIrxWO4Ynq5seVrcEJRZl/lshraeJM1S6nVg2ptiw==} + flow-parser@0.291.0: + resolution: {integrity: sha512-MLqjFn72Dvndqrkjy280HaIs4AV9Z6nxVRmNPO3TjbYcipg4hR7QX7tEYZYsVvaaZWZPGe6Mithluk2aPGlDOw==} engines: {node: '>=0.4.0'} fontace@0.3.1: @@ -2654,10 +2797,6 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} - form-data@4.0.4: - resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} - engines: {node: '>= 6'} - fs-extra@11.3.2: resolution: {integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==} engines: {node: '>=14.14'} @@ -2665,6 +2804,11 @@ packages: fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -2677,28 +2821,20 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + get-east-asian-width@1.4.0: resolution: {integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==} engines: {node: '>=18'} - get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} - - get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} - - giget@2.0.0: - resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==} - hasBin: true - github-slugger@2.0.0: resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} - glob@10.4.5: - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} - hasBin: true + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} glob@10.5.0: resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} @@ -2708,10 +2844,6 @@ packages: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -2722,14 +2854,6 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -2797,10 +2921,6 @@ packages: hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - html-encoding-sniffer@4.0.0: - resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} - engines: {node: '>=18'} - html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -2814,11 +2934,7 @@ packages: resolution: {integrity: sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==} http-cache-semantics@4.2.0: - resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} - - http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} https-proxy-agent@7.0.6: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} @@ -2827,10 +2943,6 @@ packages: i18next@23.16.8: resolution: {integrity: sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg==} - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} @@ -2884,10 +2996,18 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} @@ -2908,9 +3028,6 @@ packages: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} - is-potential-custom-element-name@1.0.1: - resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} - is-wsl@3.1.0: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} @@ -2967,15 +3084,6 @@ packages: '@babel/preset-env': optional: true - jsdom@23.1.0: - resolution: {integrity: sha512-wRscu8dBFxi7O65Cvi0jFRDv0Qa7XEHPix8Qg/vlXHLAMQsRWV1EDeQHBermzXf4Dt7JtFgBLbva3iTcBZDXEQ==} - engines: {node: '>=18'} - peerDependencies: - canvas: ^2.11.2 - peerDependenciesMeta: - canvas: - optional: true - jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -2998,6 +3106,12 @@ packages: engines: {node: '>=6'} hasBin: true + jsonc-parser@2.3.1: + resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} + + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + jsonfile@6.2.0: resolution: {integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==} @@ -3009,6 +3123,10 @@ packages: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} + kleur@4.1.5: + resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} + engines: {node: '>=6'} + klona@2.0.6: resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} engines: {node: '>= 8'} @@ -3148,10 +3266,6 @@ packages: markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - mdast-util-definitions@6.0.0: resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} @@ -3197,8 +3311,8 @@ packages: mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - mdast-util-to-hast@13.2.0: - resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==} + mdast-util-to-hast@13.2.1: + resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} mdast-util-to-markdown@2.1.2: resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} @@ -3218,6 +3332,10 @@ packages: memoize-one@5.2.1: resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + micromark-core-commonmark@2.0.3: resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} @@ -3330,14 +3448,6 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -3364,9 +3474,6 @@ packages: resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} - moment@2.30.1: - resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} - mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} @@ -3374,6 +3481,9 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -3412,8 +3522,8 @@ packages: node-mock-http@1.0.3: resolution: {integrity: sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==} - node-releases@2.0.21: - resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==} + node-releases@2.0.27: + resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} nopt@8.1.0: resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} @@ -3427,18 +3537,13 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - nwsapi@2.2.22: - resolution: {integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==} - - nypm@0.6.2: - resolution: {integrity: sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==} - engines: {node: ^14.16.0 || >=16.10.0} - hasBin: true - object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + ofetch@1.5.1: resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} @@ -3454,12 +3559,12 @@ packages: oniguruma-to-es@4.3.4: resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==} - oxlint@1.28.0: - resolution: {integrity: sha512-gE97d0BcIlTTSJrim395B49mIbQ9VO8ZVoHdWai7Svl+lEeUAyCLTN4d7piw1kcB8VfgTp1JFVlAvMPD9GewMA==} + oxlint@1.31.0: + resolution: {integrity: sha512-U+Z3VShi1zuLF2Hz/pm4vWJUBm5sDHjwSzj340tz4tS2yXg9H5PTipsZv+Yu/alg6Z7EM2cZPKGNBZAvmdfkQg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: - oxlint-tsgolint: '>=0.4.0' + oxlint-tsgolint: '>=0.8.1' peerDependenciesMeta: oxlint-tsgolint: optional: true @@ -3491,8 +3596,8 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - package-manager-detector@1.5.0: - resolution: {integrity: sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw==} + package-manager-detector@1.6.0: + resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} pagefind@1.4.0: resolution: {integrity: sha512-z2kY1mQlL4J8q5EIsQkLzQjilovKzfNVhX8De6oyE6uHpfFtyBaqUpcl/XzJC/4fjD8vBDyh1zolimIcVrCn9g==} @@ -3518,6 +3623,9 @@ packages: parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + 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'} @@ -3576,12 +3684,27 @@ packages: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} + pixelmatch@7.1.0: + resolution: {integrity: sha512-1wrVzJ2STrpmONHKBy228LM1b84msXDUoAzVEl0R8Mz4Ce6EPr+IVtxm8+yvrqLYMHswREkjYFaMxnyGnaY3Ng==} + hasBin: true + pkg-dir@3.0.0: resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} engines: {node: '>=6'} - pkg-types@2.3.0: - resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + playwright-core@1.57.0: + resolution: {integrity: sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.57.0: + resolution: {integrity: sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==} + engines: {node: '>=18'} + hasBin: true + + pngjs@7.0.0: + resolution: {integrity: sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==} + engines: {node: '>=14.19.0'} postcss-nested@6.2.0: resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} @@ -3597,8 +3720,8 @@ packages: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} - prettier@3.6.2: - resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==} + prettier@3.7.4: + resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} engines: {node: '>=14'} hasBin: true @@ -3623,9 +3746,6 @@ packages: property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} - psl@1.15.0: - resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} - punycode.js@2.3.1: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} engines: {node: '>=6'} @@ -3634,8 +3754,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} radix3@1.1.2: resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} @@ -3726,8 +3846,8 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' - rc-overflow@1.4.1: - resolution: {integrity: sha512-3MoPQQPV1uKyOMVNd6SZfONi+f3st0r8PksexIdBTeIYbMX0Jr+k7pHEDvsXtR4BpCv90/Pv2MovVNhktKrwvw==} + rc-overflow@1.5.0: + resolution: {integrity: sha512-Lm/v9h0LymeUYJf0x39OveU52InkdRXqnn2aYXfWmo8WdOonIKB2kfau+GF0fWq6jPgtdO9yMqveGcK6aIhJmg==} peerDependencies: react: '>=16.9.0' react-dom: '>=16.9.0' @@ -3873,8 +3993,8 @@ packages: peerDependencies: typescript: '>= 4.3.x' - react-docgen@8.0.1: - resolution: {integrity: sha512-kQKsqPLplY3Hx4jGnM3jpQcG3FQDt7ySz32uTHt3C9HAe45kNXG+3o16Eqn3Fw1GtMfHoN3b4J/z2e6cZJCmqQ==} + react-docgen@8.0.2: + resolution: {integrity: sha512-+NRMYs2DyTP4/tqWz371Oo50JqmWltR1h2gcdgUMAWZJIAvrd0/SqlCfx7tpzpl/s36rzw6qH2MjoNrxtRNYhA==} engines: {node: ^20.9.0 || >=22} react-dom@18.3.1: @@ -3882,11 +4002,6 @@ packages: peerDependencies: react: ^18.3.1 - react-dom@19.2.0: - resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} - peerDependencies: - react: ^19.2.0 - react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -3896,8 +4011,8 @@ packages: react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} - react-is@19.1.1: - resolution: {integrity: sha512-tr41fA15Vn8p4X9ntI+yCyeGSf1TlYaY5vlTZfQmeLBrFo3psOPX6HhTDnFNL9uj3EhP0KAQ80cugCl4b4BERA==} + react-is@19.2.0: + resolution: {integrity: sha512-x3Ax3kNSMIIkyVYhWPyO09bu0uttcAIoecO/um/rKGQ4EltYWVYtyiGkS/3xMynrbVQdS69Jhlv8FXUEZehlzA==} react-refresh@0.17.0: resolution: {integrity: sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==} @@ -4007,13 +4122,20 @@ packages: remark-stringify@11.0.0: resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + request-light@0.5.8: + resolution: {integrity: sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==} + + request-light@0.7.0: + resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - requires-port@1.0.0: - resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} - resize-observer-polyfill@1.5.1: resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} @@ -4025,8 +4147,8 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} - resolve@1.22.10: - resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} engines: {node: '>= 0.4'} hasBin: true @@ -4045,50 +4167,41 @@ packages: retext@9.0.0: resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rimraf@2.6.3: resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==} deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rollup@4.52.0: - resolution: {integrity: sha512-+IuescNkTJQgX7AkIDtITipZdIGcWF0pnVvZTWStiazUmcGA2ag8dfg0urest2XlXUi9kuhfQ+qmdc5Stc3z7g==} + rollup@4.53.3: + resolution: {integrity: sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rrweb-cssom@0.6.0: - resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} - - rrweb-cssom@0.8.0: - resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} - rsuite-table@5.19.2: resolution: {integrity: sha512-0mnAuvTlDjNGo3FTWqIMdlCP2+gx8NJiMYJnGvOoYMt/kcxRsWzayQRrywc2cvnHTEOjMIQFi2uHYfie0irAHg==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' - rsuite@5.83.3: - resolution: {integrity: sha512-L9iNrFTSDyXzSSJCu5tEK1sv9dE2gT4H6b5AQBbdIzdADqYr3DhBJLnOW5WthqSnCc40hupoPUcI9wUrnGbjZQ==} + rsuite@5.83.4: + resolution: {integrity: sha512-Z70X7ARQwPJcPkBmeFGOKl+RTQXR8AENTQ4l9sOUMsC6O21JGm7cPx+BNJtClMAuA/pNIFuLMkKiECKSaFLSQg==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} sax@1.4.3: resolution: {integrity: sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==} - saxes@6.0.0: - resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} - engines: {node: '>=v12.22.7'} - scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - scheduler@0.27.0: - resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} - schema-typed@2.4.2: resolution: {integrity: sha512-4eYZiheiPps+I7JEKrhm/S8OIPncXqY0lKQbvI/Agn9QMJUQ3cgfFZ2spy4Ta9Qr3xLYB3/qj4wGbsNcVwEO/w==} @@ -4108,11 +4221,6 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} - engines: {node: '>=10'} - hasBin: true - semver@7.7.3: resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} @@ -4134,8 +4242,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@3.15.0: - resolution: {integrity: sha512-kLdkY6iV3dYbtPwS9KXU7mjfmDm25f5m0IPNFnaXO7TBPcvbUOY72PYXSuSqDzwp+vlH/d7MXpHlKO/x+QoLXw==} + shiki@3.17.0: + resolution: {integrity: sha512-lUZfWsyW7czITYTdo/Tb6ZM4VfyXlzmKYBQBjTz+pBzPPkP08RgIt00Ls1Z50Cl3SfwJsue6WbJeF3UgqLVI9Q==} siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} @@ -4191,8 +4299,8 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - starlight-typedoc@0.21.4: - resolution: {integrity: sha512-ZnajyNs3CxzaDrKplBY9Lg4R12YheegCvbD2cvczN+8fLET0Rh3sss5mMN206pk8pVXeZgjPY5IATPJoCjjHqA==} + starlight-typedoc@0.21.5: + resolution: {integrity: sha512-7JGaPHrP+HgX0sYGnafZcPuzMm+3OmHx7kqE0DWTrsuBfoQS02lJ6/PtJF9y0KCDcfsBynyo0G/1ttHcBq5Vww==} engines: {node: '>=18.17.1'} peerDependencies: '@astrojs/starlight': '>=0.32.0' @@ -4202,8 +4310,8 @@ packages: std-env@3.10.0: resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} - storybook@10.0.7: - resolution: {integrity: sha512-7smAu0o+kdm378Q2uIddk32pn0UdIbrtTVU+rXRVtTVTCrK/P2cCui2y4JH+Bl3NgEq1bbBQpCAF/HKrDjk2Qw==} + storybook@10.1.4: + resolution: {integrity: sha512-FrBjm8I8O+pYEOPHcdW9xWwgXSZxte7lza9q2lN3jFN4vuW79m5j0OnTQeR8z9MmIbBTvkIpp3yMBebl53Yt5Q==} hasBin: true peerDependencies: prettier: ^2 || ^3 @@ -4252,8 +4360,8 @@ packages: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} - strip-indent@4.1.0: - resolution: {integrity: sha512-OA95x+JPmL7kc7zCu+e+TeYxEiaIyndRx0OrBcK2QPPH09oAndr2ALvymxWA+Lx1PYYvFUm4O63pRkdJAaW96w==} + strip-indent@4.1.1: + resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==} engines: {node: '>=12'} strip-json-comments@3.1.1: @@ -4289,9 +4397,6 @@ packages: engines: {node: '>=16'} hasBin: true - symbol-tree@3.2.4: - resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - tailwindcss@4.1.17: resolution: {integrity: sha512-j9Ee2YjuQqYT9bbRTfTZht9W/ytp5H+jJpZKiYdP/bpnXARAuELt9ofP0lPnmHjbga7SNQIxdTAXCmtKVYjN+Q==} @@ -4320,9 +4425,6 @@ packages: tinybench@2.9.0: resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} - tinyexec@0.3.2: - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyexec@1.0.2: resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} engines: {node: '>=18'} @@ -4354,17 +4456,9 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} - tough-cookie@4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} - engines: {node: '>=6'} - tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@5.1.1: - resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} - engines: {node: '>=18'} - trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -4402,20 +4496,26 @@ packages: peerDependencies: typedoc: 0.28.x - typedoc@0.28.14: - resolution: {integrity: sha512-ftJYPvpVfQvFzpkoSfHLkJybdA/geDJ8BGQt/ZnkkhnBYoYW6lBgPQXu6vqLxO4X75dA55hX8Af847H5KXlEFA==} + typedoc@0.28.15: + resolution: {integrity: sha512-mw2/2vTL7MlT+BVo43lOsufkkd2CJO4zeOSuWQQsiXoV2VuEn7f6IZp2jsUDPmBMABpgR0R5jlcJ2OGEFYmkyg==} engines: {node: '>= 18', pnpm: '>= 10'} hasBin: true peerDependencies: typescript: 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x + typesafe-path@0.2.2: + resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} + + typescript-auto-import-cache@0.3.6: + resolution: {integrity: sha512-RpuHXrknHdVdK7wv/8ug3Fr0WNsNi5l5aB8MYYuXhq2UH5lnEB1htJ1smhtD5VeCsGr2p8mUDtd83LCQDFVgjQ==} + typescript@5.8.2: resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} engines: {node: '>=14.17'} hasBin: true - typescript@5.9.2: - resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==} + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} hasBin: true @@ -4476,16 +4576,12 @@ packages: unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} - unplugin@2.3.10: - resolution: {integrity: sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw==} + unplugin@2.3.11: + resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==} engines: {node: '>=18.12.0'} unstorage@1.17.3: @@ -4550,8 +4646,8 @@ packages: uploadthing: optional: true - update-browserslist-db@1.1.3: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + update-browserslist-db@1.1.4: + resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -4559,8 +4655,10 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + use-sync-external-store@1.6.0: + resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -4619,8 +4717,8 @@ packages: yaml: optional: true - vite@7.2.2: - resolution: {integrity: sha512-BxAKBWmIbrDgrokdGZH1IgkIk/5mMHDreLDmCJ0qpyJaAteP8NvMhkwr/ZCQNqNH97bw/dANTE9PDzqwJghfMQ==} + vite@7.2.6: + resolution: {integrity: sha512-tI2l/nFHC5rLh7+5+o7QjKjSR04ivXDF4jcgV0f/bTQ+OJiITy5S6gaynVsEM+7RqzufMnVbIon6Sr5x1SDYaQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -4667,24 +4765,38 @@ packages: vite: optional: true - vitest@4.0.8: - resolution: {integrity: sha512-urzu3NCEV0Qa0Y2PwvBtRgmNtxhj5t5ULw7cuKhIHh3OrkKTLlut0lnBOv9qe5OvbkMH2g38G7KPDCTpIytBVg==} + vitest-browser-react@2.0.2: + resolution: {integrity: sha512-zuSgTe/CKODU3ip+w4ls6Qm4xZ9+A4OHmDf0obt/mwAqavpOtqtq2YcioZt8nfDQE50EWmhdnRfDmpS1jCsbTQ==} + peerDependencies: + '@types/react': ^18.0.0 || ^19.0.0 + '@types/react-dom': ^18.0.0 || ^19.0.0 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + vitest: ^4.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + + vitest@4.0.15: + resolution: {integrity: sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==} engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' - '@types/debug': ^4.1.12 + '@opentelemetry/api': ^1.9.0 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 - '@vitest/browser-playwright': 4.0.8 - '@vitest/browser-preview': 4.0.8 - '@vitest/browser-webdriverio': 4.0.8 - '@vitest/ui': 4.0.8 + '@vitest/browser-playwright': 4.0.15 + '@vitest/browser-preview': 4.0.15 + '@vitest/browser-webdriverio': 4.0.15 + '@vitest/ui': 4.0.15 happy-dom: '*' jsdom: '*' peerDependenciesMeta: '@edge-runtime/vm': optional: true - '@types/debug': + '@opentelemetry/api': optional: true '@types/node': optional: true @@ -4701,9 +4813,97 @@ packages: jsdom: optional: true - w3c-xmlserializer@5.0.0: - resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} - engines: {node: '>=18'} + volar-service-css@0.0.67: + resolution: {integrity: sha512-zV7C6enn9T9tuvQ6iSUyYEs34iPXR69Pf9YYWpbFYPWzVs22w96BtE8p04XYXbmjU6unt5oFt+iLL77bMB5fhA==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-emmet@0.0.67: + resolution: {integrity: sha512-UDBL5x7KptmuJZNCCXMlCndMhFult/tj+9jXq3FH1ZGS1E4M/1U5hC06pg1c6e4kn+vnR6bqmvX0vIhL4f98+A==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-html@0.0.67: + resolution: {integrity: sha512-ljREMF79JbcjNvObiv69HK2HCl5UT7WTD10zi6CRFUHMbPfiF2UZ42HGLsEGSzaHGZz6H4IFjSS/qfENRLUviQ==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-prettier@0.0.67: + resolution: {integrity: sha512-B4KnPJPNWFTkEDa6Fn08i5PpO6T1CecmLLTFZoXz2eI4Fxwba/3nDaaVSsEP7e/vEe+U5YqV9fBzayJT71G5xg==} + peerDependencies: + '@volar/language-service': ~2.4.0 + prettier: ^2.2 || ^3.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + prettier: + optional: true + + volar-service-typescript-twoslash-queries@0.0.67: + resolution: {integrity: sha512-LD2R7WivDYp1SPgZrxx/0222xVTitDjm36oKo5+bfYG5kEgnw+BOPVHdwmvpJKg/RfssfxDI1ouwD4XkEDEfbA==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-typescript@0.0.67: + resolution: {integrity: sha512-rfQBy36Rm1PU9vLWHk8BYJ4r2j/CI024vocJcH4Nb6K2RTc2Irmw6UOVY5DdGiPRV5r+e10wLMK5njj/EcL8sA==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-yaml@0.0.67: + resolution: {integrity: sha512-jkdP/RF6wPIXEE3Ktnd81oJPn7aAvnVSiaqQHThC2Hrvo6xd9pEcqtbBUI+YfqVgvcMtXAkbtNO61K2GPhAiuA==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + vscode-css-languageservice@6.3.9: + resolution: {integrity: sha512-1tLWfp+TDM5ZuVWht3jmaY5y7O6aZmpeXLoHl5bv1QtRsRKt4xYGRMmdJa5Pqx/FTkgRbsna9R+Gn2xE+evVuA==} + + vscode-html-languageservice@5.6.1: + resolution: {integrity: sha512-5Mrqy5CLfFZUgkyhNZLA1Ye5g12Cb/v6VM7SxUzZUaRKWMDz4md+y26PrfRTSU0/eQAl3XpO9m2og+GGtDMuaA==} + + vscode-json-languageservice@4.1.8: + resolution: {integrity: sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==} + engines: {npm: '>=7.0.0'} + + vscode-jsonrpc@8.2.0: + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} + engines: {node: '>=14.0.0'} + + vscode-languageserver-protocol@3.17.5: + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} + + vscode-languageserver-textdocument@1.0.12: + resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} + + vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + + vscode-languageserver@9.0.1: + resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} + hasBin: true + + vscode-nls@5.2.0: + resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} + + vscode-uri@3.1.0: + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} web-namespaces@2.0.1: resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} @@ -4711,25 +4911,9 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - webidl-conversions@7.0.0: - resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} - engines: {node: '>=12'} - webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - whatwg-encoding@3.1.1: - resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} - engines: {node: '>=18'} - - whatwg-mimetype@4.0.0: - resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} - engines: {node: '>=18'} - - whatwg-url@14.2.0: - resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} - engines: {node: '>=18'} - whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -4781,16 +4965,13 @@ packages: utf-8-validate: optional: true - xml-name-validator@5.0.0: - resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} - engines: {node: '>=18'} - - xmlchars@2.2.0: - resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} - xxhash-wasm@1.1.0: resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==} + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -4801,12 +4982,21 @@ packages: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} + yaml-language-server@1.19.2: + resolution: {integrity: sha512-9F3myNmJzUN/679jycdMxqtydPSDRAarSj3wPiF7pchEPnO9Dg07Oc+gIYLqXR4L+g+FSEVXXv2+mr54StLFOg==} + hasBin: true + yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - yaml@2.8.1: - resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} + yaml@2.7.1: + resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} + engines: {node: '>= 14'} + hasBin: true + + yaml@2.8.2: + resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==} engines: {node: '>= 14.6'} hasBin: true @@ -4814,6 +5004,10 @@ packages: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + yocto-queue@1.2.2: resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} engines: {node: '>=12.20'} @@ -4865,7 +5059,7 @@ snapshots: '@emotion/hash': 0.8.0 '@emotion/unitless': 0.7.5 classnames: 2.5.1 - csstype: 3.1.3 + csstype: 3.2.3 rc-util: 5.44.4(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) @@ -4896,18 +5090,46 @@ snapshots: resize-observer-polyfill: 1.5.1 throttle-debounce: 5.0.2 - '@asamuzakjp/css-color@3.2.0': + '@astrojs/check@0.9.6(prettier@3.7.4)(typescript@5.9.3)': dependencies: - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 - lru-cache: 10.4.3 + '@astrojs/language-server': 2.16.2(prettier@3.7.4)(typescript@5.9.3) + chokidar: 4.0.3 + kleur: 4.1.5 + typescript: 5.9.3 + yargs: 17.7.2 + transitivePeerDependencies: + - prettier + - prettier-plugin-astro '@astrojs/compiler@2.13.0': {} '@astrojs/internal-helpers@0.7.5': {} + '@astrojs/language-server@2.16.2(prettier@3.7.4)(typescript@5.9.3)': + dependencies: + '@astrojs/compiler': 2.13.0 + '@astrojs/yaml2ts': 0.2.2 + '@jridgewell/sourcemap-codec': 1.5.5 + '@volar/kit': 2.4.26(typescript@5.9.3) + '@volar/language-core': 2.4.26 + '@volar/language-server': 2.4.26 + '@volar/language-service': 2.4.26 + fast-glob: 3.3.3 + muggle-string: 0.4.1 + volar-service-css: 0.0.67(@volar/language-service@2.4.26) + volar-service-emmet: 0.0.67(@volar/language-service@2.4.26) + volar-service-html: 0.0.67(@volar/language-service@2.4.26) + volar-service-prettier: 0.0.67(@volar/language-service@2.4.26)(prettier@3.7.4) + volar-service-typescript: 0.0.67(@volar/language-service@2.4.26) + volar-service-typescript-twoslash-queries: 0.0.67(@volar/language-service@2.4.26) + volar-service-yaml: 0.0.67(@volar/language-service@2.4.26) + vscode-html-languageservice: 5.6.1 + vscode-uri: 3.1.0 + optionalDependencies: + prettier: 3.7.4 + transitivePeerDependencies: + - typescript + '@astrojs/markdown-remark@6.3.9': dependencies: '@astrojs/internal-helpers': 0.7.5 @@ -4924,7 +5146,7 @@ snapshots: remark-parse: 11.0.0 remark-rehype: 11.1.2 remark-smartypants: 3.0.2 - shiki: 3.15.0 + shiki: 3.17.0 smol-toml: 1.5.2 unified: 11.0.5 unist-util-remove-position: 5.0.0 @@ -4934,12 +5156,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@4.3.12(astro@5.16.0(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1))': + '@astrojs/mdx@4.3.12(astro@5.16.4(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2))': dependencies: '@astrojs/markdown-remark': 6.3.9 '@mdx-js/mdx': 3.1.1 acorn: 8.15.0 - astro: 5.16.0(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1) + astro: 5.16.4(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2) es-module-lexer: 1.7.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 @@ -4957,15 +5179,15 @@ snapshots: dependencies: prismjs: 1.30.0 - '@astrojs/react@4.4.2(@types/node@24.10.1)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(jiti@2.6.1)(lightningcss@1.30.2)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(yaml@2.8.1)': + '@astrojs/react@4.4.2(@types/node@24.10.1)(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(jiti@2.6.1)(lightningcss@1.30.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(yaml@2.8.2)': dependencies: - '@types/react': 19.2.7 - '@types/react-dom': 19.2.3(@types/react@19.2.7) - '@vitejs/plugin-react': 4.7.0(vite@6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) - react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) + '@vitejs/plugin-react': 4.7.0(vite@6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) ultrahtml: 1.6.0 - vite: 6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1) + vite: 6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) transitivePeerDependencies: - '@types/node' - jiti @@ -4986,22 +5208,22 @@ snapshots: stream-replace-string: 2.0.0 zod: 3.25.76 - '@astrojs/starlight-tailwind@4.0.2(@astrojs/starlight@0.36.2(astro@5.16.0(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1)))(tailwindcss@4.1.17)': + '@astrojs/starlight-tailwind@4.0.2(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2)))(tailwindcss@4.1.17)': dependencies: - '@astrojs/starlight': 0.36.2(astro@5.16.0(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1)) + '@astrojs/starlight': 0.37.0(astro@5.16.4(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2)) tailwindcss: 4.1.17 - '@astrojs/starlight@0.36.2(astro@5.16.0(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1))': + '@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2))': dependencies: '@astrojs/markdown-remark': 6.3.9 - '@astrojs/mdx': 4.3.12(astro@5.16.0(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1)) + '@astrojs/mdx': 4.3.12(astro@5.16.4(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2)) '@astrojs/sitemap': 3.6.0 '@pagefind/default-ui': 1.4.0 '@types/hast': 3.0.4 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 5.16.0(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1) - astro-expressive-code: 0.41.3(astro@5.16.0(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1)) + astro: 5.16.4(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2) + astro-expressive-code: 0.41.3(astro@5.16.4(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2)) bcp-47: 2.1.0 hast-util-from-html: 2.0.3 hast-util-select: 6.0.4 @@ -5010,6 +5232,7 @@ snapshots: i18next: 23.16.8 js-yaml: 4.1.1 klona: 2.0.6 + magic-string: 0.30.21 mdast-util-directive: 3.1.0 mdast-util-to-markdown: 2.1.2 mdast-util-to-string: 4.0.0 @@ -5036,15 +5259,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/vercel@9.0.2(astro@5.16.0(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1))(react@19.2.0)(rollup@4.52.0)': + '@astrojs/vercel@9.0.2(astro@5.16.4(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2))(react@18.3.1)(rollup@4.53.3)': dependencies: '@astrojs/internal-helpers': 0.7.5 - '@vercel/analytics': 1.5.0(react@19.2.0) + '@vercel/analytics': 1.5.0(react@18.3.1) '@vercel/functions': 2.2.13 - '@vercel/nft': 0.30.4(rollup@4.52.0) + '@vercel/nft': 0.30.4(rollup@4.53.3) '@vercel/routing-utils': 5.3.0 - astro: 5.16.0(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1) - esbuild: 0.25.10 + astro: 5.16.4(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2) + esbuild: 0.25.12 tinyglobby: 0.2.15 transitivePeerDependencies: - '@aws-sdk/credential-provider-web-identity' @@ -5059,24 +5282,28 @@ snapshots: - vue - vue-router + '@astrojs/yaml2ts@0.2.2': + dependencies: + yaml: 2.8.2 + '@babel/code-frame@7.27.1': dependencies: - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.28.4': {} + '@babel/compat-data@7.28.5': {} - '@babel/core@7.28.4': + '@babel/core@7.28.5': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.3 + '@babel/generator': 7.28.5 '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) '@babel/helpers': 7.28.4 '@babel/parser': 7.28.5 '@babel/template': 7.27.2 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 '@babel/types': 7.28.5 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 @@ -5087,10 +5314,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.28.3': + '@babel/generator@7.28.5': dependencies: - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 @@ -5101,47 +5328,47 @@ snapshots: '@babel/helper-compilation-targets@7.27.2': dependencies: - '@babel/compat-data': 7.28.4 + '@babel/compat-data': 7.28.5 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.26.2 + browserslist: 4.28.0 lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.4)': + '@babel/helper-create-class-features-plugin@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.4) + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 semver: 6.3.1 transitivePeerDependencies: - supports-color '@babel/helper-globals@7.28.0': {} - '@babel/helper-member-expression-to-functions@7.27.1': + '@babel/helper-member-expression-to-functions@7.28.5': dependencies: - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.4 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-module-imports': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color @@ -5151,26 +5378,24 @@ snapshots: '@babel/helper-plugin-utils@7.27.1': {} - '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.4)': + '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-member-expression-to-functions': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.28.4 + '@babel/traverse': 7.28.5 '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color '@babel/helper-string-parser@7.27.1': {} - '@babel/helper-validator-identifier@7.27.1': {} - '@babel/helper-validator-identifier@7.28.5': {} '@babel/helper-validator-option@7.27.1': {} @@ -5180,114 +5405,110 @@ snapshots: '@babel/template': 7.27.2 '@babel/types': 7.28.5 - '@babel/parser@7.28.4': - dependencies: - '@babel/types': 7.28.4 - '@babel/parser@7.28.5': dependencies: '@babel/types': 7.28.5 - '@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.5) - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-optional-chaining@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.4)': + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.4)': + '@babel/plugin-transform-typescript@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/preset-flow@7.27.1(@babel/core@7.28.4)': + '@babel/preset-flow@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.5) - '@babel/preset-typescript@7.27.1(@babel/core@7.28.4)': + '@babel/preset-typescript@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.4) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/register@7.28.3(@babel/core@7.28.4)': + '@babel/register@7.28.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 @@ -5299,26 +5520,21 @@ snapshots: '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 - '@babel/parser': 7.28.4 - '@babel/types': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 - '@babel/traverse@7.28.4': + '@babel/traverse@7.28.5': dependencies: '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.3 + '@babel/generator': 7.28.5 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.28.4 + '@babel/parser': 7.28.5 '@babel/template': 7.27.2 - '@babel/types': 7.28.4 + '@babel/types': 7.28.5 debug: 4.4.3 transitivePeerDependencies: - supports-color - '@babel/types@7.28.4': - dependencies: - '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/types@7.28.5': dependencies: '@babel/helper-string-parser': 7.27.1 @@ -5330,27 +5546,30 @@ snapshots: dependencies: fontkit: 2.0.4 - '@csstools/color-helpers@5.1.0': {} + '@ctrl/tinycolor@4.2.0': {} + + '@emmetio/abbreviation@2.3.3': + dependencies: + '@emmetio/scanner': 1.0.4 - '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + '@emmetio/css-abbreviation@2.1.8': dependencies: - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 + '@emmetio/scanner': 1.0.4 - '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + '@emmetio/css-parser@0.4.1': dependencies: - '@csstools/color-helpers': 5.1.0 - '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) - '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) - '@csstools/css-tokenizer': 3.0.4 + '@emmetio/stream-reader': 2.2.0 + '@emmetio/stream-reader-utils': 0.1.0 - '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': + '@emmetio/html-matcher@1.3.0': dependencies: - '@csstools/css-tokenizer': 3.0.4 + '@emmetio/scanner': 1.0.4 - '@csstools/css-tokenizer@3.0.4': {} + '@emmetio/scanner@1.0.4': {} - '@ctrl/tinycolor@4.2.0': {} + '@emmetio/stream-reader-utils@0.1.0': {} + + '@emmetio/stream-reader@2.2.0': {} '@emnapi/runtime@1.7.1': dependencies: @@ -5391,7 +5610,7 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@18.3.24)(react@18.3.1)': + '@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1)': dependencies: '@babel/runtime': 7.28.4 '@emotion/babel-plugin': 11.13.5 @@ -5403,7 +5622,7 @@ snapshots: hoist-non-react-statics: 3.3.2 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.24 + '@types/react': 18.3.27 transitivePeerDependencies: - supports-color @@ -5413,22 +5632,22 @@ snapshots: '@emotion/memoize': 0.9.0 '@emotion/unitless': 0.10.0 '@emotion/utils': 1.4.2 - csstype: 3.1.3 + csstype: 3.2.3 '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.24)(react@18.3.1))(@types/react@18.3.24)(react@18.3.1)': + '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@types/react@18.3.27)(react@18.3.1)': dependencies: '@babel/runtime': 7.28.4 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.4.0 - '@emotion/react': 11.14.0(@types/react@18.3.24)(react@18.3.1) + '@emotion/react': 11.14.0(@types/react@18.3.27)(react@18.3.1) '@emotion/serialize': 1.3.3 '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@18.3.1) '@emotion/utils': 1.4.2 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.24 + '@types/react': 18.3.27 transitivePeerDependencies: - supports-color @@ -5444,82 +5663,160 @@ snapshots: '@emotion/weak-memoize@0.4.0': {} - '@esbuild/aix-ppc64@0.25.10': + '@esbuild/aix-ppc64@0.25.12': + optional: true + + '@esbuild/aix-ppc64@0.27.0': + optional: true + + '@esbuild/android-arm64@0.25.12': + optional: true + + '@esbuild/android-arm64@0.27.0': + optional: true + + '@esbuild/android-arm@0.25.12': + optional: true + + '@esbuild/android-arm@0.27.0': + optional: true + + '@esbuild/android-x64@0.25.12': + optional: true + + '@esbuild/android-x64@0.27.0': + optional: true + + '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/android-arm64@0.25.10': + '@esbuild/darwin-arm64@0.27.0': optional: true - '@esbuild/android-arm@0.25.10': + '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/android-x64@0.25.10': + '@esbuild/darwin-x64@0.27.0': optional: true - '@esbuild/darwin-arm64@0.25.10': + '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/darwin-x64@0.25.10': + '@esbuild/freebsd-arm64@0.27.0': optional: true - '@esbuild/freebsd-arm64@0.25.10': + '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.25.10': + '@esbuild/freebsd-x64@0.27.0': optional: true - '@esbuild/linux-arm64@0.25.10': + '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm@0.25.10': + '@esbuild/linux-arm64@0.27.0': optional: true - '@esbuild/linux-ia32@0.25.10': + '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-loong64@0.25.10': + '@esbuild/linux-arm@0.27.0': optional: true - '@esbuild/linux-mips64el@0.25.10': + '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-ppc64@0.25.10': + '@esbuild/linux-ia32@0.27.0': optional: true - '@esbuild/linux-riscv64@0.25.10': + '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-s390x@0.25.10': + '@esbuild/linux-loong64@0.27.0': optional: true - '@esbuild/linux-x64@0.25.10': + '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.25.10': + '@esbuild/linux-mips64el@0.27.0': optional: true - '@esbuild/netbsd-x64@0.25.10': + '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.25.10': + '@esbuild/linux-ppc64@0.27.0': optional: true - '@esbuild/openbsd-x64@0.25.10': + '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.25.10': + '@esbuild/linux-riscv64@0.27.0': optional: true - '@esbuild/sunos-x64@0.25.10': + '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/win32-arm64@0.25.10': + '@esbuild/linux-s390x@0.27.0': optional: true - '@esbuild/win32-ia32@0.25.10': + '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/win32-x64@0.25.10': + '@esbuild/linux-x64@0.27.0': + optional: true + + '@esbuild/netbsd-arm64@0.25.12': + optional: true + + '@esbuild/netbsd-arm64@0.27.0': + optional: true + + '@esbuild/netbsd-x64@0.25.12': + optional: true + + '@esbuild/netbsd-x64@0.27.0': + optional: true + + '@esbuild/openbsd-arm64@0.25.12': + optional: true + + '@esbuild/openbsd-arm64@0.27.0': + optional: true + + '@esbuild/openbsd-x64@0.25.12': + optional: true + + '@esbuild/openbsd-x64@0.27.0': + optional: true + + '@esbuild/openharmony-arm64@0.25.12': + optional: true + + '@esbuild/openharmony-arm64@0.27.0': + optional: true + + '@esbuild/sunos-x64@0.25.12': + optional: true + + '@esbuild/sunos-x64@0.27.0': + optional: true + + '@esbuild/win32-arm64@0.25.12': + optional: true + + '@esbuild/win32-arm64@0.27.0': + optional: true + + '@esbuild/win32-ia32@0.25.12': + optional: true + + '@esbuild/win32-ia32@0.27.0': + optional: true + + '@esbuild/win32-x64@0.25.12': + optional: true + + '@esbuild/win32-x64@0.27.0': optional: true '@expressive-code/core@0.41.3': @@ -5541,7 +5838,7 @@ snapshots: '@expressive-code/plugin-shiki@0.41.3': dependencies: '@expressive-code/core': 0.41.3 - shiki: 3.15.0 + shiki: 3.17.0 '@expressive-code/plugin-text-markers@0.41.3': dependencies: @@ -5549,12 +5846,12 @@ snapshots: '@faker-js/faker@10.1.0': {} - '@gerrit0/mini-shiki@3.15.0': + '@gerrit0/mini-shiki@3.17.0': dependencies: - '@shikijs/engine-oniguruma': 3.15.0 - '@shikijs/langs': 3.15.0 - '@shikijs/themes': 3.15.0 - '@shikijs/types': 3.15.0 + '@shikijs/engine-oniguruma': 3.17.0 + '@shikijs/langs': 3.17.0 + '@shikijs/themes': 3.17.0 + '@shikijs/types': 3.17.0 '@shikijs/vscode-textmate': 10.0.2 '@img/colour@1.0.0': {} @@ -5672,14 +5969,14 @@ snapshots: dependencies: minipass: 7.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.9.2)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.9.3)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))': dependencies: - glob: 10.4.5 + glob: 10.5.0 magic-string: 0.30.21 - react-docgen-typescript: 2.4.0(typescript@5.9.2) - vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1) + react-docgen-typescript: 2.4.0(typescript@5.9.3) + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) optionalDependencies: - typescript: 5.9.2 + typescript: 5.9.3 '@jridgewell/gen-mapping@0.3.13': dependencies: @@ -5745,33 +6042,33 @@ snapshots: transitivePeerDependencies: - supports-color - '@mdx-js/react@3.1.1(@types/react@18.3.24)(react@19.2.0)': + '@mdx-js/react@3.1.1(@types/react@18.3.27)(react@19.2.0)': dependencies: '@types/mdx': 2.0.13 - '@types/react': 18.3.24 + '@types/react': 18.3.27 react: 19.2.0 - '@microsoft/api-extractor-model@7.32.0(@types/node@24.10.1)': + '@microsoft/api-extractor-model@7.32.1(@types/node@24.10.1)': dependencies: '@microsoft/tsdoc': 0.16.0 '@microsoft/tsdoc-config': 0.18.0 - '@rushstack/node-core-library': 5.18.0(@types/node@24.10.1) + '@rushstack/node-core-library': 5.19.0(@types/node@24.10.1) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.55.0(@types/node@24.10.1)': + '@microsoft/api-extractor@7.55.1(@types/node@24.10.1)': dependencies: - '@microsoft/api-extractor-model': 7.32.0(@types/node@24.10.1) + '@microsoft/api-extractor-model': 7.32.1(@types/node@24.10.1) '@microsoft/tsdoc': 0.16.0 '@microsoft/tsdoc-config': 0.18.0 - '@rushstack/node-core-library': 5.18.0(@types/node@24.10.1) + '@rushstack/node-core-library': 5.19.0(@types/node@24.10.1) '@rushstack/rig-package': 0.6.0 - '@rushstack/terminal': 0.19.3(@types/node@24.10.1) - '@rushstack/ts-command-line': 5.1.3(@types/node@24.10.1) + '@rushstack/terminal': 0.19.4(@types/node@24.10.1) + '@rushstack/ts-command-line': 5.1.4(@types/node@24.10.1) diff: 8.0.2 lodash: 4.17.21 minimatch: 10.0.3 - resolve: 1.22.10 + resolve: 1.22.11 semver: 7.5.4 source-map: 0.6.1 typescript: 5.8.2 @@ -5783,113 +6080,125 @@ snapshots: '@microsoft/tsdoc': 0.16.0 ajv: 8.12.0 jju: 1.4.0 - resolve: 1.22.10 + resolve: 1.22.11 '@microsoft/tsdoc@0.16.0': {} - '@mui/core-downloads-tracker@7.3.2': {} + '@mui/core-downloads-tracker@7.3.6': {} - '@mui/material@7.3.2(@emotion/react@11.14.0(@types/react@18.3.24)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.24)(react@18.3.1))(@types/react@18.3.24)(react@18.3.1))(@types/react@18.3.24)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@mui/material@7.3.6(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@types/react@18.3.27)(react@18.3.1))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.28.4 - '@mui/core-downloads-tracker': 7.3.2 - '@mui/system': 7.3.2(@emotion/react@11.14.0(@types/react@18.3.24)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.24)(react@18.3.1))(@types/react@18.3.24)(react@18.3.1))(@types/react@18.3.24)(react@18.3.1) - '@mui/types': 7.4.6(@types/react@18.3.24) - '@mui/utils': 7.3.2(@types/react@18.3.24)(react@18.3.1) + '@mui/core-downloads-tracker': 7.3.6 + '@mui/system': 7.3.6(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@types/react@18.3.27)(react@18.3.1))(@types/react@18.3.27)(react@18.3.1) + '@mui/types': 7.4.9(@types/react@18.3.27) + '@mui/utils': 7.3.6(@types/react@18.3.27)(react@18.3.1) '@popperjs/core': 2.11.8 - '@types/react-transition-group': 4.4.12(@types/react@18.3.24) + '@types/react-transition-group': 4.4.12(@types/react@18.3.27) clsx: 2.1.1 - csstype: 3.1.3 + csstype: 3.2.3 prop-types: 15.8.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-is: 19.1.1 + react-is: 19.2.0 react-transition-group: 4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) optionalDependencies: - '@emotion/react': 11.14.0(@types/react@18.3.24)(react@18.3.1) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.24)(react@18.3.1))(@types/react@18.3.24)(react@18.3.1) - '@types/react': 18.3.24 + '@emotion/react': 11.14.0(@types/react@18.3.27)(react@18.3.1) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@types/react@18.3.27)(react@18.3.1) + '@types/react': 18.3.27 - '@mui/private-theming@7.3.2(@types/react@18.3.24)(react@18.3.1)': + '@mui/private-theming@7.3.6(@types/react@18.3.27)(react@18.3.1)': dependencies: '@babel/runtime': 7.28.4 - '@mui/utils': 7.3.2(@types/react@18.3.24)(react@18.3.1) + '@mui/utils': 7.3.6(@types/react@18.3.27)(react@18.3.1) prop-types: 15.8.1 react: 18.3.1 optionalDependencies: - '@types/react': 18.3.24 + '@types/react': 18.3.27 - '@mui/styled-engine@7.3.2(@emotion/react@11.14.0(@types/react@18.3.24)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.24)(react@18.3.1))(@types/react@18.3.24)(react@18.3.1))(react@18.3.1)': + '@mui/styled-engine@7.3.6(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@types/react@18.3.27)(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.28.4 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 '@emotion/sheet': 1.4.0 - csstype: 3.1.3 + csstype: 3.2.3 prop-types: 15.8.1 react: 18.3.1 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@18.3.24)(react@18.3.1) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.24)(react@18.3.1))(@types/react@18.3.24)(react@18.3.1) + '@emotion/react': 11.14.0(@types/react@18.3.27)(react@18.3.1) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@types/react@18.3.27)(react@18.3.1) - '@mui/system@7.3.2(@emotion/react@11.14.0(@types/react@18.3.24)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.24)(react@18.3.1))(@types/react@18.3.24)(react@18.3.1))(@types/react@18.3.24)(react@18.3.1)': + '@mui/system@7.3.6(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@types/react@18.3.27)(react@18.3.1))(@types/react@18.3.27)(react@18.3.1)': dependencies: '@babel/runtime': 7.28.4 - '@mui/private-theming': 7.3.2(@types/react@18.3.24)(react@18.3.1) - '@mui/styled-engine': 7.3.2(@emotion/react@11.14.0(@types/react@18.3.24)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.24)(react@18.3.1))(@types/react@18.3.24)(react@18.3.1))(react@18.3.1) - '@mui/types': 7.4.6(@types/react@18.3.24) - '@mui/utils': 7.3.2(@types/react@18.3.24)(react@18.3.1) + '@mui/private-theming': 7.3.6(@types/react@18.3.27)(react@18.3.1) + '@mui/styled-engine': 7.3.6(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@types/react@18.3.27)(react@18.3.1))(react@18.3.1) + '@mui/types': 7.4.9(@types/react@18.3.27) + '@mui/utils': 7.3.6(@types/react@18.3.27)(react@18.3.1) clsx: 2.1.1 - csstype: 3.1.3 + csstype: 3.2.3 prop-types: 15.8.1 react: 18.3.1 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@18.3.24)(react@18.3.1) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.24)(react@18.3.1))(@types/react@18.3.24)(react@18.3.1) - '@types/react': 18.3.24 + '@emotion/react': 11.14.0(@types/react@18.3.27)(react@18.3.1) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@18.3.27)(react@18.3.1))(@types/react@18.3.27)(react@18.3.1) + '@types/react': 18.3.27 - '@mui/types@7.4.6(@types/react@18.3.24)': + '@mui/types@7.4.9(@types/react@18.3.27)': dependencies: '@babel/runtime': 7.28.4 optionalDependencies: - '@types/react': 18.3.24 + '@types/react': 18.3.27 - '@mui/utils@7.3.2(@types/react@18.3.24)(react@18.3.1)': + '@mui/utils@7.3.6(@types/react@18.3.27)(react@18.3.1)': dependencies: '@babel/runtime': 7.28.4 - '@mui/types': 7.4.6(@types/react@18.3.24) + '@mui/types': 7.4.9(@types/react@18.3.27) '@types/prop-types': 15.7.15 clsx: 2.1.1 prop-types: 15.8.1 react: 18.3.1 - react-is: 19.1.1 + react-is: 19.2.0 optionalDependencies: - '@types/react': 18.3.24 + '@types/react': 18.3.27 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.19.1 '@oslojs/encoding@1.1.0': {} - '@oxlint/darwin-arm64@1.28.0': + '@oxlint/darwin-arm64@1.31.0': optional: true - '@oxlint/darwin-x64@1.28.0': + '@oxlint/darwin-x64@1.31.0': optional: true - '@oxlint/linux-arm64-gnu@1.28.0': + '@oxlint/linux-arm64-gnu@1.31.0': optional: true - '@oxlint/linux-arm64-musl@1.28.0': + '@oxlint/linux-arm64-musl@1.31.0': optional: true - '@oxlint/linux-x64-gnu@1.28.0': + '@oxlint/linux-x64-gnu@1.31.0': optional: true - '@oxlint/linux-x64-musl@1.28.0': + '@oxlint/linux-x64-musl@1.31.0': optional: true - '@oxlint/win32-arm64@1.28.0': + '@oxlint/win32-arm64@1.31.0': optional: true - '@oxlint/win32-x64@1.28.0': + '@oxlint/win32-x64@1.31.0': optional: true '@pagefind/darwin-arm64@1.4.0': @@ -5959,10 +6268,9 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@rc-component/qrcode@1.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@rc-component/qrcode@1.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@babel/runtime': 7.28.4 - classnames: 2.5.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) @@ -5991,90 +6299,90 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.47': {} - '@rollup/pluginutils@5.3.0(rollup@4.52.0)': + '@rollup/pluginutils@5.3.0(rollup@4.53.3)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.3 optionalDependencies: - rollup: 4.52.0 + rollup: 4.53.3 - '@rollup/rollup-android-arm-eabi@4.52.0': + '@rollup/rollup-android-arm-eabi@4.53.3': optional: true - '@rollup/rollup-android-arm64@4.52.0': + '@rollup/rollup-android-arm64@4.53.3': optional: true - '@rollup/rollup-darwin-arm64@4.52.0': + '@rollup/rollup-darwin-arm64@4.53.3': optional: true - '@rollup/rollup-darwin-x64@4.52.0': + '@rollup/rollup-darwin-x64@4.53.3': optional: true - '@rollup/rollup-freebsd-arm64@4.52.0': + '@rollup/rollup-freebsd-arm64@4.53.3': optional: true - '@rollup/rollup-freebsd-x64@4.52.0': + '@rollup/rollup-freebsd-x64@4.53.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.52.0': + '@rollup/rollup-linux-arm-gnueabihf@4.53.3': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.52.0': + '@rollup/rollup-linux-arm-musleabihf@4.53.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.52.0': + '@rollup/rollup-linux-arm64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.52.0': + '@rollup/rollup-linux-arm64-musl@4.53.3': optional: true - '@rollup/rollup-linux-loong64-gnu@4.52.0': + '@rollup/rollup-linux-loong64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.52.0': + '@rollup/rollup-linux-ppc64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.52.0': + '@rollup/rollup-linux-riscv64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-riscv64-musl@4.52.0': + '@rollup/rollup-linux-riscv64-musl@4.53.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.52.0': + '@rollup/rollup-linux-s390x-gnu@4.53.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.52.0': + '@rollup/rollup-linux-x64-gnu@4.53.3': optional: true - '@rollup/rollup-linux-x64-musl@4.52.0': + '@rollup/rollup-linux-x64-musl@4.53.3': optional: true - '@rollup/rollup-openharmony-arm64@4.52.0': + '@rollup/rollup-openharmony-arm64@4.53.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.52.0': + '@rollup/rollup-win32-arm64-msvc@4.53.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.52.0': + '@rollup/rollup-win32-ia32-msvc@4.53.3': optional: true - '@rollup/rollup-win32-x64-gnu@4.52.0': + '@rollup/rollup-win32-x64-gnu@4.53.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.52.0': + '@rollup/rollup-win32-x64-msvc@4.53.3': optional: true '@rsuite/icon-font@4.1.0': {} - '@rsuite/icons@1.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@rsuite/icons@1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@rsuite/icon-font': 4.1.0 classnames: 2.5.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@rushstack/node-core-library@5.18.0(@types/node@24.10.1)': + '@rushstack/node-core-library@5.19.0(@types/node@24.10.1)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -6082,7 +6390,7 @@ snapshots: fs-extra: 11.3.2 import-lazy: 4.0.0 jju: 1.4.0 - resolve: 1.22.10 + resolve: 1.22.11 semver: 7.5.4 optionalDependencies: '@types/node': 24.10.1 @@ -6093,53 +6401,53 @@ snapshots: '@rushstack/rig-package@0.6.0': dependencies: - resolve: 1.22.10 + resolve: 1.22.11 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.19.3(@types/node@24.10.1)': + '@rushstack/terminal@0.19.4(@types/node@24.10.1)': dependencies: - '@rushstack/node-core-library': 5.18.0(@types/node@24.10.1) + '@rushstack/node-core-library': 5.19.0(@types/node@24.10.1) '@rushstack/problem-matcher': 0.1.1(@types/node@24.10.1) supports-color: 8.1.1 optionalDependencies: '@types/node': 24.10.1 - '@rushstack/ts-command-line@5.1.3(@types/node@24.10.1)': + '@rushstack/ts-command-line@5.1.4(@types/node@24.10.1)': dependencies: - '@rushstack/terminal': 0.19.3(@types/node@24.10.1) + '@rushstack/terminal': 0.19.4(@types/node@24.10.1) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 transitivePeerDependencies: - '@types/node' - '@shikijs/core@3.15.0': + '@shikijs/core@3.17.0': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 3.17.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@3.15.0': + '@shikijs/engine-javascript@3.17.0': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 3.17.0 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.4 - '@shikijs/engine-oniguruma@3.15.0': + '@shikijs/engine-oniguruma@3.17.0': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 3.17.0 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@3.15.0': + '@shikijs/langs@3.17.0': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 3.17.0 - '@shikijs/themes@3.15.0': + '@shikijs/themes@3.17.0': dependencies: - '@shikijs/types': 3.15.0 + '@shikijs/types': 3.17.0 - '@shikijs/types@3.15.0': + '@shikijs/types@3.17.0': dependencies: '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -6148,15 +6456,15 @@ snapshots: '@standard-schema/spec@1.0.0': {} - '@storybook/addon-docs@10.0.7(@types/react@18.3.24)(esbuild@0.25.10)(rollup@4.52.0)(storybook@10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)))(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))': + '@storybook/addon-docs@10.1.4(@types/react@18.3.27)(esbuild@0.27.0)(rollup@4.53.3)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))': dependencies: - '@mdx-js/react': 3.1.1(@types/react@18.3.24)(react@19.2.0) - '@storybook/csf-plugin': 10.0.7(esbuild@0.25.10)(rollup@4.52.0)(storybook@10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)))(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) - '@storybook/icons': 1.6.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - '@storybook/react-dom-shim': 10.0.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))) + '@mdx-js/react': 3.1.1(@types/react@18.3.27)(react@19.2.0) + '@storybook/csf-plugin': 10.1.4(esbuild@0.27.0)(rollup@4.53.3)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) + '@storybook/icons': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@19.2.0) + '@storybook/react-dom-shim': 10.1.4(react-dom@18.3.1(react@18.3.1))(react@19.2.0)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - storybook: 10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) + react-dom: 18.3.1(react@19.2.0) + storybook: 10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' @@ -6165,177 +6473,178 @@ snapshots: - vite - webpack - '@storybook/addon-links@10.0.7(react@18.3.1)(storybook@10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)))': + '@storybook/addon-links@10.1.4(react@18.3.1)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: '@storybook/global': 5.0.0 - storybook: 10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) + storybook: 10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) optionalDependencies: react: 18.3.1 - '@storybook/builder-vite@10.0.7(esbuild@0.25.10)(rollup@4.52.0)(storybook@10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)))(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))': + '@storybook/builder-vite@10.1.4(esbuild@0.27.0)(rollup@4.53.3)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))': dependencies: - '@storybook/csf-plugin': 10.0.7(esbuild@0.25.10)(rollup@4.52.0)(storybook@10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)))(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) - storybook: 10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) + '@storybook/csf-plugin': 10.1.4(esbuild@0.27.0)(rollup@4.53.3)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) + '@vitest/mocker': 3.2.4(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) + storybook: 10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ts-dedent: 2.2.0 - vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1) + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) transitivePeerDependencies: - esbuild + - msw - rollup - webpack - '@storybook/cli@10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))': + '@storybook/cli@10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@storybook/codemod': 10.0.7(@testing-library/dom@10.4.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) + '@storybook/codemod': 10.1.4(@testing-library/dom@10.4.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@types/semver': 7.7.1 commander: 14.0.2 - create-storybook: 10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) - giget: 2.0.0 + create-storybook: 10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) jscodeshift: 0.15.2 - storybook: 10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) + storybook: 10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ts-dedent: 2.2.0 transitivePeerDependencies: - '@babel/preset-env' - '@testing-library/dom' - bufferutil - - msw - prettier - react - react-dom - supports-color - utf-8-validate - - vite - '@storybook/codemod@10.0.7(@testing-library/dom@10.4.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))': + '@storybook/codemod@10.1.4(@testing-library/dom@10.4.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@types/cross-spawn': 6.0.6 cross-spawn: 7.0.6 - es-toolkit: 1.39.10 + es-toolkit: 1.42.0 jscodeshift: 0.15.2 - prettier: 3.6.2 - storybook: 10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) + prettier: 3.7.4 + storybook: 10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tiny-invariant: 1.3.3 tinyglobby: 0.2.15 transitivePeerDependencies: - '@babel/preset-env' - '@testing-library/dom' - bufferutil - - msw - react - react-dom - supports-color - utf-8-validate - - vite - '@storybook/csf-plugin@10.0.7(esbuild@0.25.10)(rollup@4.52.0)(storybook@10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)))(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))': + '@storybook/csf-plugin@10.1.4(esbuild@0.27.0)(rollup@4.53.3)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))': dependencies: - storybook: 10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) - unplugin: 2.3.10 + storybook: 10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + unplugin: 2.3.11 optionalDependencies: - esbuild: 0.25.10 - rollup: 4.52.0 - vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1) + esbuild: 0.27.0 + rollup: 4.53.3 + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) '@storybook/global@5.0.0': {} - '@storybook/icons@1.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@storybook/icons@2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/icons@1.6.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@storybook/icons@2.0.1(react-dom@18.3.1(react@18.3.1))(react@19.2.0)': dependencies: react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) + react-dom: 18.3.1(react@18.3.1) - '@storybook/react-dom-shim@10.0.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)))': + '@storybook/react-dom-shim@10.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) + storybook: 10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/react-dom-shim@10.0.7(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(storybook@10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)))': + '@storybook/react-dom-shim@10.1.4(react-dom@18.3.1(react@18.3.1))(react@19.2.0)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))': dependencies: react: 19.2.0 - react-dom: 19.2.0(react@19.2.0) - storybook: 10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) + react-dom: 18.3.1(react@18.3.1) + storybook: 10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/react-vite@10.0.7(esbuild@0.25.10)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.52.0)(storybook@10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)))(typescript@5.9.2)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))': + '@storybook/react-vite@10.1.4(esbuild@0.27.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.53.3)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.9.2)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) - '@rollup/pluginutils': 5.3.0(rollup@4.52.0) - '@storybook/builder-vite': 10.0.7(esbuild@0.25.10)(rollup@4.52.0)(storybook@10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)))(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) - '@storybook/react': 10.0.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)))(typescript@5.9.2) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.9.3)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) + '@rollup/pluginutils': 5.3.0(rollup@4.53.3) + '@storybook/builder-vite': 10.1.4(esbuild@0.27.0)(rollup@4.53.3)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) + '@storybook/react': 10.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3) empathic: 2.0.0 magic-string: 0.30.21 react: 18.3.1 - react-docgen: 8.0.1 + react-docgen: 8.0.2 react-dom: 18.3.1(react@18.3.1) - resolve: 1.22.10 - storybook: 10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) + resolve: 1.22.11 + storybook: 10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) tsconfig-paths: 4.2.0 - vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1) + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) transitivePeerDependencies: - esbuild + - msw - rollup - supports-color - typescript - webpack - '@storybook/react@10.0.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)))(typescript@5.9.2)': + '@storybook/react@10.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)': dependencies: '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 10.0.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))) + '@storybook/react-dom-shim': 10.1.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) react: 18.3.1 + react-docgen: 8.0.2 react-dom: 18.3.1(react@18.3.1) - storybook: 10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) + storybook: 10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) optionalDependencies: - typescript: 5.9.2 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color - '@swc/core-darwin-arm64@1.13.5': + '@swc/core-darwin-arm64@1.15.3': optional: true - '@swc/core-darwin-x64@1.13.5': + '@swc/core-darwin-x64@1.15.3': optional: true - '@swc/core-linux-arm-gnueabihf@1.13.5': + '@swc/core-linux-arm-gnueabihf@1.15.3': optional: true - '@swc/core-linux-arm64-gnu@1.13.5': + '@swc/core-linux-arm64-gnu@1.15.3': optional: true - '@swc/core-linux-arm64-musl@1.13.5': + '@swc/core-linux-arm64-musl@1.15.3': optional: true - '@swc/core-linux-x64-gnu@1.13.5': + '@swc/core-linux-x64-gnu@1.15.3': optional: true - '@swc/core-linux-x64-musl@1.13.5': + '@swc/core-linux-x64-musl@1.15.3': optional: true - '@swc/core-win32-arm64-msvc@1.13.5': + '@swc/core-win32-arm64-msvc@1.15.3': optional: true - '@swc/core-win32-ia32-msvc@1.13.5': + '@swc/core-win32-ia32-msvc@1.15.3': optional: true - '@swc/core-win32-x64-msvc@1.13.5': + '@swc/core-win32-x64-msvc@1.15.3': optional: true - '@swc/core@1.13.5(@swc/helpers@0.5.17)': + '@swc/core@1.15.3(@swc/helpers@0.5.17)': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.25 optionalDependencies: - '@swc/core-darwin-arm64': 1.13.5 - '@swc/core-darwin-x64': 1.13.5 - '@swc/core-linux-arm-gnueabihf': 1.13.5 - '@swc/core-linux-arm64-gnu': 1.13.5 - '@swc/core-linux-arm64-musl': 1.13.5 - '@swc/core-linux-x64-gnu': 1.13.5 - '@swc/core-linux-x64-musl': 1.13.5 - '@swc/core-win32-arm64-msvc': 1.13.5 - '@swc/core-win32-ia32-msvc': 1.13.5 - '@swc/core-win32-x64-msvc': 1.13.5 + '@swc/core-darwin-arm64': 1.15.3 + '@swc/core-darwin-x64': 1.15.3 + '@swc/core-linux-arm-gnueabihf': 1.15.3 + '@swc/core-linux-arm64-gnu': 1.15.3 + '@swc/core-linux-arm64-musl': 1.15.3 + '@swc/core-linux-x64-gnu': 1.15.3 + '@swc/core-linux-x64-musl': 1.15.3 + '@swc/core-win32-arm64-msvc': 1.15.3 + '@swc/core-win32-ia32-msvc': 1.15.3 + '@swc/core-win32-x64-msvc': 1.15.3 '@swc/helpers': 0.5.17 '@swc/counter@0.1.3': {} @@ -6409,12 +6718,12 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.1.17 '@tailwindcss/oxide-win32-x64-msvc': 4.1.17 - '@tailwindcss/vite@4.1.17(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))': + '@tailwindcss/vite@4.1.17(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))': dependencies: '@tailwindcss/node': 4.1.17 '@tailwindcss/oxide': 4.1.17 tailwindcss: 4.1.17 - vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1) + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) '@testing-library/dom@10.4.1': dependencies: @@ -6436,16 +6745,6 @@ snapshots: picocolors: 1.1.1 redent: 3.0.0 - '@testing-library/react@16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.7))(@types/react@19.2.7)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@babel/runtime': 7.28.4 - '@testing-library/dom': 10.4.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 19.2.7 - '@types/react-dom': 19.2.3(@types/react@19.2.7) - '@testing-library/user-event@14.6.1(@testing-library/dom@10.4.1)': dependencies: '@testing-library/dom': 10.4.1 @@ -6475,9 +6774,10 @@ snapshots: dependencies: '@babel/types': 7.28.5 - '@types/chai@5.2.2': + '@types/chai@5.2.3': dependencies: '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 '@types/cross-spawn@6.0.6': dependencies: @@ -6507,7 +6807,7 @@ snapshots: '@types/js-yaml@4.0.9': {} - '@types/lodash@4.17.20': {} + '@types/lodash@4.17.21': {} '@types/mdast@4.0.4': dependencies: @@ -6531,29 +6831,21 @@ snapshots: '@types/prop-types@15.7.15': {} - '@types/react-dom@18.3.7(@types/react@18.3.24)': + '@types/react-dom@18.3.7(@types/react@18.3.27)': dependencies: - '@types/react': 18.3.24 + '@types/react': 18.3.27 - '@types/react-dom@19.2.3(@types/react@19.2.7)': + '@types/react-transition-group@4.4.12(@types/react@18.3.27)': dependencies: - '@types/react': 19.2.7 - - '@types/react-transition-group@4.4.12(@types/react@18.3.24)': - dependencies: - '@types/react': 18.3.24 + '@types/react': 18.3.27 '@types/react-window@1.8.8': dependencies: - '@types/react': 19.2.7 + '@types/react': 18.3.27 - '@types/react@18.3.24': + '@types/react@18.3.27': dependencies: '@types/prop-types': 15.7.15 - csstype: 3.1.3 - - '@types/react@19.2.7': - dependencies: csstype: 3.2.3 '@types/resolve@1.20.6': {} @@ -6570,18 +6862,18 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vercel/analytics@1.5.0(react@19.2.0)': + '@vercel/analytics@1.5.0(react@18.3.1)': optionalDependencies: - react: 19.2.0 + react: 18.3.1 '@vercel/functions@2.2.13': dependencies: '@vercel/oidc': 2.0.2 - '@vercel/nft@0.30.4(rollup@4.52.0)': + '@vercel/nft@0.30.4(rollup@4.53.3)': dependencies: '@mapbox/node-pre-gyp': 2.0.3 - '@rollup/pluginutils': 5.3.0(rollup@4.52.0) + '@rollup/pluginutils': 5.3.0(rollup@4.53.3) acorn: 8.15.0 acorn-import-attributes: 1.9.5(acorn@8.15.0) async-sema: 3.1.1 @@ -6609,92 +6901,124 @@ snapshots: optionalDependencies: ajv: 6.12.6 - '@vitejs/plugin-react-swc@4.2.2(@swc/helpers@0.5.17)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))': + '@vitejs/plugin-react-swc@4.2.2(@swc/helpers@0.5.17)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.47 - '@swc/core': 1.13.5(@swc/helpers@0.5.17) - vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1) + '@swc/core': 1.15.3(@swc/helpers@0.5.17) + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-react@4.7.0(vite@6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))': + '@vitejs/plugin-react@4.7.0(vite@6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))': dependencies: - '@babel/core': 7.28.4 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.4) + '@babel/core': 7.28.5 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.5) '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1) + vite: 6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@4.0.8(vitest@4.0.8)': + '@vitest/browser-playwright@4.0.15(playwright@1.57.0)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))(vitest@4.0.15)': + dependencies: + '@vitest/browser': 4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))(vitest@4.0.15) + '@vitest/mocker': 4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) + playwright: 1.57.0 + tinyrainbow: 3.0.3 + vitest: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(@vitest/ui@4.0.15)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite + + '@vitest/browser@4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))(vitest@4.0.15)': + dependencies: + '@vitest/mocker': 4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) + '@vitest/utils': 4.0.15 + magic-string: 0.30.21 + pixelmatch: 7.1.0 + pngjs: 7.0.0 + sirv: 3.0.2 + tinyrainbow: 3.0.3 + vitest: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(@vitest/ui@4.0.15)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) + ws: 8.18.3 + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite + + '@vitest/coverage-v8@4.0.15(@vitest/browser@4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))(vitest@4.0.15))(vitest@4.0.15)': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/utils': 4.0.8 + '@vitest/utils': 4.0.15 ast-v8-to-istanbul: 0.3.8 - debug: 4.4.3 istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 5.0.6 istanbul-reports: 3.2.0 magicast: 0.5.1 + obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.8(@types/debug@4.1.12)(@types/node@24.10.1)(@vitest/ui@4.0.8)(jiti@2.6.1)(jsdom@23.1.0)(lightningcss@1.30.2)(yaml@2.8.1) + vitest: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(@vitest/ui@4.0.15)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) + optionalDependencies: + '@vitest/browser': 4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))(vitest@4.0.15) transitivePeerDependencies: - supports-color '@vitest/expect@3.2.4': dependencies: - '@types/chai': 5.2.2 + '@types/chai': 5.2.3 '@vitest/spy': 3.2.4 '@vitest/utils': 3.2.4 chai: 5.3.3 tinyrainbow: 2.0.0 - '@vitest/expect@4.0.8': + '@vitest/expect@4.0.15': dependencies: '@standard-schema/spec': 1.0.0 - '@types/chai': 5.2.2 - '@vitest/spy': 4.0.8 - '@vitest/utils': 4.0.8 + '@types/chai': 5.2.3 + '@vitest/spy': 4.0.15 + '@vitest/utils': 4.0.15 chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@3.2.4(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1) + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) - '@vitest/mocker@4.0.8(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1))': + '@vitest/mocker@4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))': dependencies: - '@vitest/spy': 4.0.8 + '@vitest/spy': 4.0.15 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1) + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) '@vitest/pretty-format@3.2.4': dependencies: tinyrainbow: 2.0.0 - '@vitest/pretty-format@4.0.8': + '@vitest/pretty-format@4.0.15': dependencies: tinyrainbow: 3.0.3 - '@vitest/runner@4.0.8': + '@vitest/runner@4.0.15': dependencies: - '@vitest/utils': 4.0.8 + '@vitest/utils': 4.0.15 pathe: 2.0.3 - '@vitest/snapshot@4.0.8': + '@vitest/snapshot@4.0.15': dependencies: - '@vitest/pretty-format': 4.0.8 + '@vitest/pretty-format': 4.0.15 magic-string: 0.30.21 pathe: 2.0.3 @@ -6702,18 +7026,18 @@ snapshots: dependencies: tinyspy: 4.0.4 - '@vitest/spy@4.0.8': {} + '@vitest/spy@4.0.15': {} - '@vitest/ui@4.0.8(vitest@4.0.8)': + '@vitest/ui@4.0.15(vitest@4.0.15)': dependencies: - '@vitest/utils': 4.0.8 + '@vitest/utils': 4.0.15 fflate: 0.8.2 flatted: 3.3.3 pathe: 2.0.3 sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vitest: 4.0.8(@types/debug@4.1.12)(@types/node@24.10.1)(@vitest/ui@4.0.8)(jiti@2.6.1)(jsdom@23.1.0)(lightningcss@1.30.2)(yaml@2.8.1) + vitest: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(@vitest/ui@4.0.15)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) '@vitest/utils@3.2.4': dependencies: @@ -6721,11 +7045,61 @@ snapshots: loupe: 3.2.1 tinyrainbow: 2.0.0 - '@vitest/utils@4.0.8': + '@vitest/utils@4.0.15': dependencies: - '@vitest/pretty-format': 4.0.8 + '@vitest/pretty-format': 4.0.15 tinyrainbow: 3.0.3 + '@volar/kit@2.4.26(typescript@5.9.3)': + dependencies: + '@volar/language-service': 2.4.26 + '@volar/typescript': 2.4.26 + typesafe-path: 0.2.2 + typescript: 5.9.3 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + + '@volar/language-core@2.4.26': + dependencies: + '@volar/source-map': 2.4.26 + + '@volar/language-server@2.4.26': + dependencies: + '@volar/language-core': 2.4.26 + '@volar/language-service': 2.4.26 + '@volar/typescript': 2.4.26 + path-browserify: 1.0.1 + request-light: 0.7.0 + vscode-languageserver: 9.0.1 + vscode-languageserver-protocol: 3.17.5 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + + '@volar/language-service@2.4.26': + dependencies: + '@volar/language-core': 2.4.26 + vscode-languageserver-protocol: 3.17.5 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + + '@volar/source-map@2.4.26': {} + + '@volar/typescript@2.4.26': + dependencies: + '@volar/language-core': 2.4.26 + path-browserify: 1.0.1 + vscode-uri: 3.1.0 + + '@vscode/emmet-helper@2.11.0': + dependencies: + emmet: 2.4.11 + jsonc-parser: 2.3.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.1.0 + + '@vscode/l10n@0.0.18': {} + abbrev@3.0.1: {} acorn-import-attributes@1.9.5(acorn@8.15.0): @@ -6744,6 +7118,10 @@ snapshots: optionalDependencies: ajv: 8.13.0 + ajv-draft-04@1.0.0(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + ajv-formats@3.0.1(ajv@8.13.0): optionalDependencies: ajv: 8.13.0 @@ -6770,6 +7148,13 @@ snapshots: require-from-string: 2.0.2 uri-js: 4.4.1 + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.0 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + ansi-align@3.0.1: dependencies: string-width: 4.2.3 @@ -6786,7 +7171,7 @@ snapshots: ansi-styles@6.2.3: {} - antd@5.28.1(date-fns@2.30.0)(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + antd@5.29.1(date-fns@2.30.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@ant-design/colors': 7.2.1 '@ant-design/cssinjs': 1.24.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -6797,12 +7182,12 @@ snapshots: '@babel/runtime': 7.28.4 '@rc-component/color-picker': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@rc-component/mutate-observer': 1.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rc-component/qrcode': 1.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/qrcode': 1.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@rc-component/tour': 1.15.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@rc-component/trigger': 2.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) classnames: 2.5.1 copy-to-clipboard: 3.3.3 - dayjs: 1.11.18 + dayjs: 1.11.19 rc-cascader: 3.34.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rc-checkbox: 3.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rc-collapse: 3.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -6818,7 +7203,7 @@ snapshots: rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rc-notification: 5.6.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rc-pagination: 5.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-picker: 4.11.3(date-fns@2.30.0)(dayjs@1.11.18)(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-picker: 4.11.3(date-fns@2.30.0)(dayjs@1.11.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rc-progress: 4.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rc-rate: 2.13.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -6879,12 +7264,12 @@ snapshots: astring@1.9.0: {} - astro-expressive-code@0.41.3(astro@5.16.0(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1)): + astro-expressive-code@0.41.3(astro@5.16.4(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2)): dependencies: - astro: 5.16.0(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1) + astro: 5.16.4(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2) rehype-expressive-code: 0.41.3 - astro@5.16.0(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1): + astro@5.16.4(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2): dependencies: '@astrojs/compiler': 2.13.0 '@astrojs/internal-helpers': 0.7.5 @@ -6892,7 +7277,7 @@ snapshots: '@astrojs/telemetry': 3.3.0 '@capsizecss/unpack': 3.0.1 '@oslojs/encoding': 1.1.0 - '@rollup/pluginutils': 5.3.0(rollup@4.52.0) + '@rollup/pluginutils': 5.3.0(rollup@4.53.3) acorn: 8.15.0 aria-query: 5.3.2 axobject-query: 4.1.0 @@ -6900,7 +7285,7 @@ snapshots: ci-info: 4.3.1 clsx: 2.1.1 common-ancestor-path: 1.0.1 - cookie: 1.0.2 + cookie: 1.1.1 cssesc: 3.0.0 debug: 4.4.3 deterministic-object-hash: 2.0.2 @@ -6909,7 +7294,7 @@ snapshots: dlv: 1.1.3 dset: 3.1.4 es-module-lexer: 1.7.0 - esbuild: 0.25.10 + esbuild: 0.25.12 estree-walker: 3.0.3 flattie: 1.1.1 fontace: 0.3.1 @@ -6924,31 +7309,31 @@ snapshots: neotraverse: 0.6.18 p-limit: 6.2.0 p-queue: 8.1.1 - package-manager-detector: 1.5.0 + package-manager-detector: 1.6.0 piccolore: 0.1.3 picomatch: 4.0.3 prompts: 2.4.2 rehype: 13.0.2 semver: 7.7.3 - shiki: 3.15.0 + shiki: 3.17.0 smol-toml: 1.5.2 svgo: 4.0.0 tinyexec: 1.0.2 tinyglobby: 0.2.15 - tsconfck: 3.1.6(typescript@5.9.2) + tsconfck: 3.1.6(typescript@5.9.3) ultrahtml: 1.6.0 unifont: 0.6.0 unist-util-visit: 5.0.0 unstorage: 1.17.3(@vercel/functions@2.2.13) vfile: 6.0.3 - vite: 6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1) - vitefu: 1.1.1(vite@6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) + vite: 6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) + vitefu: 1.1.1(vite@6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 yocto-spinner: 0.2.3 zod: 3.25.76 zod-to-json-schema: 3.25.0(zod@3.25.76) - zod-to-ts: 1.2.0(typescript@5.9.2)(zod@3.25.76) + zod-to-ts: 1.2.0(typescript@5.9.3)(zod@3.25.76) optionalDependencies: sharp: 0.34.5 transitivePeerDependencies: @@ -6988,19 +7373,17 @@ snapshots: async-sema@3.1.1: {} - asynckit@0.4.0: {} - axobject-query@4.1.0: {} - babel-core@7.0.0-bridge.0(@babel/core@7.28.4): + babel-core@7.0.0-bridge.0(@babel/core@7.28.5): dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 babel-plugin-macros@3.1.0: dependencies: '@babel/runtime': 7.28.4 cosmiconfig: 7.1.0 - resolve: 1.22.10 + resolve: 1.22.11 bail@2.0.2: {} @@ -7010,7 +7393,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.8.6: {} + baseline-browser-mapping@2.8.32: {} bcp-47-match@2.0.3: {} @@ -7054,26 +7437,21 @@ snapshots: dependencies: base64-js: 1.5.1 - browserslist@4.26.2: + browserslist@4.28.0: dependencies: - baseline-browser-mapping: 2.8.6 - caniuse-lite: 1.0.30001743 - electron-to-chromium: 1.5.222 - node-releases: 2.0.21 - update-browserslist-db: 1.1.3(browserslist@4.26.2) + baseline-browser-mapping: 2.8.32 + caniuse-lite: 1.0.30001757 + electron-to-chromium: 1.5.262 + node-releases: 2.0.27 + update-browserslist-db: 1.1.4(browserslist@4.28.0) buffer-from@1.1.2: {} - call-bind-apply-helpers@1.0.2: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - callsites@3.1.0: {} camelcase@8.0.0: {} - caniuse-lite@1.0.30001743: {} + caniuse-lite@1.0.30001757: {} ccount@2.0.1: {} @@ -7112,14 +7490,16 @@ snapshots: ci-info@4.3.1: {} - citty@0.1.6: - dependencies: - consola: 3.4.2 - classnames@2.5.1: {} cli-boxes@3.0.0: {} + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + clone-deep@4.0.1: dependencies: is-plain-object: 2.0.4 @@ -7138,10 +7518,6 @@ snapshots: color-name@1.1.4: {} - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - comma-separated-tokens@2.0.3: {} commander@11.1.0: {} @@ -7156,8 +7532,6 @@ snapshots: concat-map@0.0.1: {} - confbox@0.2.2: {} - consola@3.4.2: {} convert-source-map@1.9.0: {} @@ -7166,7 +7540,7 @@ snapshots: cookie-es@1.2.2: {} - cookie@1.0.2: {} + cookie@1.1.1: {} copy-to-clipboard@3.3.3: dependencies: @@ -7180,19 +7554,17 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 - create-storybook@10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)): + create-storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - semver: 7.7.2 - storybook: 10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) + semver: 7.7.3 + storybook: 10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) transitivePeerDependencies: - '@testing-library/dom' - bufferutil - - msw - prettier - react - react-dom - utf-8-validate - - vite cross-spawn@7.0.6: dependencies: @@ -7234,32 +7606,18 @@ snapshots: dependencies: css-tree: 2.2.1 - cssstyle@4.6.0: - dependencies: - '@asamuzakjp/css-color': 3.2.0 - rrweb-cssom: 0.8.0 - - csstype@3.1.3: {} - csstype@3.2.3: {} - data-urls@5.0.0: - dependencies: - whatwg-mimetype: 4.0.0 - whatwg-url: 14.2.0 - date-fns@2.30.0: dependencies: '@babel/runtime': 7.28.4 - dayjs@1.11.18: {} + dayjs@1.11.19: {} debug@4.4.3: dependencies: ms: 2.1.3 - decimal.js@10.6.0: {} - decode-named-character-reference@1.2.0: dependencies: character-entities: 2.0.2 @@ -7268,8 +7626,6 @@ snapshots: defu@6.1.4: {} - delayed-stream@1.0.0: {} - dequal@2.0.3: {} destr@2.0.5: {} @@ -7307,7 +7663,7 @@ snapshots: dom-helpers@5.2.1: dependencies: '@babel/runtime': 7.28.4 - csstype: 3.1.3 + csstype: 3.2.3 dom-lib@3.3.2: dependencies: @@ -7333,15 +7689,14 @@ snapshots: dset@3.1.4: {} - dunder-proto@1.0.1: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-errors: 1.3.0 - gopd: 1.2.0 - eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.222: {} + electron-to-chromium@1.5.262: {} + + emmet@2.4.11: + dependencies: + '@emmetio/abbreviation': 2.3.3 + '@emmetio/css-abbreviation': 2.1.8 emoji-regex@10.6.0: {} @@ -7364,24 +7719,9 @@ snapshots: dependencies: is-arrayish: 0.2.1 - es-define-property@1.0.1: {} - - es-errors@1.3.0: {} - es-module-lexer@1.7.0: {} - es-object-atoms@1.1.1: - dependencies: - es-errors: 1.3.0 - - es-set-tostringtag@2.1.0: - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - - es-toolkit@1.39.10: {} + es-toolkit@1.42.0: {} esast-util-from-estree@2.0.0: dependencies: @@ -7397,34 +7737,63 @@ snapshots: esast-util-from-estree: 2.0.0 vfile-message: 4.0.3 - esbuild@0.25.10: + esbuild@0.25.12: optionalDependencies: - '@esbuild/aix-ppc64': 0.25.10 - '@esbuild/android-arm': 0.25.10 - '@esbuild/android-arm64': 0.25.10 - '@esbuild/android-x64': 0.25.10 - '@esbuild/darwin-arm64': 0.25.10 - '@esbuild/darwin-x64': 0.25.10 - '@esbuild/freebsd-arm64': 0.25.10 - '@esbuild/freebsd-x64': 0.25.10 - '@esbuild/linux-arm': 0.25.10 - '@esbuild/linux-arm64': 0.25.10 - '@esbuild/linux-ia32': 0.25.10 - '@esbuild/linux-loong64': 0.25.10 - '@esbuild/linux-mips64el': 0.25.10 - '@esbuild/linux-ppc64': 0.25.10 - '@esbuild/linux-riscv64': 0.25.10 - '@esbuild/linux-s390x': 0.25.10 - '@esbuild/linux-x64': 0.25.10 - '@esbuild/netbsd-arm64': 0.25.10 - '@esbuild/netbsd-x64': 0.25.10 - '@esbuild/openbsd-arm64': 0.25.10 - '@esbuild/openbsd-x64': 0.25.10 - '@esbuild/openharmony-arm64': 0.25.10 - '@esbuild/sunos-x64': 0.25.10 - '@esbuild/win32-arm64': 0.25.10 - '@esbuild/win32-ia32': 0.25.10 - '@esbuild/win32-x64': 0.25.10 + '@esbuild/aix-ppc64': 0.25.12 + '@esbuild/android-arm': 0.25.12 + '@esbuild/android-arm64': 0.25.12 + '@esbuild/android-x64': 0.25.12 + '@esbuild/darwin-arm64': 0.25.12 + '@esbuild/darwin-x64': 0.25.12 + '@esbuild/freebsd-arm64': 0.25.12 + '@esbuild/freebsd-x64': 0.25.12 + '@esbuild/linux-arm': 0.25.12 + '@esbuild/linux-arm64': 0.25.12 + '@esbuild/linux-ia32': 0.25.12 + '@esbuild/linux-loong64': 0.25.12 + '@esbuild/linux-mips64el': 0.25.12 + '@esbuild/linux-ppc64': 0.25.12 + '@esbuild/linux-riscv64': 0.25.12 + '@esbuild/linux-s390x': 0.25.12 + '@esbuild/linux-x64': 0.25.12 + '@esbuild/netbsd-arm64': 0.25.12 + '@esbuild/netbsd-x64': 0.25.12 + '@esbuild/openbsd-arm64': 0.25.12 + '@esbuild/openbsd-x64': 0.25.12 + '@esbuild/openharmony-arm64': 0.25.12 + '@esbuild/sunos-x64': 0.25.12 + '@esbuild/win32-arm64': 0.25.12 + '@esbuild/win32-ia32': 0.25.12 + '@esbuild/win32-x64': 0.25.12 + + esbuild@0.27.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.0 + '@esbuild/android-arm': 0.27.0 + '@esbuild/android-arm64': 0.27.0 + '@esbuild/android-x64': 0.27.0 + '@esbuild/darwin-arm64': 0.27.0 + '@esbuild/darwin-x64': 0.27.0 + '@esbuild/freebsd-arm64': 0.27.0 + '@esbuild/freebsd-x64': 0.27.0 + '@esbuild/linux-arm': 0.27.0 + '@esbuild/linux-arm64': 0.27.0 + '@esbuild/linux-ia32': 0.27.0 + '@esbuild/linux-loong64': 0.27.0 + '@esbuild/linux-mips64el': 0.27.0 + '@esbuild/linux-ppc64': 0.27.0 + '@esbuild/linux-riscv64': 0.27.0 + '@esbuild/linux-s390x': 0.27.0 + '@esbuild/linux-x64': 0.27.0 + '@esbuild/netbsd-arm64': 0.27.0 + '@esbuild/netbsd-x64': 0.27.0 + '@esbuild/openbsd-arm64': 0.27.0 + '@esbuild/openbsd-x64': 0.27.0 + '@esbuild/openharmony-arm64': 0.27.0 + '@esbuild/sunos-x64': 0.27.0 + '@esbuild/win32-arm64': 0.27.0 + '@esbuild/win32-ia32': 0.27.0 + '@esbuild/win32-x64': 0.27.0 escalade@3.2.0: {} @@ -7482,15 +7851,27 @@ snapshots: '@expressive-code/plugin-shiki': 0.41.3 '@expressive-code/plugin-text-markers': 0.41.3 - exsolve@1.0.8: {} - extend@3.0.2: {} fast-deep-equal@3.1.3: {} + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + fast-json-stable-stringify@2.1.0: optional: true + fast-uri@3.1.0: {} + + fastq@1.19.1: + dependencies: + reusify: 1.1.0 + fdir@6.5.0(picomatch@4.0.3): optionalDependencies: picomatch: 4.0.3 @@ -7519,7 +7900,7 @@ snapshots: flattie@1.1.1: {} - flow-parser@0.284.0: {} + flow-parser@0.291.0: {} fontace@0.3.1: dependencies: @@ -7543,14 +7924,6 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - form-data@4.0.4: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - hasown: 2.0.2 - mime-types: 2.1.35 - fs-extra@11.3.2: dependencies: graceful-fs: 4.2.11 @@ -7559,6 +7932,9 @@ snapshots: fs.realpath@1.0.0: {} + fsevents@2.3.2: + optional: true + fsevents@2.3.3: optional: true @@ -7566,45 +7942,15 @@ snapshots: gensync@1.0.0-beta.2: {} - get-east-asian-width@1.4.0: {} - - get-intrinsic@1.3.0: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.1 - function-bind: 1.1.2 - get-proto: 1.0.1 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.2 - math-intrinsics: 1.1.0 - - get-proto@1.0.1: - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.1 + get-caller-file@2.0.5: {} - giget@2.0.0: - dependencies: - citty: 0.1.6 - consola: 3.4.2 - defu: 6.1.4 - node-fetch-native: 1.6.7 - nypm: 0.6.2 - pathe: 2.0.3 + get-east-asian-width@1.4.0: {} github-slugger@2.0.0: {} - glob@10.4.5: + glob-parent@5.1.2: dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.5 - minipass: 7.1.2 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 + is-glob: 4.0.3 glob@10.5.0: dependencies: @@ -7624,8 +7970,6 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - gopd@1.2.0: {} - graceful-fs@4.2.11: {} h3@1.15.4: @@ -7642,12 +7986,6 @@ snapshots: has-flag@4.0.0: {} - has-symbols@1.1.0: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.1.0 - hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -7727,7 +8065,7 @@ snapshots: hast-util-from-parse5: 8.0.3 hast-util-to-parse5: 8.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 parse5: 7.3.0 unist-util-position: 5.0.0 unist-util-visit: 5.0.0 @@ -7782,7 +8120,7 @@ snapshots: comma-separated-tokens: 2.0.3 hast-util-whitespace: 3.0.0 html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 property-information: 7.1.0 space-separated-tokens: 2.0.2 stringify-entities: 4.0.4 @@ -7845,10 +8183,6 @@ snapshots: dependencies: react-is: 16.13.1 - html-encoding-sniffer@4.0.0: - dependencies: - whatwg-encoding: 3.1.1 - html-escaper@2.0.2: {} html-escaper@3.0.3: {} @@ -7859,13 +8193,6 @@ snapshots: http-cache-semantics@4.2.0: {} - http-proxy-agent@7.0.2: - dependencies: - agent-base: 7.1.4 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 @@ -7877,10 +8204,6 @@ snapshots: dependencies: '@babel/runtime': 7.28.4 - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - import-fresh@3.3.1: dependencies: parent-module: 1.0.1 @@ -7922,8 +8245,14 @@ snapshots: is-docker@3.0.0: {} + is-extglob@2.1.1: {} + is-fullwidth-code-point@3.0.0: {} + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + is-hexadecimal@2.0.1: {} is-inside-container@1.0.0: @@ -7938,8 +8267,6 @@ snapshots: dependencies: isobject: 3.0.1 - is-potential-custom-element-name@1.0.1: {} - is-wsl@3.1.0: dependencies: is-inside-container: 1.0.0 @@ -7989,19 +8316,19 @@ snapshots: jscodeshift@0.15.2: dependencies: - '@babel/core': 7.28.4 + '@babel/core': 7.28.5 '@babel/parser': 7.28.5 - '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.28.4) - '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.4) - '@babel/preset-flow': 7.27.1(@babel/core@7.28.4) - '@babel/preset-typescript': 7.27.1(@babel/core@7.28.4) - '@babel/register': 7.28.3(@babel/core@7.28.4) - babel-core: 7.0.0-bridge.0(@babel/core@7.28.4) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.5) + '@babel/preset-flow': 7.27.1(@babel/core@7.28.5) + '@babel/preset-typescript': 7.28.5(@babel/core@7.28.5) + '@babel/register': 7.28.3(@babel/core@7.28.5) + babel-core: 7.0.0-bridge.0(@babel/core@7.28.5) chalk: 4.1.2 - flow-parser: 0.284.0 + flow-parser: 0.291.0 graceful-fs: 4.2.11 micromatch: 4.0.8 neo-async: 2.6.2 @@ -8012,34 +8339,6 @@ snapshots: transitivePeerDependencies: - supports-color - jsdom@23.1.0: - dependencies: - cssstyle: 4.6.0 - data-urls: 5.0.0 - decimal.js: 10.6.0 - form-data: 4.0.4 - html-encoding-sniffer: 4.0.0 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.22 - parse5: 7.3.0 - rrweb-cssom: 0.6.0 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 4.1.4 - w3c-xmlserializer: 5.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 3.1.1 - whatwg-mimetype: 4.0.0 - whatwg-url: 14.2.0 - ws: 8.18.3 - xml-name-validator: 5.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jsesc@3.1.0: {} json-parse-even-better-errors@2.3.1: {} @@ -8055,6 +8354,10 @@ snapshots: json5@2.2.3: {} + jsonc-parser@2.3.1: {} + + jsonc-parser@3.3.1: {} + jsonfile@6.2.0: dependencies: universalify: 2.0.1 @@ -8065,6 +8368,8 @@ snapshots: kleur@3.0.3: {} + kleur@4.1.5: {} + klona@2.0.6: {} lightningcss-android-arm64@1.30.2: @@ -8183,8 +8488,6 @@ snapshots: markdown-table@3.0.4: {} - math-intrinsics@1.1.0: {} - mdast-util-definitions@6.0.0: dependencies: '@types/mdast': 4.0.4 @@ -8340,7 +8643,7 @@ snapshots: '@types/mdast': 4.0.4 unist-util-is: 6.0.1 - mdast-util-to-hast@13.2.0: + mdast-util-to-hast@13.2.1: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 @@ -8376,6 +8679,8 @@ snapshots: memoize-one@5.2.1: {} + merge2@1.4.1: {} + micromark-core-commonmark@2.0.3: dependencies: decode-named-character-reference: 1.2.0 @@ -8655,12 +8960,6 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - min-indent@1.0.1: {} minimatch@10.0.3: @@ -8683,13 +8982,12 @@ snapshots: dependencies: minipass: 7.1.2 - moment@2.30.1: - optional: true - mrmime@2.0.1: {} ms@2.1.3: {} + muggle-string@0.4.1: {} + nanoid@3.3.11: {} neo-async@2.6.2: {} @@ -8714,7 +9012,7 @@ snapshots: node-mock-http@1.0.3: {} - node-releases@2.0.21: {} + node-releases@2.0.27: {} nopt@8.1.0: dependencies: @@ -8726,18 +9024,10 @@ snapshots: dependencies: boolbase: 1.0.0 - nwsapi@2.2.22: {} - - nypm@0.6.2: - dependencies: - citty: 0.1.6 - consola: 3.4.2 - pathe: 2.0.3 - pkg-types: 2.3.0 - tinyexec: 1.0.2 - object-assign@4.1.1: {} + obug@2.1.1: {} + ofetch@1.5.1: dependencies: destr: 2.0.5 @@ -8758,16 +9048,16 @@ snapshots: regex: 6.0.1 regex-recursion: 6.0.2 - oxlint@1.28.0: + oxlint@1.31.0: optionalDependencies: - '@oxlint/darwin-arm64': 1.28.0 - '@oxlint/darwin-x64': 1.28.0 - '@oxlint/linux-arm64-gnu': 1.28.0 - '@oxlint/linux-arm64-musl': 1.28.0 - '@oxlint/linux-x64-gnu': 1.28.0 - '@oxlint/linux-x64-musl': 1.28.0 - '@oxlint/win32-arm64': 1.28.0 - '@oxlint/win32-x64': 1.28.0 + '@oxlint/darwin-arm64': 1.31.0 + '@oxlint/darwin-x64': 1.31.0 + '@oxlint/linux-arm64-gnu': 1.31.0 + '@oxlint/linux-arm64-musl': 1.31.0 + '@oxlint/linux-x64-gnu': 1.31.0 + '@oxlint/linux-x64-musl': 1.31.0 + '@oxlint/win32-arm64': 1.31.0 + '@oxlint/win32-x64': 1.31.0 p-limit@2.3.0: dependencies: @@ -8792,7 +9082,7 @@ snapshots: package-json-from-dist@1.0.1: {} - package-manager-detector@1.5.0: {} + package-manager-detector@1.6.0: {} pagefind@1.4.0: optionalDependencies: @@ -8839,6 +9129,8 @@ snapshots: dependencies: entities: 6.0.1 + path-browserify@1.0.1: {} + path-exists@3.0.0: {} path-is-absolute@1.0.1: {} @@ -8874,15 +9166,23 @@ snapshots: pirates@4.0.7: {} + pixelmatch@7.1.0: + dependencies: + pngjs: 7.0.0 + pkg-dir@3.0.0: dependencies: find-up: 3.0.0 - pkg-types@2.3.0: + playwright-core@1.57.0: {} + + playwright@1.57.0: dependencies: - confbox: 0.2.2 - exsolve: 1.0.8 - pathe: 2.0.3 + playwright-core: 1.57.0 + optionalDependencies: + fsevents: 2.3.2 + + pngjs@7.0.0: {} postcss-nested@6.2.0(postcss@8.5.6): dependencies: @@ -8900,7 +9200,7 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - prettier@3.6.2: {} + prettier@3.7.4: {} pretty-format@27.5.1: dependencies: @@ -8925,15 +9225,11 @@ snapshots: property-information@7.1.0: {} - psl@1.15.0: - dependencies: - punycode: 2.3.1 - punycode.js@2.3.1: {} punycode@2.3.1: {} - querystringify@2.2.0: {} + queue-microtask@1.2.3: {} radix3@1.1.2: {} @@ -9048,7 +9344,7 @@ snapshots: '@rc-component/trigger': 2.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) classnames: 2.5.1 rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-overflow: 1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-overflow: 1.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rc-util: 5.44.4(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) @@ -9070,7 +9366,7 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - rc-overflow@1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-overflow@1.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.28.4 classnames: 2.5.1 @@ -9087,20 +9383,19 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - rc-picker@4.11.3(date-fns@2.30.0)(dayjs@1.11.18)(moment@2.30.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-picker@4.11.3(date-fns@2.30.0)(dayjs@1.11.19)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.28.4 '@rc-component/trigger': 2.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) classnames: 2.5.1 - rc-overflow: 1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-overflow: 1.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rc-resize-observer: 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rc-util: 5.44.4(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) optionalDependencies: date-fns: 2.30.0 - dayjs: 1.11.18 - moment: 2.30.1 + dayjs: 1.11.19 rc-progress@4.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: @@ -9142,7 +9437,7 @@ snapshots: '@rc-component/trigger': 2.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) classnames: 2.5.1 rc-motion: 2.9.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-overflow: 1.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + rc-overflow: 1.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rc-util: 5.44.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) rc-virtual-list: 3.19.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 @@ -9258,22 +9553,22 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-docgen-typescript@2.4.0(typescript@5.9.2): + react-docgen-typescript@2.4.0(typescript@5.9.3): dependencies: - typescript: 5.9.2 + typescript: 5.9.3 - react-docgen@8.0.1: + react-docgen@8.0.2: dependencies: - '@babel/core': 7.28.4 - '@babel/traverse': 7.28.4 + '@babel/core': 7.28.5 + '@babel/traverse': 7.28.5 '@babel/types': 7.28.5 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.28.0 '@types/doctrine': 0.0.9 '@types/resolve': 1.20.6 doctrine: 3.0.0 - resolve: 1.22.10 - strip-indent: 4.1.0 + resolve: 1.22.11 + strip-indent: 4.1.1 transitivePeerDependencies: - supports-color @@ -9283,10 +9578,11 @@ snapshots: react: 18.3.1 scheduler: 0.23.2 - react-dom@19.2.0(react@19.2.0): + react-dom@18.3.1(react@19.2.0): dependencies: + loose-envify: 1.4.0 react: 19.2.0 - scheduler: 0.27.0 + scheduler: 0.23.2 react-is@16.13.1: {} @@ -9294,7 +9590,7 @@ snapshots: react-is@18.3.1: {} - react-is@19.1.1: {} + react-is@19.2.0: {} react-refresh@0.17.0: {} @@ -9460,7 +9756,7 @@ snapshots: dependencies: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.2.0 + mdast-util-to-hast: 13.2.1 unified: 11.0.5 vfile: 6.0.3 @@ -9477,9 +9773,13 @@ snapshots: mdast-util-to-markdown: 2.1.2 unified: 11.0.5 - require-from-string@2.0.2: {} + request-light@0.5.8: {} + + request-light@0.7.0: {} + + require-directory@2.1.1: {} - requires-port@1.0.0: {} + require-from-string@2.0.2: {} resize-observer-polyfill@1.5.1: {} @@ -9487,7 +9787,7 @@ snapshots: resolve-from@5.0.0: {} - resolve@1.22.10: + resolve@1.22.11: dependencies: is-core-module: 2.16.1 path-parse: 1.0.7 @@ -9520,42 +9820,40 @@ snapshots: retext-stringify: 4.0.0 unified: 11.0.5 + reusify@1.1.0: {} + rimraf@2.6.3: dependencies: glob: 7.2.3 - rollup@4.52.0: + rollup@4.53.3: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.52.0 - '@rollup/rollup-android-arm64': 4.52.0 - '@rollup/rollup-darwin-arm64': 4.52.0 - '@rollup/rollup-darwin-x64': 4.52.0 - '@rollup/rollup-freebsd-arm64': 4.52.0 - '@rollup/rollup-freebsd-x64': 4.52.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.52.0 - '@rollup/rollup-linux-arm-musleabihf': 4.52.0 - '@rollup/rollup-linux-arm64-gnu': 4.52.0 - '@rollup/rollup-linux-arm64-musl': 4.52.0 - '@rollup/rollup-linux-loong64-gnu': 4.52.0 - '@rollup/rollup-linux-ppc64-gnu': 4.52.0 - '@rollup/rollup-linux-riscv64-gnu': 4.52.0 - '@rollup/rollup-linux-riscv64-musl': 4.52.0 - '@rollup/rollup-linux-s390x-gnu': 4.52.0 - '@rollup/rollup-linux-x64-gnu': 4.52.0 - '@rollup/rollup-linux-x64-musl': 4.52.0 - '@rollup/rollup-openharmony-arm64': 4.52.0 - '@rollup/rollup-win32-arm64-msvc': 4.52.0 - '@rollup/rollup-win32-ia32-msvc': 4.52.0 - '@rollup/rollup-win32-x64-gnu': 4.52.0 - '@rollup/rollup-win32-x64-msvc': 4.52.0 + '@rollup/rollup-android-arm-eabi': 4.53.3 + '@rollup/rollup-android-arm64': 4.53.3 + '@rollup/rollup-darwin-arm64': 4.53.3 + '@rollup/rollup-darwin-x64': 4.53.3 + '@rollup/rollup-freebsd-arm64': 4.53.3 + '@rollup/rollup-freebsd-x64': 4.53.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.53.3 + '@rollup/rollup-linux-arm-musleabihf': 4.53.3 + '@rollup/rollup-linux-arm64-gnu': 4.53.3 + '@rollup/rollup-linux-arm64-musl': 4.53.3 + '@rollup/rollup-linux-loong64-gnu': 4.53.3 + '@rollup/rollup-linux-ppc64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-gnu': 4.53.3 + '@rollup/rollup-linux-riscv64-musl': 4.53.3 + '@rollup/rollup-linux-s390x-gnu': 4.53.3 + '@rollup/rollup-linux-x64-gnu': 4.53.3 + '@rollup/rollup-linux-x64-musl': 4.53.3 + '@rollup/rollup-openharmony-arm64': 4.53.3 + '@rollup/rollup-win32-arm64-msvc': 4.53.3 + '@rollup/rollup-win32-ia32-msvc': 4.53.3 + '@rollup/rollup-win32-x64-gnu': 4.53.3 + '@rollup/rollup-win32-x64-msvc': 4.53.3 fsevents: 2.3.3 - rrweb-cssom@0.6.0: {} - - rrweb-cssom@0.8.0: {} - rsuite-table@5.19.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.28.4 @@ -9566,12 +9864,12 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - rsuite@5.83.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rsuite@5.83.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@babel/runtime': 7.28.4 '@juggle/resize-observer': 3.4.0 - '@rsuite/icons': 1.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@types/lodash': 4.17.20 + '@rsuite/icons': 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@types/lodash': 4.17.21 '@types/prop-types': 15.7.15 '@types/react-window': 1.8.8 classnames: 2.5.1 @@ -9586,20 +9884,16 @@ snapshots: rsuite-table: 5.19.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) schema-typed: 2.4.2 - safer-buffer@2.1.2: {} + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 sax@1.4.3: {} - saxes@6.0.0: - dependencies: - xmlchars: 2.2.0 - scheduler@0.23.2: dependencies: loose-envify: 1.4.0 - scheduler@0.27.0: {} - schema-typed@2.4.2: dependencies: lodash: 4.17.21 @@ -9616,8 +9910,6 @@ snapshots: dependencies: lru-cache: 6.0.0 - semver@7.7.2: {} - semver@7.7.3: {} shallow-clone@3.0.1: @@ -9661,14 +9953,14 @@ snapshots: shebang-regex@3.0.0: {} - shiki@3.15.0: + shiki@3.17.0: dependencies: - '@shikijs/core': 3.15.0 - '@shikijs/engine-javascript': 3.15.0 - '@shikijs/engine-oniguruma': 3.15.0 - '@shikijs/langs': 3.15.0 - '@shikijs/themes': 3.15.0 - '@shikijs/types': 3.15.0 + '@shikijs/core': 3.17.0 + '@shikijs/engine-javascript': 3.17.0 + '@shikijs/engine-oniguruma': 3.17.0 + '@shikijs/langs': 3.17.0 + '@shikijs/themes': 3.17.0 + '@shikijs/types': 3.17.0 '@shikijs/vscode-textmate': 10.0.2 '@types/hast': 3.0.4 @@ -9714,38 +10006,36 @@ snapshots: stackback@0.0.2: {} - starlight-typedoc@0.21.4(@astrojs/starlight@0.36.2(astro@5.16.0(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1)))(typedoc-plugin-markdown@4.9.0(typedoc@0.28.14(typescript@5.9.2)))(typedoc@0.28.14(typescript@5.9.2)): + starlight-typedoc@0.21.5(@astrojs/starlight@0.37.0(astro@5.16.4(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2)))(typedoc-plugin-markdown@4.9.0(typedoc@0.28.15(typescript@5.9.3)))(typedoc@0.28.15(typescript@5.9.3)): dependencies: - '@astrojs/starlight': 0.36.2(astro@5.16.0(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.52.0)(typescript@5.9.2)(yaml@2.8.1)) + '@astrojs/starlight': 0.37.0(astro@5.16.4(@types/node@24.10.1)(@vercel/functions@2.2.13)(jiti@2.6.1)(lightningcss@1.30.2)(rollup@4.53.3)(typescript@5.9.3)(yaml@2.8.2)) github-slugger: 2.0.0 - typedoc: 0.28.14(typescript@5.9.2) - typedoc-plugin-markdown: 4.9.0(typedoc@0.28.14(typescript@5.9.2)) + typedoc: 0.28.15(typescript@5.9.3) + typedoc-plugin-markdown: 4.9.0(typedoc@0.28.15(typescript@5.9.3)) std-env@3.10.0: {} - storybook@10.0.7(@testing-library/dom@10.4.1)(prettier@3.6.2)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)): + storybook@10.1.4(@testing-library/dom@10.4.1)(prettier@3.7.4)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@storybook/global': 5.0.0 - '@storybook/icons': 1.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@storybook/icons': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@testing-library/jest-dom': 6.9.1 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) '@vitest/spy': 3.2.4 - esbuild: 0.25.10 + esbuild: 0.27.0 recast: 0.23.11 - semver: 7.7.2 + semver: 7.7.3 + use-sync-external-store: 1.6.0(react@18.3.1) ws: 8.18.3 optionalDependencies: - prettier: 3.6.2 + prettier: 3.7.4 transitivePeerDependencies: - '@testing-library/dom' - bufferutil - - msw - react - react-dom - utf-8-validate - - vite stream-replace-string@2.0.0: {} @@ -9790,7 +10080,7 @@ snapshots: dependencies: min-indent: 1.0.1 - strip-indent@4.1.0: {} + strip-indent@4.1.1: {} strip-json-comments@3.1.1: {} @@ -9826,8 +10116,6 @@ snapshots: picocolors: 1.1.1 sax: 1.4.3 - symbol-tree@3.2.4: {} - tailwindcss@4.1.17: {} tapable@2.3.0: {} @@ -9852,8 +10140,6 @@ snapshots: tinybench@2.9.0: {} - tinyexec@0.3.2: {} - tinyexec@1.0.2: {} tinyglobby@0.2.15: @@ -9875,28 +10161,17 @@ snapshots: totalist@3.0.1: {} - tough-cookie@4.1.4: - dependencies: - psl: 1.15.0 - punycode: 2.3.1 - universalify: 0.2.0 - url-parse: 1.5.10 - tr46@0.0.3: {} - tr46@5.1.1: - dependencies: - punycode: 2.3.1 - trim-lines@3.0.1: {} trough@2.2.0: {} ts-dedent@2.2.0: {} - tsconfck@3.1.6(typescript@5.9.2): + tsconfck@3.1.6(typescript@5.9.3): optionalDependencies: - typescript: 5.9.2 + typescript: 5.9.3 tsconfig-paths@4.2.0: dependencies: @@ -9908,22 +10183,28 @@ snapshots: type-fest@4.41.0: {} - typedoc-plugin-markdown@4.9.0(typedoc@0.28.14(typescript@5.9.2)): + typedoc-plugin-markdown@4.9.0(typedoc@0.28.15(typescript@5.9.3)): dependencies: - typedoc: 0.28.14(typescript@5.9.2) + typedoc: 0.28.15(typescript@5.9.3) - typedoc@0.28.14(typescript@5.9.2): + typedoc@0.28.15(typescript@5.9.3): dependencies: - '@gerrit0/mini-shiki': 3.15.0 + '@gerrit0/mini-shiki': 3.17.0 lunr: 2.3.9 markdown-it: 14.1.0 minimatch: 9.0.5 - typescript: 5.9.2 - yaml: 2.8.1 + typescript: 5.9.3 + yaml: 2.8.2 + + typesafe-path@0.2.2: {} + + typescript-auto-import-cache@0.3.6: + dependencies: + semver: 7.7.3 typescript@5.8.2: {} - typescript@5.9.2: {} + typescript@5.9.3: {} uc.micro@2.1.0: {} @@ -10007,11 +10288,9 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 - universalify@0.2.0: {} - universalify@2.0.1: {} - unplugin@2.3.10: + unplugin@2.3.11: dependencies: '@jridgewell/remapping': 2.3.5 acorn: 8.15.0 @@ -10031,9 +10310,9 @@ snapshots: optionalDependencies: '@vercel/functions': 2.2.13 - update-browserslist-db@1.1.3(browserslist@4.26.2): + update-browserslist-db@1.1.4(browserslist@4.28.0): dependencies: - browserslist: 4.26.2 + browserslist: 4.28.0 escalade: 3.2.0 picocolors: 1.1.1 @@ -10041,10 +10320,9 @@ snapshots: dependencies: punycode: 2.3.1 - url-parse@1.5.10: + use-sync-external-store@1.6.0(react@18.3.1): dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 + react: 18.3.1 util-deprecate@1.0.2: {} @@ -10063,71 +10341,79 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-plugin-css-injected-by-js@3.5.2(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)): + vite-plugin-css-injected-by-js@3.5.2(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)): dependencies: - vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1) + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) - vite@6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1): + vite@6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2): dependencies: - esbuild: 0.25.10 + esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.52.0 + rollup: 4.53.3 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.10.1 fsevents: 2.3.3 jiti: 2.6.1 lightningcss: 1.30.2 - yaml: 2.8.1 + yaml: 2.8.2 - vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1): + vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2): dependencies: - esbuild: 0.25.10 + esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.52.0 + rollup: 4.53.3 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.10.1 fsevents: 2.3.3 jiti: 2.6.1 lightningcss: 1.30.2 - yaml: 2.8.1 + yaml: 2.8.2 - vitefu@1.1.1(vite@6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)): + vitefu@1.1.1(vite@6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)): optionalDependencies: - vite: 6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1) + vite: 6.4.1(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) - vitest@4.0.8(@types/debug@4.1.12)(@types/node@24.10.1)(@vitest/ui@4.0.8)(jiti@2.6.1)(jsdom@23.1.0)(lightningcss@1.30.2)(yaml@2.8.1): + vitest-browser-react@2.0.2(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vitest@4.0.15): dependencies: - '@vitest/expect': 4.0.8 - '@vitest/mocker': 4.0.8(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1)) - '@vitest/pretty-format': 4.0.8 - '@vitest/runner': 4.0.8 - '@vitest/snapshot': 4.0.8 - '@vitest/spy': 4.0.8 - '@vitest/utils': 4.0.8 - debug: 4.4.3 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + vitest: 4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(@vitest/ui@4.0.15)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) + optionalDependencies: + '@types/react': 18.3.27 + '@types/react-dom': 18.3.7(@types/react@18.3.27) + + vitest@4.0.15(@types/node@24.10.1)(@vitest/browser-playwright@4.0.15)(@vitest/ui@4.0.15)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2): + dependencies: + '@vitest/expect': 4.0.15 + '@vitest/mocker': 4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2)) + '@vitest/pretty-format': 4.0.15 + '@vitest/runner': 4.0.15 + '@vitest/snapshot': 4.0.15 + '@vitest/spy': 4.0.15 + '@vitest/utils': 4.0.15 es-module-lexer: 1.7.0 expect-type: 1.2.2 magic-string: 0.30.21 + obug: 2.1.1 pathe: 2.0.3 picomatch: 4.0.3 std-env: 3.10.0 tinybench: 2.9.0 - tinyexec: 0.3.2 + tinyexec: 1.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.1) + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2) why-is-node-running: 2.3.0 optionalDependencies: - '@types/debug': 4.1.12 '@types/node': 24.10.1 - '@vitest/ui': 4.0.8(vitest@4.0.8) - jsdom: 23.1.0 + '@vitest/browser-playwright': 4.0.15(playwright@1.57.0)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(yaml@2.8.2))(vitest@4.0.15) + '@vitest/ui': 4.0.15(vitest@4.0.15) transitivePeerDependencies: - jiti - less @@ -10137,33 +10423,112 @@ snapshots: - sass-embedded - stylus - sugarss - - supports-color - terser - tsx - yaml - w3c-xmlserializer@5.0.0: + volar-service-css@0.0.67(@volar/language-service@2.4.26): dependencies: - xml-name-validator: 5.0.0 + vscode-css-languageservice: 6.3.9 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + optionalDependencies: + '@volar/language-service': 2.4.26 - web-namespaces@2.0.1: {} + volar-service-emmet@0.0.67(@volar/language-service@2.4.26): + dependencies: + '@emmetio/css-parser': 0.4.1 + '@emmetio/html-matcher': 1.3.0 + '@vscode/emmet-helper': 2.11.0 + vscode-uri: 3.1.0 + optionalDependencies: + '@volar/language-service': 2.4.26 - webidl-conversions@3.0.1: {} + volar-service-html@0.0.67(@volar/language-service@2.4.26): + dependencies: + vscode-html-languageservice: 5.6.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-uri: 3.1.0 + optionalDependencies: + '@volar/language-service': 2.4.26 - webidl-conversions@7.0.0: {} + volar-service-prettier@0.0.67(@volar/language-service@2.4.26)(prettier@3.7.4): + dependencies: + vscode-uri: 3.1.0 + optionalDependencies: + '@volar/language-service': 2.4.26 + prettier: 3.7.4 - webpack-virtual-modules@0.6.2: {} + volar-service-typescript-twoslash-queries@0.0.67(@volar/language-service@2.4.26): + dependencies: + vscode-uri: 3.1.0 + optionalDependencies: + '@volar/language-service': 2.4.26 + + volar-service-typescript@0.0.67(@volar/language-service@2.4.26): + dependencies: + path-browserify: 1.0.1 + semver: 7.7.3 + typescript-auto-import-cache: 0.3.6 + vscode-languageserver-textdocument: 1.0.12 + vscode-nls: 5.2.0 + vscode-uri: 3.1.0 + optionalDependencies: + '@volar/language-service': 2.4.26 + + volar-service-yaml@0.0.67(@volar/language-service@2.4.26): + dependencies: + vscode-uri: 3.1.0 + yaml-language-server: 1.19.2 + optionalDependencies: + '@volar/language-service': 2.4.26 + + vscode-css-languageservice@6.3.9: + dependencies: + '@vscode/l10n': 0.0.18 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.1.0 + + vscode-html-languageservice@5.6.1: + dependencies: + '@vscode/l10n': 0.0.18 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.1.0 - whatwg-encoding@3.1.1: + vscode-json-languageservice@4.1.8: dependencies: - iconv-lite: 0.6.3 + jsonc-parser: 3.3.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-nls: 5.2.0 + vscode-uri: 3.1.0 - whatwg-mimetype@4.0.0: {} + vscode-jsonrpc@8.2.0: {} - whatwg-url@14.2.0: + vscode-languageserver-protocol@3.17.5: dependencies: - tr46: 5.1.1 - webidl-conversions: 7.0.0 + vscode-jsonrpc: 8.2.0 + vscode-languageserver-types: 3.17.5 + + vscode-languageserver-textdocument@1.0.12: {} + + vscode-languageserver-types@3.17.5: {} + + vscode-languageserver@9.0.1: + dependencies: + vscode-languageserver-protocol: 3.17.5 + + vscode-nls@5.2.0: {} + + vscode-uri@3.1.0: {} + + web-namespaces@2.0.1: {} + + webidl-conversions@3.0.1: {} + + webpack-virtual-modules@0.6.2: {} whatwg-url@5.0.0: dependencies: @@ -10213,24 +10578,49 @@ snapshots: ws@8.18.3: {} - xml-name-validator@5.0.0: {} - - xmlchars@2.2.0: {} - xxhash-wasm@1.1.0: {} + y18n@5.0.8: {} + yallist@3.1.1: {} yallist@4.0.0: {} yallist@5.0.0: {} + yaml-language-server@1.19.2: + dependencies: + '@vscode/l10n': 0.0.18 + ajv: 8.17.1 + ajv-draft-04: 1.0.0(ajv@8.17.1) + lodash: 4.17.21 + prettier: 3.7.4 + request-light: 0.5.8 + vscode-json-languageservice: 4.1.8 + vscode-languageserver: 9.0.1 + vscode-languageserver-textdocument: 1.0.12 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.1.0 + yaml: 2.7.1 + yaml@1.10.2: {} - yaml@2.8.1: {} + yaml@2.7.1: {} + + yaml@2.8.2: {} yargs-parser@21.1.1: {} + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + yocto-queue@1.2.2: {} yocto-spinner@0.2.3: @@ -10243,9 +10633,9 @@ snapshots: dependencies: zod: 3.25.76 - zod-to-ts@1.2.0(typescript@5.9.2)(zod@3.25.76): + zod-to-ts@1.2.0(typescript@5.9.3)(zod@3.25.76): dependencies: - typescript: 5.9.2 + typescript: 5.9.3 zod: 3.25.76 zod@3.25.76: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index d8b1135d..d00f7093 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -5,8 +5,8 @@ catalog: '@faker-js/faker': ^10.1.0 '@types/react': ^18.3.24 '@types/react-dom': ^18.3.7 - '@vitest/coverage-v8': ^4.0.8 - '@vitest/ui': ^4.0.8 + '@vitest/coverage-v8': ^4.0.15 + '@vitest/ui': ^4.0.15 react: ^18.3.1 react-dom: ^18.3.1 - vitest: ^4.0.8 + vitest: ^4.0.15 diff --git a/tsconfig.json b/tsconfig.json index 7d043b77..d9da9ecc 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,8 +8,11 @@ "forceConsistentCasingInFileNames": true, "strict": true, "skipLibCheck": true, + "types": ["vite/client"], + "verbatimModuleSyntax": true, "emitDeclarationOnly": true, "declaration": true, "declarationMap": true - } + }, + "exclude": ["packages/website/**"] }