elij-ui-library 0.1.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.
Files changed (91) hide show
  1. package/README.md +53 -0
  2. package/dist/index.d.ts +2 -81
  3. package/dist/src/index.d.ts +81 -0
  4. package/dist/src/registry.test.d.ts +1 -0
  5. package/package.json +6 -4
  6. package/registry/components.json +494 -0
  7. package/registry/schema.json +32 -0
  8. /package/dist/{components → src/components}/ActionLinkButton/ActionLinkButton.d.ts +0 -0
  9. /package/dist/{components → src/components}/ActionLinkButton/index.d.ts +0 -0
  10. /package/dist/{components → src/components}/Alert/Alert.d.ts +0 -0
  11. /package/dist/{components → src/components}/Alert/index.d.ts +0 -0
  12. /package/dist/{components → src/components}/Avatar/Avatar.d.ts +0 -0
  13. /package/dist/{components → src/components}/Avatar/index.d.ts +0 -0
  14. /package/dist/{components → src/components}/Badge/Badge.d.ts +0 -0
  15. /package/dist/{components → src/components}/Badge/index.d.ts +0 -0
  16. /package/dist/{components → src/components}/Breadcrumb/Breadcrumb.d.ts +0 -0
  17. /package/dist/{components → src/components}/Breadcrumb/index.d.ts +0 -0
  18. /package/dist/{components → src/components}/Button/Button.d.ts +0 -0
  19. /package/dist/{components → src/components}/Button/index.d.ts +0 -0
  20. /package/dist/{components → src/components}/Card/Card.d.ts +0 -0
  21. /package/dist/{components → src/components}/Card/index.d.ts +0 -0
  22. /package/dist/{components → src/components}/Charts/Charts.d.ts +0 -0
  23. /package/dist/{components → src/components}/Charts/index.d.ts +0 -0
  24. /package/dist/{components → src/components}/Checkbox/Checkbox.d.ts +0 -0
  25. /package/dist/{components → src/components}/Checkbox/index.d.ts +0 -0
  26. /package/dist/{components → src/components}/Dialog/Dialog.d.ts +0 -0
  27. /package/dist/{components → src/components}/Dialog/index.d.ts +0 -0
  28. /package/dist/{components → src/components}/Divider/Divider.d.ts +0 -0
  29. /package/dist/{components → src/components}/Divider/index.d.ts +0 -0
  30. /package/dist/{components → src/components}/Drawer/Drawer.d.ts +0 -0
  31. /package/dist/{components → src/components}/Drawer/index.d.ts +0 -0
  32. /package/dist/{components → src/components}/Dropdown/Dropdown.d.ts +0 -0
  33. /package/dist/{components → src/components}/Dropdown/index.d.ts +0 -0
  34. /package/dist/{components → src/components}/Empty/Empty.d.ts +0 -0
  35. /package/dist/{components → src/components}/Empty/index.d.ts +0 -0
  36. /package/dist/{components → src/components}/EventCarousel/EventCarousel.d.ts +0 -0
  37. /package/dist/{components → src/components}/EventCarousel/index.d.ts +0 -0
  38. /package/dist/{components → src/components}/FilterTabs/FilterTabs.d.ts +0 -0
  39. /package/dist/{components → src/components}/FilterTabs/index.d.ts +0 -0
  40. /package/dist/{components → src/components}/Flex/Flex.d.ts +0 -0
  41. /package/dist/{components → src/components}/Flex/index.d.ts +0 -0
  42. /package/dist/{components → src/components}/Grid/Grid.d.ts +0 -0
  43. /package/dist/{components → src/components}/Grid/index.d.ts +0 -0
  44. /package/dist/{components → src/components}/Input/Input.d.ts +0 -0
  45. /package/dist/{components → src/components}/Input/index.d.ts +0 -0
  46. /package/dist/{components → src/components}/Layout/Layout.d.ts +0 -0
  47. /package/dist/{components → src/components}/Layout/index.d.ts +0 -0
  48. /package/dist/{components → src/components}/Menu/Menu.d.ts +0 -0
  49. /package/dist/{components → src/components}/Menu/index.d.ts +0 -0
  50. /package/dist/{components → src/components}/Pagination/Pagination.d.ts +0 -0
  51. /package/dist/{components → src/components}/Pagination/index.d.ts +0 -0
  52. /package/dist/{components → src/components}/Progress/Progress.d.ts +0 -0
  53. /package/dist/{components → src/components}/Progress/index.d.ts +0 -0
  54. /package/dist/{components → src/components}/RadioGroup/RadioGroup.d.ts +0 -0
  55. /package/dist/{components → src/components}/RadioGroup/index.d.ts +0 -0
  56. /package/dist/{components → src/components}/Result/Result.d.ts +0 -0
  57. /package/dist/{components → src/components}/Result/index.d.ts +0 -0
  58. /package/dist/{components → src/components}/SectionHeading/SectionHeading.d.ts +0 -0
  59. /package/dist/{components → src/components}/SectionHeading/index.d.ts +0 -0
  60. /package/dist/{components → src/components}/Select/Select.d.ts +0 -0
  61. /package/dist/{components → src/components}/Select/index.d.ts +0 -0
  62. /package/dist/{components → src/components}/Skeleton/Skeleton.d.ts +0 -0
  63. /package/dist/{components → src/components}/Skeleton/index.d.ts +0 -0
  64. /package/dist/{components → src/components}/Space/Space.d.ts +0 -0
  65. /package/dist/{components → src/components}/Space/index.d.ts +0 -0
  66. /package/dist/{components → src/components}/Spinner/Spinner.d.ts +0 -0
  67. /package/dist/{components → src/components}/Spinner/index.d.ts +0 -0
  68. /package/dist/{components → src/components}/Steps/Steps.d.ts +0 -0
  69. /package/dist/{components → src/components}/Steps/index.d.ts +0 -0
  70. /package/dist/{components → src/components}/Switch/Switch.d.ts +0 -0
  71. /package/dist/{components → src/components}/Switch/index.d.ts +0 -0
  72. /package/dist/{components → src/components}/Table/Table.d.ts +0 -0
  73. /package/dist/{components → src/components}/Table/index.d.ts +0 -0
  74. /package/dist/{components → src/components}/Tabs/Tabs.d.ts +0 -0
  75. /package/dist/{components → src/components}/Tabs/index.d.ts +0 -0
  76. /package/dist/{components → src/components}/Tag/Tag.d.ts +0 -0
  77. /package/dist/{components → src/components}/Tag/index.d.ts +0 -0
  78. /package/dist/{components → src/components}/Textarea/Textarea.d.ts +0 -0
  79. /package/dist/{components → src/components}/Textarea/index.d.ts +0 -0
  80. /package/dist/{components → src/components}/Tooltip/Tooltip.d.ts +0 -0
  81. /package/dist/{components → src/components}/Tooltip/index.d.ts +0 -0
  82. /package/dist/{components → src/components}/Typography/Typography.d.ts +0 -0
  83. /package/dist/{components → src/components}/Typography/index.d.ts +0 -0
  84. /package/dist/{components → src/components}/WhatsAppButton/WhatsAppButton.d.ts +0 -0
  85. /package/dist/{components → src/components}/WhatsAppButton/index.d.ts +0 -0
  86. /package/dist/{i18n → src/i18n}/messages.d.ts +0 -0
  87. /package/dist/{icons → src/icons}/WhatsAppIcon.d.ts +0 -0
  88. /package/dist/{icons → src/icons}/index.d.ts +0 -0
  89. /package/dist/{provider → src/provider}/UIContext.d.ts +0 -0
  90. /package/dist/{provider → src/provider}/UIProvider.d.ts +0 -0
  91. /package/dist/{provider → src/provider}/index.d.ts +0 -0
