@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,2186 @@
1
+ {
2
+ "$schema": "electroplix-component-metadata-v1",
3
+ "category": "buttons",
4
+ "label": "Buttons",
5
+ "description": "Interactive button components for actions, downloads, sharing, and grouped button controls",
6
+ "themeKey": "buttons",
7
+ "icon": "mouse-pointer",
8
+ "sortOrder": 3,
9
+ "components": [
10
+ {
11
+ "id": "buttons.PrimaryButton",
12
+ "name": "PrimaryButton",
13
+ "description": "Main action button for primary calls-to-action. Styled with brand colors and high visual prominence.",
14
+ "whenToUse": "Use as the primary call-to-action on any page. Ideal for form submissions, sign-up actions, checkout buttons, and any main action the user should take.",
15
+ "isShell": false,
16
+ "props": [
17
+ {
18
+ "name": "label",
19
+ "type": "string",
20
+ "required": false,
21
+ "default": "\"Button\"",
22
+ "description": "Text displayed inside the button"
23
+ },
24
+ {
25
+ "name": "onClick",
26
+ "type": "() => void",
27
+ "required": false,
28
+ "default": null,
29
+ "description": "Click handler callback"
30
+ },
31
+ {
32
+ "name": "bgColor",
33
+ "type": "string",
34
+ "required": false,
35
+ "default": "theme",
36
+ "description": "Background color override"
37
+ },
38
+ {
39
+ "name": "textColor",
40
+ "type": "string",
41
+ "required": false,
42
+ "default": "theme",
43
+ "description": "Text color override"
44
+ },
45
+ {
46
+ "name": "accentColor",
47
+ "type": "string",
48
+ "required": false,
49
+ "default": "theme",
50
+ "description": "Accent color override (hover/focus states)"
51
+ },
52
+ {
53
+ "name": "borderColor",
54
+ "type": "string",
55
+ "required": false,
56
+ "default": "theme",
57
+ "description": "Border color override"
58
+ },
59
+ {
60
+ "name": "fontFamily",
61
+ "type": "string",
62
+ "required": false,
63
+ "default": "theme",
64
+ "description": "Font family override"
65
+ },
66
+ {
67
+ "name": "fontSize",
68
+ "type": "number",
69
+ "required": false,
70
+ "default": "15",
71
+ "description": "Font size in pixels"
72
+ },
73
+ {
74
+ "name": "fontWeight",
75
+ "type": "string",
76
+ "required": false,
77
+ "default": "\"500\"",
78
+ "description": "Font weight"
79
+ },
80
+ {
81
+ "name": "letterSpacing",
82
+ "type": "number",
83
+ "required": false,
84
+ "default": null,
85
+ "description": "Letter spacing in pixels"
86
+ },
87
+ {
88
+ "name": "lineHeight",
89
+ "type": "number",
90
+ "required": false,
91
+ "default": null,
92
+ "description": "Line height"
93
+ },
94
+ {
95
+ "name": "radius",
96
+ "type": "number",
97
+ "required": false,
98
+ "default": "theme",
99
+ "description": "Border radius in pixels"
100
+ },
101
+ {
102
+ "name": "paddingX",
103
+ "type": "number",
104
+ "required": false,
105
+ "default": "18",
106
+ "description": "Horizontal padding in pixels"
107
+ },
108
+ {
109
+ "name": "paddingY",
110
+ "type": "number",
111
+ "required": false,
112
+ "default": "10",
113
+ "description": "Vertical padding in pixels"
114
+ },
115
+ {
116
+ "name": "gap",
117
+ "type": "number",
118
+ "required": false,
119
+ "default": "8",
120
+ "description": "Gap between icon and label in pixels"
121
+ },
122
+ {
123
+ "name": "icon",
124
+ "type": "IconName",
125
+ "required": false,
126
+ "default": null,
127
+ "description": "Icon name to display alongside label"
128
+ },
129
+ {
130
+ "name": "iconNode",
131
+ "type": "ReactNode",
132
+ "required": false,
133
+ "default": null,
134
+ "description": "Custom icon node to render"
135
+ },
136
+ {
137
+ "name": "isLoading",
138
+ "type": "boolean",
139
+ "required": false,
140
+ "default": null,
141
+ "description": "Whether the button shows a loading spinner"
142
+ },
143
+ {
144
+ "name": "disabled",
145
+ "type": "boolean",
146
+ "required": false,
147
+ "default": null,
148
+ "description": "Whether the button is disabled"
149
+ },
150
+ {
151
+ "name": "width",
152
+ "type": "string | number",
153
+ "required": false,
154
+ "default": "\"fit-content\"",
155
+ "description": "Button width"
156
+ },
157
+ {
158
+ "name": "height",
159
+ "type": "string | number",
160
+ "required": false,
161
+ "default": null,
162
+ "description": "Button height"
163
+ },
164
+ {
165
+ "name": "opacity",
166
+ "type": "number",
167
+ "required": false,
168
+ "default": null,
169
+ "description": "Opacity value (0–1)"
170
+ },
171
+ {
172
+ "name": "shadow",
173
+ "type": "string",
174
+ "required": false,
175
+ "default": "\"none\"",
176
+ "description": "Box shadow value"
177
+ },
178
+ {
179
+ "name": "transitionDuration",
180
+ "type": "number",
181
+ "required": false,
182
+ "default": "200",
183
+ "description": "Transition duration in milliseconds"
184
+ },
185
+ {
186
+ "name": "className",
187
+ "type": "string",
188
+ "required": false,
189
+ "default": null,
190
+ "description": "Custom CSS class"
191
+ },
192
+ {
193
+ "name": "style",
194
+ "type": "CSSProperties",
195
+ "required": false,
196
+ "default": null,
197
+ "description": "Custom inline styles"
198
+ }
199
+ ],
200
+ "themeTokens": [
201
+ "bgColor",
202
+ "textColor",
203
+ "accentColor",
204
+ "borderColor",
205
+ "fontFamily",
206
+ "fontSize",
207
+ "fontWeight",
208
+ "letterSpacing",
209
+ "lineHeight",
210
+ "radius",
211
+ "paddingX",
212
+ "paddingY",
213
+ "gap",
214
+ "opacity",
215
+ "shadow",
216
+ "transitionDuration"
217
+ ],
218
+ "aiHints": {
219
+ "pageTypes": [
220
+ "landing",
221
+ "marketing",
222
+ "dashboard",
223
+ "blog",
224
+ "ecommerce",
225
+ "portfolio",
226
+ "saas",
227
+ "restaurant",
228
+ "fitness",
229
+ "education",
230
+ "nonprofit",
231
+ "event",
232
+ "agency",
233
+ "realestate",
234
+ "health",
235
+ "community"
236
+ ],
237
+ "placement": "body",
238
+ "priority": 9,
239
+ "sequenceOrder": 5,
240
+ "pairsWellWith": [
241
+ "hero.StaticHero",
242
+ "hero.SplitHero",
243
+ "content.HeadingSection",
244
+ "forms.FormShell"
245
+ ],
246
+ "maxPerPage": 10,
247
+ "isContainer": false
248
+ }
249
+ },
250
+ {
251
+ "id": "buttons.SecondaryButton",
252
+ "name": "SecondaryButton",
253
+ "description": "Secondary action button with lower visual prominence. Typically outlined or subtly styled to complement a primary button.",
254
+ "whenToUse": "Use for secondary or alternative actions alongside a primary button. Ideal for cancel actions, learn-more links, or any non-primary call-to-action.",
255
+ "isShell": false,
256
+ "props": [
257
+ {
258
+ "name": "label",
259
+ "type": "string",
260
+ "required": false,
261
+ "default": "\"Button\"",
262
+ "description": "Text displayed inside the button"
263
+ },
264
+ {
265
+ "name": "onClick",
266
+ "type": "() => void",
267
+ "required": false,
268
+ "default": null,
269
+ "description": "Click handler callback"
270
+ },
271
+ {
272
+ "name": "bgColor",
273
+ "type": "string",
274
+ "required": false,
275
+ "default": "theme",
276
+ "description": "Background color override"
277
+ },
278
+ {
279
+ "name": "textColor",
280
+ "type": "string",
281
+ "required": false,
282
+ "default": "theme",
283
+ "description": "Text color override"
284
+ },
285
+ {
286
+ "name": "accentColor",
287
+ "type": "string",
288
+ "required": false,
289
+ "default": "theme",
290
+ "description": "Accent color override (hover/focus states)"
291
+ },
292
+ {
293
+ "name": "borderColor",
294
+ "type": "string",
295
+ "required": false,
296
+ "default": "theme",
297
+ "description": "Border color override"
298
+ },
299
+ {
300
+ "name": "fontFamily",
301
+ "type": "string",
302
+ "required": false,
303
+ "default": "theme",
304
+ "description": "Font family override"
305
+ },
306
+ {
307
+ "name": "fontSize",
308
+ "type": "number",
309
+ "required": false,
310
+ "default": "15",
311
+ "description": "Font size in pixels"
312
+ },
313
+ {
314
+ "name": "fontWeight",
315
+ "type": "string",
316
+ "required": false,
317
+ "default": "\"500\"",
318
+ "description": "Font weight"
319
+ },
320
+ {
321
+ "name": "letterSpacing",
322
+ "type": "number",
323
+ "required": false,
324
+ "default": null,
325
+ "description": "Letter spacing in pixels"
326
+ },
327
+ {
328
+ "name": "lineHeight",
329
+ "type": "number",
330
+ "required": false,
331
+ "default": null,
332
+ "description": "Line height"
333
+ },
334
+ {
335
+ "name": "radius",
336
+ "type": "number",
337
+ "required": false,
338
+ "default": "theme",
339
+ "description": "Border radius in pixels"
340
+ },
341
+ {
342
+ "name": "paddingX",
343
+ "type": "number",
344
+ "required": false,
345
+ "default": "18",
346
+ "description": "Horizontal padding in pixels"
347
+ },
348
+ {
349
+ "name": "paddingY",
350
+ "type": "number",
351
+ "required": false,
352
+ "default": "10",
353
+ "description": "Vertical padding in pixels"
354
+ },
355
+ {
356
+ "name": "gap",
357
+ "type": "number",
358
+ "required": false,
359
+ "default": "8",
360
+ "description": "Gap between icon and label in pixels"
361
+ },
362
+ {
363
+ "name": "icon",
364
+ "type": "IconName",
365
+ "required": false,
366
+ "default": null,
367
+ "description": "Icon name to display alongside label"
368
+ },
369
+ {
370
+ "name": "iconNode",
371
+ "type": "ReactNode",
372
+ "required": false,
373
+ "default": null,
374
+ "description": "Custom icon node to render"
375
+ },
376
+ {
377
+ "name": "isLoading",
378
+ "type": "boolean",
379
+ "required": false,
380
+ "default": null,
381
+ "description": "Whether the button shows a loading spinner"
382
+ },
383
+ {
384
+ "name": "disabled",
385
+ "type": "boolean",
386
+ "required": false,
387
+ "default": null,
388
+ "description": "Whether the button is disabled"
389
+ },
390
+ {
391
+ "name": "width",
392
+ "type": "string | number",
393
+ "required": false,
394
+ "default": "\"fit-content\"",
395
+ "description": "Button width"
396
+ },
397
+ {
398
+ "name": "height",
399
+ "type": "string | number",
400
+ "required": false,
401
+ "default": null,
402
+ "description": "Button height"
403
+ },
404
+ {
405
+ "name": "opacity",
406
+ "type": "number",
407
+ "required": false,
408
+ "default": null,
409
+ "description": "Opacity value (0–1)"
410
+ },
411
+ {
412
+ "name": "shadow",
413
+ "type": "string",
414
+ "required": false,
415
+ "default": "\"none\"",
416
+ "description": "Box shadow value"
417
+ },
418
+ {
419
+ "name": "transitionDuration",
420
+ "type": "number",
421
+ "required": false,
422
+ "default": "200",
423
+ "description": "Transition duration in milliseconds"
424
+ },
425
+ {
426
+ "name": "className",
427
+ "type": "string",
428
+ "required": false,
429
+ "default": null,
430
+ "description": "Custom CSS class"
431
+ },
432
+ {
433
+ "name": "style",
434
+ "type": "CSSProperties",
435
+ "required": false,
436
+ "default": null,
437
+ "description": "Custom inline styles"
438
+ }
439
+ ],
440
+ "themeTokens": [
441
+ "bgColor",
442
+ "textColor",
443
+ "accentColor",
444
+ "borderColor",
445
+ "fontFamily",
446
+ "fontSize",
447
+ "fontWeight",
448
+ "letterSpacing",
449
+ "lineHeight",
450
+ "radius",
451
+ "paddingX",
452
+ "paddingY",
453
+ "gap",
454
+ "opacity",
455
+ "shadow",
456
+ "transitionDuration"
457
+ ],
458
+ "aiHints": {
459
+ "pageTypes": [
460
+ "landing",
461
+ "marketing",
462
+ "dashboard",
463
+ "blog",
464
+ "ecommerce",
465
+ "portfolio",
466
+ "saas"
467
+ ],
468
+ "placement": "body",
469
+ "priority": 8,
470
+ "sequenceOrder": 5,
471
+ "pairsWellWith": [
472
+ "buttons.PrimaryButton",
473
+ "hero.StaticHero",
474
+ "content.HeadingSection",
475
+ "forms.FormShell"
476
+ ],
477
+ "maxPerPage": 10,
478
+ "isContainer": false
479
+ }
480
+ },
481
+ {
482
+ "id": "buttons.TertiaryButton",
483
+ "name": "TertiaryButton",
484
+ "description": "Minimal ghost-style button with low visual weight. Typically text-only or with a subtle hover effect.",
485
+ "whenToUse": "Use for tertiary actions, inline text links styled as buttons, or low-priority actions that should not compete with primary/secondary buttons.",
486
+ "isShell": false,
487
+ "props": [
488
+ {
489
+ "name": "label",
490
+ "type": "string",
491
+ "required": false,
492
+ "default": "\"Button\"",
493
+ "description": "Text displayed inside the button"
494
+ },
495
+ {
496
+ "name": "onClick",
497
+ "type": "() => void",
498
+ "required": false,
499
+ "default": null,
500
+ "description": "Click handler callback"
501
+ },
502
+ {
503
+ "name": "bgColor",
504
+ "type": "string",
505
+ "required": false,
506
+ "default": "theme",
507
+ "description": "Background color override"
508
+ },
509
+ {
510
+ "name": "textColor",
511
+ "type": "string",
512
+ "required": false,
513
+ "default": "theme",
514
+ "description": "Text color override"
515
+ },
516
+ {
517
+ "name": "accentColor",
518
+ "type": "string",
519
+ "required": false,
520
+ "default": "theme",
521
+ "description": "Accent color override (hover/focus states)"
522
+ },
523
+ {
524
+ "name": "borderColor",
525
+ "type": "string",
526
+ "required": false,
527
+ "default": "theme",
528
+ "description": "Border color override"
529
+ },
530
+ {
531
+ "name": "fontFamily",
532
+ "type": "string",
533
+ "required": false,
534
+ "default": "theme",
535
+ "description": "Font family override"
536
+ },
537
+ {
538
+ "name": "fontSize",
539
+ "type": "number",
540
+ "required": false,
541
+ "default": "15",
542
+ "description": "Font size in pixels"
543
+ },
544
+ {
545
+ "name": "fontWeight",
546
+ "type": "string",
547
+ "required": false,
548
+ "default": "\"500\"",
549
+ "description": "Font weight"
550
+ },
551
+ {
552
+ "name": "letterSpacing",
553
+ "type": "number",
554
+ "required": false,
555
+ "default": null,
556
+ "description": "Letter spacing in pixels"
557
+ },
558
+ {
559
+ "name": "lineHeight",
560
+ "type": "number",
561
+ "required": false,
562
+ "default": null,
563
+ "description": "Line height"
564
+ },
565
+ {
566
+ "name": "radius",
567
+ "type": "number",
568
+ "required": false,
569
+ "default": "theme",
570
+ "description": "Border radius in pixels"
571
+ },
572
+ {
573
+ "name": "paddingX",
574
+ "type": "number",
575
+ "required": false,
576
+ "default": "18",
577
+ "description": "Horizontal padding in pixels"
578
+ },
579
+ {
580
+ "name": "paddingY",
581
+ "type": "number",
582
+ "required": false,
583
+ "default": "10",
584
+ "description": "Vertical padding in pixels"
585
+ },
586
+ {
587
+ "name": "gap",
588
+ "type": "number",
589
+ "required": false,
590
+ "default": "8",
591
+ "description": "Gap between icon and label in pixels"
592
+ },
593
+ {
594
+ "name": "icon",
595
+ "type": "IconName",
596
+ "required": false,
597
+ "default": null,
598
+ "description": "Icon name to display alongside label"
599
+ },
600
+ {
601
+ "name": "iconNode",
602
+ "type": "ReactNode",
603
+ "required": false,
604
+ "default": null,
605
+ "description": "Custom icon node to render"
606
+ },
607
+ {
608
+ "name": "isLoading",
609
+ "type": "boolean",
610
+ "required": false,
611
+ "default": null,
612
+ "description": "Whether the button shows a loading spinner"
613
+ },
614
+ {
615
+ "name": "disabled",
616
+ "type": "boolean",
617
+ "required": false,
618
+ "default": null,
619
+ "description": "Whether the button is disabled"
620
+ },
621
+ {
622
+ "name": "width",
623
+ "type": "string | number",
624
+ "required": false,
625
+ "default": "\"fit-content\"",
626
+ "description": "Button width"
627
+ },
628
+ {
629
+ "name": "height",
630
+ "type": "string | number",
631
+ "required": false,
632
+ "default": null,
633
+ "description": "Button height"
634
+ },
635
+ {
636
+ "name": "opacity",
637
+ "type": "number",
638
+ "required": false,
639
+ "default": null,
640
+ "description": "Opacity value (0–1)"
641
+ },
642
+ {
643
+ "name": "shadow",
644
+ "type": "string",
645
+ "required": false,
646
+ "default": "\"none\"",
647
+ "description": "Box shadow value"
648
+ },
649
+ {
650
+ "name": "transitionDuration",
651
+ "type": "number",
652
+ "required": false,
653
+ "default": "200",
654
+ "description": "Transition duration in milliseconds"
655
+ },
656
+ {
657
+ "name": "className",
658
+ "type": "string",
659
+ "required": false,
660
+ "default": null,
661
+ "description": "Custom CSS class"
662
+ },
663
+ {
664
+ "name": "style",
665
+ "type": "CSSProperties",
666
+ "required": false,
667
+ "default": null,
668
+ "description": "Custom inline styles"
669
+ }
670
+ ],
671
+ "themeTokens": [
672
+ "bgColor",
673
+ "textColor",
674
+ "accentColor",
675
+ "borderColor",
676
+ "fontFamily",
677
+ "fontSize",
678
+ "fontWeight",
679
+ "letterSpacing",
680
+ "lineHeight",
681
+ "radius",
682
+ "paddingX",
683
+ "paddingY",
684
+ "gap",
685
+ "opacity",
686
+ "shadow",
687
+ "transitionDuration"
688
+ ],
689
+ "aiHints": {
690
+ "pageTypes": [
691
+ "landing",
692
+ "marketing",
693
+ "dashboard",
694
+ "blog",
695
+ "ecommerce",
696
+ "portfolio",
697
+ "saas"
698
+ ],
699
+ "placement": "body",
700
+ "priority": 6,
701
+ "sequenceOrder": 5,
702
+ "pairsWellWith": [
703
+ "buttons.PrimaryButton",
704
+ "buttons.SecondaryButton",
705
+ "content.HeadingSection"
706
+ ],
707
+ "maxPerPage": 10,
708
+ "isContainer": false
709
+ }
710
+ },
711
+ {
712
+ "id": "buttons.IconButton",
713
+ "name": "IconButton",
714
+ "description": "Icon-only circular button without a text label. Compact and ideal for toolbars and action groups.",
715
+ "whenToUse": "Use for icon-only actions like close, menu toggle, settings, or toolbar actions. Best in dashboards, toolbars, and compact UI areas.",
716
+ "isShell": false,
717
+ "props": [
718
+ {
719
+ "name": "label",
720
+ "type": "string",
721
+ "required": false,
722
+ "default": "\"Button\"",
723
+ "description": "Accessible label (used for aria-label)"
724
+ },
725
+ {
726
+ "name": "onClick",
727
+ "type": "() => void",
728
+ "required": false,
729
+ "default": null,
730
+ "description": "Click handler callback"
731
+ },
732
+ {
733
+ "name": "bgColor",
734
+ "type": "string",
735
+ "required": false,
736
+ "default": "theme",
737
+ "description": "Background color override"
738
+ },
739
+ {
740
+ "name": "textColor",
741
+ "type": "string",
742
+ "required": false,
743
+ "default": "theme",
744
+ "description": "Text/icon color override"
745
+ },
746
+ {
747
+ "name": "accentColor",
748
+ "type": "string",
749
+ "required": false,
750
+ "default": "theme",
751
+ "description": "Accent color override (hover/focus states)"
752
+ },
753
+ {
754
+ "name": "borderColor",
755
+ "type": "string",
756
+ "required": false,
757
+ "default": "theme",
758
+ "description": "Border color override"
759
+ },
760
+ {
761
+ "name": "fontFamily",
762
+ "type": "string",
763
+ "required": false,
764
+ "default": "theme",
765
+ "description": "Font family override"
766
+ },
767
+ {
768
+ "name": "fontSize",
769
+ "type": "number",
770
+ "required": false,
771
+ "default": "15",
772
+ "description": "Icon size in pixels"
773
+ },
774
+ {
775
+ "name": "fontWeight",
776
+ "type": "string",
777
+ "required": false,
778
+ "default": "\"500\"",
779
+ "description": "Font weight"
780
+ },
781
+ {
782
+ "name": "letterSpacing",
783
+ "type": "number",
784
+ "required": false,
785
+ "default": null,
786
+ "description": "Letter spacing in pixels"
787
+ },
788
+ {
789
+ "name": "lineHeight",
790
+ "type": "number",
791
+ "required": false,
792
+ "default": null,
793
+ "description": "Line height"
794
+ },
795
+ {
796
+ "name": "radius",
797
+ "type": "number",
798
+ "required": false,
799
+ "default": "theme",
800
+ "description": "Border radius in pixels"
801
+ },
802
+ {
803
+ "name": "paddingX",
804
+ "type": "number",
805
+ "required": false,
806
+ "default": "18",
807
+ "description": "Horizontal padding in pixels"
808
+ },
809
+ {
810
+ "name": "paddingY",
811
+ "type": "number",
812
+ "required": false,
813
+ "default": "10",
814
+ "description": "Vertical padding in pixels"
815
+ },
816
+ {
817
+ "name": "gap",
818
+ "type": "number",
819
+ "required": false,
820
+ "default": "8",
821
+ "description": "Gap between icon and label in pixels"
822
+ },
823
+ {
824
+ "name": "icon",
825
+ "type": "IconName",
826
+ "required": false,
827
+ "default": null,
828
+ "description": "Icon name to display"
829
+ },
830
+ {
831
+ "name": "iconNode",
832
+ "type": "ReactNode",
833
+ "required": false,
834
+ "default": null,
835
+ "description": "Custom icon node to render"
836
+ },
837
+ {
838
+ "name": "isLoading",
839
+ "type": "boolean",
840
+ "required": false,
841
+ "default": null,
842
+ "description": "Whether the button shows a loading spinner"
843
+ },
844
+ {
845
+ "name": "disabled",
846
+ "type": "boolean",
847
+ "required": false,
848
+ "default": null,
849
+ "description": "Whether the button is disabled"
850
+ },
851
+ {
852
+ "name": "width",
853
+ "type": "string | number",
854
+ "required": false,
855
+ "default": "\"fit-content\"",
856
+ "description": "Button width"
857
+ },
858
+ {
859
+ "name": "height",
860
+ "type": "string | number",
861
+ "required": false,
862
+ "default": null,
863
+ "description": "Button height"
864
+ },
865
+ {
866
+ "name": "opacity",
867
+ "type": "number",
868
+ "required": false,
869
+ "default": null,
870
+ "description": "Opacity value (0–1)"
871
+ },
872
+ {
873
+ "name": "shadow",
874
+ "type": "string",
875
+ "required": false,
876
+ "default": "\"none\"",
877
+ "description": "Box shadow value"
878
+ },
879
+ {
880
+ "name": "transitionDuration",
881
+ "type": "number",
882
+ "required": false,
883
+ "default": "200",
884
+ "description": "Transition duration in milliseconds"
885
+ },
886
+ {
887
+ "name": "className",
888
+ "type": "string",
889
+ "required": false,
890
+ "default": null,
891
+ "description": "Custom CSS class"
892
+ },
893
+ {
894
+ "name": "style",
895
+ "type": "CSSProperties",
896
+ "required": false,
897
+ "default": null,
898
+ "description": "Custom inline styles"
899
+ },
900
+ {
901
+ "name": "size",
902
+ "type": "number",
903
+ "required": false,
904
+ "default": "48",
905
+ "description": "Overall button size (width and height) in pixels"
906
+ }
907
+ ],
908
+ "themeTokens": [
909
+ "bgColor",
910
+ "textColor",
911
+ "accentColor",
912
+ "borderColor",
913
+ "fontFamily",
914
+ "fontSize",
915
+ "fontWeight",
916
+ "letterSpacing",
917
+ "lineHeight",
918
+ "radius",
919
+ "paddingX",
920
+ "paddingY",
921
+ "gap",
922
+ "opacity",
923
+ "shadow",
924
+ "transitionDuration"
925
+ ],
926
+ "aiHints": {
927
+ "pageTypes": ["dashboard", "tools", "admin", "settings", "saas"],
928
+ "placement": "body",
929
+ "priority": 6,
930
+ "sequenceOrder": 5,
931
+ "pairsWellWith": ["buttons.ButtonGroup", "navigation.PrimaryNav", "content.HeadingSection"],
932
+ "maxPerPage": 20,
933
+ "isContainer": false
934
+ }
935
+ },
936
+ {
937
+ "id": "buttons.FloatingActionButton",
938
+ "name": "FloatingActionButton",
939
+ "description": "Fixed-position floating action button (FAB) that hovers above content. Commonly used for a primary action shortcut.",
940
+ "whenToUse": "Use for quick-access primary actions like compose, add, or chat. Ideal for mobile layouts, dashboard apps, and pages that benefit from a persistent action button.",
941
+ "isShell": false,
942
+ "props": [
943
+ {
944
+ "name": "label",
945
+ "type": "string",
946
+ "required": false,
947
+ "default": "\"Button\"",
948
+ "description": "Accessible label or tooltip text"
949
+ },
950
+ {
951
+ "name": "onClick",
952
+ "type": "() => void",
953
+ "required": false,
954
+ "default": null,
955
+ "description": "Click handler callback"
956
+ },
957
+ {
958
+ "name": "bgColor",
959
+ "type": "string",
960
+ "required": false,
961
+ "default": "theme",
962
+ "description": "Background color override"
963
+ },
964
+ {
965
+ "name": "textColor",
966
+ "type": "string",
967
+ "required": false,
968
+ "default": "theme",
969
+ "description": "Text/icon color override"
970
+ },
971
+ {
972
+ "name": "accentColor",
973
+ "type": "string",
974
+ "required": false,
975
+ "default": "theme",
976
+ "description": "Accent color override (hover/focus states)"
977
+ },
978
+ {
979
+ "name": "borderColor",
980
+ "type": "string",
981
+ "required": false,
982
+ "default": "theme",
983
+ "description": "Border color override"
984
+ },
985
+ {
986
+ "name": "fontFamily",
987
+ "type": "string",
988
+ "required": false,
989
+ "default": "theme",
990
+ "description": "Font family override"
991
+ },
992
+ {
993
+ "name": "fontSize",
994
+ "type": "number",
995
+ "required": false,
996
+ "default": "15",
997
+ "description": "Font size in pixels"
998
+ },
999
+ {
1000
+ "name": "fontWeight",
1001
+ "type": "string",
1002
+ "required": false,
1003
+ "default": "\"500\"",
1004
+ "description": "Font weight"
1005
+ },
1006
+ {
1007
+ "name": "letterSpacing",
1008
+ "type": "number",
1009
+ "required": false,
1010
+ "default": null,
1011
+ "description": "Letter spacing in pixels"
1012
+ },
1013
+ {
1014
+ "name": "lineHeight",
1015
+ "type": "number",
1016
+ "required": false,
1017
+ "default": null,
1018
+ "description": "Line height"
1019
+ },
1020
+ {
1021
+ "name": "radius",
1022
+ "type": "number",
1023
+ "required": false,
1024
+ "default": "theme",
1025
+ "description": "Border radius in pixels"
1026
+ },
1027
+ {
1028
+ "name": "paddingX",
1029
+ "type": "number",
1030
+ "required": false,
1031
+ "default": "18",
1032
+ "description": "Horizontal padding in pixels"
1033
+ },
1034
+ {
1035
+ "name": "paddingY",
1036
+ "type": "number",
1037
+ "required": false,
1038
+ "default": "10",
1039
+ "description": "Vertical padding in pixels"
1040
+ },
1041
+ {
1042
+ "name": "gap",
1043
+ "type": "number",
1044
+ "required": false,
1045
+ "default": "8",
1046
+ "description": "Gap between icon and label in pixels"
1047
+ },
1048
+ {
1049
+ "name": "icon",
1050
+ "type": "IconName",
1051
+ "required": false,
1052
+ "default": null,
1053
+ "description": "Icon name to display"
1054
+ },
1055
+ {
1056
+ "name": "iconNode",
1057
+ "type": "ReactNode",
1058
+ "required": false,
1059
+ "default": null,
1060
+ "description": "Custom icon node to render"
1061
+ },
1062
+ {
1063
+ "name": "isLoading",
1064
+ "type": "boolean",
1065
+ "required": false,
1066
+ "default": null,
1067
+ "description": "Whether the button shows a loading spinner"
1068
+ },
1069
+ {
1070
+ "name": "disabled",
1071
+ "type": "boolean",
1072
+ "required": false,
1073
+ "default": null,
1074
+ "description": "Whether the button is disabled"
1075
+ },
1076
+ {
1077
+ "name": "width",
1078
+ "type": "string | number",
1079
+ "required": false,
1080
+ "default": "\"fit-content\"",
1081
+ "description": "Button width"
1082
+ },
1083
+ {
1084
+ "name": "height",
1085
+ "type": "string | number",
1086
+ "required": false,
1087
+ "default": null,
1088
+ "description": "Button height"
1089
+ },
1090
+ {
1091
+ "name": "opacity",
1092
+ "type": "number",
1093
+ "required": false,
1094
+ "default": null,
1095
+ "description": "Opacity value (0–1)"
1096
+ },
1097
+ {
1098
+ "name": "shadow",
1099
+ "type": "string",
1100
+ "required": false,
1101
+ "default": "\"none\"",
1102
+ "description": "Box shadow value"
1103
+ },
1104
+ {
1105
+ "name": "transitionDuration",
1106
+ "type": "number",
1107
+ "required": false,
1108
+ "default": "200",
1109
+ "description": "Transition duration in milliseconds"
1110
+ },
1111
+ {
1112
+ "name": "className",
1113
+ "type": "string",
1114
+ "required": false,
1115
+ "default": null,
1116
+ "description": "Custom CSS class"
1117
+ },
1118
+ {
1119
+ "name": "style",
1120
+ "type": "CSSProperties",
1121
+ "required": false,
1122
+ "default": null,
1123
+ "description": "Custom inline styles"
1124
+ },
1125
+ {
1126
+ "name": "position",
1127
+ "type": "\"bottom-right\" | \"bottom-left\"",
1128
+ "required": false,
1129
+ "default": "\"bottom-right\"",
1130
+ "description": "Screen corner position for the FAB"
1131
+ },
1132
+ {
1133
+ "name": "offset",
1134
+ "type": "number",
1135
+ "required": false,
1136
+ "default": "24",
1137
+ "description": "Distance from the edge of the viewport in pixels"
1138
+ },
1139
+ {
1140
+ "name": "fixed",
1141
+ "type": "boolean",
1142
+ "required": false,
1143
+ "default": null,
1144
+ "description": "Whether the button uses fixed positioning"
1145
+ }
1146
+ ],
1147
+ "themeTokens": [
1148
+ "bgColor",
1149
+ "textColor",
1150
+ "accentColor",
1151
+ "borderColor",
1152
+ "fontFamily",
1153
+ "fontSize",
1154
+ "fontWeight",
1155
+ "letterSpacing",
1156
+ "lineHeight",
1157
+ "radius",
1158
+ "paddingX",
1159
+ "paddingY",
1160
+ "gap",
1161
+ "opacity",
1162
+ "shadow",
1163
+ "transitionDuration"
1164
+ ],
1165
+ "aiHints": {
1166
+ "pageTypes": ["mobile", "dashboard", "saas", "ecommerce"],
1167
+ "placement": "overlay",
1168
+ "priority": 5,
1169
+ "sequenceOrder": 10,
1170
+ "pairsWellWith": ["navigation.PrimaryNav", "content.HeadingSection"],
1171
+ "maxPerPage": 1,
1172
+ "isContainer": false
1173
+ }
1174
+ },
1175
+ {
1176
+ "id": "buttons.ButtonGroup",
1177
+ "name": "ButtonGroup",
1178
+ "description": "Grouped set of buttons displayed inline with optional toggle behavior. Useful for segmented controls and action toolbars.",
1179
+ "whenToUse": "Use for toggling between options, segmented controls, or grouping related actions. Ideal for dashboards, settings panels, and filter toolbars.",
1180
+ "isShell": false,
1181
+ "props": [
1182
+ {
1183
+ "name": "buttons",
1184
+ "type": "GroupButtonItem[]",
1185
+ "required": true,
1186
+ "default": null,
1187
+ "description": "Array of button items extending ButtonBaseProps with optional active flag: {...ButtonBaseProps, active?: boolean}"
1188
+ },
1189
+ {
1190
+ "name": "toggle",
1191
+ "type": "boolean",
1192
+ "required": false,
1193
+ "default": null,
1194
+ "description": "Whether the group behaves as a toggle (only one active at a time)"
1195
+ },
1196
+ {
1197
+ "name": "onChange",
1198
+ "type": "(index: number) => void",
1199
+ "required": false,
1200
+ "default": null,
1201
+ "description": "Callback when a button is selected, receives the index"
1202
+ },
1203
+ {
1204
+ "name": "bgColor",
1205
+ "type": "string",
1206
+ "required": false,
1207
+ "default": null,
1208
+ "description": "Background color for the group container"
1209
+ },
1210
+ {
1211
+ "name": "radius",
1212
+ "type": "number",
1213
+ "required": false,
1214
+ "default": null,
1215
+ "description": "Border radius for the group container"
1216
+ },
1217
+ {
1218
+ "name": "accentColor",
1219
+ "type": "string",
1220
+ "required": false,
1221
+ "default": null,
1222
+ "description": "Accent color for active state"
1223
+ },
1224
+ {
1225
+ "name": "borderColor",
1226
+ "type": "string",
1227
+ "required": false,
1228
+ "default": null,
1229
+ "description": "Border color for the group container"
1230
+ },
1231
+ {
1232
+ "name": "gap",
1233
+ "type": "number",
1234
+ "required": false,
1235
+ "default": null,
1236
+ "description": "Gap between buttons in the group"
1237
+ },
1238
+ {
1239
+ "name": "className",
1240
+ "type": "string",
1241
+ "required": false,
1242
+ "default": null,
1243
+ "description": "Custom CSS class"
1244
+ },
1245
+ {
1246
+ "name": "style",
1247
+ "type": "CSSProperties",
1248
+ "required": false,
1249
+ "default": null,
1250
+ "description": "Custom inline styles"
1251
+ }
1252
+ ],
1253
+ "themeTokens": [
1254
+ "bgColor",
1255
+ "textColor",
1256
+ "accentColor",
1257
+ "borderColor",
1258
+ "fontFamily",
1259
+ "fontSize",
1260
+ "fontWeight",
1261
+ "letterSpacing",
1262
+ "lineHeight",
1263
+ "radius",
1264
+ "paddingX",
1265
+ "paddingY",
1266
+ "gap",
1267
+ "opacity",
1268
+ "shadow",
1269
+ "transitionDuration"
1270
+ ],
1271
+ "aiHints": {
1272
+ "pageTypes": ["dashboard", "settings", "admin", "tools", "saas"],
1273
+ "placement": "body",
1274
+ "priority": 5,
1275
+ "sequenceOrder": 5,
1276
+ "pairsWellWith": [
1277
+ "buttons.PrimaryButton",
1278
+ "buttons.IconButton",
1279
+ "content.HeadingSection",
1280
+ "dataDisplay.DataTable"
1281
+ ],
1282
+ "maxPerPage": 5,
1283
+ "isContainer": false
1284
+ }
1285
+ },
1286
+ {
1287
+ "id": "buttons.LoadingButton",
1288
+ "name": "LoadingButton",
1289
+ "description": "Button with integrated loading spinner state. Automatically shows a spinner and optional loading text during async operations.",
1290
+ "whenToUse": "Use for form submissions, API calls, or any async action where the user needs visual feedback that an operation is in progress.",
1291
+ "isShell": false,
1292
+ "props": [
1293
+ {
1294
+ "name": "label",
1295
+ "type": "string",
1296
+ "required": false,
1297
+ "default": "\"Loading...\"",
1298
+ "description": "Text displayed inside the button"
1299
+ },
1300
+ {
1301
+ "name": "onClick",
1302
+ "type": "() => void",
1303
+ "required": false,
1304
+ "default": null,
1305
+ "description": "Click handler callback"
1306
+ },
1307
+ {
1308
+ "name": "bgColor",
1309
+ "type": "string",
1310
+ "required": false,
1311
+ "default": "theme",
1312
+ "description": "Background color override"
1313
+ },
1314
+ {
1315
+ "name": "textColor",
1316
+ "type": "string",
1317
+ "required": false,
1318
+ "default": "theme",
1319
+ "description": "Text color override"
1320
+ },
1321
+ {
1322
+ "name": "accentColor",
1323
+ "type": "string",
1324
+ "required": false,
1325
+ "default": "theme",
1326
+ "description": "Accent color override (hover/focus states)"
1327
+ },
1328
+ {
1329
+ "name": "borderColor",
1330
+ "type": "string",
1331
+ "required": false,
1332
+ "default": "theme",
1333
+ "description": "Border color override"
1334
+ },
1335
+ {
1336
+ "name": "fontFamily",
1337
+ "type": "string",
1338
+ "required": false,
1339
+ "default": "theme",
1340
+ "description": "Font family override"
1341
+ },
1342
+ {
1343
+ "name": "fontSize",
1344
+ "type": "number",
1345
+ "required": false,
1346
+ "default": "15",
1347
+ "description": "Font size in pixels"
1348
+ },
1349
+ {
1350
+ "name": "fontWeight",
1351
+ "type": "string",
1352
+ "required": false,
1353
+ "default": "\"500\"",
1354
+ "description": "Font weight"
1355
+ },
1356
+ {
1357
+ "name": "letterSpacing",
1358
+ "type": "number",
1359
+ "required": false,
1360
+ "default": null,
1361
+ "description": "Letter spacing in pixels"
1362
+ },
1363
+ {
1364
+ "name": "lineHeight",
1365
+ "type": "number",
1366
+ "required": false,
1367
+ "default": null,
1368
+ "description": "Line height"
1369
+ },
1370
+ {
1371
+ "name": "radius",
1372
+ "type": "number",
1373
+ "required": false,
1374
+ "default": "theme",
1375
+ "description": "Border radius in pixels"
1376
+ },
1377
+ {
1378
+ "name": "paddingX",
1379
+ "type": "number",
1380
+ "required": false,
1381
+ "default": "18",
1382
+ "description": "Horizontal padding in pixels"
1383
+ },
1384
+ {
1385
+ "name": "paddingY",
1386
+ "type": "number",
1387
+ "required": false,
1388
+ "default": "10",
1389
+ "description": "Vertical padding in pixels"
1390
+ },
1391
+ {
1392
+ "name": "gap",
1393
+ "type": "number",
1394
+ "required": false,
1395
+ "default": "8",
1396
+ "description": "Gap between icon and label in pixels"
1397
+ },
1398
+ {
1399
+ "name": "icon",
1400
+ "type": "IconName",
1401
+ "required": false,
1402
+ "default": null,
1403
+ "description": "Icon name to display alongside label"
1404
+ },
1405
+ {
1406
+ "name": "iconNode",
1407
+ "type": "ReactNode",
1408
+ "required": false,
1409
+ "default": null,
1410
+ "description": "Custom icon node to render"
1411
+ },
1412
+ {
1413
+ "name": "isLoading",
1414
+ "type": "boolean",
1415
+ "required": false,
1416
+ "default": null,
1417
+ "description": "Whether the button shows a loading spinner"
1418
+ },
1419
+ {
1420
+ "name": "disabled",
1421
+ "type": "boolean",
1422
+ "required": false,
1423
+ "default": null,
1424
+ "description": "Whether the button is disabled"
1425
+ },
1426
+ {
1427
+ "name": "width",
1428
+ "type": "string | number",
1429
+ "required": false,
1430
+ "default": "\"fit-content\"",
1431
+ "description": "Button width"
1432
+ },
1433
+ {
1434
+ "name": "height",
1435
+ "type": "string | number",
1436
+ "required": false,
1437
+ "default": null,
1438
+ "description": "Button height"
1439
+ },
1440
+ {
1441
+ "name": "opacity",
1442
+ "type": "number",
1443
+ "required": false,
1444
+ "default": null,
1445
+ "description": "Opacity value (0–1)"
1446
+ },
1447
+ {
1448
+ "name": "shadow",
1449
+ "type": "string",
1450
+ "required": false,
1451
+ "default": "\"none\"",
1452
+ "description": "Box shadow value"
1453
+ },
1454
+ {
1455
+ "name": "transitionDuration",
1456
+ "type": "number",
1457
+ "required": false,
1458
+ "default": "200",
1459
+ "description": "Transition duration in milliseconds"
1460
+ },
1461
+ {
1462
+ "name": "className",
1463
+ "type": "string",
1464
+ "required": false,
1465
+ "default": null,
1466
+ "description": "Custom CSS class"
1467
+ },
1468
+ {
1469
+ "name": "style",
1470
+ "type": "CSSProperties",
1471
+ "required": false,
1472
+ "default": null,
1473
+ "description": "Custom inline styles"
1474
+ }
1475
+ ],
1476
+ "themeTokens": [
1477
+ "bgColor",
1478
+ "textColor",
1479
+ "accentColor",
1480
+ "borderColor",
1481
+ "fontFamily",
1482
+ "fontSize",
1483
+ "fontWeight",
1484
+ "letterSpacing",
1485
+ "lineHeight",
1486
+ "radius",
1487
+ "paddingX",
1488
+ "paddingY",
1489
+ "gap",
1490
+ "opacity",
1491
+ "shadow",
1492
+ "transitionDuration"
1493
+ ],
1494
+ "aiHints": {
1495
+ "pageTypes": ["forms", "ecommerce", "saas", "dashboard"],
1496
+ "placement": "body",
1497
+ "priority": 7,
1498
+ "sequenceOrder": 5,
1499
+ "pairsWellWith": ["forms.FormShell", "buttons.PrimaryButton", "content.HeadingSection"],
1500
+ "maxPerPage": 5,
1501
+ "isContainer": false
1502
+ }
1503
+ },
1504
+ {
1505
+ "id": "buttons.ShareButton",
1506
+ "name": "ShareButton",
1507
+ "description": "Share action button that triggers native share or copies a URL to the clipboard. Pre-configured with share icon and label.",
1508
+ "whenToUse": "Use on blog posts, articles, social media pages, or marketing content where users should be able to share the current page or a specific URL.",
1509
+ "isShell": false,
1510
+ "props": [
1511
+ {
1512
+ "name": "label",
1513
+ "type": "string",
1514
+ "required": false,
1515
+ "default": "\"Share\"",
1516
+ "description": "Text displayed inside the button"
1517
+ },
1518
+ {
1519
+ "name": "onClick",
1520
+ "type": "() => void",
1521
+ "required": false,
1522
+ "default": null,
1523
+ "description": "Click handler callback"
1524
+ },
1525
+ {
1526
+ "name": "bgColor",
1527
+ "type": "string",
1528
+ "required": false,
1529
+ "default": "theme",
1530
+ "description": "Background color override"
1531
+ },
1532
+ {
1533
+ "name": "textColor",
1534
+ "type": "string",
1535
+ "required": false,
1536
+ "default": "theme",
1537
+ "description": "Text color override"
1538
+ },
1539
+ {
1540
+ "name": "accentColor",
1541
+ "type": "string",
1542
+ "required": false,
1543
+ "default": "theme",
1544
+ "description": "Accent color override (hover/focus states)"
1545
+ },
1546
+ {
1547
+ "name": "borderColor",
1548
+ "type": "string",
1549
+ "required": false,
1550
+ "default": "theme",
1551
+ "description": "Border color override"
1552
+ },
1553
+ {
1554
+ "name": "fontFamily",
1555
+ "type": "string",
1556
+ "required": false,
1557
+ "default": "theme",
1558
+ "description": "Font family override"
1559
+ },
1560
+ {
1561
+ "name": "fontSize",
1562
+ "type": "number",
1563
+ "required": false,
1564
+ "default": "15",
1565
+ "description": "Font size in pixels"
1566
+ },
1567
+ {
1568
+ "name": "fontWeight",
1569
+ "type": "string",
1570
+ "required": false,
1571
+ "default": "\"500\"",
1572
+ "description": "Font weight"
1573
+ },
1574
+ {
1575
+ "name": "letterSpacing",
1576
+ "type": "number",
1577
+ "required": false,
1578
+ "default": null,
1579
+ "description": "Letter spacing in pixels"
1580
+ },
1581
+ {
1582
+ "name": "lineHeight",
1583
+ "type": "number",
1584
+ "required": false,
1585
+ "default": null,
1586
+ "description": "Line height"
1587
+ },
1588
+ {
1589
+ "name": "radius",
1590
+ "type": "number",
1591
+ "required": false,
1592
+ "default": "theme",
1593
+ "description": "Border radius in pixels"
1594
+ },
1595
+ {
1596
+ "name": "paddingX",
1597
+ "type": "number",
1598
+ "required": false,
1599
+ "default": "18",
1600
+ "description": "Horizontal padding in pixels"
1601
+ },
1602
+ {
1603
+ "name": "paddingY",
1604
+ "type": "number",
1605
+ "required": false,
1606
+ "default": "10",
1607
+ "description": "Vertical padding in pixels"
1608
+ },
1609
+ {
1610
+ "name": "gap",
1611
+ "type": "number",
1612
+ "required": false,
1613
+ "default": "8",
1614
+ "description": "Gap between icon and label in pixels"
1615
+ },
1616
+ {
1617
+ "name": "icon",
1618
+ "type": "IconName",
1619
+ "required": false,
1620
+ "default": null,
1621
+ "description": "Icon name to display alongside label"
1622
+ },
1623
+ {
1624
+ "name": "iconNode",
1625
+ "type": "ReactNode",
1626
+ "required": false,
1627
+ "default": null,
1628
+ "description": "Custom icon node to render"
1629
+ },
1630
+ {
1631
+ "name": "isLoading",
1632
+ "type": "boolean",
1633
+ "required": false,
1634
+ "default": null,
1635
+ "description": "Whether the button shows a loading spinner"
1636
+ },
1637
+ {
1638
+ "name": "disabled",
1639
+ "type": "boolean",
1640
+ "required": false,
1641
+ "default": null,
1642
+ "description": "Whether the button is disabled"
1643
+ },
1644
+ {
1645
+ "name": "width",
1646
+ "type": "string | number",
1647
+ "required": false,
1648
+ "default": "\"fit-content\"",
1649
+ "description": "Button width"
1650
+ },
1651
+ {
1652
+ "name": "height",
1653
+ "type": "string | number",
1654
+ "required": false,
1655
+ "default": null,
1656
+ "description": "Button height"
1657
+ },
1658
+ {
1659
+ "name": "opacity",
1660
+ "type": "number",
1661
+ "required": false,
1662
+ "default": null,
1663
+ "description": "Opacity value (0–1)"
1664
+ },
1665
+ {
1666
+ "name": "shadow",
1667
+ "type": "string",
1668
+ "required": false,
1669
+ "default": "\"none\"",
1670
+ "description": "Box shadow value"
1671
+ },
1672
+ {
1673
+ "name": "transitionDuration",
1674
+ "type": "number",
1675
+ "required": false,
1676
+ "default": "200",
1677
+ "description": "Transition duration in milliseconds"
1678
+ },
1679
+ {
1680
+ "name": "className",
1681
+ "type": "string",
1682
+ "required": false,
1683
+ "default": null,
1684
+ "description": "Custom CSS class"
1685
+ },
1686
+ {
1687
+ "name": "style",
1688
+ "type": "CSSProperties",
1689
+ "required": false,
1690
+ "default": null,
1691
+ "description": "Custom inline styles"
1692
+ },
1693
+ {
1694
+ "name": "url",
1695
+ "type": "string",
1696
+ "required": false,
1697
+ "default": null,
1698
+ "description": "URL to share. Defaults to the current page URL if not provided."
1699
+ }
1700
+ ],
1701
+ "themeTokens": [
1702
+ "bgColor",
1703
+ "textColor",
1704
+ "accentColor",
1705
+ "borderColor",
1706
+ "fontFamily",
1707
+ "fontSize",
1708
+ "fontWeight",
1709
+ "letterSpacing",
1710
+ "lineHeight",
1711
+ "radius",
1712
+ "paddingX",
1713
+ "paddingY",
1714
+ "gap",
1715
+ "opacity",
1716
+ "shadow",
1717
+ "transitionDuration"
1718
+ ],
1719
+ "aiHints": {
1720
+ "pageTypes": ["blog", "social", "marketing", "portfolio", "landing"],
1721
+ "placement": "body",
1722
+ "priority": 5,
1723
+ "sequenceOrder": 8,
1724
+ "pairsWellWith": [
1725
+ "buttons.PrimaryButton",
1726
+ "content.HeadingSection",
1727
+ "blog.ArticleRenderer"
1728
+ ],
1729
+ "maxPerPage": 5,
1730
+ "isContainer": false
1731
+ }
1732
+ },
1733
+ {
1734
+ "id": "buttons.DownloadButton",
1735
+ "name": "DownloadButton",
1736
+ "description": "Download action button that triggers a file download. Pre-configured with download icon and label.",
1737
+ "whenToUse": "Use wherever users need to download files — resource pages, documentation, invoices, reports, or any content with downloadable assets.",
1738
+ "isShell": false,
1739
+ "props": [
1740
+ {
1741
+ "name": "label",
1742
+ "type": "string",
1743
+ "required": false,
1744
+ "default": "\"Download\"",
1745
+ "description": "Text displayed inside the button"
1746
+ },
1747
+ {
1748
+ "name": "onClick",
1749
+ "type": "() => void",
1750
+ "required": false,
1751
+ "default": null,
1752
+ "description": "Click handler callback"
1753
+ },
1754
+ {
1755
+ "name": "bgColor",
1756
+ "type": "string",
1757
+ "required": false,
1758
+ "default": "theme",
1759
+ "description": "Background color override"
1760
+ },
1761
+ {
1762
+ "name": "textColor",
1763
+ "type": "string",
1764
+ "required": false,
1765
+ "default": "theme",
1766
+ "description": "Text color override"
1767
+ },
1768
+ {
1769
+ "name": "accentColor",
1770
+ "type": "string",
1771
+ "required": false,
1772
+ "default": "theme",
1773
+ "description": "Accent color override (hover/focus states)"
1774
+ },
1775
+ {
1776
+ "name": "borderColor",
1777
+ "type": "string",
1778
+ "required": false,
1779
+ "default": "theme",
1780
+ "description": "Border color override"
1781
+ },
1782
+ {
1783
+ "name": "fontFamily",
1784
+ "type": "string",
1785
+ "required": false,
1786
+ "default": "theme",
1787
+ "description": "Font family override"
1788
+ },
1789
+ {
1790
+ "name": "fontSize",
1791
+ "type": "number",
1792
+ "required": false,
1793
+ "default": "15",
1794
+ "description": "Font size in pixels"
1795
+ },
1796
+ {
1797
+ "name": "fontWeight",
1798
+ "type": "string",
1799
+ "required": false,
1800
+ "default": "\"500\"",
1801
+ "description": "Font weight"
1802
+ },
1803
+ {
1804
+ "name": "letterSpacing",
1805
+ "type": "number",
1806
+ "required": false,
1807
+ "default": null,
1808
+ "description": "Letter spacing in pixels"
1809
+ },
1810
+ {
1811
+ "name": "lineHeight",
1812
+ "type": "number",
1813
+ "required": false,
1814
+ "default": null,
1815
+ "description": "Line height"
1816
+ },
1817
+ {
1818
+ "name": "radius",
1819
+ "type": "number",
1820
+ "required": false,
1821
+ "default": "theme",
1822
+ "description": "Border radius in pixels"
1823
+ },
1824
+ {
1825
+ "name": "paddingX",
1826
+ "type": "number",
1827
+ "required": false,
1828
+ "default": "18",
1829
+ "description": "Horizontal padding in pixels"
1830
+ },
1831
+ {
1832
+ "name": "paddingY",
1833
+ "type": "number",
1834
+ "required": false,
1835
+ "default": "10",
1836
+ "description": "Vertical padding in pixels"
1837
+ },
1838
+ {
1839
+ "name": "gap",
1840
+ "type": "number",
1841
+ "required": false,
1842
+ "default": "8",
1843
+ "description": "Gap between icon and label in pixels"
1844
+ },
1845
+ {
1846
+ "name": "icon",
1847
+ "type": "IconName",
1848
+ "required": false,
1849
+ "default": null,
1850
+ "description": "Icon name to display alongside label"
1851
+ },
1852
+ {
1853
+ "name": "iconNode",
1854
+ "type": "ReactNode",
1855
+ "required": false,
1856
+ "default": null,
1857
+ "description": "Custom icon node to render"
1858
+ },
1859
+ {
1860
+ "name": "isLoading",
1861
+ "type": "boolean",
1862
+ "required": false,
1863
+ "default": null,
1864
+ "description": "Whether the button shows a loading spinner"
1865
+ },
1866
+ {
1867
+ "name": "disabled",
1868
+ "type": "boolean",
1869
+ "required": false,
1870
+ "default": null,
1871
+ "description": "Whether the button is disabled"
1872
+ },
1873
+ {
1874
+ "name": "width",
1875
+ "type": "string | number",
1876
+ "required": false,
1877
+ "default": "\"fit-content\"",
1878
+ "description": "Button width"
1879
+ },
1880
+ {
1881
+ "name": "height",
1882
+ "type": "string | number",
1883
+ "required": false,
1884
+ "default": null,
1885
+ "description": "Button height"
1886
+ },
1887
+ {
1888
+ "name": "opacity",
1889
+ "type": "number",
1890
+ "required": false,
1891
+ "default": null,
1892
+ "description": "Opacity value (0–1)"
1893
+ },
1894
+ {
1895
+ "name": "shadow",
1896
+ "type": "string",
1897
+ "required": false,
1898
+ "default": "\"none\"",
1899
+ "description": "Box shadow value"
1900
+ },
1901
+ {
1902
+ "name": "transitionDuration",
1903
+ "type": "number",
1904
+ "required": false,
1905
+ "default": "200",
1906
+ "description": "Transition duration in milliseconds"
1907
+ },
1908
+ {
1909
+ "name": "className",
1910
+ "type": "string",
1911
+ "required": false,
1912
+ "default": null,
1913
+ "description": "Custom CSS class"
1914
+ },
1915
+ {
1916
+ "name": "style",
1917
+ "type": "CSSProperties",
1918
+ "required": false,
1919
+ "default": null,
1920
+ "description": "Custom inline styles"
1921
+ },
1922
+ {
1923
+ "name": "fileUrl",
1924
+ "type": "string",
1925
+ "required": false,
1926
+ "default": null,
1927
+ "description": "URL of the file to download"
1928
+ }
1929
+ ],
1930
+ "themeTokens": [
1931
+ "bgColor",
1932
+ "textColor",
1933
+ "accentColor",
1934
+ "borderColor",
1935
+ "fontFamily",
1936
+ "fontSize",
1937
+ "fontWeight",
1938
+ "letterSpacing",
1939
+ "lineHeight",
1940
+ "radius",
1941
+ "paddingX",
1942
+ "paddingY",
1943
+ "gap",
1944
+ "opacity",
1945
+ "shadow",
1946
+ "transitionDuration"
1947
+ ],
1948
+ "aiHints": {
1949
+ "pageTypes": [
1950
+ "landing",
1951
+ "marketing",
1952
+ "documentation",
1953
+ "dashboard",
1954
+ "blog",
1955
+ "ecommerce",
1956
+ "portfolio",
1957
+ "saas"
1958
+ ],
1959
+ "placement": "body",
1960
+ "priority": 5,
1961
+ "sequenceOrder": 8,
1962
+ "pairsWellWith": ["buttons.PrimaryButton", "content.HeadingSection"],
1963
+ "maxPerPage": 5,
1964
+ "isContainer": false
1965
+ }
1966
+ },
1967
+ {
1968
+ "id": "buttons.PrintButton",
1969
+ "name": "PrintButton",
1970
+ "description": "Print action button that triggers the browser's print dialog. Pre-configured with print icon and label.",
1971
+ "whenToUse": "Use on pages where users may want to print content — documentation pages, invoices, reports, receipts, or any printable content.",
1972
+ "isShell": false,
1973
+ "props": [
1974
+ {
1975
+ "name": "label",
1976
+ "type": "string",
1977
+ "required": false,
1978
+ "default": "\"Print\"",
1979
+ "description": "Text displayed inside the button"
1980
+ },
1981
+ {
1982
+ "name": "onClick",
1983
+ "type": "() => void",
1984
+ "required": false,
1985
+ "default": null,
1986
+ "description": "Click handler callback"
1987
+ },
1988
+ {
1989
+ "name": "bgColor",
1990
+ "type": "string",
1991
+ "required": false,
1992
+ "default": "theme",
1993
+ "description": "Background color override"
1994
+ },
1995
+ {
1996
+ "name": "textColor",
1997
+ "type": "string",
1998
+ "required": false,
1999
+ "default": "theme",
2000
+ "description": "Text color override"
2001
+ },
2002
+ {
2003
+ "name": "accentColor",
2004
+ "type": "string",
2005
+ "required": false,
2006
+ "default": "theme",
2007
+ "description": "Accent color override (hover/focus states)"
2008
+ },
2009
+ {
2010
+ "name": "borderColor",
2011
+ "type": "string",
2012
+ "required": false,
2013
+ "default": "theme",
2014
+ "description": "Border color override"
2015
+ },
2016
+ {
2017
+ "name": "fontFamily",
2018
+ "type": "string",
2019
+ "required": false,
2020
+ "default": "theme",
2021
+ "description": "Font family override"
2022
+ },
2023
+ {
2024
+ "name": "fontSize",
2025
+ "type": "number",
2026
+ "required": false,
2027
+ "default": "15",
2028
+ "description": "Font size in pixels"
2029
+ },
2030
+ {
2031
+ "name": "fontWeight",
2032
+ "type": "string",
2033
+ "required": false,
2034
+ "default": "\"500\"",
2035
+ "description": "Font weight"
2036
+ },
2037
+ {
2038
+ "name": "letterSpacing",
2039
+ "type": "number",
2040
+ "required": false,
2041
+ "default": null,
2042
+ "description": "Letter spacing in pixels"
2043
+ },
2044
+ {
2045
+ "name": "lineHeight",
2046
+ "type": "number",
2047
+ "required": false,
2048
+ "default": null,
2049
+ "description": "Line height"
2050
+ },
2051
+ {
2052
+ "name": "radius",
2053
+ "type": "number",
2054
+ "required": false,
2055
+ "default": "theme",
2056
+ "description": "Border radius in pixels"
2057
+ },
2058
+ {
2059
+ "name": "paddingX",
2060
+ "type": "number",
2061
+ "required": false,
2062
+ "default": "18",
2063
+ "description": "Horizontal padding in pixels"
2064
+ },
2065
+ {
2066
+ "name": "paddingY",
2067
+ "type": "number",
2068
+ "required": false,
2069
+ "default": "10",
2070
+ "description": "Vertical padding in pixels"
2071
+ },
2072
+ {
2073
+ "name": "gap",
2074
+ "type": "number",
2075
+ "required": false,
2076
+ "default": "8",
2077
+ "description": "Gap between icon and label in pixels"
2078
+ },
2079
+ {
2080
+ "name": "icon",
2081
+ "type": "IconName",
2082
+ "required": false,
2083
+ "default": null,
2084
+ "description": "Icon name to display alongside label"
2085
+ },
2086
+ {
2087
+ "name": "iconNode",
2088
+ "type": "ReactNode",
2089
+ "required": false,
2090
+ "default": null,
2091
+ "description": "Custom icon node to render"
2092
+ },
2093
+ {
2094
+ "name": "isLoading",
2095
+ "type": "boolean",
2096
+ "required": false,
2097
+ "default": null,
2098
+ "description": "Whether the button shows a loading spinner"
2099
+ },
2100
+ {
2101
+ "name": "disabled",
2102
+ "type": "boolean",
2103
+ "required": false,
2104
+ "default": null,
2105
+ "description": "Whether the button is disabled"
2106
+ },
2107
+ {
2108
+ "name": "width",
2109
+ "type": "string | number",
2110
+ "required": false,
2111
+ "default": "\"fit-content\"",
2112
+ "description": "Button width"
2113
+ },
2114
+ {
2115
+ "name": "height",
2116
+ "type": "string | number",
2117
+ "required": false,
2118
+ "default": null,
2119
+ "description": "Button height"
2120
+ },
2121
+ {
2122
+ "name": "opacity",
2123
+ "type": "number",
2124
+ "required": false,
2125
+ "default": null,
2126
+ "description": "Opacity value (0–1)"
2127
+ },
2128
+ {
2129
+ "name": "shadow",
2130
+ "type": "string",
2131
+ "required": false,
2132
+ "default": "\"none\"",
2133
+ "description": "Box shadow value"
2134
+ },
2135
+ {
2136
+ "name": "transitionDuration",
2137
+ "type": "number",
2138
+ "required": false,
2139
+ "default": "200",
2140
+ "description": "Transition duration in milliseconds"
2141
+ },
2142
+ {
2143
+ "name": "className",
2144
+ "type": "string",
2145
+ "required": false,
2146
+ "default": null,
2147
+ "description": "Custom CSS class"
2148
+ },
2149
+ {
2150
+ "name": "style",
2151
+ "type": "CSSProperties",
2152
+ "required": false,
2153
+ "default": null,
2154
+ "description": "Custom inline styles"
2155
+ }
2156
+ ],
2157
+ "themeTokens": [
2158
+ "bgColor",
2159
+ "textColor",
2160
+ "accentColor",
2161
+ "borderColor",
2162
+ "fontFamily",
2163
+ "fontSize",
2164
+ "fontWeight",
2165
+ "letterSpacing",
2166
+ "lineHeight",
2167
+ "radius",
2168
+ "paddingX",
2169
+ "paddingY",
2170
+ "gap",
2171
+ "opacity",
2172
+ "shadow",
2173
+ "transitionDuration"
2174
+ ],
2175
+ "aiHints": {
2176
+ "pageTypes": ["documentation", "invoices", "reports", "admin"],
2177
+ "placement": "body",
2178
+ "priority": 3,
2179
+ "sequenceOrder": 8,
2180
+ "pairsWellWith": ["buttons.DownloadButton", "content.HeadingSection"],
2181
+ "maxPerPage": 2,
2182
+ "isContainer": false
2183
+ }
2184
+ }
2185
+ ]
2186
+ }