@electroplix/components 0.4.1 → 0.5.0-alpha.3

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 +76 -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,954 @@
1
+ {
2
+ "$schema": "electroplix-component-metadata-v1",
3
+ "category": "modals",
4
+ "label": "Modals",
5
+ "description": "Overlay components including dialogs, tooltips, toasts, popups, and loading screens",
6
+ "themeKey": "modals",
7
+ "icon": "layers",
8
+ "sortOrder": 12,
9
+ "components": [
10
+ {
11
+ "id": "modals.OverlayBase",
12
+ "name": "OverlayBase",
13
+ "description": "Base overlay container with backdrop. Provides the foundational overlay shell for all modal-type components.",
14
+ "whenToUse": "Use as the base shell for building custom overlay components. Provides backdrop, positioning, and close behavior out of the box.",
15
+ "isShell": true,
16
+ "props": [
17
+ {
18
+ "name": "isOpen",
19
+ "type": "boolean",
20
+ "required": true,
21
+ "default": null,
22
+ "description": "Whether the overlay is visible"
23
+ },
24
+ {
25
+ "name": "onClose",
26
+ "type": "() => void",
27
+ "required": false,
28
+ "default": null,
29
+ "description": "Callback when the overlay is closed"
30
+ },
31
+ {
32
+ "name": "children",
33
+ "type": "ReactNode",
34
+ "required": false,
35
+ "default": null,
36
+ "description": "Content to render inside the overlay"
37
+ },
38
+ {
39
+ "name": "maxW",
40
+ "type": "number",
41
+ "required": false,
42
+ "default": "480",
43
+ "description": "Maximum width of the overlay panel in pixels"
44
+ },
45
+ {
46
+ "name": "showClose",
47
+ "type": "boolean",
48
+ "required": false,
49
+ "default": "true",
50
+ "description": "Whether to show the close button"
51
+ },
52
+ {
53
+ "name": "position",
54
+ "type": "\"center\" | \"top\" | \"bottom\"",
55
+ "required": false,
56
+ "default": "\"center\"",
57
+ "description": "Vertical position of the overlay panel"
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": "accentColor",
75
+ "type": "string",
76
+ "required": false,
77
+ "default": "theme",
78
+ "description": "Accent color override"
79
+ },
80
+ {
81
+ "name": "borderColor",
82
+ "type": "string",
83
+ "required": false,
84
+ "default": "theme",
85
+ "description": "Border color override"
86
+ },
87
+ {
88
+ "name": "fontFamily",
89
+ "type": "string",
90
+ "required": false,
91
+ "default": "theme",
92
+ "description": "Font family override"
93
+ }
94
+ ],
95
+ "themeTokens": [
96
+ "bgColor",
97
+ "textColor",
98
+ "accentColor",
99
+ "borderColor",
100
+ "fontFamily",
101
+ "radius",
102
+ "spacing"
103
+ ],
104
+ "aiHints": {
105
+ "pageTypes": [
106
+ "landing",
107
+ "marketing",
108
+ "dashboard",
109
+ "blog",
110
+ "ecommerce",
111
+ "portfolio",
112
+ "saas"
113
+ ],
114
+ "placement": "overlay",
115
+ "priority": 4,
116
+ "sequenceOrder": 10,
117
+ "pairsWellWith": ["modals.GenericModal", "modals.ConfirmDialog", "modals.FormDialog"],
118
+ "maxPerPage": 1,
119
+ "isContainer": true
120
+ }
121
+ },
122
+ {
123
+ "id": "modals.GenericModal",
124
+ "name": "GenericModal",
125
+ "description": "Standard modal dialog with title and footer. A general-purpose modal for displaying any content with consistent header and footer areas.",
126
+ "whenToUse": "Use for general-purpose dialogs that need a title bar and optional footer actions. Suitable for information display, settings panels, or any content that requires a modal presentation.",
127
+ "isShell": false,
128
+ "props": [
129
+ {
130
+ "name": "isOpen",
131
+ "type": "boolean",
132
+ "required": true,
133
+ "default": null,
134
+ "description": "Whether the modal is visible"
135
+ },
136
+ {
137
+ "name": "title",
138
+ "type": "string",
139
+ "required": false,
140
+ "default": null,
141
+ "description": "Title displayed in the modal header"
142
+ },
143
+ {
144
+ "name": "onClose",
145
+ "type": "() => void",
146
+ "required": false,
147
+ "default": null,
148
+ "description": "Callback when the modal is closed"
149
+ },
150
+ {
151
+ "name": "maxW",
152
+ "type": "number",
153
+ "required": false,
154
+ "default": null,
155
+ "description": "Maximum width of the modal in pixels"
156
+ },
157
+ {
158
+ "name": "children",
159
+ "type": "ReactNode",
160
+ "required": false,
161
+ "default": null,
162
+ "description": "Content to render inside the modal body"
163
+ },
164
+ {
165
+ "name": "footer",
166
+ "type": "ReactNode",
167
+ "required": false,
168
+ "default": null,
169
+ "description": "Content to render in the modal footer"
170
+ },
171
+ {
172
+ "name": "bgColor",
173
+ "type": "string",
174
+ "required": false,
175
+ "default": "theme",
176
+ "description": "Background color override"
177
+ },
178
+ {
179
+ "name": "textColor",
180
+ "type": "string",
181
+ "required": false,
182
+ "default": "theme",
183
+ "description": "Text color override"
184
+ },
185
+ {
186
+ "name": "accentColor",
187
+ "type": "string",
188
+ "required": false,
189
+ "default": "theme",
190
+ "description": "Accent color override"
191
+ },
192
+ {
193
+ "name": "borderColor",
194
+ "type": "string",
195
+ "required": false,
196
+ "default": "theme",
197
+ "description": "Border color override"
198
+ },
199
+ {
200
+ "name": "fontFamily",
201
+ "type": "string",
202
+ "required": false,
203
+ "default": "theme",
204
+ "description": "Font family override"
205
+ }
206
+ ],
207
+ "themeTokens": [
208
+ "bgColor",
209
+ "textColor",
210
+ "accentColor",
211
+ "borderColor",
212
+ "fontFamily",
213
+ "radius",
214
+ "spacing"
215
+ ],
216
+ "aiHints": {
217
+ "pageTypes": [
218
+ "landing",
219
+ "marketing",
220
+ "dashboard",
221
+ "blog",
222
+ "ecommerce",
223
+ "portfolio",
224
+ "saas"
225
+ ],
226
+ "placement": "overlay",
227
+ "priority": 7,
228
+ "sequenceOrder": 10,
229
+ "pairsWellWith": ["modals.OverlayBase", "modals.ConfirmDialog", "forms.FormShell"],
230
+ "maxPerPage": 3,
231
+ "isContainer": true
232
+ }
233
+ },
234
+ {
235
+ "id": "modals.ConfirmDialog",
236
+ "name": "ConfirmDialog",
237
+ "description": "Confirmation dialog with confirm and cancel actions. Supports a danger variant for destructive operations.",
238
+ "whenToUse": "Use when the user needs to confirm a significant action such as deleting data, cancelling a subscription, or submitting irreversible changes.",
239
+ "isShell": false,
240
+ "props": [
241
+ {
242
+ "name": "isOpen",
243
+ "type": "boolean",
244
+ "required": true,
245
+ "default": null,
246
+ "description": "Whether the dialog is visible"
247
+ },
248
+ {
249
+ "name": "title",
250
+ "type": "string",
251
+ "required": false,
252
+ "default": "\"Are you sure?\"",
253
+ "description": "Title displayed in the dialog header"
254
+ },
255
+ {
256
+ "name": "message",
257
+ "type": "string",
258
+ "required": false,
259
+ "default": null,
260
+ "description": "Descriptive message displayed in the dialog body"
261
+ },
262
+ {
263
+ "name": "confirmLabel",
264
+ "type": "string",
265
+ "required": false,
266
+ "default": "\"Confirm\"",
267
+ "description": "Label for the confirm button"
268
+ },
269
+ {
270
+ "name": "cancelLabel",
271
+ "type": "string",
272
+ "required": false,
273
+ "default": "\"Cancel\"",
274
+ "description": "Label for the cancel button"
275
+ },
276
+ {
277
+ "name": "danger",
278
+ "type": "boolean",
279
+ "required": false,
280
+ "default": "false",
281
+ "description": "Whether to style the confirm button as a destructive action"
282
+ },
283
+ {
284
+ "name": "onConfirm",
285
+ "type": "() => void",
286
+ "required": false,
287
+ "default": null,
288
+ "description": "Callback when the confirm button is clicked"
289
+ },
290
+ {
291
+ "name": "onCancel",
292
+ "type": "() => void",
293
+ "required": false,
294
+ "default": null,
295
+ "description": "Callback when the cancel button is clicked"
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 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
+ "themeTokens": [
334
+ "bgColor",
335
+ "textColor",
336
+ "accentColor",
337
+ "borderColor",
338
+ "fontFamily",
339
+ "radius",
340
+ "spacing"
341
+ ],
342
+ "aiHints": {
343
+ "pageTypes": [
344
+ "landing",
345
+ "marketing",
346
+ "dashboard",
347
+ "blog",
348
+ "ecommerce",
349
+ "portfolio",
350
+ "saas"
351
+ ],
352
+ "placement": "overlay",
353
+ "priority": 8,
354
+ "sequenceOrder": 10,
355
+ "pairsWellWith": ["modals.GenericModal", "modals.OverlayBase"],
356
+ "maxPerPage": 2,
357
+ "isContainer": false
358
+ }
359
+ },
360
+ {
361
+ "id": "modals.FormDialog",
362
+ "name": "FormDialog",
363
+ "description": "Modal with built-in form handling. Wraps form content in a modal with a submit button and optional title.",
364
+ "whenToUse": "Use when you need a modal-based form for quick data entry without navigating away, such as adding a new item, editing settings, or submitting feedback.",
365
+ "isShell": false,
366
+ "props": [
367
+ {
368
+ "name": "isOpen",
369
+ "type": "boolean",
370
+ "required": true,
371
+ "default": null,
372
+ "description": "Whether the dialog is visible"
373
+ },
374
+ {
375
+ "name": "title",
376
+ "type": "string",
377
+ "required": false,
378
+ "default": "\"Submit\"",
379
+ "description": "Title displayed in the dialog header"
380
+ },
381
+ {
382
+ "name": "onClose",
383
+ "type": "() => void",
384
+ "required": false,
385
+ "default": null,
386
+ "description": "Callback when the dialog is closed"
387
+ },
388
+ {
389
+ "name": "onSubmit",
390
+ "type": "(data: FormData) => void",
391
+ "required": false,
392
+ "default": null,
393
+ "description": "Callback when the form is submitted with form data"
394
+ },
395
+ {
396
+ "name": "submitLabel",
397
+ "type": "string",
398
+ "required": false,
399
+ "default": "\"Submit\"",
400
+ "description": "Label for the submit button"
401
+ },
402
+ {
403
+ "name": "children",
404
+ "type": "ReactNode",
405
+ "required": false,
406
+ "default": null,
407
+ "description": "Form fields and content to render inside the dialog"
408
+ },
409
+ {
410
+ "name": "bgColor",
411
+ "type": "string",
412
+ "required": false,
413
+ "default": "theme",
414
+ "description": "Background color override"
415
+ },
416
+ {
417
+ "name": "textColor",
418
+ "type": "string",
419
+ "required": false,
420
+ "default": "theme",
421
+ "description": "Text color override"
422
+ },
423
+ {
424
+ "name": "accentColor",
425
+ "type": "string",
426
+ "required": false,
427
+ "default": "theme",
428
+ "description": "Accent color override"
429
+ },
430
+ {
431
+ "name": "borderColor",
432
+ "type": "string",
433
+ "required": false,
434
+ "default": "theme",
435
+ "description": "Border color override"
436
+ },
437
+ {
438
+ "name": "fontFamily",
439
+ "type": "string",
440
+ "required": false,
441
+ "default": "theme",
442
+ "description": "Font family override"
443
+ }
444
+ ],
445
+ "themeTokens": [
446
+ "bgColor",
447
+ "textColor",
448
+ "accentColor",
449
+ "borderColor",
450
+ "fontFamily",
451
+ "radius",
452
+ "spacing"
453
+ ],
454
+ "aiHints": {
455
+ "pageTypes": ["dashboard", "forms"],
456
+ "placement": "overlay",
457
+ "priority": 7,
458
+ "sequenceOrder": 10,
459
+ "pairsWellWith": ["modals.GenericModal", "modals.OverlayBase", "forms.FormShell"],
460
+ "maxPerPage": 2,
461
+ "isContainer": true
462
+ }
463
+ },
464
+ {
465
+ "id": "modals.LoadingOverlay",
466
+ "name": "LoadingOverlay",
467
+ "description": "Full-screen loading spinner overlay. Blocks user interaction while an operation is in progress.",
468
+ "whenToUse": "Use when a blocking async operation is happening and the user should wait, such as page transitions, large data fetches, or file uploads.",
469
+ "isShell": false,
470
+ "props": [
471
+ {
472
+ "name": "isOpen",
473
+ "type": "boolean",
474
+ "required": true,
475
+ "default": null,
476
+ "description": "Whether the loading overlay is visible"
477
+ },
478
+ {
479
+ "name": "message",
480
+ "type": "string",
481
+ "required": false,
482
+ "default": "\"Loading...\"",
483
+ "description": "Loading message displayed below the spinner"
484
+ },
485
+ {
486
+ "name": "bgColor",
487
+ "type": "string",
488
+ "required": false,
489
+ "default": "theme",
490
+ "description": "Background color override"
491
+ },
492
+ {
493
+ "name": "textColor",
494
+ "type": "string",
495
+ "required": false,
496
+ "default": "theme",
497
+ "description": "Text color override"
498
+ },
499
+ {
500
+ "name": "accentColor",
501
+ "type": "string",
502
+ "required": false,
503
+ "default": "theme",
504
+ "description": "Accent color override"
505
+ },
506
+ {
507
+ "name": "borderColor",
508
+ "type": "string",
509
+ "required": false,
510
+ "default": "theme",
511
+ "description": "Border color override"
512
+ },
513
+ {
514
+ "name": "fontFamily",
515
+ "type": "string",
516
+ "required": false,
517
+ "default": "theme",
518
+ "description": "Font family override"
519
+ }
520
+ ],
521
+ "themeTokens": [
522
+ "bgColor",
523
+ "textColor",
524
+ "accentColor",
525
+ "borderColor",
526
+ "fontFamily",
527
+ "radius",
528
+ "spacing"
529
+ ],
530
+ "aiHints": {
531
+ "pageTypes": [
532
+ "landing",
533
+ "marketing",
534
+ "dashboard",
535
+ "blog",
536
+ "ecommerce",
537
+ "portfolio",
538
+ "saas"
539
+ ],
540
+ "placement": "overlay",
541
+ "priority": 5,
542
+ "sequenceOrder": 10,
543
+ "pairsWellWith": ["modals.OverlayBase"],
544
+ "maxPerPage": 1,
545
+ "isContainer": false
546
+ }
547
+ },
548
+ {
549
+ "id": "modals.Tooltip",
550
+ "name": "Tooltip",
551
+ "description": "Hover tooltip for elements. Displays contextual information when the user hovers over or focuses a trigger element.",
552
+ "whenToUse": "Use to provide additional context or explanations for UI elements like icons, abbreviations, or truncated text without cluttering the interface.",
553
+ "isShell": false,
554
+ "props": [
555
+ {
556
+ "name": "text",
557
+ "type": "string",
558
+ "required": true,
559
+ "default": null,
560
+ "description": "Tooltip text content"
561
+ },
562
+ {
563
+ "name": "position",
564
+ "type": "\"top\" | \"bottom\" | \"left\" | \"right\"",
565
+ "required": false,
566
+ "default": "\"top\"",
567
+ "description": "Position of the tooltip relative to the trigger element"
568
+ },
569
+ {
570
+ "name": "children",
571
+ "type": "ReactNode",
572
+ "required": true,
573
+ "default": null,
574
+ "description": "Trigger element that activates the tooltip on hover"
575
+ },
576
+ {
577
+ "name": "bgColor",
578
+ "type": "string",
579
+ "required": false,
580
+ "default": "theme",
581
+ "description": "Background color override"
582
+ },
583
+ {
584
+ "name": "textColor",
585
+ "type": "string",
586
+ "required": false,
587
+ "default": "theme",
588
+ "description": "Text color override"
589
+ },
590
+ {
591
+ "name": "accentColor",
592
+ "type": "string",
593
+ "required": false,
594
+ "default": "theme",
595
+ "description": "Accent color override"
596
+ },
597
+ {
598
+ "name": "borderColor",
599
+ "type": "string",
600
+ "required": false,
601
+ "default": "theme",
602
+ "description": "Border color override"
603
+ },
604
+ {
605
+ "name": "fontFamily",
606
+ "type": "string",
607
+ "required": false,
608
+ "default": "theme",
609
+ "description": "Font family override"
610
+ }
611
+ ],
612
+ "themeTokens": [
613
+ "bgColor",
614
+ "textColor",
615
+ "accentColor",
616
+ "borderColor",
617
+ "fontFamily",
618
+ "radius",
619
+ "spacing"
620
+ ],
621
+ "aiHints": {
622
+ "pageTypes": [
623
+ "landing",
624
+ "marketing",
625
+ "dashboard",
626
+ "blog",
627
+ "ecommerce",
628
+ "portfolio",
629
+ "saas"
630
+ ],
631
+ "placement": "overlay",
632
+ "priority": 5,
633
+ "sequenceOrder": 5,
634
+ "pairsWellWith": ["forms.FormShell", "navigation.PrimaryNav", "dataDisplay.DataTable"],
635
+ "maxPerPage": 10,
636
+ "isContainer": false
637
+ }
638
+ },
639
+ {
640
+ "id": "modals.ToastBanners",
641
+ "name": "ToastBanners",
642
+ "description": "Toast notification system. Displays stacked, auto-dismissable notification banners with variant styling.",
643
+ "whenToUse": "Use to show transient feedback messages for user actions such as form submissions, errors, success confirmations, or warnings.",
644
+ "isShell": false,
645
+ "props": [
646
+ {
647
+ "name": "toasts",
648
+ "type": "Toast[]",
649
+ "required": true,
650
+ "default": null,
651
+ "description": "Array of toast objects: {id: string, message: string, variant?: \"info\" | \"success\" | \"warning\" | \"error\", duration?: number}"
652
+ },
653
+ {
654
+ "name": "onDismiss",
655
+ "type": "(id: string) => void",
656
+ "required": false,
657
+ "default": null,
658
+ "description": "Callback when a toast is dismissed"
659
+ },
660
+ {
661
+ "name": "position",
662
+ "type": "\"top-right\" | \"top-left\" | \"bottom-right\" | \"bottom-left\"",
663
+ "required": false,
664
+ "default": "\"top-right\"",
665
+ "description": "Screen corner position for the toast stack"
666
+ },
667
+ {
668
+ "name": "bgColor",
669
+ "type": "string",
670
+ "required": false,
671
+ "default": "theme",
672
+ "description": "Background color override"
673
+ },
674
+ {
675
+ "name": "textColor",
676
+ "type": "string",
677
+ "required": false,
678
+ "default": "theme",
679
+ "description": "Text color override"
680
+ },
681
+ {
682
+ "name": "accentColor",
683
+ "type": "string",
684
+ "required": false,
685
+ "default": "theme",
686
+ "description": "Accent color override"
687
+ },
688
+ {
689
+ "name": "borderColor",
690
+ "type": "string",
691
+ "required": false,
692
+ "default": "theme",
693
+ "description": "Border color override"
694
+ },
695
+ {
696
+ "name": "fontFamily",
697
+ "type": "string",
698
+ "required": false,
699
+ "default": "theme",
700
+ "description": "Font family override"
701
+ }
702
+ ],
703
+ "themeTokens": [
704
+ "bgColor",
705
+ "textColor",
706
+ "accentColor",
707
+ "borderColor",
708
+ "fontFamily",
709
+ "radius",
710
+ "spacing"
711
+ ],
712
+ "aiHints": {
713
+ "pageTypes": [
714
+ "landing",
715
+ "marketing",
716
+ "dashboard",
717
+ "blog",
718
+ "ecommerce",
719
+ "portfolio",
720
+ "saas"
721
+ ],
722
+ "placement": "overlay",
723
+ "priority": 7,
724
+ "sequenceOrder": 10,
725
+ "pairsWellWith": ["forms.FormShell", "modals.ConfirmDialog"],
726
+ "maxPerPage": 1,
727
+ "isContainer": false
728
+ }
729
+ },
730
+ {
731
+ "id": "modals.CookieNotice",
732
+ "name": "CookieNotice",
733
+ "description": "Cookie consent modal. Presents a notice about cookie usage with accept, decline, and settings options.",
734
+ "whenToUse": "Use on any site that needs to comply with cookie consent regulations (GDPR, ePrivacy). Typically shown on first visit.",
735
+ "isShell": false,
736
+ "props": [
737
+ {
738
+ "name": "isOpen",
739
+ "type": "boolean",
740
+ "required": true,
741
+ "default": null,
742
+ "description": "Whether the cookie notice is visible"
743
+ },
744
+ {
745
+ "name": "title",
746
+ "type": "string",
747
+ "required": false,
748
+ "default": "\"Cookie Notice\"",
749
+ "description": "Title displayed in the notice header"
750
+ },
751
+ {
752
+ "name": "message",
753
+ "type": "string",
754
+ "required": false,
755
+ "default": "\"This site uses cookies.\"",
756
+ "description": "Cookie consent message body"
757
+ },
758
+ {
759
+ "name": "onAccept",
760
+ "type": "() => void",
761
+ "required": false,
762
+ "default": null,
763
+ "description": "Callback when the accept button is clicked"
764
+ },
765
+ {
766
+ "name": "onDecline",
767
+ "type": "() => void",
768
+ "required": false,
769
+ "default": null,
770
+ "description": "Callback when the decline button is clicked"
771
+ },
772
+ {
773
+ "name": "onSettings",
774
+ "type": "() => void",
775
+ "required": false,
776
+ "default": null,
777
+ "description": "Callback when the settings/preferences button is clicked"
778
+ },
779
+ {
780
+ "name": "bgColor",
781
+ "type": "string",
782
+ "required": false,
783
+ "default": "theme",
784
+ "description": "Background color override"
785
+ },
786
+ {
787
+ "name": "textColor",
788
+ "type": "string",
789
+ "required": false,
790
+ "default": "theme",
791
+ "description": "Text color override"
792
+ },
793
+ {
794
+ "name": "accentColor",
795
+ "type": "string",
796
+ "required": false,
797
+ "default": "theme",
798
+ "description": "Accent color override"
799
+ },
800
+ {
801
+ "name": "borderColor",
802
+ "type": "string",
803
+ "required": false,
804
+ "default": "theme",
805
+ "description": "Border color override"
806
+ },
807
+ {
808
+ "name": "fontFamily",
809
+ "type": "string",
810
+ "required": false,
811
+ "default": "theme",
812
+ "description": "Font family override"
813
+ }
814
+ ],
815
+ "themeTokens": [
816
+ "bgColor",
817
+ "textColor",
818
+ "accentColor",
819
+ "borderColor",
820
+ "fontFamily",
821
+ "radius",
822
+ "spacing"
823
+ ],
824
+ "aiHints": {
825
+ "pageTypes": [
826
+ "landing",
827
+ "marketing",
828
+ "dashboard",
829
+ "blog",
830
+ "ecommerce",
831
+ "portfolio",
832
+ "saas"
833
+ ],
834
+ "placement": "overlay",
835
+ "priority": 5,
836
+ "sequenceOrder": 10,
837
+ "pairsWellWith": ["modals.OverlayBase"],
838
+ "maxPerPage": 1,
839
+ "isContainer": false
840
+ }
841
+ },
842
+ {
843
+ "id": "modals.WelcomePopup",
844
+ "name": "WelcomePopup",
845
+ "description": "Welcome/onboarding popup. Displays a branded welcome message with optional image and call-to-action button.",
846
+ "whenToUse": "Use for first-time visitor greetings, onboarding flows, feature announcements, or promotional popups on landing pages.",
847
+ "isShell": false,
848
+ "props": [
849
+ {
850
+ "name": "isOpen",
851
+ "type": "boolean",
852
+ "required": true,
853
+ "default": null,
854
+ "description": "Whether the popup is visible"
855
+ },
856
+ {
857
+ "name": "title",
858
+ "type": "string",
859
+ "required": false,
860
+ "default": "\"Welcome!\"",
861
+ "description": "Welcome title text"
862
+ },
863
+ {
864
+ "name": "message",
865
+ "type": "string",
866
+ "required": false,
867
+ "default": null,
868
+ "description": "Welcome message body"
869
+ },
870
+ {
871
+ "name": "ctaLabel",
872
+ "type": "string",
873
+ "required": false,
874
+ "default": "\"Get Started\"",
875
+ "description": "Label for the call-to-action button"
876
+ },
877
+ {
878
+ "name": "onCta",
879
+ "type": "() => void",
880
+ "required": false,
881
+ "default": null,
882
+ "description": "Callback when the CTA button is clicked"
883
+ },
884
+ {
885
+ "name": "onClose",
886
+ "type": "() => void",
887
+ "required": false,
888
+ "default": null,
889
+ "description": "Callback when the popup is closed"
890
+ },
891
+ {
892
+ "name": "image",
893
+ "type": "string",
894
+ "required": false,
895
+ "default": null,
896
+ "description": "URL of an optional hero/banner image"
897
+ },
898
+ {
899
+ "name": "bgColor",
900
+ "type": "string",
901
+ "required": false,
902
+ "default": "theme",
903
+ "description": "Background color override"
904
+ },
905
+ {
906
+ "name": "textColor",
907
+ "type": "string",
908
+ "required": false,
909
+ "default": "theme",
910
+ "description": "Text color override"
911
+ },
912
+ {
913
+ "name": "accentColor",
914
+ "type": "string",
915
+ "required": false,
916
+ "default": "theme",
917
+ "description": "Accent color override"
918
+ },
919
+ {
920
+ "name": "borderColor",
921
+ "type": "string",
922
+ "required": false,
923
+ "default": "theme",
924
+ "description": "Border color override"
925
+ },
926
+ {
927
+ "name": "fontFamily",
928
+ "type": "string",
929
+ "required": false,
930
+ "default": "theme",
931
+ "description": "Font family override"
932
+ }
933
+ ],
934
+ "themeTokens": [
935
+ "bgColor",
936
+ "textColor",
937
+ "accentColor",
938
+ "borderColor",
939
+ "fontFamily",
940
+ "radius",
941
+ "spacing"
942
+ ],
943
+ "aiHints": {
944
+ "pageTypes": ["landing", "onboarding"],
945
+ "placement": "overlay",
946
+ "priority": 6,
947
+ "sequenceOrder": 10,
948
+ "pairsWellWith": ["modals.OverlayBase", "hero.StaticHero"],
949
+ "maxPerPage": 1,
950
+ "isContainer": false
951
+ }
952
+ }
953
+ ]
954
+ }