@pebble-software/bonsai 0.2.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -5
- package/dist/ast.js +1 -1
- package/dist/chunks/{builder.meta-B7Y9M7Ab.js → builder.meta-DKq-ggkn.js} +3 -3
- package/dist/chunks/{builder.meta-B7Y9M7Ab.js.map → builder.meta-DKq-ggkn.js.map} +1 -1
- package/dist/chunks/class-names-CoKRVvWM.js +66 -0
- package/dist/chunks/class-names-CoKRVvWM.js.map +1 -0
- package/dist/chunks/{create-renderer-C4nV9RV6.js → create-renderer-CSFyNcqr.js} +55 -55
- package/dist/chunks/create-renderer-CSFyNcqr.js.map +1 -0
- package/dist/chunks/{index-CD5pykpk.js → index-df-PhUtD.js} +2 -2
- package/dist/chunks/{index-CD5pykpk.js.map → index-df-PhUtD.js.map} +1 -1
- package/dist/chunks/{render-shared-Cwb527d4.js → render-shared-DSYQFhTh.js} +3 -3
- package/dist/chunks/render-shared-DSYQFhTh.js.map +1 -0
- package/dist/classes.d.ts +51 -0
- package/dist/classes.js +27 -0
- package/dist/classes.js.map +1 -0
- package/dist/classes.json +1 -0
- package/dist/components/ui/signature-pad.d.ts +2 -2
- package/dist/constants.js +7 -2
- package/dist/constants.js.map +1 -1
- package/dist/core.js +3 -3
- package/dist/css.d.ts +42 -0
- package/dist/css.js +7483 -0
- package/dist/css.js.map +1 -0
- package/dist/index.js +120 -110
- package/dist/index.js.map +1 -1
- package/dist/lib/ast/class-names.d.ts +28 -0
- package/dist/library/constants/src/components.d.ts +1 -0
- package/dist/presets/signature.js +2 -2
- package/dist/presets/signature.js.map +1 -1
- package/dist/schemas.js +1 -1
- package/dist/styles/presets.json +2 -1
- package/package.json +13 -1
- package/dist/chunks/create-renderer-C4nV9RV6.js.map +0 -1
- package/dist/chunks/render-shared-Cwb527d4.js.map +0 -1
package/README.md
CHANGED
|
@@ -141,6 +141,9 @@ export function Example() {
|
|
|
141
141
|
| `@pebble-software/bonsai/constants` | Component type names (`COMPONENT`, `COMPONENT_LIST`) and webhook event names. |
|
|
142
142
|
| `@pebble-software/bonsai/ast` | The expression engine (`compileExpression`, `isExpression`, `parseExpression`, `extractVariables`, `clearExpressionCache`). |
|
|
143
143
|
| `@pebble-software/bonsai/styles/*` | The raw layer stylesheets (`css/*.css`, `vendor/*.css`) and `presets.json`, for compiling template CSS yourself, e.g. `styles/css/theme.css?raw` in Vite. |
|
|
144
|
+
| `@pebble-software/bonsai/classes.json` | The class manifest: every Tailwind candidate each component type can emit, for compiling a per-template stylesheet without rendering (see [Compiling CSS per template](#compiling-css-per-template)). |
|
|
145
|
+
| `@pebble-software/bonsai/classes` | `classesFor(manifest, templates)` and the `ClassManifest` / `TemplateClasses` / `Template` types. |
|
|
146
|
+
| `@pebble-software/bonsai/css` | `compileTemplateCss(templates, { preset })`, `TEMPLATE_CSS_HASH`, and the `CssPreset` / `TemplateCss` / `TemplateCssOptions` / `Template` types: a template's minimal stylesheet, compiled from its JSON with the manifest, layer sheets and Tailwind compiler bundled in (see [Compiling CSS per template](#compiling-css-per-template)). |
|
|
144
147
|
|
|
145
148
|
Named exports of `@pebble-software/bonsai` and `@pebble-software/bonsai/core`:
|
|
146
149
|
|
|
@@ -269,7 +272,7 @@ The template format is defined by the Zod schema in [`library/schemas/src/bonsai
|
|
|
269
272
|
|
|
270
273
|
### Validating templates
|
|
271
274
|
|
|
272
|
-
Validation is a separate, explicit step. The root entry exports `validateTemplate(template, registry, options?)`, which checks a template against a registry — unknown types, each component's `args` against its `propsSchema`, whether it accepts children,
|
|
275
|
+
Validation is a separate, explicit step. The root entry exports `validateTemplate(template, registry, options?)`, which checks a template against a registry — unknown types, each component's `args` against its `propsSchema`, whether it accepts children, whether it supports the target `mode` (`"web"` or `"pdf"`), and whether every class a class prop's expression (`className`, `containerClassName`, ...) can produce is written whole in a string literal (see [Compiling CSS per template](#compiling-css-per-template)):
|
|
273
276
|
|
|
274
277
|
```ts
|
|
275
278
|
import { validateTemplate, pebbleRegistry } from "@pebble-software/bonsai";
|
|
@@ -304,7 +307,7 @@ Complete example templates live in the repo's [`examples/`](https://github.com/P
|
|
|
304
307
|
- To mix text and values, put each part in its own child (`["{{a}}", " of ", "{{b}}"]`), or build the string in one expression (`"{{ concat(a, ' of ', b) }}"`).
|
|
305
308
|
- Paths support dot notation (`user.email`) and array indexing (`addresses[0].street`).
|
|
306
309
|
- Missing keys resolve to `undefined`; use the `default(value, fallback)` helper for a fallback inline, or handle defaults in host data.
|
|
307
|
-
- Any `args` prop or string child can contain a binding.
|
|
310
|
+
- Any `args` prop or string child can contain a binding. A class prop's binding (`className`, `containerClassName`, ...) must resolve to classes written whole in its string literals, so stylesheets can be compiled without rendering — see [Compiling CSS per template](#compiling-css-per-template).
|
|
308
311
|
- Besides your own `data`, the instance's top-level state fields — `status`, `expiry`, and `submitting` — are readable from bindings (e.g. an `if` on `{{submitting}}`). **These names are reserved:** a top-level `data` key called `status`, `expiry`, or `submitting` is shadowed by the state field and can't be read from a binding. Nest it (`{{order.status}}`) instead.
|
|
309
312
|
- Inside an `each` row, an identifier resolves against the loop alias first (e.g. `applicant.name`), then falls back to the surrounding data for anything the alias doesn't shadow (e.g. `orgName` from outside the loop) — see [Structural nodes](#structural-nodes-each--if).
|
|
310
313
|
- On the client, evaluating a node's bindings is also what subscribes that node to the store — see [Controlled inputs & state](#controlled-inputs--state).
|
|
@@ -490,6 +493,43 @@ Bonsai is styled with **Tailwind CSS v4**. Components emit plain Tailwind utilit
|
|
|
490
493
|
- **Theming**: the theme is token-driven — redefine the CSS variables (e.g. `--color-main`, `--font-heading`) after the stylesheet to restyle every component at once, or target `.bonsai-root` descendants for finer overrides.
|
|
491
494
|
- **Utilities in your templates**: a `className` utility that no built-in component uses (say, `grid-cols-5`) is only generated if your build also scans the templates that use it — add their location with `@source`. Inside the Pebble Bonsai platform, CSS is compiled per template so this never comes up.
|
|
492
495
|
|
|
496
|
+
### Compiling CSS per template
|
|
497
|
+
|
|
498
|
+
To ship each template a minimal stylesheet, compile it from the template JSON instead of rendering the template:
|
|
499
|
+
|
|
500
|
+
```ts
|
|
501
|
+
import { compileTemplateCss, TEMPLATE_CSS_HASH } from "@pebble-software/bonsai/css";
|
|
502
|
+
|
|
503
|
+
const { css, unknownTypes } = await compileTemplateCss([template, header, footer], { preset: "full" });
|
|
504
|
+
if (unknownTypes.length) console.warn(`No classes known for ${unknownTypes.join(", ")}`);
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
The entry bundles everything that decides the output: the class manifest, Bonsai's layer sheets and the Tailwind compiler. Every consumer gets the same CSS for the same templates, in Node, workerd or the browser, with no Tailwind install, no stylesheet imports and no filesystem.
|
|
508
|
+
|
|
509
|
+
- **Every state is covered.** The sheet holds every variant and state of each component type the templates use, whichever `if` branch, status, render mode or data they end up rendered with, plus the classes the templates write themselves in their class props. One stylesheet serves them all.
|
|
510
|
+
- **It overshoots slightly.** A template with one `button` gets the rules for every button size and variant.
|
|
511
|
+
- **Presets pick the layer sheets.** `core` is design tokens and the reset, for plain text and layout. `full` (the default) is every layer an interactive form needs. `pdf` is `full` without `fonts`, for renderers that embed their own `@font-face`.
|
|
512
|
+
- **Unknown types are reported, not guessed.** A type Bonsai has no classes for, such as a component a custom registry adds, lands in `unknownTypes`, and whatever it renders is unstyled.
|
|
513
|
+
- **Cache on `TEMPLATE_CSS_HASH`.** It changes whenever anything besides the templates that shapes the output does (a component's classes, a layer sheet, the Tailwind version), so include it in the key of any stylesheet you store.
|
|
514
|
+
- **Class props must write each class whole.** A class prop is `className` or any arg named `<part>ClassName` (`containerClassName`, `canvasClassName`). `{{ status == 'pending' ? 'bg-accent-cyan p-4' : 'hidden' }}` and `{{ 'p-4 ' + (done ? 'line-through' : '') }}` are fine. `{{ 'bg-' + color }}` and `{{ cls }}` are not, because the class only exists once data arrives. `validateTemplate` reports them.
|
|
515
|
+
|
|
516
|
+
#### With your own Tailwind
|
|
517
|
+
|
|
518
|
+
To compile with your own Tailwind build and stylesheets, take the class list instead. `classesFor` returns the same classes `compileTemplateCss` compiles:
|
|
519
|
+
|
|
520
|
+
```ts
|
|
521
|
+
import { compile } from "tailwindcss";
|
|
522
|
+
import manifest from "@pebble-software/bonsai/classes.json" with { type: "json" };
|
|
523
|
+
import { classesFor } from "@pebble-software/bonsai/classes";
|
|
524
|
+
|
|
525
|
+
const { classes, unknownTypes } = classesFor(manifest, [template, header, footer]);
|
|
526
|
+
const css = (await compile(input, { loadStylesheet })).build(classes);
|
|
527
|
+
```
|
|
528
|
+
|
|
529
|
+
The lists include tokens that aren't utilities; Tailwind ignores candidates it can't parse, so they cost nothing. Build `input` from `@pebble-software/bonsai/styles/*`, and cache on `manifest.hash` plus your Tailwind version: the hash changes whenever any component's classes or any published stylesheet (`index.css`, `styles/*`) does.
|
|
530
|
+
|
|
531
|
+
The manifest is generated on every build from the component sources by Tailwind's own scanner; see `scripts/class-manifest.ts`.
|
|
532
|
+
|
|
493
533
|
## Extending Bonsai
|
|
494
534
|
|
|
495
535
|
### Add or replace components
|
|
@@ -579,8 +619,10 @@ To add a component to Bonsai itself (in this monorepo):
|
|
|
579
619
|
|
|
580
620
|
1. Add it to `COMPONENT` in `library/constants/src/components.ts`.
|
|
581
621
|
2. Add its node and `args` contract to `library/schemas/src/bonsai.schema.ts`, and list it in `PEBBLE_COMPONENT_SCHEMAS` there (that is where `pebbleRegistry` gets its `propsSchema`).
|
|
582
|
-
3. Register the React implementation in `coreComponents` (`apps/bonsai/src/renderer/core-registry.ts`) — or, if it pulls in a heavy dependency, in a new preset under `apps/bonsai/src/renderer/presets/`, with a matching entry in `vite.config.ts` and `package.json#exports`.
|
|
622
|
+
3. Register the React implementation in `coreComponents` (`apps/bonsai/src/renderer/core-registry.ts`) — or, if it pulls in a heavy dependency, in a new preset under `apps/bonsai/src/renderer/presets/`, with a matching entry in `vite.config.ts` and `package.json#exports`. Keep the `[COMPONENT.X]: Component` form, with `Component` imported by name from a module in `src/`: the class manifest build reads these entries to find each type's source.
|
|
583
623
|
4. If it's an input, add its binding to `coreControlledInputs` (or the preset's `controlledInputs`).
|
|
624
|
+
5. Write its classes as whole string literals (in `cva` variants or `cn(...)` arguments), never built with interpolation like `` `bg-${color}` ``. The class manifest is scanned from source, so an interpolated class is missing from every per-template stylesheet; `src/tests/classes.manifest.test.tsx` renders the example templates and fails on any class the manifest doesn't cover.
|
|
625
|
+
6. Name any arg that takes classes `className`, or `<part>ClassName` for one part of the component (`containerClassName`). Validation and `classesFor` find class props by that name alone; `src/tests/registry.validate.test.ts` fails on a schema arg named any other way.
|
|
584
626
|
|
|
585
627
|
## Performance
|
|
586
628
|
|
|
@@ -636,8 +678,8 @@ From `apps/bonsai`:
|
|
|
636
678
|
pnpm lint # Static analysis using ESLint
|
|
637
679
|
pnpm test # Run the test suite (vitest)
|
|
638
680
|
pnpm type-check # TypeScript without emit
|
|
639
|
-
pnpm build # Bundles dist/ (ESM + type declarations) via Vite
|
|
681
|
+
pnpm build # Bundles dist/ (ESM + type declarations) via Vite, copies the raw index.css theme and writes classes.json
|
|
640
682
|
pnpm size-check # Checks each entry against its gzip budget (run after build)
|
|
641
683
|
```
|
|
642
684
|
|
|
643
|
-
`dist/` contains the ESM bundle, TypeScript declarations,
|
|
685
|
+
`dist/` contains the ESM bundle, TypeScript declarations, the uncompiled `index.css` theme consumed by downstream Tailwind builds, and `classes.json`, the class manifest for consumers that compile CSS per template with their own Tailwind. `css.js` (`@pebble-software/bonsai/css`) is the one entry that bundles a dependency: the Tailwind compiler, along with the manifest and the layer sheets it compiles with. The shared `@bonsai/constants` and `@bonsai/schemas` workspaces are aliased to their sources and bundled in, so the published package has no workspace dependencies.
|
package/dist/ast.js
CHANGED
|
@@ -126,7 +126,7 @@ const Se = e.object({
|
|
|
126
126
|
disabled: e.union([e.string(), e.boolean()]).optional()
|
|
127
127
|
}).strict(), rt = r.extend({
|
|
128
128
|
value: e.string().nullable().meta({ description: "Current signature value (base64 or null if empty)" }),
|
|
129
|
-
|
|
129
|
+
canvasClassName: e.string().optional().meta({ description: "Custom CSS class for the signature canvas" }),
|
|
130
130
|
imageType: e.enum(["image/png", "image/jpeg", "image/webp"]).optional().meta({ description: "Image format for the exported signature" })
|
|
131
131
|
}).strict(), st = r.extend({
|
|
132
132
|
selected: e.union([e.string(), e.date(), e.array(e.date())], {
|
|
@@ -624,7 +624,7 @@ const Bt = {
|
|
|
624
624
|
type: { label: "Button type", group: "Content" },
|
|
625
625
|
imageType: { label: "Image format", group: "Advanced" },
|
|
626
626
|
containerClassName: { label: "Container classes", group: "Advanced" },
|
|
627
|
-
|
|
627
|
+
canvasClassName: { label: "Canvas classes", group: "Advanced" },
|
|
628
628
|
minLength: { label: "Min length", group: "Advanced" },
|
|
629
629
|
maxLength: { label: "Max length", group: "Advanced" },
|
|
630
630
|
hideWeekends: { label: "Hide weekends", group: "Advanced" },
|
|
@@ -669,4 +669,4 @@ export {
|
|
|
669
669
|
Ut as g,
|
|
670
670
|
Oe as n
|
|
671
671
|
};
|
|
672
|
-
//# sourceMappingURL=builder.meta-
|
|
672
|
+
//# sourceMappingURL=builder.meta-DKq-ggkn.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.meta-B7Y9M7Ab.js","sources":["../../../../library/schemas/src/bonsai.schema.ts","../../../../library/schemas/src/builder.meta.ts"],"sourcesContent":["import { COMPONENT } from \"@bonsai/constants\";\nimport { z } from \"zod\";\n\n// Declarative click behaviour: data, never code. The path is a value (not a key)\n// so dotted paths never become Mongo field names.\nconst ClickAction = z\n .object({\n set: z\n .string()\n .min(1, { message: \"Action `set` needs a store path\" })\n .refine((path) => !path.startsWith(\"{{\"), {\n message: \"Action `set` takes a plain store path (e.g. `pizzaChoice`), not a {{binding}}\",\n })\n .meta({ description: \"Store path to write, e.g. `pizzaChoice` or `row.selected` inside an `each`\" }),\n to: z\n .unknown()\n .meta({ description: \"Value to write (required; `null` clears): a literal or a `{{...}}` expression, evaluated against the state at click time\" }),\n })\n .strict()\n // Named so the OpenAPI spec emits one `$ref` instead of inlining it per component.\n .meta({ id: \"BonsaiClickAction\" });\n\n// Strict, and every `*Args` below extends it, so an arg no component declares (e.g.\n// `dangerouslySetInnerHTML`) is a validation error instead of being silently dropped.\nconst CoreArgs = z.object({\n id: z.string().optional().meta({ description: \"Unique identifier for the element\" }),\n className: z\n .string()\n .optional()\n .meta({ description: \"CSS classes to apply to the element\" }),\n onClick: z\n .array(ClickAction)\n .optional()\n .meta({ description: \"Store writes applied in order when the element is clicked\" }),\n}).strict();\n\nconst AArgs = CoreArgs.extend({\n href: z\n .string({ error: \"Link destination (href) is required\" })\n .min(1, { message: \"Link destination (href) cannot be empty\" }),\n});\n\nconst HArgs = CoreArgs.extend({\n variant: z\n .enum([\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"], {\n error:\n \"Invalid heading variant. Must be one of: h1, h2, h3, h4, h5, or h6\",\n })\n .optional()\n .meta({ description: \"Heading level variant (h1-h6)\" }),\n as: z\n .enum([\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"], {\n error:\n \"Invalid heading element type. Must be one of: h1, h2, h3, h4, h5, or h6\",\n })\n .optional()\n .meta({ description: \"Render as a different heading element\" }),\n}).optional();\n\nconst PArgs = CoreArgs.extend({\n size: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"], {\n error: \"Invalid paragraph size. Must be one of: xs, sm, md, lg, or xl\",\n })\n .optional()\n .meta({ description: \"Paragraph text size\" }),\n variant: z\n .enum([\"default\", \"muted\"])\n .optional()\n .meta({ description: \"Paragraph style variant\" }),\n as: z\n .enum([\"p\", \"div\", \"span\"])\n .optional()\n .meta({ description: \"Render as a different element\" }),\n}).optional();\n\nconst OLArgs = CoreArgs.optional();\nconst ULArgs = CoreArgs.optional();\nconst LIArgs = CoreArgs.optional();\n\nconst DivArgs = CoreArgs.optional();\n\nconst SpanArgs = CoreArgs.optional();\n\nconst SeparatorArgs = CoreArgs.optional();\n\nconst AlertArgs = CoreArgs.extend({\n variant: z\n .enum([\"default\", \"success\", \"warning\", \"destructive\"], {\n error: \"Invalid alert variant. Must be one of: default, success, warning, or destructive\",\n })\n .optional()\n .meta({ description: \"Alert style variant\" }),\n size: z\n .enum([\"default\", \"sm\", \"lg\"])\n .optional()\n .meta({ description: \"Alert size\" }),\n raised: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Alert shadow elevation\" }),\n}).optional();\n\nconst BadgeArgs = CoreArgs.extend({\n variant: z\n .enum([\"default\", \"secondary\", \"destructive\", \"outline\", \"ghost\"], {\n error: \"Invalid badge variant. Must be one of: default, secondary, destructive, outline, or ghost\",\n })\n .optional()\n .meta({ description: \"Badge style variant\" }),\n size: z\n .enum([\"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Badge size\" }),\n raised: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Badge shadow elevation\" }),\n extrude: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Badge extrude elevation\" }),\n}).optional();\n\nconst ButtonArgs = CoreArgs.extend({\n variant: z\n .enum([\"default\", \"secondary\", \"outline\", \"destructive\", \"warning\", \"ghost\"], {\n error:\n \"Invalid button variant. Must be one of: default, secondary, outline, destructive, warning, or ghost\",\n })\n .optional()\n .meta({ description: \"Button style variant\" }),\n size: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"], {\n error: \"Invalid button size. Must be one of: xs, sm, md, or lg\",\n })\n .optional()\n .meta({ description: \"Button size\" }),\n icon: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Icon-only button size\" }),\n raised: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Button shadow elevation\" }),\n extrude: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Button extrude elevation\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the button is disabled\" }),\n loading: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether to show a loading spinner\" }),\n type: z\n .enum([\"button\", \"submit\"], {\n error: \"Invalid button type. Must be either 'button' or 'submit'\",\n })\n .optional()\n .meta({ description: \"Button type attribute\" }),\n}).optional();\n\nconst CardArgs = CoreArgs.extend({\n size: z\n .enum([\"sm\", \"md\"])\n .optional()\n .meta({ description: \"Card size\" }),\n raised: z\n .enum([\"none\", \"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Card shadow elevation\" }),\n}).optional();\n\nconst CardHeaderArgs = CoreArgs.optional();\nconst CardTitleArgs = CoreArgs.optional();\nconst CardDescriptionArgs = CoreArgs.optional();\nconst CardContentArgs = CoreArgs.optional();\nconst CardFooterArgs = CoreArgs.optional();\nconst CardActionArgs = CoreArgs.optional();\nconst CardIconArgs = CoreArgs.optional();\n\nconst CheckboxArgs = CoreArgs.extend({\n checked: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Checkbox checked state\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the checkbox is disabled\" }),\n required: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the checkbox must be checked\" }),\n size: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Checkbox size\" }),\n}).strict();\n\nconst ImageArgs = CoreArgs.extend({\n src: z.union(\n [\n z.url({ error: \"Image source (src) must be a valid URL\" }),\n z.string().min(1, { message: \"Image source (src) cannot be empty\" }),\n ],\n {\n error: \"Image source (src) is required\",\n },\n ),\n alt: z\n .string()\n .optional()\n .default(\"unknown image url\")\n .meta({ description: \"Alternative text for the image\" }),\n}).strict();\n\nconst OTPArgs = CoreArgs.extend({\n value: z\n .union([z.string(), z.number()], {\n error: \"OTP value is required\",\n })\n .meta({ description: \"Current OTP value\" }),\n placeholder: z\n .string()\n .optional()\n .meta({ description: \"Placeholder text for the OTP input\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the OTP input is disabled\" }),\n containerClassName: z\n .string()\n .optional()\n .meta({ description: \"Custom CSS class for the OTP input container\" }),\n}).strict();\n\nconst InputArgs = CoreArgs.extend({\n type: z\n .enum([\"text\", \"email\", \"password\", \"number\"], {\n error: \"Invalid input type. Must be one of: text, email, password, or number\",\n })\n .optional()\n .meta({ description: \"Input type; a number input stores a number\" }),\n value: z\n .union([z.string(), z.number()], {\n error: \"Input value is required\",\n })\n .meta({ description: \"Current input value\" }),\n placeholder: z\n .string()\n .optional()\n .meta({ description: \"Placeholder text shown when empty\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the input is disabled\" }),\n}).strict();\n\nconst LabelArgs = CoreArgs.extend({\n htmlFor: z\n .string()\n .min(1, {\n message:\n \"Label 'for' attribute is required and must reference an input ID\",\n })\n .meta({ description: \"ID of the associated input element\" }),\n size: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Label text size\" }),\n variant: z\n .enum([\"default\", \"underline\", \"destructive\"])\n .optional()\n .meta({ description: \"Label style variant\" }),\n}).strict();\n\nconst SwitchArgs = CoreArgs.extend({\n checked: z\n .union([z.string(), z.boolean()], {\n error: \"Switch checked state is required\",\n })\n .meta({ description: \"Current switch state\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the switch is disabled\" }),\n required: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the switch must be turned on\" }),\n size: z\n .enum([\"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Switch size\" }),\n rounded: z\n .enum([\"none\", \"sm\", \"md\", \"lg\", \"full\"])\n .optional()\n .meta({ description: \"Switch border radius\" }),\n}).strict();\n\nconst TextareaArgs = CoreArgs.extend({\n value: z\n .string({ error: \"Textarea value is required\" })\n .meta({ description: \"Current textarea content\" }),\n placeholder: z\n .string()\n .optional()\n .meta({ description: \"Placeholder text shown when empty\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the textarea is disabled\" }),\n autosize: z\n .boolean()\n .optional()\n .meta({ description: \"Whether the textarea auto-resizes to fit content\" }),\n rows: z\n .number()\n .min(1, { message: \"Minimum number of rows is 1\" })\n .max(100, { message: \"Maximum number of rows is 100\" })\n .optional()\n .meta({ description: \"Number of visible text lines\" }),\n minLength: z\n .number()\n .min(0, { message: \"Minimum character length cannot be negative\" })\n .optional()\n .meta({ description: \"Minimum number of characters allowed\" }),\n maxLength: z\n .number()\n .max(10000, { message: \"Maximum character length cannot exceed 10,000\" })\n .optional()\n .meta({ description: \"Maximum number of characters allowed\" }),\n}).strict();\n\nconst InputGroupArgs = CoreArgs.optional();\n\nconst InputGroupTextArgs = CoreArgs.optional();\n\nconst InputGroupAddonArgs = CoreArgs.extend({\n align: z.enum([\"inline-start\", \"inline-end\", \"block-start\", \"block-end\"])\n .optional()\n .meta({ description: \"Alignment of the addon within the input group\" }),\n}).optional();\n\nconst InputGroupInputArgs = CoreArgs.extend({\n value: z.union([z.string(), z.number()], {\n error: \"Input value is required\",\n }).meta({ description: \"Current input value\" }),\n placeholder: z.string().optional().meta({ description: \"Placeholder text shown when empty\" }),\n disabled: z.union([z.string(), z.boolean()]).optional().meta({ description: \"Whether the input is disabled\" }),\n}).strict();\n\nconst InputGroupButtonArgs = CoreArgs.extend({\n variant: z.enum([\"default\", \"secondary\", \"outline\", \"destructive\", \"warning\", \"ghost\"]).optional(),\n size: z.enum([\"xs\", \"sm\", \"md\", \"lg\"]).optional(),\n}).optional();\n\nconst InputGroupTextareaArgs = CoreArgs.extend({\n value: z.string({ error: \"Textarea value is required\" }).meta({ description: \"Current textarea content\" }),\n placeholder: z.string().optional(),\n disabled: z.union([z.string(), z.boolean()]).optional(),\n}).strict();\n\nconst SignatureArgs = CoreArgs.extend({\n value: z\n .string()\n .nullable()\n .meta({ description: \"Current signature value (base64 or null if empty)\" }),\n canvasClassname: z\n .string()\n .optional()\n .meta({ description: \"Custom CSS class for the signature canvas\" }),\n imageType: z\n .enum([\"image/png\", \"image/jpeg\", \"image/webp\"])\n .optional()\n .meta({ description: \"Image format for the exported signature\" }),\n}).strict();\n\nconst CalendarArgs = CoreArgs.extend({\n selected: z\n .union([z.string(), z.date(), z.array(z.date())], {\n error:\n \"Invalid calendar selection. Must be a date string, Date object, or array of dates\",\n })\n .optional()\n .meta({ description: \"Currently selected date(s)\" }),\n buttonVariant: z\n .enum([\"default\", \"secondary\", \"outline\", \"destructive\", \"warning\", \"ghost\"])\n .optional()\n .meta({ description: \"Variant for calendar navigation buttons\" }),\n hideWeekends: z\n .boolean()\n .optional()\n .meta({ description: \"Whether to hide Saturday and Sunday columns\" }),\n}).optional();\n\nconst TableArgs = CoreArgs.optional();\nconst TableHeaderArgs = CoreArgs.optional();\nconst TableBodyArgs = CoreArgs.optional();\nconst TableFooterArgs = CoreArgs.optional();\nconst TableHeadArgs = CoreArgs.optional();\nconst TableRowArgs = CoreArgs.optional();\nconst TableCellArgs = CoreArgs.optional();\nconst TableCaptionArgs = CoreArgs.optional();\n\nconst AccordionArgs = CoreArgs.extend({\n variant: z\n .enum([\"default\", \"contained\", \"separated\"])\n .optional()\n .meta({ description: \"Accordion style variant\" }),\n raised: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Accordion shadow elevation\" }),\n extrude: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Accordion extrude elevation\" }),\n}).optional();\n\nconst AccordionItemArgs = CoreArgs.optional();\n\nconst AccordionTriggerArgs = CoreArgs.extend({\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the accordion trigger is disabled\" }),\n icon: z\n .any()\n .optional()\n .meta({ description: \"Custom icon component for the trigger\" }),\n}).optional();\n\nconst AccordionContentArgs = CoreArgs.optional();\n\nconst AvatarArgs = CoreArgs.extend({\n src: z\n .string()\n .optional()\n .meta({ description: \"Image source URL\" }),\n alt: z\n .string()\n .optional()\n .meta({ description: \"Alternative text for the avatar image\" }),\n size: z\n .enum([\"full\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Avatar size\" }),\n rounded: z\n .enum([\"none\", \"sm\", \"md\", \"lg\", \"full\"])\n .optional()\n .meta({ description: \"Avatar border radius\" }),\n raised: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Avatar shadow elevation\" }),\n fallback: z\n .string()\n .optional()\n .meta({ description: \"Fallback text or element when image fails to load\" }),\n badge: z\n .any()\n .optional()\n .meta({ description: \"Badge element to overlay on the avatar\" }),\n}).optional();\n\nconst CollapsibleArgs = CoreArgs.optional();\nconst CollapsibleTriggerArgs = CoreArgs.optional();\nconst CollapsibleContentArgs = CoreArgs.optional();\n\nconst LoaderArgs = CoreArgs.extend({\n variant: z\n .enum([\"spinner\", \"ping\"])\n .optional()\n .meta({ description: \"Loader animation variant\" }),\n fill: z\n .enum([\"default\", \"destructive\", \"warning\", \"pending\"])\n .optional()\n .meta({ description: \"Loader fill color\" }),\n size: z\n .enum([\"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Loader size\" }),\n icon: z\n .any()\n .optional()\n .meta({ description: \"Custom spinner icon component\" }),\n pingIcon: z\n .any()\n .optional()\n .meta({ description: \"Custom ping icon component\" }),\n iconProps: z\n .any()\n .optional()\n .meta({ description: \"Props to pass to the icon components\" }),\n}).optional();\n\nconst ProgressArgs = CoreArgs.extend({\n mode: z\n .enum([\"single\", \"multiple\"])\n .optional()\n .meta({ description: \"Progress display mode\" }),\n value: z\n .union([\n z.number().nullable(),\n z.array(\n z.object({\n name: z.string().optional(),\n value: z.number(),\n }),\n ),\n ])\n .optional()\n .meta({ description: \"Current progress value(s)\" }),\n size: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Progress size\" }),\n raised: z\n .enum([\"default\", \"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Progress shadow elevation\" }),\n stacked: z\n .enum([\"default\", \"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Progress stacked spacing\" }),\n}).optional();\n\nconst SkeletonArgs = CoreArgs.extend({\n variant: z\n .enum([\"circle\", \"square\", \"default\", \"text\"])\n .optional()\n .meta({ description: \"Skeleton shape variant\" }),\n animate: z\n .boolean()\n .optional()\n .meta({ description: \"Whether to animate the skeleton\" }),\n}).optional();\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- recursive, registry-driven node schemas have no static type\nconst Node: z.ZodType<any> = z.lazy(() => z.union([z.string(), ComponentNode]));\n\nconst CoreNode = z.object({\n children: z\n .array(Node)\n .optional()\n .meta({ description: \"Child nodes to render inside this element\" }),\n});\n\nconst DivNode = CoreNode.extend({\n type: z.literal(COMPONENT.DIV),\n args: DivArgs,\n}).meta({ description: \"Container div element for grouping content\" });\n\nconst ANode = CoreNode.extend({\n type: z.literal(COMPONENT.A),\n args: AArgs,\n}).meta({ description: \"Anchor/link element\" });\n\nconst HNode = CoreNode.extend({\n type: z.literal(COMPONENT.H),\n args: HArgs,\n}).meta({ description: \"Heading element (h1-h6)\" });\n\nconst PNode = CoreNode.extend({\n type: z.literal(COMPONENT.P),\n args: PArgs,\n}).meta({ description: \"Paragraph text element\" });\n\nconst OLNode = CoreNode.extend({\n type: z.literal(COMPONENT.OL),\n args: OLArgs,\n}).meta({ description: \"Ordered list element\" });\n\nconst ULNode = CoreNode.extend({\n type: z.literal(COMPONENT.UL),\n args: ULArgs,\n}).meta({ description: \"Unordered list element\" });\n\nconst LINode = CoreNode.extend({\n type: z.literal(COMPONENT.LI),\n args: LIArgs,\n}).meta({ description: \"List item element\" });\n\nconst SpanNode = CoreNode.extend({\n type: z.literal(COMPONENT.SPAN),\n args: SpanArgs,\n}).meta({ description: \"Inline span element\" });\n\nconst SeparatorNode = CoreNode.extend({\n type: z.literal(COMPONENT.SEPARATOR),\n args: SeparatorArgs,\n}).meta({ description: \"Horizontal separator / divider element\" });\n\nconst AlertNode = CoreNode.extend({\n type: z.literal(COMPONENT.ALERT),\n args: AlertArgs,\n}).meta({ description: \"Alert message box\" });\n\nconst BadgeNode = CoreNode.extend({\n type: z.literal(COMPONENT.BADGE),\n args: BadgeArgs,\n}).meta({ description: \"Badge/status indicator\" });\n\nconst ButtonNode = CoreNode.extend({\n type: z.literal(COMPONENT.BUTTON),\n args: ButtonArgs,\n}).meta({ description: \"Clickable button element\" });\n\nconst CardNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD),\n args: CardArgs,\n}).meta({ description: \"Card container element\" });\n\nconst CheckboxNode = CoreNode.extend({\n type: z.literal(COMPONENT.CHECKBOX),\n args: CheckboxArgs,\n}).meta({ description: \"Checkbox input element\" });\n\nconst ImageNode = CoreNode.extend({\n type: z.literal(COMPONENT.IMAGE),\n args: ImageArgs,\n}).meta({ description: \"Image element\" });\n\nconst OTPNode = CoreNode.extend({\n type: z.literal(COMPONENT.OTP),\n args: OTPArgs,\n}).meta({ description: \"One-time password (OTP) input\" });\n\nconst InputNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT),\n args: InputArgs,\n}).meta({ description: \"Text input element\" });\n\nconst LabelNode = CoreNode.extend({\n type: z.literal(COMPONENT.LABEL),\n args: LabelArgs,\n}).meta({ description: \"Form label element\" });\n\nconst SwitchNode = CoreNode.extend({\n type: z.literal(COMPONENT.SWITCH),\n args: SwitchArgs,\n}).meta({ description: \"Toggle switch element\" });\n\nconst TextareaNode = CoreNode.extend({\n type: z.literal(COMPONENT.TEXTAREA),\n args: TextareaArgs,\n}).meta({ description: \"Multi-line text input\" });\n\nconst SignatureNode = CoreNode.extend({\n type: z.literal(COMPONENT.SIGNATURE),\n args: SignatureArgs,\n}).meta({ description: \"Signature pad input\" });\n\nconst CalendarNode = CoreNode.extend({\n type: z.literal(COMPONENT.CALENDAR),\n args: CalendarArgs,\n}).meta({ description: \"Date picker calendar\" });\n\nconst CardHeaderNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_HEADER),\n args: CardHeaderArgs,\n}).meta({ description: \"Card header container\" });\n\nconst CardTitleNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_TITLE),\n args: CardTitleArgs,\n}).meta({ description: \"Card title element\" });\n\nconst CardDescriptionNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_DESCRIPTION),\n args: CardDescriptionArgs,\n}).meta({ description: \"Card description element\" });\n\nconst CardContentNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_CONTENT),\n args: CardContentArgs,\n}).meta({ description: \"Card content body\" });\n\nconst CardFooterNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_FOOTER),\n args: CardFooterArgs,\n}).meta({ description: \"Card footer container\" });\n\nconst CardActionNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_ACTION),\n args: CardActionArgs,\n}).meta({ description: \"Card action slot\" });\n\nconst CardIconNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_ICON),\n args: CardIconArgs,\n}).meta({ description: \"Card icon slot\" });\n\nconst TableNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE),\n args: TableArgs,\n}).meta({ description: \"Table container\" });\n\nconst TableHeaderNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_HEADER),\n args: TableHeaderArgs,\n}).meta({ description: \"Table header section\" });\n\nconst TableBodyNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_BODY),\n args: TableBodyArgs,\n}).meta({ description: \"Table body section\" });\n\nconst TableFooterNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_FOOTER),\n args: TableFooterArgs,\n}).meta({ description: \"Table footer section\" });\n\nconst TableHeadNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_HEAD),\n args: TableHeadArgs,\n}).meta({ description: \"Table header cell\" });\n\nconst TableRowNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_ROW),\n args: TableRowArgs,\n}).meta({ description: \"Table row\" });\n\nconst TableCellNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_CELL),\n args: TableCellArgs,\n}).meta({ description: \"Table data cell\" });\n\nconst TableCaptionNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_CAPTION),\n args: TableCaptionArgs,\n}).meta({ description: \"Table caption\" });\n\nconst AccordionNode = CoreNode.extend({\n type: z.literal(COMPONENT.ACCORDION),\n args: AccordionArgs,\n}).meta({ description: \"Accordion container\" });\n\nconst AccordionItemNode = CoreNode.extend({\n type: z.literal(COMPONENT.ACCORDION_ITEM),\n args: AccordionItemArgs,\n}).meta({ description: \"Accordion item\" });\n\nconst AccordionTriggerNode = CoreNode.extend({\n type: z.literal(COMPONENT.ACCORDION_TRIGGER),\n args: AccordionTriggerArgs,\n}).meta({ description: \"Accordion trigger\" });\n\nconst AccordionContentNode = CoreNode.extend({\n type: z.literal(COMPONENT.ACCORDION_CONTENT),\n args: AccordionContentArgs,\n}).meta({ description: \"Accordion content panel\" });\n\nconst AvatarNode = CoreNode.extend({\n type: z.literal(COMPONENT.AVATAR),\n args: AvatarArgs,\n}).meta({ description: \"Avatar image or fallback\" });\n\nconst CollapsibleNode = CoreNode.extend({\n type: z.literal(COMPONENT.COLLAPSIBLE),\n args: CollapsibleArgs,\n}).meta({ description: \"Collapsible container\" });\n\nconst CollapsibleTriggerNode = CoreNode.extend({\n type: z.literal(COMPONENT.COLLAPSIBLE_TRIGGER),\n args: CollapsibleTriggerArgs,\n}).meta({ description: \"Collapsible trigger\" });\n\nconst CollapsibleContentNode = CoreNode.extend({\n type: z.literal(COMPONENT.COLLAPSIBLE_CONTENT),\n args: CollapsibleContentArgs,\n}).meta({ description: \"Collapsible content panel\" });\n\nconst LoaderNode = CoreNode.extend({\n type: z.literal(COMPONENT.LOADER),\n args: LoaderArgs,\n}).meta({ description: \"Loading spinner indicator\" });\n\nconst ProgressNode = CoreNode.extend({\n type: z.literal(COMPONENT.PROGRESS),\n args: ProgressArgs,\n}).meta({ description: \"Progress bar indicator\" });\n\nconst SkeletonNode = CoreNode.extend({\n type: z.literal(COMPONENT.SKELETON),\n args: SkeletonArgs,\n}).meta({ description: \"Skeleton loading placeholder\" });\n\nconst InputGroupNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP),\n args: InputGroupArgs,\n}).meta({ description: \"Input group container\" });\n\nconst InputGroupTextNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP_TEXT),\n args: InputGroupTextArgs,\n}).meta({ description: \"Text element within input group\" });\n\nconst InputGroupAddonNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP_ADDON),\n args: InputGroupAddonArgs,\n}).meta({ description: \"Addon container within input group\" });\n\nconst InputGroupInputNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP_INPUT),\n args: InputGroupInputArgs,\n}).meta({ description: \"Input element within input group\" });\n\nconst InputGroupButtonNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP_BUTTON),\n args: InputGroupButtonArgs,\n}).meta({ description: \"Button element within input group\" });\n\nconst InputGroupTextareaNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP_TEXTAREA),\n args: InputGroupTextareaArgs,\n}).meta({ description: \"Textarea element within input group\" });\n\nconst EachArgs = z\n .object({\n items: z\n .string({ error: \"each.items is required\" })\n .min(1, { message: \"each.items cannot be empty\" })\n .meta({\n description:\n 'Binding path to the array to iterate, e.g. \"{{applicants}}\". Must be a plain path (not a computed/filtered expression) so each row maps back to a real store index for two-way binding.',\n }),\n as: z\n .string({ error: \"each.as is required\" })\n .min(1, { message: \"each.as cannot be empty\" })\n .meta({ description: \"Alias name bound to the current item, e.g. \\\"applicant\\\"\" }),\n index: z\n .string()\n .optional()\n .meta({ description: \"Alias name bound to the current numeric index\" }),\n key: z\n .string()\n .optional()\n .meta({\n description:\n 'Binding expression used as the React key per row, e.g. \"{{applicant.id}}\". Falls back to the row index when omitted.',\n }),\n })\n .strict();\n\nconst EachNode = CoreNode.extend({\n type: z.literal(COMPONENT.EACH),\n args: EachArgs,\n}).meta({ description: \"Repeats its children once per item in a bound array\" });\n\nconst IfArgs = z\n .object({\n condition: z\n .string({ error: \"if.condition is required\" })\n .min(1, { message: \"if.condition cannot be empty\" })\n .meta({ description: \"Binding expression; children render only when it evaluates truthy\" }),\n })\n .strict();\n\nconst IfNode = CoreNode.extend({\n type: z.literal(COMPONENT.IF),\n args: IfArgs,\n}).meta({ description: \"Conditionally renders its children based on a bound expression\" });\n\n/* eslint-disable @typescript-eslint/no-explicit-any -- recursive, registry-driven node schemas have no static type */\n\n// Extracts the `args` sub-schema and description back out of an already-built `*Node`\n// schema, so the registry-driven builder below can reuse every hand-written node\n// definition above without retyping its args schema or description.\nfunction argsOf(node: z.ZodType<any>): z.ZodType<any> {\n return (node as unknown as { shape: { args: z.ZodType<any> } }).shape.args;\n}\n\nfunction descriptionOf(node: z.ZodType<any>): string | undefined {\n return (node.meta() as { description?: string } | undefined)?.description;\n}\n\nexport interface TemplateSchemaComponent {\n argsSchema: z.ZodType<any>;\n description?: string;\n}\n\nexport interface GeneratedTemplateSchema {\n Node: z.ZodType<any>;\n ComponentNode: z.ZodDiscriminatedUnion<any>;\n}\n\n/**\n * Builds the same `CoreNode.extend({ type, args }).meta({ description })` shape used\n * above, from a registry's component list rather than a hand-written literal — the\n * union stops being static; it does not stop existing.\n */\nexport function createTemplateSchema(\n components: Record<string, TemplateSchemaComponent>,\n): GeneratedTemplateSchema {\n if (Object.keys(components).length === 0) {\n throw new Error(\"createTemplateSchema: registry must declare at least one component\");\n }\n\n // Self-contained recursion (its own Node/CoreNode), not the module-level ones above —\n // those exist only so PEBBLE_COMPONENT_SCHEMAS can source args/descriptions from the\n // hand-written *Node consts. Reusing the module Node here would make `Config` a second,\n // structurally-identical-but-distinct lazy wrapper, which breaks zod-openapi's schema\n // dedup/naming (it stops emitting a named `BonsaiConfig` $ref and inlines it instead).\n const localNode: z.ZodType<any> = z.lazy(() => z.union([z.string(), componentNode]));\n const localCoreNode = z.object({\n children: z\n .array(localNode)\n .optional()\n .meta({ description: \"Child nodes to render inside this element\" }),\n });\n\n const nodeSchemas = Object.entries(components).map(([type, { argsSchema, description }]) => {\n const node = localCoreNode.extend({\n type: z.literal(type),\n args: argsSchema,\n });\n return description ? node.meta({ description }) : node;\n });\n const componentNode: z.ZodDiscriminatedUnion<any> = z.discriminatedUnion(\n \"type\",\n nodeSchemas as [(typeof nodeSchemas)[number], ...(typeof nodeSchemas)[number][]],\n );\n return { Node: localNode, ComponentNode: componentNode };\n}\n\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nexport const PEBBLE_COMPONENT_SCHEMAS: Record<string, TemplateSchemaComponent> = {\n [COMPONENT.DIV]: { argsSchema: argsOf(DivNode), description: descriptionOf(DivNode) },\n [COMPONENT.A]: { argsSchema: argsOf(ANode), description: descriptionOf(ANode) },\n [COMPONENT.H]: { argsSchema: argsOf(HNode), description: descriptionOf(HNode) },\n [COMPONENT.P]: { argsSchema: argsOf(PNode), description: descriptionOf(PNode) },\n [COMPONENT.OL]: { argsSchema: argsOf(OLNode), description: descriptionOf(OLNode) },\n [COMPONENT.UL]: { argsSchema: argsOf(ULNode), description: descriptionOf(ULNode) },\n [COMPONENT.LI]: { argsSchema: argsOf(LINode), description: descriptionOf(LINode) },\n [COMPONENT.SPAN]: { argsSchema: argsOf(SpanNode), description: descriptionOf(SpanNode) },\n [COMPONENT.SEPARATOR]: {\n argsSchema: argsOf(SeparatorNode),\n description: descriptionOf(SeparatorNode),\n },\n [COMPONENT.ALERT]: { argsSchema: argsOf(AlertNode), description: descriptionOf(AlertNode) },\n [COMPONENT.BADGE]: { argsSchema: argsOf(BadgeNode), description: descriptionOf(BadgeNode) },\n [COMPONENT.BUTTON]: { argsSchema: argsOf(ButtonNode), description: descriptionOf(ButtonNode) },\n [COMPONENT.CARD]: { argsSchema: argsOf(CardNode), description: descriptionOf(CardNode) },\n [COMPONENT.CARD_HEADER]: {\n argsSchema: argsOf(CardHeaderNode),\n description: descriptionOf(CardHeaderNode),\n },\n [COMPONENT.CARD_TITLE]: {\n argsSchema: argsOf(CardTitleNode),\n description: descriptionOf(CardTitleNode),\n },\n [COMPONENT.CARD_DESCRIPTION]: {\n argsSchema: argsOf(CardDescriptionNode),\n description: descriptionOf(CardDescriptionNode),\n },\n [COMPONENT.CARD_CONTENT]: {\n argsSchema: argsOf(CardContentNode),\n description: descriptionOf(CardContentNode),\n },\n [COMPONENT.CARD_FOOTER]: {\n argsSchema: argsOf(CardFooterNode),\n description: descriptionOf(CardFooterNode),\n },\n [COMPONENT.CARD_ACTION]: {\n argsSchema: argsOf(CardActionNode),\n description: descriptionOf(CardActionNode),\n },\n [COMPONENT.CARD_ICON]: {\n argsSchema: argsOf(CardIconNode),\n description: descriptionOf(CardIconNode),\n },\n [COMPONENT.CHECKBOX]: {\n argsSchema: argsOf(CheckboxNode),\n description: descriptionOf(CheckboxNode),\n },\n [COMPONENT.IMAGE]: { argsSchema: argsOf(ImageNode), description: descriptionOf(ImageNode) },\n [COMPONENT.OTP]: { argsSchema: argsOf(OTPNode), description: descriptionOf(OTPNode) },\n [COMPONENT.INPUT]: { argsSchema: argsOf(InputNode), description: descriptionOf(InputNode) },\n [COMPONENT.LABEL]: { argsSchema: argsOf(LabelNode), description: descriptionOf(LabelNode) },\n [COMPONENT.SWITCH]: { argsSchema: argsOf(SwitchNode), description: descriptionOf(SwitchNode) },\n [COMPONENT.TEXTAREA]: {\n argsSchema: argsOf(TextareaNode),\n description: descriptionOf(TextareaNode),\n },\n [COMPONENT.SIGNATURE]: {\n argsSchema: argsOf(SignatureNode),\n description: descriptionOf(SignatureNode),\n },\n [COMPONENT.CALENDAR]: {\n argsSchema: argsOf(CalendarNode),\n description: descriptionOf(CalendarNode),\n },\n [COMPONENT.TABLE]: { argsSchema: argsOf(TableNode), description: descriptionOf(TableNode) },\n [COMPONENT.TABLE_HEADER]: {\n argsSchema: argsOf(TableHeaderNode),\n description: descriptionOf(TableHeaderNode),\n },\n [COMPONENT.TABLE_BODY]: {\n argsSchema: argsOf(TableBodyNode),\n description: descriptionOf(TableBodyNode),\n },\n [COMPONENT.TABLE_FOOTER]: {\n argsSchema: argsOf(TableFooterNode),\n description: descriptionOf(TableFooterNode),\n },\n [COMPONENT.TABLE_HEAD]: {\n argsSchema: argsOf(TableHeadNode),\n description: descriptionOf(TableHeadNode),\n },\n [COMPONENT.TABLE_ROW]: {\n argsSchema: argsOf(TableRowNode),\n description: descriptionOf(TableRowNode),\n },\n [COMPONENT.TABLE_CELL]: {\n argsSchema: argsOf(TableCellNode),\n description: descriptionOf(TableCellNode),\n },\n [COMPONENT.TABLE_CAPTION]: {\n argsSchema: argsOf(TableCaptionNode),\n description: descriptionOf(TableCaptionNode),\n },\n [COMPONENT.ACCORDION]: {\n argsSchema: argsOf(AccordionNode),\n description: descriptionOf(AccordionNode),\n },\n [COMPONENT.ACCORDION_ITEM]: {\n argsSchema: argsOf(AccordionItemNode),\n description: descriptionOf(AccordionItemNode),\n },\n [COMPONENT.ACCORDION_TRIGGER]: {\n argsSchema: argsOf(AccordionTriggerNode),\n description: descriptionOf(AccordionTriggerNode),\n },\n [COMPONENT.ACCORDION_CONTENT]: {\n argsSchema: argsOf(AccordionContentNode),\n description: descriptionOf(AccordionContentNode),\n },\n [COMPONENT.AVATAR]: { argsSchema: argsOf(AvatarNode), description: descriptionOf(AvatarNode) },\n [COMPONENT.COLLAPSIBLE]: {\n argsSchema: argsOf(CollapsibleNode),\n description: descriptionOf(CollapsibleNode),\n },\n [COMPONENT.COLLAPSIBLE_TRIGGER]: {\n argsSchema: argsOf(CollapsibleTriggerNode),\n description: descriptionOf(CollapsibleTriggerNode),\n },\n [COMPONENT.COLLAPSIBLE_CONTENT]: {\n argsSchema: argsOf(CollapsibleContentNode),\n description: descriptionOf(CollapsibleContentNode),\n },\n [COMPONENT.LOADER]: { argsSchema: argsOf(LoaderNode), description: descriptionOf(LoaderNode) },\n [COMPONENT.PROGRESS]: {\n argsSchema: argsOf(ProgressNode),\n description: descriptionOf(ProgressNode),\n },\n [COMPONENT.SKELETON]: {\n argsSchema: argsOf(SkeletonNode),\n description: descriptionOf(SkeletonNode),\n },\n [COMPONENT.INPUT_GROUP]: {\n argsSchema: argsOf(InputGroupNode),\n description: descriptionOf(InputGroupNode),\n },\n [COMPONENT.INPUT_GROUP_TEXT]: {\n argsSchema: argsOf(InputGroupTextNode),\n description: descriptionOf(InputGroupTextNode),\n },\n [COMPONENT.INPUT_GROUP_ADDON]: {\n argsSchema: argsOf(InputGroupAddonNode),\n description: descriptionOf(InputGroupAddonNode),\n },\n [COMPONENT.INPUT_GROUP_INPUT]: {\n argsSchema: argsOf(InputGroupInputNode),\n description: descriptionOf(InputGroupInputNode),\n },\n [COMPONENT.INPUT_GROUP_BUTTON]: {\n argsSchema: argsOf(InputGroupButtonNode),\n description: descriptionOf(InputGroupButtonNode),\n },\n [COMPONENT.INPUT_GROUP_TEXTAREA]: {\n argsSchema: argsOf(InputGroupTextareaNode),\n description: descriptionOf(InputGroupTextareaNode),\n },\n [COMPONENT.EACH]: { argsSchema: argsOf(EachNode), description: descriptionOf(EachNode) },\n [COMPONENT.IF]: { argsSchema: argsOf(IfNode), description: descriptionOf(IfNode) },\n};\n\nconst pebbleTemplateSchema = createTemplateSchema(PEBBLE_COMPONENT_SCHEMAS);\n\nexport const ComponentNode = pebbleTemplateSchema.ComponentNode;\nexport const Config = pebbleTemplateSchema.Node;\nexport type Config = z.infer<typeof pebbleTemplateSchema.Node>;\n\n/** Every element (non-string) node schema, keyed by its `type` literal. */\n/* eslint-disable @typescript-eslint/no-explicit-any -- recursive, registry-driven node schemas have no static type */\nexport const NodeSchemas: Record<string, z.ZodObject<any>> = Object.fromEntries(\n (ComponentNode.options as z.ZodObject<any>[]).map((schema) => [schema.shape.type.value, schema]),\n);\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","import { z } from \"zod\";\nimport { COMPONENT } from \"@bonsai/constants\";\n\nimport { NodeSchemas } from \"./bonsai.schema\";\n\n// Editor-facing metadata for the Bonsai node schemas: nesting rules and\n// inspector UI hints. Kept in dedicated registries rather than `.meta()` so it\n// never leaks into `z.toJSONSchema` output (the OpenAPI document and the code\n// editor's JSON schema stay as they are).\n\n/**\n * Which children a node type may hold, and where it may be placed.\n * `each` / `if` are transparent: they are allowed wherever their children are,\n * and a child's `parent` rule is checked against the nearest element above them.\n */\nexport interface NodeRules {\n /** \"any\" (default), \"none\" (void / self-contained), or an allow-list of child types. */\n accepts: \"any\" | \"none\" | string[];\n /** Allow-list of direct parent types; absent means any parent. */\n parent?: string[];\n}\n\nexport type FieldControl =\n | \"text\"\n | \"textarea\"\n | \"select\"\n | \"switch\"\n | \"number\"\n | \"color\"\n | \"binding\"\n | \"json\";\n\nexport type FieldGroup = \"Content\" | \"Data\" | \"Style\" | \"Advanced\";\n\nexport interface FieldHints {\n label?: string;\n control?: FieldControl;\n group?: FieldGroup;\n placeholder?: string;\n}\n\nexport const nodeRules = z.registry<NodeRules>();\nexport const fieldHints = z.registry<FieldHints>();\n\nconst C = COMPONENT;\n\n// Components that render no children of their own (void elements throw when given any).\nconst SELF_CONTAINED = [\n C.INPUT,\n C.INPUT_GROUP_INPUT,\n C.INPUT_GROUP_TEXTAREA,\n C.TEXTAREA,\n C.IMAGE,\n C.SEPARATOR,\n C.CHECKBOX,\n C.SWITCH,\n C.OTP,\n C.SIGNATURE,\n C.CALENDAR,\n C.LOADER,\n C.SKELETON,\n C.PROGRESS,\n C.AVATAR,\n];\n\nconst TABLE_SECTIONS = [C.TABLE_HEADER, C.TABLE_BODY, C.TABLE_FOOTER];\nconst CARD_SLOTS = [C.CARD, C.CARD_HEADER, C.CARD_FOOTER];\nconst INPUT_GROUP_SLOTS = [C.INPUT_GROUP, C.INPUT_GROUP_ADDON];\n\nconst RULES: Partial<Record<string, Partial<NodeRules>>> = {\n [C.ACCORDION]: { accepts: [C.ACCORDION_ITEM] },\n [C.ACCORDION_ITEM]: { accepts: [C.ACCORDION_TRIGGER, C.ACCORDION_CONTENT], parent: [C.ACCORDION] },\n [C.ACCORDION_TRIGGER]: { parent: [C.ACCORDION_ITEM] },\n [C.ACCORDION_CONTENT]: { parent: [C.ACCORDION_ITEM] },\n [C.COLLAPSIBLE_TRIGGER]: { parent: [C.COLLAPSIBLE] },\n [C.COLLAPSIBLE_CONTENT]: { parent: [C.COLLAPSIBLE] },\n [C.TABLE]: { accepts: [...TABLE_SECTIONS, C.TABLE_CAPTION] },\n [C.TABLE_HEADER]: { accepts: [C.TABLE_ROW], parent: [C.TABLE] },\n [C.TABLE_BODY]: { accepts: [C.TABLE_ROW], parent: [C.TABLE] },\n [C.TABLE_FOOTER]: { accepts: [C.TABLE_ROW], parent: [C.TABLE] },\n [C.TABLE_CAPTION]: { parent: [C.TABLE] },\n [C.TABLE_ROW]: { accepts: [C.TABLE_CELL, C.TABLE_HEAD], parent: TABLE_SECTIONS },\n [C.TABLE_CELL]: { parent: [C.TABLE_ROW] },\n [C.TABLE_HEAD]: { parent: [C.TABLE_ROW] },\n [C.CARD_HEADER]: { parent: [C.CARD] },\n [C.CARD_CONTENT]: { parent: [C.CARD] },\n [C.CARD_FOOTER]: { parent: [C.CARD] },\n [C.CARD_TITLE]: { parent: CARD_SLOTS },\n [C.CARD_DESCRIPTION]: { parent: CARD_SLOTS },\n [C.CARD_ACTION]: { parent: CARD_SLOTS },\n [C.CARD_ICON]: { parent: CARD_SLOTS },\n [C.INPUT_GROUP_ADDON]: { parent: [C.INPUT_GROUP] },\n [C.INPUT_GROUP_TEXT]: { parent: INPUT_GROUP_SLOTS },\n [C.INPUT_GROUP_INPUT]: { parent: INPUT_GROUP_SLOTS },\n [C.INPUT_GROUP_BUTTON]: { parent: INPUT_GROUP_SLOTS },\n [C.INPUT_GROUP_TEXTAREA]: { parent: INPUT_GROUP_SLOTS },\n [C.OL]: { accepts: [C.LI] },\n [C.UL]: { accepts: [C.LI] },\n [C.LI]: { parent: [C.OL, C.UL] },\n};\n\nfor (const type of SELF_CONTAINED) RULES[type] = { ...RULES[type], accepts: \"none\" };\n\n// Inspector hints by arg name; `TYPE_FIELD_HINTS` refines a name for one type.\nconst FIELD_HINTS: Record<string, FieldHints> = {\n id: { label: \"Element ID\", group: \"Advanced\" },\n className: { label: \"Classes\", group: \"Advanced\" },\n onClick: { label: \"On click\", control: \"json\", group: \"Data\" },\n href: { label: \"Link URL\", group: \"Content\", placeholder: \"https://\" },\n src: { label: \"Image URL\", group: \"Content\", placeholder: \"https:// or {{binding}}\" },\n alt: { label: \"Alt text\", group: \"Content\" },\n placeholder: { label: \"Placeholder\", group: \"Content\" },\n fallback: { label: \"Fallback text\", group: \"Content\" },\n value: { label: \"Bound value\", control: \"binding\", group: \"Data\" },\n checked: { label: \"Bound value\", control: \"binding\", group: \"Data\" },\n selected: { label: \"Bound value\", control: \"binding\", group: \"Data\" },\n htmlFor: { label: \"For input (ID)\", group: \"Data\" },\n disabled: { label: \"Disabled\", group: \"Data\" },\n required: { label: \"Required\", group: \"Data\" },\n loading: { label: \"Loading\", group: \"Data\" },\n readonly: { label: \"Read only\", group: \"Data\" },\n items: { label: \"Repeat over\", control: \"binding\", group: \"Data\", placeholder: \"{{items}}\" },\n index: { label: \"Index alias\", group: \"Data\" },\n key: { label: \"Row key\", control: \"binding\", group: \"Advanced\" },\n condition: { label: \"Show when\", control: \"binding\", group: \"Data\", placeholder: \"{{flag}}\" },\n variant: { label: \"Variant\", group: \"Style\" },\n size: { label: \"Size\", group: \"Style\" },\n raised: { label: \"Shadow\", group: \"Style\" },\n extrude: { label: \"Extrude\", group: \"Style\" },\n rounded: { label: \"Corners\", group: \"Style\" },\n align: { label: \"Alignment\", group: \"Style\" },\n fill: { label: \"Colour\", group: \"Style\" },\n stacked: { label: \"Stacked spacing\", group: \"Style\" },\n animate: { label: \"Animate\", group: \"Style\" },\n buttonVariant: { label: \"Button variant\", group: \"Style\" },\n mode: { label: \"Mode\", group: \"Style\" },\n rows: { label: \"Rows\", group: \"Style\" },\n autosize: { label: \"Auto-size\", group: \"Style\" },\n type: { label: \"Button type\", group: \"Content\" },\n imageType: { label: \"Image format\", group: \"Advanced\" },\n containerClassName: { label: \"Container classes\", group: \"Advanced\" },\n canvasClassname: { label: \"Canvas classes\", group: \"Advanced\" },\n minLength: { label: \"Min length\", group: \"Advanced\" },\n maxLength: { label: \"Max length\", group: \"Advanced\" },\n hideWeekends: { label: \"Hide weekends\", group: \"Advanced\" },\n pins: { label: \"Pins\", control: \"json\", group: \"Advanced\" },\n zoom: { label: \"Zoom\", group: \"Advanced\" },\n pitch: { label: \"Pitch\", group: \"Advanced\" },\n fixed: { label: \"Fixed viewport\", group: \"Advanced\" },\n allowMultiple: { label: \"Allow multiple pins\", group: \"Advanced\" },\n icon: { label: \"Icon\", group: \"Advanced\" },\n pingIcon: { label: \"Ping icon\", control: \"json\", group: \"Advanced\" },\n iconProps: { label: \"Icon props\", control: \"json\", group: \"Advanced\" },\n badge: { label: \"Badge\", control: \"json\", group: \"Advanced\" },\n};\n\nconst TYPE_FIELD_HINTS: Record<string, Record<string, FieldHints>> = {\n [C.EACH]: { as: { label: \"Item alias\", group: \"Data\" } },\n [C.H]: { as: { label: \"Render as\", group: \"Advanced\" } },\n [C.P]: { as: { label: \"Render as\", group: \"Advanced\" } },\n [C.BUTTON]: { icon: { label: \"Icon-only size\", group: \"Style\" } },\n};\n\n/** The args object schema of a node type, unwrapped from `.optional()`. */\nexport function getArgsSchema(type: string): z.ZodObject | undefined {\n let args: z.ZodType | undefined = NodeSchemas[type]?.shape.args;\n while (args instanceof z.ZodOptional) args = args.unwrap() as z.ZodType;\n return args instanceof z.ZodObject ? args : undefined;\n}\n\nfor (const [type, schema] of Object.entries(NodeSchemas)) {\n nodeRules.add(schema, { accepts: \"any\", ...RULES[type] });\n const shape = getArgsSchema(type)?.shape ?? {};\n for (const [name, field] of Object.entries(shape)) {\n // Shared field instances (CoreArgs) receive identical hints from every type.\n fieldHints.add(field as z.ZodType, { ...FIELD_HINTS[name], ...TYPE_FIELD_HINTS[type]?.[name] });\n }\n}\n\n/** Nesting rules for a node type; unknown types accept anything. */\nexport function getNodeRules(type: string): NodeRules {\n const schema = NodeSchemas[type];\n return (schema && nodeRules.get(schema)) || { accepts: \"any\" };\n}\n"],"names":["ClickAction","z","path","CoreArgs","AArgs","HArgs","PArgs","OLArgs","ULArgs","LIArgs","DivArgs","SpanArgs","SeparatorArgs","AlertArgs","BadgeArgs","ButtonArgs","CardArgs","CardHeaderArgs","CardTitleArgs","CardDescriptionArgs","CardContentArgs","CardFooterArgs","CardActionArgs","CardIconArgs","CheckboxArgs","ImageArgs","OTPArgs","InputArgs","LabelArgs","SwitchArgs","TextareaArgs","InputGroupArgs","InputGroupTextArgs","InputGroupAddonArgs","InputGroupInputArgs","InputGroupButtonArgs","InputGroupTextareaArgs","SignatureArgs","CalendarArgs","TableArgs","TableHeaderArgs","TableBodyArgs","TableFooterArgs","TableHeadArgs","TableRowArgs","TableCellArgs","TableCaptionArgs","AccordionArgs","AccordionItemArgs","AccordionTriggerArgs","AccordionContentArgs","AvatarArgs","CollapsibleArgs","CollapsibleTriggerArgs","CollapsibleContentArgs","LoaderArgs","ProgressArgs","SkeletonArgs","Node","ComponentNode","CoreNode","DivNode","COMPONENT","ANode","HNode","PNode","OLNode","ULNode","LINode","SpanNode","SeparatorNode","AlertNode","BadgeNode","ButtonNode","CardNode","CheckboxNode","ImageNode","OTPNode","InputNode","LabelNode","SwitchNode","TextareaNode","SignatureNode","CalendarNode","CardHeaderNode","CardTitleNode","CardDescriptionNode","CardContentNode","CardFooterNode","CardActionNode","CardIconNode","TableNode","TableHeaderNode","TableBodyNode","TableFooterNode","TableHeadNode","TableRowNode","TableCellNode","TableCaptionNode","AccordionNode","AccordionItemNode","AccordionTriggerNode","AccordionContentNode","AvatarNode","CollapsibleNode","CollapsibleTriggerNode","CollapsibleContentNode","LoaderNode","ProgressNode","SkeletonNode","InputGroupNode","InputGroupTextNode","InputGroupAddonNode","InputGroupInputNode","InputGroupButtonNode","InputGroupTextareaNode","EachArgs","EachNode","IfArgs","IfNode","argsOf","node","descriptionOf","createTemplateSchema","components","localNode","componentNode","localCoreNode","nodeSchemas","type","argsSchema","description","PEBBLE_COMPONENT_SCHEMAS","pebbleTemplateSchema","Config","NodeSchemas","schema","nodeRules","fieldHints","C","SELF_CONTAINED","TABLE_SECTIONS","CARD_SLOTS","INPUT_GROUP_SLOTS","RULES","FIELD_HINTS","TYPE_FIELD_HINTS","getArgsSchema","args","shape","name","field","getNodeRules"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"builder.meta-DKq-ggkn.js","sources":["../../../../library/schemas/src/bonsai.schema.ts","../../../../library/schemas/src/builder.meta.ts"],"sourcesContent":["import { COMPONENT } from \"@bonsai/constants\";\nimport { z } from \"zod\";\n\n// Declarative click behaviour: data, never code. The path is a value (not a key)\n// so dotted paths never become Mongo field names.\nconst ClickAction = z\n .object({\n set: z\n .string()\n .min(1, { message: \"Action `set` needs a store path\" })\n .refine((path) => !path.startsWith(\"{{\"), {\n message: \"Action `set` takes a plain store path (e.g. `pizzaChoice`), not a {{binding}}\",\n })\n .meta({ description: \"Store path to write, e.g. `pizzaChoice` or `row.selected` inside an `each`\" }),\n to: z\n .unknown()\n .meta({ description: \"Value to write (required; `null` clears): a literal or a `{{...}}` expression, evaluated against the state at click time\" }),\n })\n .strict()\n // Named so the OpenAPI spec emits one `$ref` instead of inlining it per component.\n .meta({ id: \"BonsaiClickAction\" });\n\n// Strict, and every `*Args` below extends it, so an arg no component declares (e.g.\n// `dangerouslySetInnerHTML`) is a validation error instead of being silently dropped.\nconst CoreArgs = z.object({\n id: z.string().optional().meta({ description: \"Unique identifier for the element\" }),\n className: z\n .string()\n .optional()\n .meta({ description: \"CSS classes to apply to the element\" }),\n onClick: z\n .array(ClickAction)\n .optional()\n .meta({ description: \"Store writes applied in order when the element is clicked\" }),\n}).strict();\n\nconst AArgs = CoreArgs.extend({\n href: z\n .string({ error: \"Link destination (href) is required\" })\n .min(1, { message: \"Link destination (href) cannot be empty\" }),\n});\n\nconst HArgs = CoreArgs.extend({\n variant: z\n .enum([\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"], {\n error:\n \"Invalid heading variant. Must be one of: h1, h2, h3, h4, h5, or h6\",\n })\n .optional()\n .meta({ description: \"Heading level variant (h1-h6)\" }),\n as: z\n .enum([\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"], {\n error:\n \"Invalid heading element type. Must be one of: h1, h2, h3, h4, h5, or h6\",\n })\n .optional()\n .meta({ description: \"Render as a different heading element\" }),\n}).optional();\n\nconst PArgs = CoreArgs.extend({\n size: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"], {\n error: \"Invalid paragraph size. Must be one of: xs, sm, md, lg, or xl\",\n })\n .optional()\n .meta({ description: \"Paragraph text size\" }),\n variant: z\n .enum([\"default\", \"muted\"])\n .optional()\n .meta({ description: \"Paragraph style variant\" }),\n as: z\n .enum([\"p\", \"div\", \"span\"])\n .optional()\n .meta({ description: \"Render as a different element\" }),\n}).optional();\n\nconst OLArgs = CoreArgs.optional();\nconst ULArgs = CoreArgs.optional();\nconst LIArgs = CoreArgs.optional();\n\nconst DivArgs = CoreArgs.optional();\n\nconst SpanArgs = CoreArgs.optional();\n\nconst SeparatorArgs = CoreArgs.optional();\n\nconst AlertArgs = CoreArgs.extend({\n variant: z\n .enum([\"default\", \"success\", \"warning\", \"destructive\"], {\n error: \"Invalid alert variant. Must be one of: default, success, warning, or destructive\",\n })\n .optional()\n .meta({ description: \"Alert style variant\" }),\n size: z\n .enum([\"default\", \"sm\", \"lg\"])\n .optional()\n .meta({ description: \"Alert size\" }),\n raised: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Alert shadow elevation\" }),\n}).optional();\n\nconst BadgeArgs = CoreArgs.extend({\n variant: z\n .enum([\"default\", \"secondary\", \"destructive\", \"outline\", \"ghost\"], {\n error: \"Invalid badge variant. Must be one of: default, secondary, destructive, outline, or ghost\",\n })\n .optional()\n .meta({ description: \"Badge style variant\" }),\n size: z\n .enum([\"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Badge size\" }),\n raised: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Badge shadow elevation\" }),\n extrude: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Badge extrude elevation\" }),\n}).optional();\n\nconst ButtonArgs = CoreArgs.extend({\n variant: z\n .enum([\"default\", \"secondary\", \"outline\", \"destructive\", \"warning\", \"ghost\"], {\n error:\n \"Invalid button variant. Must be one of: default, secondary, outline, destructive, warning, or ghost\",\n })\n .optional()\n .meta({ description: \"Button style variant\" }),\n size: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"], {\n error: \"Invalid button size. Must be one of: xs, sm, md, or lg\",\n })\n .optional()\n .meta({ description: \"Button size\" }),\n icon: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Icon-only button size\" }),\n raised: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Button shadow elevation\" }),\n extrude: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Button extrude elevation\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the button is disabled\" }),\n loading: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether to show a loading spinner\" }),\n type: z\n .enum([\"button\", \"submit\"], {\n error: \"Invalid button type. Must be either 'button' or 'submit'\",\n })\n .optional()\n .meta({ description: \"Button type attribute\" }),\n}).optional();\n\nconst CardArgs = CoreArgs.extend({\n size: z\n .enum([\"sm\", \"md\"])\n .optional()\n .meta({ description: \"Card size\" }),\n raised: z\n .enum([\"none\", \"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Card shadow elevation\" }),\n}).optional();\n\nconst CardHeaderArgs = CoreArgs.optional();\nconst CardTitleArgs = CoreArgs.optional();\nconst CardDescriptionArgs = CoreArgs.optional();\nconst CardContentArgs = CoreArgs.optional();\nconst CardFooterArgs = CoreArgs.optional();\nconst CardActionArgs = CoreArgs.optional();\nconst CardIconArgs = CoreArgs.optional();\n\nconst CheckboxArgs = CoreArgs.extend({\n checked: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Checkbox checked state\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the checkbox is disabled\" }),\n required: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the checkbox must be checked\" }),\n size: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Checkbox size\" }),\n}).strict();\n\nconst ImageArgs = CoreArgs.extend({\n src: z.union(\n [\n z.url({ error: \"Image source (src) must be a valid URL\" }),\n z.string().min(1, { message: \"Image source (src) cannot be empty\" }),\n ],\n {\n error: \"Image source (src) is required\",\n },\n ),\n alt: z\n .string()\n .optional()\n .default(\"unknown image url\")\n .meta({ description: \"Alternative text for the image\" }),\n}).strict();\n\nconst OTPArgs = CoreArgs.extend({\n value: z\n .union([z.string(), z.number()], {\n error: \"OTP value is required\",\n })\n .meta({ description: \"Current OTP value\" }),\n placeholder: z\n .string()\n .optional()\n .meta({ description: \"Placeholder text for the OTP input\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the OTP input is disabled\" }),\n containerClassName: z\n .string()\n .optional()\n .meta({ description: \"Custom CSS class for the OTP input container\" }),\n}).strict();\n\nconst InputArgs = CoreArgs.extend({\n type: z\n .enum([\"text\", \"email\", \"password\", \"number\"], {\n error: \"Invalid input type. Must be one of: text, email, password, or number\",\n })\n .optional()\n .meta({ description: \"Input type; a number input stores a number\" }),\n value: z\n .union([z.string(), z.number()], {\n error: \"Input value is required\",\n })\n .meta({ description: \"Current input value\" }),\n placeholder: z\n .string()\n .optional()\n .meta({ description: \"Placeholder text shown when empty\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the input is disabled\" }),\n}).strict();\n\nconst LabelArgs = CoreArgs.extend({\n htmlFor: z\n .string()\n .min(1, {\n message:\n \"Label 'for' attribute is required and must reference an input ID\",\n })\n .meta({ description: \"ID of the associated input element\" }),\n size: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Label text size\" }),\n variant: z\n .enum([\"default\", \"underline\", \"destructive\"])\n .optional()\n .meta({ description: \"Label style variant\" }),\n}).strict();\n\nconst SwitchArgs = CoreArgs.extend({\n checked: z\n .union([z.string(), z.boolean()], {\n error: \"Switch checked state is required\",\n })\n .meta({ description: \"Current switch state\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the switch is disabled\" }),\n required: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the switch must be turned on\" }),\n size: z\n .enum([\"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Switch size\" }),\n rounded: z\n .enum([\"none\", \"sm\", \"md\", \"lg\", \"full\"])\n .optional()\n .meta({ description: \"Switch border radius\" }),\n}).strict();\n\nconst TextareaArgs = CoreArgs.extend({\n value: z\n .string({ error: \"Textarea value is required\" })\n .meta({ description: \"Current textarea content\" }),\n placeholder: z\n .string()\n .optional()\n .meta({ description: \"Placeholder text shown when empty\" }),\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the textarea is disabled\" }),\n autosize: z\n .boolean()\n .optional()\n .meta({ description: \"Whether the textarea auto-resizes to fit content\" }),\n rows: z\n .number()\n .min(1, { message: \"Minimum number of rows is 1\" })\n .max(100, { message: \"Maximum number of rows is 100\" })\n .optional()\n .meta({ description: \"Number of visible text lines\" }),\n minLength: z\n .number()\n .min(0, { message: \"Minimum character length cannot be negative\" })\n .optional()\n .meta({ description: \"Minimum number of characters allowed\" }),\n maxLength: z\n .number()\n .max(10000, { message: \"Maximum character length cannot exceed 10,000\" })\n .optional()\n .meta({ description: \"Maximum number of characters allowed\" }),\n}).strict();\n\nconst InputGroupArgs = CoreArgs.optional();\n\nconst InputGroupTextArgs = CoreArgs.optional();\n\nconst InputGroupAddonArgs = CoreArgs.extend({\n align: z.enum([\"inline-start\", \"inline-end\", \"block-start\", \"block-end\"])\n .optional()\n .meta({ description: \"Alignment of the addon within the input group\" }),\n}).optional();\n\nconst InputGroupInputArgs = CoreArgs.extend({\n value: z.union([z.string(), z.number()], {\n error: \"Input value is required\",\n }).meta({ description: \"Current input value\" }),\n placeholder: z.string().optional().meta({ description: \"Placeholder text shown when empty\" }),\n disabled: z.union([z.string(), z.boolean()]).optional().meta({ description: \"Whether the input is disabled\" }),\n}).strict();\n\nconst InputGroupButtonArgs = CoreArgs.extend({\n variant: z.enum([\"default\", \"secondary\", \"outline\", \"destructive\", \"warning\", \"ghost\"]).optional(),\n size: z.enum([\"xs\", \"sm\", \"md\", \"lg\"]).optional(),\n}).optional();\n\nconst InputGroupTextareaArgs = CoreArgs.extend({\n value: z.string({ error: \"Textarea value is required\" }).meta({ description: \"Current textarea content\" }),\n placeholder: z.string().optional(),\n disabled: z.union([z.string(), z.boolean()]).optional(),\n}).strict();\n\nconst SignatureArgs = CoreArgs.extend({\n value: z\n .string()\n .nullable()\n .meta({ description: \"Current signature value (base64 or null if empty)\" }),\n canvasClassName: z\n .string()\n .optional()\n .meta({ description: \"Custom CSS class for the signature canvas\" }),\n imageType: z\n .enum([\"image/png\", \"image/jpeg\", \"image/webp\"])\n .optional()\n .meta({ description: \"Image format for the exported signature\" }),\n}).strict();\n\nconst CalendarArgs = CoreArgs.extend({\n selected: z\n .union([z.string(), z.date(), z.array(z.date())], {\n error:\n \"Invalid calendar selection. Must be a date string, Date object, or array of dates\",\n })\n .optional()\n .meta({ description: \"Currently selected date(s)\" }),\n buttonVariant: z\n .enum([\"default\", \"secondary\", \"outline\", \"destructive\", \"warning\", \"ghost\"])\n .optional()\n .meta({ description: \"Variant for calendar navigation buttons\" }),\n hideWeekends: z\n .boolean()\n .optional()\n .meta({ description: \"Whether to hide Saturday and Sunday columns\" }),\n}).optional();\n\nconst TableArgs = CoreArgs.optional();\nconst TableHeaderArgs = CoreArgs.optional();\nconst TableBodyArgs = CoreArgs.optional();\nconst TableFooterArgs = CoreArgs.optional();\nconst TableHeadArgs = CoreArgs.optional();\nconst TableRowArgs = CoreArgs.optional();\nconst TableCellArgs = CoreArgs.optional();\nconst TableCaptionArgs = CoreArgs.optional();\n\nconst AccordionArgs = CoreArgs.extend({\n variant: z\n .enum([\"default\", \"contained\", \"separated\"])\n .optional()\n .meta({ description: \"Accordion style variant\" }),\n raised: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Accordion shadow elevation\" }),\n extrude: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Accordion extrude elevation\" }),\n}).optional();\n\nconst AccordionItemArgs = CoreArgs.optional();\n\nconst AccordionTriggerArgs = CoreArgs.extend({\n disabled: z\n .union([z.string(), z.boolean()])\n .optional()\n .meta({ description: \"Whether the accordion trigger is disabled\" }),\n icon: z\n .any()\n .optional()\n .meta({ description: \"Custom icon component for the trigger\" }),\n}).optional();\n\nconst AccordionContentArgs = CoreArgs.optional();\n\nconst AvatarArgs = CoreArgs.extend({\n src: z\n .string()\n .optional()\n .meta({ description: \"Image source URL\" }),\n alt: z\n .string()\n .optional()\n .meta({ description: \"Alternative text for the avatar image\" }),\n size: z\n .enum([\"full\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Avatar size\" }),\n rounded: z\n .enum([\"none\", \"sm\", \"md\", \"lg\", \"full\"])\n .optional()\n .meta({ description: \"Avatar border radius\" }),\n raised: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Avatar shadow elevation\" }),\n fallback: z\n .string()\n .optional()\n .meta({ description: \"Fallback text or element when image fails to load\" }),\n badge: z\n .any()\n .optional()\n .meta({ description: \"Badge element to overlay on the avatar\" }),\n}).optional();\n\nconst CollapsibleArgs = CoreArgs.optional();\nconst CollapsibleTriggerArgs = CoreArgs.optional();\nconst CollapsibleContentArgs = CoreArgs.optional();\n\nconst LoaderArgs = CoreArgs.extend({\n variant: z\n .enum([\"spinner\", \"ping\"])\n .optional()\n .meta({ description: \"Loader animation variant\" }),\n fill: z\n .enum([\"default\", \"destructive\", \"warning\", \"pending\"])\n .optional()\n .meta({ description: \"Loader fill color\" }),\n size: z\n .enum([\"sm\", \"md\", \"lg\"])\n .optional()\n .meta({ description: \"Loader size\" }),\n icon: z\n .any()\n .optional()\n .meta({ description: \"Custom spinner icon component\" }),\n pingIcon: z\n .any()\n .optional()\n .meta({ description: \"Custom ping icon component\" }),\n iconProps: z\n .any()\n .optional()\n .meta({ description: \"Props to pass to the icon components\" }),\n}).optional();\n\nconst ProgressArgs = CoreArgs.extend({\n mode: z\n .enum([\"single\", \"multiple\"])\n .optional()\n .meta({ description: \"Progress display mode\" }),\n value: z\n .union([\n z.number().nullable(),\n z.array(\n z.object({\n name: z.string().optional(),\n value: z.number(),\n }),\n ),\n ])\n .optional()\n .meta({ description: \"Current progress value(s)\" }),\n size: z\n .enum([\"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Progress size\" }),\n raised: z\n .enum([\"default\", \"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Progress shadow elevation\" }),\n stacked: z\n .enum([\"default\", \"xs\", \"sm\", \"md\", \"lg\", \"xl\"])\n .optional()\n .meta({ description: \"Progress stacked spacing\" }),\n}).optional();\n\nconst SkeletonArgs = CoreArgs.extend({\n variant: z\n .enum([\"circle\", \"square\", \"default\", \"text\"])\n .optional()\n .meta({ description: \"Skeleton shape variant\" }),\n animate: z\n .boolean()\n .optional()\n .meta({ description: \"Whether to animate the skeleton\" }),\n}).optional();\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any -- recursive, registry-driven node schemas have no static type\nconst Node: z.ZodType<any> = z.lazy(() => z.union([z.string(), ComponentNode]));\n\nconst CoreNode = z.object({\n children: z\n .array(Node)\n .optional()\n .meta({ description: \"Child nodes to render inside this element\" }),\n});\n\nconst DivNode = CoreNode.extend({\n type: z.literal(COMPONENT.DIV),\n args: DivArgs,\n}).meta({ description: \"Container div element for grouping content\" });\n\nconst ANode = CoreNode.extend({\n type: z.literal(COMPONENT.A),\n args: AArgs,\n}).meta({ description: \"Anchor/link element\" });\n\nconst HNode = CoreNode.extend({\n type: z.literal(COMPONENT.H),\n args: HArgs,\n}).meta({ description: \"Heading element (h1-h6)\" });\n\nconst PNode = CoreNode.extend({\n type: z.literal(COMPONENT.P),\n args: PArgs,\n}).meta({ description: \"Paragraph text element\" });\n\nconst OLNode = CoreNode.extend({\n type: z.literal(COMPONENT.OL),\n args: OLArgs,\n}).meta({ description: \"Ordered list element\" });\n\nconst ULNode = CoreNode.extend({\n type: z.literal(COMPONENT.UL),\n args: ULArgs,\n}).meta({ description: \"Unordered list element\" });\n\nconst LINode = CoreNode.extend({\n type: z.literal(COMPONENT.LI),\n args: LIArgs,\n}).meta({ description: \"List item element\" });\n\nconst SpanNode = CoreNode.extend({\n type: z.literal(COMPONENT.SPAN),\n args: SpanArgs,\n}).meta({ description: \"Inline span element\" });\n\nconst SeparatorNode = CoreNode.extend({\n type: z.literal(COMPONENT.SEPARATOR),\n args: SeparatorArgs,\n}).meta({ description: \"Horizontal separator / divider element\" });\n\nconst AlertNode = CoreNode.extend({\n type: z.literal(COMPONENT.ALERT),\n args: AlertArgs,\n}).meta({ description: \"Alert message box\" });\n\nconst BadgeNode = CoreNode.extend({\n type: z.literal(COMPONENT.BADGE),\n args: BadgeArgs,\n}).meta({ description: \"Badge/status indicator\" });\n\nconst ButtonNode = CoreNode.extend({\n type: z.literal(COMPONENT.BUTTON),\n args: ButtonArgs,\n}).meta({ description: \"Clickable button element\" });\n\nconst CardNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD),\n args: CardArgs,\n}).meta({ description: \"Card container element\" });\n\nconst CheckboxNode = CoreNode.extend({\n type: z.literal(COMPONENT.CHECKBOX),\n args: CheckboxArgs,\n}).meta({ description: \"Checkbox input element\" });\n\nconst ImageNode = CoreNode.extend({\n type: z.literal(COMPONENT.IMAGE),\n args: ImageArgs,\n}).meta({ description: \"Image element\" });\n\nconst OTPNode = CoreNode.extend({\n type: z.literal(COMPONENT.OTP),\n args: OTPArgs,\n}).meta({ description: \"One-time password (OTP) input\" });\n\nconst InputNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT),\n args: InputArgs,\n}).meta({ description: \"Text input element\" });\n\nconst LabelNode = CoreNode.extend({\n type: z.literal(COMPONENT.LABEL),\n args: LabelArgs,\n}).meta({ description: \"Form label element\" });\n\nconst SwitchNode = CoreNode.extend({\n type: z.literal(COMPONENT.SWITCH),\n args: SwitchArgs,\n}).meta({ description: \"Toggle switch element\" });\n\nconst TextareaNode = CoreNode.extend({\n type: z.literal(COMPONENT.TEXTAREA),\n args: TextareaArgs,\n}).meta({ description: \"Multi-line text input\" });\n\nconst SignatureNode = CoreNode.extend({\n type: z.literal(COMPONENT.SIGNATURE),\n args: SignatureArgs,\n}).meta({ description: \"Signature pad input\" });\n\nconst CalendarNode = CoreNode.extend({\n type: z.literal(COMPONENT.CALENDAR),\n args: CalendarArgs,\n}).meta({ description: \"Date picker calendar\" });\n\nconst CardHeaderNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_HEADER),\n args: CardHeaderArgs,\n}).meta({ description: \"Card header container\" });\n\nconst CardTitleNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_TITLE),\n args: CardTitleArgs,\n}).meta({ description: \"Card title element\" });\n\nconst CardDescriptionNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_DESCRIPTION),\n args: CardDescriptionArgs,\n}).meta({ description: \"Card description element\" });\n\nconst CardContentNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_CONTENT),\n args: CardContentArgs,\n}).meta({ description: \"Card content body\" });\n\nconst CardFooterNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_FOOTER),\n args: CardFooterArgs,\n}).meta({ description: \"Card footer container\" });\n\nconst CardActionNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_ACTION),\n args: CardActionArgs,\n}).meta({ description: \"Card action slot\" });\n\nconst CardIconNode = CoreNode.extend({\n type: z.literal(COMPONENT.CARD_ICON),\n args: CardIconArgs,\n}).meta({ description: \"Card icon slot\" });\n\nconst TableNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE),\n args: TableArgs,\n}).meta({ description: \"Table container\" });\n\nconst TableHeaderNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_HEADER),\n args: TableHeaderArgs,\n}).meta({ description: \"Table header section\" });\n\nconst TableBodyNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_BODY),\n args: TableBodyArgs,\n}).meta({ description: \"Table body section\" });\n\nconst TableFooterNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_FOOTER),\n args: TableFooterArgs,\n}).meta({ description: \"Table footer section\" });\n\nconst TableHeadNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_HEAD),\n args: TableHeadArgs,\n}).meta({ description: \"Table header cell\" });\n\nconst TableRowNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_ROW),\n args: TableRowArgs,\n}).meta({ description: \"Table row\" });\n\nconst TableCellNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_CELL),\n args: TableCellArgs,\n}).meta({ description: \"Table data cell\" });\n\nconst TableCaptionNode = CoreNode.extend({\n type: z.literal(COMPONENT.TABLE_CAPTION),\n args: TableCaptionArgs,\n}).meta({ description: \"Table caption\" });\n\nconst AccordionNode = CoreNode.extend({\n type: z.literal(COMPONENT.ACCORDION),\n args: AccordionArgs,\n}).meta({ description: \"Accordion container\" });\n\nconst AccordionItemNode = CoreNode.extend({\n type: z.literal(COMPONENT.ACCORDION_ITEM),\n args: AccordionItemArgs,\n}).meta({ description: \"Accordion item\" });\n\nconst AccordionTriggerNode = CoreNode.extend({\n type: z.literal(COMPONENT.ACCORDION_TRIGGER),\n args: AccordionTriggerArgs,\n}).meta({ description: \"Accordion trigger\" });\n\nconst AccordionContentNode = CoreNode.extend({\n type: z.literal(COMPONENT.ACCORDION_CONTENT),\n args: AccordionContentArgs,\n}).meta({ description: \"Accordion content panel\" });\n\nconst AvatarNode = CoreNode.extend({\n type: z.literal(COMPONENT.AVATAR),\n args: AvatarArgs,\n}).meta({ description: \"Avatar image or fallback\" });\n\nconst CollapsibleNode = CoreNode.extend({\n type: z.literal(COMPONENT.COLLAPSIBLE),\n args: CollapsibleArgs,\n}).meta({ description: \"Collapsible container\" });\n\nconst CollapsibleTriggerNode = CoreNode.extend({\n type: z.literal(COMPONENT.COLLAPSIBLE_TRIGGER),\n args: CollapsibleTriggerArgs,\n}).meta({ description: \"Collapsible trigger\" });\n\nconst CollapsibleContentNode = CoreNode.extend({\n type: z.literal(COMPONENT.COLLAPSIBLE_CONTENT),\n args: CollapsibleContentArgs,\n}).meta({ description: \"Collapsible content panel\" });\n\nconst LoaderNode = CoreNode.extend({\n type: z.literal(COMPONENT.LOADER),\n args: LoaderArgs,\n}).meta({ description: \"Loading spinner indicator\" });\n\nconst ProgressNode = CoreNode.extend({\n type: z.literal(COMPONENT.PROGRESS),\n args: ProgressArgs,\n}).meta({ description: \"Progress bar indicator\" });\n\nconst SkeletonNode = CoreNode.extend({\n type: z.literal(COMPONENT.SKELETON),\n args: SkeletonArgs,\n}).meta({ description: \"Skeleton loading placeholder\" });\n\nconst InputGroupNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP),\n args: InputGroupArgs,\n}).meta({ description: \"Input group container\" });\n\nconst InputGroupTextNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP_TEXT),\n args: InputGroupTextArgs,\n}).meta({ description: \"Text element within input group\" });\n\nconst InputGroupAddonNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP_ADDON),\n args: InputGroupAddonArgs,\n}).meta({ description: \"Addon container within input group\" });\n\nconst InputGroupInputNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP_INPUT),\n args: InputGroupInputArgs,\n}).meta({ description: \"Input element within input group\" });\n\nconst InputGroupButtonNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP_BUTTON),\n args: InputGroupButtonArgs,\n}).meta({ description: \"Button element within input group\" });\n\nconst InputGroupTextareaNode = CoreNode.extend({\n type: z.literal(COMPONENT.INPUT_GROUP_TEXTAREA),\n args: InputGroupTextareaArgs,\n}).meta({ description: \"Textarea element within input group\" });\n\nconst EachArgs = z\n .object({\n items: z\n .string({ error: \"each.items is required\" })\n .min(1, { message: \"each.items cannot be empty\" })\n .meta({\n description:\n 'Binding path to the array to iterate, e.g. \"{{applicants}}\". Must be a plain path (not a computed/filtered expression) so each row maps back to a real store index for two-way binding.',\n }),\n as: z\n .string({ error: \"each.as is required\" })\n .min(1, { message: \"each.as cannot be empty\" })\n .meta({ description: \"Alias name bound to the current item, e.g. \\\"applicant\\\"\" }),\n index: z\n .string()\n .optional()\n .meta({ description: \"Alias name bound to the current numeric index\" }),\n key: z\n .string()\n .optional()\n .meta({\n description:\n 'Binding expression used as the React key per row, e.g. \"{{applicant.id}}\". Falls back to the row index when omitted.',\n }),\n })\n .strict();\n\nconst EachNode = CoreNode.extend({\n type: z.literal(COMPONENT.EACH),\n args: EachArgs,\n}).meta({ description: \"Repeats its children once per item in a bound array\" });\n\nconst IfArgs = z\n .object({\n condition: z\n .string({ error: \"if.condition is required\" })\n .min(1, { message: \"if.condition cannot be empty\" })\n .meta({ description: \"Binding expression; children render only when it evaluates truthy\" }),\n })\n .strict();\n\nconst IfNode = CoreNode.extend({\n type: z.literal(COMPONENT.IF),\n args: IfArgs,\n}).meta({ description: \"Conditionally renders its children based on a bound expression\" });\n\n/* eslint-disable @typescript-eslint/no-explicit-any -- recursive, registry-driven node schemas have no static type */\n\n// Extracts the `args` sub-schema and description back out of an already-built `*Node`\n// schema, so the registry-driven builder below can reuse every hand-written node\n// definition above without retyping its args schema or description.\nfunction argsOf(node: z.ZodType<any>): z.ZodType<any> {\n return (node as unknown as { shape: { args: z.ZodType<any> } }).shape.args;\n}\n\nfunction descriptionOf(node: z.ZodType<any>): string | undefined {\n return (node.meta() as { description?: string } | undefined)?.description;\n}\n\nexport interface TemplateSchemaComponent {\n argsSchema: z.ZodType<any>;\n description?: string;\n}\n\nexport interface GeneratedTemplateSchema {\n Node: z.ZodType<any>;\n ComponentNode: z.ZodDiscriminatedUnion<any>;\n}\n\n/**\n * Builds the same `CoreNode.extend({ type, args }).meta({ description })` shape used\n * above, from a registry's component list rather than a hand-written literal — the\n * union stops being static; it does not stop existing.\n */\nexport function createTemplateSchema(\n components: Record<string, TemplateSchemaComponent>,\n): GeneratedTemplateSchema {\n if (Object.keys(components).length === 0) {\n throw new Error(\"createTemplateSchema: registry must declare at least one component\");\n }\n\n // Self-contained recursion (its own Node/CoreNode), not the module-level ones above —\n // those exist only so PEBBLE_COMPONENT_SCHEMAS can source args/descriptions from the\n // hand-written *Node consts. Reusing the module Node here would make `Config` a second,\n // structurally-identical-but-distinct lazy wrapper, which breaks zod-openapi's schema\n // dedup/naming (it stops emitting a named `BonsaiConfig` $ref and inlines it instead).\n const localNode: z.ZodType<any> = z.lazy(() => z.union([z.string(), componentNode]));\n const localCoreNode = z.object({\n children: z\n .array(localNode)\n .optional()\n .meta({ description: \"Child nodes to render inside this element\" }),\n });\n\n const nodeSchemas = Object.entries(components).map(([type, { argsSchema, description }]) => {\n const node = localCoreNode.extend({\n type: z.literal(type),\n args: argsSchema,\n });\n return description ? node.meta({ description }) : node;\n });\n const componentNode: z.ZodDiscriminatedUnion<any> = z.discriminatedUnion(\n \"type\",\n nodeSchemas as [(typeof nodeSchemas)[number], ...(typeof nodeSchemas)[number][]],\n );\n return { Node: localNode, ComponentNode: componentNode };\n}\n\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nexport const PEBBLE_COMPONENT_SCHEMAS: Record<string, TemplateSchemaComponent> = {\n [COMPONENT.DIV]: { argsSchema: argsOf(DivNode), description: descriptionOf(DivNode) },\n [COMPONENT.A]: { argsSchema: argsOf(ANode), description: descriptionOf(ANode) },\n [COMPONENT.H]: { argsSchema: argsOf(HNode), description: descriptionOf(HNode) },\n [COMPONENT.P]: { argsSchema: argsOf(PNode), description: descriptionOf(PNode) },\n [COMPONENT.OL]: { argsSchema: argsOf(OLNode), description: descriptionOf(OLNode) },\n [COMPONENT.UL]: { argsSchema: argsOf(ULNode), description: descriptionOf(ULNode) },\n [COMPONENT.LI]: { argsSchema: argsOf(LINode), description: descriptionOf(LINode) },\n [COMPONENT.SPAN]: { argsSchema: argsOf(SpanNode), description: descriptionOf(SpanNode) },\n [COMPONENT.SEPARATOR]: {\n argsSchema: argsOf(SeparatorNode),\n description: descriptionOf(SeparatorNode),\n },\n [COMPONENT.ALERT]: { argsSchema: argsOf(AlertNode), description: descriptionOf(AlertNode) },\n [COMPONENT.BADGE]: { argsSchema: argsOf(BadgeNode), description: descriptionOf(BadgeNode) },\n [COMPONENT.BUTTON]: { argsSchema: argsOf(ButtonNode), description: descriptionOf(ButtonNode) },\n [COMPONENT.CARD]: { argsSchema: argsOf(CardNode), description: descriptionOf(CardNode) },\n [COMPONENT.CARD_HEADER]: {\n argsSchema: argsOf(CardHeaderNode),\n description: descriptionOf(CardHeaderNode),\n },\n [COMPONENT.CARD_TITLE]: {\n argsSchema: argsOf(CardTitleNode),\n description: descriptionOf(CardTitleNode),\n },\n [COMPONENT.CARD_DESCRIPTION]: {\n argsSchema: argsOf(CardDescriptionNode),\n description: descriptionOf(CardDescriptionNode),\n },\n [COMPONENT.CARD_CONTENT]: {\n argsSchema: argsOf(CardContentNode),\n description: descriptionOf(CardContentNode),\n },\n [COMPONENT.CARD_FOOTER]: {\n argsSchema: argsOf(CardFooterNode),\n description: descriptionOf(CardFooterNode),\n },\n [COMPONENT.CARD_ACTION]: {\n argsSchema: argsOf(CardActionNode),\n description: descriptionOf(CardActionNode),\n },\n [COMPONENT.CARD_ICON]: {\n argsSchema: argsOf(CardIconNode),\n description: descriptionOf(CardIconNode),\n },\n [COMPONENT.CHECKBOX]: {\n argsSchema: argsOf(CheckboxNode),\n description: descriptionOf(CheckboxNode),\n },\n [COMPONENT.IMAGE]: { argsSchema: argsOf(ImageNode), description: descriptionOf(ImageNode) },\n [COMPONENT.OTP]: { argsSchema: argsOf(OTPNode), description: descriptionOf(OTPNode) },\n [COMPONENT.INPUT]: { argsSchema: argsOf(InputNode), description: descriptionOf(InputNode) },\n [COMPONENT.LABEL]: { argsSchema: argsOf(LabelNode), description: descriptionOf(LabelNode) },\n [COMPONENT.SWITCH]: { argsSchema: argsOf(SwitchNode), description: descriptionOf(SwitchNode) },\n [COMPONENT.TEXTAREA]: {\n argsSchema: argsOf(TextareaNode),\n description: descriptionOf(TextareaNode),\n },\n [COMPONENT.SIGNATURE]: {\n argsSchema: argsOf(SignatureNode),\n description: descriptionOf(SignatureNode),\n },\n [COMPONENT.CALENDAR]: {\n argsSchema: argsOf(CalendarNode),\n description: descriptionOf(CalendarNode),\n },\n [COMPONENT.TABLE]: { argsSchema: argsOf(TableNode), description: descriptionOf(TableNode) },\n [COMPONENT.TABLE_HEADER]: {\n argsSchema: argsOf(TableHeaderNode),\n description: descriptionOf(TableHeaderNode),\n },\n [COMPONENT.TABLE_BODY]: {\n argsSchema: argsOf(TableBodyNode),\n description: descriptionOf(TableBodyNode),\n },\n [COMPONENT.TABLE_FOOTER]: {\n argsSchema: argsOf(TableFooterNode),\n description: descriptionOf(TableFooterNode),\n },\n [COMPONENT.TABLE_HEAD]: {\n argsSchema: argsOf(TableHeadNode),\n description: descriptionOf(TableHeadNode),\n },\n [COMPONENT.TABLE_ROW]: {\n argsSchema: argsOf(TableRowNode),\n description: descriptionOf(TableRowNode),\n },\n [COMPONENT.TABLE_CELL]: {\n argsSchema: argsOf(TableCellNode),\n description: descriptionOf(TableCellNode),\n },\n [COMPONENT.TABLE_CAPTION]: {\n argsSchema: argsOf(TableCaptionNode),\n description: descriptionOf(TableCaptionNode),\n },\n [COMPONENT.ACCORDION]: {\n argsSchema: argsOf(AccordionNode),\n description: descriptionOf(AccordionNode),\n },\n [COMPONENT.ACCORDION_ITEM]: {\n argsSchema: argsOf(AccordionItemNode),\n description: descriptionOf(AccordionItemNode),\n },\n [COMPONENT.ACCORDION_TRIGGER]: {\n argsSchema: argsOf(AccordionTriggerNode),\n description: descriptionOf(AccordionTriggerNode),\n },\n [COMPONENT.ACCORDION_CONTENT]: {\n argsSchema: argsOf(AccordionContentNode),\n description: descriptionOf(AccordionContentNode),\n },\n [COMPONENT.AVATAR]: { argsSchema: argsOf(AvatarNode), description: descriptionOf(AvatarNode) },\n [COMPONENT.COLLAPSIBLE]: {\n argsSchema: argsOf(CollapsibleNode),\n description: descriptionOf(CollapsibleNode),\n },\n [COMPONENT.COLLAPSIBLE_TRIGGER]: {\n argsSchema: argsOf(CollapsibleTriggerNode),\n description: descriptionOf(CollapsibleTriggerNode),\n },\n [COMPONENT.COLLAPSIBLE_CONTENT]: {\n argsSchema: argsOf(CollapsibleContentNode),\n description: descriptionOf(CollapsibleContentNode),\n },\n [COMPONENT.LOADER]: { argsSchema: argsOf(LoaderNode), description: descriptionOf(LoaderNode) },\n [COMPONENT.PROGRESS]: {\n argsSchema: argsOf(ProgressNode),\n description: descriptionOf(ProgressNode),\n },\n [COMPONENT.SKELETON]: {\n argsSchema: argsOf(SkeletonNode),\n description: descriptionOf(SkeletonNode),\n },\n [COMPONENT.INPUT_GROUP]: {\n argsSchema: argsOf(InputGroupNode),\n description: descriptionOf(InputGroupNode),\n },\n [COMPONENT.INPUT_GROUP_TEXT]: {\n argsSchema: argsOf(InputGroupTextNode),\n description: descriptionOf(InputGroupTextNode),\n },\n [COMPONENT.INPUT_GROUP_ADDON]: {\n argsSchema: argsOf(InputGroupAddonNode),\n description: descriptionOf(InputGroupAddonNode),\n },\n [COMPONENT.INPUT_GROUP_INPUT]: {\n argsSchema: argsOf(InputGroupInputNode),\n description: descriptionOf(InputGroupInputNode),\n },\n [COMPONENT.INPUT_GROUP_BUTTON]: {\n argsSchema: argsOf(InputGroupButtonNode),\n description: descriptionOf(InputGroupButtonNode),\n },\n [COMPONENT.INPUT_GROUP_TEXTAREA]: {\n argsSchema: argsOf(InputGroupTextareaNode),\n description: descriptionOf(InputGroupTextareaNode),\n },\n [COMPONENT.EACH]: { argsSchema: argsOf(EachNode), description: descriptionOf(EachNode) },\n [COMPONENT.IF]: { argsSchema: argsOf(IfNode), description: descriptionOf(IfNode) },\n};\n\nconst pebbleTemplateSchema = createTemplateSchema(PEBBLE_COMPONENT_SCHEMAS);\n\nexport const ComponentNode = pebbleTemplateSchema.ComponentNode;\nexport const Config = pebbleTemplateSchema.Node;\nexport type Config = z.infer<typeof pebbleTemplateSchema.Node>;\n\n/** Every element (non-string) node schema, keyed by its `type` literal. */\n/* eslint-disable @typescript-eslint/no-explicit-any -- recursive, registry-driven node schemas have no static type */\nexport const NodeSchemas: Record<string, z.ZodObject<any>> = Object.fromEntries(\n (ComponentNode.options as z.ZodObject<any>[]).map((schema) => [schema.shape.type.value, schema]),\n);\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","import { z } from \"zod\";\nimport { COMPONENT } from \"@bonsai/constants\";\n\nimport { NodeSchemas } from \"./bonsai.schema\";\n\n// Editor-facing metadata for the Bonsai node schemas: nesting rules and\n// inspector UI hints. Kept in dedicated registries rather than `.meta()` so it\n// never leaks into `z.toJSONSchema` output (the OpenAPI document and the code\n// editor's JSON schema stay as they are).\n\n/**\n * Which children a node type may hold, and where it may be placed.\n * `each` / `if` are transparent: they are allowed wherever their children are,\n * and a child's `parent` rule is checked against the nearest element above them.\n */\nexport interface NodeRules {\n /** \"any\" (default), \"none\" (void / self-contained), or an allow-list of child types. */\n accepts: \"any\" | \"none\" | string[];\n /** Allow-list of direct parent types; absent means any parent. */\n parent?: string[];\n}\n\nexport type FieldControl =\n | \"text\"\n | \"textarea\"\n | \"select\"\n | \"switch\"\n | \"number\"\n | \"color\"\n | \"binding\"\n | \"json\";\n\nexport type FieldGroup = \"Content\" | \"Data\" | \"Style\" | \"Advanced\";\n\nexport interface FieldHints {\n label?: string;\n control?: FieldControl;\n group?: FieldGroup;\n placeholder?: string;\n}\n\nexport const nodeRules = z.registry<NodeRules>();\nexport const fieldHints = z.registry<FieldHints>();\n\nconst C = COMPONENT;\n\n// Components that render no children of their own (void elements throw when given any).\nconst SELF_CONTAINED = [\n C.INPUT,\n C.INPUT_GROUP_INPUT,\n C.INPUT_GROUP_TEXTAREA,\n C.TEXTAREA,\n C.IMAGE,\n C.SEPARATOR,\n C.CHECKBOX,\n C.SWITCH,\n C.OTP,\n C.SIGNATURE,\n C.CALENDAR,\n C.LOADER,\n C.SKELETON,\n C.PROGRESS,\n C.AVATAR,\n];\n\nconst TABLE_SECTIONS = [C.TABLE_HEADER, C.TABLE_BODY, C.TABLE_FOOTER];\nconst CARD_SLOTS = [C.CARD, C.CARD_HEADER, C.CARD_FOOTER];\nconst INPUT_GROUP_SLOTS = [C.INPUT_GROUP, C.INPUT_GROUP_ADDON];\n\nconst RULES: Partial<Record<string, Partial<NodeRules>>> = {\n [C.ACCORDION]: { accepts: [C.ACCORDION_ITEM] },\n [C.ACCORDION_ITEM]: { accepts: [C.ACCORDION_TRIGGER, C.ACCORDION_CONTENT], parent: [C.ACCORDION] },\n [C.ACCORDION_TRIGGER]: { parent: [C.ACCORDION_ITEM] },\n [C.ACCORDION_CONTENT]: { parent: [C.ACCORDION_ITEM] },\n [C.COLLAPSIBLE_TRIGGER]: { parent: [C.COLLAPSIBLE] },\n [C.COLLAPSIBLE_CONTENT]: { parent: [C.COLLAPSIBLE] },\n [C.TABLE]: { accepts: [...TABLE_SECTIONS, C.TABLE_CAPTION] },\n [C.TABLE_HEADER]: { accepts: [C.TABLE_ROW], parent: [C.TABLE] },\n [C.TABLE_BODY]: { accepts: [C.TABLE_ROW], parent: [C.TABLE] },\n [C.TABLE_FOOTER]: { accepts: [C.TABLE_ROW], parent: [C.TABLE] },\n [C.TABLE_CAPTION]: { parent: [C.TABLE] },\n [C.TABLE_ROW]: { accepts: [C.TABLE_CELL, C.TABLE_HEAD], parent: TABLE_SECTIONS },\n [C.TABLE_CELL]: { parent: [C.TABLE_ROW] },\n [C.TABLE_HEAD]: { parent: [C.TABLE_ROW] },\n [C.CARD_HEADER]: { parent: [C.CARD] },\n [C.CARD_CONTENT]: { parent: [C.CARD] },\n [C.CARD_FOOTER]: { parent: [C.CARD] },\n [C.CARD_TITLE]: { parent: CARD_SLOTS },\n [C.CARD_DESCRIPTION]: { parent: CARD_SLOTS },\n [C.CARD_ACTION]: { parent: CARD_SLOTS },\n [C.CARD_ICON]: { parent: CARD_SLOTS },\n [C.INPUT_GROUP_ADDON]: { parent: [C.INPUT_GROUP] },\n [C.INPUT_GROUP_TEXT]: { parent: INPUT_GROUP_SLOTS },\n [C.INPUT_GROUP_INPUT]: { parent: INPUT_GROUP_SLOTS },\n [C.INPUT_GROUP_BUTTON]: { parent: INPUT_GROUP_SLOTS },\n [C.INPUT_GROUP_TEXTAREA]: { parent: INPUT_GROUP_SLOTS },\n [C.OL]: { accepts: [C.LI] },\n [C.UL]: { accepts: [C.LI] },\n [C.LI]: { parent: [C.OL, C.UL] },\n};\n\nfor (const type of SELF_CONTAINED) RULES[type] = { ...RULES[type], accepts: \"none\" };\n\n// Inspector hints by arg name; `TYPE_FIELD_HINTS` refines a name for one type.\nconst FIELD_HINTS: Record<string, FieldHints> = {\n id: { label: \"Element ID\", group: \"Advanced\" },\n className: { label: \"Classes\", group: \"Advanced\" },\n onClick: { label: \"On click\", control: \"json\", group: \"Data\" },\n href: { label: \"Link URL\", group: \"Content\", placeholder: \"https://\" },\n src: { label: \"Image URL\", group: \"Content\", placeholder: \"https:// or {{binding}}\" },\n alt: { label: \"Alt text\", group: \"Content\" },\n placeholder: { label: \"Placeholder\", group: \"Content\" },\n fallback: { label: \"Fallback text\", group: \"Content\" },\n value: { label: \"Bound value\", control: \"binding\", group: \"Data\" },\n checked: { label: \"Bound value\", control: \"binding\", group: \"Data\" },\n selected: { label: \"Bound value\", control: \"binding\", group: \"Data\" },\n htmlFor: { label: \"For input (ID)\", group: \"Data\" },\n disabled: { label: \"Disabled\", group: \"Data\" },\n required: { label: \"Required\", group: \"Data\" },\n loading: { label: \"Loading\", group: \"Data\" },\n readonly: { label: \"Read only\", group: \"Data\" },\n items: { label: \"Repeat over\", control: \"binding\", group: \"Data\", placeholder: \"{{items}}\" },\n index: { label: \"Index alias\", group: \"Data\" },\n key: { label: \"Row key\", control: \"binding\", group: \"Advanced\" },\n condition: { label: \"Show when\", control: \"binding\", group: \"Data\", placeholder: \"{{flag}}\" },\n variant: { label: \"Variant\", group: \"Style\" },\n size: { label: \"Size\", group: \"Style\" },\n raised: { label: \"Shadow\", group: \"Style\" },\n extrude: { label: \"Extrude\", group: \"Style\" },\n rounded: { label: \"Corners\", group: \"Style\" },\n align: { label: \"Alignment\", group: \"Style\" },\n fill: { label: \"Colour\", group: \"Style\" },\n stacked: { label: \"Stacked spacing\", group: \"Style\" },\n animate: { label: \"Animate\", group: \"Style\" },\n buttonVariant: { label: \"Button variant\", group: \"Style\" },\n mode: { label: \"Mode\", group: \"Style\" },\n rows: { label: \"Rows\", group: \"Style\" },\n autosize: { label: \"Auto-size\", group: \"Style\" },\n type: { label: \"Button type\", group: \"Content\" },\n imageType: { label: \"Image format\", group: \"Advanced\" },\n containerClassName: { label: \"Container classes\", group: \"Advanced\" },\n canvasClassName: { label: \"Canvas classes\", group: \"Advanced\" },\n minLength: { label: \"Min length\", group: \"Advanced\" },\n maxLength: { label: \"Max length\", group: \"Advanced\" },\n hideWeekends: { label: \"Hide weekends\", group: \"Advanced\" },\n pins: { label: \"Pins\", control: \"json\", group: \"Advanced\" },\n zoom: { label: \"Zoom\", group: \"Advanced\" },\n pitch: { label: \"Pitch\", group: \"Advanced\" },\n fixed: { label: \"Fixed viewport\", group: \"Advanced\" },\n allowMultiple: { label: \"Allow multiple pins\", group: \"Advanced\" },\n icon: { label: \"Icon\", group: \"Advanced\" },\n pingIcon: { label: \"Ping icon\", control: \"json\", group: \"Advanced\" },\n iconProps: { label: \"Icon props\", control: \"json\", group: \"Advanced\" },\n badge: { label: \"Badge\", control: \"json\", group: \"Advanced\" },\n};\n\nconst TYPE_FIELD_HINTS: Record<string, Record<string, FieldHints>> = {\n [C.EACH]: { as: { label: \"Item alias\", group: \"Data\" } },\n [C.H]: { as: { label: \"Render as\", group: \"Advanced\" } },\n [C.P]: { as: { label: \"Render as\", group: \"Advanced\" } },\n [C.BUTTON]: { icon: { label: \"Icon-only size\", group: \"Style\" } },\n};\n\n/** The args object schema of a node type, unwrapped from `.optional()`. */\nexport function getArgsSchema(type: string): z.ZodObject | undefined {\n let args: z.ZodType | undefined = NodeSchemas[type]?.shape.args;\n while (args instanceof z.ZodOptional) args = args.unwrap() as z.ZodType;\n return args instanceof z.ZodObject ? args : undefined;\n}\n\nfor (const [type, schema] of Object.entries(NodeSchemas)) {\n nodeRules.add(schema, { accepts: \"any\", ...RULES[type] });\n const shape = getArgsSchema(type)?.shape ?? {};\n for (const [name, field] of Object.entries(shape)) {\n // Shared field instances (CoreArgs) receive identical hints from every type.\n fieldHints.add(field as z.ZodType, { ...FIELD_HINTS[name], ...TYPE_FIELD_HINTS[type]?.[name] });\n }\n}\n\n/** Nesting rules for a node type; unknown types accept anything. */\nexport function getNodeRules(type: string): NodeRules {\n const schema = NodeSchemas[type];\n return (schema && nodeRules.get(schema)) || { accepts: \"any\" };\n}\n"],"names":["ClickAction","z","path","CoreArgs","AArgs","HArgs","PArgs","OLArgs","ULArgs","LIArgs","DivArgs","SpanArgs","SeparatorArgs","AlertArgs","BadgeArgs","ButtonArgs","CardArgs","CardHeaderArgs","CardTitleArgs","CardDescriptionArgs","CardContentArgs","CardFooterArgs","CardActionArgs","CardIconArgs","CheckboxArgs","ImageArgs","OTPArgs","InputArgs","LabelArgs","SwitchArgs","TextareaArgs","InputGroupArgs","InputGroupTextArgs","InputGroupAddonArgs","InputGroupInputArgs","InputGroupButtonArgs","InputGroupTextareaArgs","SignatureArgs","CalendarArgs","TableArgs","TableHeaderArgs","TableBodyArgs","TableFooterArgs","TableHeadArgs","TableRowArgs","TableCellArgs","TableCaptionArgs","AccordionArgs","AccordionItemArgs","AccordionTriggerArgs","AccordionContentArgs","AvatarArgs","CollapsibleArgs","CollapsibleTriggerArgs","CollapsibleContentArgs","LoaderArgs","ProgressArgs","SkeletonArgs","Node","ComponentNode","CoreNode","DivNode","COMPONENT","ANode","HNode","PNode","OLNode","ULNode","LINode","SpanNode","SeparatorNode","AlertNode","BadgeNode","ButtonNode","CardNode","CheckboxNode","ImageNode","OTPNode","InputNode","LabelNode","SwitchNode","TextareaNode","SignatureNode","CalendarNode","CardHeaderNode","CardTitleNode","CardDescriptionNode","CardContentNode","CardFooterNode","CardActionNode","CardIconNode","TableNode","TableHeaderNode","TableBodyNode","TableFooterNode","TableHeadNode","TableRowNode","TableCellNode","TableCaptionNode","AccordionNode","AccordionItemNode","AccordionTriggerNode","AccordionContentNode","AvatarNode","CollapsibleNode","CollapsibleTriggerNode","CollapsibleContentNode","LoaderNode","ProgressNode","SkeletonNode","InputGroupNode","InputGroupTextNode","InputGroupAddonNode","InputGroupInputNode","InputGroupButtonNode","InputGroupTextareaNode","EachArgs","EachNode","IfArgs","IfNode","argsOf","node","descriptionOf","createTemplateSchema","components","localNode","componentNode","localCoreNode","nodeSchemas","type","argsSchema","description","PEBBLE_COMPONENT_SCHEMAS","pebbleTemplateSchema","Config","NodeSchemas","schema","nodeRules","fieldHints","C","SELF_CONTAINED","TABLE_SECTIONS","CARD_SLOTS","INPUT_GROUP_SLOTS","RULES","FIELD_HINTS","TYPE_FIELD_HINTS","getArgsSchema","args","shape","name","field","getNodeRules"],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { c as f } from "./index-df-PhUtD.js";
|
|
2
|
+
const p = 1024, a = (e) => e.split(/\s+/).filter(Boolean);
|
|
3
|
+
function o(e, s) {
|
|
4
|
+
return e && s ? [.../* @__PURE__ */ new Set([...e, ...s])] : null;
|
|
5
|
+
}
|
|
6
|
+
function g(e, s) {
|
|
7
|
+
return !e || !s || e.length * s.length > p ? null : [...new Set(e.flatMap((n) => s.map((r) => n + r)))];
|
|
8
|
+
}
|
|
9
|
+
function t(e, s) {
|
|
10
|
+
const n = e;
|
|
11
|
+
switch (n.type) {
|
|
12
|
+
case "Literal": {
|
|
13
|
+
const r = n.value == null || typeof n.value == "boolean" ? "" : String(n.value);
|
|
14
|
+
return s.push(r), [r];
|
|
15
|
+
}
|
|
16
|
+
case "ConditionalExpression":
|
|
17
|
+
return o(
|
|
18
|
+
t(n.consequent, s),
|
|
19
|
+
t(n.alternate, s)
|
|
20
|
+
);
|
|
21
|
+
case "BinaryExpression":
|
|
22
|
+
switch (n.operator) {
|
|
23
|
+
// A falsy left side renders no class, so only the right side is a result.
|
|
24
|
+
case "&&":
|
|
25
|
+
return o([""], t(n.right, s));
|
|
26
|
+
case "||":
|
|
27
|
+
case "??":
|
|
28
|
+
return o(t(n.left, s), t(n.right, s));
|
|
29
|
+
case "+":
|
|
30
|
+
return g(t(n.left, s), t(n.right, s));
|
|
31
|
+
default:
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
default:
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function m(e) {
|
|
39
|
+
return e === "className" || e.endsWith("ClassName");
|
|
40
|
+
}
|
|
41
|
+
function d(e) {
|
|
42
|
+
if (typeof e != "string") return { classes: [], issue: null };
|
|
43
|
+
const s = f(e);
|
|
44
|
+
if (!s) return { classes: a(e), issue: null };
|
|
45
|
+
if (!s.ast) return { classes: [], issue: null };
|
|
46
|
+
const n = [], r = t(s.ast, n), l = [...new Set(n.flatMap(a))];
|
|
47
|
+
if (!r)
|
|
48
|
+
return {
|
|
49
|
+
classes: l,
|
|
50
|
+
issue: "must evaluate to classes written in string literals (e.g. a ternary between class strings), not to data or a computed value"
|
|
51
|
+
};
|
|
52
|
+
const i = new Set(l);
|
|
53
|
+
for (const c of r)
|
|
54
|
+
for (const u of a(c))
|
|
55
|
+
if (!i.has(u))
|
|
56
|
+
return {
|
|
57
|
+
classes: l,
|
|
58
|
+
issue: `builds "${u}" by joining strings; write each class whole inside one string literal`
|
|
59
|
+
};
|
|
60
|
+
return { classes: l, issue: null };
|
|
61
|
+
}
|
|
62
|
+
export {
|
|
63
|
+
d as a,
|
|
64
|
+
m as i
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=class-names-CoKRVvWM.js.map
|