diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 0000000..b1c06a4
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,52 @@
+name: release
+
+# Publishes @aestheticfunction/ds-mcp to npm when a version tag is pushed.
+# Mirrors dspack-gen's release workflow (PHASE-NEXT WS0, task 0.5): with the
+# pin-drift check in test.yml, a red check leads to a re-pin PR and the
+# release is one merge plus one tag away.
+#
+# Auth: npm trusted publishing (OIDC) — no NPM_TOKEN secret in the repo.
+# One-time setup on npmjs.com (package settings -> Trusted publisher):
+# repository aestheticfunction/ds-mcp, workflow release.yml.
+# Provenance attestations are generated automatically for trusted publishes.
+#
+# Guards:
+# - tag must equal the package.json version (prevents accidental mismatches)
+# - full test suite runs before publish (build is pretest, so the vendored
+# core bundle published is the one the suite just validated)
+# - publishing an already-published version fails the job (npm rejects dupes)
+
+on:
+ push:
+ tags:
+ - "v*"
+
+jobs:
+ publish:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: read
+ id-token: write # OIDC for npm trusted publishing / provenance
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ # Node 24 bundles npm >= 11.5, the minimum for OIDC trusted
+ # publishing. Node 20's npm 10 skips the token exchange entirely
+ # and the unauthenticated PUT fails as E404 (dspack-gen v0.1.1's
+ # first release run hit exactly this).
+ node-version: 24
+ cache: npm
+ registry-url: https://registry.npmjs.org
+ - name: Verify tag matches package.json version
+ run: |
+ pkg="$(node -p "require('./package.json').version")"
+ tag="${GITHUB_REF_NAME#v}"
+ if [ "$pkg" != "$tag" ]; then
+ echo "tag v$tag does not match package.json version $pkg" >&2
+ exit 1
+ fi
+ - run: npm ci
+ - run: npm test
+ - name: Publish (public, with provenance)
+ run: npm publish --access public
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index d714f4a..fff8757 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -19,3 +19,16 @@ jobs:
- run: npm test
- name: Copy drift check (dspack-gen#7)
run: node scripts/check-sync.mjs
+
+ core-pin-drift:
+ # Report-only posture: red means dspack-gen published a release whose
+ # src/core differs from the vendored-core pin — the fix is the re-pin
+ # ritual (README). API failures warn and pass; real drift fails.
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/setup-node@v4
+ with:
+ node-version: 20
+ - name: Vendored-core pin matches dspack-gen's latest release
+ run: node scripts/check-core-pin.mjs
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..4521e40
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,39 @@
+# Changelog
+
+## 0.3.1
+
+The vendored `@aestheticfunction/dspack-gen/core` bundle moves from commit
+`f651433` to the v0.1.1 release tag (`374e1cd`), picking up the 0.1.1
+generation-schema fixes for grammar-constrained decoders: array-typed
+contract props emit as arrays (with contract-declared `items` passthrough),
+and node properties declare `component, id, props, text, children` in that
+order. The published 0.3.0 served the pre-fix schema from
+`get-generation-context`; a grammar-constrained decoder driven by that
+schema could not emit node text after props and degraded array props to
+strings.
+
+- Re-pin: `@aestheticfunction/dspack-gen` devDependency ->
+ `374e1cd` (the v0.1.1 tag commit), vendor bundle rebuilt.
+- New golden-context test: `get-generation-context` output byte-compares
+ against dspack-gen's own compiler golden
+ (`fixtures/golden/context/shadcn.destructive-action.json`), synced as a
+ tracked byte copy in `scripts/check-sync.mjs`. Byte-level on purpose:
+ grammar-constrained decoders enforce property order, which deepEqual
+ cannot see. The test fails on the 0.3.0 bundle with the pre-fix
+ signature (`text` declared before `props`).
+- New pin-drift CI check: `scripts/check-core-pin.mjs` compares the pinned
+ commit's shipped `src/core` files (blob-exact, via the git trees API)
+ against dspack-gen's latest release tag and fails loudly on drift.
+ Test files are excluded; GitHub API failures warn and pass (report-only
+ posture); real drift always fails.
+- Release workflow: npm trusted publishing (OIDC) on version tags,
+ mirroring dspack-gen's. Requires one-time trusted-publisher registration
+ on npmjs.com.
+
+## 0.3.0
+
+Baseline for this changelog. Self-contained npm package: dspack-gen's
+`core` subpath bundled at build time (`dist/vendor/dspack-gen-core.js`)
+from a commit-pinned devDependency; generation tools
+(`get-generation-context`, `validate-ui`) backed by the bundle; network
+boundary enforced by test.
diff --git a/README.md b/README.md
index d0b3615..024895c 100644
--- a/README.md
+++ b/README.md
@@ -154,8 +154,16 @@ the guarantee.
dspack-gen is a **build-time** dependency: its `core` subpath is bundled
into the published package (`dist/vendor/dspack-gen-core.js`) from a
commit-pinned devDependency, so installing ds-mcp from npm pulls nothing
-from git. Updating governance semantics means re-pinning that commit,
-rebuilding, and republishing ds-mcp.
+from git. The default posture is **tag-pinned**: the pin is the commit of
+dspack-gen's latest release tag, so the vendored core corresponds exactly
+to a published dspack-gen version. CI watches this two ways:
+`scripts/check-core-pin.mjs` fails loudly when a newer dspack-gen release
+changes shipped `src/core` files (test files are excluded — the documented
+escape for intentional ahead-of-release pins), and the golden-context test
+byte-compares `get-generation-context` output against dspack-gen's own
+compiler golden. Updating governance semantics means re-pinning to the new
+release tag commit, `npm install`, `npm run build`, verifying the golden
+tests, and republishing ds-mcp.
## Requirements
diff --git a/package-lock.json b/package-lock.json
index 4d62687..9f6a429 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -18,7 +18,7 @@
"ds-mcp": "dist/index.js"
},
"devDependencies": {
- "@aestheticfunction/dspack-gen": "git+https://github.com/aestheticfunction/dspack-gen.git#f6514330964ed7b62371e17eec4cdadaeeef9d52",
+ "@aestheticfunction/dspack-gen": "git+https://github.com/aestheticfunction/dspack-gen.git#374e1cd91f02701c0d4829ece0a79dd9b381f67b",
"@types/minimist": "^1.2.5",
"@types/node": "^20.0.0",
"esbuild": "^0.25.0",
@@ -29,9 +29,9 @@
}
},
"node_modules/@aestheticfunction/dspack-emit": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/@aestheticfunction/dspack-emit/-/dspack-emit-0.3.0.tgz",
- "integrity": "sha512-TE3dhCDoMOzfNyponuq7oleYCS5smlWzCJLJ4iLpBjpaujhJIbMzi6WZDiaarToMlbjfhItxjmPZb3pTRzVMUQ==",
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/@aestheticfunction/dspack-emit/-/dspack-emit-0.3.1.tgz",
+ "integrity": "sha512-0vCFP5rvWGoIPvnBlB3puXkhoJhEyq/FQHrfj3JfPwf37WfASZb5ZOK3tPzB8ZhZTFkxvhjrvHeEYgRDOGm04w==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
@@ -40,18 +40,21 @@
}
},
"node_modules/@aestheticfunction/dspack-gen": {
- "version": "0.1.0",
- "resolved": "git+ssh://git@github.com/aestheticfunction/dspack-gen.git#f6514330964ed7b62371e17eec4cdadaeeef9d52",
- "integrity": "sha512-I3s4RmNrQVunXAWICcT5/YxI9HExXnoDSIUObaklbuO2fK6JC30myoQTHEjK0KUGvRnxgaVuBJSvmVQgQtvz4A==",
+ "version": "0.1.1",
+ "resolved": "git+ssh://git@github.com/aestheticfunction/dspack-gen.git#374e1cd91f02701c0d4829ece0a79dd9b381f67b",
+ "integrity": "sha512-S3BP2oRstk8UaMx1xxQsBpCnVcC3J7RMLAqeqAN6U1ZYHPwQeGqB5w/cWjGRTKoBPgL0O8p2P5zupBZGPL5KGg==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@aestheticfunction/dspack-emit": "^0.3.0",
+ "@aestheticfunction/dspack-emit": "^0.3.1",
"@anthropic-ai/sdk": "^0.109.1",
"ajv": "^8.17.1",
"ajv-formats": "^3.0.1",
"undici": "^6.27.0"
},
+ "bin": {
+ "dspack-gen": "dist/cli.js"
+ },
"engines": {
"node": ">=20.0.0"
}
diff --git a/package.json b/package.json
index 38cade2..cc904b4 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@aestheticfunction/ds-mcp",
- "version": "0.3.0",
+ "version": "0.3.1",
"description": "MCP server for exposing dspack design system corpora to AI coding agents",
"license": "Apache-2.0",
"type": "module",
@@ -14,6 +14,7 @@
"examples/",
"docs/",
"README.md",
+ "CHANGELOG.md",
"LICENSE",
"SECURITY.md"
],
@@ -62,7 +63,7 @@
"zod": "^3.25 || ^4.0"
},
"devDependencies": {
- "@aestheticfunction/dspack-gen": "git+https://github.com/aestheticfunction/dspack-gen.git#f6514330964ed7b62371e17eec4cdadaeeef9d52",
+ "@aestheticfunction/dspack-gen": "git+https://github.com/aestheticfunction/dspack-gen.git#374e1cd91f02701c0d4829ece0a79dd9b381f67b",
"@types/minimist": "^1.2.5",
"esbuild": "^0.25.0",
"@types/node": "^20.0.0",
diff --git a/scripts/check-core-pin.mjs b/scripts/check-core-pin.mjs
new file mode 100644
index 0000000..29ec41b
--- /dev/null
+++ b/scripts/check-core-pin.mjs
@@ -0,0 +1,121 @@
+#!/usr/bin/env node
+/**
+ * Vendored-core pin drift check (PHASE-NEXT WS0, report-only posture).
+ *
+ * ds-mcp bundles @aestheticfunction/dspack-gen/core at build time from a
+ * commit-pinned devDependency. The invariant this job watches: the pinned
+ * commit corresponds exactly to dspack-gen's latest published release, so
+ * the schema and linter semantics ds-mcp serves are the ones consumers get
+ * from `npm install @aestheticfunction/dspack-gen`. When a new dspack-gen
+ * release changes anything under src/core/, this check fails loudly and the
+ * fix is the documented re-pin ritual: move the pin to the new release tag,
+ * rebuild, republish ds-mcp.
+ *
+ * The diff excludes *.test.ts — test files never ship in the esbuild vendor
+ * bundle, which is the documented escape for intentional ahead-of-release
+ * pins. The default posture is tag-pinned, where this check is green by
+ * construction.
+ *
+ * Report-only discipline: a GitHub API failure logs a warning and exits 0
+ * (infrastructure noise never blocks unrelated work); a real content diff
+ * always exits 1.
+ *
+ * Boring by design: node builtins + global fetch, one retry, no deps.
+ */
+import { readFileSync } from "node:fs";
+
+const REPO = "aestheticfunction/dspack-gen";
+const API = `https://api.github.com/repos/${REPO}`;
+
+async function gh(path) {
+ for (let attempt = 1; ; attempt++) {
+ try {
+ const response = await fetch(`${API}${path}`, {
+ headers: { accept: "application/vnd.github+json", "user-agent": "ds-mcp-check-core-pin" },
+ });
+ if (!response.ok) throw new Error(`HTTP ${response.status}`);
+ return await response.json();
+ } catch (error) {
+ if (attempt >= 2) throw new Error(`GET ${path}: ${error.message ?? error}`);
+ await new Promise((resolve) => setTimeout(resolve, 2000));
+ }
+ }
+}
+
+const pkg = JSON.parse(readFileSync("package.json", "utf-8"));
+const spec = pkg.devDependencies?.["@aestheticfunction/dspack-gen"] ?? "";
+const pinned = spec.split("#")[1];
+if (!/^[0-9a-f]{40}$/.test(pinned ?? "")) {
+ console.error(`could not read a 40-char commit pin from the devDependency spec: ${spec}`);
+ process.exit(1);
+}
+
+let tags;
+try {
+ tags = await gh("/tags?per_page=100");
+} catch (error) {
+ console.warn(`WARN GitHub API unavailable (${error.message}); pin-drift check skipped this run.`);
+ process.exit(0);
+}
+
+const releases = tags
+ .filter((t) => /^v\d+\.\d+\.\d+$/.test(t.name))
+ .sort((a, b) => {
+ const va = a.name.slice(1).split(".").map(Number);
+ const vb = b.name.slice(1).split(".").map(Number);
+ return vb[0] - va[0] || vb[1] - va[1] || vb[2] - va[2];
+ });
+if (releases.length === 0) {
+ console.warn("WARN no release tags found on dspack-gen; pin-drift check skipped this run.");
+ process.exit(0);
+}
+const latest = releases[0];
+console.log(`pinned commit: ${pinned}`);
+console.log(`latest dspack-gen release: ${latest.name} (${latest.commit.sha})`);
+
+if (latest.commit.sha === pinned) {
+ console.log("in sync the pin is exactly the latest release tag.");
+ process.exit(0);
+}
+
+// Compare the two src/core trees blob by blob. The compare API is NOT used:
+// its file list caps at 300 entries and silently truncates larger diffs —
+// the exact silent-drift class this check exists to prevent. Two recursive
+// tree fetches are exact at any diff size.
+async function coreTree(ref) {
+ const tree = await gh(`/git/trees/${ref}?recursive=1`);
+ if (tree.truncated) throw new Error(`tree listing for ${ref} was truncated by the API`);
+ const files = new Map();
+ for (const entry of tree.tree) {
+ if (entry.type !== "blob") continue;
+ if (!entry.path.startsWith("src/core/") || entry.path.endsWith(".test.ts")) continue;
+ files.set(entry.path, entry.sha);
+ }
+ return files;
+}
+
+let pinnedCore, latestCore;
+try {
+ [pinnedCore, latestCore] = await Promise.all([coreTree(pinned), coreTree(latest.commit.sha)]);
+} catch (error) {
+ console.warn(`WARN GitHub API unavailable (${error.message}); pin-drift check skipped this run.`);
+ process.exit(0);
+}
+
+const coreDiff = [...new Set([...pinnedCore.keys(), ...latestCore.keys()])]
+ .filter((path) => pinnedCore.get(path) !== latestCore.get(path))
+ .sort();
+
+if (coreDiff.length === 0) {
+ console.log(
+ `in sync pin differs from ${latest.name} but no shipped src/core files differ ` +
+ "(test-only or non-core drift; the vendor bundle is unaffected).",
+ );
+ process.exit(0);
+}
+
+console.error(`DRIFT the vendored core pin diverges from dspack-gen ${latest.name} in shipped src/core files:`);
+for (const f of coreDiff) console.error(` ${f}`);
+console.error(" fix: re-pin the devDependency to the release tag commit, npm install,");
+console.error(" npm run build, verify the golden-context test, release a new ds-mcp version.");
+process.exit(1);
diff --git a/scripts/check-sync.mjs b/scripts/check-sync.mjs
index 77e4558..779ade6 100644
--- a/scripts/check-sync.mjs
+++ b/scripts/check-sync.mjs
@@ -34,6 +34,12 @@ const MANIFEST = [
"https://raw.githubusercontent.com/aestheticfunction/dspack-gen/main/fixtures/golden/violating/F1-dialog-for-delete.expected.json",
note: "F1 expected findings — the deliberate validator-semantics coupling to dspack-gen",
},
+ {
+ local: "src/tests/fixtures/shadcn.destructive-action.context.json",
+ source:
+ "https://raw.githubusercontent.com/aestheticfunction/dspack-gen/main/fixtures/golden/context/shadcn.destructive-action.json",
+ note: "golden generation context — pins get-generation-context's served output to dspack-gen's compiler",
+ },
];
const write = process.argv.includes("--write");
diff --git a/src/tests/fixtures/shadcn.destructive-action.context.json b/src/tests/fixtures/shadcn.destructive-action.context.json
new file mode 100644
index 0000000..eb088b3
--- /dev/null
+++ b/src/tests/fixtures/shadcn.destructive-action.context.json
@@ -0,0 +1,7210 @@
+{
+ "system": "You generate user interface surfaces for the \"shadcn/ui\" design system. You must respond\nwith a single JSON object conforming to the provided schema — a dspack surface document.\n\n## Component vocabulary\nYou may use only these components (with the listed props and allowed values):\n- button — An interactive element that triggers an action when activated. Built on a native button element with support for Radix UI Slot composition via asChild. Props: variant ∈ {default, destructive, outline, secondary, ghost, link}; size ∈ {default, sm, lg, icon}; disabled; asChild.\n- alert-dialog — A modal dialog that interrupts the user with important content and expects a response. Built on Radix UI AlertDialog. Renders with a required action and a cancel option. The user cannot dismiss it by clicking the overlay or pressing Escape — they must choose an explicit action. Props: open; onOpenChange. Sub-components (used as children): alert-dialog-trigger, alert-dialog-content, alert-dialog-header, alert-dialog-title, alert-dialog-description, alert-dialog-footer, alert-dialog-action, alert-dialog-cancel.\n- dialog — A modal window that appears over the page content. Built on Radix UI Dialog. Can be dismissed by clicking the overlay, pressing Escape, or activating a close button. Props: open; onOpenChange; modal. Sub-components (used as children): dialog-trigger, dialog-content, dialog-header, dialog-title, dialog-description, dialog-footer, dialog-close.\n- card — A container for grouping related content and actions. Provides visual separation through a bordered surface. Props: className. Sub-components (used as children): card-header, card-title, card-description, card-content, card-footer.\n- input — A single-line text input field built on the native element. Supports all standard HTML input types. Props: type; placeholder; disabled.\n- badge — A small label for categorization, status indication, or metadata. Renders as an inline element. Props: variant ∈ {default, secondary, outline, destructive}.\n- dropdown-menu — A menu that appears on activation of a trigger element. Built on Radix UI DropdownMenu. Supports items, checkboxes, radio groups, sub-menus, separators, and keyboard navigation. Props: open; onOpenChange; modal. Sub-components (used as children): dropdown-menu-trigger, dropdown-menu-content, dropdown-menu-item, dropdown-menu-checkbox-item, dropdown-menu-radio-group, dropdown-menu-radio-item, dropdown-menu-label, dropdown-menu-separator, dropdown-menu-group, dropdown-menu-sub, dropdown-menu-sub-trigger, dropdown-menu-sub-content.\n- table — A set of primitives for presenting tabular data with a meaningful row-and-column relationship. These are thin, presentational wrappers over the native table elements — Table renders a
inside a horizontally scrollable container, and the sub-components render thead, tbody, tfoot, tr, th, td, and caption. There is no built-in sorting, filtering, pagination, or selection; those are composed on top. Sub-components (used as children): table-header, table-body, table-footer, table-row, table-head, table-cell, table-caption.\n\n## Governance rules in effect (intent: destructive-action)\nThese are hard requirements. Surfaces violating them will be rejected:\n1. [rule.destructive-requires-alertdialog / must] Use alert-dialog for this surface; dialog is forbidden. Why: Dialog can be dismissed by clicking the overlay or pressing Escape, so a user can bypass a destructive confirmation without making a conscious choice. AlertDialog forces an explicit confirm/cancel decision and is announced with greater urgency by screen readers.\n2. [rule.alertdialog-requires-cancel / must] Every alert-dialog must contain alert-dialog-cancel and alert-dialog-title. Why: A confirmation without an explicit cancel action and a title naming the consequence funnels the user toward the destructive action; the title is also required for aria-labelledby.\n3. [rule.button-no-interactive-descendants / must] Never place button or input inside a button. Why: Nested interactive elements create ambiguous click targets and are an accessibility violation: screen readers cannot determine intent and click handling varies across browsers.\n4. [rule.trigger-carries-label / must] Every alert-dialog-trigger must contain non-empty text (its own `text` field or a descendant's). Why: The trigger must present an accessible label: non-empty text somewhere under the trigger. Protocol projections lift the label from the trigger's subtree (preferring a label-bearing button; lifts are audited) — a trigger with no label text anywhere yields a control with no accessible name and an instance downstream emitters must refuse.\n5. [rule.alertdialog-no-nested-overlays / must] never place overlay-category components (alert-dialog, dialog, dropdown-menu) inside alert-dialog. Why: An alert dialog is a single focused interruption. Stacking another overlay (dialog, dropdown menu, another alert dialog) inside it breaks focus containment and dismiss semantics and buries the confirmation decision under a second layer.\n\n## Design intent\nIntent \"destructive-action\": The requested UI performs an irreversible or high-consequence operation: deleting records or accounts, revoking access, removing members.\nRelated pattern \"Destructive Action Confirmation\": Use AlertDialog, not Dialog, for destructive confirmations. The trigger should clearly indicate the destructive nature of the action. Inside the AlertDialog, provide a clear title stating what will happen, a description of the consequences, and two actions: a cancel option and a confirm option. The confirm button MUST use the destructive variant. Place the cancel action before the confirm action in the footer. The description should state specifically what will be affected (e.g., 'This will permanently delete 3 projects and all associated data').\n\nOutput only the JSON object. No commentary.",
+ "schema": {
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "dspackSurface",
+ "system",
+ "intent",
+ "root"
+ ],
+ "properties": {
+ "dspackSurface": {
+ "const": "0.1"
+ },
+ "system": {
+ "const": "shadcn/ui"
+ },
+ "intent": {
+ "const": "destructive-action"
+ },
+ "root": {
+ "$ref": "#/$defs/node_0"
+ }
+ },
+ "$defs": {
+ "node_0": {
+ "anyOf": [
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "button"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "variant": {
+ "enum": [
+ "default",
+ "destructive",
+ "outline",
+ "secondary",
+ "ghost",
+ "link"
+ ]
+ },
+ "size": {
+ "enum": [
+ "default",
+ "sm",
+ "lg",
+ "icon"
+ ]
+ },
+ "disabled": {
+ "type": "boolean"
+ },
+ "asChild": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "open": {
+ "type": "boolean"
+ },
+ "onOpenChange": {
+ "type": "string"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-title"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-description"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-action"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-cancel"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "open": {
+ "type": "boolean"
+ },
+ "onOpenChange": {
+ "type": "string"
+ },
+ "modal": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-title"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-description"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-close"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "className": {
+ "type": "string"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-title"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-description"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "input"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "placeholder": {
+ "type": "string"
+ },
+ "disabled": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "badge"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "variant": {
+ "enum": [
+ "default",
+ "secondary",
+ "outline",
+ "destructive"
+ ]
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "open": {
+ "type": "boolean"
+ },
+ "onOpenChange": {
+ "type": "string"
+ },
+ "modal": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-item"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-checkbox-item"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-radio-group"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-radio-item"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-label"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-separator"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-group"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-sub"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-sub-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-sub-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-body"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-row"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-head"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-cell"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-caption"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_1"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "node_1": {
+ "anyOf": [
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "button"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "variant": {
+ "enum": [
+ "default",
+ "destructive",
+ "outline",
+ "secondary",
+ "ghost",
+ "link"
+ ]
+ },
+ "size": {
+ "enum": [
+ "default",
+ "sm",
+ "lg",
+ "icon"
+ ]
+ },
+ "disabled": {
+ "type": "boolean"
+ },
+ "asChild": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "open": {
+ "type": "boolean"
+ },
+ "onOpenChange": {
+ "type": "string"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-title"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-description"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-action"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-cancel"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "open": {
+ "type": "boolean"
+ },
+ "onOpenChange": {
+ "type": "string"
+ },
+ "modal": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-title"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-description"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-close"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "className": {
+ "type": "string"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-title"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-description"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "input"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "placeholder": {
+ "type": "string"
+ },
+ "disabled": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "badge"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "variant": {
+ "enum": [
+ "default",
+ "secondary",
+ "outline",
+ "destructive"
+ ]
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "open": {
+ "type": "boolean"
+ },
+ "onOpenChange": {
+ "type": "string"
+ },
+ "modal": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-item"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-checkbox-item"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-radio-group"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-radio-item"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-label"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-separator"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-group"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-sub"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-sub-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-sub-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-body"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-row"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-head"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-cell"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-caption"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_2"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "node_2": {
+ "anyOf": [
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "button"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "variant": {
+ "enum": [
+ "default",
+ "destructive",
+ "outline",
+ "secondary",
+ "ghost",
+ "link"
+ ]
+ },
+ "size": {
+ "enum": [
+ "default",
+ "sm",
+ "lg",
+ "icon"
+ ]
+ },
+ "disabled": {
+ "type": "boolean"
+ },
+ "asChild": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "open": {
+ "type": "boolean"
+ },
+ "onOpenChange": {
+ "type": "string"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-title"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-description"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-action"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-cancel"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "open": {
+ "type": "boolean"
+ },
+ "onOpenChange": {
+ "type": "string"
+ },
+ "modal": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-title"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-description"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-close"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "className": {
+ "type": "string"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-title"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-description"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "input"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "placeholder": {
+ "type": "string"
+ },
+ "disabled": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "badge"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "variant": {
+ "enum": [
+ "default",
+ "secondary",
+ "outline",
+ "destructive"
+ ]
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "open": {
+ "type": "boolean"
+ },
+ "onOpenChange": {
+ "type": "string"
+ },
+ "modal": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-item"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-checkbox-item"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-radio-group"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-radio-item"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-label"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-separator"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-group"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-sub"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-sub-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-sub-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-body"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-row"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-head"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-cell"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-caption"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_3"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "node_3": {
+ "anyOf": [
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "button"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "variant": {
+ "enum": [
+ "default",
+ "destructive",
+ "outline",
+ "secondary",
+ "ghost",
+ "link"
+ ]
+ },
+ "size": {
+ "enum": [
+ "default",
+ "sm",
+ "lg",
+ "icon"
+ ]
+ },
+ "disabled": {
+ "type": "boolean"
+ },
+ "asChild": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "open": {
+ "type": "boolean"
+ },
+ "onOpenChange": {
+ "type": "string"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-title"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-description"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-action"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-cancel"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "open": {
+ "type": "boolean"
+ },
+ "onOpenChange": {
+ "type": "string"
+ },
+ "modal": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-title"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-description"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-close"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "className": {
+ "type": "string"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-title"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-description"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "input"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "placeholder": {
+ "type": "string"
+ },
+ "disabled": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "badge"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "variant": {
+ "enum": [
+ "default",
+ "secondary",
+ "outline",
+ "destructive"
+ ]
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "open": {
+ "type": "boolean"
+ },
+ "onOpenChange": {
+ "type": "string"
+ },
+ "modal": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-item"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-checkbox-item"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-radio-group"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-radio-item"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-label"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-separator"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-group"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-sub"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-sub-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-sub-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-body"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-row"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-head"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-cell"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-caption"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_4"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "node_4": {
+ "anyOf": [
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "button"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "variant": {
+ "enum": [
+ "default",
+ "destructive",
+ "outline",
+ "secondary",
+ "ghost",
+ "link"
+ ]
+ },
+ "size": {
+ "enum": [
+ "default",
+ "sm",
+ "lg",
+ "icon"
+ ]
+ },
+ "disabled": {
+ "type": "boolean"
+ },
+ "asChild": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "open": {
+ "type": "boolean"
+ },
+ "onOpenChange": {
+ "type": "string"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-title"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-description"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-action"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-cancel"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "open": {
+ "type": "boolean"
+ },
+ "onOpenChange": {
+ "type": "string"
+ },
+ "modal": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-title"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-description"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-close"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "className": {
+ "type": "string"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-title"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-description"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "input"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "placeholder": {
+ "type": "string"
+ },
+ "disabled": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "badge"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "variant": {
+ "enum": [
+ "default",
+ "secondary",
+ "outline",
+ "destructive"
+ ]
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "open": {
+ "type": "boolean"
+ },
+ "onOpenChange": {
+ "type": "string"
+ },
+ "modal": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-item"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-checkbox-item"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-radio-group"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-radio-item"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-label"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-separator"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-group"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-sub"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-sub-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-sub-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-body"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-row"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-head"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-cell"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-caption"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "$ref": "#/$defs/node_5"
+ }
+ }
+ }
+ }
+ ]
+ },
+ "node_5": {
+ "anyOf": [
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "button"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "variant": {
+ "enum": [
+ "default",
+ "destructive",
+ "outline",
+ "secondary",
+ "ghost",
+ "link"
+ ]
+ },
+ "size": {
+ "enum": [
+ "default",
+ "sm",
+ "lg",
+ "icon"
+ ]
+ },
+ "disabled": {
+ "type": "boolean"
+ },
+ "asChild": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "open": {
+ "type": "boolean"
+ },
+ "onOpenChange": {
+ "type": "string"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-title"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-description"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-action"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "alert-dialog-cancel"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "open": {
+ "type": "boolean"
+ },
+ "onOpenChange": {
+ "type": "string"
+ },
+ "modal": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-title"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-description"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dialog-close"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "className": {
+ "type": "string"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-title"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-description"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "card-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "input"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "type": {
+ "type": "string"
+ },
+ "placeholder": {
+ "type": "string"
+ },
+ "disabled": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "badge"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "variant": {
+ "enum": [
+ "default",
+ "secondary",
+ "outline",
+ "destructive"
+ ]
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu"
+ },
+ "id": {
+ "type": "string"
+ },
+ "props": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "open": {
+ "type": "boolean"
+ },
+ "onOpenChange": {
+ "type": "string"
+ },
+ "modal": {
+ "type": "boolean"
+ }
+ }
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-item"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-checkbox-item"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-radio-group"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-radio-item"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-label"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-separator"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-group"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-sub"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-sub-trigger"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "dropdown-menu-sub-content"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-header"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-body"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-footer"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-row"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-head"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-cell"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ },
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": [
+ "component"
+ ],
+ "properties": {
+ "component": {
+ "const": "table-caption"
+ },
+ "id": {
+ "type": "string"
+ },
+ "text": {
+ "type": "string"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "fewshot": [
+ {
+ "role": "user",
+ "content": "a screen to delete my account"
+ },
+ {
+ "role": "assistant",
+ "content": "{\"dspackSurface\":\"0.1\",\"system\":\"shadcn/ui\",\"intent\":\"destructive-action\",\"root\":{\"component\":\"card\",\"children\":[{\"component\":\"alert-dialog\",\"children\":[{\"component\":\"alert-dialog-trigger\",\"children\":[{\"component\":\"button\",\"props\":{\"variant\":\"destructive\"},\"text\":\"Delete account\"}]},{\"component\":\"alert-dialog-content\",\"children\":[{\"component\":\"alert-dialog-title\",\"text\":\"Delete your account?\"},{\"component\":\"alert-dialog-description\",\"text\":\"This will permanently delete your account and all associated data. This action cannot be undone.\"},{\"component\":\"alert-dialog-footer\",\"children\":[{\"component\":\"alert-dialog-cancel\",\"text\":\"Cancel\"},{\"component\":\"alert-dialog-action\",\"text\":\"Delete account\"}]}]}]}]}}"
+ }
+ ]
+}
diff --git a/src/tests/generation-context-golden.test.ts b/src/tests/generation-context-golden.test.ts
new file mode 100644
index 0000000..9226ddf
--- /dev/null
+++ b/src/tests/generation-context-golden.test.ts
@@ -0,0 +1,66 @@
+/**
+ * Golden generation-context honesty check (PHASE-NEXT WS0, task 0.1).
+ *
+ * What ds-mcp serves from get-generation-context MUST be what dspack-gen's
+ * compiler computes for the same contract and intent — byte for byte after
+ * JSON serialization (the wire shape an MCP client receives). The golden is
+ * a byte-synced copy of dspack-gen's own compiler golden
+ * (fixtures/golden/context/shadcn.destructive-action.json, tracked in
+ * scripts/check-sync.mjs), compiled from the same shadcn v0.4 contract this
+ * repo carries as examples/shadcn-ui-v04.dspack.json.
+ *
+ * This is deliberate pinned-semantics coupling, the same posture as the F1
+ * lint goldens: if the vendored core's generation schema drifts from the
+ * published dspack-gen's, this fails loudly and the fix is a re-pin (see
+ * README, "dspack-gen is a build-time dependency"). It exists because the
+ * pre-0.1.1 pin served a schema that degraded array-typed contract props to
+ * strings and declared node `text` before `props` — divergence a prompt
+ * consumer cannot detect on its own.
+ */
+import { test } from 'node:test';
+import assert from 'node:assert/strict';
+import { readFileSync } from 'node:fs';
+import { fileURLToPath } from 'node:url';
+import { dirname, join } from 'node:path';
+import { loadDspack } from '../loader.js';
+import { getGenerationContext } from '../tools/get-generation-context.js';
+
+const __dirname = dirname(fileURLToPath(import.meta.url));
+const root = join(__dirname, '..', '..');
+
+const doc = loadDspack(join(root, 'examples', 'shadcn-ui-v04.dspack.json'));
+const golden = JSON.parse(
+ readFileSync(join(root, 'src', 'tests', 'fixtures', 'shadcn.destructive-action.context.json'), 'utf-8'),
+) as { system: string; schema: unknown; fewshot: unknown };
+
+/**
+ * The comparison is BYTE equality of the canonical serialization, not
+ * deepEqual: grammar-constrained decoders enforce declared property ORDER,
+ * so two schemas that deepEqual can still constrain a model differently.
+ * The pre-0.1.1 divergence is exactly that class (node `text` declared
+ * before `props`), which deepEqual cannot see.
+ */
+const bytes = (value: unknown): string => JSON.stringify(value, null, 2);
+
+test('get-generation-context serves exactly dspack-gen\'s golden context (schema semantics pinned, byte-level)', () => {
+ const outcome = getGenerationContext(doc, { intent: 'destructive-action' });
+ assert.ok(outcome.found, 'expected found');
+ const served = JSON.parse(JSON.stringify(outcome.result)) as {
+ system: string;
+ schema: unknown;
+ fewshot: unknown;
+ };
+ assert.equal(served.system, golden.system, 'system prompt drifted from the dspack-gen golden');
+ const servedSchema = bytes(served.schema);
+ const goldenSchema = bytes(golden.schema);
+ if (servedSchema !== goldenSchema) {
+ const s = servedSchema.split('\n');
+ const g = goldenSchema.split('\n');
+ const at = s.findIndex((line, i) => line !== g[i]);
+ assert.fail(
+ `generation schema drifted from the dspack-gen golden — the vendored core pin should move.\n` +
+ `first divergence at schema line ${at}:\n served: ${s[at]}\n golden: ${g[at]}`,
+ );
+ }
+ assert.equal(bytes(served.fewshot), bytes(golden.fewshot), 'few-shot exemplars drifted from the dspack-gen golden');
+});