@kubuild/components 0.7.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/blocks/index.cjs +601 -12
- package/dist/blocks/index.cjs.map +1 -1
- package/dist/blocks/index.d.ts +2 -1
- package/dist/blocks/index.d.ts.map +1 -1
- package/dist/blocks/index.js +3 -1
- package/dist/blocks/sales.d.ts +7 -0
- package/dist/blocks/sales.d.ts.map +1 -0
- package/dist/canonical-props.d.ts +8 -0
- package/dist/canonical-props.d.ts.map +1 -0
- package/dist/{chunk-3HU2KE2B.js → chunk-CJN5OHHX.js} +596 -9
- package/dist/chunk-CJN5OHHX.js.map +1 -0
- package/dist/{chunk-JTQ35OQQ.js → chunk-DIZKTXJI.js} +601 -13
- package/dist/chunk-DIZKTXJI.js.map +1 -0
- package/dist/definitions/constants.d.ts.map +1 -1
- package/dist/definitions/conversion/accordion.d.ts +8 -0
- package/dist/definitions/conversion/accordion.d.ts.map +1 -0
- package/dist/definitions/conversion/carousel.d.ts +7 -0
- package/dist/definitions/conversion/carousel.d.ts.map +1 -0
- package/dist/definitions/conversion/countdown.d.ts +19 -0
- package/dist/definitions/conversion/countdown.d.ts.map +1 -0
- package/dist/definitions/conversion/divider.d.ts +9 -0
- package/dist/definitions/conversion/divider.d.ts.map +1 -0
- package/dist/definitions/conversion/index.d.ts +7 -0
- package/dist/definitions/conversion/index.d.ts.map +1 -0
- package/dist/definitions/conversion/rating.d.ts +7 -0
- package/dist/definitions/conversion/rating.d.ts.map +1 -0
- package/dist/definitions/conversion/tabs.d.ts +9 -0
- package/dist/definitions/conversion/tabs.d.ts.map +1 -0
- package/dist/definitions/form/button.d.ts.map +1 -1
- package/dist/definitions/index.cjs +746 -147
- package/dist/definitions/index.cjs.map +1 -1
- package/dist/definitions/index.d.ts +1 -0
- package/dist/definitions/index.d.ts.map +1 -1
- package/dist/definitions/index.js +27 -1
- package/dist/definitions/types.d.ts +4 -1
- package/dist/definitions/types.d.ts.map +1 -1
- package/dist/definitions/typography/badge.d.ts.map +1 -1
- package/dist/definitions/typography/blockquote.d.ts.map +1 -1
- package/dist/definitions/typography/heading.d.ts.map +1 -1
- package/dist/definitions/typography/link.d.ts.map +1 -1
- package/dist/definitions/typography/paragraph.d.ts.map +1 -1
- package/dist/definitions/typography/text.d.ts.map +1 -1
- package/dist/index.cjs +1417 -227
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +32 -2
- package/dist/index.js.map +1 -1
- package/dist/registry.d.ts +12 -0
- package/dist/registry.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/chunk-3HU2KE2B.js.map +0 -1
- package/dist/chunk-JTQ35OQQ.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/registry.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/canonical-props.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","../src/definitions/conversion/countdown.ts","../src/definitions/conversion/accordion.ts","../src/definitions/conversion/tabs.ts","../src/definitions/conversion/carousel.ts","../src/definitions/conversion/rating.ts","../src/definitions/conversion/divider.ts","../src/definitions/index.ts"],"sourcesContent":["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 * STORA-550: the single canonical prop holding this component's visible text\n * (e.g. `text` for heading/paragraph, `label` for button). Templates, hosts and the\n * editor's inline editing must write this name.\n */\n canonicalTextProp?: string;\n /**\n * STORA-550: deprecated alias -> canonical prop name. The renderer still reads an alias\n * for one minor version (emitting a `DEPRECATED_PROP` diagnostic) and `migrateDocument`\n * (`1.1.0 -> 1.2.0`) renames it. Sourced from `CANONICAL_TEXT_PROPS` in `@kubuild/schema`.\n */\n deprecatedPropAliases?: Record<string, 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 * 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 = [\n 'page',\n 'section',\n 'container',\n 'columns',\n 'flex',\n 'grid',\n 'modal',\n 'drawer',\n 'collapsible',\n 'accordion-item',\n 'tab-panel',\n 'carousel',\n];\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 'countdown',\n 'accordion',\n 'tabs',\n 'carousel',\n 'rating',\n 'divider',\n 'spacer',\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 { canonicalTextPropFields } from '../../canonical-props';\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 ...canonicalTextPropFields('heading'),\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 const text = props.text ?? props.content; // `content` is a deprecated alias (STORA-550)\n if (!isVariableBinding(text) && (typeof text !== 'string' || 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 { getCanonicalTextPropRule } from '@kubuild/schema';\nimport type { ComponentDefinition } from './registry';\n\n/**\n * Definition fields documenting a component's canonical text prop and its deprecated\n * aliases (STORA-550), derived from `CANONICAL_TEXT_PROPS` so definitions, migration and\n * renderer can never disagree.\n */\nexport function canonicalTextPropFields(\n componentType: string,\n): Pick<ComponentDefinition, 'canonicalTextProp' | 'deprecatedPropAliases'> {\n const rule = getCanonicalTextPropRule(componentType);\n if (!rule) return {};\n return {\n canonicalTextProp: rule.canonical,\n deprecatedPropAliases: Object.fromEntries(rule.aliases.map((alias) => [alias, rule.canonical])),\n };\n}\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { canonicalTextPropFields } from '../../canonical-props';\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 ...canonicalTextPropFields('text'),\n // `as: 'p'` keeps the block-level rendering the old `content` default produced (STORA-550).\n defaultProps: { text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', as: 'p' },\n propFields: [\n { name: 'text', label: 'Content', type: 'string', defaultValue: 'Lorem ipsum dolor sit amet.' },\n ],\n traits: [\n idTrait(),\n titleTrait(),\n ariaLabelTrait(),\n ],\n validateProps: (props) => {\n // `content` is a deprecated alias of `text`, still accepted until documents are migrated.\n const value = props.text ?? props.content;\n if (!isVariableBinding(value) && (typeof value !== 'string' || value.trim().length === 0)) {\n return ['Text requires a non-empty \"text\".'];\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 { canonicalTextPropFields } from '../../canonical-props';\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 ...canonicalTextPropFields('paragraph'),\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 { canonicalTextPropFields } from '../../canonical-props';\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 ...canonicalTextPropFields('link'),\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 { canonicalTextPropFields } from '../../canonical-props';\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 ...canonicalTextPropFields('blockquote'),\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 { canonicalTextPropFields } from '../../canonical-props';\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 ...canonicalTextPropFields('badge'),\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: '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 { canonicalTextPropFields } from '../../canonical-props';\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 ...canonicalTextPropFields('button'),\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","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait } from '../../traits';\n\nexport const COUNTDOWN_MODES = ['evergreen', 'fixed'] as const;\nexport const COUNTDOWN_FORMATS = ['mm:ss', 'hh:mm:ss', 'd h m s'] as const;\nexport const COUNTDOWN_EXPIRE_BEHAVIORS = ['text', 'hide', 'zero'] as const;\nexport const COUNTDOWN_STORAGE_TYPES = ['session', 'local'] as const;\n\n/**\n * Countdown timer (STORA-543).\n *\n * - `evergreen`: every visitor gets `durationMinutes` from their first view; the\n * per-visitor deadline is persisted in session/local storage (with an in-memory\n * fallback when storage is unavailable or throws).\n * - `fixed`: counts down to `targetDate` (wall-clock `YYYY-MM-DDTHH:mm[:ss]`)\n * interpreted in the IANA `timezone`.\n *\n * When it reaches zero the runtime fires the node's `expire` action pipelines once\n * and applies `expireBehavior`. In editor mode the timer is frozen.\n */\nexport const countdownDefinition: ComponentDefinition = {\n type: 'countdown',\n label: 'Countdown',\n category: 'interactive',\n icon: 'clock',\n description: 'Urgency timer for limited offers (evergreen per-visitor or fixed deadline).',\n acceptsChildren: false,\n defaultProps: {\n mode: 'evergreen',\n durationMinutes: 15,\n targetDate: '',\n timezone: 'UTC',\n format: 'hh:mm:ss',\n label: '',\n labelDays: 'Days',\n labelHours: 'Hours',\n labelMinutes: 'Minutes',\n labelSeconds: 'Seconds',\n expireBehavior: 'text',\n expiredText: 'This offer has expired.',\n storage: 'session',\n storageKey: '',\n },\n propFields: [\n {\n name: 'mode',\n label: 'Mode',\n type: 'select',\n defaultValue: 'evergreen',\n options: [\n { label: 'Evergreen (per visitor)', value: 'evergreen' },\n { label: 'Fixed date', value: 'fixed' },\n ],\n },\n {\n name: 'durationMinutes',\n label: 'Duration (minutes)',\n type: 'number',\n defaultValue: 15,\n description: 'Evergreen mode: how long each visitor gets from their first view.',\n },\n {\n name: 'targetDate',\n label: 'Target Date/Time',\n type: 'string',\n defaultValue: '',\n description: 'Fixed mode: wall-clock time \"YYYY-MM-DDTHH:mm\" in the selected timezone.',\n },\n {\n name: 'timezone',\n label: 'Timezone',\n type: 'string',\n defaultValue: 'UTC',\n description: 'Fixed mode: IANA timezone name, e.g. \"Asia/Jakarta\" or \"Europe/London\".',\n },\n {\n name: 'format',\n label: 'Format',\n type: 'select',\n defaultValue: 'hh:mm:ss',\n options: [\n { label: 'mm:ss', value: 'mm:ss' },\n { label: 'hh:mm:ss', value: 'hh:mm:ss' },\n { label: 'd h m s (unit blocks)', value: 'd h m s' },\n ],\n },\n {\n name: 'label',\n label: 'Label',\n type: 'string',\n defaultValue: '',\n description: 'Optional text shown before the timer, e.g. \"Offer ends in\".',\n },\n { name: 'labelDays', label: 'Days Label', type: 'string', defaultValue: 'Days' },\n { name: 'labelHours', label: 'Hours Label', type: 'string', defaultValue: 'Hours' },\n { name: 'labelMinutes', label: 'Minutes Label', type: 'string', defaultValue: 'Minutes' },\n { name: 'labelSeconds', label: 'Seconds Label', type: 'string', defaultValue: 'Seconds' },\n {\n name: 'expireBehavior',\n label: 'When Expired',\n type: 'select',\n defaultValue: 'text',\n options: [\n { label: 'Show expired text', value: 'text' },\n { label: 'Hide timer', value: 'hide' },\n { label: 'Keep showing zeros', value: 'zero' },\n ],\n description:\n 'Add an \"On Expire\" action pipeline to redirect, show a toast, open a modal, etc.',\n },\n {\n name: 'expiredText',\n label: 'Expired Text',\n type: 'string',\n defaultValue: 'This offer has expired.',\n },\n {\n name: 'storage',\n label: 'Evergreen Storage',\n type: 'select',\n defaultValue: 'session',\n options: [\n { label: 'Session (per browser session)', value: 'session' },\n { label: 'Local (persists across visits)', value: 'local' },\n ],\n },\n {\n name: 'storageKey',\n label: 'Storage Key',\n type: 'string',\n defaultValue: '',\n description:\n 'Share one deadline across pages by using the same key (defaults to the node id).',\n },\n ],\n traits: [\n idTrait(),\n ariaLabelTrait({ description: 'Accessible name for the timer, e.g. \"Offer ends in\".' }),\n ],\n defaultStyles: {\n base: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '12px',\n fontSize: '28px',\n fontWeight: '700',\n fontVariantNumeric: 'tabular-nums',\n },\n },\n validateProps: (props) => {\n const errors: string[] = [];\n const checkEnum = (name: string, allowed: readonly string[]) => {\n const value = props[name];\n if (value === undefined || isVariableBinding(value)) return;\n if (typeof value !== 'string' || !allowed.includes(value)) {\n errors.push(`Countdown \"${name}\" must be one of: ${allowed.join(', ')}.`);\n }\n };\n checkEnum('mode', COUNTDOWN_MODES);\n checkEnum('format', COUNTDOWN_FORMATS);\n checkEnum('expireBehavior', COUNTDOWN_EXPIRE_BEHAVIORS);\n checkEnum('storage', COUNTDOWN_STORAGE_TYPES);\n const duration = props.durationMinutes;\n if (duration !== undefined && !isVariableBinding(duration)) {\n if (typeof duration !== 'number' || !Number.isFinite(duration) || duration < 0) {\n errors.push('Countdown \"durationMinutes\" must be a non-negative number.');\n }\n }\n return errors;\n },\n};\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait } from '../../traits';\nimport { CONTENT_CHILD_TYPES } from '../constants';\n\n/**\n * Accordion / FAQ group (STORA-544). Children are `accordion-item` nodes; the\n * runtime can optionally emit `FAQPage` JSON-LD built from item titles + answers.\n */\nexport const accordionDefinition: ComponentDefinition = {\n type: 'accordion',\n label: 'Accordion',\n category: 'interactive',\n icon: 'chevron-down',\n description: 'Group of expandable items (FAQ) with single- or multi-open behavior.',\n acceptsChildren: true,\n allowedChildren: ['accordion-item'],\n defaultProps: {\n allowMultiple: false,\n defaultOpenIndex: 0,\n icon: 'chevron',\n faqSchema: false,\n },\n defaultChildren: [\n {\n type: 'accordion-item',\n props: { title: 'What is included?' },\n children: [{ type: 'paragraph', props: { text: 'Everything you need to get started.' } }],\n },\n {\n type: 'accordion-item',\n props: { title: 'Can I get a refund?' },\n children: [{ type: 'paragraph', props: { text: 'Yes, within 30 days of purchase.' } }],\n },\n {\n type: 'accordion-item',\n props: { title: 'How do I get access?' },\n children: [\n { type: 'paragraph', props: { text: 'You receive an email right after checkout.' } },\n ],\n },\n ],\n propFields: [\n {\n name: 'allowMultiple',\n label: 'Allow Multiple Open',\n type: 'boolean',\n defaultValue: false,\n description: 'When off, opening an item closes the others.',\n },\n {\n name: 'defaultOpenIndex',\n label: 'Default Open Item',\n type: 'number',\n defaultValue: 0,\n description: 'Zero-based index of the item open on first render (-1 = all closed).',\n },\n {\n name: 'icon',\n label: 'Icon',\n type: 'select',\n defaultValue: 'chevron',\n options: [\n { label: 'Chevron', value: 'chevron' },\n { label: 'Plus / Minus', value: 'plus' },\n { label: 'None', value: 'none' },\n ],\n },\n {\n name: 'faqSchema',\n label: 'Output FAQPage JSON-LD',\n type: 'boolean',\n defaultValue: false,\n description: 'Emits schema.org FAQPage structured data on the published page for SEO.',\n },\n ],\n traits: [idTrait(), ariaLabelTrait({ description: 'Accessible name for the accordion group.' })],\n defaultStyles: {\n base: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n borderTop: '1px solid #e2e8f0',\n },\n },\n validateProps: (props) => {\n const errors: string[] = [];\n const idx = props.defaultOpenIndex;\n if (\n idx !== undefined &&\n !isVariableBinding(idx) &&\n (typeof idx !== 'number' || !Number.isInteger(idx))\n ) {\n errors.push('Accordion \"defaultOpenIndex\" must be an integer.');\n }\n return errors;\n },\n};\n\nexport const accordionItemDefinition: ComponentDefinition = {\n type: 'accordion-item',\n label: 'Accordion Item',\n category: 'interactive',\n icon: 'chevron-right',\n description: 'One question/answer row of an accordion: a title header plus content children.',\n acceptsChildren: true,\n allowedChildren: ['container', 'columns', 'flex', 'grid', ...CONTENT_CHILD_TYPES],\n defaultProps: {\n title: 'Question',\n },\n defaultChildren: [{ type: 'paragraph', props: { text: 'Answer goes here.' } }],\n propFields: [{ name: 'title', label: 'Title', type: 'string', defaultValue: 'Question' }],\n traits: [idTrait()],\n defaultStyles: {\n base: {\n borderBottom: '1px solid #e2e8f0',\n },\n },\n};\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait } from '../../traits';\nimport { CONTENT_CHILD_TYPES } from '../constants';\n\n/**\n * Tabs (STORA-545). Children are `tab-panel` nodes; each panel's `label` becomes a\n * tab button. `activeIndex` is the tab shown on first render — clicking a tab on\n * the editor canvas writes it back so authors can edit any panel.\n */\nexport const tabsDefinition: ComponentDefinition = {\n type: 'tabs',\n label: 'Tabs',\n category: 'interactive',\n icon: 'tabs',\n description: 'Tabbed content for product variants, specifications, or plan comparison.',\n acceptsChildren: true,\n allowedChildren: ['tab-panel'],\n defaultProps: {\n activeIndex: 0,\n },\n defaultChildren: [\n {\n type: 'tab-panel',\n props: { label: 'Tab 1' },\n children: [{ type: 'paragraph', props: { text: 'Content for the first tab.' } }],\n },\n {\n type: 'tab-panel',\n props: { label: 'Tab 2' },\n children: [{ type: 'paragraph', props: { text: 'Content for the second tab.' } }],\n },\n ],\n propFields: [\n {\n name: 'activeIndex',\n label: 'Active Tab',\n type: 'number',\n defaultValue: 0,\n description: 'Zero-based index of the tab shown initially.',\n },\n ],\n traits: [idTrait(), ariaLabelTrait({ description: 'Accessible name for the tab list.' })],\n defaultStyles: {\n base: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n },\n },\n validateProps: (props) => {\n const errors: string[] = [];\n const idx = props.activeIndex;\n if (\n idx !== undefined &&\n !isVariableBinding(idx) &&\n (typeof idx !== 'number' || !Number.isInteger(idx) || idx < 0)\n ) {\n errors.push('Tabs \"activeIndex\" must be a non-negative integer.');\n }\n return errors;\n },\n};\n\nexport const tabPanelDefinition: ComponentDefinition = {\n type: 'tab-panel',\n label: 'Tab Panel',\n category: 'interactive',\n icon: 'layout',\n description: 'Content of a single tab; its label is shown in the tab list.',\n acceptsChildren: true,\n allowedChildren: ['container', 'columns', 'flex', 'grid', ...CONTENT_CHILD_TYPES],\n defaultProps: {\n label: 'Tab',\n },\n defaultChildren: [{ type: 'paragraph', props: { text: 'Tab content.' } }],\n propFields: [{ name: 'label', label: 'Tab Label', type: 'string', defaultValue: 'Tab' }],\n traits: [idTrait()],\n defaultStyles: {\n base: {\n paddingTop: '16px',\n },\n },\n};\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { ariaLabelTrait, idTrait } from '../../traits';\n\n/**\n * Carousel (STORA-546). Every child node is one slide. Autoplay is disabled in the\n * editor and whenever the visitor prefers reduced motion.\n */\nexport const carouselDefinition: ComponentDefinition = {\n type: 'carousel',\n label: 'Carousel',\n category: 'interactive',\n icon: 'carousel',\n description: 'Slider for product galleries and testimonials; each child is a slide.',\n acceptsChildren: true,\n allowedChildren: ['*'],\n defaultProps: {\n autoplay: false,\n interval: 5000,\n loop: true,\n showDots: true,\n showArrows: true,\n },\n defaultChildren: [\n { type: 'container', children: [{ type: 'paragraph', props: { text: 'Slide 1' } }] },\n { type: 'container', children: [{ type: 'paragraph', props: { text: 'Slide 2' } }] },\n { type: 'container', children: [{ type: 'paragraph', props: { text: 'Slide 3' } }] },\n ],\n propFields: [\n { name: 'autoplay', label: 'Autoplay', type: 'boolean', defaultValue: false },\n { name: 'interval', label: 'Autoplay Interval (ms)', type: 'number', defaultValue: 5000 },\n { name: 'loop', label: 'Loop', type: 'boolean', defaultValue: true },\n { name: 'showDots', label: 'Show Dots', type: 'boolean', defaultValue: true },\n { name: 'showArrows', label: 'Show Arrows', type: 'boolean', defaultValue: true },\n ],\n traits: [\n idTrait(),\n ariaLabelTrait({ description: 'Accessible name for the carousel, e.g. \"Testimonials\".' }),\n ],\n defaultStyles: {\n base: {\n position: 'relative',\n width: '100%',\n overflow: 'hidden',\n },\n },\n validateProps: (props) => {\n const errors: string[] = [];\n const interval = props.interval;\n if (\n interval !== undefined &&\n !isVariableBinding(interval) &&\n (typeof interval !== 'number' || !(interval > 0))\n ) {\n errors.push('Carousel \"interval\" must be a positive number of milliseconds.');\n }\n return errors;\n },\n};\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { idTrait } from '../../traits';\n\n/**\n * Star rating (STORA-547). Supports half stars; the accessible label defaults to\n * \"{value} out of {max}\" and can be localized via `labelTemplate`.\n */\nexport const ratingDefinition: ComponentDefinition = {\n type: 'rating',\n label: 'Rating',\n category: 'media',\n icon: 'star',\n description: 'Read-only star rating with half-star support.',\n acceptsChildren: false,\n defaultProps: {\n value: 5,\n max: 5,\n size: 20,\n color: '#f59e0b',\n emptyColor: '#e2e8f0',\n labelTemplate: '{value} out of {max}',\n },\n propFields: [\n {\n name: 'value',\n label: 'Value',\n type: 'number',\n defaultValue: 5,\n description: 'Rounded to the nearest half star.',\n },\n { name: 'max', label: 'Max Stars', type: 'number', defaultValue: 5 },\n { name: 'size', label: 'Star Size (px)', type: 'number', defaultValue: 20 },\n { name: 'color', label: 'Color', type: 'color', defaultValue: '#f59e0b' },\n { name: 'emptyColor', label: 'Empty Color', type: 'color', defaultValue: '#e2e8f0' },\n {\n name: 'labelTemplate',\n label: 'Accessible Label',\n type: 'string',\n defaultValue: '{value} out of {max}',\n description:\n 'Screen reader text; {value} and {max} are replaced (e.g. \"{value} dari {max}\").',\n },\n ],\n traits: [idTrait()],\n defaultStyles: {\n base: {\n display: 'inline-flex',\n alignItems: 'center',\n gap: '2px',\n },\n },\n validateProps: (props) => {\n const errors: string[] = [];\n for (const name of ['value', 'max', 'size']) {\n const v = props[name];\n if (\n v !== undefined &&\n !isVariableBinding(v) &&\n (typeof v !== 'number' || !Number.isFinite(v) || v < 0)\n ) {\n errors.push(`Rating \"${name}\" must be a non-negative number.`);\n }\n }\n return errors;\n },\n};\n","import { isVariableBinding } from '@kubuild/schema';\nimport { ComponentDefinition } from '../../registry';\nimport { idTrait } from '../../traits';\n\n/** Horizontal divider line with optional centered label (STORA-548). */\nexport const dividerDefinition: ComponentDefinition = {\n type: 'divider',\n label: 'Divider',\n category: 'layout',\n icon: 'divider',\n description: 'Horizontal rule (solid/dashed/dotted) with an optional centered label.',\n acceptsChildren: false,\n defaultProps: {\n lineStyle: 'solid',\n thickness: 1,\n color: '#e2e8f0',\n label: '',\n },\n propFields: [\n {\n name: 'lineStyle',\n label: 'Line Style',\n type: 'select',\n defaultValue: 'solid',\n options: [\n { label: 'Solid', value: 'solid' },\n { label: 'Dashed', value: 'dashed' },\n { label: 'Dotted', value: 'dotted' },\n ],\n },\n { name: 'thickness', label: 'Thickness (px)', type: 'number', defaultValue: 1 },\n { name: 'color', label: 'Color', type: 'color', defaultValue: '#e2e8f0' },\n {\n name: 'label',\n label: 'Center Label',\n type: 'string',\n defaultValue: '',\n description: 'Optional text in the middle of the line, e.g. \"OR\".',\n },\n ],\n traits: [idTrait()],\n defaultStyles: {\n base: {\n width: '100%',\n marginTop: '16px',\n marginBottom: '16px',\n },\n },\n validateProps: (props) => {\n const v = props.lineStyle;\n if (\n v !== undefined &&\n !isVariableBinding(v) &&\n !['solid', 'dashed', 'dotted'].includes(v as string)\n ) {\n return ['Divider \"lineStyle\" must be one of: solid, dashed, dotted.'];\n }\n return [];\n },\n};\n\n/**\n * Empty vertical spacer (STORA-548). Height is an ordinary style so it can differ\n * per breakpoint (base/desktop/tablet/mobile) like any other responsive style.\n */\nexport const spacerDefinition: ComponentDefinition = {\n type: 'spacer',\n label: 'Spacer',\n category: 'layout',\n icon: 'dimension',\n description: 'Empty vertical space; height is responsive per breakpoint.',\n acceptsChildren: false,\n defaultProps: {},\n traits: [idTrait()],\n defaultStyles: {\n base: {\n width: '100%',\n height: '48px',\n },\n tablet: {\n height: '32px',\n },\n mobile: {\n height: '24px',\n },\n },\n};\n","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';\nexport * from './conversion';\n\nimport {\n modalDefinition,\n drawerDefinition,\n collapsibleDefinition,\n} from './interactive';\nimport {\n accordionDefinition,\n accordionItemDefinition,\n carouselDefinition,\n countdownDefinition,\n dividerDefinition,\n ratingDefinition,\n spacerDefinition,\n tabPanelDefinition,\n tabsDefinition,\n} from './conversion';\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 // Conversion components (Epic 60)\n countdownDefinition,\n accordionDefinition,\n accordionItemDefinition,\n tabsDefinition,\n tabPanelDefinition,\n carouselDefinition,\n ratingDefinition,\n dividerDefinition,\n spacerDefinition,\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"],"mappings":"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","names":["isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding","isVariableBinding"]}
|