@kubuild/components 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/blocks/index.cjs +601 -12
  2. package/dist/blocks/index.cjs.map +1 -1
  3. package/dist/blocks/index.d.ts +2 -1
  4. package/dist/blocks/index.d.ts.map +1 -1
  5. package/dist/blocks/index.js +3 -1
  6. package/dist/blocks/sales.d.ts +7 -0
  7. package/dist/blocks/sales.d.ts.map +1 -0
  8. package/dist/canonical-props.d.ts +8 -0
  9. package/dist/canonical-props.d.ts.map +1 -0
  10. package/dist/{chunk-PWKMZYTC.js → chunk-CJN5OHHX.js} +596 -10
  11. package/dist/chunk-CJN5OHHX.js.map +1 -0
  12. package/dist/{chunk-JTQ35OQQ.js → chunk-DIZKTXJI.js} +601 -13
  13. package/dist/chunk-DIZKTXJI.js.map +1 -0
  14. package/dist/definitions/constants.d.ts.map +1 -1
  15. package/dist/definitions/conversion/accordion.d.ts +8 -0
  16. package/dist/definitions/conversion/accordion.d.ts.map +1 -0
  17. package/dist/definitions/conversion/carousel.d.ts +7 -0
  18. package/dist/definitions/conversion/carousel.d.ts.map +1 -0
  19. package/dist/definitions/conversion/countdown.d.ts +19 -0
  20. package/dist/definitions/conversion/countdown.d.ts.map +1 -0
  21. package/dist/definitions/conversion/divider.d.ts +9 -0
  22. package/dist/definitions/conversion/divider.d.ts.map +1 -0
  23. package/dist/definitions/conversion/index.d.ts +7 -0
  24. package/dist/definitions/conversion/index.d.ts.map +1 -0
  25. package/dist/definitions/conversion/rating.d.ts +7 -0
  26. package/dist/definitions/conversion/rating.d.ts.map +1 -0
  27. package/dist/definitions/conversion/tabs.d.ts +9 -0
  28. package/dist/definitions/conversion/tabs.d.ts.map +1 -0
  29. package/dist/definitions/form/button.d.ts.map +1 -1
  30. package/dist/definitions/index.cjs +746 -148
  31. package/dist/definitions/index.cjs.map +1 -1
  32. package/dist/definitions/index.d.ts +1 -0
  33. package/dist/definitions/index.d.ts.map +1 -1
  34. package/dist/definitions/index.js +27 -1
  35. package/dist/definitions/media/image.d.ts.map +1 -1
  36. package/dist/definitions/types.d.ts +4 -1
  37. package/dist/definitions/types.d.ts.map +1 -1
  38. package/dist/definitions/typography/badge.d.ts.map +1 -1
  39. package/dist/definitions/typography/blockquote.d.ts.map +1 -1
  40. package/dist/definitions/typography/heading.d.ts.map +1 -1
  41. package/dist/definitions/typography/link.d.ts.map +1 -1
  42. package/dist/definitions/typography/paragraph.d.ts.map +1 -1
  43. package/dist/definitions/typography/text.d.ts.map +1 -1
  44. package/dist/index.cjs +1417 -228
  45. package/dist/index.cjs.map +1 -1
  46. package/dist/index.d.ts +1 -0
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +32 -2
  49. package/dist/index.js.map +1 -1
  50. package/dist/registry.d.ts +12 -0
  51. package/dist/registry.d.ts.map +1 -1
  52. package/package.json +3 -3
  53. package/dist/chunk-JTQ35OQQ.js.map +0 -1
  54. package/dist/chunk-PWKMZYTC.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -4,4 +4,5 @@ export * from './requirements';
4
4
  export * from './prop-types';
5
5
  export * from './traits';
6
6
  export * from './blocks';
