@vtx-ui/react 0.0.1-beta.3 → 0.0.1-beta.5

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 (99) hide show
  1. package/dist/index.cjs.js +1 -1
  2. package/dist/index.cjs.js.map +1 -1
  3. package/dist/index.esm.js +1 -1
  4. package/dist/index.esm.js.map +1 -1
  5. package/dist/types/components/AdminHeader/AdminHeader.d.ts +179 -0
  6. package/dist/types/components/AdminHeader/AdminHeader.examples.d.ts +44 -0
  7. package/dist/types/components/AdminHeader/AdminHeader.stories.d.ts +53 -0
  8. package/dist/types/components/AdminHeader/AdminHeader.widgets.stories.d.ts +86 -0
  9. package/dist/types/components/AdminHeader/index.d.ts +2 -0
  10. package/dist/types/components/Alert/Alert.d.ts +7 -54
  11. package/dist/types/components/Avatar/Avatar.d.ts +5 -2
  12. package/dist/types/components/Badge/Badge.d.ts +8 -34
  13. package/dist/types/components/Button/Button.d.ts +7 -43
  14. package/dist/types/components/Card/Card.d.ts +7 -64
  15. package/dist/types/components/Checkbox/Checkbox.d.ts +5 -59
  16. package/dist/types/components/CheckboxGroup/CheckboxGroup.d.ts +5 -53
  17. package/dist/types/components/Chip/Chip.d.ts +7 -33
  18. package/dist/types/components/DataGrid/DataGrid.d.ts +97 -0
  19. package/dist/types/components/DataGrid/index.d.ts +2 -0
  20. package/dist/types/components/Divider/Divider.d.ts +5 -72
  21. package/dist/types/components/Flex/Flex.d.ts +5 -26
  22. package/dist/types/components/Grid/Grid.d.ts +5 -77
  23. package/dist/types/components/Header/Header.d.ts +5 -33
  24. package/dist/types/components/Input/Input.d.ts +8 -54
  25. package/dist/types/components/Menu/Menu.d.ts +5 -32
  26. package/dist/types/components/Modal/Modal.d.ts +7 -73
  27. package/dist/types/components/MultiSelect/MultiSelect.d.ts +5 -41
  28. package/dist/types/components/Radio/Radio.d.ts +8 -57
  29. package/dist/types/components/RadioGroup/RadioGroup.d.ts +8 -59
  30. package/dist/types/components/Select/Select.d.ts +8 -60
  31. package/dist/types/components/SideMenu/SideMenu.d.ts +5 -34
  32. package/dist/types/components/SideMenu/SideMenu.examples.d.ts +18 -0
  33. package/dist/types/components/SideMenu/index.d.ts +1 -3
  34. package/dist/types/components/Table/Table.d.ts +108 -60
  35. package/dist/types/components/Text/Text.d.ts +4 -1
  36. package/dist/types/components/Timeline/Timeline.d.ts +34 -0
  37. package/dist/types/components/Timeline/index.d.ts +2 -0
  38. package/dist/types/components/Toast/Toast.d.ts +5 -51
  39. package/dist/types/hoc/withParsedClasses.d.ts +4 -1
  40. package/dist/types/icons/IconComponents.d.ts +55 -0
  41. package/dist/types/icons/index.d.ts +1 -0
  42. package/dist/types/index.d.ts +21 -1
  43. package/dist/types/stories/components/Accordion.stories.d.ts +11 -0
  44. package/dist/types/stories/components/Alert.stories.d.ts +9 -0
  45. package/dist/types/stories/components/Avatar.stories.d.ts +13 -0
  46. package/dist/types/stories/components/Badge.stories.d.ts +8 -0
  47. package/dist/types/stories/components/Button.stories.d.ts +9 -0
  48. package/dist/types/stories/components/Card.stories.d.ts +8 -0
  49. package/dist/types/stories/components/Checkbox.stories.d.ts +17 -0
  50. package/dist/types/stories/components/CheckboxGroup.stories.d.ts +13 -0
  51. package/dist/types/stories/components/Chip.stories.d.ts +22 -0
  52. package/dist/types/stories/components/DataGrid.stories.d.ts +20 -0
  53. package/dist/types/stories/components/Divider.stories.d.ts +15 -0
  54. package/dist/types/stories/components/Flex.stories.d.ts +14 -0
  55. package/dist/types/stories/components/Grid.stories.d.ts +11 -0
  56. package/dist/types/stories/components/Header.stories.d.ts +14 -0
  57. package/dist/types/stories/components/Input.stories.d.ts +9 -0
  58. package/dist/types/stories/components/Menu.stories.d.ts +13 -0
  59. package/dist/types/stories/components/Modal.stories.d.ts +12 -0
  60. package/dist/types/stories/components/MultiSelect.stories.d.ts +19 -0
  61. package/dist/types/stories/components/Radio.stories.d.ts +16 -0
  62. package/dist/types/stories/components/RadioGroup.stories.d.ts +15 -0
  63. package/dist/types/stories/components/Select.stories.d.ts +17 -0
  64. package/dist/types/stories/components/SideMenu.stories.d.ts +62 -0
  65. package/dist/types/stories/components/Table.stories.d.ts +25 -0
  66. package/dist/types/stories/components/Text.stories.d.ts +18 -0
  67. package/dist/types/stories/components/Timeline.stories.d.ts +20 -0
  68. package/dist/types/stories/components/Toast.stories.d.ts +17 -0
  69. package/dist/types/stories/components/Tooltip.stories.d.ts +20 -0
  70. package/dist/types/stories/widgets/InfoCard.stories.d.ts +12 -0
  71. package/dist/types/stories/widgets/InfoListCard.stories.d.ts +19 -0
  72. package/dist/types/stories/widgets/InfoText.stories.d.ts +30 -0
  73. package/dist/types/stories/widgets/OrderCard.stories.d.ts +13 -0
  74. package/dist/types/stories/widgets/OrderConfirmation.stories.d.ts +36 -0
  75. package/dist/types/stories/widgets/OrderDetails.stories.d.ts +11 -0
  76. package/dist/types/stories/widgets/ProductCard.stories.d.ts +25 -0
  77. package/dist/types/theme/index.d.ts +1 -1
  78. package/dist/types/widgets/Header/Header.d.ts +252 -0
  79. package/dist/types/widgets/Header/Header.examples.d.ts +17 -0
  80. package/dist/types/widgets/Header/Header.megamenu.examples.d.ts +22 -0
  81. package/dist/types/widgets/Header/Header.stories.d.ts +30 -0
  82. package/dist/types/widgets/Header/index.d.ts +2 -0
  83. package/dist/types/widgets/InfoCard/InfoCard.d.ts +40 -0
  84. package/dist/types/widgets/InfoCard/index.d.ts +1 -0
  85. package/dist/types/widgets/InfoListCard/InfoListCard.d.ts +43 -0
  86. package/dist/types/widgets/InfoListCard/index.d.ts +2 -0
  87. package/dist/types/widgets/InfoText/InfoText.d.ts +144 -0
  88. package/dist/types/widgets/InfoText/InfoText.examples.d.ts +33 -0
  89. package/dist/types/widgets/InfoText/index.d.ts +1 -0
  90. package/dist/types/widgets/OrderCard/OrderCard.d.ts +71 -0
  91. package/dist/types/widgets/OrderCard/index.d.ts +2 -0
  92. package/dist/types/widgets/OrderConfirmation/OrderConfirmation.d.ts +85 -0
  93. package/dist/types/widgets/OrderConfirmation/index.d.ts +3 -0
  94. package/dist/types/widgets/OrderDetails/OrderDetails.d.ts +91 -0
  95. package/dist/types/widgets/OrderDetails/index.d.ts +3 -0
  96. package/dist/types/widgets/ProductCard/ProductCard.d.ts +42 -0
  97. package/dist/types/widgets/ProductCard/index.d.ts +1 -0
  98. package/dist/types/widgets/product-card-old/ProductCard.d.ts +12 -0
  99. package/package.json +73 -59
