diff --git a/.changeset/rjsf-6-peer-range-and-theme-prop.md b/.changeset/rjsf-6-peer-range-and-theme-prop.md
new file mode 100644
index 0000000..2640a6c
--- /dev/null
+++ b/.changeset/rjsf-6-peer-range-and-theme-prop.md
@@ -0,0 +1,38 @@
+---
+'acture-forms-rjsf': minor
+---
+
+Accept `@rjsf` 6.x, and make the RJSF theme injectable.
+
+The `@rjsf/core` / `@rjsf/utils` / `@rjsf/validator-ajv8` peer ranges move from
+`^5.20.0` to `^5.20.0 || ^6.0.0`. `@rjsf/shadcn` is published on the 6.x line
+only, so the old range made the shadcn theme — the one every frontend in this
+ecosystem wants — impossible to install alongside this adapter. The failure was
+an npm peer conflict at install time, i.e. before a line of form code got
+written. No adapter code was needed to span the two majors: `@rjsf/core`'s
+default export and `FormProps`, `@rjsf/validator-ajv8`'s default export, and the
+`schema` / `formData` / `validator` / `liveValidate` / `onSubmit` / children
+props are shape-identical on both.
+
+`` gains an optional **`form`** prop taking any RJSF theme's
+`
` (`ComponentType` — the type every theme's default export
+already has), defaulting to the unstyled `@rjsf/core` form:
+
+```tsx
+import ShadcnForm from '@rjsf/shadcn';
+;
+```
+
+Before this, the README told you to "pass your own `Form` from the themed
+package" and there was no prop that accepted one. acture still bundles no UI kit
+(hard-don't #8) — the theme is the host's, injected.
+
+Both halves of the widened range are checked on every PR: the main CI job
+installs and tests 6.x, and a second job installs its own plain 5.x tree and
+typechecks + tests the adapter against it.
+
+The `form` value must be referentially stable (bind a theme at module level) —
+React reconciles by element type, so an inline `withTheme(...)` remounts the
+form and discards in-progress input. Documented on the prop and in the README.
+
+Also exported: the `RjsfFormComponent` type.
diff --git a/.claude/skills/acture-palette-design/SKILL.md b/.claude/skills/acture-palette-design/SKILL.md
index f083841..7306372 100644
--- a/.claude/skills/acture-palette-design/SKILL.md
+++ b/.claude/skills/acture-palette-design/SKILL.md
@@ -78,6 +78,23 @@ function deriveKind(record: CommandRecord): "atomic" | "handoff" {
- **autoform** — Zod-native; lighter; fits the recommended Zod-first authoring path.
- **rjsf** — JSON-Schema-native; battle-tested; larger bundle but more themes.
+`RjsfForm` takes the theme as an optional **`form`** prop — any RJSF theme's
+default export (`ComponentType`), defaulting to the unstyled
+`@rjsf/core` one. That is hard-don't #8's slot API, not a bundled UI kit: bind
+the theme once at the call site to get a `PaletteFormAdapter`.
+
+```tsx
+import ShadcnForm from '@rjsf/shadcn';
+const ShadcnRjsfForm: PaletteFormAdapter = (p) => ;
+```
+
+Bind the theme at **module level** — React reconciles by element type, so an
+inline `withTheme(...)` remounts the form and wipes what the user typed.
+
+Peer range is `@rjsf` `^5.20.0 || ^6.0.0`, and CI installs and tests both majors
+(the `rjsf5` job runs a second, plain 5.x install). **Prefer 6.x** —
+`@rjsf/shadcn` is published on the 6.x line only.
+
Acture's core does not bundle a form library. Per redesign-takeaways §2.3.
## The don't-do list (research-2 §9.5)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index afa8473..da50999 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -42,3 +42,50 @@ jobs:
run: |
ls -la /tmp/acture-*.tgz
tar -tzf /tmp/acture-*.tgz
+
+ # The published `acture-forms-rjsf` peer range is `^5.20.0 || ^6.0.0`. The job
+ # above installs and tests the 6.x half; this one installs and tests the 5.x
+ # half, so both ends of the promise are checked on every PR.
+ #
+ # It is a second INSTALL, not a second alias tree in one install — which is the
+ # only thing pnpm's peers-are-matched-by-name behaviour actually rules out.
+ # `scripts/pin-rjsf-5x.mjs` rewrites the three `@rjsf` devDependencies to the
+ # 5.x clause READ OFF the declared peer range, drops the 6.x-only
+ # `@rjsf/shadcn` and its smoke test, and no-ops if the range ever narrows to
+ # 6-only. Without this job a value that is legal on 6.x but not on 5.x — e.g.
+ # `liveValidate="onChange"`, widened in 6.x — ships green.
+ rjsf5:
+ name: forms-rjsf against @rjsf 5.x
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+
+ - uses: pnpm/action-setup@v4
+ with:
+ version: 10
+
+ - uses: actions/setup-node@v4
+ with:
+ node-version: 22
+ cache: pnpm
+
+ - name: Pin the forms-rjsf dev tree to the 5.x half of its peer range
+ run: node scripts/pin-rjsf-5x.mjs
+
+ # The lockfile describes the 6.x tree, so this install deliberately
+ # resolves fresh. Nothing is committed from this job.
+ - name: Install
+ run: pnpm install --no-frozen-lockfile
+
+ - name: Assert a real 5.x tree resolved
+ run: node scripts/pin-rjsf-5x.mjs --verify
+
+ # forms-rjsf consumes `acture` types out of its dist/.
+ - name: Build acture
+ run: pnpm --filter acture build
+
+ - name: Typecheck forms-rjsf against 5.x
+ run: pnpm --filter acture-forms-rjsf typecheck
+
+ - name: Test forms-rjsf against 5.x
+ run: pnpm --filter acture-forms-rjsf test
diff --git a/packages/forms-rjsf/README.md b/packages/forms-rjsf/README.md
index 3d36a1a..92a2131 100644
--- a/packages/forms-rjsf/README.md
+++ b/packages/forms-rjsf/README.md
@@ -17,6 +17,13 @@ For Zod-first authoring with a leaner runtime, prefer [`acture-forms-autoform`](
pnpm add acture-forms-rjsf @rjsf/core @rjsf/utils @rjsf/validator-ajv8 react
```
+Peers on `@rjsf` **`^5.20.0 || ^6.0.0`**. Every API this adapter touches is
+shape-identical across the two majors, so the same code serves both, and **both
+halves run in CI**: the main job installs and tests 6.x, and a second job
+(`rjsf5`) installs its own plain 5.x tree and typechecks + tests the adapter
+against it. **Prefer 6.x** — `@rjsf/shadcn`, the theme most hosts want, is
+published on the 6.x line only, so the shadcn smoke test is 6.x-only.
+
## Use as a palette form adapter
```tsx
@@ -28,7 +35,38 @@ import { RjsfForm } from 'acture-forms-rjsf';
## Theming
-The default render is rjsf's bare bones. To use a theme, wrap `RjsfForm` and pass your own `Form` from the themed package (`@rjsf/mui`, `@rjsf/chakra-ui`, etc.). The acture-side bridge is identical.
+The default render is rjsf's bare bones. Pass any RJSF theme's `` via the
+`form` prop — acture never bundles a UI kit, so the design system is your choice:
+
+```tsx
+import ShadcnForm from '@rjsf/shadcn';
+import { RjsfForm } from 'acture-forms-rjsf';
+
+;
+```
+
+To hand a themed form to the palette, bind the theme once:
+
+```tsx
+import type { PaletteFormAdapter } from 'acture-palette-react';
+
+const ShadcnRjsfForm: PaletteFormAdapter = (props) => (
+
+);
+
+;
+```
+
+Every RJSF theme's default export has the same type (`ComponentType`),
+so `@rjsf/mui`, `@rjsf/chakra-ui`, `@rjsf/antd`, … all drop in the same way. The
+acture-side bridge is identical.
+
+> **Keep the `form` value referentially stable.** React reconciles by element
+> type, so building the theme inline — `form={withTheme(myTheme)}` in JSX, or an
+> un-hoisted adapter arrow — yields a new component type on every render: the
+> form remounts and whatever the user had typed is silently reset to `defaults`.
+> Both snippets above are safe because `ShadcnForm` and `ShadcnRjsfForm` are
+> module-level bindings. Hoist yours the same way.
## See also
diff --git a/packages/forms-rjsf/package.json b/packages/forms-rjsf/package.json
index bae1ed8..8474774 100644
--- a/packages/forms-rjsf/package.json
+++ b/packages/forms-rjsf/package.json
@@ -1,7 +1,7 @@
{
"name": "acture-forms-rjsf",
"version": "1.0.0",
- "description": "JSON-Schema-native form adapter for acture-palette-react built on react-jsonschema-form (@rjsf/core).",
+ "description": "JSON-Schema-native form adapter for acture-palette-react built on react-jsonschema-form (@rjsf/core 5.x or 6.x), with a pluggable theme.",
"license": "Apache-2.0",
"author": "Thor Whalen",
"repository": {
@@ -36,16 +36,17 @@
"clean": "rm -rf dist *.tsbuildinfo"
},
"peerDependencies": {
- "@rjsf/core": "^5.20.0",
- "@rjsf/utils": "^5.20.0",
- "@rjsf/validator-ajv8": "^5.20.0",
+ "@rjsf/core": "^5.20.0 || ^6.0.0",
+ "@rjsf/utils": "^5.20.0 || ^6.0.0",
+ "@rjsf/validator-ajv8": "^5.20.0 || ^6.0.0",
"acture": "^1.0.0",
"react": "^18.0.0 || ^19.0.0"
},
"devDependencies": {
- "@rjsf/core": "^5.24.0",
- "@rjsf/utils": "^5.24.0",
- "@rjsf/validator-ajv8": "^5.24.0",
+ "@rjsf/core": "^6.8.0",
+ "@rjsf/shadcn": "^6.8.0",
+ "@rjsf/utils": "^6.8.0",
+ "@rjsf/validator-ajv8": "^6.8.0",
"@testing-library/react": "^16.1.0",
"@types/react": "^19.0.0",
"@vitejs/plugin-react": "^4.3.4",
diff --git a/packages/forms-rjsf/src/index.ts b/packages/forms-rjsf/src/index.ts
index 8fcc093..ad8a7da 100644
--- a/packages/forms-rjsf/src/index.ts
+++ b/packages/forms-rjsf/src/index.ts
@@ -10,7 +10,12 @@
*
* For Zod-first authoring with a leaner runtime, prefer
* [`acture-forms-autoform`](../forms-autoform).
+ *
+ * Peers on `@rjsf` `^5.20.0 || ^6.0.0`; prefer **6.x**, which is what CI tests
+ * and the only line `@rjsf/shadcn` is published on. The `form` prop takes any
+ * RJSF theme's `` — `@rjsf/shadcn`, `@rjsf/mui`, … — so the host picks
+ * the UI kit and this package never bundles one.
*/
export { RjsfForm } from './rjsf-form.js';
-export type { RjsfFormProps } from './rjsf-form.js';
+export type { RjsfFormProps, RjsfFormComponent } from './rjsf-form.js';
diff --git a/packages/forms-rjsf/src/rjsf-form.test.tsx b/packages/forms-rjsf/src/rjsf-form.test.tsx
index 1fc68c0..4722722 100644
--- a/packages/forms-rjsf/src/rjsf-form.test.tsx
+++ b/packages/forms-rjsf/src/rjsf-form.test.tsx
@@ -55,4 +55,18 @@ describe('', () => {
fireEvent.keyDown(container.querySelector('[data-acture-rjsf]')!, { key: 'Escape' });
expect(onCancel).toHaveBeenCalled();
});
+
+ it('falls back to the @rjsf/core form when no theme is injected', () => {
+ const cmd = defineCommand({
+ id: 'app.t.add',
+ title: 'Add',
+ params: z.object({ label: z.string() }),
+ execute: (p) => ok(p),
+ });
+ const { container } = render(
+ {}} onCancel={() => {}} />,
+ );
+ // `form-control` is the @rjsf/core BaseInputTemplate's class.
+ expect(container.querySelector('input.form-control')).toBeTruthy();
+ });
});
diff --git a/packages/forms-rjsf/src/rjsf-form.tsx b/packages/forms-rjsf/src/rjsf-form.tsx
index c70c84e..437fcdc 100644
--- a/packages/forms-rjsf/src/rjsf-form.tsx
+++ b/packages/forms-rjsf/src/rjsf-form.tsx
@@ -2,30 +2,67 @@
* `` — render a CommandRecord's params schema using
* react-jsonschema-form. Matches the `PaletteFormAdapter` shape
* expected by `acture-palette-react`.
+ *
+ * The `` implementation is injectable (`form` prop) so the host can
+ * render through any RJSF theme — `@rjsf/shadcn`, `@rjsf/mui`, … — without
+ * this package ever depending on a UI kit.
*/
///
import { useMemo } from 'react';
+import type { ComponentType } from 'react';
import Form from '@rjsf/core';
+import type { FormProps } from '@rjsf/core';
import validator from '@rjsf/validator-ajv8';
import type { AnyCommandRecord } from 'acture';
import { toJsonSchema } from 'acture';
+/**
+ * The shape of an RJSF ``. Every RJSF theme's default export has
+ * exactly this type (`ComponentType>`), so a
+ * theme can be handed to {@link RjsfForm} as-is.
+ */
+export type RjsfFormComponent = ComponentType;
+
export interface RjsfFormProps {
command: AnyCommandRecord;
defaults?: Record;
onSubmit: (params: unknown) => void;
onCancel: () => void;
+ /**
+ * The RJSF `` to render with. Defaults to the unstyled form from
+ * `@rjsf/core`. Pass a theme's default export — e.g. `@rjsf/shadcn` — to
+ * render through a design system:
+ *
+ * ```tsx
+ * import ShadcnForm from '@rjsf/shadcn';
+ *
+ * ```
+ *
+ * acture never bundles a UI kit; the theme is the host's choice.
+ *
+ * **Must be referentially stable.** React reconciles by element *type*, so a
+ * theme built inline in JSX (`form={withTheme(myTheme)}`) is a new component
+ * type on every render of the parent: the form unmounts and remounts, and
+ * RJSF's internal `formData` — whatever the user had typed — is discarded and
+ * reset to `defaults`. Memoizing inside this component cannot fix that, since
+ * the changed identity arrives as the prop. Import a theme's default export
+ * (which is module-level, hence stable), or hoist your `withTheme(...)` call
+ * to a module-level `const`.
+ */
+ form?: RjsfFormComponent;
}
export function RjsfForm(props: RjsfFormProps): React.ReactElement {
- const { command, defaults, onSubmit, onCancel } = props;
+ const { command, defaults, onSubmit, onCancel, form } = props;
const inputSchema = useMemo(() => {
return toJsonSchema(command).inputSchema;
}, [command]);
+ const FormImpl: RjsfFormComponent = form ?? Form;
+
return (
) : null}
-
-
+
Esc to cancel
);
diff --git a/packages/forms-rjsf/src/shadcn-theme.test.tsx b/packages/forms-rjsf/src/shadcn-theme.test.tsx
new file mode 100644
index 0000000..fc0903d
--- /dev/null
+++ b/packages/forms-rjsf/src/shadcn-theme.test.tsx
@@ -0,0 +1,201 @@
+/**
+ * The `@rjsf` 6.x / `@rjsf/shadcn` pairing — the reason this package's peer
+ * range moved (thorwhalen/acture#57). `@rjsf/shadcn` is published on the 6.x
+ * line only, so a consumer on a shadcn design system needs both halves to be
+ * installable together, and needs a way to hand the theme to ``.
+ *
+ * Kept apart from `rjsf-form.test.tsx` on purpose: that file must stay runnable
+ * against a plain 5.x tree (the `rjsf5` CI job installs one), and importing
+ * `@rjsf/shadcn` would make it un-collectable there.
+ */
+
+///
+import { describe, it, expect, vi, afterEach } from 'vitest';
+import { readFileSync, readdirSync, existsSync } from 'node:fs';
+import { resolve } from 'node:path';
+import { render, fireEvent, cleanup, act } from '@testing-library/react';
+import { z } from 'zod';
+import { defineCommand, ok } from 'acture';
+import ShadcnForm from '@rjsf/shadcn';
+import { RjsfForm } from './rjsf-form.js';
+
+/** The single range every `@rjsf/*` peer is declared at. */
+const SUPPORTED_RJSF_RANGE = '^5.20.0 || ^6.0.0';
+
+/** vitest runs each workspace package with its own directory as cwd, and under
+ * the jsdom environment `import.meta.url` is not a `file:` URL. */
+const readJson = (path: string) => JSON.parse(readFileSync(path, 'utf8'));
+
+/** An INSTALLED dependency's manifest. The `@rjsf/*` packages do not list
+ * `./package.json` in their `exports` map, so read it off disk. */
+const installedManifest = (
+ name: string,
+): { version: string; peerDependencies: Record } =>
+ readJson(resolve(process.cwd(), 'node_modules', name, 'package.json'));
+
+const majorOf = (versionOrRange: string) => versionOrRange.replace(/^[\^~>=\s]+/, '').split('.')[0]!;
+
+const ownManifest = () =>
+ readJson(resolve(process.cwd(), 'package.json')) as {
+ dependencies?: Record;
+ devDependencies: Record;
+ peerDependencies: Record;
+ };
+
+/**
+ * Assert the rendered input came from the INJECTED theme and not from
+ * `@rjsf/core`'s default. `form-control` is the class `@rjsf/core`'s
+ * `BaseInputTemplate` emits and no themed template does — a discriminator that
+ * survives Tailwind class churn, which is why it lives here rather than being
+ * spelled out per test.
+ */
+const expectThemedInput = (input: HTMLInputElement) => {
+ expect(input).toBeTruthy();
+ expect(input.className).not.toBe('form-control');
+ expect(input.className).not.toContain('form-control');
+};
+
+afterEach(() => cleanup());
+
+describe('@rjsf/shadcn as an injected theme', () => {
+ const cmd = () =>
+ defineCommand({
+ id: 'app.t.add',
+ title: 'Add via shadcn',
+ params: z.object({ label: z.string() }),
+ execute: (p) => ok(p),
+ });
+
+ it('renders the shadcn theme rather than the @rjsf/core default', () => {
+ const { container } = render(
+ {}} onCancel={() => {}} />,
+ );
+ const input = container.querySelector('input[type="text"]') as HTMLInputElement;
+ expectThemedInput(input);
+ // shadcn's input template emits Tailwind utility classes.
+ expect(input.className).toContain('rounded-md');
+ });
+
+ it('submits through the theme', async () => {
+ const onSubmit = vi.fn();
+ const { container } = render(
+ {}} />,
+ );
+ const input = container.querySelector('input[type="text"]') as HTMLInputElement;
+ // Without this the test passes on an adapter that ignores `form` entirely —
+ // @rjsf/core's own form submits identically, so submission alone does not
+ // distinguish the injected theme from the default.
+ expectThemedInput(input);
+ await act(async () => {
+ fireEvent.change(input, { target: { value: 'A' } });
+ fireEvent.submit(container.querySelector('form')!);
+ });
+ expect(onSubmit).toHaveBeenCalled();
+ expect((onSubmit.mock.calls[0]![0] as { label: string }).label).toBe('A');
+ });
+});
+
+/**
+ * The defect behind #57 was a DECLARED peer range that had drifted from what
+ * the package is actually written and tested against. These pin the two
+ * together, so moving either is a deliberate act.
+ *
+ * Both halves of the range are exercised: 6.x by this dev tree and the `ci`
+ * job, 5.x by the `rjsf5` job, which runs `scripts/pin-rjsf-5x.mjs` and then
+ * installs a plain 5.x tree of its own. That is a second *install*; what pnpm's
+ * peers-are-matched-by-name behaviour rules out is a second *alias tree inside
+ * one install*, where an `npm:`-aliased 5.x `@rjsf/core` still binds the 6.x
+ * `@rjsf/utils` and the "5.x matrix" is 6.x wearing a 5.x label.
+ */
+describe('declared @rjsf peer range', () => {
+ const pkg = ownManifest();
+ const declaredMajors = SUPPORTED_RJSF_RANGE.split('||').map((r) => majorOf(r.trim()));
+
+ it.each(['@rjsf/core', '@rjsf/utils', '@rjsf/validator-ajv8'])(
+ 'declares %s at the one supported range',
+ (name) => {
+ expect(pkg.peerDependencies[name]).toBe(SUPPORTED_RJSF_RANGE);
+ },
+ );
+
+ it('names the major the dev tree actually installs', () => {
+ expect(declaredMajors).toContain(majorOf(installedManifest('@rjsf/core').version));
+ });
+
+ it('names the major @rjsf/shadcn peers on — the whole point of the widening', () => {
+ expect(declaredMajors).toContain(
+ majorOf(installedManifest('@rjsf/shadcn').peerDependencies['@rjsf/core']!),
+ );
+ });
+});
+
+/**
+ * Hard-don't #8 (AGENTS.md merge checklist): **no bundling a UI kit.** The
+ * `form` prop is the slot API that keeps that true, and `@rjsf/shadcn` is here
+ * for the smoke test above and nothing else. Promoting it to `dependencies` or
+ * `peerDependencies` — the obvious "make the theme just work for consumers"
+ * edit — would pull radix + lucide-react + tailwind-merge + tailwindcss-animate
+ * into every consumer's install, and every other test in this package would
+ * stay green while it happened.
+ */
+describe('no UI kit reaches consumers', () => {
+ const pkg = ownManifest();
+
+ it.each(['dependencies', 'peerDependencies'] as const)(
+ '@rjsf/shadcn is not in %s',
+ (field) => {
+ expect(pkg[field]?.['@rjsf/shadcn']).toBeUndefined();
+ },
+ );
+
+ it('@rjsf/shadcn is a devDependency, so the smoke test above is real', () => {
+ expect(pkg.devDependencies['@rjsf/shadcn']).toBeTruthy();
+ });
+
+ it('declares no runtime dependencies at all — everything is peered or injected', () => {
+ expect(Object.keys(pkg.dependencies ?? {})).toEqual([]);
+ });
+});
+
+/**
+ * `pnpm-workspace.yaml` suppresses the missing-`tailwindcss` peer report, which
+ * `@rjsf/shadcn` forces on us: it pulls `tailwindcss-animate`, whose peer range
+ * is the malformed `">=3.0.0 || insiders"` — not a semver range, so pnpm calls
+ * it unmet whatever is installed. pnpm offers no scoped form of the rule
+ * (`tailwindcss-animate>tailwindcss` and `@rjsf/shadcn>tailwindcss` were both
+ * tried; neither is honoured), so the suppression is workspace-wide and
+ * permanent, and the day a workspace package genuinely peers on `tailwindcss`
+ * its missing peer would go unreported. This is the compensating check.
+ */
+describe('the workspace-wide tailwindcss ignoreMissing rule', () => {
+ const repoRoot = resolve(process.cwd(), '../..');
+ const workspaceYaml = readFileSync(resolve(repoRoot, 'pnpm-workspace.yaml'), 'utf8');
+ const ruleIsInPlace = /ignoreMissing:[\s\S]*?^\s*-\s*tailwindcss\s*$/m.test(workspaceYaml);
+
+ const manifests = () => {
+ const roots = ['packages', 'examples'].map((d) => resolve(repoRoot, d));
+ return roots
+ .filter((root) => existsSync(root))
+ .flatMap((root) =>
+ readdirSync(root, { withFileTypes: true })
+ .filter((e) => e.isDirectory())
+ .map((e) => resolve(root, e.name, 'package.json'))
+ .filter((p) => existsSync(p))
+ .map((p) => [p, readJson(p)] as const),
+ );
+ };
+
+ it('is still in pnpm-workspace.yaml (delete this block with the rule)', () => {
+ expect(ruleIsInPlace).toBe(true);
+ });
+
+ it.runIf(ruleIsInPlace)(
+ 'no workspace package declares a tailwindcss peer while it is suppressed',
+ () => {
+ const offenders = manifests()
+ .filter(([, pkg]) => pkg.peerDependencies?.tailwindcss)
+ .map(([path]) => path);
+ expect(offenders).toEqual([]);
+ },
+ );
+});
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 5560876..afc7578 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -543,14 +543,17 @@ importers:
packages/forms-rjsf:
devDependencies:
'@rjsf/core':
- specifier: ^5.24.0
- version: 5.24.13(@rjsf/utils@5.24.13(react@19.2.6))(react@19.2.6)
+ specifier: ^6.8.0
+ version: 6.8.0(@rjsf/utils@6.8.0(react@19.2.6))(react@19.2.6)
+ '@rjsf/shadcn':
+ specifier: ^6.8.0
+ version: 6.8.0(@rjsf/core@6.8.0(@rjsf/utils@6.8.0(react@19.2.6))(react@19.2.6))(@rjsf/utils@6.8.0(react@19.2.6))(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
'@rjsf/utils':
- specifier: ^5.24.0
- version: 5.24.13(react@19.2.6)
+ specifier: ^6.8.0
+ version: 6.8.0(react@19.2.6)
'@rjsf/validator-ajv8':
- specifier: ^5.24.0
- version: 5.24.13(@rjsf/utils@5.24.13(react@19.2.6))
+ specifier: ^6.8.0
+ version: 6.8.0(@rjsf/utils@6.8.0(react@19.2.6))
'@testing-library/react':
specifier: ^16.1.0
version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
@@ -1516,6 +1519,21 @@ packages:
resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@floating-ui/core@1.8.0':
+ resolution: {integrity: sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==}
+
+ '@floating-ui/dom@1.8.0':
+ resolution: {integrity: sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==}
+
+ '@floating-ui/react-dom@2.1.9':
+ resolution: {integrity: sha512-JDjEFGCpImxDCA7JJKviA0M9+RtmJdj0m/NVU5IMgBK+AmZouAQQ7/+2GLH0GXXY0YMw9oXPB8hKdbPYg5QLYg==}
+ peerDependencies:
+ react: '>=16.8.0'
+ react-dom: '>=16.8.0'
+
+ '@floating-ui/utils@0.2.12':
+ resolution: {integrity: sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==}
+
'@hono/node-server@1.19.14':
resolution: {integrity: sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==}
engines: {node: '>=18.14.1'}
@@ -1600,9 +1618,54 @@ packages:
engines: {node: '>=18'}
hasBin: true
+ '@radix-ui/number@1.1.3':
+ resolution: {integrity: sha512-Road2bidD0uu/1BGDOWNdPI06g0lIRy6IF9GZcIrDK2KGItfor8IQwQa+yM2ERgHM1MmHxaxpTzk0/Jp42lNfA==}
+
'@radix-ui/primitive@1.1.3':
resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==}
+ '@radix-ui/primitive@1.1.7':
+ resolution: {integrity: sha512-rqWnm76nYT8HoNNqEjpgJ7Pw/DrBj5iBTrmEPo6HTX5+VJyBNOqTdv4g89G63HuR5g0AaENoAcH7Is5fF2kZ8Q==}
+
+ '@radix-ui/react-arrow@1.1.15':
+ resolution: {integrity: sha512-v4zggRcjadnI+ClKDuijlQEW4tw3NoaeHc/PwpKnLoLLKNUG4InLegkstooLcRIUWCs+8L22dGURCVuFfOKfnA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
+ '@radix-ui/react-checkbox@1.3.11':
+ resolution: {integrity: sha512-Gnptr9pDDQxD3hgq2dtPbtrp/c2qH1mBwIzw3X/ivrMb2e1t0jMTi606fVEqFPaQR1ggXIVQWKj3P2WW9v7zGQ==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
+ '@radix-ui/react-collection@1.1.15':
+ resolution: {integrity: sha512-9W+B9NPF0NaaPh/1NJd3+KqsnlLqU9H7T2rvww+fp+T/evVXdNAyYcnfRQZFOjkR1ajQp3yORlqnI8soawLvNA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-compose-refs@1.1.2':
resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==}
peerDependencies:
@@ -1612,6 +1675,15 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-compose-refs@1.1.5':
+ resolution: {integrity: sha512-+48PbAAbq3didjJxa+OaWY2ZwgAKsNiRGyeHKszblZMQ+kcpd9pAaT11cMkGEie0vsOi3QdeTE6d5Fe3Gn61kA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@radix-ui/react-context@1.1.2':
resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==}
peerDependencies:
@@ -1621,6 +1693,15 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-context@1.2.2':
+ resolution: {integrity: sha512-RHCUGwKHDr0hDGg4X7ma4JG4/+12qxw8rkh5QKdDldlCvtja6nUx1Ef/8HVrJze81lEsgLQlqjzjGNHantgnQA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@radix-ui/react-dialog@1.1.15':
resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==}
peerDependencies:
@@ -1634,6 +1715,15 @@ packages:
'@types/react-dom':
optional: true
+ '@radix-ui/react-direction@1.1.4':
+ resolution: {integrity: sha512-5pzg4FGQNpExhnhT2zlrP1wZFaYCd1K0nYWoFAdcYoYK868IEigqMX3B3f8yIoRlAhAeDWciLI6ZdCKHF9P4Vg==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@radix-ui/react-dismissable-layer@1.1.11':
resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==}
peerDependencies:
@@ -1647,6 +1737,19 @@ packages:
'@types/react-dom':
optional: true
+ '@radix-ui/react-dismissable-layer@1.1.19':
+ resolution: {integrity: sha512-8g4pfOL9HoKKLWGiypT+dphVqjFfmcXO5GBnhsG6zI+lxAx/8feQpr+1LSN8Re3hiZ+XkLNS4O9ztK11/LzQ6w==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-focus-guards@1.1.3':
resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==}
peerDependencies:
@@ -1656,6 +1759,28 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-focus-guards@1.1.6':
+ resolution: {integrity: sha512-RNOJjfZMTyBM6xYmV3IVGXkPjIhcBAuv48POevAXwrGJhkWZ9p1rFoIS1JFooPuT193AZmRsCPhpoVJxx6OPoQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@radix-ui/react-focus-scope@1.1.16':
+ resolution: {integrity: sha512-wmRZ2WWLvmt6KHy2rNPOdPUjwq5xOHY02+m+udwJTn0aNIox/rkskAvJTyTLGhPK6KgrUjlJUJpgmx/+wFiFIQ==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-focus-scope@1.1.7':
resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==}
peerDependencies:
@@ -1669,6 +1794,11 @@ packages:
'@types/react-dom':
optional: true
+ '@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
+
'@radix-ui/react-id@1.1.1':
resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==}
peerDependencies:
@@ -1678,6 +1808,67 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-id@1.1.4':
+ resolution: {integrity: sha512-TMQp2llA+RYn7JcjnrMnz7wN4pcVttPZnRZo52PLQsoLVKzNlVwUeHmfePgTgRluXFvlD3GD5g5MOVVTJCO0qA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@radix-ui/react-label@2.1.15':
+ resolution: {integrity: sha512-o/rdYEwZTTo5tjknnPeyQFU45kUC4i/XyeDPP+HGyi6XqpOP6Zf5Ya5vh/Yfe9Id5JiuWnnAx2XqIeD3UYZt0g==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
+ '@radix-ui/react-popover@1.1.23':
+ resolution: {integrity: sha512-mw58MrBlyHWFisTOYignD0vf/3gdcgAR+9of1s9G/38CbFiUwH1nCDkc0AUM9IrXFgN5Ue8n45j9WCgyM1sbiQ==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
+ '@radix-ui/react-popper@1.3.7':
+ resolution: {integrity: sha512-UsJrrd7w4wuKKTdvd/DNERVlwSlUcyXzjhyDwBk+3aPOsCjOY6ZSbxuw8E6lZTjjfP8Cpd0J8VVkrYUWyGYXyg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
+ '@radix-ui/react-portal@1.1.17':
+ resolution: {integrity: sha512-vKQLcWypUnwZVvfV7UkGahH2g6ySe8M8R+zYBwPrv5byZ9QAW6cQVvNKo7GgmD+p8aYb6D9JBuvy8/WhOno2wQ==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-portal@1.1.9':
resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==}
peerDependencies:
@@ -1691,6 +1882,19 @@ packages:
'@types/react-dom':
optional: true
+ '@radix-ui/react-presence@1.1.10':
+ resolution: {integrity: sha512-3wyzCQ6+ubRA+D4uv9m95JYLXxmOHp05qjrkjeA7uKHHtjpPggQzc6DAb0URl7j67oR0K2foO4ip27TiX037Bw==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-presence@1.1.5':
resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==}
peerDependencies:
@@ -1704,6 +1908,19 @@ packages:
'@types/react-dom':
optional: true
+ '@radix-ui/react-primitive@2.1.10':
+ resolution: {integrity: sha512-MucOnzh6hR5mid6VpkbglRAMYMjKLqRnGBbjXkzjK52fuQDd1qbkx78a5P40mkcnVXJdEVxm26E9OPAiUq7nBg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-primitive@2.1.3':
resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==}
peerDependencies:
@@ -1730,6 +1947,71 @@ packages:
'@types/react-dom':
optional: true
+ '@radix-ui/react-radio-group@1.4.7':
+ resolution: {integrity: sha512-cgYFEkntCxppHZgtSZ+7vh0wbZQ+IC7PPMw8DSnRG27B6kDd32/Zw0OJt7dGDigCoprMuWHjg2PvUn3PYvPFoQ==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
+ '@radix-ui/react-roving-focus@1.1.19':
+ resolution: {integrity: sha512-V9jI6hDjT7l3jsCQD9bLNvDLM3tH/gdbOTp7Tefp3hbbgCGQoK7tUvrWiRlcoBHIZ809ElXwNQwVo0B98LuTXQ==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
+ '@radix-ui/react-select@2.3.7':
+ resolution: {integrity: sha512-WFGImkmbzcfxeIwq/+4HvRN0pizBwbwQUED4I13ezQsDdfl38ZntN6TmR8XaSzPBqoCToe8rF75j6NPNDSzhbg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
+ '@radix-ui/react-separator@1.1.15':
+ resolution: {integrity: sha512-jOLO4lssEzWpoDu7G+Ze4VjwMRUBt291pnZD0gmalREZipnTX3wadQo7Fy48GCTfe14/YRN6rw/rOJqrE85Wxw==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
+ '@radix-ui/react-slider@1.4.7':
+ resolution: {integrity: sha512-mTSLf1GC/C0moWjTbvCM6Qn/gBjvlFt1azuWF2v7MN5C3Zq2U2J2lN3ZEYkpujuOU5Ro7A28wkviSxaKnG0BYg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-slot@1.2.3':
resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==}
peerDependencies:
@@ -1748,6 +2030,15 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-slot@1.3.3':
+ resolution: {integrity: sha512-qx7oqnYbxnK9kYI9m317qmFmEgo6ywqWvbTogdj7cL9p3/yx4M48p7Rnw5z3H890cL/ow/EeWJsuTykeZVXP5Q==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@radix-ui/react-use-callback-ref@1.1.1':
resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==}
peerDependencies:
@@ -1757,6 +2048,15 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-use-callback-ref@1.1.4':
+ resolution: {integrity: sha512-R6OUY2e2fA6Yn6s+VSx5KBV6Nx8LQEhu+cz7LCej18rQ1HLyg9PSC9jP/ZNx0o6FAIK9c0F1kHylzSxKsdlkrQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@radix-ui/react-use-controllable-state@1.2.2':
resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==}
peerDependencies:
@@ -1766,6 +2066,15 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-use-controllable-state@1.2.6':
+ resolution: {integrity: sha512-uEQJGT97ZA/TgP/Hydw47lHu+/vQj6z/0jA+WeTbK1o9Rx45GImjpD0tc3W5ad3D6XTSR6e1yEO0FvGq6WQfVQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@radix-ui/react-use-effect-event@0.0.2':
resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==}
peerDependencies:
@@ -1775,6 +2084,15 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-use-effect-event@0.0.5':
+ resolution: {integrity: sha512-7cshFL8HGS/7HEiHH+9kL9HBwp2sa9yX18Knwek6KYWmXwM7pegMgta2AXMQKI+rq3JnfSj9x8wYqFMTdG1Jgg==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@radix-ui/react-use-escape-keydown@1.1.1':
resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==}
peerDependencies:
@@ -1784,6 +2102,15 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-use-is-hydrated@0.1.3':
+ resolution: {integrity: sha512-umO/aJ+82CpOnhDZUTbILCQf7kU/g0iv+oGs/Q8jw7IkhWBzaEP4sA268PhFAJTFetbwp3ICc6ktpI4TqtxcIw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@radix-ui/react-use-layout-effect@1.1.1':
resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==}
peerDependencies:
@@ -1793,6 +2120,63 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-use-layout-effect@1.1.4':
+ resolution: {integrity: sha512-K20DkRkUwDnxEYMBPcg3Y6voLkEy5p5QQmszZgLngKKiC7dzBR/aEuK3w1qlx2JWDUNH6FluahYdgR3BP+QbYw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@radix-ui/react-use-previous@1.1.4':
+ resolution: {integrity: sha512-XoSLhbRbqxFtgJoi2fNHA3C6pDlY34x508vUpUGoFZfvePfHXHbE1lC4FYFMnJWgiCRroSTw6fOsXQoVS9RwZg==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@radix-ui/react-use-rect@1.1.4':
+ resolution: {integrity: sha512-cSOCh6JlkmfjLyNcLiu2nB4v+nm+dkZ+Q5KHWk/soo4U7ZLiEQFKHK9/YmtBHjfCEaU43IBKQOc4/uJmCaiCTQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@radix-ui/react-use-size@1.1.4':
+ resolution: {integrity: sha512-D3anSY15EJoxrihpsXI6SMrmmonnQtR2ni7arO+Lfdg3O95b9hNXxONk8jA5C8ANdF/h5HMAxejgs8PWJ6rlhw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
+ '@radix-ui/react-visually-hidden@1.2.11':
+ resolution: {integrity: sha512-NFS86RYYZb4/exihaESBGOpMJFz8MGLAfu3mOBSGByVnVPC9JPASfYubxd/8KbkQK0sYAv8lVQDEQukDX/qXvQ==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
+ '@radix-ui/rect@1.1.3':
+ resolution: {integrity: sha512-JtyZR+mqgBibTo8xea3B6ZRmzZiM/YeVBtUkas6zMuXjAlfIFIW2FgqeM9eLyvEaYX66vr6DJMK+4U6LV0KhNw==}
+
+ '@react-icons/all-files@4.1.0':
+ resolution: {integrity: sha512-hxBI2UOuVaI3O/BhQfhtb4kcGn9ft12RWAFVMUeNjqqhLsHvFtzIkFaptBJpFDANTKoDfdVoHTKZDlwKCACbMQ==}
+ peerDependencies:
+ react: '*'
+
'@reduxjs/toolkit@2.11.2':
resolution: {integrity: sha512-Kd6kAHTA6/nUpp8mySPqj3en3dm0tdMIgbttnQ1xFMVpufoj+ADi8pXLBsd4xzTRHQa7t/Jv8W5UnCuW4kuWMQ==}
peerDependencies:
@@ -1804,24 +2188,32 @@ packages:
react-redux:
optional: true
- '@rjsf/core@5.24.13':
- resolution: {integrity: sha512-ONTr14s7LFIjx2VRFLuOpagL76sM/HPy6/OhdBfq6UukINmTIs6+aFN0GgcR0aXQHFDXQ7f/fel0o/SO05Htdg==}
- engines: {node: '>=14'}
+ '@rjsf/core@6.8.0':
+ resolution: {integrity: sha512-HZ2e/l/QNcz8PTslBXyGWkiycMe3LgIfwgXo0qO3DPgyFKj4G+obJTKBq/W+DaIUmz1HicvH5WtOdXWWqK+gbA==}
+ engines: {node: '>=20'}
peerDependencies:
- '@rjsf/utils': ^5.24.x
- react: ^16.14.0 || >=17
+ '@rjsf/utils': ^6.8.0
+ react: '>=18'
- '@rjsf/utils@5.24.13':
- resolution: {integrity: sha512-rNF8tDxIwTtXzz5O/U23QU73nlhgQNYJ+Sv5BAwQOIyhIE2Z3S5tUiSVMwZHt0julkv/Ryfwi+qsD4FiE5rOuw==}
- engines: {node: '>=14'}
+ '@rjsf/shadcn@6.8.0':
+ resolution: {integrity: sha512-f6ZRtHBxPwQLRP+yi80K8ddnbBbg76v9IRpFp8hPrPVvo36H2F9nvb0UMOFd1BdX0j97K0KRxbUv+d0wqLbyAA==}
+ engines: {node: '>=20'}
peerDependencies:
- react: ^16.14.0 || >=17
+ '@rjsf/core': ^6.8.0
+ '@rjsf/utils': ^6.8.0
+ react: '>=18'
- '@rjsf/validator-ajv8@5.24.13':
- resolution: {integrity: sha512-oWHP7YK581M8I5cF1t+UXFavnv+bhcqjtL1a7MG/Kaffi0EwhgcYjODrD8SsnrhncsEYMqSECr4ZOEoirnEUWw==}
- engines: {node: '>=14'}
+ '@rjsf/utils@6.8.0':
+ resolution: {integrity: sha512-gHcqPFSHdOz29tZiLlzDvD+Gfq21zVIFBufprSYTiHpUdcVNJEK6+V5aw++FtQncHdDWnTf2YCky/e1Bol2NEQ==}
+ engines: {node: '>=20'}
peerDependencies:
- '@rjsf/utils': ^5.24.x
+ react: '>=18'
+
+ '@rjsf/validator-ajv8@6.8.0':
+ resolution: {integrity: sha512-F36I952/miMFZzWSlupwFHbl+j+5bVQ3tR6HtBS+vXV10kY5dT3OwTjbFRo4fQM1KpqrUZC0t3/E5CZRX1o1jA==}
+ engines: {node: '>=20'}
+ peerDependencies:
+ '@rjsf/utils': ^6.8.0
'@rolldown/pluginutils@1.0.0-beta.27':
resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==}
@@ -2072,6 +2464,9 @@ packages:
'@workflow/serde@4.1.0':
resolution: {integrity: sha512-pav4F2BoirECWR7Nf1TKt+2eETcBj7jj4cBefQ8VXQCA6NPkaKeLfj/zMgi+3zYV5ZIBT4GuUiphsj0/b9hPQQ==}
+ '@x0k/json-schema-merge@1.0.5':
+ resolution: {integrity: sha512-bPvwYpTkhBOXkvbC8KMNhkgzv+gWu6Yx6FVho3mL+vMf8Fy3gdn9YrlrBrXphznvOHhB85BudH/ywtVRZ/HG3A==}
+
accepts@2.0.0:
resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==}
engines: {node: '>= 0.6'}
@@ -2240,6 +2635,13 @@ packages:
resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
engines: {node: '>= 14.16.0'}
+ class-variance-authority@0.7.1:
+ resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==}
+
+ clsx@2.1.1:
+ resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
+ engines: {node: '>=6'}
+
cmdk@1.1.1:
resolution: {integrity: sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==}
peerDependencies:
@@ -2264,12 +2666,6 @@ packages:
resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
engines: {node: '>= 6'}
- compute-gcd@1.2.1:
- resolution: {integrity: sha512-TwMbxBNz0l71+8Sc4czv13h4kEqnchV9igQZBi6QUaz09dnz13juGnnaWWJTRsP3brxOoxeB4SA2WELLw1hCtg==}
-
- compute-lcm@1.1.2:
- resolution: {integrity: sha512-OFNPdQAXnQhDSKioX8/XYT6sdUlXwpeMjfd6ApxMJfyZ4GxmLR1xvMERctlYhlHwIiz6CSpBc2+qYKjHGZw4TQ==}
-
concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
@@ -2516,6 +2912,10 @@ packages:
fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+ fast-equals@6.0.2:
+ resolution: {integrity: sha512-sAjhj9ZhOxYCGiNMnZLaucOqf5ZeFnHNoKoAZiD9thhJ0N8RP85qJK759/97C/3L7NzzmGVB5uiX9AUpySZmUQ==}
+ engines: {node: '>=6.0.0'}
+
fast-glob@3.3.3:
resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
engines: {node: '>=8.6.0'}
@@ -2529,6 +2929,9 @@ packages:
fast-uri@3.1.2:
resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==}
+ fast-uri@4.1.3:
+ resolution: {integrity: sha512-7+72G6vLt7jjNas8SmSATx2qeyRIjxeqO3i4IkmDTxlqYZRKANhOe1bnovcp4WZmvsYrp60WyqPyHqgRiX0yXw==}
+
fastq@1.20.1:
resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
@@ -2784,13 +3187,6 @@ packages:
json-buffer@3.0.1:
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
- json-schema-compare@0.2.2:
- resolution: {integrity: sha512-c4WYmDKyJXhs7WWvAWm3uIYnfyWFoIp+JEoX34rctVvEkMYCPGhXtvmFFXiffBbxfZsvQ0RNnV5H7GvDF5HCqQ==}
-
- json-schema-merge-allof@0.8.1:
- resolution: {integrity: sha512-CTUKmIlPJbsWfzRRnOXz+0MjIqvnleIXwFTzz+t9T86HnYX/Rozria6ZVGLktAU9e+NygNljveP+yxqtQp/Q4w==}
- engines: {node: '>=12.0.0'}
-
json-schema-traverse@0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
@@ -2869,6 +3265,11 @@ packages:
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+ lucide-react@1.34.0:
+ resolution: {integrity: sha512-vnjGJNI7Htk5+oWW8gXGuaLgwgAb0T6/iZbBrp9JCfRFwdNWZ0YTm3eyxjOLgwN6r8iyAf3UA70zNmBRBNv7yg==}
+ peerDependencies:
+ react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
lz-string@1.5.0:
resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
hasBin: true
@@ -2876,14 +3277,23 @@ packages:
magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
- markdown-to-jsx@7.7.17:
- resolution: {integrity: sha512-7mG/1feQ0TX5I7YyMZVDgCC/y2I3CiEhIRQIhyov9nGBP5eoVrOXXHuL5ZP8GRfxVZKRiXWJgwXkb9It+nQZfQ==}
- engines: {node: '>= 10'}
+ markdown-to-jsx@9.10.2:
+ resolution: {integrity: sha512-iR9GadlIox0q1uXnpqdxpF02Vb1WDmZ/QIXWjBR5htzjUEEhyIWbM65LuVKavdwJaVo4q95C/F2OOyNjWe91ig==}
+ engines: {node: '>= 18'}
peerDependencies:
- react: '>= 0.14.0'
+ react: '>= 16.0.0'
+ react-native: '*'
+ solid-js: '>=1.0.0'
+ vue: '>=3.0.0'
peerDependenciesMeta:
react:
optional: true
+ react-native:
+ optional: true
+ solid-js:
+ optional: true
+ vue:
+ optional: true
math-intrinsics@1.1.0:
resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
@@ -3375,6 +3785,14 @@ packages:
symbol-tree@3.2.4:
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
+ tailwind-merge@3.6.0:
+ resolution: {integrity: sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==}
+
+ tailwindcss-animate@1.0.7:
+ resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==}
+ peerDependencies:
+ tailwindcss: '>=3.0.0 || insiders'
+
term-size@2.2.1:
resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==}
engines: {node: '>=8'}
@@ -3527,20 +3945,9 @@ packages:
'@types/react':
optional: true
- validate.io-array@1.0.6:
- resolution: {integrity: sha512-DeOy7CnPEziggrOO5CZhVKJw6S3Yi7e9e65R1Nl/RTN1vTQKnzjfvks0/8kQ40FP/dsjRAOd4hxmJ7uLa6vxkg==}
-
- validate.io-function@1.0.2:
- resolution: {integrity: sha512-LlFybRJEriSuBnUhQyG5bwglhh50EpTL2ul23MPIuR1odjO7XaMLFV8vHGwp7AZciFxtYOeiSCT5st+XSPONiQ==}
-
- validate.io-integer-array@1.0.0:
- resolution: {integrity: sha512-mTrMk/1ytQHtCY0oNO3dztafHYyGU88KL+jRxWuzfOmQb+4qqnWmI+gykvGp8usKZOM0H7keJHEbRaFiYA0VrA==}
-
- validate.io-integer@1.0.5:
- resolution: {integrity: sha512-22izsYSLojN/P6bppBqhgUDjCkr5RY2jd+N2a3DCAUey8ydvrZ/OkGvFPR7qfOpwR2LC5p4Ngzxz36g5Vgr/hQ==}
-
- validate.io-number@1.0.3:
- resolution: {integrity: sha512-kRAyotcbNaSYoDnXvb4MHg/0a1egJdLwS6oJ38TJY7aw9n93Fl/3blIXdyYvPOp55CNxywooG/3BcrwNrBpcSg==}
+ uuid@14.0.2:
+ resolution: {integrity: sha512-xZe/16rV4aa+HGSOCiY2YeLT1OybRLrrkL/Rqaq7p7GMVXjFh+6wN4oMYgjFmnSnhY8t6Xpdl2l9qmnHYuMHwQ==}
+ hasBin: true
vary@1.1.2:
resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
@@ -4320,6 +4727,23 @@ snapshots:
'@eslint/core': 0.17.0
levn: 0.4.1
+ '@floating-ui/core@1.8.0':
+ dependencies:
+ '@floating-ui/utils': 0.2.12
+
+ '@floating-ui/dom@1.8.0':
+ dependencies:
+ '@floating-ui/core': 1.8.0
+ '@floating-ui/utils': 0.2.12
+
+ '@floating-ui/react-dom@2.1.9(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
+ dependencies:
+ '@floating-ui/dom': 1.8.0
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
+
+ '@floating-ui/utils@0.2.12': {}
+
'@hono/node-server@1.19.14(hono@4.12.18)':
dependencies:
hono: 4.12.18
@@ -4420,20 +4844,72 @@ snapshots:
dependencies:
playwright: 1.60.0
+ '@radix-ui/number@1.1.3': {}
+
'@radix-ui/primitive@1.1.3': {}
+ '@radix-ui/primitive@1.1.7': {}
+
+ '@radix-ui/react-arrow@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
+ '@radix-ui/react-checkbox@1.3.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
+ '@radix-ui/react-collection@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
+ dependencies:
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.6)
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.6)':
dependencies:
react: 19.2.6
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-compose-refs@1.1.5(@types/react@19.2.14)(react@19.2.6)':
+ dependencies:
+ react: 19.2.6
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-context@1.1.2(@types/react@19.2.14)(react@19.2.6)':
dependencies:
react: 19.2.6
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-context@1.2.2(@types/react@19.2.14)(react@19.2.6)':
+ dependencies:
+ react: 19.2.6
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -4456,6 +4932,12 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-direction@1.1.4(@types/react@19.2.14)(react@19.2.6)':
+ dependencies:
+ react: 19.2.6
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
dependencies:
'@radix-ui/primitive': 1.1.3
@@ -4469,12 +4951,42 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-dismissable-layer@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.14)(react@19.2.6)
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.14)(react@19.2.6)':
dependencies:
react: 19.2.6
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-focus-guards@1.1.6(@types/react@19.2.14)(react@19.2.6)':
+ dependencies:
+ react: 19.2.6
+ optionalDependencies:
+ '@types/react': 19.2.14
+
+ '@radix-ui/react-focus-scope@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
+ dependencies:
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
dependencies:
'@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6)
@@ -4486,6 +4998,10 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-icons@1.3.2(react@19.2.6)':
+ dependencies:
+ react: 19.2.6
+
'@radix-ui/react-id@1.1.1(@types/react@19.2.14)(react@19.2.6)':
dependencies:
'@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6)
@@ -4493,6 +5009,73 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-id@1.1.4(@types/react@19.2.14)(react@19.2.6)':
+ dependencies:
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ react: 19.2.6
+ optionalDependencies:
+ '@types/react': 19.2.14
+
+ '@radix-ui/react-label@2.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
+ '@radix-ui/react-popover@1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.6)
+ aria-hidden: 1.2.6
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
+ react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.6)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
+ '@radix-ui/react-popper@1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
+ dependencies:
+ '@floating-ui/react-dom': 2.1.9(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-arrow': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-use-rect': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/rect': 1.1.3
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
+ '@radix-ui/react-portal@1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
dependencies:
'@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
@@ -4503,6 +5086,15 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-presence@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
+ dependencies:
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
dependencies:
'@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6)
@@ -4513,6 +5105,15 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-primitive@2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
+ dependencies:
+ '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.6)
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
dependencies:
'@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.6)
@@ -4531,6 +5132,100 @@ snapshots:
'@types/react': 19.2.14
'@types/react-dom': 19.2.3(@types/react@19.2.14)
+ '@radix-ui/react-radio-group@1.4.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-roving-focus': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
+ '@radix-ui/react-roving-focus@1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-use-is-hydrated': 0.1.3(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
+ '@radix-ui/react-select@2.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
+ dependencies:
+ '@radix-ui/number': 1.1.3
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-dismissable-layer': 1.1.19(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-focus-guards': 1.1.6(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-focus-scope': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-id': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-popper': 1.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-portal': 1.1.17(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-presence': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-slot': 1.3.3(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-use-callback-ref': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-visually-hidden': 1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ aria-hidden: 1.2.6
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
+ react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.6)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
+ '@radix-ui/react-separator@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
+ '@radix-ui/react-slider@1.4.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
+ dependencies:
+ '@radix-ui/number': 1.1.3
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-collection': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-context': 1.2.2(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-direction': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-use-controllable-state': 1.2.6(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-use-previous': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-use-size': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
'@radix-ui/react-slot@1.2.3(@types/react@19.2.14)(react@19.2.6)':
dependencies:
'@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6)
@@ -4545,12 +5240,25 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-slot@1.3.3(@types/react@19.2.14)(react@19.2.6)':
+ dependencies:
+ '@radix-ui/react-compose-refs': 1.1.5(@types/react@19.2.14)(react@19.2.6)
+ react: 19.2.6
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.6)':
dependencies:
react: 19.2.6
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-use-callback-ref@1.1.4(@types/react@19.2.14)(react@19.2.6)':
+ dependencies:
+ react: 19.2.6
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.14)(react@19.2.6)':
dependencies:
'@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.6)
@@ -4559,6 +5267,15 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-use-controllable-state@1.2.6(@types/react@19.2.14)(react@19.2.6)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.7
+ '@radix-ui/react-use-effect-event': 0.0.5(@types/react@19.2.14)(react@19.2.6)
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ react: 19.2.6
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.14)(react@19.2.6)':
dependencies:
'@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.6)
@@ -4566,6 +5283,13 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-use-effect-event@0.0.5(@types/react@19.2.14)(react@19.2.6)':
+ dependencies:
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ react: 19.2.6
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.14)(react@19.2.6)':
dependencies:
'@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.6)
@@ -4573,12 +5297,59 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-use-is-hydrated@0.1.3(@types/react@19.2.14)(react@19.2.6)':
+ dependencies:
+ react: 19.2.6
+ optionalDependencies:
+ '@types/react': 19.2.14
+
'@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.2.6)':
dependencies:
react: 19.2.6
optionalDependencies:
'@types/react': 19.2.14
+ '@radix-ui/react-use-layout-effect@1.1.4(@types/react@19.2.14)(react@19.2.6)':
+ dependencies:
+ react: 19.2.6
+ optionalDependencies:
+ '@types/react': 19.2.14
+
+ '@radix-ui/react-use-previous@1.1.4(@types/react@19.2.14)(react@19.2.6)':
+ dependencies:
+ react: 19.2.6
+ optionalDependencies:
+ '@types/react': 19.2.14
+
+ '@radix-ui/react-use-rect@1.1.4(@types/react@19.2.14)(react@19.2.6)':
+ dependencies:
+ '@radix-ui/rect': 1.1.3
+ react: 19.2.6
+ optionalDependencies:
+ '@types/react': 19.2.14
+
+ '@radix-ui/react-use-size@1.1.4(@types/react@19.2.14)(react@19.2.6)':
+ dependencies:
+ '@radix-ui/react-use-layout-effect': 1.1.4(@types/react@19.2.14)(react@19.2.6)
+ react: 19.2.6
+ optionalDependencies:
+ '@types/react': 19.2.14
+
+ '@radix-ui/react-visually-hidden@1.2.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
+ dependencies:
+ '@radix-ui/react-primitive': 2.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ react: 19.2.6
+ react-dom: 19.2.6(react@19.2.6)
+ optionalDependencies:
+ '@types/react': 19.2.14
+ '@types/react-dom': 19.2.3(@types/react@19.2.14)
+
+ '@radix-ui/rect@1.1.3': {}
+
+ '@react-icons/all-files@4.1.0(react@19.2.6)':
+ dependencies:
+ react: 19.2.6
+
'@reduxjs/toolkit@2.11.2(react@19.2.6)':
dependencies:
'@standard-schema/spec': 1.1.0
@@ -4590,27 +5361,64 @@ snapshots:
optionalDependencies:
react: 19.2.6
- '@rjsf/core@5.24.13(@rjsf/utils@5.24.13(react@19.2.6))(react@19.2.6)':
+ '@rjsf/core@6.8.0(@rjsf/utils@6.8.0(react@19.2.6))(react@19.2.6)':
dependencies:
- '@rjsf/utils': 5.24.13(react@19.2.6)
+ '@rjsf/utils': 6.8.0(react@19.2.6)
lodash: 4.18.1
lodash-es: 4.18.1
- markdown-to-jsx: 7.7.17(react@19.2.6)
+ markdown-to-jsx: 9.10.2(react@19.2.6)
prop-types: 15.8.1
react: 19.2.6
+ transitivePeerDependencies:
+ - react-native
+ - solid-js
+ - vue
+
+ '@rjsf/shadcn@6.8.0(@rjsf/core@6.8.0(@rjsf/utils@6.8.0(react@19.2.6))(react@19.2.6))(@rjsf/utils@6.8.0(react@19.2.6))(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
+ dependencies:
+ '@radix-ui/react-checkbox': 1.3.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-icons': 1.3.2(react@19.2.6)
+ '@radix-ui/react-label': 2.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-popover': 1.1.23(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-radio-group': 1.4.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-select': 2.3.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-separator': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-slider': 1.4.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.6)
+ '@react-icons/all-files': 4.1.0(react@19.2.6)
+ '@rjsf/core': 6.8.0(@rjsf/utils@6.8.0(react@19.2.6))(react@19.2.6)
+ '@rjsf/utils': 6.8.0(react@19.2.6)
+ class-variance-authority: 0.7.1
+ clsx: 2.1.1
+ cmdk: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ lodash: 4.18.1
+ lodash-es: 4.18.1
+ lucide-react: 1.34.0(react@19.2.6)
+ react: 19.2.6
+ tailwind-merge: 3.6.0
+ tailwindcss-animate: 1.0.7
+ uuid: 14.0.2
+ transitivePeerDependencies:
+ - '@types/react'
+ - '@types/react-dom'
+ - react-dom
+ - tailwindcss
- '@rjsf/utils@5.24.13(react@19.2.6)':
+ '@rjsf/utils@6.8.0(react@19.2.6)':
dependencies:
- json-schema-merge-allof: 0.8.1
+ '@x0k/json-schema-merge': 1.0.5
+ fast-equals: 6.0.2
+ fast-uri: 4.1.3
jsonpointer: 5.0.1
lodash: 4.18.1
lodash-es: 4.18.1
react: 19.2.6
react-is: 18.3.1
- '@rjsf/validator-ajv8@5.24.13(@rjsf/utils@5.24.13(react@19.2.6))':
+ '@rjsf/validator-ajv8@6.8.0(@rjsf/utils@6.8.0(react@19.2.6))':
dependencies:
- '@rjsf/utils': 5.24.13(react@19.2.6)
+ '@rjsf/utils': 6.8.0(react@19.2.6)
ajv: 8.20.0
ajv-formats: 2.1.1(ajv@8.20.0)
lodash: 4.18.1
@@ -4823,6 +5631,10 @@ snapshots:
'@workflow/serde@4.1.0': {}
+ '@x0k/json-schema-merge@1.0.5':
+ dependencies:
+ '@types/json-schema': 7.0.15
+
accepts@2.0.0:
dependencies:
mime-types: 3.0.2
@@ -4984,6 +5796,12 @@ snapshots:
dependencies:
readdirp: 4.1.2
+ class-variance-authority@0.7.1:
+ dependencies:
+ clsx: 2.1.1
+
+ clsx@2.1.1: {}
+
cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.6(react@19.2.6))(react@19.2.6):
dependencies:
'@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.6)
@@ -5010,19 +5828,6 @@ snapshots:
commander@4.1.1: {}
- compute-gcd@1.2.1:
- dependencies:
- validate.io-array: 1.0.6
- validate.io-function: 1.0.2
- validate.io-integer-array: 1.0.0
-
- compute-lcm@1.1.2:
- dependencies:
- compute-gcd: 1.2.1
- validate.io-array: 1.0.6
- validate.io-function: 1.0.2
- validate.io-integer-array: 1.0.0
-
concat-map@0.0.1: {}
confbox@0.1.8: {}
@@ -5342,6 +6147,8 @@ snapshots:
fast-deep-equal@3.1.3: {}
+ fast-equals@6.0.2: {}
+
fast-glob@3.3.3:
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -5356,6 +6163,8 @@ snapshots:
fast-uri@3.1.2: {}
+ fast-uri@4.1.3: {}
+
fastq@1.20.1:
dependencies:
reusify: 1.1.0
@@ -5621,16 +6430,6 @@ snapshots:
json-buffer@3.0.1: {}
- json-schema-compare@0.2.2:
- dependencies:
- lodash: 4.18.1
-
- json-schema-merge-allof@0.8.1:
- dependencies:
- compute-lcm: 1.1.2
- json-schema-compare: 0.2.2
- lodash: 4.18.1
-
json-schema-traverse@0.4.1: {}
json-schema-traverse@1.0.0: {}
@@ -5692,13 +6491,17 @@ snapshots:
dependencies:
yallist: 3.1.1
+ lucide-react@1.34.0(react@19.2.6):
+ dependencies:
+ react: 19.2.6
+
lz-string@1.5.0: {}
magic-string@0.30.21:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
- markdown-to-jsx@7.7.17(react@19.2.6):
+ markdown-to-jsx@9.10.2(react@19.2.6):
optionalDependencies:
react: 19.2.6
@@ -6158,6 +6961,10 @@ snapshots:
symbol-tree@3.2.4: {}
+ tailwind-merge@3.6.0: {}
+
+ tailwindcss-animate@1.0.7: {}
+
term-size@2.2.1: {}
thenify-all@1.6.0:
@@ -6296,20 +7103,7 @@ snapshots:
optionalDependencies:
'@types/react': 19.2.14
- validate.io-array@1.0.6: {}
-
- validate.io-function@1.0.2: {}
-
- validate.io-integer-array@1.0.0:
- dependencies:
- validate.io-array: 1.0.6
- validate.io-integer: 1.0.5
-
- validate.io-integer@1.0.5:
- dependencies:
- validate.io-number: 1.0.3
-
- validate.io-number@1.0.3: {}
+ uuid@14.0.2: {}
vary@1.1.2: {}
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index 5a93fcd..c63f9c6 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -9,3 +9,13 @@ allowBuilds:
onlyBuiltDependencies:
- esbuild
+
+peerDependencyRules:
+ ignoreMissing:
+ # `@rjsf/shadcn` (a devDependency of packages/forms-rjsf, for the smoke test
+ # that proves the shadcn theme renders) pulls in `tailwindcss-animate`, whose
+ # peer range is the malformed `">=3.0.0 || insiders"`. The `insiders` branch
+ # is not a semver range, so pnpm treats the whole range as unsatisfiable and
+ # reports the peer unmet no matter which tailwindcss is installed. Nothing in
+ # this repo compiles CSS, so the peer is genuinely irrelevant here.
+ - tailwindcss
diff --git a/scripts/pin-rjsf-5x.mjs b/scripts/pin-rjsf-5x.mjs
new file mode 100644
index 0000000..69b14c5
--- /dev/null
+++ b/scripts/pin-rjsf-5x.mjs
@@ -0,0 +1,99 @@
+#!/usr/bin/env node
+/**
+ * Repoint `packages/forms-rjsf`'s dev tree at the 5.x half of its DECLARED
+ * `@rjsf` peer range, so CI can typecheck and test the adapter against the
+ * older major it promises to support (thorwhalen/acture#57).
+ *
+ * This is a second *install*, not a second alias tree. The three `@rjsf`
+ * devDependencies are rewritten to the 5.x clause of the peer range and
+ * `@rjsf/shadcn` (published on the 6.x line only) is dropped; a plain
+ * `pnpm install` then resolves a plain 5.x tree. No `npm:` aliases and no
+ * `packageExtensions` are involved, so pnpm's peers-are-matched-by-package-name
+ * behaviour — which is what makes an *aliased* 5.x install useless, since the
+ * alias still binds the 6.x `@rjsf/utils` — never comes into play.
+ *
+ * The 5.x clause is READ from `peerDependencies`, never hardcoded: narrow the
+ * published range to 6-only and this script no-ops instead of failing, so the
+ * matrix retires itself together with the promise it exists to check.
+ *
+ * node scripts/pin-rjsf-5x.mjs # rewrite the tree (CI only)
+ * node scripts/pin-rjsf-5x.mjs --verify # after install: assert 5.x resolved
+ *
+ * DESTRUCTIVE: rewrites `packages/forms-rjsf/package.json` and deletes
+ * `src/shadcn-theme.test.tsx` in the working tree. Intended for a throwaway CI
+ * checkout; refuses to run outside CI unless `--force` is passed.
+ */
+
+import { readFileSync, writeFileSync, rmSync, existsSync } from 'node:fs';
+import { dirname, resolve } from 'node:path';
+import { fileURLToPath } from 'node:url';
+
+const repoRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..');
+const pkgDir = resolve(repoRoot, 'packages/forms-rjsf');
+const pkgPath = resolve(pkgDir, 'package.json');
+
+/** The three `@rjsf` packages this adapter peers on and dev-installs. */
+const RJSF_DEV_DEPS = ['@rjsf/core', '@rjsf/utils', '@rjsf/validator-ajv8'];
+
+const readJson = (path) => JSON.parse(readFileSync(path, 'utf8'));
+
+/** The `^5.x` clause of the declared `@rjsf/core` peer range, or `null`. */
+function fiveClause(pkg) {
+ const declared = pkg.peerDependencies['@rjsf/core'];
+ return (
+ declared
+ .split('||')
+ .map((clause) => clause.trim())
+ .find((clause) => /^\D*5\./.test(clause)) ?? null
+ );
+}
+
+const verify = process.argv.includes('--verify');
+const pkg = readJson(pkgPath);
+const clause = fiveClause(pkg);
+
+if (!clause) {
+ console.log(
+ `pin-rjsf-5x: the declared @rjsf/core peer range is ` +
+ `"${pkg.peerDependencies['@rjsf/core']}", which has no 5.x clause. ` +
+ 'Nothing to check — skipping.',
+ );
+ process.exit(0);
+}
+
+if (verify) {
+ // A job that silently tests the wrong major is the failure this whole matrix
+ // exists to prevent, so the install is checked rather than assumed.
+ const installed = readJson(resolve(pkgDir, 'node_modules/@rjsf/core/package.json')).version;
+ const major = installed.split('.')[0];
+ if (major !== '5') {
+ console.error(
+ `pin-rjsf-5x --verify: declared range promises "${clause}" but the tree ` +
+ `resolved @rjsf/core@${installed}. This job is not testing 5.x.`,
+ );
+ process.exit(1);
+ }
+ console.log(`pin-rjsf-5x --verify: @rjsf/core@${installed} — a real 5.x tree.`);
+ process.exit(0);
+}
+
+if (!process.env.CI && !process.argv.includes('--force')) {
+ console.error(
+ 'pin-rjsf-5x: refusing to rewrite the working tree outside CI. ' +
+ 'Pass --force if you mean it (and expect to `git checkout` afterwards).',
+ );
+ process.exit(1);
+}
+
+for (const name of RJSF_DEV_DEPS) pkg.devDependencies[name] = clause;
+// `@rjsf/shadcn` is 6.x-only; its smoke test is the one thing that cannot run here.
+delete pkg.devDependencies['@rjsf/shadcn'];
+writeFileSync(pkgPath, `${JSON.stringify(pkg, null, 2)}\n`);
+
+const shadcnTest = resolve(pkgDir, 'src/shadcn-theme.test.tsx');
+if (existsSync(shadcnTest)) rmSync(shadcnTest);
+
+console.log(
+ `pin-rjsf-5x: pinned ${RJSF_DEV_DEPS.join(', ')} to "${clause}", ` +
+ 'dropped @rjsf/shadcn and its smoke test.',
+);