@electroplix/components 0.4.1 → 0.5.0-alpha.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.
Files changed (173) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/LICENSE +21 -0
  3. package/README.md +88 -474
  4. package/SECURITY.md +19 -0
  5. package/cli.cjs +510 -485
  6. package/dist/config.d.ts +73 -0
  7. package/dist/config.esm.js +229 -0
  8. package/dist/index.esm.js +6531 -6668
  9. package/dist/package.json +97 -0
  10. package/dist/src/components/blog/index.d.ts +5 -5
  11. package/dist/src/components/blog/index.d.ts.map +1 -1
  12. package/dist/src/components/buttons/index.d.ts +38 -8
  13. package/dist/src/components/buttons/index.d.ts.map +1 -1
  14. package/dist/src/components/content/BlockquoteTestimonial.d.ts +1 -1
  15. package/dist/src/components/content/BlockquoteTestimonial.d.ts.map +1 -1
  16. package/dist/src/components/content/CalloutBox.d.ts +4 -3
  17. package/dist/src/components/content/CalloutBox.d.ts.map +1 -1
  18. package/dist/src/components/content/HeadingSection.d.ts +2 -2
  19. package/dist/src/components/content/HeadingSection.d.ts.map +1 -1
  20. package/dist/src/components/content/InlineCodeText.d.ts +4 -3
  21. package/dist/src/components/content/InlineCodeText.d.ts.map +1 -1
  22. package/dist/src/components/content/ParagraphBlock.d.ts +5 -4
  23. package/dist/src/components/content/ParagraphBlock.d.ts.map +1 -1
  24. package/dist/src/components/content/RichMarkdown.d.ts +4 -3
  25. package/dist/src/components/content/RichMarkdown.d.ts.map +1 -1
  26. package/dist/src/components/content/TeamGrid.d.ts.map +1 -1
  27. package/dist/src/components/content/index.d.ts +7 -7
  28. package/dist/src/components/content/index.d.ts.map +1 -1
  29. package/dist/src/components/data-display/Badge.d.ts +5 -4
  30. package/dist/src/components/data-display/Badge.d.ts.map +1 -1
  31. package/dist/src/components/data-display/BadgeGroup.d.ts +4 -3
  32. package/dist/src/components/data-display/BadgeGroup.d.ts.map +1 -1
  33. package/dist/src/components/data-display/BarChart.d.ts.map +1 -1
  34. package/dist/src/components/data-display/CalendarGrid.d.ts +1 -1
  35. package/dist/src/components/data-display/CalendarGrid.d.ts.map +1 -1
  36. package/dist/src/components/data-display/DataTable.d.ts +3 -3
  37. package/dist/src/components/data-display/DataTable.d.ts.map +1 -1
  38. package/dist/src/components/data-display/LineChart.d.ts.map +1 -1
  39. package/dist/src/components/data-display/PieChart.d.ts +1 -1
  40. package/dist/src/components/data-display/PieChart.d.ts.map +1 -1
  41. package/dist/src/components/data-display/ProgressBar.d.ts.map +1 -1
  42. package/dist/src/components/data-display/RatingStars.d.ts.map +1 -1
  43. package/dist/src/components/data-display/Sparkline.d.ts.map +1 -1
  44. package/dist/src/components/data-display/Timeline.d.ts +1 -1
  45. package/dist/src/components/data-display/Timeline.d.ts.map +1 -1
  46. package/dist/src/components/data-display/index.d.ts +11 -11
  47. package/dist/src/components/data-display/index.d.ts.map +1 -1
  48. package/dist/src/components/ecommerce/index.d.ts +8 -8
  49. package/dist/src/components/ecommerce/index.d.ts.map +1 -1
  50. package/dist/src/components/forms/AddressAutocomplete.d.ts +1 -1
  51. package/dist/src/components/forms/AddressAutocomplete.d.ts.map +1 -1
  52. package/dist/src/components/forms/Captcha.d.ts +2 -2
  53. package/dist/src/components/forms/Captcha.d.ts.map +1 -1
  54. package/dist/src/components/forms/ContactForm.d.ts +1 -1
  55. package/dist/src/components/forms/ContactForm.d.ts.map +1 -1
  56. package/dist/src/components/forms/DateTimePicker.d.ts +2 -2
  57. package/dist/src/components/forms/DateTimePicker.d.ts.map +1 -1
  58. package/dist/src/components/forms/FileUploader.d.ts +1 -1
  59. package/dist/src/components/forms/FileUploader.d.ts.map +1 -1
  60. package/dist/src/components/forms/FormShell.d.ts +1 -1
  61. package/dist/src/components/forms/FormShell.d.ts.map +1 -1
  62. package/dist/src/components/forms/InputField.d.ts +1 -1
  63. package/dist/src/components/forms/InputField.d.ts.map +1 -1
  64. package/dist/src/components/forms/MultiStepWizard.d.ts +1 -1
  65. package/dist/src/components/forms/MultiStepWizard.d.ts.map +1 -1
  66. package/dist/src/components/forms/NewsletterSignup.d.ts +1 -1
  67. package/dist/src/components/forms/NewsletterSignup.d.ts.map +1 -1
  68. package/dist/src/components/forms/RadioGroup.d.ts +1 -1
  69. package/dist/src/components/forms/RadioGroup.d.ts.map +1 -1
  70. package/dist/src/components/forms/SelectDropdown.d.ts +1 -1
  71. package/dist/src/components/forms/SelectDropdown.d.ts.map +1 -1
  72. package/dist/src/components/forms/TextAreaField.d.ts +1 -1
  73. package/dist/src/components/forms/TextAreaField.d.ts.map +1 -1
  74. package/dist/src/components/forms/ToggleSwitch.d.ts +1 -1
  75. package/dist/src/components/forms/ToggleSwitch.d.ts.map +1 -1
  76. package/dist/src/components/forms/ValidationWrapper.d.ts +1 -1
  77. package/dist/src/components/forms/ValidationWrapper.d.ts.map +1 -1
  78. package/dist/src/components/forms/index.d.ts +28 -28
  79. package/dist/src/components/forms/index.d.ts.map +1 -1
  80. package/dist/src/components/hero/CTAOverlayHero.d.ts +1 -1
  81. package/dist/src/components/hero/CTAOverlayHero.d.ts.map +1 -1
  82. package/dist/src/components/hero/CarouselHero.d.ts +1 -1
  83. package/dist/src/components/hero/CarouselHero.d.ts.map +1 -1
  84. package/dist/src/components/hero/HeroShell.d.ts +1 -1
  85. package/dist/src/components/hero/HeroShell.d.ts.map +1 -1
  86. package/dist/src/components/hero/PatternedHero.d.ts +2 -2
  87. package/dist/src/components/hero/PatternedHero.d.ts.map +1 -1
  88. package/dist/src/components/hero/SplitHero.d.ts +1 -1
  89. package/dist/src/components/hero/SplitHero.d.ts.map +1 -1
  90. package/dist/src/components/hero/StaticHero.d.ts +2 -2
  91. package/dist/src/components/hero/StaticHero.d.ts.map +1 -1
  92. package/dist/src/components/hero/VideoHeaderHero.d.ts +1 -1
  93. package/dist/src/components/hero/VideoHeaderHero.d.ts.map +1 -1
  94. package/dist/src/components/hero/index.d.ts +14 -14
  95. package/dist/src/components/hero/index.d.ts.map +1 -1
  96. package/dist/src/components/lists-cards/index.d.ts +7 -7
  97. package/dist/src/components/lists-cards/index.d.ts.map +1 -1
  98. package/dist/src/components/marketing/index.d.ts +5 -5
  99. package/dist/src/components/marketing/index.d.ts.map +1 -1
  100. package/dist/src/components/media/index.d.ts +7 -7
  101. package/dist/src/components/media/index.d.ts.map +1 -1
  102. package/dist/src/components/miscellaneous/index.d.ts +4 -4
  103. package/dist/src/components/miscellaneous/index.d.ts.map +1 -1
  104. package/dist/src/components/modals/index.d.ts +5 -5
  105. package/dist/src/components/modals/index.d.ts.map +1 -1
  106. package/dist/src/components/navigation/AnchorLinks.d.ts +2 -2
  107. package/dist/src/components/navigation/AnchorLinks.d.ts.map +1 -1
  108. package/dist/src/components/navigation/Breadcrumbs.d.ts +1 -1
  109. package/dist/src/components/navigation/Breadcrumbs.d.ts.map +1 -1
  110. package/dist/src/components/navigation/Footer.d.ts +1 -1
  111. package/dist/src/components/navigation/Footer.d.ts.map +1 -1
  112. package/dist/src/components/navigation/LanguageSelector.d.ts +1 -1
  113. package/dist/src/components/navigation/LanguageSelector.d.ts.map +1 -1
  114. package/dist/src/components/navigation/MegaMenu.d.ts +1 -1
  115. package/dist/src/components/navigation/MegaMenu.d.ts.map +1 -1
  116. package/dist/src/components/navigation/Pagination.d.ts.map +1 -1
  117. package/dist/src/components/navigation/PrimaryNav.d.ts.map +1 -1
  118. package/dist/src/components/navigation/SideDrawerNav.d.ts +2 -2
  119. package/dist/src/components/navigation/SideDrawerNav.d.ts.map +1 -1
  120. package/dist/src/components/navigation/SidebarMenu.d.ts +1 -1
  121. package/dist/src/components/navigation/SidebarMenu.d.ts.map +1 -1
  122. package/dist/src/components/navigation/Stepper.d.ts +1 -1
  123. package/dist/src/components/navigation/Stepper.d.ts.map +1 -1
  124. package/dist/src/components/navigation/Tabs.d.ts +2 -2
  125. package/dist/src/components/navigation/Tabs.d.ts.map +1 -1
  126. package/dist/src/components/navigation/index.d.ts +22 -22
  127. package/dist/src/components/navigation/index.d.ts.map +1 -1
  128. package/dist/src/components/onboarding/index.d.ts +7 -7
  129. package/dist/src/components/onboarding/index.d.ts.map +1 -1
  130. package/dist/src/components/search/index.d.ts +3 -3
  131. package/dist/src/components/search/index.d.ts.map +1 -1
  132. package/dist/src/components/site-identity/index.d.ts +5 -5
  133. package/dist/src/components/site-identity/index.d.ts.map +1 -1
  134. package/dist/src/components/social/index.d.ts +7 -7
  135. package/dist/src/components/social/index.d.ts.map +1 -1
  136. package/dist/src/components/user-accounts/index.d.ts +6 -6
  137. package/dist/src/components/user-accounts/index.d.ts.map +1 -1
  138. package/dist/src/core/config.d.ts +1 -1
  139. package/dist/src/core/config.d.ts.map +1 -1
  140. package/dist/src/core/icons.d.ts +1 -1
  141. package/dist/src/core/icons.d.ts.map +1 -1
  142. package/dist/src/core/index.d.ts +7 -7
  143. package/dist/src/core/index.d.ts.map +1 -1
  144. package/dist/src/core/provider.d.ts +20 -20
  145. package/dist/src/core/provider.d.ts.map +1 -1
  146. package/dist/src/core/types.d.ts +4 -4
  147. package/dist/src/core/types.d.ts.map +1 -1
  148. package/dist/src/core/utils.d.ts +1 -1
  149. package/dist/src/core/utils.d.ts.map +1 -1
  150. package/dist/src/index.d.ts +19 -19
  151. package/dist/src/index.d.ts.map +1 -1
  152. package/metadata/blog.json +807 -0
  153. package/metadata/buttons.json +2186 -0
  154. package/metadata/content.json +1152 -0
  155. package/metadata/data-display.json +822 -0
  156. package/metadata/ecommerce.json +1059 -0
  157. package/metadata/forms.json +2637 -0
  158. package/metadata/hero.json +1401 -0
  159. package/metadata/lists-cards.json +848 -0
  160. package/metadata/marketing.json +1235 -0
  161. package/metadata/media.json +800 -0
  162. package/metadata/miscellaneous.json +778 -0
  163. package/metadata/modals.json +954 -0
  164. package/metadata/navigation.json +1348 -0
  165. package/metadata/onboarding.json +615 -0
  166. package/metadata/search.json +559 -0
  167. package/metadata/site-identity.json +555 -0
  168. package/metadata/social.json +654 -0
  169. package/metadata/user-accounts.json +727 -0
  170. package/package.json +18 -6
  171. package/dist/README.md +0 -35
  172. package/dist/src/__tests__/test-utils.d.ts +0 -8
  173. package/dist/src/__tests__/test-utils.d.ts.map +0 -1