package/README.md CHANGED
@@ -2,6 +2,9 @@
2
2
 
3
3
  A reusable React + TypeScript component library with Storybook documentation.
4
4
 
5
+ The package is the runtime layer of Elij UI. Component metadata is also published
6
+ in registry/components.json for future CLI and MCP tooling.
7
+
5
8
  ## Development
6
9
 
7
10
  ```bash
@@ -32,6 +35,24 @@ npm run build-storybook
32
35
 
33
36
  Every component includes TypeScript types and Storybook examples. Form controls expose native HTML attributes, and interactive components include keyboard and accessibility semantics.
34
37
 
38
+ The Storybook Registry/Catalog story provides a searchable starting point for
39
+ the public component inventory. Every public component has a dedicated Storybook
40
+ story with controls or an interaction example where appropriate.
41
+
42
+ ## Versioning and future tooling
43
+
44
+ Use the changelog for each published version and keep the registry version in
45
+ sync with the package version. The next packages can be added separately:
46
+
47
+ ~~~text
48
+ elij-ui-library React runtime, styles, and registry
49
+ elij-ui-cli init, list, add, and doctor commands
50
+ elij-ui-mcp-server read-only component discovery for AI hosts
51
+ ~~~
52
+
53
+ The CLI and MCP server should consume the registry rather than parsing source
54
+ files or Storybook internals.
55
+
35
56
  ## Test
36
57
 
37
58
  ```bash
