@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,822 @@
1
+ {
2
+ "$schema": "electroplix-component-metadata-v1",
3
+ "category": "data-display",
4
+ "label": "Data Display",
5
+ "description": "Components for visualizing data through charts, tables, badges, timelines, and progress indicators",
6
+ "themeKey": "dataDisplay",
7
+ "icon": "bar-chart",
8
+ "sortOrder": 6,
9
+ "components": [
10
+ {
11
+ "id": "dataDisplay.Badge",
12
+ "name": "Badge",
13
+ "description": "Inline status badge for labeling items with contextual tone colors. Supports pill and rectangular shapes.",
14
+ "whenToUse": "Use to highlight status, category, or metadata inline with other content. Ideal for tags, labels, and status indicators across any page type.",
15
+ "isShell": false,
16
+ "props": [
17
+ {
18
+ "name": "children",
19
+ "type": "ReactNode",
20
+ "required": true,
21
+ "default": null,
22
+ "description": "Content to display inside the badge"
23
+ },
24
+ {
25
+ "name": "tone",
26
+ "type": "\"neutral\" | \"success\" | \"warning\" | \"danger\" | \"info\"",
27
+ "required": false,
28
+ "default": "\"neutral\"",
29
+ "description": "Semantic color tone for the badge"
30
+ },
31
+ {
32
+ "name": "pill",
33
+ "type": "boolean",
34
+ "required": false,
35
+ "default": "true",
36
+ "description": "Whether to render the badge with fully rounded pill shape"
37
+ }
38
+ ],
39
+ "themeTokens": [
40
+ "bgColor",
41
+ "textColor",
42
+ "accentColor",
43
+ "borderColor",
44
+ "fontFamily",
45
+ "radius",
46
+ "spacing",
47
+ "cardBg",
48
+ "cardRadius",
49
+ "cardBorder",
50
+ "gridColor"
51
+ ],
52
+ "aiHints": {
53
+ "pageTypes": [
54
+ "landing",
55
+ "marketing",
56
+ "dashboard",
57
+ "blog",
58
+ "ecommerce",
59
+ "portfolio",
60
+ "saas",
61
+ "admin",
62
+ "documentation"
63
+ ],
64
+ "placement": "body",
65
+ "priority": 5,
66
+ "sequenceOrder": 5,
67
+ "pairsWellWith": [
68
+ "dataDisplay.BadgeGroup",
69
+ "dataDisplay.DataTable",
70
+ "content.HeadingSection"
71
+ ],
72
+ "maxPerPage": 20,
73
+ "isContainer": false
74
+ }
75
+ },
76
+ {
77
+ "id": "dataDisplay.BadgeGroup",
78
+ "name": "BadgeGroup",
79
+ "description": "Group of badges rendered together with an optional title. Renders multiple string items as individual badges.",
80
+ "whenToUse": "Use to display a collection of tags or labels together, such as blog post tags, product categories, or skill lists on portfolios.",
81
+ "isShell": false,
82
+ "props": [
83
+ {
84
+ "name": "items",
85
+ "type": "string[]",
86
+ "required": true,
87
+ "default": null,
88
+ "description": "Array of label strings to render as individual badges"
89
+ },
90
+ {
91
+ "name": "tone",
92
+ "type": "\"neutral\" | \"success\" | \"warning\" | \"danger\" | \"info\"",
93
+ "required": false,
94
+ "default": "\"neutral\"",
95
+ "description": "Semantic color tone applied to all badges in the group"
96
+ },
97
+ {
98
+ "name": "title",
99
+ "type": "string",
100
+ "required": false,
101
+ "default": null,
102
+ "description": "Optional heading displayed above the badge group"
103
+ }
104
+ ],
105
+ "themeTokens": [
106
+ "bgColor",
107
+ "textColor",
108
+ "accentColor",
109
+ "borderColor",
110
+ "fontFamily",
111
+ "radius",
112
+ "spacing",
113
+ "cardBg",
114
+ "cardRadius",
115
+ "cardBorder",
116
+ "gridColor"
117
+ ],
118
+ "aiHints": {
119
+ "pageTypes": ["blog", "ecommerce"],
120
+ "placement": "body",
121
+ "priority": 4,
122
+ "sequenceOrder": 5,
123
+ "pairsWellWith": ["dataDisplay.Badge", "content.HeadingSection", "ecommerce.ProductCard"],
124
+ "maxPerPage": 5,
125
+ "isContainer": false
126
+ }
127
+ },
128
+ {
129
+ "id": "dataDisplay.BarChart",
130
+ "name": "BarChart",
131
+ "description": "Vertical bar chart rendered as SVG. Supports custom dimensions, optional grid lines, configurable bar radius and padding.",
132
+ "whenToUse": "Use to visualize categorical or time-series data as vertical bars. Ideal for dashboards, analytics pages, and reports comparing discrete values.",
133
+ "isShell": false,
134
+ "props": [
135
+ {
136
+ "name": "data",
137
+ "type": "number[]",
138
+ "required": true,
139
+ "default": null,
140
+ "description": "Array of numeric values for each bar"
141
+ },
142
+ {
143
+ "name": "labels",
144
+ "type": "string[]",
145
+ "required": false,
146
+ "default": null,
147
+ "description": "Array of labels for the x-axis corresponding to each data point"
148
+ },
149
+ {
150
+ "name": "width",
151
+ "type": "number",
152
+ "required": false,
153
+ "default": "520",
154
+ "description": "Width of the chart in pixels"
155
+ },
156
+ {
157
+ "name": "height",
158
+ "type": "number",
159
+ "required": false,
160
+ "default": "260",
161
+ "description": "Height of the chart in pixels"
162
+ },
163
+ {
164
+ "name": "title",
165
+ "type": "string",
166
+ "required": false,
167
+ "default": null,
168
+ "description": "Optional title displayed above the chart"
169
+ },
170
+ {
171
+ "name": "showGrid",
172
+ "type": "boolean",
173
+ "required": false,
174
+ "default": "true",
175
+ "description": "Whether to show horizontal grid lines"
176
+ },
177
+ {
178
+ "name": "padding",
179
+ "type": "number",
180
+ "required": false,
181
+ "default": "32",
182
+ "description": "Internal padding around the chart area in pixels"
183
+ },
184
+ {
185
+ "name": "barRadius",
186
+ "type": "number",
187
+ "required": false,
188
+ "default": "6",
189
+ "description": "Border radius of the top corners of each bar"
190
+ }
191
+ ],
192
+ "themeTokens": [
193
+ "bgColor",
194
+ "textColor",
195
+ "accentColor",
196
+ "borderColor",
197
+ "fontFamily",
198
+ "radius",
199
+ "spacing",
200
+ "cardBg",
201
+ "cardRadius",
202
+ "cardBorder",
203
+ "gridColor"
204
+ ],
205
+ "aiHints": {
206
+ "pageTypes": ["dashboard", "analytics", "landing", "marketing", "saas", "nonprofit"],
207
+ "placement": "body",
208
+ "priority": 7,
209
+ "sequenceOrder": 5,
210
+ "pairsWellWith": [
211
+ "dataDisplay.LineChart",
212
+ "dataDisplay.PieChart",
213
+ "dataDisplay.Sparkline",
214
+ "content.HeadingSection"
215
+ ],
216
+ "maxPerPage": 4,
217
+ "isContainer": false
218
+ }
219
+ },
220
+ {
221
+ "id": "dataDisplay.CalendarGrid",
222
+ "name": "CalendarGrid",
223
+ "description": "Monthly calendar grid with date marks and optional click handler. Supports configurable start day and tone-coded marks. Use for class schedules, event calendars, booking availability displays, and appointment slot selection.",
224
+ "whenToUse": "Use to display a monthly view with highlighted dates for events, bookings, or deadlines. Ideal for dashboard scheduling widgets and booking pages.",
225
+ "isShell": false,
226
+ "props": [
227
+ {
228
+ "name": "year",
229
+ "type": "number",
230
+ "required": true,
231
+ "default": null,
232
+ "description": "Full year to display (e.g. 2026)"
233
+ },
234
+ {
235
+ "name": "month",
236
+ "type": "number",
237
+ "required": true,
238
+ "default": null,
239
+ "description": "Month to display (1-12)"
240
+ },
241
+ {
242
+ "name": "startOn",
243
+ "type": "0 | 1",
244
+ "required": false,
245
+ "default": "0",
246
+ "description": "Day the week starts on: 0 for Sunday, 1 for Monday"
247
+ },
248
+ {
249
+ "name": "marks",
250
+ "type": "CalendarMark[]",
251
+ "required": false,
252
+ "default": "[]",
253
+ "description": "Array of date marks: {date: number, label?: string, tone?: string}"
254
+ },
255
+ {
256
+ "name": "title",
257
+ "type": "string",
258
+ "required": false,
259
+ "default": null,
260
+ "description": "Optional title displayed above the calendar"
261
+ },
262
+ {
263
+ "name": "onDateClick",
264
+ "type": "(date: number) => void",
265
+ "required": false,
266
+ "default": null,
267
+ "description": "Callback fired when a date cell is clicked"
268
+ }
269
+ ],
270
+ "themeTokens": [
271
+ "bgColor",
272
+ "textColor",
273
+ "accentColor",
274
+ "borderColor",
275
+ "fontFamily",
276
+ "radius",
277
+ "spacing",
278
+ "cardBg",
279
+ "cardRadius",
280
+ "cardBorder",
281
+ "gridColor"
282
+ ],
283
+ "aiHints": {
284
+ "pageTypes": [
285
+ "dashboard",
286
+ "booking",
287
+ "event",
288
+ "schedule",
289
+ "education",
290
+ "fitness",
291
+ "restaurant",
292
+ "health",
293
+ "community",
294
+ "landing"
295
+ ],
296
+ "placement": "body",
297
+ "priority": 5,
298
+ "sequenceOrder": 5,
299
+ "pairsWellWith": ["dataDisplay.Timeline", "dataDisplay.Badge", "content.HeadingSection"],
300
+ "maxPerPage": 2,
301
+ "isContainer": false
302
+ }
303
+ },
304
+ {
305
+ "id": "dataDisplay.DataTable",
306
+ "name": "DataTable<T>",
307
+ "description": "Full-featured data table with column sorting, search filtering, and client-side pagination. Supports zebra striping and compact mode.",
308
+ "whenToUse": "Use to display structured tabular data with interactive features. Essential for admin panels, dashboard data views, ecommerce order lists, and any page requiring sortable, searchable data.",
309
+ "isShell": false,
310
+ "props": [
311
+ {
312
+ "name": "columns",
313
+ "type": "DataTableColumn<T>[]",
314
+ "required": true,
315
+ "default": null,
316
+ "description": "Array of column definitions: {key: keyof T, label: string, width?: number, align?: string, render?: (value, row) => ReactNode, sortable?: boolean}"
317
+ },
318
+ {
319
+ "name": "rows",
320
+ "type": "T[]",
321
+ "required": true,
322
+ "default": null,
323
+ "description": "Array of row data objects matching the column keys"
324
+ },
325
+ {
326
+ "name": "pageSize",
327
+ "type": "number",
328
+ "required": false,
329
+ "default": "5",
330
+ "description": "Number of rows displayed per page"
331
+ },
332
+ {
333
+ "name": "zebra",
334
+ "type": "boolean",
335
+ "required": false,
336
+ "default": "true",
337
+ "description": "Whether to apply alternating row background colors"
338
+ },
339
+ {
340
+ "name": "compact",
341
+ "type": "boolean",
342
+ "required": false,
343
+ "default": "false",
344
+ "description": "Whether to use compact row height and reduced padding"
345
+ },
346
+ {
347
+ "name": "caption",
348
+ "type": "string",
349
+ "required": false,
350
+ "default": null,
351
+ "description": "Optional table caption for accessibility"
352
+ },
353
+ {
354
+ "name": "initialSort",
355
+ "type": "{ key: keyof T; dir: \"asc\" | \"desc\" }",
356
+ "required": false,
357
+ "default": null,
358
+ "description": "Initial sort configuration: {key, dir}"
359
+ },
360
+ {
361
+ "name": "searchable",
362
+ "type": "boolean",
363
+ "required": false,
364
+ "default": "false",
365
+ "description": "Whether to show a search/filter input above the table"
366
+ }
367
+ ],
368
+ "themeTokens": [
369
+ "bgColor",
370
+ "textColor",
371
+ "accentColor",
372
+ "borderColor",
373
+ "fontFamily",
374
+ "radius",
375
+ "spacing",
376
+ "cardBg",
377
+ "cardRadius",
378
+ "cardBorder",
379
+ "gridColor"
380
+ ],
381
+ "aiHints": {
382
+ "pageTypes": ["dashboard", "admin", "ecommerce"],
383
+ "placement": "body",
384
+ "priority": 9,
385
+ "sequenceOrder": 5,
386
+ "pairsWellWith": [
387
+ "navigation.Pagination",
388
+ "navigation.Tabs",
389
+ "dataDisplay.Badge",
390
+ "content.HeadingSection"
391
+ ],
392
+ "maxPerPage": 3,
393
+ "isContainer": false
394
+ }
395
+ },
396
+ {
397
+ "id": "dataDisplay.LineChart",
398
+ "name": "LineChart",
399
+ "description": "SVG line chart for visualizing trends over time or sequential data points. Supports optional grid lines and axis labels.",
400
+ "whenToUse": "Use to display trend data, time series, or continuous metrics. Ideal for dashboards and analytics pages showing performance over time.",
401
+ "isShell": false,
402
+ "props": [
403
+ {
404
+ "name": "data",
405
+ "type": "number[]",
406
+ "required": true,
407
+ "default": null,
408
+ "description": "Array of numeric values for each data point on the line"
409
+ },
410
+ {
411
+ "name": "labels",
412
+ "type": "string[]",
413
+ "required": false,
414
+ "default": null,
415
+ "description": "Array of labels for the x-axis corresponding to each data point"
416
+ },
417
+ {
418
+ "name": "width",
419
+ "type": "number",
420
+ "required": false,
421
+ "default": "520",
422
+ "description": "Width of the chart in pixels"
423
+ },
424
+ {
425
+ "name": "height",
426
+ "type": "number",
427
+ "required": false,
428
+ "default": "260",
429
+ "description": "Height of the chart in pixels"
430
+ },
431
+ {
432
+ "name": "title",
433
+ "type": "string",
434
+ "required": false,
435
+ "default": null,
436
+ "description": "Optional title displayed above the chart"
437
+ },
438
+ {
439
+ "name": "showGrid",
440
+ "type": "boolean",
441
+ "required": false,
442
+ "default": "true",
443
+ "description": "Whether to show horizontal grid lines"
444
+ },
445
+ {
446
+ "name": "padding",
447
+ "type": "number",
448
+ "required": false,
449
+ "default": "32",
450
+ "description": "Internal padding around the chart area in pixels"
451
+ }
452
+ ],
453
+ "themeTokens": [
454
+ "bgColor",
455
+ "textColor",
456
+ "accentColor",
457
+ "borderColor",
458
+ "fontFamily",
459
+ "radius",
460
+ "spacing",
461
+ "cardBg",
462
+ "cardRadius",
463
+ "cardBorder",
464
+ "gridColor"
465
+ ],
466
+ "aiHints": {
467
+ "pageTypes": ["dashboard", "analytics", "landing", "marketing", "saas"],
468
+ "placement": "body",
469
+ "priority": 7,
470
+ "sequenceOrder": 5,
471
+ "pairsWellWith": [
472
+ "dataDisplay.BarChart",
473
+ "dataDisplay.Sparkline",
474
+ "dataDisplay.PieChart",
475
+ "content.HeadingSection"
476
+ ],
477
+ "maxPerPage": 4,
478
+ "isContainer": false
479
+ }
480
+ },
481
+ {
482
+ "id": "dataDisplay.PieChart",
483
+ "name": "PieChart",
484
+ "description": "SVG pie or donut chart for visualizing proportional data. Renders labeled segments with automatic color assignment.",
485
+ "whenToUse": "Use to show composition or distribution of data. Ideal for dashboards and analytics pages displaying category breakdowns or budget allocations.",
486
+ "isShell": false,
487
+ "props": [
488
+ {
489
+ "name": "data",
490
+ "type": "number[]",
491
+ "required": true,
492
+ "default": null,
493
+ "description": "Array of numeric values for each pie segment"
494
+ },
495
+ {
496
+ "name": "labels",
497
+ "type": "string[]",
498
+ "required": false,
499
+ "default": null,
500
+ "description": "Array of labels corresponding to each segment"
501
+ },
502
+ {
503
+ "name": "width",
504
+ "type": "number",
505
+ "required": false,
506
+ "default": "280",
507
+ "description": "Width of the chart in pixels"
508
+ },
509
+ {
510
+ "name": "height",
511
+ "type": "number",
512
+ "required": false,
513
+ "default": "280",
514
+ "description": "Height of the chart in pixels"
515
+ },
516
+ {
517
+ "name": "title",
518
+ "type": "string",
519
+ "required": false,
520
+ "default": null,
521
+ "description": "Optional title displayed above the chart"
522
+ }
523
+ ],
524
+ "themeTokens": [
525
+ "bgColor",
526
+ "textColor",
527
+ "accentColor",
528
+ "borderColor",
529
+ "fontFamily",
530
+ "radius",
531
+ "spacing",
532
+ "cardBg",
533
+ "cardRadius",
534
+ "cardBorder",
535
+ "gridColor"
536
+ ],
537
+ "aiHints": {
538
+ "pageTypes": ["dashboard", "analytics"],
539
+ "placement": "body",
540
+ "priority": 6,
541
+ "sequenceOrder": 5,
542
+ "pairsWellWith": [
543
+ "dataDisplay.BarChart",
544
+ "dataDisplay.LineChart",
545
+ "dataDisplay.Sparkline",
546
+ "content.HeadingSection"
547
+ ],
548
+ "maxPerPage": 3,
549
+ "isContainer": false
550
+ }
551
+ },
552
+ {
553
+ "id": "dataDisplay.ProgressBar",
554
+ "name": "ProgressBar",
555
+ "description": "Progress indicator bar showing completion percentage. Supports labels, rounded caps, and optional trend comparison with a previous value. Also useful as skill bars in portfolios, course progress indicators, fitness tracking, and stat visualizations.",
556
+ "whenToUse": "Use to indicate progress toward a goal, task completion, or loading state. Ideal for dashboards, onboarding flows, and file upload indicators.",
557
+ "isShell": false,
558
+ "props": [
559
+ {
560
+ "name": "value",
561
+ "type": "number",
562
+ "required": true,
563
+ "default": null,
564
+ "description": "Current progress value (0-100)"
565
+ },
566
+ {
567
+ "name": "showLabel",
568
+ "type": "boolean",
569
+ "required": false,
570
+ "default": "true",
571
+ "description": "Whether to display the percentage label"
572
+ },
573
+ {
574
+ "name": "height",
575
+ "type": "number",
576
+ "required": false,
577
+ "default": "12",
578
+ "description": "Height of the progress bar in pixels"
579
+ },
580
+ {
581
+ "name": "rounded",
582
+ "type": "boolean",
583
+ "required": false,
584
+ "default": "true",
585
+ "description": "Whether to render the bar with rounded ends"
586
+ },
587
+ {
588
+ "name": "label",
589
+ "type": "string",
590
+ "required": false,
591
+ "default": null,
592
+ "description": "Optional text label displayed alongside the bar"
593
+ },
594
+ {
595
+ "name": "showTrend",
596
+ "type": "boolean",
597
+ "required": false,
598
+ "default": "false",
599
+ "description": "Whether to show a trend indicator comparing to previousValue"
600
+ },
601
+ {
602
+ "name": "previousValue",
603
+ "type": "number",
604
+ "required": false,
605
+ "default": null,
606
+ "description": "Previous progress value used for trend comparison"
607
+ }
608
+ ],
609
+ "themeTokens": [
610
+ "bgColor",
611
+ "textColor",
612
+ "accentColor",
613
+ "borderColor",
614
+ "fontFamily",
615
+ "radius",
616
+ "spacing",
617
+ "cardBg",
618
+ "cardRadius",
619
+ "cardBorder",
620
+ "gridColor"
621
+ ],
622
+ "aiHints": {
623
+ "pageTypes": [
624
+ "dashboard",
625
+ "onboarding",
626
+ "portfolio",
627
+ "education",
628
+ "fitness",
629
+ "landing",
630
+ "health"
631
+ ],
632
+ "placement": "body",
633
+ "priority": 6,
634
+ "sequenceOrder": 5,
635
+ "pairsWellWith": ["dataDisplay.Badge", "dataDisplay.Sparkline", "content.HeadingSection"],
636
+ "maxPerPage": 6,
637
+ "isContainer": false
638
+ }
639
+ },
640
+ {
641
+ "id": "dataDisplay.RatingStars",
642
+ "name": "RatingStars",
643
+ "description": "Star rating display supporting fractional values. Optionally interactive for user input with customizable star count and size.",
644
+ "whenToUse": "Use to display product ratings, review scores, or user feedback. Essential for ecommerce product pages, review sections, and testimonials.",
645
+ "isShell": false,
646
+ "props": [
647
+ {
648
+ "name": "value",
649
+ "type": "number",
650
+ "required": true,
651
+ "default": null,
652
+ "description": "Current rating value"
653
+ },
654
+ {
655
+ "name": "outOf",
656
+ "type": "number",
657
+ "required": false,
658
+ "default": "5",
659
+ "description": "Maximum number of stars"
660
+ },
661
+ {
662
+ "name": "size",
663
+ "type": "number",
664
+ "required": false,
665
+ "default": "20",
666
+ "description": "Size of each star in pixels"
667
+ },
668
+ {
669
+ "name": "showValue",
670
+ "type": "boolean",
671
+ "required": false,
672
+ "default": "true",
673
+ "description": "Whether to display the numeric value next to the stars"
674
+ },
675
+ {
676
+ "name": "interactive",
677
+ "type": "boolean",
678
+ "required": false,
679
+ "default": "false",
680
+ "description": "Whether users can click to set a rating"
681
+ },
682
+ {
683
+ "name": "onChange",
684
+ "type": "(value: number) => void",
685
+ "required": false,
686
+ "default": null,
687
+ "description": "Callback fired when the user selects a rating (requires interactive=true)"
688
+ }
689
+ ],
690
+ "themeTokens": [
691
+ "bgColor",
692
+ "textColor",
693
+ "accentColor",
694
+ "borderColor",
695
+ "fontFamily",
696
+ "radius",
697
+ "spacing",
698
+ "cardBg",
699
+ "cardRadius",
700
+ "cardBorder",
701
+ "gridColor"
702
+ ],
703
+ "aiHints": {
704
+ "pageTypes": ["ecommerce", "reviews", "marketplace", "restaurant", "agency"],
705
+ "placement": "body",
706
+ "priority": 6,
707
+ "sequenceOrder": 6,
708
+ "pairsWellWith": [
709
+ "dataDisplay.Badge",
710
+ "ecommerce.ProductCard",
711
+ "content.BlockquoteTestimonial"
712
+ ],
713
+ "maxPerPage": 10,
714
+ "isContainer": false
715
+ }
716
+ },
717
+ {
718
+ "id": "dataDisplay.Sparkline",
719
+ "name": "Sparkline",
720
+ "description": "Minimal inline chart for embedding small trend visualizations within text or table cells. No axes or labels.",
721
+ "whenToUse": "Use to show compact trend data inline with other content, such as inside table cells, dashboard cards, or next to metrics.",
722
+ "isShell": false,
723
+ "props": [
724
+ {
725
+ "name": "data",
726
+ "type": "number[]",
727
+ "required": true,
728
+ "default": null,
729
+ "description": "Array of numeric values to plot"
730
+ },
731
+ {
732
+ "name": "width",
733
+ "type": "number",
734
+ "required": false,
735
+ "default": "160",
736
+ "description": "Width of the sparkline in pixels"
737
+ },
738
+ {
739
+ "name": "height",
740
+ "type": "number",
741
+ "required": false,
742
+ "default": "48",
743
+ "description": "Height of the sparkline in pixels"
744
+ }
745
+ ],
746
+ "themeTokens": [
747
+ "bgColor",
748
+ "textColor",
749
+ "accentColor",
750
+ "borderColor",
751
+ "fontFamily",
752
+ "radius",
753
+ "spacing",
754
+ "cardBg",
755
+ "cardRadius",
756
+ "cardBorder",
757
+ "gridColor"
758
+ ],
759
+ "aiHints": {
760
+ "pageTypes": ["dashboard", "analytics"],
761
+ "placement": "body",
762
+ "priority": 4,
763
+ "sequenceOrder": 5,
764
+ "pairsWellWith": [
765
+ "dataDisplay.DataTable",
766
+ "dataDisplay.BarChart",
767
+ "dataDisplay.LineChart",
768
+ "dataDisplay.ProgressBar"
769
+ ],
770
+ "maxPerPage": 10,
771
+ "isContainer": false
772
+ }
773
+ },
774
+ {
775
+ "id": "dataDisplay.Timeline",
776
+ "name": "Timeline",
777
+ "description": "Vertical timeline with status-coded indicators for each event. Supports done, in-progress, blocked, and todo states.",
778
+ "whenToUse": "Use to display a chronological sequence of events, milestones, or changelog entries. Ideal for dashboards, portfolio case studies, and product changelogs.",
779
+ "isShell": false,
780
+ "props": [
781
+ {
782
+ "name": "items",
783
+ "type": "TimelineItem[]",
784
+ "required": true,
785
+ "default": null,
786
+ "description": "Array of timeline items: {id: string, title: string, description?: string, time?: string, status?: \"done\" | \"in_progress\" | \"blocked\" | \"todo\"}"
787
+ }
788
+ ],
789
+ "themeTokens": [
790
+ "bgColor",
791
+ "textColor",
792
+ "accentColor",
793
+ "borderColor",
794
+ "fontFamily",
795
+ "radius",
796
+ "spacing",
797
+ "cardBg",
798
+ "cardRadius",
799
+ "cardBorder",
800
+ "gridColor"
801
+ ],
802
+ "aiHints": {
803
+ "pageTypes": [
804
+ "dashboard",
805
+ "portfolio",
806
+ "changelog",
807
+ "education",
808
+ "event",
809
+ "landing",
810
+ "marketing",
811
+ "nonprofit"
812
+ ],
813
+ "placement": "body",
814
+ "priority": 6,
815
+ "sequenceOrder": 6,
816
+ "pairsWellWith": ["dataDisplay.Badge", "dataDisplay.ProgressBar", "content.HeadingSection"],
817
+ "maxPerPage": 2,
818
+ "isContainer": false
819
+ }
820
+ }
821
+ ]
822
+ }