@@ -0,0 +1,2637 @@
1
+ {
2
+ "$schema": "electroplix-component-metadata-v1",
3
+ "category": "forms",
4
+ "label": "Forms",
5
+ "description": "Form elements, inputs, validation, and complete form compositions for data collection",
6
+ "themeKey": "forms",
7
+ "icon": "file-text",
8
+ "sortOrder": 4,
9
+ "components": [
10
+ {
11
+ "id": "forms.FormShell",
12
+ "name": "FormShell",
13
+ "description": "Container shell for form layouts. Provides consistent padding, max-width, and spacing for all form content inside it.",
14
+ "whenToUse": "Use as the outermost wrapper for any form page. Provides structural consistency for all child form elements including inputs, selects, and submit buttons.",
15
+ "isShell": true,
16
+ "props": [
17
+ {
18
+ "name": "as",
19
+ "type": "ElementType",
20
+ "required": false,
21
+ "default": "\"form\"",
22
+ "description": "HTML element or component to render as"
23
+ },
24
+ {
25
+ "name": "maxW",
26
+ "type": "number",
27
+ "required": false,
28
+ "default": "700",
29
+ "description": "Maximum width of the form shell in pixels"
30
+ },
31
+ {
32
+ "name": "px",
33
+ "type": "number",
34
+ "required": false,
35
+ "default": "24",
36
+ "description": "Horizontal padding in pixels"
37
+ },
38
+ {
39
+ "name": "py",
40
+ "type": "number",
41
+ "required": false,
42
+ "default": "24",
43
+ "description": "Vertical padding in pixels"
44
+ },
45
+ {
46
+ "name": "radius",
47
+ "type": "number",
48
+ "required": false,
49
+ "default": "16",
50
+ "description": "Border radius in pixels"
51
+ },
52
+ {
53
+ "name": "gap",
54
+ "type": "number",
55
+ "required": false,
56
+ "default": "16",
57
+ "description": "Gap between child elements in pixels"
58
+ },
59
+ {
60
+ "name": "bgColor",
61
+ "type": "string",
62
+ "required": false,
63
+ "default": "theme",
64
+ "description": "Background color override"
65
+ },
66
+ {
67
+ "name": "textColor",
68
+ "type": "string",
69
+ "required": false,
70
+ "default": "theme",
71
+ "description": "Text color override"
72
+ },
73
+ {
74
+ "name": "fontFamily",
75
+ "type": "string",
76
+ "required": false,
77
+ "default": "theme",
78
+ "description": "Font family override"
79
+ },
80
+ {
81
+ "name": "style",
82
+ "type": "CSSProperties",
83
+ "required": false,
84
+ "default": null,
85
+ "description": "Custom inline styles"
86
+ },
87
+ {
88
+ "name": "className",
89
+ "type": "string",
90
+ "required": false,
91
+ "default": null,
92
+ "description": "Custom CSS class"
93
+ },
94
+ {
95
+ "name": "children",
96
+ "type": "ReactNode",
97
+ "required": false,
98
+ "default": null,
99
+ "description": "Child form elements to render inside the shell"
100
+ }
101
+ ],
102
+ "themeTokens": [
103
+ "bgColor",
104
+ "textColor",
105
+ "accentColor",
106
+ "borderColor",
107
+ "fontFamily",
108
+ "radius",
109
+ "spacing",
110
+ "cardBg",
111
+ "cardRadius",
112
+ "cardBorder",
113
+ "inputBg",
114
+ "inputText",
115
+ "maxW",
116
+ "px",
117
+ "py",
118
+ "gap"
119
+ ],
120
+ "aiHints": {
121
+ "pageTypes": [
122
+ "landing",
123
+ "marketing",
124
+ "dashboard",
125
+ "blog",
126
+ "ecommerce",
127
+ "portfolio",
128
+ "saas",
129
+ "contact",
130
+ "settings",
131
+ "onboarding",
132
+ "auth"
133
+ ],
134
+ "placement": "body",
135
+ "priority": 4,
136
+ "sequenceOrder": 4,
137
+ "pairsWellWith": [
138
+ "forms.InputField",
139
+ "forms.TextAreaField",
140
+ "forms.SelectDropdown",
141
+ "forms.RadioGroup",
142
+ "forms.ToggleSwitch",
143
+ "forms.ContactForm",
144
+ "forms.ValidationWrapper"
145
+ ],
146
+ "maxPerPage": 3,
147
+ "isContainer": true
148
+ }
149
+ },
150
+ {
151
+ "id": "forms.InputField",
152
+ "name": "InputField",
153
+ "description": "Single line text input with label and validation. Supports various input types, icons, help text, and error states.",
154
+ "whenToUse": "Use for any single-line text entry such as name, email, phone, password, or URL fields. Ideal inside FormShell or any form composition.",
155
+ "isShell": false,
156
+ "props": [
157
+ {
158
+ "name": "as",
159
+ "type": "ElementType",
160
+ "required": false,
161
+ "default": "\"div\"",
162
+ "description": "HTML element or component to render as"
163
+ },
164
+ {
165
+ "name": "label",
166
+ "type": "string",
167
+ "required": false,
168
+ "default": "\"Input Field\"",
169
+ "description": "Label text displayed above the input"
170
+ },
171
+ {
172
+ "name": "name",
173
+ "type": "string",
174
+ "required": true,
175
+ "default": null,
176
+ "description": "Form field name attribute"
177
+ },
178
+ {
179
+ "name": "type",
180
+ "type": "string",
181
+ "required": false,
182
+ "default": "\"text\"",
183
+ "description": "HTML input type (text, email, password, tel, url, number, etc.)"
184
+ },
185
+ {
186
+ "name": "value",
187
+ "type": "string",
188
+ "required": false,
189
+ "default": null,
190
+ "description": "Controlled input value"
191
+ },
192
+ {
193
+ "name": "defaultValue",
194
+ "type": "string",
195
+ "required": false,
196
+ "default": null,
197
+ "description": "Default uncontrolled value"
198
+ },
199
+ {
200
+ "name": "placeholder",
201
+ "type": "string",
202
+ "required": false,
203
+ "default": "\"Enter text...\"",
204
+ "description": "Placeholder text when input is empty"
205
+ },
206
+ {
207
+ "name": "onChange",
208
+ "type": "(e: ChangeEvent) => void",
209
+ "required": false,
210
+ "default": null,
211
+ "description": "Callback fired when input value changes"
212
+ },
213
+ {
214
+ "name": "helpText",
215
+ "type": "string",
216
+ "required": false,
217
+ "default": null,
218
+ "description": "Helper text displayed below the input"
219
+ },
220
+ {
221
+ "name": "required",
222
+ "type": "boolean",
223
+ "required": false,
224
+ "default": "false",
225
+ "description": "Whether the field is required"
226
+ },
227
+ {
228
+ "name": "error",
229
+ "type": "string",
230
+ "required": false,
231
+ "default": null,
232
+ "description": "Error message to display below the input"
233
+ },
234
+ {
235
+ "name": "icon",
236
+ "type": "ReactNode",
237
+ "required": false,
238
+ "default": null,
239
+ "description": "Icon element displayed inside the input"
240
+ },
241
+ {
242
+ "name": "inputBg",
243
+ "type": "string",
244
+ "required": false,
245
+ "default": "theme",
246
+ "description": "Background color of the input element"
247
+ },
248
+ {
249
+ "name": "labelSize",
250
+ "type": "number",
251
+ "required": false,
252
+ "default": "13",
253
+ "description": "Font size of the label in pixels"
254
+ },
255
+ {
256
+ "name": "inputSize",
257
+ "type": "number",
258
+ "required": false,
259
+ "default": "14",
260
+ "description": "Font size of the input text in pixels"
261
+ },
262
+ {
263
+ "name": "maxW",
264
+ "type": "number",
265
+ "required": false,
266
+ "default": "700",
267
+ "description": "Maximum width in pixels"
268
+ },
269
+ {
270
+ "name": "px",
271
+ "type": "number",
272
+ "required": false,
273
+ "default": "24",
274
+ "description": "Horizontal padding in pixels"
275
+ },
276
+ {
277
+ "name": "py",
278
+ "type": "number",
279
+ "required": false,
280
+ "default": "24",
281
+ "description": "Vertical padding in pixels"
282
+ },
283
+ {
284
+ "name": "radius",
285
+ "type": "number",
286
+ "required": false,
287
+ "default": "16",
288
+ "description": "Border radius in pixels"
289
+ },
290
+ {
291
+ "name": "gap",
292
+ "type": "number",
293
+ "required": false,
294
+ "default": "16",
295
+ "description": "Gap between elements in pixels"
296
+ },
297
+ {
298
+ "name": "bgColor",
299
+ "type": "string",
300
+ "required": false,
301
+ "default": "theme",
302
+ "description": "Background color override"
303
+ },
304
+ {
305
+ "name": "textColor",
306
+ "type": "string",
307
+ "required": false,
308
+ "default": "theme",
309
+ "description": "Text color override"
310
+ },
311
+ {
312
+ "name": "accentColor",
313
+ "type": "string",
314
+ "required": false,
315
+ "default": "theme",
316
+ "description": "Accent/highlight color override"
317
+ },
318
+ {
319
+ "name": "borderColor",
320
+ "type": "string",
321
+ "required": false,
322
+ "default": "theme",
323
+ "description": "Border color override"
324
+ },
325
+ {
326
+ "name": "fontFamily",
327
+ "type": "string",
328
+ "required": false,
329
+ "default": "theme",
330
+ "description": "Font family override"
331
+ },
332
+ {
333
+ "name": "style",
334
+ "type": "CSSProperties",
335
+ "required": false,
336
+ "default": null,
337
+ "description": "Custom inline styles"
338
+ },
339
+ {
340
+ "name": "className",
341
+ "type": "string",
342
+ "required": false,
343
+ "default": null,
344
+ "description": "Custom CSS class"
345
+ }
346
+ ],
347
+ "themeTokens": [
348
+ "bgColor",
349
+ "textColor",
350
+ "accentColor",
351
+ "borderColor",
352
+ "fontFamily",
353
+ "radius",
354
+ "spacing",
355
+ "cardBg",
356
+ "cardRadius",
357
+ "cardBorder",
358
+ "inputBg",
359
+ "inputText",
360
+ "maxW",
361
+ "px",
362
+ "py",
363
+ "gap"
364
+ ],
365
+ "aiHints": {
366
+ "pageTypes": [
367
+ "landing",
368
+ "marketing",
369
+ "dashboard",
370
+ "blog",
371
+ "ecommerce",
372
+ "portfolio",
373
+ "saas",
374
+ "contact",
375
+ "settings",
376
+ "onboarding",
377
+ "auth"
378
+ ],
379
+ "placement": "body",
380
+ "priority": 9,
381
+ "sequenceOrder": 5,
382
+ "pairsWellWith": [
383
+ "forms.FormShell",
384
+ "forms.TextAreaField",
385
+ "forms.SelectDropdown",
386
+ "forms.ValidationWrapper"
387
+ ],
388
+ "maxPerPage": 10,
389
+ "isContainer": false
390
+ }
391
+ },
392
+ {
393
+ "id": "forms.TextAreaField",
394
+ "name": "TextAreaField",
395
+ "description": "Multi-line text input with optional preview and character counter. Suitable for long-form text entry like messages or descriptions.",
396
+ "whenToUse": "Use when the user needs to enter multiple lines of text such as messages, comments, bios, descriptions, or blog post content.",
397
+ "isShell": false,
398
+ "props": [
399
+ {
400
+ "name": "as",
401
+ "type": "ElementType",
402
+ "required": false,
403
+ "default": "\"div\"",
404
+ "description": "HTML element or component to render as"
405
+ },
406
+ {
407
+ "name": "label",
408
+ "type": "string",
409
+ "required": false,
410
+ "default": "\"Message\"",
411
+ "description": "Label text displayed above the textarea"
412
+ },
413
+ {
414
+ "name": "name",
415
+ "type": "string",
416
+ "required": true,
417
+ "default": null,
418
+ "description": "Form field name attribute"
419
+ },
420
+ {
421
+ "name": "value",
422
+ "type": "string",
423
+ "required": false,
424
+ "default": null,
425
+ "description": "Controlled textarea value"
426
+ },
427
+ {
428
+ "name": "defaultValue",
429
+ "type": "string",
430
+ "required": false,
431
+ "default": null,
432
+ "description": "Default uncontrolled value"
433
+ },
434
+ {
435
+ "name": "placeholder",
436
+ "type": "string",
437
+ "required": false,
438
+ "default": "\"Write your message here...\"",
439
+ "description": "Placeholder text when textarea is empty"
440
+ },
441
+ {
442
+ "name": "rows",
443
+ "type": "number",
444
+ "required": false,
445
+ "default": "5",
446
+ "description": "Number of visible text rows"
447
+ },
448
+ {
449
+ "name": "onChange",
450
+ "type": "(e: ChangeEvent) => void",
451
+ "required": false,
452
+ "default": null,
453
+ "description": "Callback fired when textarea value changes"
454
+ },
455
+ {
456
+ "name": "showPreview",
457
+ "type": "boolean",
458
+ "required": false,
459
+ "default": "false",
460
+ "description": "Whether to show a live preview of the entered text"
461
+ },
462
+ {
463
+ "name": "maxLength",
464
+ "type": "number",
465
+ "required": false,
466
+ "default": null,
467
+ "description": "Maximum character count with counter display"
468
+ },
469
+ {
470
+ "name": "inputBg",
471
+ "type": "string",
472
+ "required": false,
473
+ "default": "theme",
474
+ "description": "Background color of the textarea element"
475
+ },
476
+ {
477
+ "name": "labelSize",
478
+ "type": "number",
479
+ "required": false,
480
+ "default": "13",
481
+ "description": "Font size of the label in pixels"
482
+ },
483
+ {
484
+ "name": "inputSize",
485
+ "type": "number",
486
+ "required": false,
487
+ "default": "14",
488
+ "description": "Font size of the textarea text in pixels"
489
+ },
490
+ {
491
+ "name": "maxW",
492
+ "type": "number",
493
+ "required": false,
494
+ "default": "700",
495
+ "description": "Maximum width in pixels"
496
+ },
497
+ {
498
+ "name": "px",
499
+ "type": "number",
500
+ "required": false,
501
+ "default": "24",
502
+ "description": "Horizontal padding in pixels"
503
+ },
504
+ {
505
+ "name": "py",
506
+ "type": "number",
507
+ "required": false,
508
+ "default": "24",
509
+ "description": "Vertical padding in pixels"
510
+ },
511
+ {
512
+ "name": "radius",
513
+ "type": "number",
514
+ "required": false,
515
+ "default": "16",
516
+ "description": "Border radius in pixels"
517
+ },
518
+ {
519
+ "name": "gap",
520
+ "type": "number",
521
+ "required": false,
522
+ "default": "16",
523
+ "description": "Gap between elements in pixels"
524
+ },
525
+ {
526
+ "name": "bgColor",
527
+ "type": "string",
528
+ "required": false,
529
+ "default": "theme",
530
+ "description": "Background color override"
531
+ },
532
+ {
533
+ "name": "textColor",
534
+ "type": "string",
535
+ "required": false,
536
+ "default": "theme",
537
+ "description": "Text color override"
538
+ },
539
+ {
540
+ "name": "accentColor",
541
+ "type": "string",
542
+ "required": false,
543
+ "default": "theme",
544
+ "description": "Accent/highlight color override"
545
+ },
546
+ {
547
+ "name": "borderColor",
548
+ "type": "string",
549
+ "required": false,
550
+ "default": "theme",
551
+ "description": "Border color override"
552
+ },
553
+ {
554
+ "name": "fontFamily",
555
+ "type": "string",
556
+ "required": false,
557
+ "default": "theme",
558
+ "description": "Font family override"
559
+ },
560
+ {
561
+ "name": "style",
562
+ "type": "CSSProperties",
563
+ "required": false,
564
+ "default": null,
565
+ "description": "Custom inline styles"
566
+ },
567
+ {
568
+ "name": "className",
569
+ "type": "string",
570
+ "required": false,
571
+ "default": null,
572
+ "description": "Custom CSS class"
573
+ }
574
+ ],
575
+ "themeTokens": [
576
+ "bgColor",
577
+ "textColor",
578
+ "accentColor",
579
+ "borderColor",
580
+ "fontFamily",
581
+ "radius",
582
+ "spacing",
583
+ "cardBg",
584
+ "cardRadius",
585
+ "cardBorder",
586
+ "inputBg",
587
+ "inputText",
588
+ "maxW",
589
+ "px",
590
+ "py",
591
+ "gap"
592
+ ],
593
+ "aiHints": {
594
+ "pageTypes": ["contact", "blog", "dashboard", "settings", "saas", "forms"],
595
+ "placement": "body",
596
+ "priority": 7,
597
+ "sequenceOrder": 5,
598
+ "pairsWellWith": ["forms.FormShell", "forms.InputField", "forms.ValidationWrapper"],
599
+ "maxPerPage": 5,
600
+ "isContainer": false
601
+ }
602
+ },
603
+ {
604
+ "id": "forms.SelectDropdown",
605
+ "name": "SelectDropdown",
606
+ "description": "Dropdown select with label. Renders a native select element with styled wrapper, supporting disabled options.",
607
+ "whenToUse": "Use when the user needs to choose one option from a predefined list, such as country, category, role, or sort order selectors.",
608
+ "isShell": false,
609
+ "props": [
610
+ {
611
+ "name": "as",
612
+ "type": "ElementType",
613
+ "required": false,
614
+ "default": "\"div\"",
615
+ "description": "HTML element or component to render as"
616
+ },
617
+ {
618
+ "name": "name",
619
+ "type": "string",
620
+ "required": true,
621
+ "default": null,
622
+ "description": "Form field name attribute"
623
+ },
624
+ {
625
+ "name": "options",
626
+ "type": "SelectOption[]",
627
+ "required": true,
628
+ "default": null,
629
+ "description": "Array of options: {label, value, disabled?}"
630
+ },
631
+ {
632
+ "name": "value",
633
+ "type": "string",
634
+ "required": false,
635
+ "default": null,
636
+ "description": "Controlled select value"
637
+ },
638
+ {
639
+ "name": "defaultValue",
640
+ "type": "string",
641
+ "required": false,
642
+ "default": null,
643
+ "description": "Default uncontrolled value"
644
+ },
645
+ {
646
+ "name": "onChange",
647
+ "type": "(e: ChangeEvent) => void",
648
+ "required": false,
649
+ "default": null,
650
+ "description": "Callback fired when selection changes"
651
+ },
652
+ {
653
+ "name": "label",
654
+ "type": "string",
655
+ "required": false,
656
+ "default": "\"Select an option\"",
657
+ "description": "Label text displayed above the select"
658
+ },
659
+ {
660
+ "name": "placeholder",
661
+ "type": "string",
662
+ "required": false,
663
+ "default": "\"Choose...\"",
664
+ "description": "Placeholder option text"
665
+ },
666
+ {
667
+ "name": "labelSize",
668
+ "type": "number",
669
+ "required": false,
670
+ "default": "13",
671
+ "description": "Font size of the label in pixels"
672
+ },
673
+ {
674
+ "name": "selectSize",
675
+ "type": "number",
676
+ "required": false,
677
+ "default": "14",
678
+ "description": "Font size of the select text in pixels"
679
+ },
680
+ {
681
+ "name": "inputBg",
682
+ "type": "string",
683
+ "required": false,
684
+ "default": "theme",
685
+ "description": "Background color of the select element"
686
+ },
687
+ {
688
+ "name": "maxW",
689
+ "type": "number",
690
+ "required": false,
691
+ "default": "700",
692
+ "description": "Maximum width in pixels"
693
+ },
694
+ {
695
+ "name": "px",
696
+ "type": "number",
697
+ "required": false,
698
+ "default": "24",
699
+ "description": "Horizontal padding in pixels"
700
+ },
701
+ {
702
+ "name": "py",
703
+ "type": "number",
704
+ "required": false,
705
+ "default": "24",
706
+ "description": "Vertical padding in pixels"
707
+ },
708
+ {
709
+ "name": "radius",
710
+ "type": "number",
711
+ "required": false,
712
+ "default": "16",
713
+ "description": "Border radius in pixels"
714
+ },
715
+ {
716
+ "name": "gap",
717
+ "type": "number",
718
+ "required": false,
719
+ "default": "16",
720
+ "description": "Gap between elements in pixels"
721
+ },
722
+ {
723
+ "name": "bgColor",
724
+ "type": "string",
725
+ "required": false,
726
+ "default": "theme",
727
+ "description": "Background color override"
728
+ },
729
+ {
730
+ "name": "textColor",
731
+ "type": "string",
732
+ "required": false,
733
+ "default": "theme",
734
+ "description": "Text color override"
735
+ },
736
+ {
737
+ "name": "accentColor",
738
+ "type": "string",
739
+ "required": false,
740
+ "default": "theme",
741
+ "description": "Accent/highlight color override"
742
+ },
743
+ {
744
+ "name": "borderColor",
745
+ "type": "string",
746
+ "required": false,
747
+ "default": "theme",
748
+ "description": "Border color override"
749
+ },
750
+ {
751
+ "name": "fontFamily",
752
+ "type": "string",
753
+ "required": false,
754
+ "default": "theme",
755
+ "description": "Font family override"
756
+ },
757
+ {
758
+ "name": "style",
759
+ "type": "CSSProperties",
760
+ "required": false,
761
+ "default": null,
762
+ "description": "Custom inline styles"
763
+ },
764
+ {
765
+ "name": "className",
766
+ "type": "string",
767
+ "required": false,
768
+ "default": null,
769
+ "description": "Custom CSS class"
770
+ }
771
+ ],
772
+ "themeTokens": [
773
+ "bgColor",
774
+ "textColor",
775
+ "accentColor",
776
+ "borderColor",
777
+ "fontFamily",
778
+ "radius",
779
+ "spacing",
780
+ "cardBg",
781
+ "cardRadius",
782
+ "cardBorder",
783
+ "inputBg",
784
+ "inputText",
785
+ "maxW",
786
+ "px",
787
+ "py",
788
+ "gap"
789
+ ],
790
+ "aiHints": {
791
+ "pageTypes": ["forms", "settings", "dashboard", "ecommerce", "saas", "admin"],
792
+ "placement": "body",
793
+ "priority": 8,
794
+ "sequenceOrder": 5,
795
+ "pairsWellWith": [
796
+ "forms.FormShell",
797
+ "forms.InputField",
798
+ "forms.RadioGroup",
799
+ "forms.ValidationWrapper"
800
+ ],
801
+ "maxPerPage": 8,
802
+ "isContainer": false
803
+ }
804
+ },
805
+ {
806
+ "id": "forms.RadioGroup",
807
+ "name": "RadioGroup",
808
+ "description": "Radio button group for single selection from multiple options. Supports optional help text per option.",
809
+ "whenToUse": "Use when the user must pick exactly one option from a small set of visible choices, such as plan selection, gender, payment method, or preference settings.",
810
+ "isShell": false,
811
+ "props": [
812
+ {
813
+ "name": "as",
814
+ "type": "ElementType",
815
+ "required": false,
816
+ "default": "\"div\"",
817
+ "description": "HTML element or component to render as"
818
+ },
819
+ {
820
+ "name": "name",
821
+ "type": "string",
822
+ "required": true,
823
+ "default": null,
824
+ "description": "Form field name attribute (shared across radios)"
825
+ },
826
+ {
827
+ "name": "options",
828
+ "type": "RadioOption[]",
829
+ "required": true,
830
+ "default": null,
831
+ "description": "Array of radio options: {label, value, helpText?}"
832
+ },
833
+ {
834
+ "name": "value",
835
+ "type": "string",
836
+ "required": false,
837
+ "default": null,
838
+ "description": "Controlled selected value"
839
+ },
840
+ {
841
+ "name": "defaultValue",
842
+ "type": "string",
843
+ "required": false,
844
+ "default": null,
845
+ "description": "Default uncontrolled value"
846
+ },
847
+ {
848
+ "name": "onChange",
849
+ "type": "(e: ChangeEvent) => void",
850
+ "required": false,
851
+ "default": null,
852
+ "description": "Callback fired when selection changes"
853
+ },
854
+ {
855
+ "name": "label",
856
+ "type": "string",
857
+ "required": false,
858
+ "default": "\"Choose an option\"",
859
+ "description": "Group label displayed above the radio buttons"
860
+ },
861
+ {
862
+ "name": "labelSize",
863
+ "type": "number",
864
+ "required": false,
865
+ "default": "13",
866
+ "description": "Font size of the group label in pixels"
867
+ },
868
+ {
869
+ "name": "itemSize",
870
+ "type": "number",
871
+ "required": false,
872
+ "default": "14",
873
+ "description": "Font size of each radio option label in pixels"
874
+ },
875
+ {
876
+ "name": "maxW",
877
+ "type": "number",
878
+ "required": false,
879
+ "default": "700",
880
+ "description": "Maximum width in pixels"
881
+ },
882
+ {
883
+ "name": "px",
884
+ "type": "number",
885
+ "required": false,
886
+ "default": "24",
887
+ "description": "Horizontal padding in pixels"
888
+ },
889
+ {
890
+ "name": "py",
891
+ "type": "number",
892
+ "required": false,
893
+ "default": "24",
894
+ "description": "Vertical padding in pixels"
895
+ },
896
+ {
897
+ "name": "radius",
898
+ "type": "number",
899
+ "required": false,
900
+ "default": "16",
901
+ "description": "Border radius in pixels"
902
+ },
903
+ {
904
+ "name": "gap",
905
+ "type": "number",
906
+ "required": false,
907
+ "default": "16",
908
+ "description": "Gap between radio items in pixels"
909
+ },
910
+ {
911
+ "name": "bgColor",
912
+ "type": "string",
913
+ "required": false,
914
+ "default": "theme",
915
+ "description": "Background color override"
916
+ },
917
+ {
918
+ "name": "textColor",
919
+ "type": "string",
920
+ "required": false,
921
+ "default": "theme",
922
+ "description": "Text color override"
923
+ },
924
+ {
925
+ "name": "accentColor",
926
+ "type": "string",
927
+ "required": false,
928
+ "default": "theme",
929
+ "description": "Accent/highlight color override"
930
+ },
931
+ {
932
+ "name": "borderColor",
933
+ "type": "string",
934
+ "required": false,
935
+ "default": "theme",
936
+ "description": "Border color override"
937
+ },
938
+ {
939
+ "name": "fontFamily",
940
+ "type": "string",
941
+ "required": false,
942
+ "default": "theme",
943
+ "description": "Font family override"
944
+ },
945
+ {
946
+ "name": "style",
947
+ "type": "CSSProperties",
948
+ "required": false,
949
+ "default": null,
950
+ "description": "Custom inline styles"
951
+ },
952
+ {
953
+ "name": "className",
954
+ "type": "string",
955
+ "required": false,
956
+ "default": null,
957
+ "description": "Custom CSS class"
958
+ }
959
+ ],
960
+ "themeTokens": [
961
+ "bgColor",
962
+ "textColor",
963
+ "accentColor",
964
+ "borderColor",
965
+ "fontFamily",
966
+ "radius",
967
+ "spacing",
968
+ "cardBg",
969
+ "cardRadius",
970
+ "cardBorder",
971
+ "inputBg",
972
+ "inputText",
973
+ "maxW",
974
+ "px",
975
+ "py",
976
+ "gap"
977
+ ],
978
+ "aiHints": {
979
+ "pageTypes": ["forms", "settings", "dashboard", "saas", "onboarding"],
980
+ "placement": "body",
981
+ "priority": 7,
982
+ "sequenceOrder": 5,
983
+ "pairsWellWith": [
984
+ "forms.FormShell",
985
+ "forms.SelectDropdown",
986
+ "forms.ToggleSwitch",
987
+ "forms.ValidationWrapper"
988
+ ],
989
+ "maxPerPage": 5,
990
+ "isContainer": false
991
+ }
992
+ },
993
+ {
994
+ "id": "forms.ToggleSwitch",
995
+ "name": "ToggleSwitch",
996
+ "description": "On/off toggle switch with label and optional description. Provides a clear binary choice for enabling or disabling features.",
997
+ "whenToUse": "Use for boolean settings like enabling notifications, dark mode, auto-save, or any on/off preference in settings and dashboard pages.",
998
+ "isShell": false,
999
+ "props": [
1000
+ {
1001
+ "name": "as",
1002
+ "type": "ElementType",
1003
+ "required": false,
1004
+ "default": "\"div\"",
1005
+ "description": "HTML element or component to render as"
1006
+ },
1007
+ {
1008
+ "name": "label",
1009
+ "type": "string",
1010
+ "required": false,
1011
+ "default": "\"Enable Feature\"",
1012
+ "description": "Label text displayed next to the toggle"
1013
+ },
1014
+ {
1015
+ "name": "description",
1016
+ "type": "string",
1017
+ "required": false,
1018
+ "default": null,
1019
+ "description": "Additional description text displayed below the label"
1020
+ },
1021
+ {
1022
+ "name": "checked",
1023
+ "type": "boolean",
1024
+ "required": false,
1025
+ "default": null,
1026
+ "description": "Controlled checked state"
1027
+ },
1028
+ {
1029
+ "name": "defaultChecked",
1030
+ "type": "boolean",
1031
+ "required": false,
1032
+ "default": null,
1033
+ "description": "Default uncontrolled checked state"
1034
+ },
1035
+ {
1036
+ "name": "onChange",
1037
+ "type": "(checked: boolean) => void",
1038
+ "required": false,
1039
+ "default": null,
1040
+ "description": "Callback fired when toggle state changes"
1041
+ },
1042
+ {
1043
+ "name": "size",
1044
+ "type": "number",
1045
+ "required": false,
1046
+ "default": "24",
1047
+ "description": "Size of the toggle switch in pixels"
1048
+ },
1049
+ {
1050
+ "name": "labelSize",
1051
+ "type": "number",
1052
+ "required": false,
1053
+ "default": "14",
1054
+ "description": "Font size of the label in pixels"
1055
+ },
1056
+ {
1057
+ "name": "maxW",
1058
+ "type": "number",
1059
+ "required": false,
1060
+ "default": "700",
1061
+ "description": "Maximum width in pixels"
1062
+ },
1063
+ {
1064
+ "name": "px",
1065
+ "type": "number",
1066
+ "required": false,
1067
+ "default": "24",
1068
+ "description": "Horizontal padding in pixels"
1069
+ },
1070
+ {
1071
+ "name": "py",
1072
+ "type": "number",
1073
+ "required": false,
1074
+ "default": "24",
1075
+ "description": "Vertical padding in pixels"
1076
+ },
1077
+ {
1078
+ "name": "radius",
1079
+ "type": "number",
1080
+ "required": false,
1081
+ "default": "16",
1082
+ "description": "Border radius in pixels"
1083
+ },
1084
+ {
1085
+ "name": "gap",
1086
+ "type": "number",
1087
+ "required": false,
1088
+ "default": "16",
1089
+ "description": "Gap between elements in pixels"
1090
+ },
1091
+ {
1092
+ "name": "bgColor",
1093
+ "type": "string",
1094
+ "required": false,
1095
+ "default": "theme",
1096
+ "description": "Background color override"
1097
+ },
1098
+ {
1099
+ "name": "textColor",
1100
+ "type": "string",
1101
+ "required": false,
1102
+ "default": "theme",
1103
+ "description": "Text color override"
1104
+ },
1105
+ {
1106
+ "name": "accentColor",
1107
+ "type": "string",
1108
+ "required": false,
1109
+ "default": "theme",
1110
+ "description": "Accent/highlight color override"
1111
+ },
1112
+ {
1113
+ "name": "borderColor",
1114
+ "type": "string",
1115
+ "required": false,
1116
+ "default": "theme",
1117
+ "description": "Border color override"
1118
+ },
1119
+ {
1120
+ "name": "fontFamily",
1121
+ "type": "string",
1122
+ "required": false,
1123
+ "default": "theme",
1124
+ "description": "Font family override"
1125
+ },
1126
+ {
1127
+ "name": "style",
1128
+ "type": "CSSProperties",
1129
+ "required": false,
1130
+ "default": null,
1131
+ "description": "Custom inline styles"
1132
+ },
1133
+ {
1134
+ "name": "className",
1135
+ "type": "string",
1136
+ "required": false,
1137
+ "default": null,
1138
+ "description": "Custom CSS class"
1139
+ }
1140
+ ],
1141
+ "themeTokens": [
1142
+ "bgColor",
1143
+ "textColor",
1144
+ "accentColor",
1145
+ "borderColor",
1146
+ "fontFamily",
1147
+ "radius",
1148
+ "spacing",
1149
+ "cardBg",
1150
+ "cardRadius",
1151
+ "cardBorder",
1152
+ "inputBg",
1153
+ "inputText",
1154
+ "maxW",
1155
+ "px",
1156
+ "py",
1157
+ "gap"
1158
+ ],
1159
+ "aiHints": {
1160
+ "pageTypes": ["settings", "dashboard", "admin", "saas", "onboarding"],
1161
+ "placement": "body",
1162
+ "priority": 6,
1163
+ "sequenceOrder": 5,
1164
+ "pairsWellWith": ["forms.FormShell", "forms.RadioGroup", "forms.SelectDropdown"],
1165
+ "maxPerPage": 10,
1166
+ "isContainer": false
1167
+ }
1168
+ },
1169
+ {
1170
+ "id": "forms.DateTimePicker",
1171
+ "name": "DateTimePicker",
1172
+ "description": "Date and time input supporting multiple modes: date, time, datetime-local, month, and week. Renders a native input with styled wrapper.",
1173
+ "whenToUse": "Use for collecting date or time information such as appointment scheduling, event dates, booking forms, or deadline selectors.",
1174
+ "isShell": false,
1175
+ "props": [
1176
+ {
1177
+ "name": "as",
1178
+ "type": "ElementType",
1179
+ "required": false,
1180
+ "default": "\"div\"",
1181
+ "description": "HTML element or component to render as"
1182
+ },
1183
+ {
1184
+ "name": "label",
1185
+ "type": "string",
1186
+ "required": false,
1187
+ "default": "\"Select Date\"",
1188
+ "description": "Label text displayed above the input"
1189
+ },
1190
+ {
1191
+ "name": "name",
1192
+ "type": "string",
1193
+ "required": true,
1194
+ "default": null,
1195
+ "description": "Form field name attribute"
1196
+ },
1197
+ {
1198
+ "name": "mode",
1199
+ "type": "\"date\" | \"time\" | \"datetime-local\" | \"month\" | \"week\"",
1200
+ "required": false,
1201
+ "default": "\"date\"",
1202
+ "description": "Input mode controlling the type of picker shown"
1203
+ },
1204
+ {
1205
+ "name": "value",
1206
+ "type": "string",
1207
+ "required": false,
1208
+ "default": null,
1209
+ "description": "Controlled input value"
1210
+ },
1211
+ {
1212
+ "name": "defaultValue",
1213
+ "type": "string",
1214
+ "required": false,
1215
+ "default": null,
1216
+ "description": "Default uncontrolled value"
1217
+ },
1218
+ {
1219
+ "name": "onChange",
1220
+ "type": "(e: ChangeEvent) => void",
1221
+ "required": false,
1222
+ "default": null,
1223
+ "description": "Callback fired when the date/time value changes"
1224
+ },
1225
+ {
1226
+ "name": "labelSize",
1227
+ "type": "number",
1228
+ "required": false,
1229
+ "default": "13",
1230
+ "description": "Font size of the label in pixels"
1231
+ },
1232
+ {
1233
+ "name": "inputSize",
1234
+ "type": "number",
1235
+ "required": false,
1236
+ "default": "14",
1237
+ "description": "Font size of the input text in pixels"
1238
+ },
1239
+ {
1240
+ "name": "inputBg",
1241
+ "type": "string",
1242
+ "required": false,
1243
+ "default": "theme",
1244
+ "description": "Background color of the input element"
1245
+ },
1246
+ {
1247
+ "name": "maxW",
1248
+ "type": "number",
1249
+ "required": false,
1250
+ "default": "700",
1251
+ "description": "Maximum width in pixels"
1252
+ },
1253
+ {
1254
+ "name": "px",
1255
+ "type": "number",
1256
+ "required": false,
1257
+ "default": "24",
1258
+ "description": "Horizontal padding in pixels"
1259
+ },
1260
+ {
1261
+ "name": "py",
1262
+ "type": "number",
1263
+ "required": false,
1264
+ "default": "24",
1265
+ "description": "Vertical padding in pixels"
1266
+ },
1267
+ {
1268
+ "name": "radius",
1269
+ "type": "number",
1270
+ "required": false,
1271
+ "default": "16",
1272
+ "description": "Border radius in pixels"
1273
+ },
1274
+ {
1275
+ "name": "gap",
1276
+ "type": "number",
1277
+ "required": false,
1278
+ "default": "16",
1279
+ "description": "Gap between elements in pixels"
1280
+ },
1281
+ {
1282
+ "name": "bgColor",
1283
+ "type": "string",
1284
+ "required": false,
1285
+ "default": "theme",
1286
+ "description": "Background color override"
1287
+ },
1288
+ {
1289
+ "name": "textColor",
1290
+ "type": "string",
1291
+ "required": false,
1292
+ "default": "theme",
1293
+ "description": "Text color override"
1294
+ },
1295
+ {
1296
+ "name": "accentColor",
1297
+ "type": "string",
1298
+ "required": false,
1299
+ "default": "theme",
1300
+ "description": "Accent/highlight color override"
1301
+ },
1302
+ {
1303
+ "name": "borderColor",
1304
+ "type": "string",
1305
+ "required": false,
1306
+ "default": "theme",
1307
+ "description": "Border color override"
1308
+ },
1309
+ {
1310
+ "name": "fontFamily",
1311
+ "type": "string",
1312
+ "required": false,
1313
+ "default": "theme",
1314
+ "description": "Font family override"
1315
+ },
1316
+ {
1317
+ "name": "style",
1318
+ "type": "CSSProperties",
1319
+ "required": false,
1320
+ "default": null,
1321
+ "description": "Custom inline styles"
1322
+ },
1323
+ {
1324
+ "name": "className",
1325
+ "type": "string",
1326
+ "required": false,
1327
+ "default": null,
1328
+ "description": "Custom CSS class"
1329
+ }
1330
+ ],
1331
+ "themeTokens": [
1332
+ "bgColor",
1333
+ "textColor",
1334
+ "accentColor",
1335
+ "borderColor",
1336
+ "fontFamily",
1337
+ "radius",
1338
+ "spacing",
1339
+ "cardBg",
1340
+ "cardRadius",
1341
+ "cardBorder",
1342
+ "inputBg",
1343
+ "inputText",
1344
+ "maxW",
1345
+ "px",
1346
+ "py",
1347
+ "gap"
1348
+ ],
1349
+ "aiHints": {
1350
+ "pageTypes": [
1351
+ "forms",
1352
+ "booking",
1353
+ "ecommerce",
1354
+ "dashboard",
1355
+ "saas",
1356
+ "events",
1357
+ "restaurant",
1358
+ "fitness",
1359
+ "event",
1360
+ "health",
1361
+ "education"
1362
+ ],
1363
+ "placement": "body",
1364
+ "priority": 6,
1365
+ "sequenceOrder": 5,
1366
+ "pairsWellWith": [
1367
+ "forms.FormShell",
1368
+ "forms.InputField",
1369
+ "forms.SelectDropdown",
1370
+ "forms.ValidationWrapper"
1371
+ ],
1372
+ "maxPerPage": 5,
1373
+ "isContainer": false
1374
+ }
1375
+ },
1376
+ {
1377
+ "id": "forms.FileUploader",
1378
+ "name": "FileUploader",
1379
+ "description": "Drag-and-drop file upload area with click-to-browse fallback. Supports multiple files, file type filtering, and size limits.",
1380
+ "whenToUse": "Use for file upload functionality such as profile image uploads, document attachments, resume submissions, or media uploads in forms and settings pages.",
1381
+ "isShell": false,
1382
+ "props": [
1383
+ {
1384
+ "name": "as",
1385
+ "type": "ElementType",
1386
+ "required": false,
1387
+ "default": "\"div\"",
1388
+ "description": "HTML element or component to render as"
1389
+ },
1390
+ {
1391
+ "name": "multiple",
1392
+ "type": "boolean",
1393
+ "required": false,
1394
+ "default": "true",
1395
+ "description": "Whether to allow multiple file selection"
1396
+ },
1397
+ {
1398
+ "name": "accept",
1399
+ "type": "string",
1400
+ "required": false,
1401
+ "default": "\"*\"",
1402
+ "description": "Accepted file types (MIME types or extensions)"
1403
+ },
1404
+ {
1405
+ "name": "label",
1406
+ "type": "string",
1407
+ "required": false,
1408
+ "default": "\"Upload files\"",
1409
+ "description": "Label text displayed in the upload area"
1410
+ },
1411
+ {
1412
+ "name": "onFiles",
1413
+ "type": "(files: File[]) => void",
1414
+ "required": false,
1415
+ "default": null,
1416
+ "description": "Callback fired when files are selected or dropped"
1417
+ },
1418
+ {
1419
+ "name": "maxSize",
1420
+ "type": "number",
1421
+ "required": false,
1422
+ "default": "10485760",
1423
+ "description": "Maximum file size in bytes (default 10 MB)"
1424
+ },
1425
+ {
1426
+ "name": "inputBg",
1427
+ "type": "string",
1428
+ "required": false,
1429
+ "default": "theme",
1430
+ "description": "Background color of the upload drop zone"
1431
+ },
1432
+ {
1433
+ "name": "maxW",
1434
+ "type": "number",
1435
+ "required": false,
1436
+ "default": "700",
1437
+ "description": "Maximum width in pixels"
1438
+ },
1439
+ {
1440
+ "name": "px",
1441
+ "type": "number",
1442
+ "required": false,
1443
+ "default": "24",
1444
+ "description": "Horizontal padding in pixels"
1445
+ },
1446
+ {
1447
+ "name": "py",
1448
+ "type": "number",
1449
+ "required": false,
1450
+ "default": "24",
1451
+ "description": "Vertical padding in pixels"
1452
+ },
1453
+ {
1454
+ "name": "radius",
1455
+ "type": "number",
1456
+ "required": false,
1457
+ "default": "16",
1458
+ "description": "Border radius in pixels"
1459
+ },
1460
+ {
1461
+ "name": "gap",
1462
+ "type": "number",
1463
+ "required": false,
1464
+ "default": "16",
1465
+ "description": "Gap between elements in pixels"
1466
+ },
1467
+ {
1468
+ "name": "bgColor",
1469
+ "type": "string",
1470
+ "required": false,
1471
+ "default": "theme",
1472
+ "description": "Background color override"
1473
+ },
1474
+ {
1475
+ "name": "textColor",
1476
+ "type": "string",
1477
+ "required": false,
1478
+ "default": "theme",
1479
+ "description": "Text color override"
1480
+ },
1481
+ {
1482
+ "name": "accentColor",
1483
+ "type": "string",
1484
+ "required": false,
1485
+ "default": "theme",
1486
+ "description": "Accent/highlight color override"
1487
+ },
1488
+ {
1489
+ "name": "borderColor",
1490
+ "type": "string",
1491
+ "required": false,
1492
+ "default": "theme",
1493
+ "description": "Border color override"
1494
+ },
1495
+ {
1496
+ "name": "fontFamily",
1497
+ "type": "string",
1498
+ "required": false,
1499
+ "default": "theme",
1500
+ "description": "Font family override"
1501
+ },
1502
+ {
1503
+ "name": "style",
1504
+ "type": "CSSProperties",
1505
+ "required": false,
1506
+ "default": null,
1507
+ "description": "Custom inline styles"
1508
+ },
1509
+ {
1510
+ "name": "className",
1511
+ "type": "string",
1512
+ "required": false,
1513
+ "default": null,
1514
+ "description": "Custom CSS class"
1515
+ }
1516
+ ],
1517
+ "themeTokens": [
1518
+ "bgColor",
1519
+ "textColor",
1520
+ "accentColor",
1521
+ "borderColor",
1522
+ "fontFamily",
1523
+ "radius",
1524
+ "spacing",
1525
+ "cardBg",
1526
+ "cardRadius",
1527
+ "cardBorder",
1528
+ "inputBg",
1529
+ "inputText",
1530
+ "maxW",
1531
+ "px",
1532
+ "py",
1533
+ "gap"
1534
+ ],
1535
+ "aiHints": {
1536
+ "pageTypes": ["forms", "settings", "dashboard", "admin", "saas"],
1537
+ "placement": "body",
1538
+ "priority": 5,
1539
+ "sequenceOrder": 6,
1540
+ "pairsWellWith": ["forms.FormShell", "forms.InputField", "forms.ValidationWrapper"],
1541
+ "maxPerPage": 3,
1542
+ "isContainer": false
1543
+ }
1544
+ },
1545
+ {
1546
+ "id": "forms.ContactForm",
1547
+ "name": "ContactForm",
1548
+ "description": "Pre-built contact form with name, email, and message fields. Includes built-in layout, submit button, and optional title.",
1549
+ "whenToUse": "Use for contact pages, support forms, or any page where visitors need to send a message. Provides a complete, ready-to-use form composition.",
1550
+ "isShell": false,
1551
+ "props": [
1552
+ {
1553
+ "name": "as",
1554
+ "type": "ElementType",
1555
+ "required": false,
1556
+ "default": "\"form\"",
1557
+ "description": "HTML element or component to render as"
1558
+ },
1559
+ {
1560
+ "name": "title",
1561
+ "type": "string",
1562
+ "required": false,
1563
+ "default": "\"Contact us\"",
1564
+ "description": "Title text displayed at the top of the form"
1565
+ },
1566
+ {
1567
+ "name": "onSubmit",
1568
+ "type": "(data: ContactFormData) => void",
1569
+ "required": false,
1570
+ "default": null,
1571
+ "description": "Callback fired when the form is submitted with {name, email, message}"
1572
+ },
1573
+ {
1574
+ "name": "titleSize",
1575
+ "type": "number",
1576
+ "required": false,
1577
+ "default": "18",
1578
+ "description": "Font size of the title in pixels"
1579
+ },
1580
+ {
1581
+ "name": "labelSize",
1582
+ "type": "number",
1583
+ "required": false,
1584
+ "default": "13",
1585
+ "description": "Font size of field labels in pixels"
1586
+ },
1587
+ {
1588
+ "name": "inputSize",
1589
+ "type": "number",
1590
+ "required": false,
1591
+ "default": "14",
1592
+ "description": "Font size of input text in pixels"
1593
+ },
1594
+ {
1595
+ "name": "inputBg",
1596
+ "type": "string",
1597
+ "required": false,
1598
+ "default": "theme",
1599
+ "description": "Background color of input elements"
1600
+ },
1601
+ {
1602
+ "name": "maxW",
1603
+ "type": "number",
1604
+ "required": false,
1605
+ "default": "700",
1606
+ "description": "Maximum width in pixels"
1607
+ },
1608
+ {
1609
+ "name": "px",
1610
+ "type": "number",
1611
+ "required": false,
1612
+ "default": "24",
1613
+ "description": "Horizontal padding in pixels"
1614
+ },
1615
+ {
1616
+ "name": "py",
1617
+ "type": "number",
1618
+ "required": false,
1619
+ "default": "24",
1620
+ "description": "Vertical padding in pixels"
1621
+ },
1622
+ {
1623
+ "name": "radius",
1624
+ "type": "number",
1625
+ "required": false,
1626
+ "default": "16",
1627
+ "description": "Border radius in pixels"
1628
+ },
1629
+ {
1630
+ "name": "gap",
1631
+ "type": "number",
1632
+ "required": false,
1633
+ "default": "16",
1634
+ "description": "Gap between form fields in pixels"
1635
+ },
1636
+ {
1637
+ "name": "bgColor",
1638
+ "type": "string",
1639
+ "required": false,
1640
+ "default": "theme",
1641
+ "description": "Background color override"
1642
+ },
1643
+ {
1644
+ "name": "textColor",
1645
+ "type": "string",
1646
+ "required": false,
1647
+ "default": "theme",
1648
+ "description": "Text color override"
1649
+ },
1650
+ {
1651
+ "name": "accentColor",
1652
+ "type": "string",
1653
+ "required": false,
1654
+ "default": "theme",
1655
+ "description": "Accent/highlight color override"
1656
+ },
1657
+ {
1658
+ "name": "borderColor",
1659
+ "type": "string",
1660
+ "required": false,
1661
+ "default": "theme",
1662
+ "description": "Border color override"
1663
+ },
1664
+ {
1665
+ "name": "fontFamily",
1666
+ "type": "string",
1667
+ "required": false,
1668
+ "default": "theme",
1669
+ "description": "Font family override"
1670
+ },
1671
+ {
1672
+ "name": "style",
1673
+ "type": "CSSProperties",
1674
+ "required": false,
1675
+ "default": null,
1676
+ "description": "Custom inline styles"
1677
+ },
1678
+ {
1679
+ "name": "className",
1680
+ "type": "string",
1681
+ "required": false,
1682
+ "default": null,
1683
+ "description": "Custom CSS class"
1684
+ }
1685
+ ],
1686
+ "themeTokens": [
1687
+ "bgColor",
1688
+ "textColor",
1689
+ "accentColor",
1690
+ "borderColor",
1691
+ "fontFamily",
1692
+ "radius",
1693
+ "spacing",
1694
+ "cardBg",
1695
+ "cardRadius",
1696
+ "cardBorder",
1697
+ "inputBg",
1698
+ "inputText",
1699
+ "maxW",
1700
+ "px",
1701
+ "py",
1702
+ "gap"
1703
+ ],
1704
+ "aiHints": {
1705
+ "pageTypes": [
1706
+ "landing",
1707
+ "marketing",
1708
+ "contact",
1709
+ "portfolio",
1710
+ "saas",
1711
+ "restaurant",
1712
+ "fitness",
1713
+ "education",
1714
+ "event",
1715
+ "agency",
1716
+ "realestate",
1717
+ "health",
1718
+ "nonprofit",
1719
+ "community"
1720
+ ],
1721
+ "placement": "body",
1722
+ "priority": 8,
1723
+ "sequenceOrder": 6,
1724
+ "pairsWellWith": [
1725
+ "forms.FormShell",
1726
+ "content.HeadingSection",
1727
+ "forms.ValidationWrapper",
1728
+ "forms.Captcha"
1729
+ ],
1730
+ "maxPerPage": 1,
1731
+ "isContainer": true
1732
+ }
1733
+ },
1734
+ {
1735
+ "id": "forms.NewsletterSignup",
1736
+ "name": "NewsletterSignup",
1737
+ "description": "Email capture form with title, subtitle, email input, and subscribe button. Designed for newsletter and mailing list signups.",
1738
+ "whenToUse": "Use on landing pages, blog sidebars, footers, or marketing pages to capture email addresses for newsletters and mailing lists.",
1739
+ "isShell": false,
1740
+ "props": [
1741
+ {
1742
+ "name": "as",
1743
+ "type": "ElementType",
1744
+ "required": false,
1745
+ "default": "\"form\"",
1746
+ "description": "HTML element or component to render as"
1747
+ },
1748
+ {
1749
+ "name": "title",
1750
+ "type": "string",
1751
+ "required": false,
1752
+ "default": "\"Stay Updated\"",
1753
+ "description": "Title text displayed above the form"
1754
+ },
1755
+ {
1756
+ "name": "subtitle",
1757
+ "type": "string",
1758
+ "required": false,
1759
+ "default": "\"Get the latest news...\"",
1760
+ "description": "Subtitle text displayed below the title"
1761
+ },
1762
+ {
1763
+ "name": "onSubmit",
1764
+ "type": "(email: string) => void",
1765
+ "required": false,
1766
+ "default": null,
1767
+ "description": "Callback fired when the form is submitted with the email"
1768
+ },
1769
+ {
1770
+ "name": "buttonText",
1771
+ "type": "string",
1772
+ "required": false,
1773
+ "default": "\"Subscribe\"",
1774
+ "description": "Text for the submit button"
1775
+ },
1776
+ {
1777
+ "name": "titleSize",
1778
+ "type": "number",
1779
+ "required": false,
1780
+ "default": "20",
1781
+ "description": "Font size of the title in pixels"
1782
+ },
1783
+ {
1784
+ "name": "subtitleSize",
1785
+ "type": "number",
1786
+ "required": false,
1787
+ "default": "14",
1788
+ "description": "Font size of the subtitle in pixels"
1789
+ },
1790
+ {
1791
+ "name": "inputSize",
1792
+ "type": "number",
1793
+ "required": false,
1794
+ "default": "14",
1795
+ "description": "Font size of the email input in pixels"
1796
+ },
1797
+ {
1798
+ "name": "inputBg",
1799
+ "type": "string",
1800
+ "required": false,
1801
+ "default": "theme",
1802
+ "description": "Background color of the email input"
1803
+ },
1804
+ {
1805
+ "name": "maxW",
1806
+ "type": "number",
1807
+ "required": false,
1808
+ "default": "700",
1809
+ "description": "Maximum width in pixels"
1810
+ },
1811
+ {
1812
+ "name": "px",
1813
+ "type": "number",
1814
+ "required": false,
1815
+ "default": "24",
1816
+ "description": "Horizontal padding in pixels"
1817
+ },
1818
+ {
1819
+ "name": "py",
1820
+ "type": "number",
1821
+ "required": false,
1822
+ "default": "24",
1823
+ "description": "Vertical padding in pixels"
1824
+ },
1825
+ {
1826
+ "name": "radius",
1827
+ "type": "number",
1828
+ "required": false,
1829
+ "default": "16",
1830
+ "description": "Border radius in pixels"
1831
+ },
1832
+ {
1833
+ "name": "gap",
1834
+ "type": "number",
1835
+ "required": false,
1836
+ "default": "16",
1837
+ "description": "Gap between elements in pixels"
1838
+ },
1839
+ {
1840
+ "name": "bgColor",
1841
+ "type": "string",
1842
+ "required": false,
1843
+ "default": "theme",
1844
+ "description": "Background color override"
1845
+ },
1846
+ {
1847
+ "name": "textColor",
1848
+ "type": "string",
1849
+ "required": false,
1850
+ "default": "theme",
1851
+ "description": "Text color override"
1852
+ },
1853
+ {
1854
+ "name": "accentColor",
1855
+ "type": "string",
1856
+ "required": false,
1857
+ "default": "theme",
1858
+ "description": "Accent/highlight color override"
1859
+ },
1860
+ {
1861
+ "name": "borderColor",
1862
+ "type": "string",
1863
+ "required": false,
1864
+ "default": "theme",
1865
+ "description": "Border color override"
1866
+ },
1867
+ {
1868
+ "name": "fontFamily",
1869
+ "type": "string",
1870
+ "required": false,
1871
+ "default": "theme",
1872
+ "description": "Font family override"
1873
+ },
1874
+ {
1875
+ "name": "style",
1876
+ "type": "CSSProperties",
1877
+ "required": false,
1878
+ "default": null,
1879
+ "description": "Custom inline styles"
1880
+ },
1881
+ {
1882
+ "name": "className",
1883
+ "type": "string",
1884
+ "required": false,
1885
+ "default": null,
1886
+ "description": "Custom CSS class"
1887
+ }
1888
+ ],
1889
+ "themeTokens": [
1890
+ "bgColor",
1891
+ "textColor",
1892
+ "accentColor",
1893
+ "borderColor",
1894
+ "fontFamily",
1895
+ "radius",
1896
+ "spacing",
1897
+ "cardBg",
1898
+ "cardRadius",
1899
+ "cardBorder",
1900
+ "inputBg",
1901
+ "inputText",
1902
+ "maxW",
1903
+ "px",
1904
+ "py",
1905
+ "gap"
1906
+ ],
1907
+ "aiHints": {
1908
+ "pageTypes": [
1909
+ "landing",
1910
+ "marketing",
1911
+ "blog",
1912
+ "portfolio",
1913
+ "saas",
1914
+ "restaurant",
1915
+ "fitness",
1916
+ "education",
1917
+ "community",
1918
+ "event"
1919
+ ],
1920
+ "placement": "body",
1921
+ "priority": 8,
1922
+ "sequenceOrder": 7,
1923
+ "pairsWellWith": ["content.HeadingSection", "forms.FormShell", "forms.Captcha"],
1924
+ "maxPerPage": 1,
1925
+ "isContainer": true
1926
+ }
1927
+ },
1928
+ {
1929
+ "id": "forms.MultiStepWizard",
1930
+ "name": "MultiStepWizard",
1931
+ "description": "Multi-step form wizard with step navigation, progress indication, and per-step validation. Supports back/next navigation and a final submit.",
1932
+ "whenToUse": "Use for complex forms that benefit from being split into multiple steps, such as onboarding flows, checkout processes, registration wizards, or configuration setups.",
1933
+ "isShell": false,
1934
+ "props": [
1935
+ {
1936
+ "name": "as",
1937
+ "type": "ElementType",
1938
+ "required": false,
1939
+ "default": "\"div\"",
1940
+ "description": "HTML element or component to render as"
1941
+ },
1942
+ {
1943
+ "name": "steps",
1944
+ "type": "WizardStep[]",
1945
+ "required": true,
1946
+ "default": null,
1947
+ "description": "Array of wizard steps: {title, description?, content: ReactNode, validate?: () => string[]}"
1948
+ },
1949
+ {
1950
+ "name": "onFinish",
1951
+ "type": "() => void",
1952
+ "required": false,
1953
+ "default": null,
1954
+ "description": "Callback fired when the final step is completed"
1955
+ },
1956
+ {
1957
+ "name": "titleSize",
1958
+ "type": "number",
1959
+ "required": false,
1960
+ "default": "18",
1961
+ "description": "Font size of step titles in pixels"
1962
+ },
1963
+ {
1964
+ "name": "descSize",
1965
+ "type": "number",
1966
+ "required": false,
1967
+ "default": "14",
1968
+ "description": "Font size of step descriptions in pixels"
1969
+ },
1970
+ {
1971
+ "name": "navBtnSize",
1972
+ "type": "number",
1973
+ "required": false,
1974
+ "default": "14",
1975
+ "description": "Font size of navigation buttons in pixels"
1976
+ },
1977
+ {
1978
+ "name": "maxW",
1979
+ "type": "number",
1980
+ "required": false,
1981
+ "default": "700",
1982
+ "description": "Maximum width in pixels"
1983
+ },
1984
+ {
1985
+ "name": "px",
1986
+ "type": "number",
1987
+ "required": false,
1988
+ "default": "24",
1989
+ "description": "Horizontal padding in pixels"
1990
+ },
1991
+ {
1992
+ "name": "py",
1993
+ "type": "number",
1994
+ "required": false,
1995
+ "default": "24",
1996
+ "description": "Vertical padding in pixels"
1997
+ },
1998
+ {
1999
+ "name": "radius",
2000
+ "type": "number",
2001
+ "required": false,
2002
+ "default": "16",
2003
+ "description": "Border radius in pixels"
2004
+ },
2005
+ {
2006
+ "name": "gap",
2007
+ "type": "number",
2008
+ "required": false,
2009
+ "default": "16",
2010
+ "description": "Gap between elements in pixels"
2011
+ },
2012
+ {
2013
+ "name": "bgColor",
2014
+ "type": "string",
2015
+ "required": false,
2016
+ "default": "theme",
2017
+ "description": "Background color override"
2018
+ },
2019
+ {
2020
+ "name": "textColor",
2021
+ "type": "string",
2022
+ "required": false,
2023
+ "default": "theme",
2024
+ "description": "Text color override"
2025
+ },
2026
+ {
2027
+ "name": "accentColor",
2028
+ "type": "string",
2029
+ "required": false,
2030
+ "default": "theme",
2031
+ "description": "Accent/highlight color override"
2032
+ },
2033
+ {
2034
+ "name": "borderColor",
2035
+ "type": "string",
2036
+ "required": false,
2037
+ "default": "theme",
2038
+ "description": "Border color override"
2039
+ },
2040
+ {
2041
+ "name": "fontFamily",
2042
+ "type": "string",
2043
+ "required": false,
2044
+ "default": "theme",
2045
+ "description": "Font family override"
2046
+ },
2047
+ {
2048
+ "name": "style",
2049
+ "type": "CSSProperties",
2050
+ "required": false,
2051
+ "default": null,
2052
+ "description": "Custom inline styles"
2053
+ },
2054
+ {
2055
+ "name": "className",
2056
+ "type": "string",
2057
+ "required": false,
2058
+ "default": null,
2059
+ "description": "Custom CSS class"
2060
+ }
2061
+ ],
2062
+ "themeTokens": [
2063
+ "bgColor",
2064
+ "textColor",
2065
+ "accentColor",
2066
+ "borderColor",
2067
+ "fontFamily",
2068
+ "radius",
2069
+ "spacing",
2070
+ "cardBg",
2071
+ "cardRadius",
2072
+ "cardBorder",
2073
+ "inputBg",
2074
+ "inputText",
2075
+ "maxW",
2076
+ "px",
2077
+ "py",
2078
+ "gap"
2079
+ ],
2080
+ "aiHints": {
2081
+ "pageTypes": [
2082
+ "onboarding",
2083
+ "ecommerce",
2084
+ "saas",
2085
+ "forms",
2086
+ "admin",
2087
+ "event",
2088
+ "education",
2089
+ "agency",
2090
+ "realestate"
2091
+ ],
2092
+ "placement": "body",
2093
+ "priority": 7,
2094
+ "sequenceOrder": 4,
2095
+ "pairsWellWith": [
2096
+ "navigation.Stepper",
2097
+ "forms.FormShell",
2098
+ "forms.InputField",
2099
+ "forms.ValidationWrapper"
2100
+ ],
2101
+ "maxPerPage": 1,
2102
+ "isContainer": true
2103
+ }
2104
+ },
2105
+ {
2106
+ "id": "forms.Captcha",
2107
+ "name": "Captcha",
2108
+ "description": "Anti-bot verification component with checkbox or math challenge modes. Prevents automated form submissions.",
2109
+ "whenToUse": "Use before submit buttons on public-facing forms like contact forms, registration, and login pages to prevent spam and bot submissions.",
2110
+ "isShell": false,
2111
+ "props": [
2112
+ {
2113
+ "name": "as",
2114
+ "type": "ElementType",
2115
+ "required": false,
2116
+ "default": "\"div\"",
2117
+ "description": "HTML element or component to render as"
2118
+ },
2119
+ {
2120
+ "name": "mode",
2121
+ "type": "\"checkbox\" | \"math\"",
2122
+ "required": false,
2123
+ "default": "\"checkbox\"",
2124
+ "description": "Captcha mode: simple checkbox or math challenge"
2125
+ },
2126
+ {
2127
+ "name": "label",
2128
+ "type": "string",
2129
+ "required": false,
2130
+ "default": "\"I'm not a robot\"",
2131
+ "description": "Label text for the captcha element"
2132
+ },
2133
+ {
2134
+ "name": "onVerify",
2135
+ "type": "(verified: boolean) => void",
2136
+ "required": false,
2137
+ "default": null,
2138
+ "description": "Callback fired when verification succeeds or fails"
2139
+ },
2140
+ {
2141
+ "name": "labelSize",
2142
+ "type": "number",
2143
+ "required": false,
2144
+ "default": "14",
2145
+ "description": "Font size of the label in pixels"
2146
+ },
2147
+ {
2148
+ "name": "inputBg",
2149
+ "type": "string",
2150
+ "required": false,
2151
+ "default": "theme",
2152
+ "description": "Background color of the captcha input area"
2153
+ },
2154
+ {
2155
+ "name": "maxW",
2156
+ "type": "number",
2157
+ "required": false,
2158
+ "default": "700",
2159
+ "description": "Maximum width in pixels"
2160
+ },
2161
+ {
2162
+ "name": "px",
2163
+ "type": "number",
2164
+ "required": false,
2165
+ "default": "24",
2166
+ "description": "Horizontal padding in pixels"
2167
+ },
2168
+ {
2169
+ "name": "py",
2170
+ "type": "number",
2171
+ "required": false,
2172
+ "default": "24",
2173
+ "description": "Vertical padding in pixels"
2174
+ },
2175
+ {
2176
+ "name": "radius",
2177
+ "type": "number",
2178
+ "required": false,
2179
+ "default": "16",
2180
+ "description": "Border radius in pixels"
2181
+ },
2182
+ {
2183
+ "name": "gap",
2184
+ "type": "number",
2185
+ "required": false,
2186
+ "default": "16",
2187
+ "description": "Gap between elements in pixels"
2188
+ },
2189
+ {
2190
+ "name": "bgColor",
2191
+ "type": "string",
2192
+ "required": false,
2193
+ "default": "theme",
2194
+ "description": "Background color override"
2195
+ },
2196
+ {
2197
+ "name": "textColor",
2198
+ "type": "string",
2199
+ "required": false,
2200
+ "default": "theme",
2201
+ "description": "Text color override"
2202
+ },
2203
+ {
2204
+ "name": "accentColor",
2205
+ "type": "string",
2206
+ "required": false,
2207
+ "default": "theme",
2208
+ "description": "Accent/highlight color override"
2209
+ },
2210
+ {
2211
+ "name": "borderColor",
2212
+ "type": "string",
2213
+ "required": false,
2214
+ "default": "theme",
2215
+ "description": "Border color override"
2216
+ },
2217
+ {
2218
+ "name": "fontFamily",
2219
+ "type": "string",
2220
+ "required": false,
2221
+ "default": "theme",
2222
+ "description": "Font family override"
2223
+ },
2224
+ {
2225
+ "name": "style",
2226
+ "type": "CSSProperties",
2227
+ "required": false,
2228
+ "default": null,
2229
+ "description": "Custom inline styles"
2230
+ },
2231
+ {
2232
+ "name": "className",
2233
+ "type": "string",
2234
+ "required": false,
2235
+ "default": null,
2236
+ "description": "Custom CSS class"
2237
+ }
2238
+ ],
2239
+ "themeTokens": [
2240
+ "bgColor",
2241
+ "textColor",
2242
+ "accentColor",
2243
+ "borderColor",
2244
+ "fontFamily",
2245
+ "radius",
2246
+ "spacing",
2247
+ "cardBg",
2248
+ "cardRadius",
2249
+ "cardBorder",
2250
+ "inputBg",
2251
+ "inputText",
2252
+ "maxW",
2253
+ "px",
2254
+ "py",
2255
+ "gap"
2256
+ ],
2257
+ "aiHints": {
2258
+ "pageTypes": ["forms", "auth", "contact", "landing"],
2259
+ "placement": "body",
2260
+ "priority": 4,
2261
+ "sequenceOrder": 7,
2262
+ "pairsWellWith": ["forms.ContactForm", "forms.NewsletterSignup", "forms.FormShell"],
2263
+ "maxPerPage": 1,
2264
+ "isContainer": false
2265
+ }
2266
+ },
2267
+ {
2268
+ "id": "forms.AddressAutocomplete",
2269
+ "name": "AddressAutocomplete",
2270
+ "description": "Address input with type-ahead suggestions dropdown. Displays matching address suggestions as the user types.",
2271
+ "whenToUse": "Use for address entry in checkout forms, shipping forms, registration, or any form that requires a physical address with autocomplete suggestions.",
2272
+ "isShell": false,
2273
+ "props": [
2274
+ {
2275
+ "name": "as",
2276
+ "type": "ElementType",
2277
+ "required": false,
2278
+ "default": "\"div\"",
2279
+ "description": "HTML element or component to render as"
2280
+ },
2281
+ {
2282
+ "name": "label",
2283
+ "type": "string",
2284
+ "required": false,
2285
+ "default": "\"Address\"",
2286
+ "description": "Label text displayed above the input"
2287
+ },
2288
+ {
2289
+ "name": "name",
2290
+ "type": "string",
2291
+ "required": true,
2292
+ "default": null,
2293
+ "description": "Form field name attribute"
2294
+ },
2295
+ {
2296
+ "name": "suggestions",
2297
+ "type": "string[]",
2298
+ "required": false,
2299
+ "default": "[\"123 Main St, Springfield, IL\", \"456 Oak Ave, Portland, OR\", \"789 Pine Rd, Austin, TX\", \"321 Elm Blvd, Denver, CO\", \"654 Maple Dr, Seattle, WA\"]",
2300
+ "description": "Array of address suggestion strings to display"
2301
+ },
2302
+ {
2303
+ "name": "onQuery",
2304
+ "type": "(query: string) => void",
2305
+ "required": false,
2306
+ "default": null,
2307
+ "description": "Callback fired when the user types to fetch new suggestions"
2308
+ },
2309
+ {
2310
+ "name": "placeholder",
2311
+ "type": "string",
2312
+ "required": false,
2313
+ "default": "\"Start typing your address...\"",
2314
+ "description": "Placeholder text when input is empty"
2315
+ },
2316
+ {
2317
+ "name": "onSelect",
2318
+ "type": "(address: string) => void",
2319
+ "required": false,
2320
+ "default": null,
2321
+ "description": "Callback fired when a suggestion is selected"
2322
+ },
2323
+ {
2324
+ "name": "labelSize",
2325
+ "type": "number",
2326
+ "required": false,
2327
+ "default": "13",
2328
+ "description": "Font size of the label in pixels"
2329
+ },
2330
+ {
2331
+ "name": "inputSize",
2332
+ "type": "number",
2333
+ "required": false,
2334
+ "default": "14",
2335
+ "description": "Font size of the input text in pixels"
2336
+ },
2337
+ {
2338
+ "name": "inputBg",
2339
+ "type": "string",
2340
+ "required": false,
2341
+ "default": "theme",
2342
+ "description": "Background color of the input element"
2343
+ },
2344
+ {
2345
+ "name": "maxW",
2346
+ "type": "number",
2347
+ "required": false,
2348
+ "default": "700",
2349
+ "description": "Maximum width in pixels"
2350
+ },
2351
+ {
2352
+ "name": "px",
2353
+ "type": "number",
2354
+ "required": false,
2355
+ "default": "24",
2356
+ "description": "Horizontal padding in pixels"
2357
+ },
2358
+ {
2359
+ "name": "py",
2360
+ "type": "number",
2361
+ "required": false,
2362
+ "default": "24",
2363
+ "description": "Vertical padding in pixels"
2364
+ },
2365
+ {
2366
+ "name": "radius",
2367
+ "type": "number",
2368
+ "required": false,
2369
+ "default": "16",
2370
+ "description": "Border radius in pixels"
2371
+ },
2372
+ {
2373
+ "name": "gap",
2374
+ "type": "number",
2375
+ "required": false,
2376
+ "default": "16",
2377
+ "description": "Gap between elements in pixels"
2378
+ },
2379
+ {
2380
+ "name": "bgColor",
2381
+ "type": "string",
2382
+ "required": false,
2383
+ "default": "theme",
2384
+ "description": "Background color override"
2385
+ },
2386
+ {
2387
+ "name": "textColor",
2388
+ "type": "string",
2389
+ "required": false,
2390
+ "default": "theme",
2391
+ "description": "Text color override"
2392
+ },
2393
+ {
2394
+ "name": "accentColor",
2395
+ "type": "string",
2396
+ "required": false,
2397
+ "default": "theme",
2398
+ "description": "Accent/highlight color override"
2399
+ },
2400
+ {
2401
+ "name": "borderColor",
2402
+ "type": "string",
2403
+ "required": false,
2404
+ "default": "theme",
2405
+ "description": "Border color override"
2406
+ },
2407
+ {
2408
+ "name": "fontFamily",
2409
+ "type": "string",
2410
+ "required": false,
2411
+ "default": "theme",
2412
+ "description": "Font family override"
2413
+ },
2414
+ {
2415
+ "name": "style",
2416
+ "type": "CSSProperties",
2417
+ "required": false,
2418
+ "default": null,
2419
+ "description": "Custom inline styles"
2420
+ },
2421
+ {
2422
+ "name": "className",
2423
+ "type": "string",
2424
+ "required": false,
2425
+ "default": null,
2426
+ "description": "Custom CSS class"
2427
+ }
2428
+ ],
2429
+ "themeTokens": [
2430
+ "bgColor",
2431
+ "textColor",
2432
+ "accentColor",
2433
+ "borderColor",
2434
+ "fontFamily",
2435
+ "radius",
2436
+ "spacing",
2437
+ "cardBg",
2438
+ "cardRadius",
2439
+ "cardBorder",
2440
+ "inputBg",
2441
+ "inputText",
2442
+ "maxW",
2443
+ "px",
2444
+ "py",
2445
+ "gap"
2446
+ ],
2447
+ "aiHints": {
2448
+ "pageTypes": ["ecommerce", "forms", "checkout", "onboarding"],
2449
+ "placement": "body",
2450
+ "priority": 5,
2451
+ "sequenceOrder": 5,
2452
+ "pairsWellWith": [
2453
+ "forms.FormShell",
2454
+ "forms.InputField",
2455
+ "forms.SelectDropdown",
2456
+ "forms.ValidationWrapper"
2457
+ ],
2458
+ "maxPerPage": 2,
2459
+ "isContainer": false
2460
+ }
2461
+ },
2462
+ {
2463
+ "id": "forms.ValidationWrapper",
2464
+ "name": "ValidationWrapper",
2465
+ "description": "Wraps form content to display validation errors or success messages. Shows a list of error strings or a success confirmation.",
2466
+ "whenToUse": "Use to wrap form sections or entire forms to provide a consolidated view of validation errors or a success state after submission.",
2467
+ "isShell": false,
2468
+ "props": [
2469
+ {
2470
+ "name": "as",
2471
+ "type": "ElementType",
2472
+ "required": false,
2473
+ "default": "\"div\"",
2474
+ "description": "HTML element or component to render as"
2475
+ },
2476
+ {
2477
+ "name": "errors",
2478
+ "type": "string[]",
2479
+ "required": false,
2480
+ "default": "[]",
2481
+ "description": "Array of error message strings to display"
2482
+ },
2483
+ {
2484
+ "name": "title",
2485
+ "type": "string",
2486
+ "required": false,
2487
+ "default": "\"Please fix the following\"",
2488
+ "description": "Title text displayed above the error list"
2489
+ },
2490
+ {
2491
+ "name": "children",
2492
+ "type": "ReactNode",
2493
+ "required": false,
2494
+ "default": null,
2495
+ "description": "Child form content to wrap"
2496
+ },
2497
+ {
2498
+ "name": "success",
2499
+ "type": "boolean",
2500
+ "required": false,
2501
+ "default": "false",
2502
+ "description": "Whether to show the success state instead of errors"
2503
+ },
2504
+ {
2505
+ "name": "successMessage",
2506
+ "type": "string",
2507
+ "required": false,
2508
+ "default": "\"All validations passed!\"",
2509
+ "description": "Message displayed when in success state"
2510
+ },
2511
+ {
2512
+ "name": "titleSize",
2513
+ "type": "number",
2514
+ "required": false,
2515
+ "default": "14",
2516
+ "description": "Font size of the title in pixels"
2517
+ },
2518
+ {
2519
+ "name": "maxW",
2520
+ "type": "number",
2521
+ "required": false,
2522
+ "default": "700",
2523
+ "description": "Maximum width in pixels"
2524
+ },
2525
+ {
2526
+ "name": "px",
2527
+ "type": "number",
2528
+ "required": false,
2529
+ "default": "24",
2530
+ "description": "Horizontal padding in pixels"
2531
+ },
2532
+ {
2533
+ "name": "py",
2534
+ "type": "number",
2535
+ "required": false,
2536
+ "default": "24",
2537
+ "description": "Vertical padding in pixels"
2538
+ },
2539
+ {
2540
+ "name": "radius",
2541
+ "type": "number",
2542
+ "required": false,
2543
+ "default": "16",
2544
+ "description": "Border radius in pixels"
2545
+ },
2546
+ {
2547
+ "name": "gap",
2548
+ "type": "number",
2549
+ "required": false,
2550
+ "default": "16",
2551
+ "description": "Gap between elements in pixels"
2552
+ },
2553
+ {
2554
+ "name": "bgColor",
2555
+ "type": "string",
2556
+ "required": false,
2557
+ "default": "theme",
2558
+ "description": "Background color override"
2559
+ },
2560
+ {
2561
+ "name": "textColor",
2562
+ "type": "string",
2563
+ "required": false,
2564
+ "default": "theme",
2565
+ "description": "Text color override"
2566
+ },
2567
+ {
2568
+ "name": "accentColor",
2569
+ "type": "string",
2570
+ "required": false,
2571
+ "default": "theme",
2572
+ "description": "Accent/highlight color override"
2573
+ },
2574
+ {
2575
+ "name": "borderColor",
2576
+ "type": "string",
2577
+ "required": false,
2578
+ "default": "theme",
2579
+ "description": "Border color override"
2580
+ },
2581
+ {
2582
+ "name": "fontFamily",
2583
+ "type": "string",
2584
+ "required": false,
2585
+ "default": "theme",
2586
+ "description": "Font family override"
2587
+ },
2588
+ {
2589
+ "name": "style",
2590
+ "type": "CSSProperties",
2591
+ "required": false,
2592
+ "default": null,
2593
+ "description": "Custom inline styles"
2594
+ },
2595
+ {
2596
+ "name": "className",
2597
+ "type": "string",
2598
+ "required": false,
2599
+ "default": null,
2600
+ "description": "Custom CSS class"
2601
+ }
2602
+ ],
2603
+ "themeTokens": [
2604
+ "bgColor",
2605
+ "textColor",
2606
+ "accentColor",
2607
+ "borderColor",
2608
+ "fontFamily",
2609
+ "radius",
2610
+ "spacing",
2611
+ "cardBg",
2612
+ "cardRadius",
2613
+ "cardBorder",
2614
+ "inputBg",
2615
+ "inputText",
2616
+ "maxW",
2617
+ "px",
2618
+ "py",
2619
+ "gap"
2620
+ ],
2621
+ "aiHints": {
2622
+ "pageTypes": ["forms", "contact", "auth", "settings", "ecommerce", "saas"],
2623
+ "placement": "body",
2624
+ "priority": 4,
2625
+ "sequenceOrder": 5,
2626
+ "pairsWellWith": [
2627
+ "forms.FormShell",
2628
+ "forms.InputField",
2629
+ "forms.ContactForm",
2630
+ "forms.MultiStepWizard"
2631
+ ],
2632
+ "maxPerPage": 3,
2633
+ "isContainer": true
2634
+ }
2635
+ }
2636
+ ]
2637
+ }