@@ -59,6 +80,38 @@ export function Example() {
59
80
  }
60
81
  ```
61
82
 
83
+ ## Install from npm
84
+
85
+ ~~~bash
86
+ npm install elij-ui-library
87
+ ~~~
88
+
89
+ Import the stylesheet once, then use the typed component exports:
90
+
91
+ ~~~tsx
92
+ import 'elij-ui-library/styles.css';
93
+ import { Button, SectionHeading } from 'elij-ui-library';
94
+
95
+ export function Example() {
96
+ return (
97
+ <>
98
+ <SectionHeading eyebrow="Example" title="A typed component" />
99
+ <Button>Continue</Button>
100
+ </>
101
+ );
102
+ }
103
+ ~~~
104
+
105
+ The published registry can be consumed by tooling:
106
+
107
+ ~~~ts
108
+ import registry from 'elij-ui-library/registry';
109
+ ~~~
110
+
111
+ registry/components.json is intended for component search, documentation,
112
+ CLI scaffolding, and MCP resources. It is not required at runtime by the
113
+ React components.
114
+
62
115
  ## Locale and color themes
63
116
 
64
117
  Wrap your application, or one section of it, with `UIProvider`. English and light theme are used by default.
package/dist/index.d.ts CHANGED
@@ -1,81 +1,2 @@
1
- export { Button } from './components/Button';
2
- export type { ButtonProps, ButtonSize, ButtonVariant } from './components/Button';
3
- export { UIProvider, useUI } from './provider';
4
- export type { BuiltInLocale, MessageKey, Messages, ThemeName, UIContextValue, UIProviderProps, } from './provider';
5
- export { Alert } from './components/Alert';
6
- export type { AlertProps, AlertVariant } from './components/Alert';
7
- export { Badge } from './components/Badge';
8
- export type { BadgeProps, BadgeVariant } from './components/Badge';
9
- export { Card, CardBody, CardFooter, CardHeader } from './components/Card';
10
- export type { CardProps } from './components/Card';
11
- export { Checkbox } from './components/Checkbox';
12
- export type { CheckboxProps } from './components/Checkbox';
13
- export { Dialog } from './components/Dialog';
14
- export type { DialogProps } from './components/Dialog';
15
- export { Divider } from './components/Divider';
16
- export type { DividerProps } from './components/Divider';
17
- export { Input } from './components/Input';
18
- export type { InputProps } from './components/Input';
19
- export { RadioGroup } from './components/RadioGroup';
20
- export type { RadioGroupProps, RadioOption } from './components/RadioGroup';
21
- export { Select } from './components/Select';
22
- export type { SelectOption, SelectProps } from './components/Select';
23
- export { Spinner } from './components/Spinner';
24
- export type { SpinnerProps } from './components/Spinner';
25
- export { Switch } from './components/Switch';
26
- export type { SwitchProps } from './components/Switch';
27
- export { Textarea } from './components/Textarea';
28
- export type { TextareaProps } from './components/Textarea';
29
- export { Avatar } from './components/Avatar';
30
- export type { AvatarProps } from './components/Avatar';
31
- export { Breadcrumb } from './components/Breadcrumb';
32
- export type { BreadcrumbItem, BreadcrumbProps } from './components/Breadcrumb';
33
- export { Drawer } from './components/Drawer';
34
- export type { DrawerProps } from './components/Drawer';
35
- export { Dropdown } from './components/Dropdown';
36
- export type { DropdownProps } from './components/Dropdown';
37
- export { Empty } from './components/Empty';
38
- export type { EmptyProps } from './components/Empty';
39
- export { Flex } from './components/Flex';
40
- export type { FlexProps } from './components/Flex';
41
- export { Col, Row } from './components/Grid';
42
- export type { ColProps, RowProps } from './components/Grid';
43
- export { Content, Footer, Header, Layout, Sider } from './components/Layout';
44
- export { Menu } from './components/Menu';
45
- export type { MenuItem, MenuProps } from './components/Menu';
46
- export { Pagination } from './components/Pagination';
47
- export type { PaginationProps } from './components/Pagination';
48
- export { Progress } from './components/Progress';
49
- export type { ProgressProps } from './components/Progress';
50
- export { Result } from './components/Result';
51
- export type { ResultProps } from './components/Result';
52
- export { Skeleton } from './components/Skeleton';
53
- export type { SkeletonProps } from './components/Skeleton';
54
- export { Space } from './components/Space';
55
- export type { SpaceProps } from './components/Space';
56
- export { Steps } from './components/Steps';
57
- export type { StepItem, StepsProps } from './components/Steps';
58
- export { Table } from './components/Table';
59
- export type { TableColumn, TableProps } from './components/Table';
60
- export { Tabs } from './components/Tabs';
61
- export type { TabItem, TabsProps } from './components/Tabs';
62
- export { FilterTabs } from './components/FilterTabs';
63
- export type { FilterTabItem, FilterTabsProps } from './components/FilterTabs';
64
- export { SectionHeading } from './components/SectionHeading';
65
- export type { SectionHeadingProps } from './components/SectionHeading';
66
- export { ActionLinkButton } from './components/ActionLinkButton';
67
- export type { ActionLinkButtonProps } from './components/ActionLinkButton';
68
- export { WhatsAppButton } from './components/WhatsAppButton';
69
- export type { WhatsAppButtonProps } from './components/WhatsAppButton';
70
- export { EventCarousel } from './components/EventCarousel';
71
- export type { CarouselMedia, EventCarouselProps } from './components/EventCarousel';
72
- export { WhatsAppIcon } from './icons';
73
- export type { WhatsAppIconProps } from './icons';
74
- export { Tag } from './components/Tag';
75
- export type { TagProps } from './components/Tag';
76
- export { Tooltip } from './components/Tooltip';
77
- export type { TooltipProps } from './components/Tooltip';
78
- export { Link, Paragraph, Text, Title } from './components/Typography';
79
- export type { TextProps, TitleProps } from './components/Typography';
80
- export { AreaChart, BarChart, DonutChart, DualAxisChart, GroupedBarChart, HorizontalBarChart, LineChart, PieChart, StackedBarChart, StackedBarLineChart, VerticalBarChart } from './components/Charts';
81
- export type { CartesianChartProps, ChartSeries, CombinationChartProps, PieChartProps } from './components/Charts';
1
+ export * from './src/index'
2
+ export {}
@@ -0,0 +1,81 @@
1
+ export { Button } from './components/Button';
2
+ export type { ButtonProps, ButtonSize, ButtonVariant } from './components/Button';
3
+ export { UIProvider, useUI } from './provider';
4
+ export type { BuiltInLocale, MessageKey, Messages, ThemeName, UIContextValue, UIProviderProps, } from './provider';
5
+ export { Alert } from './components/Alert';
6
+ export type { AlertProps, AlertVariant } from './components/Alert';
7
+ export { Badge } from './components/Badge';
8
+ export type { BadgeProps, BadgeVariant } from './components/Badge';
9
+ export { Card, CardBody, CardFooter, CardHeader } from './components/Card';
10
+ export type { CardProps } from './components/Card';
11
+ export { Checkbox } from './components/Checkbox';
12
+ export type { CheckboxProps } from './components/Checkbox';
13
+ export { Dialog } from './components/Dialog';
14
+ export type { DialogProps } from './components/Dialog';
15
+ export { Divider } from './components/Divider';
16
+ export type { DividerProps } from './components/Divider';
17
+ export { Input } from './components/Input';
18
+ export type { InputProps } from './components/Input';
19
+ export { RadioGroup } from './components/RadioGroup';
20
+ export type { RadioGroupProps, RadioOption } from './components/RadioGroup';
21
+ export { Select } from './components/Select';
22
+ export type { SelectOption, SelectProps } from './components/Select';
23
+ export { Spinner } from './components/Spinner';
24
+ export type { SpinnerProps } from './components/Spinner';
25
+ export { Switch } from './components/Switch';
26
+ export type { SwitchProps } from './components/Switch';
27
+ export { Textarea } from './components/Textarea';
28
+ export type { TextareaProps } from './components/Textarea';
29
+ export { Avatar } from './components/Avatar';
30
+ export type { AvatarProps } from './components/Avatar';
31
+ export { Breadcrumb } from './components/Breadcrumb';
32
+ export type { BreadcrumbItem, BreadcrumbProps } from './components/Breadcrumb';
33
+ export { Drawer } from './components/Drawer';
34
+ export type { DrawerProps } from './components/Drawer';
35
+ export { Dropdown } from './components/Dropdown';
36
+ export type { DropdownProps } from './components/Dropdown';
37
+ export { Empty } from './components/Empty';
38
+ export type { EmptyProps } from './components/Empty';
39
+ export { Flex } from './components/Flex';
40
+ export type { FlexProps } from './components/Flex';
41
+ export { Col, Row } from './components/Grid';
42
+ export type { ColProps, RowProps } from './components/Grid';
43
+ export { Content, Footer, Header, Layout, Sider } from './components/Layout';
44
+ export { Menu } from './components/Menu';
45
+ export type { MenuItem, MenuProps } from './components/Menu';
46
+ export { Pagination } from './components/Pagination';
47
+ export type { PaginationProps } from './components/Pagination';
48
+ export { Progress } from './components/Progress';
49
+ export type { ProgressProps } from './components/Progress';
50
+ export { Result } from './components/Result';
51
+ export type { ResultProps } from './components/Result';
52
+ export { Skeleton } from './components/Skeleton';
53
+ export type { SkeletonProps } from './components/Skeleton';
54
+ export { Space } from './components/Space';
55
+ export type { SpaceProps } from './components/Space';
56
+ export { Steps } from './components/Steps';
57
+ export type { StepItem, StepsProps } from './components/Steps';
58
+ export { Table } from './components/Table';
59
+ export type { TableColumn, TableProps } from './components/Table';
60
+ export { Tabs } from './components/Tabs';
61
+ export type { TabItem, TabsProps } from './components/Tabs';
62
+ export { FilterTabs } from './components/FilterTabs';
63
+ export type { FilterTabItem, FilterTabsProps } from './components/FilterTabs';
64
+ export { SectionHeading } from './components/SectionHeading';
65
+ export type { SectionHeadingProps } from './components/SectionHeading';
66
+ export { ActionLinkButton } from './components/ActionLinkButton';
67
+ export type { ActionLinkButtonProps } from './components/ActionLinkButton';
68
+ export { WhatsAppButton } from './components/WhatsAppButton';
69
+ export type { WhatsAppButtonProps } from './components/WhatsAppButton';
70
+ export { EventCarousel } from './components/EventCarousel';
71
+ export type { CarouselMedia, EventCarouselProps } from './components/EventCarousel';
72
+ export { WhatsAppIcon } from './icons';
73
+ export type { WhatsAppIconProps } from './icons';
74
+ export { Tag } from './components/Tag';
75
+ export type { TagProps } from './components/Tag';
76
+ export { Tooltip } from './components/Tooltip';
77
+ export type { TooltipProps } from './components/Tooltip';
78
+ export { Link, Paragraph, Text, Title } from './components/Typography';
79
+ export type { TextProps, TitleProps } from './components/Typography';
80
+ export { AreaChart, BarChart, DonutChart, DualAxisChart, GroupedBarChart, HorizontalBarChart, LineChart, PieChart, StackedBarChart, StackedBarLineChart, VerticalBarChart } from './components/Charts';
81
+ export type { CartesianChartProps, ChartSeries, CombinationChartProps, PieChartProps } from './components/Charts';
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,7 +1,6 @@
1
1
  {
2
2
  "name": "elij-ui-library",
3
- "version": "0.1.0",
4
- "private": false,
3
+ "version": "0.2.1",
5
4
  "type": "module",
6
5
  "description": "Reusable React UI Components Storybook",
7
6
  "license": "MIT",
@@ -14,7 +13,8 @@
14
13
  "access": "public"
15
14
  },
16
15
  "files": [
17
- "dist"
16
+ "dist",
17
+ "registry"
18
18
  ],
19
19
  "main": "./dist/index.cjs",
20
20
  "module": "./dist/index.js",
@@ -25,7 +25,9 @@
25
25
  "import": "./dist/index.js",
26
26
  "require": "./dist/index.cjs"
27
27
  },
28
- "./styles.css": "./dist/ui-library.css"
28
+ "./styles.css": "./dist/ui-library.css",
29
+ "./registry": "./registry/components.json",
30
+ "./registry/schema": "./registry/schema.json"
29
31
  },
30
32
  "scripts": {
31
33
  "dev": "storybook dev -p 6006",
@@ -0,0 +1,494 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "package": "elij-ui-library",
4
+ "version": "0.2.0",
5
+ "description": "Public component metadata for Elij UI tooling, Storybook, CLI, and MCP.",
6
+ "components": [
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
+ }
493
+ ]
494
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://elij-ui-library.dev/registry/components.schema.json",
4
+ "title": "Elij UI component registry",
5
+ "type": "object",
6
+ "required": ["schemaVersion", "package", "version", "components"],
7
+ "properties": {
8
+ "schemaVersion": { "type": "integer", "const": 1 },
9
+ "package": { "type": "string" },
10
+ "version": { "type": "string" },
11
+ "description": { "type": "string" },
12
+ "components": {
13
+ "type": "array",
14
+ "items": {
15
+ "type": "object",
16
+ "required": ["name", "kind", "category", "description", "import", "story", "props"],
17
+ "properties": {
18
+ "name": { "type": "string" },
19
+ "kind": { "enum": ["component", "icon", "provider"] },
20
+ "category": { "type": "string" },
21
+ "description": { "type": "string" },
22
+ "import": { "type": "string" },
23
+ "story": { "type": "string" },
24
+ "props": { "type": "array", "items": { "type": "string" } }
25
+ },
26
+ "additionalProperties": false
27
+ }
28
+ }
29
+ },
30
+ "additionalProperties": false
31
+ }
32
+
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes