@kubuild/components 0.8.1 → 0.8.2
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/forms.d.cts +6 -0
- package/dist/blocks/forms.d.cts.map +1 -0
- package/dist/blocks/forms.d.ts +1 -1
- package/dist/blocks/forms.d.ts.map +1 -1
- package/dist/blocks/index.cjs.map +1 -1
- package/dist/blocks/index.d.cts +12 -0
- package/dist/blocks/index.d.cts.map +1 -0
- package/dist/blocks/index.d.ts +6 -6
- package/dist/blocks/index.d.ts.map +1 -1
- package/dist/blocks/index.js +1 -1
- package/dist/blocks/layout.d.cts +6 -0
- package/dist/blocks/layout.d.cts.map +1 -0
- package/dist/blocks/layout.d.ts +1 -1
- package/dist/blocks/layout.d.ts.map +1 -1
- package/dist/blocks/sales.d.cts +7 -0
- package/dist/blocks/sales.d.cts.map +1 -0
- package/dist/blocks/sales.d.ts +1 -1
- package/dist/blocks/sales.d.ts.map +1 -1
- package/dist/blocks/sections.d.cts +6 -0
- package/dist/blocks/sections.d.cts.map +1 -0
- package/dist/blocks/sections.d.ts +1 -1
- package/dist/blocks/sections.d.ts.map +1 -1
- package/dist/blocks/types.d.cts +13 -0
- package/dist/blocks/types.d.cts.map +1 -0
- package/dist/canonical-props.d.cts +8 -0
- package/dist/canonical-props.d.cts.map +1 -0
- package/dist/canonical-props.d.ts +1 -1
- package/dist/canonical-props.d.ts.map +1 -1
- package/dist/{chunk-OK53DS7G.js → chunk-BCQERSFK.js} +1 -1
- package/dist/chunk-BCQERSFK.js.map +1 -0
- package/dist/{chunk-CJN5OHHX.js → chunk-TTVLQR7L.js} +2 -2
- package/dist/chunk-TTVLQR7L.js.map +1 -0
- package/dist/{chunk-DIZKTXJI.js → chunk-YEN6JQLF.js} +1 -1
- package/dist/chunk-YEN6JQLF.js.map +1 -0
- package/dist/definitions/constants.d.cts +10 -0
- package/dist/definitions/constants.d.cts.map +1 -0
- package/dist/definitions/conversion/accordion.d.cts +8 -0
- package/dist/definitions/conversion/accordion.d.cts.map +1 -0
- package/dist/definitions/conversion/accordion.d.ts +1 -1
- package/dist/definitions/conversion/accordion.d.ts.map +1 -1
- package/dist/definitions/conversion/carousel.d.cts +7 -0
- package/dist/definitions/conversion/carousel.d.cts.map +1 -0
- package/dist/definitions/conversion/carousel.d.ts +1 -1
- package/dist/definitions/conversion/carousel.d.ts.map +1 -1
- package/dist/definitions/conversion/countdown.d.cts +19 -0
- package/dist/definitions/conversion/countdown.d.cts.map +1 -0
- package/dist/definitions/conversion/countdown.d.ts +1 -1
- package/dist/definitions/conversion/countdown.d.ts.map +1 -1
- package/dist/definitions/conversion/divider.d.cts +9 -0
- package/dist/definitions/conversion/divider.d.cts.map +1 -0
- package/dist/definitions/conversion/divider.d.ts +1 -1
- package/dist/definitions/conversion/divider.d.ts.map +1 -1
- package/dist/definitions/conversion/index.d.cts +7 -0
- package/dist/definitions/conversion/index.d.cts.map +1 -0
- package/dist/definitions/conversion/index.d.ts +6 -6
- package/dist/definitions/conversion/index.d.ts.map +1 -1
- package/dist/definitions/conversion/rating.d.cts +7 -0
- package/dist/definitions/conversion/rating.d.cts.map +1 -0
- package/dist/definitions/conversion/rating.d.ts +1 -1
- package/dist/definitions/conversion/rating.d.ts.map +1 -1
- package/dist/definitions/conversion/tabs.d.cts +9 -0
- package/dist/definitions/conversion/tabs.d.cts.map +1 -0
- package/dist/definitions/conversion/tabs.d.ts +1 -1
- package/dist/definitions/conversion/tabs.d.ts.map +1 -1
- package/dist/definitions/data/collection.d.cts +3 -0
- package/dist/definitions/data/collection.d.cts.map +1 -0
- package/dist/definitions/data/collection.d.ts +1 -1
- package/dist/definitions/data/collection.d.ts.map +1 -1
- package/dist/definitions/data/index.d.cts +4 -0
- package/dist/definitions/data/index.d.cts.map +1 -0
- package/dist/definitions/data/index.d.ts +3 -3
- package/dist/definitions/data/index.d.ts.map +1 -1
- package/dist/definitions/data/list.d.cts +4 -0
- package/dist/definitions/data/list.d.cts.map +1 -0
- package/dist/definitions/data/list.d.ts +1 -1
- package/dist/definitions/data/list.d.ts.map +1 -1
- package/dist/definitions/data/table.d.cts +5 -0
- package/dist/definitions/data/table.d.cts.map +1 -0
- package/dist/definitions/data/table.d.ts +1 -1
- package/dist/definitions/data/table.d.ts.map +1 -1
- package/dist/definitions/form/button.d.cts +4 -0
- package/dist/definitions/form/button.d.cts.map +1 -0
- package/dist/definitions/form/button.d.ts +1 -1
- package/dist/definitions/form/button.d.ts.map +1 -1
- package/dist/definitions/form/checkbox.d.cts +3 -0
- package/dist/definitions/form/checkbox.d.cts.map +1 -0
- package/dist/definitions/form/checkbox.d.ts +1 -1
- package/dist/definitions/form/checkbox.d.ts.map +1 -1
- package/dist/definitions/form/file-upload.d.cts +3 -0
- package/dist/definitions/form/file-upload.d.cts.map +1 -0
- package/dist/definitions/form/file-upload.d.ts +1 -1
- package/dist/definitions/form/file-upload.d.ts.map +1 -1
- package/dist/definitions/form/form.d.cts +3 -0
- package/dist/definitions/form/form.d.cts.map +1 -0
- package/dist/definitions/form/form.d.ts +1 -1
- package/dist/definitions/form/form.d.ts.map +1 -1
- package/dist/definitions/form/index.d.cts +10 -0
- package/dist/definitions/form/index.d.cts.map +1 -0
- package/dist/definitions/form/index.d.ts +9 -9
- package/dist/definitions/form/index.d.ts.map +1 -1
- package/dist/definitions/form/input.d.cts +3 -0
- package/dist/definitions/form/input.d.cts.map +1 -0
- package/dist/definitions/form/input.d.ts +1 -1
- package/dist/definitions/form/input.d.ts.map +1 -1
- package/dist/definitions/form/radio.d.cts +5 -0
- package/dist/definitions/form/radio.d.cts.map +1 -0
- package/dist/definitions/form/radio.d.ts +1 -1
- package/dist/definitions/form/radio.d.ts.map +1 -1
- package/dist/definitions/form/select.d.cts +3 -0
- package/dist/definitions/form/select.d.cts.map +1 -0
- package/dist/definitions/form/select.d.ts +1 -1
- package/dist/definitions/form/select.d.ts.map +1 -1
- package/dist/definitions/form/switch.d.cts +3 -0
- package/dist/definitions/form/switch.d.cts.map +1 -0
- package/dist/definitions/form/switch.d.ts +1 -1
- package/dist/definitions/form/switch.d.ts.map +1 -1
- package/dist/definitions/form/textarea.d.cts +3 -0
- package/dist/definitions/form/textarea.d.cts.map +1 -0
- package/dist/definitions/form/textarea.d.ts +1 -1
- package/dist/definitions/form/textarea.d.ts.map +1 -1
- package/dist/definitions/index.cjs.map +1 -1
- package/dist/definitions/index.d.cts +13 -0
- package/dist/definitions/index.d.cts.map +1 -0
- package/dist/definitions/index.d.ts +10 -10
- package/dist/definitions/index.d.ts.map +1 -1
- package/dist/definitions/index.js +2 -2
- package/dist/definitions/interactive/collapsible.d.cts +3 -0
- package/dist/definitions/interactive/collapsible.d.cts.map +1 -0
- package/dist/definitions/interactive/collapsible.d.ts +1 -1
- package/dist/definitions/interactive/collapsible.d.ts.map +1 -1
- package/dist/definitions/interactive/drawer.d.cts +3 -0
- package/dist/definitions/interactive/drawer.d.cts.map +1 -0
- package/dist/definitions/interactive/drawer.d.ts +1 -1
- package/dist/definitions/interactive/drawer.d.ts.map +1 -1
- package/dist/definitions/interactive/index.d.cts +4 -0
- package/dist/definitions/interactive/index.d.cts.map +1 -0
- package/dist/definitions/interactive/index.d.ts +3 -3
- package/dist/definitions/interactive/index.d.ts.map +1 -1
- package/dist/definitions/interactive/modal.d.cts +3 -0
- package/dist/definitions/interactive/modal.d.cts.map +1 -0
- package/dist/definitions/interactive/modal.d.ts +1 -1
- package/dist/definitions/interactive/modal.d.ts.map +1 -1
- package/dist/definitions/layout/columns.d.cts +3 -0
- package/dist/definitions/layout/columns.d.cts.map +1 -0
- package/dist/definitions/layout/columns.d.ts +1 -1
- package/dist/definitions/layout/columns.d.ts.map +1 -1
- package/dist/definitions/layout/container.d.cts +3 -0
- package/dist/definitions/layout/container.d.cts.map +1 -0
- package/dist/definitions/layout/container.d.ts +1 -1
- package/dist/definitions/layout/container.d.ts.map +1 -1
- package/dist/definitions/layout/flex.d.cts +7 -0
- package/dist/definitions/layout/flex.d.cts.map +1 -0
- package/dist/definitions/layout/flex.d.ts +1 -1
- package/dist/definitions/layout/flex.d.ts.map +1 -1
- package/dist/definitions/layout/grid.d.cts +7 -0
- package/dist/definitions/layout/grid.d.cts.map +1 -0
- package/dist/definitions/layout/grid.d.ts +1 -1
- package/dist/definitions/layout/grid.d.ts.map +1 -1
- package/dist/definitions/layout/index.d.cts +7 -0
- package/dist/definitions/layout/index.d.cts.map +1 -0
- package/dist/definitions/layout/index.d.ts +6 -6
- package/dist/definitions/layout/index.d.ts.map +1 -1
- package/dist/definitions/layout/page.d.cts +3 -0
- package/dist/definitions/layout/page.d.cts.map +1 -0
- package/dist/definitions/layout/page.d.ts +1 -1
- package/dist/definitions/layout/page.d.ts.map +1 -1
- package/dist/definitions/layout/section.d.cts +3 -0
- package/dist/definitions/layout/section.d.cts.map +1 -0
- package/dist/definitions/layout/section.d.ts +1 -1
- package/dist/definitions/layout/section.d.ts.map +1 -1
- package/dist/definitions/media/html-embed.d.cts +3 -0
- package/dist/definitions/media/html-embed.d.cts.map +1 -0
- package/dist/definitions/media/html-embed.d.ts +1 -1
- package/dist/definitions/media/html-embed.d.ts.map +1 -1
- package/dist/definitions/media/icon.d.cts +3 -0
- package/dist/definitions/media/icon.d.cts.map +1 -0
- package/dist/definitions/media/icon.d.ts +1 -1
- package/dist/definitions/media/icon.d.ts.map +1 -1
- package/dist/definitions/media/image.d.cts +3 -0
- package/dist/definitions/media/image.d.cts.map +1 -0
- package/dist/definitions/media/image.d.ts +1 -1
- package/dist/definitions/media/image.d.ts.map +1 -1
- package/dist/definitions/media/index.d.cts +5 -0
- package/dist/definitions/media/index.d.cts.map +1 -0
- package/dist/definitions/media/index.d.ts +4 -4
- package/dist/definitions/media/index.d.ts.map +1 -1
- package/dist/definitions/media/video.d.cts +3 -0
- package/dist/definitions/media/video.d.cts.map +1 -0
- package/dist/definitions/media/video.d.ts +1 -1
- package/dist/definitions/media/video.d.ts.map +1 -1
- package/dist/definitions/types.d.cts +8 -0
- package/dist/definitions/types.d.cts.map +1 -0
- package/dist/definitions/typography/badge.d.cts +3 -0
- package/dist/definitions/typography/badge.d.cts.map +1 -0
- package/dist/definitions/typography/badge.d.ts +1 -1
- package/dist/definitions/typography/badge.d.ts.map +1 -1
- package/dist/definitions/typography/blockquote.d.cts +3 -0
- package/dist/definitions/typography/blockquote.d.cts.map +1 -0
- package/dist/definitions/typography/blockquote.d.ts +1 -1
- package/dist/definitions/typography/blockquote.d.ts.map +1 -1
- package/dist/definitions/typography/code-block.d.cts +3 -0
- package/dist/definitions/typography/code-block.d.cts.map +1 -0
- package/dist/definitions/typography/code-block.d.ts +1 -1
- package/dist/definitions/typography/code-block.d.ts.map +1 -1
- package/dist/definitions/typography/heading.d.cts +3 -0
- package/dist/definitions/typography/heading.d.cts.map +1 -0
- package/dist/definitions/typography/heading.d.ts +1 -1
- package/dist/definitions/typography/heading.d.ts.map +1 -1
- package/dist/definitions/typography/index.d.cts +8 -0
- package/dist/definitions/typography/index.d.cts.map +1 -0
- package/dist/definitions/typography/index.d.ts +7 -7
- package/dist/definitions/typography/index.d.ts.map +1 -1
- package/dist/definitions/typography/link.d.cts +3 -0
- package/dist/definitions/typography/link.d.cts.map +1 -0
- package/dist/definitions/typography/link.d.ts +1 -1
- package/dist/definitions/typography/link.d.ts.map +1 -1
- package/dist/definitions/typography/paragraph.d.cts +3 -0
- package/dist/definitions/typography/paragraph.d.cts.map +1 -0
- package/dist/definitions/typography/paragraph.d.ts +1 -1
- package/dist/definitions/typography/paragraph.d.ts.map +1 -1
- package/dist/definitions/typography/text.d.cts +3 -0
- package/dist/definitions/typography/text.d.cts.map +1 -0
- package/dist/definitions/typography/text.d.ts +1 -1
- package/dist/definitions/typography/text.d.ts.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +8 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/prop-types.d.cts +10 -0
- package/dist/prop-types.d.cts.map +1 -0
- package/dist/prop-types.d.ts +1 -1
- package/dist/prop-types.d.ts.map +1 -1
- package/dist/registry.d.cts +108 -0
- package/dist/registry.d.cts.map +1 -0
- package/dist/registry.d.ts +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/requirements.d.cts +18 -0
- package/dist/requirements.d.cts.map +1 -0
- package/dist/requirements.d.ts +1 -1
- package/dist/requirements.d.ts.map +1 -1
- package/dist/traits/common.d.cts +8 -0
- package/dist/traits/common.d.cts.map +1 -0
- package/dist/traits/common.d.ts +1 -1
- package/dist/traits/common.d.ts.map +1 -1
- package/dist/traits/form.d.cts +80 -0
- package/dist/traits/form.d.cts.map +1 -0
- package/dist/traits/form.d.ts +1 -1
- package/dist/traits/form.d.ts.map +1 -1
- package/dist/traits/index.cjs.map +1 -1
- package/dist/traits/index.d.cts +7 -0
- package/dist/traits/index.d.cts.map +1 -0
- package/dist/traits/index.d.ts +6 -6
- package/dist/traits/index.d.ts.map +1 -1
- package/dist/traits/index.js +1 -1
- package/dist/traits/link.d.cts +8 -0
- package/dist/traits/link.d.cts.map +1 -0
- package/dist/traits/link.d.ts +1 -1
- package/dist/traits/link.d.ts.map +1 -1
- package/dist/traits/media.d.cts +18 -0
- package/dist/traits/media.d.cts.map +1 -0
- package/dist/traits/media.d.ts +1 -1
- package/dist/traits/media.d.ts.map +1 -1
- package/dist/traits/structure.d.cts +10 -0
- package/dist/traits/structure.d.cts.map +1 -0
- package/dist/traits/structure.d.ts +1 -1
- package/dist/traits/structure.d.ts.map +1 -1
- package/dist/traits/types.d.cts +69 -0
- package/dist/traits/types.d.cts.map +1 -0
- package/package.json +36 -16
- package/dist/chunk-CJN5OHHX.js.map +0 -1
- package/dist/chunk-DIZKTXJI.js.map +0 -1
- package/dist/chunk-OK53DS7G.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/blocks/types.ts","../src/blocks/layout.ts","../src/blocks/sections.ts","../src/blocks/forms.ts","../src/blocks/sales.ts","../src/blocks/index.ts"],"sourcesContent":["import { Node } from '@kubuild/schema';\n\nexport interface BlockDefinition {\n id: string;\n name: string;\n category: 'layout' | 'sections' | 'ui' | 'pricing' | 'cta' | 'forms' | string;\n categoryLabel?: string;\n description?: string;\n icon?: string;\n thumbnailSvg?: string;\n createNodeTree: (generateId?: (prefix?: string) => string) => Node;\n}\n\nlet nextId = 1;\nexport function defaultGenId(prefix = 'node'): string {\n return `${prefix}-${Date.now().toString(36)}-${(nextId++).toString(36)}`;\n}\n\n","import { BlockDefinition, defaultGenId } from './types';\n\n/**\n * Predefined Starter Layout Blocks (STORA-241).\n */\nexport const LAYOUT_STARTER_BLOCKS: BlockDefinition[] = [\n {\n id: 'layout-1-col',\n name: '1 Column',\n category: 'layout',\n categoryLabel: 'Layout Blocks',\n description: 'Full-width single column container inside a section',\n icon: 'layout',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: { base: { padding: '40px 20px', width: '100%' } },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { maxWidth: '1200px', margin: '0 auto', width: '100%' } },\n children: [],\n },\n ],\n }),\n },\n {\n id: 'layout-2-col-50-50',\n name: '2 Columns (50/50)',\n category: 'layout',\n categoryLabel: 'Layout Blocks',\n description: 'Two equal-width 50/50 columns with flexible layout',\n icon: 'columns',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: { base: { padding: '40px 20px', width: '100%' } },\n children: [\n {\n id: gen('columns'),\n type: 'columns',\n props: { columns: 2, gap: '24px' },\n styles: { base: { display: 'flex', gap: '24px', width: '100%', maxWidth: '1200px', margin: '0 auto' } },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%', minWidth: '0' } },\n children: [],\n },\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%', minWidth: '0' } },\n children: [],\n },\n ],\n },\n ],\n }),\n },\n {\n id: 'layout-2-col-30-70',\n name: '2 Columns (30/70)',\n category: 'layout',\n categoryLabel: 'Layout Blocks',\n description: 'Two asymmetric columns: 30% sidebar and 70% main area',\n icon: 'columns',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: { base: { padding: '40px 20px', width: '100%' } },\n children: [\n {\n id: gen('columns'),\n type: 'columns',\n props: { columns: 2, gap: '24px' },\n styles: { base: { display: 'flex', gap: '24px', width: '100%', maxWidth: '1200px', margin: '0 auto' } },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '0 0 30%', minWidth: '0' } },\n children: [],\n },\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%', minWidth: '0' } },\n children: [],\n },\n ],\n },\n ],\n }),\n },\n {\n id: 'layout-3-col',\n name: '3 Columns',\n category: 'layout',\n categoryLabel: 'Layout Blocks',\n description: 'Three equal-width columns for grid showcases or card groups',\n icon: 'grid',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: { base: { padding: '40px 20px', width: '100%' } },\n children: [\n {\n id: gen('columns'),\n type: 'columns',\n props: { columns: 3, gap: '24px' },\n styles: { base: { display: 'flex', gap: '24px', width: '100%', maxWidth: '1200px', margin: '0 auto' } },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%', minWidth: '0' } },\n children: [],\n },\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%', minWidth: '0' } },\n children: [],\n },\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%', minWidth: '0' } },\n children: [],\n },\n ],\n },\n ],\n }),\n },\n {\n id: 'layout-4-col',\n name: '4 Columns',\n category: 'layout',\n categoryLabel: 'Layout Blocks',\n description: 'Four equal columns for metric stats, logos, or compact feature cards',\n icon: 'grid',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: { base: { padding: '40px 20px', width: '100%' } },\n children: [\n {\n id: gen('columns'),\n type: 'columns',\n props: { columns: 4, gap: '16px' },\n styles: { base: { display: 'flex', gap: '16px', width: '100%', maxWidth: '1200px', margin: '0 auto' } },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%', minWidth: '0' } },\n children: [],\n },\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%', minWidth: '0' } },\n children: [],\n },\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%', minWidth: '0' } },\n children: [],\n },\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%', minWidth: '0' } },\n children: [],\n },\n ],\n },\n ],\n }),\n },\n];\n\n","import { ResponsiveStyles } from '@kubuild/schema';\nimport { BlockDefinition, defaultGenId } from './types';\n\n/**\n * Pre-composed UI Blocks (STORA-242).\n */\nexport const UI_STARTER_BLOCKS: BlockDefinition[] = [\n {\n id: 'navbar',\n name: 'Navbar',\n category: 'sections',\n categoryLabel: 'Navigation & Headers',\n description: 'Responsive top navigation bar with brand logo, nav links, CTA button, and mobile hamburger menu',\n icon: 'layout',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: {\n base: {\n paddingTop: '16px',\n paddingBottom: '16px',\n paddingLeft: '24px',\n paddingRight: '24px',\n backgroundColor: '#ffffff',\n borderBottom: '1px solid #e2e8f0',\n width: '100%',\n },\n mobile: {\n paddingLeft: '16px',\n paddingRight: '16px',\n paddingTop: '12px',\n paddingBottom: '12px',\n },\n },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: {\n base: {\n maxWidth: '1200px',\n margin: '0 auto',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n width: '100%',\n flexWrap: 'wrap',\n },\n },\n children: [\n // 1. Brand Logo\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: 'Brand', level: 3 },\n styles: {\n base: {\n fontSize: '20px',\n fontWeight: '800',\n color: '#0f172a',\n margin: '0',\n },\n },\n },\n // 2. Desktop Navigation Links (hidden on mobile)\n {\n id: gen('flex'),\n type: 'flex',\n styles: {\n base: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: '24px',\n },\n mobile: {\n display: 'none',\n },\n },\n children: [\n {\n id: gen('link'),\n type: 'link',\n props: { text: 'Home', href: '#home' },\n styles: {\n base: {\n fontSize: '14px',\n fontWeight: '500',\n color: '#0f172a',\n textDecoration: 'none',\n },\n },\n },\n {\n id: gen('link'),\n type: 'link',\n props: { text: 'Features', href: '#features' },\n styles: {\n base: {\n fontSize: '14px',\n fontWeight: '500',\n color: '#64748b',\n textDecoration: 'none',\n },\n },\n },\n {\n id: gen('link'),\n type: 'link',\n props: { text: 'Pricing', href: '#pricing' },\n styles: {\n base: {\n fontSize: '14px',\n fontWeight: '500',\n color: '#64748b',\n textDecoration: 'none',\n },\n },\n },\n {\n id: gen('link'),\n type: 'link',\n props: { text: 'About', href: '#about' },\n styles: {\n base: {\n fontSize: '14px',\n fontWeight: '500',\n color: '#64748b',\n textDecoration: 'none',\n },\n },\n },\n ],\n },\n // 3. Desktop CTA Buttons (hidden on mobile)\n {\n id: gen('flex'),\n type: 'flex',\n styles: {\n base: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: '12px',\n },\n mobile: {\n display: 'none',\n },\n },\n children: [\n {\n id: gen('link'),\n type: 'link',\n props: { text: 'Sign In', href: '#signin' },\n styles: {\n base: {\n fontSize: '14px',\n fontWeight: '500',\n color: '#475569',\n textDecoration: 'none',\n padding: '8px 12px',\n },\n },\n },\n {\n id: gen('button'),\n type: 'button',\n props: { label: 'Get Started', href: '#signup' },\n styles: {\n base: {\n backgroundColor: '#2563eb',\n color: '#ffffff',\n padding: '8px 18px',\n borderRadius: '8px',\n fontSize: '14px',\n fontWeight: '600',\n display: 'inline-block',\n },\n states: {\n ':hover': { backgroundColor: '#1d4ed8' },\n },\n } as unknown as ResponsiveStyles,\n },\n ],\n },\n // 4. Mobile Hamburger Button (hidden on desktop, visible on mobile)\n {\n id: gen('button'),\n type: 'button',\n props: {\n label: '☰',\n activeLabel: '✕',\n isEditable: false,\n modalId: 'mobile-nav-drawer',\n ariaLabel: 'Toggle navigation menu',\n variant: 'secondary',\n },\n styles: {\n base: {\n display: 'none',\n },\n mobile: {\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '6px 12px',\n fontSize: '18px',\n backgroundColor: '#f8fafc',\n border: '1px solid #e2e8f0',\n borderRadius: '6px',\n color: '#0f172a',\n cursor: 'pointer',\n },\n },\n actions: [\n {\n id: gen('pipeline'),\n trigger: 'click',\n label: 'Toggle Mobile Menu',\n enabled: true,\n steps: [\n {\n id: gen('step'),\n type: 'open_modal',\n label: 'Toggle Navigation Drawer',\n payload: {\n modalId: 'mobile-nav-drawer',\n toggle: true,\n },\n },\n ],\n },\n ],\n },\n // 5. Mobile Navigation Dropdown (hidden on desktop, stacked on mobile)\n // A `collapsible`, not a plain flex: this is an in-flow disclosure that expands\n // inside the navbar (its width/border styles depend on staying there), so it must\n // not be treated as a floating overlay. The dedicated renderer also keeps it\n // visible while editing, so the menu's links stay reachable on the canvas, and\n // only honours the open/closed state at runtime.\n {\n id: gen('collapsible'),\n type: 'collapsible',\n props: {\n modalId: 'mobile-nav-drawer',\n ariaLabel: 'Mobile navigation menu',\n defaultOpen: false,\n animated: true,\n },\n styles: {\n base: {\n display: 'none',\n },\n mobile: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n gap: '8px',\n paddingTop: '16px',\n marginTop: '12px',\n borderTop: '1px solid #f1f5f9',\n },\n },\n children: [\n {\n id: gen('link'),\n type: 'link',\n props: { text: 'Home', href: '#home' },\n styles: {\n base: {\n fontSize: '14px',\n fontWeight: '500',\n color: '#0f172a',\n textDecoration: 'none',\n padding: '6px 0',\n },\n },\n },\n {\n id: gen('link'),\n type: 'link',\n props: { text: 'Features', href: '#features' },\n styles: {\n base: {\n fontSize: '14px',\n fontWeight: '500',\n color: '#64748b',\n textDecoration: 'none',\n padding: '6px 0',\n },\n },\n },\n {\n id: gen('link'),\n type: 'link',\n props: { text: 'Pricing', href: '#pricing' },\n styles: {\n base: {\n fontSize: '14px',\n fontWeight: '500',\n color: '#64748b',\n textDecoration: 'none',\n padding: '6px 0',\n },\n },\n },\n {\n id: gen('link'),\n type: 'link',\n props: { text: 'About', href: '#about' },\n styles: {\n base: {\n fontSize: '14px',\n fontWeight: '500',\n color: '#64748b',\n textDecoration: 'none',\n padding: '6px 0',\n },\n },\n },\n {\n id: gen('button'),\n type: 'button',\n props: { label: 'Get Started', href: '#signup' },\n styles: {\n base: {\n backgroundColor: '#2563eb',\n color: '#ffffff',\n padding: '10px 16px',\n borderRadius: '8px',\n fontSize: '14px',\n fontWeight: '600',\n textAlign: 'center',\n display: 'block',\n marginTop: '8px',\n },\n states: {\n ':hover': { backgroundColor: '#1d4ed8' },\n },\n } as unknown as ResponsiveStyles,\n },\n ],\n },\n ],\n },\n ],\n }),\n },\n {\n id: 'hero-section',\n name: 'Hero Section',\n category: 'sections',\n categoryLabel: 'Hero & Headers',\n description: 'Engaging hero banner with headline, lead paragraph, and call-to-action button',\n icon: 'layout',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: {\n base: {\n padding: '80px 24px',\n backgroundColor: '#f8fafc',\n textAlign: 'center',\n width: '100%',\n },\n },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { maxWidth: '768px', margin: '0 auto' } },\n children: [\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: 'Build Remarkable Experiences', level: 1 },\n styles: {\n base: {\n fontSize: '44px',\n fontWeight: '800',\n color: '#0f172a',\n marginBottom: '16px',\n lineHeight: '1.2',\n },\n },\n },\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: {\n text:\n 'A visual builder designed for maximum craft, responsiveness, and performance.',\n },\n styles: {\n base: {\n fontSize: '18px',\n color: '#475569',\n marginBottom: '32px',\n lineHeight: '1.6',\n },\n },\n },\n {\n id: gen('button'),\n type: 'button',\n props: { label: 'Get Started Today', href: '#explore' },\n styles: {\n base: {\n backgroundColor: '#2563eb',\n color: '#ffffff',\n padding: '12px 28px',\n borderRadius: '8px',\n fontWeight: '600',\n display: 'inline-block',\n },\n states: {\n ':hover': { backgroundColor: '#1d4ed8' },\n },\n } as unknown as ResponsiveStyles,\n },\n ],\n },\n ],\n }),\n },\n {\n id: 'feature-card',\n name: 'Feature Card',\n category: 'ui',\n categoryLabel: 'UI Blocks',\n description: 'Clean elevated feature card with badge, title, text, and action link',\n icon: 'box',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: {\n base: {\n padding: '24px',\n backgroundColor: '#ffffff',\n borderRadius: '12px',\n border: '1px solid #e2e8f0',\n boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.05)',\n },\n },\n children: [\n {\n id: gen('badge'),\n type: 'badge',\n props: { text: 'PRO FEATURE', variant: 'primary' },\n styles: { base: { marginBottom: '12px', display: 'inline-block' } },\n },\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: 'Next-Gen Performance', level: 3 },\n styles: {\n base: { fontSize: '20px', fontWeight: '700', color: '#1e293b', marginBottom: '8px' },\n },\n },\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: {\n text: 'Engineered for sub-millisecond render updates and zero runtime overhead.',\n },\n styles: { base: { fontSize: '14px', color: '#64748b', lineHeight: '1.5' } },\n },\n ],\n }),\n },\n {\n id: 'media-object',\n name: 'Media Object',\n category: 'ui',\n categoryLabel: 'UI Blocks',\n description: 'Horizontal media layout with image beside text content',\n icon: 'image',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: {\n base: {\n display: 'flex',\n gap: '16px',\n alignItems: 'flex-start',\n padding: '16px',\n backgroundColor: '#ffffff',\n borderRadius: '8px',\n border: '1px solid #e2e8f0',\n },\n },\n children: [\n {\n id: gen('image'),\n type: 'image',\n props: {\n src: 'https://images.unsplash.com/photo-1579546929518-9e396f3cc809?w=160&auto=format&fit=crop&q=80',\n alt: 'Visual preview',\n },\n styles: {\n base: {\n width: '80px',\n height: '80px',\n borderRadius: '8px',\n objectFit: 'cover',\n flexShrink: '0',\n },\n },\n },\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: { base: { flex: '1 1 0%' } },\n children: [\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: 'Creative Studio Asset', level: 4 },\n styles: {\n base: { fontSize: '16px', fontWeight: '600', color: '#0f172a', marginBottom: '4px' },\n },\n },\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: { text: 'High dynamic range gradients crafted for modern presentations.' },\n styles: { base: { fontSize: '13px', color: '#64748b', lineHeight: '1.4' } },\n },\n ],\n },\n ],\n }),\n },\n {\n id: 'pricing-table',\n name: 'Pricing Table',\n category: 'pricing',\n categoryLabel: 'Pricing',\n description: 'Highlighted subscription pricing plan with price, feature list, and buy button',\n icon: 'table',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: {\n base: {\n padding: '32px 24px',\n backgroundColor: '#ffffff',\n borderRadius: '16px',\n border: '2px solid #3b82f6',\n boxShadow: '0 10px 15px -3px rgba(59, 130, 246, 0.1)',\n textAlign: 'center',\n maxWidth: '360px',\n },\n },\n children: [\n {\n id: gen('badge'),\n type: 'badge',\n props: { text: 'MOST POPULAR', variant: 'primary' },\n styles: { base: { marginBottom: '12px', display: 'inline-block' } },\n },\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: 'Professional', level: 3 },\n styles: { base: { fontSize: '22px', fontWeight: '700', color: '#0f172a' } },\n },\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: '$29 / mo', level: 2 },\n styles: {\n base: { fontSize: '36px', fontWeight: '800', color: '#2563eb', margin: '16px 0 24px 0' },\n },\n },\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: { text: 'Includes unlimited pages, custom domains, and team collaboration.' },\n styles: { base: { fontSize: '14px', color: '#64748b', marginBottom: '24px' } },\n },\n {\n id: gen('button'),\n type: 'button',\n props: { label: 'Upgrade to Pro', href: '#checkout' },\n styles: {\n base: {\n width: '100%',\n backgroundColor: '#2563eb',\n color: '#ffffff',\n padding: '12px',\n borderRadius: '8px',\n fontWeight: '600',\n display: 'block',\n },\n states: {\n ':hover': { backgroundColor: '#1d4ed8' },\n },\n } as unknown as ResponsiveStyles,\n },\n ],\n }),\n },\n {\n id: 'cta-banner',\n name: 'CTA Banner',\n category: 'cta',\n categoryLabel: 'Call to Action',\n description: 'High-contrast conversion banner with title and action button',\n icon: 'layout',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: {\n base: {\n padding: '60px 24px',\n backgroundColor: '#0f172a',\n color: '#ffffff',\n borderRadius: '16px',\n textAlign: 'center',\n width: '100%',\n },\n },\n children: [\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: 'Ready to boost your workflow?', level: 2 },\n styles: {\n base: { fontSize: '32px', fontWeight: '700', color: '#ffffff', marginBottom: '12px' },\n },\n },\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: { text: 'Start building with zero installation and instant live preview.' },\n styles: {\n base: { fontSize: '16px', color: '#94a3b8', marginBottom: '24px', maxWidth: '600px', margin: '0 auto 24px auto' },\n },\n },\n {\n id: gen('button'),\n type: 'button',\n props: { label: 'Start Free Trial', href: '#signup' },\n styles: {\n base: {\n backgroundColor: '#ffffff',\n color: '#0f172a',\n padding: '12px 28px',\n borderRadius: '8px',\n fontWeight: '700',\n display: 'inline-block',\n },\n states: {\n ':hover': { backgroundColor: '#f1f5f9' },\n },\n } as unknown as ResponsiveStyles,\n },\n ],\n }),\n },\n];\n\n","import { ResponsiveStyles } from '@kubuild/schema';\nimport { BlockDefinition, defaultGenId } from './types';\n\n/**\n * Starter Form Templates (STORA-350).\n */\nexport const FORM_STARTER_BLOCKS: BlockDefinition[] = [\n {\n id: 'form-contact-us',\n name: 'Contact Us Form',\n category: 'forms',\n categoryLabel: 'Form Templates',\n description: 'Contact form with Name, Email, Subject, Message, and submit action pipeline with API request and toast notifications',\n icon: 'form',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: {\n base: {\n padding: '64px 20px',\n backgroundColor: '#f8fafc',\n width: '100%',\n },\n },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div', maxWidth: '640px' },\n styles: {\n base: {\n maxWidth: '640px',\n margin: '0 auto',\n width: '100%',\n backgroundColor: '#ffffff',\n padding: '36px',\n borderRadius: '16px',\n boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -2px rgba(0, 0, 0, 0.05)',\n border: '1px solid #e2e8f0',\n },\n },\n children: [\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: 'Contact Us', level: 2 },\n styles: {\n base: {\n fontSize: '28px',\n fontWeight: '700',\n color: '#0f172a',\n marginBottom: '8px',\n textAlign: 'center',\n },\n },\n },\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: {\n text: 'Have questions or need assistance? Fill out the form below and we will get back to you shortly.',\n },\n styles: {\n base: {\n fontSize: '15px',\n color: '#64748b',\n marginBottom: '28px',\n textAlign: 'center',\n lineHeight: '1.5',\n },\n },\n },\n {\n id: gen('form'),\n type: 'form',\n props: {\n name: 'contact_us_form',\n method: 'POST',\n preventDefault: true,\n scrollToFirstError: true,\n resetOnSubmit: true,\n },\n styles: {\n base: {\n display: 'flex',\n flexDirection: 'column',\n gap: '20px',\n width: '100%',\n },\n },\n actions: [\n {\n id: gen('pipeline'),\n trigger: 'submit',\n label: 'Submit Contact Form',\n enabled: true,\n steps: [\n {\n id: gen('step'),\n type: 'api_request',\n label: 'Send Contact Message',\n payload: {\n url: '/api/mock/submit-lead',\n method: 'POST',\n bodyFormat: 'json',\n },\n onSuccess: [\n {\n id: gen('step'),\n type: 'show_toast',\n label: 'Show Success Toast',\n payload: {\n message: 'Thank you! Your message has been sent successfully.',\n type: 'success',\n title: 'Message Sent',\n duration: 4000,\n },\n },\n {\n id: gen('step'),\n type: 'reset_form',\n label: 'Reset Form',\n payload: {},\n },\n ],\n onError: [\n {\n id: gen('step'),\n type: 'show_toast',\n label: 'Show Error Toast',\n payload: {\n message: 'Failed to send message. Please check your connection and try again.',\n type: 'error',\n title: 'Submission Failed',\n duration: 5000,\n },\n },\n ],\n },\n ],\n },\n ],\n children: [\n {\n id: gen('input'),\n type: 'input',\n props: {\n name: 'name',\n label: 'Your Name',\n type: 'text',\n placeholder: 'Jane Doe',\n required: true,\n rules: [\n { type: 'required', message: 'Please enter your name' },\n { type: 'min_length', value: 2, message: 'Name must be at least 2 characters' },\n ],\n },\n styles: {\n base: {\n width: '100%',\n padding: '10px 14px',\n borderRadius: '8px',\n border: '1px solid #cbd5e1',\n fontSize: '14px',\n },\n },\n },\n {\n id: gen('input'),\n type: 'input',\n props: {\n name: 'email',\n label: 'Email Address',\n type: 'email',\n placeholder: 'jane@example.com',\n required: true,\n rules: [\n { type: 'required', message: 'Please enter your email' },\n { type: 'email', message: 'Please enter a valid email address' },\n ],\n },\n styles: {\n base: {\n width: '100%',\n padding: '10px 14px',\n borderRadius: '8px',\n border: '1px solid #cbd5e1',\n fontSize: '14px',\n },\n },\n },\n {\n id: gen('input'),\n type: 'input',\n props: {\n name: 'subject',\n label: 'Subject',\n type: 'text',\n placeholder: 'How can we help you?',\n required: true,\n rules: [\n { type: 'required', message: 'Please enter a subject' },\n ],\n },\n styles: {\n base: {\n width: '100%',\n padding: '10px 14px',\n borderRadius: '8px',\n border: '1px solid #cbd5e1',\n fontSize: '14px',\n },\n },\n },\n {\n id: gen('textarea'),\n type: 'textarea',\n props: {\n name: 'message',\n label: 'Message',\n placeholder: 'Write your message here...',\n rows: 4,\n required: true,\n rules: [\n { type: 'required', message: 'Please enter your message' },\n { type: 'min_length', value: 10, message: 'Message must be at least 10 characters' },\n ],\n },\n styles: {\n base: {\n width: '100%',\n padding: '10px 14px',\n borderRadius: '8px',\n border: '1px solid #cbd5e1',\n fontSize: '14px',\n },\n },\n },\n {\n id: gen('button'),\n type: 'button',\n props: {\n label: 'Send Message',\n variant: 'primary',\n buttonType: 'submit',\n },\n styles: {\n base: {\n width: '100%',\n backgroundColor: '#2563eb',\n color: '#ffffff',\n padding: '12px',\n borderRadius: '8px',\n fontWeight: '600',\n fontSize: '15px',\n display: 'inline-block',\n textAlign: 'center',\n },\n states: {\n ':hover': { backgroundColor: '#1d4ed8' },\n },\n } as unknown as ResponsiveStyles,\n },\n ],\n },\n ],\n },\n ],\n }),\n },\n {\n id: 'form-newsletter',\n name: 'Newsletter Subscribe Form',\n category: 'forms',\n categoryLabel: 'Form Templates',\n description: 'Inline email newsletter subscription form with real-time feedback',\n icon: 'mail',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: {\n base: {\n padding: '48px 20px',\n backgroundColor: '#f1f5f9',\n width: '100%',\n },\n },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div', maxWidth: '580px' },\n styles: {\n base: {\n maxWidth: '580px',\n margin: '0 auto',\n width: '100%',\n textAlign: 'center',\n },\n },\n children: [\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: 'Stay in the Loop', level: 3 },\n styles: {\n base: {\n fontSize: '26px',\n fontWeight: '700',\n color: '#0f172a',\n marginBottom: '8px',\n },\n },\n },\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: {\n text: 'Subscribe to our newsletter for weekly curated insights, updates, and best practices.',\n },\n styles: {\n base: {\n fontSize: '15px',\n color: '#64748b',\n marginBottom: '24px',\n lineHeight: '1.5',\n },\n },\n },\n {\n id: gen('form'),\n type: 'form',\n props: {\n name: 'newsletter_form',\n method: 'POST',\n preventDefault: true,\n resetOnSubmit: true,\n },\n styles: {\n base: {\n display: 'flex',\n flexDirection: 'row',\n gap: '8px',\n alignItems: 'center',\n width: '100%',\n },\n mobile: {\n flexDirection: 'column',\n },\n },\n actions: [\n {\n id: gen('pipeline'),\n trigger: 'submit',\n label: 'Subscribe to Newsletter',\n enabled: true,\n steps: [\n {\n id: gen('step'),\n type: 'api_request',\n label: 'Submit Subscription',\n payload: {\n url: '/api/mock/submit-lead',\n method: 'POST',\n bodyFormat: 'json',\n },\n onSuccess: [\n {\n id: gen('step'),\n type: 'show_toast',\n label: 'Show Success Toast',\n payload: {\n message: 'Thank you for subscribing to our newsletter!',\n type: 'success',\n title: 'Subscription Confirmed',\n duration: 4000,\n },\n },\n {\n id: gen('step'),\n type: 'reset_form',\n label: 'Reset Form',\n payload: {},\n },\n ],\n onError: [\n {\n id: gen('step'),\n type: 'show_toast',\n label: 'Show Error Toast',\n payload: {\n message: 'Unable to subscribe right now. Please try again later.',\n type: 'error',\n title: 'Error',\n duration: 5000,\n },\n },\n ],\n },\n ],\n },\n ],\n children: [\n {\n id: gen('input'),\n type: 'input',\n props: {\n name: 'email',\n type: 'email',\n placeholder: 'Enter your email address...',\n required: true,\n rules: [\n { type: 'required', message: 'Email address is required' },\n { type: 'email', message: 'Please enter a valid email address' },\n ],\n },\n styles: {\n base: {\n flex: '1 1 0%',\n minWidth: '0',\n padding: '12px 16px',\n borderRadius: '8px',\n border: '1px solid #cbd5e1',\n backgroundColor: '#ffffff',\n fontSize: '14px',\n },\n },\n },\n {\n id: gen('button'),\n type: 'button',\n props: {\n label: 'Subscribe',\n variant: 'primary',\n buttonType: 'submit',\n },\n styles: {\n base: {\n backgroundColor: '#2563eb',\n color: '#ffffff',\n padding: '12px 24px',\n borderRadius: '8px',\n fontWeight: '600',\n fontSize: '14px',\n whiteSpace: 'nowrap',\n },\n states: {\n ':hover': { backgroundColor: '#1d4ed8' },\n },\n } as unknown as ResponsiveStyles,\n },\n ],\n },\n ],\n },\n ],\n }),\n },\n {\n id: 'form-lead-gen',\n name: 'Lead Generation Form',\n category: 'forms',\n categoryLabel: 'Form Templates',\n description: 'Multi-field lead generation form with phone validation, interest dropdown, and API submission pipeline',\n icon: 'users',\n createNodeTree: (gen = defaultGenId) => ({\n id: gen('section'),\n type: 'section',\n styles: {\n base: {\n padding: '64px 20px',\n backgroundColor: '#ffffff',\n width: '100%',\n },\n },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div', maxWidth: '640px' },\n styles: {\n base: {\n maxWidth: '640px',\n margin: '0 auto',\n width: '100%',\n backgroundColor: '#ffffff',\n padding: '36px',\n borderRadius: '16px',\n border: '1px solid #e2e8f0',\n boxShadow: '0 10px 25px -5px rgba(0, 0, 0, 0.05)',\n },\n },\n children: [\n {\n id: gen('badge'),\n type: 'badge',\n props: { text: 'FREE CONSULTATION', variant: 'primary' },\n styles: { base: { marginBottom: '12px', display: 'inline-block' } },\n },\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: 'Schedule a Consultation', level: 2 },\n styles: {\n base: {\n fontSize: '28px',\n fontWeight: '700',\n color: '#0f172a',\n marginBottom: '8px',\n },\n },\n },\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: {\n text: 'Share your project details with our solutions team. We will analyze your needs and provide a personalized roadmap.',\n },\n styles: {\n base: {\n fontSize: '15px',\n color: '#64748b',\n marginBottom: '28px',\n lineHeight: '1.5',\n },\n },\n },\n {\n id: gen('form'),\n type: 'form',\n props: {\n name: 'lead_generation_form',\n method: 'POST',\n preventDefault: true,\n scrollToFirstError: true,\n resetOnSubmit: true,\n },\n styles: {\n base: {\n display: 'flex',\n flexDirection: 'column',\n gap: '18px',\n width: '100%',\n },\n },\n actions: [\n {\n id: gen('pipeline'),\n trigger: 'submit',\n label: 'Submit Lead Form',\n enabled: true,\n steps: [\n {\n id: gen('step'),\n type: 'api_request',\n label: 'Send Lead Data',\n payload: {\n url: '/api/mock/submit-lead',\n method: 'POST',\n bodyFormat: 'json',\n },\n onSuccess: [\n {\n id: gen('step'),\n type: 'show_toast',\n label: 'Show Success Toast',\n payload: {\n message: 'Thank you! Your request has been received. Our team will contact you shortly.',\n type: 'success',\n title: 'Request Submitted',\n duration: 4000,\n },\n },\n {\n id: gen('step'),\n type: 'reset_form',\n label: 'Reset Form',\n payload: {},\n },\n ],\n onError: [\n {\n id: gen('step'),\n type: 'show_toast',\n label: 'Show Error Toast',\n payload: {\n message: 'Submission failed. Please verify your information and try again.',\n type: 'error',\n title: 'Submission Error',\n duration: 5000,\n },\n },\n ],\n },\n ],\n },\n ],\n children: [\n {\n id: gen('input'),\n type: 'input',\n props: {\n name: 'full_name',\n label: 'Full Name',\n type: 'text',\n placeholder: 'Alex Morgan',\n required: true,\n rules: [\n { type: 'required', message: 'Full name is required' },\n { type: 'min_length', value: 2, message: 'Name must be at least 2 characters' },\n ],\n },\n styles: {\n base: {\n width: '100%',\n padding: '10px 14px',\n borderRadius: '8px',\n border: '1px solid #cbd5e1',\n fontSize: '14px',\n },\n },\n },\n {\n id: gen('input'),\n type: 'input',\n props: {\n name: 'email',\n label: 'Business Email',\n type: 'email',\n placeholder: 'alex@company.com',\n required: true,\n rules: [\n { type: 'required', message: 'Business email is required' },\n { type: 'email', message: 'Please enter a valid email address' },\n ],\n },\n styles: {\n base: {\n width: '100%',\n padding: '10px 14px',\n borderRadius: '8px',\n border: '1px solid #cbd5e1',\n fontSize: '14px',\n },\n },\n },\n {\n id: gen('input'),\n type: 'input',\n props: {\n name: 'phone',\n label: 'Phone Number',\n type: 'tel',\n placeholder: '+62 812-3456-7890',\n required: true,\n rules: [\n { type: 'required', message: 'Phone number is required' },\n {\n type: 'custom_regex',\n value: '^[+]?[0-9\\\\s-()]{8,20}$',\n message: 'Please enter a valid phone number (min 8 digits)',\n },\n ],\n },\n styles: {\n base: {\n width: '100%',\n padding: '10px 14px',\n borderRadius: '8px',\n border: '1px solid #cbd5e1',\n fontSize: '14px',\n },\n },\n },\n {\n id: gen('select'),\n type: 'select',\n props: {\n name: 'interest',\n label: 'Area of Interest',\n placeholder: 'Select your interest / service...',\n required: true,\n defaultValue: '',\n options: [\n { label: 'Web Platform Development', value: 'web_platform' },\n { label: 'Mobile Application', value: 'mobile_app' },\n { label: 'Cloud Architecture & DevOps', value: 'cloud_devops' },\n { label: 'UI/UX Product Design', value: 'product_design' },\n { label: 'General Inquiry', value: 'general' },\n ],\n rules: [\n { type: 'required', message: 'Please select an area of interest' },\n ],\n },\n styles: {\n base: {\n width: '100%',\n padding: '10px 14px',\n borderRadius: '8px',\n border: '1px solid #cbd5e1',\n fontSize: '14px',\n backgroundColor: '#ffffff',\n },\n },\n },\n {\n id: gen('input'),\n type: 'input',\n props: {\n name: 'company',\n label: 'Company Name (Optional)',\n type: 'text',\n placeholder: 'Company / Organization',\n },\n styles: {\n base: {\n width: '100%',\n padding: '10px 14px',\n borderRadius: '8px',\n border: '1px solid #cbd5e1',\n fontSize: '14px',\n },\n },\n },\n {\n id: gen('button'),\n type: 'button',\n props: {\n label: 'Request Consultation',\n variant: 'primary',\n buttonType: 'submit',\n },\n styles: {\n base: {\n width: '100%',\n backgroundColor: '#2563eb',\n color: '#ffffff',\n padding: '12px 24px',\n borderRadius: '8px',\n fontWeight: '600',\n fontSize: '15px',\n marginTop: '4px',\n },\n states: {\n ':hover': { backgroundColor: '#1d4ed8' },\n },\n } as unknown as ResponsiveStyles,\n },\n ],\n },\n ],\n },\n ],\n }),\n },\n];\n\n","import { Node, ResponsiveStyles } from '@kubuild/schema';\nimport { BlockDefinition, defaultGenId } from './types';\n\ntype Gen = (prefix?: string) => string;\n\nconst SALES_CATEGORY = 'sales';\nconst SALES_CATEGORY_LABEL = 'Sales & Conversion';\n\n/** Full-width section wrapping a centered, max-width container. */\nfunction sectionShell(\n gen: Gen,\n children: Node[],\n sectionStyles: ResponsiveStyles = {},\n maxWidth = '960px',\n): Node {\n return {\n id: gen('section'),\n type: 'section',\n styles: {\n ...sectionStyles,\n base: {\n paddingTop: '64px',\n paddingBottom: '64px',\n paddingLeft: '24px',\n paddingRight: '24px',\n width: '100%',\n ...(sectionStyles.base ?? {}),\n },\n mobile: {\n paddingTop: '40px',\n paddingBottom: '40px',\n paddingLeft: '16px',\n paddingRight: '16px',\n ...(sectionStyles.mobile ?? {}),\n },\n },\n children: [\n {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: {\n base: {\n maxWidth,\n margin: '0 auto',\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n gap: '24px',\n },\n },\n children,\n },\n ],\n };\n}\n\nfunction sectionHeading(gen: Gen, text: string, subtitle?: string, color = '#0f172a'): Node[] {\n const nodes: Node[] = [\n {\n id: gen('heading'),\n type: 'heading',\n props: { text, level: 2 },\n styles: {\n base: { fontSize: '32px', fontWeight: '800', color, textAlign: 'center', margin: '0' },\n mobile: { fontSize: '26px' },\n },\n },\n ];\n if (subtitle) {\n nodes.push({\n id: gen('paragraph'),\n type: 'paragraph',\n props: { text: subtitle },\n styles: { base: { fontSize: '16px', color: '#64748b', textAlign: 'center', margin: '0' } },\n });\n }\n return nodes;\n}\n\nfunction faqItem(gen: Gen, question: string, answer: string): Node {\n return {\n id: gen('accordion-item'),\n type: 'accordion-item',\n props: { title: question },\n styles: { base: { borderBottom: '1px solid #e2e8f0' } },\n children: [\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: { text: answer },\n styles: { base: { fontSize: '15px', color: '#475569', margin: '0', lineHeight: '1.6' } },\n },\n ],\n };\n}\n\nfunction testimonialSlide(\n gen: Gen,\n quote: string,\n name: string,\n role: string,\n rating: number,\n): Node {\n return {\n id: gen('flex'),\n type: 'flex',\n styles: {\n base: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '16px',\n padding: '32px 48px',\n textAlign: 'center',\n },\n mobile: { padding: '24px 40px' },\n },\n children: [\n {\n id: gen('rating'),\n type: 'rating',\n props: { value: rating, max: 5, size: 20, color: '#f59e0b' },\n },\n {\n id: gen('blockquote'),\n type: 'blockquote',\n props: { text: quote },\n styles: {\n base: {\n fontSize: '18px',\n color: '#0f172a',\n fontStyle: 'italic',\n margin: '0',\n lineHeight: '1.6',\n },\n },\n },\n {\n id: gen('text'),\n type: 'text',\n props: { text: `${name} — ${role}` },\n styles: { base: { fontSize: '14px', fontWeight: '600', color: '#64748b' } },\n },\n ],\n };\n}\n\nfunction badgeItem(gen: Gen, iconName: string, label: string): Node {\n return {\n id: gen('flex'),\n type: 'flex',\n styles: {\n base: {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '8px',\n padding: '16px',\n textAlign: 'center',\n },\n },\n children: [\n {\n id: gen('icon'),\n type: 'icon',\n props: { name: iconName, size: 28, color: '#16a34a', ariaLabel: label },\n },\n {\n id: gen('text'),\n type: 'text',\n props: { text: label },\n styles: { base: { fontSize: '14px', fontWeight: '600', color: '#334155' } },\n },\n ],\n };\n}\n\nfunction planCard(\n gen: Gen,\n name: string,\n price: string,\n features: string[],\n highlighted: boolean,\n): Node {\n return {\n id: gen('container'),\n type: 'container',\n props: { tag: 'div' },\n styles: {\n base: {\n display: 'flex',\n flexDirection: 'column',\n gap: '12px',\n padding: '28px 24px',\n backgroundColor: '#ffffff',\n borderRadius: '16px',\n border: highlighted ? '2px solid #2563eb' : '1px solid #e2e8f0',\n },\n },\n children: [\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: name, level: 3 },\n styles: { base: { fontSize: '20px', fontWeight: '700', color: '#0f172a', margin: '0' } },\n },\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: price, level: 4 },\n styles: { base: { fontSize: '32px', fontWeight: '800', color: '#2563eb', margin: '0' } },\n },\n {\n id: gen('list'),\n type: 'list',\n props: { tag: 'ul', listStyleType: 'disc' },\n styles: { base: { fontSize: '14px', color: '#475569', paddingLeft: '20px', margin: '0' } },\n children: features.map((feature) => ({\n id: gen('list-item'),\n type: 'list-item',\n props: { text: feature },\n })),\n },\n {\n id: gen('button'),\n type: 'button',\n props: {\n label: `Choose ${name}`,\n href: '#checkout',\n variant: highlighted ? 'primary' : 'secondary',\n },\n styles: {\n base: {\n width: '100%',\n padding: '12px',\n borderRadius: '8px',\n fontWeight: '600',\n marginTop: '8px',\n },\n },\n },\n ],\n };\n}\n\nfunction planColumns(gen: Gen, plans: Array<[string, string, string[], boolean]>): Node {\n return {\n id: gen('columns'),\n type: 'columns',\n props: { columns: plans.length, gap: '16px' },\n styles: {\n base: {\n display: 'grid',\n gridTemplateColumns: `repeat(${plans.length}, minmax(0, 1fr))`,\n gap: '16px',\n },\n mobile: { gridTemplateColumns: 'repeat(1, minmax(0, 1fr))' },\n },\n children: plans.map(([name, price, features, highlighted]) =>\n planCard(gen, name, price, features, highlighted),\n ),\n };\n}\n\n/**\n * Sales / funnel section blocks (STORA-549) built on the Epic 60 conversion\n * components. Every tree is valid under `validateDocument` with `strictChildPolicy`.\n */\nexport const SALES_STARTER_BLOCKS: BlockDefinition[] = [\n {\n id: 'sales-faq',\n name: 'FAQ',\n category: SALES_CATEGORY,\n categoryLabel: SALES_CATEGORY_LABEL,\n description: 'Frequently asked questions accordion with FAQPage structured data for SEO',\n icon: 'chevron-down',\n createNodeTree: (gen = defaultGenId) =>\n sectionShell(\n gen,\n [\n ...sectionHeading(\n gen,\n 'Frequently Asked Questions',\n 'Everything you need to know before you buy.',\n ),\n {\n id: gen('accordion'),\n type: 'accordion',\n props: { allowMultiple: false, defaultOpenIndex: 0, icon: 'chevron', faqSchema: true },\n styles: {\n base: {\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n borderTop: '1px solid #e2e8f0',\n },\n },\n children: [\n faqItem(\n gen,\n 'What exactly do I get?',\n 'Instant access to the full program, all bonuses, and every future update.',\n ),\n faqItem(\n gen,\n 'How long do I have access?',\n 'Lifetime access — learn at your own pace, on any device.',\n ),\n faqItem(\n gen,\n 'Is there a money-back guarantee?',\n 'Yes. If you are not satisfied within 30 days, we refund you in full.',\n ),\n faqItem(\n gen,\n 'How do I pay?',\n 'We accept cards, bank transfer, and e-wallets through a secure checkout.',\n ),\n ],\n },\n ],\n {},\n '760px',\n ),\n },\n {\n id: 'sales-testimonials',\n name: 'Testimonials Carousel',\n category: SALES_CATEGORY,\n categoryLabel: SALES_CATEGORY_LABEL,\n description: 'Customer testimonial slider with star ratings',\n icon: 'star',\n createNodeTree: (gen = defaultGenId) =>\n sectionShell(\n gen,\n [\n ...sectionHeading(gen, 'What Our Customers Say'),\n {\n id: gen('carousel'),\n type: 'carousel',\n props: {\n autoplay: true,\n interval: 6000,\n loop: true,\n showDots: true,\n showArrows: true,\n ariaLabel: 'Testimonials',\n },\n styles: {\n base: {\n position: 'relative',\n width: '100%',\n overflow: 'hidden',\n backgroundColor: '#f8fafc',\n borderRadius: '16px',\n },\n },\n children: [\n testimonialSlide(\n gen,\n 'This completely changed how I run my business. Worth every cent.',\n 'Sarah K.',\n 'Founder',\n 5,\n ),\n testimonialSlide(\n gen,\n 'Clear, practical, and easy to follow. I saw results in the first week.',\n 'Budi S.',\n 'Marketing Lead',\n 4.5,\n ),\n testimonialSlide(\n gen,\n 'The support team is amazing and the material is top-notch.',\n 'Aisha R.',\n 'Freelancer',\n 5,\n ),\n ],\n },\n ],\n { base: { backgroundColor: '#ffffff' } },\n '760px',\n ),\n },\n {\n id: 'sales-countdown-banner',\n name: 'Countdown Banner',\n category: SALES_CATEGORY,\n categoryLabel: SALES_CATEGORY_LABEL,\n description: 'Limited-time offer banner with an evergreen countdown timer and CTA',\n icon: 'clock',\n createNodeTree: (gen = defaultGenId) =>\n sectionShell(\n gen,\n [\n ...sectionHeading(gen, 'Special Launch Price Ends Soon', undefined, '#ffffff'),\n {\n id: gen('countdown'),\n type: 'countdown',\n props: {\n mode: 'evergreen',\n durationMinutes: 30,\n format: 'd h m s',\n labelDays: 'Days',\n labelHours: 'Hours',\n labelMinutes: 'Minutes',\n labelSeconds: 'Seconds',\n expireBehavior: 'text',\n expiredText: 'The special price has ended.',\n storage: 'session',\n ariaLabel: 'Offer ends in',\n },\n styles: {\n base: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '16px',\n fontSize: '36px',\n fontWeight: '800',\n color: '#ffffff',\n fontVariantNumeric: 'tabular-nums',\n },\n mobile: { fontSize: '28px', gap: '8px' },\n },\n },\n {\n id: gen('button'),\n type: 'button',\n props: { label: 'Claim the Offer', href: '#checkout' },\n styles: {\n base: {\n alignSelf: 'center',\n backgroundColor: '#f59e0b',\n color: '#0f172a',\n padding: '14px 32px',\n borderRadius: '9999px',\n fontSize: '16px',\n fontWeight: '700',\n },\n },\n },\n ],\n { base: { backgroundColor: '#0f172a' } },\n ),\n },\n {\n id: 'sales-guarantee',\n name: 'Money-Back Guarantee',\n category: SALES_CATEGORY,\n categoryLabel: SALES_CATEGORY_LABEL,\n description: 'Risk-reversal guarantee section with shield icon',\n icon: 'badge',\n createNodeTree: (gen = defaultGenId) =>\n sectionShell(\n gen,\n [\n {\n id: gen('flex'),\n type: 'flex',\n styles: {\n base: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: '24px',\n padding: '32px',\n backgroundColor: '#f0fdf4',\n border: '2px dashed #16a34a',\n borderRadius: '16px',\n },\n mobile: { flexDirection: 'column', textAlign: 'center', padding: '24px' },\n },\n children: [\n {\n id: gen('icon'),\n type: 'icon',\n props: { name: 'shield-check', size: 64, color: '#16a34a', ariaLabel: 'Guarantee' },\n },\n {\n id: gen('flex'),\n type: 'flex',\n styles: { base: { display: 'flex', flexDirection: 'column', gap: '8px' } },\n children: [\n {\n id: gen('heading'),\n type: 'heading',\n props: { text: '30-Day Money-Back Guarantee', level: 3 },\n styles: {\n base: { fontSize: '22px', fontWeight: '800', color: '#14532d', margin: '0' },\n },\n },\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: {\n text: 'Try it risk-free. If it is not right for you, email us within 30 days and we will refund every cent — no questions asked.',\n },\n styles: {\n base: { fontSize: '15px', color: '#166534', margin: '0', lineHeight: '1.6' },\n },\n },\n ],\n },\n ],\n },\n ],\n {},\n '760px',\n ),\n },\n {\n id: 'sales-trust-badges',\n name: 'Trust Badges',\n category: SALES_CATEGORY,\n categoryLabel: SALES_CATEGORY_LABEL,\n description: 'Row of trust signals: secure payment, guarantee, support, and delivery',\n icon: 'grid',\n createNodeTree: (gen = defaultGenId) =>\n sectionShell(\n gen,\n [\n {\n id: gen('grid'),\n type: 'grid',\n styles: {\n base: {\n display: 'grid',\n gridTemplateColumns: 'repeat(4, minmax(0, 1fr))',\n gap: '16px',\n },\n mobile: { gridTemplateColumns: 'repeat(2, minmax(0, 1fr))' },\n },\n children: [\n badgeItem(gen, 'lock', 'Secure Payment'),\n badgeItem(gen, 'shield-check', 'Money-Back Guarantee'),\n badgeItem(gen, 'headphones', '24/7 Support'),\n badgeItem(gen, 'zap', 'Instant Access'),\n ],\n },\n {\n id: gen('divider'),\n type: 'divider',\n props: { lineStyle: 'solid', thickness: 1, color: '#e2e8f0', label: '' },\n },\n {\n id: gen('paragraph'),\n type: 'paragraph',\n props: { text: 'Trusted by 10,000+ customers.' },\n styles: {\n base: { fontSize: '14px', color: '#64748b', textAlign: 'center', margin: '0' },\n },\n },\n ],\n { base: { paddingTop: '32px', paddingBottom: '32px' } },\n ),\n },\n {\n id: 'sales-plan-comparison',\n name: 'Plan Comparison',\n category: SALES_CATEGORY,\n categoryLabel: SALES_CATEGORY_LABEL,\n description: 'Monthly/yearly tabs comparing pricing plans side by side',\n icon: 'columns',\n createNodeTree: (gen = defaultGenId) =>\n sectionShell(gen, [\n ...sectionHeading(gen, 'Choose Your Plan', 'Switch between monthly and yearly billing.'),\n {\n id: gen('tabs'),\n type: 'tabs',\n props: { activeIndex: 0, ariaLabel: 'Billing period' },\n styles: { base: { display: 'flex', flexDirection: 'column', width: '100%' } },\n children: [\n {\n id: gen('tab-panel'),\n type: 'tab-panel',\n props: { label: 'Monthly' },\n styles: { base: { paddingTop: '24px' } },\n children: [\n planColumns(gen, [\n ['Basic', '$19 / mo', ['1 project', 'Email support', 'Core features'], false],\n [\n 'Pro',\n '$49 / mo',\n ['Unlimited projects', 'Priority support', 'All features'],\n true,\n ],\n ]),\n ],\n },\n {\n id: gen('tab-panel'),\n type: 'tab-panel',\n props: { label: 'Yearly' },\n styles: { base: { paddingTop: '24px' } },\n children: [\n planColumns(gen, [\n [\n 'Basic',\n '$190 / yr',\n ['1 project', 'Email support', 'Core features', '2 months free'],\n false,\n ],\n [\n 'Pro',\n '$490 / yr',\n ['Unlimited projects', 'Priority support', 'All features', '2 months free'],\n true,\n ],\n ]),\n ],\n },\n ],\n },\n {\n id: gen('spacer'),\n type: 'spacer',\n styles: { base: { width: '100%', height: '16px' }, mobile: { height: '8px' } },\n },\n ]),\n },\n];\n","import { BlockDefinition } from './types';\nimport { LAYOUT_STARTER_BLOCKS } from './layout';\nimport { UI_STARTER_BLOCKS } from './sections';\nimport { FORM_STARTER_BLOCKS } from './forms';\nimport { SALES_STARTER_BLOCKS } from './sales';\n\nexport * from './types';\nexport * from './layout';\nexport * from './sections';\nexport * from './forms';\nexport * from './sales';\n\n/**\n * Predefined Starter Layout Blocks (STORA-241), Pre-composed UI Blocks (STORA-242),\n * Pre-composed Form Templates (STORA-350), and Sales / conversion sections (STORA-549).\n */\nexport const STARTER_BLOCKS: BlockDefinition[] = [\n ...LAYOUT_STARTER_BLOCKS,\n ...UI_STARTER_BLOCKS,\n ...FORM_STARTER_BLOCKS,\n ...SALES_STARTER_BLOCKS,\n];\n\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/traits/types.ts","../src/traits/common.ts","../src/traits/link.ts","../src/traits/media.ts","../src/traits/structure.ts","../src/traits/form.ts"],"sourcesContent":["/**\n * Trait metadata (STORA-210).\n *\n * A **trait** is a *functional* prop — it carries behavior, semantics, or\n * identity rather than pure visual styling. Examples: `href`, `target`, `alt`,\n * `title`, `placeholder`, `aria-label`, and a custom `id`.\n */\n\n/** The primitive data types a trait value can take. */\nexport type TraitType = 'string' | 'number' | 'boolean' | 'select';\n\n/** A constrained choice for `select`-typed traits. */\nexport interface TraitOption {\n label: string;\n value: unknown;\n}\n\n/**\n * Logical grouping used to organize traits in an inspector UI. Kept as a\n * closed union so hosts can render a stable, ordered set of trait sections.\n */\nexport type TraitGroup =\n | 'link'\n | 'media'\n | 'form'\n | 'accessibility'\n | 'identity'\n | 'behavior'\n | 'semantic';\n\n/** Ordered display order for trait groups in an inspector. */\nexport const TRAIT_GROUP_ORDER: TraitGroup[] = [\n 'identity',\n 'link',\n 'media',\n 'form',\n 'behavior',\n 'semantic',\n 'accessibility',\n];\n\n/** Human-readable labels for each trait group. */\nexport const TRAIT_GROUP_LABELS: Record<TraitGroup, string> = {\n identity: 'Identity',\n link: 'Link',\n media: 'Media',\n form: 'Form',\n behavior: 'Behavior',\n semantic: 'Semantic',\n accessibility: 'Accessibility',\n};\n\n/**\n * Metadata describing a single functional trait on a component.\n *\n * `name` is the prop key on the node's `props` object; `attribute` is the HTML\n * attribute it maps to at render time (when they differ, e.g. `name` → `id`).\n */\nexport interface ComponentTraitDefinition {\n /** Prop key on the node's `props` object (e.g. `'href'`, `'alt'`). */\n name: string;\n /** Human-readable label shown in the inspector. */\n label: string;\n /** Data type of the trait value. */\n type: TraitType;\n /** Default value applied when the trait is not set. */\n defaultValue?: unknown;\n /** Constrained choices for `select`-typed traits. */\n options?: TraitOption[];\n /** Short description of the trait's purpose. */\n description?: string;\n /** The HTML attribute this trait maps to at render time (e.g. `'href'`). */\n attribute?: string;\n /** Whether the trait must be present for the component to be valid. */\n required?: boolean;\n /** Logical grouping for inspector organization. */\n group?: TraitGroup;\n}\n\n/** Convenience alias for a list of trait definitions. */\nexport type ComponentTraits = ComponentTraitDefinition[];\n\n/**\n * Merge helper: applies partial overrides on top of a base trait definition.\n * Used by the factories below so callers can tweak label/default/group without\n * repeating the full shape.\n */\nexport function withOverrides(\n base: ComponentTraitDefinition,\n overrides?: Partial<ComponentTraitDefinition>,\n): ComponentTraitDefinition {\n return overrides ? { ...base, ...overrides } : base;\n}\n\n/**\n * Sort a component's traits into a stable, inspector-friendly order:\n * identity first, then the remaining groups in `TRAIT_GROUP_ORDER`, with\n * ungrouped traits last. Preserves relative order within each group.\n */\nexport function sortTraits(traits: ComponentTraits): ComponentTraits {\n const groupRank = (group?: TraitGroup): number => {\n if (!group) return Number.MAX_SAFE_INTEGER;\n const idx = TRAIT_GROUP_ORDER.indexOf(group);\n return idx === -1 ? Number.MAX_SAFE_INTEGER : idx;\n };\n return [...traits].sort((a, b) => groupRank(a.group) - groupRank(b.group));\n}\n\n/**\n * Collect the union of all trait names declared across a set of component\n * definitions. Useful for building a global trait catalog / search index.\n */\nexport function collectTraitNames(traitsList: ComponentTraits[]): string[] {\n const names = new Set<string>();\n for (const traits of traitsList) {\n for (const trait of traits) {\n names.add(trait.name);\n }\n }\n return Array.from(names);\n}\n\n","import { ComponentTraitDefinition, withOverrides } from './types';\n\n/** `id` — a custom, document-unique identifier for the element. */\nexport function idTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'id',\n label: 'Element ID',\n type: 'string',\n attribute: 'id',\n group: 'identity',\n description: 'A custom, document-unique identifier used for anchors, CSS, and scripting.',\n },\n overrides,\n );\n}\n\n/** `title` — advisory title shown on hover / used as a fallback label. */\nexport function titleTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'title',\n label: 'Title',\n type: 'string',\n attribute: 'title',\n group: 'semantic',\n description: 'Advisory title for the element (tooltip / document title).',\n },\n overrides,\n );\n}\n\n/** `aria-label` — accessible name for elements without visible text. */\nexport function ariaLabelTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'ariaLabel',\n label: 'Accessible Label (aria-label)',\n type: 'string',\n attribute: 'aria-label',\n group: 'accessibility',\n description: 'Accessible name for assistive technology when no visible label exists.',\n },\n overrides,\n );\n}\n\n","import { ComponentTraitDefinition, withOverrides } from './types';\n\n/** `href` — the destination URL for links, buttons, and form actions. */\nexport function hrefTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'href',\n label: 'Link URL',\n type: 'string',\n defaultValue: '#',\n attribute: 'href',\n group: 'link',\n description: 'The destination URL the element navigates to when activated.',\n },\n overrides,\n );\n}\n\n/** `target` — where the linked resource opens (`_self`, `_blank`, ...). */\nexport function targetTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'target',\n label: 'Open In',\n type: 'select',\n defaultValue: '_self',\n attribute: 'target',\n group: 'link',\n options: [\n { label: 'Same tab (_self)', value: '_self' },\n { label: 'New tab (_blank)', value: '_blank' },\n { label: 'Parent frame (_parent)', value: '_parent' },\n { label: 'Top frame (_top)', value: '_top' },\n ],\n description: 'Where the linked resource should open.',\n },\n overrides,\n );\n}\n\n/** `rel` — relationship between the current document and the linked resource. */\nexport function relTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'rel',\n label: 'Relationship (rel)',\n type: 'string',\n defaultValue: '',\n attribute: 'rel',\n group: 'link',\n description: 'Space-separated relationship tokens (e.g. \"noopener noreferrer\").',\n },\n overrides,\n );\n}\n\n","import { ComponentTraitDefinition, withOverrides } from './types';\n\n/** `src` — the source URL for media (image, video). */\nexport function srcTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'src',\n label: 'Source URL',\n type: 'string',\n attribute: 'src',\n group: 'media',\n required: true,\n description: 'The source URL of the media resource.',\n },\n overrides,\n );\n}\n\n/** `alt` — alternative text for media, required for accessibility. */\nexport function altTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'alt',\n label: 'Alt Text',\n type: 'string',\n attribute: 'alt',\n group: 'accessibility',\n required: true,\n description: 'Alternative text describing the media for screen readers and fallback.',\n },\n overrides,\n );\n}\n\n/** `poster` — a preview image shown before a video plays. */\nexport function posterTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'poster',\n label: 'Poster Image URL',\n type: 'string',\n attribute: 'poster',\n group: 'media',\n description: 'A preview image shown before the video starts playing.',\n },\n overrides,\n );\n}\n\n/** `controls` — whether native media controls are shown. */\nexport function controlsTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'controls',\n label: 'Show Controls',\n type: 'boolean',\n defaultValue: true,\n attribute: 'controls',\n group: 'media',\n description: 'Whether to show the native play/pause/volume controls.',\n },\n overrides,\n );\n}\n\n/** `autoplay` — whether media starts playing automatically. */\nexport function autoplayTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'autoplay',\n label: 'Autoplay',\n type: 'boolean',\n defaultValue: false,\n attribute: 'autoplay',\n group: 'media',\n description: 'Whether the media starts playing automatically on load.',\n },\n overrides,\n );\n}\n\n/** `loop` — whether media restarts from the beginning when it ends. */\nexport function loopTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'loop',\n label: 'Loop',\n type: 'boolean',\n defaultValue: false,\n attribute: 'loop',\n group: 'media',\n description: 'Whether the media restarts automatically when it reaches the end.',\n },\n overrides,\n );\n}\n\n/** `muted` — whether media starts with sound muted. */\nexport function mutedTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'muted',\n label: 'Muted',\n type: 'boolean',\n defaultValue: false,\n attribute: 'muted',\n group: 'media',\n description: 'Whether the media starts with the audio muted.',\n },\n overrides,\n );\n}\n\n/** `loading` — native lazy/eager loading hint for images (STORA-213). */\nexport function loadingTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'loading',\n label: 'Loading Mode',\n type: 'select',\n defaultValue: 'lazy',\n attribute: 'loading',\n group: 'media',\n options: [\n { label: 'Lazy (load when near viewport)', value: 'lazy' },\n { label: 'Eager (load immediately)', value: 'eager' },\n ],\n description: 'Native loading hint: lazy defers offscreen images, eager loads immediately.',\n },\n overrides,\n );\n}\n\n","import { ComponentTraitDefinition, withOverrides } from './types';\n\n/** `cite` — the source URL for a blockquote. */\nexport function citeTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'cite',\n label: 'Citation URL (cite)',\n type: 'string',\n attribute: 'cite',\n group: 'semantic',\n description: 'The URL of the source document the quote is taken from.',\n },\n overrides,\n );\n}\n\n/** `colSpan` — the number of columns a table cell spans. */\nexport function colSpanTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'colSpan',\n label: 'Column Span (colSpan)',\n type: 'number',\n defaultValue: 1,\n attribute: 'colspan',\n group: 'semantic',\n description: 'The number of columns the cell spans.',\n },\n overrides,\n );\n}\n\n/** `rowSpan` — the number of rows a table cell spans. */\nexport function rowSpanTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'rowSpan',\n label: 'Row Span (rowSpan)',\n type: 'number',\n defaultValue: 1,\n attribute: 'rowspan',\n group: 'semantic',\n description: 'The number of rows the cell spans.',\n },\n overrides,\n );\n}\n\n/** `tag` — the semantic HTML tag a component renders as (e.g. `ul`/`ol`, `td`/`th`). */\nexport function tagTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'tag',\n label: 'HTML Tag',\n type: 'select',\n attribute: 'tag',\n group: 'semantic',\n description: 'The semantic HTML tag the component renders as.',\n },\n overrides,\n );\n}\n\n","import { ComponentTraitDefinition, withOverrides } from './types';\n\n/** `placeholder` — hint text shown inside an empty form control. */\nexport function placeholderTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'placeholder',\n label: 'Placeholder',\n type: 'string',\n attribute: 'placeholder',\n group: 'form',\n description: 'Hint text shown inside the control when it is empty.',\n },\n overrides,\n );\n}\n\n/** `name` — the form field name submitted with the form data. */\nexport function fieldNameTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'name',\n label: 'Field Name',\n type: 'string',\n attribute: 'name',\n group: 'form',\n required: true,\n description: 'The name submitted with the form data for this field.',\n },\n overrides,\n );\n}\n\n/** `required` — whether the form field must be filled before submission. */\nexport function requiredTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'required',\n label: 'Required',\n type: 'boolean',\n defaultValue: false,\n attribute: 'required',\n group: 'form',\n description: 'Whether the field must be filled before the form can be submitted.',\n },\n overrides,\n );\n}\n\n/** `disabled` — whether the control is non-interactive. */\nexport function disabledTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'disabled',\n label: 'Disabled',\n type: 'boolean',\n defaultValue: false,\n attribute: 'disabled',\n group: 'behavior',\n description: 'Disables the control so it cannot be focused or activated.',\n },\n overrides,\n );\n}\n\n/** `readOnly` — whether the control value can be changed by the user. */\nexport function readOnlyTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'readOnly',\n label: 'Read Only',\n type: 'boolean',\n defaultValue: false,\n attribute: 'readonly',\n group: 'behavior',\n description: 'Prevents the user from modifying the control value.',\n },\n overrides,\n );\n}\n\n/** `action` — the URL a form submits to. */\nexport function actionTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'action',\n label: 'Action URL',\n type: 'string',\n attribute: 'action',\n group: 'form',\n description: 'The URL the form data is submitted to.',\n },\n overrides,\n );\n}\n\n/** `method` — the HTTP method a form uses to submit. */\nexport function methodTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'method',\n label: 'Method',\n type: 'select',\n defaultValue: 'POST',\n attribute: 'method',\n group: 'form',\n options: [\n { label: 'POST', value: 'POST' },\n { label: 'GET', value: 'GET' },\n ],\n description: 'The HTTP method used to submit the form.',\n },\n overrides,\n );\n}\n\n/** `autoComplete` — whether the browser may autofill the form. */\nexport function autoCompleteTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'autoComplete',\n label: 'Auto Complete',\n type: 'select',\n defaultValue: 'on',\n attribute: 'autocomplete',\n group: 'form',\n options: [\n { label: 'On', value: 'on' },\n { label: 'Off', value: 'off' },\n ],\n description: 'Whether the browser may autofill values for this form.',\n },\n overrides,\n );\n}\n\n/** `value` — the value submitted for a checkbox/radio when checked. */\nexport function valueTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'value',\n label: 'Value',\n type: 'string',\n attribute: 'value',\n group: 'form',\n description: 'The value submitted with the form data when the control is selected.',\n },\n overrides,\n );\n}\n\n/** `defaultChecked` — whether a checkbox/radio starts checked. */\nexport function defaultCheckedTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'defaultChecked',\n label: 'Default Checked',\n type: 'boolean',\n defaultValue: false,\n attribute: 'checked',\n group: 'form',\n description: 'Whether the control starts in the checked state.',\n },\n overrides,\n );\n}\n\n/** `defaultValue` — the initial value of a form control. */\nexport function defaultValueTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'defaultValue',\n label: 'Default Value',\n type: 'string',\n attribute: 'value',\n group: 'form',\n description: 'The initial value of the control before the user edits it.',\n },\n overrides,\n );\n}\n\n/** `rows` — the visible number of lines in a textarea. */\nexport function rowsTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'rows',\n label: 'Rows',\n type: 'number',\n defaultValue: 4,\n attribute: 'rows',\n group: 'form',\n description: 'The number of visible text lines in the textarea.',\n },\n overrides,\n );\n}\n\n/** `type` — the input type of a form control (text, email, number, ...). */\nexport function inputTypeTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'type',\n label: 'Input Type',\n type: 'select',\n defaultValue: 'text',\n attribute: 'type',\n group: 'form',\n description: 'The semantic input type of the control.',\n },\n overrides,\n );\n}\n\n/** `buttonType` — the button's form behavior (`button`, `submit`, `reset`). */\nexport function buttonTypeTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'buttonType',\n label: 'Button Type',\n type: 'select',\n defaultValue: 'button',\n attribute: 'type',\n group: 'form',\n options: [\n { label: 'Button', value: 'button' },\n { label: 'Submit Form (submit)', value: 'submit' },\n { label: 'Reset Form (reset)', value: 'reset' },\n ],\n description: 'The button’s behavior inside a form.',\n },\n overrides,\n );\n}\n\n/** `preventDefault` — whether the form intercepts the native submit and handles it in JS. */\nexport function preventDefaultTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'preventDefault',\n label: 'Prevent Default',\n type: 'boolean',\n defaultValue: true,\n group: 'form',\n description: 'Intercept the native browser submit and handle it via the KUBUILD action pipeline instead.',\n },\n overrides,\n );\n}\n\n/** `scrollToFirstError` — whether the form auto-scrolls to the first invalid field on submit. */\nexport function scrollToFirstErrorTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'scrollToFirstError',\n label: 'Scroll to First Error',\n type: 'boolean',\n defaultValue: true,\n group: 'form',\n description: 'Automatically scroll to and focus the first invalid field when submission fails validation.',\n },\n overrides,\n );\n}\n\n/** `resetOnSubmit` — whether the form resets all fields to their initial values after a successful submit. */\nexport function resetOnSubmitTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'resetOnSubmit',\n label: 'Reset on Submit',\n type: 'boolean',\n defaultValue: false,\n group: 'form',\n description: 'Reset all fields to their initial values after a successful form submission.',\n },\n overrides,\n );\n}\n\n/** `pattern` — a regex the field value must match for the input to be valid. */\nexport function patternTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'pattern',\n label: 'Pattern (regex)',\n type: 'string',\n attribute: 'pattern',\n group: 'form',\n description: 'A regular expression the input value must match to pass validation.',\n },\n overrides,\n );\n}\n\n/** `minLength` — the minimum number of characters required. */\nexport function minLengthTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'minLength',\n label: 'Min Length',\n type: 'number',\n attribute: 'minlength',\n group: 'form',\n description: 'The minimum number of characters the user must enter.',\n },\n overrides,\n );\n}\n\n/** `maxLength` — the maximum number of characters allowed. */\nexport function maxLengthTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'maxLength',\n label: 'Max Length',\n type: 'number',\n attribute: 'maxlength',\n group: 'form',\n description: 'The maximum number of characters the user is allowed to enter.',\n },\n overrides,\n );\n}\n\n/** `prefixIcon` — an icon name displayed before the input content (e.g. Lucide icon name). */\nexport function prefixIconTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'prefixIcon',\n label: 'Prefix Icon',\n type: 'string',\n group: 'form',\n description: 'Lucide icon name displayed before the input value (e.g. \"mail\", \"search\").',\n },\n overrides,\n );\n}\n\n/** `suffixIcon` — an icon name displayed after the input content (e.g. Lucide icon name). */\nexport function suffixIconTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'suffixIcon',\n label: 'Suffix Icon',\n type: 'string',\n group: 'form',\n description: 'Lucide icon name displayed after the input value (e.g. \"eye\", \"check\").',\n },\n overrides,\n );\n}\n\n/** `helperText` — a short hint displayed below the input describing its expected value. */\nexport function helperTextTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'helperText',\n label: 'Helper Text',\n type: 'string',\n group: 'form',\n description: 'A short message displayed below the input to guide the user (e.g. \"Must be at least 8 characters\").',\n },\n overrides,\n );\n}\n\n/** `resize` — the CSS resize behavior of a textarea. */\nexport function resizeTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'resize',\n label: 'Resize',\n type: 'select',\n defaultValue: 'vertical',\n group: 'form',\n options: [\n { label: 'Vertical only', value: 'vertical' },\n { label: 'Horizontal only', value: 'horizontal' },\n { label: 'Both', value: 'both' },\n { label: 'None', value: 'none' },\n ],\n description: 'Controls whether and how the user can resize the textarea.',\n },\n overrides,\n );\n}\n\n/** `autoGrow` — whether the textarea automatically grows in height as the user types. */\nexport function autoGrowTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'autoGrow',\n label: 'Auto Grow',\n type: 'boolean',\n defaultValue: false,\n group: 'form',\n description: 'Automatically expand the textarea height to fit the content without scrolling.',\n },\n overrides,\n );\n}\n\n/** `maxCharCount` — the maximum character count with a visible counter shown below the textarea. */\nexport function maxCharCountTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'maxCharCount',\n label: 'Max Character Count',\n type: 'number',\n group: 'form',\n description: 'Maximum character limit displayed as a counter below the textarea (e.g. \"120 / 500\").',\n },\n overrides,\n );\n}\n\n/** `optionsList` — the list of options for a select dropdown, each with a label and value. */\nexport function optionsListTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'options',\n label: 'Options',\n type: 'string',\n group: 'form',\n description: 'The list of dropdown options, each with a label and value. Editable via the inspector trait panel.',\n },\n overrides,\n );\n}\n\n/** `labelText` — the visible label text displayed next to a boolean control. */\nexport function labelTextTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'label',\n label: 'Label Text',\n type: 'string',\n group: 'form',\n description: 'The visible text label displayed alongside the control.',\n },\n overrides,\n );\n}\n\n/** `indeterminate` — whether the checkbox renders in the indeterminate (mixed) visual state. */\nexport function indeterminateTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'indeterminate',\n label: 'Indeterminate',\n type: 'boolean',\n defaultValue: false,\n group: 'form',\n description: 'Renders the checkbox in a mixed/indeterminate visual state (neither checked nor unchecked).',\n },\n overrides,\n );\n}\n\n/** `switchSize` — the visual size of a switch control. */\nexport function switchSizeTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'switchSize',\n label: 'Size',\n type: 'select',\n defaultValue: 'md',\n group: 'form',\n options: [\n { label: 'Small', value: 'sm' },\n { label: 'Medium', value: 'md' },\n { label: 'Large', value: 'lg' },\n ],\n description: 'The visual size of the switch toggle.',\n },\n overrides,\n );\n}\n\n/** `orientation` — the layout direction for a group of controls (horizontal or vertical). */\nexport function orientationTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'orientation',\n label: 'Orientation',\n type: 'select',\n defaultValue: 'vertical',\n group: 'form',\n options: [\n { label: 'Vertical', value: 'vertical' },\n { label: 'Horizontal', value: 'horizontal' },\n ],\n description: 'The layout direction of the child controls (vertical stack or horizontal row).',\n },\n overrides,\n );\n}\n\n/** `defaultSelected` — the initially selected value in a radio group. */\nexport function defaultSelectedTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'defaultSelected',\n label: 'Default Selected',\n type: 'string',\n group: 'form',\n description: 'The value of the radio item that is selected by default.',\n },\n overrides,\n );\n}\n\n/** `accept` — the allowed file MIME types or extensions (e.g. \"image/*,.pdf\"). */\nexport function acceptTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'accept',\n label: 'Accepted File Types',\n type: 'string',\n attribute: 'accept',\n defaultValue: '*/*',\n group: 'form',\n description: 'Comma-separated list of MIME types or file extensions accepted (e.g. \"image/*,.pdf,.docx\").',\n },\n overrides,\n );\n}\n\n/** `maxFileSize` — the maximum permitted file size in megabytes (MB). */\nexport function maxFileSizeTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'maxFileSize',\n label: 'Max File Size (MB)',\n type: 'number',\n defaultValue: 10,\n group: 'form',\n description: 'The maximum allowable file size in megabytes (MB).',\n },\n overrides,\n );\n}\n\n/** `multiple` — whether the user may select multiple files simultaneously. */\nexport function multipleTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'multiple',\n label: 'Allow Multiple Files',\n type: 'boolean',\n attribute: 'multiple',\n defaultValue: false,\n group: 'form',\n description: 'Allow multiple files to be selected and uploaded at once.',\n },\n overrides,\n );\n}\n\n/** `showPreview` — whether to render a thumbnail or list preview for selected files. */\nexport function showPreviewTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'showPreview',\n label: 'Show Preview',\n type: 'boolean',\n defaultValue: true,\n group: 'form',\n description: 'Display an interactive preview (image thumbnail or file list with badges) for selected files.',\n },\n overrides,\n );\n}\n\n/** `loadingText` — alternative label displayed while form is submitting. */\nexport function loadingTextTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'loadingText',\n label: 'Loading Text',\n type: 'string',\n defaultValue: 'Submitting...',\n group: 'behavior',\n description: 'Text displayed on the button while the form submission is in progress.',\n },\n overrides,\n );\n}\n\n/** `showSpinner` — whether an animated loading spinner is displayed during submission. */\nexport function showSpinnerTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'showSpinner',\n label: 'Show Loading Spinner',\n type: 'boolean',\n defaultValue: true,\n group: 'behavior',\n description: 'Automatically show an animated loading spinner icon while form is submitting.',\n },\n overrides,\n );\n}\n\n/** `autoDisableOnSubmit` — whether the submit button is automatically disabled during submission. */\nexport function autoDisableOnSubmitTrait(overrides?: Partial<ComponentTraitDefinition>): ComponentTraitDefinition {\n return withOverrides(\n {\n name: 'autoDisableOnSubmit',\n label: 'Auto Disable on Submit',\n type: 'boolean',\n defaultValue: true,\n group: 'behavior',\n description: 'Automatically disable the button to prevent duplicate submissions while the form is submitting.',\n },\n overrides,\n );\n}\n\n"],"mappings":"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","names":[]}
|