, 'value'> & { value?: string };
-
-export function Button(props: ButtonProps) {
- const { value: contextValue, setValue } = React.use(ButtonGroupContext);
- const isSelected =
- contextValue !== undefined && props.value !== undefined && contextValue === props.value;
-
- return (
-
- setValue(props.value)}
- onFocus={composeEventHandlers(props.onFocus, (event) => {
- if (contextValue !== undefined) {
- event.target.click();
- }
- })}
- />
-
- );
-}
diff --git a/apps/ssr-testing/next-env.d.ts b/apps/ssr-testing/next-env.d.ts
deleted file mode 100644
index 1b3be0840f..0000000000
--- a/apps/ssr-testing/next-env.d.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-///
-///
-
-// NOTE: This file should not be edited
-// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
diff --git a/apps/ssr-testing/next.config.js b/apps/ssr-testing/next.config.js
deleted file mode 100644
index ad9c520c8b..0000000000
--- a/apps/ssr-testing/next.config.js
+++ /dev/null
@@ -1,5 +0,0 @@
-module.exports = {
- experimental: {
- externalDir: true,
- },
-};
diff --git a/apps/ssr-testing/package.json b/apps/ssr-testing/package.json
deleted file mode 100644
index 0b2546d6e6..0000000000
--- a/apps/ssr-testing/package.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
- "name": "@repo/ssr-testing",
- "version": "0.0.0",
- "private": true,
- "scripts": {
- "dev": "next dev",
- "build": "next build",
- "start": "next start"
- },
- "dependencies": {
- "next": "^15.3.1",
- "radix-ui": "workspace:*",
- "react": "^19.2.0",
- "react-dom": "^19.2.0"
- },
- "devDependencies": {
- "@repo/eslint-config": "workspace:*",
- "@repo/typescript-config": "workspace:*",
- "@types/react": "^19.2.2",
- "@types/react-dom": "^19.2.2",
- "eslint": "^9.38.0",
- "typescript": "^5.9.3"
- }
-}
diff --git a/apps/ssr-testing/public/favicon.ico b/apps/ssr-testing/public/favicon.ico
deleted file mode 100644
index 4965832f2c..0000000000
Binary files a/apps/ssr-testing/public/favicon.ico and /dev/null differ
diff --git a/apps/ssr-testing/tsconfig.json b/apps/ssr-testing/tsconfig.json
deleted file mode 100644
index 741c693c76..0000000000
--- a/apps/ssr-testing/tsconfig.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "extends": "@repo/typescript-config/nextjs.json",
- "compilerOptions": {
- "incremental": true
- },
- "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
- "exclude": ["node_modules"]
-}
diff --git a/apps/ssr-testing/.gitignore b/apps/test-next/.gitignore
similarity index 50%
rename from apps/ssr-testing/.gitignore
rename to apps/test-next/.gitignore
index 6ea2d6e18c..5ef6a52078 100644
--- a/apps/ssr-testing/.gitignore
+++ b/apps/test-next/.gitignore
@@ -3,7 +3,12 @@
# dependencies
/node_modules
/.pnp
-.pnp.js
+.pnp.*
+.yarn/*
+!.yarn/patches
+!.yarn/plugins
+!.yarn/releases
+!.yarn/versions
# testing
/coverage
@@ -20,13 +25,17 @@
*.pem
# debug
-*.log*
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+.pnpm-debug.log*
-# local env files
-.env.local
-.env.development.local
-.env.test.local
-.env.production.local
+# env files (can opt-in for committing if needed)
+.env*
# vercel
.vercel
+
+# typescript
+*.tsbuildinfo
+next-env.d.ts
diff --git a/apps/test-next/README.md b/apps/test-next/README.md
new file mode 100644
index 0000000000..b1159d554f
--- /dev/null
+++ b/apps/test-next/README.md
@@ -0,0 +1,32 @@
+This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
+
+## Getting Started
+
+First, run the development server:
+
+```bash
+pnpm dev
+# or from the root of the repo
+pnpm dev:next
+```
+
+Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
+
+You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
+
+This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel.
+
+## Learn More
+
+To learn more about Next.js, take a look at the following resources:
+
+- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
+- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
+
+You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
+
+## Deploy on Vercel
+
+The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
+
+Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
diff --git a/apps/test-next/app/accessible-icon/page.tsx b/apps/test-next/app/accessible-icon/page.tsx
new file mode 100644
index 0000000000..32b248e40a
--- /dev/null
+++ b/apps/test-next/app/accessible-icon/page.tsx
@@ -0,0 +1,5 @@
+import * as AccessibleIcon from '@repo/test-registry/components/accessible-icon';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/accordion/page.tsx b/apps/test-next/app/accordion/page.tsx
new file mode 100644
index 0000000000..8b1ea7973f
--- /dev/null
+++ b/apps/test-next/app/accordion/page.tsx
@@ -0,0 +1,5 @@
+import * as Accordion from '@repo/test-registry/components/accordion';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/alert-dialog/page.tsx b/apps/test-next/app/alert-dialog/page.tsx
new file mode 100644
index 0000000000..3d978ac60d
--- /dev/null
+++ b/apps/test-next/app/alert-dialog/page.tsx
@@ -0,0 +1,5 @@
+import * as AlertDialog from '@repo/test-registry/components/alert-dialog';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/arrow/page.tsx b/apps/test-next/app/arrow/page.tsx
new file mode 100644
index 0000000000..a889e8b7ae
--- /dev/null
+++ b/apps/test-next/app/arrow/page.tsx
@@ -0,0 +1,5 @@
+import * as Arrow from '@repo/test-registry/components/arrow';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/aspect-ratio/page.tsx b/apps/test-next/app/aspect-ratio/page.tsx
new file mode 100644
index 0000000000..6a91fd4f30
--- /dev/null
+++ b/apps/test-next/app/aspect-ratio/page.tsx
@@ -0,0 +1,5 @@
+import * as AspectRatio from '@repo/test-registry/components/aspect-ratio';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/avatar/page.tsx b/apps/test-next/app/avatar/page.tsx
new file mode 100644
index 0000000000..75e98cfdfb
--- /dev/null
+++ b/apps/test-next/app/avatar/page.tsx
@@ -0,0 +1,5 @@
+import * as Avatar from '@repo/test-registry/components/avatar';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/checkbox/page.tsx b/apps/test-next/app/checkbox/page.tsx
new file mode 100644
index 0000000000..64f74ec0d1
--- /dev/null
+++ b/apps/test-next/app/checkbox/page.tsx
@@ -0,0 +1,5 @@
+import * as Checkbox from '@repo/test-registry/components/checkbox';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/collapsible/page.tsx b/apps/test-next/app/collapsible/page.tsx
new file mode 100644
index 0000000000..75b50f9f23
--- /dev/null
+++ b/apps/test-next/app/collapsible/page.tsx
@@ -0,0 +1,5 @@
+import * as Collapsible from '@repo/test-registry/components/collapsible';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/collection/page.tsx b/apps/test-next/app/collection/page.tsx
new file mode 100644
index 0000000000..daa4734583
--- /dev/null
+++ b/apps/test-next/app/collection/page.tsx
@@ -0,0 +1,27 @@
+import * as React from 'react';
+import {
+ Unstable,
+ UnstableItem,
+ Stable,
+ StableItem,
+} from '@repo/test-registry/components/collection';
+
+export default function Page() {
+ return (
+
+
Unstable Collection
+
+ Item 1
+ Item 2
+ Item 3
+
+
+ Stable Collection
+
+ Item 1
+ Item 2
+ Item 3
+
+
+ );
+}
diff --git a/apps/test-next/app/context-menu/page.tsx b/apps/test-next/app/context-menu/page.tsx
new file mode 100644
index 0000000000..b40cbe3e30
--- /dev/null
+++ b/apps/test-next/app/context-menu/page.tsx
@@ -0,0 +1,5 @@
+import * as ContextMenu from '@repo/test-registry/components/context-menu';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/dialog/page.tsx b/apps/test-next/app/dialog/page.tsx
new file mode 100644
index 0000000000..d7698910ad
--- /dev/null
+++ b/apps/test-next/app/dialog/page.tsx
@@ -0,0 +1,5 @@
+import * as Dialog from '@repo/test-registry/components/dialog';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/direction/page.tsx b/apps/test-next/app/direction/page.tsx
new file mode 100644
index 0000000000..c7ccfd91f9
--- /dev/null
+++ b/apps/test-next/app/direction/page.tsx
@@ -0,0 +1,11 @@
+import * as React from 'react';
+import * as Direction from '@repo/test-registry/components/direction';
+
+export default function Page() {
+ return (
+
+
+
+
+ );
+}
diff --git a/apps/test-next/app/dismissable-layer/dismissable-layer.client.tsx b/apps/test-next/app/dismissable-layer/dismissable-layer.client.tsx
new file mode 100644
index 0000000000..055c86a36d
--- /dev/null
+++ b/apps/test-next/app/dismissable-layer/dismissable-layer.client.tsx
@@ -0,0 +1,64 @@
+'use client';
+import * as React from 'react';
+import { DismissableLayer as DismissableLayerPrimitive } from 'radix-ui/internal';
+
+function DismissableLayerImpl() {
+ const [disableOutsidePointerEvents, setDisableOutsidePointerEvents] = React.useState(false);
+ const [dismissed, setDismissed] = React.useState(false);
+ return (
+
+ {dismissed &&
Dismissed!
}
+
+
+
{
+ console.log('escape key down', event);
+ }}
+ onPointerDownOutside={(event) => {
+ console.log('pointer down outside', event);
+ }}
+ onFocusOutside={(event) => {
+ console.log('focus outside', event);
+ }}
+ onInteractOutside={(event) => {
+ console.log('interact outside', event);
+ }}
+ onDismiss={() => {
+ setDismissed(true);
+ console.log('dismiss');
+ }}
+ >
+
+
Hello!
+
+
+ setDisableOutsidePointerEvents(
+ (disableOutsidePointerEvents) => !disableOutsidePointerEvents,
+ )
+ }
+ />
+ Disable Outside Pointer Events
+
+
+
+
+ );
+}
+
+export function DismissableLayer() {
+ const [key, setKey] = React.useState('');
+ return (
+
+ setKey(window.crypto.randomUUID())}>
+ Reset State
+
+
+
+
+ );
+}
diff --git a/apps/test-next/app/dismissable-layer/page.tsx b/apps/test-next/app/dismissable-layer/page.tsx
new file mode 100644
index 0000000000..cffa1af518
--- /dev/null
+++ b/apps/test-next/app/dismissable-layer/page.tsx
@@ -0,0 +1,5 @@
+import * as DismissableLayer from '@repo/test-registry/components/dismissable-layer';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/dropdown-menu/page.tsx b/apps/test-next/app/dropdown-menu/page.tsx
new file mode 100644
index 0000000000..d221b4aa83
--- /dev/null
+++ b/apps/test-next/app/dropdown-menu/page.tsx
@@ -0,0 +1,5 @@
+import * as DropdownMenu from '@repo/test-registry/components/dropdown-menu';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/favicon.ico b/apps/test-next/app/favicon.ico
new file mode 100644
index 0000000000..718d6fea48
Binary files /dev/null and b/apps/test-next/app/favicon.ico differ
diff --git a/apps/test-next/app/focus-guards/page.tsx b/apps/test-next/app/focus-guards/page.tsx
new file mode 100644
index 0000000000..6ed83543e2
--- /dev/null
+++ b/apps/test-next/app/focus-guards/page.tsx
@@ -0,0 +1,6 @@
+import * as React from 'react';
+import * as FocusGuards from '@repo/test-registry/components/focus-guards';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/focus-scope/page.tsx b/apps/test-next/app/focus-scope/page.tsx
new file mode 100644
index 0000000000..7414dded4c
--- /dev/null
+++ b/apps/test-next/app/focus-scope/page.tsx
@@ -0,0 +1,12 @@
+import * as React from 'react';
+import * as FocusScope from '@repo/test-registry/components/focus-scope';
+
+export default function Page() {
+ return (
+
+
+
+
+
+ );
+}
diff --git a/apps/test-next/app/form/page.tsx b/apps/test-next/app/form/page.tsx
new file mode 100644
index 0000000000..81118cf9ea
--- /dev/null
+++ b/apps/test-next/app/form/page.tsx
@@ -0,0 +1,6 @@
+import * as React from 'react';
+import * as Form from '@repo/test-registry/components/form';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/globals.css b/apps/test-next/app/globals.css
new file mode 100644
index 0000000000..9fbccd9b03
--- /dev/null
+++ b/apps/test-next/app/globals.css
@@ -0,0 +1,4 @@
+@import '@repo/test-styles/resets.css';
+@import '@repo/test-styles/colors.css';
+@import '@repo/test-styles/global.css';
+@import '@repo/test-styles/components.css';
diff --git a/apps/test-next/app/hover-card/page.tsx b/apps/test-next/app/hover-card/page.tsx
new file mode 100644
index 0000000000..08776e123f
--- /dev/null
+++ b/apps/test-next/app/hover-card/page.tsx
@@ -0,0 +1,6 @@
+import * as React from 'react';
+import * as HoverCard from '@repo/test-registry/components/hover-card';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/label/page.tsx b/apps/test-next/app/label/page.tsx
new file mode 100644
index 0000000000..eeeee3c833
--- /dev/null
+++ b/apps/test-next/app/label/page.tsx
@@ -0,0 +1,6 @@
+import * as React from 'react';
+import * as Label from '@repo/test-registry/components/label';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/layout.tsx b/apps/test-next/app/layout.tsx
new file mode 100644
index 0000000000..de7134241f
--- /dev/null
+++ b/apps/test-next/app/layout.tsx
@@ -0,0 +1,38 @@
+import type * as React from 'react';
+import type { Metadata } from 'next';
+import { primitives } from '@repo/test-registry';
+import Link from 'next/link';
+import './globals.css';
+
+export const metadata: Metadata = {
+ title: 'Create Next App',
+ description: 'Generated by create next app',
+};
+
+export default function Layout({ children }: { children: React.ReactNode }) {
+ return (
+
+
+ Next.js testing
+
+
+
Public APIs
+ {primitives.public.map((primitive) => (
+
+ {primitive.name}
+
+ ))}
+
+ Internal APIs
+ {primitives.internal.map((primitive) => (
+
+ {primitive.name}
+
+ ))}
+
+
{children}
+
+
+
+ );
+}
diff --git a/apps/test-next/app/menu/page.tsx b/apps/test-next/app/menu/page.tsx
new file mode 100644
index 0000000000..b6d40386b8
--- /dev/null
+++ b/apps/test-next/app/menu/page.tsx
@@ -0,0 +1,15 @@
+import * as Menu from '@repo/test-registry/components/menu';
+
+export default function Page() {
+ return (
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/apps/test-next/app/menubar/page.tsx b/apps/test-next/app/menubar/page.tsx
new file mode 100644
index 0000000000..1e256aaf9b
--- /dev/null
+++ b/apps/test-next/app/menubar/page.tsx
@@ -0,0 +1,6 @@
+import * as React from 'react';
+import * as Menubar from '@repo/test-registry/components/menubar';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/navigation-menu/page.tsx b/apps/test-next/app/navigation-menu/page.tsx
new file mode 100644
index 0000000000..1cdfb0d840
--- /dev/null
+++ b/apps/test-next/app/navigation-menu/page.tsx
@@ -0,0 +1,5 @@
+import * as NavigationMenu from '@repo/test-registry/components/navigation-menu';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/one-time-password-field/page.tsx b/apps/test-next/app/one-time-password-field/page.tsx
new file mode 100644
index 0000000000..756d1d8aba
--- /dev/null
+++ b/apps/test-next/app/one-time-password-field/page.tsx
@@ -0,0 +1,5 @@
+import * as OneTimePasswordField from '@repo/test-registry/components/one-time-password-field';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/page.tsx b/apps/test-next/app/page.tsx
new file mode 100644
index 0000000000..bdf0e1fd25
--- /dev/null
+++ b/apps/test-next/app/page.tsx
@@ -0,0 +1,3 @@
+export default function Home() {
+ return Please select a primitive from the sidebar
;
+}
diff --git a/apps/test-next/app/password-toggle-field/page.tsx b/apps/test-next/app/password-toggle-field/page.tsx
new file mode 100644
index 0000000000..637a53c7ab
--- /dev/null
+++ b/apps/test-next/app/password-toggle-field/page.tsx
@@ -0,0 +1,5 @@
+import * as PasswordToggleField from '@repo/test-registry/components/password-toggle-field';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/popover/page.tsx b/apps/test-next/app/popover/page.tsx
new file mode 100644
index 0000000000..69df924b59
--- /dev/null
+++ b/apps/test-next/app/popover/page.tsx
@@ -0,0 +1,5 @@
+import * as Popover from '@repo/test-registry/components/popover';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/popper/page.tsx b/apps/test-next/app/popper/page.tsx
new file mode 100644
index 0000000000..1445cb5c42
--- /dev/null
+++ b/apps/test-next/app/popper/page.tsx
@@ -0,0 +1,15 @@
+import * as Popper from '@repo/test-registry/components/popper';
+
+export default function Page() {
+ return (
+
+ );
+}
diff --git a/apps/test-next/app/portal/page.tsx b/apps/test-next/app/portal/page.tsx
new file mode 100644
index 0000000000..a869cfdcd5
--- /dev/null
+++ b/apps/test-next/app/portal/page.tsx
@@ -0,0 +1,13 @@
+import * as Portal from '@repo/test-registry/components/portal';
+
+export default function Page() {
+ return (
+
+ );
+}
diff --git a/apps/test-next/app/progress/page.tsx b/apps/test-next/app/progress/page.tsx
new file mode 100644
index 0000000000..1c3788f236
--- /dev/null
+++ b/apps/test-next/app/progress/page.tsx
@@ -0,0 +1,5 @@
+import * as Progress from '@repo/test-registry/components/progress';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/radio-group/page.tsx b/apps/test-next/app/radio-group/page.tsx
new file mode 100644
index 0000000000..4737c444a0
--- /dev/null
+++ b/apps/test-next/app/radio-group/page.tsx
@@ -0,0 +1,5 @@
+import * as RadioGroup from '@repo/test-registry/components/radio-group';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/roving-focus/page.tsx b/apps/test-next/app/roving-focus/page.tsx
new file mode 100644
index 0000000000..e9fd86bb88
--- /dev/null
+++ b/apps/test-next/app/roving-focus/page.tsx
@@ -0,0 +1,13 @@
+import * as React from 'react';
+import * as RovingFocus from '@repo/test-registry/components/roving-focus';
+
+export default function Page() {
+ return (
+ <>
+ Basic
+
+ Nested
+
+ >
+ );
+}
diff --git a/apps/test-next/app/scroll-area/page.tsx b/apps/test-next/app/scroll-area/page.tsx
new file mode 100644
index 0000000000..2975e15004
--- /dev/null
+++ b/apps/test-next/app/scroll-area/page.tsx
@@ -0,0 +1,5 @@
+import * as ScrollArea from '@repo/test-registry/components/scroll-area';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/select/page.tsx b/apps/test-next/app/select/page.tsx
new file mode 100644
index 0000000000..ebab628536
--- /dev/null
+++ b/apps/test-next/app/select/page.tsx
@@ -0,0 +1,5 @@
+import * as Select from '@repo/test-registry/components/select';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/separator/page.tsx b/apps/test-next/app/separator/page.tsx
new file mode 100644
index 0000000000..befc175921
--- /dev/null
+++ b/apps/test-next/app/separator/page.tsx
@@ -0,0 +1,5 @@
+import * as Separator from '@repo/test-registry/components/separator';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/slider/page.tsx b/apps/test-next/app/slider/page.tsx
new file mode 100644
index 0000000000..f44843a0f6
--- /dev/null
+++ b/apps/test-next/app/slider/page.tsx
@@ -0,0 +1,5 @@
+import * as Slider from '@repo/test-registry/components/slider';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/slot/page.tsx b/apps/test-next/app/slot/page.tsx
new file mode 100644
index 0000000000..9ee17eeb09
--- /dev/null
+++ b/apps/test-next/app/slot/page.tsx
@@ -0,0 +1,6 @@
+import * as React from 'react';
+import * as Slot from '@repo/test-registry/components/slot';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/switch/page.tsx b/apps/test-next/app/switch/page.tsx
new file mode 100644
index 0000000000..7a331ff84d
--- /dev/null
+++ b/apps/test-next/app/switch/page.tsx
@@ -0,0 +1,5 @@
+import * as Switch from '@repo/test-registry/components/switch';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/tabs/page.tsx b/apps/test-next/app/tabs/page.tsx
new file mode 100644
index 0000000000..aa763ecde8
--- /dev/null
+++ b/apps/test-next/app/tabs/page.tsx
@@ -0,0 +1,5 @@
+import * as Tabs from '@repo/test-registry/components/tabs';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/toast/page.tsx b/apps/test-next/app/toast/page.tsx
new file mode 100644
index 0000000000..e5a76bb8b3
--- /dev/null
+++ b/apps/test-next/app/toast/page.tsx
@@ -0,0 +1,5 @@
+import * as Toast from '@repo/test-registry/components/toast';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/toggle-group/page.tsx b/apps/test-next/app/toggle-group/page.tsx
new file mode 100644
index 0000000000..a7bea7f0e0
--- /dev/null
+++ b/apps/test-next/app/toggle-group/page.tsx
@@ -0,0 +1,5 @@
+import * as ToggleGroup from '@repo/test-registry/components/toggle-group';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/toggle/page.tsx b/apps/test-next/app/toggle/page.tsx
new file mode 100644
index 0000000000..df722f71cf
--- /dev/null
+++ b/apps/test-next/app/toggle/page.tsx
@@ -0,0 +1,5 @@
+import * as Toggle from '@repo/test-registry/components/toggle';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/toolbar/page.tsx b/apps/test-next/app/toolbar/page.tsx
new file mode 100644
index 0000000000..31024ad77f
--- /dev/null
+++ b/apps/test-next/app/toolbar/page.tsx
@@ -0,0 +1,5 @@
+import * as Toolbar from '@repo/test-registry/components/toolbar';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/tooltip/page.tsx b/apps/test-next/app/tooltip/page.tsx
new file mode 100644
index 0000000000..efe77a52e8
--- /dev/null
+++ b/apps/test-next/app/tooltip/page.tsx
@@ -0,0 +1,5 @@
+import * as Tooltip from '@repo/test-registry/components/tooltip';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/app/visually-hidden/page.tsx b/apps/test-next/app/visually-hidden/page.tsx
new file mode 100644
index 0000000000..e20db888d1
--- /dev/null
+++ b/apps/test-next/app/visually-hidden/page.tsx
@@ -0,0 +1,5 @@
+import * as VisuallyHidden from '@repo/test-registry/components/visually-hidden';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-next/eslint.config.mjs b/apps/test-next/eslint.config.mjs
new file mode 100644
index 0000000000..475c68fbf0
--- /dev/null
+++ b/apps/test-next/eslint.config.mjs
@@ -0,0 +1,23 @@
+import { defineConfig, globalIgnores } from 'eslint/config';
+import nextVitals from 'eslint-config-next/core-web-vitals';
+import nextTs from 'eslint-config-next/typescript';
+
+const eslintConfig = defineConfig([
+ ...nextVitals,
+ ...nextTs,
+ // Override default ignores of eslint-config-next.
+ globalIgnores([
+ // Default ignores of eslint-config-next:
+ '.next/**',
+ 'out/**',
+ 'build/**',
+ 'next-env.d.ts',
+ ]),
+ {
+ rules: {
+ '@next/next/no-img-element': 'off',
+ },
+ },
+]);
+
+export default eslintConfig;
diff --git a/apps/test-next/next.config.ts b/apps/test-next/next.config.ts
new file mode 100644
index 0000000000..e9ffa3083a
--- /dev/null
+++ b/apps/test-next/next.config.ts
@@ -0,0 +1,7 @@
+import type { NextConfig } from "next";
+
+const nextConfig: NextConfig = {
+ /* config options here */
+};
+
+export default nextConfig;
diff --git a/apps/test-next/package.json b/apps/test-next/package.json
new file mode 100644
index 0000000000..1352797d00
--- /dev/null
+++ b/apps/test-next/package.json
@@ -0,0 +1,29 @@
+{
+ "name": "@repo/test-next",
+ "version": "0.0.0",
+ "private": true,
+ "scripts": {
+ "dev": "next dev -p 3003",
+ "build": "next build",
+ "start": "next start",
+ "lint": "eslint"
+ },
+ "dependencies": {
+ "@radix-ui/react-icons": "^1.3.2",
+ "@repo/test-data": "workspace:*",
+ "@repo/test-registry": "workspace:*",
+ "@repo/test-styles": "workspace:*",
+ "next": "16.0.1",
+ "react": "19.2.0",
+ "radix-ui": "workspace:*",
+ "react-dom": "19.2.0"
+ },
+ "devDependencies": {
+ "@types/node": "^22",
+ "@types/react": "^19.2.2",
+ "@types/react-dom": "^19.2.2",
+ "eslint": "^9.38.0",
+ "eslint-config-next": "16.0.1",
+ "typescript": "^5.9.3"
+ }
+}
diff --git a/apps/test-next/postcss.config.mjs b/apps/test-next/postcss.config.mjs
new file mode 100644
index 0000000000..8aa71477f2
--- /dev/null
+++ b/apps/test-next/postcss.config.mjs
@@ -0,0 +1,5 @@
+const config = {
+ plugins: {},
+};
+
+export default config;
diff --git a/apps/test-next/public/favicon.ico b/apps/test-next/public/favicon.ico
new file mode 100644
index 0000000000..718d6fea48
Binary files /dev/null and b/apps/test-next/public/favicon.ico differ
diff --git a/apps/test-next/tsconfig.json b/apps/test-next/tsconfig.json
new file mode 100644
index 0000000000..3453a3215c
--- /dev/null
+++ b/apps/test-next/tsconfig.json
@@ -0,0 +1,34 @@
+{
+ "compilerOptions": {
+ "target": "ES2017",
+ "lib": ["dom", "dom.iterable", "esnext"],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "noEmit": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "react-jsx",
+ "incremental": true,
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ],
+ "paths": {
+ "@/*": ["./*"]
+ }
+ },
+ "include": [
+ "next-env.d.ts",
+ "**/*.ts",
+ "**/*.tsx",
+ ".next/types/**/*.ts",
+ ".next/dev/types/**/*.ts",
+ "**/*.mts"
+ ],
+ "exclude": ["node_modules", "../../**/*"]
+}
diff --git a/apps/test-react-router-rsc/.gitignore b/apps/test-react-router-rsc/.gitignore
new file mode 100644
index 0000000000..039ee62d21
--- /dev/null
+++ b/apps/test-react-router-rsc/.gitignore
@@ -0,0 +1,7 @@
+.DS_Store
+.env
+/node_modules/
+
+# React Router
+/.react-router/
+/build/
diff --git a/apps/test-react-router-rsc/README.md b/apps/test-react-router-rsc/README.md
new file mode 100644
index 0000000000..ee739101c3
--- /dev/null
+++ b/apps/test-react-router-rsc/README.md
@@ -0,0 +1,62 @@
+# Welcome to React Router! (Experimental RSC)
+
+โ ๏ธ **EXPERIMENTAL**: This template demonstrates React Server Components with React Router. This is experimental technology and not recommended for production use.
+
+A modern template for exploring React Server Components (RSC) with React Router, powered by Vite.
+
+## Features
+
+- ๐งช **Experimental React Server Components**
+- ๐ Server-side rendering with RSC
+- โก๏ธ Hot Module Replacement (HMR)
+- ๐ฆ Asset bundling and optimization with Vite
+- ๐ Data loading and mutations
+- ๐ TypeScript by default
+- ๐ [React Router docs](https://reactrouter.com/)
+- ๐ [React Server Components guide](https://reactrouter.com/how-to/react-server-components)
+
+## Getting Started
+
+### Installation
+
+Install the dependencies:
+
+```bash
+pnpm install
+```
+
+### Development
+
+Start the development server with HMR:
+
+```bash
+pnpm dev
+# or from the root of the repo
+pnpm dev:react-router-rsc
+```
+
+Your application will be available at `http://localhost:5173`.
+
+## Building for Production
+
+Create a production build:
+
+```bash
+pnpm build
+```
+
+## Running Production Build
+
+Run the production server:
+
+```bash
+npm start
+```
+
+## Understanding React Server Components
+
+Learn more about React Server Components with React Router in our [comprehensive guide](https://reactrouter.com/how-to/react-server-components).
+
+---
+
+Built with โค๏ธ using React Router.
diff --git a/apps/test-react-router-rsc/app/globals.css b/apps/test-react-router-rsc/app/globals.css
new file mode 100644
index 0000000000..9fbccd9b03
--- /dev/null
+++ b/apps/test-react-router-rsc/app/globals.css
@@ -0,0 +1,4 @@
+@import '@repo/test-styles/resets.css';
+@import '@repo/test-styles/colors.css';
+@import '@repo/test-styles/global.css';
+@import '@repo/test-styles/components.css';
diff --git a/apps/test-react-router-rsc/app/root.tsx b/apps/test-react-router-rsc/app/root.tsx
new file mode 100644
index 0000000000..8a10c72dd3
--- /dev/null
+++ b/apps/test-react-router-rsc/app/root.tsx
@@ -0,0 +1,90 @@
+import {
+ isRouteErrorResponse,
+ Links,
+ Meta,
+ NavLink,
+ Outlet,
+ ScrollRestoration,
+} from 'react-router';
+import { primitives } from '@repo/test-registry';
+import type { Route } from './+types/root';
+import './globals.css';
+
+export const links: Route.LinksFunction = () => [
+ { rel: 'preconnect', href: 'https://fonts.googleapis.com' },
+ {
+ rel: 'preconnect',
+ href: 'https://fonts.gstatic.com',
+ crossOrigin: 'anonymous',
+ },
+ {
+ rel: 'stylesheet',
+ href: 'https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap',
+ },
+];
+
+export function Layout({ children }: { children: React.ReactNode }) {
+ return (
+
+
+
+
+
+
+
+
+ React Router RSC testing
+
+
+
Public APIs
+ {primitives.public.map((primitive) => (
+
+ {primitive.name}
+
+ ))}
+
+ Internal APIs
+ {primitives.internal.map((primitive) => (
+
+ {primitive.name}
+
+ ))}
+
+
{children}
+
+
+
+
+ );
+}
+
+export default function App() {
+ return ;
+}
+
+export function ErrorBoundary({ error }: Route.ErrorBoundaryProps) {
+ let message = 'Oops!';
+ let details = 'An unexpected error occurred.';
+ let stack: string | undefined;
+
+ if (isRouteErrorResponse(error)) {
+ message = error.status === 404 ? '404' : 'Error';
+ details =
+ error.status === 404 ? 'The requested page could not be found.' : error.statusText || details;
+ } else if (import.meta.env.DEV && error && error instanceof Error) {
+ details = error.message;
+ stack = error.stack;
+ }
+
+ return (
+
+ {message}
+ {details}
+ {stack && (
+
+ {stack}
+
+ )}
+
+ );
+}
diff --git a/apps/test-react-router-rsc/app/routes.ts b/apps/test-react-router-rsc/app/routes.ts
new file mode 100644
index 0000000000..ca9af6722c
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes.ts
@@ -0,0 +1,10 @@
+import { type RouteConfig, index, route } from '@react-router/dev/routes';
+import { primitives } from '@repo/test-registry';
+
+export default [
+ index('routes/index.tsx'),
+ // Public APIs
+ ...primitives.public.map((primitive) => route(primitive.id, `routes/${primitive.id}.tsx`)),
+ // Internal APIs
+ ...primitives.internal.map((primitive) => route(primitive.id, `routes/${primitive.id}.tsx`)),
+] satisfies RouteConfig;
diff --git a/apps/test-react-router-rsc/app/routes/accessible-icon.tsx b/apps/test-react-router-rsc/app/routes/accessible-icon.tsx
new file mode 100644
index 0000000000..96a755c583
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/accessible-icon.tsx
@@ -0,0 +1,5 @@
+import * as AccessibleIcon from '@repo/test-registry/components/accessible-icon';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/accordion.tsx b/apps/test-react-router-rsc/app/routes/accordion.tsx
new file mode 100644
index 0000000000..9987a30b48
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/accordion.tsx
@@ -0,0 +1,5 @@
+import * as Accordion from '@repo/test-registry/components/accordion';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/alert-dialog.tsx b/apps/test-react-router-rsc/app/routes/alert-dialog.tsx
new file mode 100644
index 0000000000..575cff7dcf
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/alert-dialog.tsx
@@ -0,0 +1,5 @@
+import * as AlertDialog from '@repo/test-registry/components/alert-dialog';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/arrow.tsx b/apps/test-react-router-rsc/app/routes/arrow.tsx
new file mode 100644
index 0000000000..a8269259e0
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/arrow.tsx
@@ -0,0 +1,5 @@
+import * as Arrow from '@repo/test-registry/components/arrow';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/aspect-ratio.tsx b/apps/test-react-router-rsc/app/routes/aspect-ratio.tsx
new file mode 100644
index 0000000000..bb1be25fb6
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/aspect-ratio.tsx
@@ -0,0 +1,5 @@
+import * as AspectRatio from '@repo/test-registry/components/aspect-ratio';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/avatar.tsx b/apps/test-react-router-rsc/app/routes/avatar.tsx
new file mode 100644
index 0000000000..1e6d3c6500
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/avatar.tsx
@@ -0,0 +1,5 @@
+import * as Avatar from '@repo/test-registry/components/avatar';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/checkbox.tsx b/apps/test-react-router-rsc/app/routes/checkbox.tsx
new file mode 100644
index 0000000000..b62e7a7beb
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/checkbox.tsx
@@ -0,0 +1,5 @@
+import * as Checkbox from '@repo/test-registry/components/checkbox';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/collapsible.tsx b/apps/test-react-router-rsc/app/routes/collapsible.tsx
new file mode 100644
index 0000000000..9699f299f8
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/collapsible.tsx
@@ -0,0 +1,5 @@
+import * as Collapsible from '@repo/test-registry/components/collapsible';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/collection.tsx b/apps/test-react-router-rsc/app/routes/collection.tsx
new file mode 100644
index 0000000000..10e0f76ad0
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/collection.tsx
@@ -0,0 +1,26 @@
+import {
+ Unstable,
+ UnstableItem,
+ Stable,
+ StableItem,
+} from '@repo/test-registry/components/collection';
+
+export async function ServerComponent() {
+ return (
+
+
Unstable Collection
+
+ Item 1
+ Item 2
+ Item 3
+
+
+ Stable Collection
+
+ Item 1
+ Item 2
+ Item 3
+
+
+ );
+}
diff --git a/apps/test-react-router-rsc/app/routes/context-menu.tsx b/apps/test-react-router-rsc/app/routes/context-menu.tsx
new file mode 100644
index 0000000000..84cc2b4290
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/context-menu.tsx
@@ -0,0 +1,5 @@
+import * as ContextMenu from '@repo/test-registry/components/context-menu';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/dialog.tsx b/apps/test-react-router-rsc/app/routes/dialog.tsx
new file mode 100644
index 0000000000..4fffaea34e
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/dialog.tsx
@@ -0,0 +1,5 @@
+import * as Dialog from '@repo/test-registry/components/dialog';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/direction.tsx b/apps/test-react-router-rsc/app/routes/direction.tsx
new file mode 100644
index 0000000000..5ed63e6ba8
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/direction.tsx
@@ -0,0 +1,10 @@
+import * as Direction from '@repo/test-registry/components/direction';
+
+export async function ServerComponent() {
+ return (
+
+
+
+
+ );
+}
diff --git a/apps/test-react-router-rsc/app/routes/dismissable-layer.tsx b/apps/test-react-router-rsc/app/routes/dismissable-layer.tsx
new file mode 100644
index 0000000000..719f9981e9
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/dismissable-layer.tsx
@@ -0,0 +1,5 @@
+import * as DismissableLayer from '@repo/test-registry/components/dismissable-layer';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/dropdown-menu.tsx b/apps/test-react-router-rsc/app/routes/dropdown-menu.tsx
new file mode 100644
index 0000000000..759d736af2
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/dropdown-menu.tsx
@@ -0,0 +1,5 @@
+import * as DropdownMenu from '@repo/test-registry/components/dropdown-menu';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/focus-guards.tsx b/apps/test-react-router-rsc/app/routes/focus-guards.tsx
new file mode 100644
index 0000000000..ea3b04e11e
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/focus-guards.tsx
@@ -0,0 +1,5 @@
+import * as FocusGuards from '@repo/test-registry/components/focus-guards';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/focus-scope.tsx b/apps/test-react-router-rsc/app/routes/focus-scope.tsx
new file mode 100644
index 0000000000..3d8e80c610
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/focus-scope.tsx
@@ -0,0 +1,11 @@
+import * as FocusScope from '@repo/test-registry/components/focus-scope';
+
+export async function ServerComponent() {
+ return (
+
+
+
+
+
+ );
+}
diff --git a/apps/test-react-router-rsc/app/routes/form.tsx b/apps/test-react-router-rsc/app/routes/form.tsx
new file mode 100644
index 0000000000..f612508ca8
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/form.tsx
@@ -0,0 +1,5 @@
+import * as Form from '@repo/test-registry/components/form';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/hover-card.tsx b/apps/test-react-router-rsc/app/routes/hover-card.tsx
new file mode 100644
index 0000000000..86a9022cdb
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/hover-card.tsx
@@ -0,0 +1,5 @@
+import * as HoverCard from '@repo/test-registry/components/hover-card';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/index.tsx b/apps/test-react-router-rsc/app/routes/index.tsx
new file mode 100644
index 0000000000..2651384916
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/index.tsx
@@ -0,0 +1,12 @@
+import type { Route } from './+types/index';
+
+export function meta(_args: Route.MetaArgs) {
+ return [
+ { title: 'New React Router App' },
+ { name: 'description', content: 'Welcome to React Router!' },
+ ];
+}
+
+export default function Home() {
+ return Please select a primitive from the sidebar
;
+}
diff --git a/apps/test-react-router-rsc/app/routes/label.tsx b/apps/test-react-router-rsc/app/routes/label.tsx
new file mode 100644
index 0000000000..e092e7ced7
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/label.tsx
@@ -0,0 +1,5 @@
+import * as Label from '@repo/test-registry/components/label';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/menu.tsx b/apps/test-react-router-rsc/app/routes/menu.tsx
new file mode 100644
index 0000000000..31ee3adf74
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/menu.tsx
@@ -0,0 +1,15 @@
+import * as Menu from '@repo/test-registry/components/menu';
+
+export async function ServerComponent() {
+ return (
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/apps/test-react-router-rsc/app/routes/menubar.tsx b/apps/test-react-router-rsc/app/routes/menubar.tsx
new file mode 100644
index 0000000000..325cc2ceb2
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/menubar.tsx
@@ -0,0 +1,5 @@
+import * as Menubar from '@repo/test-registry/components/menubar';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/navigation-menu.tsx b/apps/test-react-router-rsc/app/routes/navigation-menu.tsx
new file mode 100644
index 0000000000..c89989d05a
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/navigation-menu.tsx
@@ -0,0 +1,5 @@
+import * as NavigationMenu from '@repo/test-registry/components/navigation-menu';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/one-time-password-field.tsx b/apps/test-react-router-rsc/app/routes/one-time-password-field.tsx
new file mode 100644
index 0000000000..f5fedc7646
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/one-time-password-field.tsx
@@ -0,0 +1,5 @@
+import * as OneTimePasswordField from '@repo/test-registry/components/one-time-password-field';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/password-toggle-field.tsx b/apps/test-react-router-rsc/app/routes/password-toggle-field.tsx
new file mode 100644
index 0000000000..251cb8358a
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/password-toggle-field.tsx
@@ -0,0 +1,5 @@
+import * as PasswordToggleField from '@repo/test-registry/components/password-toggle-field';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/popover.tsx b/apps/test-react-router-rsc/app/routes/popover.tsx
new file mode 100644
index 0000000000..738c7ae6f3
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/popover.tsx
@@ -0,0 +1,5 @@
+import * as Popover from '@repo/test-registry/components/popover';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/popper.tsx b/apps/test-react-router-rsc/app/routes/popper.tsx
new file mode 100644
index 0000000000..4dea36a0cf
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/popper.tsx
@@ -0,0 +1,15 @@
+import * as Popper from '@repo/test-registry/components/popper';
+
+export async function ServerComponent() {
+ return (
+
+ );
+}
diff --git a/apps/test-react-router-rsc/app/routes/portal.tsx b/apps/test-react-router-rsc/app/routes/portal.tsx
new file mode 100644
index 0000000000..6ec768d0e9
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/portal.tsx
@@ -0,0 +1,13 @@
+import * as Portal from '@repo/test-registry/components/portal';
+
+export async function ServerComponent() {
+ return (
+
+ );
+}
diff --git a/apps/test-react-router-rsc/app/routes/progress.tsx b/apps/test-react-router-rsc/app/routes/progress.tsx
new file mode 100644
index 0000000000..2ed436ed80
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/progress.tsx
@@ -0,0 +1,5 @@
+import * as Progress from '@repo/test-registry/components/progress';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/radio-group.tsx b/apps/test-react-router-rsc/app/routes/radio-group.tsx
new file mode 100644
index 0000000000..ef28fd98a4
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/radio-group.tsx
@@ -0,0 +1,5 @@
+import * as RadioGroup from '@repo/test-registry/components/radio-group';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/roving-focus.tsx b/apps/test-react-router-rsc/app/routes/roving-focus.tsx
new file mode 100644
index 0000000000..79a2aeb34e
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/roving-focus.tsx
@@ -0,0 +1,12 @@
+import * as RovingFocus from '@repo/test-registry/components/roving-focus';
+
+export async function ServerComponent() {
+ return (
+ <>
+ Basic
+
+ Nested
+
+ >
+ );
+}
diff --git a/apps/test-react-router-rsc/app/routes/scroll-area.tsx b/apps/test-react-router-rsc/app/routes/scroll-area.tsx
new file mode 100644
index 0000000000..d775b735a4
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/scroll-area.tsx
@@ -0,0 +1,5 @@
+import * as ScrollArea from '@repo/test-registry/components/scroll-area';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/select.tsx b/apps/test-react-router-rsc/app/routes/select.tsx
new file mode 100644
index 0000000000..539eef1383
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/select.tsx
@@ -0,0 +1,5 @@
+import * as Select from '@repo/test-registry/components/select';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/separator.tsx b/apps/test-react-router-rsc/app/routes/separator.tsx
new file mode 100644
index 0000000000..6e00362d3f
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/separator.tsx
@@ -0,0 +1,5 @@
+import * as Separator from '@repo/test-registry/components/separator';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/slider.tsx b/apps/test-react-router-rsc/app/routes/slider.tsx
new file mode 100644
index 0000000000..e1099a9c0e
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/slider.tsx
@@ -0,0 +1,5 @@
+import * as Slider from '@repo/test-registry/components/slider';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/slot.tsx b/apps/test-react-router-rsc/app/routes/slot.tsx
new file mode 100644
index 0000000000..d96e5e2d10
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/slot.tsx
@@ -0,0 +1,5 @@
+import * as Slot from '@repo/test-registry/components/slot';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/switch.tsx b/apps/test-react-router-rsc/app/routes/switch.tsx
new file mode 100644
index 0000000000..b0a0b0d4f7
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/switch.tsx
@@ -0,0 +1,5 @@
+import * as Switch from '@repo/test-registry/components/switch';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/tabs.tsx b/apps/test-react-router-rsc/app/routes/tabs.tsx
new file mode 100644
index 0000000000..52565b7f2a
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/tabs.tsx
@@ -0,0 +1,5 @@
+import * as Tabs from '@repo/test-registry/components/tabs';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/toast.tsx b/apps/test-react-router-rsc/app/routes/toast.tsx
new file mode 100644
index 0000000000..b4c5150b35
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/toast.tsx
@@ -0,0 +1,5 @@
+import * as Toast from '@repo/test-registry/components/toast';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/toggle-group.tsx b/apps/test-react-router-rsc/app/routes/toggle-group.tsx
new file mode 100644
index 0000000000..48821f77f5
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/toggle-group.tsx
@@ -0,0 +1,5 @@
+import * as ToggleGroup from '@repo/test-registry/components/toggle-group';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/toggle.tsx b/apps/test-react-router-rsc/app/routes/toggle.tsx
new file mode 100644
index 0000000000..574eade2d6
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/toggle.tsx
@@ -0,0 +1,5 @@
+import * as Toggle from '@repo/test-registry/components/toggle';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/toolbar.tsx b/apps/test-react-router-rsc/app/routes/toolbar.tsx
new file mode 100644
index 0000000000..0985e30225
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/toolbar.tsx
@@ -0,0 +1,5 @@
+import * as Toolbar from '@repo/test-registry/components/toolbar';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/tooltip.tsx b/apps/test-react-router-rsc/app/routes/tooltip.tsx
new file mode 100644
index 0000000000..d1b4e9702e
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/tooltip.tsx
@@ -0,0 +1,5 @@
+import * as Tooltip from '@repo/test-registry/components/tooltip';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/app/routes/visually-hidden.tsx b/apps/test-react-router-rsc/app/routes/visually-hidden.tsx
new file mode 100644
index 0000000000..fff4ad3f86
--- /dev/null
+++ b/apps/test-react-router-rsc/app/routes/visually-hidden.tsx
@@ -0,0 +1,5 @@
+import * as VisuallyHidden from '@repo/test-registry/components/visually-hidden';
+
+export async function ServerComponent() {
+ return ;
+}
diff --git a/apps/test-react-router-rsc/eslint.config.js b/apps/test-react-router-rsc/eslint.config.js
new file mode 100644
index 0000000000..726acba12b
--- /dev/null
+++ b/apps/test-react-router-rsc/eslint.config.js
@@ -0,0 +1,31 @@
+// @ts-check
+import { defineConfig, globalIgnores } from 'eslint/config';
+import { configs } from '@repo/eslint-config/vite';
+
+export default defineConfig([
+ globalIgnores(['dist']),
+ ...configs,
+ {
+ rules: {
+ 'react-refresh/only-export-components': [
+ 'error',
+ {
+ allowExportNames: [
+ // https://reactrouter.com/start/framework/route-module
+ 'middleware',
+ 'clientMiddleware',
+ 'loader',
+ 'clientLoader',
+ 'action',
+ 'clientAction',
+ 'headers',
+ 'handle',
+ 'links',
+ 'meta',
+ 'shouldRevalidate',
+ ],
+ },
+ ],
+ },
+ },
+]);
diff --git a/apps/test-react-router-rsc/package.json b/apps/test-react-router-rsc/package.json
new file mode 100644
index 0000000000..464db12009
--- /dev/null
+++ b/apps/test-react-router-rsc/package.json
@@ -0,0 +1,40 @@
+{
+ "name": "@repo/test-react-router-rsc",
+ "version": "0.0.0",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "build": "react-router build",
+ "dev": "react-router dev -p 3005",
+ "start": "react-router-serve build/server/index.js",
+ "typecheck": "react-router typegen && tsc"
+ },
+ "dependencies": {
+ "@radix-ui/react-icons": "^1.3.2",
+ "@react-router/serve": "7.9.2",
+ "@remix-run/node-fetch-server": "0.9.0",
+ "@repo/test-data": "workspace:*",
+ "@repo/test-registry": "workspace:*",
+ "@repo/test-styles": "workspace:*",
+ "isbot": "^5.1.32",
+ "radix-ui": "workspace:*",
+ "react": "19.2.0",
+ "react-dom": "19.2.0",
+ "react-router": "7.9.2"
+ },
+ "devDependencies": {
+ "@react-router/dev": "7.9.2",
+ "@react-router/fs-routes": "7.9.2",
+ "@repo/eslint-config": "workspace:*",
+ "@types/node": "^22",
+ "@types/react": "^19.2.2",
+ "@types/react-dom": "^19.2.2",
+ "@vitejs/plugin-rsc": "0.4.31",
+ "eslint": "^9.38.0",
+ "eslint-plugin-react-refresh": "^0.4.22",
+ "typescript": "5.9.3",
+ "vite": "7.1.6",
+ "vite-plugin-devtools-json": "^1.0.0",
+ "vite-tsconfig-paths": "5.1.4"
+ }
+}
diff --git a/apps/test-react-router-rsc/public/favicon.ico b/apps/test-react-router-rsc/public/favicon.ico
new file mode 100644
index 0000000000..5dbdfcddcb
Binary files /dev/null and b/apps/test-react-router-rsc/public/favicon.ico differ
diff --git a/apps/test-react-router-rsc/react-router.config.ts b/apps/test-react-router-rsc/react-router.config.ts
new file mode 100644
index 0000000000..9c6ea11734
--- /dev/null
+++ b/apps/test-react-router-rsc/react-router.config.ts
@@ -0,0 +1,5 @@
+import type { Config } from "@react-router/dev/config";
+
+export default {
+ // Config options...
+} satisfies Config;
diff --git a/apps/test-react-router-rsc/tsconfig.json b/apps/test-react-router-rsc/tsconfig.json
new file mode 100644
index 0000000000..b5c602b526
--- /dev/null
+++ b/apps/test-react-router-rsc/tsconfig.json
@@ -0,0 +1,23 @@
+{
+ "include": ["**/*.ts", "**/*.tsx", "./.react-router/types/**/*"],
+ "compilerOptions": {
+ "allowImportingTsExtensions": true,
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "skipLibCheck": true,
+ "verbatimModuleSyntax": true,
+ "noEmit": true,
+ "moduleResolution": "Bundler",
+ "module": "ESNext",
+ "target": "ESNext",
+ "lib": ["ESNext", "DOM", "DOM.Iterable"],
+ "types": ["vite/client", "@vitejs/plugin-rsc/types"],
+ "jsx": "react-jsx",
+ "rootDirs": [".", "./.react-router/types"],
+ "baseUrl": ".",
+ "paths": {
+ "~/*": ["./app/*"]
+ }
+ }
+}
diff --git a/apps/test-react-router-rsc/vite.config.ts b/apps/test-react-router-rsc/vite.config.ts
new file mode 100644
index 0000000000..dcf1d639c6
--- /dev/null
+++ b/apps/test-react-router-rsc/vite.config.ts
@@ -0,0 +1,9 @@
+import { unstable_reactRouterRSC as reactRouterRSC } from '@react-router/dev/vite';
+import rsc from '@vitejs/plugin-rsc';
+import { defineConfig } from 'vite';
+import devtoolsJson from 'vite-plugin-devtools-json';
+import tsconfigPaths from 'vite-tsconfig-paths';
+
+export default defineConfig({
+ plugins: [tsconfigPaths(), reactRouterRSC(), rsc(), devtoolsJson()],
+});
diff --git a/apps/test-react-router/.dockerignore b/apps/test-react-router/.dockerignore
new file mode 100644
index 0000000000..9b8d514712
--- /dev/null
+++ b/apps/test-react-router/.dockerignore
@@ -0,0 +1,4 @@
+.react-router
+build
+node_modules
+README.md
\ No newline at end of file
diff --git a/apps/test-react-router/.gitignore b/apps/test-react-router/.gitignore
new file mode 100644
index 0000000000..039ee62d21
--- /dev/null
+++ b/apps/test-react-router/.gitignore
@@ -0,0 +1,7 @@
+.DS_Store
+.env
+/node_modules/
+
+# React Router
+/.react-router/
+/build/
diff --git a/apps/test-react-router/Dockerfile b/apps/test-react-router/Dockerfile
new file mode 100644
index 0000000000..207bf937e3
--- /dev/null
+++ b/apps/test-react-router/Dockerfile
@@ -0,0 +1,22 @@
+FROM node:20-alpine AS development-dependencies-env
+COPY . /app
+WORKDIR /app
+RUN npm ci
+
+FROM node:20-alpine AS production-dependencies-env
+COPY ./package.json package-lock.json /app/
+WORKDIR /app
+RUN npm ci --omit=dev
+
+FROM node:20-alpine AS build-env
+COPY . /app/
+COPY --from=development-dependencies-env /app/node_modules /app/node_modules
+WORKDIR /app
+RUN npm run build
+
+FROM node:20-alpine
+COPY ./package.json package-lock.json /app/
+COPY --from=production-dependencies-env /app/node_modules /app/node_modules
+COPY --from=build-env /app/build /app/build
+WORKDIR /app
+CMD ["npm", "run", "start"]
\ No newline at end of file
diff --git a/apps/test-react-router/README.md b/apps/test-react-router/README.md
new file mode 100644
index 0000000000..a0aa124416
--- /dev/null
+++ b/apps/test-react-router/README.md
@@ -0,0 +1,84 @@
+# Welcome to React Router!
+
+A modern, production-ready template for building full-stack React applications using React Router.
+
+[](https://stackblitz.com/github/remix-run/react-router-templates/tree/main/default)
+
+## Features
+
+- ๐ Server-side rendering
+- โก๏ธ Hot Module Replacement (HMR)
+- ๐ฆ Asset bundling and optimization
+- ๐ Data loading and mutations
+- ๐ TypeScript by default
+- ๐ [React Router docs](https://reactrouter.com/)
+
+## Getting Started
+
+### Installation
+
+Install the dependencies:
+
+```bash
+pnpm install
+```
+
+### Development
+
+Start the development server with HMR:
+
+```bash
+pnpm dev
+# or from the root of the repo
+pnpm dev:react-router
+```
+
+Your application will be available at `http://localhost:5173`.
+
+## Building for Production
+
+Create a production build:
+
+```bash
+pnpm build
+```
+
+## Deployment
+
+### Docker Deployment
+
+To build and run using Docker:
+
+```bash
+docker build -t my-app .
+
+# Run the container
+docker run -p 3000:3000 my-app
+```
+
+The containerized application can be deployed to any platform that supports Docker, including:
+
+- AWS ECS
+- Google Cloud Run
+- Azure Container Apps
+- Digital Ocean App Platform
+- Fly.io
+- Railway
+
+### DIY Deployment
+
+If you're familiar with deploying Node applications, the built-in app server is production-ready.
+
+Make sure to deploy the output of `npm run build`
+
+```
+โโโ package.json
+โโโ package-lock.json (or pnpm-lock.yaml, or bun.lockb)
+โโโ build/
+โ โโโ client/ # Static assets
+โ โโโ server/ # Server-side code
+```
+
+---
+
+Built with โค๏ธ using React Router.
diff --git a/apps/test-react-router/app/globals.css b/apps/test-react-router/app/globals.css
new file mode 100644
index 0000000000..9fbccd9b03
--- /dev/null
+++ b/apps/test-react-router/app/globals.css
@@ -0,0 +1,4 @@
+@import '@repo/test-styles/resets.css';
+@import '@repo/test-styles/colors.css';
+@import '@repo/test-styles/global.css';
+@import '@repo/test-styles/components.css';
diff --git a/apps/test-react-router/app/root.tsx b/apps/test-react-router/app/root.tsx
new file mode 100644
index 0000000000..3fa4e5315a
--- /dev/null
+++ b/apps/test-react-router/app/root.tsx
@@ -0,0 +1,92 @@
+import {
+ isRouteErrorResponse,
+ NavLink,
+ Links,
+ Meta,
+ Outlet,
+ Scripts,
+ ScrollRestoration,
+} from 'react-router';
+import { primitives } from '@repo/test-registry';
+import type { Route } from './+types/root';
+import './globals.css';
+
+export const links: Route.LinksFunction = () => [
+ { rel: 'preconnect', href: 'https://fonts.googleapis.com' },
+ {
+ rel: 'preconnect',
+ href: 'https://fonts.gstatic.com',
+ crossOrigin: 'anonymous',
+ },
+ {
+ rel: 'stylesheet',
+ href: 'https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap',
+ },
+];
+
+export function Layout({ children }: { children: React.ReactNode }) {
+ return (
+
+
+
+
+
+
+
+
+ React Router testing
+
+
+
Public APIs
+ {primitives.public.map((primitive) => (
+
+ {primitive.name}
+
+ ))}
+
+ Internal APIs
+ {primitives.internal.map((primitive) => (
+
+ {primitive.name}
+
+ ))}
+
+
{children}
+
+
+
+
+
+ );
+}
+
+export default function App() {
+ return ;
+}
+
+export function ErrorBoundary({ error }: Route.ErrorBoundaryProps) {
+ let message = 'Oops!';
+ let details = 'An unexpected error occurred.';
+ let stack: string | undefined;
+
+ if (isRouteErrorResponse(error)) {
+ message = error.status === 404 ? '404' : 'Error';
+ details =
+ error.status === 404 ? 'The requested page could not be found.' : error.statusText || details;
+ } else if (import.meta.env.DEV && error && error instanceof Error) {
+ details = error.message;
+ stack = error.stack;
+ }
+
+ return (
+
+ {message}
+ {details}
+ {stack && (
+
+ {stack}
+
+ )}
+
+ );
+}
diff --git a/apps/test-react-router/app/routes.ts b/apps/test-react-router/app/routes.ts
new file mode 100644
index 0000000000..ca9af6722c
--- /dev/null
+++ b/apps/test-react-router/app/routes.ts
@@ -0,0 +1,10 @@
+import { type RouteConfig, index, route } from '@react-router/dev/routes';
+import { primitives } from '@repo/test-registry';
+
+export default [
+ index('routes/index.tsx'),
+ // Public APIs
+ ...primitives.public.map((primitive) => route(primitive.id, `routes/${primitive.id}.tsx`)),
+ // Internal APIs
+ ...primitives.internal.map((primitive) => route(primitive.id, `routes/${primitive.id}.tsx`)),
+] satisfies RouteConfig;
diff --git a/apps/test-react-router/app/routes/accessible-icon.tsx b/apps/test-react-router/app/routes/accessible-icon.tsx
new file mode 100644
index 0000000000..32b248e40a
--- /dev/null
+++ b/apps/test-react-router/app/routes/accessible-icon.tsx
@@ -0,0 +1,5 @@
+import * as AccessibleIcon from '@repo/test-registry/components/accessible-icon';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/accordion.tsx b/apps/test-react-router/app/routes/accordion.tsx
new file mode 100644
index 0000000000..8b1ea7973f
--- /dev/null
+++ b/apps/test-react-router/app/routes/accordion.tsx
@@ -0,0 +1,5 @@
+import * as Accordion from '@repo/test-registry/components/accordion';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/alert-dialog.tsx b/apps/test-react-router/app/routes/alert-dialog.tsx
new file mode 100644
index 0000000000..3d978ac60d
--- /dev/null
+++ b/apps/test-react-router/app/routes/alert-dialog.tsx
@@ -0,0 +1,5 @@
+import * as AlertDialog from '@repo/test-registry/components/alert-dialog';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/arrow.tsx b/apps/test-react-router/app/routes/arrow.tsx
new file mode 100644
index 0000000000..a889e8b7ae
--- /dev/null
+++ b/apps/test-react-router/app/routes/arrow.tsx
@@ -0,0 +1,5 @@
+import * as Arrow from '@repo/test-registry/components/arrow';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/aspect-ratio.tsx b/apps/test-react-router/app/routes/aspect-ratio.tsx
new file mode 100644
index 0000000000..6a91fd4f30
--- /dev/null
+++ b/apps/test-react-router/app/routes/aspect-ratio.tsx
@@ -0,0 +1,5 @@
+import * as AspectRatio from '@repo/test-registry/components/aspect-ratio';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/avatar.tsx b/apps/test-react-router/app/routes/avatar.tsx
new file mode 100644
index 0000000000..75e98cfdfb
--- /dev/null
+++ b/apps/test-react-router/app/routes/avatar.tsx
@@ -0,0 +1,5 @@
+import * as Avatar from '@repo/test-registry/components/avatar';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/checkbox.tsx b/apps/test-react-router/app/routes/checkbox.tsx
new file mode 100644
index 0000000000..64f74ec0d1
--- /dev/null
+++ b/apps/test-react-router/app/routes/checkbox.tsx
@@ -0,0 +1,5 @@
+import * as Checkbox from '@repo/test-registry/components/checkbox';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/collapsible.tsx b/apps/test-react-router/app/routes/collapsible.tsx
new file mode 100644
index 0000000000..75b50f9f23
--- /dev/null
+++ b/apps/test-react-router/app/routes/collapsible.tsx
@@ -0,0 +1,5 @@
+import * as Collapsible from '@repo/test-registry/components/collapsible';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/collection.tsx b/apps/test-react-router/app/routes/collection.tsx
new file mode 100644
index 0000000000..1d4a406c18
--- /dev/null
+++ b/apps/test-react-router/app/routes/collection.tsx
@@ -0,0 +1,26 @@
+import {
+ Unstable,
+ UnstableItem,
+ Stable,
+ StableItem,
+} from '@repo/test-registry/components/collection';
+
+export default function Page() {
+ return (
+
+
Unstable Collection
+
+ Item 1
+ Item 2
+ Item 3
+
+
+ Stable Collection
+
+ Item 1
+ Item 2
+ Item 3
+
+
+ );
+}
diff --git a/apps/test-react-router/app/routes/context-menu.tsx b/apps/test-react-router/app/routes/context-menu.tsx
new file mode 100644
index 0000000000..b40cbe3e30
--- /dev/null
+++ b/apps/test-react-router/app/routes/context-menu.tsx
@@ -0,0 +1,5 @@
+import * as ContextMenu from '@repo/test-registry/components/context-menu';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/dialog.tsx b/apps/test-react-router/app/routes/dialog.tsx
new file mode 100644
index 0000000000..d7698910ad
--- /dev/null
+++ b/apps/test-react-router/app/routes/dialog.tsx
@@ -0,0 +1,5 @@
+import * as Dialog from '@repo/test-registry/components/dialog';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/direction.tsx b/apps/test-react-router/app/routes/direction.tsx
new file mode 100644
index 0000000000..219ba966e9
--- /dev/null
+++ b/apps/test-react-router/app/routes/direction.tsx
@@ -0,0 +1,10 @@
+import * as Direction from '@repo/test-registry/components/direction';
+
+export default function Page() {
+ return (
+
+
+
+
+ );
+}
diff --git a/apps/test-react-router/app/routes/dismissable-layer.tsx b/apps/test-react-router/app/routes/dismissable-layer.tsx
new file mode 100644
index 0000000000..cffa1af518
--- /dev/null
+++ b/apps/test-react-router/app/routes/dismissable-layer.tsx
@@ -0,0 +1,5 @@
+import * as DismissableLayer from '@repo/test-registry/components/dismissable-layer';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/dropdown-menu.tsx b/apps/test-react-router/app/routes/dropdown-menu.tsx
new file mode 100644
index 0000000000..d221b4aa83
--- /dev/null
+++ b/apps/test-react-router/app/routes/dropdown-menu.tsx
@@ -0,0 +1,5 @@
+import * as DropdownMenu from '@repo/test-registry/components/dropdown-menu';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/focus-guards.tsx b/apps/test-react-router/app/routes/focus-guards.tsx
new file mode 100644
index 0000000000..9d3845352d
--- /dev/null
+++ b/apps/test-react-router/app/routes/focus-guards.tsx
@@ -0,0 +1,5 @@
+import * as FocusGuards from '@repo/test-registry/components/focus-guards';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/focus-scope.tsx b/apps/test-react-router/app/routes/focus-scope.tsx
new file mode 100644
index 0000000000..21ca07db56
--- /dev/null
+++ b/apps/test-react-router/app/routes/focus-scope.tsx
@@ -0,0 +1,11 @@
+import * as FocusScope from '@repo/test-registry/components/focus-scope';
+
+export default function Page() {
+ return (
+
+
+
+
+
+ );
+}
diff --git a/apps/test-react-router/app/routes/form.tsx b/apps/test-react-router/app/routes/form.tsx
new file mode 100644
index 0000000000..c5c16502dc
--- /dev/null
+++ b/apps/test-react-router/app/routes/form.tsx
@@ -0,0 +1,5 @@
+import * as Form from '@repo/test-registry/components/form';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/hover-card.tsx b/apps/test-react-router/app/routes/hover-card.tsx
new file mode 100644
index 0000000000..c20fbfd51c
--- /dev/null
+++ b/apps/test-react-router/app/routes/hover-card.tsx
@@ -0,0 +1,5 @@
+import * as HoverCard from '@repo/test-registry/components/hover-card';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/index.tsx b/apps/test-react-router/app/routes/index.tsx
new file mode 100644
index 0000000000..2651384916
--- /dev/null
+++ b/apps/test-react-router/app/routes/index.tsx
@@ -0,0 +1,12 @@
+import type { Route } from './+types/index';
+
+export function meta(_args: Route.MetaArgs) {
+ return [
+ { title: 'New React Router App' },
+ { name: 'description', content: 'Welcome to React Router!' },
+ ];
+}
+
+export default function Home() {
+ return Please select a primitive from the sidebar
;
+}
diff --git a/apps/test-react-router/app/routes/label.tsx b/apps/test-react-router/app/routes/label.tsx
new file mode 100644
index 0000000000..24aac9352c
--- /dev/null
+++ b/apps/test-react-router/app/routes/label.tsx
@@ -0,0 +1,5 @@
+import * as Label from '@repo/test-registry/components/label';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/menu.tsx b/apps/test-react-router/app/routes/menu.tsx
new file mode 100644
index 0000000000..b6d40386b8
--- /dev/null
+++ b/apps/test-react-router/app/routes/menu.tsx
@@ -0,0 +1,15 @@
+import * as Menu from '@repo/test-registry/components/menu';
+
+export default function Page() {
+ return (
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/apps/test-react-router/app/routes/menubar.tsx b/apps/test-react-router/app/routes/menubar.tsx
new file mode 100644
index 0000000000..f55666a4cf
--- /dev/null
+++ b/apps/test-react-router/app/routes/menubar.tsx
@@ -0,0 +1,5 @@
+import * as Menubar from '@repo/test-registry/components/menubar';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/navigation-menu.tsx b/apps/test-react-router/app/routes/navigation-menu.tsx
new file mode 100644
index 0000000000..1cdfb0d840
--- /dev/null
+++ b/apps/test-react-router/app/routes/navigation-menu.tsx
@@ -0,0 +1,5 @@
+import * as NavigationMenu from '@repo/test-registry/components/navigation-menu';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/one-time-password-field.tsx b/apps/test-react-router/app/routes/one-time-password-field.tsx
new file mode 100644
index 0000000000..756d1d8aba
--- /dev/null
+++ b/apps/test-react-router/app/routes/one-time-password-field.tsx
@@ -0,0 +1,5 @@
+import * as OneTimePasswordField from '@repo/test-registry/components/one-time-password-field';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/password-toggle-field.tsx b/apps/test-react-router/app/routes/password-toggle-field.tsx
new file mode 100644
index 0000000000..637a53c7ab
--- /dev/null
+++ b/apps/test-react-router/app/routes/password-toggle-field.tsx
@@ -0,0 +1,5 @@
+import * as PasswordToggleField from '@repo/test-registry/components/password-toggle-field';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/popover.tsx b/apps/test-react-router/app/routes/popover.tsx
new file mode 100644
index 0000000000..69df924b59
--- /dev/null
+++ b/apps/test-react-router/app/routes/popover.tsx
@@ -0,0 +1,5 @@
+import * as Popover from '@repo/test-registry/components/popover';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/popper.tsx b/apps/test-react-router/app/routes/popper.tsx
new file mode 100644
index 0000000000..1445cb5c42
--- /dev/null
+++ b/apps/test-react-router/app/routes/popper.tsx
@@ -0,0 +1,15 @@
+import * as Popper from '@repo/test-registry/components/popper';
+
+export default function Page() {
+ return (
+
+ );
+}
diff --git a/apps/test-react-router/app/routes/portal.tsx b/apps/test-react-router/app/routes/portal.tsx
new file mode 100644
index 0000000000..a869cfdcd5
--- /dev/null
+++ b/apps/test-react-router/app/routes/portal.tsx
@@ -0,0 +1,13 @@
+import * as Portal from '@repo/test-registry/components/portal';
+
+export default function Page() {
+ return (
+
+ );
+}
diff --git a/apps/test-react-router/app/routes/progress.tsx b/apps/test-react-router/app/routes/progress.tsx
new file mode 100644
index 0000000000..1c3788f236
--- /dev/null
+++ b/apps/test-react-router/app/routes/progress.tsx
@@ -0,0 +1,5 @@
+import * as Progress from '@repo/test-registry/components/progress';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/radio-group.tsx b/apps/test-react-router/app/routes/radio-group.tsx
new file mode 100644
index 0000000000..4737c444a0
--- /dev/null
+++ b/apps/test-react-router/app/routes/radio-group.tsx
@@ -0,0 +1,5 @@
+import * as RadioGroup from '@repo/test-registry/components/radio-group';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/roving-focus.tsx b/apps/test-react-router/app/routes/roving-focus.tsx
new file mode 100644
index 0000000000..66e1cec87c
--- /dev/null
+++ b/apps/test-react-router/app/routes/roving-focus.tsx
@@ -0,0 +1,12 @@
+import * as RovingFocus from '@repo/test-registry/components/roving-focus';
+
+export default function Page() {
+ return (
+ <>
+ Basic
+
+ Nested
+
+ >
+ );
+}
diff --git a/apps/test-react-router/app/routes/scroll-area.tsx b/apps/test-react-router/app/routes/scroll-area.tsx
new file mode 100644
index 0000000000..2975e15004
--- /dev/null
+++ b/apps/test-react-router/app/routes/scroll-area.tsx
@@ -0,0 +1,5 @@
+import * as ScrollArea from '@repo/test-registry/components/scroll-area';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/select.tsx b/apps/test-react-router/app/routes/select.tsx
new file mode 100644
index 0000000000..ebab628536
--- /dev/null
+++ b/apps/test-react-router/app/routes/select.tsx
@@ -0,0 +1,5 @@
+import * as Select from '@repo/test-registry/components/select';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/separator.tsx b/apps/test-react-router/app/routes/separator.tsx
new file mode 100644
index 0000000000..befc175921
--- /dev/null
+++ b/apps/test-react-router/app/routes/separator.tsx
@@ -0,0 +1,5 @@
+import * as Separator from '@repo/test-registry/components/separator';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/slider.tsx b/apps/test-react-router/app/routes/slider.tsx
new file mode 100644
index 0000000000..f44843a0f6
--- /dev/null
+++ b/apps/test-react-router/app/routes/slider.tsx
@@ -0,0 +1,5 @@
+import * as Slider from '@repo/test-registry/components/slider';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/slot.tsx b/apps/test-react-router/app/routes/slot.tsx
new file mode 100644
index 0000000000..68d54c208a
--- /dev/null
+++ b/apps/test-react-router/app/routes/slot.tsx
@@ -0,0 +1,5 @@
+import * as Slot from '@repo/test-registry/components/slot';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/switch.tsx b/apps/test-react-router/app/routes/switch.tsx
new file mode 100644
index 0000000000..7a331ff84d
--- /dev/null
+++ b/apps/test-react-router/app/routes/switch.tsx
@@ -0,0 +1,5 @@
+import * as Switch from '@repo/test-registry/components/switch';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/tabs.tsx b/apps/test-react-router/app/routes/tabs.tsx
new file mode 100644
index 0000000000..aa763ecde8
--- /dev/null
+++ b/apps/test-react-router/app/routes/tabs.tsx
@@ -0,0 +1,5 @@
+import * as Tabs from '@repo/test-registry/components/tabs';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/toast.tsx b/apps/test-react-router/app/routes/toast.tsx
new file mode 100644
index 0000000000..e5a76bb8b3
--- /dev/null
+++ b/apps/test-react-router/app/routes/toast.tsx
@@ -0,0 +1,5 @@
+import * as Toast from '@repo/test-registry/components/toast';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/toggle-group.tsx b/apps/test-react-router/app/routes/toggle-group.tsx
new file mode 100644
index 0000000000..a7bea7f0e0
--- /dev/null
+++ b/apps/test-react-router/app/routes/toggle-group.tsx
@@ -0,0 +1,5 @@
+import * as ToggleGroup from '@repo/test-registry/components/toggle-group';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/toggle.tsx b/apps/test-react-router/app/routes/toggle.tsx
new file mode 100644
index 0000000000..df722f71cf
--- /dev/null
+++ b/apps/test-react-router/app/routes/toggle.tsx
@@ -0,0 +1,5 @@
+import * as Toggle from '@repo/test-registry/components/toggle';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/toolbar.tsx b/apps/test-react-router/app/routes/toolbar.tsx
new file mode 100644
index 0000000000..31024ad77f
--- /dev/null
+++ b/apps/test-react-router/app/routes/toolbar.tsx
@@ -0,0 +1,5 @@
+import * as Toolbar from '@repo/test-registry/components/toolbar';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/tooltip.tsx b/apps/test-react-router/app/routes/tooltip.tsx
new file mode 100644
index 0000000000..efe77a52e8
--- /dev/null
+++ b/apps/test-react-router/app/routes/tooltip.tsx
@@ -0,0 +1,5 @@
+import * as Tooltip from '@repo/test-registry/components/tooltip';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/app/routes/visually-hidden.tsx b/apps/test-react-router/app/routes/visually-hidden.tsx
new file mode 100644
index 0000000000..e20db888d1
--- /dev/null
+++ b/apps/test-react-router/app/routes/visually-hidden.tsx
@@ -0,0 +1,5 @@
+import * as VisuallyHidden from '@repo/test-registry/components/visually-hidden';
+
+export default function Page() {
+ return ;
+}
diff --git a/apps/test-react-router/eslint.config.js b/apps/test-react-router/eslint.config.js
new file mode 100644
index 0000000000..726acba12b
--- /dev/null
+++ b/apps/test-react-router/eslint.config.js
@@ -0,0 +1,31 @@
+// @ts-check
+import { defineConfig, globalIgnores } from 'eslint/config';
+import { configs } from '@repo/eslint-config/vite';
+
+export default defineConfig([
+ globalIgnores(['dist']),
+ ...configs,
+ {
+ rules: {
+ 'react-refresh/only-export-components': [
+ 'error',
+ {
+ allowExportNames: [
+ // https://reactrouter.com/start/framework/route-module
+ 'middleware',
+ 'clientMiddleware',
+ 'loader',
+ 'clientLoader',
+ 'action',
+ 'clientAction',
+ 'headers',
+ 'handle',
+ 'links',
+ 'meta',
+ 'shouldRevalidate',
+ ],
+ },
+ ],
+ },
+ },
+]);
diff --git a/apps/test-react-router/package.json b/apps/test-react-router/package.json
new file mode 100644
index 0000000000..5059283455
--- /dev/null
+++ b/apps/test-react-router/package.json
@@ -0,0 +1,38 @@
+{
+ "name": "@repo/test-react-router",
+ "version": "0.0.0",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "build": "react-router build",
+ "dev": "react-router dev -p 3004",
+ "start": "react-router-serve ./build/server/index.js",
+ "typecheck": "react-router typegen && tsc"
+ },
+ "dependencies": {
+ "@radix-ui/react-icons": "^1.3.2",
+ "@react-router/node": "^7.9.5",
+ "@react-router/serve": "^7.9.5",
+ "@repo/test-data": "workspace:*",
+ "@repo/test-registry": "workspace:*",
+ "@repo/test-styles": "workspace:*",
+ "isbot": "^5.1.32",
+ "radix-ui": "workspace:*",
+ "react": "^19.1.1",
+ "react-dom": "^19.1.1",
+ "react-router": "^7.9.5"
+ },
+ "devDependencies": {
+ "@react-router/dev": "^7.9.5",
+ "@repo/eslint-config": "workspace:*",
+ "@types/node": "^22",
+ "@types/react": "^19.2.2",
+ "@types/react-dom": "^19.2.2",
+ "eslint": "^9.38.0",
+ "eslint-plugin-react-refresh": "^0.4.22",
+ "typescript": "^5.9.3",
+ "vite": "^7.1.12",
+ "vite-plugin-devtools-json": "^1.0.0",
+ "vite-tsconfig-paths": "^5.1.4"
+ }
+}
diff --git a/apps/test-react-router/public/favicon.ico b/apps/test-react-router/public/favicon.ico
new file mode 100644
index 0000000000..5dbdfcddcb
Binary files /dev/null and b/apps/test-react-router/public/favicon.ico differ
diff --git a/apps/test-react-router/react-router.config.ts b/apps/test-react-router/react-router.config.ts
new file mode 100644
index 0000000000..6ff16f9177
--- /dev/null
+++ b/apps/test-react-router/react-router.config.ts
@@ -0,0 +1,7 @@
+import type { Config } from "@react-router/dev/config";
+
+export default {
+ // Config options...
+ // Server-side render by default, to enable SPA mode set this to `false`
+ ssr: true,
+} satisfies Config;
diff --git a/apps/test-react-router/tsconfig.json b/apps/test-react-router/tsconfig.json
new file mode 100644
index 0000000000..dc391a45f7
--- /dev/null
+++ b/apps/test-react-router/tsconfig.json
@@ -0,0 +1,27 @@
+{
+ "include": [
+ "**/*",
+ "**/.server/**/*",
+ "**/.client/**/*",
+ ".react-router/types/**/*"
+ ],
+ "compilerOptions": {
+ "lib": ["DOM", "DOM.Iterable", "ES2022"],
+ "types": ["node", "vite/client"],
+ "target": "ES2022",
+ "module": "ES2022",
+ "moduleResolution": "bundler",
+ "jsx": "react-jsx",
+ "rootDirs": [".", "./.react-router/types"],
+ "baseUrl": ".",
+ "paths": {
+ "~/*": ["./app/*"]
+ },
+ "esModuleInterop": true,
+ "verbatimModuleSyntax": true,
+ "noEmit": true,
+ "resolveJsonModule": true,
+ "skipLibCheck": true,
+ "strict": true
+ }
+}
diff --git a/apps/test-react-router/vite.config.ts b/apps/test-react-router/vite.config.ts
new file mode 100644
index 0000000000..b91e8a413b
--- /dev/null
+++ b/apps/test-react-router/vite.config.ts
@@ -0,0 +1,8 @@
+import { reactRouter } from '@react-router/dev/vite';
+import { defineConfig } from 'vite';
+import devtoolsJson from 'vite-plugin-devtools-json';
+import tsconfigPaths from 'vite-tsconfig-paths';
+
+export default defineConfig({
+ plugins: [reactRouter(), tsconfigPaths(), devtoolsJson()],
+});
diff --git a/apps/test-vite-react-17/.gitignore b/apps/test-vite-react-17/.gitignore
new file mode 100644
index 0000000000..a547bf36d8
--- /dev/null
+++ b/apps/test-vite-react-17/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/apps/test-vite-react-17/README.md b/apps/test-vite-react-17/README.md
new file mode 100644
index 0000000000..c4579af556
--- /dev/null
+++ b/apps/test-vite-react-17/README.md
@@ -0,0 +1,21 @@
+# React + TypeScript + Vite
+
+This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
+
+## Installation
+
+Install the dependencies:
+
+```bash
+pnpm install
+```
+
+## Development
+
+Start the development server with HMR:
+
+```bash
+pnpm dev
+# or from the root of the repo
+pnpm dev:vite-react-17
+```
diff --git a/apps/test-vite-react-17/eslint.config.js b/apps/test-vite-react-17/eslint.config.js
new file mode 100644
index 0000000000..90a46a235b
--- /dev/null
+++ b/apps/test-vite-react-17/eslint.config.js
@@ -0,0 +1,5 @@
+// @ts-check
+import { defineConfig, globalIgnores } from 'eslint/config';
+import { configs } from '@repo/eslint-config/vite';
+
+export default defineConfig([globalIgnores(['dist']), ...configs]);
diff --git a/apps/test-vite-react-17/index.html b/apps/test-vite-react-17/index.html
new file mode 100644
index 0000000000..f621db35a8
--- /dev/null
+++ b/apps/test-vite-react-17/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ test-vite-react-17
+
+
+
+
+
+
diff --git a/apps/test-vite-react-17/package.json b/apps/test-vite-react-17/package.json
new file mode 100644
index 0000000000..cb8e929fe8
--- /dev/null
+++ b/apps/test-vite-react-17/package.json
@@ -0,0 +1,32 @@
+{
+ "name": "@repo/test-vite-react-17",
+ "version": "0.0.0",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "dev": "vite -p 3006",
+ "build": "tsc -b && vite build",
+ "lint": "eslint .",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "@radix-ui/react-icons": "^1.3.2",
+ "@repo/test-data": "workspace:*",
+ "@repo/test-registry": "workspace:*",
+ "@repo/test-styles": "workspace:*",
+ "radix-ui": "workspace:*",
+ "react": "^17.0.2",
+ "react-dom": "^17.0.2"
+ },
+ "devDependencies": {
+ "@repo/eslint-config": "workspace:*",
+ "@types/node": "^22",
+ "@types/react": "^19.2.2",
+ "@types/react-dom": "^19.2.2",
+ "@vitejs/plugin-react": "^5.0.4",
+ "eslint": "^9.38.0",
+ "eslint-plugin-react-refresh": "^0.4.22",
+ "typescript": "~5.9.3",
+ "vite": "^7.1.12"
+ }
+}
diff --git a/apps/test-vite-react-17/public/vite.svg b/apps/test-vite-react-17/public/vite.svg
new file mode 100644
index 0000000000..e7b8dfb1b2
--- /dev/null
+++ b/apps/test-vite-react-17/public/vite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/apps/test-vite-react-17/src/app.tsx b/apps/test-vite-react-17/src/app.tsx
new file mode 100644
index 0000000000..388ce36dd5
--- /dev/null
+++ b/apps/test-vite-react-17/src/app.tsx
@@ -0,0 +1,3 @@
+export function App() {
+ return Home
;
+}
diff --git a/apps/test-vite-react-17/src/assets/react.svg b/apps/test-vite-react-17/src/assets/react.svg
new file mode 100644
index 0000000000..6c87de9bb3
--- /dev/null
+++ b/apps/test-vite-react-17/src/assets/react.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/apps/test-vite-react-17/src/globals.css b/apps/test-vite-react-17/src/globals.css
new file mode 100644
index 0000000000..9fbccd9b03
--- /dev/null
+++ b/apps/test-vite-react-17/src/globals.css
@@ -0,0 +1,4 @@
+@import '@repo/test-styles/resets.css';
+@import '@repo/test-styles/colors.css';
+@import '@repo/test-styles/global.css';
+@import '@repo/test-styles/components.css';
diff --git a/apps/test-vite-react-17/src/main.tsx b/apps/test-vite-react-17/src/main.tsx
new file mode 100644
index 0000000000..071905a46a
--- /dev/null
+++ b/apps/test-vite-react-17/src/main.tsx
@@ -0,0 +1,14 @@
+import * as React from 'react';
+import * as ReactDOM from 'react-dom';
+import { App } from './app.tsx';
+import './globals.css';
+
+const rootElement = document.getElementById('root')!;
+// @ts-expect-error
+// eslint-disable-next-line react/no-deprecated
+ReactDOM.render(
+
+
+ ,
+ rootElement,
+);
diff --git a/apps/test-vite-react-17/tsconfig.app.json b/apps/test-vite-react-17/tsconfig.app.json
new file mode 100644
index 0000000000..a9b5a59ca6
--- /dev/null
+++ b/apps/test-vite-react-17/tsconfig.app.json
@@ -0,0 +1,28 @@
+{
+ "compilerOptions": {
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
+ "target": "ES2022",
+ "useDefineForClassFields": true,
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
+ "module": "ESNext",
+ "types": ["vite/client"],
+ "skipLibCheck": true,
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "verbatimModuleSyntax": true,
+ "moduleDetection": "force",
+ "noEmit": true,
+ "jsx": "react-jsx",
+
+ /* Linting */
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "erasableSyntaxOnly": true,
+ "noFallthroughCasesInSwitch": true,
+ "noUncheckedSideEffectImports": true
+ },
+ "include": ["src"]
+}
diff --git a/apps/test-vite-react-17/tsconfig.json b/apps/test-vite-react-17/tsconfig.json
new file mode 100644
index 0000000000..1ffef600d9
--- /dev/null
+++ b/apps/test-vite-react-17/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "files": [],
+ "references": [
+ { "path": "./tsconfig.app.json" },
+ { "path": "./tsconfig.node.json" }
+ ]
+}
diff --git a/apps/test-vite-react-17/tsconfig.node.json b/apps/test-vite-react-17/tsconfig.node.json
new file mode 100644
index 0000000000..8a67f62f4c
--- /dev/null
+++ b/apps/test-vite-react-17/tsconfig.node.json
@@ -0,0 +1,26 @@
+{
+ "compilerOptions": {
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
+ "target": "ES2023",
+ "lib": ["ES2023"],
+ "module": "ESNext",
+ "types": ["node"],
+ "skipLibCheck": true,
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "verbatimModuleSyntax": true,
+ "moduleDetection": "force",
+ "noEmit": true,
+
+ /* Linting */
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "erasableSyntaxOnly": true,
+ "noFallthroughCasesInSwitch": true,
+ "noUncheckedSideEffectImports": true
+ },
+ "include": ["vite.config.ts"]
+}
diff --git a/apps/test-vite-react-17/vite.config.ts b/apps/test-vite-react-17/vite.config.ts
new file mode 100644
index 0000000000..8b0f57b91a
--- /dev/null
+++ b/apps/test-vite-react-17/vite.config.ts
@@ -0,0 +1,7 @@
+import { defineConfig } from 'vite'
+import react from '@vitejs/plugin-react'
+
+// https://vite.dev/config/
+export default defineConfig({
+ plugins: [react()],
+})
diff --git a/apps/test-vite-react-18/.gitignore b/apps/test-vite-react-18/.gitignore
new file mode 100644
index 0000000000..a547bf36d8
--- /dev/null
+++ b/apps/test-vite-react-18/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/apps/test-vite-react-18/README.md b/apps/test-vite-react-18/README.md
new file mode 100644
index 0000000000..baf67d8b3c
--- /dev/null
+++ b/apps/test-vite-react-18/README.md
@@ -0,0 +1,21 @@
+# React + TypeScript + Vite
+
+This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
+
+## Installation
+
+Install the dependencies:
+
+```bash
+pnpm install
+```
+
+## Development
+
+Start the development server with HMR:
+
+```bash
+pnpm dev
+# or from the root of the repo
+pnpm dev:vite-react-18
+```
diff --git a/apps/test-vite-react-18/eslint.config.js b/apps/test-vite-react-18/eslint.config.js
new file mode 100644
index 0000000000..90a46a235b
--- /dev/null
+++ b/apps/test-vite-react-18/eslint.config.js
@@ -0,0 +1,5 @@
+// @ts-check
+import { defineConfig, globalIgnores } from 'eslint/config';
+import { configs } from '@repo/eslint-config/vite';
+
+export default defineConfig([globalIgnores(['dist']), ...configs]);
diff --git a/apps/test-vite-react-18/index.html b/apps/test-vite-react-18/index.html
new file mode 100644
index 0000000000..7bc904ec6c
--- /dev/null
+++ b/apps/test-vite-react-18/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ test-vite-react-18
+
+
+
+
+
+
diff --git a/apps/test-vite-react-18/package.json b/apps/test-vite-react-18/package.json
new file mode 100644
index 0000000000..8ff98038de
--- /dev/null
+++ b/apps/test-vite-react-18/package.json
@@ -0,0 +1,32 @@
+{
+ "name": "@repo/test-vite-react-18",
+ "version": "0.0.0",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "dev": "vite -p 3007",
+ "build": "tsc -b && vite build",
+ "lint": "eslint .",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "@radix-ui/react-icons": "^1.3.2",
+ "@repo/test-data": "workspace:*",
+ "@repo/test-registry": "workspace:*",
+ "@repo/test-styles": "workspace:*",
+ "radix-ui": "workspace:*",
+ "react": "^18.3.1",
+ "react-dom": "^18.3.1"
+ },
+ "devDependencies": {
+ "@repo/eslint-config": "workspace:*",
+ "@types/node": "^22",
+ "@types/react": "^19.2.2",
+ "@types/react-dom": "^19.2.2",
+ "@vitejs/plugin-react": "^5.0.4",
+ "eslint": "^9.38.0",
+ "eslint-plugin-react-refresh": "^0.4.22",
+ "typescript": "~5.9.3",
+ "vite": "^7.1.12"
+ }
+}
diff --git a/apps/test-vite-react-18/public/vite.svg b/apps/test-vite-react-18/public/vite.svg
new file mode 100644
index 0000000000..e7b8dfb1b2
--- /dev/null
+++ b/apps/test-vite-react-18/public/vite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/apps/test-vite-react-18/src/app.tsx b/apps/test-vite-react-18/src/app.tsx
new file mode 100644
index 0000000000..388ce36dd5
--- /dev/null
+++ b/apps/test-vite-react-18/src/app.tsx
@@ -0,0 +1,3 @@
+export function App() {
+ return Home
;
+}
diff --git a/apps/test-vite-react-18/src/assets/react.svg b/apps/test-vite-react-18/src/assets/react.svg
new file mode 100644
index 0000000000..6c87de9bb3
--- /dev/null
+++ b/apps/test-vite-react-18/src/assets/react.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/apps/test-vite-react-18/src/globals.css b/apps/test-vite-react-18/src/globals.css
new file mode 100644
index 0000000000..9fbccd9b03
--- /dev/null
+++ b/apps/test-vite-react-18/src/globals.css
@@ -0,0 +1,4 @@
+@import '@repo/test-styles/resets.css';
+@import '@repo/test-styles/colors.css';
+@import '@repo/test-styles/global.css';
+@import '@repo/test-styles/components.css';
diff --git a/apps/test-vite-react-18/src/main.tsx b/apps/test-vite-react-18/src/main.tsx
new file mode 100644
index 0000000000..df6f3a83ef
--- /dev/null
+++ b/apps/test-vite-react-18/src/main.tsx
@@ -0,0 +1,10 @@
+import { StrictMode } from 'react';
+import { createRoot } from 'react-dom/client';
+import { App } from './app.tsx';
+import './globals.css';
+
+createRoot(document.getElementById('root')!).render(
+
+
+ ,
+);
diff --git a/apps/test-vite-react-18/tsconfig.app.json b/apps/test-vite-react-18/tsconfig.app.json
new file mode 100644
index 0000000000..a9b5a59ca6
--- /dev/null
+++ b/apps/test-vite-react-18/tsconfig.app.json
@@ -0,0 +1,28 @@
+{
+ "compilerOptions": {
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
+ "target": "ES2022",
+ "useDefineForClassFields": true,
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
+ "module": "ESNext",
+ "types": ["vite/client"],
+ "skipLibCheck": true,
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "verbatimModuleSyntax": true,
+ "moduleDetection": "force",
+ "noEmit": true,
+ "jsx": "react-jsx",
+
+ /* Linting */
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "erasableSyntaxOnly": true,
+ "noFallthroughCasesInSwitch": true,
+ "noUncheckedSideEffectImports": true
+ },
+ "include": ["src"]
+}
diff --git a/apps/test-vite-react-18/tsconfig.json b/apps/test-vite-react-18/tsconfig.json
new file mode 100644
index 0000000000..1ffef600d9
--- /dev/null
+++ b/apps/test-vite-react-18/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "files": [],
+ "references": [
+ { "path": "./tsconfig.app.json" },
+ { "path": "./tsconfig.node.json" }
+ ]
+}
diff --git a/apps/test-vite-react-18/tsconfig.node.json b/apps/test-vite-react-18/tsconfig.node.json
new file mode 100644
index 0000000000..8a67f62f4c
--- /dev/null
+++ b/apps/test-vite-react-18/tsconfig.node.json
@@ -0,0 +1,26 @@
+{
+ "compilerOptions": {
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
+ "target": "ES2023",
+ "lib": ["ES2023"],
+ "module": "ESNext",
+ "types": ["node"],
+ "skipLibCheck": true,
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "verbatimModuleSyntax": true,
+ "moduleDetection": "force",
+ "noEmit": true,
+
+ /* Linting */
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "erasableSyntaxOnly": true,
+ "noFallthroughCasesInSwitch": true,
+ "noUncheckedSideEffectImports": true
+ },
+ "include": ["vite.config.ts"]
+}
diff --git a/apps/test-vite-react-18/vite.config.ts b/apps/test-vite-react-18/vite.config.ts
new file mode 100644
index 0000000000..8b0f57b91a
--- /dev/null
+++ b/apps/test-vite-react-18/vite.config.ts
@@ -0,0 +1,7 @@
+import { defineConfig } from 'vite'
+import react from '@vitejs/plugin-react'
+
+// https://vite.dev/config/
+export default defineConfig({
+ plugins: [react()],
+})
diff --git a/apps/test-vite-react-19/.gitignore b/apps/test-vite-react-19/.gitignore
new file mode 100644
index 0000000000..a547bf36d8
--- /dev/null
+++ b/apps/test-vite-react-19/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/apps/test-vite-react-19/README.md b/apps/test-vite-react-19/README.md
new file mode 100644
index 0000000000..a7f7c36d42
--- /dev/null
+++ b/apps/test-vite-react-19/README.md
@@ -0,0 +1,21 @@
+# React + TypeScript + Vite
+
+This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
+
+## Installation
+
+Install the dependencies:
+
+```bash
+pnpm install
+```
+
+## Development
+
+Start the development server with HMR:
+
+```bash
+pnpm dev
+# or from the root of the repo
+pnpm dev:vite-react-19
+```
diff --git a/apps/test-vite-react-19/eslint.config.js b/apps/test-vite-react-19/eslint.config.js
new file mode 100644
index 0000000000..90a46a235b
--- /dev/null
+++ b/apps/test-vite-react-19/eslint.config.js
@@ -0,0 +1,5 @@
+// @ts-check
+import { defineConfig, globalIgnores } from 'eslint/config';
+import { configs } from '@repo/eslint-config/vite';
+
+export default defineConfig([globalIgnores(['dist']), ...configs]);
diff --git a/apps/test-vite-react-19/index.html b/apps/test-vite-react-19/index.html
new file mode 100644
index 0000000000..c2c866da32
--- /dev/null
+++ b/apps/test-vite-react-19/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ test-vite-react-19
+
+
+
+
+
+
diff --git a/apps/test-vite-react-19/package.json b/apps/test-vite-react-19/package.json
new file mode 100644
index 0000000000..837b3d24ab
--- /dev/null
+++ b/apps/test-vite-react-19/package.json
@@ -0,0 +1,32 @@
+{
+ "name": "@repo/test-vite-react-19",
+ "version": "0.0.0",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "dev": "vite -p 3008",
+ "build": "tsc -b && vite build",
+ "lint": "eslint .",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "@radix-ui/react-icons": "^1.3.2",
+ "@repo/test-data": "workspace:*",
+ "@repo/test-registry": "workspace:*",
+ "@repo/test-styles": "workspace:*",
+ "radix-ui": "workspace:*",
+ "react": "^19.1.1",
+ "react-dom": "^19.1.1"
+ },
+ "devDependencies": {
+ "@repo/eslint-config": "workspace:*",
+ "@types/node": "^22",
+ "@types/react": "^19.2.2",
+ "@types/react-dom": "^19.2.2",
+ "@vitejs/plugin-react": "^5.0.4",
+ "eslint": "^9.38.0",
+ "eslint-plugin-react-refresh": "^0.4.22",
+ "typescript": "~5.9.3",
+ "vite": "^7.1.12"
+ }
+}
diff --git a/apps/test-vite-react-19/public/vite.svg b/apps/test-vite-react-19/public/vite.svg
new file mode 100644
index 0000000000..e7b8dfb1b2
--- /dev/null
+++ b/apps/test-vite-react-19/public/vite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/apps/test-vite-react-19/src/app.tsx b/apps/test-vite-react-19/src/app.tsx
new file mode 100644
index 0000000000..388ce36dd5
--- /dev/null
+++ b/apps/test-vite-react-19/src/app.tsx
@@ -0,0 +1,3 @@
+export function App() {
+ return Home
;
+}
diff --git a/apps/test-vite-react-19/src/assets/react.svg b/apps/test-vite-react-19/src/assets/react.svg
new file mode 100644
index 0000000000..6c87de9bb3
--- /dev/null
+++ b/apps/test-vite-react-19/src/assets/react.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/apps/test-vite-react-19/src/globals.css b/apps/test-vite-react-19/src/globals.css
new file mode 100644
index 0000000000..9fbccd9b03
--- /dev/null
+++ b/apps/test-vite-react-19/src/globals.css
@@ -0,0 +1,4 @@
+@import '@repo/test-styles/resets.css';
+@import '@repo/test-styles/colors.css';
+@import '@repo/test-styles/global.css';
+@import '@repo/test-styles/components.css';
diff --git a/apps/test-vite-react-19/src/main.tsx b/apps/test-vite-react-19/src/main.tsx
new file mode 100644
index 0000000000..df6f3a83ef
--- /dev/null
+++ b/apps/test-vite-react-19/src/main.tsx
@@ -0,0 +1,10 @@
+import { StrictMode } from 'react';
+import { createRoot } from 'react-dom/client';
+import { App } from './app.tsx';
+import './globals.css';
+
+createRoot(document.getElementById('root')!).render(
+
+
+ ,
+);
diff --git a/apps/test-vite-react-19/tsconfig.app.json b/apps/test-vite-react-19/tsconfig.app.json
new file mode 100644
index 0000000000..a9b5a59ca6
--- /dev/null
+++ b/apps/test-vite-react-19/tsconfig.app.json
@@ -0,0 +1,28 @@
+{
+ "compilerOptions": {
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
+ "target": "ES2022",
+ "useDefineForClassFields": true,
+ "lib": ["ES2022", "DOM", "DOM.Iterable"],
+ "module": "ESNext",
+ "types": ["vite/client"],
+ "skipLibCheck": true,
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "verbatimModuleSyntax": true,
+ "moduleDetection": "force",
+ "noEmit": true,
+ "jsx": "react-jsx",
+
+ /* Linting */
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "erasableSyntaxOnly": true,
+ "noFallthroughCasesInSwitch": true,
+ "noUncheckedSideEffectImports": true
+ },
+ "include": ["src"]
+}
diff --git a/apps/test-vite-react-19/tsconfig.json b/apps/test-vite-react-19/tsconfig.json
new file mode 100644
index 0000000000..1ffef600d9
--- /dev/null
+++ b/apps/test-vite-react-19/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "files": [],
+ "references": [
+ { "path": "./tsconfig.app.json" },
+ { "path": "./tsconfig.node.json" }
+ ]
+}
diff --git a/apps/test-vite-react-19/tsconfig.node.json b/apps/test-vite-react-19/tsconfig.node.json
new file mode 100644
index 0000000000..8a67f62f4c
--- /dev/null
+++ b/apps/test-vite-react-19/tsconfig.node.json
@@ -0,0 +1,26 @@
+{
+ "compilerOptions": {
+ "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
+ "target": "ES2023",
+ "lib": ["ES2023"],
+ "module": "ESNext",
+ "types": ["node"],
+ "skipLibCheck": true,
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "verbatimModuleSyntax": true,
+ "moduleDetection": "force",
+ "noEmit": true,
+
+ /* Linting */
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "erasableSyntaxOnly": true,
+ "noFallthroughCasesInSwitch": true,
+ "noUncheckedSideEffectImports": true
+ },
+ "include": ["vite.config.ts"]
+}
diff --git a/apps/test-vite-react-19/vite.config.ts b/apps/test-vite-react-19/vite.config.ts
new file mode 100644
index 0000000000..8b0f57b91a
--- /dev/null
+++ b/apps/test-vite-react-19/vite.config.ts
@@ -0,0 +1,7 @@
+import { defineConfig } from 'vite'
+import react from '@vitejs/plugin-react'
+
+// https://vite.dev/config/
+export default defineConfig({
+ plugins: [react()],
+})
diff --git a/apps/ssr-testing/app/accessible-icon/page.tsx b/internal/test-registry/components/accessible-icon.tsx
similarity index 67%
rename from apps/ssr-testing/app/accessible-icon/page.tsx
rename to internal/test-registry/components/accessible-icon.tsx
index b6ad8fe79f..bda1c1789f 100644
--- a/apps/ssr-testing/app/accessible-icon/page.tsx
+++ b/internal/test-registry/components/accessible-icon.tsx
@@ -1,11 +1,12 @@
import * as React from 'react';
+import { Cross1Icon } from '@radix-ui/react-icons';
import { AccessibleIcon } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
- X
+
);
diff --git a/apps/ssr-testing/app/accordion/page.tsx b/internal/test-registry/components/accordion.tsx
similarity index 51%
rename from apps/ssr-testing/app/accordion/page.tsx
rename to internal/test-registry/components/accordion.tsx
index af20e290d8..14f8b9f4f1 100644
--- a/apps/ssr-testing/app/accordion/page.tsx
+++ b/internal/test-registry/components/accordion.tsx
@@ -1,42 +1,42 @@
import * as React from 'react';
import { Accordion } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
-
-
-
- One
+
+
+
+ One
-
+
Per erat orci nostra luctus sociosqu mus risus penatibus, duis elit vulputate viverra
integer ullamcorper congue curabitur sociis, nisi malesuada scelerisque quam suscipit
habitant sed.
-
-
- Two
+
+
+ Two
-
+
Cursus sed mattis commodo fermentum conubia ipsum pulvinar sagittis, diam eget bibendum
porta nascetur ac dictum, leo tellus dis integer platea ultrices mi.
-
-
- Three (disabled)
+
+
+ Three (disabled)
-
+
Sociis hac sapien turpis conubia sagittis justo dui, inceptos penatibus feugiat himenaeos
euismod magna, nec tempor pulvinar eu etiam mattis.
-
-
- Four
+
+
+ Four
-
+
Odio placerat quisque sapien sagittis non sociis ligula penatibus dignissim vitae, enim
vulputate nullam semper potenti etiam volutpat libero.
Cool
diff --git a/apps/ssr-testing/app/alert-dialog/page.tsx b/internal/test-registry/components/alert-dialog.tsx
similarity index 95%
rename from apps/ssr-testing/app/alert-dialog/page.tsx
rename to internal/test-registry/components/alert-dialog.tsx
index be897f8ea6..bd79d9532e 100644
--- a/apps/ssr-testing/app/alert-dialog/page.tsx
+++ b/internal/test-registry/components/alert-dialog.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { AlertDialog } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
delete everything
diff --git a/internal/test-registry/components/arrow.tsx b/internal/test-registry/components/arrow.tsx
new file mode 100644
index 0000000000..9a4c2eb31b
--- /dev/null
+++ b/internal/test-registry/components/arrow.tsx
@@ -0,0 +1,6 @@
+import * as React from 'react';
+import { Arrow } from 'radix-ui/internal';
+
+export function Basic() {
+ return ;
+}
diff --git a/internal/test-registry/components/aspect-ratio.tsx b/internal/test-registry/components/aspect-ratio.tsx
new file mode 100644
index 0000000000..ce477b7d81
--- /dev/null
+++ b/internal/test-registry/components/aspect-ratio.tsx
@@ -0,0 +1,24 @@
+import * as React from 'react';
+import { AspectRatio } from 'radix-ui';
+
+export function Basic() {
+ return (
+
+
+
+
+
+ );
+}
diff --git a/apps/ssr-testing/app/avatar/page.tsx b/internal/test-registry/components/avatar.tsx
similarity index 87%
rename from apps/ssr-testing/app/avatar/page.tsx
rename to internal/test-registry/components/avatar.tsx
index 64faea3bc6..bc84b67f1d 100644
--- a/apps/ssr-testing/app/avatar/page.tsx
+++ b/internal/test-registry/components/avatar.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { Avatar } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
A
diff --git a/apps/ssr-testing/app/checkbox/page.tsx b/internal/test-registry/components/checkbox.tsx
similarity index 84%
rename from apps/ssr-testing/app/checkbox/page.tsx
rename to internal/test-registry/components/checkbox.tsx
index 5d76ebb2be..66f29158b6 100644
--- a/apps/ssr-testing/app/checkbox/page.tsx
+++ b/internal/test-registry/components/checkbox.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { Checkbox } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
[ โ ]
diff --git a/apps/ssr-testing/app/collapsible/page.tsx b/internal/test-registry/components/collapsible.tsx
similarity index 88%
rename from apps/ssr-testing/app/collapsible/page.tsx
rename to internal/test-registry/components/collapsible.tsx
index 53c0ead329..d4545eace9 100644
--- a/apps/ssr-testing/app/collapsible/page.tsx
+++ b/internal/test-registry/components/collapsible.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { Collapsible } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
Trigger
diff --git a/internal/test-registry/components/collection.tsx b/internal/test-registry/components/collection.tsx
new file mode 100644
index 0000000000..29060e37aa
--- /dev/null
+++ b/internal/test-registry/components/collection.tsx
@@ -0,0 +1,103 @@
+'use client';
+import * as React from 'react';
+import { Collection as CollectionPrimitive } from 'radix-ui/internal';
+import type { Context } from 'radix-ui/internal';
+
+const ElementHashMap = new WeakMap();
+
+const [
+ UnstableCollection,
+ {
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ useCollection: useUnstableCollection,
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ createCollectionScope: createUnstableCollectionScope,
+ useInitCollection: useInitUnstableCollection,
+ },
+] = CollectionPrimitive.unstable_createCollection<
+ HTMLDivElement,
+ {
+ test: number;
+ // TODO: remove when package is updated to extend BaseItemData internally
+ id?: string;
+ }
+>('UNSTABLE');
+
+const [
+ Collection,
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ useCollection,
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ createCollectionScope,
+] = CollectionPrimitive.createCollection('STABLE');
+
+type ScopedProps = P & { __scopeCollection?: Context.Scope };
+
+export function Unstable(props: ScopedProps<{ children: React.ReactNode }>) {
+ const collectionState = useInitUnstableCollection();
+ const [collection] = collectionState;
+
+ return (
+
+ {collection.size ? (
+
+ {Array.from(collection).map(([element, { element: _, ...data }]) => {
+ let key = ElementHashMap.get(element);
+ if (!key) {
+ key = crypto.randomUUID();
+ }
+ return (
+
+ Item content: {element.textContent}
+ Item data: {JSON.stringify(data)}
+
+ );
+ })}
+
+ ) : (
+
No items in collection
+ )}
+
+
+
+ {props.children}
+
+
+
+ );
+}
+
+export function UnstableItem(props: ScopedProps<{ children: React.ReactNode }>) {
+ return (
+
+ {props.children}
+
+ );
+}
+
+export function Stable(props: ScopedProps<{ children: React.ReactNode }>) {
+ return (
+
+
+ {props.children}
+
+
+ );
+}
+
+export function StableItem(props: ScopedProps<{ children: React.ReactNode }>) {
+ return (
+
+ {props.children}
+
+ );
+}
+
+function getElementKey(element: HTMLDivElement) {
+ let key = ElementHashMap.get(element);
+ if (!key) {
+ key = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
+ ElementHashMap.set(element, key);
+ }
+ return key;
+}
diff --git a/apps/ssr-testing/app/context-menu/page.tsx b/internal/test-registry/components/context-menu.tsx
similarity index 95%
rename from apps/ssr-testing/app/context-menu/page.tsx
rename to internal/test-registry/components/context-menu.tsx
index 5dc7fd0bb7..0169cd0c3f 100644
--- a/apps/ssr-testing/app/context-menu/page.tsx
+++ b/internal/test-registry/components/context-menu.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { ContextMenu } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
Right click here
diff --git a/apps/ssr-testing/app/dialog/page.tsx b/internal/test-registry/components/dialog.tsx
similarity index 93%
rename from apps/ssr-testing/app/dialog/page.tsx
rename to internal/test-registry/components/dialog.tsx
index 7df2aa8b3e..a15587e751 100644
--- a/apps/ssr-testing/app/dialog/page.tsx
+++ b/internal/test-registry/components/dialog.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { Dialog } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
open
diff --git a/internal/test-registry/components/direction.tsx b/internal/test-registry/components/direction.tsx
new file mode 100644
index 0000000000..3d2a9bb471
--- /dev/null
+++ b/internal/test-registry/components/direction.tsx
@@ -0,0 +1,16 @@
+'use client';
+import * as React from 'react';
+import { Direction } from 'radix-ui';
+
+export function Basic({ dir }: { dir: 'ltr' | 'rtl' }) {
+ return (
+
+
+
+ );
+}
+
+function DirectionReader() {
+ const dir = Direction.useDirection();
+ return Direction is {dir}
;
+}
diff --git a/internal/test-registry/components/dismissable-layer.tsx b/internal/test-registry/components/dismissable-layer.tsx
new file mode 100644
index 0000000000..c8b3041cc9
--- /dev/null
+++ b/internal/test-registry/components/dismissable-layer.tsx
@@ -0,0 +1,64 @@
+'use client';
+import * as React from 'react';
+import { DismissableLayer as DismissableLayerPrimitive } from 'radix-ui/internal';
+
+export function Basic() {
+ const [key, setKey] = React.useState('');
+ return (
+
+ setKey(window.crypto.randomUUID())}>
+ Reset State
+
+
+
+
+ );
+}
+
+function DismissableLayerImpl() {
+ const [disableOutsidePointerEvents, setDisableOutsidePointerEvents] = React.useState(false);
+ const [dismissed, setDismissed] = React.useState(false);
+ return (
+
+ {dismissed &&
Dismissed!
}
+
+
+
{
+ console.log('escape key down', event);
+ }}
+ onPointerDownOutside={(event) => {
+ console.log('pointer down outside', event);
+ }}
+ onFocusOutside={(event) => {
+ console.log('focus outside', event);
+ }}
+ onInteractOutside={(event) => {
+ console.log('interact outside', event);
+ }}
+ onDismiss={() => {
+ setDismissed(true);
+ console.log('dismiss');
+ }}
+ >
+
+
Hello!
+
+
+ setDisableOutsidePointerEvents(
+ (disableOutsidePointerEvents) => !disableOutsidePointerEvents,
+ )
+ }
+ />
+ Disable Outside Pointer Events
+
+
+
+
+ );
+}
diff --git a/apps/ssr-testing/app/dropdown-menu/page.tsx b/internal/test-registry/components/dropdown-menu.tsx
similarity index 95%
rename from apps/ssr-testing/app/dropdown-menu/page.tsx
rename to internal/test-registry/components/dropdown-menu.tsx
index 2a0d494f92..b5cf8a897e 100644
--- a/apps/ssr-testing/app/dropdown-menu/page.tsx
+++ b/internal/test-registry/components/dropdown-menu.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { DropdownMenu } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
Open
diff --git a/internal/test-registry/components/focus-guards.tsx b/internal/test-registry/components/focus-guards.tsx
new file mode 100644
index 0000000000..8d782690b8
--- /dev/null
+++ b/internal/test-registry/components/focus-guards.tsx
@@ -0,0 +1,27 @@
+'use client';
+import * as React from 'react';
+import { FocusGuards as FocusGuardsPrimitive } from 'radix-ui/internal';
+
+export function Basic() {
+ const [disabled, setDisabled] = React.useState(false);
+ return (
+
+
setDisabled((disabled) => !disabled)}>
+ {disabled ? 'Enable' : 'Disable'} Focus Guards
+
+
+
+
+
+ );
+}
+
+function FocusGuards({ children, disabled }: { children: React.ReactNode; disabled: boolean }) {
+ return disabled ? (
+ children
+ ) : (
+ {children}
+ );
+}
diff --git a/internal/test-registry/components/focus-scope.tsx b/internal/test-registry/components/focus-scope.tsx
new file mode 100644
index 0000000000..b52934ca20
--- /dev/null
+++ b/internal/test-registry/components/focus-scope.tsx
@@ -0,0 +1,263 @@
+'use client';
+import React from 'react';
+import { FocusScope } from 'radix-ui/internal';
+
+export function Basic() {
+ const [trapped, setTrapped] = React.useState(false);
+ const [hasDestroyButton, setHasDestroyButton] = React.useState(true);
+
+ return (
+ <>
+
+ setTrapped(true)}>
+ Trap
+ {' '}
+
+
+ {trapped ? (
+
+
+
+ ) : null}
+
+
+
+ >
+ );
+}
+
+export function Multiple() {
+ const [trapped1, setTrapped1] = React.useState(false);
+ const [trapped2, setTrapped2] = React.useState(false);
+
+ return (
+
+
+ setTrapped1(true)}>
+ Trap 1
+
+
+ {trapped1 ? (
+
+
+
+ ) : null}
+
+
+ setTrapped2(true)}>
+ Trap 2
+
+
+ {trapped2 ? (
+
+
+
+ ) : null}
+
+
+
+
+ );
+}
+
+// true => default focus, false => no focus, ref => focus element
+type FocusParam = boolean | React.RefObject;
+
+export const WithOptions = () => {
+ const [open, setOpen] = React.useState(false);
+ const [isEmptyForm, setIsEmptyForm] = React.useState(false);
+
+ const [trapFocus, setTrapFocus] = React.useState(false);
+ const [focusOnMount, setFocusOnMount] = React.useState(false);
+ const [focusOnUnmount, setFocusOnUnmount] = React.useState(false);
+
+ const ageFieldRef = React.useRef(null);
+ const nextButtonRef = React.useRef(null);
+
+ return (
+
+ );
+};
diff --git a/apps/ssr-testing/app/form/page.tsx b/internal/test-registry/components/form.tsx
similarity index 92%
rename from apps/ssr-testing/app/form/page.tsx
rename to internal/test-registry/components/form.tsx
index 119722f486..ea62cea12d 100644
--- a/apps/ssr-testing/app/form/page.tsx
+++ b/internal/test-registry/components/form.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { Form } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
diff --git a/apps/ssr-testing/app/hover-card/page.tsx b/internal/test-registry/components/hover-card.tsx
similarity index 91%
rename from apps/ssr-testing/app/hover-card/page.tsx
rename to internal/test-registry/components/hover-card.tsx
index 2f4da36ea6..de6c9620f5 100644
--- a/apps/ssr-testing/app/hover-card/page.tsx
+++ b/internal/test-registry/components/hover-card.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { HoverCard } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
Hover me
diff --git a/apps/ssr-testing/app/label/page.tsx b/internal/test-registry/components/label.tsx
similarity index 76%
rename from apps/ssr-testing/app/label/page.tsx
rename to internal/test-registry/components/label.tsx
index 2ca477956e..62dc3938b3 100644
--- a/apps/ssr-testing/app/label/page.tsx
+++ b/internal/test-registry/components/label.tsx
@@ -1,6 +1,6 @@
import * as React from 'react';
import { Label } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return Label ;
}
diff --git a/internal/test-registry/components/menu.tsx b/internal/test-registry/components/menu.tsx
new file mode 100644
index 0000000000..d2915e1e8b
--- /dev/null
+++ b/internal/test-registry/components/menu.tsx
@@ -0,0 +1,393 @@
+'use client';
+import * as React from 'react';
+import { Direction } from 'radix-ui';
+import { Menu } from 'radix-ui/internal';
+import { foodGroups } from '@repo/test-data/foods';
+
+export function Basic() {
+ const [animated, setAnimated] = React.useState(false);
+ return (
+
+
+ setAnimated(event.currentTarget.checked)}
+ />
+ Animated
+
+
+
+ window.alert('undo')}>
+ Undo
+
+ window.alert('redo')}>
+ Redo
+
+
+ window.alert('cut')}>
+ Cut
+
+ window.alert('copy')}>
+ Copy
+
+ window.alert('paste')}>
+ Paste
+
+
+
+ );
+}
+
+export function Submenus() {
+ const [open1, setOpen1] = React.useState(false);
+ const [open2, setOpen2] = React.useState(false);
+ const [open3, setOpen3] = React.useState(false);
+ const [open4, setOpen4] = React.useState(false);
+ const [rtl, setRtl] = React.useState(false);
+ const [animated, setAnimated] = React.useState(false);
+
+ React.useEffect(() => {
+ if (rtl) {
+ document.documentElement.setAttribute('dir', 'rtl');
+ return () => document.documentElement.removeAttribute('dir');
+ }
+ }, [rtl]);
+
+ return (
+
+
+
+ setRtl(event.currentTarget.checked)}
+ />
+ Right-to-left
+
+
+ setAnimated(event.currentTarget.checked)}
+ />
+ Animated
+
+
+
+ window.alert('undo')}>
+ Undo
+
+
+
+ Disabled
+
+ window.alert('one')}>
+ One
+
+
+ window.alert('one')}>
+ One
+
+ window.alert('two')}>
+ Two
+
+ window.alert('three')}>
+ Three
+
+ window.alert('four')}>
+ Four
+
+ window.alert('five')}>
+ Five
+
+ window.alert('six')}>
+ Six
+
+
+
+ window.alert('one')}>
+ One
+
+ window.alert('two')}>
+ Two
+
+ window.alert('three')}>
+ Three
+
+
+ window.alert('two')}>Two
+
+ window.alert('one')}>
+ One
+
+ window.alert('two')}>
+ Two
+
+ window.alert('three')}>
+ Three
+
+
+ window.alert('three')}>
+ Three
+
+
+
+
+ window.alert('cut')}>
+ Cut
+
+ window.alert('copy')}>
+ Copy
+
+ window.alert('paste')}>
+ Paste
+
+
+
+ );
+}
+
+export function WithLabels() {
+ return (
+
+ {foodGroups.map((foodGroup, index) => (
+
+ {foodGroup.label && (
+
+ {foodGroup.label}
+
+ )}
+ {foodGroup.foods.map((food) => (
+ window.alert(food.label)}
+ className="MenuItem"
+ >
+ {food.label}
+
+ ))}
+ {index < foodGroups.length - 1 && }
+
+ ))}
+
+ );
+}
+
+const suits = [
+ { emoji: 'โฅ๏ธ', label: 'Hearts' },
+ { emoji: 'โ ๏ธ', label: 'Spades' },
+ { emoji: 'โฆ๏ธ', label: 'Diamonds' },
+ { emoji: 'โฃ๏ธ', label: 'Clubs' },
+];
+
+export function Typeahead() {
+ return (
+ <>
+ Testing ground for typeahead behavior
+
+
+
Text labels
+
+
For comparison try the closed select below
+
+ {foodGroups.map((foodGroup, index) => (
+
+ {foodGroup.foods.map((food) => (
+
+ {food.label}
+
+ ))}
+
+ ))}
+
+
+
+
+
+
+
Complex children
+
(relying on `.textContent` โ default)
+
+ {suits.map((suit) => (
+
+ {suit.label}
+
+ {suit.emoji}
+
+
+ ))}
+
+
+
+
+
Complex children
+
(with explicit `textValue` prop)
+
+ {suits.map((suit) => (
+
+
+ {suit.emoji}
+
+ {suit.label}
+
+ ))}
+
+
+
+ >
+ );
+}
+
+export function CheckboxItems() {
+ const options = ['Crows', 'Ravens', 'Magpies', 'Jackdaws'];
+
+ const [selection, setSelection] = React.useState([]);
+
+ const handleSelectAll = () => {
+ setSelection((currentSelection) => (currentSelection.length === options.length ? [] : options));
+ };
+
+ return (
+
+
+ Select all
+
+ {selection.length === options.length ? : 'โ'}
+
+
+
+ {options.map((option) => (
+
+ setSelection((current) =>
+ current.includes(option)
+ ? current.filter((el) => el !== option)
+ : current.concat(option),
+ )
+ }
+ >
+ {option}
+
+
+
+
+ ))}
+
+ );
+}
+
+export function RadioItems() {
+ const files = ['README.md', 'index.js', 'page.css'];
+ const [file, setFile] = React.useState(files[1]);
+
+ return (
+
+ window.alert('minimize')}>
+ Minimize window
+
+ window.alert('zoom')}>
+ Zoom
+
+ window.alert('smaller')}>
+ Smaller
+
+
+
+ {files.map((file) => (
+
+ {file}
+
+
+
+
+ ))}
+
+
+ );
+}
+
+type MenuProps = Omit<
+ React.ComponentProps &
+ React.ComponentProps & { animated?: boolean },
+ 'trapFocus' | 'onCloseAutoFocus' | 'disableOutsidePointerEvents' | 'disableOutsideScroll'
+>;
+
+function MenuWithAnchor(props: MenuProps) {
+ const { open = true, children, animated, ...contentProps } = props;
+ return (
+ {}} modal={false}>
+ {/* inline-block allows anchor to move when rtl changes on document */}
+
+
+ event.preventDefault()}
+ align="start"
+ data-animated={animated || undefined}
+ {...contentProps}
+ className={['MenuContent', contentProps.className].filter(Boolean).join(' ')}
+ >
+ {children}
+
+
+
+ );
+}
+
+function Submenu(props: MenuProps & { animated: boolean; disabled?: boolean; heading?: string }) {
+ const {
+ heading = 'Submenu',
+ open = true,
+ onOpenChange,
+ children,
+ animated,
+ disabled,
+ ...contentProps
+ } = props;
+ return (
+
+
+ {heading} โ
+
+
+
+ {children}
+
+
+
+ );
+}
+
+function TickIcon() {
+ return (
+
+
+
+ );
+}
diff --git a/apps/ssr-testing/app/menubar/page.tsx b/internal/test-registry/components/menubar.tsx
similarity index 94%
rename from apps/ssr-testing/app/menubar/page.tsx
rename to internal/test-registry/components/menubar.tsx
index 0d1c0f4250..68a9bac05c 100644
--- a/apps/ssr-testing/app/menubar/page.tsx
+++ b/internal/test-registry/components/menubar.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { Menubar } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
diff --git a/apps/ssr-testing/app/navigation-menu/page.tsx b/internal/test-registry/components/navigation-menu.tsx
similarity index 94%
rename from apps/ssr-testing/app/navigation-menu/page.tsx
rename to internal/test-registry/components/navigation-menu.tsx
index 6593c09a93..22bcb104cb 100644
--- a/apps/ssr-testing/app/navigation-menu/page.tsx
+++ b/internal/test-registry/components/navigation-menu.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { NavigationMenu } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
diff --git a/apps/ssr-testing/app/one-time-password-field/page.tsx b/internal/test-registry/components/one-time-password-field.tsx
similarity index 96%
rename from apps/ssr-testing/app/one-time-password-field/page.tsx
rename to internal/test-registry/components/one-time-password-field.tsx
index 70746a5ed9..ca60e72ae9 100644
--- a/apps/ssr-testing/app/one-time-password-field/page.tsx
+++ b/internal/test-registry/components/one-time-password-field.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { unstable_OneTimePasswordField as OneTimePasswordField } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
diff --git a/apps/ssr-testing/app/password-toggle-field/page.tsx b/internal/test-registry/components/password-toggle-field.tsx
similarity index 98%
rename from apps/ssr-testing/app/password-toggle-field/page.tsx
rename to internal/test-registry/components/password-toggle-field.tsx
index 4b6ce56107..436f0565be 100644
--- a/apps/ssr-testing/app/password-toggle-field/page.tsx
+++ b/internal/test-registry/components/password-toggle-field.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { unstable_PasswordToggleField as PasswordToggleField } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
diff --git a/apps/ssr-testing/app/popover/page.tsx b/internal/test-registry/components/popover.tsx
similarity index 92%
rename from apps/ssr-testing/app/popover/page.tsx
rename to internal/test-registry/components/popover.tsx
index 6e2d0f2fb9..588d7bd10a 100644
--- a/apps/ssr-testing/app/popover/page.tsx
+++ b/internal/test-registry/components/popover.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { Popover } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
open
diff --git a/internal/test-registry/components/popper.tsx b/internal/test-registry/components/popper.tsx
new file mode 100644
index 0000000000..8e1c01251d
--- /dev/null
+++ b/internal/test-registry/components/popper.tsx
@@ -0,0 +1,144 @@
+'use client';
+import * as React from 'react';
+import { Portal } from 'radix-ui';
+import { Popper } from 'radix-ui/internal';
+
+export function Basic() {
+ const [open, setOpen] = React.useState(false);
+ const [animated, setAnimated] = React.useState(false);
+ return (
+
+
+ setAnimated(event.currentTarget.checked)}
+ />
+ Animated
+
+
+
+
+ setOpen(true)}>
+ open
+
+
+ {open && (
+
+ setOpen(false)}>close
+
+
+ )}
+
+
+
+ );
+}
+
+export const WithCustomArrow = () => {
+ const [open, setOpen] = React.useState(false);
+ return (
+
+
+ setOpen(true)}>
+ open
+
+
+ {open && (
+
+ setOpen(false)}>close
+
+
+
+
+ )}
+
+
+ );
+};
+
+export function WithPortal() {
+ const [open, setOpen] = React.useState(false);
+ return (
+
+
+ setOpen(true)}>
+ open
+
+
+ {open && (
+
+
+ setOpen(false)}>close
+
+
+
+ )}
+
+
+ );
+}
+
+export function WithUpdatePositionStrategyAlways() {
+ const [open, setOpen] = React.useState(false);
+ const [left, setLeft] = React.useState(0);
+ React.useEffect(() => {
+ const intervalId = setInterval(() => {
+ setLeft((prev) => (prev + 50) % 300);
+ }, 500);
+ return () => clearInterval(intervalId);
+ }, []);
+ return (
+
+
+ setOpen(true)}
+ style={{ marginLeft: left }}
+ >
+ open
+
+
+ {open && (
+
+
+ setOpen(false)}>close
+
+
+
+ )}
+
+
+ );
+}
+
+function Scrollable(props: React.HTMLAttributes) {
+ return (
+
+ );
+}
diff --git a/internal/test-registry/components/portal.tsx b/internal/test-registry/components/portal.tsx
new file mode 100644
index 0000000000..05b25e0e7e
--- /dev/null
+++ b/internal/test-registry/components/portal.tsx
@@ -0,0 +1,61 @@
+'use client';
+import * as React from 'react';
+import { Portal } from 'radix-ui';
+
+export function Basic() {
+ return (
+
+
This content is rendered in the main DOM tree
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Quos porro, est ex quia itaque
+ facere fugit necessitatibus aut enim. Nisi rerum quae, repellat in perspiciatis explicabo
+ laboriosam necessitatibus eius pariatur.
+
+
+
+ This content is rendered in a portal (another DOM tree)
+
+ Because of the portal, it can appear in a different DOM tree from the main one (by default
+ a new element inside the body), even though it is part of the same React tree.
+
+
+
+ );
+}
+
+export function Custom() {
+ const [container, setContainer] = React.useState(null);
+ return (
+
+
+
+ This content is rendered in a custom container
+
+
+ );
+}
+
+export function Conditional() {
+ const [container, setContainer] = React.useState(null);
+ const [open, setOpen] = React.useState(false);
+ return (
+
+
setOpen((prev) => !prev)}>
+ Toggle another portal
+
+
+ {open && (
+
+ This content is rendered in a custom container
+
+ )}
+
+ );
+}
diff --git a/apps/ssr-testing/app/progress/page.tsx b/internal/test-registry/components/progress.tsx
similarity index 85%
rename from apps/ssr-testing/app/progress/page.tsx
rename to internal/test-registry/components/progress.tsx
index 3d5613412c..a142e2bb7b 100644
--- a/apps/ssr-testing/app/progress/page.tsx
+++ b/internal/test-registry/components/progress.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { Progress } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
Progress
diff --git a/apps/ssr-testing/app/radio-group/page.tsx b/internal/test-registry/components/radio-group.tsx
similarity index 96%
rename from apps/ssr-testing/app/radio-group/page.tsx
rename to internal/test-registry/components/radio-group.tsx
index bc7b1f0151..36e50a00a6 100644
--- a/apps/ssr-testing/app/radio-group/page.tsx
+++ b/internal/test-registry/components/radio-group.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { Label, RadioGroup } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
Favourite pet
diff --git a/internal/test-registry/components/roving-focus.tsx b/internal/test-registry/components/roving-focus.tsx
new file mode 100644
index 0000000000..63709645ee
--- /dev/null
+++ b/internal/test-registry/components/roving-focus.tsx
@@ -0,0 +1,202 @@
+'use client';
+import * as React from 'react';
+import { composeEventHandlers, RovingFocus } from 'radix-ui/internal';
+
+export function Basic() {
+ return (
+
+
+
+
+
+ no orientation (both) + no looping
+
+
+ One
+ Two
+
+ Three
+
+ Four
+
+
+ no orientation (both) + looping
+
+
+ One
+ Two
+
+ Three
+
+ Four
+
+
+ horizontal orientation + no looping
+
+
+ One
+ Two
+
+ Three
+
+ Four
+
+
+ horizontal orientation + looping
+
+
+ One
+ Two
+
+ Three
+
+ Four
+
+
+ vertical orientation + no looping
+
+
+ One
+ Two
+
+ Three
+
+ Four
+
+
+ vertical orientation + looping
+
+
+ One
+ Two
+
+ Three
+
+ Four
+
+
+ );
+}
+
+export function Nested() {
+ return (
+
+ 1
+
+
+
+ 2
+
+
+
+ 2.1
+ 2.2
+
+ 2.3
+
+ 2.4
+
+
+
+
+ 3
+
+ 4
+
+ );
+}
+
+type Direction = 'ltr' | 'rtl';
+
+const RovingFocusContext = React.createContext<{
+ dir: 'ltr' | 'rtl';
+ setDir: React.Dispatch>;
+}>({
+ dir: 'ltr',
+ setDir: () => void 0,
+});
+RovingFocusContext.displayName = 'RovingFocusContext';
+
+function RovingFocusProvider({ children }: { children: React.ReactNode }) {
+ const [dir, setDir] = React.useState('ltr');
+ return (
+
+ {children}
+
+ );
+}
+
+function RovingFocusToggle() {
+ const { dir, setDir } = React.use(RovingFocusContext);
+ return (
+ setDir((prev) => (prev === 'ltr' ? 'rtl' : 'ltr'))}>
+ Toggle to {dir === 'ltr' ? 'rtl' : 'ltr'}
+
+ );
+}
+
+const ButtonGroupContext = React.createContext<{
+ value: string | undefined;
+ setValue: React.Dispatch>;
+}>({
+ value: undefined,
+ setValue: () => void 0,
+});
+
+type ButtonGroupProps = Omit, 'defaultValue'> &
+ RovingFocus.RovingFocusGroupProps & { defaultValue?: string };
+
+function ButtonGroup({ defaultValue, ...props }: ButtonGroupProps) {
+ const [value, setValue] = React.useState(defaultValue);
+ const { dir } = React.use(RovingFocusContext);
+ return (
+
+
+
+ );
+}
+
+type ButtonProps = Omit, 'value'> & { value?: string };
+
+function Button(props: ButtonProps) {
+ const { value: contextValue, setValue } = React.use(ButtonGroupContext);
+ const isSelected =
+ contextValue !== undefined && props.value !== undefined && contextValue === props.value;
+
+ return (
+
+ setValue(props.value)}
+ onFocus={composeEventHandlers(props.onFocus, (event) => {
+ if (contextValue !== undefined) {
+ event.target.click();
+ }
+ })}
+ />
+
+ );
+}
diff --git a/apps/ssr-testing/app/scroll-area/page.tsx b/internal/test-registry/components/scroll-area.tsx
similarity index 99%
rename from apps/ssr-testing/app/scroll-area/page.tsx
rename to internal/test-registry/components/scroll-area.tsx
index a5ff59d861..0932aed63e 100644
--- a/apps/ssr-testing/app/scroll-area/page.tsx
+++ b/internal/test-registry/components/scroll-area.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { ScrollArea } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
diff --git a/apps/ssr-testing/app/select/page.tsx b/internal/test-registry/components/select.tsx
similarity index 98%
rename from apps/ssr-testing/app/select/page.tsx
rename to internal/test-registry/components/select.tsx
index 9f981f17dc..ff13585659 100644
--- a/apps/ssr-testing/app/select/page.tsx
+++ b/internal/test-registry/components/select.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { Select } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
<>
diff --git a/apps/ssr-testing/app/separator/page.tsx b/internal/test-registry/components/separator.tsx
similarity index 78%
rename from apps/ssr-testing/app/separator/page.tsx
rename to internal/test-registry/components/separator.tsx
index b5de78e587..f37adf125d 100644
--- a/apps/ssr-testing/app/separator/page.tsx
+++ b/internal/test-registry/components/separator.tsx
@@ -1,6 +1,6 @@
import * as React from 'react';
import { Separator } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return *** ;
}
diff --git a/apps/ssr-testing/app/slider/page.tsx b/internal/test-registry/components/slider.tsx
similarity index 96%
rename from apps/ssr-testing/app/slider/page.tsx
rename to internal/test-registry/components/slider.tsx
index ff62ccef53..8723edc6c2 100644
--- a/apps/ssr-testing/app/slider/page.tsx
+++ b/internal/test-registry/components/slider.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { Slider } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
- I'm in a
+ I'm in a
Slot!?
diff --git a/apps/ssr-testing/app/switch/page.tsx b/internal/test-registry/components/switch.tsx
similarity index 83%
rename from apps/ssr-testing/app/switch/page.tsx
rename to internal/test-registry/components/switch.tsx
index 2cb4c65ab9..53d32f87aa 100644
--- a/apps/ssr-testing/app/switch/page.tsx
+++ b/internal/test-registry/components/switch.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { Switch } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
Switch
diff --git a/apps/ssr-testing/app/tabs/page.tsx b/internal/test-registry/components/tabs.tsx
similarity index 89%
rename from apps/ssr-testing/app/tabs/page.tsx
rename to internal/test-registry/components/tabs.tsx
index 209548691e..bac140c747 100644
--- a/apps/ssr-testing/app/tabs/page.tsx
+++ b/internal/test-registry/components/tabs.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { Tabs } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
@@ -14,7 +14,7 @@ export default function Page() {
integer, faucibus varius nullam nostra bibendum consectetur mollis, gravida elementum
pellentesque volutpat dictum ipsum.
- You'll never find me!
+ You'll never find me!
Ut nisi elementum metus semper mauris dui fames accumsan aenean, maecenas ac sociis dolor
quam tempus pretium.
diff --git a/apps/ssr-testing/app/toast/page.tsx b/internal/test-registry/components/toast.tsx
similarity index 92%
rename from apps/ssr-testing/app/toast/page.tsx
rename to internal/test-registry/components/toast.tsx
index 67b003e1a5..4734d543a7 100644
--- a/apps/ssr-testing/app/toast/page.tsx
+++ b/internal/test-registry/components/toast.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { Toast } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
@@ -10,7 +10,6 @@ export default function Page() {
Do something
Close
-
);
diff --git a/apps/ssr-testing/app/toggle-group/page.tsx b/internal/test-registry/components/toggle-group.tsx
similarity index 89%
rename from apps/ssr-testing/app/toggle-group/page.tsx
rename to internal/test-registry/components/toggle-group.tsx
index 9759f241fa..63f237be03 100644
--- a/apps/ssr-testing/app/toggle-group/page.tsx
+++ b/internal/test-registry/components/toggle-group.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { ToggleGroup } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
Item 1
diff --git a/internal/test-registry/components/toggle.tsx b/internal/test-registry/components/toggle.tsx
new file mode 100644
index 0000000000..21d01e9cc3
--- /dev/null
+++ b/internal/test-registry/components/toggle.tsx
@@ -0,0 +1,11 @@
+import * as React from 'react';
+import { FontItalicIcon } from '@radix-ui/react-icons';
+import { Toggle } from 'radix-ui';
+
+export function Basic() {
+ return (
+
+
+
+ );
+}
diff --git a/apps/ssr-testing/app/toolbar/page.tsx b/internal/test-registry/components/toolbar.tsx
similarity index 89%
rename from apps/ssr-testing/app/toolbar/page.tsx
rename to internal/test-registry/components/toolbar.tsx
index 3a34ea2f67..a01856e614 100644
--- a/apps/ssr-testing/app/toolbar/page.tsx
+++ b/internal/test-registry/components/toolbar.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { Toolbar } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
Button
diff --git a/apps/ssr-testing/app/tooltip/page.tsx b/internal/test-registry/components/tooltip.tsx
similarity index 92%
rename from apps/ssr-testing/app/tooltip/page.tsx
rename to internal/test-registry/components/tooltip.tsx
index e0a2eff0e4..d9d9494bcb 100644
--- a/apps/ssr-testing/app/tooltip/page.tsx
+++ b/internal/test-registry/components/tooltip.tsx
@@ -1,7 +1,7 @@
import * as React from 'react';
import { Tooltip } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
diff --git a/apps/ssr-testing/app/visually-hidden/page.tsx b/internal/test-registry/components/visually-hidden.tsx
similarity index 74%
rename from apps/ssr-testing/app/visually-hidden/page.tsx
rename to internal/test-registry/components/visually-hidden.tsx
index d8f4c5bfb4..4d047fa3ce 100644
--- a/apps/ssr-testing/app/visually-hidden/page.tsx
+++ b/internal/test-registry/components/visually-hidden.tsx
@@ -1,10 +1,10 @@
import * as React from 'react';
import { VisuallyHidden } from 'radix-ui';
-export default function Page() {
+export function Basic() {
return (
- You won't see this:
+ You won't see this:
๐
);
diff --git a/internal/test-registry/eslint.config.js b/internal/test-registry/eslint.config.js
new file mode 100644
index 0000000000..c0b9634f36
--- /dev/null
+++ b/internal/test-registry/eslint.config.js
@@ -0,0 +1,4 @@
+// @ts-check
+import { configs } from '@repo/eslint-config';
+
+export default configs;
diff --git a/internal/test-registry/package.json b/internal/test-registry/package.json
new file mode 100644
index 0000000000..82eacc96ba
--- /dev/null
+++ b/internal/test-registry/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "@repo/test-registry",
+ "version": "0.0.0",
+ "private": true,
+ "license": "MIT",
+ "type": "module",
+ "dependencies": {
+ "@radix-ui/react-icons": "^1.3.2",
+ "@repo/test-data": "workspace:*",
+ "radix-ui": "workspace:*"
+ },
+ "devDependencies": {
+ "@repo/eslint-config": "workspace:*",
+ "@repo/typescript-config": "workspace:*",
+ "eslint": "^9.38.0",
+ "typescript": "^5.9.3"
+ },
+ "exports": {
+ ".": "./test-registry.ts",
+ "./components/*": "./components/*.tsx",
+ "./*": "./*.ts"
+ },
+ "scripts": {
+ "lint": "eslint --max-warnings 0 .",
+ "check-types": "tsc --noEmit"
+ }
+}
diff --git a/internal/test-registry/test-registry.ts b/internal/test-registry/test-registry.ts
new file mode 100644
index 0000000000..03e9b266f2
--- /dev/null
+++ b/internal/test-registry/test-registry.ts
@@ -0,0 +1,50 @@
+export const primitives = {
+ public: [
+ { id: 'accessible-icon', name: 'Accessible Icon' },
+ { id: 'accordion', name: 'Accordion' },
+ { id: 'alert-dialog', name: 'Alert Dialog' },
+ { id: 'aspect-ratio', name: 'Aspect Ratio' },
+ { id: 'avatar', name: 'Avatar' },
+ { id: 'checkbox', name: 'Checkbox' },
+ { id: 'collapsible', name: 'Collapsible' },
+ { id: 'context-menu', name: 'Context Menu' },
+ { id: 'dialog', name: 'Dialog' },
+ { id: 'direction', name: 'Direction Provider' },
+ { id: 'dropdown-menu', name: 'Dropdown Menu' },
+ { id: 'form', name: 'Form' },
+ { id: 'hover-card', name: 'Hover Card' },
+ { id: 'label', name: 'Label' },
+ { id: 'menubar', name: 'Menubar' },
+ { id: 'navigation-menu', name: 'Navigation Menu' },
+ { id: 'one-time-password-field', name: 'One-Time Password Field' },
+ { id: 'password-toggle-field', name: 'Password Toggle Field' },
+ { id: 'popover', name: 'Popover' },
+ { id: 'portal', name: 'Portal' },
+ { id: 'progress', name: 'Progress' },
+ { id: 'radio-group', name: 'Radio Group' },
+ { id: 'scroll-area', name: 'Scroll Area' },
+ { id: 'select', name: 'Select' },
+ { id: 'separator', name: 'Separator' },
+ { id: 'slider', name: 'Slider' },
+ { id: 'slot', name: 'Slot' },
+ { id: 'switch', name: 'Switch' },
+ { id: 'tabs', name: 'Tabs' },
+ { id: 'toast', name: 'Toast' },
+ { id: 'toggle', name: 'Toggle' },
+ { id: 'toggle-group', name: 'Toggle Group' },
+ { id: 'toolbar', name: 'Toolbar' },
+ { id: 'tooltip', name: 'Tooltip' },
+ { id: 'visually-hidden', name: 'Visually Hidden' },
+ ] as const,
+ internal: [
+ //
+ { id: 'arrow', name: 'Arrow' },
+ { id: 'collection', name: 'Collection' },
+ { id: 'dismissable-layer', name: 'Dismissable Layer' },
+ { id: 'focus-guards', name: 'Focus Guards' },
+ { id: 'focus-scope', name: 'Focus Scope' },
+ { id: 'menu', name: 'Menu' },
+ { id: 'popper', name: 'Popper' },
+ { id: 'roving-focus', name: 'Roving Focus' },
+ ],
+} as const;
diff --git a/internal/test-registry/tsconfig.json b/internal/test-registry/tsconfig.json
new file mode 100644
index 0000000000..470a2d6902
--- /dev/null
+++ b/internal/test-registry/tsconfig.json
@@ -0,0 +1,9 @@
+{
+ "extends": "@repo/typescript-config/react-library.json",
+ "compilerOptions": {
+ "rootDir": ".",
+ "outDir": "dist"
+ },
+ "include": ["**/*"],
+ "exclude": ["node_modules", "dist"]
+}
diff --git a/internal/test-styles/colors.css b/internal/test-styles/colors.css
new file mode 100644
index 0000000000..0679819e7d
--- /dev/null
+++ b/internal/test-styles/colors.css
@@ -0,0 +1,1083 @@
+@import '@radix-ui/colors/gray.css';
+@import '@radix-ui/colors/gray-alpha.css';
+@import '@radix-ui/colors/gray-dark.css';
+@import '@radix-ui/colors/gray-dark-alpha.css';
+@import '@radix-ui/colors/black-alpha.css';
+@import '@radix-ui/colors/white-alpha.css';
+@import '@radix-ui/colors/mauve.css';
+@import '@radix-ui/colors/mauve-alpha.css';
+@import '@radix-ui/colors/mauve-dark.css';
+@import '@radix-ui/colors/mauve-dark-alpha.css';
+@import '@radix-ui/colors/slate.css';
+@import '@radix-ui/colors/slate-alpha.css';
+@import '@radix-ui/colors/slate-dark.css';
+@import '@radix-ui/colors/slate-dark-alpha.css';
+@import '@radix-ui/colors/sage.css';
+@import '@radix-ui/colors/sage-alpha.css';
+@import '@radix-ui/colors/sage-dark.css';
+@import '@radix-ui/colors/sage-dark-alpha.css';
+@import '@radix-ui/colors/olive.css';
+@import '@radix-ui/colors/olive-alpha.css';
+@import '@radix-ui/colors/olive-dark.css';
+@import '@radix-ui/colors/olive-dark-alpha.css';
+@import '@radix-ui/colors/sand.css';
+@import '@radix-ui/colors/sand-alpha.css';
+@import '@radix-ui/colors/sand-dark.css';
+@import '@radix-ui/colors/sand-dark-alpha.css';
+@import '@radix-ui/colors/gold.css';
+@import '@radix-ui/colors/gold-alpha.css';
+@import '@radix-ui/colors/gold-dark.css';
+@import '@radix-ui/colors/gold-dark-alpha.css';
+@import '@radix-ui/colors/bronze.css';
+@import '@radix-ui/colors/bronze-alpha.css';
+@import '@radix-ui/colors/bronze-dark.css';
+@import '@radix-ui/colors/bronze-dark-alpha.css';
+@import '@radix-ui/colors/brown.css';
+@import '@radix-ui/colors/brown-alpha.css';
+@import '@radix-ui/colors/brown-dark.css';
+@import '@radix-ui/colors/brown-dark-alpha.css';
+@import '@radix-ui/colors/yellow.css';
+@import '@radix-ui/colors/yellow-alpha.css';
+@import '@radix-ui/colors/yellow-dark.css';
+@import '@radix-ui/colors/yellow-dark-alpha.css';
+@import '@radix-ui/colors/amber.css';
+@import '@radix-ui/colors/amber-alpha.css';
+@import '@radix-ui/colors/amber-dark.css';
+@import '@radix-ui/colors/amber-dark-alpha.css';
+@import '@radix-ui/colors/orange.css';
+@import '@radix-ui/colors/orange-alpha.css';
+@import '@radix-ui/colors/orange-dark.css';
+@import '@radix-ui/colors/orange-dark-alpha.css';
+@import '@radix-ui/colors/tomato.css';
+@import '@radix-ui/colors/tomato-alpha.css';
+@import '@radix-ui/colors/tomato-dark.css';
+@import '@radix-ui/colors/tomato-dark-alpha.css';
+@import '@radix-ui/colors/red.css';
+@import '@radix-ui/colors/red-alpha.css';
+@import '@radix-ui/colors/red-dark.css';
+@import '@radix-ui/colors/red-dark-alpha.css';
+@import '@radix-ui/colors/ruby.css';
+@import '@radix-ui/colors/ruby-alpha.css';
+@import '@radix-ui/colors/ruby-dark.css';
+@import '@radix-ui/colors/ruby-dark-alpha.css';
+@import '@radix-ui/colors/crimson.css';
+@import '@radix-ui/colors/crimson-alpha.css';
+@import '@radix-ui/colors/crimson-dark.css';
+@import '@radix-ui/colors/crimson-dark-alpha.css';
+@import '@radix-ui/colors/pink.css';
+@import '@radix-ui/colors/pink-alpha.css';
+@import '@radix-ui/colors/pink-dark.css';
+@import '@radix-ui/colors/pink-dark-alpha.css';
+@import '@radix-ui/colors/plum.css';
+@import '@radix-ui/colors/plum-alpha.css';
+@import '@radix-ui/colors/plum-dark.css';
+@import '@radix-ui/colors/plum-dark-alpha.css';
+@import '@radix-ui/colors/purple.css';
+@import '@radix-ui/colors/purple-alpha.css';
+@import '@radix-ui/colors/purple-dark.css';
+@import '@radix-ui/colors/purple-dark-alpha.css';
+@import '@radix-ui/colors/violet.css';
+@import '@radix-ui/colors/violet-alpha.css';
+@import '@radix-ui/colors/violet-dark.css';
+@import '@radix-ui/colors/violet-dark-alpha.css';
+@import '@radix-ui/colors/iris.css';
+@import '@radix-ui/colors/iris-alpha.css';
+@import '@radix-ui/colors/iris-dark.css';
+@import '@radix-ui/colors/iris-dark-alpha.css';
+@import '@radix-ui/colors/indigo.css';
+@import '@radix-ui/colors/indigo-alpha.css';
+@import '@radix-ui/colors/indigo-dark.css';
+@import '@radix-ui/colors/indigo-dark-alpha.css';
+@import '@radix-ui/colors/blue.css';
+@import '@radix-ui/colors/blue-alpha.css';
+@import '@radix-ui/colors/blue-dark.css';
+@import '@radix-ui/colors/blue-dark-alpha.css';
+@import '@radix-ui/colors/cyan.css';
+@import '@radix-ui/colors/cyan-alpha.css';
+@import '@radix-ui/colors/cyan-dark.css';
+@import '@radix-ui/colors/cyan-dark-alpha.css';
+@import '@radix-ui/colors/teal.css';
+@import '@radix-ui/colors/teal-alpha.css';
+@import '@radix-ui/colors/teal-dark.css';
+@import '@radix-ui/colors/teal-dark-alpha.css';
+@import '@radix-ui/colors/jade.css';
+@import '@radix-ui/colors/jade-alpha.css';
+@import '@radix-ui/colors/jade-dark.css';
+@import '@radix-ui/colors/jade-dark-alpha.css';
+@import '@radix-ui/colors/green.css';
+@import '@radix-ui/colors/green-alpha.css';
+@import '@radix-ui/colors/green-dark.css';
+@import '@radix-ui/colors/green-dark-alpha.css';
+@import '@radix-ui/colors/grass.css';
+@import '@radix-ui/colors/grass-alpha.css';
+@import '@radix-ui/colors/grass-dark.css';
+@import '@radix-ui/colors/grass-dark-alpha.css';
+@import '@radix-ui/colors/lime.css';
+@import '@radix-ui/colors/lime-alpha.css';
+@import '@radix-ui/colors/lime-dark.css';
+@import '@radix-ui/colors/lime-dark-alpha.css';
+@import '@radix-ui/colors/mint.css';
+@import '@radix-ui/colors/mint-alpha.css';
+@import '@radix-ui/colors/mint-dark.css';
+@import '@radix-ui/colors/mint-dark-alpha.css';
+@import '@radix-ui/colors/sky-alpha.css';
+@import '@radix-ui/colors/sky-dark.css';
+@import '@radix-ui/colors/sky-dark-alpha.css';
+
+:root {
+ --black-a0: #0000;
+ --black-a13: #000;
+ --white-a0: #fff0;
+ --white-a13: #fff;
+}
+
+:root,
+.light,
+.light-theme {
+ --gray-a0: #0000;
+ --gray-a13: #000;
+ --gray-0: #fff;
+ --gray-13: #000;
+}
+
+.dark,
+.dark-theme {
+ --gray-a0: #0000;
+ --gray-a13: #fff;
+ --gray-0: #000;
+ --gray-13: #fff;
+}
+
+@supports (color: color(display-p3 1 1 1)) {
+ @media (color-gamut: p3) {
+ :root {
+ --black-a0: color(display-p3 0 0 0 / 0);
+ --black-a13: color(display-p3 0 0 0 / 1);
+ --white-a0: color(display-p3 1 1 1 / 0);
+ --white-a13: color(display-p3 1 1 1 / 1);
+ }
+
+ :root,
+ .light,
+ .light-theme {
+ --gray-a0: color(display-p3 0 0 0 / 0);
+ --gray-a13: color(display-p3 0 0 0 / 1);
+ --gray-0: color(display-p3 1 1 1 / 1);
+ --gray-13: color(display-p3 0 0 0 / 1);
+ }
+
+ .dark,
+ .dark-theme {
+ --gray-a0: color(display-p3 1 1 1 / 0);
+ --gray-a13: color(display-p3 1 1 1 / 1);
+ --gray-0: color(display-p3 0 0 0 / 1);
+ --gray-13: color(display-p3 1 1 1 / 1);
+ }
+ }
+}
+
+/* aliases */
+:root {
+ /* gray */
+ --color-gray-0: var(--gray-0);
+ --color-gray-1: var(--gray-1);
+ --color-gray-2: var(--gray-2);
+ --color-gray-3: var(--gray-3);
+ --color-gray-4: var(--gray-4);
+ --color-gray-5: var(--gray-5);
+ --color-gray-6: var(--gray-6);
+ --color-gray-7: var(--gray-7);
+ --color-gray-8: var(--gray-8);
+ --color-gray-9: var(--gray-9);
+ --color-gray-10: var(--gray-10);
+ --color-gray-11: var(--gray-11);
+ --color-gray-12: var(--gray-12);
+ --color-gray-13: var(--gray-13);
+ /* gray alpha */
+ --color-gray-a0: var(--gray-a0);
+ --color-gray-a1: var(--gray-a1);
+ --color-gray-a2: var(--gray-a2);
+ --color-gray-a3: var(--gray-a3);
+ --color-gray-a4: var(--gray-a4);
+ --color-gray-a5: var(--gray-a5);
+ --color-gray-a6: var(--gray-a6);
+ --color-gray-a7: var(--gray-a7);
+ --color-gray-a8: var(--gray-a8);
+ --color-gray-a9: var(--gray-a9);
+ --color-gray-a10: var(--gray-a10);
+ --color-gray-a11: var(--gray-a11);
+ --color-gray-a12: var(--gray-a12);
+ --color-gray-a13: var(--gray-a13);
+
+ /* black alpha */
+ --color-black-a0: var(--black-a0);
+ --color-black-a1: var(--black-a1);
+ --color-black-a2: var(--black-a2);
+ --color-black-a3: var(--black-a3);
+ --color-black-a4: var(--black-a4);
+ --color-black-a5: var(--black-a5);
+ --color-black-a6: var(--black-a6);
+ --color-black-a7: var(--black-a7);
+ --color-black-a8: var(--black-a8);
+ --color-black-a9: var(--black-a9);
+ --color-black-a10: var(--black-a10);
+ --color-black-a11: var(--black-a11);
+ --color-black-a12: var(--black-a12);
+ --color-black-a13: var(--black-a13);
+
+ /* white alpha */
+ --color-white-a0: var(--white-a0);
+ --color-white-a1: var(--white-a1);
+ --color-white-a2: var(--white-a2);
+ --color-white-a3: var(--white-a3);
+ --color-white-a4: var(--white-a4);
+ --color-white-a5: var(--white-a5);
+ --color-white-a6: var(--white-a6);
+ --color-white-a7: var(--white-a7);
+ --color-white-a8: var(--white-a8);
+ --color-white-a9: var(--white-a9);
+ --color-white-a10: var(--white-a10);
+ --color-white-a11: var(--white-a11);
+ --color-white-a12: var(--white-a12);
+ --color-white-a13: var(--white-a13);
+
+ /* amber */
+ --color-amber-1: var(--amber-1);
+ --color-amber-2: var(--amber-2);
+ --color-amber-3: var(--amber-3);
+ --color-amber-4: var(--amber-4);
+ --color-amber-5: var(--amber-5);
+ --color-amber-6: var(--amber-6);
+ --color-amber-7: var(--amber-7);
+ --color-amber-8: var(--amber-8);
+ --color-amber-9: var(--amber-9);
+ --color-amber-10: var(--amber-10);
+ --color-amber-11: var(--amber-11);
+ --color-amber-12: var(--amber-12);
+
+ /* amber alpha */
+ --color-amber-a1: var(--amber-a1);
+ --color-amber-a2: var(--amber-a2);
+ --color-amber-a3: var(--amber-a3);
+ --color-amber-a4: var(--amber-a4);
+ --color-amber-a5: var(--amber-a5);
+ --color-amber-a6: var(--amber-a6);
+ --color-amber-a7: var(--amber-a7);
+ --color-amber-a8: var(--amber-a8);
+ --color-amber-a9: var(--amber-a9);
+ --color-amber-a10: var(--amber-a10);
+ --color-amber-a11: var(--amber-a11);
+ --color-amber-a12: var(--amber-a12);
+
+ /* blue */
+ --color-blue-1: var(--blue-1);
+ --color-blue-2: var(--blue-2);
+ --color-blue-3: var(--blue-3);
+ --color-blue-4: var(--blue-4);
+ --color-blue-5: var(--blue-5);
+ --color-blue-6: var(--blue-6);
+ --color-blue-7: var(--blue-7);
+ --color-blue-8: var(--blue-8);
+ --color-blue-9: var(--blue-9);
+ --color-blue-10: var(--blue-10);
+ --color-blue-11: var(--blue-11);
+ --color-blue-12: var(--blue-12);
+
+ /* blue alpha */
+ --color-blue-a1: var(--blue-a1);
+ --color-blue-a2: var(--blue-a2);
+ --color-blue-a3: var(--blue-a3);
+ --color-blue-a4: var(--blue-a4);
+ --color-blue-a5: var(--blue-a5);
+ --color-blue-a6: var(--blue-a6);
+ --color-blue-a7: var(--blue-a7);
+ --color-blue-a8: var(--blue-a8);
+ --color-blue-a9: var(--blue-a9);
+ --color-blue-a10: var(--blue-a10);
+ --color-blue-a11: var(--blue-a11);
+ --color-blue-a12: var(--blue-a12);
+
+ /* bronze */
+ --color-bronze-1: var(--bronze-1);
+ --color-bronze-2: var(--bronze-2);
+ --color-bronze-3: var(--bronze-3);
+ --color-bronze-4: var(--bronze-4);
+ --color-bronze-5: var(--bronze-5);
+ --color-bronze-6: var(--bronze-6);
+ --color-bronze-7: var(--bronze-7);
+ --color-bronze-8: var(--bronze-8);
+ --color-bronze-9: var(--bronze-9);
+ --color-bronze-10: var(--bronze-10);
+ --color-bronze-11: var(--bronze-11);
+ --color-bronze-12: var(--bronze-12);
+
+ /* bronze alpha */
+ --color-bronze-a1: var(--bronze-a1);
+ --color-bronze-a2: var(--bronze-a2);
+ --color-bronze-a3: var(--bronze-a3);
+ --color-bronze-a4: var(--bronze-a4);
+ --color-bronze-a5: var(--bronze-a5);
+ --color-bronze-a6: var(--bronze-a6);
+ --color-bronze-a7: var(--bronze-a7);
+ --color-bronze-a8: var(--bronze-a8);
+ --color-bronze-a9: var(--bronze-a9);
+ --color-bronze-a10: var(--bronze-a10);
+ --color-bronze-a11: var(--bronze-a11);
+ --color-bronze-a12: var(--bronze-a12);
+
+ /* brown */
+ --color-brown-1: var(--brown-1);
+ --color-brown-2: var(--brown-2);
+ --color-brown-3: var(--brown-3);
+ --color-brown-4: var(--brown-4);
+ --color-brown-5: var(--brown-5);
+ --color-brown-6: var(--brown-6);
+ --color-brown-7: var(--brown-7);
+ --color-brown-8: var(--brown-8);
+ --color-brown-9: var(--brown-9);
+ --color-brown-10: var(--brown-10);
+ --color-brown-11: var(--brown-11);
+ --color-brown-12: var(--brown-12);
+
+ /* brown alpha */
+ --color-brown-a1: var(--brown-a1);
+ --color-brown-a2: var(--brown-a2);
+ --color-brown-a3: var(--brown-a3);
+ --color-brown-a4: var(--brown-a4);
+ --color-brown-a5: var(--brown-a5);
+ --color-brown-a6: var(--brown-a6);
+ --color-brown-a7: var(--brown-a7);
+ --color-brown-a8: var(--brown-a8);
+ --color-brown-a9: var(--brown-a9);
+ --color-brown-a10: var(--brown-a10);
+ --color-brown-a11: var(--brown-a11);
+ --color-brown-a12: var(--brown-a12);
+
+ /* crimson */
+ --color-crimson-1: var(--crimson-1);
+ --color-crimson-2: var(--crimson-2);
+ --color-crimson-3: var(--crimson-3);
+ --color-crimson-4: var(--crimson-4);
+ --color-crimson-5: var(--crimson-5);
+ --color-crimson-6: var(--crimson-6);
+ --color-crimson-7: var(--crimson-7);
+ --color-crimson-8: var(--crimson-8);
+ --color-crimson-9: var(--crimson-9);
+ --color-crimson-10: var(--crimson-10);
+ --color-crimson-11: var(--crimson-11);
+ --color-crimson-12: var(--crimson-12);
+
+ /* crimson alpha */
+ --color-crimson-a1: var(--crimson-a1);
+ --color-crimson-a2: var(--crimson-a2);
+ --color-crimson-a3: var(--crimson-a3);
+ --color-crimson-a4: var(--crimson-a4);
+ --color-crimson-a5: var(--crimson-a5);
+ --color-crimson-a6: var(--crimson-a6);
+ --color-crimson-a7: var(--crimson-a7);
+ --color-crimson-a8: var(--crimson-a8);
+ --color-crimson-a9: var(--crimson-a9);
+ --color-crimson-a10: var(--crimson-a10);
+ --color-crimson-a11: var(--crimson-a11);
+ --color-crimson-a12: var(--crimson-a12);
+
+ /* cyan */
+ --color-cyan-1: var(--cyan-1);
+ --color-cyan-2: var(--cyan-2);
+ --color-cyan-3: var(--cyan-3);
+ --color-cyan-4: var(--cyan-4);
+ --color-cyan-5: var(--cyan-5);
+ --color-cyan-6: var(--cyan-6);
+ --color-cyan-7: var(--cyan-7);
+ --color-cyan-8: var(--cyan-8);
+ --color-cyan-9: var(--cyan-9);
+ --color-cyan-10: var(--cyan-10);
+ --color-cyan-11: var(--cyan-11);
+ --color-cyan-12: var(--cyan-12);
+
+ /* cyan alpha */
+ --color-cyan-a1: var(--cyan-a1);
+ --color-cyan-a2: var(--cyan-a2);
+ --color-cyan-a3: var(--cyan-a3);
+ --color-cyan-a4: var(--cyan-a4);
+ --color-cyan-a5: var(--cyan-a5);
+ --color-cyan-a6: var(--cyan-a6);
+ --color-cyan-a7: var(--cyan-a7);
+ --color-cyan-a8: var(--cyan-a8);
+ --color-cyan-a9: var(--cyan-a9);
+ --color-cyan-a10: var(--cyan-a10);
+ --color-cyan-a11: var(--cyan-a11);
+ --color-cyan-a12: var(--cyan-a12);
+
+ /* gold */
+ --color-gold-1: var(--gold-1);
+ --color-gold-2: var(--gold-2);
+ --color-gold-3: var(--gold-3);
+ --color-gold-4: var(--gold-4);
+ --color-gold-5: var(--gold-5);
+ --color-gold-6: var(--gold-6);
+ --color-gold-7: var(--gold-7);
+ --color-gold-8: var(--gold-8);
+ --color-gold-9: var(--gold-9);
+ --color-gold-10: var(--gold-10);
+ --color-gold-11: var(--gold-11);
+ --color-gold-12: var(--gold-12);
+
+ /* gold alpha */
+ --color-gold-a1: var(--gold-a1);
+ --color-gold-a2: var(--gold-a2);
+ --color-gold-a3: var(--gold-a3);
+ --color-gold-a4: var(--gold-a4);
+ --color-gold-a5: var(--gold-a5);
+ --color-gold-a6: var(--gold-a6);
+ --color-gold-a7: var(--gold-a7);
+ --color-gold-a8: var(--gold-a8);
+ --color-gold-a9: var(--gold-a9);
+ --color-gold-a10: var(--gold-a10);
+ --color-gold-a11: var(--gold-a11);
+ --color-gold-a12: var(--gold-a12);
+
+ /* grass */
+ --color-grass-1: var(--grass-1);
+ --color-grass-2: var(--grass-2);
+ --color-grass-3: var(--grass-3);
+ --color-grass-4: var(--grass-4);
+ --color-grass-5: var(--grass-5);
+ --color-grass-6: var(--grass-6);
+ --color-grass-7: var(--grass-7);
+ --color-grass-8: var(--grass-8);
+ --color-grass-9: var(--grass-9);
+ --color-grass-10: var(--grass-10);
+ --color-grass-11: var(--grass-11);
+ --color-grass-12: var(--grass-12);
+
+ /* grass alpha */
+ --color-grass-a1: var(--grass-a1);
+ --color-grass-a2: var(--grass-a2);
+ --color-grass-a3: var(--grass-a3);
+ --color-grass-a4: var(--grass-a4);
+ --color-grass-a5: var(--grass-a5);
+ --color-grass-a6: var(--grass-a6);
+ --color-grass-a7: var(--grass-a7);
+ --color-grass-a8: var(--grass-a8);
+ --color-grass-a9: var(--grass-a9);
+ --color-grass-a10: var(--grass-a10);
+ --color-grass-a11: var(--grass-a11);
+ --color-grass-a12: var(--grass-a12);
+
+ /* green */
+ --color-green-1: var(--green-1);
+ --color-green-2: var(--green-2);
+ --color-green-3: var(--green-3);
+ --color-green-4: var(--green-4);
+ --color-green-5: var(--green-5);
+ --color-green-6: var(--green-6);
+ --color-green-7: var(--green-7);
+ --color-green-8: var(--green-8);
+ --color-green-9: var(--green-9);
+ --color-green-10: var(--green-10);
+ --color-green-11: var(--green-11);
+ --color-green-12: var(--green-12);
+
+ /* green alpha */
+ --color-green-a1: var(--green-a1);
+ --color-green-a2: var(--green-a2);
+ --color-green-a3: var(--green-a3);
+ --color-green-a4: var(--green-a4);
+ --color-green-a5: var(--green-a5);
+ --color-green-a6: var(--green-a6);
+ --color-green-a7: var(--green-a7);
+ --color-green-a8: var(--green-a8);
+ --color-green-a9: var(--green-a9);
+ --color-green-a10: var(--green-a10);
+ --color-green-a11: var(--green-a11);
+ --color-green-a12: var(--green-a12);
+
+ /* indigo */
+ --color-indigo-1: var(--indigo-1);
+ --color-indigo-2: var(--indigo-2);
+ --color-indigo-3: var(--indigo-3);
+ --color-indigo-4: var(--indigo-4);
+ --color-indigo-5: var(--indigo-5);
+ --color-indigo-6: var(--indigo-6);
+ --color-indigo-7: var(--indigo-7);
+ --color-indigo-8: var(--indigo-8);
+ --color-indigo-9: var(--indigo-9);
+ --color-indigo-10: var(--indigo-10);
+ --color-indigo-11: var(--indigo-11);
+ --color-indigo-12: var(--indigo-12);
+
+ /* indigo alpha */
+ --color-indigo-a1: var(--indigo-a1);
+ --color-indigo-a2: var(--indigo-a2);
+ --color-indigo-a3: var(--indigo-a3);
+ --color-indigo-a4: var(--indigo-a4);
+ --color-indigo-a5: var(--indigo-a5);
+ --color-indigo-a6: var(--indigo-a6);
+ --color-indigo-a7: var(--indigo-a7);
+ --color-indigo-a8: var(--indigo-a8);
+ --color-indigo-a9: var(--indigo-a9);
+ --color-indigo-a10: var(--indigo-a10);
+ --color-indigo-a11: var(--indigo-a11);
+ --color-indigo-a12: var(--indigo-a12);
+
+ /* iris */
+ --color-iris-1: var(--iris-1);
+ --color-iris-2: var(--iris-2);
+ --color-iris-3: var(--iris-3);
+ --color-iris-4: var(--iris-4);
+ --color-iris-5: var(--iris-5);
+ --color-iris-6: var(--iris-6);
+ --color-iris-7: var(--iris-7);
+ --color-iris-8: var(--iris-8);
+ --color-iris-9: var(--iris-9);
+ --color-iris-10: var(--iris-10);
+ --color-iris-11: var(--iris-11);
+ --color-iris-12: var(--iris-12);
+
+ /* iris alpha */
+ --color-iris-a1: var(--iris-a1);
+ --color-iris-a2: var(--iris-a2);
+ --color-iris-a3: var(--iris-a3);
+ --color-iris-a4: var(--iris-a4);
+ --color-iris-a5: var(--iris-a5);
+ --color-iris-a6: var(--iris-a6);
+ --color-iris-a7: var(--iris-a7);
+ --color-iris-a8: var(--iris-a8);
+ --color-iris-a9: var(--iris-a9);
+ --color-iris-a10: var(--iris-a10);
+ --color-iris-a11: var(--iris-a11);
+ --color-iris-a12: var(--iris-a12);
+
+ /* jade */
+ --color-jade-1: var(--jade-1);
+ --color-jade-2: var(--jade-2);
+ --color-jade-3: var(--jade-3);
+ --color-jade-4: var(--jade-4);
+ --color-jade-5: var(--jade-5);
+ --color-jade-6: var(--jade-6);
+ --color-jade-7: var(--jade-7);
+ --color-jade-8: var(--jade-8);
+ --color-jade-9: var(--jade-9);
+ --color-jade-10: var(--jade-10);
+ --color-jade-11: var(--jade-11);
+ --color-jade-12: var(--jade-12);
+
+ /* jade alpha */
+ --color-jade-a1: var(--jade-a1);
+ --color-jade-a2: var(--jade-a2);
+ --color-jade-a3: var(--jade-a3);
+ --color-jade-a4: var(--jade-a4);
+ --color-jade-a5: var(--jade-a5);
+ --color-jade-a6: var(--jade-a6);
+ --color-jade-a7: var(--jade-a7);
+ --color-jade-a8: var(--jade-a8);
+ --color-jade-a9: var(--jade-a9);
+ --color-jade-a10: var(--jade-a10);
+ --color-jade-a11: var(--jade-a11);
+ --color-jade-a12: var(--jade-a12);
+
+ /* lime */
+ --color-lime-1: var(--lime-1);
+ --color-lime-2: var(--lime-2);
+ --color-lime-3: var(--lime-3);
+ --color-lime-4: var(--lime-4);
+ --color-lime-5: var(--lime-5);
+ --color-lime-6: var(--lime-6);
+ --color-lime-7: var(--lime-7);
+ --color-lime-8: var(--lime-8);
+ --color-lime-9: var(--lime-9);
+ --color-lime-10: var(--lime-10);
+ --color-lime-11: var(--lime-11);
+ --color-lime-12: var(--lime-12);
+
+ /* lime alpha */
+ --color-lime-a1: var(--lime-a1);
+ --color-lime-a2: var(--lime-a2);
+ --color-lime-a3: var(--lime-a3);
+ --color-lime-a4: var(--lime-a4);
+ --color-lime-a5: var(--lime-a5);
+ --color-lime-a6: var(--lime-a6);
+ --color-lime-a7: var(--lime-a7);
+ --color-lime-a8: var(--lime-a8);
+ --color-lime-a9: var(--lime-a9);
+ --color-lime-a10: var(--lime-a10);
+ --color-lime-a11: var(--lime-a11);
+ --color-lime-a12: var(--lime-a12);
+
+ /* mauve */
+ --color-mauve-1: var(--mauve-1);
+ --color-mauve-2: var(--mauve-2);
+ --color-mauve-3: var(--mauve-3);
+ --color-mauve-4: var(--mauve-4);
+ --color-mauve-5: var(--mauve-5);
+ --color-mauve-6: var(--mauve-6);
+ --color-mauve-7: var(--mauve-7);
+ --color-mauve-8: var(--mauve-8);
+ --color-mauve-9: var(--mauve-9);
+ --color-mauve-10: var(--mauve-10);
+ --color-mauve-11: var(--mauve-11);
+ --color-mauve-12: var(--mauve-12);
+
+ /* mauve alpha */
+ --color-mauve-a1: var(--mauve-a1);
+ --color-mauve-a2: var(--mauve-a2);
+ --color-mauve-a3: var(--mauve-a3);
+ --color-mauve-a4: var(--mauve-a4);
+ --color-mauve-a5: var(--mauve-a5);
+ --color-mauve-a6: var(--mauve-a6);
+ --color-mauve-a7: var(--mauve-a7);
+ --color-mauve-a8: var(--mauve-a8);
+ --color-mauve-a9: var(--mauve-a9);
+ --color-mauve-a10: var(--mauve-a10);
+ --color-mauve-a11: var(--mauve-a11);
+ --color-mauve-a12: var(--mauve-a12);
+
+ /* mint */
+ --color-mint-1: var(--mint-1);
+ --color-mint-2: var(--mint-2);
+ --color-mint-3: var(--mint-3);
+ --color-mint-4: var(--mint-4);
+ --color-mint-5: var(--mint-5);
+ --color-mint-6: var(--mint-6);
+ --color-mint-7: var(--mint-7);
+ --color-mint-8: var(--mint-8);
+ --color-mint-9: var(--mint-9);
+ --color-mint-10: var(--mint-10);
+ --color-mint-11: var(--mint-11);
+ --color-mint-12: var(--mint-12);
+
+ /* mint alpha */
+ --color-mint-a1: var(--mint-a1);
+ --color-mint-a2: var(--mint-a2);
+ --color-mint-a3: var(--mint-a3);
+ --color-mint-a4: var(--mint-a4);
+ --color-mint-a5: var(--mint-a5);
+ --color-mint-a6: var(--mint-a6);
+ --color-mint-a7: var(--mint-a7);
+ --color-mint-a8: var(--mint-a8);
+ --color-mint-a9: var(--mint-a9);
+ --color-mint-a10: var(--mint-a10);
+ --color-mint-a11: var(--mint-a11);
+ --color-mint-a12: var(--mint-a12);
+
+ /* olive */
+ --color-olive-1: var(--olive-1);
+ --color-olive-2: var(--olive-2);
+ --color-olive-3: var(--olive-3);
+ --color-olive-4: var(--olive-4);
+ --color-olive-5: var(--olive-5);
+ --color-olive-6: var(--olive-6);
+ --color-olive-7: var(--olive-7);
+ --color-olive-8: var(--olive-8);
+ --color-olive-9: var(--olive-9);
+ --color-olive-10: var(--olive-10);
+ --color-olive-11: var(--olive-11);
+ --color-olive-12: var(--olive-12);
+
+ /* olive alpha */
+ --color-olive-a1: var(--olive-a1);
+ --color-olive-a2: var(--olive-a2);
+ --color-olive-a3: var(--olive-a3);
+ --color-olive-a4: var(--olive-a4);
+ --color-olive-a5: var(--olive-a5);
+ --color-olive-a6: var(--olive-a6);
+ --color-olive-a7: var(--olive-a7);
+ --color-olive-a8: var(--olive-a8);
+ --color-olive-a9: var(--olive-a9);
+ --color-olive-a10: var(--olive-a10);
+ --color-olive-a11: var(--olive-a11);
+ --color-olive-a12: var(--olive-a12);
+
+ /* orange */
+ --color-orange-1: var(--orange-1);
+ --color-orange-2: var(--orange-2);
+ --color-orange-3: var(--orange-3);
+ --color-orange-4: var(--orange-4);
+ --color-orange-5: var(--orange-5);
+ --color-orange-6: var(--orange-6);
+ --color-orange-7: var(--orange-7);
+ --color-orange-8: var(--orange-8);
+ --color-orange-9: var(--orange-9);
+ --color-orange-10: var(--orange-10);
+ --color-orange-11: var(--orange-11);
+ --color-orange-12: var(--orange-12);
+
+ /* orange alpha */
+ --color-orange-a1: var(--orange-a1);
+ --color-orange-a2: var(--orange-a2);
+ --color-orange-a3: var(--orange-a3);
+ --color-orange-a4: var(--orange-a4);
+ --color-orange-a5: var(--orange-a5);
+ --color-orange-a6: var(--orange-a6);
+ --color-orange-a7: var(--orange-a7);
+ --color-orange-a8: var(--orange-a8);
+ --color-orange-a9: var(--orange-a9);
+ --color-orange-a10: var(--orange-a10);
+ --color-orange-a11: var(--orange-a11);
+ --color-orange-a12: var(--orange-a12);
+
+ /* pink */
+ --color-pink-1: var(--pink-1);
+ --color-pink-2: var(--pink-2);
+ --color-pink-3: var(--pink-3);
+ --color-pink-4: var(--pink-4);
+ --color-pink-5: var(--pink-5);
+ --color-pink-6: var(--pink-6);
+ --color-pink-7: var(--pink-7);
+ --color-pink-8: var(--pink-8);
+ --color-pink-9: var(--pink-9);
+ --color-pink-10: var(--pink-10);
+ --color-pink-11: var(--pink-11);
+ --color-pink-12: var(--pink-12);
+
+ /* pink alpha */
+ --color-pink-a1: var(--pink-a1);
+ --color-pink-a2: var(--pink-a2);
+ --color-pink-a3: var(--pink-a3);
+ --color-pink-a4: var(--pink-a4);
+ --color-pink-a5: var(--pink-a5);
+ --color-pink-a6: var(--pink-a6);
+ --color-pink-a7: var(--pink-a7);
+ --color-pink-a8: var(--pink-a8);
+ --color-pink-a9: var(--pink-a9);
+ --color-pink-a10: var(--pink-a10);
+ --color-pink-a11: var(--pink-a11);
+ --color-pink-a12: var(--pink-a12);
+
+ /* plum */
+ --color-plum-1: var(--plum-1);
+ --color-plum-2: var(--plum-2);
+ --color-plum-3: var(--plum-3);
+ --color-plum-4: var(--plum-4);
+ --color-plum-5: var(--plum-5);
+ --color-plum-6: var(--plum-6);
+ --color-plum-7: var(--plum-7);
+ --color-plum-8: var(--plum-8);
+ --color-plum-9: var(--plum-9);
+ --color-plum-10: var(--plum-10);
+ --color-plum-11: var(--plum-11);
+ --color-plum-12: var(--plum-12);
+
+ /* plum alpha */
+ --color-plum-a1: var(--plum-a1);
+ --color-plum-a2: var(--plum-a2);
+ --color-plum-a3: var(--plum-a3);
+ --color-plum-a4: var(--plum-a4);
+ --color-plum-a5: var(--plum-a5);
+ --color-plum-a6: var(--plum-a6);
+ --color-plum-a7: var(--plum-a7);
+ --color-plum-a8: var(--plum-a8);
+ --color-plum-a9: var(--plum-a9);
+ --color-plum-a10: var(--plum-a10);
+ --color-plum-a11: var(--plum-a11);
+ --color-plum-a12: var(--plum-a12);
+
+ /* purple */
+ --color-purple-1: var(--purple-1);
+ --color-purple-2: var(--purple-2);
+ --color-purple-3: var(--purple-3);
+ --color-purple-4: var(--purple-4);
+ --color-purple-5: var(--purple-5);
+ --color-purple-6: var(--purple-6);
+ --color-purple-7: var(--purple-7);
+ --color-purple-8: var(--purple-8);
+ --color-purple-9: var(--purple-9);
+ --color-purple-10: var(--purple-10);
+ --color-purple-11: var(--purple-11);
+ --color-purple-12: var(--purple-12);
+
+ /* purple alpha */
+ --color-purple-a1: var(--purple-a1);
+ --color-purple-a2: var(--purple-a2);
+ --color-purple-a3: var(--purple-a3);
+ --color-purple-a4: var(--purple-a4);
+ --color-purple-a5: var(--purple-a5);
+ --color-purple-a6: var(--purple-a6);
+ --color-purple-a7: var(--purple-a7);
+ --color-purple-a8: var(--purple-a8);
+ --color-purple-a9: var(--purple-a9);
+ --color-purple-a10: var(--purple-a10);
+ --color-purple-a11: var(--purple-a11);
+ --color-purple-a12: var(--purple-a12);
+
+ /* red */
+ --color-red-1: var(--red-1);
+ --color-red-2: var(--red-2);
+ --color-red-3: var(--red-3);
+ --color-red-4: var(--red-4);
+ --color-red-5: var(--red-5);
+ --color-red-6: var(--red-6);
+ --color-red-7: var(--red-7);
+ --color-red-8: var(--red-8);
+ --color-red-9: var(--red-9);
+ --color-red-10: var(--red-10);
+ --color-red-11: var(--red-11);
+ --color-red-12: var(--red-12);
+
+ /* red alpha */
+ --color-red-a1: var(--red-a1);
+ --color-red-a2: var(--red-a2);
+ --color-red-a3: var(--red-a3);
+ --color-red-a4: var(--red-a4);
+ --color-red-a5: var(--red-a5);
+ --color-red-a6: var(--red-a6);
+ --color-red-a7: var(--red-a7);
+ --color-red-a8: var(--red-a8);
+ --color-red-a9: var(--red-a9);
+ --color-red-a10: var(--red-a10);
+ --color-red-a11: var(--red-a11);
+ --color-red-a12: var(--red-a12);
+
+ /* ruby */
+ --color-ruby-1: var(--ruby-1);
+ --color-ruby-2: var(--ruby-2);
+ --color-ruby-3: var(--ruby-3);
+ --color-ruby-4: var(--ruby-4);
+ --color-ruby-5: var(--ruby-5);
+ --color-ruby-6: var(--ruby-6);
+ --color-ruby-7: var(--ruby-7);
+ --color-ruby-8: var(--ruby-8);
+ --color-ruby-9: var(--ruby-9);
+ --color-ruby-10: var(--ruby-10);
+ --color-ruby-11: var(--ruby-11);
+ --color-ruby-12: var(--ruby-12);
+
+ /* ruby alpha */
+ --color-ruby-a1: var(--ruby-a1);
+ --color-ruby-a2: var(--ruby-a2);
+ --color-ruby-a3: var(--ruby-a3);
+ --color-ruby-a4: var(--ruby-a4);
+ --color-ruby-a5: var(--ruby-a5);
+ --color-ruby-a6: var(--ruby-a6);
+ --color-ruby-a7: var(--ruby-a7);
+ --color-ruby-a8: var(--ruby-a8);
+ --color-ruby-a9: var(--ruby-a9);
+ --color-ruby-a10: var(--ruby-a10);
+ --color-ruby-a11: var(--ruby-a11);
+ --color-ruby-a12: var(--ruby-a12);
+
+ /* sage */
+ --color-sage-1: var(--sage-1);
+ --color-sage-2: var(--sage-2);
+ --color-sage-3: var(--sage-3);
+ --color-sage-4: var(--sage-4);
+ --color-sage-5: var(--sage-5);
+ --color-sage-6: var(--sage-6);
+ --color-sage-7: var(--sage-7);
+ --color-sage-8: var(--sage-8);
+ --color-sage-9: var(--sage-9);
+ --color-sage-10: var(--sage-10);
+ --color-sage-11: var(--sage-11);
+ --color-sage-12: var(--sage-12);
+
+ /* sage alpha */
+ --color-sage-a1: var(--sage-a1);
+ --color-sage-a2: var(--sage-a2);
+ --color-sage-a3: var(--sage-a3);
+ --color-sage-a4: var(--sage-a4);
+ --color-sage-a5: var(--sage-a5);
+ --color-sage-a6: var(--sage-a6);
+ --color-sage-a7: var(--sage-a7);
+ --color-sage-a8: var(--sage-a8);
+ --color-sage-a9: var(--sage-a9);
+ --color-sage-a10: var(--sage-a10);
+ --color-sage-a11: var(--sage-a11);
+ --color-sage-a12: var(--sage-a12);
+
+ /* sand */
+ --color-sand-1: var(--sand-1);
+ --color-sand-2: var(--sand-2);
+ --color-sand-3: var(--sand-3);
+ --color-sand-4: var(--sand-4);
+ --color-sand-5: var(--sand-5);
+ --color-sand-6: var(--sand-6);
+ --color-sand-7: var(--sand-7);
+ --color-sand-8: var(--sand-8);
+ --color-sand-9: var(--sand-9);
+ --color-sand-10: var(--sand-10);
+ --color-sand-11: var(--sand-11);
+ --color-sand-12: var(--sand-12);
+
+ /* sand alpha */
+ --color-sand-a1: var(--sand-a1);
+ --color-sand-a2: var(--sand-a2);
+ --color-sand-a3: var(--sand-a3);
+ --color-sand-a4: var(--sand-a4);
+ --color-sand-a5: var(--sand-a5);
+ --color-sand-a6: var(--sand-a6);
+ --color-sand-a7: var(--sand-a7);
+ --color-sand-a8: var(--sand-a8);
+ --color-sand-a9: var(--sand-a9);
+ --color-sand-a10: var(--sand-a10);
+ --color-sand-a11: var(--sand-a11);
+ --color-sand-a12: var(--sand-a12);
+
+ /* sky */
+ --color-sky-1: var(--sky-1);
+ --color-sky-2: var(--sky-2);
+ --color-sky-3: var(--sky-3);
+ --color-sky-4: var(--sky-4);
+ --color-sky-5: var(--sky-5);
+ --color-sky-6: var(--sky-6);
+ --color-sky-7: var(--sky-7);
+ --color-sky-8: var(--sky-8);
+ --color-sky-9: var(--sky-9);
+ --color-sky-10: var(--sky-10);
+ --color-sky-11: var(--sky-11);
+ --color-sky-12: var(--sky-12);
+
+ /* sky alpha */
+ --color-sky-a1: var(--sky-a1);
+ --color-sky-a2: var(--sky-a2);
+ --color-sky-a3: var(--sky-a3);
+ --color-sky-a4: var(--sky-a4);
+ --color-sky-a5: var(--sky-a5);
+ --color-sky-a6: var(--sky-a6);
+ --color-sky-a7: var(--sky-a7);
+ --color-sky-a8: var(--sky-a8);
+ --color-sky-a9: var(--sky-a9);
+ --color-sky-a10: var(--sky-a10);
+ --color-sky-a11: var(--sky-a11);
+ --color-sky-a12: var(--sky-a12);
+
+ /* slate */
+ --color-slate-1: var(--slate-1);
+ --color-slate-2: var(--slate-2);
+ --color-slate-3: var(--slate-3);
+ --color-slate-4: var(--slate-4);
+ --color-slate-5: var(--slate-5);
+ --color-slate-6: var(--slate-6);
+ --color-slate-7: var(--slate-7);
+ --color-slate-8: var(--slate-8);
+ --color-slate-9: var(--slate-9);
+ --color-slate-10: var(--slate-10);
+ --color-slate-11: var(--slate-11);
+ --color-slate-12: var(--slate-12);
+
+ /* slate alpha */
+ --color-slate-a1: var(--slate-a1);
+ --color-slate-a2: var(--slate-a2);
+ --color-slate-a3: var(--slate-a3);
+ --color-slate-a4: var(--slate-a4);
+ --color-slate-a5: var(--slate-a5);
+ --color-slate-a6: var(--slate-a6);
+ --color-slate-a7: var(--slate-a7);
+ --color-slate-a8: var(--slate-a8);
+ --color-slate-a9: var(--slate-a9);
+ --color-slate-a10: var(--slate-a10);
+ --color-slate-a11: var(--slate-a11);
+ --color-slate-a12: var(--slate-a12);
+
+ /* teal */
+ --color-teal-1: var(--teal-1);
+ --color-teal-2: var(--teal-2);
+ --color-teal-3: var(--teal-3);
+ --color-teal-4: var(--teal-4);
+ --color-teal-5: var(--teal-5);
+ --color-teal-6: var(--teal-6);
+ --color-teal-7: var(--teal-7);
+ --color-teal-8: var(--teal-8);
+ --color-teal-9: var(--teal-9);
+ --color-teal-10: var(--teal-10);
+ --color-teal-11: var(--teal-11);
+ --color-teal-12: var(--teal-12);
+
+ /* teal alpha */
+ --color-teal-a1: var(--teal-a1);
+ --color-teal-a2: var(--teal-a2);
+ --color-teal-a3: var(--teal-a3);
+ --color-teal-a4: var(--teal-a4);
+ --color-teal-a5: var(--teal-a5);
+ --color-teal-a6: var(--teal-a6);
+ --color-teal-a7: var(--teal-a7);
+ --color-teal-a8: var(--teal-a8);
+ --color-teal-a9: var(--teal-a9);
+ --color-teal-a10: var(--teal-a10);
+ --color-teal-a11: var(--teal-a11);
+ --color-teal-a12: var(--teal-a12);
+
+ /* tomato */
+ --color-tomato-1: var(--tomato-1);
+ --color-tomato-2: var(--tomato-2);
+ --color-tomato-3: var(--tomato-3);
+ --color-tomato-4: var(--tomato-4);
+ --color-tomato-5: var(--tomato-5);
+ --color-tomato-6: var(--tomato-6);
+ --color-tomato-7: var(--tomato-7);
+ --color-tomato-8: var(--tomato-8);
+ --color-tomato-9: var(--tomato-9);
+ --color-tomato-10: var(--tomato-10);
+ --color-tomato-11: var(--tomato-11);
+ --color-tomato-12: var(--tomato-12);
+
+ /* tomato alpha */
+ --color-tomato-a1: var(--tomato-a1);
+ --color-tomato-a2: var(--tomato-a2);
+ --color-tomato-a3: var(--tomato-a3);
+ --color-tomato-a4: var(--tomato-a4);
+ --color-tomato-a5: var(--tomato-a5);
+ --color-tomato-a6: var(--tomato-a6);
+ --color-tomato-a7: var(--tomato-a7);
+ --color-tomato-a8: var(--tomato-a8);
+ --color-tomato-a9: var(--tomato-a9);
+ --color-tomato-a10: var(--tomato-a10);
+ --color-tomato-a11: var(--tomato-a11);
+ --color-tomato-a12: var(--tomato-a12);
+
+ /* violet */
+ --color-violet-1: var(--violet-1);
+ --color-violet-2: var(--violet-2);
+ --color-violet-3: var(--violet-3);
+ --color-violet-4: var(--violet-4);
+ --color-violet-5: var(--violet-5);
+ --color-violet-6: var(--violet-6);
+ --color-violet-7: var(--violet-7);
+ --color-violet-8: var(--violet-8);
+ --color-violet-9: var(--violet-9);
+ --color-violet-10: var(--violet-10);
+ --color-violet-11: var(--violet-11);
+ --color-violet-12: var(--violet-12);
+
+ /* violet alpha */
+ --color-violet-a1: var(--violet-a1);
+ --color-violet-a2: var(--violet-a2);
+ --color-violet-a3: var(--violet-a3);
+ --color-violet-a4: var(--violet-a4);
+ --color-violet-a5: var(--violet-a5);
+ --color-violet-a6: var(--violet-a6);
+ --color-violet-a7: var(--violet-a7);
+ --color-violet-a8: var(--violet-a8);
+ --color-violet-a9: var(--violet-a9);
+ --color-violet-a10: var(--violet-a10);
+ --color-violet-a11: var(--violet-a11);
+ --color-violet-a12: var(--violet-a12);
+
+ /* yellow */
+ --color-yellow-1: var(--yellow-1);
+ --color-yellow-2: var(--yellow-2);
+ --color-yellow-3: var(--yellow-3);
+ --color-yellow-4: var(--yellow-4);
+ --color-yellow-5: var(--yellow-5);
+ --color-yellow-6: var(--yellow-6);
+ --color-yellow-7: var(--yellow-7);
+ --color-yellow-8: var(--yellow-8);
+ --color-yellow-9: var(--yellow-9);
+ --color-yellow-10: var(--yellow-10);
+ --color-yellow-11: var(--yellow-11);
+ --color-yellow-12: var(--yellow-12);
+
+ /* yellow alpha */
+ --color-yellow-a1: var(--yellow-a1);
+ --color-yellow-a2: var(--yellow-a2);
+ --color-yellow-a3: var(--yellow-a3);
+ --color-yellow-a4: var(--yellow-a4);
+ --color-yellow-a5: var(--yellow-a5);
+ --color-yellow-a6: var(--yellow-a6);
+ --color-yellow-a7: var(--yellow-a7);
+ --color-yellow-a8: var(--yellow-a8);
+ --color-yellow-a9: var(--yellow-a9);
+ --color-yellow-a10: var(--yellow-a10);
+ --color-yellow-a11: var(--yellow-a11);
+ --color-yellow-a12: var(--yellow-a12);
+}
diff --git a/internal/test-styles/components.css b/internal/test-styles/components.css
new file mode 100644
index 0000000000..5e28f1701e
--- /dev/null
+++ b/internal/test-styles/components.css
@@ -0,0 +1,44 @@
+@import './components/accessible-icon.css';
+@import './components/accordion.css';
+@import './components/alert-dialog.css';
+@import './components/aspect-ratio.css';
+@import './components/avatar.css';
+@import './components/checkbox.css';
+@import './components/collapsible.css';
+@import './components/context-menu.css';
+@import './components/dialog.css';
+@import './components/direction.css';
+@import './components/dropdown-menu.css';
+@import './components/form.css';
+@import './components/hover-card.css';
+@import './components/label.css';
+@import './components/menubar.css';
+@import './components/navigation-menu.css';
+@import './components/one-time-password-field.css';
+@import './components/password-toggle-field.css';
+@import './components/popover.css';
+@import './components/portal.css';
+@import './components/progress.css';
+@import './components/radio-group.css';
+@import './components/scroll-area.css';
+@import './components/select.css';
+@import './components/separator.css';
+@import './components/slider.css';
+@import './components/slot.css';
+@import './components/switch.css';
+@import './components/tabs.css';
+@import './components/toast.css';
+@import './components/toggle.css';
+@import './components/toggle-group.css';
+@import './components/toolbar.css';
+@import './components/tooltip.css';
+@import './components/visually-hidden.css';
+/* internal components */
+@import './components/arrow.css';
+@import './components/collection.css';
+@import './components/dismissable-layer.css';
+@import './components/focus-guards.css';
+@import './components/focus-scope.css';
+@import './components/menu.css';
+@import './components/popper.css';
+@import './components/roving-focus.css';
diff --git a/internal/test-styles/components/accessible-icon.css b/internal/test-styles/components/accessible-icon.css
new file mode 100644
index 0000000000..97841b4d49
--- /dev/null
+++ b/internal/test-styles/components/accessible-icon.css
@@ -0,0 +1,2 @@
+.AccessibleIconRoot {
+}
diff --git a/internal/test-styles/components/accordion.css b/internal/test-styles/components/accordion.css
new file mode 100644
index 0000000000..6700c69e41
--- /dev/null
+++ b/internal/test-styles/components/accordion.css
@@ -0,0 +1,95 @@
+.AccordionRoot {
+ border-radius: 6px;
+ width: 300px;
+ background-color: var(--color-mauve-6);
+ box-shadow: 0 2px 10px var(--color-black-a4);
+}
+
+.AccordionItem {
+ overflow: hidden;
+ margin-top: 1px;
+}
+
+.AccordionItem:first-child {
+ margin-top: 0;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+}
+
+.AccordionItem:last-child {
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+}
+
+.AccordionItem:focus-within {
+ position: relative;
+ z-index: 1;
+ box-shadow: 0 0 0 2px var(--color-mauve-12);
+}
+
+.AccordionHeader {
+ display: flex;
+}
+
+.AccordionTrigger {
+ font-family: inherit;
+ background-color: transparent;
+ padding: 0 20px;
+ height: 45px;
+ flex: 1;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ font-size: 15px;
+ line-height: 1;
+ color: var(--color-violet-11);
+ box-shadow: 0 1px 0 var(--color-mauve-6);
+ background-color: var(--color-gray-0);
+}
+
+.AccordionTrigger:hover {
+ background-color: var(--color-mauve-2);
+}
+
+.AccordionContent {
+ overflow: hidden;
+ font-size: 15px;
+ color: var(--color-mauve-11);
+ background-color: var(--color-mauve-2);
+}
+.AccordionContent[data-state='open'] {
+ animation: slideDown 300ms cubic-bezier(0.87, 0, 0.13, 1);
+}
+.AccordionContent[data-state='closed'] {
+ animation: slideUp 300ms cubic-bezier(0.87, 0, 0.13, 1);
+}
+
+.AccordionContentText {
+ padding: 15px 20px;
+}
+
+.AccordionChevron {
+ color: var(--color-violet-10);
+ transition: transform 300ms cubic-bezier(0.87, 0, 0.13, 1);
+}
+.AccordionTrigger[data-state='open'] > .AccordionChevron {
+ transform: rotate(180deg);
+}
+
+@keyframes slideDown {
+ from {
+ height: 0;
+ }
+ to {
+ height: var(--radix-accordion-content-height);
+ }
+}
+
+@keyframes slideUp {
+ from {
+ height: var(--radix-accordion-content-height);
+ }
+ to {
+ height: 0;
+ }
+}
diff --git a/internal/test-styles/components/alert-dialog.css b/internal/test-styles/components/alert-dialog.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/arrow.css b/internal/test-styles/components/arrow.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/aspect-ratio.css b/internal/test-styles/components/aspect-ratio.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/avatar.css b/internal/test-styles/components/avatar.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/checkbox.css b/internal/test-styles/components/checkbox.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/collapsible.css b/internal/test-styles/components/collapsible.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/collection.css b/internal/test-styles/components/collection.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/context-menu.css b/internal/test-styles/components/context-menu.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/dialog.css b/internal/test-styles/components/dialog.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/direction.css b/internal/test-styles/components/direction.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/dismissable-layer.css b/internal/test-styles/components/dismissable-layer.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/dropdown-menu.css b/internal/test-styles/components/dropdown-menu.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/focus-guards.css b/internal/test-styles/components/focus-guards.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/focus-scope.css b/internal/test-styles/components/focus-scope.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/form.css b/internal/test-styles/components/form.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/hover-card.css b/internal/test-styles/components/hover-card.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/label.css b/internal/test-styles/components/label.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/menu.css b/internal/test-styles/components/menu.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/menubar.css b/internal/test-styles/components/menubar.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/navigation-menu.css b/internal/test-styles/components/navigation-menu.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/one-time-password-field.css b/internal/test-styles/components/one-time-password-field.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/password-toggle-field.css b/internal/test-styles/components/password-toggle-field.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/popover.css b/internal/test-styles/components/popover.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/popper.css b/internal/test-styles/components/popper.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/portal.css b/internal/test-styles/components/portal.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/progress.css b/internal/test-styles/components/progress.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/radio-group.css b/internal/test-styles/components/radio-group.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/roving-focus.css b/internal/test-styles/components/roving-focus.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/scroll-area.css b/internal/test-styles/components/scroll-area.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/select.css b/internal/test-styles/components/select.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/separator.css b/internal/test-styles/components/separator.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/slider.css b/internal/test-styles/components/slider.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/slot.css b/internal/test-styles/components/slot.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/switch.css b/internal/test-styles/components/switch.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/tabs.css b/internal/test-styles/components/tabs.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/toast.css b/internal/test-styles/components/toast.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/toggle-group.css b/internal/test-styles/components/toggle-group.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/toggle.css b/internal/test-styles/components/toggle.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/toolbar.css b/internal/test-styles/components/toolbar.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/tooltip.css b/internal/test-styles/components/tooltip.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/components/visually-hidden.css b/internal/test-styles/components/visually-hidden.css
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/internal/test-styles/global.css b/internal/test-styles/global.css
new file mode 100644
index 0000000000..6c4d006b09
--- /dev/null
+++ b/internal/test-styles/global.css
@@ -0,0 +1,10 @@
+html,
+body {
+ min-height: 100vh;
+ min-height: 100svh;
+ height: 100%;
+ color-scheme: light dark;
+ @media (prefers-color-scheme: dark) {
+ color-scheme: dark;
+ }
+}
diff --git a/internal/test-styles/package.json b/internal/test-styles/package.json
new file mode 100644
index 0000000000..cb266cdc90
--- /dev/null
+++ b/internal/test-styles/package.json
@@ -0,0 +1,12 @@
+{
+ "name": "@repo/test-styles",
+ "version": "0.0.0",
+ "private": true,
+ "license": "MIT",
+ "type": "module",
+ "dependencies": {
+ "@radix-ui/colors": "^3.0.0"
+ },
+ "devDependencies": {},
+ "scripts": {}
+}
diff --git a/internal/test-styles/resets.css b/internal/test-styles/resets.css
new file mode 100644
index 0000000000..f64145ca64
--- /dev/null
+++ b/internal/test-styles/resets.css
@@ -0,0 +1,202 @@
+* {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+ border: 0 solid hsl(0deg 0% 40%);
+}
+
+*::before,
+*::after {
+ box-sizing: inherit;
+}
+
+:host,
+html {
+ font-size: 16px;
+ line-height: 1.5;
+ font-family:
+ var(--font-family-root, ui-sans-serif),
+ system-ui,
+ sans-serif,
+ Apple Color Emoji,
+ Segoe UI Emoji,
+ Segoe UI Symbol,
+ Noto Color Emoji;
+ font-feature-settings: normal;
+ font-synthesis: none;
+ font-variation-settings: normal;
+ tab-size: 4;
+ -webkit-text-size-adjust: 100%;
+ -webkit-tap-highlight-color: transparent;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ height: 100%;
+}
+
+body {
+ line-height: inherit;
+ height: 100%;
+}
+
+button,
+input:where([type='button']),
+input:where([type='reset']),
+input:where([type='submit']) {
+ appearance: button;
+ background-color: initial;
+ background-image: none;
+}
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ font: inherit;
+ font-feature-settings: inherit;
+ line-height: inherit;
+ text-align: inherit;
+ text-transform: none;
+ letter-spacing: inherit;
+ color: inherit;
+ border: 0;
+ background: 0;
+ box-shadow: none;
+}
+
+::-webkit-file-upload-button {
+ -webkit-appearance: button;
+ font: inherit;
+}
+
+[type='search'] {
+ appearance: textfield;
+ outline-offset: -2px;
+}
+
+::-webkit-inner-spin-button,
+::-webkit-outer-spin-button {
+ height: auto;
+}
+
+::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+progress {
+ vertical-align: initial;
+}
+
+a {
+ color: inherit;
+ text-decoration: inherit;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font: inherit;
+}
+
+hr {
+ height: 0;
+ color: inherit;
+ border-top-width: 1px;
+}
+
+code,
+kbd,
+pre,
+samp {
+ font-family: var(--font-family-mono, ui-monospace), monospace;
+ font-feature-settings: normal;
+ font-variation-settings: normal;
+ font-size: 1em;
+}
+
+b,
+strong {
+ font-weight: bolder;
+}
+
+small {
+ font-size: 80%;
+}
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: initial;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
+
+audio,
+canvas,
+embed,
+iframe,
+img,
+object,
+svg,
+video {
+ display: block;
+ vertical-align: middle;
+}
+
+img,
+video {
+ max-width: 100%;
+ height: auto;
+}
+
+table {
+ text-indent: 0;
+ border-color: inherit;
+ border-collapse: collapse;
+}
+
+menu,
+ol,
+ul {
+ list-style: none;
+}
+
+summary {
+ display: list-item;
+}
+
+:-moz-focusring {
+ outline: auto;
+}
+
+:-moz-ui-invalid {
+ box-shadow: none;
+}
+
+[hidden] {
+ display: none;
+}
+
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ white-space: nowrap;
+ border-width: 0;
+}
diff --git a/package.json b/package.json
index ac2193f71b..fa072726c2 100644
--- a/package.json
+++ b/package.json
@@ -16,9 +16,15 @@
"cypress:run": "cypress run",
"cypress:dev": "cypress open",
"dev": "pnpm run storybook",
- "dev:ssr": "pnpm --filter=@repo/ssr-testing dev",
+ "dev:react-router": "pnpm --filter=test-react-router dev",
+ "dev:react-router-rsc": "pnpm --filter=test-react-router-rsc dev",
+ "dev:vite-react-17": "pnpm --filter=test-vite-react-17 dev",
+ "dev:vite-react-18": "pnpm --filter=test-vite-react-18 dev",
+ "dev:vite-react-19": "pnpm --filter=test-vite-react-19 dev",
+ "dev:next": "pnpm --filter=test-next dev",
"build-storybook": "pnpm --filter=@repo/storybook run build",
"build": "pnpm -r --parallel --filter \"./packages/**/*\" run build",
+ "build:apps": "pnpm -r --parallel --filter \"@repo/test-*\" run build",
"clean": "pnpm -r run clean",
"reset": "rm -rf node_modules && pnpm -r run reset",
"bump:stable": "changeset version",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 5ef3d64c04..c3f32388c0 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -122,40 +122,6 @@ importers:
specifier: ^1.0.0-pre.5
version: 1.0.0-pre.5(vitest@4.0.4(@types/node@22.14.0)(jsdom@26.1.0)(terser@5.39.0))
- apps/ssr-testing:
- dependencies:
- next:
- specifier: ^15.3.1
- version: 15.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
- radix-ui:
- specifier: workspace:*
- version: link:../../packages/react/radix-ui
- react:
- specifier: ^19.2.0
- version: 19.2.0
- react-dom:
- specifier: ^19.2.0
- version: 19.2.0(react@19.2.0)
- devDependencies:
- '@repo/eslint-config':
- specifier: workspace:*
- version: link:../../internal/eslint-config
- '@repo/typescript-config':
- specifier: workspace:*
- version: link:../../internal/typescript-config
- '@types/react':
- specifier: ^19.2.2
- version: 19.2.2
- '@types/react-dom':
- specifier: ^19.2.2
- version: 19.2.2(@types/react@19.2.2)
- eslint:
- specifier: ^9.38.0
- version: 9.38.0
- typescript:
- specifier: ^5.9.3
- version: 5.9.3
-
apps/storybook:
dependencies:
'@radix-ui/colors':
@@ -223,6 +189,354 @@ importers:
specifier: ^5.9.3
version: 5.9.3
+ apps/test-next:
+ dependencies:
+ '@radix-ui/react-icons':
+ specifier: ^1.3.2
+ version: 1.3.2(react@19.2.0)
+ '@repo/test-data':
+ specifier: workspace:*
+ version: link:../../internal/test-data
+ '@repo/test-registry':
+ specifier: workspace:*
+ version: link:../../internal/test-registry
+ '@repo/test-styles':
+ specifier: workspace:*
+ version: link:../../internal/test-styles
+ next:
+ specifier: 16.0.1
+ version: 16.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ radix-ui:
+ specifier: workspace:*
+ version: link:../../packages/react/radix-ui
+ react:
+ specifier: 19.2.0
+ version: 19.2.0
+ react-dom:
+ specifier: 19.2.0
+ version: 19.2.0(react@19.2.0)
+ devDependencies:
+ '@types/node':
+ specifier: ^22
+ version: 22.14.0
+ '@types/react':
+ specifier: ^19.2.2
+ version: 19.2.2
+ '@types/react-dom':
+ specifier: ^19.2.2
+ version: 19.2.2(@types/react@19.2.2)
+ eslint:
+ specifier: ^9.38.0
+ version: 9.38.0
+ eslint-config-next:
+ specifier: 16.0.1
+ version: 16.0.1(@typescript-eslint/parser@8.46.3(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3)
+ typescript:
+ specifier: ^5.9.3
+ version: 5.9.3
+
+ apps/test-react-router:
+ dependencies:
+ '@radix-ui/react-icons':
+ specifier: ^1.3.2
+ version: 1.3.2(react@19.2.0)
+ '@react-router/node':
+ specifier: ^7.9.5
+ version: 7.9.5(react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3)
+ '@react-router/serve':
+ specifier: ^7.9.5
+ version: 7.9.5(react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3)
+ '@repo/test-data':
+ specifier: workspace:*
+ version: link:../../internal/test-data
+ '@repo/test-registry':
+ specifier: workspace:*
+ version: link:../../internal/test-registry
+ '@repo/test-styles':
+ specifier: workspace:*
+ version: link:../../internal/test-styles
+ isbot:
+ specifier: ^5.1.32
+ version: 5.1.32
+ radix-ui:
+ specifier: workspace:*
+ version: link:../../packages/react/radix-ui
+ react:
+ specifier: ^19.1.1
+ version: 19.2.0
+ react-dom:
+ specifier: ^19.1.1
+ version: 19.2.0(react@19.2.0)
+ react-router:
+ specifier: ^7.9.5
+ version: 7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ devDependencies:
+ '@react-router/dev':
+ specifier: ^7.9.5
+ version: 7.9.5(@react-router/serve@7.9.5(react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3))(@types/node@22.14.0)(@vitejs/plugin-rsc@0.4.31(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(vite@7.1.12(@types/node@22.14.0)(terser@5.39.0)))(react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.39.0)(typescript@5.9.3)(vite@7.1.12(@types/node@22.14.0)(terser@5.39.0))
+ '@repo/eslint-config':
+ specifier: workspace:*
+ version: link:../../internal/eslint-config
+ '@types/node':
+ specifier: ^22
+ version: 22.14.0
+ '@types/react':
+ specifier: ^19.2.2
+ version: 19.2.2
+ '@types/react-dom':
+ specifier: ^19.2.2
+ version: 19.2.2(@types/react@19.2.2)
+ eslint:
+ specifier: ^9.38.0
+ version: 9.38.0
+ eslint-plugin-react-refresh:
+ specifier: ^0.4.22
+ version: 0.4.24(eslint@9.38.0)
+ typescript:
+ specifier: ^5.9.3
+ version: 5.9.3
+ vite:
+ specifier: ^7.1.12
+ version: 7.1.12(@types/node@22.14.0)(terser@5.39.0)
+ vite-plugin-devtools-json:
+ specifier: ^1.0.0
+ version: 1.0.0(vite@7.1.12(@types/node@22.14.0)(terser@5.39.0))
+ vite-tsconfig-paths:
+ specifier: ^5.1.4
+ version: 5.1.4(typescript@5.9.3)(vite@7.1.12(@types/node@22.14.0)(terser@5.39.0))
+
+ apps/test-react-router-rsc:
+ dependencies:
+ '@radix-ui/react-icons':
+ specifier: ^1.3.2
+ version: 1.3.2(react@19.2.0)
+ '@react-router/serve':
+ specifier: 7.9.2
+ version: 7.9.2(react-router@7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3)
+ '@remix-run/node-fetch-server':
+ specifier: 0.9.0
+ version: 0.9.0
+ '@repo/test-data':
+ specifier: workspace:*
+ version: link:../../internal/test-data
+ '@repo/test-registry':
+ specifier: workspace:*
+ version: link:../../internal/test-registry
+ '@repo/test-styles':
+ specifier: workspace:*
+ version: link:../../internal/test-styles
+ isbot:
+ specifier: ^5.1.32
+ version: 5.1.32
+ radix-ui:
+ specifier: workspace:*
+ version: link:../../packages/react/radix-ui
+ react:
+ specifier: 19.2.0
+ version: 19.2.0
+ react-dom:
+ specifier: 19.2.0
+ version: 19.2.0(react@19.2.0)
+ react-router:
+ specifier: 7.9.2
+ version: 7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ devDependencies:
+ '@react-router/dev':
+ specifier: 7.9.2
+ version: 7.9.2(@react-router/serve@7.9.2(react-router@7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3))(@types/node@22.14.0)(@vitejs/plugin-rsc@0.4.31(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(vite@7.1.6(@types/node@22.14.0)(terser@5.39.0)))(react-router@7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.39.0)(typescript@5.9.3)(vite@7.1.6(@types/node@22.14.0)(terser@5.39.0))
+ '@react-router/fs-routes':
+ specifier: 7.9.2
+ version: 7.9.2(@react-router/dev@7.9.2(@react-router/serve@7.9.2(react-router@7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3))(@types/node@22.14.0)(@vitejs/plugin-rsc@0.4.31(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(vite@7.1.6(@types/node@22.14.0)(terser@5.39.0)))(react-router@7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.39.0)(typescript@5.9.3)(vite@7.1.6(@types/node@22.14.0)(terser@5.39.0)))(typescript@5.9.3)
+ '@repo/eslint-config':
+ specifier: workspace:*
+ version: link:../../internal/eslint-config
+ '@types/node':
+ specifier: ^22
+ version: 22.14.0
+ '@types/react':
+ specifier: ^19.2.2
+ version: 19.2.2
+ '@types/react-dom':
+ specifier: ^19.2.2
+ version: 19.2.2(@types/react@19.2.2)
+ '@vitejs/plugin-rsc':
+ specifier: 0.4.31
+ version: 0.4.31(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(vite@7.1.6(@types/node@22.14.0)(terser@5.39.0))
+ eslint:
+ specifier: ^9.38.0
+ version: 9.38.0
+ eslint-plugin-react-refresh:
+ specifier: ^0.4.22
+ version: 0.4.24(eslint@9.38.0)
+ typescript:
+ specifier: 5.9.3
+ version: 5.9.3
+ vite:
+ specifier: 7.1.6
+ version: 7.1.6(@types/node@22.14.0)(terser@5.39.0)
+ vite-plugin-devtools-json:
+ specifier: ^1.0.0
+ version: 1.0.0(vite@7.1.6(@types/node@22.14.0)(terser@5.39.0))
+ vite-tsconfig-paths:
+ specifier: 5.1.4
+ version: 5.1.4(typescript@5.9.3)(vite@7.1.6(@types/node@22.14.0)(terser@5.39.0))
+
+ apps/test-vite-react-17:
+ dependencies:
+ '@radix-ui/react-icons':
+ specifier: ^1.3.2
+ version: 1.3.2(react@17.0.2)
+ '@repo/test-data':
+ specifier: workspace:*
+ version: link:../../internal/test-data
+ '@repo/test-registry':
+ specifier: workspace:*
+ version: link:../../internal/test-registry
+ '@repo/test-styles':
+ specifier: workspace:*
+ version: link:../../internal/test-styles
+ radix-ui:
+ specifier: workspace:*
+ version: link:../../packages/react/radix-ui
+ react:
+ specifier: ^17.0.2
+ version: 17.0.2
+ react-dom:
+ specifier: ^17.0.2
+ version: 17.0.2(react@17.0.2)
+ devDependencies:
+ '@repo/eslint-config':
+ specifier: workspace:*
+ version: link:../../internal/eslint-config
+ '@types/node':
+ specifier: ^22
+ version: 22.14.0
+ '@types/react':
+ specifier: ^19.2.2
+ version: 19.2.2
+ '@types/react-dom':
+ specifier: ^19.2.2
+ version: 19.2.2(@types/react@19.2.2)
+ '@vitejs/plugin-react':
+ specifier: ^5.0.4
+ version: 5.1.0(vite@7.1.12(@types/node@22.14.0)(terser@5.39.0))
+ eslint:
+ specifier: ^9.38.0
+ version: 9.38.0
+ eslint-plugin-react-refresh:
+ specifier: ^0.4.22
+ version: 0.4.24(eslint@9.38.0)
+ typescript:
+ specifier: ~5.9.3
+ version: 5.9.3
+ vite:
+ specifier: ^7.1.12
+ version: 7.1.12(@types/node@22.14.0)(terser@5.39.0)
+
+ apps/test-vite-react-18:
+ dependencies:
+ '@radix-ui/react-icons':
+ specifier: ^1.3.2
+ version: 1.3.2(react@18.3.1)
+ '@repo/test-data':
+ specifier: workspace:*
+ version: link:../../internal/test-data
+ '@repo/test-registry':
+ specifier: workspace:*
+ version: link:../../internal/test-registry
+ '@repo/test-styles':
+ specifier: workspace:*
+ version: link:../../internal/test-styles
+ radix-ui:
+ specifier: workspace:*
+ version: link:../../packages/react/radix-ui
+ react:
+ specifier: ^18.3.1
+ version: 18.3.1
+ react-dom:
+ specifier: ^18.3.1
+ version: 18.3.1(react@18.3.1)
+ devDependencies:
+ '@repo/eslint-config':
+ specifier: workspace:*
+ version: link:../../internal/eslint-config
+ '@types/node':
+ specifier: ^22
+ version: 22.14.0
+ '@types/react':
+ specifier: ^19.2.2
+ version: 19.2.2
+ '@types/react-dom':
+ specifier: ^19.2.2
+ version: 19.2.2(@types/react@19.2.2)
+ '@vitejs/plugin-react':
+ specifier: ^5.0.4
+ version: 5.1.0(vite@7.1.12(@types/node@22.14.0)(terser@5.39.0))
+ eslint:
+ specifier: ^9.38.0
+ version: 9.38.0
+ eslint-plugin-react-refresh:
+ specifier: ^0.4.22
+ version: 0.4.24(eslint@9.38.0)
+ typescript:
+ specifier: ~5.9.3
+ version: 5.9.3
+ vite:
+ specifier: ^7.1.12
+ version: 7.1.12(@types/node@22.14.0)(terser@5.39.0)
+
+ apps/test-vite-react-19:
+ dependencies:
+ '@radix-ui/react-icons':
+ specifier: ^1.3.2
+ version: 1.3.2(react@19.2.0)
+ '@repo/test-data':
+ specifier: workspace:*
+ version: link:../../internal/test-data
+ '@repo/test-registry':
+ specifier: workspace:*
+ version: link:../../internal/test-registry
+ '@repo/test-styles':
+ specifier: workspace:*
+ version: link:../../internal/test-styles
+ radix-ui:
+ specifier: workspace:*
+ version: link:../../packages/react/radix-ui
+ react:
+ specifier: ^19.1.1
+ version: 19.2.0
+ react-dom:
+ specifier: ^19.1.1
+ version: 19.2.0(react@19.2.0)
+ devDependencies:
+ '@repo/eslint-config':
+ specifier: workspace:*
+ version: link:../../internal/eslint-config
+ '@types/node':
+ specifier: ^22
+ version: 22.14.0
+ '@types/react':
+ specifier: ^19.2.2
+ version: 19.2.2
+ '@types/react-dom':
+ specifier: ^19.2.2
+ version: 19.2.2(@types/react@19.2.2)
+ '@vitejs/plugin-react':
+ specifier: ^5.0.4
+ version: 5.1.0(vite@7.1.12(@types/node@22.14.0)(terser@5.39.0))
+ eslint:
+ specifier: ^9.38.0
+ version: 9.38.0
+ eslint-plugin-react-refresh:
+ specifier: ^0.4.22
+ version: 0.4.24(eslint@9.38.0)
+ typescript:
+ specifier: ~5.9.3
+ version: 5.9.3
+ vite:
+ specifier: ^7.1.12
+ version: 7.1.12(@types/node@22.14.0)(terser@5.39.0)
+
internal/builder:
dependencies:
esbuild:
@@ -273,6 +587,37 @@ importers:
specifier: ^5.9.3
version: 5.9.3
+ internal/test-registry:
+ dependencies:
+ '@radix-ui/react-icons':
+ specifier: ^1.3.2
+ version: 1.3.2(react@19.2.0)
+ '@repo/test-data':
+ specifier: workspace:*
+ version: link:../test-data
+ radix-ui:
+ specifier: workspace:*
+ version: link:../../packages/react/radix-ui
+ devDependencies:
+ '@repo/eslint-config':
+ specifier: workspace:*
+ version: link:../eslint-config
+ '@repo/typescript-config':
+ specifier: workspace:*
+ version: link:../typescript-config
+ eslint:
+ specifier: ^9.38.0
+ version: 9.38.0
+ typescript:
+ specifier: ^5.9.3
+ version: 5.9.3
+
+ internal/test-styles:
+ dependencies:
+ '@radix-ui/colors':
+ specifier: ^3.0.0
+ version: 3.0.0
+
internal/typescript-config: {}
packages/core/number:
@@ -3327,14 +3672,28 @@ packages:
resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==}
engines: {node: '>=6.9.0'}
+ '@babel/helper-annotate-as-pure@7.27.3':
+ resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-compilation-targets@7.27.2':
resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==}
engines: {node: '>=6.9.0'}
+ '@babel/helper-create-class-features-plugin@7.28.5':
+ resolution: {integrity: sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
'@babel/helper-globals@7.28.0':
resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
engines: {node: '>=6.9.0'}
+ '@babel/helper-member-expression-to-functions@7.28.5':
+ resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-module-imports@7.27.1':
resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==}
engines: {node: '>=6.9.0'}
@@ -3345,6 +3704,24 @@ packages:
peerDependencies:
'@babel/core': ^7.0.0
+ '@babel/helper-optimise-call-expression@7.27.1':
+ resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-plugin-utils@7.27.1':
+ resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-replace-supers@7.27.1':
+ resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-skip-transparent-expression-wrappers@7.27.1':
+ resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==}
+ engines: {node: '>=6.9.0'}
+
'@babel/helper-string-parser@7.27.1':
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
engines: {node: '>=6.9.0'}
@@ -3366,6 +3743,48 @@ packages:
engines: {node: '>=6.0.0'}
hasBin: true
+ '@babel/plugin-syntax-jsx@7.27.1':
+ resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-typescript@7.27.1':
+ resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-modules-commonjs@7.27.1':
+ resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-react-jsx-self@7.27.1':
+ resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-react-jsx-source@7.27.1':
+ resolution: {integrity: sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-typescript@7.28.5':
+ resolution: {integrity: sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/preset-typescript@7.28.5':
+ resolution: {integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
'@babel/runtime@7.27.0':
resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==}
engines: {node: '>=6.9.0'}
@@ -3489,8 +3908,14 @@ packages:
'@cypress/xvfb@1.2.4':
resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==}
- '@emnapi/runtime@1.4.0':
- resolution: {integrity: sha512-64WYIf4UYcdLnbKn/umDlNjQDSS8AgZrI/R9+x5ilkUVFxXcA1Ebl+gQLc/6mERA4407Xof0R7wEyEuj091CVw==}
+ '@emnapi/core@1.7.0':
+ resolution: {integrity: sha512-pJdKGq/1iquWYtv1RRSljZklxHCOCAJFJrImO5ZLKPJVJlVUcs8yFwNQlqS0Lo8xT1VAXXTCZocF9n26FWEKsw==}
+
+ '@emnapi/runtime@1.7.0':
+ resolution: {integrity: sha512-oAYoQnCYaQZKVS53Fq23ceWMRxq5EhQsE0x0RdQ55jT7wagMu5k+fS39v1fiSLrtrLQlXwVINenqhLMtTrV/1Q==}
+
+ '@emnapi/wasi-threads@1.1.0':
+ resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==}
'@esbuild/aix-ppc64@0.25.11':
resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==}
@@ -3756,112 +4181,128 @@ packages:
resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==}
engines: {node: '>=18.18'}
- '@img/sharp-darwin-arm64@0.34.1':
- resolution: {integrity: sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==}
+ '@img/colour@1.0.0':
+ resolution: {integrity: sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==}
+ engines: {node: '>=18'}
+
+ '@img/sharp-darwin-arm64@0.34.4':
+ resolution: {integrity: sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [darwin]
- '@img/sharp-darwin-x64@0.34.1':
- resolution: {integrity: sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==}
+ '@img/sharp-darwin-x64@0.34.4':
+ resolution: {integrity: sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [darwin]
- '@img/sharp-libvips-darwin-arm64@1.1.0':
- resolution: {integrity: sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==}
+ '@img/sharp-libvips-darwin-arm64@1.2.3':
+ resolution: {integrity: sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==}
cpu: [arm64]
os: [darwin]
- '@img/sharp-libvips-darwin-x64@1.1.0':
- resolution: {integrity: sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==}
+ '@img/sharp-libvips-darwin-x64@1.2.3':
+ resolution: {integrity: sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==}
cpu: [x64]
os: [darwin]
- '@img/sharp-libvips-linux-arm64@1.1.0':
- resolution: {integrity: sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==}
+ '@img/sharp-libvips-linux-arm64@1.2.3':
+ resolution: {integrity: sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==}
cpu: [arm64]
os: [linux]
- '@img/sharp-libvips-linux-arm@1.1.0':
- resolution: {integrity: sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==}
+ '@img/sharp-libvips-linux-arm@1.2.3':
+ resolution: {integrity: sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==}
cpu: [arm]
os: [linux]
- '@img/sharp-libvips-linux-ppc64@1.1.0':
- resolution: {integrity: sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==}
+ '@img/sharp-libvips-linux-ppc64@1.2.3':
+ resolution: {integrity: sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==}
cpu: [ppc64]
os: [linux]
- '@img/sharp-libvips-linux-s390x@1.1.0':
- resolution: {integrity: sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==}
+ '@img/sharp-libvips-linux-s390x@1.2.3':
+ resolution: {integrity: sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==}
cpu: [s390x]
os: [linux]
- '@img/sharp-libvips-linux-x64@1.1.0':
- resolution: {integrity: sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==}
+ '@img/sharp-libvips-linux-x64@1.2.3':
+ resolution: {integrity: sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==}
cpu: [x64]
os: [linux]
- '@img/sharp-libvips-linuxmusl-arm64@1.1.0':
- resolution: {integrity: sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==}
+ '@img/sharp-libvips-linuxmusl-arm64@1.2.3':
+ resolution: {integrity: sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==}
cpu: [arm64]
os: [linux]
- '@img/sharp-libvips-linuxmusl-x64@1.1.0':
- resolution: {integrity: sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==}
+ '@img/sharp-libvips-linuxmusl-x64@1.2.3':
+ resolution: {integrity: sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==}
cpu: [x64]
os: [linux]
- '@img/sharp-linux-arm64@0.34.1':
- resolution: {integrity: sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==}
+ '@img/sharp-linux-arm64@0.34.4':
+ resolution: {integrity: sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
- '@img/sharp-linux-arm@0.34.1':
- resolution: {integrity: sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==}
+ '@img/sharp-linux-arm@0.34.4':
+ resolution: {integrity: sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm]
os: [linux]
- '@img/sharp-linux-s390x@0.34.1':
- resolution: {integrity: sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==}
+ '@img/sharp-linux-ppc64@0.34.4':
+ resolution: {integrity: sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@img/sharp-linux-s390x@0.34.4':
+ resolution: {integrity: sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [s390x]
os: [linux]
- '@img/sharp-linux-x64@0.34.1':
- resolution: {integrity: sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==}
+ '@img/sharp-linux-x64@0.34.4':
+ resolution: {integrity: sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
- '@img/sharp-linuxmusl-arm64@0.34.1':
- resolution: {integrity: sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==}
+ '@img/sharp-linuxmusl-arm64@0.34.4':
+ resolution: {integrity: sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
- '@img/sharp-linuxmusl-x64@0.34.1':
- resolution: {integrity: sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==}
+ '@img/sharp-linuxmusl-x64@0.34.4':
+ resolution: {integrity: sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
- '@img/sharp-wasm32@0.34.1':
- resolution: {integrity: sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==}
+ '@img/sharp-wasm32@0.34.4':
+ resolution: {integrity: sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [wasm32]
- '@img/sharp-win32-ia32@0.34.1':
- resolution: {integrity: sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==}
+ '@img/sharp-win32-arm64@0.34.4':
+ resolution: {integrity: sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [win32]
+
+ '@img/sharp-win32-ia32@0.34.4':
+ resolution: {integrity: sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [ia32]
os: [win32]
- '@img/sharp-win32-x64@0.34.1':
- resolution: {integrity: sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==}
+ '@img/sharp-win32-x64@0.34.4':
+ resolution: {integrity: sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [win32]
@@ -3924,56 +4365,65 @@ packages:
'@types/react': '>=16'
react: '>=16'
+ '@mjackson/node-fetch-server@0.2.0':
+ resolution: {integrity: sha512-EMlH1e30yzmTpGLQjlFmaDAjyOeZhng1/XCd7DExR8PNAnG/G1tyruZxEoUe11ClnwGhGrtsdnyyUx1frSzjng==}
+
+ '@napi-rs/wasm-runtime@0.2.12':
+ resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==}
+
'@neoconfetti/react@1.0.0':
resolution: {integrity: sha512-klcSooChXXOzIm+SE5IISIAn3bYzYfPjbX7D7HoqZL84oAfgREeSg5vSIaSFH+DaGzzvImTyWe1OyrJ67vik4A==}
- '@next/env@15.3.1':
- resolution: {integrity: sha512-cwK27QdzrMblHSn9DZRV+DQscHXRuJv6MydlJRpFSqJWZrTYMLzKDeyueJNN9MGd8NNiUKzDQADAf+dMLXX7YQ==}
+ '@next/env@16.0.1':
+ resolution: {integrity: sha512-LFvlK0TG2L3fEOX77OC35KowL8D7DlFF45C0OvKMC4hy8c/md1RC4UMNDlUGJqfCoCS2VWrZ4dSE6OjaX5+8mw==}
+
+ '@next/eslint-plugin-next@16.0.1':
+ resolution: {integrity: sha512-g4Cqmv/gyFEXNeVB2HkqDlYKfy+YrlM2k8AVIO/YQVEPfhVruH1VA99uT1zELLnPLIeOnx8IZ6Ddso0asfTIdw==}
- '@next/swc-darwin-arm64@15.3.1':
- resolution: {integrity: sha512-hjDw4f4/nla+6wysBL07z52Gs55Gttp5Bsk5/8AncQLJoisvTBP0pRIBK/B16/KqQyH+uN4Ww8KkcAqJODYH3w==}
+ '@next/swc-darwin-arm64@16.0.1':
+ resolution: {integrity: sha512-R0YxRp6/4W7yG1nKbfu41bp3d96a0EalonQXiMe+1H9GTHfKxGNCGFNWUho18avRBPsO8T3RmdWuzmfurlQPbg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- '@next/swc-darwin-x64@15.3.1':
- resolution: {integrity: sha512-q+aw+cJ2ooVYdCEqZVk+T4Ni10jF6Fo5DfpEV51OupMaV5XL6pf3GCzrk6kSSZBsMKZtVC1Zm/xaNBFpA6bJ2g==}
+ '@next/swc-darwin-x64@16.0.1':
+ resolution: {integrity: sha512-kETZBocRux3xITiZtOtVoVvXyQLB7VBxN7L6EPqgI5paZiUlnsgYv4q8diTNYeHmF9EiehydOBo20lTttCbHAg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
- '@next/swc-linux-arm64-gnu@15.3.1':
- resolution: {integrity: sha512-wBQ+jGUI3N0QZyWmmvRHjXjTWFy8o+zPFLSOyAyGFI94oJi+kK/LIZFJXeykvgXUk1NLDAEFDZw/NVINhdk9FQ==}
+ '@next/swc-linux-arm64-gnu@16.0.1':
+ resolution: {integrity: sha512-hWg3BtsxQuSKhfe0LunJoqxjO4NEpBmKkE+P2Sroos7yB//OOX3jD5ISP2wv8QdUwtRehMdwYz6VB50mY6hqAg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-arm64-musl@15.3.1':
- resolution: {integrity: sha512-IIxXEXRti/AulO9lWRHiCpUUR8AR/ZYLPALgiIg/9ENzMzLn3l0NSxVdva7R/VDcuSEBo0eGVCe3evSIHNz0Hg==}
+ '@next/swc-linux-arm64-musl@16.0.1':
+ resolution: {integrity: sha512-UPnOvYg+fjAhP3b1iQStcYPWeBFRLrugEyK/lDKGk7kLNua8t5/DvDbAEFotfV1YfcOY6bru76qN9qnjLoyHCQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-x64-gnu@15.3.1':
- resolution: {integrity: sha512-bfI4AMhySJbyXQIKH5rmLJ5/BP7bPwuxauTvVEiJ/ADoddaA9fgyNNCcsbu9SlqfHDoZmfI6g2EjzLwbsVTr5A==}
+ '@next/swc-linux-x64-gnu@16.0.1':
+ resolution: {integrity: sha512-Et81SdWkcRqAJziIgFtsFyJizHoWne4fzJkvjd6V4wEkWTB4MX6J0uByUb0peiJQ4WeAt6GGmMszE5KrXK6WKg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-linux-x64-musl@15.3.1':
- resolution: {integrity: sha512-FeAbR7FYMWR+Z+M5iSGytVryKHiAsc0x3Nc3J+FD5NVbD5Mqz7fTSy8CYliXinn7T26nDMbpExRUI/4ekTvoiA==}
+ '@next/swc-linux-x64-musl@16.0.1':
+ resolution: {integrity: sha512-qBbgYEBRrC1egcG03FZaVfVxrJm8wBl7vr8UFKplnxNRprctdP26xEv9nJ07Ggq4y1adwa0nz2mz83CELY7N6Q==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-win32-arm64-msvc@15.3.1':
- resolution: {integrity: sha512-yP7FueWjphQEPpJQ2oKmshk/ppOt+0/bB8JC8svPUZNy0Pi3KbPx2Llkzv1p8CoQa+D2wknINlJpHf3vtChVBw==}
+ '@next/swc-win32-arm64-msvc@16.0.1':
+ resolution: {integrity: sha512-cPuBjYP6I699/RdbHJonb3BiRNEDm5CKEBuJ6SD8k3oLam2fDRMKAvmrli4QMDgT2ixyRJ0+DTkiODbIQhRkeQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
- '@next/swc-win32-x64-msvc@15.3.1':
- resolution: {integrity: sha512-3PMvF2zRJAifcRNni9uMk/gulWfWS+qVI/pagd+4yLF5bcXPZPPH2xlYRYOsUjmCJOXSTAC2PjRzbhsRzR2fDQ==}
+ '@next/swc-win32-x64-msvc@16.0.1':
+ resolution: {integrity: sha512-XeEUJsE4JYtfrXe/LaJn3z1pD19fK0Q6Er8Qoufi+HqvdO4LEPyCxLUt4rxA+4RfYo6S9gMlmzCMU2F+AatFqQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
@@ -3990,6 +4440,22 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
+ '@nolyfill/is-core-module@1.0.39':
+ resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==}
+ engines: {node: '>=12.4.0'}
+
+ '@npmcli/git@4.1.0':
+ resolution: {integrity: sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ '@npmcli/package-json@4.0.1':
+ resolution: {integrity: sha512-lRCEGdHZomFsURroh522YvA/2cVb9oPIJrjHanCJZkiasz1BzcnLr3tBJhlV7S86MBJBuAQ33is2D60YitZL2Q==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ '@npmcli/promise-spawn@6.0.2':
+ resolution: {integrity: sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
'@pkgjs/parseargs@0.11.0':
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
@@ -4001,6 +4467,128 @@ packages:
'@radix-ui/colors@3.0.0':
resolution: {integrity: sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==}
+ '@radix-ui/react-icons@1.3.2':
+ resolution: {integrity: sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==}
+ peerDependencies:
+ react: ^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc
+
+ '@react-router/dev@7.9.2':
+ resolution: {integrity: sha512-uGDupa6S64Yv9pAtEWchPKQTyl9Ab59ztqyPilNAFYnktMEweOHTBfN4tMUinnxAJQByB6hAoLQmHcy0u6RdTA==}
+ engines: {node: '>=20.0.0'}
+ hasBin: true
+ peerDependencies:
+ '@react-router/serve': ^7.9.2
+ '@vitejs/plugin-rsc': '*'
+ react-router: ^7.9.2
+ typescript: ^5.1.0
+ vite: ^5.1.0 || ^6.0.0 || ^7.0.0
+ wrangler: ^3.28.2 || ^4.0.0
+ peerDependenciesMeta:
+ '@react-router/serve':
+ optional: true
+ '@vitejs/plugin-rsc':
+ optional: true
+ typescript:
+ optional: true
+ wrangler:
+ optional: true
+
+ '@react-router/dev@7.9.5':
+ resolution: {integrity: sha512-MkWI4zN7VbQ0tteuJtX5hmDINNS26IW236a8lM8+o1344xdnT/ZsBvcUh8AkzDdCRYEz1blgzgirpj0Wc1gmXg==}
+ engines: {node: '>=20.0.0'}
+ hasBin: true
+ peerDependencies:
+ '@react-router/serve': ^7.9.5
+ '@vitejs/plugin-rsc': '*'
+ react-router: ^7.9.5
+ typescript: ^5.1.0
+ vite: ^5.1.0 || ^6.0.0 || ^7.0.0
+ wrangler: ^3.28.2 || ^4.0.0
+ peerDependenciesMeta:
+ '@react-router/serve':
+ optional: true
+ '@vitejs/plugin-rsc':
+ optional: true
+ typescript:
+ optional: true
+ wrangler:
+ optional: true
+
+ '@react-router/express@7.9.2':
+ resolution: {integrity: sha512-8mAkthF+0oNg9eK6qiWM/VGhhbDZrK6l3IEH7B1lB8yRJArHu6BJsafzFKR2jBE0NCws4bB0STP6zJZMjztfFw==}
+ engines: {node: '>=20.0.0'}
+ peerDependencies:
+ express: ^4.17.1 || ^5
+ react-router: 7.9.2
+ typescript: ^5.1.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@react-router/express@7.9.5':
+ resolution: {integrity: sha512-Mg94Tw9JSaRuwkvIC6PaODRzsLs6mo70ppz5qdIK/G3iotSxsH08TDNdzot7CaXXevk/pIiD/+Tbn0H/asHsYA==}
+ engines: {node: '>=20.0.0'}
+ peerDependencies:
+ express: ^4.17.1 || ^5
+ react-router: 7.9.5
+ typescript: ^5.1.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@react-router/fs-routes@7.9.2':
+ resolution: {integrity: sha512-HgweLCJRkNtyKEAz18vxGCF4n+46pmxbY/WjvnWmtm4Q9WwvbxZ5MBIQevjwoTWzjXfuTVNwT+t/o8nmCmTUSA==}
+ engines: {node: '>=20.0.0'}
+ peerDependencies:
+ '@react-router/dev': ^7.9.2
+ typescript: ^5.1.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@react-router/node@7.9.2':
+ resolution: {integrity: sha512-mGqpEXVWs1XmwpJdbESE2fzvS3a43EdMCuiL2U3Nmm1IuGdSjc60gQK/IeKWjNGdgj1pZEyyQK17fYXPqjp5Uw==}
+ engines: {node: '>=20.0.0'}
+ peerDependencies:
+ react-router: 7.9.2
+ typescript: ^5.1.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@react-router/node@7.9.5':
+ resolution: {integrity: sha512-3mDd32mXh3gEkG0cLPnUaoLkY1pApsTPqn7O1j+P8aLf997uYz5lYDjt33vtMhaotlRM0x+5JziAKtz/76YBpQ==}
+ engines: {node: '>=20.0.0'}
+ peerDependencies:
+ react-router: 7.9.5
+ typescript: ^5.1.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ '@react-router/serve@7.9.2':
+ resolution: {integrity: sha512-EknsRlsSVavDH3/rTiThxQWFINfQJ04ctswXigX0e2wTMLyIBqS6XfdznrmUIwdb7r7xHocNcLJcGErdaOha8w==}
+ engines: {node: '>=20.0.0'}
+ hasBin: true
+ peerDependencies:
+ react-router: 7.9.2
+
+ '@react-router/serve@7.9.5':
+ resolution: {integrity: sha512-sww8oDNqz8SgaXEQ3maqTuMlibCMpmWvLE0s5zyEyOQb1G99clYMcXceQ2HNU2jtXJkp+P5XI1CngpGpngyTnw==}
+ engines: {node: '>=20.0.0'}
+ hasBin: true
+ peerDependencies:
+ react-router: 7.9.5
+
+ '@remix-run/node-fetch-server@0.8.1':
+ resolution: {integrity: sha512-J1dev372wtJqmqn9U/qbpbZxbJSQrogNN2+Qv1lKlpATpe/WQ9aCZfl/xSb9d2Rgh1IyLSvNxZAXPZxruO6Xig==}
+
+ '@remix-run/node-fetch-server@0.9.0':
+ resolution: {integrity: sha512-SoLMv7dbH+njWzXnOY6fI08dFMI5+/dQ+vY3n8RnnbdG7MdJEgiP28Xj/xWlnRnED/aB6SFw56Zop+LbmaaKqA==}
+
+ '@rolldown/pluginutils@1.0.0-beta.43':
+ resolution: {integrity: sha512-5Uxg7fQUCmfhax7FJke2+8B6cqgeUJUD9o2uXIKXhD+mG0mL6NObmVoi9wXEU1tY89mZKgAYA6fTbftx3q2ZPQ==}
+
'@rollup/rollup-android-arm-eabi@4.52.5':
resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==}
cpu: [arm]
@@ -4111,6 +4699,9 @@ packages:
cpu: [x64]
os: [win32]
+ '@rtsao/scc@1.1.0':
+ resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==}
+
'@sec-ant/readable-stream@0.4.1':
resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
@@ -4323,6 +4914,9 @@ packages:
peerDependencies:
'@testing-library/dom': '>=7.21.4'
+ '@tybys/wasm-util@0.10.1':
+ resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==}
+
'@types/aria-query@5.0.4':
resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
@@ -4371,6 +4965,9 @@ packages:
'@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+ '@types/json5@0.0.29':
+ resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
+
'@types/jsonfile@6.1.4':
resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==}
@@ -4426,6 +5023,14 @@ packages:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0'
+ '@typescript-eslint/eslint-plugin@8.46.3':
+ resolution: {integrity: sha512-sbaQ27XBUopBkRiuY/P9sWGOWUW4rl8fDoHIUmLpZd8uldsTyB4/Zg6bWTegPoTLnKj9Hqgn3QD6cjPNB32Odw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^8.46.3
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/parser@8.29.1':
resolution: {integrity: sha512-zczrHVEqEaTwh12gWBIJWj8nx+ayDcCJs06yoNMY0kwjMWDM6+kppljY+BxWI06d2Ja+h4+WdufDcwMnnMEWmg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -4433,10 +5038,33 @@ packages:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0'
+ '@typescript-eslint/parser@8.46.3':
+ resolution: {integrity: sha512-6m1I5RmHBGTnUGS113G04DMu3CpSdxCAU/UvtjNWL4Nuf3MW9tQhiJqRlHzChIkhy6kZSAQmc+I1bcGjE3yNKg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
+ '@typescript-eslint/project-service@8.46.3':
+ resolution: {integrity: sha512-Fz8yFXsp2wDFeUElO88S9n4w1I4CWDTXDqDr9gYvZgUpwXQqmZBr9+NTTql5R3J7+hrJZPdpiWaB9VNhAKYLuQ==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/scope-manager@8.29.1':
resolution: {integrity: sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@typescript-eslint/scope-manager@8.46.3':
+ resolution: {integrity: sha512-FCi7Y1zgrmxp3DfWfr+3m9ansUUFoy8dkEdeQSgA9gbm8DaHYvZCdkFRQrtKiedFf3Ha6VmoqoAaP68+i+22kg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@typescript-eslint/tsconfig-utils@8.46.3':
+ resolution: {integrity: sha512-GLupljMniHNIROP0zE7nCcybptolcH8QZfXOpCfhQDAdwJ/ZTlcaBOYebSOZotpti/3HrHSw7D3PZm75gYFsOA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/type-utils@8.29.1':
resolution: {integrity: sha512-DkDUSDwZVCYN71xA4wzySqqcZsHKic53A4BLqmrWFFpOpNSoxX233lwGu/2135ymTCR04PoKiEEEvN1gFYg4Tw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -4444,16 +5072,33 @@ packages:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0'
+ '@typescript-eslint/type-utils@8.46.3':
+ resolution: {integrity: sha512-ZPCADbr+qfz3aiTTYNNkCbUt+cjNwI/5McyANNrFBpVxPt7GqpEYz5ZfdwuFyGUnJ9FdDXbGODUu6iRCI6XRXw==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/types@8.29.1':
resolution: {integrity: sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@typescript-eslint/types@8.46.3':
+ resolution: {integrity: sha512-G7Ok9WN/ggW7e/tOf8TQYMaxgID3Iujn231hfi0Pc7ZheztIJVpO44ekY00b7akqc6nZcvregk0Jpah3kep6hA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
'@typescript-eslint/typescript-estree@8.29.1':
resolution: {integrity: sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies:
typescript: '>=4.8.4 <5.9.0'
+ '@typescript-eslint/typescript-estree@8.46.3':
+ resolution: {integrity: sha512-f/NvtRjOm80BtNM5OQtlaBdM5BRFUv7gf381j9wygDNL+qOYSNOgtQ/DCndiYi80iIOv76QqaTmp4fa9hwI0OA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/utils@8.29.1':
resolution: {integrity: sha512-QAkFEbytSaB8wnmB+DflhUPz6CLbFWE2SnSCrRMEa+KnXIzDYbpsn++1HGvnfAsUY44doDXmvRkO5shlM/3UfA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -4461,10 +5106,129 @@ packages:
eslint: ^8.57.0 || ^9.0.0
typescript: '>=4.8.4 <5.9.0'
+ '@typescript-eslint/utils@8.46.3':
+ resolution: {integrity: sha512-VXw7qmdkucEx9WkmR3ld/u6VhRyKeiF1uxWwCy/iuNfokjJ7VhsgLSOTjsol8BunSw190zABzpwdNsze2Kpo4g==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
'@typescript-eslint/visitor-keys@8.29.1':
resolution: {integrity: sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@typescript-eslint/visitor-keys@8.46.3':
+ resolution: {integrity: sha512-uk574k8IU0rOF/AjniX8qbLSGURJVUCeM5e4MIMKBFFi8weeiLrG1fyQejyLXQpRZbU/1BuQasleV/RfHC3hHg==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+
+ '@unrs/resolver-binding-android-arm-eabi@1.11.1':
+ resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==}
+ cpu: [arm]
+ os: [android]
+
+ '@unrs/resolver-binding-android-arm64@1.11.1':
+ resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==}
+ cpu: [arm64]
+ os: [android]
+
+ '@unrs/resolver-binding-darwin-arm64@1.11.1':
+ resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@unrs/resolver-binding-darwin-x64@1.11.1':
+ resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@unrs/resolver-binding-freebsd-x64@1.11.1':
+ resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1':
+ resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==}
+ cpu: [arm]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1':
+ resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==}
+ cpu: [arm]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-arm64-gnu@1.11.1':
+ resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-arm64-musl@1.11.1':
+ resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
+ resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
+ resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
+ resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
+ resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==}
+ cpu: [s390x]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-x64-gnu@1.11.1':
+ resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==}
+ cpu: [x64]
+ os: [linux]
+
+ '@unrs/resolver-binding-linux-x64-musl@1.11.1':
+ resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==}
+ cpu: [x64]
+ os: [linux]
+
+ '@unrs/resolver-binding-wasm32-wasi@1.11.1':
+ resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+
+ '@unrs/resolver-binding-win32-arm64-msvc@1.11.1':
+ resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@unrs/resolver-binding-win32-ia32-msvc@1.11.1':
+ resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@unrs/resolver-binding-win32-x64-msvc@1.11.1':
+ resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==}
+ cpu: [x64]
+ os: [win32]
+
+ '@vitejs/plugin-react@5.1.0':
+ resolution: {integrity: sha512-4LuWrg7EKWgQaMJfnN+wcmbAW+VSsCmqGohftWjuct47bv8uE4n/nPpq4XjJPsxgq00GGG5J8dvBczp8uxScew==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ peerDependencies:
+ vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
+
+ '@vitejs/plugin-rsc@0.4.31':
+ resolution: {integrity: sha512-SCPMB5gXm/hmzQrM4TLV1breRtR0RFz73BpdFyFwqgWZDO+gDbz/05TafNtD9cMbDjX9Kx+8LfQJHeMUG/KCUw==}
+ peerDependencies:
+ react: '*'
+ react-dom: '*'
+ vite: '*'
+
'@vitest/eslint-plugin@1.1.39':
resolution: {integrity: sha512-l5/MUFCYI8nxwr62JHlWwXfeQNS8E7xy71lSLGQ3CrjGjBdWLs1Rtee+BvYwy2m4YVPwYqUwdcAIOaZOwPUpfg==}
peerDependencies:
@@ -4587,6 +5351,10 @@ packages:
'@zeit/schemas@2.36.0':
resolution: {integrity: sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg==}
+ accepts@1.3.8:
+ resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
+ engines: {node: '>= 0.6'}
+
acorn-import-phases@1.0.4:
resolution: {integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==}
engines: {node: '>=10.13.0'}
@@ -4710,10 +5478,17 @@ packages:
resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
engines: {node: '>= 0.4'}
+ array-flatten@1.1.1:
+ resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==}
+
array-includes@3.1.8:
resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==}
engines: {node: '>= 0.4'}
+ array-includes@3.1.9:
+ resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==}
+ engines: {node: '>= 0.4'}
+
array-union@2.1.0:
resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
engines: {node: '>=8'}
@@ -4722,6 +5497,10 @@ packages:
resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==}
engines: {node: '>= 0.4'}
+ array.prototype.findlastindex@1.2.6:
+ resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==}
+ engines: {node: '>= 0.4'}
+
array.prototype.flat@1.3.3:
resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==}
engines: {node: '>= 0.4'}
@@ -4792,6 +5571,9 @@ packages:
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
engines: {node: '>= 0.4'}
+ babel-dead-code-elimination@1.0.10:
+ resolution: {integrity: sha512-DV5bdJZTzZ0zn0DC24v3jD7Mnidh6xhKa4GfKCbq3sfW8kaWhDdZjP3i81geA8T33tdYqWKw4D3fVv0CwEgKVA==}
+
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
@@ -4802,6 +5584,10 @@ packages:
resolution: {integrity: sha512-JMWsdF+O8Orq3EMukbUN1QfbLK9mX2CkUmQBcW2T0s8OmdAUL5LLM/6wFwSrqXzlXB13yhyK9gTKS1rIizOduQ==}
hasBin: true
+ basic-auth@2.0.1:
+ resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==}
+ engines: {node: '>= 0.8'}
+
bcrypt-pbkdf@1.0.2:
resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==}
@@ -4826,6 +5612,10 @@ packages:
bluebird@3.7.2:
resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
+ body-parser@1.20.3:
+ resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
boolbase@1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
@@ -4868,10 +5658,6 @@ packages:
peerDependencies:
esbuild: '>=0.18'
- busboy@1.6.0:
- resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
- engines: {node: '>=10.16.0'}
-
bytes@3.0.0:
resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==}
engines: {node: '>= 0.8'}
@@ -5036,13 +5822,6 @@ packages:
color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
- color-string@1.9.1:
- resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
-
- color@4.2.3:
- resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
- engines: {node: '>=12.5.0'}
-
colorette@2.0.20:
resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
@@ -5098,9 +5877,28 @@ packages:
resolution: {integrity: sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==}
engines: {node: '>= 0.6'}
+ content-disposition@0.5.4:
+ resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==}
+ engines: {node: '>= 0.6'}
+
+ content-type@1.0.5:
+ resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==}
+ engines: {node: '>= 0.6'}
+
convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+ cookie-signature@1.0.6:
+ resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==}
+
+ cookie@0.7.1:
+ resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==}
+ engines: {node: '>= 0.6'}
+
+ cookie@1.0.2:
+ resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==}
+ engines: {node: '>=18'}
+
core-util-is@1.0.2:
resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==}
@@ -5241,6 +6039,14 @@ packages:
dedent@0.7.0:
resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==}
+ dedent@1.7.0:
+ resolution: {integrity: sha512-HGFtf8yhuhGhqO07SV79tRp+br4MnbdjeVxotpn1QBl30pcLLCQjX5b2295ll0fv8RKDKsmWYrl05usHM9CewQ==}
+ peerDependencies:
+ babel-plugin-macros: ^3.1.0
+ peerDependenciesMeta:
+ babel-plugin-macros:
+ optional: true
+
deep-eql@5.0.2:
resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
engines: {node: '>=6'}
@@ -5272,16 +6078,24 @@ packages:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
+ depd@2.0.0:
+ resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+ engines: {node: '>= 0.8'}
+
dequal@2.0.3:
resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
engines: {node: '>=6'}
+ destroy@1.2.0:
+ resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+
detect-indent@6.1.0:
resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
engines: {node: '>=8'}
- detect-libc@2.0.3:
- resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
+ detect-libc@2.1.2:
+ resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
engines: {node: '>=8'}
detect-node-es@1.1.0:
@@ -5337,6 +6151,9 @@ packages:
ecc-jsbn@0.1.2:
resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==}
+ ee-first@1.1.1:
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+
electron-to-chromium@1.5.134:
resolution: {integrity: sha512-zSwzrLg3jNP3bwsLqWHmS5z2nIOQ5ngMnfMZOWWtXnqqQkPVyOipxK98w+1beLw1TB+EImPNcG8wVP/cLVs2Og==}
@@ -5349,6 +6166,14 @@ packages:
emoji-regex@9.2.2:
resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+ encodeurl@1.0.2:
+ resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
+ engines: {node: '>= 0.8'}
+
+ encodeurl@2.0.0:
+ resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
+ engines: {node: '>= 0.8'}
+
end-of-stream@1.4.4:
resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
@@ -5370,6 +6195,9 @@ packages:
resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
engines: {node: '>=0.12'}
+ err-code@2.0.3:
+ resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==}
+
error-ex@1.3.2:
resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
@@ -5377,6 +6205,10 @@ packages:
resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==}
engines: {node: '>= 0.4'}
+ es-abstract@1.24.0:
+ resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==}
+ engines: {node: '>= 0.4'}
+
es-define-property@1.0.1:
resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
engines: {node: '>= 0.4'}
@@ -5425,6 +6257,9 @@ packages:
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
+ escape-html@1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+
escape-string-regexp@1.0.5:
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
engines: {node: '>=0.8.0'}
@@ -5433,11 +6268,67 @@ packages:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
+ eslint-config-next@16.0.1:
+ resolution: {integrity: sha512-wNuHw5gNOxwLUvpg0cu6IL0crrVC9hAwdS/7UwleNkwyaMiWIOAwf8yzXVqBBzL3c9A7jVRngJxjoSpPP1aEhg==}
+ peerDependencies:
+ eslint: '>=9.0.0'
+ typescript: '>=3.3.1'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ eslint-import-resolver-node@0.3.9:
+ resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==}
+
+ eslint-import-resolver-typescript@3.10.1:
+ resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ peerDependencies:
+ eslint: '*'
+ eslint-plugin-import: '*'
+ eslint-plugin-import-x: '*'
+ peerDependenciesMeta:
+ eslint-plugin-import:
+ optional: true
+ eslint-plugin-import-x:
+ optional: true
+
+ eslint-module-utils@2.12.1:
+ resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: '*'
+ eslint-import-resolver-node: '*'
+ eslint-import-resolver-typescript: '*'
+ eslint-import-resolver-webpack: '*'
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+ eslint:
+ optional: true
+ eslint-import-resolver-node:
+ optional: true
+ eslint-import-resolver-typescript:
+ optional: true
+ eslint-import-resolver-webpack:
+ optional: true
+
eslint-plugin-cypress@5.2.0:
resolution: {integrity: sha512-vuCUBQloUSILxtJrUWV39vNIQPlbg0L7cTunEAzvaUzv9LFZZym+KFLH18n9j2cZuFPdlxOqTubCvg5se0DyGw==}
peerDependencies:
eslint: '>=9'
+ eslint-plugin-import@2.32.0:
+ resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ '@typescript-eslint/parser': '*'
+ eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9
+ peerDependenciesMeta:
+ '@typescript-eslint/parser':
+ optional: true
+
eslint-plugin-jsx-a11y@6.10.2:
resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==}
engines: {node: '>=4.0'}
@@ -5450,6 +6341,12 @@ packages:
peerDependencies:
eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
+ eslint-plugin-react-hooks@7.0.1:
+ resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==}
+ engines: {node: '>=18'}
+ peerDependencies:
+ eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0
+
eslint-plugin-react-refresh@0.4.24:
resolution: {integrity: sha512-nLHIW7TEq3aLrEYWpVaJ1dRgFR+wLDPN8e8FpYAql/bMV2oBEfC37K0gLEGgv9fy66juNShSMV8OkTqzltcG/w==}
peerDependencies:
@@ -5540,6 +6437,10 @@ packages:
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
engines: {node: '>=0.10.0'}
+ etag@1.8.1:
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
+
event-stream@3.3.4:
resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==}
@@ -5566,10 +6467,18 @@ packages:
resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==}
engines: {node: '>=4'}
+ exit-hook@2.2.1:
+ resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==}
+ engines: {node: '>=6'}
+
expect-type@1.2.2:
resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==}
engines: {node: '>=12.0.0'}
+ express@4.21.2:
+ resolution: {integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==}
+ engines: {node: '>= 0.10.0'}
+
extend@3.0.2:
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
@@ -5588,6 +6497,10 @@ packages:
fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+ fast-glob@3.3.1:
+ resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==}
+ engines: {node: '>=8.6.0'}
+
fast-glob@3.3.3:
resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
engines: {node: '>=8.6.0'}
@@ -5636,6 +6549,10 @@ packages:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
+ finalhandler@1.3.1:
+ resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==}
+ engines: {node: '>= 0.8'}
+
find-cache-dir@3.3.2:
resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==}
engines: {node: '>=8'}
@@ -5700,6 +6617,14 @@ packages:
form-serialize@0.7.2:
resolution: {integrity: sha512-ohEA4Crzd/+hSREjGf4kSsy73WhAtQ7H+blGEz2DVd+JCi0TV5nZBSn9PaPlvrl9m29fa6xclAfpRkqZ57b1bw==}
+ forwarded@0.2.0:
+ resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==}
+ engines: {node: '>= 0.6'}
+
+ fresh@0.5.2:
+ resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
+ engines: {node: '>= 0.6'}
+
from@0.1.7:
resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==}
@@ -5756,6 +6681,10 @@ packages:
resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==}
engines: {node: '>=6'}
+ get-port@5.1.1:
+ resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==}
+ engines: {node: '>=8'}
+
get-proto@1.0.1:
resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
engines: {node: '>= 0.4'}
@@ -5776,6 +6705,9 @@ packages:
resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
engines: {node: '>= 0.4'}
+ get-tsconfig@4.13.0:
+ resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==}
+
getpass@0.1.7:
resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==}
@@ -5822,6 +6754,9 @@ packages:
resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
engines: {node: '>=10'}
+ globrex@0.1.2:
+ resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
+
gopd@1.2.0:
resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
engines: {node: '>= 0.4'}
@@ -5867,6 +6802,16 @@ packages:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
+ hermes-estree@0.25.1:
+ resolution: {integrity: sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==}
+
+ hermes-parser@0.25.1:
+ resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==}
+
+ hosted-git-info@6.1.3:
+ resolution: {integrity: sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
html-encoding-sniffer@4.0.0:
resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==}
engines: {node: '>=18'}
@@ -5894,6 +6839,10 @@ packages:
htmlparser2@6.1.0:
resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==}
+ http-errors@2.0.0:
+ resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
+ engines: {node: '>= 0.8'}
+
http-proxy-agent@7.0.2:
resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==}
engines: {node: '>= 14'}
@@ -5922,6 +6871,10 @@ packages:
resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==}
engines: {node: '>=18.18.0'}
+ iconv-lite@0.4.24:
+ resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+ engines: {node: '>=0.10.0'}
+
iconv-lite@0.6.3:
resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
engines: {node: '>=0.10.0'}
@@ -5977,6 +6930,10 @@ packages:
resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
engines: {node: '>= 0.4'}
+ ipaddr.js@1.9.1:
+ resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
+ engines: {node: '>= 0.10'}
+
is-array-buffer@3.0.5:
resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
engines: {node: '>= 0.4'}
@@ -5984,9 +6941,6 @@ packages:
is-arrayish@0.2.1:
resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
- is-arrayish@0.3.2:
- resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
-
is-async-function@2.1.1:
resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==}
engines: {node: '>= 0.4'}
@@ -6006,6 +6960,9 @@ packages:
resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==}
engines: {node: '>= 0.4'}
+ is-bun-module@2.0.0:
+ resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==}
+
is-callable@1.2.7:
resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
engines: {node: '>= 0.4'}
@@ -6055,6 +7012,10 @@ packages:
resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
engines: {node: '>= 0.4'}
+ is-negative-zero@2.0.3:
+ resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==}
+ engines: {node: '>= 0.4'}
+
is-number-object@1.1.1:
resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
engines: {node: '>= 0.4'}
@@ -6078,6 +7039,9 @@ packages:
is-potential-custom-element-name@1.0.1:
resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==}
+ is-reference@3.0.3:
+ resolution: {integrity: sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==}
+
is-regex@1.2.1:
resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
engines: {node: '>= 0.4'}
@@ -6148,6 +7112,10 @@ packages:
isarray@2.0.5:
resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
+ isbot@5.1.32:
+ resolution: {integrity: sha512-VNfjM73zz2IBZmdShMfAUg10prm6t7HFUQmNAEOAVS4YH92ZrZcvkMcGX6cIgBJAzWDzPent/EeAtYEHNPNPBQ==}
+ engines: {node: '>=18'}
+
isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
@@ -6205,6 +7173,11 @@ packages:
canvas:
optional: true
+ jsesc@3.0.2:
+ resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
+ engines: {node: '>=6'}
+ hasBin: true
+
jsesc@3.1.0:
resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
engines: {node: '>=6'}
@@ -6216,6 +7189,10 @@ packages:
json-parse-even-better-errors@2.3.1:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+ json-parse-even-better-errors@3.0.2:
+ resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
json-schema-traverse@0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
@@ -6231,6 +7208,10 @@ packages:
json-stringify-safe@5.0.1:
resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
+ json5@1.0.2:
+ resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
+ hasBin: true
+
json5@2.2.3:
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
engines: {node: '>=6'}
@@ -6353,6 +7334,10 @@ packages:
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+ lru-cache@7.18.3:
+ resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==}
+ engines: {node: '>=12'}
+
lz-string@1.5.0:
resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
hasBin: true
@@ -6377,10 +7362,17 @@ packages:
mdn-data@2.12.2:
resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==}
+ media-typer@0.3.0:
+ resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
+ engines: {node: '>= 0.6'}
+
memfs@3.5.3:
resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==}
engines: {node: '>= 4.0.0'}
+ merge-descriptors@1.0.3:
+ resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==}
+
merge-stream@2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
@@ -6388,6 +7380,10 @@ packages:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
+ methods@1.1.2:
+ resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==}
+ engines: {node: '>= 0.6'}
+
micromatch@4.0.8:
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
engines: {node: '>=8.6'}
@@ -6408,6 +7404,11 @@ packages:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
engines: {node: '>= 0.6'}
+ mime@1.6.0:
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
mimic-fn@2.1.0:
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
engines: {node: '>=6'}
@@ -6433,6 +7434,10 @@ packages:
mlly@1.8.0:
resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==}
+ morgan@1.10.1:
+ resolution: {integrity: sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A==}
+ engines: {node: '>= 0.8.0'}
+
mri@1.2.0:
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
engines: {node: '>=4'}
@@ -6451,9 +7456,18 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
+ napi-postinstall@0.3.4:
+ resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==}
+ engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
+ hasBin: true
+
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+ negotiator@0.6.3:
+ resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
+ engines: {node: '>= 0.6'}
+
negotiator@0.6.4:
resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==}
engines: {node: '>= 0.6'}
@@ -6461,13 +7475,13 @@ packages:
neo-async@2.6.2:
resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
- next@15.3.1:
- resolution: {integrity: sha512-8+dDV0xNLOgHlyBxP1GwHGVaNXsmp+2NhZEYrXr24GWLHtt27YrBPbPuHvzlhi7kZNYjeJNR93IF5zfFu5UL0g==}
- engines: {node: ^18.18.0 || ^19.8.0 || >= 20.0.0}
+ next@16.0.1:
+ resolution: {integrity: sha512-e9RLSssZwd35p7/vOa+hoDFggUZIUbZhIUSLZuETCwrCVvxOs87NamoUzT+vbcNAL8Ld9GobBnWOA6SbV/arOw==}
+ engines: {node: '>=20.9.0'}
hasBin: true
peerDependencies:
'@opentelemetry/api': ^1.1.0
- '@playwright/test': ^1.41.2
+ '@playwright/test': ^1.51.1
babel-plugin-react-compiler: '*'
react: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
react-dom: ^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0
@@ -6494,10 +7508,30 @@ packages:
node-releases@2.0.26:
resolution: {integrity: sha512-S2M9YimhSjBSvYnlr5/+umAnPHE++ODwt5e2Ij6FoX45HA/s4vHdkDx1eax2pAPeAOqu4s9b7ppahsyEFdVqQA==}
+ normalize-package-data@5.0.0:
+ resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
+ npm-install-checks@6.3.0:
+ resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ npm-normalize-package-bin@3.0.1:
+ resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ npm-package-arg@10.1.0:
+ resolution: {integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
+ npm-pick-manifest@8.0.2:
+ resolution: {integrity: sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
npm-run-path@4.0.1:
resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==}
engines: {node: '>=8'}
@@ -6536,6 +7570,10 @@ packages:
resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==}
engines: {node: '>= 0.4'}
+ object.groupby@1.0.3:
+ resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==}
+ engines: {node: '>= 0.4'}
+
object.values@1.2.1:
resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==}
engines: {node: '>= 0.4'}
@@ -6543,6 +7581,14 @@ packages:
objectorarray@1.0.5:
resolution: {integrity: sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==}
+ on-finished@2.3.0:
+ resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==}
+ engines: {node: '>= 0.8'}
+
+ on-finished@2.4.1:
+ resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+ engines: {node: '>= 0.8'}
+
on-headers@1.1.0:
resolution: {integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==}
engines: {node: '>= 0.8'}
@@ -6608,6 +7654,10 @@ packages:
resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
engines: {node: '>=10'}
+ p-map@7.0.3:
+ resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==}
+ engines: {node: '>=18'}
+
p-try@2.2.0:
resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
engines: {node: '>=6'}
@@ -6639,6 +7689,10 @@ packages:
parse5@8.0.0:
resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==}
+ parseurl@1.3.3:
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
+
pascal-case@3.1.2:
resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
@@ -6672,6 +7726,9 @@ packages:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'}
+ path-to-regexp@0.1.12:
+ resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==}
+
path-to-regexp@3.3.0:
resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==}
@@ -6679,6 +7736,9 @@ packages:
resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
engines: {node: '>=8'}
+ pathe@1.1.2:
+ resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
+
pathe@2.0.3:
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
@@ -6695,6 +7755,9 @@ packages:
performance-now@2.1.0:
resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==}
+ periscopic@4.0.2:
+ resolution: {integrity: sha512-sqpQDUy8vgB7ycLkendSKS6HnVz1Rneoc3Rc+ZBUCe2pbqlVuCC5vF52l0NJ1aiMg/r1qfYF9/myz8CZeI2rjA==}
+
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
@@ -6822,13 +7885,33 @@ packages:
peerDependencies:
prettier: ^3.0.0
+ proc-log@3.0.0:
+ resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
process@0.11.10:
resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
engines: {node: '>= 0.6.0'}
+ promise-inflight@1.0.1:
+ resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
+ peerDependencies:
+ bluebird: '*'
+ peerDependenciesMeta:
+ bluebird:
+ optional: true
+
+ promise-retry@2.0.1:
+ resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==}
+ engines: {node: '>=10'}
+
prop-types@15.8.1:
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
+ proxy-addr@2.0.7:
+ resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
+ engines: {node: '>= 0.10'}
+
proxy-from-env@1.0.0:
resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==}
@@ -6847,6 +7930,10 @@ packages:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
+ qs@6.13.0:
+ resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==}
+ engines: {node: '>=0.6'}
+
qs@6.14.0:
resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==}
engines: {node: '>=0.6'}
@@ -6868,6 +7955,10 @@ packages:
resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
engines: {node: '>= 0.6'}
+ raw-body@2.5.2:
+ resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==}
+ engines: {node: '>= 0.8'}
+
rc@1.2.8:
resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
hasBin: true
@@ -6881,6 +7972,16 @@ packages:
resolution: {integrity: sha512-hlSJDQ2synMPKFZOsKo9Hi8WWZTC7POR8EmWvTSjow+VDgKzkmjQvFm2fk0tmRw+f0vTOIYKlarR0iL4996pdg==}
engines: {node: '>=16.14.0'}
+ react-dom@17.0.2:
+ resolution: {integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==}
+ peerDependencies:
+ react: 17.0.2
+
+ react-dom@18.3.1:
+ resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
+ peerDependencies:
+ react: ^18.3.1
+
react-dom@19.2.0:
resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==}
peerDependencies:
@@ -6895,6 +7996,14 @@ packages:
react-is@19.2.0:
resolution: {integrity: sha512-x3Ax3kNSMIIkyVYhWPyO09bu0uttcAIoecO/um/rKGQ4EltYWVYtyiGkS/3xMynrbVQdS69Jhlv8FXUEZehlzA==}
+ react-refresh@0.14.2:
+ resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==}
+ engines: {node: '>=0.10.0'}
+
+ react-refresh@0.18.0:
+ resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==}
+ engines: {node: '>=0.10.0'}
+
react-remove-scroll-bar@2.3.8:
resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==}
engines: {node: '>=10'}
@@ -6915,6 +8024,26 @@ packages:
'@types/react':
optional: true
+ react-router@7.9.2:
+ resolution: {integrity: sha512-i2TPp4dgaqrOqiRGLZmqh2WXmbdFknUyiCRmSKs0hf6fWXkTKg5h56b+9F22NbGRAMxjYfqQnpi63egzD2SuZA==}
+ engines: {node: '>=20.0.0'}
+ peerDependencies:
+ react: '>=18'
+ react-dom: '>=18'
+ peerDependenciesMeta:
+ react-dom:
+ optional: true
+
+ react-router@7.9.5:
+ resolution: {integrity: sha512-JmxqrnBZ6E9hWmf02jzNn9Jm3UqyeimyiwzD69NjxGySG6lIz/1LVPsoTCwN7NBX2XjCEa1LIX5EMz1j2b6u6A==}
+ engines: {node: '>=20.0.0'}
+ peerDependencies:
+ react: '>=18'
+ react-dom: '>=18'
+ peerDependenciesMeta:
+ react-dom:
+ optional: true
+
react-style-singleton@2.2.3:
resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==}
engines: {node: '>=10'}
@@ -6930,6 +8059,14 @@ packages:
peerDependencies:
react: ^19.2.0
+ react@17.0.2:
+ resolution: {integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==}
+ engines: {node: '>=0.10.0'}
+
+ react@18.3.1:
+ resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
+ engines: {node: '>=0.10.0'}
+
react@19.2.0:
resolution: {integrity: sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==}
engines: {node: '>=0.10.0'}
@@ -6998,6 +8135,9 @@ packages:
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
engines: {node: '>=8'}
+ resolve-pkg-maps@1.0.0:
+ resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==}
+
resolve@1.22.10:
resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
engines: {node: '>= 0.4'}
@@ -7011,6 +8151,10 @@ packages:
resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
engines: {node: '>=8'}
+ retry@0.12.0:
+ resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==}
+ engines: {node: '>= 4'}
+
reusify@1.1.0:
resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
@@ -7041,6 +8185,9 @@ packages:
resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
engines: {node: '>=0.4'}
+ safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+
safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
@@ -7059,6 +8206,12 @@ packages:
resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==}
engines: {node: '>=v12.22.7'}
+ scheduler@0.20.2:
+ resolution: {integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==}
+
+ scheduler@0.23.2:
+ resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
+
scheduler@0.27.0:
resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==}
@@ -7079,17 +8232,33 @@ packages:
engines: {node: '>=10'}
hasBin: true
+ semver@7.7.3:
+ resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ send@0.19.0:
+ resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==}
+ engines: {node: '>= 0.8.0'}
+
serialize-javascript@6.0.2:
resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==}
serve-handler@6.1.6:
resolution: {integrity: sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==}
+ serve-static@1.16.2:
+ resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==}
+ engines: {node: '>= 0.8.0'}
+
serve@14.2.5:
resolution: {integrity: sha512-Qn/qMkzCcMFVPb60E/hQy+iRLpiU8PamOfOSYoAHmmF+fFFmpPpqa6Oci2iWYpTdOUM3VF+TINud7CfbQnsZbA==}
engines: {node: '>= 14'}
hasBin: true
+ set-cookie-parser@2.7.2:
+ resolution: {integrity: sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==}
+
set-function-length@1.2.2:
resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
engines: {node: '>= 0.4'}
@@ -7102,8 +8271,11 @@ packages:
resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
engines: {node: '>= 0.4'}
- sharp@0.34.1:
- resolution: {integrity: sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==}
+ setprototypeof@1.2.0:
+ resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+
+ sharp@0.34.4:
+ resolution: {integrity: sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
shebang-command@2.0.0:
@@ -7140,9 +8312,6 @@ packages:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
engines: {node: '>=14'}
- simple-swizzle@0.2.2:
- resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
-
slash@3.0.0:
resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
engines: {node: '>=8'}
@@ -7174,6 +8343,18 @@ packages:
spawndamnit@3.0.1:
resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==}
+ spdx-correct@3.2.0:
+ resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
+
+ spdx-exceptions@2.5.0:
+ resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==}
+
+ spdx-expression-parse@3.0.1:
+ resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
+
+ spdx-license-ids@3.0.22:
+ resolution: {integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==}
+
split@0.3.3:
resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==}
@@ -7185,6 +8366,9 @@ packages:
engines: {node: '>=0.10.0'}
hasBin: true
+ stable-hash@0.0.5:
+ resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==}
+
stackback@0.0.2:
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
@@ -7193,9 +8377,17 @@ packages:
engines: {node: '>=16'}
hasBin: true
+ statuses@2.0.1:
+ resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
+ engines: {node: '>= 0.8'}
+
std-env@3.9.0:
resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==}
+ stop-iteration-iterator@1.1.0:
+ resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
+ engines: {node: '>= 0.4'}
+
storybook@9.1.15:
resolution: {integrity: sha512-es7uDdEwRVVUAt7XLAZZ1hicOq9r4ov5NFeFPpa2YEyAsyHYOCr0CTlHBfslWG6D5EVNWK3kVIIuW8GHB6hEig==}
hasBin: true
@@ -7208,10 +8400,6 @@ packages:
stream-combiner@0.0.4:
resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==}
- streamsearch@1.1.0:
- resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
- engines: {node: '>=10.0.0'}
-
string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
@@ -7419,6 +8607,10 @@ packages:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
+ toidentifier@1.0.1:
+ resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+ engines: {node: '>=0.6'}
+
tough-cookie@5.1.2:
resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==}
engines: {node: '>=16'}
@@ -7455,6 +8647,19 @@ packages:
ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+ tsconfck@3.1.6:
+ resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==}
+ engines: {node: ^18 || >=20}
+ hasBin: true
+ peerDependencies:
+ typescript: ^5.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ tsconfig-paths@3.15.0:
+ resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
+
tsconfig-paths@4.2.0:
resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==}
engines: {node: '>=6'}
@@ -7484,6 +8689,9 @@ packages:
tunnel-agent@0.6.0:
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
+ turbo-stream@3.1.0:
+ resolution: {integrity: sha512-tVI25WEXl4fckNEmrq70xU1XumxUwEx/FZD5AgEcV8ri7Wvrg2o7GEq8U7htrNx3CajciGm+kDyhRf5JB6t7/A==}
+
tweetnacl@0.14.5:
resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==}
@@ -7503,6 +8711,10 @@ packages:
resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
engines: {node: '>=12.20'}
+ type-is@1.6.18:
+ resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==}
+ engines: {node: '>= 0.6'}
+
typed-array-buffer@1.0.3:
resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
engines: {node: '>= 0.4'}
@@ -7519,6 +8731,13 @@ packages:
resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
engines: {node: '>= 0.4'}
+ typescript-eslint@8.46.3:
+ resolution: {integrity: sha512-bAfgMavTuGo+8n6/QQDVQz4tZ4f7Soqg53RbrlZQEoAltYop/XR4RAts/I0BrO3TTClTSTFJ0wYbla+P8cEWJA==}
+ engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ peerDependencies:
+ eslint: ^8.57.0 || ^9.0.0
+ typescript: '>=4.8.4 <6.0.0'
+
typescript@5.9.3:
resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==}
engines: {node: '>=14.17'}
@@ -7550,10 +8769,17 @@ packages:
resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
engines: {node: '>= 10.0.0'}
+ unpipe@1.0.0:
+ resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
+ engines: {node: '>= 0.8'}
+
unplugin@1.16.1:
resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==}
engines: {node: '>=14.0.0'}
+ unrs-resolver@1.11.1:
+ resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==}
+
untildify@4.0.0:
resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==}
engines: {node: '>=8'}
@@ -7607,10 +8833,41 @@ packages:
utila@0.4.0:
resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==}
+ utils-merge@1.0.1:
+ resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
+ engines: {node: '>= 0.4.0'}
+
+ uuid@11.1.0:
+ resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==}
+ hasBin: true
+
uuid@8.3.2:
resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
hasBin: true
+ valibot@0.41.0:
+ resolution: {integrity: sha512-igDBb8CTYr8YTQlOKgaN9nSS0Be7z+WRuaeYqGf3Cjz3aKmSnqEmYnkfVjzIuumGqfHpa3fLIvMEAfhrpqN8ng==}
+ peerDependencies:
+ typescript: '>=5'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ valibot@1.1.0:
+ resolution: {integrity: sha512-Nk8lX30Qhu+9txPYTwM0cFlWLdPFsFr6LblzqIySfbZph9+BFsAHsNvHOymEviUepeIW6KFHzpX8TKhbptBXXw==}
+ peerDependencies:
+ typescript: '>=5'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ validate-npm-package-license@3.0.4:
+ resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
+
+ validate-npm-package-name@5.0.1:
+ resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+
vary@1.1.2:
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
engines: {node: '>= 0.8'}
@@ -7619,6 +8876,24 @@ packages:
resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==}
engines: {'0': node >=0.6.0}
+ vite-node@3.2.4:
+ resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==}
+ engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
+ hasBin: true
+
+ vite-plugin-devtools-json@1.0.0:
+ resolution: {integrity: sha512-MobvwqX76Vqt/O4AbnNMNWoXWGrKUqZbphCUle/J2KXH82yKQiunOeKnz/nqEPosPsoWWPP9FtNuPBSYpiiwkw==}
+ peerDependencies:
+ vite: ^5.0.0 || ^6.0.0 || ^7.0.0
+
+ vite-tsconfig-paths@5.1.4:
+ resolution: {integrity: sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==}
+ peerDependencies:
+ vite: '*'
+ peerDependenciesMeta:
+ vite:
+ optional: true
+
vite@7.1.12:
resolution: {integrity: sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -7659,6 +8934,54 @@ packages:
yaml:
optional: true
+ vite@7.1.6:
+ resolution: {integrity: sha512-SRYIB8t/isTwNn8vMB3MR6E+EQZM/WG1aKmmIUCfDXfVvKfc20ZpamngWHKzAmmu9ppsgxsg4b2I7c90JZudIQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^20.19.0 || >=22.12.0
+ jiti: '>=1.21.0'
+ less: ^4.0.0
+ lightningcss: ^1.21.0
+ sass: ^1.70.0
+ sass-embedded: ^1.70.0
+ stylus: '>=0.54.8'
+ sugarss: ^5.0.0
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ jiti:
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
+
+ vitefu@1.1.1:
+ resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==}
+ peerDependencies:
+ vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0
+ peerDependenciesMeta:
+ vite:
+ optional: true
+
vitest-axe@1.0.0-pre.5:
resolution: {integrity: sha512-eUGxjpXnceha9lkqIVyMgOUeDmWU9LVjNiLTjAjDtMew0WbaBDtixoUvdftOhZfqRI03G2Ay4ZxaU1KG6jNCiQ==}
peerDependencies:
@@ -7791,6 +9114,11 @@ packages:
engines: {node: '>= 8'}
hasBin: true
+ which@3.0.1:
+ resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==}
+ engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
+ hasBin: true
+
why-is-node-running@2.3.0:
resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
engines: {node: '>=8'}
@@ -7872,6 +9200,18 @@ packages:
resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==}
engines: {node: '>=18'}
+ zimmerframe@1.1.4:
+ resolution: {integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==}
+
+ zod-validation-error@4.0.2:
+ resolution: {integrity: sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ zod: ^3.25.0 || ^4.0.0
+
+ zod@4.1.12:
+ resolution: {integrity: sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==}
+
snapshots:
'@adobe/css-tools@4.4.2': {}
@@ -7941,6 +9281,10 @@ snapshots:
'@jridgewell/trace-mapping': 0.3.31
jsesc: 3.1.0
+ '@babel/helper-annotate-as-pure@7.27.3':
+ dependencies:
+ '@babel/types': 7.28.5
+
'@babel/helper-compilation-targets@7.27.2':
dependencies:
'@babel/compat-data': 7.28.5
@@ -7949,8 +9293,28 @@ snapshots:
lru-cache: 5.1.1
semver: 6.3.1
+ '@babel/helper-create-class-features-plugin@7.28.5(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-annotate-as-pure': 7.27.3
+ '@babel/helper-member-expression-to-functions': 7.28.5
+ '@babel/helper-optimise-call-expression': 7.27.1
+ '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5)
+ '@babel/helper-skip-transparent-expression-wrappers': 7.27.1
+ '@babel/traverse': 7.28.5
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
'@babel/helper-globals@7.28.0': {}
+ '@babel/helper-member-expression-to-functions@7.28.5':
+ dependencies:
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
+ transitivePeerDependencies:
+ - supports-color
+
'@babel/helper-module-imports@7.27.1':
dependencies:
'@babel/traverse': 7.28.5
@@ -7967,6 +9331,28 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@babel/helper-optimise-call-expression@7.27.1':
+ dependencies:
+ '@babel/types': 7.28.5
+
+ '@babel/helper-plugin-utils@7.27.1': {}
+
+ '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-member-expression-to-functions': 7.28.5
+ '@babel/helper-optimise-call-expression': 7.27.1
+ '@babel/traverse': 7.28.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-skip-transparent-expression-wrappers@7.27.1':
+ dependencies:
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
+ transitivePeerDependencies:
+ - supports-color
+
'@babel/helper-string-parser@7.27.1': {}
'@babel/helper-validator-identifier@7.28.5': {}
@@ -7982,6 +9368,56 @@ snapshots:
dependencies:
'@babel/types': 7.28.5
+ '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-plugin-utils': 7.27.1
+
+ '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-plugin-utils': 7.27.1
+
+ '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5)
+ '@babel/helper-plugin-utils': 7.27.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-plugin-utils': 7.27.1
+
+ '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-plugin-utils': 7.27.1
+
+ '@babel/plugin-transform-typescript@7.28.5(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-annotate-as-pure': 7.27.3
+ '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5)
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/helper-skip-transparent-expression-wrappers': 7.27.1
+ '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/preset-typescript@7.28.5(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/helper-validator-option': 7.27.1
+ '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5)
+ '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5)
+ '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5)
+ transitivePeerDependencies:
+ - supports-color
+
'@babel/runtime@7.27.0':
dependencies:
regenerator-runtime: 0.14.1
@@ -8254,7 +9690,18 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@emnapi/runtime@1.4.0':
+ '@emnapi/core@1.7.0':
+ dependencies:
+ '@emnapi/wasi-threads': 1.1.0
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/runtime@1.7.0':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/wasi-threads@1.1.0':
dependencies:
tslib: 2.8.1
optional: true
@@ -8438,82 +9885,93 @@ snapshots:
'@humanwhocodes/retry@0.4.2': {}
- '@img/sharp-darwin-arm64@0.34.1':
+ '@img/colour@1.0.0':
+ optional: true
+
+ '@img/sharp-darwin-arm64@0.34.4':
optionalDependencies:
- '@img/sharp-libvips-darwin-arm64': 1.1.0
+ '@img/sharp-libvips-darwin-arm64': 1.2.3
optional: true
- '@img/sharp-darwin-x64@0.34.1':
+ '@img/sharp-darwin-x64@0.34.4':
optionalDependencies:
- '@img/sharp-libvips-darwin-x64': 1.1.0
+ '@img/sharp-libvips-darwin-x64': 1.2.3
+ optional: true
+
+ '@img/sharp-libvips-darwin-arm64@1.2.3':
optional: true
- '@img/sharp-libvips-darwin-arm64@1.1.0':
+ '@img/sharp-libvips-darwin-x64@1.2.3':
optional: true
- '@img/sharp-libvips-darwin-x64@1.1.0':
+ '@img/sharp-libvips-linux-arm64@1.2.3':
optional: true
- '@img/sharp-libvips-linux-arm64@1.1.0':
+ '@img/sharp-libvips-linux-arm@1.2.3':
optional: true
- '@img/sharp-libvips-linux-arm@1.1.0':
+ '@img/sharp-libvips-linux-ppc64@1.2.3':
optional: true
- '@img/sharp-libvips-linux-ppc64@1.1.0':
+ '@img/sharp-libvips-linux-s390x@1.2.3':
optional: true
- '@img/sharp-libvips-linux-s390x@1.1.0':
+ '@img/sharp-libvips-linux-x64@1.2.3':
optional: true
- '@img/sharp-libvips-linux-x64@1.1.0':
+ '@img/sharp-libvips-linuxmusl-arm64@1.2.3':
optional: true
- '@img/sharp-libvips-linuxmusl-arm64@1.1.0':
+ '@img/sharp-libvips-linuxmusl-x64@1.2.3':
optional: true
- '@img/sharp-libvips-linuxmusl-x64@1.1.0':
+ '@img/sharp-linux-arm64@0.34.4':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-arm64': 1.2.3
optional: true
- '@img/sharp-linux-arm64@0.34.1':
+ '@img/sharp-linux-arm@0.34.4':
optionalDependencies:
- '@img/sharp-libvips-linux-arm64': 1.1.0
+ '@img/sharp-libvips-linux-arm': 1.2.3
optional: true
- '@img/sharp-linux-arm@0.34.1':
+ '@img/sharp-linux-ppc64@0.34.4':
optionalDependencies:
- '@img/sharp-libvips-linux-arm': 1.1.0
+ '@img/sharp-libvips-linux-ppc64': 1.2.3
optional: true
- '@img/sharp-linux-s390x@0.34.1':
+ '@img/sharp-linux-s390x@0.34.4':
optionalDependencies:
- '@img/sharp-libvips-linux-s390x': 1.1.0
+ '@img/sharp-libvips-linux-s390x': 1.2.3
optional: true
- '@img/sharp-linux-x64@0.34.1':
+ '@img/sharp-linux-x64@0.34.4':
optionalDependencies:
- '@img/sharp-libvips-linux-x64': 1.1.0
+ '@img/sharp-libvips-linux-x64': 1.2.3
optional: true
- '@img/sharp-linuxmusl-arm64@0.34.1':
+ '@img/sharp-linuxmusl-arm64@0.34.4':
optionalDependencies:
- '@img/sharp-libvips-linuxmusl-arm64': 1.1.0
+ '@img/sharp-libvips-linuxmusl-arm64': 1.2.3
optional: true
- '@img/sharp-linuxmusl-x64@0.34.1':
+ '@img/sharp-linuxmusl-x64@0.34.4':
optionalDependencies:
- '@img/sharp-libvips-linuxmusl-x64': 1.1.0
+ '@img/sharp-libvips-linuxmusl-x64': 1.2.3
optional: true
- '@img/sharp-wasm32@0.34.1':
+ '@img/sharp-wasm32@0.34.4':
dependencies:
- '@emnapi/runtime': 1.4.0
+ '@emnapi/runtime': 1.7.0
optional: true
- '@img/sharp-win32-ia32@0.34.1':
+ '@img/sharp-win32-arm64@0.34.4':
optional: true
- '@img/sharp-win32-x64@0.34.1':
+ '@img/sharp-win32-ia32@0.34.4':
+ optional: true
+
+ '@img/sharp-win32-x64@0.34.4':
optional: true
'@inquirer/external-editor@1.0.2(@types/node@22.14.0)':
@@ -8587,58 +10045,290 @@ snapshots:
globby: 11.1.0
read-yaml-file: 1.1.0
- '@mdx-js/react@3.1.0(@types/react@19.2.2)(react@19.2.0)':
- dependencies:
- '@types/mdx': 2.0.13
- '@types/react': 19.2.2
- react: 19.2.0
+ '@mdx-js/react@3.1.0(@types/react@19.2.2)(react@19.2.0)':
+ dependencies:
+ '@types/mdx': 2.0.13
+ '@types/react': 19.2.2
+ react: 19.2.0
+
+ '@mjackson/node-fetch-server@0.2.0': {}
+
+ '@napi-rs/wasm-runtime@0.2.12':
+ dependencies:
+ '@emnapi/core': 1.7.0
+ '@emnapi/runtime': 1.7.0
+ '@tybys/wasm-util': 0.10.1
+ optional: true
+
+ '@neoconfetti/react@1.0.0': {}
+
+ '@next/env@16.0.1': {}
+
+ '@next/eslint-plugin-next@16.0.1':
+ dependencies:
+ fast-glob: 3.3.1
+
+ '@next/swc-darwin-arm64@16.0.1':
+ optional: true
+
+ '@next/swc-darwin-x64@16.0.1':
+ optional: true
+
+ '@next/swc-linux-arm64-gnu@16.0.1':
+ optional: true
+
+ '@next/swc-linux-arm64-musl@16.0.1':
+ optional: true
+
+ '@next/swc-linux-x64-gnu@16.0.1':
+ optional: true
+
+ '@next/swc-linux-x64-musl@16.0.1':
+ optional: true
+
+ '@next/swc-win32-arm64-msvc@16.0.1':
+ optional: true
+
+ '@next/swc-win32-x64-msvc@16.0.1':
+ optional: true
+
+ '@nodelib/fs.scandir@2.1.5':
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ '@nodelib/fs.stat@2.0.5': {}
+
+ '@nodelib/fs.walk@1.2.8':
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.19.1
+
+ '@nolyfill/is-core-module@1.0.39': {}
+
+ '@npmcli/git@4.1.0':
+ dependencies:
+ '@npmcli/promise-spawn': 6.0.2
+ lru-cache: 7.18.3
+ npm-pick-manifest: 8.0.2
+ proc-log: 3.0.0
+ promise-inflight: 1.0.1
+ promise-retry: 2.0.1
+ semver: 7.7.1
+ which: 3.0.1
+ transitivePeerDependencies:
+ - bluebird
+
+ '@npmcli/package-json@4.0.1':
+ dependencies:
+ '@npmcli/git': 4.1.0
+ glob: 10.4.5
+ hosted-git-info: 6.1.3
+ json-parse-even-better-errors: 3.0.2
+ normalize-package-data: 5.0.0
+ proc-log: 3.0.0
+ semver: 7.7.1
+ transitivePeerDependencies:
+ - bluebird
+
+ '@npmcli/promise-spawn@6.0.2':
+ dependencies:
+ which: 3.0.1
+
+ '@pkgjs/parseargs@0.11.0':
+ optional: true
+
+ '@pkgr/core@0.2.9': {}
- '@neoconfetti/react@1.0.0': {}
+ '@radix-ui/colors@3.0.0': {}
- '@next/env@15.3.1': {}
+ '@radix-ui/react-icons@1.3.2(react@17.0.2)':
+ dependencies:
+ react: 17.0.2
- '@next/swc-darwin-arm64@15.3.1':
- optional: true
+ '@radix-ui/react-icons@1.3.2(react@18.3.1)':
+ dependencies:
+ react: 18.3.1
- '@next/swc-darwin-x64@15.3.1':
- optional: true
+ '@radix-ui/react-icons@1.3.2(react@19.2.0)':
+ dependencies:
+ react: 19.2.0
- '@next/swc-linux-arm64-gnu@15.3.1':
- optional: true
+ '@react-router/dev@7.9.2(@react-router/serve@7.9.2(react-router@7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3))(@types/node@22.14.0)(@vitejs/plugin-rsc@0.4.31(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(vite@7.1.6(@types/node@22.14.0)(terser@5.39.0)))(react-router@7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.39.0)(typescript@5.9.3)(vite@7.1.6(@types/node@22.14.0)(terser@5.39.0))':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/generator': 7.28.5
+ '@babel/parser': 7.28.5
+ '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5)
+ '@babel/preset-typescript': 7.28.5(@babel/core@7.28.5)
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
+ '@npmcli/package-json': 4.0.1
+ '@react-router/node': 7.9.2(react-router@7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3)
+ '@remix-run/node-fetch-server': 0.9.0
+ arg: 5.0.2
+ babel-dead-code-elimination: 1.0.10
+ chokidar: 4.0.3
+ dedent: 1.7.0
+ es-module-lexer: 1.7.0
+ exit-hook: 2.2.1
+ isbot: 5.1.32
+ jsesc: 3.0.2
+ lodash: 4.17.21
+ pathe: 1.1.2
+ picocolors: 1.1.1
+ prettier: 3.6.2
+ react-refresh: 0.14.2
+ react-router: 7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ semver: 7.7.3
+ tinyglobby: 0.2.15
+ valibot: 0.41.0(typescript@5.9.3)
+ vite: 7.1.6(@types/node@22.14.0)(terser@5.39.0)
+ vite-node: 3.2.4(@types/node@22.14.0)(terser@5.39.0)
+ optionalDependencies:
+ '@react-router/serve': 7.9.2(react-router@7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3)
+ '@vitejs/plugin-rsc': 0.4.31(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(vite@7.1.6(@types/node@22.14.0)(terser@5.39.0))
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - bluebird
+ - jiti
+ - less
+ - lightningcss
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - tsx
+ - yaml
- '@next/swc-linux-arm64-musl@15.3.1':
- optional: true
+ '@react-router/dev@7.9.5(@react-router/serve@7.9.5(react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3))(@types/node@22.14.0)(@vitejs/plugin-rsc@0.4.31(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(vite@7.1.12(@types/node@22.14.0)(terser@5.39.0)))(react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.39.0)(typescript@5.9.3)(vite@7.1.12(@types/node@22.14.0)(terser@5.39.0))':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/generator': 7.28.5
+ '@babel/parser': 7.28.5
+ '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5)
+ '@babel/preset-typescript': 7.28.5(@babel/core@7.28.5)
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
+ '@npmcli/package-json': 4.0.1
+ '@react-router/node': 7.9.5(react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3)
+ '@remix-run/node-fetch-server': 0.9.0
+ arg: 5.0.2
+ babel-dead-code-elimination: 1.0.10
+ chokidar: 4.0.3
+ dedent: 1.7.0
+ es-module-lexer: 1.7.0
+ exit-hook: 2.2.1
+ isbot: 5.1.32
+ jsesc: 3.0.2
+ lodash: 4.17.21
+ p-map: 7.0.3
+ pathe: 1.1.2
+ picocolors: 1.1.1
+ prettier: 3.6.2
+ react-refresh: 0.14.2
+ react-router: 7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ semver: 7.7.1
+ tinyglobby: 0.2.15
+ valibot: 1.1.0(typescript@5.9.3)
+ vite: 7.1.12(@types/node@22.14.0)(terser@5.39.0)
+ vite-node: 3.2.4(@types/node@22.14.0)(terser@5.39.0)
+ optionalDependencies:
+ '@react-router/serve': 7.9.5(react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3)
+ '@vitejs/plugin-rsc': 0.4.31(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(vite@7.1.12(@types/node@22.14.0)(terser@5.39.0))
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - '@types/node'
+ - babel-plugin-macros
+ - bluebird
+ - jiti
+ - less
+ - lightningcss
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - tsx
+ - yaml
- '@next/swc-linux-x64-gnu@15.3.1':
- optional: true
+ '@react-router/express@7.9.2(express@4.21.2)(react-router@7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3)':
+ dependencies:
+ '@react-router/node': 7.9.2(react-router@7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3)
+ express: 4.21.2
+ react-router: 7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ optionalDependencies:
+ typescript: 5.9.3
- '@next/swc-linux-x64-musl@15.3.1':
- optional: true
+ '@react-router/express@7.9.5(express@4.21.2)(react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3)':
+ dependencies:
+ '@react-router/node': 7.9.5(react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3)
+ express: 4.21.2
+ react-router: 7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ optionalDependencies:
+ typescript: 5.9.3
- '@next/swc-win32-arm64-msvc@15.3.1':
- optional: true
+ '@react-router/fs-routes@7.9.2(@react-router/dev@7.9.2(@react-router/serve@7.9.2(react-router@7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3))(@types/node@22.14.0)(@vitejs/plugin-rsc@0.4.31(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(vite@7.1.6(@types/node@22.14.0)(terser@5.39.0)))(react-router@7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.39.0)(typescript@5.9.3)(vite@7.1.6(@types/node@22.14.0)(terser@5.39.0)))(typescript@5.9.3)':
+ dependencies:
+ '@react-router/dev': 7.9.2(@react-router/serve@7.9.2(react-router@7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3))(@types/node@22.14.0)(@vitejs/plugin-rsc@0.4.31(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(vite@7.1.6(@types/node@22.14.0)(terser@5.39.0)))(react-router@7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(terser@5.39.0)(typescript@5.9.3)(vite@7.1.6(@types/node@22.14.0)(terser@5.39.0))
+ minimatch: 9.0.5
+ optionalDependencies:
+ typescript: 5.9.3
- '@next/swc-win32-x64-msvc@15.3.1':
- optional: true
+ '@react-router/node@7.9.2(react-router@7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3)':
+ dependencies:
+ '@mjackson/node-fetch-server': 0.2.0
+ react-router: 7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ optionalDependencies:
+ typescript: 5.9.3
- '@nodelib/fs.scandir@2.1.5':
+ '@react-router/node@7.9.5(react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3)':
dependencies:
- '@nodelib/fs.stat': 2.0.5
- run-parallel: 1.2.0
+ '@mjackson/node-fetch-server': 0.2.0
+ react-router: 7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ optionalDependencies:
+ typescript: 5.9.3
- '@nodelib/fs.stat@2.0.5': {}
+ '@react-router/serve@7.9.2(react-router@7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3)':
+ dependencies:
+ '@mjackson/node-fetch-server': 0.2.0
+ '@react-router/express': 7.9.2(express@4.21.2)(react-router@7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3)
+ '@react-router/node': 7.9.2(react-router@7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3)
+ compression: 1.8.1
+ express: 4.21.2
+ get-port: 5.1.1
+ morgan: 1.10.1
+ react-router: 7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ source-map-support: 0.5.21
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
- '@nodelib/fs.walk@1.2.8':
+ '@react-router/serve@7.9.5(react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3)':
dependencies:
- '@nodelib/fs.scandir': 2.1.5
- fastq: 1.19.1
+ '@mjackson/node-fetch-server': 0.2.0
+ '@react-router/express': 7.9.5(express@4.21.2)(react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3)
+ '@react-router/node': 7.9.5(react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(typescript@5.9.3)
+ compression: 1.8.1
+ express: 4.21.2
+ get-port: 5.1.1
+ morgan: 1.10.1
+ react-router: 7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0)
+ source-map-support: 0.5.21
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
- '@pkgjs/parseargs@0.11.0':
- optional: true
+ '@remix-run/node-fetch-server@0.8.1': {}
- '@pkgr/core@0.2.9': {}
+ '@remix-run/node-fetch-server@0.9.0': {}
- '@radix-ui/colors@3.0.0': {}
+ '@rolldown/pluginutils@1.0.0-beta.43': {}
'@rollup/rollup-android-arm-eabi@4.52.5':
optional: true
@@ -8706,6 +10396,8 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.52.5':
optional: true
+ '@rtsao/scc@1.1.0': {}
+
'@sec-ant/readable-stream@0.4.1': {}
'@sindresorhus/merge-streams@4.0.0': {}
@@ -8946,6 +10638,11 @@ snapshots:
dependencies:
'@testing-library/dom': 10.4.1
+ '@tybys/wasm-util@0.10.1':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
'@types/aria-query@5.0.4': {}
'@types/babel__core@7.20.5':
@@ -9003,6 +10700,8 @@ snapshots:
'@types/json-schema@7.0.15': {}
+ '@types/json5@0.0.29': {}
+
'@types/jsonfile@6.1.4':
dependencies:
'@types/node': 22.14.0
@@ -9063,6 +10762,23 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ '@typescript-eslint/eslint-plugin@8.46.3(@typescript-eslint/parser@8.46.3(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3)':
+ dependencies:
+ '@eslint-community/regexpp': 4.12.1
+ '@typescript-eslint/parser': 8.46.3(eslint@9.38.0)(typescript@5.9.3)
+ '@typescript-eslint/scope-manager': 8.46.3
+ '@typescript-eslint/type-utils': 8.46.3(eslint@9.38.0)(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.46.3(eslint@9.38.0)(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.46.3
+ eslint: 9.38.0
+ graphemer: 1.4.0
+ ignore: 7.0.5
+ natural-compare: 1.4.0
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
'@typescript-eslint/parser@8.29.1(eslint@9.38.0)(typescript@5.9.3)':
dependencies:
'@typescript-eslint/scope-manager': 8.29.1
@@ -9075,53 +10791,227 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/scope-manager@8.29.1':
- dependencies:
- '@typescript-eslint/types': 8.29.1
- '@typescript-eslint/visitor-keys': 8.29.1
+ '@typescript-eslint/parser@8.46.3(eslint@9.38.0)(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/scope-manager': 8.46.3
+ '@typescript-eslint/types': 8.46.3
+ '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3)
+ '@typescript-eslint/visitor-keys': 8.46.3
+ debug: 4.4.3(supports-color@8.1.1)
+ eslint: 9.38.0
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/project-service@8.46.3(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/tsconfig-utils': 8.46.3(typescript@5.9.3)
+ '@typescript-eslint/types': 8.46.3
+ debug: 4.4.3(supports-color@8.1.1)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/scope-manager@8.29.1':
+ dependencies:
+ '@typescript-eslint/types': 8.29.1
+ '@typescript-eslint/visitor-keys': 8.29.1
+
+ '@typescript-eslint/scope-manager@8.46.3':
+ dependencies:
+ '@typescript-eslint/types': 8.46.3
+ '@typescript-eslint/visitor-keys': 8.46.3
+
+ '@typescript-eslint/tsconfig-utils@8.46.3(typescript@5.9.3)':
+ dependencies:
+ typescript: 5.9.3
+
+ '@typescript-eslint/type-utils@8.29.1(eslint@9.38.0)(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.29.1(eslint@9.38.0)(typescript@5.9.3)
+ debug: 4.4.0
+ eslint: 9.38.0
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/type-utils@8.46.3(eslint@9.38.0)(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/types': 8.46.3
+ '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.46.3(eslint@9.38.0)(typescript@5.9.3)
+ debug: 4.4.3(supports-color@8.1.1)
+ eslint: 9.38.0
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/types@8.29.1': {}
+
+ '@typescript-eslint/types@8.46.3': {}
+
+ '@typescript-eslint/typescript-estree@8.29.1(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/types': 8.29.1
+ '@typescript-eslint/visitor-keys': 8.29.1
+ debug: 4.4.0
+ fast-glob: 3.3.3
+ is-glob: 4.0.3
+ minimatch: 9.0.5
+ semver: 7.7.1
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/typescript-estree@8.46.3(typescript@5.9.3)':
+ dependencies:
+ '@typescript-eslint/project-service': 8.46.3(typescript@5.9.3)
+ '@typescript-eslint/tsconfig-utils': 8.46.3(typescript@5.9.3)
+ '@typescript-eslint/types': 8.46.3
+ '@typescript-eslint/visitor-keys': 8.46.3
+ debug: 4.4.3(supports-color@8.1.1)
+ fast-glob: 3.3.3
+ is-glob: 4.0.3
+ minimatch: 9.0.5
+ semver: 7.7.1
+ ts-api-utils: 2.1.0(typescript@5.9.3)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/utils@8.29.1(eslint@9.38.0)(typescript@5.9.3)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.5.1(eslint@9.38.0)
+ '@typescript-eslint/scope-manager': 8.29.1
+ '@typescript-eslint/types': 8.29.1
+ '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.9.3)
+ eslint: 9.38.0
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/utils@8.46.3(eslint@9.38.0)(typescript@5.9.3)':
+ dependencies:
+ '@eslint-community/eslint-utils': 4.9.0(eslint@9.38.0)
+ '@typescript-eslint/scope-manager': 8.46.3
+ '@typescript-eslint/types': 8.46.3
+ '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3)
+ eslint: 9.38.0
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@typescript-eslint/visitor-keys@8.29.1':
+ dependencies:
+ '@typescript-eslint/types': 8.29.1
+ eslint-visitor-keys: 4.2.0
+
+ '@typescript-eslint/visitor-keys@8.46.3':
+ dependencies:
+ '@typescript-eslint/types': 8.46.3
+ eslint-visitor-keys: 4.2.1
+
+ '@unrs/resolver-binding-android-arm-eabi@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-android-arm64@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-darwin-arm64@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-darwin-x64@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-freebsd-x64@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-arm64-gnu@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-arm64-musl@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-linux-x64-gnu@1.11.1':
+ optional: true
- '@typescript-eslint/type-utils@8.29.1(eslint@9.38.0)(typescript@5.9.3)':
+ '@unrs/resolver-binding-linux-x64-musl@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-wasm32-wasi@1.11.1':
dependencies:
- '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.9.3)
- '@typescript-eslint/utils': 8.29.1(eslint@9.38.0)(typescript@5.9.3)
- debug: 4.4.0
- eslint: 9.38.0
- ts-api-utils: 2.1.0(typescript@5.9.3)
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
+ '@napi-rs/wasm-runtime': 0.2.12
+ optional: true
- '@typescript-eslint/types@8.29.1': {}
+ '@unrs/resolver-binding-win32-arm64-msvc@1.11.1':
+ optional: true
- '@typescript-eslint/typescript-estree@8.29.1(typescript@5.9.3)':
+ '@unrs/resolver-binding-win32-ia32-msvc@1.11.1':
+ optional: true
+
+ '@unrs/resolver-binding-win32-x64-msvc@1.11.1':
+ optional: true
+
+ '@vitejs/plugin-react@5.1.0(vite@7.1.12(@types/node@22.14.0)(terser@5.39.0))':
dependencies:
- '@typescript-eslint/types': 8.29.1
- '@typescript-eslint/visitor-keys': 8.29.1
- debug: 4.4.0
- fast-glob: 3.3.3
- is-glob: 4.0.3
- minimatch: 9.0.5
- semver: 7.7.1
- ts-api-utils: 2.1.0(typescript@5.9.3)
- typescript: 5.9.3
+ '@babel/core': 7.28.5
+ '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5)
+ '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.28.5)
+ '@rolldown/pluginutils': 1.0.0-beta.43
+ '@types/babel__core': 7.20.5
+ react-refresh: 0.18.0
+ vite: 7.1.12(@types/node@22.14.0)(terser@5.39.0)
transitivePeerDependencies:
- supports-color
- '@typescript-eslint/utils@8.29.1(eslint@9.38.0)(typescript@5.9.3)':
+ '@vitejs/plugin-rsc@0.4.31(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(vite@7.1.12(@types/node@22.14.0)(terser@5.39.0))':
dependencies:
- '@eslint-community/eslint-utils': 4.5.1(eslint@9.38.0)
- '@typescript-eslint/scope-manager': 8.29.1
- '@typescript-eslint/types': 8.29.1
- '@typescript-eslint/typescript-estree': 8.29.1(typescript@5.9.3)
- eslint: 9.38.0
- typescript: 5.9.3
- transitivePeerDependencies:
- - supports-color
+ '@remix-run/node-fetch-server': 0.8.1
+ es-module-lexer: 1.7.0
+ estree-walker: 3.0.3
+ magic-string: 0.30.21
+ periscopic: 4.0.2
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ turbo-stream: 3.1.0
+ vite: 7.1.12(@types/node@22.14.0)(terser@5.39.0)
+ vitefu: 1.1.1(vite@7.1.12(@types/node@22.14.0)(terser@5.39.0))
+ optional: true
- '@typescript-eslint/visitor-keys@8.29.1':
+ '@vitejs/plugin-rsc@0.4.31(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(vite@7.1.6(@types/node@22.14.0)(terser@5.39.0))':
dependencies:
- '@typescript-eslint/types': 8.29.1
- eslint-visitor-keys: 4.2.0
+ '@remix-run/node-fetch-server': 0.8.1
+ es-module-lexer: 1.7.0
+ estree-walker: 3.0.3
+ magic-string: 0.30.21
+ periscopic: 4.0.2
+ react: 19.2.0
+ react-dom: 19.2.0(react@19.2.0)
+ turbo-stream: 3.1.0
+ vite: 7.1.6(@types/node@22.14.0)(terser@5.39.0)
+ vitefu: 1.1.1(vite@7.1.6(@types/node@22.14.0)(terser@5.39.0))
'@vitest/eslint-plugin@1.1.39(@typescript-eslint/utils@8.29.1(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3)(vitest@4.0.4(@types/node@22.14.0)(jsdom@26.1.0)(terser@5.39.0))':
dependencies:
@@ -9294,6 +11184,11 @@ snapshots:
'@zeit/schemas@2.36.0': {}
+ accepts@1.3.8:
+ dependencies:
+ mime-types: 2.1.35
+ negotiator: 0.6.3
+
acorn-import-phases@1.0.4(acorn@8.15.0):
dependencies:
acorn: 8.15.0
@@ -9400,6 +11295,8 @@ snapshots:
call-bound: 1.0.4
is-array-buffer: 3.0.5
+ array-flatten@1.1.1: {}
+
array-includes@3.1.8:
dependencies:
call-bind: 1.0.8
@@ -9409,6 +11306,17 @@ snapshots:
get-intrinsic: 1.3.0
is-string: 1.1.1
+ array-includes@3.1.9:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-abstract: 1.24.0
+ es-object-atoms: 1.1.1
+ get-intrinsic: 1.3.0
+ is-string: 1.1.1
+ math-intrinsics: 1.1.0
+
array-union@2.1.0: {}
array.prototype.findlast@1.2.5:
@@ -9420,6 +11328,16 @@ snapshots:
es-object-atoms: 1.1.1
es-shim-unscopables: 1.1.0
+ array.prototype.findlastindex@1.2.6:
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ es-shim-unscopables: 1.1.0
+
array.prototype.flat@1.3.3:
dependencies:
call-bind: 1.0.8
@@ -9494,12 +11412,25 @@ snapshots:
axobject-query@4.1.0: {}
+ babel-dead-code-elimination@1.0.10:
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/parser': 7.28.5
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
+ transitivePeerDependencies:
+ - supports-color
+
balanced-match@1.0.2: {}
base64-js@1.5.1: {}
baseline-browser-mapping@2.8.20: {}
+ basic-auth@2.0.1:
+ dependencies:
+ safe-buffer: 5.1.2
+
bcrypt-pbkdf@1.0.2:
dependencies:
tweetnacl: 0.14.5
@@ -9523,6 +11454,23 @@ snapshots:
bluebird@3.7.2: {}
+ body-parser@1.20.3:
+ dependencies:
+ bytes: 3.1.2
+ content-type: 1.0.5
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ http-errors: 2.0.0
+ iconv-lite: 0.4.24
+ on-finished: 2.4.1
+ qs: 6.13.0
+ raw-body: 2.5.2
+ type-is: 1.6.18
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
boolbase@1.0.0: {}
boxen@7.0.0:
@@ -9578,10 +11526,6 @@ snapshots:
esbuild: 0.25.11
load-tsconfig: 0.2.5
- busboy@1.6.0:
- dependencies:
- streamsearch: 1.1.0
-
bytes@3.0.0: {}
bytes@3.1.2: {}
@@ -9718,18 +11662,6 @@ snapshots:
color-name@1.1.4: {}
- color-string@1.9.1:
- dependencies:
- color-name: 1.1.4
- simple-swizzle: 0.2.2
- optional: true
-
- color@4.2.3:
- dependencies:
- color-convert: 2.0.1
- color-string: 1.9.1
- optional: true
-
colorette@2.0.20: {}
colors@1.4.0:
@@ -9775,8 +11707,20 @@ snapshots:
content-disposition@0.5.2: {}
+ content-disposition@0.5.4:
+ dependencies:
+ safe-buffer: 5.2.1
+
+ content-type@1.0.5: {}
+
convert-source-map@2.0.0: {}
+ cookie-signature@1.0.6: {}
+
+ cookie@0.7.1: {}
+
+ cookie@1.0.2: {}
+
core-util-is@1.0.2: {}
cosmiconfig@7.1.0:
@@ -9958,6 +11902,8 @@ snapshots:
dedent@0.7.0: {}
+ dedent@1.7.0: {}
+
deep-eql@5.0.2: {}
deep-extend@0.6.0: {}
@@ -9982,11 +11928,15 @@ snapshots:
delayed-stream@1.0.0: {}
+ depd@2.0.0: {}
+
dequal@2.0.3: {}
+ destroy@1.2.0: {}
+
detect-indent@6.1.0: {}
- detect-libc@2.0.3:
+ detect-libc@2.1.2:
optional: true
detect-node-es@1.1.0: {}
@@ -10049,6 +11999,8 @@ snapshots:
jsbn: 0.1.1
safer-buffer: 2.1.2
+ ee-first@1.1.1: {}
+
electron-to-chromium@1.5.134: {}
electron-to-chromium@1.5.241: {}
@@ -10057,6 +12009,10 @@ snapshots:
emoji-regex@9.2.2: {}
+ encodeurl@1.0.2: {}
+
+ encodeurl@2.0.0: {}
+
end-of-stream@1.4.4:
dependencies:
once: 1.4.0
@@ -10081,6 +12037,8 @@ snapshots:
entities@6.0.1: {}
+ err-code@2.0.3: {}
+
error-ex@1.3.2:
dependencies:
is-arrayish: 0.2.1
@@ -10139,6 +12097,63 @@ snapshots:
unbox-primitive: 1.1.0
which-typed-array: 1.1.19
+ es-abstract@1.24.0:
+ dependencies:
+ array-buffer-byte-length: 1.0.2
+ arraybuffer.prototype.slice: 1.0.4
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.8
+ call-bound: 1.0.4
+ data-view-buffer: 1.0.2
+ data-view-byte-length: 1.0.2
+ data-view-byte-offset: 1.0.1
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ es-set-tostringtag: 2.1.0
+ es-to-primitive: 1.3.0
+ function.prototype.name: 1.1.8
+ get-intrinsic: 1.3.0
+ get-proto: 1.0.1
+ get-symbol-description: 1.1.0
+ globalthis: 1.0.4
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+ has-proto: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.2
+ internal-slot: 1.1.0
+ is-array-buffer: 3.0.5
+ is-callable: 1.2.7
+ is-data-view: 1.0.2
+ is-negative-zero: 2.0.3
+ is-regex: 1.2.1
+ is-set: 2.0.3
+ is-shared-array-buffer: 1.0.4
+ is-string: 1.1.1
+ is-typed-array: 1.1.15
+ is-weakref: 1.1.1
+ math-intrinsics: 1.1.0
+ object-inspect: 1.13.4
+ object-keys: 1.1.1
+ object.assign: 4.1.7
+ own-keys: 1.0.1
+ regexp.prototype.flags: 1.5.4
+ safe-array-concat: 1.1.3
+ safe-push-apply: 1.0.0
+ safe-regex-test: 1.1.0
+ set-proto: 1.0.0
+ stop-iteration-iterator: 1.1.0
+ string.prototype.trim: 1.2.10
+ string.prototype.trimend: 1.0.9
+ string.prototype.trimstart: 1.0.8
+ typed-array-buffer: 1.0.3
+ typed-array-byte-length: 1.0.3
+ typed-array-byte-offset: 1.0.4
+ typed-array-length: 1.0.7
+ unbox-primitive: 1.1.0
+ which-typed-array: 1.1.19
+
es-define-property@1.0.1: {}
es-errors@1.3.0: {}
@@ -10225,15 +12240,100 @@ snapshots:
escalade@3.2.0: {}
+ escape-html@1.0.3: {}
+
escape-string-regexp@1.0.5: {}
escape-string-regexp@4.0.0: {}
+ eslint-config-next@16.0.1(@typescript-eslint/parser@8.46.3(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3):
+ dependencies:
+ '@next/eslint-plugin-next': 16.0.1
+ eslint: 9.38.0
+ eslint-import-resolver-node: 0.3.9
+ eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.3(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0))(eslint@9.38.0)
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.46.3(eslint@9.38.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.3(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0))(eslint@9.38.0))(eslint@9.38.0)
+ eslint-plugin-jsx-a11y: 6.10.2(eslint@9.38.0)
+ eslint-plugin-react: 7.37.5(eslint@9.38.0)
+ eslint-plugin-react-hooks: 7.0.1(eslint@9.38.0)
+ globals: 16.4.0
+ typescript-eslint: 8.46.3(eslint@9.38.0)(typescript@5.9.3)
+ optionalDependencies:
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - '@typescript-eslint/parser'
+ - eslint-import-resolver-webpack
+ - eslint-plugin-import-x
+ - supports-color
+
+ eslint-import-resolver-node@0.3.9:
+ dependencies:
+ debug: 3.2.7(supports-color@8.1.1)
+ is-core-module: 2.16.1
+ resolve: 1.22.10
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.3(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0))(eslint@9.38.0):
+ dependencies:
+ '@nolyfill/is-core-module': 1.0.39
+ debug: 4.4.3(supports-color@8.1.1)
+ eslint: 9.38.0
+ get-tsconfig: 4.13.0
+ is-bun-module: 2.0.0
+ stable-hash: 0.0.5
+ tinyglobby: 0.2.15
+ unrs-resolver: 1.11.1
+ optionalDependencies:
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.46.3(eslint@9.38.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.3(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0))(eslint@9.38.0))(eslint@9.38.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@8.46.3(eslint@9.38.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.3(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0))(eslint@9.38.0))(eslint@9.38.0):
+ dependencies:
+ debug: 3.2.7(supports-color@8.1.1)
+ optionalDependencies:
+ '@typescript-eslint/parser': 8.46.3(eslint@9.38.0)(typescript@5.9.3)
+ eslint: 9.38.0
+ eslint-import-resolver-node: 0.3.9
+ eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.3(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0))(eslint@9.38.0)
+ transitivePeerDependencies:
+ - supports-color
+
eslint-plugin-cypress@5.2.0(eslint@9.38.0):
dependencies:
eslint: 9.38.0
globals: 16.4.0
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.3(eslint@9.38.0)(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.3(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0))(eslint@9.38.0))(eslint@9.38.0):
+ dependencies:
+ '@rtsao/scc': 1.1.0
+ array-includes: 3.1.9
+ array.prototype.findlastindex: 1.2.6
+ array.prototype.flat: 1.3.3
+ array.prototype.flatmap: 1.3.3
+ debug: 3.2.7(supports-color@8.1.1)
+ doctrine: 2.1.0
+ eslint: 9.38.0
+ eslint-import-resolver-node: 0.3.9
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.46.3(eslint@9.38.0)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.46.3(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0))(eslint@9.38.0))(eslint@9.38.0)
+ hasown: 2.0.2
+ is-core-module: 2.16.1
+ is-glob: 4.0.3
+ minimatch: 3.1.2
+ object.fromentries: 2.0.8
+ object.groupby: 1.0.3
+ object.values: 1.2.1
+ semver: 6.3.1
+ string.prototype.trimend: 1.0.9
+ tsconfig-paths: 3.15.0
+ optionalDependencies:
+ '@typescript-eslint/parser': 8.46.3(eslint@9.38.0)(typescript@5.9.3)
+ transitivePeerDependencies:
+ - eslint-import-resolver-typescript
+ - eslint-import-resolver-webpack
+ - supports-color
+
eslint-plugin-jsx-a11y@6.10.2(eslint@9.38.0):
dependencies:
aria-query: 5.3.2
@@ -10257,6 +12357,17 @@ snapshots:
dependencies:
eslint: 9.38.0
+ eslint-plugin-react-hooks@7.0.1(eslint@9.38.0):
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/parser': 7.28.5
+ eslint: 9.38.0
+ hermes-parser: 0.25.1
+ zod: 4.1.12
+ zod-validation-error: 4.0.2(zod@4.1.12)
+ transitivePeerDependencies:
+ - supports-color
+
eslint-plugin-react-refresh@0.4.24(eslint@9.38.0):
dependencies:
eslint: 9.38.0
@@ -10388,6 +12499,8 @@ snapshots:
esutils@2.0.3: {}
+ etag@1.8.1: {}
+
event-stream@3.3.4:
dependencies:
duplexer: 0.1.2
@@ -10445,8 +12558,46 @@ snapshots:
dependencies:
pify: 2.3.0
+ exit-hook@2.2.1: {}
+
expect-type@1.2.2: {}
+ express@4.21.2:
+ dependencies:
+ accepts: 1.3.8
+ array-flatten: 1.1.1
+ body-parser: 1.20.3
+ content-disposition: 0.5.4
+ content-type: 1.0.5
+ cookie: 0.7.1
+ cookie-signature: 1.0.6
+ debug: 2.6.9
+ depd: 2.0.0
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ etag: 1.8.1
+ finalhandler: 1.3.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ merge-descriptors: 1.0.3
+ methods: 1.1.2
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ path-to-regexp: 0.1.12
+ proxy-addr: 2.0.7
+ qs: 6.13.0
+ range-parser: 1.2.1
+ safe-buffer: 5.2.1
+ send: 0.19.0
+ serve-static: 1.16.2
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ type-is: 1.6.18
+ utils-merge: 1.0.1
+ vary: 1.1.2
+ transitivePeerDependencies:
+ - supports-color
+
extend@3.0.2: {}
extendable-error@0.1.7: {}
@@ -10465,6 +12616,14 @@ snapshots:
fast-deep-equal@3.1.3: {}
+ fast-glob@3.3.1:
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.8
+
fast-glob@3.3.3:
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -10509,6 +12668,18 @@ snapshots:
dependencies:
to-regex-range: 5.0.1
+ finalhandler@1.3.1:
+ dependencies:
+ debug: 2.6.9
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ on-finished: 2.4.1
+ parseurl: 1.3.3
+ statuses: 2.0.1
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+
find-cache-dir@3.3.2:
dependencies:
commondir: 1.0.1
@@ -10592,6 +12763,10 @@ snapshots:
form-serialize@0.7.2: {}
+ forwarded@0.2.0: {}
+
+ fresh@0.5.2: {}
+
from@0.1.7: {}
fs-extra@10.1.0:
@@ -10662,6 +12837,8 @@ snapshots:
get-nonce@1.0.1: {}
+ get-port@5.1.1: {}
+
get-proto@1.0.1:
dependencies:
dunder-proto: 1.0.1
@@ -10684,6 +12861,10 @@ snapshots:
es-errors: 1.3.0
get-intrinsic: 1.3.0
+ get-tsconfig@4.13.0:
+ dependencies:
+ resolve-pkg-maps: 1.0.0
+
getpass@0.1.7:
dependencies:
assert-plus: 1.0.0
@@ -10740,6 +12921,8 @@ snapshots:
merge2: 1.4.1
slash: 3.0.0
+ globrex@0.1.2: {}
+
gopd@1.2.0: {}
graceful-fs@4.2.11: {}
@@ -10775,6 +12958,16 @@ snapshots:
he@1.2.0: {}
+ hermes-estree@0.25.1: {}
+
+ hermes-parser@0.25.1:
+ dependencies:
+ hermes-estree: 0.25.1
+
+ hosted-git-info@6.1.3:
+ dependencies:
+ lru-cache: 7.18.3
+
html-encoding-sniffer@4.0.0:
dependencies:
whatwg-encoding: 3.1.1
@@ -10808,6 +13001,14 @@ snapshots:
domutils: 2.8.0
entities: 2.2.0
+ http-errors@2.0.0:
+ dependencies:
+ depd: 2.0.0
+ inherits: 2.0.4
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ toidentifier: 1.0.1
+
http-proxy-agent@7.0.2:
dependencies:
agent-base: 7.1.3
@@ -10836,6 +13037,10 @@ snapshots:
human-signals@8.0.1: {}
+ iconv-lite@0.4.24:
+ dependencies:
+ safer-buffer: 2.1.2
+
iconv-lite@0.6.3:
dependencies:
safer-buffer: 2.1.2
@@ -10880,6 +13085,8 @@ snapshots:
hasown: 2.0.2
side-channel: 1.1.0
+ ipaddr.js@1.9.1: {}
+
is-array-buffer@3.0.5:
dependencies:
call-bind: 1.0.8
@@ -10888,9 +13095,6 @@ snapshots:
is-arrayish@0.2.1: {}
- is-arrayish@0.3.2:
- optional: true
-
is-async-function@2.1.1:
dependencies:
async-function: 1.0.0
@@ -10914,6 +13118,10 @@ snapshots:
call-bound: 1.0.4
has-tostringtag: 1.0.2
+ is-bun-module@2.0.0:
+ dependencies:
+ semver: 7.7.1
+
is-callable@1.2.7: {}
is-core-module@2.16.1:
@@ -10959,6 +13167,8 @@ snapshots:
is-map@2.0.3: {}
+ is-negative-zero@2.0.3: {}
+
is-number-object@1.1.1:
dependencies:
call-bound: 1.0.4
@@ -10974,6 +13184,10 @@ snapshots:
is-potential-custom-element-name@1.0.1: {}
+ is-reference@3.0.3:
+ dependencies:
+ '@types/estree': 1.0.8
+
is-regex@1.2.1:
dependencies:
call-bound: 1.0.4
@@ -11035,6 +13249,8 @@ snapshots:
isarray@2.0.5: {}
+ isbot@5.1.32: {}
+
isexe@2.0.0: {}
isstream@0.1.2: {}
@@ -11141,12 +13357,16 @@ snapshots:
- utf-8-validate
optional: true
+ jsesc@3.0.2: {}
+
jsesc@3.1.0: {}
json-buffer@3.0.1: {}
json-parse-even-better-errors@2.3.1: {}
+ json-parse-even-better-errors@3.0.2: {}
+
json-schema-traverse@0.4.1: {}
json-schema-traverse@1.0.0: {}
@@ -11157,6 +13377,10 @@ snapshots:
json-stringify-safe@5.0.1: {}
+ json5@1.0.2:
+ dependencies:
+ minimist: 1.2.8
+
json5@2.2.3: {}
jsonfile@4.0.0:
@@ -11278,6 +13502,8 @@ snapshots:
dependencies:
yallist: 3.1.1
+ lru-cache@7.18.3: {}
+
lz-string@1.5.0: {}
magic-string@0.30.17:
@@ -11299,14 +13525,20 @@ snapshots:
mdn-data@2.12.2:
optional: true
+ media-typer@0.3.0: {}
+
memfs@3.5.3:
dependencies:
fs-monkey: 1.1.0
+ merge-descriptors@1.0.3: {}
+
merge-stream@2.0.0: {}
merge2@1.4.1: {}
+ methods@1.1.2: {}
+
micromatch@4.0.8:
dependencies:
braces: 3.0.3
@@ -11324,6 +13556,8 @@ snapshots:
dependencies:
mime-db: 1.52.0
+ mime@1.6.0: {}
+
mimic-fn@2.1.0: {}
min-indent@1.0.1: {}
@@ -11347,6 +13581,16 @@ snapshots:
pkg-types: 1.3.1
ufo: 1.6.1
+ morgan@1.10.1:
+ dependencies:
+ basic-auth: 2.0.1
+ debug: 2.6.9
+ depd: 2.0.0
+ on-finished: 2.3.0
+ on-headers: 1.1.0
+ transitivePeerDependencies:
+ - supports-color
+
mri@1.2.0: {}
ms@2.0.0: {}
@@ -11361,33 +13605,35 @@ snapshots:
nanoid@3.3.11: {}
+ napi-postinstall@0.3.4: {}
+
natural-compare@1.4.0: {}
+ negotiator@0.6.3: {}
+
negotiator@0.6.4: {}
neo-async@2.6.2: {}
- next@15.3.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ next@16.0.1(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
dependencies:
- '@next/env': 15.3.1
- '@swc/counter': 0.1.3
+ '@next/env': 16.0.1
'@swc/helpers': 0.5.15
- busboy: 1.6.0
- caniuse-lite: 1.0.30001712
+ caniuse-lite: 1.0.30001751
postcss: 8.4.31
react: 19.2.0
react-dom: 19.2.0(react@19.2.0)
styled-jsx: 5.1.6(react@19.2.0)
optionalDependencies:
- '@next/swc-darwin-arm64': 15.3.1
- '@next/swc-darwin-x64': 15.3.1
- '@next/swc-linux-arm64-gnu': 15.3.1
- '@next/swc-linux-arm64-musl': 15.3.1
- '@next/swc-linux-x64-gnu': 15.3.1
- '@next/swc-linux-x64-musl': 15.3.1
- '@next/swc-win32-arm64-msvc': 15.3.1
- '@next/swc-win32-x64-msvc': 15.3.1
- sharp: 0.34.1
+ '@next/swc-darwin-arm64': 16.0.1
+ '@next/swc-darwin-x64': 16.0.1
+ '@next/swc-linux-arm64-gnu': 16.0.1
+ '@next/swc-linux-arm64-musl': 16.0.1
+ '@next/swc-linux-x64-gnu': 16.0.1
+ '@next/swc-linux-x64-musl': 16.0.1
+ '@next/swc-win32-arm64-msvc': 16.0.1
+ '@next/swc-win32-x64-msvc': 16.0.1
+ sharp: 0.34.4
transitivePeerDependencies:
- '@babel/core'
- babel-plugin-macros
@@ -11403,8 +13649,35 @@ snapshots:
node-releases@2.0.26: {}
+ normalize-package-data@5.0.0:
+ dependencies:
+ hosted-git-info: 6.1.3
+ is-core-module: 2.16.1
+ semver: 7.7.1
+ validate-npm-package-license: 3.0.4
+
normalize-path@3.0.0: {}
+ npm-install-checks@6.3.0:
+ dependencies:
+ semver: 7.7.1
+
+ npm-normalize-package-bin@3.0.1: {}
+
+ npm-package-arg@10.1.0:
+ dependencies:
+ hosted-git-info: 6.1.3
+ proc-log: 3.0.0
+ semver: 7.7.1
+ validate-npm-package-name: 5.0.1
+
+ npm-pick-manifest@8.0.2:
+ dependencies:
+ npm-install-checks: 6.3.0
+ npm-normalize-package-bin: 3.0.1
+ npm-package-arg: 10.1.0
+ semver: 7.7.1
+
npm-run-path@4.0.1:
dependencies:
path-key: 3.1.1
@@ -11449,6 +13722,12 @@ snapshots:
es-abstract: 1.23.9
es-object-atoms: 1.1.1
+ object.groupby@1.0.3:
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+
object.values@1.2.1:
dependencies:
call-bind: 1.0.8
@@ -11458,6 +13737,14 @@ snapshots:
objectorarray@1.0.5: {}
+ on-finished@2.3.0:
+ dependencies:
+ ee-first: 1.1.1
+
+ on-finished@2.4.1:
+ dependencies:
+ ee-first: 1.1.1
+
on-headers@1.1.0: {}
once@1.4.0:
@@ -11527,6 +13814,8 @@ snapshots:
dependencies:
aggregate-error: 3.1.0
+ p-map@7.0.3: {}
+
p-try@2.2.0: {}
package-json-from-dist@1.0.1: {}
@@ -11562,6 +13851,8 @@ snapshots:
entities: 6.0.1
optional: true
+ parseurl@1.3.3: {}
+
pascal-case@3.1.2:
dependencies:
no-case: 3.0.4
@@ -11586,10 +13877,14 @@ snapshots:
lru-cache: 10.4.3
minipass: 7.1.2
+ path-to-regexp@0.1.12: {}
+
path-to-regexp@3.3.0: {}
path-type@4.0.0: {}
+ pathe@1.1.2: {}
+
pathe@2.0.3: {}
pathval@2.0.0: {}
@@ -11602,6 +13897,12 @@ snapshots:
performance-now@2.1.0: {}
+ periscopic@4.0.2:
+ dependencies:
+ '@types/estree': 1.0.8
+ is-reference: 3.0.3
+ zimmerframe: 1.1.4
+
picocolors@1.1.1: {}
picomatch@2.3.1: {}
@@ -11706,14 +14007,28 @@ snapshots:
tinyexec: 0.3.2
tslib: 2.8.1
+ proc-log@3.0.0: {}
+
process@0.11.10: {}
+ promise-inflight@1.0.1: {}
+
+ promise-retry@2.0.1:
+ dependencies:
+ err-code: 2.0.3
+ retry: 0.12.0
+
prop-types@15.8.1:
dependencies:
loose-envify: 1.4.0
object-assign: 4.1.1
react-is: 16.13.1
+ proxy-addr@2.0.7:
+ dependencies:
+ forwarded: 0.2.0
+ ipaddr.js: 1.9.1
+
proxy-from-env@1.0.0: {}
proxy-from-env@1.1.0: {}
@@ -11729,6 +14044,10 @@ snapshots:
punycode@2.3.1: {}
+ qs@6.13.0:
+ dependencies:
+ side-channel: 1.1.0
+
qs@6.14.0:
dependencies:
side-channel: 1.1.0
@@ -11745,6 +14064,13 @@ snapshots:
range-parser@1.2.1: {}
+ raw-body@2.5.2:
+ dependencies:
+ bytes: 3.1.2
+ http-errors: 2.0.0
+ iconv-lite: 0.4.24
+ unpipe: 1.0.0
+
rc@1.2.8:
dependencies:
deep-extend: 0.6.0
@@ -11771,6 +14097,19 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ react-dom@17.0.2(react@17.0.2):
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+ react: 17.0.2
+ scheduler: 0.20.2
+
+ react-dom@18.3.1(react@18.3.1):
+ dependencies:
+ loose-envify: 1.4.0
+ react: 18.3.1
+ scheduler: 0.23.2
+
react-dom@19.2.0(react@19.2.0):
dependencies:
react: 19.2.0
@@ -11782,6 +14121,10 @@ snapshots:
react-is@19.2.0: {}
+ react-refresh@0.14.2: {}
+
+ react-refresh@0.18.0: {}
+
react-remove-scroll-bar@2.3.8(@types/react@19.2.2)(react@19.2.0):
dependencies:
react: 19.2.0
@@ -11801,6 +14144,22 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.2
+ react-router@7.9.2(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ dependencies:
+ cookie: 1.0.2
+ react: 19.2.0
+ set-cookie-parser: 2.7.2
+ optionalDependencies:
+ react-dom: 19.2.0(react@19.2.0)
+
+ react-router@7.9.5(react-dom@19.2.0(react@19.2.0))(react@19.2.0):
+ dependencies:
+ cookie: 1.0.2
+ react: 19.2.0
+ set-cookie-parser: 2.7.2
+ optionalDependencies:
+ react-dom: 19.2.0(react@19.2.0)
+
react-style-singleton@2.2.3(@types/react@19.2.2)(react@19.2.0):
dependencies:
get-nonce: 1.0.1
@@ -11815,6 +14174,15 @@ snapshots:
react-is: 19.2.0
scheduler: 0.27.0
+ react@17.0.2:
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+
+ react@18.3.1:
+ dependencies:
+ loose-envify: 1.4.0
+
react@19.2.0: {}
read-yaml-file@1.1.0:
@@ -11902,6 +14270,8 @@ snapshots:
resolve-from@5.0.0: {}
+ resolve-pkg-maps@1.0.0: {}
+
resolve@1.22.10:
dependencies:
is-core-module: 2.16.1
@@ -11919,6 +14289,8 @@ snapshots:
onetime: 5.1.2
signal-exit: 3.0.7
+ retry@0.12.0: {}
+
reusify@1.1.0: {}
rfdc@1.4.1: {}
@@ -11973,6 +14345,8 @@ snapshots:
has-symbols: 1.1.0
isarray: 2.0.5
+ safe-buffer@5.1.2: {}
+
safe-buffer@5.2.1: {}
safe-push-apply@1.0.0:
@@ -11992,6 +14366,15 @@ snapshots:
dependencies:
xmlchars: 2.2.0
+ scheduler@0.20.2:
+ dependencies:
+ loose-envify: 1.4.0
+ object-assign: 4.1.1
+
+ scheduler@0.23.2:
+ dependencies:
+ loose-envify: 1.4.0
+
scheduler@0.27.0: {}
schema-utils@3.3.0:
@@ -12011,6 +14394,26 @@ snapshots:
semver@7.7.1: {}
+ semver@7.7.3: {}
+
+ send@0.19.0:
+ dependencies:
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ mime: 1.6.0
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+
serialize-javascript@6.0.2:
dependencies:
randombytes: 2.1.0
@@ -12025,6 +14428,15 @@ snapshots:
path-to-regexp: 3.3.0
range-parser: 1.2.0
+ serve-static@1.16.2:
+ dependencies:
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 0.19.0
+ transitivePeerDependencies:
+ - supports-color
+
serve@14.2.5:
dependencies:
'@zeit/schemas': 2.36.0
@@ -12041,6 +14453,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ set-cookie-parser@2.7.2: {}
+
set-function-length@1.2.2:
dependencies:
define-data-property: 1.1.4
@@ -12063,32 +14477,36 @@ snapshots:
es-errors: 1.3.0
es-object-atoms: 1.1.1
- sharp@0.34.1:
+ setprototypeof@1.2.0: {}
+
+ sharp@0.34.4:
dependencies:
- color: 4.2.3
- detect-libc: 2.0.3
- semver: 7.7.1
+ '@img/colour': 1.0.0
+ detect-libc: 2.1.2
+ semver: 7.7.3
optionalDependencies:
- '@img/sharp-darwin-arm64': 0.34.1
- '@img/sharp-darwin-x64': 0.34.1
- '@img/sharp-libvips-darwin-arm64': 1.1.0
- '@img/sharp-libvips-darwin-x64': 1.1.0
- '@img/sharp-libvips-linux-arm': 1.1.0
- '@img/sharp-libvips-linux-arm64': 1.1.0
- '@img/sharp-libvips-linux-ppc64': 1.1.0
- '@img/sharp-libvips-linux-s390x': 1.1.0
- '@img/sharp-libvips-linux-x64': 1.1.0
- '@img/sharp-libvips-linuxmusl-arm64': 1.1.0
- '@img/sharp-libvips-linuxmusl-x64': 1.1.0
- '@img/sharp-linux-arm': 0.34.1
- '@img/sharp-linux-arm64': 0.34.1
- '@img/sharp-linux-s390x': 0.34.1
- '@img/sharp-linux-x64': 0.34.1
- '@img/sharp-linuxmusl-arm64': 0.34.1
- '@img/sharp-linuxmusl-x64': 0.34.1
- '@img/sharp-wasm32': 0.34.1
- '@img/sharp-win32-ia32': 0.34.1
- '@img/sharp-win32-x64': 0.34.1
+ '@img/sharp-darwin-arm64': 0.34.4
+ '@img/sharp-darwin-x64': 0.34.4
+ '@img/sharp-libvips-darwin-arm64': 1.2.3
+ '@img/sharp-libvips-darwin-x64': 1.2.3
+ '@img/sharp-libvips-linux-arm': 1.2.3
+ '@img/sharp-libvips-linux-arm64': 1.2.3
+ '@img/sharp-libvips-linux-ppc64': 1.2.3
+ '@img/sharp-libvips-linux-s390x': 1.2.3
+ '@img/sharp-libvips-linux-x64': 1.2.3
+ '@img/sharp-libvips-linuxmusl-arm64': 1.2.3
+ '@img/sharp-libvips-linuxmusl-x64': 1.2.3
+ '@img/sharp-linux-arm': 0.34.4
+ '@img/sharp-linux-arm64': 0.34.4
+ '@img/sharp-linux-ppc64': 0.34.4
+ '@img/sharp-linux-s390x': 0.34.4
+ '@img/sharp-linux-x64': 0.34.4
+ '@img/sharp-linuxmusl-arm64': 0.34.4
+ '@img/sharp-linuxmusl-x64': 0.34.4
+ '@img/sharp-wasm32': 0.34.4
+ '@img/sharp-win32-arm64': 0.34.4
+ '@img/sharp-win32-ia32': 0.34.4
+ '@img/sharp-win32-x64': 0.34.4
optional: true
shebang-command@2.0.0:
@@ -12131,11 +14549,6 @@ snapshots:
signal-exit@4.1.0: {}
- simple-swizzle@0.2.2:
- dependencies:
- is-arrayish: 0.3.2
- optional: true
-
slash@3.0.0: {}
slice-ansi@3.0.0:
@@ -12168,6 +14581,20 @@ snapshots:
cross-spawn: 7.0.6
signal-exit: 4.1.0
+ spdx-correct@3.2.0:
+ dependencies:
+ spdx-expression-parse: 3.0.1
+ spdx-license-ids: 3.0.22
+
+ spdx-exceptions@2.5.0: {}
+
+ spdx-expression-parse@3.0.1:
+ dependencies:
+ spdx-exceptions: 2.5.0
+ spdx-license-ids: 3.0.22
+
+ spdx-license-ids@3.0.22: {}
+
split@0.3.3:
dependencies:
through: 2.3.8
@@ -12186,6 +14613,8 @@ snapshots:
safer-buffer: 2.1.2
tweetnacl: 0.14.5
+ stable-hash@0.0.5: {}
+
stackback@0.0.2: {}
start-server-and-test@2.1.2:
@@ -12201,8 +14630,15 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ statuses@2.0.1: {}
+
std-env@3.9.0: {}
+ stop-iteration-iterator@1.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ internal-slot: 1.1.0
+
storybook@9.1.15(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.12(@types/node@22.14.0)(terser@5.39.0)):
dependencies:
'@storybook/global': 5.0.0
@@ -12231,8 +14667,6 @@ snapshots:
dependencies:
duplexer: 0.1.2
- streamsearch@1.1.0: {}
-
string-width@4.2.3:
dependencies:
emoji-regex: 8.0.0
@@ -12432,6 +14866,8 @@ snapshots:
dependencies:
is-number: 7.0.0
+ toidentifier@1.0.1: {}
+
tough-cookie@5.1.2:
dependencies:
tldts: 6.1.85
@@ -12464,6 +14900,17 @@ snapshots:
ts-interface-checker@0.1.13: {}
+ tsconfck@3.1.6(typescript@5.9.3):
+ optionalDependencies:
+ typescript: 5.9.3
+
+ tsconfig-paths@3.15.0:
+ dependencies:
+ '@types/json5': 0.0.29
+ json5: 1.0.2
+ minimist: 1.2.8
+ strip-bom: 3.0.0
+
tsconfig-paths@4.2.0:
dependencies:
json5: 2.2.3
@@ -12505,6 +14952,8 @@ snapshots:
dependencies:
safe-buffer: 5.2.1
+ turbo-stream@3.1.0: {}
+
tweetnacl@0.14.5: {}
type-check@0.4.0:
@@ -12517,6 +14966,11 @@ snapshots:
type-fest@2.19.0: {}
+ type-is@1.6.18:
+ dependencies:
+ media-typer: 0.3.0
+ mime-types: 2.1.35
+
typed-array-buffer@1.0.3:
dependencies:
call-bound: 1.0.4
@@ -12550,6 +15004,17 @@ snapshots:
possible-typed-array-names: 1.1.0
reflect.getprototypeof: 1.0.10
+ typescript-eslint@8.46.3(eslint@9.38.0)(typescript@5.9.3):
+ dependencies:
+ '@typescript-eslint/eslint-plugin': 8.46.3(@typescript-eslint/parser@8.46.3(eslint@9.38.0)(typescript@5.9.3))(eslint@9.38.0)(typescript@5.9.3)
+ '@typescript-eslint/parser': 8.46.3(eslint@9.38.0)(typescript@5.9.3)
+ '@typescript-eslint/typescript-estree': 8.46.3(typescript@5.9.3)
+ '@typescript-eslint/utils': 8.46.3(eslint@9.38.0)(typescript@5.9.3)
+ eslint: 9.38.0
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
+
typescript@5.9.3: {}
ufo@1.6.1: {}
@@ -12571,11 +15036,37 @@ snapshots:
universalify@2.0.1: {}
+ unpipe@1.0.0: {}
+
unplugin@1.16.1:
dependencies:
acorn: 8.14.1
webpack-virtual-modules: 0.6.2
+ unrs-resolver@1.11.1:
+ dependencies:
+ napi-postinstall: 0.3.4
+ optionalDependencies:
+ '@unrs/resolver-binding-android-arm-eabi': 1.11.1
+ '@unrs/resolver-binding-android-arm64': 1.11.1
+ '@unrs/resolver-binding-darwin-arm64': 1.11.1
+ '@unrs/resolver-binding-darwin-x64': 1.11.1
+ '@unrs/resolver-binding-freebsd-x64': 1.11.1
+ '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1
+ '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1
+ '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1
+ '@unrs/resolver-binding-linux-arm64-musl': 1.11.1
+ '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1
+ '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1
+ '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1
+ '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1
+ '@unrs/resolver-binding-linux-x64-gnu': 1.11.1
+ '@unrs/resolver-binding-linux-x64-musl': 1.11.1
+ '@unrs/resolver-binding-wasm32-wasi': 1.11.1
+ '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1
+ '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1
+ '@unrs/resolver-binding-win32-x64-msvc': 1.11.1
+
untildify@4.0.0: {}
update-browserslist-db@1.1.3(browserslist@4.24.4):
@@ -12622,8 +15113,27 @@ snapshots:
utila@0.4.0: {}
+ utils-merge@1.0.1: {}
+
+ uuid@11.1.0: {}
+
uuid@8.3.2: {}
+ valibot@0.41.0(typescript@5.9.3):
+ optionalDependencies:
+ typescript: 5.9.3
+
+ valibot@1.1.0(typescript@5.9.3):
+ optionalDependencies:
+ typescript: 5.9.3
+
+ validate-npm-package-license@3.0.4:
+ dependencies:
+ spdx-correct: 3.2.0
+ spdx-expression-parse: 3.0.1
+
+ validate-npm-package-name@5.0.1: {}
+
vary@1.1.2: {}
verror@1.10.0:
@@ -12632,6 +15142,59 @@ snapshots:
core-util-is: 1.0.2
extsprintf: 1.3.0
+ vite-node@3.2.4(@types/node@22.14.0)(terser@5.39.0):
+ dependencies:
+ cac: 6.7.14
+ debug: 4.4.3(supports-color@8.1.1)
+ es-module-lexer: 1.7.0
+ pathe: 2.0.3
+ vite: 7.1.12(@types/node@22.14.0)(terser@5.39.0)
+ transitivePeerDependencies:
+ - '@types/node'
+ - jiti
+ - less
+ - lightningcss
+ - sass
+ - sass-embedded
+ - stylus
+ - sugarss
+ - supports-color
+ - terser
+ - tsx
+ - yaml
+
+ vite-plugin-devtools-json@1.0.0(vite@7.1.12(@types/node@22.14.0)(terser@5.39.0)):
+ dependencies:
+ uuid: 11.1.0
+ vite: 7.1.12(@types/node@22.14.0)(terser@5.39.0)
+
+ vite-plugin-devtools-json@1.0.0(vite@7.1.6(@types/node@22.14.0)(terser@5.39.0)):
+ dependencies:
+ uuid: 11.1.0
+ vite: 7.1.6(@types/node@22.14.0)(terser@5.39.0)
+
+ vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.1.12(@types/node@22.14.0)(terser@5.39.0)):
+ dependencies:
+ debug: 4.4.3(supports-color@8.1.1)
+ globrex: 0.1.2
+ tsconfck: 3.1.6(typescript@5.9.3)
+ optionalDependencies:
+ vite: 7.1.12(@types/node@22.14.0)(terser@5.39.0)
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@7.1.6(@types/node@22.14.0)(terser@5.39.0)):
+ dependencies:
+ debug: 4.4.3(supports-color@8.1.1)
+ globrex: 0.1.2
+ tsconfck: 3.1.6(typescript@5.9.3)
+ optionalDependencies:
+ vite: 7.1.6(@types/node@22.14.0)(terser@5.39.0)
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
vite@7.1.12(@types/node@22.14.0)(terser@5.39.0):
dependencies:
esbuild: 0.25.11
@@ -12645,6 +15208,28 @@ snapshots:
fsevents: 2.3.3
terser: 5.39.0
+ vite@7.1.6(@types/node@22.14.0)(terser@5.39.0):
+ dependencies:
+ esbuild: 0.25.11
+ fdir: 6.5.0(picomatch@4.0.3)
+ picomatch: 4.0.3
+ postcss: 8.5.6
+ rollup: 4.52.5
+ tinyglobby: 0.2.15
+ optionalDependencies:
+ '@types/node': 22.14.0
+ fsevents: 2.3.3
+ terser: 5.39.0
+
+ vitefu@1.1.1(vite@7.1.12(@types/node@22.14.0)(terser@5.39.0)):
+ optionalDependencies:
+ vite: 7.1.12(@types/node@22.14.0)(terser@5.39.0)
+ optional: true
+
+ vitefu@1.1.1(vite@7.1.6(@types/node@22.14.0)(terser@5.39.0)):
+ optionalDependencies:
+ vite: 7.1.6(@types/node@22.14.0)(terser@5.39.0)
+
vitest-axe@1.0.0-pre.5(vitest@4.0.4(@types/node@22.14.0)(jsdom@26.1.0)(terser@5.39.0)):
dependencies:
'@vitest/pretty-format': 3.1.1
@@ -12878,6 +15463,10 @@ snapshots:
dependencies:
isexe: 2.0.0
+ which@3.0.1:
+ dependencies:
+ isexe: 2.0.0
+
why-is-node-running@2.3.0:
dependencies:
siginfo: 2.0.0
@@ -12931,3 +15520,11 @@ snapshots:
yocto-queue@1.2.1: {}
yoctocolors@2.1.1: {}
+
+ zimmerframe@1.1.4: {}
+
+ zod-validation-error@4.0.2(zod@4.1.12):
+ dependencies:
+ zod: 4.1.12
+
+ zod@4.1.12: {}