elij-ui-library 0.2.0 → 0.2.1

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "elij-ui-library",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "type": "module",
5
5
  "description": "Reusable React UI Components Storybook",
6
6
  "license": "MIT",
@@ -1,63 +1,494 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "package": "elij-ui-library",
4
- "version": "0.1.0",
4
+ "version": "0.2.0",
5
5
  "description": "Public component metadata for Elij UI tooling, Storybook, CLI, and MCP.",
6
6
  "components": [
7
- { "name": "ActionLinkButton", "kind": "component", "category": "actions", "description": "A styled action link that combines navigation with button treatments.", "import": "ActionLinkButton", "story": "ActionLinkButton/Default", "props": ["href", "children", "icon", "size", "variant"] },
8
- { "name": "Alert", "kind": "component", "category": "feedback", "description": "Dismissible status message with semantic alert or status roles.", "import": "Alert", "story": "Alert/Info", "props": ["children", "title", "variant", "onDismiss"] },
9
- { "name": "AreaChart", "kind": "component", "category": "charts", "description": "Responsive area chart with shared chart controls.", "import": "AreaChart", "story": "Charts/Area", "props": ["data", "series", "xKey", "height", "loading"] },
10
- { "name": "Avatar", "kind": "component", "category": "data-display", "description": "Image or fallback avatar with configurable size and shape.", "import": "Avatar", "story": "Avatar/Default", "props": ["src", "alt", "children", "size", "shape"] },
11
- { "name": "Badge", "kind": "component", "category": "data-display", "description": "Compact status or label badge.", "import": "Badge", "story": "Badge/Default", "props": ["children", "variant"] },
12
- { "name": "BarChart", "kind": "component", "category": "charts", "description": "Responsive vertical bar chart.", "import": "BarChart", "story": "Charts/Bar", "props": ["data", "series", "xKey", "height", "loading"] },
13
- { "name": "Breadcrumb", "kind": "component", "category": "navigation", "description": "Accessible breadcrumb navigation.", "import": "Breadcrumb", "story": "Breadcrumb/Default", "props": ["items", "separator", "ariaLabel"] },
14
- { "name": "Button", "kind": "component", "category": "actions", "description": "Accessible button with primary, secondary, and ghost variants.", "import": "Button", "story": "Button/Default", "props": ["children", "variant", "size", "fullWidth", "disabled"] },
15
- { "name": "Card", "kind": "component", "category": "data-display", "description": "Surface container for grouped content.", "import": "Card", "story": "Card/Default", "props": ["children", "interactive", "className"] },
16
- { "name": "CardHeader", "kind": "component", "category": "data-display", "description": "Header region for a Card.", "import": "CardHeader", "story": "Card/Composition", "props": ["children"] },
17
- { "name": "CardBody", "kind": "component", "category": "data-display", "description": "Body region for a Card.", "import": "CardBody", "story": "Card/Composition", "props": ["children"] },
18
- { "name": "CardFooter", "kind": "component", "category": "data-display", "description": "Footer region for a Card.", "import": "CardFooter", "story": "Card/Composition", "props": ["children"] },
19
- { "name": "Checkbox", "kind": "component", "category": "forms", "description": "Native checkbox with an optional visible label.", "import": "Checkbox", "story": "Checkbox/Default", "props": ["label", "indeterminate", "disabled"] },
20
- { "name": "Dialog", "kind": "component", "category": "overlay", "description": "Modal dialog with focus management and escape handling.", "import": "Dialog", "story": "Dialog/Default", "props": ["open", "onOpenChange", "title", "description", "children"] },
21
- { "name": "Divider", "kind": "component", "category": "layout", "description": "Horizontal or vertical content divider.", "import": "Divider", "story": "Divider/Default", "props": ["orientation", "label"] },
22
- { "name": "DonutChart", "kind": "component", "category": "charts", "description": "Responsive donut chart.", "import": "DonutChart", "story": "Charts/Donut", "props": ["data", "nameKey", "valueKey", "height"] },
23
- { "name": "Drawer", "kind": "component", "category": "overlay", "description": "Focus-managed sliding panel.", "import": "Drawer", "story": "Drawer/Default", "props": ["open", "onOpenChange", "title", "placement", "width"] },
24
- { "name": "Dropdown", "kind": "component", "category": "navigation", "description": "Dismissible menu anchored to a trigger.", "import": "Dropdown", "story": "Dropdown/Default", "props": ["trigger", "items", "open", "onOpenChange", "onSelect"] },
25
- { "name": "DualAxisChart", "kind": "component", "category": "charts", "description": "Combination chart with optional second value axis.", "import": "DualAxisChart", "story": "Charts/Dual Axis", "props": ["data", "barSeries", "lineSeries", "xKey", "dualAxis"] },
26
- { "name": "Empty", "kind": "component", "category": "feedback", "description": "Empty state with optional image and action content.", "import": "Empty", "story": "Empty/Default", "props": ["description", "image", "children", "compact"] },
27
- { "name": "EventCarousel", "kind": "component", "category": "content", "description": "Responsive image and video carousel for event media.", "import": "EventCarousel", "story": "EventCarousel/Default", "props": ["title", "description", "media", "className"] },
28
- { "name": "FilterTabs", "kind": "component", "category": "navigation", "description": "Compact filter controls for switching a visible dataset.", "import": "FilterTabs", "story": "FilterTabs/Default", "props": ["items", "activeKey", "onChange", "ariaLabel"] },
29
- { "name": "Flex", "kind": "component", "category": "layout", "description": "Token-friendly flex layout primitive.", "import": "Flex", "story": "Flex/Default", "props": ["children", "vertical", "gap", "align", "justify", "wrap"] },
30
- { "name": "GroupedBarChart", "kind": "component", "category": "charts", "description": "Grouped responsive bar chart.", "import": "GroupedBarChart", "story": "Charts/Grouped Bar", "props": ["data", "series", "xKey", "height"] },
31
- { "name": "HorizontalBarChart", "kind": "component", "category": "charts", "description": "Responsive horizontal bar chart.", "import": "HorizontalBarChart", "story": "Charts/Horizontal Bar", "props": ["data", "series", "xKey", "height"] },
32
- { "name": "Input", "kind": "component", "category": "forms", "description": "Labeled text input with helper and error semantics.", "import": "Input", "story": "Input/Default", "props": ["label", "helperText", "error", "errorMessage", "fullWidth"] },
33
- { "name": "LineChart", "kind": "component", "category": "charts", "description": "Responsive line chart.", "import": "LineChart", "story": "Charts/Line", "props": ["data", "series", "xKey", "height", "loading"] },
34
- { "name": "Link", "kind": "component", "category": "typography", "description": "Styled inline or standalone link.", "import": "Link", "story": "Typography/Link", "props": ["children", "href"] },
35
- { "name": "Menu", "kind": "component", "category": "navigation", "description": "Keyboard-navigable menu items.", "import": "Menu", "story": "Menu/Default", "props": ["items", "orientation", "onSelect"] },
36
- { "name": "Pagination", "kind": "component", "category": "navigation", "description": "Accessible page navigation control.", "import": "Pagination", "story": "Pagination/Default", "props": ["current", "total", "pageSize", "onChange"] },
37
- { "name": "Paragraph", "kind": "component", "category": "typography", "description": "Styled paragraph text primitive.", "import": "Paragraph", "story": "Typography/Paragraph", "props": ["children"] },
38
- { "name": "PieChart", "kind": "component", "category": "charts", "description": "Responsive pie chart.", "import": "PieChart", "story": "Charts/Pie", "props": ["data", "nameKey", "valueKey", "height"] },
39
- { "name": "Progress", "kind": "component", "category": "feedback", "description": "Line or circular progress indicator.", "import": "Progress", "story": "Progress/Default", "props": ["percent", "type", "status", "showInfo", "label"] },
40
- { "name": "RadioGroup", "kind": "component", "category": "forms", "description": "Accessible radio option group.", "import": "RadioGroup", "story": "RadioGroup/Default", "props": ["name", "label", "options", "value", "onValueChange"] },
41
- { "name": "Result", "kind": "component", "category": "feedback", "description": "Outcome or status panel with optional actions.", "import": "Result", "story": "Result/Success", "props": ["status", "title", "description", "actions"] },
42
- { "name": "SectionHeading", "kind": "component", "category": "content", "description": "Consistent eyebrow, heading, and description block.", "import": "SectionHeading", "story": "SectionHeading/Default", "props": ["eyebrow", "title", "description"] },
43
- { "name": "Select", "kind": "component", "category": "forms", "description": "Labeled native select with helper and error semantics.", "import": "Select", "story": "Select/Default", "props": ["label", "options", "placeholder", "error", "fullWidth"] },
44
- { "name": "Skeleton", "kind": "component", "category": "feedback", "description": "Loading placeholder for content surfaces.", "import": "Skeleton", "story": "Skeleton/Default", "props": ["variant", "width", "height", "animated"] },
45
- { "name": "Space", "kind": "component", "category": "layout", "description": "Consistent spacing primitive for inline or stacked content.", "import": "Space", "story": "Space/Default", "props": ["children", "direction", "size", "wrap", "align"] },
46
- { "name": "Spinner", "kind": "component", "category": "feedback", "description": "Loading status indicator.", "import": "Spinner", "story": "Spinner/Default", "props": ["size", "label"] },
47
- { "name": "StackedBarChart", "kind": "component", "category": "charts", "description": "Stacked responsive bar chart.", "import": "StackedBarChart", "story": "Charts/Stacked Bar", "props": ["data", "series", "xKey", "height"] },
48
- { "name": "StackedBarLineChart", "kind": "component", "category": "charts", "description": "Combined stacked bar and line chart.", "import": "StackedBarLineChart", "story": "Charts/Stacked Bar Line", "props": ["data", "barSeries", "lineSeries", "xKey"] },
49
- { "name": "Steps", "kind": "component", "category": "navigation", "description": "Progressive step navigation with statuses.", "import": "Steps", "story": "Steps/Default", "props": ["items", "current", "onChange", "direction"] },
50
- { "name": "Switch", "kind": "component", "category": "forms", "description": "Accessible on/off switch control.", "import": "Switch", "story": "Switch/Default", "props": ["checked", "defaultChecked", "onCheckedChange", "label"] },
51
- { "name": "Table", "kind": "component", "category": "data-display", "description": "Typed data table with empty state support.", "import": "Table", "story": "Table/Default", "props": ["columns", "data", "rowKey", "caption"] },
52
- { "name": "Tabs", "kind": "component", "category": "navigation", "description": "Keyboard-navigable content tabs.", "import": "Tabs", "story": "Tabs/Default", "props": ["items", "activeKey", "onChange", "orientation"] },
53
- { "name": "Tag", "kind": "component", "category": "data-display", "description": "Compact label that can optionally be dismissed.", "import": "Tag", "story": "Tag/Default", "props": ["children", "color", "closable", "onClose"] },
54
- { "name": "Text", "kind": "component", "category": "typography", "description": "Styled inline text primitive.", "import": "Text", "story": "Typography/Text", "props": ["children", "tone", "strong", "code"] },
55
- { "name": "Textarea", "kind": "component", "category": "forms", "description": "Labeled multiline input with helper and error semantics.", "import": "Textarea", "story": "Textarea/Default", "props": ["label", "helperText", "error", "errorMessage", "fullWidth"] },
56
- { "name": "Title", "kind": "component", "category": "typography", "description": "Semantic heading primitive.", "import": "Title", "story": "Typography/Title", "props": ["level", "children"] },
57
- { "name": "Tooltip", "kind": "component", "category": "feedback", "description": "Accessible hover and focus tooltip.", "import": "Tooltip", "story": "Tooltip/Default", "props": ["title", "children", "placement", "delay"] },
58
- { "name": "UIProvider", "kind": "provider", "category": "foundation", "description": "Locale, message, theme, and color-scheme provider.", "import": "UIProvider", "story": "UIProvider/Themes", "props": ["children", "locale", "messages", "theme"] },
59
- { "name": "WhatsAppButton", "kind": "component", "category": "actions", "description": "Link-styled CTA with WhatsApp-friendly defaults.", "import": "WhatsAppButton", "story": "WhatsAppButton/Default", "props": ["href", "children", "icon", "size", "variant"] },
60
- { "name": "WhatsAppIcon", "kind": "icon", "category": "icons", "description": "Brand-safe inline WhatsApp SVG icon.", "import": "WhatsAppIcon", "story": "WhatsAppIcon/Default", "props": ["size", "title"] }
7
+ {
8
+ "name": "ActionLinkButton",
9
+ "kind": "component",
10
+ "category": "actions",
11
+ "description": "A styled action link that combines navigation with button treatments.",
12
+ "import": "ActionLinkButton",
13
+ "story": "ActionLinkButton/Default",
14
+ "props": ["href", "children", "icon", "size", "variant"]
15
+ },
16
+ {
17
+ "name": "Alert",
18
+ "kind": "component",
19
+ "category": "feedback",
20
+ "description": "Dismissible status message with semantic alert or status roles.",
21
+ "import": "Alert",
22
+ "story": "Alert/Info",
23
+ "props": ["children", "title", "variant", "onDismiss"]
24
+ },
25
+ {
26
+ "name": "AreaChart",
27
+ "kind": "component",
28
+ "category": "charts",
29
+ "description": "Responsive area chart with shared chart controls.",
30
+ "import": "AreaChart",
31
+ "story": "Charts/Area",
32
+ "props": ["data", "series", "xKey", "height", "loading"]
33
+ },
34
+ {
35
+ "name": "Avatar",
36
+ "kind": "component",
37
+ "category": "data-display",
38
+ "description": "Image or fallback avatar with configurable size and shape.",
39
+ "import": "Avatar",
40
+ "story": "Avatar/Default",
41
+ "props": ["src", "alt", "children", "size", "shape"]
42
+ },
43
+ {
44
+ "name": "Badge",
45
+ "kind": "component",
46
+ "category": "data-display",
47
+ "description": "Compact status or label badge.",
48
+ "import": "Badge",
49
+ "story": "Badge/Default",
50
+ "props": ["children", "variant"]
51
+ },
52
+ {
53
+ "name": "BarChart",
54
+ "kind": "component",
55
+ "category": "charts",
56
+ "description": "Responsive vertical bar chart.",
57
+ "import": "BarChart",
58
+ "story": "Charts/Bar",
59
+ "props": ["data", "series", "xKey", "height", "loading"]
60
+ },
61
+ {
62
+ "name": "Breadcrumb",
63
+ "kind": "component",
64
+ "category": "navigation",
65
+ "description": "Accessible breadcrumb navigation.",
66
+ "import": "Breadcrumb",
67
+ "story": "Breadcrumb/Default",
68
+ "props": ["items", "separator", "ariaLabel"]
69
+ },
70
+ {
71
+ "name": "Button",
72
+ "kind": "component",
73
+ "category": "actions",
74
+ "description": "Accessible button with primary, secondary, and ghost variants.",
75
+ "import": "Button",
76
+ "story": "Button/Default",
77
+ "props": ["children", "variant", "size", "fullWidth", "disabled"]
78
+ },
79
+ {
80
+ "name": "Card",
81
+ "kind": "component",
82
+ "category": "data-display",
83
+ "description": "Surface container for grouped content.",
84
+ "import": "Card",
85
+ "story": "Card/Default",
86
+ "props": ["children", "interactive", "className"]
87
+ },
88
+ {
89
+ "name": "CardHeader",
90
+ "kind": "component",
91
+ "category": "data-display",
92
+ "description": "Header region for a Card.",
93
+ "import": "CardHeader",
94
+ "story": "Card/Composition",
95
+ "props": ["children"]
96
+ },
97
+ {
98
+ "name": "CardBody",
99
+ "kind": "component",
100
+ "category": "data-display",
101
+ "description": "Body region for a Card.",
102
+ "import": "CardBody",
103
+ "story": "Card/Composition",
104
+ "props": ["children"]
105
+ },
106
+ {
107
+ "name": "CardFooter",
108
+ "kind": "component",
109
+ "category": "data-display",
110
+ "description": "Footer region for a Card.",
111
+ "import": "CardFooter",
112
+ "story": "Card/Composition",
113
+ "props": ["children"]
114
+ },
115
+ {
116
+ "name": "Checkbox",
117
+ "kind": "component",
118
+ "category": "forms",
119
+ "description": "Native checkbox with an optional visible label.",
120
+ "import": "Checkbox",
121
+ "story": "Checkbox/Default",
122
+ "props": ["label", "indeterminate", "disabled"]
123
+ },
124
+ {
125
+ "name": "Dialog",
126
+ "kind": "component",
127
+ "category": "overlay",
128
+ "description": "Modal dialog with focus management and escape handling.",
129
+ "import": "Dialog",
130
+ "story": "Dialog/Default",
131
+ "props": ["open", "onOpenChange", "title", "description", "children"]
132
+ },
133
+ {
134
+ "name": "Divider",
135
+ "kind": "component",
136
+ "category": "layout",
137
+ "description": "Horizontal or vertical content divider.",
138
+ "import": "Divider",
139
+ "story": "Divider/Default",
140
+ "props": ["orientation", "label"]
141
+ },
142
+ {
143
+ "name": "DonutChart",
144
+ "kind": "component",
145
+ "category": "charts",
146
+ "description": "Responsive donut chart.",
147
+ "import": "DonutChart",
148
+ "story": "Charts/Donut",
149
+ "props": ["data", "nameKey", "valueKey", "height"]
150
+ },
151
+ {
152
+ "name": "Drawer",
153
+ "kind": "component",
154
+ "category": "overlay",
155
+ "description": "Focus-managed sliding panel.",
156
+ "import": "Drawer",
157
+ "story": "Drawer/Default",
158
+ "props": ["open", "onOpenChange", "title", "placement", "width"]
159
+ },
160
+ {
161
+ "name": "Dropdown",
162
+ "kind": "component",
163
+ "category": "navigation",
164
+ "description": "Dismissible menu anchored to a trigger.",
165
+ "import": "Dropdown",
166
+ "story": "Dropdown/Default",
167
+ "props": ["trigger", "items", "open", "onOpenChange", "onSelect"]
168
+ },
169
+ {
170
+ "name": "DualAxisChart",
171
+ "kind": "component",
172
+ "category": "charts",
173
+ "description": "Combination chart with optional second value axis.",
174
+ "import": "DualAxisChart",
175
+ "story": "Charts/Dual Axis",
176
+ "props": ["data", "barSeries", "lineSeries", "xKey", "dualAxis"]
177
+ },
178
+ {
179
+ "name": "Empty",
180
+ "kind": "component",
181
+ "category": "feedback",
182
+ "description": "Empty state with optional image and action content.",
183
+ "import": "Empty",
184
+ "story": "Empty/Default",
185
+ "props": ["description", "image", "children", "compact"]
186
+ },
187
+ {
188
+ "name": "EventCarousel",
189
+ "kind": "component",
190
+ "category": "content",
191
+ "description": "Responsive image and video carousel for event media.",
192
+ "import": "EventCarousel",
193
+ "story": "EventCarousel/Default",
194
+ "props": ["title", "description", "media", "className"]
195
+ },
196
+ {
197
+ "name": "FilterTabs",
198
+ "kind": "component",
199
+ "category": "navigation",
200
+ "description": "Compact filter controls for switching a visible dataset.",
201
+ "import": "FilterTabs",
202
+ "story": "FilterTabs/Default",
203
+ "props": ["items", "activeKey", "onChange", "ariaLabel"]
204
+ },
205
+ {
206
+ "name": "Flex",
207
+ "kind": "component",
208
+ "category": "layout",
209
+ "description": "Token-friendly flex layout primitive.",
210
+ "import": "Flex",
211
+ "story": "Flex/Default",
212
+ "props": ["children", "vertical", "gap", "align", "justify", "wrap"]
213
+ },
214
+ {
215
+ "name": "GroupedBarChart",
216
+ "kind": "component",
217
+ "category": "charts",
218
+ "description": "Grouped responsive bar chart.",
219
+ "import": "GroupedBarChart",
220
+ "story": "Charts/Grouped Bar",
221
+ "props": ["data", "series", "xKey", "height"]
222
+ },
223
+ {
224
+ "name": "HorizontalBarChart",
225
+ "kind": "component",
226
+ "category": "charts",
227
+ "description": "Responsive horizontal bar chart.",
228
+ "import": "HorizontalBarChart",
229
+ "story": "Charts/Horizontal Bar",
230
+ "props": ["data", "series", "xKey", "height"]
231
+ },
232
+ {
233
+ "name": "Input",
234
+ "kind": "component",
235
+ "category": "forms",
236
+ "description": "Labeled text input with helper and error semantics.",
237
+ "import": "Input",
238
+ "story": "Input/Default",
239
+ "props": ["label", "helperText", "error", "errorMessage", "fullWidth"]
240
+ },
241
+ {
242
+ "name": "LineChart",
243
+ "kind": "component",
244
+ "category": "charts",
245
+ "description": "Responsive line chart.",
246
+ "import": "LineChart",
247
+ "story": "Charts/Line",
248
+ "props": ["data", "series", "xKey", "height", "loading"]
249
+ },
250
+ {
251
+ "name": "Link",
252
+ "kind": "component",
253
+ "category": "typography",
254
+ "description": "Styled inline or standalone link.",
255
+ "import": "Link",
256
+ "story": "Typography/Link",
257
+ "props": ["children", "href"]
258
+ },
259
+ {
260
+ "name": "Menu",
261
+ "kind": "component",
262
+ "category": "navigation",
263
+ "description": "Keyboard-navigable menu items.",
264
+ "import": "Menu",
265
+ "story": "Menu/Default",
266
+ "props": ["items", "orientation", "onSelect"]
267
+ },
268
+ {
269
+ "name": "Pagination",
270
+ "kind": "component",
271
+ "category": "navigation",
272
+ "description": "Accessible page navigation control.",
273
+ "import": "Pagination",
274
+ "story": "Pagination/Default",
275
+ "props": ["current", "total", "pageSize", "onChange"]
276
+ },
277
+ {
278
+ "name": "Paragraph",
279
+ "kind": "component",
280
+ "category": "typography",
281
+ "description": "Styled paragraph text primitive.",
282
+ "import": "Paragraph",
283
+ "story": "Typography/Paragraph",
284
+ "props": ["children"]
285
+ },
286
+ {
287
+ "name": "PieChart",
288
+ "kind": "component",
289
+ "category": "charts",
290
+ "description": "Responsive pie chart.",
291
+ "import": "PieChart",
292
+ "story": "Charts/Pie",
293
+ "props": ["data", "nameKey", "valueKey", "height"]
294
+ },
295
+ {
296
+ "name": "Progress",
297
+ "kind": "component",
298
+ "category": "feedback",
299
+ "description": "Line or circular progress indicator.",
300
+ "import": "Progress",
301
+ "story": "Progress/Default",
302
+ "props": ["percent", "type", "status", "showInfo", "label"]
303
+ },
304
+ {
305
+ "name": "RadioGroup",
306
+ "kind": "component",
307
+ "category": "forms",
308
+ "description": "Accessible radio option group.",
309
+ "import": "RadioGroup",
310
+ "story": "RadioGroup/Default",
311
+ "props": ["name", "label", "options", "value", "onValueChange"]
312
+ },
313
+ {
314
+ "name": "Result",
315
+ "kind": "component",
316
+ "category": "feedback",
317
+ "description": "Outcome or status panel with optional actions.",
318
+ "import": "Result",
319
+ "story": "Result/Success",
320
+ "props": ["status", "title", "description", "actions"]
321
+ },
322
+ {
323
+ "name": "SectionHeading",
324
+ "kind": "component",
325
+ "category": "content",
326
+ "description": "Consistent eyebrow, heading, and description block.",
327
+ "import": "SectionHeading",
328
+ "story": "SectionHeading/Default",
329
+ "props": ["eyebrow", "title", "description"]
330
+ },
331
+ {
332
+ "name": "Select",
333
+ "kind": "component",
334
+ "category": "forms",
335
+ "description": "Labeled native select with helper and error semantics.",
336
+ "import": "Select",
337
+ "story": "Select/Default",
338
+ "props": ["label", "options", "placeholder", "error", "fullWidth"]
339
+ },
340
+ {
341
+ "name": "Skeleton",
342
+ "kind": "component",
343
+ "category": "feedback",
344
+ "description": "Loading placeholder for content surfaces.",
345
+ "import": "Skeleton",
346
+ "story": "Skeleton/Default",
347
+ "props": ["variant", "width", "height", "animated"]
348
+ },
349
+ {
350
+ "name": "Space",
351
+ "kind": "component",
352
+ "category": "layout",
353
+ "description": "Consistent spacing primitive for inline or stacked content.",
354
+ "import": "Space",
355
+ "story": "Space/Default",
356
+ "props": ["children", "direction", "size", "wrap", "align"]
357
+ },
358
+ {
359
+ "name": "Spinner",
360
+ "kind": "component",
361
+ "category": "feedback",
362
+ "description": "Loading status indicator.",
363
+ "import": "Spinner",
364
+ "story": "Spinner/Default",
365
+ "props": ["size", "label"]
366
+ },
367
+ {
368
+ "name": "StackedBarChart",
369
+ "kind": "component",
370
+ "category": "charts",
371
+ "description": "Stacked responsive bar chart.",
372
+ "import": "StackedBarChart",
373
+ "story": "Charts/Stacked Bar",
374
+ "props": ["data", "series", "xKey", "height"]
375
+ },
376
+ {
377
+ "name": "StackedBarLineChart",
378
+ "kind": "component",
379
+ "category": "charts",
380
+ "description": "Combined stacked bar and line chart.",
381
+ "import": "StackedBarLineChart",
382
+ "story": "Charts/Stacked Bar Line",
383
+ "props": ["data", "barSeries", "lineSeries", "xKey"]
384
+ },
385
+ {
386
+ "name": "Steps",
387
+ "kind": "component",
388
+ "category": "navigation",
389
+ "description": "Progressive step navigation with statuses.",
390
+ "import": "Steps",
391
+ "story": "Steps/Default",
392
+ "props": ["items", "current", "onChange", "direction"]
393
+ },
394
+ {
395
+ "name": "Switch",
396
+ "kind": "component",
397
+ "category": "forms",
398
+ "description": "Accessible on/off switch control.",
399
+ "import": "Switch",
400
+ "story": "Switch/Default",
401
+ "props": ["checked", "defaultChecked", "onCheckedChange", "label"]
402
+ },
403
+ {
404
+ "name": "Table",
405
+ "kind": "component",
406
+ "category": "data-display",
407
+ "description": "Typed data table with empty state support.",
408
+ "import": "Table",
409
+ "story": "Table/Default",
410
+ "props": ["columns", "data", "rowKey", "caption"]
411
+ },
412
+ {
413
+ "name": "Tabs",
414
+ "kind": "component",
415
+ "category": "navigation",
416
+ "description": "Keyboard-navigable content tabs.",
417
+ "import": "Tabs",
418
+ "story": "Tabs/Default",
419
+ "props": ["items", "activeKey", "onChange", "orientation"]
420
+ },
421
+ {
422
+ "name": "Tag",
423
+ "kind": "component",
424
+ "category": "data-display",
425
+ "description": "Compact label that can optionally be dismissed.",
426
+ "import": "Tag",
427
+ "story": "Tag/Default",
428
+ "props": ["children", "color", "closable", "onClose"]
429
+ },
430
+ {
431
+ "name": "Text",
432
+ "kind": "component",
433
+ "category": "typography",
434
+ "description": "Styled inline text primitive.",
435
+ "import": "Text",
436
+ "story": "Typography/Text",
437
+ "props": ["children", "tone", "strong", "code"]
438
+ },
439
+ {
440
+ "name": "Textarea",
441
+ "kind": "component",
442
+ "category": "forms",
443
+ "description": "Labeled multiline input with helper and error semantics.",
444
+ "import": "Textarea",
445
+ "story": "Textarea/Default",
446
+ "props": ["label", "helperText", "error", "errorMessage", "fullWidth"]
447
+ },
448
+ {
449
+ "name": "Title",
450
+ "kind": "component",
451
+ "category": "typography",
452
+ "description": "Semantic heading primitive.",
453
+ "import": "Title",
454
+ "story": "Typography/Title",
455
+ "props": ["level", "children"]
456
+ },
457
+ {
458
+ "name": "Tooltip",
459
+ "kind": "component",
460
+ "category": "feedback",
461
+ "description": "Accessible hover and focus tooltip.",
462
+ "import": "Tooltip",
463
+ "story": "Tooltip/Default",
464
+ "props": ["title", "children", "placement", "delay"]
465
+ },
466
+ {
467
+ "name": "UIProvider",
468
+ "kind": "provider",
469
+ "category": "foundation",
470
+ "description": "Locale, message, theme, and color-scheme provider.",
471
+ "import": "UIProvider",
472
+ "story": "UIProvider/Themes",
473
+ "props": ["children", "locale", "messages", "theme"]
474
+ },
475
+ {
476
+ "name": "WhatsAppButton",
477
+ "kind": "component",
478
+ "category": "actions",
479
+ "description": "Link-styled CTA with WhatsApp-friendly defaults.",
480
+ "import": "WhatsAppButton",
481
+ "story": "WhatsAppButton/Default",
482
+ "props": ["href", "children", "icon", "size", "variant"]
483
+ },
484
+ {
485
+ "name": "WhatsAppIcon",
486
+ "kind": "icon",
487
+ "category": "icons",
488
+ "description": "Brand-safe inline WhatsApp SVG icon.",
489
+ "import": "WhatsAppIcon",
490
+ "story": "WhatsAppIcon/Default",
491
+ "props": ["size", "title"]
492
+ }
61
493
  ]
62
494
  }
63
-