diff --git a/.changeset/announce-avoid-commit-per-change.md b/.changeset/announce-avoid-commit-per-change.md
deleted file mode 100644
index 54df35bdf75..00000000000
--- a/.changeset/announce-avoid-commit-per-change.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@primer/react': patch
----
-
-Announce, AriaStatus, AriaAlert: Avoid an extra React render on every content change (e.g. per keystroke when tied to an input)
diff --git a/.changeset/confirm-dialog-host-cleanup.md b/.changeset/confirm-dialog-host-cleanup.md
deleted file mode 100644
index 27b2c8114e6..00000000000
--- a/.changeset/confirm-dialog-host-cleanup.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@primer/react': patch
----
-
-ConfirmationDialog: `useConfirm`/`confirm` now removes its host element from `document.body` after the dialog is closed, and uses a fresh host element per call, so the empty container no longer lingers or leaks into other components and tests
diff --git a/.changeset/perf-css-bucketable-selectors.md b/.changeset/perf-css-bucketable-selectors.md
deleted file mode 100644
index 2b1ac139a08..00000000000
--- a/.changeset/perf-css-bucketable-selectors.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@primer/react': patch
----
-
-Improve style-recalc performance by making ButtonGroup, DataTable Pagination, and Checkbox CSS selectors bucketable (removing universal `*`/`:not([attr])` subjects and `:is()` selector-list merges)
diff --git a/.changeset/perf-remove-expensive-has-selectors.md b/.changeset/perf-remove-expensive-has-selectors.md
new file mode 100644
index 00000000000..936a69d70d7
--- /dev/null
+++ b/.changeset/perf-remove-expensive-has-selectors.md
@@ -0,0 +1,5 @@
+---
+'@primer/react': patch
+---
+
+Improve rendering performance in Safari by removing expensive `:has()` selectors from ActionList/NavList, Breadcrumbs, SelectPanel, and SegmentedControl. No visual or API changes.
diff --git a/.changeset/public-bags-retire.md b/.changeset/public-bags-retire.md
deleted file mode 100644
index f6844a30dad..00000000000
--- a/.changeset/public-bags-retire.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-"@primer/react": minor
----
-
-Add data-component attributes and associated tests for:
-
-Radio
-RadioGroup
-RelativeTime
-ScrollableRegion
-SegmentedControl
-Select
-SideNav
-SkeletonBox
-SkeletonAvatar
-SkeletonText
-Spinner
diff --git a/.changeset/silent-buses-knock.md b/.changeset/silent-buses-knock.md
new file mode 100644
index 00000000000..800a06860b3
--- /dev/null
+++ b/.changeset/silent-buses-knock.md
@@ -0,0 +1,14 @@
+---
+"@primer/react": minor
+---
+
+Add data-component attributes and associated tests for:
+
+SplitPageLayout
+Stack
+StateLabel
+SubNav
+TabNav
+Text
+TextArea
+ThemeProvider
diff --git a/.changeset/textarea-character-counter-performance.md b/.changeset/textarea-character-counter-performance.md
deleted file mode 100644
index b5939a13897..00000000000
--- a/.changeset/textarea-character-counter-performance.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@primer/react': patch
----
-
-Textarea: Improve typing performance by deriving the character counter in render instead of in effects, removing extra re-renders on each keystroke.
diff --git a/.changeset/textinput-character-counter-performance.md b/.changeset/textinput-character-counter-performance.md
deleted file mode 100644
index dec55affcf3..00000000000
--- a/.changeset/textinput-character-counter-performance.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-'@primer/react': patch
----
-
-TextInput: Improve typing performance by deriving the character counter in render instead of in effects, removing extra re-renders on each keystroke.
diff --git a/.changeset/underline-nav-shared-overflow-observer.md b/.changeset/underline-nav-shared-overflow-observer.md
new file mode 100644
index 00000000000..86927be358c
--- /dev/null
+++ b/.changeset/underline-nav-shared-overflow-observer.md
@@ -0,0 +1,5 @@
+---
+'@primer/react': patch
+---
+
+UnderlineNav, ActionBar: Detect item overflow with a single shared IntersectionObserver per component instead of one observer per item, reducing observer churn during resize. No public API changes.
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index c2d697c4706..4d30c4fcf50 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -1,6 +1,6 @@
{
"name": "Primer React",
- "image": "mcr.microsoft.com/vscode/devcontainers/typescript-node:24",
+ "image": "mcr.microsoft.com/vscode/devcontainers/typescript-node:26",
"customizations": {
"vscode": {
"extensions": [
@@ -16,6 +16,9 @@
"onCreateCommand": ["/bin/bash", "-c", "npm run setup"],
"remoteUser": "node",
"features": {
+ "ghcr.io/devcontainers/features/node:1": {
+ "version": "26.4.0"
+ },
"ghcr.io/devcontainers/features/sshd:1": {
"version": "latest"
},
diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md
index 2e32d9eb39a..457e896bfb4 100644
--- a/.github/copilot-instructions.md
+++ b/.github/copilot-instructions.md
@@ -26,6 +26,11 @@ The primary workspace is `packages/react` which contains the `@primer/react` pac
- `npm run build` -- builds all packages. NEVER CANCEL. Takes 90 seconds without turbo cache, ~1 second with cache. Set timeout to 120+ minutes.
- `npx turbo run build` -- builds all packages including example applications. Takes ~33 seconds.
+**Node.js version updates:**
+
+- When updating Node.js, update `.nvmrc` and `.devcontainer/devcontainer.json` together. Also check contributor documentation for any hardcoded Node.js version guidance, such as `contributor-docs/CONTRIBUTING.md`.
+- GitHub Actions workflows use `node-version-file: '.nvmrc'`; only update workflow files if they stop using `.nvmrc`.
+
**Run tests:**
- `npm test` -- runs unit tests. NEVER CANCEL. Takes 75 seconds. Set timeout to 90+ minutes. Runs 1500+ tests using Vitest in both node and chromium environments.
@@ -86,6 +91,7 @@ ComponentName/
├── index.ts // Re-exports
├── ComponentName.tsx // Main component
├── ComponentName.stories.tsx // Storybook stories
+├── ComponentName.features.stories.tsx // (optional) Storybook feature stories
├── ComponentName.test.tsx // Unit tests
├── ComponentName.docs.json // Documentation metadata
└── __snapshots__/ // Test snapshots (being migrated to VRT)
@@ -95,7 +101,8 @@ ComponentName/
- `*.module.css` -- CSS Modules for component styling
- `*.test.tsx` -- Unit tests using Vitest and Testing Library
-- `*.stories.tsx` -- Storybook stories for documentation and testing
+- `[ComponentName].stories.tsx` -- Default Storybook stories for documentation and testing
+- `[ComponentName].features.stories.tsx` -- Storybook feature stories
- `*.docs.json` -- Component metadata for documentation generation
## CI/CD and Workflows
@@ -104,7 +111,6 @@ ComponentName/
- `.github/workflows/ci.yml` -- Main CI pipeline (format, lint, test, type-check, build)
- `.github/workflows/vrt.yml` -- Visual regression testing
-- `.github/workflows/storybook-tests.yml` -- Storybook interaction tests
**The CI will fail if:**
@@ -145,6 +151,13 @@ npm run lint:fix # Auto-fix linting issues
When working on UI components, always use the `primer-storybook` MCP tools to access Storybook's component and documentation knowledge before answering or taking any action. Reference the `.github/skills/storybook/SKILL.md` file for detailed instructions on using the Storybook MCP effectively and accurately.
+**Story conventions:**
+
+- Each component should have a default stories file colocated with the component (for most components: `packages/react/src/[ComponentName]/[ComponentName].stories.tsx`).
+- The default stories file should use the `Components/[ComponentName]` Storybook title and include `Default` and `Playground` stories when the component supports configurable controls.
+- Put feature-specific stories colocated with the component (for most components: `packages/react/src/[ComponentName]/[ComponentName].features.stories.tsx`) with the `Components/[ComponentName]/Features` Storybook title.
+- Keep examples or scenario-based stories in separate files, such as `[ComponentName].examples.stories.tsx`, when they are distinct from core feature coverage
+
## Slots
When building, modifying, or wrapping compound components that use child-component "slots" (anything involving `__SLOT__`, `useSlots`, `isSlot`, or `asSlot`), reference the `.github/skills/slots/SKILL.md` file. It documents when to add slot markers, naming conventions for `Symbol(...)` descriptions, the public slot APIs, and common pitfalls.
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index f394f43a2bf..41e356bb853 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -9,6 +9,8 @@ updates:
directory: '/'
schedule:
interval: 'weekly'
+ cooldown:
+ default-days: 7
versioning-strategy: increase
labels:
- 'dependencies'
@@ -31,11 +33,10 @@ updates:
- '@types/react'
- '@types/react-dom'
- '@types/react-is'
- rollup:
+ rolldown:
patterns:
- - '@rollup/*'
- - 'rollup'
- - 'rollup-plugin-*'
+ - '@rolldown/*'
+ - 'rolldown'
storybook:
patterns:
- '@storybook/*'
@@ -49,6 +50,8 @@ updates:
directory: '/'
schedule:
interval: 'weekly'
+ cooldown:
+ default-days: 7
labels:
- 'dependencies'
- 'skip changeset'
diff --git a/.github/instructions/typescript-react.instructions.md b/.github/instructions/typescript-react.instructions.md
index 64f25dd45be..dcb2d4d913f 100644
--- a/.github/instructions/typescript-react.instructions.md
+++ b/.github/instructions/typescript-react.instructions.md
@@ -25,3 +25,12 @@ Apply the [general coding guidelines](./general-coding.instructions.md) to all c
- Use React.FC type for components with children
- Keep components small and focused
- Use CSS modules for component styling
+
+## Storybook Guidelines
+
+- Put the default component stories alongside the component (for most components this is `packages/react/src/[ComponentName]/[ComponentName].stories.tsx`)
+- Include `Default` and `Playground` stories in the default stories file when the component supports configurable controls
+- Use the `Components/[ComponentName]` Storybook title for the default stories file
+- Put feature-specific stories alongside the component (for most components this is `packages/react/src/[ComponentName]/[ComponentName].features.stories.tsx`)
+- Use the `Components/[ComponentName]/Features` Storybook title for feature stories
+- Put examples or scenario-based stories in separate files, such as `[ComponentName].examples.stories.tsx`, when they are distinct from core feature coverage
diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md
index 5846047cfc3..a4cbfa2876d 100644
--- a/.github/pull_request_template.md
+++ b/.github/pull_request_template.md
@@ -34,16 +34,4 @@ Closes #
-### Merge checklist
-
-- [ ] Added/updated tests
-- [ ] Added/updated documentation
-- [ ] Added/updated previews (Storybook)
-- [ ] Changes are [SSR compatible](https://github.com/primer/react/blob/main/contributor-docs/CONTRIBUTING.md#ssr-compatibility)
-- [ ] Tested in Chrome
-- [ ] Tested in Firefox
-- [ ] Tested in Safari
-- [ ] Tested in Edge
-- [ ] (GitHub staff only) Integration tests pass at github/github-ui ([Learn more about how to run integration tests](https://github.com/github/primer-engineering/blob/main/how-we-work/testing-primer-react-pr-at-dotcom.md))
-
diff --git a/.github/workflows/aat-reports.yml b/.github/workflows/aat-reports.yml
index 4da43813c44..907b41055a2 100644
--- a/.github/workflows/aat-reports.yml
+++ b/.github/workflows/aat-reports.yml
@@ -24,7 +24,7 @@ jobs:
node-version-file: '.nvmrc'
cache: 'npm'
- name: Set up turbo cache
- uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9
with:
path: .turbo
key: ${{ runner.os }}-turbo-${{ github.job }}-shard-${{ matrix.shard }}-${{ github.run_id }}-${{ github.run_attempt }}
diff --git a/.github/workflows/check_for_changeset.yml b/.github/workflows/check_for_changeset.yml
index af7d138639d..92ddb2f5c41 100644
--- a/.github/workflows/check_for_changeset.yml
+++ b/.github/workflows/check_for_changeset.yml
@@ -15,11 +15,30 @@ jobs:
check-for-changeset:
name: Check for changeset
runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ pull-requests: read
steps:
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
- name: 'Check for changeset'
- uses: brettcannon/check-for-changed-files@v1
- with:
- file-pattern: '.changeset/*.md'
- skip-label: 'skip changeset'
- failure-message: 'No changeset found. If these changes should not result in a new version, apply the ${skip-label} label to this pull request. If these changes should result in a version bump, please add a changeset https://git.io/J6QvQ'
+ env:
+ GH_TOKEN: ${{ github.token }}
+ PR_NUMBER: ${{ github.event.pull_request.number }}
+ SKIP_LABEL: 'skip changeset'
+ run: |
+ set -euo pipefail
+
+ if jq -r '.pull_request.labels[]?.name // empty' "$GITHUB_EVENT_PATH" | grep -Fxq "$SKIP_LABEL"; then
+ echo "The skip label \"$SKIP_LABEL\" is set"
+ exit 0
+ fi
+
+ changed_files="$(gh api --paginate "repos/$GITHUB_REPOSITORY/pulls/$PR_NUMBER/files" --jq '.[].filename')"
+
+ if grep -Eq '^\.changeset/[^/]+\.md$' <<<"$changed_files"; then
+ echo 'The ".changeset/*.md" file pattern matched the changed files of the pull request'
+ exit 0
+ fi
+
+ failure_message="No changeset found. If these changes should not result in a new version, apply the \"$SKIP_LABEL\" label to this pull request. If these changes should result in a version bump, please add a changeset https://git.io/J6QvQ"
+ echo "::error::$failure_message"
+ exit 1
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index efd952901b5..06229e4a893 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -68,7 +68,7 @@ jobs:
node-version-file: '.nvmrc'
cache: 'npm'
- name: Set up turbo cache
- uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9
with:
path: .turbo
key: ${{ runner.os }}-turbo-${{ github.job }}-${{ matrix.react-version }}-${{ github.run_id }}-${{ github.run_attempt }}
@@ -103,7 +103,7 @@ jobs:
node-version-file: '.nvmrc'
cache: 'npm'
- name: Set up turbo cache
- uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9
with:
path: .turbo
key: ${{ runner.os }}-turbo-${{ github.job }}-${{ matrix.react-version }}-${{ github.run_id }}-${{ github.run_attempt }}
@@ -137,7 +137,7 @@ jobs:
node-version-file: '.nvmrc'
cache: 'npm'
- name: Set up turbo cache
- uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9
with:
path: .turbo
key: ${{ runner.os }}-turbo-${{ github.job }}-${{ matrix.react-version }}-${{ github.run_id }}-${{ github.run_attempt }}
@@ -164,7 +164,7 @@ jobs:
node-version-file: '.nvmrc'
cache: 'npm'
- name: Set up turbo cache
- uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9
with:
path: .turbo
key: ${{ runner.os }}-turbo-${{ github.job }}-default-${{ github.run_id }}-${{ github.run_attempt }}
@@ -194,7 +194,7 @@ jobs:
node-version-file: '.nvmrc'
cache: 'npm'
- name: Set up turbo cache
- uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9
with:
path: .turbo
key: ${{ runner.os }}-turbo-${{ github.job }}-default-${{ github.run_id }}-${{ github.run_attempt }}
diff --git a/.github/workflows/cleanup.yml b/.github/workflows/cleanup.yml
new file mode 100644
index 00000000000..062e105fb48
--- /dev/null
+++ b/.github/workflows/cleanup.yml
@@ -0,0 +1,316 @@
+name: cleanup
+on:
+ schedule:
+ # https://crontab.guru/every-night-at-midnight
+ - cron: '0 0 * * *'
+ workflow_dispatch:
+
+jobs:
+ environments:
+ if: ${{ github.repository == 'primer/react' }}
+ runs-on: ubuntu-latest
+ permissions:
+ deployments: write
+ steps:
+ - name: Generate token
+ id: generate_token
+ uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a
+ with:
+ app_id: ${{ secrets.APP_ID }}
+ private_key: ${{ secrets.PRIVATE_KEY }}
+ - uses: actions/github-script@5c56fde4671bc2d3592fb0f2c5b5bab9ddae03b1
+ with:
+ github-token: ${{ steps.generate_token.outputs.token }}
+ script: |
+ const environments = [];
+
+ for await (const response of github.paginate.iterator(
+ github.rest.repos.getAllEnvironments,
+ {
+ owner: 'primer',
+ repo: 'react',
+ per_page: 100,
+ }
+ )) {
+ environments.push(...response.data);
+ }
+
+ core.info(`${environments.length} environments found`);
+
+ const previews = environments.filter(environment => {
+ return environment.name.startsWith('storybook-preview');
+ });
+
+ core.info(`${previews.length} preview environments found`);
+
+ core.startGroup('Status');
+
+ const changes = [];
+
+ for (const preview of previews) {
+ // Assumes that environments are named `storybook-preview-123`
+ const segments = preview.name.split('-');
+ const number = segments[2];
+ const { data: pull } = await github.rest.pulls.get({
+ owner: 'primer',
+ repo: 'react',
+ pull_number: number,
+ });
+
+ if (pull.state === 'open') {
+ core.info(`${preview.name} is still being used by: ${pull.html_url}`);
+ changes.push({
+ preview,
+ pull,
+ type: 'none',
+ });
+ continue;
+ }
+
+ core.info(`Removing ${preview.name} since ${pull.html_url} is ${pull.state}`);
+
+ await github.rest.repos.deleteAnEnvironment({
+ owner: 'primer',
+ repo: 'react',
+ environment_name: preview.name,
+ });
+
+ changes.push({
+ preview,
+ pull,
+ type: 'removed',
+ });
+ }
+
+ core.endGroup();
+
+ await core.summary
+ .addHeading('Environments')
+ .addTable([
+ [
+ {
+ data: 'Environment',
+ header: true,
+ },
+ {
+ data: 'Status',
+ header: true,
+ },
+ {
+ data: 'Pull Request',
+ header: true,
+ },
+ ],
+ ...changes.map((change) => {
+ return [
+ change.preview.name,
+ change.type === 'removed' ? 'Removed' : '',
+ change.pull.html_url,
+ ];
+ }),
+ ])
+ .write();
+
+ branches:
+ if: ${{ github.repository == 'primer/react' }}
+ runs-on: ubuntu-latest
+ permissions:
+ contents: write
+ steps:
+ - name: Generate token
+ id: generate_token
+ uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a
+ with:
+ app_id: ${{ secrets.APP_ID }}
+ private_key: ${{ secrets.PRIVATE_KEY }}
+ - uses: actions/github-script@5c56fde4671bc2d3592fb0f2c5b5bab9ddae03b1
+ with:
+ github-token: ${{ steps.generate_token.outputs.token }}
+ script: |
+ const owner = 'primer';
+ const repo = 'react';
+ const branches = [];
+ // Clamp the day so subtracting calendar months stays within the target month
+ // (for example, August 31 should become February 28/29 rather than March 2/3).
+ const subtractMonths = (date, months) => {
+ const result = new Date(date);
+ const day = result.getDate();
+ result.setDate(1);
+ result.setMonth(result.getMonth() - months);
+ result.setDate(Math.min(day, new Date(result.getFullYear(), result.getMonth() + 1, 0).getDate()));
+
+ return result;
+ };
+ const sixMonthsAgo = subtractMonths(new Date(), 6);
+ const getErrorMessage = (error) => {
+ return error instanceof Error ? error.message : String(error);
+ };
+
+ let defaultBranch = context.payload.repository?.default_branch;
+
+ if (!defaultBranch) {
+ const { data: repository } = await github.rest.repos.get({
+ owner,
+ repo,
+ });
+
+ defaultBranch = repository.default_branch;
+ }
+
+ if (!defaultBranch) {
+ core.warning('Default branch could not be determined, falling back to main');
+ }
+
+ defaultBranch ||= 'main';
+
+ for await (const response of github.paginate.iterator(
+ github.rest.repos.listBranches,
+ {
+ owner,
+ repo,
+ per_page: 100,
+ }
+ )) {
+ branches.push(...response.data);
+ }
+
+ core.info(`${branches.length} branches found`);
+ core.info(`Keeping default branch ${defaultBranch}`);
+
+ core.startGroup('Status');
+
+ const changes = [];
+
+ for (const branch of branches) {
+ if (branch.name === defaultBranch) {
+ core.info(`Keeping ${branch.name} because it is the default branch`);
+ continue;
+ }
+
+ if (branch.protected) {
+ core.info(`Keeping ${branch.name} because it is protected`);
+ continue;
+ }
+
+ let pull;
+ let reason = 'recent-activity';
+ let type = 'none';
+
+ const { data: pulls } = await github.rest.pulls.list({
+ owner,
+ repo,
+ head: `${owner}:${branch.name}`,
+ state: 'all',
+ per_page: 1,
+ });
+
+ pull = pulls[0];
+
+ if (pull && pull.state !== 'open') {
+ reason = `pr-${pull.state}`;
+ core.info(`Removing ${branch.name} since ${pull.html_url} is ${pull.state}`);
+
+ try {
+ await github.rest.git.deleteRef({
+ owner,
+ repo,
+ ref: `heads/${branch.name}`,
+ });
+ type = 'removed';
+ } catch (error) {
+ reason = `${reason}-delete-failed`;
+ core.warning(`Failed to remove ${branch.name}: ${getErrorMessage(error)}`);
+ }
+
+ changes.push({
+ branch,
+ pull,
+ reason,
+ type,
+ });
+ continue;
+ }
+
+ const { data: commit } = await github.rest.repos.getCommit({
+ owner,
+ repo,
+ ref: branch.commit.sha,
+ });
+
+ // Prefer the committer date because it best reflects the latest activity on the branch,
+ // and fall back to the author date when a committer date is unavailable.
+ const commitDate = commit.commit.committer?.date ?? commit.commit.author?.date;
+
+ if (!commitDate) {
+ reason = 'unknown-commit-date';
+ core.warning(`Keeping ${branch.name} because its latest commit date could not be determined`);
+ } else {
+ const parsedCommitDate = new Date(commitDate);
+
+ if (Number.isNaN(parsedCommitDate.getTime())) {
+ reason = 'unknown-commit-date';
+ core.warning(`Keeping ${branch.name} because its latest commit date could not be parsed`);
+ } else if (parsedCommitDate < sixMonthsAgo) {
+ reason = 'stale-6-months';
+ core.info(`Removing ${branch.name} because its latest commit is older than 6 months`);
+
+ try {
+ await github.rest.git.deleteRef({
+ owner,
+ repo,
+ ref: `heads/${branch.name}`,
+ });
+ type = 'removed';
+ } catch (error) {
+ reason = `${reason}-delete-failed`;
+ core.warning(`Failed to remove ${branch.name}: ${getErrorMessage(error)}`);
+ }
+ } else if (pull) {
+ reason = 'pr-open';
+ core.info(`${branch.name} is still being used by: ${pull.html_url}`);
+ } else {
+ core.info(`Keeping ${branch.name} because it has recent activity`);
+ }
+ }
+
+ changes.push({
+ branch,
+ pull,
+ reason,
+ type,
+ });
+ }
+
+ core.endGroup();
+
+ await core.summary
+ .addHeading('Branches')
+ .addTable([
+ [
+ {
+ data: 'Branch',
+ header: true,
+ },
+ {
+ data: 'Status',
+ header: true,
+ },
+ {
+ data: 'Reason',
+ header: true,
+ },
+ {
+ data: 'Pull Request',
+ header: true,
+ },
+ ],
+ ...changes.map((change) => {
+ return [
+ change.branch.name,
+ change.type === 'removed' ? 'Removed' : 'Kept',
+ change.reason,
+ change.pull?.html_url ?? '',
+ ];
+ }),
+ ])
+ .write();
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index 8980afa8aa2..473c685f26f 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -42,7 +42,7 @@ jobs:
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@v4
+ uses: github/codeql-action/init@v4.36.2
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
@@ -55,7 +55,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
- uses: github/codeql-action/autobuild@v4
+ uses: github/codeql-action/autobuild@v4.36.2
# ℹ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
@@ -68,4 +68,4 @@ jobs:
# ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v4
+ uses: github/codeql-action/analyze@v4.36.2
diff --git a/.github/workflows/codescan.yml b/.github/workflows/codescan.yml
index 4c06305cc45..909aac8972e 100644
--- a/.github/workflows/codescan.yml
+++ b/.github/workflows/codescan.yml
@@ -66,7 +66,7 @@ jobs:
core.setOutput('metrics', metrics.join('\n'))
- name: Build count
- uses: masci/datadog@7696b770aa52aee8a8bffcd1fd52c0a71423ce04
+ uses: masci/datadog@e6e5018c23bc080396a913bfa61555db64431269
with:
api-key: ${{ secrets.datadog_api_key }}
metrics: ${{ steps.file-counts.outputs.metrics }}
diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml
index c90fed22be7..6546a81275d 100644
--- a/.github/workflows/copilot-setup-steps.yml
+++ b/.github/workflows/copilot-setup-steps.yml
@@ -15,7 +15,7 @@ jobs:
node-version-file: '.nvmrc'
cache: 'npm'
- name: Set up turbo cache
- uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9
with:
path: .turbo
key: ${{ runner.os }}-turbo-${{ github.sha }}
diff --git a/.github/workflows/environment.yml b/.github/workflows/environment.yml
deleted file mode 100644
index ef0f89d637c..00000000000
--- a/.github/workflows/environment.yml
+++ /dev/null
@@ -1,113 +0,0 @@
-name: environments
-on:
- # schedule:
- # # https://crontab.guru/every-night-at-midnight
- # - cron: '0 0 * * *'
- workflow_dispatch:
-
-permissions:
- deployments: write
-
-jobs:
- cleanup:
- if: ${{ github.repository == 'primer/react' }}
- runs-on: ubuntu-latest
- steps:
- - name: Generate token
- id: generate_token
- uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a
- with:
- app_id: ${{ secrets.APP_ID }}
- private_key: ${{ secrets.PRIVATE_KEY }}
- - uses: actions/github-script@5c56fde4671bc2d3592fb0f2c5b5bab9ddae03b1
- with:
- github-token: ${{ steps.generate_token.outputs.token }}
- script: |
- const environments = [];
-
- for await (const response of github.paginate.iterator(
- github.rest.repos.getAllEnvironments,
- {
- owner: 'primer',
- repo: 'react',
- per_page: 100,
- }
- )) {
- environments.push(...response.data);
- }
-
- core.info(`${environments.length} environments found`);
-
- const previews = environments.filter(environment => {
- return environment.name.startsWith('storybook-preview');
- });
-
- core.info(`${previews.length} preview environments found`);
-
- core.startGroup('Status');
-
- const changes = [];
-
- for (const preview of previews) {
- // Assumes that environments are named `storybook-preview-123`
- const segments = preview.name.split('-');
- const number = segments[2];
- const { data: pull } = await github.rest.pulls.get({
- owner: 'primer',
- repo: 'react',
- pull_number: number,
- });
-
- if (pull.state === 'open') {
- core.info(`${preview.name} is still being used by: ${pull.html_url}`);
- changes.push({
- preview,
- pull,
- type: 'none',
- });
- continue;
- }
-
- core.info(`Removing ${preview.name} since ${pull.html_url} is ${pull.state}`);
-
- await github.rest.repos.deleteAnEnvironment({
- owner: 'primer',
- repo: 'react',
- environment_name: preview.name,
- });
-
- changes.push({
- preview,
- pull,
- type: 'removed',
- });
- }
-
- core.endGroup();
-
- await core.summary
- .addHeading('Environments')
- .addTable([
- [
- {
- data: 'Environment',
- header: true,
- },
- {
- data: 'Status',
- header: true,
- },
- {
- data: 'Pull Request',
- header: true,
- },
- ],
- ...changes.map((change) => {
- return [
- change.preview.name,
- change.type === 'removed' ? 'Removed' : '',
- change.pull.html_url,
- ];
- }),
- ])
- .write();
diff --git a/.github/workflows/figma_connect_publish.yml b/.github/workflows/figma_connect_publish.yml
index b28d5fdcb82..832899aa397 100644
--- a/.github/workflows/figma_connect_publish.yml
+++ b/.github/workflows/figma_connect_publish.yml
@@ -21,7 +21,7 @@ jobs:
node-version-file: '.nvmrc'
- name: Cache dependencies
- uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9
with:
path: ~/.npm
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }}
diff --git a/.github/workflows/lint-autofix.yml b/.github/workflows/lint-autofix.yml
index 2bc112df8e1..63f876d067d 100644
--- a/.github/workflows/lint-autofix.yml
+++ b/.github/workflows/lint-autofix.yml
@@ -113,7 +113,7 @@ jobs:
- name: Commit and push changes
if: steps.check_jobs.outputs.should_fix == 'true' && steps.pr.outputs.head_ref != ''
- uses: stefanzweifel/git-auto-commit-action@04702edda442b2e678b25b537cec683a1493fcb9
+ uses: stefanzweifel/git-auto-commit-action@4a55954c782fc1ea30b9056cd3e7a2b40ca8887d
with:
commit_message: 'chore: auto-fix lint and formatting issues'
commit_user_name: 'github-actions[bot]'
diff --git a/.github/workflows/npm.yml b/.github/workflows/npm.yml
index eef7791ee24..d15b7731d87 100644
--- a/.github/workflows/npm.yml
+++ b/.github/workflows/npm.yml
@@ -19,7 +19,7 @@ jobs:
node-version-file: '.nvmrc'
cache: 'npm'
- name: Set up turbo cache
- uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9
with:
path: .turbo
key: ${{ runner.os }}-turbo-${{ github.job }}-default-${{ github.run_id }}-${{ github.run_attempt }}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index daa847f64d4..b60da6c39aa 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -57,6 +57,7 @@ jobs:
uses: changesets/action@a45c4d594aa4e2c509dc14a9f2b3b67ba3780d0d
with:
title: Release tracking
+ commitMode: github-api
# This expects you to have a script called release which does a build for your packages and calls changeset publish
publish: npm run release
env:
diff --git a/.github/workflows/statuses.yml b/.github/workflows/statuses.yml
deleted file mode 100644
index 56348ab2b2d..00000000000
--- a/.github/workflows/statuses.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-name: Update status project
-
-on:
- push:
- branches:
- - main
- # Only run workflow on changes to component docs
- paths:
- - 'docs/content/**'
-
-jobs:
- build-and-deploy:
- name: Update status project
- if: ${{ github.repository == 'primer/react' }}
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
- - name: Setup Ruby
- uses: ruby/setup-ruby@v1
- with:
- ruby-version: 2.7
- - name: Set up Node.js
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
- with:
- node-version-file: '.nvmrc'
- - name: Install node deps
- run: npm ci
- - name: Install ruby deps
- run: gem install graphql-client
- - name: Build statuses
- run: npx ts-node script/component-status-project/build.ts
- - name: Deploy statuses to project
- run: GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }} script/component-status-project/deploy.rb
diff --git a/.github/workflows/storybook-tests.yml b/.github/workflows/storybook-tests.yml
deleted file mode 100644
index 251102d384a..00000000000
--- a/.github/workflows/storybook-tests.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-name: 'Storybook Tests'
-on:
- pull_request:
- push:
- branches:
- - main
-
-jobs:
- test:
- timeout-minutes: 30
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
- - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e
- with:
- node-version-file: '.nvmrc'
- cache: 'npm'
- - name: Install dependencies
- run: npm i
- - name: Install Playwright
- run: npx playwright install --with-deps
- - name: Build Storybook
- run: npm run build:storybook:visual-testing --quiet
- - name: Serve Storybook and run tests
- run: |
- npx concurrently -k -s first -n "SB,TEST" -c "magenta,blue" \
- "npx http-server storybook-static --port 6006 --silent" \
- "npx wait-on tcp:6006 && npm run test:storybook"
diff --git a/.github/workflows/stress-tests.yml b/.github/workflows/stress-tests.yml
index 72c1e31cf5b..c26e5e52878 100644
--- a/.github/workflows/stress-tests.yml
+++ b/.github/workflows/stress-tests.yml
@@ -34,7 +34,7 @@ jobs:
if: ${{ always() }}
run: kill ${{ steps.storybook.outputs.pid }}
- name: Download previous benchmark data (if any)
- uses: actions/cache@v5
+ uses: actions/cache@v6.1.0
with:
path: ./cache
key: stress-tests-benchmark
diff --git a/.github/workflows/update-snapshots.yml b/.github/workflows/update-snapshots.yml
index 35ff6d7d6cc..0cb1862083e 100644
--- a/.github/workflows/update-snapshots.yml
+++ b/.github/workflows/update-snapshots.yml
@@ -110,7 +110,7 @@ jobs:
rm snapshots.zip
rm $filepath
done
- - uses: stefanzweifel/git-auto-commit-action@04702edda442b2e678b25b537cec683a1493fcb9
+ - uses: stefanzweifel/git-auto-commit-action@4a55954c782fc1ea30b9056cd3e7a2b40ca8887d
with:
commit_message: 'test(vrt): update snapshots'
diff --git a/.github/workflows/vrt-reports.yml b/.github/workflows/vrt-reports.yml
index 06e043dd9ee..5e2368f2546 100644
--- a/.github/workflows/vrt-reports.yml
+++ b/.github/workflows/vrt-reports.yml
@@ -24,7 +24,7 @@ jobs:
node-version-file: '.nvmrc'
cache: 'npm'
- name: Set up turbo cache
- uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9
with:
path: .turbo
key: ${{ runner.os }}-turbo-${{ github.job }}-shard-${{ matrix.shard }}-${{ github.run_id }}-${{ github.run_attempt }}
diff --git a/.github/workflows/vrt.yml b/.github/workflows/vrt.yml
index f6004388497..25b17837b77 100644
--- a/.github/workflows/vrt.yml
+++ b/.github/workflows/vrt.yml
@@ -40,7 +40,7 @@ jobs:
node-version-file: '.nvmrc'
cache: 'npm'
- name: Set up turbo cache
- uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb
+ uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9
with:
path: .turbo
key: ${{ runner.os }}-turbo-${{ github.job }}-shard-${{ matrix.shard }}-${{ github.run_id }}-${{ github.run_attempt }}
diff --git a/.gitignore b/.gitignore
index 78cc2319772..b5ad54840a5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,6 +14,9 @@ css/
# Dependencies
node_modules
+# Local agent workspaces
+.agents
+
# Gatsby
public/
diff --git a/.npmrc b/.npmrc
index 2922128e350..f48122f148c 100644
--- a/.npmrc
+++ b/.npmrc
@@ -5,3 +5,5 @@ legacy-peer-deps=true
fetch-retries=5
fetch-retry-mintimeout=300000
fetch-retry-maxtimeout=300000
+# https://docs.npmjs.com/cli/v11/using-npm/config#min-release-age
+min-release-age=7
diff --git a/.nvmrc b/.nvmrc
index cd44bfcf875..f7a56c9ec21 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-v26.3.1
+v26.4.0
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-dark-colorblind-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-dark-colorblind-linux.png
index e589866ea35..e35e7a9fb6b 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-dark-colorblind-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-dark-colorblind-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-dark-dimmed-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-dark-dimmed-linux.png
index d69b59ca7ae..23d2542049e 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-dark-dimmed-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-dark-dimmed-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-dark-high-contrast-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-dark-high-contrast-linux.png
index c7c899b5533..f0a77f64d78 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-dark-high-contrast-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-dark-high-contrast-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-dark-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-dark-linux.png
index 21833ab702e..068fd4339d4 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-dark-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-dark-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-dark-tritanopia-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-dark-tritanopia-linux.png
index d11a4868033..1de5dd1877b 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-dark-tritanopia-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-dark-tritanopia-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-light-colorblind-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-light-colorblind-linux.png
index fa717e00333..11f32b4ea56 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-light-colorblind-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-light-colorblind-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-light-high-contrast-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-light-high-contrast-linux.png
index aa4f37d5f75..81db9c05a85 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-light-high-contrast-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-light-high-contrast-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-light-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-light-linux.png
index 97e2b3a606e..0c2a57c8c3a 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-light-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-light-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-light-tritanopia-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-light-tritanopia-linux.png
index ad0b25f7e0c..a2942a4fba6 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-light-tritanopia-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-light-tritanopia-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-dark-colorblind-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-dark-colorblind-linux.png
index e589866ea35..e35e7a9fb6b 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-dark-colorblind-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-dark-colorblind-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-dark-dimmed-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-dark-dimmed-linux.png
index d69b59ca7ae..23d2542049e 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-dark-dimmed-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-dark-dimmed-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-dark-high-contrast-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-dark-high-contrast-linux.png
index c7c899b5533..f0a77f64d78 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-dark-high-contrast-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-dark-high-contrast-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-dark-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-dark-linux.png
index 21833ab702e..068fd4339d4 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-dark-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-dark-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-dark-tritanopia-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-dark-tritanopia-linux.png
index d11a4868033..1de5dd1877b 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-dark-tritanopia-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-dark-tritanopia-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-light-colorblind-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-light-colorblind-linux.png
index fa717e00333..11f32b4ea56 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-light-colorblind-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-light-colorblind-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-light-high-contrast-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-light-high-contrast-linux.png
index aa4f37d5f75..81db9c05a85 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-light-high-contrast-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-light-high-contrast-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-light-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-light-linux.png
index 97e2b3a606e..0c2a57c8c3a 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-light-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-light-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-light-tritanopia-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-light-tritanopia-linux.png
index ad0b25f7e0c..a2942a4fba6 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-light-tritanopia-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-Pull-Request-Page-on-Narrow-Viewport-light-tritanopia-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-dark-colorblind-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-dark-colorblind-linux.png
index 6a9401bfb94..8d9e0a0cd76 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-dark-colorblind-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-dark-colorblind-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-dark-dimmed-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-dark-dimmed-linux.png
index 32587748744..b6f9ac267e1 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-dark-dimmed-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-dark-dimmed-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-dark-high-contrast-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-dark-high-contrast-linux.png
index 905d37d9806..f185cbeb252 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-dark-high-contrast-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-dark-high-contrast-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-dark-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-dark-linux.png
index 6a9401bfb94..8d9e0a0cd76 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-dark-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-dark-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-dark-tritanopia-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-dark-tritanopia-linux.png
index 6a9401bfb94..8d9e0a0cd76 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-dark-tritanopia-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-dark-tritanopia-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-light-colorblind-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-light-colorblind-linux.png
index bbafa321f46..4c336c9da65 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-light-colorblind-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-light-colorblind-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-light-high-contrast-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-light-high-contrast-linux.png
index bc5e542bf19..65f323bd734 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-light-high-contrast-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-light-high-contrast-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-light-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-light-linux.png
index bbafa321f46..4c336c9da65 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-light-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-light-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-light-tritanopia-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-light-tritanopia-linux.png
index bbafa321f46..4c336c9da65 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-light-tritanopia-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Navigation-Slot-light-tritanopia-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-dark-colorblind-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-dark-colorblind-linux.png
index 8c779dd12e6..733adff3765 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-dark-colorblind-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-dark-colorblind-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-dark-dimmed-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-dark-dimmed-linux.png
index 3afb13ddaaa..29243a7c6bf 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-dark-dimmed-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-dark-dimmed-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-dark-high-contrast-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-dark-high-contrast-linux.png
index 8eebf42a9d0..de41fe6885f 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-dark-high-contrast-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-dark-high-contrast-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-dark-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-dark-linux.png
index 2b96048e01b..bf46a195a3e 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-dark-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-dark-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-dark-tritanopia-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-dark-tritanopia-linux.png
index d3e94e34b82..0ce58ef9ee6 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-dark-tritanopia-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-dark-tritanopia-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-light-colorblind-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-light-colorblind-linux.png
index 7703d73cb11..9a8cff65785 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-light-colorblind-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-light-colorblind-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-light-high-contrast-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-light-high-contrast-linux.png
index 2d663b1fdab..982078f575c 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-light-high-contrast-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-light-high-contrast-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-light-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-light-linux.png
index e3a9dc55c58..f6e9a180500 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-light-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-light-linux.png differ
diff --git a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-light-tritanopia-linux.png b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-light-tritanopia-linux.png
index 79f7d3a7593..b6545b8aaef 100644
Binary files a/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-light-tritanopia-linux.png and b/.playwright/snapshots/components/PageHeader.test.ts-snapshots/PageHeader-With-Page-Layout-light-tritanopia-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-dark-colorblind-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-dark-colorblind-linux.png
index 3f45ba9d118..16d167cb4e0 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-dark-colorblind-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-dark-colorblind-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-dark-dimmed-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-dark-dimmed-linux.png
index 1679a7ea997..e5f1dd8b3df 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-dark-dimmed-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-dark-dimmed-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-dark-high-contrast-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-dark-high-contrast-linux.png
index d00678cdc32..8b734934a03 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-dark-high-contrast-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-dark-high-contrast-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-dark-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-dark-linux.png
index 3d00e606162..1283519d867 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-dark-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-dark-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-dark-tritanopia-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-dark-tritanopia-linux.png
index 3f45ba9d118..c6a24e30590 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-dark-tritanopia-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-dark-tritanopia-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-light-colorblind-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-light-colorblind-linux.png
index edc243ff0dc..9e7895d0a15 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-light-colorblind-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-light-colorblind-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-light-high-contrast-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-light-high-contrast-linux.png
index 8b6ef7c93b7..8ea4664f457 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-light-high-contrast-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-light-high-contrast-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-light-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-light-linux.png
index 51d52ed6bf1..629ed103e02 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-light-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-light-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-light-tritanopia-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-light-tritanopia-linux.png
index 51d52ed6bf1..629ed103e02 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-light-tritanopia-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-Counters-Loading-State-light-tritanopia-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Hi-43cdc-t-enough-space-to-display-all-list-items-vrt-2-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Hi-43cdc-t-enough-space-to-display-all-list-items-vrt-2-linux.png
index 77df9587a7b..21a6fa8e1fe 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Hi-43cdc-t-enough-space-to-display-all-list-items-vrt-2-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Hi-43cdc-t-enough-space-to-display-all-list-items-vrt-2-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Hi-a8f67-t-enough-space-to-display-all-list-items-vrt-1-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Hi-a8f67-t-enough-space-to-display-all-list-items-vrt-1-linux.png
index 35453dd4e4e..21a6fa8e1fe 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Hi-a8f67-t-enough-space-to-display-all-list-items-vrt-1-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Hi-a8f67-t-enough-space-to-display-all-list-items-vrt-1-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Overflow-interaction-vrt-1-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Overflow-interaction-vrt-1-linux.png
index 35453dd4e4e..21a6fa8e1fe 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Overflow-interaction-vrt-1-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Overflow-interaction-vrt-1-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Overflow-interaction-vrt-2-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Overflow-interaction-vrt-2-linux.png
index 6e9e702bbc7..e555ba53e67 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Overflow-interaction-vrt-2-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Overflow-interaction-vrt-2-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Overflow-interaction-vrt-3-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Overflow-interaction-vrt-3-linux.png
index 2e5345075a1..768b47af4b5 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Overflow-interaction-vrt-3-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Overflow-interaction-vrt-3-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Overflow-interaction-vrt-4-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Overflow-interaction-vrt-4-linux.png
index 76c1fc9989d..a16c08d451e 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Overflow-interaction-vrt-4-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-Overflow-interaction-vrt-4-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-co-09dc1-t-enough-space-to-display-all-list-items-vrt-2-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-co-09dc1-t-enough-space-to-display-all-list-items-vrt-2-linux.png
index 46b761402c8..21a6fa8e1fe 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-co-09dc1-t-enough-space-to-display-all-list-items-vrt-2-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-co-09dc1-t-enough-space-to-display-all-list-items-vrt-2-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-co-4ae94-t-enough-space-to-display-all-list-items-vrt-1-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-co-4ae94-t-enough-space-to-display-all-list-items-vrt-1-linux.png
index 5aa62bb4d54..21a6fa8e1fe 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-co-4ae94-t-enough-space-to-display-all-list-items-vrt-1-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-co-4ae94-t-enough-space-to-display-all-list-items-vrt-1-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-colorblind-Overflow-interaction-vrt-1-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-colorblind-Overflow-interaction-vrt-1-linux.png
index 5aa62bb4d54..21a6fa8e1fe 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-colorblind-Overflow-interaction-vrt-1-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-colorblind-Overflow-interaction-vrt-1-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-colorblind-Overflow-interaction-vrt-2-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-colorblind-Overflow-interaction-vrt-2-linux.png
index 728ad9254f1..e555ba53e67 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-colorblind-Overflow-interaction-vrt-2-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-colorblind-Overflow-interaction-vrt-2-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-colorblind-Overflow-interaction-vrt-3-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-colorblind-Overflow-interaction-vrt-3-linux.png
index 45838aaa28f..768b47af4b5 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-colorblind-Overflow-interaction-vrt-3-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-colorblind-Overflow-interaction-vrt-3-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-colorblind-Overflow-interaction-vrt-4-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-colorblind-Overflow-interaction-vrt-4-linux.png
index a3c79852ae3..a16c08d451e 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-colorblind-Overflow-interaction-vrt-4-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-colorblind-Overflow-interaction-vrt-4-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-di-0885b-t-enough-space-to-display-all-list-items-vrt-1-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-di-0885b-t-enough-space-to-display-all-list-items-vrt-1-linux.png
index d3ead423e00..7279288c5a8 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-di-0885b-t-enough-space-to-display-all-list-items-vrt-1-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-di-0885b-t-enough-space-to-display-all-list-items-vrt-1-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-di-b98f2-t-enough-space-to-display-all-list-items-vrt-2-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-di-b98f2-t-enough-space-to-display-all-list-items-vrt-2-linux.png
index b9cd28632a2..7279288c5a8 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-di-b98f2-t-enough-space-to-display-all-list-items-vrt-2-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-di-b98f2-t-enough-space-to-display-all-list-items-vrt-2-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-dimmed-Overflow-interaction-vrt-1-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-dimmed-Overflow-interaction-vrt-1-linux.png
index d3ead423e00..7279288c5a8 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-dimmed-Overflow-interaction-vrt-1-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-dimmed-Overflow-interaction-vrt-1-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-dimmed-Overflow-interaction-vrt-2-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-dimmed-Overflow-interaction-vrt-2-linux.png
index f220a0f1b0e..2a39c917517 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-dimmed-Overflow-interaction-vrt-2-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-dimmed-Overflow-interaction-vrt-2-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-dimmed-Overflow-interaction-vrt-3-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-dimmed-Overflow-interaction-vrt-3-linux.png
index 4c7a62a528d..7adf4710936 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-dimmed-Overflow-interaction-vrt-3-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-dimmed-Overflow-interaction-vrt-3-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-dimmed-Overflow-interaction-vrt-4-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-dimmed-Overflow-interaction-vrt-4-linux.png
index 56fb325b6aa..09daba4334e 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-dimmed-Overflow-interaction-vrt-4-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-dimmed-Overflow-interaction-vrt-4-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-hi-277e8-t-enough-space-to-display-all-list-items-vrt-2-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-hi-277e8-t-enough-space-to-display-all-list-items-vrt-2-linux.png
index 735fa4e4db6..de898def8fa 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-hi-277e8-t-enough-space-to-display-all-list-items-vrt-2-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-hi-277e8-t-enough-space-to-display-all-list-items-vrt-2-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-hi-75912-t-enough-space-to-display-all-list-items-vrt-1-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-hi-75912-t-enough-space-to-display-all-list-items-vrt-1-linux.png
index 28a73f11563..de898def8fa 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-hi-75912-t-enough-space-to-display-all-list-items-vrt-1-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-hi-75912-t-enough-space-to-display-all-list-items-vrt-1-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-high-contrast-Overflow-interaction-vrt-1-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-high-contrast-Overflow-interaction-vrt-1-linux.png
index 28a73f11563..de898def8fa 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-high-contrast-Overflow-interaction-vrt-1-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-high-contrast-Overflow-interaction-vrt-1-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-high-contrast-Overflow-interaction-vrt-2-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-high-contrast-Overflow-interaction-vrt-2-linux.png
index a27baf3ea3b..fb3c6766eb6 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-high-contrast-Overflow-interaction-vrt-2-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-high-contrast-Overflow-interaction-vrt-2-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-high-contrast-Overflow-interaction-vrt-3-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-high-contrast-Overflow-interaction-vrt-3-linux.png
index 4eeeb3643d5..41d514d600c 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-high-contrast-Overflow-interaction-vrt-3-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-high-contrast-Overflow-interaction-vrt-3-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-high-contrast-Overflow-interaction-vrt-4-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-high-contrast-Overflow-interaction-vrt-4-linux.png
index 890f6e034fa..47f04629f3d 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-high-contrast-Overflow-interaction-vrt-4-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-high-contrast-Overflow-interaction-vrt-4-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tr-3b2b3-t-enough-space-to-display-all-list-items-vrt-1-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tr-3b2b3-t-enough-space-to-display-all-list-items-vrt-1-linux.png
index 5aa62bb4d54..21a6fa8e1fe 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tr-3b2b3-t-enough-space-to-display-all-list-items-vrt-1-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tr-3b2b3-t-enough-space-to-display-all-list-items-vrt-1-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tr-488ac-t-enough-space-to-display-all-list-items-vrt-2-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tr-488ac-t-enough-space-to-display-all-list-items-vrt-2-linux.png
index 46b761402c8..21a6fa8e1fe 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tr-488ac-t-enough-space-to-display-all-list-items-vrt-2-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tr-488ac-t-enough-space-to-display-all-list-items-vrt-2-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tritanopia-Overflow-interaction-vrt-1-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tritanopia-Overflow-interaction-vrt-1-linux.png
index 5aa62bb4d54..21a6fa8e1fe 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tritanopia-Overflow-interaction-vrt-1-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tritanopia-Overflow-interaction-vrt-1-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tritanopia-Overflow-interaction-vrt-2-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tritanopia-Overflow-interaction-vrt-2-linux.png
index 728ad9254f1..e555ba53e67 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tritanopia-Overflow-interaction-vrt-2-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tritanopia-Overflow-interaction-vrt-2-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tritanopia-Overflow-interaction-vrt-3-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tritanopia-Overflow-interaction-vrt-3-linux.png
index 0caf8f92596..768b47af4b5 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tritanopia-Overflow-interaction-vrt-3-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tritanopia-Overflow-interaction-vrt-3-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tritanopia-Overflow-interaction-vrt-4-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tritanopia-Overflow-interaction-vrt-4-linux.png
index 3041be8aaf9..482b8285107 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tritanopia-Overflow-interaction-vrt-4-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-dark-tritanopia-Overflow-interaction-vrt-4-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-H-38ba9-t-enough-space-to-display-all-list-items-vrt-2-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-H-38ba9-t-enough-space-to-display-all-list-items-vrt-2-linux.png
index 626b6e9365e..763b28c4ee1 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-H-38ba9-t-enough-space-to-display-all-list-items-vrt-2-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-H-38ba9-t-enough-space-to-display-all-list-items-vrt-2-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-H-42961-t-enough-space-to-display-all-list-items-vrt-1-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-H-42961-t-enough-space-to-display-all-list-items-vrt-1-linux.png
index 18a91e75b21..763b28c4ee1 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-H-42961-t-enough-space-to-display-all-list-items-vrt-1-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-H-42961-t-enough-space-to-display-all-list-items-vrt-1-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-Overflow-interaction-vrt-1-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-Overflow-interaction-vrt-1-linux.png
index 18a91e75b21..763b28c4ee1 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-Overflow-interaction-vrt-1-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-Overflow-interaction-vrt-1-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-Overflow-interaction-vrt-2-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-Overflow-interaction-vrt-2-linux.png
index 6b23a5e9f34..cb0db479864 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-Overflow-interaction-vrt-2-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-Overflow-interaction-vrt-2-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-Overflow-interaction-vrt-3-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-Overflow-interaction-vrt-3-linux.png
index 969f497dc2f..e80f483a588 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-Overflow-interaction-vrt-3-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-Overflow-interaction-vrt-3-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-Overflow-interaction-vrt-4-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-Overflow-interaction-vrt-4-linux.png
index bb7bfcdbff8..0c4d3b1f73c 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-Overflow-interaction-vrt-4-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-Overflow-interaction-vrt-4-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-c-5b01a-t-enough-space-to-display-all-list-items-vrt-2-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-c-5b01a-t-enough-space-to-display-all-list-items-vrt-2-linux.png
index e88f106526a..763b28c4ee1 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-c-5b01a-t-enough-space-to-display-all-list-items-vrt-2-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-c-5b01a-t-enough-space-to-display-all-list-items-vrt-2-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-c-617fb-t-enough-space-to-display-all-list-items-vrt-1-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-c-617fb-t-enough-space-to-display-all-list-items-vrt-1-linux.png
index fc6b1e7a19b..763b28c4ee1 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-c-617fb-t-enough-space-to-display-all-list-items-vrt-1-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-c-617fb-t-enough-space-to-display-all-list-items-vrt-1-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-colorblind-Overflow-interaction-vrt-1-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-colorblind-Overflow-interaction-vrt-1-linux.png
index fc6b1e7a19b..763b28c4ee1 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-colorblind-Overflow-interaction-vrt-1-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-colorblind-Overflow-interaction-vrt-1-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-colorblind-Overflow-interaction-vrt-2-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-colorblind-Overflow-interaction-vrt-2-linux.png
index 776554276d7..cb0db479864 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-colorblind-Overflow-interaction-vrt-2-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-colorblind-Overflow-interaction-vrt-2-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-colorblind-Overflow-interaction-vrt-3-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-colorblind-Overflow-interaction-vrt-3-linux.png
index f2c27af01b4..e80f483a588 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-colorblind-Overflow-interaction-vrt-3-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-colorblind-Overflow-interaction-vrt-3-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-colorblind-Overflow-interaction-vrt-4-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-colorblind-Overflow-interaction-vrt-4-linux.png
index 95fb1dd3245..6eadfe96b84 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-colorblind-Overflow-interaction-vrt-4-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-colorblind-Overflow-interaction-vrt-4-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-h-7fa44-t-enough-space-to-display-all-list-items-vrt-2-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-h-7fa44-t-enough-space-to-display-all-list-items-vrt-2-linux.png
index 89bc8e6c810..b9f0daf7aeb 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-h-7fa44-t-enough-space-to-display-all-list-items-vrt-2-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-h-7fa44-t-enough-space-to-display-all-list-items-vrt-2-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-h-9f6e1-t-enough-space-to-display-all-list-items-vrt-1-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-h-9f6e1-t-enough-space-to-display-all-list-items-vrt-1-linux.png
index 38b1fcb25bc..b9f0daf7aeb 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-h-9f6e1-t-enough-space-to-display-all-list-items-vrt-1-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-h-9f6e1-t-enough-space-to-display-all-list-items-vrt-1-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-high-contrast-Overflow-interaction-vrt-1-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-high-contrast-Overflow-interaction-vrt-1-linux.png
index 38b1fcb25bc..b9f0daf7aeb 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-high-contrast-Overflow-interaction-vrt-1-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-high-contrast-Overflow-interaction-vrt-1-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-high-contrast-Overflow-interaction-vrt-2-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-high-contrast-Overflow-interaction-vrt-2-linux.png
index e964544be8b..ffc51e2cd63 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-high-contrast-Overflow-interaction-vrt-2-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-high-contrast-Overflow-interaction-vrt-2-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-high-contrast-Overflow-interaction-vrt-3-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-high-contrast-Overflow-interaction-vrt-3-linux.png
index facf4c48062..f55ece0cefe 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-high-contrast-Overflow-interaction-vrt-3-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-high-contrast-Overflow-interaction-vrt-3-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-high-contrast-Overflow-interaction-vrt-4-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-high-contrast-Overflow-interaction-vrt-4-linux.png
index 7176565d771..9bd36d5a585 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-high-contrast-Overflow-interaction-vrt-4-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-high-contrast-Overflow-interaction-vrt-4-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-t-c1290-t-enough-space-to-display-all-list-items-vrt-1-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-t-c1290-t-enough-space-to-display-all-list-items-vrt-1-linux.png
index fc6b1e7a19b..763b28c4ee1 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-t-c1290-t-enough-space-to-display-all-list-items-vrt-1-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-t-c1290-t-enough-space-to-display-all-list-items-vrt-1-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-t-fd45e-t-enough-space-to-display-all-list-items-vrt-2-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-t-fd45e-t-enough-space-to-display-all-list-items-vrt-2-linux.png
index e88f106526a..763b28c4ee1 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-t-fd45e-t-enough-space-to-display-all-list-items-vrt-2-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-t-fd45e-t-enough-space-to-display-all-list-items-vrt-2-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-tritanopia-Overflow-interaction-vrt-1-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-tritanopia-Overflow-interaction-vrt-1-linux.png
index fc6b1e7a19b..763b28c4ee1 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-tritanopia-Overflow-interaction-vrt-1-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-tritanopia-Overflow-interaction-vrt-1-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-tritanopia-Overflow-interaction-vrt-2-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-tritanopia-Overflow-interaction-vrt-2-linux.png
index 776554276d7..cb0db479864 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-tritanopia-Overflow-interaction-vrt-2-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-tritanopia-Overflow-interaction-vrt-2-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-tritanopia-Overflow-interaction-vrt-3-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-tritanopia-Overflow-interaction-vrt-3-linux.png
index 801591f2d90..e80f483a588 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-tritanopia-Overflow-interaction-vrt-3-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-tritanopia-Overflow-interaction-vrt-3-linux.png differ
diff --git a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-tritanopia-Overflow-interaction-vrt-4-linux.png b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-tritanopia-Overflow-interaction-vrt-4-linux.png
index e4eca459c79..0c4d3b1f73c 100644
Binary files a/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-tritanopia-Overflow-interaction-vrt-4-linux.png and b/.playwright/snapshots/components/UnderlineNav.test.ts-snapshots/UnderlineNav-UnderlineNav-Interactions-light-tritanopia-Overflow-interaction-vrt-4-linux.png differ
diff --git a/.prettierignore b/.prettierignore
index bcb3ba68f18..a7d223c884b 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -1,4 +1,5 @@
.changeset
+.agents
packages/react/CHANGELOG.md
dist
storybook-static
diff --git a/.stylelintignore b/.stylelintignore
index 7beb510200b..a251d23afb5 100644
--- a/.stylelintignore
+++ b/.stylelintignore
@@ -1,4 +1,5 @@
docs/public/**/*.css
+.agents/**/*.css
**/dist/**/*.css
**/.next/**/*.css
**/storybook-static/**
diff --git a/contributor-docs/CONTRIBUTING.md b/contributor-docs/CONTRIBUTING.md
index d3b2bec8619..b394879b839 100644
--- a/contributor-docs/CONTRIBUTING.md
+++ b/contributor-docs/CONTRIBUTING.md
@@ -49,7 +49,7 @@ As this is a public repo, please be careful not to include details or screenshot
We primarily use [Storybook](https://storybook.js.org/) as a workspace to develop new components or make changes to existing components.
-Before running storybook locally, make sure to install [Node.js](https://nodejs.org/en/) v20 (we recommend using [nvm](https://github.com/nvm-sh/nvm)). Next, run the following command to setup your environment:
+Before running storybook locally, make sure to install the [Node.js](https://nodejs.org/en/) version specified in `.nvmrc` (we recommend using [nvm](https://github.com/nvm-sh/nvm)). Next, run the following command to setup your environment:
```sh
npm run setup
diff --git a/contributor-docs/testing.md b/contributor-docs/testing.md
index c19303a6979..a31c734a871 100644
--- a/contributor-docs/testing.md
+++ b/contributor-docs/testing.md
@@ -199,8 +199,6 @@ All of the tests run on our continuous integration workflows.
Unit tests are included in the `test` job, Playwright tests are included in the `avt` and `vrt` jobs of the `CI` workflow.
-Storybook tests are ran in `Storybook Tests` workflow.
-
The results of the Playwright test run are uploaded at the end of the job and are available
to download and view locally.
diff --git a/e2e/components/SelectPanel.test.ts b/e2e/components/SelectPanel.test.ts
index da50e58b652..5dc3f29fc36 100644
--- a/e2e/components/SelectPanel.test.ts
+++ b/e2e/components/SelectPanel.test.ts
@@ -58,7 +58,7 @@ test.describe('SelectPanel', () => {
await page.emulateMedia({reducedMotion: 'reduce'})
// Open select panel
- const isPanelOpen = await page.isVisible('[role="listbox"]')
+ const isPanelOpen = await page.locator('[role="listbox"]').isVisible()
if (!isPanelOpen) {
await page.keyboard.press('Tab')
await page.keyboard.press('Enter')
@@ -88,7 +88,7 @@ test.describe('SelectPanel', () => {
})
// Open select panel
- const isPanelOpen = await page.isVisible('[role="listbox"]')
+ const isPanelOpen = await page.locator('[role="listbox"]').isVisible()
if (!isPanelOpen) {
await page.keyboard.press('Tab')
await page.keyboard.press('Enter')
@@ -126,7 +126,7 @@ test.describe('SelectPanel', () => {
await page.setViewportSize({width: 767, height: 767})
// Open select panel
- const isPanelOpen = await page.isVisible('[role="listbox"]')
+ const isPanelOpen = await page.locator('[role="listbox"]').isVisible()
if (!isPanelOpen) {
await page.keyboard.press('Tab')
await page.keyboard.press('Enter')
@@ -143,7 +143,7 @@ test.describe('SelectPanel', () => {
})
// Open select panel
- const isPanelOpen = await page.isVisible('[role="listbox"]')
+ const isPanelOpen = await page.locator('[role="listbox"]').isVisible()
if (!isPanelOpen) {
await page.keyboard.press('Tab')
await page.keyboard.press('Tab')
diff --git a/e2e/components/UnderlineNav.test.ts b/e2e/components/UnderlineNav.test.ts
index dc8546fa4cc..7f41e868ae2 100644
--- a/e2e/components/UnderlineNav.test.ts
+++ b/e2e/components/UnderlineNav.test.ts
@@ -199,19 +199,19 @@ test.describe('UnderlineNav', () => {
})
// Default state
- // expect(await page.screenshot()).toMatchSnapshot()
+ expect(await page.screenshot()).toMatchSnapshot()
await page.setViewportSize({width: viewports['primer.breakpoint.sm'], height: 768})
- await page.locator('button', {hasText: 'More Repository Items'}).waitFor()
+ await page.locator('button', {hasText: 'More items'}).waitFor()
// Resize
- // expect(await page.screenshot()).toMatchSnapshot()
+ expect(await page.screenshot()).toMatchSnapshot()
- await page.getByRole('button', {name: 'More Repository Items'}).click()
- // expect(await page.screenshot()).toMatchSnapshot()
+ await page.getByRole('button', {name: 'More items'}).click()
+ expect(await page.screenshot({animations: 'disabled'})).toMatchSnapshot()
- await page.getByRole('link', {name: 'Settings (10)'}).click()
- // expect(await page.screenshot()).toMatchSnapshot()
+ await page.getByRole('menuitem', {name: 'Settings (10)'}).click()
+ expect(await page.screenshot()).toMatchSnapshot()
})
test('Hide icons when there is not enough space to display all list items @vrt', async ({page}) => {
@@ -223,61 +223,13 @@ test.describe('UnderlineNav', () => {
})
// Default State
- // expect(await page.screenshot()).toMatchSnapshot()
+ expect(await page.screenshot()).toMatchSnapshot()
// Resize
await page.setViewportSize({width: viewports['primer.breakpoint.md'], height: 768})
// Icons should be hidden
- // expect(await page.screenshot()).toMatchSnapshot()
- })
-
- test('Keep selected item visible @vrt', async ({page}) => {
- await visit(page, {
- id: 'components-underlinenav-features--overflow-template',
- globals: {
- colorScheme: theme,
- },
- })
- await page.setViewportSize({width: viewports['primer.breakpoint.sm'], height: 768})
-
- await page.locator('button', {hasText: 'More Repository Items'}).waitFor()
- await page.getByRole('button', {name: 'More Repository Items'}).click()
- await page.getByRole('link', {name: 'Settings (10)'}).click()
-
- // State after selecting the second last item
- // expect(await page.screenshot()).toMatchSnapshot()
-
- // Resize
- await page.setViewportSize({
- width: 1100,
- height: 480,
- })
- await page.locator('button', {hasText: 'More Repository Items'}).waitFor({
- state: 'hidden',
- })
-
- // Current state
- // expect(await page.screenshot()).toMatchSnapshot()
-
- // Resize
- await page.setViewportSize({
- width: 800,
- height: 480,
- })
- await page.locator('button', {hasText: 'More Repository Items'}).waitFor()
-
- // Current state
- // expect(await page.screenshot()).toMatchSnapshot()
-
- // Resize
- await page.setViewportSize({
- width: 600,
- height: 480,
- })
- await page.locator('button', {hasText: 'More Repository Items'}).waitFor()
- // Current state
- // expect(await page.screenshot()).toMatchSnapshot()
+ expect(await page.screenshot()).toMatchSnapshot()
})
})
}
diff --git a/eslint.config.mjs b/eslint.config.mjs
index ca1c13a5651..9a4c8b725ca 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -34,6 +34,7 @@ const github = githubPlugin.getFlatConfigs()
*/
const config = defineConfig([
globalIgnores([
+ '.agents/**/*',
'**/.cache',
'coverage/**/*',
'docs/public/**/*',
@@ -129,14 +130,11 @@ const config = defineConfig([
},
rules: {
'primer-react/direct-slot-children': 'error',
- 'primer-react/no-system-props': 'error',
'primer-react/a11y-tooltip-interactive-trigger': 'error',
'primer-react/new-color-css-vars': 'error',
'primer-react/a11y-explicit-heading': 'error',
'primer-react/no-deprecated-props': 'error',
'primer-react/a11y-remove-disable-tooltip': 'error',
- 'primer-react/a11y-use-next-tooltip': 'error',
- 'primer-react/no-unnecessary-components': 'error',
'primer-react/prefer-action-list-item-onselect': 'error',
},
},
@@ -194,8 +192,13 @@ const config = defineConfig([
'github/filenames-match-regex': 'off',
'github/no-inner-html': 'off',
'github/role-supports-aria-props': 'off',
- 'no-restricted-syntax': 'off',
- 'primer-react/a11y-use-next-tooltip': 'off',
+ 'no-restricted-syntax': [
+ 'error',
+ {
+ selector: 'ExpressionStatement[directive="use no memo"]',
+ message: 'The "use no memo" directive is not allowed.',
+ },
+ ],
},
},
@@ -359,7 +362,8 @@ const config = defineConfig([
{
files: [
'packages/postcss-preset-primer/**/**.{ts,tsx,mts,mtsx,cjs,js,mjs}',
- 'packages/rollup-plugin-import-css/**/**.{ts,tsx,mts,mtsx,cjs,js,mjs}',
+ 'packages/rolldown-plugin-import-css/**/**.{ts,tsx,mts,mtsx,cjs,js,mjs}',
+ 'packages/rolldown-plugin-preserve-directives/**/**.{ts,tsx,mts,mtsx,cjs,js,mjs}',
],
rules: {
'import/no-nodejs-modules': 'off',
@@ -406,9 +410,7 @@ const config = defineConfig([
// packages/styled-react overrides
{
files: ['packages/styled-react/**/*.{ts,tsx}'],
- rules: {
- 'primer-react/no-unnecessary-components': 'off',
- },
+ rules: {},
},
{
files: ['packages/styled-react/**/*.test.{ts,tsx}'],
diff --git a/examples/codesandbox/package.json b/examples/codesandbox/package.json
index f7d9ff16f24..631a77fef73 100644
--- a/examples/codesandbox/package.json
+++ b/examples/codesandbox/package.json
@@ -14,7 +14,7 @@
"react-dom": "^18.3.1"
},
"devDependencies": {
- "@primer/react": "38.29.0",
+ "@primer/react": "38.31.0",
"@primer/styled-react": "1.1.0",
"@types/react": "^18.3.11",
"@types/react-dom": "^18.3.0",
diff --git a/examples/nextjs/package.json b/examples/nextjs/package.json
index 7648da98e29..f5fdbe4f7ad 100644
--- a/examples/nextjs/package.json
+++ b/examples/nextjs/package.json
@@ -10,7 +10,7 @@
"type-check": "tsc --noEmit"
},
"dependencies": {
- "@primer/react": "38.29.0",
+ "@primer/react": "38.31.0",
"@primer/styled-react": "1.1.0",
"next": "^16.1.7",
"react": "^19.2.0",
diff --git a/examples/theming/package.json b/examples/theming/package.json
index fc44db63d80..14ee4de6acb 100644
--- a/examples/theming/package.json
+++ b/examples/theming/package.json
@@ -10,14 +10,12 @@
"type-check": "tsc --noEmit"
},
"dependencies": {
- "@primer/octicons-react": "^19.21.0",
- "@primer/react": "38.29.0",
- "@primer/styled-react": "1.1.0",
+ "@primer/octicons-react": "^19.28.1",
+ "@primer/react": "38.31.0",
"clsx": "^2.1.1",
"next": "^16.1.7",
"react": "^19.2.0",
"react-dom": "^19.2.0",
- "styled-components": "5.x",
"typescript": "^6.0.3"
},
"devDependencies": {
diff --git a/examples/theming/src/app/components/ThemePreference/ThemePreference.tsx b/examples/theming/src/app/components/ThemePreference/ThemePreference.tsx
index 63e8310d0d3..e5c8c6b7fb8 100644
--- a/examples/theming/src/app/components/ThemePreference/ThemePreference.tsx
+++ b/examples/theming/src/app/components/ThemePreference/ThemePreference.tsx
@@ -1,8 +1,7 @@
'use client'
import {SunIcon, MoonIcon} from '@primer/octicons-react'
-import {useTheme} from '@primer/styled-react'
-import {Button} from '@primer/react'
+import {Button, useTheme} from '@primer/react'
import classes from './ThemePreference.module.css'
diff --git a/examples/theming/src/app/layout.tsx b/examples/theming/src/app/layout.tsx
index 3f632308872..c16415fc72d 100644
--- a/examples/theming/src/app/layout.tsx
+++ b/examples/theming/src/app/layout.tsx
@@ -1,7 +1,6 @@
import './global.css'
import {cookies} from 'next/headers'
-import {BaseStyles, ThemeProvider} from '@primer/styled-react'
-import {StyledComponentsRegistry} from './registry'
+import {BaseStyles, ThemeProvider} from '@primer/react'
export const metadata = {
title: 'Next.js',
@@ -24,11 +23,10 @@ export default async function RootLayout({children}: {children: React.ReactNode}
data-dark-theme="dark"
>
-
-
- {children}
-
-
+ {/* Theme attributes are set on so Next.js can hydrate without ThemeProvider adding an extra DOM wrapper. */}
+
+ {children}
+
)
diff --git a/examples/theming/src/app/registry.tsx b/examples/theming/src/app/registry.tsx
deleted file mode 100644
index ce3e54643f6..00000000000
--- a/examples/theming/src/app/registry.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-'use client'
-
-import {useServerInsertedHTML} from 'next/navigation'
-import type React from 'react'
-import {useState} from 'react'
-import {ServerStyleSheet, StyleSheetManager} from 'styled-components'
-
-/**
- * @see https://nextjs.org/docs/app/building-your-application/styling/css-in-js#styled-components
- */
-export function StyledComponentsRegistry({children}: React.PropsWithChildren) {
- // Only create stylesheet once with lazy initial state
- // x-ref: https://reactjs.org/docs/hooks-reference.html#lazy-initial-state
- const [styledComponentsStyleSheet] = useState(() => new ServerStyleSheet())
-
- useServerInsertedHTML(() => {
- const styles = styledComponentsStyleSheet.getStyleElement()
- styledComponentsStyleSheet.instance.clearTag()
- return <>{styles}>
- })
-
- if (typeof window !== 'undefined') return <>{children}>
-
- return {children}
-}
diff --git a/package-lock.json b/package-lock.json
index fcfc29cace9..1859c2b64af 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7,7 +7,7 @@
"name": "primer",
"license": "MIT",
"workspaces": [
- "packages/rollup-plugin-import-css",
+ "packages/rolldown-plugin-import-css",
"packages/react",
"packages/mcp",
"packages/*",
@@ -19,8 +19,8 @@
"@changesets/changelog-github": "0.5.1",
"@changesets/cli": "^2.29.6",
"@eslint-react/eslint-plugin": "^1.52.6",
- "@eslint/compat": "^2.0.2",
- "@eslint/eslintrc": "^3.3.4",
+ "@eslint/compat": "^2.1.0",
+ "@eslint/eslintrc": "^3.3.5",
"@eslint/js": "^10.0.1",
"@github-ui/storybook-addon-performance-panel": "1.1.4",
"@github/axe-github": "0.7.0",
@@ -34,27 +34,27 @@
"@size-limit/preset-big-lib": "11.2.0",
"@types/node": "26.0.0",
"@types/semver": "^7.7.1",
- "@vitest/browser": "^4.1.5",
- "@vitest/browser-playwright": "^4.1.5",
- "@vitest/eslint-plugin": "^1.6.16",
+ "@vitest/browser": "^4.1.9",
+ "@vitest/browser-playwright": "^4.1.9",
+ "@vitest/eslint-plugin": "^1.6.20",
"babel-plugin-react-compiler": "^1.0.0",
"change-case": "^5.4.4",
- "eslint": "^10.0.2",
+ "eslint": "^10.5.0",
"eslint-import-resolver-typescript": "3.7.0",
- "eslint-plugin-clsx": "^0.0.12",
+ "eslint-plugin-clsx": "^0.1.0",
"eslint-plugin-github": "^6.0.0",
"eslint-plugin-jsx-a11y": "^6.10.2",
- "eslint-plugin-mdx": "3.7.0",
- "eslint-plugin-playwright": "^2.8.0",
- "eslint-plugin-prettier": "^5.5.5",
- "eslint-plugin-primer-react": "^8.5.2",
+ "eslint-plugin-mdx": "3.8.1",
+ "eslint-plugin-playwright": "^2.10.4",
+ "eslint-plugin-prettier": "^5.5.6",
+ "eslint-plugin-primer-react": "^9.0.0",
"eslint-plugin-react": "^7.35.5",
"eslint-plugin-react-hooks": "^7.1.1",
- "eslint-plugin-react-refresh": "^0.5.2",
+ "eslint-plugin-react-refresh": "^0.5.3",
"eslint-plugin-react-you-might-not-need-an-effect": "1.0.1",
"eslint-plugin-ssr-friendly": "1.3.0",
- "eslint-plugin-storybook": "^10.4.2",
- "eslint-plugin-testing-library": "^7.16.0",
+ "eslint-plugin-storybook": "^10.4.6",
+ "eslint-plugin-testing-library": "^7.16.2",
"fast-glob": "^3.3.3",
"globals": "^16.2.0",
"markdownlint-cli2": "^0.19.0",
@@ -62,21 +62,18 @@
"prettier": "3.4.2",
"rimraf": "5.0.5",
"size-limit": "11.2.0",
- "storybook": "^10.4.2",
+ "storybook": "^10.4.6",
"stylelint": "17.4.0",
"turbo": "^2.9.18",
"typescript": "^6.0.3",
"typescript-eslint": "^8.59.1",
"vite": "^8.0.16",
- "vitest": "^4.1.5",
+ "vitest": "^4.1.9",
"yargs": "^18.0.0"
},
"engines": {
"node": ">=12",
"npm": ">=7"
- },
- "optionalDependencies": {
- "@rollup/rollup-linux-x64-gnu": "^4.59.0"
}
},
"examples/codesandbox": {
@@ -86,7 +83,7 @@
"react-dom": "^18.3.1"
},
"devDependencies": {
- "@primer/react": "38.28.0",
+ "@primer/react": "38.31.0",
"@primer/styled-react": "1.1.0",
"@types/react": "^18.3.11",
"@types/react-dom": "^18.3.0",
@@ -100,7 +97,7 @@
"name": "example-nextjs",
"version": "0.0.0",
"dependencies": {
- "@primer/react": "38.28.0",
+ "@primer/react": "38.31.0",
"@primer/styled-react": "1.1.0",
"next": "^16.1.7",
"react": "^19.2.0",
@@ -142,14 +139,12 @@
"name": "example-theming",
"version": "0.0.0",
"dependencies": {
- "@primer/octicons-react": "^19.21.0",
- "@primer/react": "38.28.0",
- "@primer/styled-react": "1.1.0",
+ "@primer/octicons-react": "^19.28.1",
+ "@primer/react": "38.31.0",
"clsx": "^2.1.1",
"next": "^16.1.7",
"react": "^19.2.0",
"react-dom": "^19.2.0",
- "styled-components": "5.x",
"typescript": "^6.0.3"
},
"devDependencies": {
@@ -295,6 +290,7 @@
"version": "7.29.0",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
"integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-validator-identifier": "^7.28.5",
@@ -385,6 +381,7 @@
"version": "7.29.0",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.0.tgz",
"integrity": "sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.29.0",
@@ -399,6 +396,7 @@
},
"node_modules/@babel/helper-annotate-as-pure": {
"version": "7.27.3",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/types": "^7.27.3"
@@ -470,53 +468,11 @@
"semver": "bin/semver.js"
}
},
- "node_modules/@babel/helper-create-regexp-features-plugin": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz",
- "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.3",
- "regexpu-core": "^6.3.1",
- "semver": "^6.3.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": {
- "version": "6.3.1",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.6.8",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz",
- "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-compilation-targets": "^7.28.6",
- "@babel/helper-plugin-utils": "^7.28.6",
- "debug": "^4.4.3",
- "lodash.debounce": "^4.0.8",
- "resolve": "^1.22.11"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
- }
- },
"node_modules/@babel/helper-globals": {
"version": "7.29.7",
"resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz",
"integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -540,6 +496,7 @@
"version": "7.28.6",
"resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz",
"integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/traverse": "^7.28.6",
@@ -582,27 +539,10 @@
"version": "7.28.6",
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz",
"integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==",
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-remap-async-to-generator": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz",
- "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.1",
- "@babel/helper-wrap-function": "^7.27.1",
- "@babel/traverse": "^7.27.1"
- },
"engines": {
"node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
}
},
"node_modules/@babel/helper-replace-supers": {
@@ -639,6 +579,7 @@
"version": "7.29.7",
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz",
"integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -648,6 +589,7 @@
"version": "7.29.7",
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz",
"integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=6.9.0"
@@ -663,21 +605,6 @@
"node": ">=6.9.0"
}
},
- "node_modules/@babel/helper-wrap-function": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz",
- "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/template": "^7.28.6",
- "@babel/traverse": "^7.28.6",
- "@babel/types": "^7.28.6"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/@babel/helpers": {
"version": "7.28.6",
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz",
@@ -696,6 +623,7 @@
"version": "7.29.0",
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz",
"integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/types": "^7.29.0"
@@ -707,84 +635,6 @@
"node": ">=6.0.0"
}
},
- "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz",
- "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/traverse": "^7.28.5"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": {
- "version": "7.27.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
- "version": "7.27.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": {
- "version": "7.27.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
- "@babel/plugin-transform-optional-chaining": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.13.0"
- }
- },
- "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz",
- "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6",
- "@babel/traverse": "^7.28.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
- }
- },
"node_modules/@babel/plugin-proposal-class-properties": {
"version": "7.18.6",
"dev": true,
@@ -831,17 +681,6 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-proposal-private-property-in-object": {
- "version": "7.21.0-placeholder-for-preset-env.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
"node_modules/@babel/plugin-syntax-flow": {
"version": "7.24.1",
"dev": true,
@@ -856,40 +695,9 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-syntax-import-assertions": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz",
- "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/plugin-syntax-import-attributes": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz",
- "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
"node_modules/@babel/plugin-syntax-jsx": {
"version": "7.27.1",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.27.1"
@@ -939,27 +747,30 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-syntax-unicode-sets-regex": {
- "version": "7.18.6",
+ "node_modules/@babel/plugin-transform-flow-strip-types": {
+ "version": "7.24.1",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.18.6",
- "@babel/helper-plugin-utils": "^7.18.6"
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/plugin-syntax-flow": "^7.24.1"
},
"engines": {
"node": ">=6.9.0"
},
"peerDependencies": {
- "@babel/core": "^7.0.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-arrow-functions": {
- "version": "7.27.1",
+ "node_modules/@babel/plugin-transform-modules-commonjs": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz",
+ "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-module-transforms": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -968,16 +779,14 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-async-generator-functions": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz",
- "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==",
+ "node_modules/@babel/plugin-transform-react-display-name": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz",
+ "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6",
- "@babel/helper-remap-async-to-generator": "^7.27.1",
- "@babel/traverse": "^7.29.0"
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -986,16 +795,16 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-async-to-generator": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz",
- "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==",
+ "node_modules/@babel/plugin-transform-react-jsx": {
+ "version": "7.27.1",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-imports": "^7.28.6",
- "@babel/helper-plugin-utils": "^7.28.6",
- "@babel/helper-remap-async-to-generator": "^7.27.1"
+ "@babel/helper-annotate-as-pure": "^7.27.1",
+ "@babel/helper-module-imports": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/plugin-syntax-jsx": "^7.27.1",
+ "@babel/types": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1004,12 +813,12 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-block-scoped-functions": {
+ "node_modules/@babel/plugin-transform-react-jsx-development": {
"version": "7.27.1",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/plugin-transform-react-jsx": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1018,14 +827,13 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz",
- "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==",
+ "node_modules/@babel/plugin-transform-react-pure-annotations": {
+ "version": "7.27.1",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6"
+ "@babel/helper-annotate-as-pure": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1034,15 +842,18 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-class-properties": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz",
- "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==",
+ "node_modules/@babel/plugin-transform-typescript": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.5.tgz",
+ "integrity": "sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.28.6",
- "@babel/helper-plugin-utils": "^7.28.6"
+ "@babel/helper-annotate-as-pure": "^7.27.3",
+ "@babel/helper-create-class-features-plugin": "^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"
},
"engines": {
"node": ">=6.9.0"
@@ -1051,36 +862,35 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-class-static-block": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz",
- "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==",
+ "node_modules/@babel/preset-flow": {
+ "version": "7.24.1",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.28.6",
- "@babel/helper-plugin-utils": "^7.28.6"
+ "@babel/helper-plugin-utils": "^7.24.0",
+ "@babel/helper-validator-option": "^7.23.5",
+ "@babel/plugin-transform-flow-strip-types": "^7.24.1"
},
"engines": {
"node": ">=6.9.0"
},
"peerDependencies": {
- "@babel/core": "^7.12.0"
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-classes": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz",
- "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==",
+ "node_modules/@babel/preset-react": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz",
+ "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.3",
- "@babel/helper-compilation-targets": "^7.28.6",
- "@babel/helper-globals": "^7.28.0",
- "@babel/helper-plugin-utils": "^7.28.6",
- "@babel/helper-replace-supers": "^7.28.6",
- "@babel/traverse": "^7.28.6"
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-validator-option": "^7.27.1",
+ "@babel/plugin-transform-react-display-name": "^7.28.0",
+ "@babel/plugin-transform-react-jsx": "^7.27.1",
+ "@babel/plugin-transform-react-jsx-development": "^7.27.1",
+ "@babel/plugin-transform-react-pure-annotations": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -1089,15 +899,18 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-computed-properties": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz",
- "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==",
+ "node_modules/@babel/preset-typescript": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz",
+ "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6",
- "@babel/template": "^7.28.6"
+ "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-validator-option": "^7.27.1",
+ "@babel/plugin-syntax-jsx": "^7.27.1",
+ "@babel/plugin-transform-modules-commonjs": "^7.27.1",
+ "@babel/plugin-transform-typescript": "^7.28.5"
},
"engines": {
"node": ">=6.9.0"
@@ -1106,15 +919,16 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-destructuring": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz",
- "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==",
+ "node_modules/@babel/register": {
+ "version": "7.23.7",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/traverse": "^7.28.5"
+ "clone-deep": "^4.0.1",
+ "find-cache-dir": "^2.0.0",
+ "make-dir": "^2.1.0",
+ "pirates": "^4.0.6",
+ "source-map-support": "^0.5.16"
},
"engines": {
"node": ">=6.9.0"
@@ -1123,1434 +937,1351 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-dotall-regex": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz",
- "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==",
+ "node_modules/@babel/register/node_modules/find-cache-dir": {
+ "version": "2.1.0",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.28.5",
- "@babel/helper-plugin-utils": "^7.28.6"
+ "commondir": "^1.0.1",
+ "make-dir": "^2.0.0",
+ "pkg-dir": "^3.0.0"
},
"engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "node": ">=6"
}
},
- "node_modules/@babel/plugin-transform-duplicate-keys": {
- "version": "7.27.1",
+ "node_modules/@babel/register/node_modules/find-up": {
+ "version": "3.0.0",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "locate-path": "^3.0.0"
},
"engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "node": ">=6"
}
},
- "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz",
- "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==",
+ "node_modules/@babel/register/node_modules/locate-path": {
+ "version": "3.0.0",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.28.5",
- "@babel/helper-plugin-utils": "^7.28.6"
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
},
"engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
+ "node": ">=6"
}
},
- "node_modules/@babel/plugin-transform-dynamic-import": {
- "version": "7.27.1",
+ "node_modules/@babel/register/node_modules/p-locate": {
+ "version": "3.0.0",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "p-limit": "^2.0.0"
},
"engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "node": ">=6"
}
},
- "node_modules/@babel/plugin-transform-explicit-resource-management": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz",
- "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==",
+ "node_modules/@babel/register/node_modules/path-exists": {
+ "version": "3.0.0",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6",
- "@babel/plugin-transform-destructuring": "^7.28.5"
- },
"engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "node": ">=4"
}
},
- "node_modules/@babel/plugin-transform-exponentiation-operator": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz",
- "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==",
+ "node_modules/@babel/register/node_modules/pkg-dir": {
+ "version": "3.0.0",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6"
+ "find-up": "^3.0.0"
},
"engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "node": ">=6"
}
},
- "node_modules/@babel/plugin-transform-export-namespace-from": {
- "version": "7.27.1",
- "dev": true,
+ "node_modules/@babel/runtime": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz",
+ "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==",
"license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
- },
"engines": {
"node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-flow-strip-types": {
- "version": "7.24.1",
+ "node_modules/@babel/template": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz",
+ "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.0",
- "@babel/plugin-syntax-flow": "^7.24.1"
+ "@babel/code-frame": "^7.28.6",
+ "@babel/parser": "^7.28.6",
+ "@babel/types": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-for-of": {
- "version": "7.27.1",
+ "node_modules/@babel/traverse": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz",
+ "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
+ "@babel/code-frame": "^7.29.0",
+ "@babel/generator": "^7.29.0",
+ "@babel/helper-globals": "^7.28.0",
+ "@babel/parser": "^7.29.0",
+ "@babel/template": "^7.28.6",
+ "@babel/types": "^7.29.0",
+ "debug": "^4.3.1"
},
"engines": {
"node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-function-name": {
- "version": "7.27.1",
+ "node_modules/@babel/types": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz",
+ "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-compilation-targets": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/traverse": "^7.27.1"
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5"
},
"engines": {
"node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/plugin-transform-json-strings": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz",
- "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==",
+ "node_modules/@blazediff/core": {
+ "version": "1.9.1",
+ "resolved": "https://registry.npmjs.org/@blazediff/core/-/core-1.9.1.tgz",
+ "integrity": "sha512-ehg3jIkYKulZh+8om/O25vkvSsXXwC+skXmyA87FFx6A/45eqOkZsBltMw/TVteb0mloiGT8oGRTcjRAz66zaA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@cacheable/memory": {
+ "version": "2.0.8",
+ "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.0.8.tgz",
+ "integrity": "sha512-FvEb29x5wVwu/Kf93IWwsOOEuhHh6dYCJF3vcKLzXc0KXIW181AOzv6ceT4ZpBHDvAfG60eqb+ekmrnLHIy+jw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@cacheable/utils": "^2.4.0",
+ "@keyv/bigmap": "^1.3.1",
+ "hookified": "^1.15.1",
+ "keyv": "^5.6.0"
}
},
- "node_modules/@babel/plugin-transform-literals": {
- "version": "7.27.1",
+ "node_modules/@cacheable/memory/node_modules/keyv": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz",
+ "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@keyv/serialize": "^1.1.1"
}
},
- "node_modules/@babel/plugin-transform-logical-assignment-operators": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz",
- "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==",
+ "node_modules/@cacheable/utils": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.4.0.tgz",
+ "integrity": "sha512-PeMMsqjVq+bF0WBsxFBxr/WozBJiZKY0rUojuaCoIaKnEl3Ju1wfEwS+SV1DU/cSe8fqHIPiYJFif8T3MVt4cQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "hashery": "^1.5.0",
+ "keyv": "^5.6.0"
}
},
- "node_modules/@babel/plugin-transform-member-expression-literals": {
- "version": "7.27.1",
+ "node_modules/@cacheable/utils/node_modules/keyv": {
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz",
+ "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@keyv/serialize": "^1.1.1"
}
},
- "node_modules/@babel/plugin-transform-modules-amd": {
- "version": "7.27.1",
+ "node_modules/@changesets/apply-release-plan": {
+ "version": "7.0.12",
+ "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.0.12.tgz",
+ "integrity": "sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@changesets/config": "^3.1.1",
+ "@changesets/get-version-range-type": "^0.4.0",
+ "@changesets/git": "^3.0.4",
+ "@changesets/should-skip-package": "^0.1.2",
+ "@changesets/types": "^6.1.0",
+ "@manypkg/get-packages": "^1.1.3",
+ "detect-indent": "^6.0.0",
+ "fs-extra": "^7.0.1",
+ "lodash.startcase": "^4.4.0",
+ "outdent": "^0.5.0",
+ "prettier": "^2.7.1",
+ "resolve-from": "^5.0.0",
+ "semver": "^7.5.3"
}
},
- "node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz",
- "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==",
+ "node_modules/@changesets/apply-release-plan/node_modules/prettier": {
+ "version": "2.8.8",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@babel/helper-module-transforms": "^7.28.6",
- "@babel/helper-plugin-utils": "^7.28.6"
+ "bin": {
+ "prettier": "bin-prettier.js"
},
"engines": {
- "node": ">=6.9.0"
+ "node": ">=10.13.0"
},
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
}
},
- "node_modules/@babel/plugin-transform-modules-systemjs": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz",
- "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==",
+ "node_modules/@changesets/assemble-release-plan": {
+ "version": "6.0.9",
+ "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.9.tgz",
+ "integrity": "sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.28.6",
- "@babel/helper-plugin-utils": "^7.28.6",
- "@babel/helper-validator-identifier": "^7.28.5",
- "@babel/traverse": "^7.29.0"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@changesets/errors": "^0.2.0",
+ "@changesets/get-dependents-graph": "^2.1.3",
+ "@changesets/should-skip-package": "^0.1.2",
+ "@changesets/types": "^6.1.0",
+ "@manypkg/get-packages": "^1.1.3",
+ "semver": "^7.5.3"
}
},
- "node_modules/@babel/plugin-transform-modules-umd": {
- "version": "7.27.1",
+ "node_modules/@changesets/changelog-git": {
+ "version": "0.2.1",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@changesets/types": "^6.1.0"
}
},
- "node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz",
- "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==",
+ "node_modules/@changesets/changelog-github": {
+ "version": "0.5.1",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.28.5",
- "@babel/helper-plugin-utils": "^7.28.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0"
+ "@changesets/get-github-info": "^0.6.0",
+ "@changesets/types": "^6.1.0",
+ "dotenv": "^8.1.0"
}
},
- "node_modules/@babel/plugin-transform-new-target": {
- "version": "7.27.1",
+ "node_modules/@changesets/cli": {
+ "version": "2.29.6",
+ "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.29.6.tgz",
+ "integrity": "sha512-6qCcVsIG1KQLhpQ5zE8N0PckIx4+9QlHK3z6/lwKnw7Tir71Bjw8BeOZaxA/4Jt00pcgCnCSWZnyuZf5Il05QQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
+ "@changesets/apply-release-plan": "^7.0.12",
+ "@changesets/assemble-release-plan": "^6.0.9",
+ "@changesets/changelog-git": "^0.2.1",
+ "@changesets/config": "^3.1.1",
+ "@changesets/errors": "^0.2.0",
+ "@changesets/get-dependents-graph": "^2.1.3",
+ "@changesets/get-release-plan": "^4.0.13",
+ "@changesets/git": "^3.0.4",
+ "@changesets/logger": "^0.1.1",
+ "@changesets/pre": "^2.0.2",
+ "@changesets/read": "^0.6.5",
+ "@changesets/should-skip-package": "^0.1.2",
+ "@changesets/types": "^6.1.0",
+ "@changesets/write": "^0.4.0",
+ "@inquirer/external-editor": "^1.0.0",
+ "@manypkg/get-packages": "^1.1.3",
+ "ansi-colors": "^4.1.3",
+ "ci-info": "^3.7.0",
+ "enquirer": "^2.4.1",
+ "fs-extra": "^7.0.1",
+ "mri": "^1.2.0",
+ "p-limit": "^2.2.0",
+ "package-manager-detector": "^0.2.0",
+ "picocolors": "^1.1.0",
+ "resolve-from": "^5.0.0",
+ "semver": "^7.5.3",
+ "spawndamnit": "^3.0.1",
+ "term-size": "^2.1.0"
},
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "bin": {
+ "changeset": "bin.js"
}
},
- "node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz",
- "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==",
+ "node_modules/@changesets/config": {
+ "version": "3.1.1",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@changesets/errors": "^0.2.0",
+ "@changesets/get-dependents-graph": "^2.1.3",
+ "@changesets/logger": "^0.1.1",
+ "@changesets/types": "^6.1.0",
+ "@manypkg/get-packages": "^1.1.3",
+ "fs-extra": "^7.0.1",
+ "micromatch": "^4.0.8"
}
},
- "node_modules/@babel/plugin-transform-numeric-separator": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz",
- "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==",
+ "node_modules/@changesets/errors": {
+ "version": "0.2.0",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "extendable-error": "^0.1.5"
}
},
- "node_modules/@babel/plugin-transform-object-rest-spread": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz",
- "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==",
+ "node_modules/@changesets/get-dependents-graph": {
+ "version": "2.1.3",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-compilation-targets": "^7.28.6",
- "@babel/helper-plugin-utils": "^7.28.6",
- "@babel/plugin-transform-destructuring": "^7.28.5",
- "@babel/plugin-transform-parameters": "^7.27.7",
- "@babel/traverse": "^7.28.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@changesets/types": "^6.1.0",
+ "@manypkg/get-packages": "^1.1.3",
+ "picocolors": "^1.1.0",
+ "semver": "^7.5.3"
}
},
- "node_modules/@babel/plugin-transform-object-super": {
- "version": "7.27.1",
+ "node_modules/@changesets/get-github-info": {
+ "version": "0.6.0",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-replace-supers": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "dataloader": "^1.4.0",
+ "node-fetch": "^2.5.0"
}
},
- "node_modules/@babel/plugin-transform-optional-catch-binding": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz",
- "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==",
+ "node_modules/@changesets/get-release-plan": {
+ "version": "4.0.13",
+ "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-4.0.13.tgz",
+ "integrity": "sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@changesets/assemble-release-plan": "^6.0.9",
+ "@changesets/config": "^3.1.1",
+ "@changesets/pre": "^2.0.2",
+ "@changesets/read": "^0.6.5",
+ "@changesets/types": "^6.1.0",
+ "@manypkg/get-packages": "^1.1.3"
}
},
- "node_modules/@babel/plugin-transform-optional-chaining": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz",
- "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==",
+ "node_modules/@changesets/get-version-range-type": {
+ "version": "0.4.0",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@changesets/git": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@changesets/git/-/git-3.0.4.tgz",
+ "integrity": "sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@changesets/errors": "^0.2.0",
+ "@manypkg/get-packages": "^1.1.3",
+ "is-subdir": "^1.1.1",
+ "micromatch": "^4.0.8",
+ "spawndamnit": "^3.0.1"
}
},
- "node_modules/@babel/plugin-transform-parameters": {
- "version": "7.27.7",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz",
- "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==",
+ "node_modules/@changesets/logger": {
+ "version": "0.1.1",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "picocolors": "^1.1.0"
}
},
- "node_modules/@babel/plugin-transform-private-methods": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz",
- "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==",
+ "node_modules/@changesets/parse": {
+ "version": "0.4.1",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.28.6",
- "@babel/helper-plugin-utils": "^7.28.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@changesets/types": "^6.1.0",
+ "js-yaml": "^3.13.1"
}
},
- "node_modules/@babel/plugin-transform-private-property-in-object": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz",
- "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==",
+ "node_modules/@changesets/pre": {
+ "version": "2.0.2",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.3",
- "@babel/helper-create-class-features-plugin": "^7.28.6",
- "@babel/helper-plugin-utils": "^7.28.6"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@changesets/errors": "^0.2.0",
+ "@changesets/types": "^6.1.0",
+ "@manypkg/get-packages": "^1.1.3",
+ "fs-extra": "^7.0.1"
}
},
- "node_modules/@babel/plugin-transform-property-literals": {
- "version": "7.27.1",
+ "node_modules/@changesets/read": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/@changesets/read/-/read-0.6.5.tgz",
+ "integrity": "sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@changesets/git": "^3.0.4",
+ "@changesets/logger": "^0.1.1",
+ "@changesets/parse": "^0.4.1",
+ "@changesets/types": "^6.1.0",
+ "fs-extra": "^7.0.1",
+ "p-filter": "^2.1.0",
+ "picocolors": "^1.1.0"
}
},
- "node_modules/@babel/plugin-transform-react-display-name": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.28.0.tgz",
- "integrity": "sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==",
+ "node_modules/@changesets/should-skip-package": {
+ "version": "0.1.2",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@changesets/types": "^6.1.0",
+ "@manypkg/get-packages": "^1.1.3"
}
},
- "node_modules/@babel/plugin-transform-react-jsx": {
- "version": "7.27.1",
+ "node_modules/@changesets/types": {
+ "version": "6.1.0",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@changesets/write": {
+ "version": "0.4.0",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.1",
- "@babel/helper-module-imports": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/plugin-syntax-jsx": "^7.27.1",
- "@babel/types": "^7.27.1"
+ "@changesets/types": "^6.1.0",
+ "fs-extra": "^7.0.1",
+ "human-id": "^4.1.1",
+ "prettier": "^2.7.1"
+ }
+ },
+ "node_modules/@changesets/write/node_modules/prettier": {
+ "version": "2.8.8",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "prettier": "bin-prettier.js"
},
"engines": {
- "node": ">=6.9.0"
+ "node": ">=10.13.0"
},
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "funding": {
+ "url": "https://github.com/prettier/prettier?sponsor=1"
}
},
- "node_modules/@babel/plugin-transform-react-jsx-development": {
- "version": "7.27.1",
+ "node_modules/@cspotcode/source-map-support": {
+ "version": "0.8.1",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/plugin-transform-react-jsx": "^7.27.1"
+ "@jridgewell/trace-mapping": "0.3.9"
},
"engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "node": ">=12"
}
},
- "node_modules/@babel/plugin-transform-react-pure-annotations": {
- "version": "7.27.1",
+ "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.9",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
- },
- "engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@jridgewell/resolve-uri": "^3.0.3",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
}
},
- "node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz",
- "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==",
- "dev": true,
+ "node_modules/@csstools/cascade-layer-name-parser": {
+ "version": "2.0.4",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
"license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6"
- },
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3"
}
},
- "node_modules/@babel/plugin-transform-regexp-modifiers": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz",
- "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==",
- "dev": true,
+ "node_modules/@csstools/color-helpers": {
+ "version": "5.0.2",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@csstools/css-calc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz",
+ "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
"license": "MIT",
- "dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.28.5",
- "@babel/helper-plugin-utils": "^7.28.6"
- },
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
},
"peerDependencies": {
- "@babel/core": "^7.0.0"
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
}
},
- "node_modules/@babel/plugin-transform-reserved-words": {
- "version": "7.27.1",
- "dev": true,
+ "node_modules/@csstools/css-color-parser": {
+ "version": "3.0.9",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@csstools/color-helpers": "^5.0.2",
+ "@csstools/css-calc": "^2.1.3"
},
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3"
}
},
- "node_modules/@babel/plugin-transform-runtime": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz",
- "integrity": "sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==",
- "dev": true,
+ "node_modules/@csstools/css-parser-algorithms": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz",
+ "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
"license": "MIT",
- "dependencies": {
- "@babel/helper-module-imports": "^7.28.6",
- "@babel/helper-plugin-utils": "^7.28.6",
- "babel-plugin-polyfill-corejs2": "^0.4.14",
- "babel-plugin-polyfill-corejs3": "^0.13.0",
- "babel-plugin-polyfill-regenerator": "^0.6.5",
- "semver": "^6.3.1"
- },
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@csstools/css-tokenizer": "^3.0.4"
}
},
- "node_modules/@babel/plugin-transform-runtime/node_modules/semver": {
- "version": "6.3.1",
+ "node_modules/@csstools/css-syntax-patches-for-csstree": {
+ "version": "1.0.28",
+ "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.28.tgz",
+ "integrity": "sha512-1NRf1CUBjnr3K7hu8BLxjQrKCxEe8FP/xmPTenAxCRZWVLbmGotkFvG9mfNpjA6k7Bw1bw4BilZq9cu19RA5pg==",
"dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0"
},
- "node_modules/@babel/plugin-transform-shorthand-properties": {
- "version": "7.27.1",
- "dev": true,
+ "node_modules/@csstools/css-tokenizer": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz",
+ "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
"license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
- },
"engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "node": ">=18"
}
},
- "node_modules/@babel/plugin-transform-spread": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz",
- "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==",
- "dev": true,
+ "node_modules/@csstools/media-query-list-parser": {
+ "version": "4.0.3",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
"license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.28.6",
- "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
- },
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
}
},
- "node_modules/@babel/plugin-transform-sticky-regex": {
- "version": "7.27.1",
- "dev": true,
- "license": "MIT",
+ "node_modules/@csstools/postcss-cascade-layers": {
+ "version": "5.0.1",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@csstools/selector-specificity": "^5.0.0",
+ "postcss-selector-parser": "^7.0.0"
},
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "postcss": "^8.4"
}
},
- "node_modules/@babel/plugin-transform-template-literals": {
- "version": "7.27.1",
- "dev": true,
+ "node_modules/@csstools/postcss-cascade-layers/node_modules/postcss-selector-parser": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
},
"engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "node": ">=4"
}
},
- "node_modules/@babel/plugin-transform-typeof-symbol": {
- "version": "7.27.1",
- "dev": true,
- "license": "MIT",
+ "node_modules/@csstools/postcss-color-function": {
+ "version": "4.0.7",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@csstools/css-color-parser": "^3.0.7",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/utilities": "^2.0.0"
},
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "postcss": "^8.4"
}
},
- "node_modules/@babel/plugin-transform-typescript": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.5.tgz",
- "integrity": "sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==",
- "dev": true,
- "license": "MIT",
+ "node_modules/@csstools/postcss-color-mix-function": {
+ "version": "3.0.7",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.3",
- "@babel/helper-create-class-features-plugin": "^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"
+ "@csstools/css-color-parser": "^3.0.7",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/utilities": "^2.0.0"
},
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "postcss": "^8.4"
}
},
- "node_modules/@babel/plugin-transform-unicode-escapes": {
- "version": "7.27.1",
- "dev": true,
- "license": "MIT",
+ "node_modules/@csstools/postcss-content-alt-text": {
+ "version": "2.0.4",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/utilities": "^2.0.0"
},
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "postcss": "^8.4"
}
},
- "node_modules/@babel/plugin-transform-unicode-property-regex": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz",
- "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==",
- "dev": true,
- "license": "MIT",
+ "node_modules/@csstools/postcss-exponential-functions": {
+ "version": "2.0.6",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.28.5",
- "@babel/helper-plugin-utils": "^7.28.6"
+ "@csstools/css-calc": "^2.1.1",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3"
},
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "postcss": "^8.4"
}
},
- "node_modules/@babel/plugin-transform-unicode-regex": {
- "version": "7.27.1",
- "dev": true,
- "license": "MIT",
+ "node_modules/@csstools/postcss-font-format-keywords": {
+ "version": "4.0.0",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@csstools/utilities": "^2.0.0",
+ "postcss-value-parser": "^4.2.0"
},
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "postcss": "^8.4"
}
},
- "node_modules/@babel/plugin-transform-unicode-sets-regex": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz",
- "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==",
- "dev": true,
- "license": "MIT",
+ "node_modules/@csstools/postcss-gamut-mapping": {
+ "version": "2.0.7",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.28.5",
- "@babel/helper-plugin-utils": "^7.28.6"
+ "@csstools/css-color-parser": "^3.0.7",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3"
},
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
},
"peerDependencies": {
- "@babel/core": "^7.0.0"
+ "postcss": "^8.4"
}
},
- "node_modules/@babel/preset-env": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.0.tgz",
- "integrity": "sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.29.0",
- "@babel/helper-compilation-targets": "^7.28.6",
- "@babel/helper-plugin-utils": "^7.28.6",
- "@babel/helper-validator-option": "^7.27.1",
- "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5",
- "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1",
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1",
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1",
- "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6",
- "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
- "@babel/plugin-syntax-import-assertions": "^7.28.6",
- "@babel/plugin-syntax-import-attributes": "^7.28.6",
- "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
- "@babel/plugin-transform-arrow-functions": "^7.27.1",
- "@babel/plugin-transform-async-generator-functions": "^7.29.0",
- "@babel/plugin-transform-async-to-generator": "^7.28.6",
- "@babel/plugin-transform-block-scoped-functions": "^7.27.1",
- "@babel/plugin-transform-block-scoping": "^7.28.6",
- "@babel/plugin-transform-class-properties": "^7.28.6",
- "@babel/plugin-transform-class-static-block": "^7.28.6",
- "@babel/plugin-transform-classes": "^7.28.6",
- "@babel/plugin-transform-computed-properties": "^7.28.6",
- "@babel/plugin-transform-destructuring": "^7.28.5",
- "@babel/plugin-transform-dotall-regex": "^7.28.6",
- "@babel/plugin-transform-duplicate-keys": "^7.27.1",
- "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0",
- "@babel/plugin-transform-dynamic-import": "^7.27.1",
- "@babel/plugin-transform-explicit-resource-management": "^7.28.6",
- "@babel/plugin-transform-exponentiation-operator": "^7.28.6",
- "@babel/plugin-transform-export-namespace-from": "^7.27.1",
- "@babel/plugin-transform-for-of": "^7.27.1",
- "@babel/plugin-transform-function-name": "^7.27.1",
- "@babel/plugin-transform-json-strings": "^7.28.6",
- "@babel/plugin-transform-literals": "^7.27.1",
- "@babel/plugin-transform-logical-assignment-operators": "^7.28.6",
- "@babel/plugin-transform-member-expression-literals": "^7.27.1",
- "@babel/plugin-transform-modules-amd": "^7.27.1",
- "@babel/plugin-transform-modules-commonjs": "^7.28.6",
- "@babel/plugin-transform-modules-systemjs": "^7.29.0",
- "@babel/plugin-transform-modules-umd": "^7.27.1",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0",
- "@babel/plugin-transform-new-target": "^7.27.1",
- "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6",
- "@babel/plugin-transform-numeric-separator": "^7.28.6",
- "@babel/plugin-transform-object-rest-spread": "^7.28.6",
- "@babel/plugin-transform-object-super": "^7.27.1",
- "@babel/plugin-transform-optional-catch-binding": "^7.28.6",
- "@babel/plugin-transform-optional-chaining": "^7.28.6",
- "@babel/plugin-transform-parameters": "^7.27.7",
- "@babel/plugin-transform-private-methods": "^7.28.6",
- "@babel/plugin-transform-private-property-in-object": "^7.28.6",
- "@babel/plugin-transform-property-literals": "^7.27.1",
- "@babel/plugin-transform-regenerator": "^7.29.0",
- "@babel/plugin-transform-regexp-modifiers": "^7.28.6",
- "@babel/plugin-transform-reserved-words": "^7.27.1",
- "@babel/plugin-transform-shorthand-properties": "^7.27.1",
- "@babel/plugin-transform-spread": "^7.28.6",
- "@babel/plugin-transform-sticky-regex": "^7.27.1",
- "@babel/plugin-transform-template-literals": "^7.27.1",
- "@babel/plugin-transform-typeof-symbol": "^7.27.1",
- "@babel/plugin-transform-unicode-escapes": "^7.27.1",
- "@babel/plugin-transform-unicode-property-regex": "^7.28.6",
- "@babel/plugin-transform-unicode-regex": "^7.27.1",
- "@babel/plugin-transform-unicode-sets-regex": "^7.28.6",
- "@babel/preset-modules": "0.1.6-no-external-plugins",
- "babel-plugin-polyfill-corejs2": "^0.4.15",
- "babel-plugin-polyfill-corejs3": "^0.14.0",
- "babel-plugin-polyfill-regenerator": "^0.6.6",
- "core-js-compat": "^3.48.0",
- "semver": "^6.3.1"
- },
+ "node_modules/@csstools/postcss-global-data": {
+ "version": "2.1.1",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"engines": {
- "node": ">=6.9.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.0.0-0"
- }
- },
- "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.14.2",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz",
- "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.6.8",
- "core-js-compat": "^3.48.0"
+ "node": "^14 || ^16 || >=18"
},
"peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/@babel/preset-env/node_modules/semver": {
- "version": "6.3.1",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
+ "postcss": "^8.4"
}
},
- "node_modules/@babel/preset-flow": {
- "version": "7.24.1",
- "dev": true,
- "license": "MIT",
+ "node_modules/@csstools/postcss-gradients-interpolation-method": {
+ "version": "5.0.7",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.24.0",
- "@babel/helper-validator-option": "^7.23.5",
- "@babel/plugin-transform-flow-strip-types": "^7.24.1"
+ "@csstools/css-color-parser": "^3.0.7",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/utilities": "^2.0.0"
},
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "postcss": "^8.4"
}
},
- "node_modules/@babel/preset-modules": {
- "version": "0.1.6-no-external-plugins",
- "dev": true,
- "license": "MIT",
+ "node_modules/@csstools/postcss-hwb-function": {
+ "version": "4.0.7",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.0.0",
- "@babel/types": "^7.4.4",
- "esutils": "^2.0.2"
+ "@csstools/css-color-parser": "^3.0.7",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0"
+ "postcss": "^8.4"
}
},
- "node_modules/@babel/preset-react": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.28.5.tgz",
- "integrity": "sha512-Z3J8vhRq7CeLjdC58jLv4lnZ5RKFUJWqH5emvxmv9Hv3BD1T9R/Im713R4MTKwvFaV74ejZ3sM01LyEKk4ugNQ==",
- "dev": true,
- "license": "MIT",
+ "node_modules/@csstools/postcss-ic-unit": {
+ "version": "4.0.0",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-validator-option": "^7.27.1",
- "@babel/plugin-transform-react-display-name": "^7.28.0",
- "@babel/plugin-transform-react-jsx": "^7.27.1",
- "@babel/plugin-transform-react-jsx-development": "^7.27.1",
- "@babel/plugin-transform-react-pure-annotations": "^7.27.1"
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/utilities": "^2.0.0",
+ "postcss-value-parser": "^4.2.0"
},
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "postcss": "^8.4"
}
},
- "node_modules/@babel/preset-typescript": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz",
- "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-validator-option": "^7.27.1",
- "@babel/plugin-syntax-jsx": "^7.27.1",
- "@babel/plugin-transform-modules-commonjs": "^7.27.1",
- "@babel/plugin-transform-typescript": "^7.28.5"
- },
+ "node_modules/@csstools/postcss-initial": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "postcss": "^8.4"
}
},
- "node_modules/@babel/register": {
- "version": "7.23.7",
- "dev": true,
- "license": "MIT",
+ "node_modules/@csstools/postcss-is-pseudo-class": {
+ "version": "5.0.1",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "clone-deep": "^4.0.1",
- "find-cache-dir": "^2.0.0",
- "make-dir": "^2.1.0",
- "pirates": "^4.0.6",
- "source-map-support": "^0.5.16"
+ "@csstools/selector-specificity": "^5.0.0",
+ "postcss-selector-parser": "^7.0.0"
},
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
},
"peerDependencies": {
- "@babel/core": "^7.0.0-0"
+ "postcss": "^8.4"
}
},
- "node_modules/@babel/register/node_modules/find-cache-dir": {
- "version": "2.1.0",
- "dev": true,
+ "node_modules/@csstools/postcss-is-pseudo-class/node_modules/postcss-selector-parser": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
"dependencies": {
- "commondir": "^1.0.1",
- "make-dir": "^2.0.0",
- "pkg-dir": "^3.0.0"
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
},
"engines": {
- "node": ">=6"
+ "node": ">=4"
}
},
- "node_modules/@babel/register/node_modules/find-up": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
+ "node_modules/@csstools/postcss-light-dark-function": {
+ "version": "2.0.7",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "locate-path": "^3.0.0"
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/utilities": "^2.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
}
},
- "node_modules/@babel/register/node_modules/locate-path": {
+ "node_modules/@csstools/postcss-logical-float-and-clear": {
"version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- },
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"engines": {
- "node": ">=6"
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
}
},
- "node_modules/@babel/register/node_modules/p-locate": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^2.0.0"
- },
+ "node_modules/@csstools/postcss-logical-overflow": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"engines": {
- "node": ">=6"
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
}
},
- "node_modules/@babel/register/node_modules/path-exists": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
+ "node_modules/@csstools/postcss-logical-overscroll-behavior": {
+ "version": "2.0.0",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"engines": {
- "node": ">=4"
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
}
},
- "node_modules/@babel/register/node_modules/pkg-dir": {
+ "node_modules/@csstools/postcss-logical-resize": {
"version": "3.0.0",
- "dev": true,
- "license": "MIT",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "find-up": "^3.0.0"
+ "postcss-value-parser": "^4.2.0"
},
"engines": {
- "node": ">=6"
- }
- },
- "node_modules/@babel/runtime": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz",
- "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==",
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
}
},
- "node_modules/@babel/template": {
- "version": "7.28.6",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz",
- "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
- "license": "MIT",
+ "node_modules/@csstools/postcss-logical-viewport-units": {
+ "version": "3.0.3",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "@babel/code-frame": "^7.28.6",
- "@babel/parser": "^7.28.6",
- "@babel/types": "^7.28.6"
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/utilities": "^2.0.0"
},
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
}
},
- "node_modules/@babel/traverse": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz",
- "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==",
+ "node_modules/@csstools/postcss-media-minmax": {
+ "version": "2.0.6",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.29.0",
- "@babel/generator": "^7.29.0",
- "@babel/helper-globals": "^7.28.0",
- "@babel/parser": "^7.29.0",
- "@babel/template": "^7.28.6",
- "@babel/types": "^7.29.0",
- "debug": "^4.3.1"
+ "@csstools/css-calc": "^2.1.1",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/media-query-list-parser": "^4.0.2"
},
"engines": {
- "node": ">=6.9.0"
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
}
},
- "node_modules/@babel/types": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz",
- "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
- "license": "MIT",
+ "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": {
+ "version": "3.0.4",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "@babel/helper-string-parser": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.28.5"
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/media-query-list-parser": "^4.0.2"
},
"engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@blazediff/core": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/@blazediff/core/-/core-1.9.1.tgz",
- "integrity": "sha512-ehg3jIkYKulZh+8om/O25vkvSsXXwC+skXmyA87FFx6A/45eqOkZsBltMw/TVteb0mloiGT8oGRTcjRAz66zaA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@cacheable/memory": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/@cacheable/memory/-/memory-2.0.8.tgz",
- "integrity": "sha512-FvEb29x5wVwu/Kf93IWwsOOEuhHh6dYCJF3vcKLzXc0KXIW181AOzv6ceT4ZpBHDvAfG60eqb+ekmrnLHIy+jw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@cacheable/utils": "^2.4.0",
- "@keyv/bigmap": "^1.3.1",
- "hookified": "^1.15.1",
- "keyv": "^5.6.0"
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
}
},
- "node_modules/@cacheable/memory/node_modules/keyv": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz",
- "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==",
- "dev": true,
- "license": "MIT",
+ "node_modules/@csstools/postcss-nested-calc": {
+ "version": "4.0.0",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "@keyv/serialize": "^1.1.1"
+ "@csstools/utilities": "^2.0.0",
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
}
},
- "node_modules/@cacheable/utils": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/@cacheable/utils/-/utils-2.4.0.tgz",
- "integrity": "sha512-PeMMsqjVq+bF0WBsxFBxr/WozBJiZKY0rUojuaCoIaKnEl3Ju1wfEwS+SV1DU/cSe8fqHIPiYJFif8T3MVt4cQ==",
- "dev": true,
- "license": "MIT",
+ "node_modules/@csstools/postcss-normalize-display-values": {
+ "version": "4.0.0",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "hashery": "^1.5.0",
- "keyv": "^5.6.0"
+ "postcss-value-parser": "^4.2.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
}
},
- "node_modules/@cacheable/utils/node_modules/keyv": {
- "version": "5.6.0",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.6.0.tgz",
- "integrity": "sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==",
- "dev": true,
- "license": "MIT",
+ "node_modules/@csstools/postcss-oklab-function": {
+ "version": "4.0.7",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "@keyv/serialize": "^1.1.1"
+ "@csstools/css-color-parser": "^3.0.7",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
}
},
- "node_modules/@changesets/apply-release-plan": {
- "version": "7.0.12",
- "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.0.12.tgz",
- "integrity": "sha512-EaET7As5CeuhTzvXTQCRZeBUcisoYPDDcXvgTE/2jmmypKp0RC7LxKj/yzqeh/1qFTZI7oDGFcL1PHRuQuketQ==",
- "dev": true,
- "license": "MIT",
+ "node_modules/@csstools/postcss-progressive-custom-properties": {
+ "version": "4.0.0",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "@changesets/config": "^3.1.1",
- "@changesets/get-version-range-type": "^0.4.0",
- "@changesets/git": "^3.0.4",
- "@changesets/should-skip-package": "^0.1.2",
- "@changesets/types": "^6.1.0",
- "@manypkg/get-packages": "^1.1.3",
- "detect-indent": "^6.0.0",
- "fs-extra": "^7.0.1",
- "lodash.startcase": "^4.4.0",
- "outdent": "^0.5.0",
- "prettier": "^2.7.1",
- "resolve-from": "^5.0.0",
- "semver": "^7.5.3"
- }
- },
- "node_modules/@changesets/apply-release-plan/node_modules/prettier": {
- "version": "2.8.8",
- "dev": true,
- "license": "MIT",
- "bin": {
- "prettier": "bin-prettier.js"
+ "postcss-value-parser": "^4.2.0"
},
"engines": {
- "node": ">=10.13.0"
+ "node": ">=18"
},
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
+ "peerDependencies": {
+ "postcss": "^8.4"
}
},
- "node_modules/@changesets/assemble-release-plan": {
- "version": "6.0.9",
- "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.9.tgz",
- "integrity": "sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==",
- "dev": true,
- "license": "MIT",
+ "node_modules/@csstools/postcss-random-function": {
+ "version": "1.0.2",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "@changesets/errors": "^0.2.0",
- "@changesets/get-dependents-graph": "^2.1.3",
- "@changesets/should-skip-package": "^0.1.2",
- "@changesets/types": "^6.1.0",
- "@manypkg/get-packages": "^1.1.3",
- "semver": "^7.5.3"
+ "@csstools/css-calc": "^2.1.1",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
}
},
- "node_modules/@changesets/changelog-git": {
- "version": "0.2.1",
- "dev": true,
- "license": "MIT",
+ "node_modules/@csstools/postcss-relative-color-syntax": {
+ "version": "3.0.7",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "@changesets/types": "^6.1.0"
+ "@csstools/css-color-parser": "^3.0.7",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "@csstools/postcss-progressive-custom-properties": "^4.0.0",
+ "@csstools/utilities": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4"
}
},
- "node_modules/@changesets/changelog-github": {
- "version": "0.5.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@changesets/get-github-info": "^0.6.0",
- "@changesets/types": "^6.1.0",
- "dotenv": "^8.1.0"
- }
- },
- "node_modules/@changesets/cli": {
- "version": "2.29.6",
- "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.29.6.tgz",
- "integrity": "sha512-6qCcVsIG1KQLhpQ5zE8N0PckIx4+9QlHK3z6/lwKnw7Tir71Bjw8BeOZaxA/4Jt00pcgCnCSWZnyuZf5Il05QQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@changesets/apply-release-plan": "^7.0.12",
- "@changesets/assemble-release-plan": "^6.0.9",
- "@changesets/changelog-git": "^0.2.1",
- "@changesets/config": "^3.1.1",
- "@changesets/errors": "^0.2.0",
- "@changesets/get-dependents-graph": "^2.1.3",
- "@changesets/get-release-plan": "^4.0.13",
- "@changesets/git": "^3.0.4",
- "@changesets/logger": "^0.1.1",
- "@changesets/pre": "^2.0.2",
- "@changesets/read": "^0.6.5",
- "@changesets/should-skip-package": "^0.1.2",
- "@changesets/types": "^6.1.0",
- "@changesets/write": "^0.4.0",
- "@inquirer/external-editor": "^1.0.0",
- "@manypkg/get-packages": "^1.1.3",
- "ansi-colors": "^4.1.3",
- "ci-info": "^3.7.0",
- "enquirer": "^2.4.1",
- "fs-extra": "^7.0.1",
- "mri": "^1.2.0",
- "p-limit": "^2.2.0",
- "package-manager-detector": "^0.2.0",
- "picocolors": "^1.1.0",
- "resolve-from": "^5.0.0",
- "semver": "^7.5.3",
- "spawndamnit": "^3.0.1",
- "term-size": "^2.1.0"
- },
- "bin": {
- "changeset": "bin.js"
- }
- },
- "node_modules/@changesets/config": {
- "version": "3.1.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@changesets/errors": "^0.2.0",
- "@changesets/get-dependents-graph": "^2.1.3",
- "@changesets/logger": "^0.1.1",
- "@changesets/types": "^6.1.0",
- "@manypkg/get-packages": "^1.1.3",
- "fs-extra": "^7.0.1",
- "micromatch": "^4.0.8"
- }
- },
- "node_modules/@changesets/errors": {
- "version": "0.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "extendable-error": "^0.1.5"
- }
- },
- "node_modules/@changesets/get-dependents-graph": {
- "version": "2.1.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@changesets/types": "^6.1.0",
- "@manypkg/get-packages": "^1.1.3",
- "picocolors": "^1.1.0",
- "semver": "^7.5.3"
- }
- },
- "node_modules/@changesets/get-github-info": {
- "version": "0.6.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "dataloader": "^1.4.0",
- "node-fetch": "^2.5.0"
- }
- },
- "node_modules/@changesets/get-release-plan": {
- "version": "4.0.13",
- "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-4.0.13.tgz",
- "integrity": "sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@changesets/assemble-release-plan": "^6.0.9",
- "@changesets/config": "^3.1.1",
- "@changesets/pre": "^2.0.2",
- "@changesets/read": "^0.6.5",
- "@changesets/types": "^6.1.0",
- "@manypkg/get-packages": "^1.1.3"
- }
- },
- "node_modules/@changesets/get-version-range-type": {
- "version": "0.4.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@changesets/git": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@changesets/git/-/git-3.0.4.tgz",
- "integrity": "sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@changesets/errors": "^0.2.0",
- "@manypkg/get-packages": "^1.1.3",
- "is-subdir": "^1.1.1",
- "micromatch": "^4.0.8",
- "spawndamnit": "^3.0.1"
- }
- },
- "node_modules/@changesets/logger": {
- "version": "0.1.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "picocolors": "^1.1.0"
- }
- },
- "node_modules/@changesets/parse": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@changesets/types": "^6.1.0",
- "js-yaml": "^3.13.1"
- }
- },
- "node_modules/@changesets/pre": {
- "version": "2.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@changesets/errors": "^0.2.0",
- "@changesets/types": "^6.1.0",
- "@manypkg/get-packages": "^1.1.3",
- "fs-extra": "^7.0.1"
- }
- },
- "node_modules/@changesets/read": {
- "version": "0.6.5",
- "resolved": "https://registry.npmjs.org/@changesets/read/-/read-0.6.5.tgz",
- "integrity": "sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@changesets/git": "^3.0.4",
- "@changesets/logger": "^0.1.1",
- "@changesets/parse": "^0.4.1",
- "@changesets/types": "^6.1.0",
- "fs-extra": "^7.0.1",
- "p-filter": "^2.1.0",
- "picocolors": "^1.1.0"
- }
- },
- "node_modules/@changesets/should-skip-package": {
- "version": "0.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@changesets/types": "^6.1.0",
- "@manypkg/get-packages": "^1.1.3"
- }
- },
- "node_modules/@changesets/types": {
- "version": "6.1.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@changesets/write": {
- "version": "0.4.0",
- "dev": true,
- "license": "MIT",
+ "node_modules/@csstools/postcss-scope-pseudo-class": {
+ "version": "4.0.1",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"dependencies": {
- "@changesets/types": "^6.1.0",
- "fs-extra": "^7.0.1",
- "human-id": "^4.1.1",
- "prettier": "^2.7.1"
- }
- },
- "node_modules/@changesets/write/node_modules/prettier": {
- "version": "2.8.8",
- "dev": true,
- "license": "MIT",
- "bin": {
- "prettier": "bin-prettier.js"
+ "postcss-selector-parser": "^7.0.0"
},
"engines": {
- "node": ">=10.13.0"
+ "node": ">=18"
},
- "funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
+ "peerDependencies": {
+ "postcss": "^8.4"
}
},
- "node_modules/@cspotcode/source-map-support": {
- "version": "0.8.1",
- "dev": true,
+ "node_modules/@csstools/postcss-scope-pseudo-class/node_modules/postcss-selector-parser": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
"dependencies": {
- "@jridgewell/trace-mapping": "0.3.9"
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
},
"engines": {
- "node": ">=12"
- }
- },
- "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.9",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.0.3",
- "@jridgewell/sourcemap-codec": "^1.4.10"
+ "node": ">=4"
}
},
- "node_modules/@csstools/cascade-layer-name-parser": {
- "version": "2.0.4",
+ "node_modules/@csstools/postcss-sign-functions": {
+ "version": "1.1.1",
"funding": [
{
"type": "github",
@@ -2561,17 +2292,21 @@
"url": "https://opencollective.com/csstools"
}
],
- "license": "MIT",
+ "license": "MIT-0",
+ "dependencies": {
+ "@csstools/css-calc": "^2.1.1",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3"
+ },
"engines": {
"node": ">=18"
},
"peerDependencies": {
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3"
+ "postcss": "^8.4"
}
},
- "node_modules/@csstools/color-helpers": {
- "version": "5.0.2",
+ "node_modules/@csstools/postcss-stepped-value-functions": {
+ "version": "4.0.6",
"funding": [
{
"type": "github",
@@ -2583,139 +2318,20 @@
}
],
"license": "MIT-0",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@csstools/css-calc": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz",
- "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@csstools/css-parser-algorithms": "^3.0.5",
- "@csstools/css-tokenizer": "^3.0.4"
- }
- },
- "node_modules/@csstools/css-color-parser": {
- "version": "3.0.9",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
- "license": "MIT",
"dependencies": {
- "@csstools/color-helpers": "^5.0.2",
- "@csstools/css-calc": "^2.1.3"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
+ "@csstools/css-calc": "^2.1.1",
"@csstools/css-parser-algorithms": "^3.0.4",
"@csstools/css-tokenizer": "^3.0.3"
- }
- },
- "node_modules/@csstools/css-parser-algorithms": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz",
- "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=18"
},
- "peerDependencies": {
- "@csstools/css-tokenizer": "^3.0.4"
- }
- },
- "node_modules/@csstools/css-syntax-patches-for-csstree": {
- "version": "1.0.28",
- "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.28.tgz",
- "integrity": "sha512-1NRf1CUBjnr3K7hu8BLxjQrKCxEe8FP/xmPTenAxCRZWVLbmGotkFvG9mfNpjA6k7Bw1bw4BilZq9cu19RA5pg==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
- "license": "MIT-0"
- },
- "node_modules/@csstools/css-tokenizer": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz",
- "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@csstools/media-query-list-parser": {
- "version": "4.0.3",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
- "license": "MIT",
"engines": {
"node": ">=18"
},
"peerDependencies": {
- "@csstools/css-parser-algorithms": "^3.0.5",
- "@csstools/css-tokenizer": "^3.0.4"
+ "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-cascade-layers": {
- "version": "5.0.1",
+ "node_modules/@csstools/postcss-text-decoration-shorthand": {
+ "version": "4.0.1",
"funding": [
{
"type": "github",
@@ -2728,8 +2344,8 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/selector-specificity": "^5.0.0",
- "postcss-selector-parser": "^7.0.0"
+ "@csstools/color-helpers": "^5.0.1",
+ "postcss-value-parser": "^4.2.0"
},
"engines": {
"node": ">=18"
@@ -2738,21 +2354,8 @@
"postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-cascade-layers/node_modules/postcss-selector-parser": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
- "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
- "license": "MIT",
- "dependencies": {
- "cssesc": "^3.0.0",
- "util-deprecate": "^1.0.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@csstools/postcss-color-function": {
- "version": "4.0.7",
+ "node_modules/@csstools/postcss-trigonometric-functions": {
+ "version": "4.0.6",
"funding": [
{
"type": "github",
@@ -2765,11 +2368,9 @@
],
"license": "MIT-0",
"dependencies": {
- "@csstools/css-color-parser": "^3.0.7",
+ "@csstools/css-calc": "^2.1.1",
"@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
- "@csstools/utilities": "^2.0.0"
+ "@csstools/css-tokenizer": "^3.0.3"
},
"engines": {
"node": ">=18"
@@ -2778,8 +2379,8 @@
"postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-color-mix-function": {
- "version": "3.0.7",
+ "node_modules/@csstools/postcss-unset-value": {
+ "version": "4.0.0",
"funding": [
{
"type": "github",
@@ -2791,13 +2392,6 @@
}
],
"license": "MIT-0",
- "dependencies": {
- "@csstools/css-color-parser": "^3.0.7",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
- "@csstools/utilities": "^2.0.0"
- },
"engines": {
"node": ">=18"
},
@@ -2805,8 +2399,10 @@
"postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-content-alt-text": {
- "version": "2.0.4",
+ "node_modules/@csstools/selector-resolve-nested": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz",
+ "integrity": "sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==",
"funding": [
{
"type": "github",
@@ -2818,21 +2414,15 @@
}
],
"license": "MIT-0",
- "dependencies": {
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
- "@csstools/utilities": "^2.0.0"
- },
"engines": {
"node": ">=18"
},
"peerDependencies": {
- "postcss": "^8.4"
+ "postcss-selector-parser": "^7.0.0"
}
},
- "node_modules/@csstools/postcss-exponential-functions": {
- "version": "2.0.6",
+ "node_modules/@csstools/selector-specificity": {
+ "version": "5.0.0",
"funding": [
{
"type": "github",
@@ -2844,20 +2434,15 @@
}
],
"license": "MIT-0",
- "dependencies": {
- "@csstools/css-calc": "^2.1.1",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3"
- },
"engines": {
"node": ">=18"
},
"peerDependencies": {
- "postcss": "^8.4"
+ "postcss-selector-parser": "^7.0.0"
}
},
- "node_modules/@csstools/postcss-font-format-keywords": {
- "version": "4.0.0",
+ "node_modules/@csstools/utilities": {
+ "version": "2.0.0",
"funding": [
{
"type": "github",
@@ -2869,10 +2454,6 @@
}
],
"license": "MIT-0",
- "dependencies": {
- "@csstools/utilities": "^2.0.0",
- "postcss-value-parser": "^4.2.0"
- },
"engines": {
"node": ">=18"
},
@@ -2880,2203 +2461,1728 @@
"postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-gamut-mapping": {
- "version": "2.0.7",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
- "license": "MIT-0",
- "dependencies": {
- "@csstools/css-color-parser": "^3.0.7",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
+ "node_modules/@dual-bundle/import-meta-resolve": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.2.1.tgz",
+ "integrity": "sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/JounQin"
}
},
- "node_modules/@csstools/postcss-global-data": {
- "version": "2.1.1",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
- "license": "MIT-0",
- "engines": {
- "node": "^14 || ^16 || >=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
+ "node_modules/@emnapi/core": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.2.tgz",
+ "integrity": "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/wasi-threads": "1.2.1",
+ "tslib": "^2.4.0"
}
},
- "node_modules/@csstools/postcss-gradients-interpolation-method": {
- "version": "5.0.7",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
- "license": "MIT-0",
+ "node_modules/@emnapi/runtime": {
+ "version": "1.9.2",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.2.tgz",
+ "integrity": "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==",
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "@csstools/css-color-parser": "^3.0.7",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
- "@csstools/utilities": "^2.0.0"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
+ "tslib": "^2.4.0"
}
},
- "node_modules/@csstools/postcss-hwb-function": {
- "version": "4.0.7",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
- "license": "MIT-0",
+ "node_modules/@emnapi/wasi-threads": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz",
+ "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "@csstools/css-color-parser": "^3.0.7",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
- "@csstools/utilities": "^2.0.0"
- },
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@emotion/stylis": {
+ "version": "0.8.5",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@emotion/unitless": {
+ "version": "0.7.5",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz",
+ "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-ic-unit": {
- "version": "4.0.0",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz",
+ "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
],
- "license": "MIT-0",
- "dependencies": {
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
- "@csstools/utilities": "^2.0.0",
- "postcss-value-parser": "^4.2.0"
- },
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-initial": {
- "version": "2.0.0",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz",
+ "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
],
- "license": "MIT-0",
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-is-pseudo-class": {
- "version": "5.0.1",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz",
+ "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
],
- "license": "MIT-0",
- "dependencies": {
- "@csstools/selector-specificity": "^5.0.0",
- "postcss-selector-parser": "^7.0.0"
- },
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-is-pseudo-class/node_modules/postcss-selector-parser": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
- "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.25.5",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
"license": "MIT",
- "dependencies": {
- "cssesc": "^3.0.0",
- "util-deprecate": "^1.0.2"
- },
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=4"
+ "node": ">=18"
}
},
- "node_modules/@csstools/postcss-light-dark-function": {
- "version": "2.0.7",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz",
+ "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
],
- "license": "MIT-0",
- "dependencies": {
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
- "@csstools/utilities": "^2.0.0"
- },
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-logical-float-and-clear": {
- "version": "3.0.0",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz",
+ "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
],
- "license": "MIT-0",
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-logical-overflow": {
- "version": "2.0.0",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz",
+ "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
],
- "license": "MIT-0",
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-logical-overscroll-behavior": {
- "version": "2.0.0",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz",
+ "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
],
- "license": "MIT-0",
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-logical-resize": {
- "version": "3.0.0",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.25.5",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
],
- "license": "MIT-0",
- "dependencies": {
- "postcss-value-parser": "^4.2.0"
- },
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-logical-viewport-units": {
- "version": "3.0.3",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz",
+ "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
],
- "license": "MIT-0",
- "dependencies": {
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/utilities": "^2.0.0"
- },
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-media-minmax": {
- "version": "2.0.6",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz",
+ "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==",
+ "cpu": [
+ "loong64"
],
+ "dev": true,
"license": "MIT",
- "dependencies": {
- "@csstools/css-calc": "^2.1.1",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/media-query-list-parser": "^4.0.2"
- },
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": {
- "version": "3.0.4",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz",
+ "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
],
- "license": "MIT-0",
- "dependencies": {
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/media-query-list-parser": "^4.0.2"
- },
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-nested-calc": {
- "version": "4.0.0",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz",
+ "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
],
- "license": "MIT-0",
- "dependencies": {
- "@csstools/utilities": "^2.0.0",
- "postcss-value-parser": "^4.2.0"
- },
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-normalize-display-values": {
- "version": "4.0.0",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz",
+ "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
],
- "license": "MIT-0",
- "dependencies": {
- "postcss-value-parser": "^4.2.0"
- },
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-oklab-function": {
- "version": "4.0.7",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz",
+ "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
],
- "license": "MIT-0",
- "dependencies": {
- "@csstools/css-color-parser": "^3.0.7",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
- "@csstools/utilities": "^2.0.0"
- },
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-progressive-custom-properties": {
- "version": "4.0.0",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz",
+ "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
],
- "license": "MIT-0",
- "dependencies": {
- "postcss-value-parser": "^4.2.0"
- },
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-random-function": {
- "version": "1.0.2",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz",
+ "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
],
- "license": "MIT-0",
- "dependencies": {
- "@csstools/css-calc": "^2.1.1",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3"
- },
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-relative-color-syntax": {
- "version": "3.0.7",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz",
+ "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
],
- "license": "MIT-0",
- "dependencies": {
- "@csstools/css-color-parser": "^3.0.7",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3",
- "@csstools/postcss-progressive-custom-properties": "^4.0.0",
- "@csstools/utilities": "^2.0.0"
- },
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-scope-pseudo-class": {
- "version": "4.0.1",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz",
+ "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
],
- "license": "MIT-0",
- "dependencies": {
- "postcss-selector-parser": "^7.0.0"
- },
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-scope-pseudo-class/node_modules/postcss-selector-parser": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
- "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz",
+ "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
"license": "MIT",
- "dependencies": {
- "cssesc": "^3.0.0",
- "util-deprecate": "^1.0.2"
- },
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
"engines": {
- "node": ">=4"
+ "node": ">=18"
}
},
- "node_modules/@csstools/postcss-sign-functions": {
- "version": "1.1.1",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz",
+ "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
],
- "license": "MIT-0",
- "dependencies": {
- "@csstools/css-calc": "^2.1.1",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3"
- },
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-stepped-value-functions": {
- "version": "4.0.6",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz",
+ "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
],
- "license": "MIT-0",
- "dependencies": {
- "@csstools/css-calc": "^2.1.1",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3"
- },
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-text-decoration-shorthand": {
- "version": "4.0.1",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz",
+ "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
],
- "license": "MIT-0",
- "dependencies": {
- "@csstools/color-helpers": "^5.0.1",
- "postcss-value-parser": "^4.2.0"
- },
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/postcss-trigonometric-functions": {
- "version": "4.0.6",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz",
+ "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==",
+ "cpu": [
+ "x64"
],
- "license": "MIT-0",
- "dependencies": {
- "@csstools/css-calc": "^2.1.1",
- "@csstools/css-parser-algorithms": "^3.0.4",
- "@csstools/css-tokenizer": "^3.0.3"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
- }
- },
- "node_modules/@csstools/postcss-unset-value": {
- "version": "4.0.0",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
],
- "license": "MIT-0",
"engines": {
"node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
}
},
- "node_modules/@csstools/selector-resolve-nested": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@csstools/selector-resolve-nested/-/selector-resolve-nested-3.1.0.tgz",
- "integrity": "sha512-mf1LEW0tJLKfWyvn5KdDrhpxHyuxpbNwTIwOYLIvsTffeyOf85j5oIzfG0yosxDgx/sswlqBnESYUcQH0vgZ0g==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
- "license": "MIT-0",
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
+ "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eslint-visitor-keys": "^3.4.3"
+ },
"engines": {
- "node": ">=18"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
},
"peerDependencies": {
- "postcss-selector-parser": "^7.0.0"
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
}
},
- "node_modules/@csstools/selector-specificity": {
- "version": "5.0.0",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
- "license": "MIT-0",
+ "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "dev": true,
+ "license": "Apache-2.0",
"engines": {
- "node": ">=18"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
- "peerDependencies": {
- "postcss-selector-parser": "^7.0.0"
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/@csstools/utilities": {
- "version": "2.0.0",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/csstools"
- },
- {
- "type": "opencollective",
- "url": "https://opencollective.com/csstools"
- }
- ],
- "license": "MIT-0",
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.12.2",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
+ "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
+ "dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "postcss": "^8.4"
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
- "node_modules/@dual-bundle/import-meta-resolve": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/@dual-bundle/import-meta-resolve/-/import-meta-resolve-4.2.1.tgz",
- "integrity": "sha512-id+7YRUgoUX6CgV0DtuhirQWodeeA7Lf4i2x71JS/vtA5pRb/hIGWlw+G6MeXvsM+MXrz0VAydTGElX1rAfgPg==",
+ "node_modules/@eslint-react/ast": {
+ "version": "1.52.6",
"dev": true,
"license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/JounQin"
+ "dependencies": {
+ "@eslint-react/eff": "1.52.6",
+ "@typescript-eslint/types": "^8.39.1",
+ "@typescript-eslint/typescript-estree": "^8.39.1",
+ "@typescript-eslint/utils": "^8.39.1",
+ "string-ts": "^2.2.1",
+ "ts-pattern": "^5.8.0"
+ },
+ "engines": {
+ "node": ">=18.18.0"
}
},
- "node_modules/@emnapi/core": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.2.tgz",
- "integrity": "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==",
+ "node_modules/@eslint-react/core": {
+ "version": "1.52.6",
"dev": true,
"license": "MIT",
- "optional": true,
"dependencies": {
- "@emnapi/wasi-threads": "1.2.1",
- "tslib": "^2.4.0"
+ "@eslint-react/ast": "1.52.6",
+ "@eslint-react/eff": "1.52.6",
+ "@eslint-react/kit": "1.52.6",
+ "@eslint-react/shared": "1.52.6",
+ "@eslint-react/var": "1.52.6",
+ "@typescript-eslint/scope-manager": "^8.39.1",
+ "@typescript-eslint/type-utils": "^8.39.1",
+ "@typescript-eslint/types": "^8.39.1",
+ "@typescript-eslint/utils": "^8.39.1",
+ "birecord": "^0.1.1",
+ "ts-pattern": "^5.8.0"
+ },
+ "engines": {
+ "node": ">=18.18.0"
}
},
- "node_modules/@emnapi/runtime": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.2.tgz",
- "integrity": "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==",
+ "node_modules/@eslint-react/eff": {
+ "version": "1.52.6",
+ "dev": true,
"license": "MIT",
- "optional": true,
- "dependencies": {
- "tslib": "^2.4.0"
+ "engines": {
+ "node": ">=18.18.0"
}
},
- "node_modules/@emnapi/wasi-threads": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz",
- "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==",
+ "node_modules/@eslint-react/eslint-plugin": {
+ "version": "1.52.6",
"dev": true,
"license": "MIT",
- "optional": true,
"dependencies": {
- "tslib": "^2.4.0"
+ "@eslint-react/eff": "1.52.6",
+ "@eslint-react/kit": "1.52.6",
+ "@eslint-react/shared": "1.52.6",
+ "@typescript-eslint/scope-manager": "^8.39.1",
+ "@typescript-eslint/type-utils": "^8.39.1",
+ "@typescript-eslint/types": "^8.39.1",
+ "@typescript-eslint/utils": "^8.39.1",
+ "eslint-plugin-react-debug": "1.52.6",
+ "eslint-plugin-react-dom": "1.52.6",
+ "eslint-plugin-react-hooks-extra": "1.52.6",
+ "eslint-plugin-react-naming-convention": "1.52.6",
+ "eslint-plugin-react-web-api": "1.52.6",
+ "eslint-plugin-react-x": "1.52.6"
+ },
+ "engines": {
+ "node": ">=18.18.0"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": "^4.9.5 || ^5.3.3"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": false
+ },
+ "typescript": {
+ "optional": true
+ }
}
},
- "node_modules/@emotion/stylis": {
- "version": "0.8.5",
- "license": "MIT"
- },
- "node_modules/@emotion/unitless": {
- "version": "0.7.5",
- "license": "MIT"
- },
- "node_modules/@esbuild/aix-ppc64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz",
- "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==",
- "cpu": [
- "ppc64"
- ],
+ "node_modules/@eslint-react/kit": {
+ "version": "1.52.6",
"dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "aix"
- ],
+ "dependencies": {
+ "@eslint-react/eff": "1.52.6",
+ "@typescript-eslint/utils": "^8.39.1",
+ "ts-pattern": "^5.8.0",
+ "zod": "^4.0.17"
+ },
"engines": {
- "node": ">=18"
+ "node": ">=18.18.0"
}
},
- "node_modules/@esbuild/android-arm": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz",
- "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==",
- "cpu": [
- "arm"
- ],
+ "node_modules/@eslint-react/shared": {
+ "version": "1.52.6",
"dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
+ "dependencies": {
+ "@eslint-react/eff": "1.52.6",
+ "@eslint-react/kit": "1.52.6",
+ "@typescript-eslint/utils": "^8.39.1",
+ "ts-pattern": "^5.8.0",
+ "zod": "^4.0.17"
+ },
"engines": {
- "node": ">=18"
+ "node": ">=18.18.0"
}
},
- "node_modules/@esbuild/android-arm64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz",
- "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@eslint-react/var": {
+ "version": "1.52.6",
"dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
+ "dependencies": {
+ "@eslint-react/ast": "1.52.6",
+ "@eslint-react/eff": "1.52.6",
+ "@typescript-eslint/scope-manager": "^8.39.1",
+ "@typescript-eslint/types": "^8.39.1",
+ "@typescript-eslint/utils": "^8.39.1",
+ "string-ts": "^2.2.1",
+ "ts-pattern": "^5.8.0"
+ },
"engines": {
- "node": ">=18"
+ "node": ">=18.18.0"
}
},
- "node_modules/@esbuild/android-x64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz",
- "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@eslint/compat": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-2.1.0.tgz",
+ "integrity": "sha512-LgaSCymEpw7tF53xvDw9SNsraPb1IBHxpdABIOM0hW8UAlP8znrjYtuxfR58FSJ3L9BhwD+FaPRFQpZq84Nh6g==",
"dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/core": "^1.2.1"
+ },
"engines": {
- "node": ">=18"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ },
+ "peerDependencies": {
+ "eslint": "^8.40 || 9 || 10"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
}
},
- "node_modules/@esbuild/darwin-arm64": {
- "version": "0.25.5",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@eslint/compat/node_modules/@eslint/core": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz",
+ "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==",
"dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
"engines": {
- "node": ">=18"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
}
},
- "node_modules/@esbuild/darwin-x64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz",
- "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@eslint/config-array": {
+ "version": "0.23.5",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz",
+ "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==",
"dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/object-schema": "^3.0.5",
+ "debug": "^4.3.1",
+ "minimatch": "^10.2.4"
+ },
"engines": {
- "node": ">=18"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
}
},
- "node_modules/@esbuild/freebsd-arm64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz",
- "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@eslint/config-array/node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
"dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
"engines": {
- "node": ">=18"
+ "node": "18 || 20 || >=22"
}
},
- "node_modules/@esbuild/freebsd-x64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz",
- "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@eslint/config-array/node_modules/brace-expansion": {
+ "version": "5.0.6",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz",
+ "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==",
"dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
"engines": {
- "node": ">=18"
+ "node": "18 || 20 || >=22"
}
},
- "node_modules/@esbuild/linux-arm": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz",
- "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==",
- "cpu": [
- "arm"
- ],
+ "node_modules/@eslint/config-array/node_modules/minimatch": {
+ "version": "10.2.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
+ "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
"dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "brace-expansion": "^5.0.5"
+ },
"engines": {
- "node": ">=18"
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/@esbuild/linux-arm64": {
- "version": "0.25.5",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@eslint/config-helpers": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.6.0.tgz",
+ "integrity": "sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==",
"dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/core": "^1.2.1"
+ },
"engines": {
- "node": ">=18"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
}
},
- "node_modules/@esbuild/linux-ia32": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz",
- "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==",
- "cpu": [
- "ia32"
- ],
+ "node_modules/@eslint/config-helpers/node_modules/@eslint/core": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz",
+ "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==",
"dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
"engines": {
- "node": ">=18"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
}
},
- "node_modules/@esbuild/linux-loong64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz",
- "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==",
- "cpu": [
- "loong64"
- ],
+ "node_modules/@eslint/core": {
+ "version": "0.17.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz",
+ "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==",
"dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
"engines": {
- "node": ">=18"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
}
},
- "node_modules/@esbuild/linux-mips64el": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz",
- "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==",
- "cpu": [
- "mips64el"
- ],
+ "node_modules/@eslint/eslintrc": {
+ "version": "3.3.5",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz",
+ "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==",
"dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
+ "dependencies": {
+ "ajv": "^6.14.0",
+ "debug": "^4.3.2",
+ "espree": "^10.0.1",
+ "globals": "^14.0.0",
+ "ignore": "^5.2.0",
+ "import-fresh": "^3.2.1",
+ "js-yaml": "^4.1.1",
+ "minimatch": "^3.1.5",
+ "strip-json-comments": "^3.1.1"
+ },
"engines": {
- "node": ">=18"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/@esbuild/linux-ppc64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz",
- "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==",
- "cpu": [
- "ppc64"
- ],
+ "node_modules/@eslint/eslintrc/node_modules/ajv": {
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
+ "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
"dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
}
},
- "node_modules/@esbuild/linux-riscv64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz",
- "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==",
- "cpu": [
- "riscv64"
- ],
+ "node_modules/@eslint/eslintrc/node_modules/argparse": {
+ "version": "2.0.1",
"dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
- }
+ "license": "Python-2.0"
},
- "node_modules/@esbuild/linux-s390x": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz",
- "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==",
- "cpu": [
- "s390x"
- ],
+ "node_modules/@eslint/eslintrc/node_modules/globals": {
+ "version": "14.0.0",
"dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
"engines": {
"node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@esbuild/linux-x64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz",
- "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@eslint/eslintrc/node_modules/js-yaml": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
+ "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
"dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": ">=18"
+ "dependencies": {
+ "argparse": "^2.0.1"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/@esbuild/netbsd-arm64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz",
- "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "netbsd"
- ],
+ "license": "MIT"
+ },
+ "node_modules/@eslint/eslintrc/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
"engines": {
- "node": ">=18"
+ "node": "*"
}
},
- "node_modules/@esbuild/netbsd-x64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz",
- "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@eslint/js": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz",
+ "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==",
"dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "netbsd"
- ],
"engines": {
- "node": ">=18"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "eslint": "^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
}
},
- "node_modules/@esbuild/openbsd-arm64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz",
- "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@eslint/object-schema": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz",
+ "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==",
"dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openbsd"
- ],
+ "license": "Apache-2.0",
"engines": {
- "node": ">=18"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
}
},
- "node_modules/@esbuild/openbsd-x64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz",
- "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.2.tgz",
+ "integrity": "sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==",
"dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openbsd"
- ],
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/core": "^1.2.1",
+ "levn": "^0.4.1"
+ },
"engines": {
- "node": ">=18"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
}
},
- "node_modules/@esbuild/sunos-x64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz",
- "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz",
+ "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==",
"dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "sunos"
- ],
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
"engines": {
- "node": ">=18"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
}
},
- "node_modules/@esbuild/win32-arm64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz",
- "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@fastify/busboy": {
+ "version": "2.1.1",
"dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
"engines": {
- "node": ">=18"
+ "node": ">=14"
}
},
- "node_modules/@esbuild/win32-ia32": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz",
- "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==",
- "cpu": [
- "ia32"
- ],
+ "node_modules/@figma/code-connect": {
+ "version": "1.3.2",
"dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
+ "dependencies": {
+ "boxen": "5.1.1",
+ "chalk": "^4.1.2",
+ "commander": "^11.1.0",
+ "compare-versions": "^6.1.0",
+ "cross-spawn": "^7.0.3",
+ "dotenv": "^16.3.1",
+ "fast-fuzzy": "^1.12.0",
+ "find-up": "^5.0.0",
+ "glob": "^10.3.10",
+ "jsdom": "^24.1.1",
+ "lodash": "^4.17.21",
+ "minimatch": "^9.0.3",
+ "ora": "^5.4.1",
+ "parse5": "^7.1.2",
+ "prettier": "^2.8.8",
+ "prompts": "^2.4.2",
+ "strip-ansi": "^6.0.0",
+ "ts-morph": "^23.0.0",
+ "typescript": "5.5.4",
+ "undici": "^5.28.4",
+ "zod": "3.23.8",
+ "zod-validation-error": "^3.2.0"
+ },
+ "bin": {
+ "figma": "bin/figma"
+ },
"engines": {
"node": ">=18"
}
},
- "node_modules/@esbuild/win32-x64": {
- "version": "0.25.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz",
- "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@figma/code-connect/node_modules/brace-expansion": {
+ "version": "2.0.2",
"dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": ">=18"
+ "dependencies": {
+ "balanced-match": "^1.0.0"
}
},
- "node_modules/@eslint-community/eslint-utils": {
- "version": "4.9.1",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
- "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
+ "node_modules/@figma/code-connect/node_modules/chalk": {
+ "version": "4.1.2",
"dev": true,
"license": "MIT",
"dependencies": {
- "eslint-visitor-keys": "^3.4.3"
- },
- "engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
},
- "peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
- }
- },
- "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "dev": true,
- "license": "Apache-2.0",
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": ">=10"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://github.com/chalk/chalk?sponsor=1"
}
},
- "node_modules/@eslint-community/regexpp": {
- "version": "4.12.2",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
- "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
+ "node_modules/@figma/code-connect/node_modules/commander": {
+ "version": "11.1.0",
"dev": true,
"license": "MIT",
"engines": {
- "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ "node": ">=16"
}
},
- "node_modules/@eslint-react/ast": {
- "version": "1.52.6",
+ "node_modules/@figma/code-connect/node_modules/cssstyle": {
+ "version": "4.5.0",
"dev": true,
"license": "MIT",
"dependencies": {
- "@eslint-react/eff": "1.52.6",
- "@typescript-eslint/types": "^8.39.1",
- "@typescript-eslint/typescript-estree": "^8.39.1",
- "@typescript-eslint/utils": "^8.39.1",
- "string-ts": "^2.2.1",
- "ts-pattern": "^5.8.0"
+ "@asamuzakjp/css-color": "^3.2.0",
+ "rrweb-cssom": "^0.8.0"
},
"engines": {
- "node": ">=18.18.0"
+ "node": ">=18"
}
},
- "node_modules/@eslint-react/core": {
- "version": "1.52.6",
+ "node_modules/@figma/code-connect/node_modules/cssstyle/node_modules/rrweb-cssom": {
+ "version": "0.8.0",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@figma/code-connect/node_modules/data-urls": {
+ "version": "5.0.0",
"dev": true,
"license": "MIT",
"dependencies": {
- "@eslint-react/ast": "1.52.6",
- "@eslint-react/eff": "1.52.6",
- "@eslint-react/kit": "1.52.6",
- "@eslint-react/shared": "1.52.6",
- "@eslint-react/var": "1.52.6",
- "@typescript-eslint/scope-manager": "^8.39.1",
- "@typescript-eslint/type-utils": "^8.39.1",
- "@typescript-eslint/types": "^8.39.1",
- "@typescript-eslint/utils": "^8.39.1",
- "birecord": "^0.1.1",
- "ts-pattern": "^5.8.0"
+ "whatwg-mimetype": "^4.0.0",
+ "whatwg-url": "^14.0.0"
},
"engines": {
- "node": ">=18.18.0"
+ "node": ">=18"
}
},
- "node_modules/@eslint-react/eff": {
- "version": "1.52.6",
+ "node_modules/@figma/code-connect/node_modules/dotenv": {
+ "version": "16.6.1",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz",
+ "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==",
"dev": true,
- "license": "MIT",
+ "license": "BSD-2-Clause",
"engines": {
- "node": ">=18.18.0"
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://dotenvx.com"
}
},
- "node_modules/@eslint-react/eslint-plugin": {
- "version": "1.52.6",
+ "node_modules/@figma/code-connect/node_modules/find-up": {
+ "version": "5.0.0",
"dev": true,
"license": "MIT",
"dependencies": {
- "@eslint-react/eff": "1.52.6",
- "@eslint-react/kit": "1.52.6",
- "@eslint-react/shared": "1.52.6",
- "@typescript-eslint/scope-manager": "^8.39.1",
- "@typescript-eslint/type-utils": "^8.39.1",
- "@typescript-eslint/types": "^8.39.1",
- "@typescript-eslint/utils": "^8.39.1",
- "eslint-plugin-react-debug": "1.52.6",
- "eslint-plugin-react-dom": "1.52.6",
- "eslint-plugin-react-hooks-extra": "1.52.6",
- "eslint-plugin-react-naming-convention": "1.52.6",
- "eslint-plugin-react-web-api": "1.52.6",
- "eslint-plugin-react-x": "1.52.6"
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
},
"engines": {
- "node": ">=18.18.0"
- },
- "peerDependencies": {
- "eslint": "^8.57.0 || ^9.0.0",
- "typescript": "^4.9.5 || ^5.3.3"
+ "node": ">=10"
},
- "peerDependenciesMeta": {
- "eslint": {
- "optional": false
- },
- "typescript": {
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@eslint-react/kit": {
- "version": "1.52.6",
+ "node_modules/@figma/code-connect/node_modules/glob": {
+ "version": "10.5.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
+ "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
"dev": true,
- "license": "MIT",
+ "license": "ISC",
"dependencies": {
- "@eslint-react/eff": "1.52.6",
- "@typescript-eslint/utils": "^8.39.1",
- "ts-pattern": "^5.8.0",
- "zod": "^4.0.17"
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
},
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@figma/code-connect/node_modules/has-flag": {
+ "version": "4.0.0",
+ "dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=18.18.0"
+ "node": ">=8"
}
},
- "node_modules/@eslint-react/shared": {
- "version": "1.52.6",
+ "node_modules/@figma/code-connect/node_modules/html-encoding-sniffer": {
+ "version": "4.0.0",
"dev": true,
"license": "MIT",
"dependencies": {
- "@eslint-react/eff": "1.52.6",
- "@eslint-react/kit": "1.52.6",
- "@typescript-eslint/utils": "^8.39.1",
- "ts-pattern": "^5.8.0",
- "zod": "^4.0.17"
+ "whatwg-encoding": "^3.1.1"
},
"engines": {
- "node": ">=18.18.0"
+ "node": ">=18"
}
},
- "node_modules/@eslint-react/var": {
- "version": "1.52.6",
+ "node_modules/@figma/code-connect/node_modules/jackspeak": {
+ "version": "3.4.3",
"dev": true,
- "license": "MIT",
+ "license": "BlueOak-1.0.0",
"dependencies": {
- "@eslint-react/ast": "1.52.6",
- "@eslint-react/eff": "1.52.6",
- "@typescript-eslint/scope-manager": "^8.39.1",
- "@typescript-eslint/types": "^8.39.1",
- "@typescript-eslint/utils": "^8.39.1",
- "string-ts": "^2.2.1",
- "ts-pattern": "^5.8.0"
+ "@isaacs/cliui": "^8.0.2"
},
- "engines": {
- "node": ">=18.18.0"
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
}
},
- "node_modules/@eslint/compat": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@eslint/compat/-/compat-2.0.3.tgz",
- "integrity": "sha512-SjIJhGigp8hmd1YGIBwh7Ovri7Kisl42GYFjrOyHhtfYGGoLW6teYi/5p8W50KSsawUPpuLOSmsq1bD0NGQLBw==",
+ "node_modules/@figma/code-connect/node_modules/jsdom": {
+ "version": "24.1.3",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT",
"dependencies": {
- "@eslint/core": "^1.1.1"
+ "cssstyle": "^4.0.1",
+ "data-urls": "^5.0.0",
+ "decimal.js": "^10.4.3",
+ "form-data": "^4.0.0",
+ "html-encoding-sniffer": "^4.0.0",
+ "http-proxy-agent": "^7.0.2",
+ "https-proxy-agent": "^7.0.5",
+ "is-potential-custom-element-name": "^1.0.1",
+ "nwsapi": "^2.2.12",
+ "parse5": "^7.1.2",
+ "rrweb-cssom": "^0.7.1",
+ "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.0.0",
+ "ws": "^8.18.0",
+ "xml-name-validator": "^5.0.0"
},
"engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
+ "node": ">=18"
},
"peerDependencies": {
- "eslint": "^8.40 || 9 || 10"
+ "canvas": "^2.11.2"
},
"peerDependenciesMeta": {
- "eslint": {
+ "canvas": {
"optional": true
}
}
},
- "node_modules/@eslint/compat/node_modules/@eslint/core": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.1.tgz",
- "integrity": "sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==",
+ "node_modules/@figma/code-connect/node_modules/locate-path": {
+ "version": "6.0.0",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT",
"dependencies": {
- "@types/json-schema": "^7.0.15"
+ "p-locate": "^5.0.0"
},
"engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@eslint/config-array": {
- "version": "0.23.2",
- "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.2.tgz",
- "integrity": "sha512-YF+fE6LV4v5MGWRGj7G404/OZzGNepVF8fxk7jqmqo3lrza7a0uUcDnROGRBG1WFC1omYUS/Wp1f42i0M+3Q3A==",
+ "node_modules/@figma/code-connect/node_modules/minimatch": {
+ "version": "9.0.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "ISC",
"dependencies": {
- "@eslint/object-schema": "^3.0.2",
- "debug": "^4.3.1",
- "minimatch": "^10.2.1"
+ "brace-expansion": "^2.0.2"
},
"engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/@eslint/config-array/node_modules/balanced-match": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
- "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
- "dev": true,
+ "node_modules/@figma/code-connect/node_modules/p-limit": {
+ "version": "3.1.0",
+ "dev": true,
"license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
"engines": {
- "node": "18 || 20 || >=22"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@eslint/config-array/node_modules/brace-expansion": {
- "version": "5.0.5",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz",
- "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==",
+ "node_modules/@figma/code-connect/node_modules/p-locate": {
+ "version": "5.0.0",
"dev": true,
"license": "MIT",
"dependencies": {
- "balanced-match": "^4.0.2"
+ "p-limit": "^3.0.2"
},
"engines": {
- "node": "18 || 20 || >=22"
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@eslint/config-array/node_modules/minimatch": {
- "version": "10.2.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz",
- "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==",
+ "node_modules/@figma/code-connect/node_modules/prettier": {
+ "version": "2.8.8",
"dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "brace-expansion": "^5.0.2"
+ "license": "MIT",
+ "bin": {
+ "prettier": "bin-prettier.js"
},
"engines": {
- "node": "18 || 20 || >=22"
+ "node": ">=10.13.0"
},
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "url": "https://github.com/prettier/prettier?sponsor=1"
}
},
- "node_modules/@eslint/config-helpers": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.2.tgz",
- "integrity": "sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==",
+ "node_modules/@figma/code-connect/node_modules/supports-color": {
+ "version": "7.2.0",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT",
"dependencies": {
- "@eslint/core": "^1.1.0"
+ "has-flag": "^4.0.0"
},
"engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
+ "node": ">=8"
}
},
- "node_modules/@eslint/config-helpers/node_modules/@eslint/core": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.1.tgz",
- "integrity": "sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==",
+ "node_modules/@figma/code-connect/node_modules/tr46": {
+ "version": "5.1.1",
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT",
"dependencies": {
- "@types/json-schema": "^7.0.15"
+ "punycode": "^2.3.1"
},
"engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
+ "node": ">=18"
}
},
- "node_modules/@eslint/core": {
- "version": "0.17.0",
- "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz",
- "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==",
+ "node_modules/@figma/code-connect/node_modules/typescript": {
+ "version": "5.5.4",
"dev": true,
"license": "Apache-2.0",
- "dependencies": {
- "@types/json-schema": "^7.0.15"
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
},
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ "node": ">=14.17"
}
},
- "node_modules/@eslint/eslintrc": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.4.tgz",
- "integrity": "sha512-4h4MVF8pmBsncB60r0wSJiIeUKTSD4m7FmTFThG8RHlsg9ajqckLm9OraguFGZE4vVdpiI1Q4+hFnisopmG6gQ==",
+ "node_modules/@figma/code-connect/node_modules/w3c-xmlserializer": {
+ "version": "5.0.0",
"dev": true,
"license": "MIT",
"dependencies": {
- "ajv": "^6.14.0",
- "debug": "^4.3.2",
- "espree": "^10.0.1",
- "globals": "^14.0.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.1",
- "minimatch": "^3.1.3",
- "strip-json-comments": "^3.1.1"
+ "xml-name-validator": "^5.0.0"
},
"engines": {
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "node": ">=18"
}
},
- "node_modules/@eslint/eslintrc/node_modules/ajv": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
- "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
+ "node_modules/@figma/code-connect/node_modules/whatwg-url": {
+ "version": "14.2.0",
"dev": true,
"license": "MIT",
"dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
+ "tr46": "^5.1.0",
+ "webidl-conversions": "^7.0.0"
},
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/@eslint/eslintrc/node_modules/argparse": {
- "version": "2.0.1",
+ "node_modules/@figma/code-connect/node_modules/xml-name-validator": {
+ "version": "5.0.0",
"dev": true,
- "license": "Python-2.0"
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18"
+ }
},
- "node_modules/@eslint/eslintrc/node_modules/globals": {
- "version": "14.0.0",
+ "node_modules/@figma/code-connect/node_modules/zod": {
+ "version": "3.23.8",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz",
+ "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==",
"dev": true,
"license": "MIT",
- "engines": {
- "node": ">=18"
- },
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/colinhacks"
}
},
- "node_modules/@eslint/eslintrc/node_modules/js-yaml": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
- "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
+ "node_modules/@floating-ui/core": {
+ "version": "1.7.4",
+ "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.4.tgz",
+ "integrity": "sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
+ "@floating-ui/utils": "^0.2.10"
}
},
- "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "node_modules/@floating-ui/dom": {
+ "version": "1.7.5",
+ "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.5.tgz",
+ "integrity": "sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "dependencies": {
+ "@floating-ui/core": "^1.7.4",
+ "@floating-ui/utils": "^0.2.10"
+ }
},
- "node_modules/@eslint/eslintrc/node_modules/minimatch": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
- "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "node_modules/@floating-ui/react-dom": {
+ "version": "2.1.6",
+ "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz",
+ "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==",
"dev": true,
- "license": "ISC",
+ "license": "MIT",
"dependencies": {
- "brace-expansion": "^1.1.7"
+ "@floating-ui/dom": "^1.7.4"
},
- "engines": {
- "node": "*"
+ "peerDependencies": {
+ "react": ">=16.8.0",
+ "react-dom": ">=16.8.0"
}
},
- "node_modules/@eslint/js": {
- "version": "10.0.1",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz",
- "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==",
+ "node_modules/@floating-ui/utils": {
+ "version": "0.2.10",
+ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz",
+ "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@github-ui/storybook-addon-performance-panel": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@github-ui/storybook-addon-performance-panel/-/storybook-addon-performance-panel-1.1.4.tgz",
+ "integrity": "sha512-clVeSoS1BM2z+nHffOXpnA1J034XALEDfJez6yg7TS7Clfn8eBjgw5FwLjfMvM+kWeG2nwfP6LujRMvJDqj+yg==",
"dev": true,
"license": "MIT",
- "engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
- },
- "funding": {
- "url": "https://eslint.org/donate"
- },
"peerDependencies": {
- "eslint": "^10.0.0"
+ "@storybook/icons": "^2.0.0",
+ "@storybook/react": "^10.0.0",
+ "react": "^19",
+ "storybook": "^10"
},
"peerDependenciesMeta": {
- "eslint": {
+ "@storybook/react": {
+ "optional": true
+ },
+ "react": {
"optional": true
}
}
},
- "node_modules/@eslint/object-schema": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.2.tgz",
- "integrity": "sha512-HOy56KJt48Bx8KmJ+XGQNSUMT/6dZee/M54XyUyuvTvPXJmsERRvBchsUVx1UMe1WwIH49XLAczNC7V2INsuUw==",
+ "node_modules/@github/axe-github": {
+ "version": "0.7.0",
"dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
- }
+ "license": "MIT"
},
- "node_modules/@eslint/plugin-kit": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.0.tgz",
- "integrity": "sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==",
+ "node_modules/@github/browserslist-config": {
+ "version": "1.0.0",
+ "license": "MIT"
+ },
+ "node_modules/@github/markdownlint-github": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/@github/markdownlint-github/-/markdownlint-github-0.8.0.tgz",
+ "integrity": "sha512-079sWT/2Z8EI5v02GTtSfvG06E1m8Q6xjYoQiGdPg6rSKVntpfBw6in79fGs+vc9cYihBHl73vkOoDcyH/Jl8g==",
"dev": true,
- "license": "Apache-2.0",
+ "license": "ISC",
"dependencies": {
- "@eslint/core": "^1.1.0",
- "levn": "^0.4.1"
+ "lodash-es": "^4.17.15"
},
"engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
+ "node": ">=18"
}
},
- "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.1.tgz",
- "integrity": "sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==",
+ "node_modules/@github/mini-throttle": {
+ "version": "2.1.1",
+ "license": "MIT"
+ },
+ "node_modules/@github/prettier-config": {
+ "version": "0.0.6",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@github/relative-time-element": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@github/relative-time-element/-/relative-time-element-5.0.0.tgz",
+ "integrity": "sha512-L/2r0DNR/rMbmHWcsdmhtOiy2gESoGOhItNFD4zJ3nZfHl79Dx3N18Vfx/pYr2lruMOdk1cJZb4wEumm+Dxm1w==",
+ "license": "MIT"
+ },
+ "node_modules/@github/tab-container-element": {
+ "version": "4.8.2",
+ "license": "MIT"
+ },
+ "node_modules/@humanfs/core": {
+ "version": "0.19.1",
"dev": true,
"license": "Apache-2.0",
- "dependencies": {
- "@types/json-schema": "^7.0.15"
- },
"engines": {
- "node": "^20.19.0 || ^22.13.0 || >=24"
+ "node": ">=18.18.0"
}
},
- "node_modules/@fastify/busboy": {
- "version": "2.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@figma/code-connect": {
- "version": "1.3.2",
+ "node_modules/@humanfs/node": {
+ "version": "0.16.6",
"dev": true,
- "license": "MIT",
+ "license": "Apache-2.0",
"dependencies": {
- "boxen": "5.1.1",
- "chalk": "^4.1.2",
- "commander": "^11.1.0",
- "compare-versions": "^6.1.0",
- "cross-spawn": "^7.0.3",
- "dotenv": "^16.3.1",
- "fast-fuzzy": "^1.12.0",
- "find-up": "^5.0.0",
- "glob": "^10.3.10",
- "jsdom": "^24.1.1",
- "lodash": "^4.17.21",
- "minimatch": "^9.0.3",
- "ora": "^5.4.1",
- "parse5": "^7.1.2",
- "prettier": "^2.8.8",
- "prompts": "^2.4.2",
- "strip-ansi": "^6.0.0",
- "ts-morph": "^23.0.0",
- "typescript": "5.5.4",
- "undici": "^5.28.4",
- "zod": "3.23.8",
- "zod-validation-error": "^3.2.0"
- },
- "bin": {
- "figma": "bin/figma"
+ "@humanfs/core": "^0.19.1",
+ "@humanwhocodes/retry": "^0.3.0"
},
"engines": {
- "node": ">=18"
- }
- },
- "node_modules/@figma/code-connect/node_modules/brace-expansion": {
- "version": "2.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0"
+ "node": ">=18.18.0"
}
},
- "node_modules/@figma/code-connect/node_modules/chalk": {
- "version": "4.1.2",
+ "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": {
+ "version": "0.3.1",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
+ "license": "Apache-2.0",
"engines": {
- "node": ">=10"
+ "node": ">=18.18"
},
"funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
}
},
- "node_modules/@figma/code-connect/node_modules/commander": {
- "version": "11.1.0",
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
"dev": true,
- "license": "MIT",
+ "license": "Apache-2.0",
"engines": {
- "node": ">=16"
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
}
},
- "node_modules/@figma/code-connect/node_modules/cssstyle": {
- "version": "4.5.0",
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.4.3",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "@asamuzakjp/css-color": "^3.2.0",
- "rrweb-cssom": "^0.8.0"
- },
+ "license": "Apache-2.0",
"engines": {
- "node": ">=18"
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
}
},
- "node_modules/@figma/code-connect/node_modules/cssstyle/node_modules/rrweb-cssom": {
- "version": "0.8.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@figma/code-connect/node_modules/data-urls": {
- "version": "5.0.0",
- "dev": true,
+ "node_modules/@img/colour": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz",
+ "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==",
"license": "MIT",
- "dependencies": {
- "whatwg-mimetype": "^4.0.0",
- "whatwg-url": "^14.0.0"
- },
+ "optional": true,
"engines": {
"node": ">=18"
}
},
- "node_modules/@figma/code-connect/node_modules/dotenv": {
- "version": "16.6.1",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz",
- "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==",
- "dev": true,
- "license": "BSD-2-Clause",
+ "node_modules/@img/sharp-darwin-arm64": {
+ "version": "0.34.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.4.tgz",
+ "integrity": "sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=12"
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
- "url": "https://dotenvx.com"
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-arm64": "1.2.3"
}
},
- "node_modules/@figma/code-connect/node_modules/find-up": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- },
+ "node_modules/@img/sharp-darwin-x64": {
+ "version": "0.34.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.4.tgz",
+ "integrity": "sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=10"
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@figma/code-connect/node_modules/glob": {
- "version": "10.5.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
- "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^3.1.2",
- "minimatch": "^9.0.4",
- "minipass": "^7.1.2",
- "package-json-from-dist": "^1.0.0",
- "path-scurry": "^1.11.1"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
+ "url": "https://opencollective.com/libvips"
},
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "optionalDependencies": {
+ "@img/sharp-libvips-darwin-x64": "1.2.3"
}
},
- "node_modules/@figma/code-connect/node_modules/has-flag": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
+ "node_modules/@img/sharp-libvips-darwin-arm64": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.3.tgz",
+ "integrity": "sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@figma/code-connect/node_modules/html-encoding-sniffer": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "whatwg-encoding": "^3.1.1"
- },
- "engines": {
- "node": ">=18"
+ "node_modules/@img/sharp-libvips-darwin-x64": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.3.tgz",
+ "integrity": "sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@figma/code-connect/node_modules/jackspeak": {
- "version": "3.4.3",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "@isaacs/cliui": "^8.0.2"
- },
+ "node_modules/@img/sharp-libvips-linux-arm": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.3.tgz",
+ "integrity": "sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"funding": {
- "url": "https://github.com/sponsors/isaacs"
- },
- "optionalDependencies": {
- "@pkgjs/parseargs": "^0.11.0"
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@figma/code-connect/node_modules/jsdom": {
- "version": "24.1.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cssstyle": "^4.0.1",
- "data-urls": "^5.0.0",
- "decimal.js": "^10.4.3",
- "form-data": "^4.0.0",
- "html-encoding-sniffer": "^4.0.0",
- "http-proxy-agent": "^7.0.2",
- "https-proxy-agent": "^7.0.5",
- "is-potential-custom-element-name": "^1.0.1",
- "nwsapi": "^2.2.12",
- "parse5": "^7.1.2",
- "rrweb-cssom": "^0.7.1",
- "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.0.0",
- "ws": "^8.18.0",
- "xml-name-validator": "^5.0.0"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "canvas": "^2.11.2"
- },
- "peerDependenciesMeta": {
- "canvas": {
- "optional": true
- }
+ "node_modules/@img/sharp-libvips-linux-arm64": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.3.tgz",
+ "integrity": "sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "funding": {
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@figma/code-connect/node_modules/locate-path": {
- "version": "6.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^5.0.0"
- },
- "engines": {
- "node": ">=10"
- },
+ "node_modules/@img/sharp-libvips-linux-ppc64": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.3.tgz",
+ "integrity": "sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==",
+ "cpu": [
+ "ppc64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@figma/code-connect/node_modules/minimatch": {
- "version": "9.0.9",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
- "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.2"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
+ "node_modules/@img/sharp-libvips-linux-s390x": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.3.tgz",
+ "integrity": "sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==",
+ "cpu": [
+ "s390x"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@figma/code-connect/node_modules/p-limit": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "yocto-queue": "^0.1.0"
- },
- "engines": {
- "node": ">=10"
- },
+ "node_modules/@img/sharp-libvips-linux-x64": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.3.tgz",
+ "integrity": "sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@figma/code-connect/node_modules/p-locate": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^3.0.2"
- },
- "engines": {
- "node": ">=10"
- },
+ "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.3.tgz",
+ "integrity": "sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@figma/code-connect/node_modules/prettier": {
- "version": "2.8.8",
- "dev": true,
- "license": "MIT",
- "bin": {
- "prettier": "bin-prettier.js"
- },
- "engines": {
- "node": ">=10.13.0"
- },
+ "node_modules/@img/sharp-libvips-linuxmusl-x64": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.3.tgz",
+ "integrity": "sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==",
+ "cpu": [
+ "x64"
+ ],
+ "license": "LGPL-3.0-or-later",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"funding": {
- "url": "https://github.com/prettier/prettier?sponsor=1"
+ "url": "https://opencollective.com/libvips"
}
},
- "node_modules/@figma/code-connect/node_modules/supports-color": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
+ "node_modules/@img/sharp-linux-arm": {
+ "version": "0.34.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.4.tgz",
+ "integrity": "sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==",
+ "cpu": [
+ "arm"
+ ],
+ "license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=8"
- }
- },
- "node_modules/@figma/code-connect/node_modules/tr46": {
- "version": "5.1.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "punycode": "^2.3.1"
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
- "engines": {
- "node": ">=18"
+ "funding": {
+ "url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm": "1.2.3"
}
},
- "node_modules/@figma/code-connect/node_modules/typescript": {
- "version": "5.5.4",
- "dev": true,
+ "node_modules/@img/sharp-linux-arm64": {
+ "version": "0.34.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.4.tgz",
+ "integrity": "sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==",
+ "cpu": [
+ "arm64"
+ ],
"license": "Apache-2.0",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=14.17"
- }
- },
- "node_modules/@figma/code-connect/node_modules/w3c-xmlserializer": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "xml-name-validator": "^5.0.0"
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@figma/code-connect/node_modules/whatwg-url": {
- "version": "14.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tr46": "^5.1.0",
- "webidl-conversions": "^7.0.0"
+ "funding": {
+ "url": "https://opencollective.com/libvips"
},
- "engines": {
- "node": ">=18"
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-arm64": "1.2.3"
}
},
- "node_modules/@figma/code-connect/node_modules/xml-name-validator": {
- "version": "5.0.0",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@figma/code-connect/node_modules/zod": {
- "version": "3.23.8",
- "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz",
- "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/colinhacks"
- }
- },
- "node_modules/@floating-ui/core": {
- "version": "1.7.4",
- "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.4.tgz",
- "integrity": "sha512-C3HlIdsBxszvm5McXlB8PeOEWfBhcGBTZGkGlWc2U0KFY5IwG5OQEuQ8rq52DZmcHDlPLd+YFBK+cZcytwIFWg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@floating-ui/utils": "^0.2.10"
- }
- },
- "node_modules/@floating-ui/dom": {
- "version": "1.7.5",
- "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.5.tgz",
- "integrity": "sha512-N0bD2kIPInNHUHehXhMke1rBGs1dwqvC9O9KYMyyjK7iXt7GAhnro7UlcuYcGdS/yYOlq0MAVgrow8IbWJwyqg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@floating-ui/core": "^1.7.4",
- "@floating-ui/utils": "^0.2.10"
- }
- },
- "node_modules/@floating-ui/react-dom": {
- "version": "2.1.6",
- "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz",
- "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@floating-ui/dom": "^1.7.4"
- },
- "peerDependencies": {
- "react": ">=16.8.0",
- "react-dom": ">=16.8.0"
- }
- },
- "node_modules/@floating-ui/utils": {
- "version": "0.2.10",
- "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz",
- "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@github-ui/storybook-addon-performance-panel": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@github-ui/storybook-addon-performance-panel/-/storybook-addon-performance-panel-1.1.4.tgz",
- "integrity": "sha512-clVeSoS1BM2z+nHffOXpnA1J034XALEDfJez6yg7TS7Clfn8eBjgw5FwLjfMvM+kWeG2nwfP6LujRMvJDqj+yg==",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "@storybook/icons": "^2.0.0",
- "@storybook/react": "^10.0.0",
- "react": "^19",
- "storybook": "^10"
- },
- "peerDependenciesMeta": {
- "@storybook/react": {
- "optional": true
- },
- "react": {
- "optional": true
- }
- }
- },
- "node_modules/@github/axe-github": {
- "version": "0.7.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@github/browserslist-config": {
- "version": "1.0.0",
- "license": "MIT"
- },
- "node_modules/@github/markdownlint-github": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/@github/markdownlint-github/-/markdownlint-github-0.8.0.tgz",
- "integrity": "sha512-079sWT/2Z8EI5v02GTtSfvG06E1m8Q6xjYoQiGdPg6rSKVntpfBw6in79fGs+vc9cYihBHl73vkOoDcyH/Jl8g==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lodash-es": "^4.17.15"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@github/mini-throttle": {
- "version": "2.1.1",
- "license": "MIT"
- },
- "node_modules/@github/prettier-config": {
- "version": "0.0.6",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@github/relative-time-element": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@github/relative-time-element/-/relative-time-element-5.0.0.tgz",
- "integrity": "sha512-L/2r0DNR/rMbmHWcsdmhtOiy2gESoGOhItNFD4zJ3nZfHl79Dx3N18Vfx/pYr2lruMOdk1cJZb4wEumm+Dxm1w==",
- "license": "MIT"
- },
- "node_modules/@github/tab-container-element": {
- "version": "4.8.2",
- "license": "MIT"
- },
- "node_modules/@humanfs/core": {
- "version": "0.19.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=18.18.0"
- }
- },
- "node_modules/@humanfs/node": {
- "version": "0.16.6",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "@humanfs/core": "^0.19.1",
- "@humanwhocodes/retry": "^0.3.0"
- },
- "engines": {
- "node": ">=18.18.0"
- }
- },
- "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": {
- "version": "0.3.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=18.18"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "dev": true,
+ "node_modules/@img/sharp-linux-ppc64": {
+ "version": "0.34.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.4.tgz",
+ "integrity": "sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==",
+ "cpu": [
+ "ppc64"
+ ],
"license": "Apache-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=12.22"
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "node_modules/@humanwhocodes/retry": {
- "version": "0.4.3",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=18.18"
+ "url": "https://opencollective.com/libvips"
},
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
- }
- },
- "node_modules/@img/colour": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz",
- "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==",
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">=18"
+ "optionalDependencies": {
+ "@img/sharp-libvips-linux-ppc64": "1.2.3"
}
},
- "node_modules/@img/sharp-darwin-arm64": {
+ "node_modules/@img/sharp-linux-s390x": {
"version": "0.34.4",
- "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.4.tgz",
- "integrity": "sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.4.tgz",
+ "integrity": "sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==",
"cpu": [
- "arm64"
+ "s390x"
],
"license": "Apache-2.0",
"optional": true,
"os": [
- "darwin"
+ "linux"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
@@ -5085,20 +4191,20 @@
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
- "@img/sharp-libvips-darwin-arm64": "1.2.3"
+ "@img/sharp-libvips-linux-s390x": "1.2.3"
}
},
- "node_modules/@img/sharp-darwin-x64": {
+ "node_modules/@img/sharp-linux-x64": {
"version": "0.34.4",
- "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.4.tgz",
- "integrity": "sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.4.tgz",
+ "integrity": "sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==",
"cpu": [
"x64"
],
"license": "Apache-2.0",
"optional": true,
"os": [
- "darwin"
+ "linux"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
@@ -5107,432 +4213,178 @@
"url": "https://opencollective.com/libvips"
},
"optionalDependencies": {
- "@img/sharp-libvips-darwin-x64": "1.2.3"
+ "@img/sharp-libvips-linux-x64": "1.2.3"
}
},
- "node_modules/@img/sharp-libvips-darwin-arm64": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.3.tgz",
- "integrity": "sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==",
+ "node_modules/@img/sharp-linuxmusl-arm64": {
+ "version": "0.34.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.4.tgz",
+ "integrity": "sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==",
"cpu": [
"arm64"
],
- "license": "LGPL-3.0-or-later",
+ "license": "Apache-2.0",
"optional": true,
"os": [
- "darwin"
+ "linux"
],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
"funding": {
"url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-arm64": "1.2.3"
}
},
- "node_modules/@img/sharp-libvips-darwin-x64": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.3.tgz",
- "integrity": "sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==",
+ "node_modules/@img/sharp-linuxmusl-x64": {
+ "version": "0.34.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.4.tgz",
+ "integrity": "sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==",
"cpu": [
"x64"
],
- "license": "LGPL-3.0-or-later",
+ "license": "Apache-2.0",
"optional": true,
"os": [
- "darwin"
+ "linux"
],
+ "engines": {
+ "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ },
"funding": {
"url": "https://opencollective.com/libvips"
+ },
+ "optionalDependencies": {
+ "@img/sharp-libvips-linuxmusl-x64": "1.2.3"
}
},
- "node_modules/@img/sharp-libvips-linux-arm": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.3.tgz",
- "integrity": "sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==",
+ "node_modules/@img/sharp-wasm32": {
+ "version": "0.34.4",
+ "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.4.tgz",
+ "integrity": "sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==",
"cpu": [
- "arm"
+ "wasm32"
],
- "license": "LGPL-3.0-or-later",
+ "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
"optional": true,
- "os": [
- "linux"
- ],
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/@img/sharp-libvips-linux-arm64": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.3.tgz",
- "integrity": "sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==",
- "cpu": [
- "arm64"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "linux"
- ],
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/@img/sharp-libvips-linux-ppc64": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.3.tgz",
- "integrity": "sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==",
- "cpu": [
- "ppc64"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "linux"
- ],
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/@img/sharp-libvips-linux-s390x": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.3.tgz",
- "integrity": "sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==",
- "cpu": [
- "s390x"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "linux"
- ],
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/@img/sharp-libvips-linux-x64": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.3.tgz",
- "integrity": "sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==",
- "cpu": [
- "x64"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "linux"
- ],
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/@img/sharp-libvips-linuxmusl-arm64": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.3.tgz",
- "integrity": "sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==",
- "cpu": [
- "arm64"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "linux"
- ],
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/@img/sharp-libvips-linuxmusl-x64": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.3.tgz",
- "integrity": "sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==",
- "cpu": [
- "x64"
- ],
- "license": "LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "linux"
- ],
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/@img/sharp-linux-arm": {
- "version": "0.34.4",
- "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.4.tgz",
- "integrity": "sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==",
- "cpu": [
- "arm"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
+ "dependencies": {
+ "@emnapi/runtime": "^1.5.0"
+ },
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linux-arm": "1.2.3"
}
},
- "node_modules/@img/sharp-linux-arm64": {
+ "node_modules/@img/sharp-win32-arm64": {
"version": "0.34.4",
- "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.4.tgz",
- "integrity": "sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.4.tgz",
+ "integrity": "sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==",
"cpu": [
"arm64"
],
- "license": "Apache-2.0",
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
"optional": true,
"os": [
- "linux"
+ "win32"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linux-arm64": "1.2.3"
}
},
- "node_modules/@img/sharp-linux-ppc64": {
+ "node_modules/@img/sharp-win32-ia32": {
"version": "0.34.4",
- "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.4.tgz",
- "integrity": "sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.4.tgz",
+ "integrity": "sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==",
"cpu": [
- "ppc64"
+ "ia32"
],
- "license": "Apache-2.0",
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
"optional": true,
"os": [
- "linux"
+ "win32"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linux-ppc64": "1.2.3"
}
},
- "node_modules/@img/sharp-linux-s390x": {
+ "node_modules/@img/sharp-win32-x64": {
"version": "0.34.4",
- "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.4.tgz",
- "integrity": "sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==",
+ "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.4.tgz",
+ "integrity": "sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==",
"cpu": [
- "s390x"
+ "x64"
],
- "license": "Apache-2.0",
+ "license": "Apache-2.0 AND LGPL-3.0-or-later",
"optional": true,
"os": [
- "linux"
+ "win32"
],
"engines": {
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linux-s390x": "1.2.3"
}
},
- "node_modules/@img/sharp-linux-x64": {
- "version": "0.34.4",
- "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.4.tgz",
- "integrity": "sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==",
- "cpu": [
- "x64"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
+ "node_modules/@inquirer/external-editor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.1.tgz",
+ "integrity": "sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chardet": "^2.1.0",
+ "iconv-lite": "^0.6.3"
+ },
"engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ "node": ">=18"
},
- "funding": {
- "url": "https://opencollective.com/libvips"
+ "peerDependencies": {
+ "@types/node": ">=18"
},
- "optionalDependencies": {
- "@img/sharp-libvips-linux-x64": "1.2.3"
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ }
}
},
- "node_modules/@img/sharp-linuxmusl-arm64": {
- "version": "0.34.4",
- "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.4.tgz",
- "integrity": "sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==",
- "cpu": [
- "arm64"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
},
- "optionalDependencies": {
- "@img/sharp-libvips-linuxmusl-arm64": "1.2.3"
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/@img/sharp-linuxmusl-x64": {
- "version": "0.34.4",
- "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.4.tgz",
- "integrity": "sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==",
- "cpu": [
- "x64"
- ],
- "license": "Apache-2.0",
- "optional": true,
- "os": [
- "linux"
- ],
+ "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
"engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
+ "node": ">=12"
},
"funding": {
- "url": "https://opencollective.com/libvips"
- },
- "optionalDependencies": {
- "@img/sharp-libvips-linuxmusl-x64": "1.2.3"
- }
- },
- "node_modules/@img/sharp-wasm32": {
- "version": "0.34.4",
- "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.4.tgz",
- "integrity": "sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==",
- "cpu": [
- "wasm32"
- ],
- "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT",
- "optional": true,
- "dependencies": {
- "@emnapi/runtime": "^1.5.0"
- },
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/@img/sharp-win32-arm64": {
- "version": "0.34.4",
- "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.4.tgz",
- "integrity": "sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==",
- "cpu": [
- "arm64"
- ],
- "license": "Apache-2.0 AND LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/@img/sharp-win32-ia32": {
- "version": "0.34.4",
- "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.4.tgz",
- "integrity": "sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==",
- "cpu": [
- "ia32"
- ],
- "license": "Apache-2.0 AND LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/@img/sharp-win32-x64": {
- "version": "0.34.4",
- "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.4.tgz",
- "integrity": "sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==",
- "cpu": [
- "x64"
- ],
- "license": "Apache-2.0 AND LGPL-3.0-or-later",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": "^18.17.0 || ^20.3.0 || >=21.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/libvips"
- }
- },
- "node_modules/@inquirer/external-editor": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.1.tgz",
- "integrity": "sha512-Oau4yL24d2B5IL4ma4UpbQigkVhzPDXLoqy1ggK4gnHg/stmkffJE4oOXHXF3uz0UEpywG68KcyXsyYpA1Re/Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "chardet": "^2.1.0",
- "iconv-lite": "^0.6.3"
- },
- "engines": {
- "node": ">=18"
- },
- "peerDependencies": {
- "@types/node": ">=18"
- },
- "peerDependenciesMeta": {
- "@types/node": {
- "optional": true
- }
- }
- },
- "node_modules/@isaacs/cliui": {
- "version": "8.0.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^5.1.2",
- "string-width-cjs": "npm:string-width@^4.2.0",
- "strip-ansi": "^7.0.1",
- "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
- "wrap-ansi": "^8.1.0",
- "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@isaacs/cliui/node_modules/ansi-regex": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
- "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
}
},
"node_modules/@isaacs/cliui/node_modules/ansi-styles": {
@@ -5707,6 +4559,7 @@
},
"node_modules/@jridgewell/gen-mapping": {
"version": "0.3.12",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.0",
@@ -5726,6 +4579,7 @@
},
"node_modules/@jridgewell/resolve-uri": {
"version": "3.1.0",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=6.0.0"
@@ -5744,12 +4598,14 @@
"version": "1.5.5",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+ "dev": true,
"license": "MIT"
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.31",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
"integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
@@ -6216,14 +5072,14 @@
}
},
"node_modules/@napi-rs/wasm-runtime": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz",
- "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==",
+ "version": "1.1.6",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.6.tgz",
+ "integrity": "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==",
"dev": true,
"license": "MIT",
"optional": true,
"dependencies": {
- "@tybys/wasm-util": "^0.10.1"
+ "@tybys/wasm-util": "^0.10.3"
},
"funding": {
"type": "github",
@@ -6549,9 +5405,9 @@
}
},
"node_modules/@npmcli/map-workspaces/node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz",
+ "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6642,9 +5498,9 @@
}
},
"node_modules/@npmcli/package-json/node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz",
+ "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -7329,1188 +6185,616 @@
"os": [
"linux"
]
- },
- "node_modules/@oxc-resolver/binding-linux-x64-gnu": {
- "version": "11.20.0",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.20.0.tgz",
- "integrity": "sha512-x2YeSimvhJjKLVD8KSu8f/rqU1potcdEMkApIPJqjZWN7c2Fpt4g2X32WDg1p+XDAmyT7nuQGe0vnhvXeLbH+g==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "libc": [
- "glibc"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@oxc-resolver/binding-linux-x64-musl": {
- "version": "11.20.0",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.20.0.tgz",
- "integrity": "sha512-kcRLEIxpZefeYfLChjpgFf3ilBzRDZ+yobMrpRsQlSrxuFGtm3U6PMU7AaEpMqo3NfDGVyJJseAjnRLzMFHjwQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "libc": [
- "musl"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@oxc-resolver/binding-openharmony-arm64": {
- "version": "11.20.0",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-openharmony-arm64/-/binding-openharmony-arm64-11.20.0.tgz",
- "integrity": "sha512-HHcfnApSZGtKhTiHqe8OZruOZe5XuFQH5/E0Yhj3u8fnFvzkM4/k6WjacUf4SvA0SPEAbfbgYmVPuo0VX/fIBQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "openharmony"
- ]
- },
- "node_modules/@oxc-resolver/binding-wasm32-wasi": {
- "version": "11.20.0",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.20.0.tgz",
- "integrity": "sha512-Tn0y1XOFYHNfK1wp1Z5QK8Rcld/bsOwRISQXfqAZ5IBpv8Gz1IvV39fUWNprqNdRizgcvFhOzWwFun2zkJsyBg==",
- "cpu": [
- "wasm32"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@emnapi/core": "1.10.0",
- "@emnapi/runtime": "1.10.0",
- "@napi-rs/wasm-runtime": "^1.1.4"
- },
- "engines": {
- "node": ">=14.0.0"
- }
- },
- "node_modules/@oxc-resolver/binding-wasm32-wasi/node_modules/@emnapi/core": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz",
- "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "@emnapi/wasi-threads": "1.2.1",
- "tslib": "^2.4.0"
- }
- },
- "node_modules/@oxc-resolver/binding-wasm32-wasi/node_modules/@emnapi/runtime": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz",
- "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "dependencies": {
- "tslib": "^2.4.0"
- }
- },
- "node_modules/@oxc-resolver/binding-win32-arm64-msvc": {
- "version": "11.20.0",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.20.0.tgz",
- "integrity": "sha512-qPi25YNPe4YenS8MgsQU2+bIFHxxpLx1LVna2444cEHqNPhNjvWf9zqj4aWE43H9LpAsTmkkAlA3eL5ElBU3mA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@oxc-resolver/binding-win32-x64-msvc": {
- "version": "11.20.0",
- "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.20.0.tgz",
- "integrity": "sha512-Wb14jWEW8huH6It9F6sXd9vrYmIS7pMrgkU6sxpLxkP+9z+wRgs71hUEhRpcn8FOXAFa27FVWfY2tRpbfTzfLw==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ]
- },
- "node_modules/@pkgjs/parseargs": {
- "version": "0.11.0",
- "dev": true,
- "license": "MIT",
- "optional": true,
- "engines": {
- "node": ">=14"
- }
- },
- "node_modules/@pkgr/core": {
- "version": "0.2.9",
- "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz",
- "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/pkgr"
- }
- },
- "node_modules/@playwright/test": {
- "version": "1.60.0",
- "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.60.0.tgz",
- "integrity": "sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "playwright": "1.60.0"
- },
- "bin": {
- "playwright": "cli.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/@polka/url": {
- "version": "1.0.0-next.29",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@prettier/sync": {
- "version": "0.5.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "make-synchronized": "^0.4.2"
- },
- "funding": {
- "url": "https://github.com/prettier/prettier-synchronized?sponsor=1"
- },
- "peerDependencies": {
- "prettier": "*"
- }
- },
- "node_modules/@primer/behaviors": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/@primer/behaviors/-/behaviors-1.10.3.tgz",
- "integrity": "sha512-cxxWDeR5IE7vdL0Ca0RAAAuPVrU+Bo8CSP1WfawGo4rEP1sZTi7hwl5i7TT0jCTCR0C9IfnQBfSPAkz0oznxUw==",
- "license": "MIT"
- },
- "node_modules/@primer/css": {
- "version": "21.5.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=16.0.0"
- },
- "peerDependencies": {
- "@primer/primitives": "9.x || 10.x"
- }
- },
- "node_modules/@primer/doc-gen": {
- "resolved": "packages/doc-gen",
- "link": true
- },
- "node_modules/@primer/mcp": {
- "resolved": "packages/mcp",
- "link": true
- },
- "node_modules/@primer/octicons": {
- "version": "19.15.5",
- "license": "MIT",
- "dependencies": {
- "object-assign": "^4.1.1"
- }
- },
- "node_modules/@primer/octicons-react": {
- "version": "19.24.1",
- "resolved": "https://registry.npmjs.org/@primer/octicons-react/-/octicons-react-19.24.1.tgz",
- "integrity": "sha512-Y4EqqNb6VrFWfs9HDu3EUpFNm2xbOWMh6uEyXn968gQgXDxfRjBKhWoogrMsbo74S3mGAP0KYSxL8ZebWHDRtA==",
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "peerDependencies": {
- "react": ">=16.3"
- }
- },
- "node_modules/@primer/primitives": {
- "version": "11.5.1",
- "resolved": "https://registry.npmjs.org/@primer/primitives/-/primitives-11.5.1.tgz",
- "integrity": "sha512-NB9uYfJ01FVY6zp+33EoUbJ0paS3JrWY+PqdHPebTvyRtQgL3sX8//3jWqjt3/jL81UMEulJRM2A0hPj0/vFpQ==",
- "license": "MIT"
- },
- "node_modules/@primer/react": {
- "resolved": "packages/react",
- "link": true
- },
- "node_modules/@primer/react-canvas": {
- "resolved": "packages/canvas",
- "link": true
- },
- "node_modules/@primer/styled-react": {
- "resolved": "packages/styled-react",
- "link": true
- },
- "node_modules/@primer/stylelint-config": {
- "version": "13.5.0",
- "resolved": "https://registry.npmjs.org/@primer/stylelint-config/-/stylelint-config-13.5.0.tgz",
- "integrity": "sha512-xDQFWt1bGZ4NzeDsQh7kL6ZKsTfWPwqDd/EELjvunwdIUsApVNlwKsM5KAuhG2x1yt5P+iWsqkAWHTxzNJGu0A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@github/browserslist-config": "^1.0.0",
- "postcss-scss": "^4.0.2",
- "postcss-styled-syntax": "^0.7.0",
- "postcss-value-parser": "^4.0.2",
- "string.prototype.matchall": "^4.0.2",
- "stylelint": "^16.20.0",
- "stylelint-browser-compat": "^1.0.0-beta.140",
- "stylelint-config-standard": "^39.0.1",
- "stylelint-scss": "^6.2.0",
- "stylelint-value-no-unknown-custom-properties": "^6.0.1"
- },
- "engines": {
- "node": ">16.0.0"
- },
- "peerDependencies": {
- "@primer/primitives": "10.x || 11.x"
- }
- },
- "node_modules/@primer/stylelint-config/node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true,
- "license": "Python-2.0"
- },
- "node_modules/@primer/stylelint-config/node_modules/balanced-match": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
- "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@primer/stylelint-config/node_modules/cosmiconfig": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz",
- "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "env-paths": "^2.2.1",
- "import-fresh": "^3.3.0",
- "js-yaml": "^4.1.0",
- "parse-json": "^5.2.0"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/d-fischer"
- },
- "peerDependencies": {
- "typescript": ">=4.9.5"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@primer/stylelint-config/node_modules/css-tree": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz",
- "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mdn-data": "2.27.1",
- "source-map-js": "^1.2.1"
- },
- "engines": {
- "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
- }
- },
- "node_modules/@primer/stylelint-config/node_modules/html-tags": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
- "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@primer/stylelint-config/node_modules/ignore": {
- "version": "7.0.5",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
- "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/@primer/stylelint-config/node_modules/is-plain-object": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
- "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@primer/stylelint-config/node_modules/js-yaml": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
- "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/@primer/stylelint-config/node_modules/known-css-properties": {
- "version": "0.37.0",
- "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz",
- "integrity": "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@primer/stylelint-config/node_modules/mathml-tag-names": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
- "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==",
- "dev": true,
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
- "node_modules/@primer/stylelint-config/node_modules/mdn-data": {
- "version": "2.27.1",
- "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz",
- "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==",
- "dev": true,
- "license": "CC0-1.0"
- },
- "node_modules/@primer/stylelint-config/node_modules/meow": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
- "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@primer/stylelint-config/node_modules/postcss-selector-parser": {
- "version": "7.1.1",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
- "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "cssesc": "^3.0.0",
- "util-deprecate": "^1.0.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@primer/stylelint-config/node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/@primer/stylelint-config/node_modules/stylelint": {
- "version": "16.26.1",
- "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.26.1.tgz",
- "integrity": "sha512-v20V59/crfc8sVTAtge0mdafI3AdnzQ2KsWe6v523L4OA1bJO02S7MO2oyXDCS6iWb9ckIPnqAFVItqSBQr7jw==",
- "dev": true,
- "funding": [
- {
- "type": "opencollective",
- "url": "https://opencollective.com/stylelint"
- },
- {
- "type": "github",
- "url": "https://github.com/sponsors/stylelint"
- }
- ],
- "license": "MIT",
- "dependencies": {
- "@csstools/css-parser-algorithms": "^3.0.5",
- "@csstools/css-syntax-patches-for-csstree": "^1.0.19",
- "@csstools/css-tokenizer": "^3.0.4",
- "@csstools/media-query-list-parser": "^4.0.3",
- "@csstools/selector-specificity": "^5.0.0",
- "@dual-bundle/import-meta-resolve": "^4.2.1",
- "balanced-match": "^2.0.0",
- "colord": "^2.9.3",
- "cosmiconfig": "^9.0.0",
- "css-functions-list": "^3.2.3",
- "css-tree": "^3.1.0",
- "debug": "^4.4.3",
- "fast-glob": "^3.3.3",
- "fastest-levenshtein": "^1.0.16",
- "file-entry-cache": "^11.1.1",
- "global-modules": "^2.0.0",
- "globby": "^11.1.0",
- "globjoin": "^0.1.4",
- "html-tags": "^3.3.1",
- "ignore": "^7.0.5",
- "imurmurhash": "^0.1.4",
- "is-plain-object": "^5.0.0",
- "known-css-properties": "^0.37.0",
- "mathml-tag-names": "^2.1.3",
- "meow": "^13.2.0",
- "micromatch": "^4.0.8",
- "normalize-path": "^3.0.0",
- "picocolors": "^1.1.1",
- "postcss": "^8.5.6",
- "postcss-resolve-nested-selector": "^0.1.6",
- "postcss-safe-parser": "^7.0.1",
- "postcss-selector-parser": "^7.1.0",
- "postcss-value-parser": "^4.2.0",
- "resolve-from": "^5.0.0",
- "string-width": "^4.2.3",
- "supports-hyperlinks": "^3.2.0",
- "svg-tags": "^1.0.0",
- "table": "^6.9.0",
- "write-file-atomic": "^5.0.1"
- },
- "bin": {
- "stylelint": "bin/stylelint.mjs"
- },
- "engines": {
- "node": ">=18.12.0"
- }
- },
- "node_modules/@primer/stylelint-config/node_modules/write-file-atomic": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
- "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
+ },
+ "node_modules/@oxc-resolver/binding-linux-x64-gnu": {
+ "version": "11.20.0",
+ "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-gnu/-/binding-linux-x64-gnu-11.20.0.tgz",
+ "integrity": "sha512-x2YeSimvhJjKLVD8KSu8f/rqU1potcdEMkApIPJqjZWN7c2Fpt4g2X32WDg1p+XDAmyT7nuQGe0vnhvXeLbH+g==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "license": "ISC",
- "dependencies": {
- "imurmurhash": "^0.1.4",
- "signal-exit": "^4.0.1"
- },
- "engines": {
- "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
- }
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
},
- "node_modules/@primer/vitest-config": {
- "resolved": "packages/vitest-config",
- "link": true
+ "node_modules/@oxc-resolver/binding-linux-x64-musl": {
+ "version": "11.20.0",
+ "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-linux-x64-musl/-/binding-linux-x64-musl-11.20.0.tgz",
+ "integrity": "sha512-kcRLEIxpZefeYfLChjpgFf3ilBzRDZ+yobMrpRsQlSrxuFGtm3U6PMU7AaEpMqo3NfDGVyJJseAjnRLzMFHjwQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
},
- "node_modules/@publint/pack": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/@publint/pack/-/pack-0.1.2.tgz",
- "integrity": "sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw==",
+ "node_modules/@oxc-resolver/binding-openharmony-arm64": {
+ "version": "11.20.0",
+ "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-openharmony-arm64/-/binding-openharmony-arm64-11.20.0.tgz",
+ "integrity": "sha512-HHcfnApSZGtKhTiHqe8OZruOZe5XuFQH5/E0Yhj3u8fnFvzkM4/k6WjacUf4SvA0SPEAbfbgYmVPuo0VX/fIBQ==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
"license": "MIT",
- "engines": {
- "node": ">=18"
- },
- "funding": {
- "url": "https://bjornlu.com/sponsor"
- }
+ "optional": true,
+ "os": [
+ "openharmony"
+ ]
},
- "node_modules/@puppeteer/browsers": {
- "version": "2.10.6",
+ "node_modules/@oxc-resolver/binding-wasm32-wasi": {
+ "version": "11.20.0",
+ "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-wasm32-wasi/-/binding-wasm32-wasi-11.20.0.tgz",
+ "integrity": "sha512-Tn0y1XOFYHNfK1wp1Z5QK8Rcld/bsOwRISQXfqAZ5IBpv8Gz1IvV39fUWNprqNdRizgcvFhOzWwFun2zkJsyBg==",
+ "cpu": [
+ "wasm32"
+ ],
"dev": true,
- "license": "Apache-2.0",
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "debug": "^4.4.1",
- "extract-zip": "^2.0.1",
- "progress": "^2.0.3",
- "proxy-agent": "^6.5.0",
- "semver": "^7.7.2",
- "tar-fs": "^3.1.0",
- "yargs": "^17.7.2"
- },
- "bin": {
- "browsers": "lib/cjs/main-cli.js"
+ "@emnapi/core": "1.10.0",
+ "@emnapi/runtime": "1.10.0",
+ "@napi-rs/wasm-runtime": "^1.1.4"
},
"engines": {
- "node": ">=18"
+ "node": ">=14.0.0"
}
},
- "node_modules/@puppeteer/browsers/node_modules/cliui": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
- "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "node_modules/@oxc-resolver/binding-wasm32-wasi/node_modules/@emnapi/core": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz",
+ "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==",
"dev": true,
- "license": "ISC",
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.1",
- "wrap-ansi": "^7.0.0"
- },
- "engines": {
- "node": ">=12"
+ "@emnapi/wasi-threads": "1.2.1",
+ "tslib": "^2.4.0"
}
},
- "node_modules/@puppeteer/browsers/node_modules/yargs": {
- "version": "17.7.3",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz",
- "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==",
+ "node_modules/@oxc-resolver/binding-wasm32-wasi/node_modules/@emnapi/runtime": {
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz",
+ "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==",
"dev": true,
"license": "MIT",
+ "optional": true,
"dependencies": {
- "cliui": "^8.0.1",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.3",
- "y18n": "^5.0.5",
- "yargs-parser": "^21.1.1"
- },
- "engines": {
- "node": ">=12"
+ "tslib": "^2.4.0"
}
},
- "node_modules/@puppeteer/browsers/node_modules/yargs-parser": {
- "version": "21.1.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
- "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "node_modules/@oxc-resolver/binding-win32-arm64-msvc": {
+ "version": "11.20.0",
+ "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-11.20.0.tgz",
+ "integrity": "sha512-qPi25YNPe4YenS8MgsQU2+bIFHxxpLx1LVna2444cEHqNPhNjvWf9zqj4aWE43H9LpAsTmkkAlA3eL5ElBU3mA==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=12"
- }
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
},
- "node_modules/@radix-ui/number": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz",
- "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==",
+ "node_modules/@oxc-resolver/binding-win32-x64-msvc": {
+ "version": "11.20.0",
+ "resolved": "https://registry.npmjs.org/@oxc-resolver/binding-win32-x64-msvc/-/binding-win32-x64-msvc-11.20.0.tgz",
+ "integrity": "sha512-Wb14jWEW8huH6It9F6sXd9vrYmIS7pMrgkU6sxpLxkP+9z+wRgs71hUEhRpcn8FOXAFa27FVWfY2tRpbfTzfLw==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
},
- "node_modules/@radix-ui/primitive": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz",
- "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==",
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
"dev": true,
- "license": "MIT"
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
},
- "node_modules/@radix-ui/react-arrow": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz",
- "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==",
+ "node_modules/@pkgr/core": {
+ "version": "0.3.6",
+ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.3.6.tgz",
+ "integrity": "sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==",
"dev": true,
"license": "MIT",
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/pkgr"
+ }
+ },
+ "node_modules/@playwright/test": {
+ "version": "1.60.0",
+ "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.60.0.tgz",
+ "integrity": "sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==",
+ "dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@radix-ui/react-primitive": "2.1.3"
+ "playwright": "1.60.0"
},
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "bin": {
+ "playwright": "cli.js"
},
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/@radix-ui/react-checkbox": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz",
- "integrity": "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==",
+ "node_modules/@polka/url": {
+ "version": "1.0.0-next.29",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@prettier/sync": {
+ "version": "0.5.5",
"dev": true,
"license": "MIT",
"dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-presence": "1.1.5",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-use-controllable-state": "1.2.2",
- "@radix-ui/react-use-previous": "1.1.1",
- "@radix-ui/react-use-size": "1.1.1"
+ "make-synchronized": "^0.4.2"
},
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "funding": {
+ "url": "https://github.com/prettier/prettier-synchronized?sponsor=1"
},
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
+ "peerDependencies": {
+ "prettier": "*"
}
},
- "node_modules/@radix-ui/react-collection": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz",
- "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==",
+ "node_modules/@primer/behaviors": {
+ "version": "1.10.3",
+ "resolved": "https://registry.npmjs.org/@primer/behaviors/-/behaviors-1.10.3.tgz",
+ "integrity": "sha512-cxxWDeR5IE7vdL0Ca0RAAAuPVrU+Bo8CSP1WfawGo4rEP1sZTi7hwl5i7TT0jCTCR0C9IfnQBfSPAkz0oznxUw==",
+ "license": "MIT"
+ },
+ "node_modules/@primer/css": {
+ "version": "21.5.1",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-slot": "1.2.3"
+ "engines": {
+ "node": ">=16.0.0"
},
"peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
+ "@primer/primitives": "9.x || 10.x"
}
},
- "node_modules/@radix-ui/react-compose-refs": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz",
- "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==",
- "dev": true,
+ "node_modules/@primer/doc-gen": {
+ "resolved": "packages/doc-gen",
+ "link": true
+ },
+ "node_modules/@primer/mcp": {
+ "resolved": "packages/mcp",
+ "link": true
+ },
+ "node_modules/@primer/octicons": {
+ "version": "19.15.5",
"license": "MIT",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
+ "dependencies": {
+ "object-assign": "^4.1.1"
}
},
- "node_modules/@radix-ui/react-context": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz",
- "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==",
- "dev": true,
+ "node_modules/@primer/octicons-react": {
+ "version": "19.28.1",
+ "resolved": "https://registry.npmjs.org/@primer/octicons-react/-/octicons-react-19.28.1.tgz",
+ "integrity": "sha512-ZADBMOPk6qoXXH3GEQuf3fYdhr9wCShgeJRGXsr5liaZG8P+hXGEQAy/eg7/FZjFIu8aRCmx+UBKmHvNTp7zpw==",
"license": "MIT",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "engines": {
+ "node": ">=8"
},
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
+ "peerDependencies": {
+ "react": ">=16.3"
}
},
- "node_modules/@radix-ui/react-dialog": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz",
- "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==",
+ "node_modules/@primer/primitives": {
+ "version": "11.5.1",
+ "resolved": "https://registry.npmjs.org/@primer/primitives/-/primitives-11.5.1.tgz",
+ "integrity": "sha512-NB9uYfJ01FVY6zp+33EoUbJ0paS3JrWY+PqdHPebTvyRtQgL3sX8//3jWqjt3/jL81UMEulJRM2A0hPj0/vFpQ==",
+ "license": "MIT"
+ },
+ "node_modules/@primer/react": {
+ "resolved": "packages/react",
+ "link": true
+ },
+ "node_modules/@primer/react-canvas": {
+ "resolved": "packages/canvas",
+ "link": true
+ },
+ "node_modules/@primer/styled-react": {
+ "resolved": "packages/styled-react",
+ "link": true
+ },
+ "node_modules/@primer/stylelint-config": {
+ "version": "13.5.0",
+ "resolved": "https://registry.npmjs.org/@primer/stylelint-config/-/stylelint-config-13.5.0.tgz",
+ "integrity": "sha512-xDQFWt1bGZ4NzeDsQh7kL6ZKsTfWPwqDd/EELjvunwdIUsApVNlwKsM5KAuhG2x1yt5P+iWsqkAWHTxzNJGu0A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-dismissable-layer": "1.1.11",
- "@radix-ui/react-focus-guards": "1.1.3",
- "@radix-ui/react-focus-scope": "1.1.7",
- "@radix-ui/react-id": "1.1.1",
- "@radix-ui/react-portal": "1.1.9",
- "@radix-ui/react-presence": "1.1.5",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-slot": "1.2.3",
- "@radix-ui/react-use-controllable-state": "1.2.2",
- "aria-hidden": "^1.2.4",
- "react-remove-scroll": "^2.6.3"
+ "@github/browserslist-config": "^1.0.0",
+ "postcss-scss": "^4.0.2",
+ "postcss-styled-syntax": "^0.7.0",
+ "postcss-value-parser": "^4.0.2",
+ "string.prototype.matchall": "^4.0.2",
+ "stylelint": "^16.20.0",
+ "stylelint-browser-compat": "^1.0.0-beta.140",
+ "stylelint-config-standard": "^39.0.1",
+ "stylelint-scss": "^6.2.0",
+ "stylelint-value-no-unknown-custom-properties": "^6.0.1"
},
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "engines": {
+ "node": ">16.0.0"
},
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
+ "peerDependencies": {
+ "@primer/primitives": "10.x || 11.x"
}
},
- "node_modules/@radix-ui/react-direction": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz",
- "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==",
+ "node_modules/@primer/stylelint-config/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "dev": true,
+ "license": "Python-2.0"
+ },
+ "node_modules/@primer/stylelint-config/node_modules/balanced-match": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz",
+ "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@primer/stylelint-config/node_modules/cosmiconfig": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz",
+ "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "env-paths": "^2.2.1",
+ "import-fresh": "^3.3.0",
+ "js-yaml": "^4.1.0",
+ "parse-json": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/d-fischer"
+ },
"peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "typescript": ">=4.9.5"
},
"peerDependenciesMeta": {
- "@types/react": {
+ "typescript": {
"optional": true
}
}
},
- "node_modules/@radix-ui/react-dismissable-layer": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz",
- "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==",
+ "node_modules/@primer/stylelint-config/node_modules/css-tree": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz",
+ "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-use-callback-ref": "1.1.1",
- "@radix-ui/react-use-escape-keydown": "1.1.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "mdn-data": "2.27.1",
+ "source-map-js": "^1.2.1"
},
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
+ "engines": {
+ "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0"
}
},
- "node_modules/@radix-ui/react-focus-guards": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz",
- "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==",
+ "node_modules/@primer/stylelint-config/node_modules/html-tags": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz",
+ "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==",
"dev": true,
"license": "MIT",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "engines": {
+ "node": ">=8"
},
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@radix-ui/react-focus-scope": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz",
- "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==",
+ "node_modules/@primer/stylelint-config/node_modules/ignore": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
+ "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-use-callback-ref": "1.1.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
+ "engines": {
+ "node": ">= 4"
}
},
- "node_modules/@radix-ui/react-icons": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.2.tgz",
- "integrity": "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==",
+ "node_modules/@primer/stylelint-config/node_modules/is-plain-object": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
+ "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
"dev": true,
"license": "MIT",
- "peerDependencies": {
- "react": "^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc"
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "node_modules/@radix-ui/react-id": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz",
- "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==",
+ "node_modules/@primer/stylelint-config/node_modules/js-yaml": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
+ "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@radix-ui/react-use-layout-effect": "1.1.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "argparse": "^2.0.1"
},
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
}
},
- "node_modules/@radix-ui/react-label": {
- "version": "2.1.7",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.7.tgz",
- "integrity": "sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==",
+ "node_modules/@primer/stylelint-config/node_modules/known-css-properties": {
+ "version": "0.37.0",
+ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz",
+ "integrity": "sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@primer/stylelint-config/node_modules/mathml-tag-names": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz",
+ "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@radix-ui/react-primitive": "2.1.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/@radix-ui/react-popover": {
- "version": "1.1.15",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.15.tgz",
- "integrity": "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==",
+ "node_modules/@primer/stylelint-config/node_modules/mdn-data": {
+ "version": "2.27.1",
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz",
+ "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==",
+ "dev": true,
+ "license": "CC0-1.0"
+ },
+ "node_modules/@primer/stylelint-config/node_modules/meow": {
+ "version": "13.2.0",
+ "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz",
+ "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-dismissable-layer": "1.1.11",
- "@radix-ui/react-focus-guards": "1.1.3",
- "@radix-ui/react-focus-scope": "1.1.7",
- "@radix-ui/react-id": "1.1.1",
- "@radix-ui/react-popper": "1.2.8",
- "@radix-ui/react-portal": "1.1.9",
- "@radix-ui/react-presence": "1.1.5",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-slot": "1.2.3",
- "@radix-ui/react-use-controllable-state": "1.2.2",
- "aria-hidden": "^1.2.4",
- "react-remove-scroll": "^2.6.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "engines": {
+ "node": ">=18"
},
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@radix-ui/react-popper": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz",
- "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==",
+ "node_modules/@primer/stylelint-config/node_modules/postcss-selector-parser": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@floating-ui/react-dom": "^2.0.0",
- "@radix-ui/react-arrow": "1.1.7",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-use-callback-ref": "1.1.1",
- "@radix-ui/react-use-layout-effect": "1.1.1",
- "@radix-ui/react-use-rect": "1.1.1",
- "@radix-ui/react-use-size": "1.1.1",
- "@radix-ui/rect": "1.1.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "cssesc": "^3.0.0",
+ "util-deprecate": "^1.0.2"
},
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
+ "engines": {
+ "node": ">=4"
}
},
- "node_modules/@radix-ui/react-portal": {
- "version": "1.1.9",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz",
- "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==",
+ "node_modules/@primer/stylelint-config/node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-use-layout-effect": "1.1.1"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
},
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/@radix-ui/react-presence": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz",
- "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==",
+ "node_modules/@primer/stylelint-config/node_modules/stylelint": {
+ "version": "16.26.1",
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.26.1.tgz",
+ "integrity": "sha512-v20V59/crfc8sVTAtge0mdafI3AdnzQ2KsWe6v523L4OA1bJO02S7MO2oyXDCS6iWb9ckIPnqAFVItqSBQr7jw==",
"dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/stylelint"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/stylelint"
+ }
+ ],
"license": "MIT",
"dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-use-layout-effect": "1.1.1"
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-syntax-patches-for-csstree": "^1.0.19",
+ "@csstools/css-tokenizer": "^3.0.4",
+ "@csstools/media-query-list-parser": "^4.0.3",
+ "@csstools/selector-specificity": "^5.0.0",
+ "@dual-bundle/import-meta-resolve": "^4.2.1",
+ "balanced-match": "^2.0.0",
+ "colord": "^2.9.3",
+ "cosmiconfig": "^9.0.0",
+ "css-functions-list": "^3.2.3",
+ "css-tree": "^3.1.0",
+ "debug": "^4.4.3",
+ "fast-glob": "^3.3.3",
+ "fastest-levenshtein": "^1.0.16",
+ "file-entry-cache": "^11.1.1",
+ "global-modules": "^2.0.0",
+ "globby": "^11.1.0",
+ "globjoin": "^0.1.4",
+ "html-tags": "^3.3.1",
+ "ignore": "^7.0.5",
+ "imurmurhash": "^0.1.4",
+ "is-plain-object": "^5.0.0",
+ "known-css-properties": "^0.37.0",
+ "mathml-tag-names": "^2.1.3",
+ "meow": "^13.2.0",
+ "micromatch": "^4.0.8",
+ "normalize-path": "^3.0.0",
+ "picocolors": "^1.1.1",
+ "postcss": "^8.5.6",
+ "postcss-resolve-nested-selector": "^0.1.6",
+ "postcss-safe-parser": "^7.0.1",
+ "postcss-selector-parser": "^7.1.0",
+ "postcss-value-parser": "^4.2.0",
+ "resolve-from": "^5.0.0",
+ "string-width": "^4.2.3",
+ "supports-hyperlinks": "^3.2.0",
+ "svg-tags": "^1.0.0",
+ "table": "^6.9.0",
+ "write-file-atomic": "^5.0.1"
},
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "bin": {
+ "stylelint": "bin/stylelint.mjs"
},
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
+ "engines": {
+ "node": ">=18.12.0"
}
},
- "node_modules/@radix-ui/react-primitive": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz",
- "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==",
+ "node_modules/@primer/stylelint-config/node_modules/write-file-atomic": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
+ "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
"dev": true,
- "license": "MIT",
+ "license": "ISC",
"dependencies": {
- "@radix-ui/react-slot": "1.2.3"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^4.0.1"
},
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "node_modules/@radix-ui/react-roving-focus": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz",
- "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==",
+ "node_modules/@primer/vitest-config": {
+ "resolved": "packages/vitest-config",
+ "link": true
+ },
+ "node_modules/@publint/pack": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/@publint/pack/-/pack-0.1.2.tgz",
+ "integrity": "sha512-S+9ANAvUmjutrshV4jZjaiG8XQyuJIZ8a4utWmN/vW1sgQ9IfBnPndwkmQYw53QmouOIytT874u65HEmu6H5jw==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-collection": "1.1.7",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-direction": "1.1.1",
- "@radix-ui/react-id": "1.1.1",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-use-callback-ref": "1.1.1",
- "@radix-ui/react-use-controllable-state": "1.2.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "engines": {
+ "node": ">=18"
},
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
+ "funding": {
+ "url": "https://bjornlu.com/sponsor"
}
},
- "node_modules/@radix-ui/react-select": {
- "version": "2.2.6",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz",
- "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==",
+ "node_modules/@puppeteer/browsers": {
+ "version": "2.10.6",
"dev": true,
- "license": "MIT",
+ "license": "Apache-2.0",
"dependencies": {
- "@radix-ui/number": "1.1.1",
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-collection": "1.1.7",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-direction": "1.1.1",
- "@radix-ui/react-dismissable-layer": "1.1.11",
- "@radix-ui/react-focus-guards": "1.1.3",
- "@radix-ui/react-focus-scope": "1.1.7",
- "@radix-ui/react-id": "1.1.1",
- "@radix-ui/react-popper": "1.2.8",
- "@radix-ui/react-portal": "1.1.9",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-slot": "1.2.3",
- "@radix-ui/react-use-callback-ref": "1.1.1",
- "@radix-ui/react-use-controllable-state": "1.2.2",
- "@radix-ui/react-use-layout-effect": "1.1.1",
- "@radix-ui/react-use-previous": "1.1.1",
- "@radix-ui/react-visually-hidden": "1.2.3",
- "aria-hidden": "^1.2.4",
- "react-remove-scroll": "^2.6.3"
+ "debug": "^4.4.1",
+ "extract-zip": "^2.0.1",
+ "progress": "^2.0.3",
+ "proxy-agent": "^6.5.0",
+ "semver": "^7.7.2",
+ "tar-fs": "^3.1.0",
+ "yargs": "^17.7.2"
},
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "bin": {
+ "browsers": "lib/cjs/main-cli.js"
},
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/@radix-ui/react-slot": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz",
- "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==",
+ "node_modules/@puppeteer/browsers/node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
"dev": true,
- "license": "MIT",
+ "license": "ISC",
"dependencies": {
- "@radix-ui/react-compose-refs": "1.1.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
},
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- }
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/@radix-ui/react-tabs": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz",
- "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==",
+ "node_modules/@puppeteer/browsers/node_modules/yargs": {
+ "version": "17.7.3",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz",
+ "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-direction": "1.1.1",
- "@radix-ui/react-id": "1.1.1",
- "@radix-ui/react-presence": "1.1.5",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-roving-focus": "1.1.11",
- "@radix-ui/react-use-controllable-state": "1.2.2"
- },
- "peerDependencies": {
- "@types/react": "*",
- "@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
},
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
+ "engines": {
+ "node": ">=12"
}
},
- "node_modules/@radix-ui/react-toast": {
- "version": "1.2.15",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.15.tgz",
- "integrity": "sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g==",
+ "node_modules/@puppeteer/browsers/node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/@radix-ui/number": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz",
+ "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@radix-ui/primitive": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz",
+ "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@radix-ui/react-arrow": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz",
+ "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@radix-ui/primitive": "1.1.3",
- "@radix-ui/react-collection": "1.1.7",
- "@radix-ui/react-compose-refs": "1.1.2",
- "@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-dismissable-layer": "1.1.11",
- "@radix-ui/react-portal": "1.1.9",
- "@radix-ui/react-presence": "1.1.5",
- "@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-use-callback-ref": "1.1.1",
- "@radix-ui/react-use-controllable-state": "1.2.2",
- "@radix-ui/react-use-layout-effect": "1.1.1",
- "@radix-ui/react-visually-hidden": "1.2.3"
+ "@radix-ui/react-primitive": "2.1.3"
},
"peerDependencies": {
"@types/react": "*",
@@ -8527,86 +6811,70 @@
}
}
},
- "node_modules/@radix-ui/react-tooltip": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz",
- "integrity": "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==",
+ "node_modules/@radix-ui/react-checkbox": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz",
+ "integrity": "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@radix-ui/primitive": "1.1.3",
"@radix-ui/react-compose-refs": "1.1.2",
"@radix-ui/react-context": "1.1.2",
- "@radix-ui/react-dismissable-layer": "1.1.11",
- "@radix-ui/react-id": "1.1.1",
- "@radix-ui/react-popper": "1.2.8",
- "@radix-ui/react-portal": "1.1.9",
"@radix-ui/react-presence": "1.1.5",
"@radix-ui/react-primitive": "2.1.3",
- "@radix-ui/react-slot": "1.2.3",
"@radix-ui/react-use-controllable-state": "1.2.2",
- "@radix-ui/react-visually-hidden": "1.2.3"
+ "@radix-ui/react-use-previous": "1.1.1",
+ "@radix-ui/react-use-size": "1.1.1"
},
"peerDependencies": {
"@types/react": "*",
"@types/react-dom": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
- "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
- },
- "peerDependenciesMeta": {
- "@types/react": {
- "optional": true
- },
- "@types/react-dom": {
- "optional": true
- }
- }
- },
- "node_modules/@radix-ui/react-use-callback-ref": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz",
- "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==",
- "dev": true,
- "license": "MIT",
- "peerDependencies": {
- "@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
}
}
},
- "node_modules/@radix-ui/react-use-controllable-state": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz",
- "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==",
+ "node_modules/@radix-ui/react-collection": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz",
+ "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@radix-ui/react-use-effect-event": "0.0.2",
- "@radix-ui/react-use-layout-effect": "1.1.1"
+ "@radix-ui/react-compose-refs": "1.1.2",
+ "@radix-ui/react-context": "1.1.2",
+ "@radix-ui/react-primitive": "2.1.3",
+ "@radix-ui/react-slot": "1.2.3"
},
"peerDependencies": {
"@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
}
}
},
- "node_modules/@radix-ui/react-use-effect-event": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz",
- "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==",
+ "node_modules/@radix-ui/react-compose-refs": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz",
+ "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@radix-ui/react-use-layout-effect": "1.1.1"
- },
"peerDependencies": {
"@types/react": "*",
"react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
@@ -8617,15 +6885,12 @@
}
}
},
- "node_modules/@radix-ui/react-use-escape-keydown": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz",
- "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==",
+ "node_modules/@radix-ui/react-context": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz",
+ "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@radix-ui/react-use-callback-ref": "1.1.1"
- },
"peerDependencies": {
"@types/react": "*",
"react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
@@ -8636,26 +6901,47 @@
}
}
},
- "node_modules/@radix-ui/react-use-layout-effect": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz",
- "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==",
+ "node_modules/@radix-ui/react-dialog": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz",
+ "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.3",
+ "@radix-ui/react-compose-refs": "1.1.2",
+ "@radix-ui/react-context": "1.1.2",
+ "@radix-ui/react-dismissable-layer": "1.1.11",
+ "@radix-ui/react-focus-guards": "1.1.3",
+ "@radix-ui/react-focus-scope": "1.1.7",
+ "@radix-ui/react-id": "1.1.1",
+ "@radix-ui/react-portal": "1.1.9",
+ "@radix-ui/react-presence": "1.1.5",
+ "@radix-ui/react-primitive": "2.1.3",
+ "@radix-ui/react-slot": "1.2.3",
+ "@radix-ui/react-use-controllable-state": "1.2.2",
+ "aria-hidden": "^1.2.4",
+ "react-remove-scroll": "^2.6.3"
+ },
"peerDependencies": {
"@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
}
}
},
- "node_modules/@radix-ui/react-use-previous": {
+ "node_modules/@radix-ui/react-direction": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz",
- "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz",
+ "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==",
"dev": true,
"license": "MIT",
"peerDependencies": {
@@ -8668,34 +6954,40 @@
}
}
},
- "node_modules/@radix-ui/react-use-rect": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz",
- "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==",
+ "node_modules/@radix-ui/react-dismissable-layer": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz",
+ "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@radix-ui/rect": "1.1.1"
+ "@radix-ui/primitive": "1.1.3",
+ "@radix-ui/react-compose-refs": "1.1.2",
+ "@radix-ui/react-primitive": "2.1.3",
+ "@radix-ui/react-use-callback-ref": "1.1.1",
+ "@radix-ui/react-use-escape-keydown": "1.1.1"
},
"peerDependencies": {
"@types/react": "*",
- "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
"peerDependenciesMeta": {
"@types/react": {
"optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
}
}
},
- "node_modules/@radix-ui/react-use-size": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz",
- "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==",
+ "node_modules/@radix-ui/react-focus-guards": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz",
+ "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@radix-ui/react-use-layout-effect": "1.1.1"
- },
"peerDependencies": {
"@types/react": "*",
"react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
@@ -8706,14 +6998,16 @@
}
}
},
- "node_modules/@radix-ui/react-visually-hidden": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz",
- "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==",
+ "node_modules/@radix-ui/react-focus-scope": {
+ "version": "1.1.7",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz",
+ "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@radix-ui/react-primitive": "2.1.3"
+ "@radix-ui/react-compose-refs": "1.1.2",
+ "@radix-ui/react-primitive": "2.1.3",
+ "@radix-ui/react-use-callback-ref": "1.1.1"
},
"peerDependencies": {
"@types/react": "*",
@@ -8730,600 +7024,579 @@
}
}
},
- "node_modules/@radix-ui/rect": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz",
- "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@rolldown/binding-android-arm64": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.1.tgz",
- "integrity": "sha512-BLf9Wak/gfwVb7NQTQW4wBgL3oAfPy7ArEkhwV543OVw/uY6B47z5xYsqPSZ9PDOorvURPinws6ThaFuNgGLgA==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@rolldown/binding-darwin-arm64": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.1.tgz",
- "integrity": "sha512-rRZRPy/Ynb+Mxu0O6tfPldHeDgAn0sRij+IOUy6sFdUlv3hArGW/DloE3GfAxtqpOJuRNgF74Nr5gM4xBeU2jQ==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@rolldown/binding-darwin-x64": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.1.tgz",
- "integrity": "sha512-/MtefPxhKPyWWFM8L45OWiEqRf+eSU2Qv9ZAyTaoZOoGcoPKxbbhjTJO2/U2IThv0uDZ4NWHc3/oTsR6IEOtww==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@rolldown/binding-freebsd-x64": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.1.tgz",
- "integrity": "sha512-202K+cpIi1kx/Zn7AtxBi4LTXSY67Aszb2K9rNsuW7FeBeh0nqoNmYLOSZidV0p88VPBzMmTZcHAdPNo3kRYzQ==",
- "cpu": [
- "x64"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@rolldown/binding-linux-arm-gnueabihf": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.1.tgz",
- "integrity": "sha512-wl9NfeXNUwrXtUc063tddmZFUI6qiNs1CNOwni0OL4vC7MqVSYugra3ZgtDmtVy8e0DluJTENmzIv2BwqLzT4Q==",
- "cpu": [
- "arm"
- ],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@rolldown/binding-linux-arm64-gnu": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.1.tgz",
- "integrity": "sha512-at2EO4o7D/PJLC4Xik16bU4CcjQE2tSv1LfqMA0TRYQYQihRm3gZeDB8xaX28A9SFedibcAk5DeMCKt4REKG0A==",
- "cpu": [
- "arm64"
- ],
- "dev": true,
- "libc": [
- "glibc"
- ],
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
- }
- },
- "node_modules/@rolldown/binding-linux-arm64-musl": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.1.tgz",
- "integrity": "sha512-5PUjZx366h9tkJTPJF5eibxOlK3sGoeRiBJLLjjEB5/kLDuhr6qB3LkhqLz1smXNgsX+pBhnbcJBrPE30HznAA==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@radix-ui/react-icons": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.2.tgz",
+ "integrity": "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==",
"dev": true,
- "libc": [
- "musl"
- ],
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
+ "peerDependencies": {
+ "react": "^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc"
}
},
- "node_modules/@rolldown/binding-linux-ppc64-gnu": {
+ "node_modules/@radix-ui/react-id": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.1.tgz",
- "integrity": "sha512-1WK84XPeio3tjP1sM/TMXiC0G1i1iq1qGZ71KfNQjEFLU1kwD+Cv5T8nGySg/JUFwLbaScu6ve9DmeXlmqpkFA==",
- "cpu": [
- "ppc64"
- ],
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz",
+ "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==",
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
+ "dependencies": {
+ "@radix-ui/react-use-layout-effect": "1.1.1"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/@rolldown/binding-linux-s390x-gnu": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.1.tgz",
- "integrity": "sha512-1nS1X5z1uMJ369RU25hTpKCFvUwXZp12dIzlzk4S+UxCTcSVGsAE6tzkOSufv/7jnmAtK0ZlrsJxh2fGmsnVSw==",
- "cpu": [
- "s390x"
- ],
+ "node_modules/@radix-ui/react-label": {
+ "version": "2.1.7",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.7.tgz",
+ "integrity": "sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==",
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
+ "dependencies": {
+ "@radix-ui/react-primitive": "2.1.3"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/@rolldown/binding-linux-x64-gnu": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.1.tgz",
- "integrity": "sha512-NwX/wspnq4vYyMFsqbYvzums3ki/Tk8FZbMzMAovPDp3OfLeYKby/D+9osokadXuYEV3OvpeHlwnr/bG8QMixA==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@radix-ui/react-popover": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.15.tgz",
+ "integrity": "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==",
"dev": true,
- "libc": [
- "glibc"
- ],
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.3",
+ "@radix-ui/react-compose-refs": "1.1.2",
+ "@radix-ui/react-context": "1.1.2",
+ "@radix-ui/react-dismissable-layer": "1.1.11",
+ "@radix-ui/react-focus-guards": "1.1.3",
+ "@radix-ui/react-focus-scope": "1.1.7",
+ "@radix-ui/react-id": "1.1.1",
+ "@radix-ui/react-popper": "1.2.8",
+ "@radix-ui/react-portal": "1.1.9",
+ "@radix-ui/react-presence": "1.1.5",
+ "@radix-ui/react-primitive": "2.1.3",
+ "@radix-ui/react-slot": "1.2.3",
+ "@radix-ui/react-use-controllable-state": "1.2.2",
+ "aria-hidden": "^1.2.4",
+ "react-remove-scroll": "^2.6.3"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/@rolldown/binding-linux-x64-musl": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.1.tgz",
- "integrity": "sha512-+n46LhDrJFQM+229y4oXtVpj1G50U/+XuHMlpnisFTEXhrg9f/YIjp/HymX+PVJjBEr7XHRs3CFLelV464pqwA==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@radix-ui/react-popper": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz",
+ "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==",
"dev": true,
- "libc": [
- "musl"
- ],
"license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
+ "dependencies": {
+ "@floating-ui/react-dom": "^2.0.0",
+ "@radix-ui/react-arrow": "1.1.7",
+ "@radix-ui/react-compose-refs": "1.1.2",
+ "@radix-ui/react-context": "1.1.2",
+ "@radix-ui/react-primitive": "2.1.3",
+ "@radix-ui/react-use-callback-ref": "1.1.1",
+ "@radix-ui/react-use-layout-effect": "1.1.1",
+ "@radix-ui/react-use-rect": "1.1.1",
+ "@radix-ui/react-use-size": "1.1.1",
+ "@radix-ui/rect": "1.1.1"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/@rolldown/binding-openharmony-arm64": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.1.tgz",
- "integrity": "sha512-qGwEu47zOWYo7LdRHhCWTNhzwGtxXpdY6CERs8QEOqC0PXGGics/e3vHnyEUKt8xK6YkbZXFUCeklrpB6js8ag==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@radix-ui/react-portal": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz",
+ "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==",
"dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "openharmony"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
+ "dependencies": {
+ "@radix-ui/react-primitive": "2.1.3",
+ "@radix-ui/react-use-layout-effect": "1.1.1"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/@rolldown/binding-wasm32-wasi": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.1.tgz",
- "integrity": "sha512-qczfgEH8u0wHGGOXtA7UMAybNKuQjjEXairyQaw4WzjiMztfbgatG1h4OKays/smhtwbWltpKCRGtVhU6h40Sg==",
- "cpu": [
- "wasm32"
- ],
+ "node_modules/@radix-ui/react-presence": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz",
+ "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==",
"dev": true,
"license": "MIT",
- "optional": true,
"dependencies": {
- "@emnapi/core": "1.11.0",
- "@emnapi/runtime": "1.11.0",
- "@napi-rs/wasm-runtime": "^1.1.5"
+ "@radix-ui/react-compose-refs": "1.1.2",
+ "@radix-ui/react-use-layout-effect": "1.1.1"
},
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/core": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.0.tgz",
- "integrity": "sha512-l9Oo58x0HOP5znGzVhYW9U3e5wVuA4LAZU2AGezTmkhO1CgQRFDhDg4nneHsu/t3WniXg9QrG2nIXL/ZS8ln8Q==",
+ "node_modules/@radix-ui/react-primitive": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz",
+ "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==",
"dev": true,
"license": "MIT",
- "optional": true,
"dependencies": {
- "@emnapi/wasi-threads": "1.2.2",
- "tslib": "^2.4.0"
+ "@radix-ui/react-slot": "1.2.3"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/runtime": {
- "version": "1.11.0",
- "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.0.tgz",
- "integrity": "sha512-55coeOFKHv1ywEcUXJtWU5f+Jr/W5tZDvZig8DLKSwUN1JpROQ4rk/SNOQiFWmaR/VKF4zuFyW1B8JduOSv6Pg==",
+ "node_modules/@radix-ui/react-roving-focus": {
+ "version": "1.1.11",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz",
+ "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==",
"dev": true,
"license": "MIT",
- "optional": true,
"dependencies": {
- "tslib": "^2.4.0"
+ "@radix-ui/primitive": "1.1.3",
+ "@radix-ui/react-collection": "1.1.7",
+ "@radix-ui/react-compose-refs": "1.1.2",
+ "@radix-ui/react-context": "1.1.2",
+ "@radix-ui/react-direction": "1.1.1",
+ "@radix-ui/react-id": "1.1.1",
+ "@radix-ui/react-primitive": "2.1.3",
+ "@radix-ui/react-use-callback-ref": "1.1.1",
+ "@radix-ui/react-use-controllable-state": "1.2.2"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/wasi-threads": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz",
- "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==",
+ "node_modules/@radix-ui/react-select": {
+ "version": "2.2.6",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz",
+ "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==",
"dev": true,
"license": "MIT",
- "optional": true,
"dependencies": {
- "tslib": "^2.4.0"
+ "@radix-ui/number": "1.1.1",
+ "@radix-ui/primitive": "1.1.3",
+ "@radix-ui/react-collection": "1.1.7",
+ "@radix-ui/react-compose-refs": "1.1.2",
+ "@radix-ui/react-context": "1.1.2",
+ "@radix-ui/react-direction": "1.1.1",
+ "@radix-ui/react-dismissable-layer": "1.1.11",
+ "@radix-ui/react-focus-guards": "1.1.3",
+ "@radix-ui/react-focus-scope": "1.1.7",
+ "@radix-ui/react-id": "1.1.1",
+ "@radix-ui/react-popper": "1.2.8",
+ "@radix-ui/react-portal": "1.1.9",
+ "@radix-ui/react-primitive": "2.1.3",
+ "@radix-ui/react-slot": "1.2.3",
+ "@radix-ui/react-use-callback-ref": "1.1.1",
+ "@radix-ui/react-use-controllable-state": "1.2.2",
+ "@radix-ui/react-use-layout-effect": "1.1.1",
+ "@radix-ui/react-use-previous": "1.1.1",
+ "@radix-ui/react-visually-hidden": "1.2.3",
+ "aria-hidden": "^1.2.4",
+ "react-remove-scroll": "^2.6.3"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@napi-rs/wasm-runtime": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.5.tgz",
- "integrity": "sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==",
+ "node_modules/@radix-ui/react-slot": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz",
+ "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==",
"dev": true,
"license": "MIT",
- "optional": true,
"dependencies": {
- "@tybys/wasm-util": "^0.10.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/Brooooooklyn"
+ "@radix-ui/react-compose-refs": "1.1.2"
},
"peerDependencies": {
- "@emnapi/core": "^1.7.1",
- "@emnapi/runtime": "^1.7.1"
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/@rolldown/binding-win32-arm64-msvc": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.1.tgz",
- "integrity": "sha512-4psXSh63mSbwJF+mB8/9yfUUEzBiHYcUjxa32EO9ZwKy0Ypwjcg4F10D8SvVXgd+isy2UUUjF9HJJnDu1T/4Gg==",
- "cpu": [
- "arm64"
- ],
+ "node_modules/@radix-ui/react-tabs": {
+ "version": "1.1.13",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz",
+ "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==",
"dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.3",
+ "@radix-ui/react-context": "1.1.2",
+ "@radix-ui/react-direction": "1.1.1",
+ "@radix-ui/react-id": "1.1.1",
+ "@radix-ui/react-presence": "1.1.5",
+ "@radix-ui/react-primitive": "2.1.3",
+ "@radix-ui/react-roving-focus": "1.1.11",
+ "@radix-ui/react-use-controllable-state": "1.2.2"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/@rolldown/binding-win32-x64-msvc": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.1.tgz",
- "integrity": "sha512-MUvC/HLXVjzkQkWiExdVTEEWf0py+GfWm8WKSZsekG3ih6a21iy0BHPF07X3JIf3ifoklZXTIaHTLPBgH1C3dw==",
- "cpu": [
- "x64"
- ],
+ "node_modules/@radix-ui/react-toast": {
+ "version": "1.2.15",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.15.tgz",
+ "integrity": "sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g==",
"dev": true,
"license": "MIT",
- "optional": true,
- "os": [
- "win32"
- ],
- "engines": {
- "node": "^20.19.0 || >=22.12.0"
+ "dependencies": {
+ "@radix-ui/primitive": "1.1.3",
+ "@radix-ui/react-collection": "1.1.7",
+ "@radix-ui/react-compose-refs": "1.1.2",
+ "@radix-ui/react-context": "1.1.2",
+ "@radix-ui/react-dismissable-layer": "1.1.11",
+ "@radix-ui/react-portal": "1.1.9",
+ "@radix-ui/react-presence": "1.1.5",
+ "@radix-ui/react-primitive": "2.1.3",
+ "@radix-ui/react-use-callback-ref": "1.1.1",
+ "@radix-ui/react-use-controllable-state": "1.2.2",
+ "@radix-ui/react-use-layout-effect": "1.1.1",
+ "@radix-ui/react-visually-hidden": "1.2.3"
+ },
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/@rolldown/plugin-babel": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/@rolldown/plugin-babel/-/plugin-babel-0.2.3.tgz",
- "integrity": "sha512-+zEk16yGlz1F9STiRr6uG9hmIXb6nprjLczV/htGptYuLoCuxb+itZ03RKCEeOhBpDDd1NU7qF6x1VLMUp62bw==",
+ "node_modules/@radix-ui/react-tooltip": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz",
+ "integrity": "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "picomatch": "^4.0.4"
- },
- "engines": {
- "node": ">=22.12.0 || ^24.0.0"
+ "@radix-ui/primitive": "1.1.3",
+ "@radix-ui/react-compose-refs": "1.1.2",
+ "@radix-ui/react-context": "1.1.2",
+ "@radix-ui/react-dismissable-layer": "1.1.11",
+ "@radix-ui/react-id": "1.1.1",
+ "@radix-ui/react-popper": "1.2.8",
+ "@radix-ui/react-portal": "1.1.9",
+ "@radix-ui/react-presence": "1.1.5",
+ "@radix-ui/react-primitive": "2.1.3",
+ "@radix-ui/react-slot": "1.2.3",
+ "@radix-ui/react-use-controllable-state": "1.2.2",
+ "@radix-ui/react-visually-hidden": "1.2.3"
},
"peerDependencies": {
- "@babel/core": "^7.29.0 || ^8.0.0-rc.1",
- "@babel/plugin-transform-runtime": "^7.29.0 || ^8.0.0-rc.1",
- "@babel/runtime": "^7.27.0 || ^8.0.0-rc.1",
- "rolldown": "^1.0.0-rc.5",
- "vite": "^8.0.0"
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
"peerDependenciesMeta": {
- "@babel/plugin-transform-runtime": {
- "optional": true
- },
- "@babel/runtime": {
+ "@types/react": {
"optional": true
},
- "vite": {
+ "@types/react-dom": {
"optional": true
}
}
},
- "node_modules/@rolldown/plugin-babel/node_modules/picomatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
- "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
+ "node_modules/@radix-ui/react-use-callback-ref": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz",
+ "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==",
"dev": true,
"license": "MIT",
- "engines": {
- "node": ">=12"
+ "peerDependencies": {
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
- "node_modules/@rolldown/pluginutils": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz",
- "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@rollup/plugin-babel": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.1.0.tgz",
- "integrity": "sha512-dFZNuFD2YRcoomP4oYf+DvQNSUA9ih+A3vUqopQx5EdtPGo3WBnQcI/S8pwpz91UsGfL0HsMSOlaMld8HrbubA==",
+ "node_modules/@radix-ui/react-use-controllable-state": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz",
+ "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-imports": "^7.18.6",
- "@rollup/pluginutils": "^5.0.1"
- },
- "engines": {
- "node": ">=14.0.0"
+ "@radix-ui/react-use-effect-event": "0.0.2",
+ "@radix-ui/react-use-layout-effect": "1.1.1"
},
"peerDependencies": {
- "@babel/core": "^7.0.0",
- "@types/babel__core": "^7.1.9",
- "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
"peerDependenciesMeta": {
- "@types/babel__core": {
- "optional": true
- },
- "rollup": {
+ "@types/react": {
"optional": true
}
}
},
- "node_modules/@rollup/plugin-commonjs": {
- "version": "29.0.0",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-29.0.0.tgz",
- "integrity": "sha512-U2YHaxR2cU/yAiwKJtJRhnyLk7cifnQw0zUpISsocBDoHDJn+HTV74ABqnwr5bEgWUwFZC9oFL6wLe21lHu5eQ==",
+ "node_modules/@radix-ui/react-use-effect-event": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz",
+ "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@rollup/pluginutils": "^5.0.1",
- "commondir": "^1.0.1",
- "estree-walker": "^2.0.2",
- "fdir": "^6.2.0",
- "is-reference": "1.2.1",
- "magic-string": "^0.30.3",
- "picomatch": "^4.0.2"
- },
- "engines": {
- "node": ">=16.0.0 || 14 >= 14.17"
+ "@radix-ui/react-use-layout-effect": "1.1.1"
},
"peerDependencies": {
- "rollup": "^2.68.0||^3.0.0||^4.0.0"
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
"peerDependenciesMeta": {
- "rollup": {
+ "@types/react": {
"optional": true
}
}
},
- "node_modules/@rollup/plugin-commonjs/node_modules/picomatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
- "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/@rollup/plugin-json": {
- "version": "6.1.0",
+ "node_modules/@radix-ui/react-use-escape-keydown": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz",
+ "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@rollup/pluginutils": "^5.1.0"
- },
- "engines": {
- "node": ">=14.0.0"
+ "@radix-ui/react-use-callback-ref": "1.1.1"
},
"peerDependencies": {
- "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
"peerDependenciesMeta": {
- "rollup": {
+ "@types/react": {
"optional": true
}
}
},
- "node_modules/@rollup/plugin-node-resolve": {
- "version": "16.0.3",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-16.0.3.tgz",
- "integrity": "sha512-lUYM3UBGuM93CnMPG1YocWu7X802BrNF3jW2zny5gQyLQgRFJhV1Sq0Zi74+dh/6NBx1DxFC4b4GXg9wUCG5Qg==",
+ "node_modules/@radix-ui/react-use-layout-effect": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz",
+ "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@rollup/pluginutils": "^5.0.1",
- "@types/resolve": "1.20.2",
- "deepmerge": "^4.2.2",
- "is-module": "^1.0.0",
- "resolve": "^1.22.1"
- },
- "engines": {
- "node": ">=14.0.0"
- },
"peerDependencies": {
- "rollup": "^2.78.0||^3.0.0||^4.0.0"
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
"peerDependenciesMeta": {
- "rollup": {
+ "@types/react": {
"optional": true
}
}
},
- "node_modules/@rollup/plugin-typescript": {
- "version": "12.3.0",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-12.3.0.tgz",
- "integrity": "sha512-7DP0/p7y3t67+NabT9f8oTBFE6gGkto4SA6Np2oudYmZE/m1dt8RB0SjL1msMxFpLo631qjRCcBlAbq1ml/Big==",
+ "node_modules/@radix-ui/react-use-previous": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz",
+ "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@rollup/pluginutils": "^5.1.0",
- "resolve": "^1.22.1"
- },
- "engines": {
- "node": ">=14.0.0"
- },
"peerDependencies": {
- "rollup": "^2.14.0||^3.0.0||^4.0.0",
- "tslib": "*",
- "typescript": ">=3.7.0"
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
"peerDependenciesMeta": {
- "rollup": {
- "optional": true
- },
- "tslib": {
+ "@types/react": {
"optional": true
}
}
},
- "node_modules/@rollup/plugin-virtual": {
- "version": "3.0.2",
+ "node_modules/@radix-ui/react-use-rect": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz",
+ "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==",
"dev": true,
"license": "MIT",
- "engines": {
- "node": ">=14.0.0"
+ "dependencies": {
+ "@radix-ui/rect": "1.1.1"
},
"peerDependencies": {
- "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
"peerDependenciesMeta": {
- "rollup": {
+ "@types/react": {
"optional": true
}
}
},
- "node_modules/@rollup/pluginutils": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz",
- "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==",
+ "node_modules/@radix-ui/react-use-size": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz",
+ "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@types/estree": "^1.0.0",
- "estree-walker": "^2.0.2",
- "picomatch": "^4.0.2"
- },
- "engines": {
- "node": ">=14.0.0"
+ "@radix-ui/react-use-layout-effect": "1.1.1"
},
"peerDependencies": {
- "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ "@types/react": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
},
"peerDependenciesMeta": {
- "rollup": {
+ "@types/react": {
"optional": true
}
}
},
- "node_modules/@rollup/pluginutils/node_modules/picomatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
- "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
+ "node_modules/@radix-ui/react-visually-hidden": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz",
+ "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==",
"dev": true,
"license": "MIT",
- "engines": {
- "node": ">=12"
+ "dependencies": {
+ "@radix-ui/react-primitive": "2.1.3"
},
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
+ "peerDependencies": {
+ "@types/react": "*",
+ "@types/react-dom": "*",
+ "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc",
+ "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ },
+ "@types/react-dom": {
+ "optional": true
+ }
}
},
- "node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz",
- "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==",
- "cpu": [
- "arm"
- ],
+ "node_modules/@radix-ui/rect": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz",
+ "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==",
"dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "android"
- ]
+ "license": "MIT"
},
- "node_modules/@rollup/rollup-android-arm64": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz",
- "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==",
+ "node_modules/@rolldown/binding-android-arm64": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.3.tgz",
+ "integrity": "sha512-DT6Z3PhvioeHMvxo+xHc3KtqggrI7CCTXCmC2h/5zUlp5jVitv7XEy+9q5/7v8IolhlioawpMo8Kg0EEBy7J0g==",
"cpu": [
"arm64"
],
@@ -9332,12 +7605,15 @@
"optional": true,
"os": [
"android"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz",
- "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==",
+ "node_modules/@rolldown/binding-darwin-arm64": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.3.tgz",
+ "integrity": "sha512-0NwgwsjM7LrsuVnXMK3koTpagBNOhloc/BNjKqZjv4V5zI5r13qx69uVhRx+o5Z0yy4Hzq+lpy7TAgUG/ocvrw==",
"cpu": [
"arm64"
],
@@ -9346,12 +7622,15 @@
"optional": true,
"os": [
"darwin"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz",
- "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==",
+ "node_modules/@rolldown/binding-darwin-x64": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.3.tgz",
+ "integrity": "sha512-YtiBp4disu6V560loT6PjMdiRaWmVvDNrUunAalbiFx2ggeJwxdAsgZMcoGP17uyAsTwAj5V1niksxlHnVQ1Sw==",
"cpu": [
"x64"
],
@@ -9360,26 +7639,15 @@
"optional": true,
"os": [
"darwin"
- ]
- },
- "node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz",
- "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==",
- "cpu": [
- "arm64"
],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "freebsd"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz",
- "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==",
+ "node_modules/@rolldown/binding-freebsd-x64": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.3.tgz",
+ "integrity": "sha512-yD3EkEdXk2LypPxnf/kSZHirarsI8gcPzc62SukhR9VJTyvV+F9Q/GxWNuCojc7sXyuVC4DxRGhdDK4X8VSsbw==",
"cpu": [
"x64"
],
@@ -9388,26 +7656,15 @@
"optional": true,
"os": [
"freebsd"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz",
- "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==",
- "cpu": [
- "arm"
],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz",
- "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==",
+ "node_modules/@rolldown/binding-linux-arm-gnueabihf": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.3.tgz",
+ "integrity": "sha512-c+8vieQbsD7HNAHKIA34w0GJ9FedFFuJGD+7E6vz7Q3uqAIugL5p45fhlsj4UaAsHpcmlqugBWMhA0/j7o0sIg==",
"cpu": [
"arm"
],
@@ -9416,179 +7673,135 @@
"optional": true,
"os": [
"linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz",
- "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==",
- "cpu": [
- "arm64"
],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz",
- "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==",
+ "node_modules/@rolldown/binding-linux-arm64-gnu": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.3.tgz",
+ "integrity": "sha512-50jD0uUwLvur7Zz9LHz17kaAdTPjn5wN93hEgjvmYFRZwiR7ZJYovTd5ipyWJDAnXKvZ+wgc+/Ika6dwSF5OcA==",
"cpu": [
"arm64"
],
"dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-loong64-gnu": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz",
- "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==",
- "cpu": [
- "loong64"
+ "libc": [
+ "glibc"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-loong64-musl": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz",
- "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==",
- "cpu": [
- "loong64"
],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-ppc64-gnu": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz",
- "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==",
+ "node_modules/@rolldown/binding-linux-arm64-musl": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.3.tgz",
+ "integrity": "sha512-BO9+oPL8K9poZJBfYPsXNtYjPE5uM3qeehT3aFcW4LITOl+iSqhp0abzjR2nWBUNjIZeKXjAEWBZ64WjNoHd6w==",
"cpu": [
- "ppc64"
+ "arm64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-ppc64-musl": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz",
- "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==",
+ "node_modules/@rolldown/binding-linux-ppc64-gnu": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.3.tgz",
+ "integrity": "sha512-f3VpLB1vQ0Eo6ecr/6cekLnvYMFF4YBFoVGkfkvPLq1bAkbAwHYQPZKoAmG6OJyTcxxoC+AvezGx/S1obNC0Mw==",
"cpu": [
"ppc64"
],
"dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz",
- "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==",
- "cpu": [
- "riscv64"
+ "libc": [
+ "glibc"
],
- "dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-riscv64-musl": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz",
- "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==",
- "cpu": [
- "riscv64"
],
- "dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz",
- "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==",
+ "node_modules/@rolldown/binding-linux-s390x-gnu": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.3.tgz",
+ "integrity": "sha512-AmurZ26Pqx/RI9N1gzEOCklkKXl927yjfXWUUS0O7Puh8ARM/Ob8qfrD3qnWksScdw6cSrW5PSHE9DyLu7+PtA==",
"cpu": [
"s390x"
],
"dev": true,
- "license": "MIT",
- "optional": true,
- "os": [
- "linux"
- ]
- },
- "node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz",
- "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==",
- "cpu": [
- "x64"
+ "libc": [
+ "glibc"
],
"license": "MIT",
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz",
- "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==",
+ "node_modules/@rolldown/binding-linux-x64-gnu": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.3.tgz",
+ "integrity": "sha512-JJpqs8bRGITDOdbkNKnlojzBabbOHrqjSvDr0IVsZObE1lBcPjxItUEY9eWIDbxaJ3cGrXPWGfGkIxFijg/URg==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "glibc"
+ ],
"license": "MIT",
"optional": true,
"os": [
"linux"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-openbsd-x64": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz",
- "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==",
+ "node_modules/@rolldown/binding-linux-x64-musl": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.3.tgz",
+ "integrity": "sha512-rSJcdjPxzA/by/6/rYs+v+bXU7UjvnbUWz8MJb6kh6+knqB1dCrtHg0uu7C/4haqJvqdkYHQ5IGn+tCH9GLW/g==",
"cpu": [
"x64"
],
"dev": true,
+ "libc": [
+ "musl"
+ ],
"license": "MIT",
"optional": true,
"os": [
- "openbsd"
- ]
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-openharmony-arm64": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz",
- "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==",
+ "node_modules/@rolldown/binding-openharmony-arm64": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.3.tgz",
+ "integrity": "sha512-hQ3/PYkDJICgevvyNcVrihVeqq7k1Pp3VZ9lY+dauAYUJKO+auqApvANhvR1An9BhmqYKvW2Mu1F9u4DXSMLxQ==",
"cpu": [
"arm64"
],
@@ -9597,54 +7810,85 @@
"optional": true,
"os": [
"openharmony"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz",
- "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==",
+ "node_modules/@rolldown/binding-wasm32-wasi": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.3.tgz",
+ "integrity": "sha512-Elcv/BtML9lXrV6JuKITc/grN2kYV9gjsQpW8Jfw4ioK0TOkjBjye0nnyqQNy9STNaI20lXNaQBRrD5gSgR0Yg==",
"cpu": [
- "arm64"
+ "wasm32"
],
"dev": true,
"license": "MIT",
"optional": true,
- "os": [
- "win32"
- ]
+ "dependencies": {
+ "@emnapi/core": "1.11.1",
+ "@emnapi/runtime": "1.11.1",
+ "@napi-rs/wasm-runtime": "^1.1.6"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz",
- "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==",
- "cpu": [
- "ia32"
- ],
+ "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/core": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz",
+ "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==",
"dev": true,
"license": "MIT",
"optional": true,
- "os": [
- "win32"
- ]
+ "dependencies": {
+ "@emnapi/wasi-threads": "1.2.2",
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/runtime": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz",
+ "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@rolldown/binding-wasm32-wasi/node_modules/@emnapi/wasi-threads": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz",
+ "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
},
- "node_modules/@rollup/rollup-win32-x64-gnu": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz",
- "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==",
+ "node_modules/@rolldown/binding-win32-arm64-msvc": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.3.tgz",
+ "integrity": "sha512-2DrEfhluH9yhiaFApmsjsjwrSYbNcY1oFTzYSP1a535jDbV98zCFanA/96TBUd0iDFcxGmw9QRExwGCXz3U+/g==",
"cpu": [
- "x64"
+ "arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz",
- "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==",
+ "node_modules/@rolldown/binding-win32-x64-msvc": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.3.tgz",
+ "integrity": "sha512-OL4OMk7UPXOeVGGd3qo5zJyPIljf4AFgk5QAkPPS+OoLuOOozhuaQGC18MxVTnw/06q93gShAJzlwnSCY9YtqA==",
"cpu": [
"x64"
],
@@ -9653,7 +7897,97 @@
"optional": true,
"os": [
"win32"
- ]
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
+ },
+ "node_modules/@rolldown/plugin-babel": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/plugin-babel/-/plugin-babel-0.2.3.tgz",
+ "integrity": "sha512-+zEk16yGlz1F9STiRr6uG9hmIXb6nprjLczV/htGptYuLoCuxb+itZ03RKCEeOhBpDDd1NU7qF6x1VLMUp62bw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^4.0.4"
+ },
+ "engines": {
+ "node": ">=22.12.0 || ^24.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.29.0 || ^8.0.0-rc.1",
+ "@babel/plugin-transform-runtime": "^7.29.0 || ^8.0.0-rc.1",
+ "@babel/runtime": "^7.27.0 || ^8.0.0-rc.1",
+ "rolldown": "^1.0.0-rc.5",
+ "vite": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@babel/plugin-transform-runtime": {
+ "optional": true
+ },
+ "@babel/runtime": {
+ "optional": true
+ },
+ "vite": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rolldown/plugin-babel/node_modules/picomatch": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/@rolldown/pluginutils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz",
+ "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@rollup/pluginutils": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz",
+ "integrity": "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0",
+ "estree-walker": "^2.0.2",
+ "picomatch": "^4.0.2"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "peerDependencies": {
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "rollup": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@rollup/pluginutils/node_modules/picomatch": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
},
"node_modules/@rtsao/scc": {
"version": "1.1.0",
@@ -9765,9 +8099,9 @@
"license": "MIT"
},
"node_modules/@storybook/addon-a11y": {
- "version": "10.4.2",
- "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-10.4.2.tgz",
- "integrity": "sha512-9Bm41peswHVPXm8iDBEA/sCXx+MUQV8Q10yFgNC2zTbtxKamMDb8HZCPIRDxvjBQ5v13eaXA2yZGTwQ+D8S6+g==",
+ "version": "10.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-10.4.6.tgz",
+ "integrity": "sha512-XCJy+f0DFOiCgUU9knRDlLDxVFI+AAQ3/wE/NF85zB9iDPPS2DwkSN+mas3zDgHt66zhN8Cq3/UiyCDUweV9Zw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9779,20 +8113,20 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^10.4.2"
+ "storybook": "^10.4.6"
}
},
"node_modules/@storybook/addon-docs": {
- "version": "10.4.2",
- "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-10.4.2.tgz",
- "integrity": "sha512-CtW1O4xSKZPNtpWgpfp4yB/x4pj/of+3MvlEDfErSlr3Hp3QmEa2pCLaecR08H5LJqJFlt1PtG0UrIynTvgW9w==",
+ "version": "10.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-10.4.6.tgz",
+ "integrity": "sha512-aWAfP5JMiT5a3zBJizwroCRzOCqZwDTJmvsYvwMD3ilIEa/kT1vhf6Xrbk4XIPhDwbh8Hpb/Gfnka1xBYEISWg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@mdx-js/react": "^3.0.0",
- "@storybook/csf-plugin": "10.4.2",
+ "@storybook/csf-plugin": "10.4.6",
"@storybook/icons": "^2.0.2",
- "@storybook/react-dom-shim": "10.4.2",
+ "@storybook/react-dom-shim": "10.4.6",
"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",
"ts-dedent": "^2.0.0"
@@ -9803,7 +8137,7 @@
},
"peerDependencies": {
"@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
- "storybook": "^10.4.2"
+ "storybook": "^10.4.6"
},
"peerDependenciesMeta": {
"@types/react": {
@@ -9830,9 +8164,9 @@
}
},
"node_modules/@storybook/addon-links": {
- "version": "10.4.2",
- "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-10.4.2.tgz",
- "integrity": "sha512-cU8h4/m+oAr8UUwF4teZG2N1ilV+vU+98Ii/Ma+IIx9M/V7i5544UxfAz84dV5Rx2Oho6x8XH3gIvmevSyPi/Q==",
+ "version": "10.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-10.4.6.tgz",
+ "integrity": "sha512-VGfERTsGRFmfvNP3SKprFWkC6Od5kXzSutT5PSZjQ/O9NnCdHhd/RILxFDN2TzZn9ywDc7t5b4AldKmSYCv3EQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9845,7 +8179,7 @@
"peerDependencies": {
"@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
- "storybook": "^10.4.2"
+ "storybook": "^10.4.6"
},
"peerDependenciesMeta": {
"@types/react": {
@@ -9881,13 +8215,13 @@
}
},
"node_modules/@storybook/builder-vite": {
- "version": "10.4.2",
- "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-10.4.2.tgz",
- "integrity": "sha512-d3+i9vbbUfV6hvT90qabmy1WmC4bEJ7iAYDm0217doeA+S6awF25GF0qOy9gN9waU4NMntHoVpdB1YQO2wUj/w==",
+ "version": "10.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-10.4.6.tgz",
+ "integrity": "sha512-BHBtD81HiXUiDQz/CaFynLtWmm7AFUQn8VnXuHipZ8KlnUANopa4yqdVuy/Gwz8ub254uFI5NMZsW/KlgWNgNg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@storybook/csf-plugin": "10.4.2",
+ "@storybook/csf-plugin": "10.4.6",
"ts-dedent": "^2.0.0"
},
"funding": {
@@ -9895,14 +8229,14 @@
"url": "https://opencollective.com/storybook"
},
"peerDependencies": {
- "storybook": "^10.4.2",
+ "storybook": "^10.4.6",
"vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
"node_modules/@storybook/csf-plugin": {
- "version": "10.4.2",
- "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-10.4.2.tgz",
- "integrity": "sha512-GqX/2DeF3/jKs5D7gpDiuT9gd0c/f2TKcnQ5av4/s3YqeN+0nhm7btkCrDfgF16uzE1Zj3OrkxvB3AOkfxWgDg==",
+ "version": "10.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-10.4.6.tgz",
+ "integrity": "sha512-NILLxDqpA/JR/AazGWpsz+4fadJwRU4uhHephGtYpVOWnQA/DkJfKT6zpcJVq8+QA8A2zKMLX3GVKsXIrxjuDA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9915,7 +8249,7 @@
"peerDependencies": {
"esbuild": "*",
"rollup": "*",
- "storybook": "^10.4.2",
+ "storybook": "^10.4.6",
"vite": "*",
"webpack": "*"
},
@@ -9940,14 +8274,13 @@
"license": "MIT"
},
"node_modules/@storybook/icons": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-2.0.2.tgz",
- "integrity": "sha512-KZBCpXsshAIjczYNXR/rlxEtCUX/eAbpFNwKi8bcOomrLA4t/SyPz5RF+lVPO2oZBUE4sAkt43mfJUevQDSEEw==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@storybook/icons/-/icons-2.1.0.tgz",
+ "integrity": "sha512-Fxh9vYpX9bQqFeHRiY8h2ApeRGDzRSMLwJwNZ/AIRqnyOKHxRKL+yFe+ctEkVJmuptRE9u1Hrn8ZZNHyfDKKNg==",
"dev": true,
"license": "MIT",
"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"
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
},
"node_modules/@storybook/mcp": {
@@ -9964,14 +8297,14 @@
}
},
"node_modules/@storybook/react": {
- "version": "10.4.2",
- "resolved": "https://registry.npmjs.org/@storybook/react/-/react-10.4.2.tgz",
- "integrity": "sha512-NfEH3CrdCAgUV4Z7SPN3Iw6nofcueqtRj8iHuo77GNjz0qSfuVi9iS7a8o7x7QFSeIBZwS0Jv3CgmhN8qvoLjg==",
+ "version": "10.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/react/-/react-10.4.6.tgz",
+ "integrity": "sha512-9Y7YecrVFe1/01KYjfOLxVqTg2Aq+IO6TEv6sC2U0PfD0AWCSCmQ91QqgBpN/XW4aFFWoiZNinyXMUlU8zxy2w==",
"dev": true,
"license": "MIT",
"dependencies": {
"@storybook/global": "^5.0.0",
- "@storybook/react-dom-shim": "10.4.2",
+ "@storybook/react-dom-shim": "10.4.6",
"react-docgen": "^8.0.2",
"react-docgen-typescript": "^2.2.2"
},
@@ -9984,7 +8317,7 @@
"@types/react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"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.4.2",
+ "storybook": "^10.4.6",
"typescript": ">= 4.9.x"
},
"peerDependenciesMeta": {
@@ -10000,9 +8333,9 @@
}
},
"node_modules/@storybook/react-dom-shim": {
- "version": "10.4.2",
- "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-10.4.2.tgz",
- "integrity": "sha512-Eng3Yt2NCjPX94QcfyLeUFhrMj0hec2yU9J/qafBVbfj9XrFI8o+0ZwYJ7uXb9ECbvPN4y06dgt/2W/LiR417w==",
+ "version": "10.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-10.4.6.tgz",
+ "integrity": "sha512-iGNmKzrq9vgl2PDrYAnZKI+yvac3Ym+lJXXuQaqlFRS23zA5MNm4EBX+rAG7WulqchoK6NaZ0KQOs2mAgEpTMg==",
"dev": true,
"license": "MIT",
"funding": {
@@ -10014,7 +8347,7 @@
"@types/react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
"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.4.2"
+ "storybook": "^10.4.6"
},
"peerDependenciesMeta": {
"@types/react": {
@@ -10026,16 +8359,16 @@
}
},
"node_modules/@storybook/react-vite": {
- "version": "10.4.2",
- "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-10.4.2.tgz",
- "integrity": "sha512-nGrS74p0ujPSQ7qD5jKLLlao2igfTTb6Kf/uRhVV8XM0uM7WvxR9K20ddCM8jFmx1jY9fRm0UBGaeaXHDIh5SA==",
+ "version": "10.4.6",
+ "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-10.4.6.tgz",
+ "integrity": "sha512-0arEQtybqGYXHbXpTot+Wv9YtG+V5Vp43QayXavPKQ20M8mpEzhyCPKd0EhqMGSC1Z1UEt0hm365WUBhI9LfKA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@joshwooding/vite-plugin-react-docgen-typescript": "^0.7.0",
"@rollup/pluginutils": "^5.0.2",
- "@storybook/builder-vite": "10.4.2",
- "@storybook/react": "10.4.2",
+ "@storybook/builder-vite": "10.4.6",
+ "@storybook/react": "10.4.6",
"empathic": "^2.0.0",
"magic-string": "^0.30.0",
"react-docgen": "^8.0.0",
@@ -10049,7 +8382,7 @@
"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.4.2",
+ "storybook": "^10.4.6",
"vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
@@ -10571,9 +8904,9 @@
]
},
"node_modules/@tybys/wasm-util": {
- "version": "0.10.2",
- "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz",
- "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==",
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz",
+ "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -10737,6 +9070,13 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/jsesc": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/@types/jsesc/-/jsesc-2.5.1.tgz",
+ "integrity": "sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@types/json-schema": {
"version": "7.0.15",
"dev": true,
@@ -10876,7 +9216,9 @@
}
},
"node_modules/@types/resolve": {
- "version": "1.20.2",
+ "version": "1.20.6",
+ "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz",
+ "integrity": "sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==",
"dev": true,
"license": "MIT"
},
@@ -11305,15 +9647,15 @@
}
},
"node_modules/@vitest/browser": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-4.1.5.tgz",
- "integrity": "sha512-iCDGI8c4yg+xmjUg2VsygdAUSIIB4x5Rht/P68OXy1hPELKXHDkzh87lkuTcdYmemRChDkEpB426MmDjzC0ziA==",
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@vitest/browser/-/browser-4.1.9.tgz",
+ "integrity": "sha512-j1BKtWmPcqpMhmx/L9EPLgAJpCb0zKfwoWLmqBbxaogCXHjOwHFSEoHCBfnGtx93xKQwilZ26m+UOsHqHMkRNg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@blazediff/core": "1.9.1",
- "@vitest/mocker": "4.1.5",
- "@vitest/utils": "4.1.5",
+ "@vitest/mocker": "4.1.9",
+ "@vitest/utils": "4.1.9",
"magic-string": "^0.30.21",
"pngjs": "^7.0.0",
"sirv": "^3.0.2",
@@ -11324,18 +9666,18 @@
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
- "vitest": "4.1.5"
+ "vitest": "4.1.9"
}
},
"node_modules/@vitest/browser-playwright": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@vitest/browser-playwright/-/browser-playwright-4.1.5.tgz",
- "integrity": "sha512-CWy0lBQJq97nionyJJdnaU4961IXTl43a7UCu5nHy51IoKxAt6PVIJLo+76rVl7KOOgcWHNkG4kbJu/pW7knvA==",
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@vitest/browser-playwright/-/browser-playwright-4.1.9.tgz",
+ "integrity": "sha512-Bq1rOGf9waevzG3EOkO/dene6bvKTUsZMVg8S1i+WH3JcMjuXEjiahP9rAqZRELUqjBySOJsvvSWqK/B3wjKQw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/browser": "4.1.5",
- "@vitest/mocker": "4.1.5",
+ "@vitest/browser": "4.1.9",
+ "@vitest/mocker": "4.1.9",
"tinyrainbow": "^3.1.0"
},
"funding": {
@@ -11343,7 +9685,7 @@
},
"peerDependencies": {
"playwright": "*",
- "vitest": "4.1.5"
+ "vitest": "4.1.9"
},
"peerDependenciesMeta": {
"playwright": {
@@ -11362,9 +9704,9 @@
}
},
"node_modules/@vitest/browser/node_modules/@vitest/pretty-format": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.5.tgz",
- "integrity": "sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==",
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.9.tgz",
+ "integrity": "sha512-s0iufns3iIFitdgm+YR7g1whCAaGtXz459VS9/PqyKDEEFgYIhsHOQmXgIgDuYCt7DeQmiZT0Qe2OA2p4ZPu5A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11375,13 +9717,13 @@
}
},
"node_modules/@vitest/browser/node_modules/@vitest/utils": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.5.tgz",
- "integrity": "sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==",
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.9.tgz",
+ "integrity": "sha512-A51o8ymO5PpqlWNnBP9ZHPXDIpuMtTLlGSjN7la4US+LJzoUMyhwjA5QXlm39JexgwHKW4Xjs8Z2d3dLCXOeuA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "4.1.5",
+ "@vitest/pretty-format": "4.1.9",
"convert-source-map": "^2.0.0",
"tinyrainbow": "^3.1.0"
},
@@ -11400,9 +9742,9 @@
}
},
"node_modules/@vitest/eslint-plugin": {
- "version": "1.6.16",
- "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.6.16.tgz",
- "integrity": "sha512-2pBN1F1JXq6zTSaYC58CMJa7pGxXIRsLfOioeZM4cPE3pRdSh1ySTSoHPQlOTEF5WgoVzWZQxhGQ3ygT78hOVg==",
+ "version": "1.6.20",
+ "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.6.20.tgz",
+ "integrity": "sha512-xRwWHFG0Utp6hXtbGiWk4VdKXCGdExD8kbWrrmFEiG5dk8anOJ+vbWbeOa8EbkocKQRTsx7JAWETccZiBgFp/Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11446,13 +9788,13 @@
}
},
"node_modules/@vitest/mocker": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.5.tgz",
- "integrity": "sha512-/x2EmFC4mT4NNzqvC3fmesuV97w5FC903KPmey4gsnJiMQ3Be1IlDKVaDaG8iqaLFHqJ2FVEkxZk5VmeLjIItw==",
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.9.tgz",
+ "integrity": "sha512-EVkXzBjrPGM+cK8/ANWgBrkUCfJfb38/EfTSO8h7pWvKkyPkpWxvR7BkD2MyItMF62C97zAEoqdpUixwR/e+Rw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/spy": "4.1.5",
+ "@vitest/spy": "4.1.9",
"estree-walker": "^3.0.3",
"magic-string": "^0.30.21"
},
@@ -11473,9 +9815,9 @@
}
},
"node_modules/@vitest/mocker/node_modules/@vitest/spy": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.5.tgz",
- "integrity": "sha512-2lNOsh6+R2Idnf1TCZqSwYlKN2E/iDlD8sgU59kYVl+OMDmvldO1VDk39smRfpUNwYpNRVn3w4YfuC7KfbBnkQ==",
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.9.tgz",
+ "integrity": "sha512-fHpsS6mIi+PiEW+vcRVOMkX1oSaPKne3VOclSFICPcGOmfKgXPU5iAah+wcNcj2xPrCCmfq99IDGf+EojhhvhA==",
"dev": true,
"license": "MIT",
"funding": {
@@ -11504,13 +9846,13 @@
}
},
"node_modules/@vitest/runner": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.5.tgz",
- "integrity": "sha512-2D+o7Pr82IEO46YPpoA/YU0neeyr6FTerQb5Ro7BUnBuv6NQtT/kmVnczngiMEBhzgqz2UZYl5gArejsyERDSQ==",
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.9.tgz",
+ "integrity": "sha512-KXLMDtc7oe70+3mJfGrPUWPesswH+3sTxAMAMl8DG7I8IUQT4XW718dY5ID3vPUcmlu27CcKfY4P3h3I29SLJg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/utils": "4.1.5",
+ "@vitest/utils": "4.1.9",
"pathe": "^2.0.3"
},
"funding": {
@@ -11518,9 +9860,9 @@
}
},
"node_modules/@vitest/runner/node_modules/@vitest/pretty-format": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.5.tgz",
- "integrity": "sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==",
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.9.tgz",
+ "integrity": "sha512-s0iufns3iIFitdgm+YR7g1whCAaGtXz459VS9/PqyKDEEFgYIhsHOQmXgIgDuYCt7DeQmiZT0Qe2OA2p4ZPu5A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11531,13 +9873,13 @@
}
},
"node_modules/@vitest/runner/node_modules/@vitest/utils": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.5.tgz",
- "integrity": "sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==",
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.9.tgz",
+ "integrity": "sha512-A51o8ymO5PpqlWNnBP9ZHPXDIpuMtTLlGSjN7la4US+LJzoUMyhwjA5QXlm39JexgwHKW4Xjs8Z2d3dLCXOeuA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "4.1.5",
+ "@vitest/pretty-format": "4.1.9",
"convert-source-map": "^2.0.0",
"tinyrainbow": "^3.1.0"
},
@@ -11556,14 +9898,14 @@
}
},
"node_modules/@vitest/snapshot": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.5.tgz",
- "integrity": "sha512-zypXEt4KH/XgKGPUz4eC2AvErYx0My5hfL8oDb1HzGFpEk1P62bxSohdyOmvz+d9UJwanI68MKwr2EquOaOgMQ==",
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.9.tgz",
+ "integrity": "sha512-Jc7RKGNBo8Z28WYIm0Niej4xdSPByRf6mU58VpHQkd6Zh05rlnA+twjbK5HyeIGHxrzsc3mJgS43uM0CZKzaIA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "4.1.5",
- "@vitest/utils": "4.1.5",
+ "@vitest/pretty-format": "4.1.9",
+ "@vitest/utils": "4.1.9",
"magic-string": "^0.30.21",
"pathe": "^2.0.3"
},
@@ -11572,9 +9914,9 @@
}
},
"node_modules/@vitest/snapshot/node_modules/@vitest/pretty-format": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.5.tgz",
- "integrity": "sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==",
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.9.tgz",
+ "integrity": "sha512-s0iufns3iIFitdgm+YR7g1whCAaGtXz459VS9/PqyKDEEFgYIhsHOQmXgIgDuYCt7DeQmiZT0Qe2OA2p4ZPu5A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11585,13 +9927,13 @@
}
},
"node_modules/@vitest/snapshot/node_modules/@vitest/utils": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.5.tgz",
- "integrity": "sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==",
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.9.tgz",
+ "integrity": "sha512-A51o8ymO5PpqlWNnBP9ZHPXDIpuMtTLlGSjN7la4US+LJzoUMyhwjA5QXlm39JexgwHKW4Xjs8Z2d3dLCXOeuA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "4.1.5",
+ "@vitest/pretty-format": "4.1.9",
"convert-source-map": "^2.0.0",
"tinyrainbow": "^3.1.0"
},
@@ -12141,53 +10483,131 @@
"es-shim-unscopables": "^1.0.2"
},
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/array.prototype.tosorted": {
+ "version": "1.1.4",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.3",
+ "es-errors": "^1.3.0",
+ "es-shim-unscopables": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/arraybuffer.prototype.slice": {
+ "version": "1.0.4",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "is-array-buffer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/assertion-error": {
+ "version": "2.0.1",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/ast-kit": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ast-kit/-/ast-kit-3.0.0.tgz",
+ "integrity": "sha512-8OG92q3R35qjC/4i6BLBMg8IB+fClWu/1PEwg2Z9Rn+BuNaiEgJzpzn+pxWOdHJWDCAwu2JP0wCDTozAM4QirQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^8.0.0",
+ "estree-walker": "^3.0.3",
+ "pathe": "^2.0.3"
+ },
+ "engines": {
+ "node": "^22.18.0 || >=24.11.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sxzz"
+ }
+ },
+ "node_modules/ast-kit/node_modules/@babel/helper-string-parser": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz",
+ "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^22.18.0 || >=24.11.0"
+ }
+ },
+ "node_modules/ast-kit/node_modules/@babel/helper-validator-identifier": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.2.tgz",
+ "integrity": "sha512-9Fr9QeyCAyi1BR1jKZ6uYQ24EIhQUx5ReHfQU7drOE+TPOb+w11/dsqLkMOT2U29OdCT71XajrOT8xDc1C7orA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^22.18.0 || >=24.11.0"
}
},
- "node_modules/array.prototype.tosorted": {
- "version": "1.1.4",
+ "node_modules/ast-kit/node_modules/@babel/parser": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz",
+ "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.3",
- "es-errors": "^1.3.0",
- "es-shim-unscopables": "^1.0.2"
+ "@babel/types": "^8.0.0"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
},
"engines": {
- "node": ">= 0.4"
+ "node": "^22.18.0 || >=24.11.0"
}
},
- "node_modules/arraybuffer.prototype.slice": {
- "version": "1.0.4",
+ "node_modules/ast-kit/node_modules/@babel/types": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz",
+ "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "array-buffer-byte-length": "^1.0.1",
- "call-bind": "^1.0.8",
- "define-properties": "^1.2.1",
- "es-abstract": "^1.23.5",
- "es-errors": "^1.3.0",
- "get-intrinsic": "^1.2.6",
- "is-array-buffer": "^3.0.4"
+ "@babel/helper-string-parser": "^8.0.0",
+ "@babel/helper-validator-identifier": "^8.0.0"
},
"engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "node": "^22.18.0 || >=24.11.0"
}
},
- "node_modules/assertion-error": {
- "version": "2.0.1",
+ "node_modules/ast-kit/node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
"dev": true,
"license": "MIT",
- "engines": {
- "node": ">=12"
+ "dependencies": {
+ "@types/estree": "^1.0.0"
}
},
"node_modules/ast-types": {
@@ -12357,54 +10777,6 @@
"url": "https://dotenvx.com"
}
},
- "node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.4.15",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz",
- "integrity": "sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/compat-data": "^7.28.6",
- "@babel/helper-define-polyfill-provider": "^0.6.6",
- "semver": "^6.3.1"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": {
- "version": "6.3.1",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.13.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.6.5",
- "core-js-compat": "^3.43.0"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
- }
- },
- "node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.6.6",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz",
- "integrity": "sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.6.6"
- },
- "peerDependencies": {
- "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
- }
- },
"node_modules/babel-plugin-react-compiler": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-1.0.0.tgz",
@@ -12417,6 +10789,7 @@
},
"node_modules/babel-plugin-styled-components": {
"version": "2.1.4",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.22.5",
@@ -12612,6 +10985,16 @@
"dev": true,
"license": "(MIT OR Apache-2.0)"
},
+ "node_modules/birpc": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/birpc/-/birpc-4.0.0.tgz",
+ "integrity": "sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/antfu"
+ }
+ },
"node_modules/bl": {
"version": "4.1.0",
"dev": true,
@@ -12936,6 +11319,7 @@
},
"node_modules/camelize": {
"version": "1.0.1",
+ "dev": true,
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -13707,24 +12091,12 @@
},
"node_modules/core-js": {
"version": "2.6.12",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
+ "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
"dev": true,
"hasInstallScript": true,
"license": "MIT"
},
- "node_modules/core-js-compat": {
- "version": "3.48.0",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz",
- "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "browserslist": "^4.28.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/core-js"
- }
- },
"node_modules/core-util-is": {
"version": "1.0.2",
"dev": true,
@@ -13851,6 +12223,7 @@
},
"node_modules/css-color-keywords": {
"version": "1.0.0",
+ "dev": true,
"license": "ISC",
"engines": {
"node": ">=4"
@@ -13953,6 +12326,7 @@
},
"node_modules/css-to-react-native": {
"version": "3.2.0",
+ "dev": true,
"license": "MIT",
"dependencies": {
"camelize": "^1.0.0",
@@ -14519,6 +12893,27 @@
"node": ">=10"
}
},
+ "node_modules/dts-resolver": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/dts-resolver/-/dts-resolver-3.0.0.tgz",
+ "integrity": "sha512-1T1f+z+4tl9XD+m+0HBgWoL/nm0bOIffyWaUuUSBlFg/86IWvfx+wjNaO/ybU0AJzG9/Mi5hBUgGV6zCmWEN7Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^22.18.0 || >=24.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sxzz"
+ },
+ "peerDependencies": {
+ "oxc-resolver": ">=11.0.0"
+ },
+ "peerDependenciesMeta": {
+ "oxc-resolver": {
+ "optional": true
+ }
+ }
+ },
"node_modules/dunder-proto": {
"version": "1.0.1",
"license": "MIT",
@@ -14777,11 +13172,6 @@
"node": ">= 0.4"
}
},
- "node_modules/es-module-lexer": {
- "version": "1.7.0",
- "dev": true,
- "license": "MIT"
- },
"node_modules/es-object-atoms": {
"version": "1.1.1",
"license": "MIT",
@@ -14835,6 +13225,8 @@
},
"node_modules/esbuild": {
"version": "0.25.5",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz",
+ "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -14919,18 +13311,21 @@
}
},
"node_modules/eslint": {
- "version": "10.0.2",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.2.tgz",
- "integrity": "sha512-uYixubwmqJZH+KLVYIVKY1JQt7tysXhtj21WSvjcSmU5SVNzMus1bgLe+pAt816yQ8opKfheVVoPLqvVMGejYw==",
+ "version": "10.5.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.5.0.tgz",
+ "integrity": "sha512-1y+7C+vi12bUK1IpZeaV3gsH9fHLBmPvYmPx42pvT/E9yG0IC8g3PUZZgp0+JLJl7ZDK0flc2gc+Aw9dpCvIsQ==",
"dev": true,
"license": "MIT",
+ "workspaces": [
+ "packages/*"
+ ],
"dependencies": {
"@eslint-community/eslint-utils": "^4.8.0",
"@eslint-community/regexpp": "^4.12.2",
- "@eslint/config-array": "^0.23.2",
- "@eslint/config-helpers": "^0.5.2",
- "@eslint/core": "^1.1.0",
- "@eslint/plugin-kit": "^0.6.0",
+ "@eslint/config-array": "^0.23.5",
+ "@eslint/config-helpers": "^0.6.0",
+ "@eslint/core": "^1.2.1",
+ "@eslint/plugin-kit": "^0.7.2",
"@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
"@humanwhocodes/retry": "^0.4.2",
@@ -14939,9 +13334,9 @@
"cross-spawn": "^7.0.6",
"debug": "^4.3.2",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^9.1.1",
+ "eslint-scope": "^9.1.2",
"eslint-visitor-keys": "^5.0.1",
- "espree": "^11.1.1",
+ "espree": "^11.2.0",
"esquery": "^1.7.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
@@ -14952,7 +13347,7 @@
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
- "minimatch": "^10.2.1",
+ "minimatch": "^10.2.4",
"natural-compare": "^1.4.0",
"optionator": "^0.9.3"
},
@@ -15038,15 +13433,15 @@
}
},
"node_modules/eslint-mdx": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/eslint-mdx/-/eslint-mdx-3.7.0.tgz",
- "integrity": "sha512-QpPdJ6EeFthHuIrfgnWneZgwwFNOLFj/nf2jg/tOTBoiUnqNTxUUpTGAn0ZFHYEh5htVVoe5kjvD02oKtxZGeA==",
+ "version": "3.8.1",
+ "resolved": "https://registry.npmjs.org/eslint-mdx/-/eslint-mdx-3.8.1.tgz",
+ "integrity": "sha512-hnsqWwMOHqUANwxWEGt8XbwABPEr5sTOolAzqyUDFdlERpqjFE/icylb+mJl60VICL+kLbbvXWbnFLWZdTqJ2g==",
"dev": true,
"license": "MIT",
"dependencies": {
"acorn": "^8.15.0",
"acorn-jsx": "^5.3.2",
- "espree": "^9.6.1 || ^10.4.0",
+ "espree": "^9.6.1 || ^10.4.0 || ^11.2.0",
"estree-util-visit": "^2.0.0",
"remark-mdx": "^3.1.0",
"remark-parse": "^11.0.0",
@@ -15099,19 +13494,19 @@
}
},
"node_modules/eslint-plugin-clsx": {
- "version": "0.0.12",
- "resolved": "https://registry.npmjs.org/eslint-plugin-clsx/-/eslint-plugin-clsx-0.0.12.tgz",
- "integrity": "sha512-uQEZF9AAi8nqHrN/S9uRZYJhZGxMPrUkwjg6BXxIf9nobndI4zm7UQi6WlNATMLZ90E7oNSXLpJTAVZVAXXqKQ==",
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-clsx/-/eslint-plugin-clsx-0.1.0.tgz",
+ "integrity": "sha512-g4Q3ybgXqFbyculk7OlkpSlP4ODSCwrZtEogWN49MMC3HcMYubl9b7L2Q3w3++43tMZAkQvQMzGkONDu1haJJg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "^8.23.0",
- "@typescript-eslint/utils": "^8.23.0",
- "esquery": "^1.6.0",
- "remeda": "^2.20.0"
+ "@typescript-eslint/types": "^8.58.0",
+ "@typescript-eslint/utils": "^8.58.0",
+ "esquery": "^1.7.0",
+ "remeda": "^2.33.7"
},
"peerDependencies": {
- "eslint": "^8 || ^9"
+ "eslint": "^8 || ^9 || ^10"
}
},
"node_modules/eslint-plugin-escompat": {
@@ -15360,13 +13755,13 @@
"license": "MIT"
},
"node_modules/eslint-plugin-mdx": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-mdx/-/eslint-plugin-mdx-3.7.0.tgz",
- "integrity": "sha512-JXaaQPnKqyti/QSOSQDThLV1EemHm/Fe2l/nMKH0vmhvmABtN/yV/9+GtKgh8UTZwrwuTfQq1HW5eR8HXneNLA==",
+ "version": "3.8.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-mdx/-/eslint-plugin-mdx-3.8.1.tgz",
+ "integrity": "sha512-4OLgotfBxUDc1f6ihXSagT/1+JCCUABA/2r6Kzl6gqFftg4dCV0wBfdwFo6X6UO/FzTHr3g6mVt+6prRXffc/Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "eslint-mdx": "^3.7.0",
+ "eslint-mdx": "^3.8.1",
"mdast-util-from-markdown": "^2.0.2",
"mdast-util-mdx": "^3.0.0",
"micromark-extension-mdxjs": "^3.0.0",
@@ -15427,9 +13822,9 @@
}
},
"node_modules/eslint-plugin-playwright": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-playwright/-/eslint-plugin-playwright-2.8.0.tgz",
- "integrity": "sha512-BRCXbnX20l/ZPOOi1jEqNvqU/UjXpkZRJaghQxSM2kjAvsDph8+osn9u1iMmvoa9Cegbp9d0Skh7vro7242t+Q==",
+ "version": "2.10.4",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-playwright/-/eslint-plugin-playwright-2.10.4.tgz",
+ "integrity": "sha512-l0V/VxyqfFbtqCTxj5AdRn3Q6S/hIW4nKBnKZVleVbZ24N2My6Usj//ytX3dKKqAoSbvKck9YtSytfdZ5qjLuA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15456,14 +13851,14 @@
}
},
"node_modules/eslint-plugin-prettier": {
- "version": "5.5.5",
- "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.5.tgz",
- "integrity": "sha512-hscXkbqUZ2sPithAuLm5MXL+Wph+U7wHngPBv9OMWwlP8iaflyxpjTYZkmdgB4/vPIhemRlBEoLrH7UC1n7aUw==",
+ "version": "5.5.6",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.6.tgz",
+ "integrity": "sha512-ifetmTcxWfz+4qRW3pH/ujdTq2jQIj59AxJMIN26K5avYgU8dxycUETQonWiW+wPrYXA0j3Try0l1CnwVQtDqQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"prettier-linter-helpers": "^1.0.1",
- "synckit": "^0.11.12"
+ "synckit": "^0.11.13"
},
"engines": {
"node": "^14.18.0 || >=16.0.0"
@@ -15487,20 +13882,18 @@
}
},
"node_modules/eslint-plugin-primer-react": {
- "version": "8.5.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-primer-react/-/eslint-plugin-primer-react-8.5.2.tgz",
- "integrity": "sha512-BoBsNxnAyfC0MolFTr1M99tSU1dNRVNdsM5ueygpkpZOxYb71jI0+4HNVSlYBMZ7Y7TuDxX/YKZfdnU9VTfdIw==",
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-primer-react/-/eslint-plugin-primer-react-9.0.0.tgz",
+ "integrity": "sha512-/mYtSawdn7dTEyoyKoewpbzLZd8JOp1oKj2TCLjttzqsXSMYjifjp4Ciuq41iy//uyhyz57zdXJAsYwNfRa/jg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@styled-system/props": "^5.1.5",
"@typescript-eslint/utils": "^8.50.0",
"eslint-plugin-github": "^6.0.0",
"eslint-plugin-jsx-a11y": "^6.7.1",
"eslint-traverse": "^1.0.0",
"lodash": "^4.17.21",
- "styled-system": "^5.1.5",
- "typescript": "^5.8.2"
+ "typescript": "^6.0.3"
},
"engines": {
"node": ">=20"
@@ -15509,20 +13902,6 @@
"eslint": "^9.0.0"
}
},
- "node_modules/eslint-plugin-primer-react/node_modules/typescript": {
- "version": "5.9.3",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
- "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
- "dev": true,
- "license": "Apache-2.0",
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=14.17"
- }
- },
"node_modules/eslint-plugin-react": {
"version": "7.37.5",
"dev": true,
@@ -15724,9 +14103,9 @@
}
},
"node_modules/eslint-plugin-react-refresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.5.2.tgz",
- "integrity": "sha512-hmgTH57GfzoTFjVN0yBwTggnsVUF2tcqi7RJZHqi9lIezSs4eFyAMktA68YD4r5kNw1mxyY4dmkyoFDb3FIqrA==",
+ "version": "0.5.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.5.3.tgz",
+ "integrity": "sha512-5EMmLCV98Pi4o/f/3DP/v/tNqLHMIc9I8LKClNDWhZ9JTho89/kQcitCXQBMG7sAfVRK0Ie3T2EDOzp1YXYiVA==",
"dev": true,
"license": "MIT",
"peerDependencies": {
@@ -15913,9 +14292,9 @@
}
},
"node_modules/eslint-plugin-storybook": {
- "version": "10.4.2",
- "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-10.4.2.tgz",
- "integrity": "sha512-l3/vzLRmb8VSi3X1Bo6/Pa+64naw1jFsZE5jPPA4izvVdNhH1rF4rGuOC3kDTU926qKVBQtKua8D24XWQtvcGg==",
+ "version": "10.4.6",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-10.4.6.tgz",
+ "integrity": "sha512-CfGSXn6zFspeYTU8R7v797MOmJFj8xc6MWf/oGuRwbKeMoSwnliR+OlXSjMZYM1D6gfmwiuH1VX58LSHdn+ZPg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15923,13 +14302,13 @@
},
"peerDependencies": {
"eslint": ">=8",
- "storybook": "^10.4.2"
+ "storybook": "^10.4.6"
}
},
"node_modules/eslint-plugin-testing-library": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-7.16.0.tgz",
- "integrity": "sha512-lHZI6/Olb2oZqxd1+s1nOLCtL2PXKrc1ERz6oDbUKS0xZAMFH3Fy6wJo75z3pXTop3BV6+loPi2MSjIYt3vpAg==",
+ "version": "7.16.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-7.16.2.tgz",
+ "integrity": "sha512-8gleGnQXK2ZA3hHwjCwpYTZvM+9VsrJ+/9kDI8CjqAQGAdMQOdn/rJNu7ZySENuiWlGKQWyZJ4ZjEg2zamaRHw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -15977,9 +14356,9 @@
}
},
"node_modules/eslint/node_modules/@eslint/core": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.1.tgz",
- "integrity": "sha512-QUPblTtE51/7/Zhfv8BDwO0qkkzQL7P/aWWbqcf4xWLEYn1oKjdO0gglQBB4GAsu7u6wjijbCmzsUTy6mnk6oQ==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz",
+ "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -16720,44 +15099,6 @@
"node": ">= 0.8"
}
},
- "node_modules/find-cache-dir": {
- "version": "3.3.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "commondir": "^1.0.1",
- "make-dir": "^3.0.2",
- "pkg-dir": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
- }
- },
- "node_modules/find-cache-dir/node_modules/make-dir": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "semver": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/find-cache-dir/node_modules/semver": {
- "version": "6.3.1",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver.js"
- }
- },
"node_modules/find-chrome-bin": {
"version": "2.0.3",
"dev": true,
@@ -17480,6 +15821,7 @@
},
"node_modules/hoist-non-react-statics": {
"version": "3.3.2",
+ "dev": true,
"license": "BSD-3-Clause",
"dependencies": {
"react-is": "^16.7.0"
@@ -17487,6 +15829,7 @@
},
"node_modules/hoist-non-react-statics/node_modules/react-is": {
"version": "16.13.1",
+ "dev": true,
"license": "MIT"
},
"node_modules/hookified": {
@@ -18107,11 +16450,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-module": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT"
- },
"node_modules/is-number": {
"version": "7.0.0",
"dev": true,
@@ -18181,14 +16519,6 @@
"version": "4.0.0",
"license": "MIT"
},
- "node_modules/is-reference": {
- "version": "1.2.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/estree": "*"
- }
- },
"node_modules/is-regex": {
"version": "1.2.1",
"dev": true,
@@ -18595,6 +16925,7 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
"integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+ "dev": true,
"license": "MIT",
"bin": {
"jsesc": "bin/jsesc"
@@ -19155,6 +17486,7 @@
"version": "4.17.23",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
"integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
+ "dev": true,
"license": "MIT"
},
"node_modules/lodash-es": {
@@ -19169,11 +17501,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/lodash.debounce": {
- "version": "4.0.8",
- "dev": true,
- "license": "MIT"
- },
"node_modules/lodash.get": {
"version": "4.4.2",
"dev": true,
@@ -21096,15 +19423,18 @@
}
},
"node_modules/obug": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz",
- "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.3.tgz",
+ "integrity": "sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==",
"dev": true,
"funding": [
"https://github.com/sponsors/sxzz",
"https://opencollective.com/debug"
],
- "license": "MIT"
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20.0"
+ }
},
"node_modules/on-finished": {
"version": "2.4.1",
@@ -21629,6 +19959,7 @@
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz",
"integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=8.6"
@@ -21750,17 +20081,6 @@
"node": ">=4"
}
},
- "node_modules/pkg-dir": {
- "version": "4.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "find-up": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/playwright": {
"version": "1.60.0",
"resolved": "https://registry.npmjs.org/playwright/-/playwright-1.60.0.tgz",
@@ -22635,6 +20955,26 @@
"postcss": "^8.2.14"
}
},
+ "node_modules/postcss-modules": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-6.0.1.tgz",
+ "integrity": "sha512-zyo2sAkVvuZFFy0gc2+4O+xar5dYlaVy/ebO24KT0ftk/iJevSNyPyQellsBLlnccwh7f6V6Y4GvuKRYToNgpQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "generic-names": "^4.0.0",
+ "icss-utils": "^5.1.0",
+ "lodash.camelcase": "^4.3.0",
+ "postcss-modules-extract-imports": "^3.1.0",
+ "postcss-modules-local-by-default": "^4.0.5",
+ "postcss-modules-scope": "^3.2.0",
+ "postcss-modules-values": "^4.0.0",
+ "string-hash": "^1.1.3"
+ },
+ "peerDependencies": {
+ "postcss": "^8.0.0"
+ }
+ },
"node_modules/postcss-modules-extract-imports": {
"version": "3.1.0",
"dev": true,
@@ -23761,7 +22101,9 @@
}
},
"node_modules/react-intersection-observer": {
- "version": "9.16.0",
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-10.0.3.tgz",
+ "integrity": "sha512-luICLMbs0zxTO/70Zy7K5jOXkABPEVSAF8T3FdZUlctsrIaPLmx8TZe2SSA+CY2HGWfz2INyNTnp82pxNNsShA==",
"license": "MIT",
"peerDependencies": {
"react": "^17.0.0 || ^18.0.0 || ^19.0.0",
@@ -23974,26 +22316,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/regenerate": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz",
- "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/regenerate-unicode-properties": {
- "version": "10.2.2",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz",
- "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "regenerate": "^1.4.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/regenerator-runtime": {
"version": "0.10.5",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
@@ -24004,56 +22326,18 @@
"node_modules/regexp.prototype.flags": {
"version": "1.5.3",
"dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.7",
- "define-properties": "^1.2.1",
- "es-errors": "^1.3.0",
- "set-function-name": "^2.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/regexpu-core": {
- "version": "6.4.0",
- "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz",
- "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "regenerate": "^1.4.2",
- "regenerate-unicode-properties": "^10.2.2",
- "regjsgen": "^0.8.0",
- "regjsparser": "^0.13.0",
- "unicode-match-property-ecmascript": "^2.0.0",
- "unicode-match-property-value-ecmascript": "^2.2.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/regjsgen": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz",
- "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/regjsparser": {
- "version": "0.13.0",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz",
- "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==",
- "dev": true,
- "license": "BSD-2-Clause",
+ "license": "MIT",
"dependencies": {
- "jsesc": "~3.1.0"
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-errors": "^1.3.0",
+ "set-function-name": "^2.0.2"
},
- "bin": {
- "regjsparser": "bin/parser"
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/remark-mdx": {
@@ -24105,11 +22389,16 @@
}
},
"node_modules/remeda": {
- "version": "2.21.4",
+ "version": "2.39.0",
+ "resolved": "https://registry.npmjs.org/remeda/-/remeda-2.39.0.tgz",
+ "integrity": "sha512-3Ki8dU1o3OVu4dwIQ2Pj+yiuP7OnEbmWAGmJ3yDRqopily5jsj8NWzPvbS89H85d6UdONKEcUnrfuHY6jN9vyw==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "type-fest": "^4.40.1"
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/remeda"
}
},
"node_modules/require-directory": {
@@ -24282,13 +22571,13 @@
}
},
"node_modules/rolldown": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.1.tgz",
- "integrity": "sha512-IN750c0p+s3jqJIsFLRZrQazmbAB1kkQDTtQjSt/gbS2ywLhlv4R5Shazer0FZKmuo/BsO3/w2UoYnUjuOZqHg==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.3.tgz",
+ "integrity": "sha512-1F1eEtUBtFvcGm1HQ9TiUIUHPQG7mSAODrhIzjxoUEFuo8OcbrGLiVLkevNgj84TE4lnHvnumwFjhJO5Eu135g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@oxc-project/types": "=0.135.0",
+ "@oxc-project/types": "=0.137.0",
"@rolldown/pluginutils": "^1.0.0"
},
"bin": {
@@ -24298,160 +22587,167 @@
"node": "^20.19.0 || >=22.12.0"
},
"optionalDependencies": {
- "@rolldown/binding-android-arm64": "1.1.1",
- "@rolldown/binding-darwin-arm64": "1.1.1",
- "@rolldown/binding-darwin-x64": "1.1.1",
- "@rolldown/binding-freebsd-x64": "1.1.1",
- "@rolldown/binding-linux-arm-gnueabihf": "1.1.1",
- "@rolldown/binding-linux-arm64-gnu": "1.1.1",
- "@rolldown/binding-linux-arm64-musl": "1.1.1",
- "@rolldown/binding-linux-ppc64-gnu": "1.1.1",
- "@rolldown/binding-linux-s390x-gnu": "1.1.1",
- "@rolldown/binding-linux-x64-gnu": "1.1.1",
- "@rolldown/binding-linux-x64-musl": "1.1.1",
- "@rolldown/binding-openharmony-arm64": "1.1.1",
- "@rolldown/binding-wasm32-wasi": "1.1.1",
- "@rolldown/binding-win32-arm64-msvc": "1.1.1",
- "@rolldown/binding-win32-x64-msvc": "1.1.1"
+ "@rolldown/binding-android-arm64": "1.1.3",
+ "@rolldown/binding-darwin-arm64": "1.1.3",
+ "@rolldown/binding-darwin-x64": "1.1.3",
+ "@rolldown/binding-freebsd-x64": "1.1.3",
+ "@rolldown/binding-linux-arm-gnueabihf": "1.1.3",
+ "@rolldown/binding-linux-arm64-gnu": "1.1.3",
+ "@rolldown/binding-linux-arm64-musl": "1.1.3",
+ "@rolldown/binding-linux-ppc64-gnu": "1.1.3",
+ "@rolldown/binding-linux-s390x-gnu": "1.1.3",
+ "@rolldown/binding-linux-x64-gnu": "1.1.3",
+ "@rolldown/binding-linux-x64-musl": "1.1.3",
+ "@rolldown/binding-openharmony-arm64": "1.1.3",
+ "@rolldown/binding-wasm32-wasi": "1.1.3",
+ "@rolldown/binding-win32-arm64-msvc": "1.1.3",
+ "@rolldown/binding-win32-x64-msvc": "1.1.3"
}
},
- "node_modules/rolldown/node_modules/@oxc-project/types": {
- "version": "0.135.0",
- "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.135.0.tgz",
- "integrity": "sha512-wR+xRdFkUBMvcAjBJ2q2kcZM6d+DKu2NgoOyxZgYwZdLhmiv6+rnO8PZ/P68kMiZtIKm+pW7zyEJ4kSOs0vo+Q==",
+ "node_modules/rolldown-plugin-dts": {
+ "version": "0.26.0",
+ "resolved": "https://registry.npmjs.org/rolldown-plugin-dts/-/rolldown-plugin-dts-0.26.0.tgz",
+ "integrity": "sha512-e+kEPtUiDES0htk5iqkSeF4EzAV7R+vugGB44iPDuw1Kw9E+WyL1VG7PaV0IIjGHLiacztMBcMTyrr8ON9CT1Q==",
"dev": true,
"license": "MIT",
+ "dependencies": {
+ "@babel/generator": "^8.0.0",
+ "@babel/helper-validator-identifier": "^8.0.0",
+ "@babel/parser": "^8.0.0",
+ "ast-kit": "^3.0.0",
+ "birpc": "^4.0.0",
+ "dts-resolver": "^3.0.0",
+ "get-tsconfig": "5.0.0-beta.5",
+ "obug": "^2.1.3"
+ },
+ "engines": {
+ "node": "^22.18.0 || >=24.11.0"
+ },
"funding": {
- "url": "https://github.com/sponsors/Boshen"
+ "url": "https://github.com/sponsors/sxzz"
+ },
+ "peerDependencies": {
+ "@ts-macro/tsc": "^0.3.6",
+ "@typescript/native-preview": ">=7.0.0-dev.20260325.1",
+ "rolldown": "^1.0.0",
+ "typescript": "^5.0.0 || ^6.0.0",
+ "vue-tsc": "~3.2.0 || ~3.3.0"
+ },
+ "peerDependenciesMeta": {
+ "@ts-macro/tsc": {
+ "optional": true
+ },
+ "@typescript/native-preview": {
+ "optional": true
+ },
+ "typescript": {
+ "optional": true
+ },
+ "vue-tsc": {
+ "optional": true
+ }
}
},
- "node_modules/rollup": {
- "version": "4.59.0",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz",
- "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==",
+ "node_modules/rolldown-plugin-dts/node_modules/@babel/generator": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-8.0.0.tgz",
+ "integrity": "sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@types/estree": "1.0.8"
- },
- "bin": {
- "rollup": "dist/bin/rollup"
+ "@babel/parser": "^8.0.0",
+ "@babel/types": "^8.0.0",
+ "@jridgewell/gen-mapping": "^0.3.12",
+ "@jridgewell/trace-mapping": "^0.3.28",
+ "@types/jsesc": "^2.5.0",
+ "jsesc": "^3.0.2"
},
"engines": {
- "node": ">=18.0.0",
- "npm": ">=8.0.0"
- },
- "optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.59.0",
- "@rollup/rollup-android-arm64": "4.59.0",
- "@rollup/rollup-darwin-arm64": "4.59.0",
- "@rollup/rollup-darwin-x64": "4.59.0",
- "@rollup/rollup-freebsd-arm64": "4.59.0",
- "@rollup/rollup-freebsd-x64": "4.59.0",
- "@rollup/rollup-linux-arm-gnueabihf": "4.59.0",
- "@rollup/rollup-linux-arm-musleabihf": "4.59.0",
- "@rollup/rollup-linux-arm64-gnu": "4.59.0",
- "@rollup/rollup-linux-arm64-musl": "4.59.0",
- "@rollup/rollup-linux-loong64-gnu": "4.59.0",
- "@rollup/rollup-linux-loong64-musl": "4.59.0",
- "@rollup/rollup-linux-ppc64-gnu": "4.59.0",
- "@rollup/rollup-linux-ppc64-musl": "4.59.0",
- "@rollup/rollup-linux-riscv64-gnu": "4.59.0",
- "@rollup/rollup-linux-riscv64-musl": "4.59.0",
- "@rollup/rollup-linux-s390x-gnu": "4.59.0",
- "@rollup/rollup-linux-x64-gnu": "4.59.0",
- "@rollup/rollup-linux-x64-musl": "4.59.0",
- "@rollup/rollup-openbsd-x64": "4.59.0",
- "@rollup/rollup-openharmony-arm64": "4.59.0",
- "@rollup/rollup-win32-arm64-msvc": "4.59.0",
- "@rollup/rollup-win32-ia32-msvc": "4.59.0",
- "@rollup/rollup-win32-x64-gnu": "4.59.0",
- "@rollup/rollup-win32-x64-msvc": "4.59.0",
- "fsevents": "~2.3.2"
+ "node": "^22.18.0 || >=24.11.0"
}
},
- "node_modules/rollup-plugin-esbuild": {
- "version": "6.2.1",
+ "node_modules/rolldown-plugin-dts/node_modules/@babel/helper-string-parser": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-8.0.0.tgz",
+ "integrity": "sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "debug": "^4.4.0",
- "es-module-lexer": "^1.6.0",
- "get-tsconfig": "^4.10.0",
- "unplugin-utils": "^0.2.4"
- },
"engines": {
- "node": ">=14.18.0"
- },
- "peerDependencies": {
- "esbuild": ">=0.18.0",
- "rollup": "^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0"
+ "node": "^22.18.0 || >=24.11.0"
}
},
- "node_modules/rollup-plugin-import-css": {
- "resolved": "packages/rollup-plugin-import-css",
- "link": true
- },
- "node_modules/rollup-plugin-typescript2": {
- "version": "0.36.0",
+ "node_modules/rolldown-plugin-dts/node_modules/@babel/helper-validator-identifier": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-8.0.2.tgz",
+ "integrity": "sha512-9Fr9QeyCAyi1BR1jKZ6uYQ24EIhQUx5ReHfQU7drOE+TPOb+w11/dsqLkMOT2U29OdCT71XajrOT8xDc1C7orA==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "@rollup/pluginutils": "^4.1.2",
- "find-cache-dir": "^3.3.2",
- "fs-extra": "^10.0.0",
- "semver": "^7.5.4",
- "tslib": "^2.6.2"
- },
- "peerDependencies": {
- "rollup": ">=1.26.3",
- "typescript": ">=2.4.0"
+ "engines": {
+ "node": "^22.18.0 || >=24.11.0"
}
},
- "node_modules/rollup-plugin-typescript2/node_modules/@rollup/pluginutils": {
- "version": "4.2.1",
+ "node_modules/rolldown-plugin-dts/node_modules/@babel/parser": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-8.0.0.tgz",
+ "integrity": "sha512-aLxAE+imI9bCcyaPrUDjBv3uSkWieifjLe0kuFOZF0zli0L6GCsTmsePnTr55adbIAgYz2zhN1vnFimCBUYcRQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "estree-walker": "^2.0.1",
- "picomatch": "^2.2.2"
+ "@babel/types": "^8.0.0"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
},
"engines": {
- "node": ">= 8.0.0"
+ "node": "^22.18.0 || >=24.11.0"
}
},
- "node_modules/rollup-plugin-typescript2/node_modules/fs-extra": {
- "version": "10.1.0",
+ "node_modules/rolldown-plugin-dts/node_modules/@babel/types": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-8.0.0.tgz",
+ "integrity": "sha512-K8ponJDxBwDHigkeFqaqT5wLGl4bTlwMafR8k7b5CPxr6Ww+UG9ls8Yx6Tcpboxu97eeGVEEyKcHmEyOwN1vSw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
+ "@babel/helper-string-parser": "^8.0.0",
+ "@babel/helper-validator-identifier": "^8.0.0"
},
"engines": {
- "node": ">=12"
+ "node": "^22.18.0 || >=24.11.0"
}
},
- "node_modules/rollup-plugin-typescript2/node_modules/jsonfile": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
- "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "node_modules/rolldown-plugin-dts/node_modules/get-tsconfig": {
+ "version": "5.0.0-beta.5",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-5.0.0-beta.5.tgz",
+ "integrity": "sha512-/6gFNr0N04nob252sTQxyFLi3eKFRqIg1I87YcqAMT1i6SQrSF6KujUEQrtrjMV0H/eejTCltLdDSTEMzHbnsQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "universalify": "^2.0.0"
+ "resolve-pkg-maps": "^1.0.0"
},
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
+ "engines": {
+ "node": ">=20.20.0"
+ },
+ "funding": {
+ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
}
},
- "node_modules/rollup-plugin-typescript2/node_modules/universalify": {
- "version": "2.0.1",
+ "node_modules/rolldown-plugin-import-css": {
+ "resolved": "packages/rolldown-plugin-import-css",
+ "link": true
+ },
+ "node_modules/rolldown-plugin-preserve-directives": {
+ "resolved": "packages/rolldown-plugin-preserve-directives",
+ "link": true
+ },
+ "node_modules/rolldown/node_modules/@oxc-project/types": {
+ "version": "0.137.0",
+ "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.137.0.tgz",
+ "integrity": "sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==",
"dev": true,
"license": "MIT",
- "engines": {
- "node": ">= 10.0.0"
+ "funding": {
+ "url": "https://github.com/sponsors/Boshen"
}
},
"node_modules/router": {
@@ -24860,6 +23156,7 @@
},
"node_modules/shallowequal": {
"version": "1.1.0",
+ "dev": true,
"license": "MIT"
},
"node_modules/sharp": {
@@ -25328,9 +23625,9 @@
"license": "MIT"
},
"node_modules/storybook": {
- "version": "10.4.2",
- "resolved": "https://registry.npmjs.org/storybook/-/storybook-10.4.2.tgz",
- "integrity": "sha512-5Ax5vbHxFgMBGGhQDm75Rrumm/HZC4ICFhMcJaM0UlqnC/4FKj/IaZtImZFupknyiiyUEcWHPQFA2kX3/VSv1A==",
+ "version": "10.4.6",
+ "resolved": "https://registry.npmjs.org/storybook/-/storybook-10.4.6.tgz",
+ "integrity": "sha512-6wkA6LxfDSSilloITsrFOJfsnw0mDUP2h8Ls+lRt8oRsudtz2RWFhLv+Toiwg6NW7hUpdTDc2hzR7DztJid6+A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -25341,7 +23638,7 @@
"@vitest/expect": "3.2.4",
"@vitest/spy": "3.2.4",
"@webcontainer/env": "^1.1.1",
- "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0 || ^0.26.0 || ^0.27.0",
+ "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0 || ^0.26.0 || ^0.27.0 || ^0.28.0",
"open": "^10.2.0",
"oxc-parser": "^0.127.0",
"oxc-resolver": "^11.19.1",
@@ -25629,6 +23926,7 @@
},
"node_modules/styled-components": {
"version": "5.3.11",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-module-imports": "^7.0.0",
@@ -25657,6 +23955,7 @@
},
"node_modules/styled-components/node_modules/@emotion/is-prop-valid": {
"version": "1.2.2",
+ "dev": true,
"license": "MIT",
"dependencies": {
"@emotion/memoize": "^0.8.1"
@@ -25664,6 +23963,7 @@
},
"node_modules/styled-components/node_modules/@emotion/memoize": {
"version": "0.8.1",
+ "dev": true,
"license": "MIT"
},
"node_modules/styled-jsx": {
@@ -26471,13 +24771,13 @@
"license": "MIT"
},
"node_modules/synckit": {
- "version": "0.11.12",
- "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz",
- "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==",
+ "version": "0.11.13",
+ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.13.tgz",
+ "integrity": "sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@pkgr/core": "^0.2.9"
+ "@pkgr/core": "^0.3.6"
},
"engines": {
"node": "^14.18.0 || >=16.0.0"
@@ -27086,11 +25386,13 @@
}
},
"node_modules/type-fest": {
- "version": "4.41.0",
+ "version": "3.13.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz",
+ "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==",
"dev": true,
"license": "(MIT OR CC0-1.0)",
"engines": {
- "node": ">=16"
+ "node": ">=14.16"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
@@ -27426,50 +25728,6 @@
"integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==",
"license": "MIT"
},
- "node_modules/unicode-canonical-property-names-ecmascript": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz",
- "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unicode-match-property-ecmascript": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz",
- "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "unicode-canonical-property-names-ecmascript": "^2.0.0",
- "unicode-property-aliases-ecmascript": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unicode-match-property-value-ecmascript": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz",
- "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/unicode-property-aliases-ecmascript": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz",
- "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/unicode-trie": {
"version": "2.0.0",
"dev": true,
@@ -27547,9 +25805,9 @@
}
},
"node_modules/unified-engine/node_modules/@types/node": {
- "version": "22.19.15",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.15.tgz",
- "integrity": "sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==",
+ "version": "22.20.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-22.20.0.tgz",
+ "integrity": "sha512-QWlFW2wf3nTjC13/DqRnBpR4ZO36VJH/JVBkA/vcnmbTBNQIlnObqyqZE1tUR7+Ni23Lda8R1BxMfbXRpCUx5g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -27564,9 +25822,9 @@
"license": "MIT"
},
"node_modules/unified-engine/node_modules/brace-expansion": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
- "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz",
+ "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -27677,19 +25935,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/unified-engine/node_modules/type-fest": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz",
- "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==",
- "dev": true,
- "license": "(MIT OR CC0-1.0)",
- "engines": {
- "node": ">=14.16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/unified-engine/node_modules/undici-types": {
"version": "6.21.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
@@ -27924,34 +26169,6 @@
"node": ">=18.12.0"
}
},
- "node_modules/unplugin-utils": {
- "version": "0.2.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "pathe": "^2.0.2",
- "picomatch": "^4.0.2"
- },
- "engines": {
- "node": ">=18.12.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sxzz"
- }
- },
- "node_modules/unplugin-utils/node_modules/picomatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
- "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
"node_modules/unplugin/node_modules/picomatch": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
@@ -28738,19 +26955,19 @@
}
},
"node_modules/vitest": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.5.tgz",
- "integrity": "sha512-9Xx1v3/ih3m9hN+SbfkUyy0JAs72ap3r7joc87XL6jwF0jGg6mFBvQ1SrwaX+h8BlkX6Hz9shdd1uo6AF+ZGpg==",
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.9.tgz",
+ "integrity": "sha512-nE3/LEyc0z87uHYLZebqCUOaJr2hdtuPp7BQ4BosVFnfltxgAvMG08NyrSGlPpOUWvR27c5flSmYFTNr78L9GQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/expect": "4.1.5",
- "@vitest/mocker": "4.1.5",
- "@vitest/pretty-format": "4.1.5",
- "@vitest/runner": "4.1.5",
- "@vitest/snapshot": "4.1.5",
- "@vitest/spy": "4.1.5",
- "@vitest/utils": "4.1.5",
+ "@vitest/expect": "4.1.9",
+ "@vitest/mocker": "4.1.9",
+ "@vitest/pretty-format": "4.1.9",
+ "@vitest/runner": "4.1.9",
+ "@vitest/snapshot": "4.1.9",
+ "@vitest/spy": "4.1.9",
+ "@vitest/utils": "4.1.9",
"es-module-lexer": "^2.0.0",
"expect-type": "^1.3.0",
"magic-string": "^0.30.21",
@@ -28778,12 +26995,12 @@
"@edge-runtime/vm": "*",
"@opentelemetry/api": "^1.9.0",
"@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0",
- "@vitest/browser-playwright": "4.1.5",
- "@vitest/browser-preview": "4.1.5",
- "@vitest/browser-webdriverio": "4.1.5",
- "@vitest/coverage-istanbul": "4.1.5",
- "@vitest/coverage-v8": "4.1.5",
- "@vitest/ui": "4.1.5",
+ "@vitest/browser-playwright": "4.1.9",
+ "@vitest/browser-preview": "4.1.9",
+ "@vitest/browser-webdriverio": "4.1.9",
+ "@vitest/coverage-istanbul": "4.1.9",
+ "@vitest/coverage-v8": "4.1.9",
+ "@vitest/ui": "4.1.9",
"happy-dom": "*",
"jsdom": "*",
"vite": "^6.0.0 || ^7.0.0 || ^8.0.0"
@@ -28842,16 +27059,16 @@
}
},
"node_modules/vitest/node_modules/@vitest/expect": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.5.tgz",
- "integrity": "sha512-PWBaRY5JoKuRnHlUHfpV/KohFylaDZTupcXN1H9vYryNLOnitSw60Mw9IAE2r67NbwwzBw/Cc/8q9BK3kIX8Kw==",
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.9.tgz",
+ "integrity": "sha512-vl/rYsUKcBr3SnQn166+XR5ZQcgMx3DQhFWdfli/cWpLnLUmbxZvyrJZotLFUryib+LtArYMSTJ5RbQ57ZqrlA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@standard-schema/spec": "^1.1.0",
"@types/chai": "^5.2.2",
- "@vitest/spy": "4.1.5",
- "@vitest/utils": "4.1.5",
+ "@vitest/spy": "4.1.9",
+ "@vitest/utils": "4.1.9",
"chai": "^6.2.2",
"tinyrainbow": "^3.1.0"
},
@@ -28860,9 +27077,9 @@
}
},
"node_modules/vitest/node_modules/@vitest/pretty-format": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.5.tgz",
- "integrity": "sha512-7I3q6l5qr03dVfMX2wCo9FxwSJbPdwKjy2uu/YPpU3wfHvIL4QHwVRp57OfGrDFeUJ8/8QdfBKIV12FTtLn00g==",
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.9.tgz",
+ "integrity": "sha512-s0iufns3iIFitdgm+YR7g1whCAaGtXz459VS9/PqyKDEEFgYIhsHOQmXgIgDuYCt7DeQmiZT0Qe2OA2p4ZPu5A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -28873,9 +27090,9 @@
}
},
"node_modules/vitest/node_modules/@vitest/spy": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.5.tgz",
- "integrity": "sha512-2lNOsh6+R2Idnf1TCZqSwYlKN2E/iDlD8sgU59kYVl+OMDmvldO1VDk39smRfpUNwYpNRVn3w4YfuC7KfbBnkQ==",
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.9.tgz",
+ "integrity": "sha512-fHpsS6mIi+PiEW+vcRVOMkX1oSaPKne3VOclSFICPcGOmfKgXPU5iAah+wcNcj2xPrCCmfq99IDGf+EojhhvhA==",
"dev": true,
"license": "MIT",
"funding": {
@@ -28883,13 +27100,13 @@
}
},
"node_modules/vitest/node_modules/@vitest/utils": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.5.tgz",
- "integrity": "sha512-76wdkrmfXfqGjueGgnb45ITPyUi1ycZ4IHgC2bhPDUfWHklY/q3MdLOAB+TF1e6xfl8NxNY0ZYaPCFNWSsw3Ug==",
+ "version": "4.1.9",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.9.tgz",
+ "integrity": "sha512-A51o8ymO5PpqlWNnBP9ZHPXDIpuMtTLlGSjN7la4US+LJzoUMyhwjA5QXlm39JexgwHKW4Xjs8Z2d3dLCXOeuA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/pretty-format": "4.1.5",
+ "@vitest/pretty-format": "4.1.9",
"convert-source-map": "^2.0.0",
"tinyrainbow": "^3.1.0"
},
@@ -29508,7 +27725,7 @@
},
"packages/canvas": {
"name": "@primer/react-canvas",
- "version": "0.0.1",
+ "version": "0.0.2",
"devDependencies": {
"@primer/primitives": "11.x",
"@primer/react": "^38.27.0",
@@ -29625,28 +27842,20 @@
"name": "@primer/doc-gen",
"version": "0.0.1",
"dependencies": {
- "@babel/runtime": "^7.28.6",
"@types/signale": "^1.4.7",
"@types/yargs": "^17.0.33",
"prettier": "^3.4.2",
"signale": "^1.4.0",
+ "typescript": "^6.0.3",
"yargs": "^18.0.0"
},
"bin": {
"doc-gen": "bin/doc-gen.js"
},
"devDependencies": {
- "@babel/core": "^7.29.0",
- "@babel/plugin-transform-runtime": "^7.29.0",
- "@babel/preset-env": "^7.29.0",
- "@babel/preset-typescript": "^7.28.5",
- "@rollup/plugin-babel": "^6.1.0",
- "@rollup/plugin-commonjs": "^29.0.0",
- "@rollup/plugin-json": "^6.1.0",
- "@rollup/plugin-node-resolve": "^16.0.3",
"rimraf": "^6.0.1",
- "rollup": "^4.59.0",
- "rollup-plugin-typescript2": "^0.36.0",
+ "rolldown": "^1.1.2",
+ "rolldown-plugin-dts": "^0.26.0",
"typescript": "^6.0.3"
}
},
@@ -29756,13 +27965,12 @@
},
"packages/mcp": {
"name": "@primer/mcp",
- "version": "0.3.3",
+ "version": "0.4.0",
"dependencies": {
- "@babel/runtime": "^7.28.6",
"@modelcontextprotocol/sdk": "^1.24.0",
"@primer/octicons": "^19.15.5",
"@primer/primitives": "10.x || 11.x",
- "@primer/react": "^38.28.0",
+ "@primer/react": "^38.30.0",
"cheerio": "^1.0.0",
"turndown": "^7.2.0",
"zod": "^4.3.5"
@@ -29771,19 +27979,11 @@
"mcp": "bin/mcp.js"
},
"devDependencies": {
- "@babel/core": "^7.29.0",
- "@babel/plugin-transform-runtime": "^7.29.0",
- "@babel/preset-env": "^7.29.0",
- "@babel/preset-typescript": "^7.28.5",
"@modelcontextprotocol/inspector": "^0.16.6",
- "@rollup/plugin-babel": "^6.1.0",
- "@rollup/plugin-commonjs": "^29.0.0",
- "@rollup/plugin-json": "^6.1.0",
- "@rollup/plugin-node-resolve": "^16.0.3",
"@types/turndown": "^5.0.5",
"rimraf": "^6.0.1",
- "rollup": "^4.59.0",
- "rollup-plugin-typescript2": "^0.36.0",
+ "rolldown": "^1.1.2",
+ "rolldown-plugin-dts": "^0.26.0",
"typescript": "^6.0.3"
}
},
@@ -29915,7 +28115,7 @@
},
"packages/react": {
"name": "@primer/react",
- "version": "38.28.0",
+ "version": "38.31.0",
"license": "MIT",
"dependencies": {
"@github/mini-throttle": "^2.1.1",
@@ -29925,7 +28125,7 @@
"@oddbird/popover-polyfill": "^0.5.2",
"@primer/behaviors": "^1.10.3",
"@primer/live-region-element": "^0.8.0",
- "@primer/octicons-react": "^19.24.1",
+ "@primer/octicons-react": "^19.28.1",
"@primer/primitives": "10.x || 11.x",
"@tanstack/react-virtual": "^3.13.18",
"clsx": "^2.1.1",
@@ -29937,7 +28137,7 @@
"lodash.isempty": "^4.4.0",
"lodash.isobject": "^3.0.2",
"react-compiler-runtime": "^1.0.0",
- "react-intersection-observer": "^9.16.0"
+ "react-intersection-observer": "^10.0.3"
},
"devDependencies": {
"@actions/core": "1.11.1",
@@ -29953,18 +28153,12 @@
"@primer/css": "^21.5.1",
"@primer/doc-gen": "^0.0.1",
"@rolldown/plugin-babel": "^0.2.3",
- "@rollup/plugin-babel": "6.1.0",
- "@rollup/plugin-commonjs": "29.0.0",
- "@rollup/plugin-json": "6.1.0",
- "@rollup/plugin-node-resolve": "16.0.3",
- "@rollup/plugin-typescript": "12.3.0",
- "@rollup/plugin-virtual": "3.0.2",
- "@storybook/addon-a11y": "^10.4.2",
- "@storybook/addon-docs": "^10.4.2",
- "@storybook/addon-links": "^10.4.2",
+ "@storybook/addon-a11y": "^10.4.6",
+ "@storybook/addon-docs": "^10.4.6",
+ "@storybook/addon-links": "^10.4.6",
"@storybook/addon-mcp": "^0.6.0",
- "@storybook/icons": "^2.0.2",
- "@storybook/react-vite": "^10.4.2",
+ "@storybook/icons": "^2.1.0",
+ "@storybook/react-vite": "^10.4.6",
"@testing-library/dom": "^10.4.0",
"@testing-library/jest-dom": "^6.4.5",
"@testing-library/react": "^16.3.0",
@@ -30017,9 +28211,11 @@
"react-is": "18.3.1",
"recast": "0.23.7",
"rimraf": "5.0.5",
- "rollup": "4.59.0",
- "rollup-plugin-import-css": "^0.0.0",
- "storybook": "^10.4.2",
+ "rolldown": "^1.1.2",
+ "rolldown-plugin-dts": "^0.26.0",
+ "rolldown-plugin-import-css": "^0.0.0",
+ "rolldown-plugin-preserve-directives": "^0.0.0",
+ "storybook": "^10.4.6",
"terser": "5.36.0",
"ts-toolbelt": "9.6.0",
"tsx": "4.20.3",
@@ -30358,17 +28554,12 @@
"typescript": ">=4.0.0"
}
},
- "packages/rollup-plugin-import-css": {
+ "packages/rolldown-plugin-import-css": {
"version": "0.0.0",
"devDependencies": {
- "@rollup/plugin-commonjs": "^29.0.0",
- "@rollup/plugin-node-resolve": "^16.0.3",
- "esbuild": "^0.25.0",
"postcss": "^8.4.38",
"postcss-modules": "^6.0.0",
- "rimraf": "^5.0.7",
- "rollup-plugin-esbuild": "^6.2.1",
- "rollup-plugin-typescript2": "^0.36.0",
+ "rolldown": "^1.1.2",
"typescript": "^6.0.3"
},
"peerDependencies": {
@@ -30376,95 +28567,14 @@
"postcss-modules": "^6.0.0"
}
},
- "packages/rollup-plugin-import-css/node_modules/brace-expansion": {
- "version": "2.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0"
- }
- },
- "packages/rollup-plugin-import-css/node_modules/glob": {
- "version": "10.5.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
- "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "foreground-child": "^3.1.0",
- "jackspeak": "^3.1.2",
- "minimatch": "^9.0.4",
- "minipass": "^7.1.2",
- "package-json-from-dist": "^1.0.0",
- "path-scurry": "^1.11.1"
- },
- "bin": {
- "glob": "dist/esm/bin.mjs"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "packages/rollup-plugin-import-css/node_modules/jackspeak": {
- "version": "3.4.3",
- "dev": true,
- "license": "BlueOak-1.0.0",
- "dependencies": {
- "@isaacs/cliui": "^8.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- },
- "optionalDependencies": {
- "@pkgjs/parseargs": "^0.11.0"
- }
- },
- "packages/rollup-plugin-import-css/node_modules/minimatch": {
- "version": "9.0.9",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
- "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^2.0.2"
- },
- "engines": {
- "node": ">=16 || 14 >=14.17"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "packages/rollup-plugin-import-css/node_modules/postcss-modules": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "generic-names": "^4.0.0",
- "icss-utils": "^5.1.0",
- "lodash.camelcase": "^4.3.0",
- "postcss-modules-extract-imports": "^3.1.0",
- "postcss-modules-local-by-default": "^4.0.5",
- "postcss-modules-scope": "^3.2.0",
- "postcss-modules-values": "^4.0.0",
- "string-hash": "^1.1.3"
+ "packages/rolldown-plugin-preserve-directives": {
+ "version": "0.0.0",
+ "devDependencies": {
+ "rolldown": "^1.1.2",
+ "typescript": "^6.0.3"
},
"peerDependencies": {
- "postcss": "^8.0.0"
- }
- },
- "packages/rollup-plugin-import-css/node_modules/rimraf": {
- "version": "5.0.10",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "glob": "^10.3.7"
- },
- "bin": {
- "rimraf": "dist/esm/bin.mjs"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
+ "rolldown": "^1.1.2"
}
},
"packages/styled-react": {
@@ -30489,8 +28599,7 @@
"@primer/primitives": "10.x || 11.x",
"@primer/react": "^38.26.0",
"@rolldown/plugin-babel": "^0.2.3",
- "@rollup/plugin-babel": "^6.1.0",
- "@storybook/react-vite": "^10.4.2",
+ "@storybook/react-vite": "^10.4.6",
"@types/babel__core": "^7.20.5",
"@types/react": "18.3.11",
"@types/react-dom": "18.3.1",
@@ -30504,8 +28613,9 @@
"react-compiler-runtime": "^1.0.0",
"react-dom": "18.3.1",
"rimraf": "^6.0.1",
- "rollup": "4.59.0",
- "rollup-plugin-typescript2": "^0.36.0",
+ "rolldown": "^1.1.2",
+ "rolldown-plugin-dts": "^0.26.0",
+ "rolldown-plugin-preserve-directives": "^0.0.0",
"styled-components": "5.3.11",
"typescript": "^6.0.3"
},
diff --git a/package.json b/package.json
index a05901677fb..c6e1dd69e3c 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "primer",
"private": true,
"workspaces": [
- "packages/rollup-plugin-import-css",
+ "packages/rolldown-plugin-import-css",
"packages/react",
"packages/mcp",
"packages/*",
@@ -26,7 +26,7 @@
"lint:css": "stylelint --rd -q --cache '**/*.css'",
"lint:css:fix": "npm run lint:css -- --fix",
"lint:fix": "npm run lint -- --fix",
- "lint:md": "markdownlint-cli2 \"**/*.{md,mdx}\" \"!.github\" \"!.changeset\" \"!**/node_modules/**\" \"!**/CHANGELOG.md\"",
+ "lint:md": "markdownlint-cli2 \"**/*.{md,mdx}\" \"!.github\" \"!.changeset\" \"!.agents\" \"!**/node_modules/**\" \"!**/CHANGELOG.md\"",
"test": "vitest",
"test:type-check": "tsc --noEmit",
"test:update": "npm run test -- -u",
@@ -48,8 +48,8 @@
"@changesets/changelog-github": "0.5.1",
"@changesets/cli": "^2.29.6",
"@eslint-react/eslint-plugin": "^1.52.6",
- "@eslint/compat": "^2.0.2",
- "@eslint/eslintrc": "^3.3.4",
+ "@eslint/compat": "^2.1.0",
+ "@eslint/eslintrc": "^3.3.5",
"@eslint/js": "^10.0.1",
"@github-ui/storybook-addon-performance-panel": "1.1.4",
"@github/axe-github": "0.7.0",
@@ -63,26 +63,26 @@
"@size-limit/preset-big-lib": "11.2.0",
"@types/node": "26.0.0",
"@types/semver": "^7.7.1",
- "@vitest/browser": "^4.1.5",
- "@vitest/browser-playwright": "^4.1.5",
- "@vitest/eslint-plugin": "^1.6.16",
+ "@vitest/browser": "^4.1.9",
+ "@vitest/browser-playwright": "^4.1.9",
+ "@vitest/eslint-plugin": "^1.6.20",
"babel-plugin-react-compiler": "^1.0.0",
"change-case": "^5.4.4",
- "eslint": "^10.0.2",
+ "eslint": "^10.5.0",
"eslint-import-resolver-typescript": "3.7.0",
- "eslint-plugin-clsx": "^0.0.12",
+ "eslint-plugin-clsx": "^0.1.0",
"eslint-plugin-github": "^6.0.0",
"eslint-plugin-jsx-a11y": "^6.10.2",
- "eslint-plugin-mdx": "3.7.0",
- "eslint-plugin-playwright": "^2.8.0",
- "eslint-plugin-prettier": "^5.5.5",
- "eslint-plugin-primer-react": "^8.5.2",
+ "eslint-plugin-mdx": "3.8.1",
+ "eslint-plugin-playwright": "^2.10.4",
+ "eslint-plugin-prettier": "^5.5.6",
+ "eslint-plugin-primer-react": "^9.0.0",
"eslint-plugin-react": "^7.35.5",
"eslint-plugin-react-hooks": "^7.1.1",
- "eslint-plugin-react-refresh": "^0.5.2",
+ "eslint-plugin-react-refresh": "^0.5.3",
"eslint-plugin-ssr-friendly": "1.3.0",
- "eslint-plugin-storybook": "^10.4.2",
- "eslint-plugin-testing-library": "^7.16.0",
+ "eslint-plugin-storybook": "^10.4.6",
+ "eslint-plugin-testing-library": "^7.16.2",
"eslint-plugin-react-you-might-not-need-an-effect": "1.0.1",
"fast-glob": "^3.3.3",
"globals": "^16.2.0",
@@ -91,13 +91,13 @@
"prettier": "3.4.2",
"rimraf": "5.0.5",
"size-limit": "11.2.0",
- "storybook": "^10.4.2",
+ "storybook": "^10.4.6",
"stylelint": "17.4.0",
"turbo": "^2.9.18",
"typescript": "^6.0.3",
"typescript-eslint": "^8.59.1",
"vite": "^8.0.16",
- "vitest": "^4.1.5",
+ "vitest": "^4.1.9",
"yargs": "^18.0.0"
},
"overrides": {
@@ -106,9 +106,6 @@
"yargs": "^18.0.0"
}
},
- "optionalDependencies": {
- "@rollup/rollup-linux-x64-gnu": "^4.59.0"
- },
"prettier": "@github/prettier-config",
"size-limit": [
{
@@ -122,5 +119,10 @@
"running": false
}
],
- "packageManager": "npm@11.16.0+sha512.03be172fc3b199c7a06433163e459be5b110a6983c1dd6305b7ac10f6b0fa12e1440755a8df6b1064ab2ccb789df0474919fb9c684e322dc57685ede21752ccb"
+ "packageManager": "npm@11.16.0+sha512.03be172fc3b199c7a06433163e459be5b110a6983c1dd6305b7ac10f6b0fa12e1440755a8df6b1064ab2ccb789df0474919fb9c684e322dc57685ede21752ccb",
+ "allowScripts": {
+ "sharp@0.34.4": true,
+ "core-js@2.6.12": true,
+ "esbuild@0.25.5": true
+ }
}
diff --git a/packages/doc-gen/package.json b/packages/doc-gen/package.json
index 98c9c52cb5d..a14119e4414 100644
--- a/packages/doc-gen/package.json
+++ b/packages/doc-gen/package.json
@@ -21,32 +21,24 @@
],
"scripts": {
"clean": "rimraf dist",
- "build": "rollup -c",
+ "build": "rolldown -c",
"type-check": "tsc --noEmit",
- "watch": "rollup -c -w",
+ "watch": "rolldown -c -w",
"test": "vitest --run",
"test:watch": "vitest"
},
"dependencies": {
- "@babel/runtime": "^7.28.6",
"@types/signale": "^1.4.7",
"@types/yargs": "^17.0.33",
"prettier": "^3.4.2",
"signale": "^1.4.0",
+ "typescript": "^6.0.3",
"yargs": "^18.0.0"
},
"devDependencies": {
- "@babel/core": "^7.29.0",
- "@babel/plugin-transform-runtime": "^7.29.0",
- "@babel/preset-env": "^7.29.0",
- "@babel/preset-typescript": "^7.28.5",
- "@rollup/plugin-babel": "^6.1.0",
- "@rollup/plugin-commonjs": "^29.0.0",
- "@rollup/plugin-json": "^6.1.0",
- "@rollup/plugin-node-resolve": "^16.0.3",
"rimraf": "^6.0.1",
- "rollup": "^4.59.0",
- "rollup-plugin-typescript2": "^0.36.0",
+ "rolldown": "^1.1.2",
+ "rolldown-plugin-dts": "^0.26.0",
"typescript": "^6.0.3"
}
}
diff --git a/packages/doc-gen/rolldown.config.ts b/packages/doc-gen/rolldown.config.ts
new file mode 100644
index 00000000000..57114f5532e
--- /dev/null
+++ b/packages/doc-gen/rolldown.config.ts
@@ -0,0 +1,49 @@
+import {defineConfig} from 'rolldown'
+import {dts} from 'rolldown-plugin-dts'
+import packageJson from './package.json' with {type: 'json'}
+
+interface PackageMetadata {
+ readonly peerDependencies?: Record
+ readonly dependencies?: Record
+ readonly devDependencies?: Record
+}
+
+const packageMetadata: PackageMetadata = packageJson
+
+const dependencies = [
+ ...Object.keys(packageMetadata.peerDependencies ?? {}),
+ ...Object.keys(packageMetadata.dependencies ?? {}),
+ ...Object.keys(packageMetadata.devDependencies ?? {}),
+]
+
+function createPackageRegex(name: string) {
+ return new RegExp(`^${name}(/.*)?`)
+}
+
+export default defineConfig([
+ {
+ input: './src/index.ts',
+ platform: 'node',
+ external: dependencies.map(createPackageRegex),
+ output: {
+ dir: 'dist',
+ format: 'esm',
+ },
+ },
+ {
+ input: './src/index.ts',
+ platform: 'node',
+ external: dependencies.map(createPackageRegex),
+ plugins: [
+ dts({
+ emitDtsOnly: true,
+ sourcemap: true,
+ tsconfig: './tsconfig.build.json',
+ }),
+ ],
+ output: {
+ dir: 'dist',
+ format: 'esm',
+ },
+ },
+])
diff --git a/packages/doc-gen/rollup.config.js b/packages/doc-gen/rollup.config.js
deleted file mode 100644
index 03e1d9d81ec..00000000000
--- a/packages/doc-gen/rollup.config.js
+++ /dev/null
@@ -1,53 +0,0 @@
-import {defineConfig} from 'rollup'
-import babel from '@rollup/plugin-babel'
-import json from '@rollup/plugin-json'
-import nodeResolve from '@rollup/plugin-node-resolve'
-import commonjs from '@rollup/plugin-commonjs'
-import typescript from 'rollup-plugin-typescript2'
-import packageJson from './package.json' with {type: 'json'}
-
-const dependencies = [
- ...Object.keys(packageJson.peerDependencies ?? {}),
- ...Object.keys(packageJson.dependencies ?? {}),
- ...Object.keys(packageJson.devDependencies ?? {}),
-]
-
-function createPackageRegex(name) {
- return new RegExp(`^${name}(/.*)?`)
-}
-
-const config = defineConfig({
- input: ['./src/index.ts'],
- external: dependencies.map(createPackageRegex),
- plugins: [
- nodeResolve({extensions: ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs']}),
- commonjs(),
- typescript({
- tsconfig: './tsconfig.build.json',
- }),
- babel({
- extensions: ['.js', '.cjs', '.mjs', '.ts', '.tsx'],
- presets: [
- [
- '@babel/preset-env',
- {
- targets: {
- node: 'current',
- },
- },
- ],
- '@babel/preset-typescript',
- ],
- plugins: ['@babel/plugin-transform-runtime'],
- babelHelpers: 'runtime',
- }),
- json(),
- ],
- output: {
- dir: 'dist',
- format: 'esm',
- importAttributesKey: 'with',
- },
-})
-
-export default config
diff --git a/packages/doc-gen/tsconfig.build.json b/packages/doc-gen/tsconfig.build.json
index f8dbf0c35ca..f3788095095 100644
--- a/packages/doc-gen/tsconfig.build.json
+++ b/packages/doc-gen/tsconfig.build.json
@@ -4,5 +4,6 @@
"emitDeclarationOnly": true,
"outDir": "./dist",
"rootDir": "./src"
- }
+ },
+ "include": ["src"]
}
diff --git a/packages/doc-gen/tsconfig.json b/packages/doc-gen/tsconfig.json
index 564a5990051..a84ca885fff 100644
--- a/packages/doc-gen/tsconfig.json
+++ b/packages/doc-gen/tsconfig.json
@@ -1,4 +1,4 @@
{
"extends": "../../tsconfig.base.json",
- "include": ["src"]
+ "include": ["src", "rolldown.config.ts"]
}
diff --git a/packages/mcp/CHANGELOG.md b/packages/mcp/CHANGELOG.md
index ce006da2881..458f9e406c5 100644
--- a/packages/mcp/CHANGELOG.md
+++ b/packages/mcp/CHANGELOG.md
@@ -1,5 +1,16 @@
# @primer/mcp
+## 0.4.0
+
+### Minor Changes
+
+- [#8058](https://github.com/primer/react/pull/8058) [`0a49d7d`](https://github.com/primer/react/commit/0a49d7d2fad0ff897c53a7b77583d6058b79005a) Thanks [@mattobee](https://github.com/mattobee)! - MCP server: Add Copy, Delete, Filter and Search scenario patterns to the `list_patterns` and `get_pattern` tools. Scenario patterns take precedence over UI patterns when a name matches.
+
+### Patch Changes
+
+- Updated dependencies [[`0add561`](https://github.com/primer/react/commit/0add5615720d17d69c77b014786c5e17e4337bb0), [`6131a94`](https://github.com/primer/react/commit/6131a9424b5bd5bb98b7ae05771d8187fe2f58cd), [`5b3c806`](https://github.com/primer/react/commit/5b3c806305cfa09d33d42fc2957d55105725ea3b), [`cb79351`](https://github.com/primer/react/commit/cb79351f29b9a1aea7bacf890eca97a5c9d97590), [`f052126`](https://github.com/primer/react/commit/f0521263c85a8d665f7c031bd711b3568bdac8e2), [`b906268`](https://github.com/primer/react/commit/b906268b7ebe8d684d8b5e9b1c4e9b528a5dd67a), [`73a45df`](https://github.com/primer/react/commit/73a45dfe11c3a297e4f2f8317caa4a535a70ce80), [`6131a94`](https://github.com/primer/react/commit/6131a9424b5bd5bb98b7ae05771d8187fe2f58cd), [`6131a94`](https://github.com/primer/react/commit/6131a9424b5bd5bb98b7ae05771d8187fe2f58cd), [`e58907c`](https://github.com/primer/react/commit/e58907c5559f5ef8133a1d98a05e2e4a6c1ca6cb)]:
+ - @primer/react@38.30.0
+
## 0.3.3
### Patch Changes
diff --git a/packages/mcp/package.json b/packages/mcp/package.json
index edf4b193bcc..21d3a194e1e 100644
--- a/packages/mcp/package.json
+++ b/packages/mcp/package.json
@@ -1,7 +1,7 @@
{
"name": "@primer/mcp",
"description": "An MCP server that connects AI tools to the Primer Design System",
- "version": "0.3.3",
+ "version": "0.4.0",
"type": "module",
"bin": {
"mcp": "./bin/mcp.js"
@@ -28,34 +28,25 @@
},
"scripts": {
"clean": "rimraf dist",
- "build": "rollup -c",
+ "build": "rolldown -c",
"type-check": "tsc --noEmit",
- "watch": "rollup -c -w"
+ "watch": "rolldown -c -w"
},
"dependencies": {
- "@babel/runtime": "^7.28.6",
"@modelcontextprotocol/sdk": "^1.24.0",
"@primer/octicons": "^19.15.5",
"@primer/primitives": "10.x || 11.x",
- "@primer/react": "^38.28.0",
+ "@primer/react": "^38.30.0",
"cheerio": "^1.0.0",
"turndown": "^7.2.0",
"zod": "^4.3.5"
},
"devDependencies": {
- "@babel/core": "^7.29.0",
- "@babel/plugin-transform-runtime": "^7.29.0",
- "@babel/preset-env": "^7.29.0",
- "@babel/preset-typescript": "^7.28.5",
"@modelcontextprotocol/inspector": "^0.16.6",
- "@rollup/plugin-babel": "^6.1.0",
- "@rollup/plugin-commonjs": "^29.0.0",
- "@rollup/plugin-json": "^6.1.0",
- "@rollup/plugin-node-resolve": "^16.0.3",
"@types/turndown": "^5.0.5",
"rimraf": "^6.0.1",
- "rollup": "^4.59.0",
- "rollup-plugin-typescript2": "^0.36.0",
+ "rolldown": "^1.1.2",
+ "rolldown-plugin-dts": "^0.26.0",
"typescript": "^6.0.3"
}
}
diff --git a/packages/mcp/rolldown.config.ts b/packages/mcp/rolldown.config.ts
new file mode 100644
index 00000000000..95b2728b1c7
--- /dev/null
+++ b/packages/mcp/rolldown.config.ts
@@ -0,0 +1,53 @@
+import {defineConfig} from 'rolldown'
+import {dts} from 'rolldown-plugin-dts'
+import packageJson from './package.json' with {type: 'json'}
+
+interface PackageMetadata {
+ readonly peerDependencies?: Record
+ readonly dependencies?: Record
+ readonly devDependencies?: Record
+}
+
+const packageMetadata: PackageMetadata = packageJson
+
+const external = [
+ ...Object.keys(packageMetadata.peerDependencies ?? {}),
+ ...Object.keys(packageMetadata.dependencies ?? {}),
+ ...Object.keys(packageMetadata.devDependencies ?? {}),
+].map(name => {
+ return new RegExp(`^${name}(/.*)?`)
+})
+
+export default defineConfig([
+ {
+ input: {
+ index: './src/index.ts',
+ stdio: './src/transports/stdio.ts',
+ },
+ platform: 'node',
+ external,
+ output: {
+ dir: 'dist',
+ format: 'esm',
+ },
+ },
+ {
+ input: {
+ index: './src/index.ts',
+ 'transports/stdio': './src/transports/stdio.ts',
+ },
+ platform: 'node',
+ external,
+ plugins: [
+ dts({
+ emitDtsOnly: true,
+ sourcemap: false,
+ tsconfig: './tsconfig.build.json',
+ }),
+ ],
+ output: {
+ dir: 'dist',
+ format: 'esm',
+ },
+ },
+])
diff --git a/packages/mcp/rollup.config.js b/packages/mcp/rollup.config.js
deleted file mode 100644
index 31ec72ceeff..00000000000
--- a/packages/mcp/rollup.config.js
+++ /dev/null
@@ -1,51 +0,0 @@
-import {defineConfig} from 'rollup'
-import babel from '@rollup/plugin-babel'
-import json from '@rollup/plugin-json'
-import nodeResolve from '@rollup/plugin-node-resolve'
-import commonjs from '@rollup/plugin-commonjs'
-import typescript from 'rollup-plugin-typescript2'
-import packageJson from './package.json' with {type: 'json'}
-
-const external = [
- ...Object.keys(packageJson.peerDependencies ?? {}),
- ...Object.keys(packageJson.dependencies ?? {}),
- ...Object.keys(packageJson.devDependencies ?? {}),
-].map(name => {
- return new RegExp(`^${name}(/.*)?`)
-})
-
-const config = defineConfig({
- input: ['./src/index.ts', './src/transports/stdio.ts'],
- external,
- plugins: [
- nodeResolve({extensions: ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs']}),
- commonjs(),
- typescript({
- tsconfig: './tsconfig.build.json',
- }),
- babel({
- extensions: ['.js', '.cjs', '.mjs', '.ts', '.tsx'],
- presets: [
- [
- '@babel/preset-env',
- {
- targets: {
- node: 'current',
- },
- },
- ],
- '@babel/preset-typescript',
- ],
- plugins: ['@babel/plugin-transform-runtime'],
- babelHelpers: 'runtime',
- }),
- json(),
- ],
- output: {
- dir: 'dist',
- format: 'esm',
- importAttributesKey: 'with',
- },
-})
-
-export default config
diff --git a/packages/mcp/src/primer.ts b/packages/mcp/src/primer.ts
index 91689ff2057..6a1dfbb13a8 100644
--- a/packages/mcp/src/primer.ts
+++ b/packages/mcp/src/primer.ts
@@ -40,48 +40,81 @@ function listComponents(): Array {
type Pattern = {
id: string
name: string
+ // 'scenario' maps to the /product/scenario-patterns/ base path, 'ui' to /product/ui-patterns/
+ category: 'scenario' | 'ui'
}
+// Scenario patterns are listed first so name resolution favours them over UI patterns.
const patterns: Array = [
+ {
+ id: 'copy',
+ name: 'Copy',
+ category: 'scenario',
+ },
+ {
+ id: 'delete',
+ name: 'Delete',
+ category: 'scenario',
+ },
+ {
+ id: 'filter',
+ name: 'Filter',
+ category: 'scenario',
+ },
+ {
+ id: 'search',
+ name: 'Search',
+ category: 'scenario',
+ },
{
id: 'data-visualization',
name: 'Data Visualization',
+ category: 'ui',
},
{
id: 'degraded-experiences',
name: 'Degraded Experiences',
+ category: 'ui',
},
{
id: 'empty-states',
name: 'Empty States',
+ category: 'ui',
},
{
id: 'feature-onboarding',
name: 'Feature Onboarding',
+ category: 'ui',
},
{
id: 'forms',
name: 'Forms',
+ category: 'ui',
},
{
id: 'loading',
name: 'Loading',
+ category: 'ui',
},
{
id: 'navigation',
name: 'Navigation',
+ category: 'ui',
},
{
id: 'notification-messaging',
name: 'Notification message',
+ category: 'ui',
},
{
id: 'progressive-disclosure',
name: 'Progressive disclosure',
+ category: 'ui',
},
{
id: 'saving',
name: 'Saving',
+ category: 'ui',
},
]
diff --git a/packages/mcp/src/server.ts b/packages/mcp/src/server.ts
index dc1d2ccf0a1..523dcd7540f 100644
--- a/packages/mcp/src/server.ts
+++ b/packages/mcp/src/server.ts
@@ -372,18 +372,28 @@ ${text}`,
// -----------------------------------------------------------------------------
server.registerTool(
'list_patterns',
- {description: 'List all of the patterns available from Primer React', annotations: {readOnlyHint: true}},
+ {
+ description:
+ 'List all of the patterns available from Primer React. Scenario patterns describe specific user tasks (copy, delete, filter, search). Prefer a scenario pattern when one fits the task, and fall back to the more generic UI patterns otherwise.',
+ annotations: {readOnlyHint: true},
+ },
async () => {
- const patterns = listPatterns().map(pattern => {
- return `- ${pattern.name}`
- })
+ const all = listPatterns()
+ const scenario = all.filter(pattern => pattern.category === 'scenario').map(pattern => `- ${pattern.name}`)
+ const ui = all.filter(pattern => pattern.category === 'ui').map(pattern => `- ${pattern.name}`)
return {
content: [
{
type: 'text',
- text: `The following patterns are available in the @primer/react in TypeScript projects:
+ text: `The following patterns are available from \`@primer/react\` for use in TypeScript projects. Scenario patterns describe specific user tasks. Prefer a scenario pattern when one fits the task, and fall back to the UI patterns otherwise.
-${patterns.join('\n')}`,
+## Scenario patterns
+
+${scenario.join('\n')}
+
+## UI patterns
+
+${ui.join('\n')}`,
},
],
}
@@ -393,7 +403,8 @@ ${patterns.join('\n')}`,
server.registerTool(
'get_pattern',
{
- description: 'Get a specific pattern by name',
+ description:
+ 'Get a specific pattern by name. Scenario patterns describe specific user tasks (copy, delete, filter, search). Prefer a scenario pattern when one fits the task, and fall back to the more generic UI patterns otherwise.',
inputSchema: {
name: z.string().describe('The name of the pattern to retrieve'),
},
@@ -401,9 +412,10 @@ server.registerTool(
},
async ({name}) => {
const patterns = listPatterns()
- const match = patterns.find(pattern => {
- return pattern.name === name
- })
+ // Resolve scenario patterns first so a name clash favours the scenario pattern.
+ const match =
+ patterns.find(pattern => pattern.category === 'scenario' && pattern.name === name) ??
+ patterns.find(pattern => pattern.name === name)
if (!match) {
return {
content: [
@@ -415,7 +427,8 @@ server.registerTool(
}
}
- const url = new URL(`/product/ui-patterns/${match.id}`, 'https://primer.style')
+ const basePath = match.category === 'scenario' ? 'scenario-patterns' : 'ui-patterns'
+ const url = new URL(`/product/${basePath}/${match.id}`, 'https://primer.style')
const response = await fetch(url)
if (!response.ok) {
throw new Error(`Failed to fetch ${url} - ${response.statusText}`)
diff --git a/packages/mcp/tsconfig.build.json b/packages/mcp/tsconfig.build.json
index f8dbf0c35ca..f3788095095 100644
--- a/packages/mcp/tsconfig.build.json
+++ b/packages/mcp/tsconfig.build.json
@@ -4,5 +4,6 @@
"emitDeclarationOnly": true,
"outDir": "./dist",
"rootDir": "./src"
- }
+ },
+ "include": ["src"]
}
diff --git a/packages/mcp/tsconfig.json b/packages/mcp/tsconfig.json
index 564a5990051..a84ca885fff 100644
--- a/packages/mcp/tsconfig.json
+++ b/packages/mcp/tsconfig.json
@@ -1,4 +1,4 @@
{
"extends": "../../tsconfig.base.json",
- "include": ["src"]
+ "include": ["src", "rolldown.config.ts"]
}
diff --git a/packages/react/CHANGELOG.md b/packages/react/CHANGELOG.md
index 23657db58d1..19564beaf0c 100644
--- a/packages/react/CHANGELOG.md
+++ b/packages/react/CHANGELOG.md
@@ -1,5 +1,65 @@
# @primer/react
+## 38.31.0
+
+### Minor Changes
+
+- [#8057](https://github.com/primer/react/pull/8057) [`0b9c81e`](https://github.com/primer/react/commit/0b9c81e7e8fef1dfc98f3b86b5a375d4ec7fe204) Thanks [@francinelucca](https://github.com/francinelucca)! - ThemeProvider: Remove `primer_react_theme_provider_remove_ssr_handoff` feature flag.
+
+- [#8105](https://github.com/primer/react/pull/8105) [`be2950f`](https://github.com/primer/react/commit/be2950fd1ac268dd4e79258ab2cfe9241dd9e1c6) Thanks [@joshblack](https://github.com/joshblack)! - React Compiler: Enable compiler output for Banner, ConfirmationDialog, PageLayout, Pagination, UnderlineNav, `useMergedRefs`, and `useScrollFlash`
+
+### Patch Changes
+
+- [#8066](https://github.com/primer/react/pull/8066) [`dd66aa2`](https://github.com/primer/react/commit/dd66aa27611f7ad56adb7429b50813d6af5a01d7) Thanks [@janmaarten-a11y](https://github.com/janmaarten-a11y)! - Fix invalid HTML nesting in `ActionList.Heading` by applying the visually-hidden styles directly to the heading element instead of wrapping it in a `span`.
+
+- [#8054](https://github.com/primer/react/pull/8054) [`1775f2e`](https://github.com/primer/react/commit/1775f2e8b968d59a1189456b14cff15e527937cb) Thanks [@joshblack](https://github.com/joshblack)! - AvatarStack: Improve rendering performance with React Compiler support
+
+- [#8053](https://github.com/primer/react/pull/8053) [`b2151ae`](https://github.com/primer/react/commit/b2151ae2d5719f09efb0b89731e52e4ca50e8bf1) Thanks [@joshblack](https://github.com/joshblack)! - Checkbox, CheckboxGroup, and RadioGroup: Improve rendering performance with React Compiler support
+
+- [#8052](https://github.com/primer/react/pull/8052) [`a1b24cf`](https://github.com/primer/react/commit/a1b24cf3411566641aeb846e62069dc26505da6b) Thanks [@joshblack](https://github.com/joshblack)! - Heading, Link, Pagehead, Portal, and SideNav: Improve rendering performance with React Compiler support
+
+## 38.30.0
+
+### Minor Changes
+
+- [#8048](https://github.com/primer/react/pull/8048) [`0add561`](https://github.com/primer/react/commit/0add5615720d17d69c77b014786c5e17e4337bb0) Thanks [@copilot-swe-agent](https://github.com/apps/copilot-swe-agent)! - ActionBar: Add `ActionBar.Button` for rendering text buttons that overflow into the menu, alongside the existing `ActionBar.IconButton`
+
+- [#8031](https://github.com/primer/react/pull/8031) [`cb79351`](https://github.com/primer/react/commit/cb79351f29b9a1aea7bacf890eca97a5c9d97590) Thanks [@janmaarten-a11y](https://github.com/janmaarten-a11y)! - Add a `NavList.Heading` slot that names the navigation region. It renders an `h2`
+ by default (configurable to `h3` via `as`), supports a `visuallyHidden` variant,
+ labels the `nav` landmark via `aria-labelledby`, and makes `NavList.Group`
+ headings default to one level deeper (`h3`, or `h4` under an `h3` heading) for a
+ correct heading hierarchy.
+
+- [#7991](https://github.com/primer/react/pull/7991) [`b906268`](https://github.com/primer/react/commit/b906268b7ebe8d684d8b5e9b1c4e9b528a5dd67a) Thanks [@llastflowers](https://github.com/llastflowers)! - Add data-component attributes and associated tests for:
+
+ Radio
+ RadioGroup
+ RelativeTime
+ ScrollableRegion
+ SegmentedControl
+ Select
+ SideNav
+ SkeletonBox
+ SkeletonAvatar
+ SkeletonText
+ Spinner
+
+- [#8026](https://github.com/primer/react/pull/8026) [`73a45df`](https://github.com/primer/react/commit/73a45dfe11c3a297e4f2f8317caa4a535a70ce80) Thanks [@TylerJDev](https://github.com/TylerJDev)! - SelectPanel: Add `cssAnchorPositioningSettings` prop to customize CSS anchor positioning behavior
+
+- [#7506](https://github.com/primer/react/pull/7506) [`e58907c`](https://github.com/primer/react/commit/e58907c5559f5ef8133a1d98a05e2e4a6c1ca6cb) Thanks [@iansan5653](https://github.com/iansan5653)! - Refactors `UnderlineNav` overflow handling to use CSS-based overflow detection instead of JavaScript width measurements, eliminating layout shift (CLS) issues and improving performance. The overflow menu is now implemented with `ActionMenu`, and item registration uses a descendant registry instead of the `React.Children` API. Consumer-facing changes: items can now be wrapped in fragments or wrapper components; the current item may appear in the overflow menu when the viewport is narrow; and the overflow menu button is right-aligned.
+
+### Patch Changes
+
+- [#8021](https://github.com/primer/react/pull/8021) [`6131a94`](https://github.com/primer/react/commit/6131a9424b5bd5bb98b7ae05771d8187fe2f58cd) Thanks [@mattcosta7](https://github.com/mattcosta7)! - Announce, AriaStatus, AriaAlert: Avoid an extra React render on every content change (e.g. per keystroke when tied to an input)
+
+- [#7935](https://github.com/primer/react/pull/7935) [`5b3c806`](https://github.com/primer/react/commit/5b3c806305cfa09d33d42fc2957d55105725ea3b) Thanks [@copilot-swe-agent](https://github.com/apps/copilot-swe-agent)! - ConfirmationDialog: `useConfirm`/`confirm` now removes its host element from `document.body` after the dialog is closed, and uses a fresh host element per call, so the empty container no longer lingers or leaks into other components and tests
+
+- [#8007](https://github.com/primer/react/pull/8007) [`f052126`](https://github.com/primer/react/commit/f0521263c85a8d665f7c031bd711b3568bdac8e2) Thanks [@copilot-swe-agent](https://github.com/apps/copilot-swe-agent)! - Improve style-recalc performance by making ButtonGroup, DataTable Pagination, and Checkbox CSS selectors bucketable (removing universal `*`/`:not([attr])` subjects and `:is()` selector-list merges)
+
+- [#8021](https://github.com/primer/react/pull/8021) [`6131a94`](https://github.com/primer/react/commit/6131a9424b5bd5bb98b7ae05771d8187fe2f58cd) Thanks [@mattcosta7](https://github.com/mattcosta7)! - Textarea: Improve typing performance by deriving the character counter in render instead of in effects, removing extra re-renders on each keystroke.
+
+- [#8021](https://github.com/primer/react/pull/8021) [`6131a94`](https://github.com/primer/react/commit/6131a9424b5bd5bb98b7ae05771d8187fe2f58cd) Thanks [@mattcosta7](https://github.com/mattcosta7)! - TextInput: Improve typing performance by deriving the character counter in render instead of in effects, removing extra re-renders on each keystroke.
+
## 38.29.0
### Minor Changes
diff --git a/packages/react/package.json b/packages/react/package.json
index 8d1446ff5d1..62535c5a337 100644
--- a/packages/react/package.json
+++ b/packages/react/package.json
@@ -1,7 +1,7 @@
{
"name": "@primer/react",
"type": "module",
- "version": "38.29.0",
+ "version": "38.31.0",
"description": "An implementation of GitHub's Primer Design System using React",
"main": "./dist/index.js",
"module": "./dist/index.js",
@@ -23,7 +23,7 @@
"default": "./dist/next/index.js"
},
"./test-helpers": {
- "types": "./dist/utils/test-helpers.d.ts",
+ "types": "./dist/test-helpers.d.ts",
"default": "./dist/test-helpers.js"
},
"./generated/components.json": "./generated/components.json",
@@ -81,7 +81,7 @@
"@oddbird/popover-polyfill": "^0.5.2",
"@primer/behaviors": "^1.10.3",
"@primer/live-region-element": "^0.8.0",
- "@primer/octicons-react": "^19.24.1",
+ "@primer/octicons-react": "^19.28.1",
"@primer/primitives": "10.x || 11.x",
"@tanstack/react-virtual": "^3.13.18",
"clsx": "^2.1.1",
@@ -93,7 +93,7 @@
"lodash.isempty": "^4.4.0",
"lodash.isobject": "^3.0.2",
"react-compiler-runtime": "^1.0.0",
- "react-intersection-observer": "^9.16.0"
+ "react-intersection-observer": "^10.0.3"
},
"devDependencies": {
"@actions/core": "1.11.1",
@@ -109,18 +109,12 @@
"@primer/css": "^21.5.1",
"@primer/doc-gen": "^0.0.1",
"@rolldown/plugin-babel": "^0.2.3",
- "@rollup/plugin-babel": "6.1.0",
- "@rollup/plugin-commonjs": "29.0.0",
- "@rollup/plugin-json": "6.1.0",
- "@rollup/plugin-node-resolve": "16.0.3",
- "@rollup/plugin-typescript": "12.3.0",
- "@rollup/plugin-virtual": "3.0.2",
- "@storybook/addon-a11y": "^10.4.2",
- "@storybook/addon-docs": "^10.4.2",
- "@storybook/addon-links": "^10.4.2",
+ "@storybook/addon-a11y": "^10.4.6",
+ "@storybook/addon-docs": "^10.4.6",
+ "@storybook/addon-links": "^10.4.6",
"@storybook/addon-mcp": "^0.6.0",
- "@storybook/icons": "^2.0.2",
- "@storybook/react-vite": "^10.4.2",
+ "@storybook/icons": "^2.1.0",
+ "@storybook/react-vite": "^10.4.6",
"@testing-library/dom": "^10.4.0",
"@testing-library/jest-dom": "^6.4.5",
"@testing-library/react": "^16.3.0",
@@ -173,9 +167,11 @@
"react-is": "18.3.1",
"recast": "0.23.7",
"rimraf": "5.0.5",
- "rollup": "4.59.0",
- "rollup-plugin-import-css": "^0.0.0",
- "storybook": "^10.4.2",
+ "rolldown": "^1.1.2",
+ "rolldown-plugin-dts": "^0.26.0",
+ "rolldown-plugin-import-css": "^0.0.0",
+ "rolldown-plugin-preserve-directives": "^0.0.0",
+ "storybook": "^10.4.6",
"terser": "5.36.0",
"ts-toolbelt": "9.6.0",
"tsx": "4.20.3",
diff --git a/packages/react/rolldown.config.ts b/packages/react/rolldown.config.ts
new file mode 100644
index 00000000000..e3c65d4e847
--- /dev/null
+++ b/packages/react/rolldown.config.ts
@@ -0,0 +1,155 @@
+import path from 'node:path'
+import babel from '@rolldown/plugin-babel'
+import {defineConfig} from 'rolldown'
+import {preserveDirectives} from 'rolldown-plugin-preserve-directives'
+import {dts} from 'rolldown-plugin-dts'
+import {importCSS} from 'rolldown-plugin-import-css'
+import postcssPresetPrimer from 'postcss-preset-primer'
+import {isSupported} from './script/react-compiler.mjs'
+import packageJson from './package.json' with {type: 'json'}
+
+interface PackageMetadata {
+ readonly peerDependencies?: Record
+ readonly dependencies?: Record
+ readonly devDependencies?: Record
+}
+
+const packageMetadata: PackageMetadata = packageJson
+
+const entrypoints = new Set([
+ // "exports"
+ // "."
+ 'src/index.ts',
+
+ // "./experimental"
+ 'src/experimental/index.ts',
+
+ // "./deprecated"
+ 'src/deprecated/index.ts',
+
+ // "./next"
+ 'src/next/index.ts',
+])
+
+function getEntrypointsFromInput(input: ReadonlySet) {
+ return Object.fromEntries(
+ Array.from(input).map(value => {
+ const relativePath = path.relative('src', value)
+ return [path.join(path.dirname(relativePath), path.basename(relativePath, path.extname(relativePath))), value]
+ }),
+ )
+}
+
+const dependencies = [
+ ...Object.keys(packageMetadata.peerDependencies ?? {}),
+ ...Object.keys(packageMetadata.dependencies ?? {}),
+ ...Object.keys(packageMetadata.devDependencies ?? {}),
+].map(name => {
+ return new RegExp(`^${name}(/.*)?`)
+})
+
+const external = [
+ // Exclude package dependencies
+ ...dependencies,
+ // Exclude Node.js built-in modules
+ /node:.*/,
+]
+
+const input = {
+ ...getEntrypointsFromInput(entrypoints),
+ // "./test-helpers"
+ 'test-helpers': 'src/utils/test-helpers.tsx',
+}
+
+export default defineConfig([
+ // ESM
+ {
+ input,
+ plugins: [
+ babel({
+ include: /\.(?:js|jsx|ts|tsx)$/,
+ exclude: /node_modules/,
+ presets: [
+ '@babel/preset-typescript',
+ [
+ '@babel/preset-react',
+ {
+ modules: false,
+ runtime: 'automatic',
+ },
+ ],
+ ],
+ plugins: [
+ [
+ 'babel-plugin-react-compiler',
+ {
+ target: '18',
+ sources: (filepath: string) => isSupported(filepath),
+ },
+ ],
+ 'macros',
+ 'add-react-displayname',
+ 'dev-expression',
+ 'babel-plugin-styled-components',
+ '@babel/plugin-proposal-nullish-coalescing-operator',
+ '@babel/plugin-proposal-optional-chaining',
+ [
+ 'babel-plugin-transform-replace-expressions',
+ {
+ replace: {
+ __DEV__: "process.env.NODE_ENV !== 'production'",
+ },
+ },
+ ],
+ ],
+ }),
+ importCSS({
+ modulesRoot: 'src',
+ postcssPlugins: [postcssPresetPrimer()],
+ postcssModulesOptions: {
+ generateScopedName: 'prc-[folder]-[local]-[hash:base64:5]',
+ },
+ }),
+ preserveDirectives(),
+ ],
+ onwarn(warning, defaultHandler) {
+ // Dependencies or modules may use "use client" as an indicator for React
+ // Server Components that this module should only be loaded on the client.
+ if (warning.code === 'MODULE_LEVEL_DIRECTIVE' && warning.message.includes('use client')) {
+ return
+ }
+
+ if (warning.code === 'CIRCULAR_DEPENDENCY') {
+ throw warning
+ }
+
+ defaultHandler(warning)
+ },
+ external,
+ output: {
+ dir: 'dist',
+ format: 'esm',
+ preserveModules: true,
+ preserveModulesRoot: 'src',
+ },
+ },
+ // TypeScript declarations
+ {
+ input,
+ external,
+ plugins: [
+ dts({
+ emitDtsOnly: true,
+ oxc: false,
+ sourcemap: false,
+ tsconfig: './tsconfig.build.json',
+ }),
+ ],
+ output: {
+ dir: 'dist',
+ format: 'esm',
+ preserveModules: true,
+ preserveModulesRoot: 'src',
+ },
+ },
+])
diff --git a/packages/react/rollup.config.mjs b/packages/react/rollup.config.mjs
deleted file mode 100644
index 81cf54a2938..00000000000
--- a/packages/react/rollup.config.mjs
+++ /dev/null
@@ -1,226 +0,0 @@
-import path from 'node:path'
-import commonjs from '@rollup/plugin-commonjs'
-import resolve from '@rollup/plugin-node-resolve'
-import babel from '@rollup/plugin-babel'
-import {importCSS} from 'rollup-plugin-import-css'
-import postcssPresetPrimer from 'postcss-preset-primer'
-import MagicString from 'magic-string'
-import {isSupported} from './script/react-compiler.mjs'
-import packageJson from './package.json' with {type: 'json'}
-
-const input = new Set([
- // "exports"
- // "."
- 'src/index.ts',
-
- // "./experimental"
- 'src/experimental/index.ts',
-
- // "./deprecated"
- 'src/deprecated/index.ts',
-
- // "./next"
- 'src/next/index.ts',
-])
-
-function getEntrypointsFromInput(input) {
- return Object.fromEntries(
- Array.from(input).map(value => {
- const relativePath = path.relative('src', value)
- return [path.join(path.dirname(relativePath), path.basename(relativePath, path.extname(relativePath))), value]
- }),
- )
-}
-
-const extensions = ['.js', '.jsx', '.ts', '.tsx']
-const dependencies = [
- ...Object.keys(packageJson.peerDependencies ?? {}),
- ...Object.keys(packageJson.dependencies ?? {}),
- ...Object.keys(packageJson.devDependencies ?? {}),
-]
-
-function createPackageRegex(name) {
- return new RegExp(`^${name}(/.*)?`)
-}
-
-const postcssModulesOptions = {
- generateScopedName: 'prc-[folder]-[local]-[hash:base64:5]',
-}
-
-const baseConfig = {
- input: {
- ...getEntrypointsFromInput(input),
- // "./test-helpers"
- 'test-helpers': 'src/utils/test-helpers.tsx',
- },
- plugins: [
- babel({
- extensions,
- exclude: /node_modules/,
- babelHelpers: 'inline',
- babelrc: false,
- configFile: false,
- presets: [
- '@babel/preset-typescript',
- [
- '@babel/preset-react',
- {
- modules: false,
- runtime: 'automatic',
- },
- ],
- ],
- plugins: [
- [
- 'babel-plugin-react-compiler',
- {
- target: '18',
- sources: filepath => isSupported(filepath),
- },
- ],
- 'macros',
- 'add-react-displayname',
- 'dev-expression',
- 'babel-plugin-styled-components',
- '@babel/plugin-proposal-nullish-coalescing-operator',
- '@babel/plugin-proposal-optional-chaining',
- [
- 'babel-plugin-transform-replace-expressions',
- {
- replace: {
- __DEV__: "process.env.NODE_ENV !== 'production'",
- },
- },
- ],
- ],
- }),
- resolve({
- extensions,
- }),
- commonjs({
- extensions,
- }),
- importCSS({
- modulesRoot: 'src',
- postcssPlugins: [postcssPresetPrimer()],
- postcssModulesOptions,
- }),
-
- /**
- * This custom rollup plugin allows us to preserve directives in source
- * code, such as "use client", in order to support React Server Components.
- *
- * The source for this plugin is inspired by:
- * https://github.com/Ephem/rollup-plugin-preserve-directives
- */
- {
- name: 'preserve-directives',
- transform(code) {
- const ast = this.parse(code)
- if (ast.type !== 'Program' || !ast.body) {
- return {
- code,
- ast,
- map: null,
- }
- }
-
- let hasClientDirective = false
-
- for (const node of ast.body) {
- if (!node) {
- continue
- }
-
- if (node.type !== 'ExpressionStatement') {
- continue
- }
-
- if (node.directive === 'use client') {
- hasClientDirective = true
- break
- }
- }
-
- if (hasClientDirective) {
- return {
- code,
- ast,
- map: null,
- meta: {
- hasClientDirective: true,
- },
- }
- }
-
- return {
- code,
- ast,
- map: null,
- }
- },
- renderChunk: {
- order: 'post',
- handler(code, chunk, options) {
- // If `preserveModules` is not set to true, we can't be sure if the client
- // directive corresponds to the whole chunk or just a part of it.
- if (!options.preserveModules) {
- return undefined
- }
-
- let chunkHasClientDirective = false
-
- for (const moduleId of Object.keys(chunk.modules)) {
- const hasClientDirective = this.getModuleInfo(moduleId)?.meta?.hasClientDirective
- if (hasClientDirective) {
- chunkHasClientDirective = true
- break
- }
- }
-
- if (chunkHasClientDirective) {
- const transformed = new MagicString(code)
- transformed.prepend(`"use client";\n`)
- const sourcemap = transformed.generateMap({
- includeContent: true,
- })
- return {
- code: transformed.toString(),
- map: sourcemap,
- }
- }
-
- return null
- },
- },
- },
- ],
- onwarn(warning, defaultHandler) {
- // Dependencies or modules may use "use client" as an indicator for React
- // Server Components that this module should only be loaded on the client.
- if (warning.code === 'MODULE_LEVEL_DIRECTIVE' && warning.message.includes('use client')) {
- return
- }
-
- if (warning.code === 'CIRCULAR_DEPENDENCY') {
- throw warning
- }
-
- defaultHandler(warning)
- },
-}
-
-export default [
- // ESM
- {
- ...baseConfig,
- external: dependencies.map(createPackageRegex),
- output: {
- interop: 'auto',
- dir: 'dist',
- format: 'esm',
- preserveModules: true,
- preserveModulesRoot: 'src',
- },
- },
-]
diff --git a/packages/react/script/build b/packages/react/script/build
index 4dab4524738..1416240f3ef 100755
--- a/packages/react/script/build
+++ b/packages/react/script/build
@@ -12,10 +12,7 @@ npm run build:precompile-color-schemes
npm run type-css-modules
# Bundle
-npx rollup -c
-
-# Type check
-npx tsc --project tsconfig.build.json
+npx rolldown -c
# Build components.json file for documentation
npm run build:components.json
diff --git a/packages/react/script/get-export-sizes.cjs b/packages/react/script/get-export-sizes.cjs
index 8d2d87d34b7..69babdf2e34 100644
--- a/packages/react/script/get-export-sizes.cjs
+++ b/packages/react/script/get-export-sizes.cjs
@@ -3,28 +3,44 @@
const fs = require('node:fs/promises')
const path = require('node:path')
const core = require('@actions/core')
-const commonjs = require('@rollup/plugin-commonjs')
-const {nodeResolve} = require('@rollup/plugin-node-resolve')
-const virtual = require('@rollup/plugin-virtual')
-const json = require('@rollup/plugin-json')
const {filesize} = require('filesize')
-const {rollup} = require('rollup')
+const {rolldown} = require('rolldown')
const {minify} = require('terser')
const gzipSize = require('gzip-size')
const noopCSSModules = {
name: 'empty-css-modules',
- transform(_code, id) {
- if (!id.endsWith('.css')) {
- return
+ resolveId(source, importer) {
+ if (source.endsWith('.css') && importer) {
+ return path.resolve(path.dirname(importer), source)
}
- return {
- code: `export default {}`,
+ },
+
+ load(id) {
+ if (id.endsWith('.css')) {
+ return {
+ code: `export default {}`,
+ moduleType: 'js',
+ }
}
},
}
+function virtual(modules) {
+ return {
+ name: 'virtual',
+ resolveId(source) {
+ if (Object.hasOwn(modules, source)) {
+ return source
+ }
+ },
+ load(id) {
+ return modules[id]
+ },
+ }
+}
+
async function main() {
const rootDirectory = path.resolve(__dirname, '..')
const packageJsonPath = path.join(rootDirectory, 'package.json')
@@ -47,17 +63,10 @@ async function main() {
core.info(`Analyzing entrypoint: ${entrypoint.entrypoint}`)
const filepath = path.resolve(rootDirectory, entrypoint.filepath)
- const bundle = await rollup({
+ const bundle = await rolldown({
input: filepath,
external,
- plugins: [
- nodeResolve(),
- commonjs({
- include: [/node_modules/],
- }),
- json(),
- noopCSSModules,
- ],
+ plugins: [noopCSSModules],
onwarn: () => {},
})
const {output} = await bundle.generate({
@@ -71,16 +80,11 @@ async function main() {
for (const identifier of output[0].exports) {
core.info(`Analyzing export: ${identifier}`)
- const reexport = await rollup({
+ const reexport = await rolldown({
input: '__entrypoint__',
external,
plugins: [
- nodeResolve(),
- commonjs({
- include: /node_modules/,
- }),
noopCSSModules,
- json(),
virtual({
__entrypoint__: `export { ${identifier} } from '${filepath}';`,
}),
diff --git a/packages/react/script/react-compiler.mjs b/packages/react/script/react-compiler.mjs
index a575285f925..bb18e97c76c 100644
--- a/packages/react/script/react-compiler.mjs
+++ b/packages/react/script/react-compiler.mjs
@@ -12,24 +12,16 @@ const files = glob
return path.join(PACKAGE_DIR, match)
})
const unsupportedPatterns = [
- 'src/ActionMenu/**/*.tsx',
- 'src/Autocomplete/**/*.tsx',
- 'src/AvatarStack/**/*.tsx',
- 'src/Banner/**/*.tsx',
- 'src/Button/**/*.tsx',
- 'src/Checkbox/**/*.tsx',
- 'src/ConfirmationDialog/**/*.tsx',
- 'src/Dialog/**/*.tsx',
- 'src/Heading/**/*.tsx',
- 'src/Link/**/*.tsx',
- 'src/Pagehead/**/*.tsx',
- 'src/PageLayout/**/*.tsx',
- 'src/Pagination/**/*.tsx',
- 'src/Portal/**/*.tsx',
- 'src/SelectPanel/**/*.tsx',
- 'src/SideNav.tsx',
- 'src/UnderlineNav/**/*.tsx',
- 'src/experimental/SelectPanel2/**/*.tsx',
+ 'src/ActionMenu/ActionMenu.test.tsx',
+ 'src/ActionMenu/ActionMenu.tsx',
+ 'src/Autocomplete/Autocomplete.test.tsx',
+ 'src/Autocomplete/AutocompleteInput.tsx',
+ 'src/Button/ButtonBase.tsx',
+ 'src/Dialog/Dialog.tsx',
+ 'src/SelectPanel/SelectPanel.examples.stories.tsx',
+ 'src/SelectPanel/SelectPanel.test.tsx',
+ 'src/SelectPanel/SelectPanel.tsx',
+ 'src/experimental/SelectPanel2/SelectPanel.tsx',
'src/hooks/useAnchoredPosition.ts',
'src/hooks/useFocusTrap.ts',
'src/hooks/useFocusZone.ts',
@@ -37,10 +29,7 @@ const unsupportedPatterns = [
'src/hooks/useOnEscapePress.ts',
'src/hooks/useResizeObserver.ts',
'src/hooks/useSafeTimeout.ts',
- 'src/hooks/useScrollFlash.ts',
- 'src/internal/components/CheckboxOrRadioGroup/**/*.tsx',
- 'src/hooks/useMergedRefs.ts',
- 'src/TooltipV2/**/*.tsx',
+ 'src/TooltipV2/Tooltip.tsx',
]
const unsupported = new Set(
diff --git a/packages/react/src/ActionBar/ActionBar.docs.json b/packages/react/src/ActionBar/ActionBar.docs.json
index b38d7affc1a..b1e1bc89bd0 100644
--- a/packages/react/src/ActionBar/ActionBar.docs.json
+++ b/packages/react/src/ActionBar/ActionBar.docs.json
@@ -87,6 +87,34 @@
"url": "/react/IconButton"
}
},
+ {
+ "name": "ActionBar.Button",
+ "props": [
+ {
+ "name": "children",
+ "type": "React.ReactNode",
+ "defaultValue": "",
+ "required": true,
+ "description": "The text content of the button."
+ },
+ {
+ "name": "leadingVisual",
+ "type": "Component",
+ "defaultValue": "",
+ "description": "Provide an octicon to render before the button text. It will also be shown when the button overflows into the menu."
+ },
+ {
+ "name": "disabled",
+ "type": "boolean",
+ "defaultValue": "",
+ "description": "Provides a disabled state for the button. The button will remain focusable, and have `aria-disabled` applied."
+ }
+ ],
+ "passthrough": {
+ "element": "Button",
+ "url": "/react/Button"
+ }
+ },
{
"name": "ActionBar.Divider",
"props": []
diff --git a/packages/react/src/ActionBar/ActionBar.examples.stories.tsx b/packages/react/src/ActionBar/ActionBar.examples.stories.tsx
index 29cc17e1526..fc8198eb9bf 100644
--- a/packages/react/src/ActionBar/ActionBar.examples.stories.tsx
+++ b/packages/react/src/ActionBar/ActionBar.examples.stories.tsx
@@ -72,6 +72,17 @@ export const SmallActionBar = () => (
)
+export const WithTextButtons = () => (
+
+ Save
+ Add file
+ Search
+
+ Cancel
+ Disabled
+
+)
+
export const GapScale = () => (
diff --git a/packages/react/src/ActionBar/ActionBar.test.tsx b/packages/react/src/ActionBar/ActionBar.test.tsx
index 98fd2d4b777..f5537efde2e 100644
--- a/packages/react/src/ActionBar/ActionBar.test.tsx
+++ b/packages/react/src/ActionBar/ActionBar.test.tsx
@@ -82,6 +82,72 @@ describe('ActionBar', () => {
})
})
+describe('ActionBar.Button', () => {
+ afterEach(() => {
+ vi.clearAllMocks()
+ })
+
+ it('renders a text button with its children as the accessible name', () => {
+ render(
+
+ Save
+ ,
+ )
+
+ expect(screen.getByRole('button', {name: 'Save'})).toBeInTheDocument()
+ })
+
+ it('should trigger non-disabled button', () => {
+ const onClick = vi.fn()
+ render(
+
+ Save
+ ,
+ )
+
+ screen.getByRole('button', {name: 'Save'}).click()
+
+ expect(onClick).toHaveBeenCalled()
+ })
+
+ it('should not trigger disabled button', () => {
+ const onClick = vi.fn()
+ render(
+
+
+ Save
+
+ ,
+ )
+
+ screen.getByRole('button', {name: 'Save'}).click()
+
+ expect(onClick).not.toHaveBeenCalled()
+ })
+
+ it('should not trigger disabled button with spacebar or enter', async () => {
+ const user = userEvent.setup()
+ const onClick = vi.fn()
+ render(
+
+
+ Save
+
+ ,
+ )
+
+ const button = screen.getByRole('button', {name: 'Save'})
+
+ act(() => {
+ button.focus()
+ })
+
+ await user.keyboard('{Enter}')
+
+ expect(onClick).not.toHaveBeenCalled()
+ })
+})
+
describe('ActionBar Registry System', () => {
it('should preserve order with deep nesting', () => {
render(
@@ -442,6 +508,17 @@ describe('ActionBar data-component attributes', () => {
expect(iconButton).toBeInTheDocument()
})
+ it('renders ActionBar.Button with a text label', () => {
+ render(
+
+ Save
+ ,
+ )
+
+ const button = screen.getByRole('button', {name: 'Save'})
+ expect(button).toBeInTheDocument()
+ })
+
it('renders ActionBar.VerticalDivider with data-component attribute', () => {
const {container} = render(
diff --git a/packages/react/src/ActionBar/ActionBar.tsx b/packages/react/src/ActionBar/ActionBar.tsx
index 8fd85484606..037922e3aed 100644
--- a/packages/react/src/ActionBar/ActionBar.tsx
+++ b/packages/react/src/ActionBar/ActionBar.tsx
@@ -1,23 +1,25 @@
import {type RefObject, type MouseEventHandler, useContext} from 'react'
-import React, {useState, useCallback, useRef, forwardRef, useMemo, useSyncExternalStore} from 'react'
+import React, {useState, useCallback, useRef, forwardRef, useMemo} from 'react'
import {KebabHorizontalIcon} from '@primer/octicons-react'
import {ActionList, type ActionListItemProps} from '../ActionList'
-import type {IconButtonProps} from '../Button'
-import {IconButton} from '../Button'
+import type {ButtonProps, IconButtonProps} from '../Button'
+import {Button, IconButton} from '../Button'
import {ActionMenu} from '../ActionMenu'
import {useFocusZone, FocusKeys} from '../hooks/useFocusZone'
import styles from './ActionBar.module.css'
import {clsx} from 'clsx'
import {useMergedRefs} from '../hooks'
import {createDescendantRegistry} from '../utils/descendant-registry'
+import {OverflowObserverProvider} from '../internal/components/OverflowObserverProvider'
+import {useIsClipped} from '../internal/hooks/useOverflowObserver'
type ChildProps =
| {
type: 'action'
- label: string
+ label: React.ReactNode
disabled: boolean
- icon: ActionBarIconButtonProps['icon']
+ icon?: ActionBarIconButtonProps['icon']
onClick: MouseEventHandler
}
| {type: 'divider' | 'group'}
@@ -84,6 +86,8 @@ export type ActionBarProps = {
export type ActionBarIconButtonProps = {disabled?: boolean} & IconButtonProps
+export type ActionBarButtonProps = {disabled?: boolean} & ButtonProps
+
export type ActionBarMenuItemProps =
| ({
/**
@@ -236,7 +240,11 @@ export const ActionBar: React.FC> = ({
{/* An empty first element allows the real first item to wrap to the next line and get clipped. */}
-
{children}
+
+
+ {children}
+
+
@@ -260,15 +268,17 @@ export const ActionBar: React.FC> = ({
const {onClick, icon: Icon, label, disabled} = menuItem
return (
{
typeof onClick === 'function' && onClick(event as React.MouseEvent)
}}
disabled={disabled}
>
-
-
-
+ {Icon ? (
+
+
+
+ ) : null}
{label}
)
@@ -310,33 +320,9 @@ function useActionBarItem(ref: React.RefObject, registryProp
const isGroupOverflowing = useContext(ActionBarGroupContext)?.isOverflowing
const isInGroup = isGroupOverflowing !== undefined
- const subscribeIntersectionObserver = useCallback(
- (onChange: () => void) => {
- // There's no need to register observers on items inside of a group
- // since the entire group overflows at once
- if (isInGroup) return () => {}
-
- // Technically 1 should work as the threshold, but in some scenarios that
- // doesn't seem to trigger correctly - probably because the browser still
- // thinks a tiny bit of the button is not visible, since the container
- // height is exactly the button height. So 75% should be more reliable.
- const observer = new IntersectionObserver(() => onChange(), {threshold: 0.75})
-
- if (ref.current) observer.observe(ref.current)
- return () => observer.disconnect()
- },
- [ref, isInGroup],
- )
-
- const isItemOverflowing = useSyncExternalStore(
- subscribeIntersectionObserver,
- // Note: the IntersectionObserver is just being used as a trigger to re-check
- // `offsetTop > 0`; this is fast and simpler than checking visibility from
- // the observed entry. When an item wraps, it will move to the next row which
- // increases its `offsetTop`
- () => (ref.current ? ref.current.offsetTop > 0 : false),
- () => false,
- )
+ // There's no need to observe items inside of a group since the entire group overflows at once, so `disabled` skips
+ // subscription for grouped items and always reports `false` for the child item itself.
+ const isItemOverflowing = useIsClipped(ref, {disabled: isInGroup})
const isOverflowing = isGroupOverflowing || isItemOverflowing
@@ -390,6 +376,51 @@ export const ActionBarIconButton = forwardRef(
},
)
+export const ActionBarButton = forwardRef(({disabled, onClick, ...props}: ActionBarButtonProps, forwardedRef) => {
+ const ref = useRef(null)
+ const mergedRef = useMergedRefs(forwardedRef, ref)
+
+ const {size} = React.useContext(ActionBarContext)
+
+ const {children, leadingVisual} = props
+
+ const {dataOverflowingAttr} = useActionBarItem(
+ ref,
+ useMemo(
+ (): ChildProps => ({
+ type: 'action',
+ label: children,
+ // Only forward the leading visual to the overflow menu when it is a component
+ // that can be rendered as an icon (e.g. an octicon), matching ActionBar.IconButton.
+ icon: typeof leadingVisual === 'function' ? (leadingVisual as ActionBarIconButtonProps['icon']) : undefined,
+ disabled: !!disabled,
+ onClick: onClick as MouseEventHandler,
+ }),
+ [children, leadingVisual, disabled, onClick],
+ ),
+ )
+
+ const clickHandler = useCallback(
+ (event: React.MouseEvent) => {
+ if (disabled) return
+ onClick?.(event)
+ },
+ [disabled, onClick],
+ )
+
+ return (
+
+ )
+})
+
const ActionBarGroupContext = React.createContext<{
isOverflowing: boolean
} | null>(null)
diff --git a/packages/react/src/ActionBar/index.ts b/packages/react/src/ActionBar/index.ts
index 9a7e78b503b..ef72a7a1e1d 100644
--- a/packages/react/src/ActionBar/index.ts
+++ b/packages/react/src/ActionBar/index.ts
@@ -1,8 +1,16 @@
-import {ActionBar as Bar, ActionBarIconButton, VerticalDivider, ActionBarGroup, ActionBarMenu} from './ActionBar'
-export type {ActionBarProps, ActionBarMenuProps, ActionBarMenuItemProps} from './ActionBar'
+import {
+ ActionBar as Bar,
+ ActionBarIconButton,
+ ActionBarButton,
+ VerticalDivider,
+ ActionBarGroup,
+ ActionBarMenu,
+} from './ActionBar'
+export type {ActionBarProps, ActionBarButtonProps, ActionBarMenuProps, ActionBarMenuItemProps} from './ActionBar'
const ActionBar = Object.assign(Bar, {
IconButton: ActionBarIconButton,
+ Button: ActionBarButton,
Divider: VerticalDivider,
Group: ActionBarGroup,
Menu: ActionBarMenu,
diff --git a/packages/react/src/ActionList/ActionList.module.css b/packages/react/src/ActionList/ActionList.module.css
index 6195a4a1bb8..aa7d807f673 100644
--- a/packages/react/src/ActionList/ActionList.module.css
+++ b/packages/react/src/ActionList/ActionList.module.css
@@ -557,9 +557,17 @@
display: none;
}
- /* show active indicator on parent collapse if child is active */
- /* stylelint-disable-next-line selector-pseudo-class-disallowed-list -- scoped to CSS Module, audited (github/github-ui#17224) */
- &:has(~ .SubGroup [data-active='true']) {
+ /*
+ * Show the active indicator on a collapsed parent when one of its subnav
+ * items is active. NavList sets `active` (→ the parent 's `data-active`)
+ * to exactly `!isOpen && containsCurrentItem`, which is the same condition as
+ * `:has(~ .SubGroup [data-active='true'])`. Keying off the ancestor's
+ * `data-active` avoids Safari's `:has()` invalidation cost, which is
+ * especially high here because the old anchor (`[data-active]`) toggles on
+ * every navigation and combined a general-sibling with a descendant match.
+ * The ancestor prefix keeps the original selector specificity (0,4,0).
+ */
+ .ActionListItem[data-active='true'] & {
background: var(--control-transparent-bgColor-selected);
& .ItemLabel {
@@ -655,13 +663,6 @@ default block */
word-break: normal;
}
- /* stylelint-disable-next-line selector-pseudo-class-disallowed-list -- scoped to CSS Module, audited (github/github-ui#17224) */
- &:has([data-truncate='true']) {
- & .ItemLabel {
- flex: 1 0 auto;
- }
- }
-
& .Description {
/* stylelint-disable-next-line primer/typography */
line-height: 16px;
diff --git a/packages/react/src/ActionList/Heading.test.tsx b/packages/react/src/ActionList/Heading.test.tsx
index 2e32f776988..2bd6b5f72c5 100644
--- a/packages/react/src/ActionList/Heading.test.tsx
+++ b/packages/react/src/ActionList/Heading.test.tsx
@@ -5,6 +5,7 @@ import {ActionList} from '.'
import {ActionMenu} from '../ActionMenu'
import {implementsClassName, withExpectedConsoleError} from '../utils/testing'
import classes from './Heading.module.css'
+import visuallyHiddenClasses from '../_VisuallyHidden.module.css'
describe('ActionList.Heading', () => {
implementsClassName(
@@ -29,6 +30,41 @@ describe('ActionList.Heading', () => {
expect(heading).toHaveTextContent('Heading')
})
+ it('should not wrap the heading in a span', async () => {
+ const {getByRole} = HTMLRender(
+
+ Heading
+ ,
+ )
+ const heading = getByRole('heading', {level: 1})
+ expect(heading.parentElement?.tagName).not.toBe('SPAN')
+ expect(heading).toHaveClass(classes.ActionListHeader)
+ })
+
+ it('should apply the visually-hidden class to the heading when visuallyHidden is set', async () => {
+ const {getByRole} = HTMLRender(
+
+
+ Heading
+
+ ,
+ )
+ const heading = getByRole('heading', {level: 1})
+ expect(heading).toHaveClass(visuallyHiddenClasses.InternalVisuallyHidden)
+ expect(heading).toHaveClass(classes.ActionListHeader)
+ })
+
+ it('should not apply the visually-hidden class to the heading by default', async () => {
+ const {getByRole} = HTMLRender(
+
+ Heading
+ ,
+ )
+ const heading = getByRole('heading', {level: 1})
+ expect(heading).not.toHaveClass(visuallyHiddenClasses.InternalVisuallyHidden)
+ expect(heading).toHaveClass(classes.ActionListHeader)
+ })
+
it('should label the action list with the heading id', async () => {
const {container, getByRole} = HTMLRender(
diff --git a/packages/react/src/ActionList/Heading.tsx b/packages/react/src/ActionList/Heading.tsx
index 3ffcd843468..b8dd90e305d 100644
--- a/packages/react/src/ActionList/Heading.tsx
+++ b/packages/react/src/ActionList/Heading.tsx
@@ -3,11 +3,11 @@ import {useMergedRefs} from '../hooks'
import type {ForwardRefComponent as PolymorphicForwardRefComponent} from '../utils/polymorphic'
import {default as HeadingComponent} from '../Heading'
import {ListContext} from './shared'
-import VisuallyHidden from '../_VisuallyHidden'
import {ActionListContainerContext} from './ActionListContainerContext'
import {invariant} from '../utils/invariant'
import {clsx} from 'clsx'
import classes from './Heading.module.css'
+import visuallyHiddenClasses from '../_VisuallyHidden.module.css'
type HeadingLevels = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'
type HeadingVariants = 'large' | 'medium' | 'small'
@@ -33,21 +33,23 @@ export const Heading = forwardRef(({as, size, children, visuallyHidden = false,
)
return (
-
-
- {children}
-
-
+
+ {children}
+
)
}) as PolymorphicForwardRefComponent
diff --git a/packages/react/src/Breadcrumbs/Breadcrumbs.module.css b/packages/react/src/Breadcrumbs/Breadcrumbs.module.css
index bd1691f28f0..17cf5ee538a 100644
--- a/packages/react/src/Breadcrumbs/Breadcrumbs.module.css
+++ b/packages/react/src/Breadcrumbs/Breadcrumbs.module.css
@@ -117,8 +117,9 @@
list-style: none;
/* allow menu items to wrap line */
- /* stylelint-disable-next-line selector-pseudo-class-disallowed-list -- scoped to CSS Module, audited (github/github-ui#17224) */
- &:has(.MenuOverlay) {
+ /* The overflow-menu item is marked in React (`data-overflow-menu`) instead of using
+ `:has(.MenuOverlay)`, avoiding Safari's `:has()` invalidation cost. */
+ &[data-overflow-menu] {
white-space: normal;
}
diff --git a/packages/react/src/Breadcrumbs/Breadcrumbs.tsx b/packages/react/src/Breadcrumbs/Breadcrumbs.tsx
index f348609e88b..00f3f266787 100644
--- a/packages/react/src/Breadcrumbs/Breadcrumbs.tsx
+++ b/packages/react/src/Breadcrumbs/Breadcrumbs.tsx
@@ -313,7 +313,7 @@ function Breadcrumbs({className, children, style, overflow = 'wrap', variant = '
// In 'menu-with-root' mode the root stays visible, so drop it from the menu.
const effectiveMenuItems = effectiveHideRoot ? menuItems : menuItems.slice(1)
const menuElement = (
-
+
export function FeatureFlags({children, flags}: FeatureFlagsProps) {
diff --git a/packages/react/src/NavList/NavList.dev.stories.tsx b/packages/react/src/NavList/NavList.dev.stories.tsx
index d4316028b7f..ea8017b59ea 100644
--- a/packages/react/src/NavList/NavList.dev.stories.tsx
+++ b/packages/react/src/NavList/NavList.dev.stories.tsx
@@ -1,4 +1,5 @@
import type {Meta} from '@storybook/react-vite'
+import {within, userEvent} from 'storybook/test'
import {PageLayout} from '../PageLayout'
import {NavList} from './NavList'
import {ArrowRightIcon, ArrowLeftIcon, BookIcon, FileDirectoryIcon} from '@primer/octicons-react'
@@ -69,3 +70,38 @@ export const WithGroupTitleAndHeading = () => (
)
+
+/**
+ * A collapsed parent item whose sub-nav contains the current item shows an
+ * active indicator. NavList auto-expands sub-navs that contain the current
+ * item, so the play function collapses it to surface the collapsed-parent
+ * active styling for visual regression coverage. This exercises the CSS that
+ * replaced `:has(~ .SubGroup [data-active])` with the parent's `data-active`.
+ */
+export const CollapsedSubNavWithCurrentItem = () => (
+
+
+
+ Item 1
+
+ Item with current sub-item
+
+
+ Current sub-item
+
+ Other sub-item
+
+
+ Item 3
+
+
+
+
+)
+
+CollapsedSubNavWithCurrentItem.storyName = 'Collapsed SubNav With Current Item'
+CollapsedSubNavWithCurrentItem.play = async ({canvasElement}: {canvasElement: HTMLElement}) => {
+ const canvas = within(canvasElement)
+ const parentButton = await canvas.findByRole('button', {name: /Item with current sub-item/i})
+ await userEvent.click(parentButton)
+}
diff --git a/packages/react/src/NavList/NavList.docs.json b/packages/react/src/NavList/NavList.docs.json
index f44605ffe60..6ea9ab1e73f 100644
--- a/packages/react/src/NavList/NavList.docs.json
+++ b/packages/react/src/NavList/NavList.docs.json
@@ -48,6 +48,46 @@
}
],
"subcomponents": [
+ {
+ "name": "NavList.Heading",
+ "props": [
+ {
+ "name": "as",
+ "type": "'h2' | 'h3'",
+ "defaultValue": "\"h2\"",
+ "required": false,
+ "description": "Semantic heading level for the NavList. Also sets the default level for child group headings, which render one level deeper (h3 under an h2, h4 under an h3). Constrained to h2/h3 so the hierarchy stays shallow."
+ },
+ {
+ "name": "visuallyHidden",
+ "type": "boolean",
+ "defaultValue": "false",
+ "required": false,
+ "description": "Visually hide the heading while keeping it available to assistive technology and as the accessible name for the `nav` landmark."
+ },
+ {
+ "name": "children",
+ "type": "ReactNode",
+ "required": true,
+ "description": "The text rendered as the NavList's heading."
+ },
+ {
+ "name": "id",
+ "type": "string",
+ "description": "Custom id for the heading element. When set, it is used as the `aria-labelledby` target that names the `nav` landmark; otherwise a generated id is used."
+ },
+ {
+ "name": "className",
+ "type": "string",
+ "description": "Custom CSS class name."
+ },
+ {
+ "name": "style",
+ "type": "React.CSSProperties",
+ "description": "Custom CSS styles."
+ }
+ ]
+ },
{
"name": "NavList.Item",
"props": [
@@ -194,10 +234,9 @@
},
{
"name": "as",
- "description": "Heading level for the group heading. Sets the semantic heading tag.",
+ "description": "Heading level for the group heading. Sets the semantic heading tag. Defaults to one level below a `NavList.Heading` (h3 under an h2, h4 under an h3), or `h3` when there is no `NavList.Heading`.",
"required": false,
- "type": "'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'",
- "defaultValue": "\"h3\""
+ "type": "'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'"
}
]
},
diff --git a/packages/react/src/NavList/NavList.features.stories.tsx b/packages/react/src/NavList/NavList.features.stories.tsx
index e575ffe71f6..fb3983f64c0 100644
--- a/packages/react/src/NavList/NavList.features.stories.tsx
+++ b/packages/react/src/NavList/NavList.features.stories.tsx
@@ -646,4 +646,48 @@ export const WithItemGap: StoryFn = () => (
WithItemGap.storyName = 'With gap between items (behind feature flag)'
+export const WithHeading: StoryFn = () => (
+
+
+
+ Settings
+
+
+ Profile
+
+ Appearance
+
+
+ Password and authentication
+ Sessions
+
+
+
+
+
+)
+
+export const WithVisuallyHiddenHeading: StoryFn = () => (
+
+
+
+ Settings
+
+
+ Profile
+
+ Appearance
+
+
+ Password and authentication
+ Sessions
+
+
+
+
+
+)
+
+WithVisuallyHiddenHeading.storyName = 'With Heading (hidden)'
+
export default meta
diff --git a/packages/react/src/NavList/NavList.module.css b/packages/react/src/NavList/NavList.module.css
index 9908361e112..93dbb6674eb 100644
--- a/packages/react/src/NavList/NavList.module.css
+++ b/packages/react/src/NavList/NavList.module.css
@@ -1,3 +1,9 @@
+.Heading {
+ margin-block-end: var(--base-size-8);
+ /* stylelint-disable-next-line primer/spacing */
+ margin-inline-start: calc(var(--control-medium-paddingInline-condensed) + var(--base-size-8));
+}
+
.GroupHeading > a {
color: var(--fgColor-default);
text-decoration: inherit;
diff --git a/packages/react/src/NavList/NavList.test.tsx b/packages/react/src/NavList/NavList.test.tsx
index b70f1314d4b..cedde128ac5 100644
--- a/packages/react/src/NavList/NavList.test.tsx
+++ b/packages/react/src/NavList/NavList.test.tsx
@@ -619,4 +619,137 @@ describe('NavList.ShowMoreItem with pages', () => {
expect(getComputedStyle(subGroup as HTMLElement).marginBlockStart).toBe('0px')
})
})
+
+ describe('NavList.Heading', () => {
+ it('renders an h2 heading by default', () => {
+ const {getByRole} = render(
+
+ Settings
+ Item 1
+ ,
+ )
+
+ expect(getByRole('heading', {level: 2, name: 'Settings'})).toBeInTheDocument()
+ })
+
+ it('respects an explicit heading level via the `as` prop', () => {
+ const {getByRole} = render(
+
+ Settings
+ Item 1
+ ,
+ )
+
+ expect(getByRole('heading', {level: 3, name: 'Settings'})).toBeInTheDocument()
+ })
+
+ it('labels the nav landmark with the heading', () => {
+ const {getByRole} = render(
+
+ Settings
+ Item 1
+ ,
+ )
+
+ const nav = getByRole('navigation', {name: 'Settings'})
+ const heading = getByRole('heading', {name: 'Settings'})
+ expect(nav).toHaveAttribute('aria-labelledby', heading.id)
+ })
+
+ it('does not override a consumer-supplied aria-label', () => {
+ const {getByRole} = render(
+
+ Settings
+ Item 1
+ ,
+ )
+
+ const nav = getByRole('navigation', {name: 'Custom label'})
+ expect(nav).not.toHaveAttribute('aria-labelledby')
+ })
+
+ it('defaults group headings to one level below the NavList.Heading', () => {
+ const {getByRole} = render(
+
+ Settings
+
+ Profile
+
+ ,
+ )
+
+ expect(getByRole('heading', {level: 2, name: 'Settings'})).toBeInTheDocument()
+ expect(getByRole('heading', {level: 3, name: 'Account'})).toBeInTheDocument()
+ })
+
+ it('derives group headings to h4 when the NavList.Heading is an h3', () => {
+ const {getByRole} = render(
+
+ Settings
+
+ Profile
+
+ ,
+ )
+
+ expect(getByRole('heading', {level: 3, name: 'Settings'})).toBeInTheDocument()
+ expect(getByRole('heading', {level: 4, name: 'Account'})).toBeInTheDocument()
+ })
+
+ it('keeps the h3 group heading default when there is no NavList.Heading', () => {
+ const {getByRole} = render(
+
+
+ Profile
+
+ ,
+ )
+
+ expect(getByRole('heading', {level: 3, name: 'Account'})).toBeInTheDocument()
+ })
+
+ it('lets group headings override their computed level with `as`', () => {
+ const {getByRole} = render(
+
+ Settings
+
+ Account
+ Profile
+
+ ,
+ )
+
+ expect(getByRole('heading', {level: 4, name: 'Account'})).toBeInTheDocument()
+ })
+
+ it('keeps a visually hidden heading in the accessibility tree', () => {
+ const {getByRole} = render(
+
+ Settings
+ Item 1
+ ,
+ )
+
+ const heading = getByRole('heading', {level: 2, name: 'Settings'})
+ expect(heading).toBeInTheDocument()
+ expect(getByRole('navigation', {name: 'Settings'})).toBeInTheDocument()
+ // The visually-hidden styles are applied to the heading itself, not a wrapping element.
+ expect(heading.parentElement?.tagName).not.toBe('SPAN')
+ })
+
+ it('forwards standard HTML attributes to the heading element', () => {
+ const {getByRole} = render(
+
+
+ Settings
+
+ Item 1
+ ,
+ )
+
+ const heading = getByRole('heading', {level: 2, name: 'Settings'})
+ expect(heading).toHaveAttribute('data-testid', 'nav-heading')
+ expect(heading).toHaveAttribute('title', 'Section navigation')
+ })
+ })
})
diff --git a/packages/react/src/NavList/NavList.tsx b/packages/react/src/NavList/NavList.tsx
index 6af6985976b..3deb4662531 100644
--- a/packages/react/src/NavList/NavList.tsx
+++ b/packages/react/src/NavList/NavList.tsx
@@ -19,6 +19,31 @@ import navListClasses from './NavList.module.css'
import {flushSync} from 'react-dom'
import {useSlots} from '../hooks/useSlots'
import {fixedForwardRef, type PolymorphicProps} from '../utils/modern-polymorphic'
+import HeadingComponent from '../Heading'
+import visuallyHiddenClasses from '../_VisuallyHidden.module.css'
+import type {FCWithSlotMarker} from '../utils/types/Slots'
+
+type HeadingLevels = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'
+
+// NavList establishes a shallow hierarchy: the NavList itself is named by a
+// heading (h2 or h3) and its groups render one level deeper (h3 or h4). We don't
+// expose an h1 (that's the page title) and we don't go deeper than h4.
+type NavListHeadingLevels = 'h2' | 'h3'
+
+// Publishes the resolved numeric level of a NavList.Heading (e.g. 2 for an h2) so
+// NavList.Group/NavList.GroupHeading can default to one level deeper. `null` when
+// there is no NavList.Heading, in which case groups keep their historical h3 default.
+const NavListHeadingLevelContext = React.createContext(null)
+
+function headingTagToLevel(as: NavListHeadingLevels): number {
+ return Number.parseInt(as.slice(1), 10)
+}
+
+function levelToHeadingTag(level: number): HeadingLevels {
+ // Clamp to h4 so group headings never go deeper than the supported hierarchy.
+ const clamped = Math.min(Math.max(level, 1), 4)
+ return `h${clamped}` as HeadingLevels
+}
// ----------------------------------------------------------------------------
// NavList
@@ -27,21 +52,77 @@ export type NavListProps = {
children: React.ReactNode
} & React.ComponentProps<'nav'>
-const Root = React.forwardRef(({children, ...props}, ref) => {
+const Root = React.forwardRef(
+ ({children, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledby, ...props}, ref) => {
+ const [slots, childrenWithoutHeading] = useSlots(children, {
+ heading: Heading,
+ })
+
+ const fallbackHeadingId = useId()
+ const heading = slots.heading
+ const headingId = heading ? (heading.props.id ?? fallbackHeadingId) : undefined
+ const headingLevel = heading ? headingTagToLevel(heading.props.as ?? 'h2') : null
+
+ // Don't override a consumer-supplied accessible name; otherwise label the
+ // landmark with the heading so it gets an accessible name automatically.
+ const navLabelledby = ariaLabelledby ?? (ariaLabel ? undefined : headingId)
+
+ return (
+
+
+ {heading ? React.cloneElement(heading, {id: headingId}) : null}
+
+ {childrenWithoutHeading}
+
+
+
+ )
+ },
+)
+
+Root.displayName = 'NavList'
+
+// ----------------------------------------------------------------------------
+// NavList.Heading
+
+export type NavListHeadingProps = {
+ /** Semantic heading level for the NavList. Also sets the default level for child group headings, which render one level deeper. */
+ as?: NavListHeadingLevels
+ /** Visually hide the heading while keeping it available to assistive technology. */
+ visuallyHidden?: boolean
+} & React.ComponentPropsWithoutRef<'h2'>
+
+const Heading: FCWithSlotMarker = ({
+ as = 'h2',
+ visuallyHidden = false,
+ className,
+ children,
+ ...props
+}) => {
return (
-
-
- {children}
-
-
+
+ {children}
+
)
-})
+}
-Root.displayName = 'NavList'
+Heading.displayName = 'NavList.Heading'
+Heading.__SLOT__ = Symbol('NavList.Heading')
// ----------------------------------------------------------------------------
// NavList.Item
@@ -285,13 +366,17 @@ export type NavListGroupProps = React.HTMLAttributes & {
}
const Group: React.FC = ({title, children, ...props}) => {
+ const headingLevel = React.useContext(NavListHeadingLevelContext)
+ // Default the group heading to one level below the NavList.Heading (h3 under an
+ // h2, h4 under an h3), falling back to h3 when there is no NavList.Heading. To
+ // use a different level, pass NavList.GroupHeading with an explicit `as` instead.
+ const groupHeadingAs = headingLevel ? levelToHeadingTag(headingLevel + 1) : 'h3'
return (
<>
- {/* Setting up the default value for the heading level. TODO: API update to give flexibility to NavList.Group title's heading level */}
{title ? (
-
+
{title}
) : null}
@@ -409,10 +494,12 @@ export type NavListGroupHeadingProps = ActionListGroupHeadingProps
* This is an alternative to the `title` prop on `NavList.Group`.
* It was primarily added to allow links in group headings.
*/
-const GroupHeading: React.FC = ({as = 'h3', className, ...rest}) => {
+const GroupHeading: React.FC = ({as, className, ...rest}) => {
+ const headingLevel = React.useContext(NavListHeadingLevelContext)
+ const resolvedAs = as ?? (headingLevel ? levelToHeadingTag(headingLevel + 1) : 'h3')
return (
= ({as = 'h3', className,
export const NavList = Object.assign(Root, {
Description: ActionList.Description,
+ Heading,
Item,
SubNav,
LeadingVisual,
diff --git a/packages/react/src/PageLayout/PageLayout.tsx b/packages/react/src/PageLayout/PageLayout.tsx
index 1fcbbc78f97..17ab7e8ca2f 100644
--- a/packages/react/src/PageLayout/PageLayout.tsx
+++ b/packages/react/src/PageLayout/PageLayout.tsx
@@ -67,6 +67,7 @@ export type PageLayoutProps = {
_slotsConfig?: Record<'header' | 'footer' | 'sidebar', React.ElementType>
className?: string
style?: React.CSSProperties
+ 'data-component'?: string
}
// TODO: refs
@@ -79,6 +80,7 @@ const Root: React.FC> = ({
className,
style,
_slotsConfig: slotsConfig,
+ 'data-component': dataComponent = 'PageLayout',
}) => {
const paneRef = useRef(null)
const contentWrapperRef = useRef(null)
@@ -101,7 +103,13 @@ const Root: React.FC> = ({
return (
-
+
{slots.sidebar}
{slots.header}
@@ -120,7 +128,10 @@ const RootWrapper = memo(
children,
className,
hasSidebar,
- }: React.PropsWithChildren
& {hasSidebar?: boolean}>) => {
+ dataComponent,
+ }: React.PropsWithChildren<
+ Pick & {hasSidebar?: boolean; dataComponent: string}
+ >) => {
return (
{children}
@@ -549,6 +560,7 @@ export type PageLayoutHeaderProps = {
hidden?: boolean | ResponsiveValue
className?: string
style?: React.CSSProperties
+ 'data-component'?: string
}
const Header: FCWithSlotMarker> = ({
@@ -561,6 +573,7 @@ const Header: FCWithSlotMarker> =
children,
style,
className,
+ 'data-component': dataComponent = 'PageLayout.Header',
}) => {
// Combine divider and dividerWhenNarrow for backwards compatibility
const dividerProp =
@@ -574,7 +587,7 @@ const Header: FCWithSlotMarker> =
className?: string
style?: React.CSSProperties
+ 'data-component'?: string
}
// TODO: Account for pane width when centering content
@@ -645,6 +659,7 @@ const Content: FCWithSlotMarker>
children,
className,
style,
+ 'data-component': dataComponent = 'PageLayout.Content',
}) => {
const Component = as
const {contentWrapperRef} = React.useContext(PageLayoutContext)
@@ -654,7 +669,7 @@ const Content: FCWithSlotMarker>
ref={contentWrapperRef}
aria-label={label}
aria-labelledby={labelledBy}
- data-component="PageLayout.Content"
+ data-component={dataComponent}
style={style}
className={clsx(classes.ContentWrapper, className)}
{...getResponsiveAttributes('is-hidden', hidden)}
@@ -750,6 +765,7 @@ export type PageLayoutPaneBaseProps = {
id?: string
className?: string
style?: React.CSSProperties
+ 'data-component'?: string
}
export type PageLayoutPaneProps = PageLayoutPaneBaseProps &
@@ -799,6 +815,7 @@ const Pane = React.forwardRef {
@@ -902,7 +919,7 @@ const Pane = React.forwardRef {
@@ -1237,7 +1256,7 @@ const Sidebar = React.forwardRef
className?: string
style?: React.CSSProperties
+ 'data-component'?: string
}
const Footer: FCWithSlotMarker> = ({
@@ -1325,6 +1345,7 @@ const Footer: FCWithSlotMarker> =
children,
className,
style,
+ 'data-component': dataComponent = 'PageLayout.Footer',
}) => {
// Combine divider and dividerWhenNarrow for backwards compatibility
const dividerProp =
@@ -1338,7 +1359,7 @@ const Footer: FCWithSlotMarker> =
{
document.body.removeChild(contextPortalRoot)
document.body.removeChild(propPortalRoot)
})
+
+ it('calls onMount once after the portal is mounted', () => {
+ const onMount = vi.fn()
+ const {baseElement} = render(mount-content )
+ expect(onMount).toHaveBeenCalledTimes(1)
+ baseElement.innerHTML = ''
+ })
+
+ it('reuses the same portal container element across re-renders', () => {
+ // The container is created once (via a useState initializer), so
+ // re-rendering must update content in place rather than recreate the node.
+ const {baseElement, rerender} = render(
first )
+ const generatedRoot = baseElement.querySelector('#__primerPortalRoot__')
+ const portalNodeBefore = generatedRoot?.querySelector('[data-component="Portal"]')
+ expect(portalNodeBefore?.textContent.trim()).toEqual('first')
+
+ rerender(
second )
+ const portalNodeAfter = generatedRoot?.querySelector('[data-component="Portal"]')
+ expect(portalNodeAfter).toBe(portalNodeBefore)
+ expect(portalNodeAfter?.textContent.trim()).toEqual('second')
+
+ baseElement.innerHTML = ''
+ })
+
+ it('removes the portal container from the DOM when unmounted', () => {
+ const {baseElement, unmount} = render(
cleanup-content )
+ const generatedRoot = baseElement.querySelector('#__primerPortalRoot__')
+ expect(generatedRoot?.querySelector('[data-component="Portal"]')).toBeInstanceOf(HTMLElement)
+
+ unmount()
+ expect(generatedRoot?.querySelector('[data-component="Portal"]')).toBeNull()
+
+ baseElement.innerHTML = ''
+ })
})
diff --git a/packages/react/src/Portal/Portal.tsx b/packages/react/src/Portal/Portal.tsx
index 03100fccafc..4a84e3660e6 100644
--- a/packages/react/src/Portal/Portal.tsx
+++ b/packages/react/src/Portal/Portal.tsx
@@ -28,9 +28,10 @@ export const Portal: React.FC
> = ({
containerName: _containerName,
}) => {
const {portalContainerName} = useContext(PortalContext)
- const elementRef = React.useRef(null)
- // eslint-disable-next-line react-hooks/refs
- if (!elementRef.current) {
+ // Lazily create the portal's container element once via a useState initializer.
+ // (Reading/writing a ref during render violates the Rules of React that the
+ // compiler relies on; useState is the canonical lazy-initialization pattern.)
+ const [element] = React.useState(() => {
const div = document.createElement('div')
div.setAttribute('data-component', 'Portal')
// Portaled content should get their own stacking context so they don't interfere
@@ -38,11 +39,8 @@ export const Portal: React.FC> = ({
// to change the zIndex to a value other than "1".
div.style.position = 'relative'
div.style.zIndex = '1'
- elementRef.current = div
- }
-
- // eslint-disable-next-line react-hooks/refs
- const element = elementRef.current
+ return div
+ })
useLayoutEffect(() => {
let containerName = _containerName ?? portalContainerName
diff --git a/packages/react/src/SegmentedControl/SegmentedControl.module.css b/packages/react/src/SegmentedControl/SegmentedControl.module.css
index 05bc0feed8f..f16cb5c3425 100644
--- a/packages/react/src/SegmentedControl/SegmentedControl.module.css
+++ b/packages/react/src/SegmentedControl/SegmentedControl.module.css
@@ -188,11 +188,6 @@
}
}
- /* stylelint-disable-next-line selector-pseudo-class-disallowed-list -- scoped to CSS Module, audited (github/github-ui#17224) */
- &:focus-within:has(:focus-visible) {
- background-color: transparent;
- }
-
&:first-child {
/* stylelint-disable-next-line primer/spacing */
margin-left: -1px;
diff --git a/packages/react/src/SelectPanel/SelectPanel.tsx b/packages/react/src/SelectPanel/SelectPanel.tsx
index 9bf81f39d8e..d818724c193 100644
--- a/packages/react/src/SelectPanel/SelectPanel.tsx
+++ b/packages/react/src/SelectPanel/SelectPanel.tsx
@@ -131,7 +131,10 @@ type SelectPanelVariantProps = {variant?: 'anchored'; onCancel?: () => void} | {
export type SelectPanelProps = SelectPanelBaseProps &
Omit &
- Pick &
+ Pick<
+ AnchoredOverlayProps,
+ 'open' | 'height' | 'width' | 'align' | 'displayInViewport' | 'cssAnchorPositioningSettings'
+ > &
AnchoredOverlayWrapperAnchorProps &
(SelectPanelSingleSelection | SelectPanelMultiSelection) &
SelectPanelVariantProps
@@ -204,6 +207,7 @@ function Panel({
focusPrependedElements,
virtualized,
displayInViewport,
+ cssAnchorPositioningSettings,
...listProps
}: SelectPanelProps): JSX.Element {
const titleId = useId()
@@ -902,7 +906,11 @@ function Panel({
closeButtonProps={closeButtonProps}
displayInViewport={displayInViewport}
// Modal variant is positioned manually so native CSS anchor positioning must not be used
- cssAnchorPositioningSettings={{disable: variant === 'modal'}}
+ // Other cssAnchorPositioningSettings (e.g. fallbackStrategy) may be passed in and are forwarded here
+ cssAnchorPositioningSettings={{
+ ...cssAnchorPositioningSettings,
+ disable: variant === 'modal' || cssAnchorPositioningSettings?.disable,
+ }}
>
diff --git a/packages/react/src/SplitPageLayout/SplitPageLayout.test.tsx b/packages/react/src/SplitPageLayout/SplitPageLayout.test.tsx
index 0cc036ad5f5..5b73425d244 100644
--- a/packages/react/src/SplitPageLayout/SplitPageLayout.test.tsx
+++ b/packages/react/src/SplitPageLayout/SplitPageLayout.test.tsx
@@ -7,6 +7,25 @@ import {implementsClassName} from '../utils/testing'
describe('SplitPageLayout', () => {
implementsClassName(SplitPageLayout)
+ it('renders data-component attributes for all components', () => {
+ const {container} = render(
+
+ Header
+ Content
+ Pane
+ Sidebar
+ Footer
+ ,
+ )
+
+ expect(container.firstChild).toHaveAttribute('data-component', 'SplitPageLayout')
+ expect(container.querySelector('[data-component="SplitPageLayout.Header"]')).toBeInTheDocument()
+ expect(container.querySelector('[data-component="SplitPageLayout.Content"]')).toBeInTheDocument()
+ expect(container.querySelector('[data-component="SplitPageLayout.Pane"]')).toBeInTheDocument()
+ expect(container.querySelector('[data-component="SplitPageLayout.Sidebar"]')).toBeInTheDocument()
+ expect(container.querySelector('[data-component="SplitPageLayout.Footer"]')).toBeInTheDocument()
+ })
+
it('renders Pane with a custom ID', () => {
const {getByText} = render(
diff --git a/packages/react/src/SplitPageLayout/SplitPageLayout.tsx b/packages/react/src/SplitPageLayout/SplitPageLayout.tsx
index 8eeb4a9203d..982eb443fbd 100644
--- a/packages/react/src/SplitPageLayout/SplitPageLayout.tsx
+++ b/packages/react/src/SplitPageLayout/SplitPageLayout.tsx
@@ -7,6 +7,7 @@ import type {
PageLayoutSidebarProps,
} from '../PageLayout'
import {PageLayout} from '../PageLayout'
+import type {WithSlotMarker} from '../utils/types'
// ----------------------------------------------------------------------------
// SplitPageLayout
@@ -16,6 +17,7 @@ export type SplitPageLayoutProps = {className?: string}
export const Root: React.FC> = props => {
return (
{
// eslint-disable-next-line primer-react/direct-slot-children
- return
+ return
}
Header.displayName = 'SplitPageLayout.Header'
@@ -58,7 +60,7 @@ export const Content: React.FC {
- return
+ return
}
Content.displayName = 'SplitPageLayout.Content'
@@ -77,6 +79,7 @@ export const Pane: React.FC> =
}) => {
return (
{
- return
+ return (
+
+ )
}
Sidebar.displayName = 'SplitPageLayout.Sidebar'
@@ -114,13 +125,18 @@ export const Footer: React.FC {
// eslint-disable-next-line primer-react/direct-slot-children
- return
+ return
}
Footer.displayName = 'SplitPageLayout.Footer'
// ----------------------------------------------------------------------------
// Export
+;(Header as WithSlotMarker).__SLOT__ = PageLayout.Header.__SLOT__
+;(Content as WithSlotMarker).__SLOT__ = PageLayout.Content.__SLOT__
+;(Pane as WithSlotMarker).__SLOT__ = PageLayout.Pane.__SLOT__
+;(Sidebar as WithSlotMarker).__SLOT__ = PageLayout.Sidebar.__SLOT__
+;(Footer as WithSlotMarker).__SLOT__ = PageLayout.Footer.__SLOT__
export const SplitPageLayout = Object.assign(Root, {
Header,
diff --git a/packages/react/src/Stack/Stack.tsx b/packages/react/src/Stack/Stack.tsx
index 9a96c6e71f6..3d305129df3 100644
--- a/packages/react/src/Stack/Stack.tsx
+++ b/packages/react/src/Stack/Stack.tsx
@@ -102,6 +102,7 @@ const Stack = forwardRef(
{
implementsClassName(Stack, classes.Stack)
+ it('renders data-component attribute', () => {
+ render( )
+ expect(screen.getByTestId('stack')).toHaveAttribute('data-component', 'Stack')
+ })
+
it('should support rendering content through `children`', () => {
render(
diff --git a/packages/react/src/Stack/__tests__/StackItem.test.tsx b/packages/react/src/Stack/__tests__/StackItem.test.tsx
index 91566b91e1c..371c786d5e0 100644
--- a/packages/react/src/Stack/__tests__/StackItem.test.tsx
+++ b/packages/react/src/Stack/__tests__/StackItem.test.tsx
@@ -8,6 +8,15 @@ import classes from '../Stack.module.css'
describe('StackItem', () => {
implementsClassName(StackItem, classes.StackItem)
+ it('renders data-component attribute', () => {
+ render(
+
+ Content
+ ,
+ )
+ expect(screen.getByTestId('stack-item')).toHaveAttribute('data-component', 'StackItem')
+ })
+
it('should render its children', () => {
render(
diff --git a/packages/react/src/StateLabel/StateLabel.tsx b/packages/react/src/StateLabel/StateLabel.tsx
index 57d6b6047fb..bbc2414c263 100644
--- a/packages/react/src/StateLabel/StateLabel.tsx
+++ b/packages/react/src/StateLabel/StateLabel.tsx
@@ -84,6 +84,7 @@ const StateLabel = forwardRef(
{...rest}
ref={ref}
className={clsx(classes.StateLabel, className)}
+ data-component="StateLabel"
data-size={inferredSize}
data-status={status}
>
diff --git a/packages/react/src/StateLabel/__tests__/StateLabel.test.tsx b/packages/react/src/StateLabel/__tests__/StateLabel.test.tsx
index 4cf3f76893b..f489918f13c 100644
--- a/packages/react/src/StateLabel/__tests__/StateLabel.test.tsx
+++ b/packages/react/src/StateLabel/__tests__/StateLabel.test.tsx
@@ -7,6 +7,13 @@ import classes from '../StateLabel.module.css'
describe('StateLabel', () => {
implementsClassName(props => , classes.StateLabel)
+ it('renders data-component attribute', () => {
+ expect(HTMLRender( ).container.firstChild).toHaveAttribute(
+ 'data-component',
+ 'StateLabel',
+ )
+ })
+
it('respects the status prop', () => {
expect(HTMLRender( ).container).toMatchSnapshot()
expect(HTMLRender( ).container).toMatchSnapshot()
@@ -64,11 +71,13 @@ describe('StateLabel', () => {
expect(screenArchived.getByText('Archived')).toBeInTheDocument() // text
screenArchived.unmount()
})
+
it('renders open status without an icon', () => {
const screen = HTMLRender(Open )
expect(screen.queryByRole('img')).not.toBeInTheDocument() // svg
expect(screen.getByText('Open')).toBeInTheDocument() // text
})
+
it('renders closed status without an icon', () => {
const screen = HTMLRender(Closed )
expect(screen.queryByRole('img')).not.toBeInTheDocument() // svg
diff --git a/packages/react/src/StateLabel/__tests__/__snapshots__/StateLabel.test.tsx.snap b/packages/react/src/StateLabel/__tests__/__snapshots__/StateLabel.test.tsx.snap
index a6e81a2fcbb..40050145444 100644
--- a/packages/react/src/StateLabel/__tests__/__snapshots__/StateLabel.test.tsx.snap
+++ b/packages/react/src/StateLabel/__tests__/__snapshots__/StateLabel.test.tsx.snap
@@ -4,6 +4,7 @@ exports[`StateLabel > prefers the size prop over deprecated variant prop 1`] = `
@@ -37,6 +38,7 @@ exports[`StateLabel > renders children 1`] = `
@@ -70,6 +72,7 @@ exports[`StateLabel > respects the deprecated variant prop 1`] = `
@@ -103,6 +106,7 @@ exports[`StateLabel > respects the deprecated variant prop 2`] = `
@@ -135,6 +139,7 @@ exports[`StateLabel > respects the size prop 1`] = `
@@ -168,6 +173,7 @@ exports[`StateLabel > respects the size prop 2`] = `
@@ -200,6 +206,7 @@ exports[`StateLabel > respects the status prop 1`] = `
@@ -232,6 +239,7 @@ exports[`StateLabel > respects the status prop 2`] = `
@@ -264,6 +272,7 @@ exports[`StateLabel > respects the status prop 3`] = `
@@ -293,6 +302,7 @@ exports[`StateLabel > respects the status prop 4`] = `
@@ -322,6 +332,7 @@ exports[`StateLabel > respects the status prop 5`] = `
@@ -351,6 +362,7 @@ exports[`StateLabel > respects the status prop 6`] = `
@@ -380,6 +392,7 @@ exports[`StateLabel > respects the status prop 7`] = `
@@ -409,6 +422,7 @@ exports[`StateLabel > respects the status prop 8`] = `
@@ -438,6 +452,7 @@ exports[`StateLabel > respects the status prop 9`] = `
@@ -467,6 +482,7 @@ exports[`StateLabel > respects the status prop 10`] = `
diff --git a/packages/react/src/SubNav/SubNav.test.tsx b/packages/react/src/SubNav/SubNav.test.tsx
index 76192c7b79b..105e7aa210a 100644
--- a/packages/react/src/SubNav/SubNav.test.tsx
+++ b/packages/react/src/SubNav/SubNav.test.tsx
@@ -8,6 +8,20 @@ describe('SubNav', () => {
implementsClassName(SubNav, classes.SubNav)
implementsClassName(SubNav.Links, classes.Links)
+ it('renders data-component attributes', () => {
+ const {container} = HTMLRender(
+
+
+ Link
+
+ ,
+ )
+
+ expect(container.firstChild).toHaveAttribute('data-component', 'SubNav')
+ expect(container.querySelector('[data-component="SubNav.Links"]')).toBeInTheDocument()
+ expect(container.querySelector('[data-component="SubNav.Link"]')).toBeInTheDocument()
+ })
+
it('renders a ', () => {
const {container} = HTMLRender( )
expect(container.firstChild?.nodeName).toEqual('NAV')
diff --git a/packages/react/src/SubNav/SubNav.tsx b/packages/react/src/SubNav/SubNav.tsx
index 54b56942ad6..5e18a782fd9 100644
--- a/packages/react/src/SubNav/SubNav.tsx
+++ b/packages/react/src/SubNav/SubNav.tsx
@@ -19,7 +19,13 @@ const SubNav = React.forwardRef(function SubNav(
forwardRef,
) {
return (
-
+
{children}
{actions && {actions}
}
@@ -31,7 +37,7 @@ SubNav.displayName = 'SubNav'
const SubNavLinks = React.forwardRef(({children, className, ...rest}, forwardRef) => {
return (
-
+
{children}
)
@@ -49,6 +55,7 @@ const SubNavLink = React.forwardRef
(
data-selected={rest.selected}
aria-current={rest.selected}
{...rest}
+ data-component="SubNav.Link"
>
{children}
diff --git a/packages/react/src/TabNav/TabNav.tsx b/packages/react/src/TabNav/TabNav.tsx
index 876e130160f..673e61ea5de 100644
--- a/packages/react/src/TabNav/TabNav.tsx
+++ b/packages/react/src/TabNav/TabNav.tsx
@@ -51,7 +51,7 @@ function TabNav({children, 'aria-label': ariaLabel, ...rest}: TabNavProps) {
)
return (
- }>
+
} data-component="TabNav">
{children}
@@ -88,6 +88,7 @@ const TabNavLink = React.forwardRef(function TabNavLink(
aria-selected={selected ? true : undefined}
className={clsx('TabNav-item', styles.TabNavLink, selected && 'selected', selected && styles.Selected, className)}
{...rest}
+ data-component="TabNav.Link"
/>
)
}) as PolymorphicForwardRefComponent<'a', TabNavLinkProps>
diff --git a/packages/react/src/TabNav/__tests__/TabNav.test.tsx b/packages/react/src/TabNav/__tests__/TabNav.test.tsx
index 63e11b78786..796f7537b94 100644
--- a/packages/react/src/TabNav/__tests__/TabNav.test.tsx
+++ b/packages/react/src/TabNav/__tests__/TabNav.test.tsx
@@ -34,6 +34,17 @@ describe('TabNav', () => {
})
})
+ it('renders data-component attributes', () => {
+ render(
+
+ Link Text
+ ,
+ )
+
+ expect(screen.getByRole('navigation').parentElement).toHaveAttribute('data-component', 'TabNav')
+ expect(screen.getByRole('tab')).toHaveAttribute('data-component', 'TabNav.Link')
+ })
+
it('sets aria-label appropriately', () => {
render(
)
expect(screen.getByLabelText('Test label')).toBeTruthy()
diff --git a/packages/react/src/Text/Text.test.tsx b/packages/react/src/Text/Text.test.tsx
index baec29ab744..3cb9c68e788 100644
--- a/packages/react/src/Text/Text.test.tsx
+++ b/packages/react/src/Text/Text.test.tsx
@@ -12,6 +12,11 @@ describe('Text', () => {
expect(container.firstChild?.nodeName).toEqual('SPAN')
})
+ it('renders data-component attribute', () => {
+ const {container} = render(
)
+ expect(container.firstChild).toHaveAttribute('data-component', 'Text')
+ })
+
it('renders children', () => {
const {getByText} = render(
Hello World )
expect(getByText('Hello World')).toBeInTheDocument()
diff --git a/packages/react/src/Text/Text.tsx b/packages/react/src/Text/Text.tsx
index 9f27baf8323..7bc199f10b8 100644
--- a/packages/react/src/Text/Text.tsx
+++ b/packages/react/src/Text/Text.tsx
@@ -22,6 +22,7 @@ function Text
(props: TextProps, ref: Forwarded
return (
{
expect(screen.getByRole('textbox')).toBeInTheDocument()
})
+ it('renders data-component attribute', () => {
+ render()
+ expect(screen.getByRole('textbox')).toHaveAttribute('data-component', 'Textarea')
+ })
+
it('renders an empty textarea by default', () => {
render()
const textareaElement = screen.getByRole('textbox') as HTMLTextAreaElement
diff --git a/packages/react/src/Textarea/Textarea.tsx b/packages/react/src/Textarea/Textarea.tsx
index 8adc4c766fb..69aaee2af63 100644
--- a/packages/react/src/Textarea/Textarea.tsx
+++ b/packages/react/src/Textarea/Textarea.tsx
@@ -131,6 +131,7 @@ const Textarea = React.forwardRef(
@@ -20,6 +21,7 @@ exports[`SubNav.Link > respects the "selected" prop 1`] = `
,
diff --git a/packages/react/src/__tests__/__snapshots__/exports.test.ts.snap b/packages/react/src/__tests__/__snapshots__/exports.test.ts.snap
index 41075447917..412847b840c 100644
--- a/packages/react/src/__tests__/__snapshots__/exports.test.ts.snap
+++ b/packages/react/src/__tests__/__snapshots__/exports.test.ts.snap
@@ -281,6 +281,7 @@ exports[`@primer/react/deprecated > should not update exports without a semver c
exports[`@primer/react/experimental > should not update exports without a semver change 1`] = `
[
"ActionBar",
+ "type ActionBarButtonProps",
"type ActionBarMenuItemProps",
"type ActionBarMenuProps",
"type ActionBarProps",
diff --git a/packages/react/src/experimental/SelectPanel2/SelectPanel.module.css b/packages/react/src/experimental/SelectPanel2/SelectPanel.module.css
index 16afc9dd10a..80c58ea1f0e 100644
--- a/packages/react/src/experimental/SelectPanel2/SelectPanel.module.css
+++ b/packages/react/src/experimental/SelectPanel2/SelectPanel.module.css
@@ -121,8 +121,11 @@
.TextInput {
padding-left: var(--base-size-8) !important;
- /* stylelint-disable-next-line selector-class-pattern, selector-no-qualifying-type, selector-pseudo-class-disallowed-list -- :has() scoped to CSS Module, audited (github/github-ui#17224) */
- &:has(input:placeholder-shown) :global(.TextInput-action) {
+ /* Hide the trailing action while the input is empty (showing its placeholder). Uses a
+ forward sibling selector on the input instead of `:has()` to avoid Safari's `:has()`
+ invalidation cost; `input` and `.TextInput-action` are siblings inside the wrapper. */
+ /* stylelint-disable-next-line selector-class-pattern */
+ & input:placeholder-shown ~ :global(.TextInput-action) {
display: none;
}
}
diff --git a/packages/react/src/experimental/UnderlinePanels/UnderlinePanels.module.css b/packages/react/src/experimental/UnderlinePanels/UnderlinePanels.module.css
index 9e4905c2c7f..ce3d49e5f4f 100644
--- a/packages/react/src/experimental/UnderlinePanels/UnderlinePanels.module.css
+++ b/packages/react/src/experimental/UnderlinePanels/UnderlinePanels.module.css
@@ -4,7 +4,3 @@
overflow-y: hidden;
-webkit-overflow-scrolling: auto;
}
-
-.StyledUnderlineWrapper[data-icons-visible='false'] [data-component='icon'] {
- display: none;
-}
diff --git a/packages/react/src/experimental/UnderlinePanels/UnderlinePanels.tsx b/packages/react/src/experimental/UnderlinePanels/UnderlinePanels.tsx
index 2144b093d0f..07adf61eb9c 100644
--- a/packages/react/src/experimental/UnderlinePanels/UnderlinePanels.tsx
+++ b/packages/react/src/experimental/UnderlinePanels/UnderlinePanels.tsx
@@ -232,7 +232,7 @@ const UnderlinePanels: FCWithSlotMarker
= ({
}
const TabImpl: FCWithSlotMarker = ({'aria-selected': ariaSelected, onSelect, ...props}) => {
- const {iconsVisible, loadingCounters} = useContext(UnderlinePanelsContext)
+ const {loadingCounters} = useContext(UnderlinePanelsContext)
const clickHandler = React.useCallback(
(event: React.MouseEvent) => {
if (!event.defaultPrevented && typeof onSelect === 'function') {
@@ -259,7 +259,6 @@ const TabImpl: FCWithSlotMarker = ({'aria-selected': ariaSelected, onS
type="button"
onClick={clickHandler}
onKeyDown={keyDownHandler}
- iconsVisible={iconsVisible}
loadingCounters={loadingCounters}
{...props}
/>
diff --git a/packages/react/src/internal/components/OverflowObserverProvider.tsx b/packages/react/src/internal/components/OverflowObserverProvider.tsx
new file mode 100644
index 00000000000..60f4095e72a
--- /dev/null
+++ b/packages/react/src/internal/components/OverflowObserverProvider.tsx
@@ -0,0 +1,125 @@
+import {useCallback, useEffect, useRef, type ReactNode, type RefObject} from 'react'
+import useIsomorphicLayoutEffect from '../../utils/useIsomorphicLayoutEffect'
+import {OverflowObserverContext, type ObserveFn} from '../hooks/useOverflowObserver'
+
+/**
+ * Owns a single `IntersectionObserver` shared by every descendant that calls `useIsClipped`, instead of each item
+ * creating its own observer. Each observed element maps to a set of change callbacks; one observer notification fans
+ * out to all of them.
+ *
+ * `rootRef` must point to the element that clips overflowing children (typically a single-row, `overflow: hidden`
+ * container). The observer is root-scoped to that element so children that wrap onto a clipped row are reported as
+ * overflowing. Until the root is attached the provider stays inert (it never falls back to the viewport, which would
+ * not reflect the container's clipping) and re-checks on later renders.
+ */
+export function OverflowObserverProvider({
+ children,
+ rootRef,
+}: {
+ children: ReactNode
+ /** Clipping container used as the `IntersectionObserver` root for overflow detection. */
+ rootRef: RefObject
+}) {
+ // Map of observed element -> set of subscriber callbacks.
+ const subscribersRef = useRef void>>>(new Map())
+ const observedElementsRef = useRef>(new Set())
+ const observerRef = useRef(null)
+ const observerRootRef = useRef(null)
+
+ // Lazily create the observer once the root is available so SSR / zero-item renders allocate nothing.
+ const getObserver = useCallback(() => {
+ if (!supportsIntersectionObserver()) return null
+
+ const root = rootRef.current
+ // Root-scoped overflow detection requires the clipping container. Stay inert until it's attached rather than
+ // falling back to a viewport-rooted observer, which wouldn't reflect the container's clipping.
+ if (root === null) return null
+
+ if (observerRef.current && observerRootRef.current === root) return observerRef.current
+
+ observerRef.current?.disconnect()
+ observedElementsRef.current.clear()
+
+ observerRef.current = new IntersectionObserver(
+ entries => {
+ for (const entry of entries) {
+ const callbacks = subscribersRef.current.get(entry.target)
+ if (!callbacks) continue
+ const isOverflowing = getIsOverflowing(entry)
+ for (const cb of callbacks) cb(isOverflowing)
+ }
+ },
+ {root, threshold: [0, 1]},
+ )
+ observerRootRef.current = root
+ return observerRef.current
+ }, [rootRef])
+
+ const observeSubscribedElements = useCallback(() => {
+ const observer = getObserver()
+ if (!observer) return
+
+ // When the root ref becomes available or changes, re-check every subscribed element so they are all attached to the
+ // latest shared observer instance.
+ for (const element of subscribersRef.current.keys()) {
+ if (!observedElementsRef.current.has(element)) {
+ observer.observe(element)
+ observedElementsRef.current.add(element)
+ }
+ }
+ }, [getObserver])
+
+ const observe = useCallback(
+ (element, onOverflowChange) => {
+ let callbacks = subscribersRef.current.get(element)
+ if (!callbacks) {
+ callbacks = new Set()
+ subscribersRef.current.set(element, callbacks)
+ }
+ callbacks.add(onOverflowChange)
+ observeSubscribedElements()
+
+ return () => {
+ const set = subscribersRef.current.get(element)
+ if (!set) return
+ set.delete(onOverflowChange)
+ if (set.size === 0) {
+ subscribersRef.current.delete(element)
+ observedElementsRef.current.delete(element)
+ observerRef.current?.unobserve(element)
+ }
+ }
+ },
+ [observeSubscribedElements],
+ )
+
+ useIsomorphicLayoutEffect(() => {
+ observeSubscribedElements()
+ })
+
+ useEffect(() => {
+ const subscribers = subscribersRef.current
+ const observedElements = observedElementsRef.current
+ return () => {
+ observerRef.current?.disconnect()
+ observerRef.current = null
+ observedElements.clear()
+ subscribers.clear()
+ }
+ }, [])
+
+ return {children}
+}
+
+/**
+ * Treat any target that is not fully visible within the observer root as overflowing. Wrapped items should be fully
+ * clipped (`isIntersecting: false`, `intersectionRatio: 0`), but partial ratios also count as overflowing to guard
+ * against sub-pixel boundary cases.
+ */
+function getIsOverflowing(entry: Pick) {
+ return !entry.isIntersecting || entry.intersectionRatio < 1
+}
+
+function supportsIntersectionObserver() {
+ return typeof IntersectionObserver !== 'undefined'
+}
diff --git a/packages/react/src/internal/components/UnderlineTabbedInterface.module.css b/packages/react/src/internal/components/UnderlineTabbedInterface.module.css
index 83cdd50d81f..d1852babf0c 100644
--- a/packages/react/src/internal/components/UnderlineTabbedInterface.module.css
+++ b/packages/react/src/internal/components/UnderlineTabbedInterface.module.css
@@ -1,31 +1,36 @@
.UnderlineWrapper {
display: flex;
+ padding-top: var(--base-size-8);
/* stylelint-disable-next-line primer/spacing */
padding-inline: var(--stack-padding-normal);
justify-content: flex-start;
- align-items: center;
+ align-items: flex-start;
/* make space for the underline */
- min-height: var(--control-xlarge-size, 48px);
+ min-height: var(--control-xlarge-size);
/* using a box-shadow instead of a border to accommodate 'overflow-y: hidden' on UnderlinePanels */
/* stylelint-disable-next-line primer/box-shadow */
box-shadow: inset 0 -1px var(--borderColor-muted);
- /* Hide overflow until calculation is complete to prevent CLS */
- overflow: visible;
-
- &[data-overflow-measured='false'] {
- overflow: hidden;
+ &[data-variant='flush'] {
+ /* stylelint-disable-next-line primer/spacing */
+ padding-inline: unset;
}
- &[data-overflow-measured='true'] {
- overflow: visible;
+ &[data-hide-icons='true'] [data-component='icon'] {
+ display: none;
}
- &[data-variant='flush'] {
- /* stylelint-disable-next-line primer/spacing */
- padding-inline: unset;
+ &[data-overflow-mode='wrap'] {
+ /* Wrap items onto hidden next lines */
+ overflow: hidden;
+ max-height: var(--control-xlarge-size);
+
+ .UnderlineItemList {
+ flex-wrap: wrap;
+ overflow: hidden;
+ }
}
}
@@ -37,7 +42,7 @@
white-space: nowrap;
list-style: none;
align-items: center;
- gap: 8px;
+ gap: var(--stack-gap-condensed);
}
.UnderlineItem {
@@ -53,7 +58,10 @@
cursor: pointer;
background-color: transparent;
border: 0;
- border-radius: var(--borderRadius-medium, var(--borderRadius-small));
+ border-radius: var(--borderRadius-medium);
+ max-width: 100%;
+ margin-bottom: var(--base-size-8);
+ height: 32px;
/* button resets */
appearance: none;
@@ -104,6 +112,13 @@
margin-inline-end: var(--base-size-8);
}
+/* Truncate items if necessary (should only ever apply to the last item after everything else overflows) */
+.UnderlineItem [data-component='text'] {
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
.UnderlineItem [data-component='counter'] {
margin-inline-start: var(--base-size-8);
display: flex;
@@ -112,20 +127,12 @@
.UnderlineItem::after {
position: absolute;
- right: 50%;
-
- /* TODO: see if we can simplify this positioning */
-
- /* 48px total height / 2 (24px) + 1px */
- /* stylelint-disable-next-line primer/spacing */
- bottom: calc(50% - calc(var(--control-xlarge-size, var(--base-size-48)) / 2 + 1px));
- width: 100%;
+ inset: auto 0 0;
+ margin-bottom: calc(-1 * var(--base-size-8));
height: 2px;
pointer-events: none;
content: '';
background-color: transparent;
- border-radius: 0;
- transform: translate(50%, -50%);
}
.UnderlineItem[aria-current]:not([aria-current='false']) [data-component='text'],
diff --git a/packages/react/src/internal/components/UnderlineTabbedInterface.tsx b/packages/react/src/internal/components/UnderlineTabbedInterface.tsx
index 509459ea47f..3e7de268225 100644
--- a/packages/react/src/internal/components/UnderlineTabbedInterface.tsx
+++ b/packages/react/src/internal/components/UnderlineTabbedInterface.tsx
@@ -1,7 +1,7 @@
// Used for UnderlineNav and UnderlinePanels components
import React from 'react'
-import {type ForwardedRef, forwardRef, type FC, type PropsWithChildren, type ElementType} from 'react'
+import {type ForwardedRef, forwardRef, type FC, type ElementType} from 'react'
import {isElement} from 'react-is'
import type {IconProps} from '@primer/octicons-react'
import CounterLabel from '../../CounterLabel'
@@ -36,6 +36,7 @@ type UnderlineWrapperProps = {
export const UnderlineWrapper = forwardRef((props, ref) => {
const {children, className, as: Component = 'div', ...rest} = props
+
return (
{
)
}) as PolymorphicForwardRefComponent>
-export const UnderlineItemList = forwardRef(({children, ...rest}: PropsWithChildren, forwardedRef) => {
+export const UnderlineItemList = forwardRef(({children, className, ...rest}, forwardedRef) => {
return (
-
+
)
@@ -62,7 +63,6 @@ export const LoadingCounter = () => {
export type UnderlineItemProps = {
as?: As | 'a' | 'button'
className?: string
- iconsVisible?: boolean
loadingCounters?: boolean
counter?: number | string
// eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -72,11 +72,11 @@ export type UnderlineItemProps = {
} & React.ComponentPropsWithoutRef
export const UnderlineItem = React.forwardRef((props, ref) => {
- const {as: Component = 'a', children, counter, icon: Icon, iconsVisible, loadingCounters, className, ...rest} = props
+ const {as: Component = 'a', children, counter, icon: Icon, loadingCounters, className, ...rest} = props
const textContent = getTextContent(children)
return (
- {iconsVisible && Icon && {isElement(Icon) ? Icon : } }
+ {Icon && {isElement(Icon) ? Icon : } }
{children && (
{children}
diff --git a/packages/react/src/internal/hooks/__tests__/useOverflowObserver.test.tsx b/packages/react/src/internal/hooks/__tests__/useOverflowObserver.test.tsx
new file mode 100644
index 00000000000..359e10386a6
--- /dev/null
+++ b/packages/react/src/internal/hooks/__tests__/useOverflowObserver.test.tsx
@@ -0,0 +1,95 @@
+import {afterEach, describe, expect, it, vi} from 'vitest'
+import {useRef} from 'react'
+import {act, render} from '@testing-library/react'
+import {OverflowObserverProvider} from '../../components/OverflowObserverProvider'
+import {useIsClipped} from '../useOverflowObserver'
+
+type Entry = Pick
+
+/** Minimal `IntersectionObserver` stub that records instances and lets tests drive callbacks. */
+class MockIntersectionObserver {
+ static instances: MockIntersectionObserver[] = []
+ readonly observed = new Set()
+ callback: (entries: Entry[]) => void
+ options?: IntersectionObserverInit
+ constructor(callback: (entries: Entry[]) => void, options?: IntersectionObserverInit) {
+ this.callback = callback
+ this.options = options
+ MockIntersectionObserver.instances.push(this)
+ }
+ observe(element: Element) {
+ this.observed.add(element)
+ }
+ unobserve(element: Element) {
+ this.observed.delete(element)
+ }
+ disconnect() {
+ this.observed.clear()
+ }
+ trigger(entries: Entry[]) {
+ act(() => this.callback(entries))
+ }
+}
+
+function Item({disabled}: {disabled?: boolean}) {
+ const ref = useRef(null)
+ const isClipped = useIsClipped(ref, {disabled})
+ return
+}
+
+function Harness({disabled}: {disabled?: boolean}) {
+ const rootRef = useRef(null)
+ return (
+
+ )
+}
+
+describe('useIsClipped', () => {
+ afterEach(() => {
+ vi.unstubAllGlobals()
+ MockIntersectionObserver.instances = []
+ })
+
+ it('reports false when there is no surrounding provider', () => {
+ const {getByTestId} = render( )
+ expect(getByTestId('item').getAttribute('data-overflowing')).toBe('false')
+ })
+
+ it('is inert and reports false when IntersectionObserver is unavailable', () => {
+ vi.stubGlobal('IntersectionObserver', undefined)
+ const {getByTestId} = render( )
+ expect(getByTestId('item').getAttribute('data-overflowing')).toBe('false')
+ })
+
+ it('does not subscribe and reports false when disabled', () => {
+ vi.stubGlobal('IntersectionObserver', MockIntersectionObserver)
+ const {getByTestId} = render( )
+ expect(getByTestId('item').getAttribute('data-overflowing')).toBe('false')
+ // A disabled item should never be observed by the shared observer.
+ const item = getByTestId('item')
+ expect(MockIntersectionObserver.instances.every(o => !o.observed.has(item))).toBe(true)
+ })
+
+ it('reflects overflow state from the shared root-scoped observer', () => {
+ vi.stubGlobal('IntersectionObserver', MockIntersectionObserver)
+ const {getByTestId} = render( )
+ const item = getByTestId('item')
+
+ const observer = MockIntersectionObserver.instances.at(-1)!
+ // The observer is created against the provided clipping root, not the viewport.
+ expect(observer.options?.root).not.toBeNull()
+ expect(observer.observed.has(item)).toBe(true)
+
+ // A clipped (wrapped) item is reported as overflowing.
+ observer.trigger([{target: item, isIntersecting: false, intersectionRatio: 0}])
+ expect(item.getAttribute('data-overflowing')).toBe('true')
+
+ // A fully visible item is not overflowing.
+ observer.trigger([{target: item, isIntersecting: true, intersectionRatio: 1}])
+ expect(item.getAttribute('data-overflowing')).toBe('false')
+ })
+})
diff --git a/packages/react/src/internal/hooks/useOverflowObserver.ts b/packages/react/src/internal/hooks/useOverflowObserver.ts
new file mode 100644
index 00000000000..26cd32c3317
--- /dev/null
+++ b/packages/react/src/internal/hooks/useOverflowObserver.ts
@@ -0,0 +1,49 @@
+import {createContext, useCallback, useContext, useRef, useSyncExternalStore, type RefObject} from 'react'
+
+/** Subscribe a single observed element to the shared `IntersectionObserver`. Returns an unsubscribe function. */
+export type ObserveFn = (element: Element, onOverflowChange: (isOverflowing: boolean) => void) => () => void
+
+/** Provided by `OverflowObserverProvider`; `null` when no provider is present. Consumed via `useIsClipped`. */
+export const OverflowObserverContext = createContext(null)
+
+/**
+ * Track whether `ref`'s element is currently clipped (overflowing) by the nearest `OverflowObserverProvider`'s
+ * root-scoped `IntersectionObserver`.
+ *
+ * Returns `false` when there is no surrounding provider, during SSR, when `IntersectionObserver` is unavailable, or when
+ * `disabled` is set.
+ *
+ * @param ref Ref to the element whose overflow state should be tracked.
+ * @param options.disabled When true, skips observer subscription entirely and always reports `false`. Useful for items
+ * whose overflow is determined by an ancestor (e.g. ActionBar items inside an overflowing group).
+ */
+export function useIsClipped(ref: RefObject, options?: {disabled?: boolean}) {
+ const disabled = options?.disabled ?? false
+ const observe = useContext(OverflowObserverContext)
+ const isOverflowingRef = useRef(false)
+
+ const subscribe = useCallback(
+ (onChange: () => void) => {
+ if (disabled) return () => {}
+ const element = ref.current
+ // The hook only tracks overflow through a surrounding provider's shared observer. When no provider is present (or
+ // the element isn't attached yet) the hook is inert and reports `false`.
+ if (!element || observe === null) return () => {}
+
+ const updateOverflowState = (isOverflowing: boolean) => {
+ if (isOverflowing !== isOverflowingRef.current) {
+ isOverflowingRef.current = isOverflowing
+ onChange()
+ }
+ }
+
+ return observe(element, updateOverflowState)
+ },
+ [ref, observe, disabled],
+ )
+
+ return useSyncExternalStore(subscribe, () => (disabled ? false : isOverflowingRef.current), getOverflowServerSnapshot)
+}
+
+/** Stable server snapshot for `useIsClipped`: overflow is never measured during SSR. */
+const getOverflowServerSnapshot = () => false
diff --git a/packages/react/src/utils/__tests__/descendant-registry.test.tsx b/packages/react/src/utils/__tests__/descendant-registry.test.tsx
index f357b8d2b6e..3ba46c8dace 100644
--- a/packages/react/src/utils/__tests__/descendant-registry.test.tsx
+++ b/packages/react/src/utils/__tests__/descendant-registry.test.tsx
@@ -121,6 +121,38 @@ describe('createDescendantRegistry', () => {
expect(getByTestId('registry-values').textContent).toBe('a,middle,b')
})
+ it('coalesces multiple descendants added in a single update into one correct rebuild', async () => {
+ const {RegistryParent, Item} = createTestRegistry()
+
+ function Test() {
+ const [expanded, setExpanded] = useState(false)
+ return (
+
+
+ {expanded && (
+ <>
+
+
+
+ >
+ )}
+
+ setExpanded(true)}>
+ Expand
+
+
+ )
+ }
+
+ const {getByTestId, getByRole} = render( )
+ expect(getByTestId('registry-values').textContent).toBe('a,e')
+
+ // Several descendants register in the same tick; the coalesced rebuild must still capture all of them in order.
+ await userEvent.click(getByRole('button'))
+
+ expect(getByTestId('registry-values').textContent).toBe('a,b,c,d,e')
+ })
+
it('drops items from the registry after they unmount', async () => {
const {RegistryParent, Item} = createTestRegistry()
diff --git a/packages/react/src/utils/descendant-registry.tsx b/packages/react/src/utils/descendant-registry.tsx
index d2e6359a490..2397db27315 100644
--- a/packages/react/src/utils/descendant-registry.tsx
+++ b/packages/react/src/utils/descendant-registry.tsx
@@ -83,6 +83,28 @@ export function createDescendantRegistry() {
/** State value to trigger a re-render and force all descendants to re-register. This ensures everything remains ordered. */
const [key, rebuildRegistry] = useReducer(prev => prev + 1, 0)
+ // Coalesce rebuilds: when several descendants register in the same tick (e.g. multiple items crossing the wrap
+ // boundary during one resize frame), schedule a single rebuild via microtask instead of one rebuild per
+ // registration. The microtask drains before paint, so the rebuild still lands within the same frame.
+ const pendingRebuildRef = useRef(false)
+ const isMountedRef = useRef(true)
+ const scheduleRebuild = useCallback(() => {
+ if (pendingRebuildRef.current) return
+ pendingRebuildRef.current = true
+ scheduleMicrotask(() => {
+ pendingRebuildRef.current = false
+ // Guard against dispatching into an unmounted provider.
+ if (isMountedRef.current) rebuildRegistry()
+ })
+ }, [])
+
+ useEffect(() => {
+ isMountedRef.current = true
+ return () => {
+ isMountedRef.current = false
+ }
+ }, [])
+
// If a rebuild is queued, instantiate a new map. Must be in a layout effect to run before all descendants' effects run to populate it
useIsomorphicLayoutEffect(function instantiateNewRegistry() {
if (workingRegistryRef.current === 'queued') {
@@ -101,9 +123,10 @@ export function createDescendantRegistry() {
workingRegistryRef.current.set(id, unsetValue)
} else if (workingRegistryRef.current === 'idle') {
// When idle, registering a new component causes the whole registry to be rebuilt (because that item could
- // be inserted anywhere in the tree, changing the order of items)
+ // be inserted anywhere in the tree, changing the order of items). Coalesce concurrent registrations so the
+ // rebuild only happens once per tick.
workingRegistryRef.current = 'queued'
- rebuildRegistry()
+ scheduleRebuild()
}
// Noop if status is `queued` since we will restart the map in the next cycle
@@ -121,7 +144,7 @@ export function createDescendantRegistry() {
}
}
},
- [setRegistry],
+ [setRegistry, scheduleRebuild],
)
/** Update a descendant's value in the registry. */
@@ -158,3 +181,13 @@ export function createDescendantRegistry() {
return {Provider, useRegistryState, useRegisterDescendant}
}
+
+/** Schedule a callback on a microtask, with a fallback for environments that lack `queueMicrotask`. */
+function scheduleMicrotask(callback: () => void) {
+ if (typeof queueMicrotask === 'function') {
+ queueMicrotask(callback)
+ } else {
+ // Fallback for environments without `queueMicrotask`. A macrotask still coalesces all synchronous registrations.
+ setTimeout(callback)
+ }
+}
diff --git a/packages/react/src/utils/useTheme.hookDocs.json b/packages/react/src/utils/useTheme.hookDocs.json
index 8ac86ce7ead..12636ab100d 100644
--- a/packages/react/src/utils/useTheme.hookDocs.json
+++ b/packages/react/src/utils/useTheme.hookDocs.json
@@ -33,7 +33,7 @@
{
"name": "preventSSRMismatch",
"type": "boolean",
- "description": "Prevent SSR mismatch by injecting server-side color mode."
+ "description": "Deprecated: This prop is no longer used and has no effect."
}
]
},
diff --git a/packages/react/tsconfig.json b/packages/react/tsconfig.json
index 92af5fe5ef5..89c7004f3e5 100644
--- a/packages/react/tsconfig.json
+++ b/packages/react/tsconfig.json
@@ -11,6 +11,7 @@
"src/**/*.ts",
"src/**/*.tsx",
"script/**/*.ts",
+ "rolldown.config.ts",
"vitest.config.mts",
"config/**/*.ts",
".storybook/**/*.ts",
diff --git a/packages/rollup-plugin-import-css/README.md b/packages/rolldown-plugin-import-css/README.md
similarity index 84%
rename from packages/rollup-plugin-import-css/README.md
rename to packages/rolldown-plugin-import-css/README.md
index e89da8734c5..53111a2d05a 100644
--- a/packages/rollup-plugin-import-css/README.md
+++ b/packages/rolldown-plugin-import-css/README.md
@@ -1,13 +1,13 @@
-# rollup-plugin-import-css
+# rolldown-plugin-import-css
-> A Rollup plugin to include generated CSS alongside transformed CSS Modules so
+> A Rolldown plugin to include generated CSS alongside transformed CSS Modules so
> that importing a component from a library includes its CSS.
## Usage
```ts
-// rollup.config.js
-import {importCSS} from 'rollup-plugin-import-css'
+// rolldown.config.js
+import {importCSS} from 'rolldown-plugin-import-css'
export default {
input: ['src/index.ts'],
diff --git a/packages/rolldown-plugin-import-css/package.json b/packages/rolldown-plugin-import-css/package.json
new file mode 100644
index 00000000000..eb289f8c147
--- /dev/null
+++ b/packages/rolldown-plugin-import-css/package.json
@@ -0,0 +1,24 @@
+{
+ "name": "rolldown-plugin-import-css",
+ "version": "0.0.0",
+ "private": true,
+ "type": "module",
+ "exports": {
+ "types": "./src/index.ts",
+ "default": "./src/index.ts"
+ },
+ "scripts": {
+ "type-check": "tsc --noEmit"
+ },
+ "peerDependencies": {
+ "postcss": "^8.4.38",
+ "postcss-modules": "^6.0.0"
+ },
+ "devDependencies": {
+ "postcss": "^8.4.38",
+ "postcss-modules": "^6.0.0",
+ "rolldown": "^1.1.2",
+ "typescript": "^6.0.3"
+ },
+ "sideEffects": false
+}
diff --git a/packages/rollup-plugin-import-css/src/index.ts b/packages/rolldown-plugin-import-css/src/index.ts
similarity index 99%
rename from packages/rollup-plugin-import-css/src/index.ts
rename to packages/rolldown-plugin-import-css/src/index.ts
index da5a2debfec..349ce371df5 100644
--- a/packages/rollup-plugin-import-css/src/index.ts
+++ b/packages/rolldown-plugin-import-css/src/index.ts
@@ -1,4 +1,4 @@
-import type {Plugin} from 'rollup'
+import type {Plugin} from 'rolldown'
import fs from 'node:fs/promises'
import path from 'node:path'
import {createHash} from 'node:crypto'
diff --git a/packages/rollup-plugin-import-css/tsconfig.build.json b/packages/rolldown-plugin-import-css/tsconfig.build.json
similarity index 100%
rename from packages/rollup-plugin-import-css/tsconfig.build.json
rename to packages/rolldown-plugin-import-css/tsconfig.build.json
diff --git a/packages/rollup-plugin-import-css/tsconfig.json b/packages/rolldown-plugin-import-css/tsconfig.json
similarity index 100%
rename from packages/rollup-plugin-import-css/tsconfig.json
rename to packages/rolldown-plugin-import-css/tsconfig.json
diff --git a/packages/rolldown-plugin-preserve-directives/package.json b/packages/rolldown-plugin-preserve-directives/package.json
new file mode 100644
index 00000000000..9550d52bf60
--- /dev/null
+++ b/packages/rolldown-plugin-preserve-directives/package.json
@@ -0,0 +1,21 @@
+{
+ "name": "rolldown-plugin-preserve-directives",
+ "version": "0.0.0",
+ "private": true,
+ "type": "module",
+ "exports": {
+ "types": "./src/index.ts",
+ "default": "./src/index.ts"
+ },
+ "scripts": {
+ "type-check": "tsc --noEmit"
+ },
+ "peerDependencies": {
+ "rolldown": "^1.1.2"
+ },
+ "devDependencies": {
+ "rolldown": "^1.1.2",
+ "typescript": "^6.0.3"
+ },
+ "sideEffects": false
+}
diff --git a/packages/rolldown-plugin-preserve-directives/src/index.ts b/packages/rolldown-plugin-preserve-directives/src/index.ts
new file mode 100644
index 00000000000..879a6d0c950
--- /dev/null
+++ b/packages/rolldown-plugin-preserve-directives/src/index.ts
@@ -0,0 +1,127 @@
+import {
+ RolldownMagicString as MagicString,
+ type Plugin,
+ type PluginContext,
+ type RenderedChunk,
+ type TransformPluginContext,
+} from 'rolldown'
+
+type Program = ReturnType
+
+export interface PreserveDirectivesOptions {
+ readonly directives?: readonly string[]
+}
+
+const DEFAULT_DIRECTIVES = ['use client']
+const metaKey = 'preserve-directives'
+
+export function preserveDirectives(options: PreserveDirectivesOptions = {}): Plugin {
+ const directives = options.directives ?? DEFAULT_DIRECTIVES
+
+ return {
+ name: 'preserve-directives',
+ transform(code, id) {
+ if (isDeclarationFile(id)) {
+ return null
+ }
+
+ const ast = this.parse(code)
+ const sourceDirectives = getDirectives(ast, directives)
+
+ if (sourceDirectives.length > 0) {
+ return {
+ code,
+ ast,
+ map: null,
+ meta: {
+ [metaKey]: sourceDirectives,
+ },
+ }
+ }
+
+ return {
+ code,
+ ast,
+ map: null,
+ }
+ },
+ renderChunk: {
+ order: 'post',
+ handler(code, chunk, options) {
+ if (!options.preserveModules) {
+ return undefined
+ }
+
+ if (isDeclarationFile(chunk.fileName)) {
+ return null
+ }
+
+ const chunkDirectives = getChunkDirectives(this, chunk)
+
+ if (chunkDirectives.length === 0) {
+ return null
+ }
+
+ const ast = this.parse(code)
+ const existingDirectives = new Set(getDirectives(ast, directives))
+ const missingDirectives = chunkDirectives.filter(directive => !existingDirectives.has(directive))
+
+ if (missingDirectives.length === 0) {
+ return null
+ }
+
+ const transformed = new MagicString(code)
+ transformed.prepend(`${missingDirectives.map(directive => JSON.stringify(directive)).join(';\n')};\n`)
+
+ return {
+ code: transformed.toString(),
+ map: null,
+ }
+ },
+ },
+ }
+}
+
+function isDeclarationFile(id: string) {
+ return /\.d\.[cm]?ts(?:$|\?)/.test(id)
+}
+
+function getDirectives(ast: Program, directives: readonly string[]) {
+ const directiveSet = new Set(directives)
+ const sourceDirectives: Array = []
+
+ for (const node of ast.body) {
+ if (node.type !== 'ExpressionStatement') {
+ continue
+ }
+
+ if (node.directive && directiveSet.has(node.directive)) {
+ sourceDirectives.push(node.directive)
+ }
+ }
+
+ return sourceDirectives
+}
+
+function getChunkDirectives(context: PluginContext, chunk: RenderedChunk) {
+ const chunkDirectives = new Set()
+
+ for (const moduleId of Object.keys(chunk.modules)) {
+ const moduleInfo = context.getModuleInfo(moduleId)
+ if (moduleInfo === null) {
+ continue
+ }
+
+ const moduleDirectives = moduleInfo.meta[metaKey]
+
+ if (Array.isArray(moduleDirectives)) {
+ for (const directive of moduleDirectives) {
+ if (typeof directive === 'string') {
+ chunkDirectives.add(directive)
+ }
+ }
+ }
+ }
+
+ return Array.from(chunkDirectives)
+}
diff --git a/packages/rolldown-plugin-preserve-directives/tsconfig.json b/packages/rolldown-plugin-preserve-directives/tsconfig.json
new file mode 100644
index 00000000000..564a5990051
--- /dev/null
+++ b/packages/rolldown-plugin-preserve-directives/tsconfig.json
@@ -0,0 +1,4 @@
+{
+ "extends": "../../tsconfig.base.json",
+ "include": ["src"]
+}
diff --git a/packages/rollup-plugin-import-css/package.json b/packages/rollup-plugin-import-css/package.json
deleted file mode 100644
index 2de3739f9c9..00000000000
--- a/packages/rollup-plugin-import-css/package.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "rollup-plugin-import-css",
- "version": "0.0.0",
- "private": true,
- "type": "module",
- "exports": {
- "types": "./dist/index.d.ts",
- "default": "./dist/index.js"
- },
- "scripts": {
- "build": "rollup -c",
- "clean": "rimraf dist",
- "type-check": "tsc --noEmit",
- "watch": "rollup -c -w"
- },
- "peerDependencies": {
- "postcss": "^8.4.38",
- "postcss-modules": "^6.0.0"
- },
- "devDependencies": {
- "@rollup/plugin-commonjs": "^29.0.0",
- "@rollup/plugin-node-resolve": "^16.0.3",
- "esbuild": "^0.25.0",
- "postcss": "^8.4.38",
- "postcss-modules": "^6.0.0",
- "rimraf": "^5.0.7",
- "rollup-plugin-esbuild": "^6.2.1",
- "rollup-plugin-typescript2": "^0.36.0",
- "typescript": "^6.0.3"
- },
- "sideEffects": false
-}
diff --git a/packages/rollup-plugin-import-css/rollup.config.js b/packages/rollup-plugin-import-css/rollup.config.js
deleted file mode 100644
index da639769421..00000000000
--- a/packages/rollup-plugin-import-css/rollup.config.js
+++ /dev/null
@@ -1,43 +0,0 @@
-import {nodeResolve} from '@rollup/plugin-node-resolve'
-import commonjs from '@rollup/plugin-commonjs'
-import typescript from 'rollup-plugin-typescript2'
-import esbuild from 'rollup-plugin-esbuild'
-import packageJson from './package.json' with {type: 'json'}
-
-const dependencyTypes = ['dependencies', 'devDependencies', 'peerDependencies', 'optionalDependencies']
-const dependencies = new Set(
- dependencyTypes.flatMap(type => {
- if (packageJson[type]) {
- return Object.keys(packageJson[type])
- }
- return []
- }),
-)
-const external = Array.from(dependencies).map(name => {
- return new RegExp(`^${name}(/.*)?`)
-})
-
-export default [
- {
- input: ['./src/index.ts'],
- external,
- plugins: [
- nodeResolve({
- include: /node_modules/,
- }),
- commonjs({
- include: /node_modules/,
- }),
- typescript({
- tsconfig: 'tsconfig.build.json',
- }),
- esbuild(),
- ],
- output: {
- dir: 'dist',
- format: 'esm',
- preserveModules: true,
- preserveModulesRoot: 'src',
- },
- },
-]
diff --git a/packages/styled-react/package.json b/packages/styled-react/package.json
index 2ee5ca0a593..7d326ee8c02 100644
--- a/packages/styled-react/package.json
+++ b/packages/styled-react/package.json
@@ -44,8 +44,7 @@
"@primer/primitives": "10.x || 11.x",
"@primer/react": "^38.26.0",
"@rolldown/plugin-babel": "^0.2.3",
- "@rollup/plugin-babel": "^6.1.0",
- "@storybook/react-vite": "^10.4.2",
+ "@storybook/react-vite": "^10.4.6",
"@types/babel__core": "^7.20.5",
"@types/react": "18.3.11",
"@types/react-dom": "18.3.1",
@@ -59,8 +58,9 @@
"react-compiler-runtime": "^1.0.0",
"react-dom": "18.3.1",
"rimraf": "^6.0.1",
- "rollup": "4.59.0",
- "rollup-plugin-typescript2": "^0.36.0",
+ "rolldown": "^1.1.2",
+ "rolldown-plugin-dts": "^0.26.0",
+ "rolldown-plugin-preserve-directives": "^0.0.0",
"styled-components": "5.3.11",
"typescript": "^6.0.3"
},
diff --git a/packages/styled-react/rolldown.config.ts b/packages/styled-react/rolldown.config.ts
new file mode 100644
index 00000000000..e59c79a4e42
--- /dev/null
+++ b/packages/styled-react/rolldown.config.ts
@@ -0,0 +1,90 @@
+import babel from '@rolldown/plugin-babel'
+import {defineConfig} from 'rolldown'
+import {preserveDirectives} from 'rolldown-plugin-preserve-directives'
+import {dts} from 'rolldown-plugin-dts'
+import packageJson from './package.json' with {type: 'json'}
+
+interface PackageMetadata {
+ readonly peerDependencies?: Record
+ readonly dependencies?: Record
+ readonly devDependencies?: Record
+}
+
+const packageMetadata: PackageMetadata = packageJson
+
+const dependencies = [
+ ...Object.keys(packageMetadata.peerDependencies ?? {}),
+ ...Object.keys(packageMetadata.dependencies ?? {}),
+ ...Object.keys(packageMetadata.devDependencies ?? {}),
+]
+
+function createPackageRegex(name: string) {
+ return new RegExp(`^${name}(/.*)?`)
+}
+
+const external = dependencies.map(createPackageRegex)
+
+const declarationInput = {
+ index: 'src/index.tsx',
+ sx: 'src/sx.ts',
+ 'theme-get': 'src/theme-get.ts',
+ 'styled-props': 'src/styled-props.ts',
+ polymorphic: 'src/polymorphic.ts',
+ 'components/BaseStyles': 'src/components/BaseStyles.tsx',
+ 'components/FeatureFlaggedTheming': 'src/components/FeatureFlaggedTheming.tsx',
+ 'components/ThemeContext': 'src/components/ThemeContext.ts',
+ 'components/ThemeProvider': 'src/components/ThemeProvider.tsx',
+ 'components/useFeatureFlaggedTheme': 'src/components/useFeatureFlaggedTheme.ts',
+ 'components/useTheme': 'src/components/useTheme.ts',
+}
+
+export default defineConfig([
+ {
+ input: ['src/index.tsx'],
+ external,
+ plugins: [
+ babel({
+ presets: ['@babel/preset-typescript', ['@babel/preset-react', {runtime: 'automatic'}]],
+ plugins: ['babel-plugin-styled-components'],
+ include: /\.(?:ts|tsx)$/,
+ }),
+ preserveDirectives(),
+ ],
+ onwarn(warning, defaultHandler) {
+ // Dependencies or modules may use "use client" as an indicator for React
+ // Server Components that this module should only be loaded on the client.
+ if (warning.code === 'MODULE_LEVEL_DIRECTIVE' && warning.message.includes('use client')) {
+ return
+ }
+
+ if (warning.code === 'CIRCULAR_DEPENDENCY') {
+ throw warning
+ }
+
+ defaultHandler(warning)
+ },
+ output: {
+ dir: 'dist',
+ format: 'esm',
+ preserveModules: true,
+ preserveModulesRoot: 'src',
+ },
+ },
+ {
+ input: declarationInput,
+ external,
+ plugins: [
+ dts({
+ emitDtsOnly: true,
+ sourcemap: true,
+ tsconfig: './tsconfig.build.json',
+ }),
+ ],
+ output: {
+ dir: 'dist',
+ format: 'esm',
+ preserveModules: true,
+ preserveModulesRoot: 'src',
+ },
+ },
+])
diff --git a/packages/styled-react/rollup.config.js b/packages/styled-react/rollup.config.js
deleted file mode 100644
index 309868570be..00000000000
--- a/packages/styled-react/rollup.config.js
+++ /dev/null
@@ -1,140 +0,0 @@
-import babel from '@rollup/plugin-babel'
-import nodeResolve from '@rollup/plugin-node-resolve'
-import {defineConfig} from 'rollup'
-import typescript from 'rollup-plugin-typescript2'
-import packageJson from './package.json' with {type: 'json'}
-import MagicString from 'magic-string'
-
-const dependencies = [
- ...Object.keys(packageJson.peerDependencies ?? {}),
- ...Object.keys(packageJson.dependencies ?? {}),
- ...Object.keys(packageJson.devDependencies ?? {}),
-]
-
-function createPackageRegex(name) {
- return new RegExp(`^${name}(/.*)?`)
-}
-
-export default defineConfig({
- input: ['src/index.tsx'],
- external: dependencies.map(createPackageRegex),
- plugins: [
- typescript({
- tsconfig: 'tsconfig.build.json',
- }),
- nodeResolve({extensions: ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs']}),
- babel({
- presets: ['@babel/preset-typescript', ['@babel/preset-react', {runtime: 'automatic'}]],
- plugins: ['babel-plugin-styled-components'],
- extensions: ['.ts', '.tsx'],
- babelHelpers: 'bundled',
- }),
- /**
- * This custom rollup plugin allows us to preserve directives in source
- * code, such as "use client", in order to support React Server Components.
- *
- * The source for this plugin is inspired by:
- * https://github.com/Ephem/rollup-plugin-preserve-directives
- */
- {
- name: 'preserve-directives',
- transform(code) {
- const ast = this.parse(code)
- if (ast.type !== 'Program' || !ast.body) {
- return {
- code,
- ast,
- map: null,
- }
- }
-
- let hasClientDirective = false
-
- for (const node of ast.body) {
- if (!node) {
- continue
- }
-
- if (node.type !== 'ExpressionStatement') {
- continue
- }
-
- if (node.directive === 'use client') {
- hasClientDirective = true
- break
- }
- }
-
- if (hasClientDirective) {
- return {
- code,
- ast,
- map: null,
- meta: {
- hasClientDirective: true,
- },
- }
- }
-
- return {
- code,
- ast,
- map: null,
- }
- },
- renderChunk: {
- order: 'post',
- handler(code, chunk, options) {
- // If `preserveModules` is not set to true, we can't be sure if the client
- // directive corresponds to the whole chunk or just a part of it.
- if (!options.preserveModules) {
- return undefined
- }
-
- let chunkHasClientDirective = false
-
- for (const moduleId of Object.keys(chunk.modules)) {
- const hasClientDirective = this.getModuleInfo(moduleId)?.meta?.hasClientDirective
- if (hasClientDirective) {
- chunkHasClientDirective = true
- break
- }
- }
-
- if (chunkHasClientDirective) {
- const transformed = new MagicString(code)
- transformed.prepend(`"use client";\n`)
- const sourcemap = transformed.generateMap({
- includeContent: true,
- })
- return {
- code: transformed.toString(),
- map: sourcemap,
- }
- }
-
- return null
- },
- },
- },
- ],
- onwarn(warning, defaultHandler) {
- // Dependencies or modules may use "use client" as an indicator for React
- // Server Components that this module should only be loaded on the client.
- if (warning.code === 'MODULE_LEVEL_DIRECTIVE' && warning.message.includes('use client')) {
- return
- }
-
- if (warning.code === 'CIRCULAR_DEPENDENCY') {
- throw warning
- }
-
- defaultHandler(warning)
- },
- output: {
- dir: 'dist',
- format: 'esm',
- preserveModules: true,
- preserveModulesRoot: 'src',
- },
-})
diff --git a/packages/styled-react/script/build b/packages/styled-react/script/build
index 4b2aebfc444..2cec9738e03 100755
--- a/packages/styled-react/script/build
+++ b/packages/styled-react/script/build
@@ -1,10 +1,9 @@
#!/bin/bash
-# Build the package
-npx rollup -c
+set -e
-# Generate type declarations
-npx tsc --project tsconfig.build.json
+# Build the package
+npx rolldown -c
# Generate components.json
./script/generate-components-json
diff --git a/packages/styled-react/tsconfig.build.json b/packages/styled-react/tsconfig.build.json
index 2de060388c0..4208219377c 100644
--- a/packages/styled-react/tsconfig.build.json
+++ b/packages/styled-react/tsconfig.build.json
@@ -9,6 +9,7 @@
"exclude": [
"vitest.config.ts",
"vitest.config.browser.ts",
+ "rolldown.config.ts",
"config",
"**/*.test.ts",
"**/*.test.tsx",
diff --git a/packages/styled-react/tsconfig.json b/packages/styled-react/tsconfig.json
index 732f6f7f05a..ed28f2e6151 100644
--- a/packages/styled-react/tsconfig.json
+++ b/packages/styled-react/tsconfig.json
@@ -1,4 +1,12 @@
{
"extends": "../../tsconfig.base.json",
- "include": ["src", "vitest.config.ts", "vitest.config.browser.ts", "config/vitest", "./.storybook/**/*.ts", "./.storybook/**/*.tsx"],
+ "include": [
+ "src",
+ "rolldown.config.ts",
+ "vitest.config.ts",
+ "vitest.config.browser.ts",
+ "config/vitest",
+ "./.storybook/**/*.ts",
+ "./.storybook/**/*.tsx"
+ ]
}
diff --git a/script/react-compiler-migration-status.mts b/script/react-compiler-migration-status.mts
index cd6b866fa13..cb937afdd38 100644
--- a/script/react-compiler-migration-status.mts
+++ b/script/react-compiler-migration-status.mts
@@ -1,9 +1,35 @@
import path from 'node:path'
import fs from 'node:fs'
+import {transformFileSync} from '@babel/core'
+import type {TransformOptions} from '@babel/core'
+import {CompilerError} from 'babel-plugin-react-compiler'
+import type {PluginOptions, Logger, LoggerEvent} from 'babel-plugin-react-compiler'
import {files as compilerFiles, notMigrated as notMigratedFiles} from '../packages/react/script/react-compiler.mjs'
const directory = path.resolve(import.meta.dirname, '..')
-const files = compilerFiles.map(filepath => {
+interface CompilerFile {
+ readonly filepath: string
+ readonly size: number
+}
+
+interface CompilerFailure {
+ readonly line: number | null
+ readonly reason: string
+}
+type CompilerErrorDetail = CompilerError['details'][number]
+
+type BabelReactPresetOptions = {
+ readonly modules: false
+ readonly runtime: 'automatic'
+}
+type BabelTransformPlugin = [string, PluginOptions | Record] | string
+type BabelTransformPreset = [string, BabelReactPresetOptions] | string
+interface BabelTransformOptions extends TransformOptions {
+ readonly presets: Array
+ readonly plugins: Array
+}
+
+const files: Array = compilerFiles.map(filepath => {
const stats = fs.statSync(filepath)
return {
filepath,
@@ -20,6 +46,12 @@ const notMigrated = notMigratedFiles.map(filepath => {
size: stats.size,
}
})
+const notMigratedReports = notMigrated.map(file => {
+ return {
+ ...file,
+ failures: getCompilerFailures(file.filepath),
+ }
+})
let totalSize = 0
@@ -33,7 +65,7 @@ for (const {size} of migrated) {
migratedSize += size
}
-console.log(`
+write(`
# React Compiler Migration
This report tracks our status migrating Primer React files to work with React Compiler.
@@ -49,19 +81,19 @@ This report tracks our status migrating Primer React files to work with React Co
 * 100)})
`)
-console.log(`
-## Not Migrated (${notMigrated.length})
+write(`
+## Not Migrated (${notMigratedReports.length})
-| Filepath | Size (kB) |
-| :------- | :-------- |`)
+| Filepath | Size (kB) | Compiler errors |
+| :------- | :-------- | :-------------- |`)
-for (const {filepath, size} of notMigrated) {
+for (const {filepath, size, failures} of notMigratedReports) {
const relativePath = path.relative(directory, filepath)
const link = `[\`${relativePath}\`](https://github.com/primer/react/blob/main/${relativePath})`
- console.log(`| ${link} | ${round(size / 1024)}kB |`)
+ write(`| ${link} | ${round(size / 1024)}kB | ${formatCompilerFailures(failures)} |`)
}
-console.log(`## Migrated (${migrated.length})
+write(`## Migrated (${migrated.length})
View migrated files
@@ -72,11 +104,121 @@ console.log(`## Migrated (${migrated.length})
for (const {filepath, size} of migrated) {
const relativePath = path.relative(directory, filepath)
const link = `[\`${relativePath}\`](https://github.com/primer/react/blob/main/${relativePath})`
- console.log(`| ${link} | ${round(size / 1024)}kB |`)
+ write(`| ${link} | ${round(size / 1024)}kB |`)
}
-console.log(`\n `)
+write(`\n`)
+
+function write(value: string): void {
+ process.stdout.write(`${value}\n`)
+}
function round(value: number): number {
return Math.round((value + Number.EPSILON) * 100) / 100
}
+
+function getCompilerFailures(filepath: string): Array {
+ const failures: Array = []
+ const logger: Logger = {
+ logEvent(_filename: string | null, event: LoggerEvent) {
+ if (event.kind === 'CompileError') {
+ addCompilerFailure(failures, formatCompilerError(event))
+ }
+
+ if (event.kind === 'CompileSkip') {
+ addCompilerFailure(failures, {
+ line: getLocationLine(event.loc ?? event.fnLoc),
+ reason: event.reason,
+ })
+ }
+ },
+ }
+
+ try {
+ transformFileSync(filepath, getBabelTransformOptions(logger))
+ } catch (error: unknown) {
+ if (!(error instanceof CompilerError)) {
+ throw error
+ }
+
+ for (const detail of error.details) {
+ addCompilerFailure(failures, formatCompilerErrorDetail(detail))
+ }
+ }
+
+ return failures
+}
+
+function getBabelTransformOptions(logger: Logger): BabelTransformOptions {
+ return {
+ babelrc: false,
+ configFile: false,
+ presets: [
+ '@babel/preset-typescript',
+ [
+ '@babel/preset-react',
+ {
+ modules: false,
+ runtime: 'automatic',
+ },
+ ],
+ ],
+ plugins: [
+ [
+ 'babel-plugin-react-compiler',
+ {
+ target: '18',
+ panicThreshold: 'all_errors',
+ logger,
+ },
+ ],
+ 'macros',
+ 'add-react-displayname',
+ 'dev-expression',
+ '@babel/plugin-proposal-nullish-coalescing-operator',
+ '@babel/plugin-proposal-optional-chaining',
+ ],
+ }
+}
+
+function formatCompilerError(event: Extract): CompilerFailure {
+ return formatCompilerErrorDetail(event.detail)
+}
+
+function formatCompilerErrorDetail(detail: CompilerErrorDetail): CompilerFailure {
+ return {
+ line: getLocationLine(detail.primaryLocation()),
+ reason: detail.reason,
+ }
+}
+
+function addCompilerFailure(failures: Array, failure: CompilerFailure): void {
+ const hasFailure = failures.some(existingFailure => {
+ return existingFailure.line === failure.line && existingFailure.reason === failure.reason
+ })
+
+ if (!hasFailure) {
+ failures.push(failure)
+ }
+}
+
+function getLocationLine(location: {start: {line: number}} | null): number | null {
+ return location?.start.line ?? null
+}
+
+function formatCompilerFailures(failures: Array): string {
+ if (failures.length === 0) {
+ return 'No compiler errors reported'
+ }
+
+ return failures.map(formatCompilerFailure).join('; ')
+}
+
+function formatCompilerFailure(failure: CompilerFailure): string {
+ const location = failure.line === null ? '' : `L${failure.line}: `
+ return escapeTableCell(`${location}${failure.reason}`)
+}
+
+function escapeTableCell(value: string): string {
+ return value.replaceAll('|', '\\|').replaceAll('\n', ' ')
+}