@kubuild/components 0.4.0 → 0.6.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/definitions/index.ts","../../src/registry.ts","../../src/traits/types.ts","../../src/traits/common.ts","../../src/traits/link.ts","../../src/traits/media.ts","../../src/traits/structure.ts","../../src/traits/form.ts","../../src/definitions/constants.ts","../../src/definitions/layout/page.ts","../../src/definitions/layout/section.ts","../../src/definitions/layout/container.ts","../../src/definitions/layout/columns.ts","../../src/definitions/layout/flex.ts","../../src/definitions/layout/grid.ts","../../src/definitions/typography/heading.ts","../../src/definitions/typography/text.ts","../../src/definitions/typography/paragraph.ts","../../src/definitions/typography/link.ts","../../src/definitions/typography/blockquote.ts","../../src/definitions/typography/badge.ts","../../src/definitions/typography/code-block.ts","../../src/definitions/media/image.ts","../../src/definitions/media/video.ts","../../src/definitions/media/icon.ts","../../src/definitions/media/html-embed.ts","../../src/definitions/data/table.ts","../../src/definitions/data/list.ts","../../src/definitions/data/collection.ts","../../src/definitions/form/button.ts","../../src/definitions/form/form.ts","../../src/definitions/form/input.ts","../../src/definitions/form/textarea.ts","../../src/definitions/form/select.ts","../../src/definitions/form/checkbox.ts","../../src/definitions/form/switch.ts","../../src/definitions/form/radio.ts","../../src/definitions/form/file-upload.ts","../../src/definitions/interactive/modal.ts","../../src/definitions/interactive/drawer.ts","../../src/definitions/interactive/collapsible.ts"],"sourcesContent":["import { ComponentDefinition, ComponentRegistry } from '../registry';\nimport {\n columnsDefinition,\n containerDefinition,\n flexDefinition,\n gridDefinition,\n pageDefinition,\n sectionDefinition,\n} from './layout';\nimport {\n badgeDefinition,\n blockquoteDefinition,\n codeBlockDefinition,\n headingDefinition,\n linkDefinition,\n paragraphDefinition,\n textDefinition,\n} from './typography';\nimport {\n htmlEmbedDefinition,\n iconDefinition,\n imageDefinition,\n videoDefinition,\n} from './media';\nimport {\n collectionDefinition,\n listDefinition,\n listItemDefinition,\n tableCellDefinition,\n tableDefinition,\n tableRowDefinition,\n} from './data';\nimport {\n buttonDefinition,\n buttonSubmitDefinition,\n checkboxDefinition,\n fileUploadDefinition,\n formDefinition,\n inputDefinition,\n radioDefinition,\n radioGroupDefinition,\n radioItemDefinition,\n selectDefinition,\n switchDefinition,\n textareaDefinition,\n} from './form';\n\nexport * from './constants';\nexport * from './types';\nexport * from './layout';\nexport * from './typography';\nexport * from './media';\nexport * from './data';\nexport * from './form';\nexport * from './interactive';\n\nimport {\n modalDefinition,\n drawerDefinition,\n collapsibleDefinition,\n} from './interactive';\n\nexport const coreComponentDefinitions: ComponentDefinition[] = [\n pageDefinition,\n sectionDefinition,\n containerDefinition,\n columnsDefinition,\n flexDefinition,\n gridDefinition,\n headingDefinition,\n textDefinition,\n paragraphDefinition,\n linkDefinition,\n blockquoteDefinition,\n badgeDefinition,\n codeBlockDefinition,\n imageDefinition,\n videoDefinition,\n iconDefinition,\n htmlEmbedDefinition,\n buttonDefinition,\n buttonSubmitDefinition,\n formDefinition,\n inputDefinition,\n textareaDefinition,\n selectDefinition,\n checkboxDefinition,\n switchDefinition,\n radioGroupDefinition,\n radioDefinition,\n radioItemDefinition,\n fileUploadDefinition,\n collectionDefinition,\n listDefinition,\n listItemDefinition,\n tableDefinition,\n tableRowDefinition,\n tableCellDefinition,\n modalDefinition,\n drawerDefinition,\n collapsibleDefinition,\n];\n\nexport function createDefaultComponentRegistry(): ComponentRegistry {\n const registry = new ComponentRegistry();\n for (const def of coreComponentDefinitions) {\n registry.register(def);\n }\n return registry;\n}\n\n","import { Node, ResponsiveStyles } from '@kubuild/schema';\n\nexport type ComponentCategory = 'layout' | 'typography' | 'media' | 'form' | 'interactive' | 'data' | 'custom';\n\nexport interface ComponentFieldDefinition {\n name: string;\n label: string;\n type: 'string' | 'textarea' | 'number' | 'boolean' | 'select' | 'color' | 'image' | 'action' | 'json';\n defaultValue?: unknown;\n options?: Array<{ label: string; value: unknown }>;\n description?: string;\n}\n\nexport interface ComponentDefaultChildSpec {\n type: string;\n props?: Record<string, unknown>;\n styles?: ResponsiveStyles;\n children?: ComponentDefaultChildSpec[];\n}\n\nexport interface ComponentDefinition<TRenderer = unknown> {\n type: string;\n label: string;\n category: ComponentCategory;\n description?: string;\n icon?: string;\n acceptsChildren?: boolean;\n allowedChildren?: string[];\n disallowedParents?: string[];\n defaultProps?: Record<string, unknown>;\n /** Default responsive style override (base/desktop/tablet/mobile), matching a Node's `styles` field. */\n defaultStyles?: ResponsiveStyles;\n /** Default child node template specs inserted automatically when this component is instantiated. */\n defaultChildren?: ComponentDefaultChildSpec[];\n /**\n * Inspector metadata: describes each editable prop (label, input type, options)\n * so a host editor can render property controls without hardcoding per-type UI.\n */\n propFields?: ComponentFieldDefinition[];\n /**\n * Trait metadata (STORA-210): functional props separated from styling.\n * Traits carry semantic/behavioral attributes (href, target, alt, placeholder,\n * aria-label, id, etc.) that map to HTML attributes at render time.\n * Distinct from `propFields` which may include visual styling knobs;\n * traits are purely functional.\n */\n traits?: import('./traits').ComponentTraits;\n /**\n * Prop schema slot: validates a node's props for this component type.\n * Returns `true`/`[]` (valid), `false` (generic failure), or an array of\n * human-readable error messages.\n */\n validateProps?: (props: Record<string, unknown>) => boolean | string[];\n /**\n * Type-to-renderer mapping slot. Deliberately untyped here (`unknown` by\n * default) so `@kubuild/components` stays framework-agnostic — no React\n * import. A consumer package (e.g. `@kubuild/renderer`) specializes\n * `ComponentDefinition<TRenderer>`/`ComponentRegistry<TRenderer>` with a\n * concrete renderer type (e.g. `React.ComponentType<...>`) and populates\n * or reads this field with that type.\n */\n renderer?: TRenderer;\n /**\n * Host-provided runtime capabilities this component type needs to fully\n * resolve at render time (e.g. `'assetProvider'`, `'actionRegistry'` — see\n * `@kubuild/core`'s `RuntimeContext`). Names correspond to entries a host\n * would list in a `.stora` manifest's `requiredCapabilities` (see\n * `@kubuild/schema`'s `ManifestSchema`) so an importer can check it has\n * everything a document needs before accepting it.\n */\n capabilities?: string[];\n}\n\nexport class ComponentRegistry<TRenderer = unknown> {\n private components = new Map<string, ComponentDefinition<TRenderer>>();\n\n register(definition: ComponentDefinition<TRenderer>, allowOverride = false): void {\n if (!allowOverride && this.components.has(definition.type)) {\n throw new Error(`Component type \"${definition.type}\" is already registered.`);\n }\n this.components.set(definition.type, definition);\n }\n\n unregister(type: string): boolean {\n return this.components.delete(type);\n }\n\n get(type: string): ComponentDefinition<TRenderer> | undefined {\n return this.components.get(type);\n }\n\n has(type: string): boolean {\n return this.components.has(type);\n }\n\n list(): ComponentDefinition<TRenderer>[] {\n return Array.from(this.components.values());\n }\n\n listByCategory(category: ComponentCategory): ComponentDefinition<TRenderer>[] {\n return this.list().filter((c) => c.category === category);\n }\n\n /**\n * Check whether `childType` is a valid insertion target under `parentType`,\n * covering both directions of child policy: the parent's `acceptsChildren`/\n * `allowedChildren` (by type, category, or `'*'`) and the child's own\n * `disallowedParents`. Used by the builder to reject an invalid insertion\n * before a node is constructed, rather than after the fact via `validateNode`.\n */\n canInsertChild(parentType: string, childType: string): { valid: boolean; errors: string[] } {\n const errors: string[] = [];\n const parentDef = this.get(parentType);\n const childDef = this.get(childType);\n\n if (!parentDef) {\n errors.push(`Unknown target parent type: \"${parentType}\".`);\n }\n if (!childDef) {\n errors.push(`Unknown component type: \"${childType}\".`);\n }\n if (!parentDef || !childDef) {\n return { valid: false, errors };\n }\n\n if (!parentDef.acceptsChildren) {\n errors.push(`\"${parentDef.label}\" does not accept children.`);\n } else if (parentDef.allowedChildren) {\n const allowed =\n parentDef.allowedChildren.includes('*') ||\n parentDef.allowedChildren.includes(childType) ||\n parentDef.allowedChildren.includes(childDef.category);\n if (!allowed) {\n errors.push(`\"${parentDef.label}\" does not allow \"${childDef.label}\" as a child.`);\n }\n }\n\n if (childDef.disallowedParents?.includes(parentType)) {\n errors.push(`\"${childDef.label}\" is not allowed inside \"${parentDef.label}\".`);\n }\n\n return { valid: errors.length === 0, errors };\n }\n\n validateNode(node: Node, parentType?: string): { valid: boolean; errors: string[] } {\n const def = this.get(node.type);\n const errors: string[] = [];\n\n if (!def) {\n errors.push(`Unknown component type: \"${node.type}\"`);\n return { valid: false, errors };\n }\n\n if (!def.acceptsChildren && node.children && node.children.length > 0) {\n errors.push(`Component \"${node.type}\" does not accept children.`);\n }\n\n if (def.allowedChildren && node.children) {\n for (const child of node.children) {\n const childCategory = this.get(child.type)?.category;\n const allowed =\n def.allowedChildren.includes('*') ||\n def.allowedChildren.includes(child.type) ||\n (childCategory !== undefined && def.allowedChildren.includes(childCategory));\n if (!allowed) {\n errors.push(`Component \"${node.type}\" does not allow child type \"${child.type}\".`);\n }\n }\n }\n\n if (parentType && def.disallowedParents?.includes(parentType)) {\n errors.push(`Component \"${node.type}\" is not allowed inside parent \"${parentType}\".`);\n }\n\n if (def.validateProps && node.props) {\n const propResult = def.validateProps(node.props);\n if (Array.isArray(propResult) && propResult.length > 0) {\n errors.push(...propResult);\n } else if (propResult === false) {\n errors.push(`Props validation failed for component \"${node.type}\".`);\n }\n }\n\n return { valid: errors.length === 0, errors };\n }\n}\n","/**\n * Trait metadata (STORA-210).\n *\n * A **trait** is a *functional* prop — it carries behavior, semantics, or\n * identity rather than pure visual styling. Examples: `href`, `target`, `alt`,\n * `title`, `placeholder`, `aria-label`, and a custom `id`.\n */\n\n/** The primitive data types a trait value can take. */\nexport type TraitType = 'string' | 'number' | 'boolean' | 'select';\n\n/** A constrained choice for `select`-typed traits. */\nexport interface TraitOption {\n label: string;\n value: unknown;\n}\n\n/**\n * Logical grouping used to organize traits in an inspector UI. Kept as a\n * closed union so hosts can render a stable, ordered set of trait sections.\n */\nexport type TraitGroup =\n | 'link'\n | 'media'\n | 'form'\n | 'accessibility'\n | 'identity'\n | 'behavior'\n | 'semantic';\n\n/** Ordered display order for trait groups in an inspector. */\nexport const TRAIT_GROUP_ORDER: TraitGroup[] = [\n 'identity',\n 'link',\n 'media',\n 'form',\n 'behavior',\n 'semantic',\n 'accessibility',\n];\n\n/** Human-readable labels for each trait group. */\nexport const TRAIT_GROUP_LABELS: Record<TraitGroup, string> = {\n identity: 'Identity',\n link: 'Link',\n media: 'Media',\n form: 'Form',\n behavior: 'Behavior',\n semantic: 'Semantic',\n accessibility: 'Accessibility',\n};\n\n/**\n * Metadata describing a single functional trait on a component.\n *\n * `name` is the prop key on the node's `props` object; `attribute` is the HTML\n * attribute it maps to at render time (when they differ, e.g. `name` → `id`).\n */\nexport interface ComponentTraitDefinition {\n /** Prop key on the node's `props` object (e.g. `'href'`, `'alt'`). */\n name: string;\n /** Human-readable label shown in the inspector. */\n label: string;\n /** Data type of the trait value. */\n type: TraitType;\n /** Default value applied when the trait is not set. */\n defaultValue?: unknown;\n /** Constrained choices for `select`-typed traits. */\n options?: TraitOption[];\n /** Short description of the trait's purpose. */\n description?: string;\n /** The HTML attribute this trait maps to at render time (e.g. `'href'`). */\n attribute?: string;\n /** Whether the trait must be present for the component to be valid. */\n required?: boolean;\n /** Logical grouping for inspector organization. */\n group?: TraitGroup;\n}\n\n/** Convenience alias for a list of trait definitions. */\nexport type ComponentTraits = ComponentTraitDefinition[];\n\n/**\n * Merge helper: applies partial overrides on top of a base trait definition.\n * Used by the factories below so callers can tweak label/default/group without\n * repeating the full shape.\n */\nexport function withOverrides(\n base: ComponentTraitDefinition,\n overrides?: Partial<ComponentTraitDefinition>,\n): ComponentTraitDefinition {\n return overrides ? { ...base, ...overrides } : base;\n}\n\n/**\n * Sort a component's traits into a stable, inspector-friendly order:\n * identity first, then the remaining groups in `TRAIT_GROUP_ORDER`, with\n * ungrouped traits last. Preserves relative order within each group.\n */\nexport function sortTraits(traits: ComponentTraits): ComponentTraits {\n const groupRank = (group?: TraitGroup): number => {\n if (!group) return Number.MAX_SAFE_INTEGER;\n const idx = TRAIT_GROUP_ORDER.indexOf(group);\n return idx === -1 ? Number.MAX_SAFE_INTEGER : idx;\n };\n return [...traits].sort((a, b) => groupRank(a.group) - groupRank(b.group));\n}\n\n/**\n * Collect the union of all trait names declared across a set of component\n * definitions. Useful for building a global trait catalog / search index.\n */\nexport function collectTraitNames(traitsList: ComponentTraits[]): string[] {\n const names = new Set<string>();\n for (const traits of traitsList) {\n for (const trait of traits) {\n names.add(trait.name);\n }\n }\n return Array.from(names);\n}\n\n","import { ComponentTraitDefinition, withOverrides } from './types';\n\n/** `id` — a custom, document-unique identifier for the element. */\nexport function idTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'id',\n label: 'Element ID',\n type: 'string',\n attribute: 'id',\n group: 'identity',\n description: 'A custom, document-unique identifier used for anchors, CSS, and scripting.',\n },\n overrides,\n );\n}\n\n/** `title` — advisory title shown on hover / used as a fallback label. */\nexport function titleTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'title',\n label: 'Title',\n type: 'string',\n attribute: 'title',\n group: 'semantic',\n description: 'Advisory title for the element (tooltip / document title).',\n },\n overrides,\n );\n}\n\n/** `aria-label` — accessible name for elements without visible text. */\nexport function ariaLabelTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'ariaLabel',\n label: 'Accessible Label (aria-label)',\n type: 'string',\n attribute: 'aria-label',\n group: 'accessibility',\n description: 'Accessible name for assistive technology when no visible label exists.',\n },\n overrides,\n );\n}\n\n","import { ComponentTraitDefinition, withOverrides } from './types';\n\n/** `href` — the destination URL for links, buttons, and form actions. */\nexport function hrefTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'href',\n label: 'Link URL',\n type: 'string',\n defaultValue: '#',\n attribute: 'href',\n group: 'link',\n description: 'The destination URL the element navigates to when activated.',\n },\n overrides,\n );\n}\n\n/** `target` — where the linked resource opens (`_self`, `_blank`, ...). */\nexport function targetTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'target',\n label: 'Open In',\n type: 'select',\n defaultValue: '_self',\n attribute: 'target',\n group: 'link',\n options: [\n { label: 'Same tab (_self)', value: '_self' },\n { label: 'New tab (_blank)', value: '_blank' },\n { label: 'Parent frame (_parent)', value: '_parent' },\n { label: 'Top frame (_top)', value: '_top' },\n ],\n description: 'Where the linked resource should open.',\n },\n overrides,\n );\n}\n\n/** `rel` — relationship between the current document and the linked resource. */\nexport function relTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'rel',\n label: 'Relationship (rel)',\n type: 'string',\n defaultValue: '',\n attribute: 'rel',\n group: 'link',\n description: 'Space-separated relationship tokens (e.g. \"noopener noreferrer\").',\n },\n overrides,\n );\n}\n\n","import { ComponentTraitDefinition, withOverrides } from './types';\n\n/** `src` — the source URL for media (image, video). */\nexport function srcTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'src',\n label: 'Source URL',\n type: 'string',\n attribute: 'src',\n group: 'media',\n required: true,\n description: 'The source URL of the media resource.',\n },\n overrides,\n );\n}\n\n/** `alt` — alternative text for media, required for accessibility. */\nexport function altTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'alt',\n label: 'Alt Text',\n type: 'string',\n attribute: 'alt',\n group: 'accessibility',\n required: true,\n description: 'Alternative text describing the media for screen readers and fallback.',\n },\n overrides,\n );\n}\n\n/** `poster` — a preview image shown before a video plays. */\nexport function posterTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'poster',\n label: 'Poster Image URL',\n type: 'string',\n attribute: 'poster',\n group: 'media',\n description: 'A preview image shown before the video starts playing.',\n },\n overrides,\n );\n}\n\n/** `controls` — whether native media controls are shown. */\nexport function controlsTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'controls',\n label: 'Show Controls',\n type: 'boolean',\n defaultValue: true,\n attribute: 'controls',\n group: 'media',\n description: 'Whether to show the native play/pause/volume controls.',\n },\n overrides,\n );\n}\n\n/** `autoplay` — whether media starts playing automatically. */\nexport function autoplayTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'autoplay',\n label: 'Autoplay',\n type: 'boolean',\n defaultValue: false,\n attribute: 'autoplay',\n group: 'media',\n description: 'Whether the media starts playing automatically on load.',\n },\n overrides,\n );\n}\n\n/** `loop` — whether media restarts from the beginning when it ends. */\nexport function loopTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'loop',\n label: 'Loop',\n type: 'boolean',\n defaultValue: false,\n attribute: 'loop',\n group: 'media',\n description: 'Whether the media restarts automatically when it reaches the end.',\n },\n overrides,\n );\n}\n\n/** `muted` — whether media starts with sound muted. */\nexport function mutedTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'muted',\n label: 'Muted',\n type: 'boolean',\n defaultValue: false,\n attribute: 'muted',\n group: 'media',\n description: 'Whether the media starts with the audio muted.',\n },\n overrides,\n );\n}\n\n/** `loading` — native lazy/eager loading hint for images (STORA-213). */\nexport function loadingTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'loading',\n label: 'Loading Mode',\n type: 'select',\n defaultValue: 'lazy',\n attribute: 'loading',\n group: 'media',\n options: [\n { label: 'Lazy (load when near viewport)', value: 'lazy' },\n { label: 'Eager (load immediately)', value: 'eager' },\n ],\n description: 'Native loading hint: lazy defers offscreen images, eager loads immediately.',\n },\n overrides,\n );\n}\n\n","import { ComponentTraitDefinition, withOverrides } from './types';\n\n/** `cite` — the source URL for a blockquote. */\nexport function citeTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'cite',\n label: 'Citation URL (cite)',\n type: 'string',\n attribute: 'cite',\n group: 'semantic',\n description: 'The URL of the source document the quote is taken from.',\n },\n overrides,\n );\n}\n\n/** `colSpan` — the number of columns a table cell spans. */\nexport function colSpanTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'colSpan',\n label: 'Column Span (colSpan)',\n type: 'number',\n defaultValue: 1,\n attribute: 'colspan',\n group: 'semantic',\n description: 'The number of columns the cell spans.',\n },\n overrides,\n );\n}\n\n/** `rowSpan` — the number of rows a table cell spans. */\nexport function rowSpanTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'rowSpan',\n label: 'Row Span (rowSpan)',\n type: 'number',\n defaultValue: 1,\n attribute: 'rowspan',\n group: 'semantic',\n description: 'The number of rows the cell spans.',\n },\n overrides,\n );\n}\n\n/** `tag` — the semantic HTML tag a component renders as (e.g. `ul`/`ol`, `td`/`th`). */\nexport function tagTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'tag',\n label: 'HTML Tag',\n type: 'select',\n attribute: 'tag',\n group: 'semantic',\n description: 'The semantic HTML tag the component renders as.',\n },\n overrides,\n );\n}\n\n","import { ComponentTraitDefinition, withOverrides } from './types';\n\n/** `placeholder` — hint text shown inside an empty form control. */\nexport function placeholderTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'placeholder',\n label: 'Placeholder',\n type: 'string',\n attribute: 'placeholder',\n group: 'form',\n description: 'Hint text shown inside the control when it is empty.',\n },\n overrides,\n );\n}\n\n/** `name` — the form field name submitted with the form data. */\nexport function fieldNameTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'name',\n label: 'Field Name',\n type: 'string',\n attribute: 'name',\n group: 'form',\n required: true,\n description: 'The name submitted with the form data for this field.',\n },\n overrides,\n );\n}\n\n/** `required` — whether the form field must be filled before submission. */\nexport function requiredTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'required',\n label: 'Required',\n type: 'boolean',\n defaultValue: false,\n attribute: 'required',\n group: 'form',\n description: 'Whether the field must be filled before the form can be submitted.',\n },\n overrides,\n );\n}\n\n/** `disabled` — whether the control is non-interactive. */\nexport function disabledTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'disabled',\n label: 'Disabled',\n type: 'boolean',\n defaultValue: false,\n attribute: 'disabled',\n group: 'behavior',\n description: 'Disables the control so it cannot be focused or activated.',\n },\n overrides,\n );\n}\n\n/** `readOnly` — whether the control value can be changed by the user. */\nexport function readOnlyTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'readOnly',\n label: 'Read Only',\n type: 'boolean',\n defaultValue: false,\n attribute: 'readonly',\n group: 'behavior',\n description: 'Prevents the user from modifying the control value.',\n },\n overrides,\n );\n}\n\n/** `action` — the URL a form submits to. */\nexport function actionTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'action',\n label: 'Action URL',\n type: 'string',\n attribute: 'action',\n group: 'form',\n description: 'The URL the form data is submitted to.',\n },\n overrides,\n );\n}\n\n/** `method` — the HTTP method a form uses to submit. */\nexport function methodTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'method',\n label: 'Method',\n type: 'select',\n defaultValue: 'POST',\n attribute: 'method',\n group: 'form',\n options: [\n { label: 'POST', value: 'POST' },\n { label: 'GET', value: 'GET' },\n ],\n description: 'The HTTP method used to submit the form.',\n },\n overrides,\n );\n}\n\n/** `autoComplete` — whether the browser may autofill the form. */\nexport function autoCompleteTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'autoComplete',\n label: 'Auto Complete',\n type: 'select',\n defaultValue: 'on',\n attribute: 'autocomplete',\n group: 'form',\n options: [\n { label: 'On', value: 'on' },\n { label: 'Off', value: 'off' },\n ],\n description: 'Whether the browser may autofill values for this form.',\n },\n overrides,\n );\n}\n\n/** `value` — the value submitted for a checkbox/radio when checked. */\nexport function valueTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'value',\n label: 'Value',\n type: 'string',\n attribute: 'value',\n group: 'form',\n description: 'The value submitted with the form data when the control is selected.',\n },\n overrides,\n );\n}\n\n/** `defaultChecked` — whether a checkbox/radio starts checked. */\nexport function defaultCheckedTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'defaultChecked',\n label: 'Default Checked',\n type: 'boolean',\n defaultValue: false,\n attribute: 'checked',\n group: 'form',\n description: 'Whether the control starts in the checked state.',\n },\n overrides,\n );\n}\n\n/** `defaultValue` — the initial value of a form control. */\nexport function defaultValueTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'defaultValue',\n label: 'Default Value',\n type: 'string',\n attribute: 'value',\n group: 'form',\n description: 'The initial value of the control before the user edits it.',\n },\n overrides,\n );\n}\n\n/** `rows` — the visible number of lines in a textarea. */\nexport function rowsTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'rows',\n label: 'Rows',\n type: 'number',\n defaultValue: 4,\n attribute: 'rows',\n group: 'form',\n description: 'The number of visible text lines in the textarea.',\n },\n overrides,\n );\n}\n\n/** `type` — the input type of a form control (text, email, number, ...). */\nexport function inputTypeTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'type',\n label: 'Input Type',\n type: 'select',\n defaultValue: 'text',\n attribute: 'type',\n group: 'form',\n description: 'The semantic input type of the control.',\n },\n overrides,\n );\n}\n\n/** `buttonType` — the button's form behavior (`button`, `submit`, `reset`). */\nexport function buttonTypeTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'buttonType',\n label: 'Button Type',\n type: 'select',\n defaultValue: 'button',\n attribute: 'type',\n group: 'form',\n options: [\n { label: 'Button', value: 'button' },\n { label: 'Submit Form (submit)', value: 'submit' },\n { label: 'Reset Form (reset)', value: 'reset' },\n ],\n description: 'The button’s behavior inside a form.',\n },\n overrides,\n );\n}\n\n/** `preventDefault` — whether the form intercepts the native submit and handles it in JS. */\nexport function preventDefaultTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'preventDefault',\n label: 'Prevent Default',\n type: 'boolean',\n defaultValue: true,\n group: 'form',\n description: 'Intercept the native browser submit and handle it via the KUBUILD action pipeline instead.',\n },\n overrides,\n );\n}\n\n/** `scrollToFirstError` — whether the form auto-scrolls to the first invalid field on submit. */\nexport function scrollToFirstErrorTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'scrollToFirstError',\n label: 'Scroll to First Error',\n type: 'boolean',\n defaultValue: true,\n group: 'form',\n description: 'Automatically scroll to and focus the first invalid field when submission fails validation.',\n },\n overrides,\n );\n}\n\n/** `resetOnSubmit` — whether the form resets all fields to their initial values after a successful submit. */\nexport function resetOnSubmitTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'resetOnSubmit',\n label: 'Reset on Submit',\n type: 'boolean',\n defaultValue: false,\n group: 'form',\n description: 'Reset all fields to their initial values after a successful form submission.',\n },\n overrides,\n );\n}\n\n/** `pattern` — a regex the field value must match for the input to be valid. */\nexport function patternTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'pattern',\n label: 'Pattern (regex)',\n type: 'string',\n attribute: 'pattern',\n group: 'form',\n description: 'A regular expression the input value must match to pass validation.',\n },\n overrides,\n );\n}\n\n/** `minLength` — the minimum number of characters required. */\nexport function minLengthTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'minLength',\n label: 'Min Length',\n type: 'number',\n attribute: 'minlength',\n group: 'form',\n description: 'The minimum number of characters the user must enter.',\n },\n overrides,\n );\n}\n\n/** `maxLength` — the maximum number of characters allowed. */\nexport function maxLengthTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'maxLength',\n label: 'Max Length',\n type: 'number',\n attribute: 'maxlength',\n group: 'form',\n description: 'The maximum number of characters the user is allowed to enter.',\n },\n overrides,\n );\n}\n\n/** `prefixIcon` — an icon name displayed before the input content (e.g. Lucide icon name). */\nexport function prefixIconTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'prefixIcon',\n label: 'Prefix Icon',\n type: 'string',\n group: 'form',\n description: 'Lucide icon name displayed before the input value (e.g. \"mail\", \"search\").',\n },\n overrides,\n );\n}\n\n/** `suffixIcon` — an icon name displayed after the input content (e.g. Lucide icon name). */\nexport function suffixIconTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'suffixIcon',\n label: 'Suffix Icon',\n type: 'string',\n group: 'form',\n description: 'Lucide icon name displayed after the input value (e.g. \"eye\", \"check\").',\n },\n overrides,\n );\n}\n\n/** `helperText` — a short hint displayed below the input describing its expected value. */\nexport function helperTextTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'helperText',\n label: 'Helper Text',\n type: 'string',\n group: 'form',\n description: 'A short message displayed below the input to guide the user (e.g. \"Must be at least 8 characters\").',\n },\n overrides,\n );\n}\n\n/** `resize` — the CSS resize behavior of a textarea. */\nexport function resizeTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'resize',\n label: 'Resize',\n type: 'select',\n defaultValue: 'vertical',\n group: 'form',\n options: [\n { label: 'Vertical only', value: 'vertical' },\n { label: 'Horizontal only', value: 'horizontal' },\n { label: 'Both', value: 'both' },\n { label: 'None', value: 'none' },\n ],\n description: 'Controls whether and how the user can resize the textarea.',\n },\n overrides,\n );\n}\n\n/** `autoGrow` — whether the textarea automatically grows in height as the user types. */\nexport function autoGrowTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'autoGrow',\n label: 'Auto Grow',\n type: 'boolean',\n defaultValue: false,\n group: 'form',\n description: 'Automatically expand the textarea height to fit the content without scrolling.',\n },\n overrides,\n );\n}\n\n/** `maxCharCount` — the maximum character count with a visible counter shown below the textarea. */\nexport function maxCharCountTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'maxCharCount',\n label: 'Max Character Count',\n type: 'number',\n group: 'form',\n description: 'Maximum character limit displayed as a counter below the textarea (e.g. \"120 / 500\").',\n },\n overrides,\n );\n}\n\n/** `optionsList` — the list of options for a select dropdown, each with a label and value. */\nexport function optionsListTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'options',\n label: 'Options',\n type: 'string',\n group: 'form',\n description: 'The list of dropdown options, each with a label and value. Editable via the inspector trait panel.',\n },\n overrides,\n );\n}\n\n/** `labelText` — the visible label text displayed next to a boolean control. */\nexport function labelTextTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'label',\n label: 'Label Text',\n type: 'string',\n group: 'form',\n description: 'The visible text label displayed alongside the control.',\n },\n overrides,\n );\n}\n\n/** `indeterminate` — whether the checkbox renders in the indeterminate (mixed) visual state. */\nexport function indeterminateTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'indeterminate',\n label: 'Indeterminate',\n type: 'boolean',\n defaultValue: false,\n group: 'form',\n description: 'Renders the checkbox in a mixed/indeterminate visual state (neither checked nor unchecked).',\n },\n overrides,\n );\n}\n\n/** `switchSize` — the visual size of a switch control. */\nexport function switchSizeTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'switchSize',\n label: 'Size',\n type: 'select',\n defaultValue: 'md',\n group: 'form',\n options: [\n { label: 'Small', value: 'sm' },\n { label: 'Medium', value: 'md' },\n { label: 'Large', value: 'lg' },\n ],\n description: 'The visual size of the switch toggle.',\n },\n overrides,\n );\n}\n\n/** `orientation` — the layout direction for a group of controls (horizontal or vertical). */\nexport function orientationTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'orientation',\n label: 'Orientation',\n type: 'select',\n defaultValue: 'vertical',\n group: 'form',\n options: [\n { label: 'Vertical', value: 'vertical' },\n { label: 'Horizontal', value: 'horizontal' },\n ],\n description: 'The layout direction of the child controls (vertical stack or horizontal row).',\n },\n overrides,\n );\n}\n\n/** `defaultSelected` — the initially selected value in a radio group. */\nexport function defaultSelectedTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'defaultSelected',\n label: 'Default Selected',\n type: 'string',\n group: 'form',\n description: 'The value of the radio item that is selected by default.',\n },\n overrides,\n );\n}\n\n/** `accept` — the allowed file MIME types or extensions (e.g. \"image/*,.pdf\"). */\nexport function acceptTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'accept',\n label: 'Accepted File Types',\n type: 'string',\n attribute: 'accept',\n defaultValue: '*/*',\n group: 'form',\n description: 'Comma-separated list of MIME types or file extensions accepted (e.g. \"image/*,.pdf,.docx\").',\n },\n overrides,\n );\n}\n\n/** `maxFileSize` — the maximum permitted file size in megabytes (MB). */\nexport function maxFileSizeTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'maxFileSize',\n label: 'Max File Size (MB)',\n type: 'number',\n defaultValue: 10,\n group: 'form',\n description: 'The maximum allowable file size in megabytes (MB).',\n },\n overrides,\n );\n}\n\n/** `multiple` — whether the user may select multiple files simultaneously. */\nexport function multipleTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'multiple',\n label: 'Allow Multiple Files',\n type: 'boolean',\n attribute: 'multiple',\n defaultValue: false,\n group: 'form',\n description: 'Allow multiple files to be selected and uploaded at once.',\n },\n overrides,\n );\n}\n\n/** `showPreview` — whether to render a thumbnail or list preview for selected files. */\nexport function showPreviewTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'showPreview',\n label: 'Show Preview',\n type: 'boolean',\n defaultValue: true,\n group: 'form',\n description: 'Display an interactive preview (image thumbnail or file list with badges) for selected files.',\n },\n overrides,\n );\n}\n\n/** `loadingText` — alternative label displayed while form is submitting. */\nexport function loadingTextTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'loadingText',\n label: 'Loading Text',\n type: 'string',\n defaultValue: 'Submitting...',\n group: 'behavior',\n description: 'Text displayed on the button while the form submission is in progress.',\n },\n overrides,\n );\n}\n\n/** `showSpinner` — whether an animated loading spinner is displayed during submission. */\nexport function showSpinnerTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'showSpinner',\n label: 'Show Loading Spinner',\n type: 'boolean',\n defaultValue: true,\n group: 'behavior',\n description: 'Automatically show an animated loading spinner icon while form is submitting.',\n },\n overrides,\n );\n}\n\n/** `autoDisableOnSubmit` — whether the submit button is automatically disabled during submission. */\nexport function autoDisableOnSubmitTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'autoDisableOnSubmit',\n label: 'Auto Disable on Submit',\n type: 'boolean',\n defaultValue: true,\n group: 'behavior',\n description: 'Automatically disable the button to prevent duplicate submissions while the form is submitting.',\n },\n overrides,\n );\n}\n\n","/**\n * Layout nesting policy (STORA-021): page > section > container/columns > content.\n * `page` is never a valid child anywhere (excluded from every allowedChildren list\n * below, and explicitly barred via disallowedParents) so a \"page\" node can never\n * appear nested inside another node, and content nodes can never become the root\n * (enforced separately by the schema's RootPageNodeSchema refinement).\n */\nexport const LAYOUT_PARENTS = ['page', 'section', 'container', 'columns', 'flex', 'grid', 'modal', 'drawer', 'collapsible'];\n\nexport const CONTENT_CHILD_TYPES = [\n 'heading',\n 'text',\n 'paragraph',\n 'link',\n 'blockquote',\n 'badge',\n 'code-block',\n 'image',\n 'video',\n 'icon',\n 'html-embed',\n 'button',\n 'button-submit',\n 'form',\n 'input',\n 'textarea',\n 'select',\n 'checkbox',\n 'switch',\n 'radio-group',\n 'radio',\n 'radio-item',\n 'file-upload',\n 'list',\n 'table',\n 'collection',\n 'custom',\n 'modal',\n 'drawer',\n 'collapsible',\n];\n\n","import { ComponentDefinition } from '../../registry';\nimport { idTrait, titleTrait } from '../../traits';\nimport { CONTENT_CHILD_TYPES, LAYOUT_PARENTS } from '../constants';\n\nexport const pageDefinition: ComponentDefinition = {\n type: 'page',\n label: 'Page',\n category: 'layout',\n icon: 'layout',\n acceptsChildren: true,\n allowedChildren: ['section', 'custom'],\n disallowedParents: [...LAYOUT_PARENTS, ...CONTENT_CHILD_TYPES, 'list-item', 'table-row', 'table-cell'],\n defaultProps: { title: 'New Page' },\n traits: [\n titleTrait({ defaultValue: 'New Page', description: 'The document title shown in the browser tab and search results.' }),\n idTrait(),\n ],\n defaultStyles: { base: { minHeight: '100vh', backgroundColor: '#ffffff' } },\n};\n\n","import { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait } from '../../traits';\nimport { CONTENT_CHILD_TYPES } from '../constants';\n\nexport const sectionDefinition: ComponentDefinition = {\n type: 'section',\n label: 'Section',\n category: 'layout',\n icon: 'rows',\n acceptsChildren: true,\n allowedChildren: ['container', 'columns', 'flex', 'grid', ...CONTENT_CHILD_TYPES],\n defaultProps: {},\n traits: [\n idTrait(),\n ariaLabelTrait({ description: 'Accessible name for the section landmark.' }),\n ],\n defaultStyles: {\n base: {\n paddingTop: '48px',\n paddingBottom: '48px',\n paddingLeft: '16px',\n paddingRight: '16px',\n },\n tablet: {\n paddingTop: '32px',\n paddingBottom: '32px',\n },\n mobile: {\n paddingTop: '24px',\n paddingBottom: '24px',\n paddingLeft: '16px',\n paddingRight: '16px',\n },\n },\n};\n\n","import { ComponentDefinition } from '../../registry';\nimport { idTrait } from '../../traits';\nimport { CONTENT_CHILD_TYPES } from '../constants';\n\nexport const containerDefinition: ComponentDefinition = {\n type: 'container',\n label: 'Container',\n category: 'layout',\n icon: 'box',\n acceptsChildren: true,\n allowedChildren: ['columns', 'flex', 'grid', ...CONTENT_CHILD_TYPES],\n defaultProps: { maxWidth: '1200px' },\n traits: [\n idTrait(),\n ],\n defaultStyles: {\n base: {\n maxWidth: '1200px',\n margin: '0 auto',\n width: '100%',\n },\n tablet: {\n maxWidth: '720px',\n },\n mobile: {\n maxWidth: '100%',\n paddingLeft: '16px',\n paddingRight: '16px',\n },\n },\n};\n\n","import { ComponentDefinition } from '../../registry';\nimport { idTrait } from '../../traits';\nimport { CONTENT_CHILD_TYPES } from '../constants';\n\nexport const columnsDefinition: ComponentDefinition = {\n type: 'columns',\n label: 'Columns',\n category: 'layout',\n icon: 'columns',\n acceptsChildren: true,\n allowedChildren: ['container', 'flex', 'grid', ...CONTENT_CHILD_TYPES],\n defaultProps: { columns: 2, gap: '16px' },\n traits: [\n idTrait(),\n ],\n defaultStyles: {\n base: {\n display: 'grid',\n gridTemplateColumns: 'repeat(2, minmax(0, 1fr))',\n gap: '16px',\n },\n tablet: {\n gridTemplateColumns: 'repeat(2, minmax(0, 1fr))',\n gap: '12px',\n },\n mobile: {\n gridTemplateColumns: 'repeat(1, minmax(0, 1fr))',\n gap: '12px',\n },\n },\n};\n\n","import { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait } from '../../traits';\n\n/**\n * Flex Frame Component Definition (STORA-102)\n * Auto Layout Flexbox container supporting any child with default column direction and 16px gap.\n */\nexport const flexDefinition: ComponentDefinition = {\n type: 'flex',\n label: 'Flex',\n category: 'layout',\n icon: 'flex',\n acceptsChildren: true,\n allowedChildren: ['*'],\n disallowedParents: ['page'],\n defaultProps: {},\n traits: [\n idTrait(),\n ariaLabelTrait({ description: 'Accessible name for the flex container.' }),\n ],\n defaultStyles: {\n base: {\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n },\n },\n};\n","import { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait } from '../../traits';\n\n/**\n * CSS Grid Component Definition (STORA-111)\n * Visual CSS Grid container with default 3 equal columns and 16px gap.\n */\nexport const gridDefinition: ComponentDefinition = {\n type: 'grid',\n label: 'Grid',\n category: 'layout',\n icon: 'grid',\n acceptsChildren: true,\n allowedChildren: ['*'],\n disallowedParents: ['page'],\n defaultProps: {\n columns: 3,\n gap: '16px',\n },\n traits: [\n idTrait(),\n ariaLabelTrait({ description: 'Accessible name for the grid container.' }),\n ],\n defaultStyles: {\n base: {\n display: 'grid',\n gridTemplateColumns: 'repeat(3, minmax(0, 1fr))',\n gap: '16px',\n },\n tablet: {\n gridTemplateColumns: 'repeat(2, minmax(0, 1fr))',\n gap: '16px',\n },\n mobile: {\n gridTemplateColumns: 'repeat(1, minmax(0, 1fr))',\n gap: '16px',\n },\n },\n};\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait, titleTrait } from '../../traits';\n\nexport const headingDefinition: ComponentDefinition = {\n type: 'heading',\n label: 'Heading',\n category: 'typography',\n icon: 'heading',\n acceptsChildren: false,\n defaultProps: { text: 'Heading Text', level: 2 },\n propFields: [\n { name: 'text', label: 'Text', type: 'string', defaultValue: 'Heading Text' },\n {\n name: 'level',\n label: 'Title Size',\n type: 'select',\n defaultValue: 2,\n options: [\n { label: 'H1 - Main Title (Extra Large)', value: 1 },\n { label: 'H2 - Subtitle (Large)', value: 2 },\n { label: 'H3 - Section Title (Medium)', value: 3 },\n { label: 'H4 - Subsection Title (Small)', value: 4 },\n { label: 'H5 - Small Title (Extra Small)', value: 5 },\n { label: 'H6 - Micro Title (Smallest)', value: 6 },\n ],\n },\n ],\n traits: [\n idTrait(),\n titleTrait({ description: 'Advisory title shown when hovering the heading.' }),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (!isVariableBinding(props.text) && (typeof props.text !== 'string' || props.text.trim().length === 0)) {\n errors.push('Heading requires a non-empty \"text\".');\n }\n if (props.level !== undefined && (typeof props.level !== 'number' || props.level < 1 || props.level > 6)) {\n errors.push('Heading \"level\" must be a number between 1 and 6.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n fontSize: '32px',\n fontWeight: '700',\n color: '#111827',\n margin: '0 0 16px 0',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait, titleTrait } from '../../traits';\n\nexport const textDefinition: ComponentDefinition = {\n type: 'text',\n label: 'Text',\n category: 'typography',\n icon: 'type',\n acceptsChildren: false,\n defaultProps: { content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.' },\n propFields: [\n { name: 'content', label: 'Content', type: 'string', defaultValue: 'Lorem ipsum dolor sit amet.' },\n ],\n traits: [\n idTrait(),\n titleTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n if (!isVariableBinding(props.content) && (typeof props.content !== 'string' || props.content.trim().length === 0)) {\n return ['Text requires a non-empty \"content\".'];\n }\n return true;\n },\n defaultStyles: {\n base: {\n fontSize: '16px',\n color: '#4b5563',\n lineHeight: '1.6',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait, titleTrait } from '../../traits';\n\nexport const paragraphDefinition: ComponentDefinition = {\n type: 'paragraph',\n label: 'Paragraph',\n category: 'typography',\n icon: 'paragraph',\n acceptsChildren: false,\n defaultProps: {\n text: 'A paragraph of text with clean semantic typography.',\n },\n propFields: [\n {\n name: 'text',\n label: 'Text',\n type: 'string',\n defaultValue: 'A paragraph of text with clean semantic typography.',\n },\n ],\n traits: [\n idTrait(),\n titleTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n const textVal = props.text ?? props.content;\n if (\n textVal !== undefined &&\n !isVariableBinding(textVal) &&\n (typeof textVal !== 'string' || textVal.trim().length === 0)\n ) {\n errors.push('Paragraph requires a non-empty \"text\".');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n fontSize: '16px',\n color: '#4b5563',\n lineHeight: '1.6',\n margin: '0 0 16px 0',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, hrefTrait, idTrait, relTrait, targetTrait, titleTrait } from '../../traits';\n\nexport const linkDefinition: ComponentDefinition = {\n type: 'link',\n label: 'Link',\n category: 'typography',\n icon: 'link',\n acceptsChildren: false,\n defaultProps: {\n text: 'Click here',\n href: '#',\n target: '_self',\n rel: '',\n },\n propFields: [\n { name: 'text', label: 'Link Text', type: 'string', defaultValue: 'Click here' },\n { name: 'href', label: 'URL (href)', type: 'string', defaultValue: '#' },\n {\n name: 'target',\n label: 'Target',\n type: 'select',\n defaultValue: '_self',\n options: [\n { label: 'Same tab (_self)', value: '_self' },\n { label: 'New tab (_blank)', value: '_blank' },\n { label: 'Parent (_parent)', value: '_parent' },\n { label: 'Top (_top)', value: '_top' },\n ],\n },\n { name: 'rel', label: 'Relationship (rel)', type: 'string', defaultValue: '' },\n ],\n traits: [\n hrefTrait(),\n targetTrait(),\n relTrait(),\n idTrait(),\n titleTrait({ description: 'Advisory title shown when hovering the link.' }),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (\n props.text !== undefined &&\n !isVariableBinding(props.text) &&\n (typeof props.text !== 'string' || props.text.trim().length === 0)\n ) {\n errors.push('Link requires a non-empty \"text\".');\n }\n if (props.href !== undefined && typeof props.href !== 'string' && !isVariableBinding(props.href)) {\n errors.push('Link \"href\" must be a string when provided.');\n }\n if (props.target !== undefined && !isVariableBinding(props.target)) {\n const allowedTargets = ['_self', '_blank', '_parent', '_top'];\n if (typeof props.target !== 'string' || !allowedTargets.includes(props.target)) {\n errors.push(`Link \"target\" must be one of: ${allowedTargets.join(', ')}.`);\n }\n }\n if (props.rel !== undefined && typeof props.rel !== 'string' && !isVariableBinding(props.rel)) {\n errors.push('Link \"rel\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n color: '#2563eb',\n textDecoration: 'underline',\n cursor: 'pointer',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, citeTrait, idTrait, titleTrait } from '../../traits';\n\nexport const blockquoteDefinition: ComponentDefinition = {\n type: 'blockquote',\n label: 'Blockquote',\n category: 'typography',\n icon: 'blockquote',\n acceptsChildren: true,\n allowedChildren: [\n 'paragraph',\n 'text',\n 'heading',\n 'link',\n 'badge',\n 'code-block',\n 'image',\n 'video',\n 'icon',\n 'html-embed',\n 'custom',\n ],\n defaultProps: {\n text: '“Simplicity is the soul of efficiency.”',\n },\n propFields: [\n {\n name: 'text',\n label: 'Quote Text',\n type: 'string',\n defaultValue: '“Simplicity is the soul of efficiency.”',\n },\n { name: 'cite', label: 'Citation URL (cite)', type: 'string' },\n ],\n traits: [\n citeTrait(),\n idTrait(),\n titleTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.text !== undefined && typeof props.text !== 'string' && !isVariableBinding(props.text)) {\n errors.push('Blockquote \"text\" must be a string when provided.');\n }\n if (props.cite !== undefined && typeof props.cite !== 'string' && !isVariableBinding(props.cite)) {\n errors.push('Blockquote \"cite\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n borderLeftWidth: '4px',\n borderLeftColor: '#3b82f6',\n borderLeftStyle: 'solid',\n paddingTop: '8px',\n paddingBottom: '8px',\n paddingLeft: '16px',\n paddingRight: '12px',\n margin: '0 0 16px 0',\n fontStyle: 'italic',\n color: '#4b5563',\n backgroundColor: '#f8fafc',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait, titleTrait } from '../../traits';\n\nexport const badgeDefinition: ComponentDefinition = {\n type: 'badge',\n label: 'Badge',\n category: 'typography',\n icon: 'badge',\n acceptsChildren: false,\n defaultProps: {\n text: 'Badge',\n variant: 'default',\n },\n propFields: [\n { name: 'text', label: 'Badge Text', type: 'string', defaultValue: 'Badge' },\n {\n name: 'variant',\n label: 'Variant',\n type: 'select',\n defaultValue: 'default',\n options: [\n { label: 'Default', value: 'default' },\n { label: 'Success', value: 'success' },\n { label: 'Warning', value: 'warning' },\n { label: 'Danger', value: 'danger' },\n { label: 'Info', value: 'info' },\n ],\n },\n ],\n traits: [\n idTrait(),\n titleTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (\n props.text !== undefined &&\n !isVariableBinding(props.text) &&\n (typeof props.text !== 'string' || props.text.trim().length === 0)\n ) {\n errors.push('Badge requires a non-empty \"text\".');\n }\n if (props.variant !== undefined && typeof props.variant !== 'string' && !isVariableBinding(props.variant)) {\n errors.push('Badge \"variant\" must be a string.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n paddingLeft: '10px',\n paddingRight: '10px',\n paddingTop: '2px',\n paddingBottom: '2px',\n borderRadius: '9999px',\n fontSize: '12px',\n fontWeight: '500',\n lineHeight: '1.4',\n backgroundColor: '#e0e7ff',\n color: '#3730a3',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait, titleTrait } from '../../traits';\n\nexport const codeBlockDefinition: ComponentDefinition = {\n type: 'code-block',\n label: 'Code Block',\n category: 'typography',\n icon: 'code-block',\n acceptsChildren: false,\n defaultProps: {\n code: 'console.log(\"Hello, world!\");',\n language: 'javascript',\n },\n propFields: [\n {\n name: 'code',\n label: 'Code',\n type: 'textarea',\n defaultValue: 'console.log(\"Hello, world!\");',\n },\n {\n name: 'language',\n label: 'Language',\n type: 'string',\n defaultValue: 'javascript',\n },\n ],\n traits: [\n idTrait(),\n titleTrait(),\n ariaLabelTrait({ description: 'Accessible label describing what the code example shows.' }),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.code !== undefined && typeof props.code !== 'string' && !isVariableBinding(props.code)) {\n errors.push('Code Block \"code\" must be a string when provided.');\n }\n if (props.language !== undefined && typeof props.language !== 'string' && !isVariableBinding(props.language)) {\n errors.push('Code Block \"language\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n backgroundColor: '#1e293b',\n color: '#f8fafc',\n padding: '16px',\n borderRadius: '8px',\n fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace',\n fontSize: '14px',\n lineHeight: '1.5',\n overflowX: 'auto',\n margin: '0 0 16px 0',\n whiteSpace: 'pre',\n },\n },\n};\n\n","import { isAssetReference, isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { altTrait, ariaLabelTrait, idTrait, loadingTrait, srcTrait, titleTrait } from '../../traits';\n\nexport const imageDefinition: ComponentDefinition = {\n type: 'image',\n label: 'Image',\n category: 'media',\n icon: 'image',\n acceptsChildren: false,\n capabilities: ['assetProvider'],\n defaultProps: {\n src: 'https://images.unsplash.com/photo-1579546929518-9e396f3cc809?w=800&auto=format&fit=crop&q=80',\n alt: 'Default image',\n width: 600,\n height: 400,\n },\n propFields: [\n { name: 'src', label: 'Image URL', type: 'string' },\n { name: 'asset', label: 'Asset Reference', type: 'json' },\n { name: 'alt', label: 'Alt Text', type: 'string', defaultValue: 'Default image' },\n { name: 'width', label: 'Width', type: 'number' },\n { name: 'height', label: 'Height', type: 'number' },\n ],\n traits: [\n srcTrait(),\n altTrait({ defaultValue: 'Default image' }),\n loadingTrait(),\n idTrait(),\n titleTrait(),\n ariaLabelTrait({ description: 'Override the alt text for assistive technology (rarely needed).' }),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n const hasSrc = (typeof props.src === 'string' && props.src.trim().length > 0) || isVariableBinding(props.src);\n const hasAsset = isAssetReference(props.asset);\n if (!hasSrc && !hasAsset) {\n errors.push('Image requires either a non-empty \"src\" URL or a valid \"asset\" reference.');\n }\n const hasAlt = (typeof props.alt === 'string' && props.alt.trim().length > 0) || isVariableBinding(props.alt);\n if (!hasAlt) {\n errors.push('Image requires non-empty \"alt\" text.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n maxWidth: '100%',\n height: 'auto',\n borderRadius: '8px',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport {\n ariaLabelTrait,\n autoplayTrait,\n controlsTrait,\n idTrait,\n loopTrait,\n mutedTrait,\n posterTrait,\n srcTrait,\n titleTrait,\n} from '../../traits';\n\nexport const videoDefinition: ComponentDefinition = {\n type: 'video',\n label: 'Video',\n category: 'media',\n icon: 'video',\n acceptsChildren: false,\n defaultProps: {\n src: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ',\n provider: 'auto',\n poster: '',\n controls: true,\n autoplay: false,\n loop: false,\n muted: false,\n aspectRatio: '16:9',\n },\n propFields: [\n {\n name: 'src',\n label: 'Video URL (HTML5, YouTube, Vimeo)',\n type: 'string',\n defaultValue: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ',\n },\n {\n name: 'provider',\n label: 'Provider',\n type: 'select',\n defaultValue: 'auto',\n options: [\n { label: 'Auto Detect', value: 'auto' },\n { label: 'HTML5 Video', value: 'html5' },\n { label: 'YouTube Embed', value: 'youtube' },\n { label: 'Vimeo Embed', value: 'vimeo' },\n ],\n },\n { name: 'poster', label: 'Poster Image URL', type: 'string', defaultValue: '' },\n { name: 'controls', label: 'Show Controls', type: 'boolean', defaultValue: true },\n { name: 'autoplay', label: 'Autoplay', type: 'boolean', defaultValue: false },\n { name: 'loop', label: 'Loop', type: 'boolean', defaultValue: false },\n { name: 'muted', label: 'Muted', type: 'boolean', defaultValue: false },\n {\n name: 'aspectRatio',\n label: 'Aspect Ratio',\n type: 'select',\n defaultValue: '16:9',\n options: [\n { label: '16:9 (Widescreen)', value: '16:9' },\n { label: '4:3 (Standard)', value: '4:3' },\n { label: '1:1 (Square)', value: '1:1' },\n { label: '9:16 (Vertical)', value: '9:16' },\n { label: 'Auto', value: 'auto' },\n ],\n },\n ],\n traits: [\n srcTrait(),\n posterTrait(),\n controlsTrait(),\n autoplayTrait(),\n loopTrait(),\n mutedTrait(),\n idTrait(),\n titleTrait(),\n ariaLabelTrait({ description: 'Accessible name summarizing the video content.' }),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.src !== undefined && typeof props.src !== 'string' && !isVariableBinding(props.src)) {\n errors.push('Video \"src\" must be a string when provided.');\n }\n if (props.provider !== undefined && !isVariableBinding(props.provider)) {\n const allowed = ['auto', 'html5', 'youtube', 'vimeo'];\n if (typeof props.provider !== 'string' || !allowed.includes(props.provider)) {\n errors.push(`Video \"provider\" must be one of: ${allowed.join(', ')}.`);\n }\n }\n if (props.controls !== undefined && typeof props.controls !== 'boolean' && !isVariableBinding(props.controls)) {\n errors.push('Video \"controls\" must be a boolean.');\n }\n if (props.autoplay !== undefined && typeof props.autoplay !== 'boolean' && !isVariableBinding(props.autoplay)) {\n errors.push('Video \"autoplay\" must be a boolean.');\n }\n if (props.loop !== undefined && typeof props.loop !== 'boolean' && !isVariableBinding(props.loop)) {\n errors.push('Video \"loop\" must be a boolean.');\n }\n if (props.muted !== undefined && typeof props.muted !== 'boolean' && !isVariableBinding(props.muted)) {\n errors.push('Video \"muted\" must be a boolean.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n width: '100%',\n maxWidth: '800px',\n borderRadius: '8px',\n overflow: 'hidden',\n display: 'block',\n margin: '0 0 16px 0',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait, titleTrait } from '../../traits';\n\nexport const iconDefinition: ComponentDefinition = {\n type: 'icon',\n label: 'Icon',\n category: 'media',\n icon: 'sparkles',\n acceptsChildren: false,\n defaultProps: {\n name: 'star',\n size: 24,\n color: '#2563eb',\n strokeWidth: 2,\n },\n propFields: [\n { name: 'name', label: 'Icon Name (Lucide)', type: 'string', defaultValue: 'star' },\n { name: 'size', label: 'Size (px)', type: 'number', defaultValue: 24 },\n { name: 'color', label: 'Color', type: 'color', defaultValue: '#2563eb' },\n { name: 'strokeWidth', label: 'Stroke Width', type: 'number', defaultValue: 2 },\n ],\n traits: [\n idTrait(),\n titleTrait(),\n ariaLabelTrait({ required: true, description: 'Required: describes what the icon represents for screen readers.' }),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (\n props.name !== undefined &&\n !isVariableBinding(props.name) &&\n (typeof props.name !== 'string' || props.name.trim().length === 0)\n ) {\n errors.push('Icon requires a non-empty \"name\".');\n }\n if (props.size !== undefined && !isVariableBinding(props.size)) {\n if (typeof props.size !== 'number' || props.size < 0) {\n errors.push('Icon \"size\" must be a non-negative number.');\n }\n }\n if (props.strokeWidth !== undefined && !isVariableBinding(props.strokeWidth)) {\n if (typeof props.strokeWidth !== 'number' || props.strokeWidth < 0) {\n errors.push('Icon \"strokeWidth\" must be a non-negative number.');\n }\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait } from '../../traits';\n\nexport const htmlEmbedDefinition: ComponentDefinition = {\n type: 'html-embed',\n label: 'HTML Embed',\n category: 'custom',\n icon: 'code',\n acceptsChildren: false,\n defaultProps: {\n html: '<div style=\"padding: 16px; background: #f1f5f9; border-radius: 8px; text-align: center; font-family: sans-serif; color: #475569;\">Custom HTML Embed Content</div>',\n },\n propFields: [\n {\n name: 'html',\n label: 'HTML / Embed Code',\n type: 'textarea',\n defaultValue: '<div style=\"padding: 16px; background: #f1f5f9; border-radius: 8px; text-align: center; font-family: sans-serif; color: #475569;\">Custom HTML Embed Content</div>',\n },\n ],\n traits: [\n idTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.html !== undefined && typeof props.html !== 'string' && !isVariableBinding(props.html)) {\n errors.push('HTML Embed \"html\" must be a string.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n width: '100%',\n margin: '0 0 16px 0',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, colSpanTrait, idTrait, rowSpanTrait } from '../../traits';\n\nexport const tableDefinition: ComponentDefinition = {\n type: 'table',\n label: 'Table',\n category: 'layout',\n icon: 'table',\n acceptsChildren: true,\n allowedChildren: ['table-row'],\n defaultProps: {\n striped: false,\n bordered: true,\n compact: false,\n },\n defaultChildren: [\n {\n type: 'table-row',\n children: [\n { type: 'table-cell', props: { tag: 'th', text: 'Header 1' } },\n { type: 'table-cell', props: { tag: 'th', text: 'Header 2' } },\n ],\n },\n {\n type: 'table-row',\n children: [\n { type: 'table-cell', props: { tag: 'td', text: 'Data 1' } },\n { type: 'table-cell', props: { tag: 'td', text: 'Data 2' } },\n ],\n },\n ],\n propFields: [\n { name: 'striped', label: 'Striped Rows', type: 'boolean', defaultValue: false },\n { name: 'bordered', label: 'Bordered', type: 'boolean', defaultValue: true },\n { name: 'compact', label: 'Compact Spacing', type: 'boolean', defaultValue: false },\n ],\n traits: [\n idTrait(),\n ariaLabelTrait({ description: 'Required: provides a caption summary for the table when no visible caption exists.' }),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.striped !== undefined && typeof props.striped !== 'boolean' && !isVariableBinding(props.striped)) {\n errors.push('Table \"striped\" must be a boolean.');\n }\n if (props.bordered !== undefined && typeof props.bordered !== 'boolean' && !isVariableBinding(props.bordered)) {\n errors.push('Table \"bordered\" must be a boolean.');\n }\n if (props.compact !== undefined && typeof props.compact !== 'boolean' && !isVariableBinding(props.compact)) {\n errors.push('Table \"compact\" must be a boolean.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n width: '100%',\n margin: '0 0 16px 0',\n borderCollapse: 'collapse',\n },\n },\n};\n\nexport const tableRowDefinition: ComponentDefinition = {\n type: 'table-row',\n label: 'Table Row',\n category: 'layout',\n icon: 'table-row',\n acceptsChildren: true,\n allowedChildren: ['table-cell'],\n disallowedParents: ['page'],\n defaultProps: {},\n defaultChildren: [\n { type: 'table-cell', props: { tag: 'td', text: 'Data' } },\n ],\n traits: [\n idTrait(),\n ariaLabelTrait(),\n ],\n defaultStyles: {\n base: {},\n },\n};\n\nexport const tableCellDefinition: ComponentDefinition = {\n type: 'table-cell',\n label: 'Table Cell',\n category: 'layout',\n icon: 'table-cell',\n acceptsChildren: true,\n allowedChildren: [\n 'heading',\n 'text',\n 'paragraph',\n 'link',\n 'blockquote',\n 'badge',\n 'code-block',\n 'image',\n 'video',\n 'icon',\n 'html-embed',\n 'button',\n 'list',\n 'custom',\n ],\n disallowedParents: ['page'],\n defaultProps: {\n tag: 'td',\n text: 'Cell',\n colSpan: 1,\n rowSpan: 1,\n },\n propFields: [\n {\n name: 'tag',\n label: 'Cell Type',\n type: 'select',\n defaultValue: 'td',\n options: [\n { label: 'Data Cell (td)', value: 'td' },\n { label: 'Header Cell (th)', value: 'th' },\n ],\n },\n { name: 'text', label: 'Text', type: 'string', defaultValue: 'Cell' },\n { name: 'colSpan', label: 'Column Span (colSpan)', type: 'number', defaultValue: 1 },\n { name: 'rowSpan', label: 'Row Span (rowSpan)', type: 'number', defaultValue: 1 },\n ],\n traits: [\n colSpanTrait(),\n rowSpanTrait(),\n idTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.tag !== undefined && !isVariableBinding(props.tag)) {\n if (props.tag !== 'td' && props.tag !== 'th') {\n errors.push('Table Cell \"tag\" must be either \"td\" or \"th\".');\n }\n }\n if (props.colSpan !== undefined && !isVariableBinding(props.colSpan)) {\n if (typeof props.colSpan !== 'number' || props.colSpan < 1 || !Number.isInteger(props.colSpan)) {\n errors.push('Table Cell \"colSpan\" must be a positive integer (>= 1).');\n }\n }\n if (props.rowSpan !== undefined && !isVariableBinding(props.rowSpan)) {\n if (typeof props.rowSpan !== 'number' || props.rowSpan < 1 || !Number.isInteger(props.rowSpan)) {\n errors.push('Table Cell \"rowSpan\" must be a positive integer (>= 1).');\n }\n }\n if (props.text !== undefined && typeof props.text !== 'string' && !isVariableBinding(props.text)) {\n errors.push('Table Cell \"text\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n padding: '8px 12px',\n borderWidth: '1px',\n borderColor: '#e2e8f0',\n borderStyle: 'solid',\n textAlign: 'left',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait, titleTrait } from '../../traits';\n\nexport const listDefinition: ComponentDefinition = {\n type: 'list',\n label: 'List',\n category: 'typography',\n icon: 'list',\n acceptsChildren: true,\n allowedChildren: ['list-item'],\n defaultProps: {\n tag: 'ul',\n listStyleType: 'disc',\n },\n defaultChildren: [\n { type: 'list-item', props: { text: 'List item 1' } },\n { type: 'list-item', props: { text: 'List item 2' } },\n { type: 'list-item', props: { text: 'List item 3' } },\n ],\n propFields: [\n {\n name: 'tag',\n label: 'Tag',\n type: 'select',\n defaultValue: 'ul',\n options: [\n { label: 'Unordered (ul)', value: 'ul' },\n { label: 'Ordered (ol)', value: 'ol' },\n ],\n },\n {\n name: 'listStyleType',\n label: 'List Style Type',\n type: 'select',\n defaultValue: 'disc',\n options: [\n { label: 'Disc', value: 'disc' },\n { label: 'Circle', value: 'circle' },\n { label: 'Square', value: 'square' },\n { label: 'Decimal', value: 'decimal' },\n { label: 'None', value: 'none' },\n { label: 'Custom Icon', value: 'custom-icon' },\n ],\n },\n ],\n traits: [\n idTrait(),\n ariaLabelTrait({ description: 'Accessible name for the list (e.g. \"Navigation menu\", \"Features\").' }),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.tag !== undefined && !isVariableBinding(props.tag)) {\n if (props.tag !== 'ul' && props.tag !== 'ol') {\n errors.push('List \"tag\" must be either \"ul\" or \"ol\".');\n }\n }\n if (props.listStyleType !== undefined && !isVariableBinding(props.listStyleType)) {\n const allowed = ['disc', 'circle', 'square', 'decimal', 'none', 'custom-icon'];\n if (typeof props.listStyleType !== 'string' || !allowed.includes(props.listStyleType)) {\n errors.push(`List \"listStyleType\" must be one of: ${allowed.join(', ')}.`);\n }\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n margin: '0 0 16px 0',\n paddingLeft: '24px',\n },\n },\n};\n\nexport const listItemDefinition: ComponentDefinition = {\n type: 'list-item',\n label: 'List Item',\n category: 'typography',\n icon: 'list-item',\n acceptsChildren: true,\n allowedChildren: [\n 'heading',\n 'text',\n 'paragraph',\n 'link',\n 'blockquote',\n 'badge',\n 'code-block',\n 'image',\n 'video',\n 'icon',\n 'html-embed',\n 'button',\n 'list',\n 'custom',\n ],\n defaultProps: {\n text: 'List item',\n },\n propFields: [\n {\n name: 'text',\n label: 'Text',\n type: 'string',\n defaultValue: 'List item',\n },\n ],\n traits: [\n idTrait(),\n titleTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.text !== undefined && typeof props.text !== 'string' && !isVariableBinding(props.text)) {\n errors.push('List Item \"text\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n margin: '4px 0',\n fontSize: '16px',\n color: '#374151',\n lineHeight: '1.5',\n },\n },\n};\n\n","import { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait } from '../../traits';\n\nexport const collectionDefinition: ComponentDefinition = {\n type: 'collection',\n label: 'Collection',\n category: 'data',\n icon: 'database',\n acceptsChildren: true,\n defaultProps: {\n sourceKey: 'items',\n itemAlias: 'item',\n },\n propFields: [\n { name: 'sourceKey', label: 'Source Variable', type: 'string', defaultValue: 'items' },\n { name: 'itemAlias', label: 'Item Alias', type: 'string', defaultValue: 'item' },\n ],\n traits: [\n idTrait(),\n ariaLabelTrait({ description: 'Accessible name summarizing the repeated collection (e.g. \"Product list\").' }),\n ],\n};\n\n","import { isActionBinding, isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport {\n ariaLabelTrait,\n autoDisableOnSubmitTrait,\n buttonTypeTrait,\n disabledTrait,\n hrefTrait,\n idTrait,\n labelTextTrait,\n loadingTextTrait,\n prefixIconTrait,\n relTrait,\n showSpinnerTrait,\n suffixIconTrait,\n targetTrait,\n titleTrait,\n} from '../../traits';\n\nexport const buttonDefinition: ComponentDefinition = {\n type: 'button',\n label: 'Button',\n category: 'interactive',\n icon: 'mouse-pointer',\n acceptsChildren: false,\n capabilities: ['actionRegistry'],\n defaultProps: {\n label: 'Click Me',\n variant: 'primary',\n },\n propFields: [\n { name: 'label', label: 'Label', type: 'string', defaultValue: 'Click Me' },\n { name: 'href', label: 'Link URL', type: 'string' },\n { name: 'action', label: 'Action', type: 'action' },\n { name: 'disabled', label: 'Disabled', type: 'boolean', defaultValue: false },\n {\n name: 'buttonType',\n label: 'Button Type',\n type: 'select',\n defaultValue: 'button',\n options: [\n { label: 'Button', value: 'button' },\n { label: 'Submit Form (submit)', value: 'submit' },\n { label: 'Reset Form (reset)', value: 'reset' },\n ],\n },\n {\n name: 'variant',\n label: 'Variant',\n type: 'select',\n defaultValue: 'primary',\n options: [\n { label: 'Primary', value: 'primary' },\n { label: 'Secondary', value: 'secondary' },\n ],\n },\n ],\n traits: [\n buttonTypeTrait(),\n disabledTrait(),\n hrefTrait({ description: 'Optional URL — when set, the button renders as an anchor styled like a button.' }),\n targetTrait({ description: 'Where to open the href URL (only used when href is set).' }),\n relTrait({ description: 'Relationship tokens (only used when href is set).' }),\n idTrait(),\n titleTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n const hasLabel =\n (typeof props.label === 'string' && props.label.trim().length > 0) || isVariableBinding(props.label);\n if (!hasLabel) {\n errors.push('Button requires a non-empty \"label\".');\n }\n if (props.href !== undefined && typeof props.href !== 'string' && !isVariableBinding(props.href)) {\n errors.push('Button \"href\" must be a string when provided.');\n }\n if (props.buttonType !== undefined && !isVariableBinding(props.buttonType)) {\n if (!['button', 'submit', 'reset'].includes(props.buttonType as string)) {\n errors.push('Button \"buttonType\" must be one of: \"button\", \"submit\", \"reset\".');\n }\n }\n if (props.action !== undefined && !isActionBinding(props.action)) {\n errors.push('Button \"action\" must be a valid action binding when provided.');\n }\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean' && !isVariableBinding(props.disabled)) {\n errors.push('Button \"disabled\" must be a boolean when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n backgroundColor: '#2563eb',\n color: '#ffffff',\n paddingTop: '10px',\n paddingBottom: '10px',\n paddingLeft: '20px',\n paddingRight: '20px',\n borderRadius: '6px',\n fontWeight: '500',\n fontSize: '15px',\n border: 'none',\n cursor: 'pointer',\n },\n },\n};\n\nexport const buttonSubmitDefinition: ComponentDefinition = {\n type: 'button-submit',\n label: 'Submit Button',\n category: 'form',\n icon: 'send',\n acceptsChildren: false,\n capabilities: ['actionRegistry'],\n disallowedParents: ['page'],\n defaultProps: {\n label: 'Submit',\n loadingText: 'Submitting...',\n showSpinner: true,\n autoDisableOnSubmit: true,\n variant: 'primary',\n disabled: false,\n buttonType: 'submit',\n },\n propFields: [\n { name: 'label', label: 'Label', type: 'string', defaultValue: 'Submit' },\n { name: 'loadingText', label: 'Loading Text', type: 'string', defaultValue: 'Submitting...' },\n { name: 'showSpinner', label: 'Show Loading Spinner', type: 'boolean', defaultValue: true },\n { name: 'autoDisableOnSubmit', label: 'Auto Disable on Submit', type: 'boolean', defaultValue: true },\n {\n name: 'buttonType',\n label: 'Button Type',\n type: 'select',\n defaultValue: 'submit',\n options: [\n { label: 'Submit Form (submit)', value: 'submit' },\n { label: 'Reset Form (reset)', value: 'reset' },\n ],\n },\n {\n name: 'variant',\n label: 'Variant',\n type: 'select',\n defaultValue: 'primary',\n options: [\n { label: 'Primary', value: 'primary' },\n { label: 'Secondary', value: 'secondary' },\n ],\n },\n { name: 'disabled', label: 'Disabled', type: 'boolean', defaultValue: false },\n { name: 'prefixIcon', label: 'Prefix Icon', type: 'string' },\n { name: 'suffixIcon', label: 'Suffix Icon', type: 'string' },\n ],\n traits: [\n buttonTypeTrait({\n defaultValue: 'submit',\n options: [\n { label: 'Submit Form (submit)', value: 'submit' },\n { label: 'Reset Form (reset)', value: 'reset' },\n ],\n }),\n labelTextTrait({ defaultValue: 'Submit', label: 'Label' }),\n loadingTextTrait(),\n showSpinnerTrait(),\n autoDisableOnSubmitTrait(),\n disabledTrait(),\n prefixIconTrait(),\n suffixIconTrait(),\n idTrait(),\n titleTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n const hasLabel =\n (typeof props.label === 'string' && props.label.trim().length > 0) || isVariableBinding(props.label);\n if (!hasLabel) {\n errors.push('Submit Button requires a non-empty \"label\".');\n }\n if (props.loadingText !== undefined && typeof props.loadingText !== 'string' && !isVariableBinding(props.loadingText)) {\n errors.push('Submit Button \"loadingText\" must be a string when provided.');\n }\n if (props.showSpinner !== undefined && typeof props.showSpinner !== 'boolean' && !isVariableBinding(props.showSpinner)) {\n errors.push('Submit Button \"showSpinner\" must be a boolean when provided.');\n }\n if (props.autoDisableOnSubmit !== undefined && typeof props.autoDisableOnSubmit !== 'boolean' && !isVariableBinding(props.autoDisableOnSubmit)) {\n errors.push('Submit Button \"autoDisableOnSubmit\" must be a boolean when provided.');\n }\n if (props.buttonType !== undefined && !isVariableBinding(props.buttonType)) {\n if (!['submit', 'reset', 'button'].includes(props.buttonType as string)) {\n errors.push('Submit Button \"buttonType\" must be one of: \"submit\", \"reset\", \"button\".');\n }\n }\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean' && !isVariableBinding(props.disabled)) {\n errors.push('Submit Button \"disabled\" must be a boolean when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n backgroundColor: '#2563eb',\n color: '#ffffff',\n paddingTop: '10px',\n paddingBottom: '10px',\n paddingLeft: '20px',\n paddingRight: '20px',\n borderRadius: '6px',\n fontWeight: '500',\n fontSize: '15px',\n border: 'none',\n cursor: 'pointer',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '8px',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport {\n actionTrait,\n ariaLabelTrait,\n autoCompleteTrait,\n fieldNameTrait,\n idTrait,\n methodTrait,\n preventDefaultTrait,\n resetOnSubmitTrait,\n scrollToFirstErrorTrait,\n targetTrait,\n} from '../../traits';\nimport { CONTENT_CHILD_TYPES } from '../constants';\n\nexport const formDefinition: ComponentDefinition = {\n type: 'form',\n label: 'Form',\n category: 'form',\n icon: 'form',\n acceptsChildren: true,\n allowedChildren: [\n ...CONTENT_CHILD_TYPES,\n 'container',\n 'columns',\n 'section',\n ],\n disallowedParents: ['page'],\n defaultProps: {\n name: 'contact_form',\n method: 'POST',\n action: '',\n target: '_self',\n autoComplete: 'on',\n preventDefault: true,\n scrollToFirstError: true,\n resetOnSubmit: false,\n },\n defaultChildren: [\n { type: 'input', props: { name: 'name', type: 'text', placeholder: 'Your Name', required: true } },\n { type: 'input', props: { name: 'email', type: 'email', placeholder: 'Your Email', required: true } },\n { type: 'textarea', props: { name: 'message', placeholder: 'Your Message', rows: 4, required: true } },\n { type: 'checkbox', props: { name: 'agree', label: 'I agree to the terms and privacy policy', required: true } },\n { type: 'button', props: { label: 'Send Message', variant: 'primary', buttonType: 'submit' } },\n ],\n propFields: [\n { name: 'name', label: 'Form Name', type: 'string', defaultValue: 'contact_form' },\n { name: 'action', label: 'Action URL', type: 'string' },\n {\n name: 'method',\n label: 'Method',\n type: 'select',\n defaultValue: 'POST',\n options: [\n { label: 'POST', value: 'POST' },\n { label: 'GET', value: 'GET' },\n ],\n },\n {\n name: 'target',\n label: 'Target',\n type: 'select',\n defaultValue: '_self',\n options: [\n { label: 'Same Window (_self)', value: '_self' },\n { label: 'New Tab (_blank)', value: '_blank' },\n ],\n },\n {\n name: 'autoComplete',\n label: 'Auto Complete',\n type: 'select',\n defaultValue: 'on',\n options: [\n { label: 'On', value: 'on' },\n { label: 'Off', value: 'off' },\n ],\n },\n { name: 'preventDefault', label: 'Prevent Default', type: 'boolean', defaultValue: true },\n { name: 'scrollToFirstError', label: 'Scroll to First Error', type: 'boolean', defaultValue: true },\n { name: 'resetOnSubmit', label: 'Reset on Submit', type: 'boolean', defaultValue: false },\n ],\n traits: [\n fieldNameTrait({ defaultValue: 'contact_form', required: false }),\n actionTrait(),\n methodTrait(),\n targetTrait({ options: [\n { label: 'Same Window (_self)', value: '_self' },\n { label: 'New Tab (_blank)', value: '_blank' },\n { label: 'Parent (_parent)', value: '_parent' },\n { label: 'Top (_top)', value: '_top' },\n ]}),\n autoCompleteTrait(),\n preventDefaultTrait(),\n scrollToFirstErrorTrait(),\n resetOnSubmitTrait(),\n idTrait(),\n ariaLabelTrait({ description: 'Accessible name for the form landmark.' }),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.name !== undefined && typeof props.name !== 'string' && !isVariableBinding(props.name)) {\n errors.push('Form \"name\" must be a string when provided.');\n }\n if (props.action !== undefined && typeof props.action !== 'string' && !isVariableBinding(props.action)) {\n errors.push('Form \"action\" must be a string when provided.');\n }\n if (props.method !== undefined && !isVariableBinding(props.method)) {\n if (!['GET', 'POST', 'get', 'post'].includes(props.method as string)) {\n errors.push('Form \"method\" must be either \"GET\" or \"POST\".');\n }\n }\n if (props.target !== undefined && !isVariableBinding(props.target)) {\n if (!['_self', '_blank', '_parent', '_top'].includes(props.target as string)) {\n errors.push('Form \"target\" must be one of: \"_self\", \"_blank\", \"_parent\", \"_top\".');\n }\n }\n if (props.autoComplete !== undefined && !isVariableBinding(props.autoComplete)) {\n if (!['on', 'off'].includes(props.autoComplete as string)) {\n errors.push('Form \"autoComplete\" must be either \"on\" or \"off\".');\n }\n }\n if (props.preventDefault !== undefined && typeof props.preventDefault !== 'boolean' && !isVariableBinding(props.preventDefault)) {\n errors.push('Form \"preventDefault\" must be a boolean when provided.');\n }\n if (props.scrollToFirstError !== undefined && typeof props.scrollToFirstError !== 'boolean' && !isVariableBinding(props.scrollToFirstError)) {\n errors.push('Form \"scrollToFirstError\" must be a boolean when provided.');\n }\n if (props.resetOnSubmit !== undefined && typeof props.resetOnSubmit !== 'boolean' && !isVariableBinding(props.resetOnSubmit)) {\n errors.push('Form \"resetOnSubmit\" must be a boolean when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport {\n ariaLabelTrait,\n defaultValueTrait,\n disabledTrait,\n fieldNameTrait,\n helperTextTrait,\n idTrait,\n inputTypeTrait,\n maxLengthTrait,\n minLengthTrait,\n patternTrait,\n placeholderTrait,\n readOnlyTrait,\n requiredTrait,\n prefixIconTrait,\n suffixIconTrait,\n} from '../../traits';\n\nexport const inputDefinition: ComponentDefinition = {\n type: 'input',\n label: 'Input',\n category: 'form',\n icon: 'input',\n acceptsChildren: false,\n disallowedParents: ['page'],\n defaultProps: {\n name: 'input_field',\n type: 'text',\n placeholder: 'Enter text...',\n defaultValue: '',\n required: false,\n disabled: false,\n readOnly: false,\n pattern: '',\n minLength: undefined,\n maxLength: undefined,\n prefixIcon: '',\n suffixIcon: '',\n helperText: '',\n },\n propFields: [\n { name: 'name', label: 'Field Name', type: 'string', defaultValue: 'input_field' },\n {\n name: 'type',\n label: 'Input Type',\n type: 'select',\n defaultValue: 'text',\n options: [\n { label: 'Text', value: 'text' },\n { label: 'Email', value: 'email' },\n { label: 'Number', value: 'number' },\n { label: 'Password', value: 'password' },\n { label: 'Phone (tel)', value: 'tel' },\n { label: 'URL', value: 'url' },\n { label: 'Search', value: 'search' },\n { label: 'Date', value: 'date' },\n ],\n },\n { name: 'placeholder', label: 'Placeholder', type: 'string', defaultValue: 'Enter text...' },\n { name: 'defaultValue', label: 'Default Value', type: 'string' },\n { name: 'required', label: 'Required', type: 'boolean', defaultValue: false },\n { name: 'disabled', label: 'Disabled', type: 'boolean', defaultValue: false },\n { name: 'readOnly', label: 'Read Only', type: 'boolean', defaultValue: false },\n { name: 'pattern', label: 'Pattern (regex)', type: 'string' },\n { name: 'minLength', label: 'Min Length', type: 'number' },\n { name: 'maxLength', label: 'Max Length', type: 'number' },\n { name: 'prefixIcon', label: 'Prefix Icon', type: 'string' },\n { name: 'suffixIcon', label: 'Suffix Icon', type: 'string' },\n { name: 'helperText', label: 'Helper Text', type: 'string' },\n ],\n traits: [\n inputTypeTrait({ options: [\n { label: 'Text', value: 'text' },\n { label: 'Email', value: 'email' },\n { label: 'Number', value: 'number' },\n { label: 'Password', value: 'password' },\n { label: 'Phone (tel)', value: 'tel' },\n { label: 'URL', value: 'url' },\n { label: 'Search', value: 'search' },\n { label: 'Date', value: 'date' },\n { label: 'Hidden', value: 'hidden' },\n ]}),\n fieldNameTrait({ defaultValue: 'input_field' }),\n placeholderTrait({ defaultValue: 'Enter text...' }),\n defaultValueTrait(),\n requiredTrait(),\n patternTrait(),\n minLengthTrait(),\n maxLengthTrait(),\n prefixIconTrait(),\n suffixIconTrait(),\n helperTextTrait(),\n disabledTrait(),\n readOnlyTrait(),\n idTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.name !== undefined && typeof props.name !== 'string' && !isVariableBinding(props.name)) {\n errors.push('Input \"name\" must be a string when provided.');\n }\n if (props.type !== undefined && !isVariableBinding(props.type)) {\n const validTypes = ['text', 'email', 'number', 'password', 'tel', 'url', 'search', 'date', 'hidden'];\n if (!validTypes.includes(props.type as string)) {\n errors.push(`Input \"type\" must be one of: ${validTypes.join(', ')}.`);\n }\n }\n if (props.placeholder !== undefined && typeof props.placeholder !== 'string' && !isVariableBinding(props.placeholder)) {\n errors.push('Input \"placeholder\" must be a string when provided.');\n }\n if (props.required !== undefined && typeof props.required !== 'boolean' && !isVariableBinding(props.required)) {\n errors.push('Input \"required\" must be a boolean when provided.');\n }\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean' && !isVariableBinding(props.disabled)) {\n errors.push('Input \"disabled\" must be a boolean when provided.');\n }\n if (props.readOnly !== undefined && typeof props.readOnly !== 'boolean' && !isVariableBinding(props.readOnly)) {\n errors.push('Input \"readOnly\" must be a boolean when provided.');\n }\n if (props.pattern !== undefined && typeof props.pattern !== 'string' && !isVariableBinding(props.pattern)) {\n errors.push('Input \"pattern\" must be a string when provided.');\n }\n if (props.minLength !== undefined && !isVariableBinding(props.minLength)) {\n if (typeof props.minLength !== 'number' || props.minLength < 0 || !Number.isInteger(props.minLength)) {\n errors.push('Input \"minLength\" must be a non-negative integer when provided.');\n }\n }\n if (props.maxLength !== undefined && !isVariableBinding(props.maxLength)) {\n if (typeof props.maxLength !== 'number' || props.maxLength < 0 || !Number.isInteger(props.maxLength)) {\n errors.push('Input \"maxLength\" must be a non-negative integer when provided.');\n }\n }\n if (props.prefixIcon !== undefined && typeof props.prefixIcon !== 'string' && !isVariableBinding(props.prefixIcon)) {\n errors.push('Input \"prefixIcon\" must be a string when provided.');\n }\n if (props.suffixIcon !== undefined && typeof props.suffixIcon !== 'string' && !isVariableBinding(props.suffixIcon)) {\n errors.push('Input \"suffixIcon\" must be a string when provided.');\n }\n if (props.helperText !== undefined && typeof props.helperText !== 'string' && !isVariableBinding(props.helperText)) {\n errors.push('Input \"helperText\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n width: '100%',\n paddingTop: '10px',\n paddingBottom: '10px',\n paddingLeft: '14px',\n paddingRight: '14px',\n borderRadius: '6px',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: '#cbd5e1',\n fontSize: '14px',\n backgroundColor: '#ffffff',\n color: '#1e293b',\n boxSizing: 'border-box',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport {\n ariaLabelTrait,\n autoGrowTrait,\n defaultValueTrait,\n disabledTrait,\n fieldNameTrait,\n helperTextTrait,\n idTrait,\n maxCharCountTrait,\n placeholderTrait,\n readOnlyTrait,\n requiredTrait,\n resizeTrait,\n rowsTrait,\n} from '../../traits';\n\nexport const textareaDefinition: ComponentDefinition = {\n type: 'textarea',\n label: 'Textarea',\n category: 'form',\n icon: 'textarea',\n acceptsChildren: false,\n disallowedParents: ['page'],\n defaultProps: {\n name: 'message',\n placeholder: 'Enter your message...',\n defaultValue: '',\n rows: 4,\n required: false,\n disabled: false,\n readOnly: false,\n resize: 'vertical',\n autoGrow: false,\n maxCharCount: undefined,\n helperText: '',\n },\n propFields: [\n { name: 'name', label: 'Field Name', type: 'string', defaultValue: 'message' },\n { name: 'placeholder', label: 'Placeholder', type: 'string', defaultValue: 'Enter your message...' },\n { name: 'defaultValue', label: 'Default Value', type: 'textarea' },\n { name: 'rows', label: 'Rows', type: 'number', defaultValue: 4 },\n { name: 'required', label: 'Required', type: 'boolean', defaultValue: false },\n { name: 'disabled', label: 'Disabled', type: 'boolean', defaultValue: false },\n { name: 'readOnly', label: 'Read Only', type: 'boolean', defaultValue: false },\n {\n name: 'resize',\n label: 'Resize',\n type: 'select',\n defaultValue: 'vertical',\n options: [\n { label: 'Vertical only', value: 'vertical' },\n { label: 'Horizontal only', value: 'horizontal' },\n { label: 'Both', value: 'both' },\n { label: 'None', value: 'none' },\n ],\n },\n { name: 'autoGrow', label: 'Auto Grow', type: 'boolean', defaultValue: false },\n { name: 'maxCharCount', label: 'Max Character Count', type: 'number' },\n { name: 'helperText', label: 'Helper Text', type: 'string' },\n ],\n traits: [\n fieldNameTrait({ defaultValue: 'message' }),\n placeholderTrait({ defaultValue: 'Enter your message...' }),\n defaultValueTrait(),\n rowsTrait(),\n resizeTrait(),\n autoGrowTrait(),\n maxCharCountTrait(),\n helperTextTrait(),\n requiredTrait(),\n disabledTrait(),\n readOnlyTrait(),\n idTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.name !== undefined && typeof props.name !== 'string' && !isVariableBinding(props.name)) {\n errors.push('Textarea \"name\" must be a string when provided.');\n }\n if (props.rows !== undefined && !isVariableBinding(props.rows)) {\n if (typeof props.rows !== 'number' || props.rows < 1 || !Number.isInteger(props.rows)) {\n errors.push('Textarea \"rows\" must be a positive integer (>= 1).');\n }\n }\n if (props.placeholder !== undefined && typeof props.placeholder !== 'string' && !isVariableBinding(props.placeholder)) {\n errors.push('Textarea \"placeholder\" must be a string when provided.');\n }\n if (props.required !== undefined && typeof props.required !== 'boolean' && !isVariableBinding(props.required)) {\n errors.push('Textarea \"required\" must be a boolean when provided.');\n }\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean' && !isVariableBinding(props.disabled)) {\n errors.push('Textarea \"disabled\" must be a boolean when provided.');\n }\n if (props.readOnly !== undefined && typeof props.readOnly !== 'boolean' && !isVariableBinding(props.readOnly)) {\n errors.push('Textarea \"readOnly\" must be a boolean when provided.');\n }\n if (props.resize !== undefined && !isVariableBinding(props.resize)) {\n const allowedResize = ['vertical', 'horizontal', 'both', 'none'];\n if (typeof props.resize !== 'string' || !allowedResize.includes(props.resize)) {\n errors.push(`Textarea \"resize\" must be one of: ${allowedResize.join(', ')}.`);\n }\n }\n if (props.autoGrow !== undefined && typeof props.autoGrow !== 'boolean' && !isVariableBinding(props.autoGrow)) {\n errors.push('Textarea \"autoGrow\" must be a boolean when provided.');\n }\n if (props.maxCharCount !== undefined && !isVariableBinding(props.maxCharCount)) {\n if (typeof props.maxCharCount !== 'number' || props.maxCharCount < 1 || !Number.isInteger(props.maxCharCount)) {\n errors.push('Textarea \"maxCharCount\" must be a positive integer (>= 1) when provided.');\n }\n }\n if (props.helperText !== undefined && typeof props.helperText !== 'string' && !isVariableBinding(props.helperText)) {\n errors.push('Textarea \"helperText\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n width: '100%',\n paddingTop: '10px',\n paddingBottom: '10px',\n paddingLeft: '14px',\n paddingRight: '14px',\n borderRadius: '6px',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: '#cbd5e1',\n fontSize: '14px',\n backgroundColor: '#ffffff',\n color: '#1e293b',\n boxSizing: 'border-box',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport {\n ariaLabelTrait,\n defaultValueTrait,\n disabledTrait,\n fieldNameTrait,\n helperTextTrait,\n idTrait,\n optionsListTrait,\n placeholderTrait,\n requiredTrait,\n} from '../../traits';\n\nexport const selectDefinition: ComponentDefinition = {\n type: 'select',\n label: 'Select',\n category: 'form',\n icon: 'select',\n acceptsChildren: false,\n disallowedParents: ['page'],\n defaultProps: {\n name: 'select_field',\n placeholder: 'Select an option...',\n options: [\n { label: 'Option 1', value: 'option1' },\n { label: 'Option 2', value: 'option2' },\n { label: 'Option 3', value: 'option3' },\n ],\n defaultValue: '',\n required: false,\n disabled: false,\n helperText: '',\n },\n propFields: [\n { name: 'name', label: 'Field Name', type: 'string', defaultValue: 'select_field' },\n { name: 'placeholder', label: 'Placeholder', type: 'string', defaultValue: 'Select an option...' },\n {\n name: 'options',\n label: 'Options (JSON list)',\n type: 'json',\n defaultValue: [\n { label: 'Option 1', value: 'option1' },\n { label: 'Option 2', value: 'option2' },\n { label: 'Option 3', value: 'option3' },\n ],\n },\n { name: 'defaultValue', label: 'Default Selected Value', type: 'string' },\n { name: 'required', label: 'Required', type: 'boolean', defaultValue: false },\n { name: 'disabled', label: 'Disabled', type: 'boolean', defaultValue: false },\n { name: 'helperText', label: 'Helper Text', type: 'string' },\n ],\n traits: [\n fieldNameTrait({ defaultValue: 'select_field' }),\n placeholderTrait({ defaultValue: 'Select an option...' }),\n optionsListTrait({ description: 'The list of dropdown choices (label + value pairs). Editable via the inspector trait panel.' }),\n defaultValueTrait({ description: 'The initially selected option value (must match one of the option values).' }),\n helperTextTrait(),\n requiredTrait(),\n disabledTrait(),\n idTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.name !== undefined && typeof props.name !== 'string' && !isVariableBinding(props.name)) {\n errors.push('Select \"name\" must be a string when provided.');\n }\n if (props.options !== undefined && !isVariableBinding(props.options)) {\n if (!Array.isArray(props.options) && typeof props.options !== 'string') {\n errors.push('Select \"options\" must be an array of option objects or a JSON string.');\n }\n }\n if (props.required !== undefined && typeof props.required !== 'boolean' && !isVariableBinding(props.required)) {\n errors.push('Select \"required\" must be a boolean when provided.');\n }\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean' && !isVariableBinding(props.disabled)) {\n errors.push('Select \"disabled\" must be a boolean when provided.');\n }\n if (props.helperText !== undefined && typeof props.helperText !== 'string' && !isVariableBinding(props.helperText)) {\n errors.push('Select \"helperText\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n width: '100%',\n paddingTop: '10px',\n paddingBottom: '10px',\n paddingLeft: '14px',\n paddingRight: '14px',\n borderRadius: '6px',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: '#cbd5e1',\n fontSize: '14px',\n backgroundColor: '#ffffff',\n color: '#1e293b',\n boxSizing: 'border-box',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport {\n ariaLabelTrait,\n defaultCheckedTrait,\n disabledTrait,\n fieldNameTrait,\n helperTextTrait,\n idTrait,\n indeterminateTrait,\n labelTextTrait,\n requiredTrait,\n valueTrait,\n} from '../../traits';\n\nexport const checkboxDefinition: ComponentDefinition = {\n type: 'checkbox',\n label: 'Checkbox',\n category: 'form',\n icon: 'checkbox',\n acceptsChildren: false,\n disallowedParents: ['page'],\n defaultProps: {\n name: 'checkbox_field',\n label: 'I agree to the terms and conditions',\n value: 'yes',\n defaultChecked: false,\n indeterminate: false,\n required: false,\n disabled: false,\n helperText: '',\n },\n propFields: [\n { name: 'name', label: 'Field Name', type: 'string', defaultValue: 'checkbox_field' },\n { name: 'label', label: 'Label Text', type: 'string', defaultValue: 'I agree to the terms and conditions' },\n { name: 'value', label: 'Checked Value', type: 'string', defaultValue: 'yes' },\n { name: 'defaultChecked', label: 'Default Checked', type: 'boolean', defaultValue: false },\n { name: 'indeterminate', label: 'Indeterminate', type: 'boolean', defaultValue: false },\n { name: 'required', label: 'Required', type: 'boolean', defaultValue: false },\n { name: 'disabled', label: 'Disabled', type: 'boolean', defaultValue: false },\n { name: 'helperText', label: 'Helper Text', type: 'string' },\n ],\n traits: [\n fieldNameTrait({ defaultValue: 'checkbox_field' }),\n labelTextTrait({ defaultValue: 'I agree to the terms and conditions' }),\n valueTrait({ defaultValue: 'yes' }),\n defaultCheckedTrait(),\n indeterminateTrait(),\n helperTextTrait(),\n requiredTrait(),\n disabledTrait(),\n idTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.label !== undefined && typeof props.label !== 'string' && !isVariableBinding(props.label)) {\n errors.push('Checkbox \"label\" must be a string when provided.');\n }\n if (props.name !== undefined && typeof props.name !== 'string' && !isVariableBinding(props.name)) {\n errors.push('Checkbox \"name\" must be a string when provided.');\n }\n if (props.value !== undefined && typeof props.value !== 'string' && !isVariableBinding(props.value)) {\n errors.push('Checkbox \"value\" must be a string when provided.');\n }\n if (props.defaultChecked !== undefined && typeof props.defaultChecked !== 'boolean' && !isVariableBinding(props.defaultChecked)) {\n errors.push('Checkbox \"defaultChecked\" must be a boolean when provided.');\n }\n if (props.indeterminate !== undefined && typeof props.indeterminate !== 'boolean' && !isVariableBinding(props.indeterminate)) {\n errors.push('Checkbox \"indeterminate\" must be a boolean when provided.');\n }\n if (props.required !== undefined && typeof props.required !== 'boolean' && !isVariableBinding(props.required)) {\n errors.push('Checkbox \"required\" must be a boolean when provided.');\n }\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean' && !isVariableBinding(props.disabled)) {\n errors.push('Checkbox \"disabled\" must be a boolean when provided.');\n }\n if (props.helperText !== undefined && typeof props.helperText !== 'string' && !isVariableBinding(props.helperText)) {\n errors.push('Checkbox \"helperText\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n fontSize: '14px',\n color: '#1e293b',\n cursor: 'pointer',\n userSelect: 'none',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport {\n ariaLabelTrait,\n defaultCheckedTrait,\n disabledTrait,\n fieldNameTrait,\n helperTextTrait,\n idTrait,\n labelTextTrait,\n requiredTrait,\n switchSizeTrait,\n valueTrait,\n} from '../../traits';\n\nexport const switchDefinition: ComponentDefinition = {\n type: 'switch',\n label: 'Switch',\n category: 'form',\n icon: 'switch',\n acceptsChildren: false,\n disallowedParents: ['page'],\n defaultProps: {\n name: 'switch_field',\n label: 'Enable feature',\n value: 'yes',\n defaultChecked: false,\n switchSize: 'md',\n required: false,\n disabled: false,\n helperText: '',\n },\n propFields: [\n { name: 'name', label: 'Field Name', type: 'string', defaultValue: 'switch_field' },\n { name: 'label', label: 'Label Text', type: 'string', defaultValue: 'Enable feature' },\n { name: 'value', label: 'Checked Value', type: 'string', defaultValue: 'yes' },\n { name: 'defaultChecked', label: 'Default Checked', type: 'boolean', defaultValue: false },\n {\n name: 'switchSize',\n label: 'Size',\n type: 'select',\n defaultValue: 'md',\n options: [\n { label: 'Small', value: 'sm' },\n { label: 'Medium', value: 'md' },\n { label: 'Large', value: 'lg' },\n ],\n },\n { name: 'required', label: 'Required', type: 'boolean', defaultValue: false },\n { name: 'disabled', label: 'Disabled', type: 'boolean', defaultValue: false },\n { name: 'helperText', label: 'Helper Text', type: 'string' },\n ],\n traits: [\n fieldNameTrait({ defaultValue: 'switch_field' }),\n labelTextTrait({ defaultValue: 'Enable feature' }),\n valueTrait({ defaultValue: 'yes' }),\n defaultCheckedTrait(),\n switchSizeTrait(),\n helperTextTrait(),\n requiredTrait(),\n disabledTrait(),\n idTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.label !== undefined && typeof props.label !== 'string' && !isVariableBinding(props.label)) {\n errors.push('Switch \"label\" must be a string when provided.');\n }\n if (props.name !== undefined && typeof props.name !== 'string' && !isVariableBinding(props.name)) {\n errors.push('Switch \"name\" must be a string when provided.');\n }\n if (props.value !== undefined && typeof props.value !== 'string' && !isVariableBinding(props.value)) {\n errors.push('Switch \"value\" must be a string when provided.');\n }\n if (props.defaultChecked !== undefined && typeof props.defaultChecked !== 'boolean' && !isVariableBinding(props.defaultChecked)) {\n errors.push('Switch \"defaultChecked\" must be a boolean when provided.');\n }\n if (props.switchSize !== undefined && !isVariableBinding(props.switchSize)) {\n const allowedSizes = ['sm', 'md', 'lg'];\n if (typeof props.switchSize !== 'string' || !allowedSizes.includes(props.switchSize)) {\n errors.push(`Switch \"switchSize\" must be one of: ${allowedSizes.join(', ')}.`);\n }\n }\n if (props.required !== undefined && typeof props.required !== 'boolean' && !isVariableBinding(props.required)) {\n errors.push('Switch \"required\" must be a boolean when provided.');\n }\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean' && !isVariableBinding(props.disabled)) {\n errors.push('Switch \"disabled\" must be a boolean when provided.');\n }\n if (props.helperText !== undefined && typeof props.helperText !== 'string' && !isVariableBinding(props.helperText)) {\n errors.push('Switch \"helperText\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n fontSize: '14px',\n color: '#1e293b',\n cursor: 'pointer',\n userSelect: 'none',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport {\n ariaLabelTrait,\n defaultCheckedTrait,\n defaultSelectedTrait,\n disabledTrait,\n fieldNameTrait,\n helperTextTrait,\n idTrait,\n labelTextTrait,\n orientationTrait,\n requiredTrait,\n valueTrait,\n} from '../../traits';\n\nexport const radioGroupDefinition: ComponentDefinition = {\n type: 'radio-group',\n label: 'Radio Group',\n category: 'form',\n icon: 'radio-group',\n acceptsChildren: true,\n allowedChildren: ['radio', 'radio-item', 'custom'],\n disallowedParents: ['page'],\n defaultProps: {\n name: 'radio_group',\n defaultSelected: 'option1',\n orientation: 'vertical',\n required: false,\n disabled: false,\n helperText: '',\n },\n defaultChildren: [\n { type: 'radio', props: { name: 'radio_group', label: 'Option 1', value: 'option1', defaultChecked: true } },\n { type: 'radio', props: { name: 'radio_group', label: 'Option 2', value: 'option2', defaultChecked: false } },\n { type: 'radio', props: { name: 'radio_group', label: 'Option 3', value: 'option3', defaultChecked: false } },\n ],\n propFields: [\n { name: 'name', label: 'Group Name', type: 'string', defaultValue: 'radio_group' },\n { name: 'defaultSelected', label: 'Default Selected', type: 'string', defaultValue: 'option1' },\n {\n name: 'orientation',\n label: 'Orientation',\n type: 'select',\n defaultValue: 'vertical',\n options: [\n { label: 'Vertical', value: 'vertical' },\n { label: 'Horizontal', value: 'horizontal' },\n ],\n },\n { name: 'required', label: 'Required', type: 'boolean', defaultValue: false },\n { name: 'disabled', label: 'Disabled', type: 'boolean', defaultValue: false },\n { name: 'helperText', label: 'Helper Text', type: 'string' },\n ],\n traits: [\n fieldNameTrait({ defaultValue: 'radio_group', label: 'Group Name' }),\n defaultSelectedTrait({ defaultValue: 'option1' }),\n orientationTrait(),\n helperTextTrait(),\n requiredTrait(),\n disabledTrait(),\n idTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.name !== undefined && typeof props.name !== 'string' && !isVariableBinding(props.name)) {\n errors.push('RadioGroup \"name\" must be a string when provided.');\n }\n if (props.defaultSelected !== undefined && typeof props.defaultSelected !== 'string' && !isVariableBinding(props.defaultSelected)) {\n errors.push('RadioGroup \"defaultSelected\" must be a string when provided.');\n }\n if (props.orientation !== undefined && !isVariableBinding(props.orientation)) {\n const allowedOrientations = ['vertical', 'horizontal'];\n if (typeof props.orientation !== 'string' || !allowedOrientations.includes(props.orientation)) {\n errors.push(`RadioGroup \"orientation\" must be one of: ${allowedOrientations.join(', ')}.`);\n }\n }\n if (props.required !== undefined && typeof props.required !== 'boolean' && !isVariableBinding(props.required)) {\n errors.push('RadioGroup \"required\" must be a boolean when provided.');\n }\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean' && !isVariableBinding(props.disabled)) {\n errors.push('RadioGroup \"disabled\" must be a boolean when provided.');\n }\n if (props.helperText !== undefined && typeof props.helperText !== 'string' && !isVariableBinding(props.helperText)) {\n errors.push('RadioGroup \"helperText\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n },\n },\n};\n\nexport const radioDefinition: ComponentDefinition = {\n type: 'radio',\n label: 'Radio',\n category: 'form',\n icon: 'radio',\n acceptsChildren: false,\n disallowedParents: ['page'],\n defaultProps: {\n name: 'radio_group',\n label: 'Option 1',\n value: 'option1',\n defaultChecked: false,\n required: false,\n disabled: false,\n helperText: '',\n },\n propFields: [\n { name: 'name', label: 'Group Name', type: 'string', defaultValue: 'radio_group' },\n { name: 'label', label: 'Label Text', type: 'string', defaultValue: 'Option 1' },\n { name: 'value', label: 'Radio Value', type: 'string', defaultValue: 'option1' },\n { name: 'defaultChecked', label: 'Default Selected', type: 'boolean', defaultValue: false },\n { name: 'required', label: 'Required', type: 'boolean', defaultValue: false },\n { name: 'disabled', label: 'Disabled', type: 'boolean', defaultValue: false },\n { name: 'helperText', label: 'Helper Text', type: 'string' },\n ],\n traits: [\n fieldNameTrait({ defaultValue: 'radio_group', label: 'Group Name' }),\n labelTextTrait({ defaultValue: 'Option 1' }),\n valueTrait({ defaultValue: 'option1' }),\n defaultCheckedTrait(),\n helperTextTrait(),\n requiredTrait(),\n disabledTrait(),\n idTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.label !== undefined && typeof props.label !== 'string' && !isVariableBinding(props.label)) {\n errors.push('Radio \"label\" must be a string when provided.');\n }\n if (props.name !== undefined && typeof props.name !== 'string' && !isVariableBinding(props.name)) {\n errors.push('Radio \"name\" must be a string when provided.');\n }\n if (props.value !== undefined && typeof props.value !== 'string' && !isVariableBinding(props.value)) {\n errors.push('Radio \"value\" must be a string when provided.');\n }\n if (props.defaultChecked !== undefined && typeof props.defaultChecked !== 'boolean' && !isVariableBinding(props.defaultChecked)) {\n errors.push('Radio \"defaultChecked\" must be a boolean when provided.');\n }\n if (props.required !== undefined && typeof props.required !== 'boolean' && !isVariableBinding(props.required)) {\n errors.push('Radio \"required\" must be a boolean when provided.');\n }\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean' && !isVariableBinding(props.disabled)) {\n errors.push('Radio \"disabled\" must be a boolean when provided.');\n }\n if (props.helperText !== undefined && typeof props.helperText !== 'string' && !isVariableBinding(props.helperText)) {\n errors.push('Radio \"helperText\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n fontSize: '14px',\n color: '#1e293b',\n cursor: 'pointer',\n userSelect: 'none',\n },\n },\n};\n\nexport const radioItemDefinition: ComponentDefinition = {\n ...radioDefinition,\n type: 'radio-item',\n label: 'Radio Item',\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport {\n acceptTrait,\n ariaLabelTrait,\n disabledTrait,\n fieldNameTrait,\n helperTextTrait,\n idTrait,\n labelTextTrait,\n maxFileSizeTrait,\n multipleTrait,\n requiredTrait,\n showPreviewTrait,\n} from '../../traits';\n\nexport const fileUploadDefinition: ComponentDefinition = {\n type: 'file-upload',\n label: 'File Upload',\n category: 'form',\n icon: 'upload',\n acceptsChildren: false,\n disallowedParents: ['page'],\n defaultProps: {\n name: 'file_upload',\n label: 'Upload File',\n accept: '*/*',\n maxFileSize: 10,\n multiple: false,\n showPreview: true,\n required: false,\n disabled: false,\n helperText: '',\n },\n propFields: [\n { name: 'name', label: 'Field Name', type: 'string', defaultValue: 'file_upload' },\n { name: 'label', label: 'Label Text', type: 'string', defaultValue: 'Upload File' },\n { name: 'accept', label: 'Accepted File Types', type: 'string', defaultValue: '*/*' },\n { name: 'maxFileSize', label: 'Max File Size (MB)', type: 'number', defaultValue: 10 },\n { name: 'multiple', label: 'Allow Multiple Files', type: 'boolean', defaultValue: false },\n { name: 'showPreview', label: 'Show Preview', type: 'boolean', defaultValue: true },\n { name: 'required', label: 'Required', type: 'boolean', defaultValue: false },\n { name: 'disabled', label: 'Disabled', type: 'boolean', defaultValue: false },\n { name: 'helperText', label: 'Helper Text', type: 'string' },\n ],\n traits: [\n fieldNameTrait({ defaultValue: 'file_upload' }),\n labelTextTrait({ defaultValue: 'Upload File' }),\n acceptTrait(),\n maxFileSizeTrait(),\n multipleTrait(),\n showPreviewTrait(),\n helperTextTrait(),\n requiredTrait(),\n disabledTrait(),\n idTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.label !== undefined && typeof props.label !== 'string' && !isVariableBinding(props.label)) {\n errors.push('FileUpload \"label\" must be a string when provided.');\n }\n if (props.name !== undefined && typeof props.name !== 'string' && !isVariableBinding(props.name)) {\n errors.push('FileUpload \"name\" must be a string when provided.');\n }\n if (props.accept !== undefined && typeof props.accept !== 'string' && !isVariableBinding(props.accept)) {\n errors.push('FileUpload \"accept\" must be a string when provided.');\n }\n if (props.maxFileSize !== undefined && !isVariableBinding(props.maxFileSize)) {\n if (typeof props.maxFileSize !== 'number' || props.maxFileSize <= 0) {\n errors.push('FileUpload \"maxFileSize\" must be a positive number when provided.');\n }\n }\n if (props.multiple !== undefined && typeof props.multiple !== 'boolean' && !isVariableBinding(props.multiple)) {\n errors.push('FileUpload \"multiple\" must be a boolean when provided.');\n }\n if (props.showPreview !== undefined && typeof props.showPreview !== 'boolean' && !isVariableBinding(props.showPreview)) {\n errors.push('FileUpload \"showPreview\" must be a boolean when provided.');\n }\n if (props.required !== undefined && typeof props.required !== 'boolean' && !isVariableBinding(props.required)) {\n errors.push('FileUpload \"required\" must be a boolean when provided.');\n }\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean' && !isVariableBinding(props.disabled)) {\n errors.push('FileUpload \"disabled\" must be a boolean when provided.');\n }\n if (props.helperText !== undefined && typeof props.helperText !== 'string' && !isVariableBinding(props.helperText)) {\n errors.push('FileUpload \"helperText\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n fontSize: '14px',\n color: '#1e293b',\n },\n },\n};\n\n","import { ComponentDefinition } from '../../registry';\nimport { idTrait, ariaLabelTrait, titleTrait } from '../../traits';\n\nexport const modalDefinition: ComponentDefinition = {\n type: 'modal',\n label: 'Modal',\n category: 'interactive',\n icon: 'layout',\n description: 'Pop-up overlay dialog container with backdrop and close controls.',\n acceptsChildren: true,\n allowedChildren: ['*'],\n defaultProps: {\n modalId: 'modal-dialog',\n title: 'Modal Title',\n backdrop: true,\n closeOnBackdrop: true,\n closeOnEscape: true,\n size: 'md',\n showCloseButton: true,\n },\n propFields: [\n {\n name: 'modalId',\n label: 'Modal Target ID',\n type: 'string',\n defaultValue: 'modal-dialog',\n description: 'Unique identifier targeted by open_modal and close_modal actions.',\n },\n {\n name: 'title',\n label: 'Modal Title',\n type: 'string',\n defaultValue: 'Modal Title',\n description: 'Header title text displayed at the top of the dialog.',\n },\n {\n name: 'size',\n label: 'Size',\n type: 'select',\n defaultValue: 'md',\n options: [\n { label: 'Small (400px)', value: 'sm' },\n { label: 'Medium (560px)', value: 'md' },\n { label: 'Large (768px)', value: 'lg' },\n { label: 'Full Screen', value: 'fullscreen' },\n ],\n },\n {\n name: 'backdrop',\n label: 'Show Backdrop',\n type: 'boolean',\n defaultValue: true,\n },\n {\n name: 'closeOnBackdrop',\n label: 'Close on Backdrop Click',\n type: 'boolean',\n defaultValue: true,\n },\n {\n name: 'closeOnEscape',\n label: 'Close on Escape Key',\n type: 'boolean',\n defaultValue: true,\n },\n {\n name: 'showCloseButton',\n label: 'Show Close Button',\n type: 'boolean',\n defaultValue: true,\n },\n ],\n traits: [\n idTrait(),\n titleTrait(),\n ariaLabelTrait({ description: 'Accessible name for the modal dialog.' }),\n ],\n defaultStyles: {\n base: {\n backgroundColor: '#ffffff',\n borderRadius: '12px',\n boxShadow: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n padding: '24px',\n maxWidth: '560px',\n width: '100%',\n },\n },\n};\n","import { ComponentDefinition } from '../../registry';\nimport { idTrait, ariaLabelTrait, titleTrait } from '../../traits';\n\nexport const drawerDefinition: ComponentDefinition = {\n type: 'drawer',\n label: 'Drawer',\n category: 'interactive',\n icon: 'sidebar',\n description: 'Off-canvas slide-over panel container, ideal for mobile navigation and side sheets.',\n acceptsChildren: true,\n allowedChildren: ['*'],\n defaultProps: {\n modalId: 'mobile-drawer',\n title: 'Navigation Menu',\n placement: 'right',\n backdrop: true,\n closeOnBackdrop: true,\n closeOnEscape: true,\n showCloseButton: true,\n },\n propFields: [\n {\n name: 'modalId',\n label: 'Drawer Target ID',\n type: 'string',\n defaultValue: 'mobile-drawer',\n description: 'Unique identifier targeted by open_modal and close_modal actions.',\n },\n {\n name: 'placement',\n label: 'Placement',\n type: 'select',\n defaultValue: 'right',\n options: [\n { label: 'Slide from Right', value: 'right' },\n { label: 'Slide from Left', value: 'left' },\n { label: 'Slide from Top (Dropdown)', value: 'top' },\n { label: 'Slide from Bottom', value: 'bottom' },\n ],\n },\n {\n name: 'title',\n label: 'Drawer Title',\n type: 'string',\n defaultValue: 'Navigation Menu',\n description: 'Header title text displayed at the top of the drawer.',\n },\n {\n name: 'backdrop',\n label: 'Show Backdrop',\n type: 'boolean',\n defaultValue: true,\n },\n {\n name: 'closeOnBackdrop',\n label: 'Close on Backdrop Click',\n type: 'boolean',\n defaultValue: true,\n },\n {\n name: 'closeOnEscape',\n label: 'Close on Escape Key',\n type: 'boolean',\n defaultValue: true,\n },\n {\n name: 'showCloseButton',\n label: 'Show Close Button',\n type: 'boolean',\n defaultValue: true,\n },\n ],\n traits: [\n idTrait(),\n titleTrait(),\n ariaLabelTrait({ description: 'Accessible name for the off-canvas drawer.' }),\n ],\n defaultStyles: {\n base: {\n backgroundColor: '#ffffff',\n boxShadow: '-4px 0 24px rgba(0, 0, 0, 0.15)',\n padding: '24px',\n width: '320px',\n maxWidth: '100%',\n },\n mobile: {\n width: '100%',\n },\n },\n};\n","import { ComponentDefinition } from '../../registry';\nimport { idTrait, ariaLabelTrait } from '../../traits';\n\nexport const collapsibleDefinition: ComponentDefinition = {\n type: 'collapsible',\n label: 'Collapsible',\n category: 'interactive',\n icon: 'chevron-down',\n description: 'In-flow expandable container that toggles visibility without a fullscreen overlay.',\n acceptsChildren: true,\n allowedChildren: ['*'],\n defaultProps: {\n modalId: 'collapsible-content',\n defaultOpen: false,\n animated: true,\n },\n propFields: [\n {\n name: 'modalId',\n label: 'Target ID',\n type: 'string',\n defaultValue: 'collapsible-content',\n description: 'Identifier targeted by Open Modal (with \"Toggle\" enabled) or Close Modal actions.',\n },\n {\n name: 'defaultOpen',\n label: 'Default Open',\n type: 'boolean',\n defaultValue: false,\n description: 'Whether the collapsible container starts expanded on initial render.',\n },\n {\n name: 'animated',\n label: 'Smooth Transition',\n type: 'boolean',\n defaultValue: true,\n },\n ],\n traits: [\n idTrait(),\n ariaLabelTrait({ description: 'Accessible name for the collapsible container.' }),\n ],\n defaultStyles: {\n base: {\n width: '100%',\n overflow: 'hidden',\n },\n },\n};\n"],"mappings":"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","names":["import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema"]}
1
+ {"version":3,"sources":["../../src/definitions/index.ts","../../src/registry.ts","../../src/traits/types.ts","../../src/traits/common.ts","../../src/traits/link.ts","../../src/traits/media.ts","../../src/traits/structure.ts","../../src/traits/form.ts","../../src/definitions/constants.ts","../../src/definitions/layout/page.ts","../../src/definitions/layout/section.ts","../../src/definitions/layout/container.ts","../../src/definitions/layout/columns.ts","../../src/definitions/layout/flex.ts","../../src/definitions/layout/grid.ts","../../src/definitions/typography/heading.ts","../../src/definitions/typography/text.ts","../../src/definitions/typography/paragraph.ts","../../src/definitions/typography/link.ts","../../src/definitions/typography/blockquote.ts","../../src/definitions/typography/badge.ts","../../src/definitions/typography/code-block.ts","../../src/definitions/media/image.ts","../../src/definitions/media/video.ts","../../src/definitions/media/icon.ts","../../src/definitions/media/html-embed.ts","../../src/definitions/data/table.ts","../../src/definitions/data/list.ts","../../src/definitions/data/collection.ts","../../src/definitions/form/button.ts","../../src/definitions/form/form.ts","../../src/definitions/form/input.ts","../../src/definitions/form/textarea.ts","../../src/definitions/form/select.ts","../../src/definitions/form/checkbox.ts","../../src/definitions/form/switch.ts","../../src/definitions/form/radio.ts","../../src/definitions/form/file-upload.ts","../../src/definitions/interactive/modal.ts","../../src/definitions/interactive/drawer.ts","../../src/definitions/interactive/collapsible.ts"],"sourcesContent":["import { ComponentDefinition, ComponentRegistry } from '../registry';\nimport {\n columnsDefinition,\n containerDefinition,\n flexDefinition,\n gridDefinition,\n pageDefinition,\n sectionDefinition,\n} from './layout';\nimport {\n badgeDefinition,\n blockquoteDefinition,\n codeBlockDefinition,\n headingDefinition,\n linkDefinition,\n paragraphDefinition,\n textDefinition,\n} from './typography';\nimport {\n htmlEmbedDefinition,\n iconDefinition,\n imageDefinition,\n videoDefinition,\n} from './media';\nimport {\n collectionDefinition,\n listDefinition,\n listItemDefinition,\n tableCellDefinition,\n tableDefinition,\n tableRowDefinition,\n} from './data';\nimport {\n buttonDefinition,\n buttonSubmitDefinition,\n checkboxDefinition,\n fileUploadDefinition,\n formDefinition,\n inputDefinition,\n radioDefinition,\n radioGroupDefinition,\n radioItemDefinition,\n selectDefinition,\n switchDefinition,\n textareaDefinition,\n} from './form';\n\nexport * from './constants';\nexport * from './types';\nexport * from './layout';\nexport * from './typography';\nexport * from './media';\nexport * from './data';\nexport * from './form';\nexport * from './interactive';\n\nimport {\n modalDefinition,\n drawerDefinition,\n collapsibleDefinition,\n} from './interactive';\n\nexport const coreComponentDefinitions: ComponentDefinition[] = [\n pageDefinition,\n sectionDefinition,\n containerDefinition,\n columnsDefinition,\n flexDefinition,\n gridDefinition,\n headingDefinition,\n textDefinition,\n paragraphDefinition,\n linkDefinition,\n blockquoteDefinition,\n badgeDefinition,\n codeBlockDefinition,\n imageDefinition,\n videoDefinition,\n iconDefinition,\n htmlEmbedDefinition,\n buttonDefinition,\n buttonSubmitDefinition,\n formDefinition,\n inputDefinition,\n textareaDefinition,\n selectDefinition,\n checkboxDefinition,\n switchDefinition,\n radioGroupDefinition,\n radioDefinition,\n radioItemDefinition,\n fileUploadDefinition,\n collectionDefinition,\n listDefinition,\n listItemDefinition,\n tableDefinition,\n tableRowDefinition,\n tableCellDefinition,\n modalDefinition,\n drawerDefinition,\n collapsibleDefinition,\n];\n\nexport function createDefaultComponentRegistry(): ComponentRegistry {\n const registry = new ComponentRegistry();\n for (const def of coreComponentDefinitions) {\n registry.register(def);\n }\n return registry;\n}\n\n","import { Node, ResponsiveStyles } from '@kubuild/schema';\n\nexport type ComponentCategory = 'layout' | 'typography' | 'media' | 'form' | 'interactive' | 'data' | 'custom';\n\nexport interface ComponentFieldDefinition {\n name: string;\n label: string;\n type: 'string' | 'textarea' | 'number' | 'boolean' | 'select' | 'color' | 'image' | 'action' | 'json';\n defaultValue?: unknown;\n options?: Array<{ label: string; value: unknown }>;\n description?: string;\n}\n\nexport interface ComponentDefaultChildSpec {\n type: string;\n props?: Record<string, unknown>;\n styles?: ResponsiveStyles;\n children?: ComponentDefaultChildSpec[];\n}\n\nexport interface ComponentDefinition<TRenderer = unknown> {\n type: string;\n label: string;\n category: ComponentCategory;\n description?: string;\n icon?: string;\n acceptsChildren?: boolean;\n allowedChildren?: string[];\n disallowedParents?: string[];\n defaultProps?: Record<string, unknown>;\n /** Default responsive style override (base/desktop/tablet/mobile), matching a Node's `styles` field. */\n defaultStyles?: ResponsiveStyles;\n /** Default child node template specs inserted automatically when this component is instantiated. */\n defaultChildren?: ComponentDefaultChildSpec[];\n /**\n * Inspector metadata: describes each editable prop (label, input type, options)\n * so a host editor can render property controls without hardcoding per-type UI.\n */\n propFields?: ComponentFieldDefinition[];\n /**\n * Trait metadata (STORA-210): functional props separated from styling.\n * Traits carry semantic/behavioral attributes (href, target, alt, placeholder,\n * aria-label, id, etc.) that map to HTML attributes at render time.\n * Distinct from `propFields` which may include visual styling knobs;\n * traits are purely functional.\n */\n traits?: import('./traits').ComponentTraits;\n /**\n * Prop schema slot: validates a node's props for this component type.\n * Returns `true`/`[]` (valid), `false` (generic failure), or an array of\n * human-readable error messages.\n */\n validateProps?: (props: Record<string, unknown>) => boolean | string[];\n /**\n * Type-to-renderer mapping slot. Deliberately untyped here (`unknown` by\n * default) so `@kubuild/components` stays framework-agnostic — no React\n * import. A consumer package (e.g. `@kubuild/renderer`) specializes\n * `ComponentDefinition<TRenderer>`/`ComponentRegistry<TRenderer>` with a\n * concrete renderer type (e.g. `React.ComponentType<...>`) and populates\n * or reads this field with that type.\n */\n renderer?: TRenderer;\n /**\n * Host-provided runtime capabilities this component type needs to fully\n * resolve at render time (e.g. `'assetProvider'`, `'actionRegistry'` — see\n * `@kubuild/core`'s `RuntimeContext`). Names correspond to entries a host\n * would list in a `.stora` manifest's `requiredCapabilities` (see\n * `@kubuild/schema`'s `ManifestSchema`) so an importer can check it has\n * everything a document needs before accepting it.\n */\n capabilities?: string[];\n}\n\nexport class ComponentRegistry<TRenderer = unknown> {\n private components = new Map<string, ComponentDefinition<TRenderer>>();\n\n register(definition: ComponentDefinition<TRenderer>, allowOverride = false): void {\n if (!allowOverride && this.components.has(definition.type)) {\n throw new Error(`Component type \"${definition.type}\" is already registered.`);\n }\n this.components.set(definition.type, definition);\n }\n\n unregister(type: string): boolean {\n return this.components.delete(type);\n }\n\n get(type: string): ComponentDefinition<TRenderer> | undefined {\n return this.components.get(type);\n }\n\n has(type: string): boolean {\n return this.components.has(type);\n }\n\n list(): ComponentDefinition<TRenderer>[] {\n return Array.from(this.components.values());\n }\n\n listByCategory(category: ComponentCategory): ComponentDefinition<TRenderer>[] {\n return this.list().filter((c) => c.category === category);\n }\n\n /**\n * Check whether `childType` is a valid insertion target under `parentType`,\n * covering both directions of child policy: the parent's `acceptsChildren`/\n * `allowedChildren` (by type, category, or `'*'`) and the child's own\n * `disallowedParents`. Used by the builder to reject an invalid insertion\n * before a node is constructed, rather than after the fact via `validateNode`.\n */\n canInsertChild(parentType: string, childType: string): { valid: boolean; errors: string[] } {\n const errors: string[] = [];\n const parentDef = this.get(parentType);\n const childDef = this.get(childType);\n\n if (!parentDef) {\n errors.push(`Unknown target parent type: \"${parentType}\".`);\n }\n if (!childDef) {\n errors.push(`Unknown component type: \"${childType}\".`);\n }\n if (!parentDef || !childDef) {\n return { valid: false, errors };\n }\n\n if (!parentDef.acceptsChildren) {\n errors.push(`\"${parentDef.label}\" does not accept children.`);\n } else if (parentDef.allowedChildren) {\n const allowed =\n parentDef.allowedChildren.includes('*') ||\n parentDef.allowedChildren.includes(childType) ||\n parentDef.allowedChildren.includes(childDef.category);\n if (!allowed) {\n errors.push(`\"${parentDef.label}\" does not allow \"${childDef.label}\" as a child.`);\n }\n }\n\n if (childDef.disallowedParents?.includes(parentType)) {\n errors.push(`\"${childDef.label}\" is not allowed inside \"${parentDef.label}\".`);\n }\n\n return { valid: errors.length === 0, errors };\n }\n\n validateNode(node: Node, parentType?: string): { valid: boolean; errors: string[] } {\n const def = this.get(node.type);\n const errors: string[] = [];\n\n if (!def) {\n errors.push(`Unknown component type: \"${node.type}\"`);\n return { valid: false, errors };\n }\n\n if (!def.acceptsChildren && node.children && node.children.length > 0) {\n errors.push(`Component \"${node.type}\" does not accept children.`);\n }\n\n if (def.allowedChildren && node.children) {\n for (const child of node.children) {\n const childCategory = this.get(child.type)?.category;\n const allowed =\n def.allowedChildren.includes('*') ||\n def.allowedChildren.includes(child.type) ||\n (childCategory !== undefined && def.allowedChildren.includes(childCategory));\n if (!allowed) {\n errors.push(`Component \"${node.type}\" does not allow child type \"${child.type}\".`);\n }\n }\n }\n\n if (parentType && def.disallowedParents?.includes(parentType)) {\n errors.push(`Component \"${node.type}\" is not allowed inside parent \"${parentType}\".`);\n }\n\n if (def.validateProps && node.props) {\n const propResult = def.validateProps(node.props);\n if (Array.isArray(propResult) && propResult.length > 0) {\n errors.push(...propResult);\n } else if (propResult === false) {\n errors.push(`Props validation failed for component \"${node.type}\".`);\n }\n }\n\n return { valid: errors.length === 0, errors };\n }\n}\n","/**\n * Trait metadata (STORA-210).\n *\n * A **trait** is a *functional* prop — it carries behavior, semantics, or\n * identity rather than pure visual styling. Examples: `href`, `target`, `alt`,\n * `title`, `placeholder`, `aria-label`, and a custom `id`.\n */\n\n/** The primitive data types a trait value can take. */\nexport type TraitType = 'string' | 'number' | 'boolean' | 'select';\n\n/** A constrained choice for `select`-typed traits. */\nexport interface TraitOption {\n label: string;\n value: unknown;\n}\n\n/**\n * Logical grouping used to organize traits in an inspector UI. Kept as a\n * closed union so hosts can render a stable, ordered set of trait sections.\n */\nexport type TraitGroup =\n | 'link'\n | 'media'\n | 'form'\n | 'accessibility'\n | 'identity'\n | 'behavior'\n | 'semantic';\n\n/** Ordered display order for trait groups in an inspector. */\nexport const TRAIT_GROUP_ORDER: TraitGroup[] = [\n 'identity',\n 'link',\n 'media',\n 'form',\n 'behavior',\n 'semantic',\n 'accessibility',\n];\n\n/** Human-readable labels for each trait group. */\nexport const TRAIT_GROUP_LABELS: Record<TraitGroup, string> = {\n identity: 'Identity',\n link: 'Link',\n media: 'Media',\n form: 'Form',\n behavior: 'Behavior',\n semantic: 'Semantic',\n accessibility: 'Accessibility',\n};\n\n/**\n * Metadata describing a single functional trait on a component.\n *\n * `name` is the prop key on the node's `props` object; `attribute` is the HTML\n * attribute it maps to at render time (when they differ, e.g. `name` → `id`).\n */\nexport interface ComponentTraitDefinition {\n /** Prop key on the node's `props` object (e.g. `'href'`, `'alt'`). */\n name: string;\n /** Human-readable label shown in the inspector. */\n label: string;\n /** Data type of the trait value. */\n type: TraitType;\n /** Default value applied when the trait is not set. */\n defaultValue?: unknown;\n /** Constrained choices for `select`-typed traits. */\n options?: TraitOption[];\n /** Short description of the trait's purpose. */\n description?: string;\n /** The HTML attribute this trait maps to at render time (e.g. `'href'`). */\n attribute?: string;\n /** Whether the trait must be present for the component to be valid. */\n required?: boolean;\n /** Logical grouping for inspector organization. */\n group?: TraitGroup;\n}\n\n/** Convenience alias for a list of trait definitions. */\nexport type ComponentTraits = ComponentTraitDefinition[];\n\n/**\n * Merge helper: applies partial overrides on top of a base trait definition.\n * Used by the factories below so callers can tweak label/default/group without\n * repeating the full shape.\n */\nexport function withOverrides(\n base: ComponentTraitDefinition,\n overrides?: Partial<ComponentTraitDefinition>,\n): ComponentTraitDefinition {\n return overrides ? { ...base, ...overrides } : base;\n}\n\n/**\n * Sort a component's traits into a stable, inspector-friendly order:\n * identity first, then the remaining groups in `TRAIT_GROUP_ORDER`, with\n * ungrouped traits last. Preserves relative order within each group.\n */\nexport function sortTraits(traits: ComponentTraits): ComponentTraits {\n const groupRank = (group?: TraitGroup): number => {\n if (!group) return Number.MAX_SAFE_INTEGER;\n const idx = TRAIT_GROUP_ORDER.indexOf(group);\n return idx === -1 ? Number.MAX_SAFE_INTEGER : idx;\n };\n return [...traits].sort((a, b) => groupRank(a.group) - groupRank(b.group));\n}\n\n/**\n * Collect the union of all trait names declared across a set of component\n * definitions. Useful for building a global trait catalog / search index.\n */\nexport function collectTraitNames(traitsList: ComponentTraits[]): string[] {\n const names = new Set<string>();\n for (const traits of traitsList) {\n for (const trait of traits) {\n names.add(trait.name);\n }\n }\n return Array.from(names);\n}\n\n","import { ComponentTraitDefinition, withOverrides } from './types';\n\n/** `id` — a custom, document-unique identifier for the element. */\nexport function idTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'id',\n label: 'Element ID',\n type: 'string',\n attribute: 'id',\n group: 'identity',\n description: 'A custom, document-unique identifier used for anchors, CSS, and scripting.',\n },\n overrides,\n );\n}\n\n/** `title` — advisory title shown on hover / used as a fallback label. */\nexport function titleTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'title',\n label: 'Title',\n type: 'string',\n attribute: 'title',\n group: 'semantic',\n description: 'Advisory title for the element (tooltip / document title).',\n },\n overrides,\n );\n}\n\n/** `aria-label` — accessible name for elements without visible text. */\nexport function ariaLabelTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'ariaLabel',\n label: 'Accessible Label (aria-label)',\n type: 'string',\n attribute: 'aria-label',\n group: 'accessibility',\n description: 'Accessible name for assistive technology when no visible label exists.',\n },\n overrides,\n );\n}\n\n","import { ComponentTraitDefinition, withOverrides } from './types';\n\n/** `href` — the destination URL for links, buttons, and form actions. */\nexport function hrefTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'href',\n label: 'Link URL',\n type: 'string',\n defaultValue: '#',\n attribute: 'href',\n group: 'link',\n description: 'The destination URL the element navigates to when activated.',\n },\n overrides,\n );\n}\n\n/** `target` — where the linked resource opens (`_self`, `_blank`, ...). */\nexport function targetTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'target',\n label: 'Open In',\n type: 'select',\n defaultValue: '_self',\n attribute: 'target',\n group: 'link',\n options: [\n { label: 'Same tab (_self)', value: '_self' },\n { label: 'New tab (_blank)', value: '_blank' },\n { label: 'Parent frame (_parent)', value: '_parent' },\n { label: 'Top frame (_top)', value: '_top' },\n ],\n description: 'Where the linked resource should open.',\n },\n overrides,\n );\n}\n\n/** `rel` — relationship between the current document and the linked resource. */\nexport function relTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'rel',\n label: 'Relationship (rel)',\n type: 'string',\n defaultValue: '',\n attribute: 'rel',\n group: 'link',\n description: 'Space-separated relationship tokens (e.g. \"noopener noreferrer\").',\n },\n overrides,\n );\n}\n\n","import { ComponentTraitDefinition, withOverrides } from './types';\n\n/** `src` — the source URL for media (image, video). */\nexport function srcTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'src',\n label: 'Source URL',\n type: 'string',\n attribute: 'src',\n group: 'media',\n required: true,\n description: 'The source URL of the media resource.',\n },\n overrides,\n );\n}\n\n/** `alt` — alternative text for media, required for accessibility. */\nexport function altTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'alt',\n label: 'Alt Text',\n type: 'string',\n attribute: 'alt',\n group: 'accessibility',\n required: true,\n description: 'Alternative text describing the media for screen readers and fallback.',\n },\n overrides,\n );\n}\n\n/** `poster` — a preview image shown before a video plays. */\nexport function posterTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'poster',\n label: 'Poster Image URL',\n type: 'string',\n attribute: 'poster',\n group: 'media',\n description: 'A preview image shown before the video starts playing.',\n },\n overrides,\n );\n}\n\n/** `controls` — whether native media controls are shown. */\nexport function controlsTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'controls',\n label: 'Show Controls',\n type: 'boolean',\n defaultValue: true,\n attribute: 'controls',\n group: 'media',\n description: 'Whether to show the native play/pause/volume controls.',\n },\n overrides,\n );\n}\n\n/** `autoplay` — whether media starts playing automatically. */\nexport function autoplayTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'autoplay',\n label: 'Autoplay',\n type: 'boolean',\n defaultValue: false,\n attribute: 'autoplay',\n group: 'media',\n description: 'Whether the media starts playing automatically on load.',\n },\n overrides,\n );\n}\n\n/** `loop` — whether media restarts from the beginning when it ends. */\nexport function loopTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'loop',\n label: 'Loop',\n type: 'boolean',\n defaultValue: false,\n attribute: 'loop',\n group: 'media',\n description: 'Whether the media restarts automatically when it reaches the end.',\n },\n overrides,\n );\n}\n\n/** `muted` — whether media starts with sound muted. */\nexport function mutedTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'muted',\n label: 'Muted',\n type: 'boolean',\n defaultValue: false,\n attribute: 'muted',\n group: 'media',\n description: 'Whether the media starts with the audio muted.',\n },\n overrides,\n );\n}\n\n/** `loading` — native lazy/eager loading hint for images (STORA-213). */\nexport function loadingTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'loading',\n label: 'Loading Mode',\n type: 'select',\n defaultValue: 'lazy',\n attribute: 'loading',\n group: 'media',\n options: [\n { label: 'Lazy (load when near viewport)', value: 'lazy' },\n { label: 'Eager (load immediately)', value: 'eager' },\n ],\n description: 'Native loading hint: lazy defers offscreen images, eager loads immediately.',\n },\n overrides,\n );\n}\n\n","import { ComponentTraitDefinition, withOverrides } from './types';\n\n/** `cite` — the source URL for a blockquote. */\nexport function citeTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'cite',\n label: 'Citation URL (cite)',\n type: 'string',\n attribute: 'cite',\n group: 'semantic',\n description: 'The URL of the source document the quote is taken from.',\n },\n overrides,\n );\n}\n\n/** `colSpan` — the number of columns a table cell spans. */\nexport function colSpanTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'colSpan',\n label: 'Column Span (colSpan)',\n type: 'number',\n defaultValue: 1,\n attribute: 'colspan',\n group: 'semantic',\n description: 'The number of columns the cell spans.',\n },\n overrides,\n );\n}\n\n/** `rowSpan` — the number of rows a table cell spans. */\nexport function rowSpanTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'rowSpan',\n label: 'Row Span (rowSpan)',\n type: 'number',\n defaultValue: 1,\n attribute: 'rowspan',\n group: 'semantic',\n description: 'The number of rows the cell spans.',\n },\n overrides,\n );\n}\n\n/** `tag` — the semantic HTML tag a component renders as (e.g. `ul`/`ol`, `td`/`th`). */\nexport function tagTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'tag',\n label: 'HTML Tag',\n type: 'select',\n attribute: 'tag',\n group: 'semantic',\n description: 'The semantic HTML tag the component renders as.',\n },\n overrides,\n );\n}\n\n","import { ComponentTraitDefinition, withOverrides } from './types';\n\n/** `placeholder` — hint text shown inside an empty form control. */\nexport function placeholderTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'placeholder',\n label: 'Placeholder',\n type: 'string',\n attribute: 'placeholder',\n group: 'form',\n description: 'Hint text shown inside the control when it is empty.',\n },\n overrides,\n );\n}\n\n/** `name` — the form field name submitted with the form data. */\nexport function fieldNameTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'name',\n label: 'Field Name',\n type: 'string',\n attribute: 'name',\n group: 'form',\n required: true,\n description: 'The name submitted with the form data for this field.',\n },\n overrides,\n );\n}\n\n/** `required` — whether the form field must be filled before submission. */\nexport function requiredTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'required',\n label: 'Required',\n type: 'boolean',\n defaultValue: false,\n attribute: 'required',\n group: 'form',\n description: 'Whether the field must be filled before the form can be submitted.',\n },\n overrides,\n );\n}\n\n/** `disabled` — whether the control is non-interactive. */\nexport function disabledTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'disabled',\n label: 'Disabled',\n type: 'boolean',\n defaultValue: false,\n attribute: 'disabled',\n group: 'behavior',\n description: 'Disables the control so it cannot be focused or activated.',\n },\n overrides,\n );\n}\n\n/** `readOnly` — whether the control value can be changed by the user. */\nexport function readOnlyTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'readOnly',\n label: 'Read Only',\n type: 'boolean',\n defaultValue: false,\n attribute: 'readonly',\n group: 'behavior',\n description: 'Prevents the user from modifying the control value.',\n },\n overrides,\n );\n}\n\n/** `action` — the URL a form submits to. */\nexport function actionTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'action',\n label: 'Action URL',\n type: 'string',\n attribute: 'action',\n group: 'form',\n description: 'The URL the form data is submitted to.',\n },\n overrides,\n );\n}\n\n/** `method` — the HTTP method a form uses to submit. */\nexport function methodTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'method',\n label: 'Method',\n type: 'select',\n defaultValue: 'POST',\n attribute: 'method',\n group: 'form',\n options: [\n { label: 'POST', value: 'POST' },\n { label: 'GET', value: 'GET' },\n ],\n description: 'The HTTP method used to submit the form.',\n },\n overrides,\n );\n}\n\n/** `autoComplete` — whether the browser may autofill the form. */\nexport function autoCompleteTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'autoComplete',\n label: 'Auto Complete',\n type: 'select',\n defaultValue: 'on',\n attribute: 'autocomplete',\n group: 'form',\n options: [\n { label: 'On', value: 'on' },\n { label: 'Off', value: 'off' },\n ],\n description: 'Whether the browser may autofill values for this form.',\n },\n overrides,\n );\n}\n\n/** `value` — the value submitted for a checkbox/radio when checked. */\nexport function valueTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'value',\n label: 'Value',\n type: 'string',\n attribute: 'value',\n group: 'form',\n description: 'The value submitted with the form data when the control is selected.',\n },\n overrides,\n );\n}\n\n/** `defaultChecked` — whether a checkbox/radio starts checked. */\nexport function defaultCheckedTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'defaultChecked',\n label: 'Default Checked',\n type: 'boolean',\n defaultValue: false,\n attribute: 'checked',\n group: 'form',\n description: 'Whether the control starts in the checked state.',\n },\n overrides,\n );\n}\n\n/** `defaultValue` — the initial value of a form control. */\nexport function defaultValueTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'defaultValue',\n label: 'Default Value',\n type: 'string',\n attribute: 'value',\n group: 'form',\n description: 'The initial value of the control before the user edits it.',\n },\n overrides,\n );\n}\n\n/** `rows` — the visible number of lines in a textarea. */\nexport function rowsTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'rows',\n label: 'Rows',\n type: 'number',\n defaultValue: 4,\n attribute: 'rows',\n group: 'form',\n description: 'The number of visible text lines in the textarea.',\n },\n overrides,\n );\n}\n\n/** `type` — the input type of a form control (text, email, number, ...). */\nexport function inputTypeTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'type',\n label: 'Input Type',\n type: 'select',\n defaultValue: 'text',\n attribute: 'type',\n group: 'form',\n description: 'The semantic input type of the control.',\n },\n overrides,\n );\n}\n\n/** `buttonType` — the button's form behavior (`button`, `submit`, `reset`). */\nexport function buttonTypeTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'buttonType',\n label: 'Button Type',\n type: 'select',\n defaultValue: 'button',\n attribute: 'type',\n group: 'form',\n options: [\n { label: 'Button', value: 'button' },\n { label: 'Submit Form (submit)', value: 'submit' },\n { label: 'Reset Form (reset)', value: 'reset' },\n ],\n description: 'The button’s behavior inside a form.',\n },\n overrides,\n );\n}\n\n/** `preventDefault` — whether the form intercepts the native submit and handles it in JS. */\nexport function preventDefaultTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'preventDefault',\n label: 'Prevent Default',\n type: 'boolean',\n defaultValue: true,\n group: 'form',\n description: 'Intercept the native browser submit and handle it via the KUBUILD action pipeline instead.',\n },\n overrides,\n );\n}\n\n/** `scrollToFirstError` — whether the form auto-scrolls to the first invalid field on submit. */\nexport function scrollToFirstErrorTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'scrollToFirstError',\n label: 'Scroll to First Error',\n type: 'boolean',\n defaultValue: true,\n group: 'form',\n description: 'Automatically scroll to and focus the first invalid field when submission fails validation.',\n },\n overrides,\n );\n}\n\n/** `resetOnSubmit` — whether the form resets all fields to their initial values after a successful submit. */\nexport function resetOnSubmitTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'resetOnSubmit',\n label: 'Reset on Submit',\n type: 'boolean',\n defaultValue: false,\n group: 'form',\n description: 'Reset all fields to their initial values after a successful form submission.',\n },\n overrides,\n );\n}\n\n/** `pattern` — a regex the field value must match for the input to be valid. */\nexport function patternTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'pattern',\n label: 'Pattern (regex)',\n type: 'string',\n attribute: 'pattern',\n group: 'form',\n description: 'A regular expression the input value must match to pass validation.',\n },\n overrides,\n );\n}\n\n/** `minLength` — the minimum number of characters required. */\nexport function minLengthTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'minLength',\n label: 'Min Length',\n type: 'number',\n attribute: 'minlength',\n group: 'form',\n description: 'The minimum number of characters the user must enter.',\n },\n overrides,\n );\n}\n\n/** `maxLength` — the maximum number of characters allowed. */\nexport function maxLengthTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'maxLength',\n label: 'Max Length',\n type: 'number',\n attribute: 'maxlength',\n group: 'form',\n description: 'The maximum number of characters the user is allowed to enter.',\n },\n overrides,\n );\n}\n\n/** `prefixIcon` — an icon name displayed before the input content (e.g. Lucide icon name). */\nexport function prefixIconTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'prefixIcon',\n label: 'Prefix Icon',\n type: 'string',\n group: 'form',\n description: 'Lucide icon name displayed before the input value (e.g. \"mail\", \"search\").',\n },\n overrides,\n );\n}\n\n/** `suffixIcon` — an icon name displayed after the input content (e.g. Lucide icon name). */\nexport function suffixIconTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'suffixIcon',\n label: 'Suffix Icon',\n type: 'string',\n group: 'form',\n description: 'Lucide icon name displayed after the input value (e.g. \"eye\", \"check\").',\n },\n overrides,\n );\n}\n\n/** `helperText` — a short hint displayed below the input describing its expected value. */\nexport function helperTextTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'helperText',\n label: 'Helper Text',\n type: 'string',\n group: 'form',\n description: 'A short message displayed below the input to guide the user (e.g. \"Must be at least 8 characters\").',\n },\n overrides,\n );\n}\n\n/** `resize` — the CSS resize behavior of a textarea. */\nexport function resizeTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'resize',\n label: 'Resize',\n type: 'select',\n defaultValue: 'vertical',\n group: 'form',\n options: [\n { label: 'Vertical only', value: 'vertical' },\n { label: 'Horizontal only', value: 'horizontal' },\n { label: 'Both', value: 'both' },\n { label: 'None', value: 'none' },\n ],\n description: 'Controls whether and how the user can resize the textarea.',\n },\n overrides,\n );\n}\n\n/** `autoGrow` — whether the textarea automatically grows in height as the user types. */\nexport function autoGrowTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'autoGrow',\n label: 'Auto Grow',\n type: 'boolean',\n defaultValue: false,\n group: 'form',\n description: 'Automatically expand the textarea height to fit the content without scrolling.',\n },\n overrides,\n );\n}\n\n/** `maxCharCount` — the maximum character count with a visible counter shown below the textarea. */\nexport function maxCharCountTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'maxCharCount',\n label: 'Max Character Count',\n type: 'number',\n group: 'form',\n description: 'Maximum character limit displayed as a counter below the textarea (e.g. \"120 / 500\").',\n },\n overrides,\n );\n}\n\n/** `optionsList` — the list of options for a select dropdown, each with a label and value. */\nexport function optionsListTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'options',\n label: 'Options',\n type: 'string',\n group: 'form',\n description: 'The list of dropdown options, each with a label and value. Editable via the inspector trait panel.',\n },\n overrides,\n );\n}\n\n/** `labelText` — the visible label text displayed next to a boolean control. */\nexport function labelTextTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'label',\n label: 'Label Text',\n type: 'string',\n group: 'form',\n description: 'The visible text label displayed alongside the control.',\n },\n overrides,\n );\n}\n\n/** `indeterminate` — whether the checkbox renders in the indeterminate (mixed) visual state. */\nexport function indeterminateTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'indeterminate',\n label: 'Indeterminate',\n type: 'boolean',\n defaultValue: false,\n group: 'form',\n description: 'Renders the checkbox in a mixed/indeterminate visual state (neither checked nor unchecked).',\n },\n overrides,\n );\n}\n\n/** `switchSize` — the visual size of a switch control. */\nexport function switchSizeTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'switchSize',\n label: 'Size',\n type: 'select',\n defaultValue: 'md',\n group: 'form',\n options: [\n { label: 'Small', value: 'sm' },\n { label: 'Medium', value: 'md' },\n { label: 'Large', value: 'lg' },\n ],\n description: 'The visual size of the switch toggle.',\n },\n overrides,\n );\n}\n\n/** `orientation` — the layout direction for a group of controls (horizontal or vertical). */\nexport function orientationTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'orientation',\n label: 'Orientation',\n type: 'select',\n defaultValue: 'vertical',\n group: 'form',\n options: [\n { label: 'Vertical', value: 'vertical' },\n { label: 'Horizontal', value: 'horizontal' },\n ],\n description: 'The layout direction of the child controls (vertical stack or horizontal row).',\n },\n overrides,\n );\n}\n\n/** `defaultSelected` — the initially selected value in a radio group. */\nexport function defaultSelectedTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'defaultSelected',\n label: 'Default Selected',\n type: 'string',\n group: 'form',\n description: 'The value of the radio item that is selected by default.',\n },\n overrides,\n );\n}\n\n/** `accept` — the allowed file MIME types or extensions (e.g. \"image/*,.pdf\"). */\nexport function acceptTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'accept',\n label: 'Accepted File Types',\n type: 'string',\n attribute: 'accept',\n defaultValue: '*/*',\n group: 'form',\n description: 'Comma-separated list of MIME types or file extensions accepted (e.g. \"image/*,.pdf,.docx\").',\n },\n overrides,\n );\n}\n\n/** `maxFileSize` — the maximum permitted file size in megabytes (MB). */\nexport function maxFileSizeTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'maxFileSize',\n label: 'Max File Size (MB)',\n type: 'number',\n defaultValue: 10,\n group: 'form',\n description: 'The maximum allowable file size in megabytes (MB).',\n },\n overrides,\n );\n}\n\n/** `multiple` — whether the user may select multiple files simultaneously. */\nexport function multipleTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'multiple',\n label: 'Allow Multiple Files',\n type: 'boolean',\n attribute: 'multiple',\n defaultValue: false,\n group: 'form',\n description: 'Allow multiple files to be selected and uploaded at once.',\n },\n overrides,\n );\n}\n\n/** `showPreview` — whether to render a thumbnail or list preview for selected files. */\nexport function showPreviewTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'showPreview',\n label: 'Show Preview',\n type: 'boolean',\n defaultValue: true,\n group: 'form',\n description: 'Display an interactive preview (image thumbnail or file list with badges) for selected files.',\n },\n overrides,\n );\n}\n\n/** `loadingText` — alternative label displayed while form is submitting. */\nexport function loadingTextTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'loadingText',\n label: 'Loading Text',\n type: 'string',\n defaultValue: 'Submitting...',\n group: 'behavior',\n description: 'Text displayed on the button while the form submission is in progress.',\n },\n overrides,\n );\n}\n\n/** `showSpinner` — whether an animated loading spinner is displayed during submission. */\nexport function showSpinnerTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'showSpinner',\n label: 'Show Loading Spinner',\n type: 'boolean',\n defaultValue: true,\n group: 'behavior',\n description: 'Automatically show an animated loading spinner icon while form is submitting.',\n },\n overrides,\n );\n}\n\n/** `autoDisableOnSubmit` — whether the submit button is automatically disabled during submission. */\nexport function autoDisableOnSubmitTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'autoDisableOnSubmit',\n label: 'Auto Disable on Submit',\n type: 'boolean',\n defaultValue: true,\n group: 'behavior',\n description: 'Automatically disable the button to prevent duplicate submissions while the form is submitting.',\n },\n overrides,\n );\n}\n\n","/**\n * Layout nesting policy (STORA-021): page > section > container/columns > content.\n * `page` is never a valid child anywhere (excluded from every allowedChildren list\n * below, and explicitly barred via disallowedParents) so a \"page\" node can never\n * appear nested inside another node, and content nodes can never become the root\n * (enforced separately by the schema's RootPageNodeSchema refinement).\n */\nexport const LAYOUT_PARENTS = ['page', 'section', 'container', 'columns', 'flex', 'grid', 'modal', 'drawer', 'collapsible'];\n\nexport const CONTENT_CHILD_TYPES = [\n 'heading',\n 'text',\n 'paragraph',\n 'link',\n 'blockquote',\n 'badge',\n 'code-block',\n 'image',\n 'video',\n 'icon',\n 'html-embed',\n 'button',\n 'button-submit',\n 'form',\n 'input',\n 'textarea',\n 'select',\n 'checkbox',\n 'switch',\n 'radio-group',\n 'radio',\n 'radio-item',\n 'file-upload',\n 'list',\n 'table',\n 'collection',\n 'custom',\n 'modal',\n 'drawer',\n 'collapsible',\n];\n\n","import { ComponentDefinition } from '../../registry';\nimport { idTrait, titleTrait } from '../../traits';\nimport { CONTENT_CHILD_TYPES, LAYOUT_PARENTS } from '../constants';\n\nexport const pageDefinition: ComponentDefinition = {\n type: 'page',\n label: 'Page',\n category: 'layout',\n icon: 'layout',\n acceptsChildren: true,\n allowedChildren: ['section', 'custom'],\n disallowedParents: [...LAYOUT_PARENTS, ...CONTENT_CHILD_TYPES, 'list-item', 'table-row', 'table-cell'],\n defaultProps: { title: 'New Page' },\n traits: [\n titleTrait({ defaultValue: 'New Page', description: 'The document title shown in the browser tab and search results.' }),\n idTrait(),\n ],\n defaultStyles: { base: { minHeight: '100vh', backgroundColor: '#ffffff' } },\n};\n\n","import { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait } from '../../traits';\nimport { CONTENT_CHILD_TYPES } from '../constants';\n\nexport const sectionDefinition: ComponentDefinition = {\n type: 'section',\n label: 'Section',\n category: 'layout',\n icon: 'rows',\n acceptsChildren: true,\n allowedChildren: ['section', 'container', 'columns', 'flex', 'grid', ...CONTENT_CHILD_TYPES],\n defaultProps: {},\n traits: [\n idTrait(),\n ariaLabelTrait({ description: 'Accessible name for the section landmark.' }),\n ],\n defaultStyles: {\n base: {\n paddingTop: '48px',\n paddingBottom: '48px',\n paddingLeft: '16px',\n paddingRight: '16px',\n },\n tablet: {\n paddingTop: '32px',\n paddingBottom: '32px',\n },\n mobile: {\n paddingTop: '24px',\n paddingBottom: '24px',\n paddingLeft: '16px',\n paddingRight: '16px',\n },\n },\n};\n\n","import { ComponentDefinition } from '../../registry';\nimport { idTrait } from '../../traits';\nimport { CONTENT_CHILD_TYPES } from '../constants';\n\nexport const containerDefinition: ComponentDefinition = {\n type: 'container',\n label: 'Container',\n category: 'layout',\n icon: 'box',\n acceptsChildren: true,\n allowedChildren: ['container', 'columns', 'flex', 'grid', ...CONTENT_CHILD_TYPES],\n defaultProps: { maxWidth: '1200px' },\n traits: [\n idTrait(),\n ],\n defaultStyles: {\n base: {\n maxWidth: '1200px',\n margin: '0 auto',\n width: '100%',\n },\n tablet: {\n maxWidth: '720px',\n },\n mobile: {\n maxWidth: '100%',\n paddingLeft: '16px',\n paddingRight: '16px',\n },\n },\n};\n\n","import { ComponentDefinition } from '../../registry';\nimport { idTrait } from '../../traits';\nimport { CONTENT_CHILD_TYPES } from '../constants';\n\nexport const columnsDefinition: ComponentDefinition = {\n type: 'columns',\n label: 'Columns',\n category: 'layout',\n icon: 'columns',\n acceptsChildren: true,\n allowedChildren: ['columns', 'container', 'flex', 'grid', ...CONTENT_CHILD_TYPES],\n defaultProps: { columns: 2, gap: '16px' },\n traits: [\n idTrait(),\n ],\n defaultStyles: {\n base: {\n display: 'grid',\n gridTemplateColumns: 'repeat(2, minmax(0, 1fr))',\n gap: '16px',\n },\n tablet: {\n gridTemplateColumns: 'repeat(2, minmax(0, 1fr))',\n gap: '12px',\n },\n mobile: {\n gridTemplateColumns: 'repeat(1, minmax(0, 1fr))',\n gap: '12px',\n },\n },\n};\n\n","import { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait } from '../../traits';\n\n/**\n * Flex Frame Component Definition (STORA-102)\n * Auto Layout Flexbox container supporting any child with default column direction and 16px gap.\n */\nexport const flexDefinition: ComponentDefinition = {\n type: 'flex',\n label: 'Flex',\n category: 'layout',\n icon: 'flex',\n acceptsChildren: true,\n allowedChildren: ['*'],\n disallowedParents: ['page'],\n defaultProps: {},\n traits: [\n idTrait(),\n ariaLabelTrait({ description: 'Accessible name for the flex container.' }),\n ],\n defaultStyles: {\n base: {\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n },\n },\n};\n","import { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait } from '../../traits';\n\n/**\n * CSS Grid Component Definition (STORA-111)\n * Visual CSS Grid container with default 3 equal columns and 16px gap.\n */\nexport const gridDefinition: ComponentDefinition = {\n type: 'grid',\n label: 'Grid',\n category: 'layout',\n icon: 'grid',\n acceptsChildren: true,\n allowedChildren: ['*'],\n disallowedParents: ['page'],\n defaultProps: {\n columns: 3,\n gap: '16px',\n },\n traits: [\n idTrait(),\n ariaLabelTrait({ description: 'Accessible name for the grid container.' }),\n ],\n defaultStyles: {\n base: {\n display: 'grid',\n gridTemplateColumns: 'repeat(3, minmax(0, 1fr))',\n gap: '16px',\n },\n tablet: {\n gridTemplateColumns: 'repeat(2, minmax(0, 1fr))',\n gap: '16px',\n },\n mobile: {\n gridTemplateColumns: 'repeat(1, minmax(0, 1fr))',\n gap: '16px',\n },\n },\n};\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait, titleTrait } from '../../traits';\n\nexport const headingDefinition: ComponentDefinition = {\n type: 'heading',\n label: 'Heading',\n category: 'typography',\n icon: 'heading',\n acceptsChildren: false,\n defaultProps: { text: 'Heading Text', level: 2 },\n propFields: [\n { name: 'text', label: 'Text', type: 'string', defaultValue: 'Heading Text' },\n {\n name: 'level',\n label: 'Title Size',\n type: 'select',\n defaultValue: 2,\n options: [\n { label: 'H1 - Main Title (Extra Large)', value: 1 },\n { label: 'H2 - Subtitle (Large)', value: 2 },\n { label: 'H3 - Section Title (Medium)', value: 3 },\n { label: 'H4 - Subsection Title (Small)', value: 4 },\n { label: 'H5 - Small Title (Extra Small)', value: 5 },\n { label: 'H6 - Micro Title (Smallest)', value: 6 },\n ],\n },\n ],\n traits: [\n idTrait(),\n titleTrait({ description: 'Advisory title shown when hovering the heading.' }),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (!isVariableBinding(props.text) && (typeof props.text !== 'string' || props.text.trim().length === 0)) {\n errors.push('Heading requires a non-empty \"text\".');\n }\n if (props.level !== undefined && (typeof props.level !== 'number' || props.level < 1 || props.level > 6)) {\n errors.push('Heading \"level\" must be a number between 1 and 6.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n fontSize: '32px',\n fontWeight: '700',\n color: '#111827',\n margin: '0 0 16px 0',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait, titleTrait } from '../../traits';\n\nexport const textDefinition: ComponentDefinition = {\n type: 'text',\n label: 'Text',\n category: 'typography',\n icon: 'type',\n acceptsChildren: false,\n defaultProps: { content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.' },\n propFields: [\n { name: 'content', label: 'Content', type: 'string', defaultValue: 'Lorem ipsum dolor sit amet.' },\n ],\n traits: [\n idTrait(),\n titleTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n if (!isVariableBinding(props.content) && (typeof props.content !== 'string' || props.content.trim().length === 0)) {\n return ['Text requires a non-empty \"content\".'];\n }\n return true;\n },\n defaultStyles: {\n base: {\n fontSize: '16px',\n color: '#4b5563',\n lineHeight: '1.6',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait, titleTrait } from '../../traits';\n\nexport const paragraphDefinition: ComponentDefinition = {\n type: 'paragraph',\n label: 'Paragraph',\n category: 'typography',\n icon: 'paragraph',\n acceptsChildren: false,\n defaultProps: {\n text: 'A paragraph of text with clean semantic typography.',\n },\n propFields: [\n {\n name: 'text',\n label: 'Text',\n type: 'string',\n defaultValue: 'A paragraph of text with clean semantic typography.',\n },\n ],\n traits: [\n idTrait(),\n titleTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n const textVal = props.text ?? props.content;\n if (\n textVal !== undefined &&\n !isVariableBinding(textVal) &&\n (typeof textVal !== 'string' || textVal.trim().length === 0)\n ) {\n errors.push('Paragraph requires a non-empty \"text\".');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n fontSize: '16px',\n color: '#4b5563',\n lineHeight: '1.6',\n margin: '0 0 16px 0',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, hrefTrait, idTrait, relTrait, targetTrait, titleTrait } from '../../traits';\n\nexport const linkDefinition: ComponentDefinition = {\n type: 'link',\n label: 'Link',\n category: 'typography',\n icon: 'link',\n acceptsChildren: false,\n defaultProps: {\n text: 'Click here',\n href: '#',\n target: '_self',\n rel: '',\n },\n propFields: [\n { name: 'text', label: 'Link Text', type: 'string', defaultValue: 'Click here' },\n { name: 'href', label: 'URL (href)', type: 'string', defaultValue: '#' },\n {\n name: 'target',\n label: 'Target',\n type: 'select',\n defaultValue: '_self',\n options: [\n { label: 'Same tab (_self)', value: '_self' },\n { label: 'New tab (_blank)', value: '_blank' },\n { label: 'Parent (_parent)', value: '_parent' },\n { label: 'Top (_top)', value: '_top' },\n ],\n },\n { name: 'rel', label: 'Relationship (rel)', type: 'string', defaultValue: '' },\n ],\n traits: [\n hrefTrait(),\n targetTrait(),\n relTrait(),\n idTrait(),\n titleTrait({ description: 'Advisory title shown when hovering the link.' }),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (\n props.text !== undefined &&\n !isVariableBinding(props.text) &&\n (typeof props.text !== 'string' || props.text.trim().length === 0)\n ) {\n errors.push('Link requires a non-empty \"text\".');\n }\n if (props.href !== undefined && typeof props.href !== 'string' && !isVariableBinding(props.href)) {\n errors.push('Link \"href\" must be a string when provided.');\n }\n if (props.target !== undefined && !isVariableBinding(props.target)) {\n const allowedTargets = ['_self', '_blank', '_parent', '_top'];\n if (typeof props.target !== 'string' || !allowedTargets.includes(props.target)) {\n errors.push(`Link \"target\" must be one of: ${allowedTargets.join(', ')}.`);\n }\n }\n if (props.rel !== undefined && typeof props.rel !== 'string' && !isVariableBinding(props.rel)) {\n errors.push('Link \"rel\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n color: '#2563eb',\n textDecoration: 'underline',\n cursor: 'pointer',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, citeTrait, idTrait, titleTrait } from '../../traits';\n\nexport const blockquoteDefinition: ComponentDefinition = {\n type: 'blockquote',\n label: 'Blockquote',\n category: 'typography',\n icon: 'blockquote',\n acceptsChildren: true,\n allowedChildren: [\n 'paragraph',\n 'text',\n 'heading',\n 'link',\n 'badge',\n 'code-block',\n 'image',\n 'video',\n 'icon',\n 'html-embed',\n 'custom',\n ],\n defaultProps: {\n text: '“Simplicity is the soul of efficiency.”',\n },\n propFields: [\n {\n name: 'text',\n label: 'Quote Text',\n type: 'string',\n defaultValue: '“Simplicity is the soul of efficiency.”',\n },\n { name: 'cite', label: 'Citation URL (cite)', type: 'string' },\n ],\n traits: [\n citeTrait(),\n idTrait(),\n titleTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.text !== undefined && typeof props.text !== 'string' && !isVariableBinding(props.text)) {\n errors.push('Blockquote \"text\" must be a string when provided.');\n }\n if (props.cite !== undefined && typeof props.cite !== 'string' && !isVariableBinding(props.cite)) {\n errors.push('Blockquote \"cite\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n borderLeftWidth: '4px',\n borderLeftColor: '#3b82f6',\n borderLeftStyle: 'solid',\n paddingTop: '8px',\n paddingBottom: '8px',\n paddingLeft: '16px',\n paddingRight: '12px',\n margin: '0 0 16px 0',\n fontStyle: 'italic',\n color: '#4b5563',\n backgroundColor: '#f8fafc',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait, titleTrait } from '../../traits';\n\nexport const badgeDefinition: ComponentDefinition = {\n type: 'badge',\n label: 'Badge',\n category: 'typography',\n icon: 'badge',\n acceptsChildren: false,\n defaultProps: {\n text: 'Badge',\n variant: 'default',\n },\n propFields: [\n { name: 'text', label: 'Badge Text', type: 'string', defaultValue: 'Badge' },\n {\n name: 'variant',\n label: 'Variant',\n type: 'select',\n defaultValue: 'default',\n options: [\n { label: 'Default', value: 'default' },\n { label: 'Success', value: 'success' },\n { label: 'Warning', value: 'warning' },\n { label: 'Danger', value: 'danger' },\n { label: 'Info', value: 'info' },\n ],\n },\n ],\n traits: [\n idTrait(),\n titleTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (\n props.text !== undefined &&\n !isVariableBinding(props.text) &&\n (typeof props.text !== 'string' || props.text.trim().length === 0)\n ) {\n errors.push('Badge requires a non-empty \"text\".');\n }\n if (props.variant !== undefined && typeof props.variant !== 'string' && !isVariableBinding(props.variant)) {\n errors.push('Badge \"variant\" must be a string.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n paddingLeft: '10px',\n paddingRight: '10px',\n paddingTop: '2px',\n paddingBottom: '2px',\n borderRadius: '9999px',\n fontSize: '12px',\n fontWeight: '500',\n lineHeight: '1.4',\n backgroundColor: '#e0e7ff',\n color: '#3730a3',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait, titleTrait } from '../../traits';\n\nexport const codeBlockDefinition: ComponentDefinition = {\n type: 'code-block',\n label: 'Code Block',\n category: 'typography',\n icon: 'code-block',\n acceptsChildren: false,\n defaultProps: {\n code: 'console.log(\"Hello, world!\");',\n language: 'javascript',\n },\n propFields: [\n {\n name: 'code',\n label: 'Code',\n type: 'textarea',\n defaultValue: 'console.log(\"Hello, world!\");',\n },\n {\n name: 'language',\n label: 'Language',\n type: 'string',\n defaultValue: 'javascript',\n },\n ],\n traits: [\n idTrait(),\n titleTrait(),\n ariaLabelTrait({ description: 'Accessible label describing what the code example shows.' }),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.code !== undefined && typeof props.code !== 'string' && !isVariableBinding(props.code)) {\n errors.push('Code Block \"code\" must be a string when provided.');\n }\n if (props.language !== undefined && typeof props.language !== 'string' && !isVariableBinding(props.language)) {\n errors.push('Code Block \"language\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n backgroundColor: '#1e293b',\n color: '#f8fafc',\n padding: '16px',\n borderRadius: '8px',\n fontFamily: 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace',\n fontSize: '14px',\n lineHeight: '1.5',\n overflowX: 'auto',\n margin: '0 0 16px 0',\n whiteSpace: 'pre',\n },\n },\n};\n\n","import { isAssetReference, isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { altTrait, ariaLabelTrait, idTrait, loadingTrait, srcTrait, titleTrait } from '../../traits';\n\nexport const imageDefinition: ComponentDefinition = {\n type: 'image',\n label: 'Image',\n category: 'media',\n icon: 'image',\n acceptsChildren: false,\n capabilities: ['assetProvider'],\n defaultProps: {\n src: 'https://images.unsplash.com/photo-1579546929518-9e396f3cc809?w=800&auto=format&fit=crop&q=80',\n alt: 'Default image',\n width: 600,\n height: 400,\n },\n propFields: [\n { name: 'src', label: 'Image URL', type: 'string' },\n { name: 'asset', label: 'Asset Reference', type: 'json' },\n { name: 'alt', label: 'Alt Text', type: 'string', defaultValue: 'Default image' },\n { name: 'width', label: 'Width', type: 'number' },\n { name: 'height', label: 'Height', type: 'number' },\n ],\n traits: [\n srcTrait(),\n altTrait({ defaultValue: 'Default image' }),\n loadingTrait(),\n idTrait(),\n titleTrait(),\n ariaLabelTrait({ description: 'Override the alt text for assistive technology (rarely needed).' }),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n const hasSrc = (typeof props.src === 'string' && props.src.trim().length > 0) || isVariableBinding(props.src);\n const hasAsset = isAssetReference(props.asset);\n if (!hasSrc && !hasAsset) {\n errors.push('Image requires either a non-empty \"src\" URL or a valid \"asset\" reference.');\n }\n const hasAlt = (typeof props.alt === 'string' && props.alt.trim().length > 0) || isVariableBinding(props.alt);\n if (!hasAlt) {\n errors.push('Image requires non-empty \"alt\" text.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n maxWidth: '100%',\n height: 'auto',\n borderRadius: '8px',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport {\n ariaLabelTrait,\n autoplayTrait,\n controlsTrait,\n idTrait,\n loopTrait,\n mutedTrait,\n posterTrait,\n srcTrait,\n titleTrait,\n} from '../../traits';\n\nexport const videoDefinition: ComponentDefinition = {\n type: 'video',\n label: 'Video',\n category: 'media',\n icon: 'video',\n acceptsChildren: false,\n defaultProps: {\n src: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ',\n provider: 'auto',\n poster: '',\n controls: true,\n autoplay: false,\n loop: false,\n muted: false,\n aspectRatio: '16:9',\n },\n propFields: [\n {\n name: 'src',\n label: 'Video URL (HTML5, YouTube, Vimeo)',\n type: 'string',\n defaultValue: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ',\n },\n {\n name: 'provider',\n label: 'Provider',\n type: 'select',\n defaultValue: 'auto',\n options: [\n { label: 'Auto Detect', value: 'auto' },\n { label: 'HTML5 Video', value: 'html5' },\n { label: 'YouTube Embed', value: 'youtube' },\n { label: 'Vimeo Embed', value: 'vimeo' },\n ],\n },\n { name: 'poster', label: 'Poster Image URL', type: 'string', defaultValue: '' },\n { name: 'controls', label: 'Show Controls', type: 'boolean', defaultValue: true },\n { name: 'autoplay', label: 'Autoplay', type: 'boolean', defaultValue: false },\n { name: 'loop', label: 'Loop', type: 'boolean', defaultValue: false },\n { name: 'muted', label: 'Muted', type: 'boolean', defaultValue: false },\n {\n name: 'aspectRatio',\n label: 'Aspect Ratio',\n type: 'select',\n defaultValue: '16:9',\n options: [\n { label: '16:9 (Widescreen)', value: '16:9' },\n { label: '4:3 (Standard)', value: '4:3' },\n { label: '1:1 (Square)', value: '1:1' },\n { label: '9:16 (Vertical)', value: '9:16' },\n { label: 'Auto', value: 'auto' },\n ],\n },\n ],\n traits: [\n srcTrait(),\n posterTrait(),\n controlsTrait(),\n autoplayTrait(),\n loopTrait(),\n mutedTrait(),\n idTrait(),\n titleTrait(),\n ariaLabelTrait({ description: 'Accessible name summarizing the video content.' }),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.src !== undefined && typeof props.src !== 'string' && !isVariableBinding(props.src)) {\n errors.push('Video \"src\" must be a string when provided.');\n }\n if (props.provider !== undefined && !isVariableBinding(props.provider)) {\n const allowed = ['auto', 'html5', 'youtube', 'vimeo'];\n if (typeof props.provider !== 'string' || !allowed.includes(props.provider)) {\n errors.push(`Video \"provider\" must be one of: ${allowed.join(', ')}.`);\n }\n }\n if (props.controls !== undefined && typeof props.controls !== 'boolean' && !isVariableBinding(props.controls)) {\n errors.push('Video \"controls\" must be a boolean.');\n }\n if (props.autoplay !== undefined && typeof props.autoplay !== 'boolean' && !isVariableBinding(props.autoplay)) {\n errors.push('Video \"autoplay\" must be a boolean.');\n }\n if (props.loop !== undefined && typeof props.loop !== 'boolean' && !isVariableBinding(props.loop)) {\n errors.push('Video \"loop\" must be a boolean.');\n }\n if (props.muted !== undefined && typeof props.muted !== 'boolean' && !isVariableBinding(props.muted)) {\n errors.push('Video \"muted\" must be a boolean.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n width: '100%',\n maxWidth: '800px',\n borderRadius: '8px',\n overflow: 'hidden',\n display: 'block',\n margin: '0 0 16px 0',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait, titleTrait } from '../../traits';\n\nexport const iconDefinition: ComponentDefinition = {\n type: 'icon',\n label: 'Icon',\n category: 'media',\n icon: 'sparkles',\n acceptsChildren: false,\n defaultProps: {\n name: 'star',\n size: 24,\n color: '#2563eb',\n strokeWidth: 2,\n },\n propFields: [\n { name: 'name', label: 'Icon Name (Lucide)', type: 'string', defaultValue: 'star' },\n { name: 'size', label: 'Size (px)', type: 'number', defaultValue: 24 },\n { name: 'color', label: 'Color', type: 'color', defaultValue: '#2563eb' },\n { name: 'strokeWidth', label: 'Stroke Width', type: 'number', defaultValue: 2 },\n ],\n traits: [\n idTrait(),\n titleTrait(),\n ariaLabelTrait({ required: true, description: 'Required: describes what the icon represents for screen readers.' }),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (\n props.name !== undefined &&\n !isVariableBinding(props.name) &&\n (typeof props.name !== 'string' || props.name.trim().length === 0)\n ) {\n errors.push('Icon requires a non-empty \"name\".');\n }\n if (props.size !== undefined && !isVariableBinding(props.size)) {\n if (typeof props.size !== 'number' || props.size < 0) {\n errors.push('Icon \"size\" must be a non-negative number.');\n }\n }\n if (props.strokeWidth !== undefined && !isVariableBinding(props.strokeWidth)) {\n if (typeof props.strokeWidth !== 'number' || props.strokeWidth < 0) {\n errors.push('Icon \"strokeWidth\" must be a non-negative number.');\n }\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait } from '../../traits';\n\nexport const htmlEmbedDefinition: ComponentDefinition = {\n type: 'html-embed',\n label: 'HTML Embed',\n category: 'custom',\n icon: 'code',\n acceptsChildren: false,\n defaultProps: {\n html: '<div style=\"padding: 16px; background: #f1f5f9; border-radius: 8px; text-align: center; font-family: sans-serif; color: #475569;\">Custom HTML Embed Content</div>',\n },\n propFields: [\n {\n name: 'html',\n label: 'HTML / Embed Code',\n type: 'textarea',\n defaultValue: '<div style=\"padding: 16px; background: #f1f5f9; border-radius: 8px; text-align: center; font-family: sans-serif; color: #475569;\">Custom HTML Embed Content</div>',\n },\n ],\n traits: [\n idTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.html !== undefined && typeof props.html !== 'string' && !isVariableBinding(props.html)) {\n errors.push('HTML Embed \"html\" must be a string.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n width: '100%',\n margin: '0 0 16px 0',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, colSpanTrait, idTrait, rowSpanTrait } from '../../traits';\n\nexport const tableDefinition: ComponentDefinition = {\n type: 'table',\n label: 'Table',\n category: 'layout',\n icon: 'table',\n acceptsChildren: true,\n allowedChildren: ['table-row'],\n defaultProps: {\n striped: false,\n bordered: true,\n compact: false,\n },\n defaultChildren: [\n {\n type: 'table-row',\n children: [\n { type: 'table-cell', props: { tag: 'th', text: 'Header 1' } },\n { type: 'table-cell', props: { tag: 'th', text: 'Header 2' } },\n ],\n },\n {\n type: 'table-row',\n children: [\n { type: 'table-cell', props: { tag: 'td', text: 'Data 1' } },\n { type: 'table-cell', props: { tag: 'td', text: 'Data 2' } },\n ],\n },\n ],\n propFields: [\n { name: 'striped', label: 'Striped Rows', type: 'boolean', defaultValue: false },\n { name: 'bordered', label: 'Bordered', type: 'boolean', defaultValue: true },\n { name: 'compact', label: 'Compact Spacing', type: 'boolean', defaultValue: false },\n ],\n traits: [\n idTrait(),\n ariaLabelTrait({ description: 'Required: provides a caption summary for the table when no visible caption exists.' }),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.striped !== undefined && typeof props.striped !== 'boolean' && !isVariableBinding(props.striped)) {\n errors.push('Table \"striped\" must be a boolean.');\n }\n if (props.bordered !== undefined && typeof props.bordered !== 'boolean' && !isVariableBinding(props.bordered)) {\n errors.push('Table \"bordered\" must be a boolean.');\n }\n if (props.compact !== undefined && typeof props.compact !== 'boolean' && !isVariableBinding(props.compact)) {\n errors.push('Table \"compact\" must be a boolean.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n width: '100%',\n margin: '0 0 16px 0',\n borderCollapse: 'collapse',\n },\n },\n};\n\nexport const tableRowDefinition: ComponentDefinition = {\n type: 'table-row',\n label: 'Table Row',\n category: 'layout',\n icon: 'table-row',\n acceptsChildren: true,\n allowedChildren: ['table-cell'],\n disallowedParents: ['page'],\n defaultProps: {},\n defaultChildren: [\n { type: 'table-cell', props: { tag: 'td', text: 'Data' } },\n ],\n traits: [\n idTrait(),\n ariaLabelTrait(),\n ],\n defaultStyles: {\n base: {},\n },\n};\n\nexport const tableCellDefinition: ComponentDefinition = {\n type: 'table-cell',\n label: 'Table Cell',\n category: 'layout',\n icon: 'table-cell',\n acceptsChildren: true,\n allowedChildren: [\n 'heading',\n 'text',\n 'paragraph',\n 'link',\n 'blockquote',\n 'badge',\n 'code-block',\n 'image',\n 'video',\n 'icon',\n 'html-embed',\n 'button',\n 'list',\n 'custom',\n ],\n disallowedParents: ['page'],\n defaultProps: {\n tag: 'td',\n text: 'Cell',\n colSpan: 1,\n rowSpan: 1,\n },\n propFields: [\n {\n name: 'tag',\n label: 'Cell Type',\n type: 'select',\n defaultValue: 'td',\n options: [\n { label: 'Data Cell (td)', value: 'td' },\n { label: 'Header Cell (th)', value: 'th' },\n ],\n },\n { name: 'text', label: 'Text', type: 'string', defaultValue: 'Cell' },\n { name: 'colSpan', label: 'Column Span (colSpan)', type: 'number', defaultValue: 1 },\n { name: 'rowSpan', label: 'Row Span (rowSpan)', type: 'number', defaultValue: 1 },\n ],\n traits: [\n colSpanTrait(),\n rowSpanTrait(),\n idTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.tag !== undefined && !isVariableBinding(props.tag)) {\n if (props.tag !== 'td' && props.tag !== 'th') {\n errors.push('Table Cell \"tag\" must be either \"td\" or \"th\".');\n }\n }\n if (props.colSpan !== undefined && !isVariableBinding(props.colSpan)) {\n if (typeof props.colSpan !== 'number' || props.colSpan < 1 || !Number.isInteger(props.colSpan)) {\n errors.push('Table Cell \"colSpan\" must be a positive integer (>= 1).');\n }\n }\n if (props.rowSpan !== undefined && !isVariableBinding(props.rowSpan)) {\n if (typeof props.rowSpan !== 'number' || props.rowSpan < 1 || !Number.isInteger(props.rowSpan)) {\n errors.push('Table Cell \"rowSpan\" must be a positive integer (>= 1).');\n }\n }\n if (props.text !== undefined && typeof props.text !== 'string' && !isVariableBinding(props.text)) {\n errors.push('Table Cell \"text\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n padding: '8px 12px',\n borderWidth: '1px',\n borderColor: '#e2e8f0',\n borderStyle: 'solid',\n textAlign: 'left',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait, titleTrait } from '../../traits';\n\nexport const listDefinition: ComponentDefinition = {\n type: 'list',\n label: 'List',\n category: 'typography',\n icon: 'list',\n acceptsChildren: true,\n allowedChildren: ['list-item'],\n defaultProps: {\n tag: 'ul',\n listStyleType: 'disc',\n },\n defaultChildren: [\n { type: 'list-item', props: { text: 'List item 1' } },\n { type: 'list-item', props: { text: 'List item 2' } },\n { type: 'list-item', props: { text: 'List item 3' } },\n ],\n propFields: [\n {\n name: 'tag',\n label: 'Tag',\n type: 'select',\n defaultValue: 'ul',\n options: [\n { label: 'Unordered (ul)', value: 'ul' },\n { label: 'Ordered (ol)', value: 'ol' },\n ],\n },\n {\n name: 'listStyleType',\n label: 'List Style Type',\n type: 'select',\n defaultValue: 'disc',\n options: [\n { label: 'Disc', value: 'disc' },\n { label: 'Circle', value: 'circle' },\n { label: 'Square', value: 'square' },\n { label: 'Decimal', value: 'decimal' },\n { label: 'None', value: 'none' },\n { label: 'Custom Icon', value: 'custom-icon' },\n ],\n },\n ],\n traits: [\n idTrait(),\n ariaLabelTrait({ description: 'Accessible name for the list (e.g. \"Navigation menu\", \"Features\").' }),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.tag !== undefined && !isVariableBinding(props.tag)) {\n if (props.tag !== 'ul' && props.tag !== 'ol') {\n errors.push('List \"tag\" must be either \"ul\" or \"ol\".');\n }\n }\n if (props.listStyleType !== undefined && !isVariableBinding(props.listStyleType)) {\n const allowed = ['disc', 'circle', 'square', 'decimal', 'none', 'custom-icon'];\n if (typeof props.listStyleType !== 'string' || !allowed.includes(props.listStyleType)) {\n errors.push(`List \"listStyleType\" must be one of: ${allowed.join(', ')}.`);\n }\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n margin: '0 0 16px 0',\n paddingLeft: '24px',\n },\n },\n};\n\nexport const listItemDefinition: ComponentDefinition = {\n type: 'list-item',\n label: 'List Item',\n category: 'typography',\n icon: 'list-item',\n acceptsChildren: true,\n allowedChildren: [\n 'heading',\n 'text',\n 'paragraph',\n 'link',\n 'blockquote',\n 'badge',\n 'code-block',\n 'image',\n 'video',\n 'icon',\n 'html-embed',\n 'button',\n 'list',\n 'custom',\n ],\n defaultProps: {\n text: 'List item',\n },\n propFields: [\n {\n name: 'text',\n label: 'Text',\n type: 'string',\n defaultValue: 'List item',\n },\n ],\n traits: [\n idTrait(),\n titleTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.text !== undefined && typeof props.text !== 'string' && !isVariableBinding(props.text)) {\n errors.push('List Item \"text\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n margin: '4px 0',\n fontSize: '16px',\n color: '#374151',\n lineHeight: '1.5',\n },\n },\n};\n\n","import { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait } from '../../traits';\n\nexport const collectionDefinition: ComponentDefinition = {\n type: 'collection',\n label: 'Collection',\n category: 'data',\n icon: 'database',\n acceptsChildren: true,\n defaultProps: {\n sourceKey: 'items',\n itemAlias: 'item',\n },\n propFields: [\n { name: 'sourceKey', label: 'Source Variable', type: 'string', defaultValue: 'items' },\n { name: 'itemAlias', label: 'Item Alias', type: 'string', defaultValue: 'item' },\n ],\n traits: [\n idTrait(),\n ariaLabelTrait({ description: 'Accessible name summarizing the repeated collection (e.g. \"Product list\").' }),\n ],\n};\n\n","import { isActionBinding, isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport {\n ariaLabelTrait,\n autoDisableOnSubmitTrait,\n buttonTypeTrait,\n disabledTrait,\n hrefTrait,\n idTrait,\n labelTextTrait,\n loadingTextTrait,\n prefixIconTrait,\n relTrait,\n showSpinnerTrait,\n suffixIconTrait,\n targetTrait,\n titleTrait,\n} from '../../traits';\n\nexport const buttonDefinition: ComponentDefinition = {\n type: 'button',\n label: 'Button',\n category: 'interactive',\n icon: 'mouse-pointer',\n acceptsChildren: false,\n capabilities: ['actionRegistry'],\n defaultProps: {\n label: 'Click Me',\n variant: 'primary',\n },\n propFields: [\n { name: 'label', label: 'Label', type: 'string', defaultValue: 'Click Me' },\n { name: 'href', label: 'Link URL', type: 'string' },\n { name: 'action', label: 'Action', type: 'action' },\n { name: 'disabled', label: 'Disabled', type: 'boolean', defaultValue: false },\n {\n name: 'buttonType',\n label: 'Button Type',\n type: 'select',\n defaultValue: 'button',\n options: [\n { label: 'Button', value: 'button' },\n { label: 'Submit Form (submit)', value: 'submit' },\n { label: 'Reset Form (reset)', value: 'reset' },\n ],\n },\n {\n name: 'variant',\n label: 'Variant',\n type: 'select',\n defaultValue: 'primary',\n options: [\n { label: 'Primary', value: 'primary' },\n { label: 'Secondary', value: 'secondary' },\n ],\n },\n ],\n traits: [\n buttonTypeTrait(),\n disabledTrait(),\n hrefTrait({ description: 'Optional URL — when set, the button renders as an anchor styled like a button.' }),\n targetTrait({ description: 'Where to open the href URL (only used when href is set).' }),\n relTrait({ description: 'Relationship tokens (only used when href is set).' }),\n idTrait(),\n titleTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n const hasLabel =\n (typeof props.label === 'string' && props.label.trim().length > 0) || isVariableBinding(props.label);\n if (!hasLabel) {\n errors.push('Button requires a non-empty \"label\".');\n }\n if (props.href !== undefined && typeof props.href !== 'string' && !isVariableBinding(props.href)) {\n errors.push('Button \"href\" must be a string when provided.');\n }\n if (props.buttonType !== undefined && !isVariableBinding(props.buttonType)) {\n if (!['button', 'submit', 'reset'].includes(props.buttonType as string)) {\n errors.push('Button \"buttonType\" must be one of: \"button\", \"submit\", \"reset\".');\n }\n }\n if (props.action !== undefined && !isActionBinding(props.action)) {\n errors.push('Button \"action\" must be a valid action binding when provided.');\n }\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean' && !isVariableBinding(props.disabled)) {\n errors.push('Button \"disabled\" must be a boolean when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n backgroundColor: '#2563eb',\n color: '#ffffff',\n paddingTop: '10px',\n paddingBottom: '10px',\n paddingLeft: '20px',\n paddingRight: '20px',\n borderRadius: '6px',\n fontWeight: '500',\n fontSize: '15px',\n border: 'none',\n cursor: 'pointer',\n },\n },\n};\n\nexport const buttonSubmitDefinition: ComponentDefinition = {\n type: 'button-submit',\n label: 'Submit Button',\n category: 'form',\n icon: 'send',\n acceptsChildren: false,\n capabilities: ['actionRegistry'],\n disallowedParents: ['page'],\n defaultProps: {\n label: 'Submit',\n loadingText: 'Submitting...',\n showSpinner: true,\n autoDisableOnSubmit: true,\n variant: 'primary',\n disabled: false,\n buttonType: 'submit',\n },\n propFields: [\n { name: 'label', label: 'Label', type: 'string', defaultValue: 'Submit' },\n { name: 'loadingText', label: 'Loading Text', type: 'string', defaultValue: 'Submitting...' },\n { name: 'showSpinner', label: 'Show Loading Spinner', type: 'boolean', defaultValue: true },\n { name: 'autoDisableOnSubmit', label: 'Auto Disable on Submit', type: 'boolean', defaultValue: true },\n {\n name: 'buttonType',\n label: 'Button Type',\n type: 'select',\n defaultValue: 'submit',\n options: [\n { label: 'Submit Form (submit)', value: 'submit' },\n { label: 'Reset Form (reset)', value: 'reset' },\n ],\n },\n {\n name: 'variant',\n label: 'Variant',\n type: 'select',\n defaultValue: 'primary',\n options: [\n { label: 'Primary', value: 'primary' },\n { label: 'Secondary', value: 'secondary' },\n ],\n },\n { name: 'disabled', label: 'Disabled', type: 'boolean', defaultValue: false },\n { name: 'prefixIcon', label: 'Prefix Icon', type: 'string' },\n { name: 'suffixIcon', label: 'Suffix Icon', type: 'string' },\n ],\n traits: [\n buttonTypeTrait({\n defaultValue: 'submit',\n options: [\n { label: 'Submit Form (submit)', value: 'submit' },\n { label: 'Reset Form (reset)', value: 'reset' },\n ],\n }),\n labelTextTrait({ defaultValue: 'Submit', label: 'Label' }),\n loadingTextTrait(),\n showSpinnerTrait(),\n autoDisableOnSubmitTrait(),\n disabledTrait(),\n prefixIconTrait(),\n suffixIconTrait(),\n idTrait(),\n titleTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n const hasLabel =\n (typeof props.label === 'string' && props.label.trim().length > 0) || isVariableBinding(props.label);\n if (!hasLabel) {\n errors.push('Submit Button requires a non-empty \"label\".');\n }\n if (props.loadingText !== undefined && typeof props.loadingText !== 'string' && !isVariableBinding(props.loadingText)) {\n errors.push('Submit Button \"loadingText\" must be a string when provided.');\n }\n if (props.showSpinner !== undefined && typeof props.showSpinner !== 'boolean' && !isVariableBinding(props.showSpinner)) {\n errors.push('Submit Button \"showSpinner\" must be a boolean when provided.');\n }\n if (props.autoDisableOnSubmit !== undefined && typeof props.autoDisableOnSubmit !== 'boolean' && !isVariableBinding(props.autoDisableOnSubmit)) {\n errors.push('Submit Button \"autoDisableOnSubmit\" must be a boolean when provided.');\n }\n if (props.buttonType !== undefined && !isVariableBinding(props.buttonType)) {\n if (!['submit', 'reset', 'button'].includes(props.buttonType as string)) {\n errors.push('Submit Button \"buttonType\" must be one of: \"submit\", \"reset\", \"button\".');\n }\n }\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean' && !isVariableBinding(props.disabled)) {\n errors.push('Submit Button \"disabled\" must be a boolean when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n backgroundColor: '#2563eb',\n color: '#ffffff',\n paddingTop: '10px',\n paddingBottom: '10px',\n paddingLeft: '20px',\n paddingRight: '20px',\n borderRadius: '6px',\n fontWeight: '500',\n fontSize: '15px',\n border: 'none',\n cursor: 'pointer',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '8px',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport {\n actionTrait,\n ariaLabelTrait,\n autoCompleteTrait,\n fieldNameTrait,\n idTrait,\n methodTrait,\n preventDefaultTrait,\n resetOnSubmitTrait,\n scrollToFirstErrorTrait,\n targetTrait,\n} from '../../traits';\nimport { CONTENT_CHILD_TYPES } from '../constants';\n\nexport const formDefinition: ComponentDefinition = {\n type: 'form',\n label: 'Form',\n category: 'form',\n icon: 'form',\n acceptsChildren: true,\n allowedChildren: [\n ...CONTENT_CHILD_TYPES,\n 'container',\n 'columns',\n 'section',\n ],\n disallowedParents: ['page'],\n defaultProps: {\n name: 'contact_form',\n method: 'POST',\n action: '',\n target: '_self',\n autoComplete: 'on',\n preventDefault: true,\n scrollToFirstError: true,\n resetOnSubmit: false,\n },\n defaultChildren: [\n { type: 'input', props: { name: 'name', type: 'text', placeholder: 'Your Name', required: true } },\n { type: 'input', props: { name: 'email', type: 'email', placeholder: 'Your Email', required: true } },\n { type: 'textarea', props: { name: 'message', placeholder: 'Your Message', rows: 4, required: true } },\n { type: 'checkbox', props: { name: 'agree', label: 'I agree to the terms and privacy policy', required: true } },\n { type: 'button', props: { label: 'Send Message', variant: 'primary', buttonType: 'submit' } },\n ],\n propFields: [\n { name: 'name', label: 'Form Name', type: 'string', defaultValue: 'contact_form' },\n { name: 'action', label: 'Action URL', type: 'string' },\n {\n name: 'method',\n label: 'Method',\n type: 'select',\n defaultValue: 'POST',\n options: [\n { label: 'POST', value: 'POST' },\n { label: 'GET', value: 'GET' },\n ],\n },\n {\n name: 'target',\n label: 'Target',\n type: 'select',\n defaultValue: '_self',\n options: [\n { label: 'Same Window (_self)', value: '_self' },\n { label: 'New Tab (_blank)', value: '_blank' },\n ],\n },\n {\n name: 'autoComplete',\n label: 'Auto Complete',\n type: 'select',\n defaultValue: 'on',\n options: [\n { label: 'On', value: 'on' },\n { label: 'Off', value: 'off' },\n ],\n },\n { name: 'preventDefault', label: 'Prevent Default', type: 'boolean', defaultValue: true },\n { name: 'scrollToFirstError', label: 'Scroll to First Error', type: 'boolean', defaultValue: true },\n { name: 'resetOnSubmit', label: 'Reset on Submit', type: 'boolean', defaultValue: false },\n ],\n traits: [\n fieldNameTrait({ defaultValue: 'contact_form', required: false }),\n actionTrait(),\n methodTrait(),\n targetTrait({ options: [\n { label: 'Same Window (_self)', value: '_self' },\n { label: 'New Tab (_blank)', value: '_blank' },\n { label: 'Parent (_parent)', value: '_parent' },\n { label: 'Top (_top)', value: '_top' },\n ]}),\n autoCompleteTrait(),\n preventDefaultTrait(),\n scrollToFirstErrorTrait(),\n resetOnSubmitTrait(),\n idTrait(),\n ariaLabelTrait({ description: 'Accessible name for the form landmark.' }),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.name !== undefined && typeof props.name !== 'string' && !isVariableBinding(props.name)) {\n errors.push('Form \"name\" must be a string when provided.');\n }\n if (props.action !== undefined && typeof props.action !== 'string' && !isVariableBinding(props.action)) {\n errors.push('Form \"action\" must be a string when provided.');\n }\n if (props.method !== undefined && !isVariableBinding(props.method)) {\n if (!['GET', 'POST', 'get', 'post'].includes(props.method as string)) {\n errors.push('Form \"method\" must be either \"GET\" or \"POST\".');\n }\n }\n if (props.target !== undefined && !isVariableBinding(props.target)) {\n if (!['_self', '_blank', '_parent', '_top'].includes(props.target as string)) {\n errors.push('Form \"target\" must be one of: \"_self\", \"_blank\", \"_parent\", \"_top\".');\n }\n }\n if (props.autoComplete !== undefined && !isVariableBinding(props.autoComplete)) {\n if (!['on', 'off'].includes(props.autoComplete as string)) {\n errors.push('Form \"autoComplete\" must be either \"on\" or \"off\".');\n }\n }\n if (props.preventDefault !== undefined && typeof props.preventDefault !== 'boolean' && !isVariableBinding(props.preventDefault)) {\n errors.push('Form \"preventDefault\" must be a boolean when provided.');\n }\n if (props.scrollToFirstError !== undefined && typeof props.scrollToFirstError !== 'boolean' && !isVariableBinding(props.scrollToFirstError)) {\n errors.push('Form \"scrollToFirstError\" must be a boolean when provided.');\n }\n if (props.resetOnSubmit !== undefined && typeof props.resetOnSubmit !== 'boolean' && !isVariableBinding(props.resetOnSubmit)) {\n errors.push('Form \"resetOnSubmit\" must be a boolean when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport {\n ariaLabelTrait,\n defaultValueTrait,\n disabledTrait,\n fieldNameTrait,\n helperTextTrait,\n idTrait,\n inputTypeTrait,\n maxLengthTrait,\n minLengthTrait,\n patternTrait,\n placeholderTrait,\n readOnlyTrait,\n requiredTrait,\n prefixIconTrait,\n suffixIconTrait,\n} from '../../traits';\n\nexport const inputDefinition: ComponentDefinition = {\n type: 'input',\n label: 'Input',\n category: 'form',\n icon: 'input',\n acceptsChildren: false,\n disallowedParents: ['page'],\n defaultProps: {\n name: 'input_field',\n type: 'text',\n placeholder: 'Enter text...',\n defaultValue: '',\n required: false,\n disabled: false,\n readOnly: false,\n pattern: '',\n minLength: undefined,\n maxLength: undefined,\n prefixIcon: '',\n suffixIcon: '',\n helperText: '',\n },\n propFields: [\n { name: 'name', label: 'Field Name', type: 'string', defaultValue: 'input_field' },\n {\n name: 'type',\n label: 'Input Type',\n type: 'select',\n defaultValue: 'text',\n options: [\n { label: 'Text', value: 'text' },\n { label: 'Email', value: 'email' },\n { label: 'Number', value: 'number' },\n { label: 'Password', value: 'password' },\n { label: 'Phone (tel)', value: 'tel' },\n { label: 'URL', value: 'url' },\n { label: 'Search', value: 'search' },\n { label: 'Date', value: 'date' },\n ],\n },\n { name: 'placeholder', label: 'Placeholder', type: 'string', defaultValue: 'Enter text...' },\n { name: 'defaultValue', label: 'Default Value', type: 'string' },\n { name: 'required', label: 'Required', type: 'boolean', defaultValue: false },\n { name: 'disabled', label: 'Disabled', type: 'boolean', defaultValue: false },\n { name: 'readOnly', label: 'Read Only', type: 'boolean', defaultValue: false },\n { name: 'pattern', label: 'Pattern (regex)', type: 'string' },\n { name: 'minLength', label: 'Min Length', type: 'number' },\n { name: 'maxLength', label: 'Max Length', type: 'number' },\n { name: 'prefixIcon', label: 'Prefix Icon', type: 'string' },\n { name: 'suffixIcon', label: 'Suffix Icon', type: 'string' },\n { name: 'helperText', label: 'Helper Text', type: 'string' },\n ],\n traits: [\n inputTypeTrait({ options: [\n { label: 'Text', value: 'text' },\n { label: 'Email', value: 'email' },\n { label: 'Number', value: 'number' },\n { label: 'Password', value: 'password' },\n { label: 'Phone (tel)', value: 'tel' },\n { label: 'URL', value: 'url' },\n { label: 'Search', value: 'search' },\n { label: 'Date', value: 'date' },\n { label: 'Hidden', value: 'hidden' },\n ]}),\n fieldNameTrait({ defaultValue: 'input_field' }),\n placeholderTrait({ defaultValue: 'Enter text...' }),\n defaultValueTrait(),\n requiredTrait(),\n patternTrait(),\n minLengthTrait(),\n maxLengthTrait(),\n prefixIconTrait(),\n suffixIconTrait(),\n helperTextTrait(),\n disabledTrait(),\n readOnlyTrait(),\n idTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.name !== undefined && typeof props.name !== 'string' && !isVariableBinding(props.name)) {\n errors.push('Input \"name\" must be a string when provided.');\n }\n if (props.type !== undefined && !isVariableBinding(props.type)) {\n const validTypes = ['text', 'email', 'number', 'password', 'tel', 'url', 'search', 'date', 'hidden'];\n if (!validTypes.includes(props.type as string)) {\n errors.push(`Input \"type\" must be one of: ${validTypes.join(', ')}.`);\n }\n }\n if (props.placeholder !== undefined && typeof props.placeholder !== 'string' && !isVariableBinding(props.placeholder)) {\n errors.push('Input \"placeholder\" must be a string when provided.');\n }\n if (props.required !== undefined && typeof props.required !== 'boolean' && !isVariableBinding(props.required)) {\n errors.push('Input \"required\" must be a boolean when provided.');\n }\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean' && !isVariableBinding(props.disabled)) {\n errors.push('Input \"disabled\" must be a boolean when provided.');\n }\n if (props.readOnly !== undefined && typeof props.readOnly !== 'boolean' && !isVariableBinding(props.readOnly)) {\n errors.push('Input \"readOnly\" must be a boolean when provided.');\n }\n if (props.pattern !== undefined && typeof props.pattern !== 'string' && !isVariableBinding(props.pattern)) {\n errors.push('Input \"pattern\" must be a string when provided.');\n }\n if (props.minLength !== undefined && !isVariableBinding(props.minLength)) {\n if (typeof props.minLength !== 'number' || props.minLength < 0 || !Number.isInteger(props.minLength)) {\n errors.push('Input \"minLength\" must be a non-negative integer when provided.');\n }\n }\n if (props.maxLength !== undefined && !isVariableBinding(props.maxLength)) {\n if (typeof props.maxLength !== 'number' || props.maxLength < 0 || !Number.isInteger(props.maxLength)) {\n errors.push('Input \"maxLength\" must be a non-negative integer when provided.');\n }\n }\n if (props.prefixIcon !== undefined && typeof props.prefixIcon !== 'string' && !isVariableBinding(props.prefixIcon)) {\n errors.push('Input \"prefixIcon\" must be a string when provided.');\n }\n if (props.suffixIcon !== undefined && typeof props.suffixIcon !== 'string' && !isVariableBinding(props.suffixIcon)) {\n errors.push('Input \"suffixIcon\" must be a string when provided.');\n }\n if (props.helperText !== undefined && typeof props.helperText !== 'string' && !isVariableBinding(props.helperText)) {\n errors.push('Input \"helperText\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n width: '100%',\n paddingTop: '10px',\n paddingBottom: '10px',\n paddingLeft: '14px',\n paddingRight: '14px',\n borderRadius: '6px',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: '#cbd5e1',\n fontSize: '14px',\n backgroundColor: '#ffffff',\n color: '#1e293b',\n boxSizing: 'border-box',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport {\n ariaLabelTrait,\n autoGrowTrait,\n defaultValueTrait,\n disabledTrait,\n fieldNameTrait,\n helperTextTrait,\n idTrait,\n maxCharCountTrait,\n placeholderTrait,\n readOnlyTrait,\n requiredTrait,\n resizeTrait,\n rowsTrait,\n} from '../../traits';\n\nexport const textareaDefinition: ComponentDefinition = {\n type: 'textarea',\n label: 'Textarea',\n category: 'form',\n icon: 'textarea',\n acceptsChildren: false,\n disallowedParents: ['page'],\n defaultProps: {\n name: 'message',\n placeholder: 'Enter your message...',\n defaultValue: '',\n rows: 4,\n required: false,\n disabled: false,\n readOnly: false,\n resize: 'vertical',\n autoGrow: false,\n maxCharCount: undefined,\n helperText: '',\n },\n propFields: [\n { name: 'name', label: 'Field Name', type: 'string', defaultValue: 'message' },\n { name: 'placeholder', label: 'Placeholder', type: 'string', defaultValue: 'Enter your message...' },\n { name: 'defaultValue', label: 'Default Value', type: 'textarea' },\n { name: 'rows', label: 'Rows', type: 'number', defaultValue: 4 },\n { name: 'required', label: 'Required', type: 'boolean', defaultValue: false },\n { name: 'disabled', label: 'Disabled', type: 'boolean', defaultValue: false },\n { name: 'readOnly', label: 'Read Only', type: 'boolean', defaultValue: false },\n {\n name: 'resize',\n label: 'Resize',\n type: 'select',\n defaultValue: 'vertical',\n options: [\n { label: 'Vertical only', value: 'vertical' },\n { label: 'Horizontal only', value: 'horizontal' },\n { label: 'Both', value: 'both' },\n { label: 'None', value: 'none' },\n ],\n },\n { name: 'autoGrow', label: 'Auto Grow', type: 'boolean', defaultValue: false },\n { name: 'maxCharCount', label: 'Max Character Count', type: 'number' },\n { name: 'helperText', label: 'Helper Text', type: 'string' },\n ],\n traits: [\n fieldNameTrait({ defaultValue: 'message' }),\n placeholderTrait({ defaultValue: 'Enter your message...' }),\n defaultValueTrait(),\n rowsTrait(),\n resizeTrait(),\n autoGrowTrait(),\n maxCharCountTrait(),\n helperTextTrait(),\n requiredTrait(),\n disabledTrait(),\n readOnlyTrait(),\n idTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.name !== undefined && typeof props.name !== 'string' && !isVariableBinding(props.name)) {\n errors.push('Textarea \"name\" must be a string when provided.');\n }\n if (props.rows !== undefined && !isVariableBinding(props.rows)) {\n if (typeof props.rows !== 'number' || props.rows < 1 || !Number.isInteger(props.rows)) {\n errors.push('Textarea \"rows\" must be a positive integer (>= 1).');\n }\n }\n if (props.placeholder !== undefined && typeof props.placeholder !== 'string' && !isVariableBinding(props.placeholder)) {\n errors.push('Textarea \"placeholder\" must be a string when provided.');\n }\n if (props.required !== undefined && typeof props.required !== 'boolean' && !isVariableBinding(props.required)) {\n errors.push('Textarea \"required\" must be a boolean when provided.');\n }\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean' && !isVariableBinding(props.disabled)) {\n errors.push('Textarea \"disabled\" must be a boolean when provided.');\n }\n if (props.readOnly !== undefined && typeof props.readOnly !== 'boolean' && !isVariableBinding(props.readOnly)) {\n errors.push('Textarea \"readOnly\" must be a boolean when provided.');\n }\n if (props.resize !== undefined && !isVariableBinding(props.resize)) {\n const allowedResize = ['vertical', 'horizontal', 'both', 'none'];\n if (typeof props.resize !== 'string' || !allowedResize.includes(props.resize)) {\n errors.push(`Textarea \"resize\" must be one of: ${allowedResize.join(', ')}.`);\n }\n }\n if (props.autoGrow !== undefined && typeof props.autoGrow !== 'boolean' && !isVariableBinding(props.autoGrow)) {\n errors.push('Textarea \"autoGrow\" must be a boolean when provided.');\n }\n if (props.maxCharCount !== undefined && !isVariableBinding(props.maxCharCount)) {\n if (typeof props.maxCharCount !== 'number' || props.maxCharCount < 1 || !Number.isInteger(props.maxCharCount)) {\n errors.push('Textarea \"maxCharCount\" must be a positive integer (>= 1) when provided.');\n }\n }\n if (props.helperText !== undefined && typeof props.helperText !== 'string' && !isVariableBinding(props.helperText)) {\n errors.push('Textarea \"helperText\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n width: '100%',\n paddingTop: '10px',\n paddingBottom: '10px',\n paddingLeft: '14px',\n paddingRight: '14px',\n borderRadius: '6px',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: '#cbd5e1',\n fontSize: '14px',\n backgroundColor: '#ffffff',\n color: '#1e293b',\n boxSizing: 'border-box',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport {\n ariaLabelTrait,\n defaultValueTrait,\n disabledTrait,\n fieldNameTrait,\n helperTextTrait,\n idTrait,\n optionsListTrait,\n placeholderTrait,\n requiredTrait,\n} from '../../traits';\n\nexport const selectDefinition: ComponentDefinition = {\n type: 'select',\n label: 'Select',\n category: 'form',\n icon: 'select',\n acceptsChildren: false,\n disallowedParents: ['page'],\n defaultProps: {\n name: 'select_field',\n placeholder: 'Select an option...',\n options: [\n { label: 'Option 1', value: 'option1' },\n { label: 'Option 2', value: 'option2' },\n { label: 'Option 3', value: 'option3' },\n ],\n defaultValue: '',\n required: false,\n disabled: false,\n helperText: '',\n },\n propFields: [\n { name: 'name', label: 'Field Name', type: 'string', defaultValue: 'select_field' },\n { name: 'placeholder', label: 'Placeholder', type: 'string', defaultValue: 'Select an option...' },\n {\n name: 'options',\n label: 'Options (JSON list)',\n type: 'json',\n defaultValue: [\n { label: 'Option 1', value: 'option1' },\n { label: 'Option 2', value: 'option2' },\n { label: 'Option 3', value: 'option3' },\n ],\n },\n { name: 'defaultValue', label: 'Default Selected Value', type: 'string' },\n { name: 'required', label: 'Required', type: 'boolean', defaultValue: false },\n { name: 'disabled', label: 'Disabled', type: 'boolean', defaultValue: false },\n { name: 'helperText', label: 'Helper Text', type: 'string' },\n ],\n traits: [\n fieldNameTrait({ defaultValue: 'select_field' }),\n placeholderTrait({ defaultValue: 'Select an option...' }),\n optionsListTrait({ description: 'The list of dropdown choices (label + value pairs). Editable via the inspector trait panel.' }),\n defaultValueTrait({ description: 'The initially selected option value (must match one of the option values).' }),\n helperTextTrait(),\n requiredTrait(),\n disabledTrait(),\n idTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.name !== undefined && typeof props.name !== 'string' && !isVariableBinding(props.name)) {\n errors.push('Select \"name\" must be a string when provided.');\n }\n if (props.options !== undefined && !isVariableBinding(props.options)) {\n if (!Array.isArray(props.options) && typeof props.options !== 'string') {\n errors.push('Select \"options\" must be an array of option objects or a JSON string.');\n }\n }\n if (props.required !== undefined && typeof props.required !== 'boolean' && !isVariableBinding(props.required)) {\n errors.push('Select \"required\" must be a boolean when provided.');\n }\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean' && !isVariableBinding(props.disabled)) {\n errors.push('Select \"disabled\" must be a boolean when provided.');\n }\n if (props.helperText !== undefined && typeof props.helperText !== 'string' && !isVariableBinding(props.helperText)) {\n errors.push('Select \"helperText\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n width: '100%',\n paddingTop: '10px',\n paddingBottom: '10px',\n paddingLeft: '14px',\n paddingRight: '14px',\n borderRadius: '6px',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: '#cbd5e1',\n fontSize: '14px',\n backgroundColor: '#ffffff',\n color: '#1e293b',\n boxSizing: 'border-box',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport {\n ariaLabelTrait,\n defaultCheckedTrait,\n disabledTrait,\n fieldNameTrait,\n helperTextTrait,\n idTrait,\n indeterminateTrait,\n labelTextTrait,\n requiredTrait,\n valueTrait,\n} from '../../traits';\n\nexport const checkboxDefinition: ComponentDefinition = {\n type: 'checkbox',\n label: 'Checkbox',\n category: 'form',\n icon: 'checkbox',\n acceptsChildren: false,\n disallowedParents: ['page'],\n defaultProps: {\n name: 'checkbox_field',\n label: 'I agree to the terms and conditions',\n value: 'yes',\n defaultChecked: false,\n indeterminate: false,\n required: false,\n disabled: false,\n helperText: '',\n },\n propFields: [\n { name: 'name', label: 'Field Name', type: 'string', defaultValue: 'checkbox_field' },\n { name: 'label', label: 'Label Text', type: 'string', defaultValue: 'I agree to the terms and conditions' },\n { name: 'value', label: 'Checked Value', type: 'string', defaultValue: 'yes' },\n { name: 'defaultChecked', label: 'Default Checked', type: 'boolean', defaultValue: false },\n { name: 'indeterminate', label: 'Indeterminate', type: 'boolean', defaultValue: false },\n { name: 'required', label: 'Required', type: 'boolean', defaultValue: false },\n { name: 'disabled', label: 'Disabled', type: 'boolean', defaultValue: false },\n { name: 'helperText', label: 'Helper Text', type: 'string' },\n ],\n traits: [\n fieldNameTrait({ defaultValue: 'checkbox_field' }),\n labelTextTrait({ defaultValue: 'I agree to the terms and conditions' }),\n valueTrait({ defaultValue: 'yes' }),\n defaultCheckedTrait(),\n indeterminateTrait(),\n helperTextTrait(),\n requiredTrait(),\n disabledTrait(),\n idTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.label !== undefined && typeof props.label !== 'string' && !isVariableBinding(props.label)) {\n errors.push('Checkbox \"label\" must be a string when provided.');\n }\n if (props.name !== undefined && typeof props.name !== 'string' && !isVariableBinding(props.name)) {\n errors.push('Checkbox \"name\" must be a string when provided.');\n }\n if (props.value !== undefined && typeof props.value !== 'string' && !isVariableBinding(props.value)) {\n errors.push('Checkbox \"value\" must be a string when provided.');\n }\n if (props.defaultChecked !== undefined && typeof props.defaultChecked !== 'boolean' && !isVariableBinding(props.defaultChecked)) {\n errors.push('Checkbox \"defaultChecked\" must be a boolean when provided.');\n }\n if (props.indeterminate !== undefined && typeof props.indeterminate !== 'boolean' && !isVariableBinding(props.indeterminate)) {\n errors.push('Checkbox \"indeterminate\" must be a boolean when provided.');\n }\n if (props.required !== undefined && typeof props.required !== 'boolean' && !isVariableBinding(props.required)) {\n errors.push('Checkbox \"required\" must be a boolean when provided.');\n }\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean' && !isVariableBinding(props.disabled)) {\n errors.push('Checkbox \"disabled\" must be a boolean when provided.');\n }\n if (props.helperText !== undefined && typeof props.helperText !== 'string' && !isVariableBinding(props.helperText)) {\n errors.push('Checkbox \"helperText\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n fontSize: '14px',\n color: '#1e293b',\n cursor: 'pointer',\n userSelect: 'none',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport {\n ariaLabelTrait,\n defaultCheckedTrait,\n disabledTrait,\n fieldNameTrait,\n helperTextTrait,\n idTrait,\n labelTextTrait,\n requiredTrait,\n switchSizeTrait,\n valueTrait,\n} from '../../traits';\n\nexport const switchDefinition: ComponentDefinition = {\n type: 'switch',\n label: 'Switch',\n category: 'form',\n icon: 'switch',\n acceptsChildren: false,\n disallowedParents: ['page'],\n defaultProps: {\n name: 'switch_field',\n label: 'Enable feature',\n value: 'yes',\n defaultChecked: false,\n switchSize: 'md',\n required: false,\n disabled: false,\n helperText: '',\n },\n propFields: [\n { name: 'name', label: 'Field Name', type: 'string', defaultValue: 'switch_field' },\n { name: 'label', label: 'Label Text', type: 'string', defaultValue: 'Enable feature' },\n { name: 'value', label: 'Checked Value', type: 'string', defaultValue: 'yes' },\n { name: 'defaultChecked', label: 'Default Checked', type: 'boolean', defaultValue: false },\n {\n name: 'switchSize',\n label: 'Size',\n type: 'select',\n defaultValue: 'md',\n options: [\n { label: 'Small', value: 'sm' },\n { label: 'Medium', value: 'md' },\n { label: 'Large', value: 'lg' },\n ],\n },\n { name: 'required', label: 'Required', type: 'boolean', defaultValue: false },\n { name: 'disabled', label: 'Disabled', type: 'boolean', defaultValue: false },\n { name: 'helperText', label: 'Helper Text', type: 'string' },\n ],\n traits: [\n fieldNameTrait({ defaultValue: 'switch_field' }),\n labelTextTrait({ defaultValue: 'Enable feature' }),\n valueTrait({ defaultValue: 'yes' }),\n defaultCheckedTrait(),\n switchSizeTrait(),\n helperTextTrait(),\n requiredTrait(),\n disabledTrait(),\n idTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.label !== undefined && typeof props.label !== 'string' && !isVariableBinding(props.label)) {\n errors.push('Switch \"label\" must be a string when provided.');\n }\n if (props.name !== undefined && typeof props.name !== 'string' && !isVariableBinding(props.name)) {\n errors.push('Switch \"name\" must be a string when provided.');\n }\n if (props.value !== undefined && typeof props.value !== 'string' && !isVariableBinding(props.value)) {\n errors.push('Switch \"value\" must be a string when provided.');\n }\n if (props.defaultChecked !== undefined && typeof props.defaultChecked !== 'boolean' && !isVariableBinding(props.defaultChecked)) {\n errors.push('Switch \"defaultChecked\" must be a boolean when provided.');\n }\n if (props.switchSize !== undefined && !isVariableBinding(props.switchSize)) {\n const allowedSizes = ['sm', 'md', 'lg'];\n if (typeof props.switchSize !== 'string' || !allowedSizes.includes(props.switchSize)) {\n errors.push(`Switch \"switchSize\" must be one of: ${allowedSizes.join(', ')}.`);\n }\n }\n if (props.required !== undefined && typeof props.required !== 'boolean' && !isVariableBinding(props.required)) {\n errors.push('Switch \"required\" must be a boolean when provided.');\n }\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean' && !isVariableBinding(props.disabled)) {\n errors.push('Switch \"disabled\" must be a boolean when provided.');\n }\n if (props.helperText !== undefined && typeof props.helperText !== 'string' && !isVariableBinding(props.helperText)) {\n errors.push('Switch \"helperText\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n fontSize: '14px',\n color: '#1e293b',\n cursor: 'pointer',\n userSelect: 'none',\n },\n },\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport {\n ariaLabelTrait,\n defaultCheckedTrait,\n defaultSelectedTrait,\n disabledTrait,\n fieldNameTrait,\n helperTextTrait,\n idTrait,\n labelTextTrait,\n orientationTrait,\n requiredTrait,\n valueTrait,\n} from '../../traits';\n\nexport const radioGroupDefinition: ComponentDefinition = {\n type: 'radio-group',\n label: 'Radio Group',\n category: 'form',\n icon: 'radio-group',\n acceptsChildren: true,\n allowedChildren: ['radio', 'radio-item', 'custom'],\n disallowedParents: ['page'],\n defaultProps: {\n name: 'radio_group',\n defaultSelected: 'option1',\n orientation: 'vertical',\n required: false,\n disabled: false,\n helperText: '',\n },\n defaultChildren: [\n { type: 'radio', props: { name: 'radio_group', label: 'Option 1', value: 'option1', defaultChecked: true } },\n { type: 'radio', props: { name: 'radio_group', label: 'Option 2', value: 'option2', defaultChecked: false } },\n { type: 'radio', props: { name: 'radio_group', label: 'Option 3', value: 'option3', defaultChecked: false } },\n ],\n propFields: [\n { name: 'name', label: 'Group Name', type: 'string', defaultValue: 'radio_group' },\n { name: 'defaultSelected', label: 'Default Selected', type: 'string', defaultValue: 'option1' },\n {\n name: 'orientation',\n label: 'Orientation',\n type: 'select',\n defaultValue: 'vertical',\n options: [\n { label: 'Vertical', value: 'vertical' },\n { label: 'Horizontal', value: 'horizontal' },\n ],\n },\n { name: 'required', label: 'Required', type: 'boolean', defaultValue: false },\n { name: 'disabled', label: 'Disabled', type: 'boolean', defaultValue: false },\n { name: 'helperText', label: 'Helper Text', type: 'string' },\n ],\n traits: [\n fieldNameTrait({ defaultValue: 'radio_group', label: 'Group Name' }),\n defaultSelectedTrait({ defaultValue: 'option1' }),\n orientationTrait(),\n helperTextTrait(),\n requiredTrait(),\n disabledTrait(),\n idTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.name !== undefined && typeof props.name !== 'string' && !isVariableBinding(props.name)) {\n errors.push('RadioGroup \"name\" must be a string when provided.');\n }\n if (props.defaultSelected !== undefined && typeof props.defaultSelected !== 'string' && !isVariableBinding(props.defaultSelected)) {\n errors.push('RadioGroup \"defaultSelected\" must be a string when provided.');\n }\n if (props.orientation !== undefined && !isVariableBinding(props.orientation)) {\n const allowedOrientations = ['vertical', 'horizontal'];\n if (typeof props.orientation !== 'string' || !allowedOrientations.includes(props.orientation)) {\n errors.push(`RadioGroup \"orientation\" must be one of: ${allowedOrientations.join(', ')}.`);\n }\n }\n if (props.required !== undefined && typeof props.required !== 'boolean' && !isVariableBinding(props.required)) {\n errors.push('RadioGroup \"required\" must be a boolean when provided.');\n }\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean' && !isVariableBinding(props.disabled)) {\n errors.push('RadioGroup \"disabled\" must be a boolean when provided.');\n }\n if (props.helperText !== undefined && typeof props.helperText !== 'string' && !isVariableBinding(props.helperText)) {\n errors.push('RadioGroup \"helperText\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n },\n },\n};\n\nexport const radioDefinition: ComponentDefinition = {\n type: 'radio',\n label: 'Radio',\n category: 'form',\n icon: 'radio',\n acceptsChildren: false,\n disallowedParents: ['page'],\n defaultProps: {\n name: 'radio_group',\n label: 'Option 1',\n value: 'option1',\n defaultChecked: false,\n required: false,\n disabled: false,\n helperText: '',\n },\n propFields: [\n { name: 'name', label: 'Group Name', type: 'string', defaultValue: 'radio_group' },\n { name: 'label', label: 'Label Text', type: 'string', defaultValue: 'Option 1' },\n { name: 'value', label: 'Radio Value', type: 'string', defaultValue: 'option1' },\n { name: 'defaultChecked', label: 'Default Selected', type: 'boolean', defaultValue: false },\n { name: 'required', label: 'Required', type: 'boolean', defaultValue: false },\n { name: 'disabled', label: 'Disabled', type: 'boolean', defaultValue: false },\n { name: 'helperText', label: 'Helper Text', type: 'string' },\n ],\n traits: [\n fieldNameTrait({ defaultValue: 'radio_group', label: 'Group Name' }),\n labelTextTrait({ defaultValue: 'Option 1' }),\n valueTrait({ defaultValue: 'option1' }),\n defaultCheckedTrait(),\n helperTextTrait(),\n requiredTrait(),\n disabledTrait(),\n idTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.label !== undefined && typeof props.label !== 'string' && !isVariableBinding(props.label)) {\n errors.push('Radio \"label\" must be a string when provided.');\n }\n if (props.name !== undefined && typeof props.name !== 'string' && !isVariableBinding(props.name)) {\n errors.push('Radio \"name\" must be a string when provided.');\n }\n if (props.value !== undefined && typeof props.value !== 'string' && !isVariableBinding(props.value)) {\n errors.push('Radio \"value\" must be a string when provided.');\n }\n if (props.defaultChecked !== undefined && typeof props.defaultChecked !== 'boolean' && !isVariableBinding(props.defaultChecked)) {\n errors.push('Radio \"defaultChecked\" must be a boolean when provided.');\n }\n if (props.required !== undefined && typeof props.required !== 'boolean' && !isVariableBinding(props.required)) {\n errors.push('Radio \"required\" must be a boolean when provided.');\n }\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean' && !isVariableBinding(props.disabled)) {\n errors.push('Radio \"disabled\" must be a boolean when provided.');\n }\n if (props.helperText !== undefined && typeof props.helperText !== 'string' && !isVariableBinding(props.helperText)) {\n errors.push('Radio \"helperText\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '8px',\n fontSize: '14px',\n color: '#1e293b',\n cursor: 'pointer',\n userSelect: 'none',\n },\n },\n};\n\nexport const radioItemDefinition: ComponentDefinition = {\n ...radioDefinition,\n type: 'radio-item',\n label: 'Radio Item',\n};\n\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport {\n acceptTrait,\n ariaLabelTrait,\n disabledTrait,\n fieldNameTrait,\n helperTextTrait,\n idTrait,\n labelTextTrait,\n maxFileSizeTrait,\n multipleTrait,\n requiredTrait,\n showPreviewTrait,\n} from '../../traits';\n\nexport const fileUploadDefinition: ComponentDefinition = {\n type: 'file-upload',\n label: 'File Upload',\n category: 'form',\n icon: 'upload',\n acceptsChildren: false,\n disallowedParents: ['page'],\n defaultProps: {\n name: 'file_upload',\n label: 'Upload File',\n accept: '*/*',\n maxFileSize: 10,\n multiple: false,\n showPreview: true,\n required: false,\n disabled: false,\n helperText: '',\n },\n propFields: [\n { name: 'name', label: 'Field Name', type: 'string', defaultValue: 'file_upload' },\n { name: 'label', label: 'Label Text', type: 'string', defaultValue: 'Upload File' },\n { name: 'accept', label: 'Accepted File Types', type: 'string', defaultValue: '*/*' },\n { name: 'maxFileSize', label: 'Max File Size (MB)', type: 'number', defaultValue: 10 },\n { name: 'multiple', label: 'Allow Multiple Files', type: 'boolean', defaultValue: false },\n { name: 'showPreview', label: 'Show Preview', type: 'boolean', defaultValue: true },\n { name: 'required', label: 'Required', type: 'boolean', defaultValue: false },\n { name: 'disabled', label: 'Disabled', type: 'boolean', defaultValue: false },\n { name: 'helperText', label: 'Helper Text', type: 'string' },\n ],\n traits: [\n fieldNameTrait({ defaultValue: 'file_upload' }),\n labelTextTrait({ defaultValue: 'Upload File' }),\n acceptTrait(),\n maxFileSizeTrait(),\n multipleTrait(),\n showPreviewTrait(),\n helperTextTrait(),\n requiredTrait(),\n disabledTrait(),\n idTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n const errors: string[] = [];\n if (props.label !== undefined && typeof props.label !== 'string' && !isVariableBinding(props.label)) {\n errors.push('FileUpload \"label\" must be a string when provided.');\n }\n if (props.name !== undefined && typeof props.name !== 'string' && !isVariableBinding(props.name)) {\n errors.push('FileUpload \"name\" must be a string when provided.');\n }\n if (props.accept !== undefined && typeof props.accept !== 'string' && !isVariableBinding(props.accept)) {\n errors.push('FileUpload \"accept\" must be a string when provided.');\n }\n if (props.maxFileSize !== undefined && !isVariableBinding(props.maxFileSize)) {\n if (typeof props.maxFileSize !== 'number' || props.maxFileSize <= 0) {\n errors.push('FileUpload \"maxFileSize\" must be a positive number when provided.');\n }\n }\n if (props.multiple !== undefined && typeof props.multiple !== 'boolean' && !isVariableBinding(props.multiple)) {\n errors.push('FileUpload \"multiple\" must be a boolean when provided.');\n }\n if (props.showPreview !== undefined && typeof props.showPreview !== 'boolean' && !isVariableBinding(props.showPreview)) {\n errors.push('FileUpload \"showPreview\" must be a boolean when provided.');\n }\n if (props.required !== undefined && typeof props.required !== 'boolean' && !isVariableBinding(props.required)) {\n errors.push('FileUpload \"required\" must be a boolean when provided.');\n }\n if (props.disabled !== undefined && typeof props.disabled !== 'boolean' && !isVariableBinding(props.disabled)) {\n errors.push('FileUpload \"disabled\" must be a boolean when provided.');\n }\n if (props.helperText !== undefined && typeof props.helperText !== 'string' && !isVariableBinding(props.helperText)) {\n errors.push('FileUpload \"helperText\" must be a string when provided.');\n }\n return errors.length > 0 ? errors : true;\n },\n defaultStyles: {\n base: {\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n fontSize: '14px',\n color: '#1e293b',\n },\n },\n};\n\n","import { ComponentDefinition } from '../../registry';\nimport { idTrait, ariaLabelTrait, titleTrait } from '../../traits';\n\nexport const modalDefinition: ComponentDefinition = {\n type: 'modal',\n label: 'Modal',\n category: 'interactive',\n icon: 'layout',\n description: 'Pop-up overlay dialog container with backdrop and close controls.',\n acceptsChildren: true,\n allowedChildren: ['*'],\n defaultProps: {\n modalId: 'modal-dialog',\n title: 'Modal Title',\n backdrop: true,\n closeOnBackdrop: true,\n closeOnEscape: true,\n size: 'md',\n showCloseButton: true,\n },\n propFields: [\n {\n name: 'modalId',\n label: 'Modal Target ID',\n type: 'string',\n defaultValue: 'modal-dialog',\n description: 'Unique identifier targeted by open_modal and close_modal actions.',\n },\n {\n name: 'title',\n label: 'Modal Title',\n type: 'string',\n defaultValue: 'Modal Title',\n description: 'Header title text displayed at the top of the dialog.',\n },\n {\n name: 'size',\n label: 'Size',\n type: 'select',\n defaultValue: 'md',\n options: [\n { label: 'Small (400px)', value: 'sm' },\n { label: 'Medium (560px)', value: 'md' },\n { label: 'Large (768px)', value: 'lg' },\n { label: 'Full Screen', value: 'fullscreen' },\n ],\n },\n {\n name: 'backdrop',\n label: 'Show Backdrop',\n type: 'boolean',\n defaultValue: true,\n },\n {\n name: 'closeOnBackdrop',\n label: 'Close on Backdrop Click',\n type: 'boolean',\n defaultValue: true,\n },\n {\n name: 'closeOnEscape',\n label: 'Close on Escape Key',\n type: 'boolean',\n defaultValue: true,\n },\n {\n name: 'showCloseButton',\n label: 'Show Close Button',\n type: 'boolean',\n defaultValue: true,\n },\n ],\n traits: [\n idTrait(),\n titleTrait(),\n ariaLabelTrait({ description: 'Accessible name for the modal dialog.' }),\n ],\n defaultStyles: {\n base: {\n backgroundColor: '#ffffff',\n borderRadius: '12px',\n boxShadow: '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)',\n padding: '24px',\n maxWidth: '560px',\n width: '100%',\n },\n },\n};\n","import { ComponentDefinition } from '../../registry';\nimport { idTrait, ariaLabelTrait, titleTrait } from '../../traits';\n\nexport const drawerDefinition: ComponentDefinition = {\n type: 'drawer',\n label: 'Drawer',\n category: 'interactive',\n icon: 'sidebar',\n description: 'Off-canvas slide-over panel container, ideal for mobile navigation and side sheets.',\n acceptsChildren: true,\n allowedChildren: ['*'],\n defaultProps: {\n modalId: 'mobile-drawer',\n title: 'Navigation Menu',\n placement: 'right',\n backdrop: true,\n closeOnBackdrop: true,\n closeOnEscape: true,\n showCloseButton: true,\n },\n propFields: [\n {\n name: 'modalId',\n label: 'Drawer Target ID',\n type: 'string',\n defaultValue: 'mobile-drawer',\n description: 'Unique identifier targeted by open_modal and close_modal actions.',\n },\n {\n name: 'placement',\n label: 'Placement',\n type: 'select',\n defaultValue: 'right',\n options: [\n { label: 'Slide from Right', value: 'right' },\n { label: 'Slide from Left', value: 'left' },\n { label: 'Slide from Top (Dropdown)', value: 'top' },\n { label: 'Slide from Bottom', value: 'bottom' },\n ],\n },\n {\n name: 'title',\n label: 'Drawer Title',\n type: 'string',\n defaultValue: 'Navigation Menu',\n description: 'Header title text displayed at the top of the drawer.',\n },\n {\n name: 'backdrop',\n label: 'Show Backdrop',\n type: 'boolean',\n defaultValue: true,\n },\n {\n name: 'closeOnBackdrop',\n label: 'Close on Backdrop Click',\n type: 'boolean',\n defaultValue: true,\n },\n {\n name: 'closeOnEscape',\n label: 'Close on Escape Key',\n type: 'boolean',\n defaultValue: true,\n },\n {\n name: 'showCloseButton',\n label: 'Show Close Button',\n type: 'boolean',\n defaultValue: true,\n },\n ],\n traits: [\n idTrait(),\n titleTrait(),\n ariaLabelTrait({ description: 'Accessible name for the off-canvas drawer.' }),\n ],\n defaultStyles: {\n base: {\n backgroundColor: '#ffffff',\n boxShadow: '-4px 0 24px rgba(0, 0, 0, 0.15)',\n padding: '24px',\n width: '320px',\n maxWidth: '100%',\n },\n mobile: {\n width: '100%',\n },\n },\n};\n","import { ComponentDefinition } from '../../registry';\nimport { idTrait, ariaLabelTrait } from '../../traits';\n\nexport const collapsibleDefinition: ComponentDefinition = {\n type: 'collapsible',\n label: 'Collapsible',\n category: 'interactive',\n icon: 'chevron-down',\n description: 'In-flow expandable container that toggles visibility without a fullscreen overlay.',\n acceptsChildren: true,\n allowedChildren: ['*'],\n defaultProps: {\n modalId: 'collapsible-content',\n defaultOpen: false,\n animated: true,\n },\n propFields: [\n {\n name: 'modalId',\n label: 'Target ID',\n type: 'string',\n defaultValue: 'collapsible-content',\n description: 'Identifier targeted by Open Modal (with \"Toggle\" enabled) or Close Modal actions.',\n },\n {\n name: 'defaultOpen',\n label: 'Default Open',\n type: 'boolean',\n defaultValue: false,\n description: 'Whether the collapsible container starts expanded on initial render.',\n },\n {\n name: 'animated',\n label: 'Smooth Transition',\n type: 'boolean',\n defaultValue: true,\n },\n ],\n traits: [\n idTrait(),\n ariaLabelTrait({ description: 'Accessible name for the collapsible container.' }),\n ],\n defaultStyles: {\n base: {\n width: '100%',\n overflow: 'hidden',\n },\n },\n};\n"],"mappings":"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","names":["import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema","import_schema"]}