@vtx-ui/react 0.0.1-beta.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 (133) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +228 -0
  3. package/dist/components/Accordion/Accordion.d.ts +31 -0
  4. package/dist/components/Accordion/Accordion.examples.d.ts +3 -0
  5. package/dist/components/Accordion/AccordionItem.d.ts +5 -0
  6. package/dist/components/Accordion/index.d.ts +4 -0
  7. package/dist/components/Accordion/types.d.ts +98 -0
  8. package/dist/components/Alert/Alert.d.ts +119 -0
  9. package/dist/components/Alert/index.d.ts +3 -0
  10. package/dist/components/Avatar/Avatar.d.ts +63 -0
  11. package/dist/components/Avatar/index.d.ts +3 -0
  12. package/dist/components/Badge/Badge.d.ts +81 -0
  13. package/dist/components/Badge/index.d.ts +3 -0
  14. package/dist/components/Button/Button.d.ts +117 -0
  15. package/dist/components/Button/index.d.ts +3 -0
  16. package/dist/components/Card/Card.d.ts +120 -0
  17. package/dist/components/Card/index.d.ts +3 -0
  18. package/dist/components/Checkbox/Checkbox.d.ts +114 -0
  19. package/dist/components/Checkbox/index.d.ts +3 -0
  20. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +121 -0
  21. package/dist/components/CheckboxGroup/index.d.ts +3 -0
  22. package/dist/components/Chip/Chip.d.ts +91 -0
  23. package/dist/components/Chip/index.d.ts +3 -0
  24. package/dist/components/Divider/Divider.d.ts +118 -0
  25. package/dist/components/Divider/index.d.ts +3 -0
  26. package/dist/components/Flex/Flex.d.ts +66 -0
  27. package/dist/components/Flex/index.d.ts +3 -0
  28. package/dist/components/Grid/Grid.d.ts +156 -0
  29. package/dist/components/Grid/index.d.ts +3 -0
  30. package/dist/components/Header/Header.d.ts +138 -0
  31. package/dist/components/Header/index.d.ts +3 -0
  32. package/dist/components/Input/Input.d.ts +129 -0
  33. package/dist/components/Input/index.d.ts +3 -0
  34. package/dist/components/Menu/Menu.d.ts +114 -0
  35. package/dist/components/Menu/index.d.ts +4 -0
  36. package/dist/components/Modal/Modal.d.ts +201 -0
  37. package/dist/components/Modal/index.d.ts +3 -0
  38. package/dist/components/MultiSelect/MultiSelect.d.ts +190 -0
  39. package/dist/components/MultiSelect/index.d.ts +3 -0
  40. package/dist/components/Radio/Radio.d.ts +105 -0
  41. package/dist/components/Radio/index.d.ts +3 -0
  42. package/dist/components/RadioGroup/RadioGroup.d.ts +134 -0
  43. package/dist/components/RadioGroup/index.d.ts +3 -0
  44. package/dist/components/Select/Select.d.ts +169 -0
  45. package/dist/components/Select/index.d.ts +3 -0
  46. package/dist/components/SideMenu/SideMenu.d.ts +118 -0
  47. package/dist/components/SideMenu/index.d.ts +4 -0
  48. package/dist/components/Table/Table.d.ts +211 -0
  49. package/dist/components/Table/index.d.ts +3 -0
  50. package/dist/components/Text/Text.d.ts +160 -0
  51. package/dist/components/Text/index.d.ts +3 -0
  52. package/dist/components/Toast/Toast.d.ts +56 -0
  53. package/dist/components/Toast/ToastContainer.d.ts +6 -0
  54. package/dist/components/Toast/index.d.ts +5 -0
  55. package/dist/components/Toast/types.d.ts +148 -0
  56. package/dist/components/Toast/useToast.d.ts +34 -0
  57. package/dist/components/Tooltip/Tooltip.d.ts +108 -0
  58. package/dist/components/Tooltip/index.d.ts +3 -0
  59. package/dist/hooks/index.d.ts +85 -0
  60. package/dist/hooks/useTheme.d.ts +268 -0
  61. package/dist/index.cjs.js +2 -0
  62. package/dist/index.cjs.js.map +1 -0
  63. package/dist/index.d.ts +55 -0
  64. package/dist/index.esm.js +2 -0
  65. package/dist/index.esm.js.map +1 -0
  66. package/dist/theme/ThemeProvider.d.ts +39 -0
  67. package/dist/theme/cssVariables.d.ts +9 -0
  68. package/dist/theme/index.d.ts +6 -0
  69. package/dist/theme/tokens.d.ts +258 -0
  70. package/dist/types/components/Accordion/Accordion.d.ts +31 -0
  71. package/dist/types/components/Accordion/Accordion.examples.d.ts +3 -0
  72. package/dist/types/components/Accordion/AccordionItem.d.ts +5 -0
  73. package/dist/types/components/Accordion/index.d.ts +4 -0
  74. package/dist/types/components/Accordion/types.d.ts +98 -0
  75. package/dist/types/components/Alert/Alert.d.ts +119 -0
  76. package/dist/types/components/Alert/index.d.ts +3 -0
  77. package/dist/types/components/Avatar/Avatar.d.ts +63 -0
  78. package/dist/types/components/Avatar/index.d.ts +3 -0
  79. package/dist/types/components/Badge/Badge.d.ts +81 -0
  80. package/dist/types/components/Badge/index.d.ts +3 -0
  81. package/dist/types/components/Button/Button.d.ts +117 -0
  82. package/dist/types/components/Button/index.d.ts +3 -0
  83. package/dist/types/components/Card/Card.d.ts +120 -0
  84. package/dist/types/components/Card/index.d.ts +3 -0
  85. package/dist/types/components/Checkbox/Checkbox.d.ts +114 -0
  86. package/dist/types/components/Checkbox/index.d.ts +3 -0
  87. package/dist/types/components/CheckboxGroup/CheckboxGroup.d.ts +121 -0
  88. package/dist/types/components/CheckboxGroup/index.d.ts +3 -0
  89. package/dist/types/components/Chip/Chip.d.ts +91 -0
  90. package/dist/types/components/Chip/index.d.ts +3 -0
  91. package/dist/types/components/Divider/Divider.d.ts +118 -0
  92. package/dist/types/components/Divider/index.d.ts +3 -0
  93. package/dist/types/components/Flex/Flex.d.ts +66 -0
  94. package/dist/types/components/Flex/index.d.ts +3 -0
  95. package/dist/types/components/Grid/Grid.d.ts +156 -0
  96. package/dist/types/components/Grid/index.d.ts +3 -0
  97. package/dist/types/components/Header/Header.d.ts +138 -0
  98. package/dist/types/components/Header/index.d.ts +3 -0
  99. package/dist/types/components/Input/Input.d.ts +129 -0
  100. package/dist/types/components/Input/index.d.ts +3 -0
  101. package/dist/types/components/Menu/Menu.d.ts +114 -0
  102. package/dist/types/components/Menu/index.d.ts +4 -0
  103. package/dist/types/components/Modal/Modal.d.ts +201 -0
  104. package/dist/types/components/Modal/index.d.ts +3 -0
  105. package/dist/types/components/MultiSelect/MultiSelect.d.ts +190 -0
  106. package/dist/types/components/MultiSelect/index.d.ts +3 -0
  107. package/dist/types/components/Radio/Radio.d.ts +105 -0
  108. package/dist/types/components/Radio/index.d.ts +3 -0
  109. package/dist/types/components/RadioGroup/RadioGroup.d.ts +134 -0
  110. package/dist/types/components/RadioGroup/index.d.ts +3 -0
  111. package/dist/types/components/Select/Select.d.ts +169 -0
  112. package/dist/types/components/Select/index.d.ts +3 -0
  113. package/dist/types/components/SideMenu/SideMenu.d.ts +118 -0
  114. package/dist/types/components/SideMenu/index.d.ts +4 -0
  115. package/dist/types/components/Table/Table.d.ts +211 -0
  116. package/dist/types/components/Table/index.d.ts +3 -0
  117. package/dist/types/components/Text/Text.d.ts +160 -0
  118. package/dist/types/components/Text/index.d.ts +3 -0
  119. package/dist/types/components/Toast/Toast.d.ts +56 -0
  120. package/dist/types/components/Toast/ToastContainer.d.ts +6 -0
  121. package/dist/types/components/Toast/index.d.ts +5 -0
  122. package/dist/types/components/Toast/types.d.ts +148 -0
  123. package/dist/types/components/Toast/useToast.d.ts +34 -0
  124. package/dist/types/components/Tooltip/Tooltip.d.ts +108 -0
  125. package/dist/types/components/Tooltip/index.d.ts +3 -0
  126. package/dist/types/hooks/index.d.ts +85 -0
  127. package/dist/types/hooks/useTheme.d.ts +268 -0
  128. package/dist/types/index.d.ts +55 -0
  129. package/dist/types/theme/ThemeProvider.d.ts +39 -0
  130. package/dist/types/theme/cssVariables.d.ts +9 -0
  131. package/dist/types/theme/index.d.ts +6 -0
  132. package/dist/types/theme/tokens.d.ts +258 -0
  133. package/package.json +59 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Innostes Solutions Pvt Ltd
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,228 @@
1
+ <p align="center">
2
+ <img src="https://innostes.com/images/home/section_navbar/company-latest-logo.png" alt="Innostes Solutions Pvt Ltd" width="220"/>
3
+ </p>
4
+
5
+ # @vtx-ui/react
6
+
7
+ A production-ready React + TypeScript UI library with enterprise-grade components.
8
+
9
+ <p align="center">
10
+ <b>Documentation & full guides at <a href="https://vertexui.com/" target="_blank">vertexui.com</a></b><br/>
11
+ <sub>Developed and maintained by <a href="https://innostes.com/" target="_blank">Innostes Solutions Pvt Ltd</a> for the <a href="https://github.com/vertex-ui" target="_blank">vertex-ui</a> organization.</sub>
12
+ </p>
13
+
14
+ [![npm version](https://badge.fury.io/js/%40vtx-ui%2Freact.svg)](https://www.npmjs.com/package/@vtx-ui/react)
15
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
16
+
17
+ ## Features
18
+
19
+ ✨ **Enterprise-Ready** - Production-grade components with strict TypeScript support
20
+ ♿ **Accessible** - WCAG 2.1 AA compliant with full ARIA support
21
+ 🎨 **Unified Theme System** - Consistent primary color-based design across all 23 components
22
+ 🎯 **Fully Customizable** - Change entire theme with CSS custom properties (no rebuild needed)
23
+ 📦 **Tree-Shakable** - Optimized bundle size with ESM support
24
+ 🧪 **Well Tested** - 508 passing tests with 100% component coverage
25
+ 📚 **Documented** - Complete JSDoc comments, Storybook, and theming guides
26
+
27
+ ## Installation
28
+
29
+ ```bash
30
+ npm install @vtx-ui/react
31
+ ```
32
+
33
+ ```bash
34
+ yarn add @vtx-ui/react
35
+ ```
36
+
37
+ ```bash
38
+ pnpm add @vtx-ui/react
39
+ ```
40
+
41
+ ## Quick Start
42
+
43
+ ```tsx
44
+ import { ThemeProvider, Button } from '@vtx-ui/react';
45
+ import '@vtx-ui/react/styles.css';
46
+
47
+ function App() {
48
+ return (
49
+ <ThemeProvider>
50
+ <Button variant="primary" onClick={() => console.log('clicked')}>
51
+ Click me
52
+ </Button>
53
+ </ThemeProvider>
54
+ );
55
+ }
56
+ ```
57
+
58
+ ## Theming
59
+
60
+ All components use a **unified primary color system** for consistent branding:
61
+
62
+ ```css
63
+ /* Change the entire theme by updating primary color tokens */
64
+ :root {
65
+ --vtx-color-primary-500: #3b82f6; /* Focus rings, borders */
66
+ --vtx-color-primary-600: #2563eb; /* Main brand color */
67
+ --vtx-color-primary-700: #1d4ed8; /* Hover states */
68
+ }
69
+ ```
70
+
71
+ **Examples:**
72
+
73
+ - **Blue (default)**: Modern, tech-focused
74
+ - **Green**: Eco-friendly, growth-oriented
75
+ - **Purple**: Premium, creative brand
76
+ - **Red**: Bold, action-driven
77
+
78
+ 📖 **[Complete Theming Guide](./DESIGN_SYSTEM_THEMING.md)** - Learn how to customize colors, spacing, typography, and more.
79
+
80
+ ## Components
81
+
82
+ ### 23 Production-Ready Components
83
+
84
+ **Form Controls**: Button, Input, Select, MultiSelect, Checkbox, Radio, CheckboxGroup, RadioGroup
85
+ **Interactive**: Accordion, Card, Modal, Toast, Tooltip
86
+ **Display**: Chip, Badge, Alert, Table, Avatar, Divider, Text
87
+ **Layout**: Flex, Grid
88
+
89
+ ### Example Usage
90
+
91
+ #### Button
92
+
93
+ ```tsx
94
+ import { Button } from '@vtx-ui/react';
95
+
96
+ <Button variant="primary" size="large" loading={false}>
97
+ Click me
98
+ </Button>;
99
+ ```
100
+
101
+ #### Input
102
+
103
+ ```tsx
104
+ import { Input } from '@vtx-ui/react';
105
+
106
+ <Input
107
+ label="Email"
108
+ type="email"
109
+ placeholder="you@example.com"
110
+ helperText="We'll never share your email"
111
+ error={errors.email}
112
+ />;
113
+ ```
114
+
115
+ #### Modal
116
+
117
+ ```tsx
118
+ import { Modal, Button } from '@vtx-ui/react';
119
+
120
+ const [isOpen, setIsOpen] = useState(false);
121
+
122
+ <Modal
123
+ isOpen={isOpen}
124
+ onClose={() => setIsOpen(false)}
125
+ title="Confirm Action"
126
+ footer={
127
+ <>
128
+ <Button onClick={() => setIsOpen(false)}>Cancel</Button>
129
+ <Button variant="primary">Confirm</Button>
130
+ </>
131
+ }
132
+ >
133
+ <p>Are you sure you want to proceed?</p>
134
+ </Modal>;
135
+ ```
136
+
137
+ ## Theming
138
+
139
+ The library uses a comprehensive design token system with CSS variables:
140
+
141
+ ```tsx
142
+ import { ThemeProvider, tokens } from '@vtx-ui/react';
143
+
144
+ function App() {
145
+ return (
146
+ <ThemeProvider initialMode="light">
147
+ <YourApp />
148
+ </ThemeProvider>
149
+ );
150
+ }
151
+ ```
152
+
153
+ ### Using Theme Tokens
154
+
155
+ ```tsx
156
+ import { useTheme } from '@vtx-ui/react';
157
+
158
+ function MyComponent() {
159
+ const { tokens, mode, setMode } = useTheme();
160
+
161
+ return <div style={{ color: tokens.colors.primary[500] }}>Current mode: {mode}</div>;
162
+ }
163
+ ```
164
+
165
+ ## Custom Hooks
166
+
167
+ - `useTheme` - Access theme tokens and mode
168
+ - `useClickOutside` - Detect clicks outside an element
169
+ - `useFocusTrap` - Trap focus within a component
170
+ - `useEscapeKey` - Handle escape key presses
171
+ - `useBodyScrollLock` - Lock body scroll (for modals)
172
+ - `useId` - Generate unique IDs for accessibility
173
+ - `useDebounce` - Debounce values
174
+
175
+ ## Development
176
+
177
+ ### Install dependencies
178
+
179
+ ```bash
180
+ npm install
181
+ ```
182
+
183
+ ### Start Storybook
184
+
185
+ ```bash
186
+ npm run storybook
187
+ ```
188
+
189
+ ### Run tests
190
+
191
+ ```bash
192
+ npm test
193
+ ```
194
+
195
+ ### Build library
196
+
197
+ ```bash
198
+ npm run build
199
+ ```
200
+
201
+ ### Lint and format
202
+
203
+ ```bash
204
+ npm run lint
205
+ npm run format
206
+ ```
207
+
208
+ ## Browser Support
209
+
210
+ - Chrome (latest)
211
+ - Firefox (latest)
212
+ - Safari (latest)
213
+ - Edge (latest)
214
+
215
+ ## Contributing
216
+
217
+ Contributions are welcome! Please read our contributing guidelines before submitting PRs.
218
+
219
+ ## License
220
+
221
+ MIT © [Innostes Solutions Pvt Ltd](https://innostes.com/)
222
+
223
+ ## Links
224
+
225
+ - [Documentation](https://vertexui.com/)
226
+ - [Storybook](https://vertexui.com/storybook)
227
+ - [npm](https://www.npmjs.com/package/@vtx-ui/react)
228
+ - [GitHub](https://github.com/vertex-ui/react)
@@ -0,0 +1,31 @@
1
+ import React from "react";
2
+ import { AccordionProps } from "./types";
3
+ import './Accordion.css';
4
+ /**
5
+ * Accordion component - Collapsible content panels for presenting information in a limited space.
6
+ *
7
+ * @example
8
+ * Basic usage with items prop:
9
+ * ```tsx
10
+ * <Accordion
11
+ * items={[
12
+ * { id: 'item1', header: 'Section 1', children: <div>Content 1</div> },
13
+ * { id: 'item2', header: 'Section 2', children: <div>Content 2</div> },
14
+ * ]}
15
+ * />
16
+ * ```
17
+ *
18
+ * @example
19
+ * Usage with AccordionItem children:
20
+ * ```tsx
21
+ * <Accordion>
22
+ * <AccordionItem id="item1" header="Section 1">Content 1</AccordionItem>
23
+ * <AccordionItem id="item2" header="Section 2">Content 2</AccordionItem>
24
+ * </Accordion>
25
+ * ```
26
+ */
27
+ declare const Accordion: React.ForwardRefExoticComponent<AccordionProps & React.RefAttributes<HTMLDivElement>>;
28
+ declare const _default: React.FC<AccordionProps & React.RefAttributes<HTMLDivElement>>;
29
+ export default _default;
30
+ export { Accordion };
31
+ export type { AccordionProps };
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const AccordionExamples: React.FC;
3
+ export default AccordionExamples;
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { AccordionItemComponentProps, AccordionItemProps } from './types';
3
+ declare const _default: React.FC<AccordionItemComponentProps & React.RefAttributes<HTMLDivElement>>;
4
+ export default _default;
5
+ export declare const AccordionItemWrapper: React.FC<AccordionItemProps>;
@@ -0,0 +1,4 @@
1
+ export { default as Accordion } from './Accordion';
2
+ export type { AccordionProps, AccordionItemProps, AccordionItemComponentProps } from './types';
3
+ export { Accordion as AccordionComponent } from './Accordion';
4
+ export { default as AccordionItem, AccordionItemWrapper } from './AccordionItem';
@@ -0,0 +1,98 @@
1
+ import { ReactNode } from 'react';
2
+ export interface AccordionItemProps {
3
+ /** Unique identifier for the accordion item */
4
+ id: string;
5
+ /** The header content for the accordion item */
6
+ header: ReactNode;
7
+ /** The body content for the accordion item */
8
+ children: ReactNode;
9
+ /** Whether this item is disabled */
10
+ disabled?: boolean;
11
+ /** Custom class name for the accordion item */
12
+ className?: string;
13
+ /** Loading state for this specific item */
14
+ loading?: boolean;
15
+ /** Status indicator for the item */
16
+ status?: 'default' | 'success' | 'warning' | 'error' | 'featured';
17
+ /** Custom icon for this specific item (overrides accordion-level icons) */
18
+ icon?: {
19
+ expanded?: React.ReactNode;
20
+ collapsed?: React.ReactNode;
21
+ };
22
+ /** Additional data attributes for testing or analytics */
23
+ dataTestId?: string;
24
+ }
25
+ export interface AccordionProps {
26
+ /** Array of accordion items */
27
+ items?: AccordionItemProps[];
28
+ /** Children accordion items (alternative to items prop) */
29
+ children?: ReactNode;
30
+ /** Whether multiple items can be open at once */
31
+ allowMultiple?: boolean;
32
+ /** Default open items (controlled) */
33
+ defaultOpenItems?: string[];
34
+ /** Open items (uncontrolled) */
35
+ openItems?: string[];
36
+ /** Callback when items are toggled */
37
+ onToggle?: (openItems: string[]) => void;
38
+ /** Visual variant style of the accordion */
39
+ variant?: 'default' | 'bordered' | 'separated' | 'flush';
40
+ /** Size variant of the accordion */
41
+ size?: 'sm' | 'md' | 'lg';
42
+ /** Custom class name */
43
+ className?: string;
44
+ /** Custom styles */
45
+ style?: React.CSSProperties;
46
+ /** Whether to show chevron icons */
47
+ showChevron?: boolean;
48
+ /** Position of the chevron icon */
49
+ chevronPosition?: 'left' | 'right';
50
+ /** Custom icon for expanded state */
51
+ expandedIcon?: React.ReactNode;
52
+ /** Custom icon for collapsed state */
53
+ collapsedIcon?: React.ReactNode;
54
+ /** Icon type preset */
55
+ iconType?: 'chevron' | 'plus-minus' | 'custom';
56
+ /** Whether to show divider lines between items */
57
+ showDivider?: boolean;
58
+ /** Whether items are collapsible (can all be closed) */
59
+ collapsible?: boolean;
60
+ /** Loading state for the entire accordion */
61
+ loading?: boolean;
62
+ /** Disable all accordion interactions */
63
+ disabled?: boolean;
64
+ /** Spacing variant for compact or spacious layouts */
65
+ spacing?: 'compact' | 'default' | 'spacious';
66
+ /** Disable animations for better performance or accessibility */
67
+ disableAnimations?: boolean;
68
+ }
69
+ export interface AccordionItemComponentProps {
70
+ /** The accordion item data */
71
+ item: AccordionItemProps;
72
+ /** Whether this item is open */
73
+ isOpen: boolean;
74
+ /** Function to toggle this item */
75
+ onToggle: () => void;
76
+ /** Variant from parent accordion */
77
+ variant: AccordionProps['variant'];
78
+ /** Size from parent accordion */
79
+ size: AccordionProps['size'];
80
+ /** Whether to show chevron */
81
+ showChevron: boolean;
82
+ /** Chevron position */
83
+ chevronPosition: AccordionProps['chevronPosition'];
84
+ /** Custom icon for expanded state */
85
+ expandedIcon?: React.ReactNode;
86
+ /** Custom icon for collapsed state */
87
+ collapsedIcon?: React.ReactNode;
88
+ /** Icon type preset */
89
+ iconType?: AccordionProps['iconType'];
90
+ /** Loading state from parent accordion */
91
+ loading?: boolean;
92
+ /** Disabled state from parent accordion */
93
+ disabled?: boolean;
94
+ /** Spacing variant from parent accordion */
95
+ spacing?: AccordionProps['spacing'];
96
+ /** Disable animations */
97
+ disableAnimations?: boolean;
98
+ }
@@ -0,0 +1,119 @@
1
+ import React from 'react';
2
+ import './Alert.css';
3
+ export interface AlertProps {
4
+ /**
5
+ * Content of the alert (primary message, can be any ReactNode)
6
+ */
7
+ children?: React.ReactNode;
8
+ /**
9
+ * Alert title
10
+ */
11
+ title?: string;
12
+ /**
13
+ * Alert description - alternative to children for simple text
14
+ */
15
+ description?: string;
16
+ /**
17
+ * Visual variant of the alert
18
+ * @default 'info'
19
+ */
20
+ variant?: 'success' | 'error' | 'warning' | 'info' | 'neutral';
21
+ /**
22
+ * Visual style of the alert
23
+ * @default 'subtle'
24
+ */
25
+ alertStyle?: 'filled' | 'outlined' | 'subtle' | 'left-accent';
26
+ /** Size of the alert. Defaults to theme defaultSize or 'md'. */
27
+ size?: 'sm' | 'md' | 'lg';
28
+ /**
29
+ * Custom icon or false to hide icon
30
+ * If not provided, shows default icon based on variant
31
+ */
32
+ icon?: React.ReactNode | false;
33
+ /**
34
+ * If true, shows close button
35
+ * @default false
36
+ */
37
+ dismissible?: boolean;
38
+ /**
39
+ * Callback fired when alert is dismissed
40
+ */
41
+ onClose?: () => void;
42
+ /**
43
+ * Action element (button or link) displayed on the right
44
+ */
45
+ action?: React.ReactNode;
46
+ /**
47
+ * If true, alert takes full width of container
48
+ * @default false
49
+ */
50
+ fullWidth?: boolean;
51
+ /**
52
+ * Custom class name
53
+ */
54
+ className?: string;
55
+ /**
56
+ * Custom inline styles
57
+ */
58
+ style?: React.CSSProperties;
59
+ /**
60
+ * Role attribute for accessibility
61
+ * @default 'alert'
62
+ */
63
+ role?: string;
64
+ }
65
+ /**
66
+ * Alert component - Displays important messages and notifications
67
+ *
68
+ * A flexible alert component supporting multiple variants, styles, and interactive features.
69
+ * Can display simple messages or complex content with titles, actions, and custom icons.
70
+ *
71
+ * @example
72
+ * Simple alert with children
73
+ * ```tsx
74
+ * <Alert variant="success">
75
+ * Your changes have been saved!
76
+ * </Alert>
77
+ * ```
78
+ *
79
+ * @example
80
+ * Alert with title and description
81
+ * ```tsx
82
+ * <Alert
83
+ * variant="error"
84
+ * title="Error occurred"
85
+ * description="Unable to connect to the server."
86
+ * dismissible
87
+ * onClose={() => console.log('closed')}
88
+ * />
89
+ * ```
90
+ *
91
+ * @example
92
+ * Alert with action button
93
+ * ```tsx
94
+ * <Alert
95
+ * variant="warning"
96
+ * title="Update available"
97
+ * style="left-accent"
98
+ * action={<Button size="small">Update Now</Button>}
99
+ * >
100
+ * A new version is available. Update to get the latest features.
101
+ * </Alert>
102
+ * ```
103
+ *
104
+ * @example
105
+ * Alert with custom icon
106
+ * ```tsx
107
+ * <Alert
108
+ * variant="info"
109
+ * icon={<CustomIcon />}
110
+ * title="Custom notification"
111
+ * >
112
+ * This alert uses a custom icon.
113
+ * </Alert>
114
+ * ```
115
+ */
116
+ declare const Alert: React.ForwardRefExoticComponent<AlertProps & React.RefAttributes<HTMLDivElement>>;
117
+ declare const _default: React.FC<AlertProps & React.RefAttributes<HTMLDivElement>>;
118
+ export default _default;
119
+ export { Alert };
@@ -0,0 +1,3 @@
1
+ export { default as Alert } from './Alert';
2
+ export type { AlertProps } from './Alert';
3
+ export { Alert as AlertComponent } from './Alert';
@@ -0,0 +1,63 @@
1
+ import React from "react";
2
+ import { HTMLAttributes, ImgHTMLAttributes } from "react";
3
+ import './Avatar.css';
4
+ /**
5
+ * Avatar component - Displays user profile image, initials, or fallback
6
+ *
7
+ * The Avatar component supports images, fallback text, different sizes, shapes, and status indicators.
8
+ *
9
+ * @example
10
+ * Basic avatar with image
11
+ * ```tsx
12
+ * <Avatar src="https://randomuser.me/api/portraits/men/1.jpg" alt="John Doe" />
13
+ * ```
14
+ *
15
+ * @example
16
+ * Avatar with fallback text
17
+ * ```tsx
18
+ * <Avatar fallback="JD" />
19
+ * ```
20
+ *
21
+ * @example
22
+ * Different sizes
23
+ * ```tsx
24
+ * <Avatar src="..." size="small" />
25
+ * <Avatar src="..." size="large" />
26
+ * ```
27
+ *
28
+ * @example
29
+ * Square shape
30
+ * ```tsx
31
+ * <Avatar src="..." shape="square" />
32
+ * ```
33
+ *
34
+ * @example
35
+ * Status indicator
36
+ * ```tsx
37
+ * <Avatar
38
+ * src="..."
39
+ * statusIndicator={<span style={{ background: 'green', borderRadius: '50%', width: 12, height: 12, display: 'inline-block' }} />}
40
+ * statusPosition="top-right"
41
+ * />
42
+ * ```
43
+ */
44
+ export interface AvatarProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
45
+ src?: string;
46
+ alt?: string;
47
+ /**
48
+ * Size of the avatar
49
+ * @default theme.defaultSize or 'md'
50
+ */
51
+ size?: 'sm' | 'md' | 'lg';
52
+ shape?: 'circle' | 'square';
53
+ fallback?: string;
54
+ onImageError?: (error: React.SyntheticEvent<HTMLImageElement, Event>) => void;
55
+ onImageLoad?: (event: React.SyntheticEvent<HTMLImageElement, Event>) => void;
56
+ imgProps?: Omit<ImgHTMLAttributes<HTMLImageElement>, 'src' | 'alt' | 'className' | 'onError' | 'onLoad'>;
57
+ statusIndicator?: React.ReactNode;
58
+ statusPosition?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
59
+ }
60
+ declare const Avatar: React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<HTMLDivElement>>;
61
+ declare const _default: React.FC<AvatarProps & React.RefAttributes<HTMLDivElement>>;
62
+ export default _default;
63
+ export { Avatar };
@@ -0,0 +1,3 @@
1
+ export { default as Avatar } from './Avatar';
2
+ export type { AvatarProps } from './Avatar';
3
+ export { Avatar as AvatarComponent } from './Avatar';
@@ -0,0 +1,81 @@
1
+ import React, { HTMLAttributes } from 'react';
2
+ import './Badge.css';
3
+ export interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
4
+ /**
5
+ * Visual variant of the badge
6
+ * @default 'neutral'
7
+ */
8
+ variant?: 'neutral' | 'primary' | 'success' | 'warning' | 'error' | 'info';
9
+ /**
10
+ * Size of the badge
11
+ * @default 'medium'
12
+ */
13
+ size?: 'small' | 'medium' | 'large';
14
+ /**
15
+ * If true, badge will be pill-shaped with rounded ends
16
+ * @default false
17
+ */
18
+ pill?: boolean;
19
+ /**
20
+ * If true, displays a dot indicator before the content
21
+ * Useful for status indicators
22
+ * @default false
23
+ */
24
+ dot?: boolean;
25
+ /**
26
+ * If true, displays the badge with an outline style instead of filled
27
+ * @default false
28
+ */
29
+ outline?: boolean;
30
+ /**
31
+ * Maximum content length before truncation
32
+ * Useful for limiting badge text length
33
+ */
34
+ maxLength?: number;
35
+ /**
36
+ * Icon to display before the badge content
37
+ */
38
+ icon?: React.ReactNode;
39
+ /**
40
+ * Badge content - text, numbers, or custom elements
41
+ */
42
+ children: React.ReactNode;
43
+ /**
44
+ * Callback fired when badge is clicked
45
+ */
46
+ onRemove?: (event: React.MouseEvent<HTMLButtonElement>) => void;
47
+ }
48
+ /**
49
+ * Badge component - Small labels and indicators for status, counts, or categories
50
+ *
51
+ * A versatile badge component that can display status indicators, counts, tags, or any short text
52
+ * with various visual styles and customization options.
53
+ *
54
+ * @example
55
+ * Basic status badges
56
+ * ```tsx
57
+ * <Badge variant="success">Active</Badge>
58
+ * <Badge variant="error" dot>Error</Badge>
59
+ * <Badge variant="primary" pill>NEW</Badge>
60
+ * ```
61
+ *
62
+ * @example
63
+ * With icon and outline
64
+ * ```tsx
65
+ * <Badge variant="info" icon={<InfoIcon />} outline>
66
+ * Information
67
+ * </Badge>
68
+ * ```
69
+ *
70
+ * @example
71
+ * Removable badge
72
+ * ```tsx
73
+ * <Badge variant="primary" onRemove={(e) => handleRemove()}>
74
+ * Tag 1
75
+ * </Badge>
76
+ * ```
77
+ */
78
+ declare const Badge: React.ForwardRefExoticComponent<BadgeProps & React.RefAttributes<HTMLSpanElement>>;
79
+ declare const _default: React.FC<BadgeProps & React.RefAttributes<HTMLSpanElement>>;
80
+ export default _default;
81
+ export { Badge };
@@ -0,0 +1,3 @@
1
+ export { default as Badge } from './Badge';
2
+ export type { BadgeProps } from './Badge';
3
+ export { Badge as BadgeComponent } from './Badge';