@@ -126,76 +126,10 @@ export interface ModalProps {
126
126
  */
127
127
  centered?: boolean;
128
128
  }
129
- /**
130
- * Modal component - Overlay dialog for focused user interactions
131
- *
132
- * A feature-rich modal component with accessibility features including focus trap,
133
- * body scroll lock, keyboard navigation, and customizable animations.
134
- *
135
- * @example
136
- * Basic confirmation modal with footerButtons array
137
- * ```tsx
138
- * const [isOpen, setIsOpen] = useState(false);
139
- *
140
- * <Modal
141
- * isOpen={isOpen}
142
- * onClose={() => setIsOpen(false)}
143
- * title="Confirm Action"
144
- * description="Are you sure you want to proceed with this action?"
145
- * footerButtons={[
146
- * { label: 'Cancel', onClick: () => setIsOpen(false), variant: 'outline' },
147
- * { label: 'Confirm', onClick: handleConfirm, variant: 'primary' }
148
- * ]}
149
- * >
150
- * <p>This action cannot be undone.</p>
151
- * </Modal>
152
- * ```
153
- *
154
- * @example
155
- * Custom footer with ReactNode
156
- * ```tsx
157
- * <Modal
158
- * isOpen={isOpen}
159
- * onClose={() => setIsOpen(false)}
160
- * title="Custom Footer"
161
- * footer={
162
- * <>
163
- * <Button onClick={() => setIsOpen(false)}>Cancel</Button>
164
- * <Button variant="primary">Save</Button>
165
- * </>
166
- * }
167
- * >
168
- * <p>Custom content here.</p>
169
- * </Modal>
170
- * ```
171
- *
172
- * @example
173
- * Form modal with custom header
174
- * ```tsx
175
- * <Modal
176
- * isOpen={isOpen}
177
- * onClose={() => setIsOpen(false)}
178
- * size="large"
179
- * header={<CustomHeader />}
180
- * scrollable
181
- * >
182
- * <FormContent />
183
- * </Modal>
184
- * ```
185
- *
186
- * @example
187
- * Fullscreen modal without backdrop close
188
- * ```tsx
189
- * <Modal
190
- * isOpen={isOpen}
191
- * onClose={() => setIsOpen(false)}
192
- * size="fullscreen"
193
- * closeOnBackdropClick={false}
194
- * animation="slide-up"
195
- * >
196
- * <FullscreenContent />
197
- * </Modal>
198
- * ```
199
- */
200
- export declare const Modal: React.ForwardRefExoticComponent<ModalProps & React.RefAttributes<HTMLDivElement>>;
201
- export default Modal;
129
+ declare const ModalWithParsedClasses: {
130
+ (props: ModalProps & React.RefAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
131
+ displayName: string;
132
+ };
133
+ declare const _default: React.FC<ModalProps>;
134
+ export default _default;
135
+ export { ModalWithParsedClasses as Modal };
@@ -145,46 +145,10 @@ export interface MultiSelectProps {
145
145
  */
146
146
  loading?: boolean;
147
147
  }
148
- /**
149
- * MultiSelect component - Multi-selection dropdown with chips display
150
- *
151
- * A professional multi-select component supporting checkbox or checkmark styles,
152
- * with chips display, search functionality, and group support.
153
- *
154
- * @example
155
- * Basic usage with checkbox style
156
- * ```tsx
157
- * <MultiSelect
158
- * label="Select Technologies"
159
- * placeholder="Choose technologies"
160
- * options={technologies}
161
- * onChange={(values) => console.log(values)}
162
- * />
163
- * ```
164
- *
165
- * @example
166
- * With checkmark style
167
- * ```tsx
168
- * <MultiSelect
169
- * label="Select Skills"
170
- * options={skills}
171
- * selectionStyle="checkmark"
172
- * searchable
173
- * showSelectAll
174
- * />
175
- * ```
176
- *
177
- * @example
178
- * Customize loading spinner via CSS
179
- * ```css
180
- * .vtx-multiselect-icon-spinner {
181
- * --vtx-multiselect-loader-color: #10b981;
182
- * --vtx-multiselect-loader-speed: 1.2s;
183
- * --vtx-multiselect-loader-track-opacity: 0.15;
184
- * --vtx-multiselect-loader-path-opacity: 0.85;
185
- * }
186
- * ```
187
- */
188
- export declare const MultiSelect: React.ForwardRefExoticComponent<MultiSelectProps & React.RefAttributes<HTMLDivElement>>;
148
+ declare const MultiSelectWithParsedClasses: {
149
+ (props: MultiSelectProps & React.RefAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
150
+ displayName: string;
151
+ };
189
152
  declare const _default: React.FC<MultiSelectProps & React.RefAttributes<HTMLDivElement>>;
190
153
  export default _default;
154
+ export { MultiSelectWithParsedClasses as MultiSelect };
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import { Size } from '../../theme';
2
3
  import './Radio.css';
3
4
  export interface RadioProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {
4
5
  /**
@@ -16,9 +17,9 @@ export interface RadioProps extends Omit<React.InputHTMLAttributes<HTMLInputElem
16
17
  label?: React.ReactNode;
17
18
  /**
18
19
  * The size of the radio
19
- * @default 'medium'
20
+ * @default theme.defaultSize
20
21
  */
21
- size?: 'small' | 'medium' | 'large';
22
+ size?: Size;
22
23
  /**
23
24
  * The variant of the radio
24
25
  * @default 'primary'
@@ -46,60 +47,10 @@ export interface RadioProps extends Omit<React.InputHTMLAttributes<HTMLInputElem
46
47
  */
47
48
  inputClassName?: string;
48
49
  }
49
- /**
50
- * Radio component - Allows users to select a single option from a set
51
- *
52
- * The Radio component provides a customizable radio input with support
53
- * for labels, error states, variants, and three sizes.
54
- *
55
- * ## CSS Customization
56
- *
57
- * You can customize the radio appearance using CSS custom properties:
58
- *
59
- * ```css
60
- * :root {
61
- * --vtx-radio-color: #1976d2;
62
- * --vtx-radio-size: 20px;
63
- * --vtx-radio-border-width: 2px;
64
- * }
65
- * ```
66
- *
67
- * @example
68
- * Basic radio
69
- * ```tsx
70
- * <Radio label="Option 1" name="options" value="1" />
71
- * ```
72
- *
73
- * @example
74
- * Controlled radio
75
- * ```tsx
76
- * const [selected, setSelected] = useState('1');
77
- * <Radio
78
- * checked={selected === '1'}
79
- * onChange={(e) => setSelected(e.target.value)}
80
- * label="Option 1"
81
- * value="1"
82
- * />
83
- * ```
84
- *
85
- * @example
86
- * With error state
87
- * ```tsx
88
- * <Radio
89
- * label="Required option"
90
- * error
91
- * helperText="Please select an option"
92
- * />
93
- * ```
94
- *
95
- * @example
96
- * Different variants
97
- * ```tsx
98
- * <Radio label="Primary" variant="primary" />
99
- * <Radio label="Success" variant="success" />
100
- * <Radio label="Error" variant="error" />
101
- * ```
102
- */
103
- export declare const Radio: React.ForwardRefExoticComponent<RadioProps & React.RefAttributes<HTMLInputElement>>;
50
+ declare const RadioWithParsedClasses: {
51
+ (props: RadioProps & React.RefAttributes<HTMLInputElement>): import("react/jsx-runtime").JSX.Element;
52
+ displayName: string;
53
+ };
104
54
  declare const _default: React.FC<RadioProps & React.RefAttributes<HTMLInputElement>>;
105
55
  export default _default;
56
+ export { RadioWithParsedClasses as Radio };
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import { Size } from '../../theme';
2
3
  import './RadioGroup.css';
3
4
  export interface RadioOption {
4
5
  /**
@@ -60,9 +61,9 @@ export interface RadioGroupProps extends Omit<React.HTMLAttributes<HTMLDivElemen
60
61
  orientation?: 'horizontal' | 'vertical';
61
62
  /**
62
63
  * The size of the radios
63
- * @default 'medium'
64
+ * @default theme.defaultSize
64
65
  */
65
- size?: 'small' | 'medium' | 'large';
66
+ size?: Size;
66
67
  /**
67
68
  * The variant of the radios
68
69
  * @default 'primary'
@@ -73,62 +74,10 @@ export interface RadioGroupProps extends Omit<React.HTMLAttributes<HTMLDivElemen
73
74
  */
74
75
  className?: string;
75
76
  }
76
- /**
77
- * RadioGroup component - Manages a group of related radio buttons
78
- *
79
- * The RadioGroup component provides a convenient way to manage multiple
80
- * radio buttons with shared state, labels, and error handling.
81
- *
82
- * @example
83
- * Basic usage
84
- * ```tsx
85
- * <RadioGroup
86
- * name="plan"
87
- * label="Select your plan"
88
- * options={[
89
- * { value: 'basic', label: 'Basic' },
90
- * { value: 'pro', label: 'Pro' },
91
- * { value: 'enterprise', label: 'Enterprise' },
92
- * ]}
93
- * />
94
- * ```
95
- *
96
- * @example
97
- * Controlled mode
98
- * ```tsx
99
- * const [selected, setSelected] = useState('basic');
100
- * <RadioGroup
101
- * name="plan"
102
- * label="Plan"
103
- * options={options}
104
- * value={selected}
105
- * onChange={setSelected}
106
- * />
107
- * ```
108
- *
109
- * @example
110
- * Horizontal layout
111
- * ```tsx
112
- * <RadioGroup
113
- * name="answer"
114
- * label="Your answer"
115
- * options={options}
116
- * orientation="horizontal"
117
- * />
118
- * ```
119
- *
120
- * @example
121
- * With error state
122
- * ```tsx
123
- * <RadioGroup
124
- * name="required"
125
- * label="Required selection"
126
- * options={options}
127
- * error
128
- * helperText="Please select an option"
129
- * />
130
- * ```
131
- */
132
- export declare const RadioGroup: React.ForwardRefExoticComponent<RadioGroupProps & React.RefAttributes<HTMLDivElement>>;
77
+ declare const RadioGroupWithParsedClasses: {
78
+ (props: RadioGroupProps & React.RefAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
79
+ displayName: string;
80
+ };
133
81
  declare const _default: React.FC<RadioGroupProps & React.RefAttributes<HTMLDivElement>>;
134
82
  export default _default;
83
+ export { RadioGroupWithParsedClasses as RadioGroup };
@@ -1,4 +1,5 @@
1
1
  import React, { SelectHTMLAttributes } from 'react';
2
+ import { Size } from '../../theme';
2
3
  import './Select.css';
3
4
  export interface SelectOption {
4
5
  /**
@@ -39,9 +40,9 @@ export interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement
39
40
  success?: string;
40
41
  /**
41
42
  * Size of the select
42
- * @default 'medium'
43
+ * @default theme.defaultSize
43
44
  */
44
- size?: 'small' | 'medium' | 'large';
45
+ size?: Size;
45
46
  /**
46
47
  * If true, select will take full width of its container
47
48
  * @default false
@@ -107,63 +108,10 @@ export interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement
107
108
  */
108
109
  loading?: boolean;
109
110
  }
110
- /**
111
- * Select component - Dropdown selection control with label, validation states, and grouping support
112
- *
113
- * A comprehensive select component with support for grouped options, validation states,
114
- * and enhanced accessibility features.
115
- *
116
- * @example
117
- * Basic usage
118
- * ```tsx
119
- * <Select
120
- * label="Country"
121
- * placeholder="Select a country"
122
- * options={[
123
- * { value: 'us', label: 'United States' },
124
- * { value: 'uk', label: 'United Kingdom' },
125
- * ]}
126
- * />
127
- * ```
128
- *
129
- * @example
130
- * With grouped options
131
- * ```tsx
132
- * <Select
133
- * label="Framework"
134
- * grouped
135
- * options={[
136
- * { value: 'react', label: 'React', group: 'Frontend' },
137
- * { value: 'vue', label: 'Vue', group: 'Frontend' },
138
- * { value: 'node', label: 'Node.js', group: 'Backend' },
139
- * { value: 'django', label: 'Django', group: 'Backend' },
140
- * ]}
141
- * />
142
- * ```
143
- *
144
- * @example
145
- * With change callback
146
- * ```tsx
147
- * <Select
148
- * label="Status"
149
- * options={statusOptions}
150
- * onSelectChange={(value, option) => {
151
- * console.log('Selected:', value, option);
152
- * }}
153
- * />
154
- * ```
155
- *
156
- * @example
157
- * Customize loading spinner via CSS
158
- * ```css
159
- * .vtx-select-icon-spinner {
160
- * --vtx-select-loader-color: #10b981;
161
- * --vtx-select-loader-speed: 1.2s;
162
- * --vtx-select-loader-track-opacity: 0.15;
163
- * --vtx-select-loader-path-opacity: 0.85;
164
- * }
165
- * ```
166
- */
167
- export declare const Select: React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLSelectElement>>;
111
+ declare const SelectWithParsedClasses: {
112
+ (props: SelectProps & React.RefAttributes<HTMLSelectElement>): import("react/jsx-runtime").JSX.Element;
113
+ displayName: string;
114
+ };
115
+ export { SelectWithParsedClasses as Select };
168
116
  declare const _default: React.FC<SelectProps & React.RefAttributes<HTMLSelectElement>>;
169
117
  export default _default;
@@ -80,39 +80,10 @@ export declare const SideMenuItem: React.ForwardRefExoticComponent<SideMenuItemP
80
80
  collapsed?: boolean;
81
81
  level?: number;
82
82
  } & React.RefAttributes<HTMLDivElement>>;
83
- /**
84
- * SideMenu component - Professional sidebar navigation for admin panels
85
- *
86
- * @example
87
- * Basic sidebar menu
88
- * ```tsx
89
- * <SideMenu
90
- * items={[
91
- * { label: 'Dashboard', icon: <DashboardIcon />, active: true },
92
- * {
93
- * label: 'Products',
94
- * icon: <ProductIcon />,
95
- * items: [
96
- * { label: 'All Products', onClick: () => {} },
97
- * { label: 'Categories', onClick: () => {} }
98
- * ]
99
- * },
100
- * { label: 'Settings', icon: <SettingsIcon />, onClick: () => {} }
101
- * ]}
102
- * />
103
- * ```
104
- *
105
- * @example
106
- * Collapsible sidebar with header
107
- * ```tsx
108
- * <SideMenu
109
- * collapsed={isCollapsed}
110
- * onCollapseToggle={setIsCollapsed}
111
- * header={<Logo />}
112
- * items={menuItems}
113
- * />
114
- * ```
115
- */
116
- export declare const SideMenu: React.ForwardRefExoticComponent<SideMenuProps & React.RefAttributes<HTMLDivElement>>;
83
+ declare const SideMenuWithParsedClasses: {
84
+ (props: SideMenuProps & React.RefAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
85
+ displayName: string;
86
+ };
117
87
  declare const _default: React.FC<SideMenuProps & React.RefAttributes<HTMLDivElement>>;
118
88
  export default _default;
89
+ export { SideMenuWithParsedClasses as SideMenu };
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Example: Basic Layout with Collapsible Sidebar
3
+ *
4
+ * This example demonstrates a simple layout with:
5
+ * - Collapsible sidebar
6
+ * - Nested menu items
7
+ * - Badges for notifications
8
+ * - Icons and tooltips
9
+ */
10
+ export declare const BasicLayoutExample: () => import("react/jsx-runtime").JSX.Element;
11
+ /**
12
+ * Example: With Links
13
+ */
14
+ export declare const WithLinksExample: () => import("react/jsx-runtime").JSX.Element;
15
+ /**
16
+ * Example: Simple Sidebar
17
+ */
18
+ export declare const SimpleExample: () => import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,2 @@
1
- export { default as SideMenu } from './SideMenu';
1
+ export { SideMenu, default } from './SideMenu';
2
2
  export type { SideMenuProps, SideMenuItemProps } from './SideMenu';
3
- export { SideMenu as SideMenuComponent } from './SideMenu';
4
- export { SideMenuItem } from './SideMenu';
@@ -1,4 +1,5 @@
1
1
  import React, { TableHTMLAttributes } from 'react';
2
+ import { Size } from '../../theme';
2
3
  import './Table.css';
3
4
  export interface TableColumn<T = unknown> {
4
5
  /**
@@ -53,6 +54,19 @@ export interface TableColumn<T = unknown> {
53
54
  * Custom class name for header cell
54
55
  */
55
56
  headerClassName?: string;
57
+ /**
58
+ * Enable filtering for this column
59
+ * @default false
60
+ */
61
+ filterable?: boolean;
62
+ /**
63
+ * Custom filter function
64
+ */
65
+ filterFn?: (row: T, filterValue: string) => boolean;
66
+ /**
67
+ * Filter placeholder text
68
+ */
69
+ filterPlaceholder?: string;
56
70
  }
57
71
  export interface TableProps<T = unknown> extends Omit<TableHTMLAttributes<HTMLTableElement>, 'children'> {
58
72
  /**
@@ -85,9 +99,9 @@ export interface TableProps<T = unknown> extends Omit<TableHTMLAttributes<HTMLTa
85
99
  bordered?: boolean;
86
100
  /**
87
101
  * Size variant
88
- * @default 'medium'
102
+ * @default theme.defaultSize
89
103
  */
90
- size?: 'small' | 'medium' | 'large';
104
+ size?: Size;
91
105
  /**
92
106
  * Optional caption for the table (improves accessibility)
93
107
  */
@@ -148,64 +162,98 @@ export interface TableProps<T = unknown> extends Omit<TableHTMLAttributes<HTMLTa
148
162
  * Custom class name for table container
149
163
  */
150
164
  containerClassName?: string;
165
+ /**
166
+ * If true, enables row selection with checkboxes
167
+ * @default false
168
+ */
169
+ selectable?: boolean;
170
+ /**
171
+ * Array of selected row keys
172
+ */
173
+ selectedRows?: (string | number)[];
174
+ /**
175
+ * Callback fired when selection changes
176
+ */
177
+ onSelectionChange?: (selectedKeys: (string | number)[]) => void;
178
+ /**
179
+ * If true, enables pagination
180
+ * @default false
181
+ */
182
+ pagination?: boolean;
183
+ /**
184
+ * Current page (zero-indexed)
185
+ * @default 0
186
+ */
187
+ page?: number;
188
+ /**
189
+ * Number of rows per page
190
+ * @default 10
191
+ */
192
+ rowsPerPage?: number;
193
+ /**
194
+ * Options for rows per page selection
195
+ * @default [5, 10, 25, 50]
196
+ */
197
+ rowsPerPageOptions?: number[];
198
+ /**
199
+ * Callback fired when page changes
200
+ */
201
+ onPageChange?: (page: number) => void;
202
+ /**
203
+ * Callback fired when rows per page changes
204
+ */
205
+ onRowsPerPageChange?: (rowsPerPage: number) => void;
206
+ /**
207
+ * Dense mode - reduces padding for compact view
208
+ * @default false
209
+ */
210
+ dense?: boolean;
211
+ /**
212
+ * Enable expandable rows
213
+ */
214
+ expandableRows?: boolean;
215
+ /**
216
+ * Function to render expanded row content
217
+ */
218
+ renderExpandedRow?: (row: T, rowIndex: number) => React.ReactNode;
219
+ /**
220
+ * Array of expanded row keys
221
+ */
222
+ expandedRows?: (string | number)[];
223
+ /**
224
+ * Callback fired when row expansion changes
225
+ */
226
+ onExpandRow?: (rowKey: string | number) => void;
227
+ /**
228
+ * Sticky header when scrolling
229
+ * @default false
230
+ */
231
+ stickyHeader?: boolean;
232
+ /**
233
+ * Show toolbar with title and actions
234
+ */
235
+ toolbar?: React.ReactNode | {
236
+ title?: string;
237
+ actions?: React.ReactNode;
238
+ };
239
+ /**
240
+ * Enable column filtering
241
+ * @default false
242
+ */
243
+ filterable?: boolean;
244
+ /**
245
+ * Current filter values
246
+ */
247
+ filters?: Record<string, string>;
248
+ /**
249
+ * Callback fired when filters change
250
+ */
251
+ onFiltersChange?: (filters: Record<string, string>) => void;
151
252
  }
152
- /**
153
- * Table component - Displays data in rows and columns with advanced features
154
- *
155
- * A comprehensive table component with support for sorting, selection, loading states,
156
- * sticky columns, and customizable rendering.
157
- *
158
- * @example
159
- * Basic usage
160
- * ```tsx
161
- * const columns = [
162
- * { key: 'name', header: 'Name' },
163
- * { key: 'email', header: 'Email' },
164
- * { key: 'role', header: 'Role', align: 'center' },
165
- * ];
166
- *
167
- * const data = [
168
- * { id: 1, name: 'John Doe', email: 'john@example.com', role: 'Admin' },
169
- * ];
170
- *
171
- * <Table
172
- * columns={columns}
173
- * data={data}
174
- * getRowKey={(row) => row.id}
175
- * striped
176
- * />
177
- * ```
178
- *
179
- * @example
180
- * With sorting and row click
181
- * ```tsx
182
- * <Table
183
- * columns={columns}
184
- * data={data}
185
- * getRowKey={(row) => row.id}
186
- * sortable
187
- * onRowClick={(row) => console.log('Clicked:', row)}
188
- * />
189
- * ```
190
- *
191
- * @example
192
- * With loading state and custom rendering
193
- * ```tsx
194
- * <Table
195
- * columns={[
196
- * { key: 'name', header: 'Name', sticky: 'left' },
197
- * { key: 'status', header: 'Status', render: (row) => <Badge>{row.status}</Badge> }
198
- * ]}
199
- * data={data}
200
- * getRowKey={(row) => row.id}
201
- * loading={isLoading}
202
- * maxHeight="400px"
203
- * />
204
- * ```
205
- */
206
- export declare function Table<T = unknown>({ columns, data, getRowKey, striped, hoverable, bordered, size, caption, emptyMessage, loading, loadingContent, scrollable, maxHeight, onRowClick, isRowSelected, onRowSelect, sortable, sortConfig, onSortChange, className, containerClassName, ...props }: TableProps<T>): import("react/jsx-runtime").JSX.Element;
207
- export declare namespace Table {
208
- var displayName: string;
209
- }
253
+ declare const TableWithParsedClasses: {
254
+ (props: TableProps<unknown>): import("react/jsx-runtime").JSX.Element;
255
+ displayName: string;
256
+ };
210
257
  declare const _default: React.FC<TableProps & React.RefAttributes<HTMLTableElement>>;
211
258
  export default _default;
259
+ export { TableWithParsedClasses as Table };
@@ -105,7 +105,10 @@ export interface TextProps extends Omit<React.HTMLAttributes<HTMLElement>, 'colo
105
105
  */
106
106
  children?: React.ReactNode;
107
107
  }
108
- declare const TextWithParsedClasses: (props: TextProps & React.RefAttributes<HTMLElement>) => import("react/jsx-runtime").JSX.Element;
108
+ declare const TextWithParsedClasses: {
109
+ (props: TextProps & React.RefAttributes<HTMLElement>): import("react/jsx-runtime").JSX.Element;
110
+ displayName: string;
111
+ };
109
112
  export { TextWithParsedClasses as Text };
110
113
  declare const _default: React.FC<TextProps & React.RefAttributes<HTMLElement>>;
111
114
  export default _default;