7
+ export * from './canonical-props';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AAEzB,cAAc,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -1,11 +1,19 @@
1
1
  import {
2
2
  CONTENT_CHILD_TYPES,
3
+ COUNTDOWN_EXPIRE_BEHAVIORS,
4
+ COUNTDOWN_FORMATS,
5
+ COUNTDOWN_MODES,
6
+ COUNTDOWN_STORAGE_TYPES,
3
7
  ComponentRegistry,
4
8
  LAYOUT_PARENTS,
9
+ accordionDefinition,
10
+ accordionItemDefinition,
5
11
  badgeDefinition,
6
12
  blockquoteDefinition,
7
13
  buttonDefinition,
8
14
  buttonSubmitDefinition,
15
+ canonicalTextPropFields,
16
+ carouselDefinition,
9
17
  checkboxDefinition,
10
18
  codeBlockDefinition,
11
19
  collapsibleDefinition,
@@ -13,7 +21,9 @@ import {
13
21
  columnsDefinition,
14
22
  containerDefinition,
15
23
  coreComponentDefinitions,
24
+ countdownDefinition,
16
25
  createDefaultComponentRegistry,
26
+ dividerDefinition,
17
27
  drawerDefinition,
18
28
  fileUploadDefinition,
19
29
  flexDefinition,
@@ -33,16 +43,20 @@ import {
33
43
  radioDefinition,
34
44
  radioGroupDefinition,
35
45
  radioItemDefinition,
46
+ ratingDefinition,
36
47
  sectionDefinition,
37
48
  selectDefinition,
49
+ spacerDefinition,
38
50
  switchDefinition,
51
+ tabPanelDefinition,
39
52
  tableCellDefinition,
40
53
  tableDefinition,
41
54
  tableRowDefinition,
55
+ tabsDefinition,
42
56
  textDefinition,
43
57
  textareaDefinition,
44
58
  videoDefinition
45
- } from "./chunk-PWKMZYTC.js";
59
+ } from "./chunk-CJN5OHHX.js";
46
60
  import {
47
61
  TRAIT_GROUP_LABELS,
48
62
  TRAIT_GROUP_ORDER,
@@ -110,10 +124,11 @@ import {
110
124
  import {
111
125
  FORM_STARTER_BLOCKS,
112
126
  LAYOUT_STARTER_BLOCKS,
127
+ SALES_STARTER_BLOCKS,
113
128
  STARTER_BLOCKS,
114
129
  UI_STARTER_BLOCKS,
115
130
  defaultGenId
116
- } from "./chunk-JTQ35OQQ.js";
131
+ } from "./chunk-DIZKTXJI.js";
117
132
 
118
133
  // src/requirements.ts
119
134
  function extractComponentRequirements(root, registry) {
@@ -156,15 +171,22 @@ function isBindableField(field) {
156
171
  }
157
172
  export {
158
173
  CONTENT_CHILD_TYPES,
174
+ COUNTDOWN_EXPIRE_BEHAVIORS,
175
+ COUNTDOWN_FORMATS,
176
+ COUNTDOWN_MODES,
177
+ COUNTDOWN_STORAGE_TYPES,
159
178
  ComponentRegistry,
160
179
  FORM_STARTER_BLOCKS,
161
180
  LAYOUT_PARENTS,
162
181
  LAYOUT_STARTER_BLOCKS,
182
+ SALES_STARTER_BLOCKS,
163
183
  STARTER_BLOCKS,
164
184
  TRAIT_GROUP_LABELS,
165
185
  TRAIT_GROUP_ORDER,
166
186
  UI_STARTER_BLOCKS,
167
187
  acceptTrait,
188
+ accordionDefinition,
189
+ accordionItemDefinition,
168
190
  actionTrait,
169
191
  altTrait,
170
192
  ariaLabelTrait,
@@ -177,6 +199,8 @@ export {
177
199
  buttonDefinition,
178
200
  buttonSubmitDefinition,
179
201
  buttonTypeTrait,
202
+ canonicalTextPropFields,
203
+ carouselDefinition,
180
204
  checkboxDefinition,
181
205
  citeTrait,
182
206
  codeBlockDefinition,
@@ -188,12 +212,14 @@ export {
188
212
  containerDefinition,
189
213
  controlsTrait,
190
214
  coreComponentDefinitions,
215
+ countdownDefinition,
191
216
  createDefaultComponentRegistry,
192
217
  defaultCheckedTrait,
193
218
  defaultGenId,
194
219
  defaultSelectedTrait,
195
220
  defaultValueTrait,
196
221
  disabledTrait,
222
+ dividerDefinition,
197
223
  drawerDefinition,
198
224
  extractComponentRequirements,
199
225
  fieldNameTrait,
@@ -240,6 +266,7 @@ export {
240
266
  radioDefinition,
241
267
  radioGroupDefinition,
242
268
  radioItemDefinition,
269
+ ratingDefinition,
243
270
  readOnlyTrait,
244
271
  relTrait,
245
272
  requiredTrait,
@@ -253,13 +280,16 @@ export {
253
280
  showPreviewTrait,
254
281
  showSpinnerTrait,
255
282
  sortTraits,
283
+ spacerDefinition,
256
284
  srcTrait,
257
285
  suffixIconTrait,
258
286
  switchDefinition,
259
287
  switchSizeTrait,
288
+ tabPanelDefinition,
260
289
  tableCellDefinition,
261
290
  tableDefinition,
262
291
  tableRowDefinition,
292
+ tabsDefinition,
263
293
  tagTrait,
264
294
  targetTrait,
265
295
  textDefinition,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/requirements.ts","../src/prop-types.ts"],"sourcesContent":["import { Node } from '@kubuild/schema';\nimport { ComponentRegistry } from './registry';\n\nexport interface ComponentRequirements {\n requiredComponents: string[];\n requiredCapabilities: string[];\n}\n\n/**\n * Walks a node tree and extracts the custom component types and runtime\n * capabilities it depends on, in the shape expected by `@kubuild/schema`'s\n * `ManifestSchema` (`requiredComponents`/`requiredCapabilities`).\n *\n * Built-in/core component types are never listed in `requiredComponents` —\n * they ship with `kubuild` and are always available. Only types whose\n * registered definition has `category: 'custom'` are considered a real\n * requirement a host must satisfy before it can render/import the document.\n */\nexport function extractComponentRequirements(\n root: Node,\n registry: ComponentRegistry,\n): ComponentRequirements {\n const requiredComponents = new Set<string>();\n const requiredCapabilities = new Set<string>();\n\n const visit = (node: Node): void => {\n const definition = registry.get(node.type);\n\n if (definition?.category === 'custom') {\n requiredComponents.add(node.type);\n }\n for (const capability of definition?.capabilities ?? []) {\n requiredCapabilities.add(capability);\n }\n\n node.children?.forEach(visit);\n };\n\n visit(root);\n\n return {\n requiredComponents: Array.from(requiredComponents),\n requiredCapabilities: Array.from(requiredCapabilities),\n };\n}\n","import { ComponentFieldDefinition } from './registry';\n\nexport type PropPrimitiveType = 'string' | 'number' | 'boolean';\n\n/**\n * Maps inspector field types to the primitive type a binding must resolve to.\n * 'select' | 'image' | 'action' | 'json' are excluded — they carry structured\n * or choice-constrained values that a plain variable binding can't safely satisfy.\n */\nexport function primitiveTypeForField(field: ComponentFieldDefinition): PropPrimitiveType | undefined {\n switch (field.type) {\n case 'string':\n case 'textarea':\n case 'color':\n return 'string';\n case 'number':\n return 'number';\n case 'boolean':\n return 'boolean';\n default:\n return undefined;\n }\n}\n\nexport function isBindableField(field: ComponentFieldDefinition): boolean {\n return primitiveTypeForField(field) !== undefined;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBO,SAAS,6BACd,MACA,UACuB;AACvB,QAAM,qBAAqB,oBAAI,IAAY;AAC3C,QAAM,uBAAuB,oBAAI,IAAY;AAE7C,QAAM,QAAQ,CAAC,SAAqB;AAClC,UAAM,aAAa,SAAS,IAAI,KAAK,IAAI;AAEzC,QAAI,YAAY,aAAa,UAAU;AACrC,yBAAmB,IAAI,KAAK,IAAI;AAAA,IAClC;AACA,eAAW,cAAc,YAAY,gBAAgB,CAAC,GAAG;AACvD,2BAAqB,IAAI,UAAU;AAAA,IACrC;AAEA,SAAK,UAAU,QAAQ,KAAK;AAAA,EAC9B;AAEA,QAAM,IAAI;AAEV,SAAO;AAAA,IACL,oBAAoB,MAAM,KAAK,kBAAkB;AAAA,IACjD,sBAAsB,MAAM,KAAK,oBAAoB;AAAA,EACvD;AACF;;;ACnCO,SAAS,sBAAsB,OAAgE;AACpG,UAAQ,MAAM,MAAM;AAAA,IAClB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEO,SAAS,gBAAgB,OAA0C;AACxE,SAAO,sBAAsB,KAAK,MAAM;AAC1C;","names":[]}
1
+ {"version":3,"sources":["../src/requirements.ts","../src/prop-types.ts"],"sourcesContent":["import { Node } from '@kubuild/schema';\nimport { ComponentRegistry } from './registry';\n\nexport interface ComponentRequirements {\n requiredComponents: string[];\n requiredCapabilities: string[];\n}\n\n/**\n * Walks a node tree and extracts the custom component types and runtime\n * capabilities it depends on, in the shape expected by `@kubuild/schema`'s\n * `ManifestSchema` (`requiredComponents`/`requiredCapabilities`).\n *\n * Built-in/core component types are never listed in `requiredComponents` —\n * they ship with `kubuild` and are always available. Only types whose\n * registered definition has `category: 'custom'` are considered a real\n * requirement a host must satisfy before it can render/import the document.\n */\nexport function extractComponentRequirements(\n root: Node,\n registry: ComponentRegistry,\n): ComponentRequirements {\n const requiredComponents = new Set<string>();\n const requiredCapabilities = new Set<string>();\n\n const visit = (node: Node): void => {\n const definition = registry.get(node.type);\n\n if (definition?.category === 'custom') {\n requiredComponents.add(node.type);\n }\n for (const capability of definition?.capabilities ?? []) {\n requiredCapabilities.add(capability);\n }\n\n node.children?.forEach(visit);\n };\n\n visit(root);\n\n return {\n requiredComponents: Array.from(requiredComponents),\n requiredCapabilities: Array.from(requiredCapabilities),\n };\n}\n","import { ComponentFieldDefinition } from './registry';\n\nexport type PropPrimitiveType = 'string' | 'number' | 'boolean';\n\n/**\n * Maps inspector field types to the primitive type a binding must resolve to.\n * 'select' | 'image' | 'action' | 'json' are excluded — they carry structured\n * or choice-constrained values that a plain variable binding can't safely satisfy.\n */\nexport function primitiveTypeForField(field: ComponentFieldDefinition): PropPrimitiveType | undefined {\n switch (field.type) {\n case 'string':\n case 'textarea':\n case 'color':\n return 'string';\n case 'number':\n return 'number';\n case 'boolean':\n return 'boolean';\n default:\n return undefined;\n }\n}\n\nexport function isBindableField(field: ComponentFieldDefinition): boolean {\n return primitiveTypeForField(field) !== undefined;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBO,SAAS,6BACd,MACA,UACuB;AACvB,QAAM,qBAAqB,oBAAI,IAAY;AAC3C,QAAM,uBAAuB,oBAAI,IAAY;AAE7C,QAAM,QAAQ,CAAC,SAAqB;AAClC,UAAM,aAAa,SAAS,IAAI,KAAK,IAAI;AAEzC,QAAI,YAAY,aAAa,UAAU;AACrC,yBAAmB,IAAI,KAAK,IAAI;AAAA,IAClC;AACA,eAAW,cAAc,YAAY,gBAAgB,CAAC,GAAG;AACvD,2BAAqB,IAAI,UAAU;AAAA,IACrC;AAEA,SAAK,UAAU,QAAQ,KAAK;AAAA,EAC9B;AAEA,QAAM,IAAI;AAEV,SAAO;AAAA,IACL,oBAAoB,MAAM,KAAK,kBAAkB;AAAA,IACjD,sBAAsB,MAAM,KAAK,oBAAoB;AAAA,EACvD;AACF;;;ACnCO,SAAS,sBAAsB,OAAgE;AACpG,UAAQ,MAAM,MAAM;AAAA,IAClB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEO,SAAS,gBAAgB,OAA0C;AACxE,SAAO,sBAAsB,KAAK,MAAM;AAC1C;","names":[]}
@@ -68,6 +68,18 @@ export interface ComponentDefinition<TRenderer = unknown> {
68
68
  * everything a document needs before accepting it.
69
69
  */
70
70
  capabilities?: string[];
71
+ /**
72
+ * STORA-550: the single canonical prop holding this component's visible text
73
+ * (e.g. `text` for heading/paragraph, `label` for button). Templates, hosts and the
74
+ * editor's inline editing must write this name.
75
+ */
76
+ canonicalTextProp?: string;
77
+ /**
78
+ * STORA-550: deprecated alias -> canonical prop name. The renderer still reads an alias
79
+ * for one minor version (emitting a `DEPRECATED_PROP` diagnostic) and `migrateDocument`
80
+ * (`1.1.0 -> 1.2.0`) renames it. Sourced from `CANONICAL_TEXT_PROPS` in `@kubuild/schema`.
81
+ */
82
+ deprecatedPropAliases?: Record<string, string>;
71
83
  }
72
84
  export declare class ComponentRegistry<TRenderer = unknown> {
73
85
  private components;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubuild/components",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "description": "Component registry and base definitions for KUBUILD",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -55,8 +55,8 @@
55
55
  },
56
56
  "homepage": "https://github.com/kustora/kubuild#readme",
57
57
  "dependencies": {
58
- "@kubuild/schema": "0.6.0",
59
- "@kubuild/core": "0.6.0"
58
+ "@kubuild/core": "0.8.0",
59
+ "@kubuild/schema": "0.8.0"
60
60
  },
61
61
  "devDependencies": {
62
62
  "tsup": "^8.3.6",
@@ -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/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 content:\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: { label: '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 content: '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: { content: '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: { label: '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: { content: '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: { content: '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 content: '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 content: '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: { label: '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 content: '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 { BlockDefinition } from './types';\nimport { LAYOUT_STARTER_BLOCKS } from './layout';\nimport { UI_STARTER_BLOCKS } from './sections';\nimport { FORM_STARTER_BLOCKS } from './forms';\n\nexport * from './types';\nexport * from './layout';\nexport * from './sections';\nexport * from './forms';\n\n/**\n * Predefined Starter Layout Blocks (STORA-241), Pre-composed UI Blocks (STORA-242),\n * and Pre-composed Form Templates (STORA-350).\n */\nexport const STARTER_BLOCKS: BlockDefinition[] = [\n ...LAYOUT_STARTER_BLOCKS,\n ...UI_STARTER_BLOCKS,\n ...FORM_STARTER_BLOCKS,\n];\n\n"],"mappings":"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","names":[]}