@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.
- package/LICENSE +21 -0
- package/README.md +228 -0
- package/dist/components/Accordion/Accordion.d.ts +31 -0
- package/dist/components/Accordion/Accordion.examples.d.ts +3 -0
- package/dist/components/Accordion/AccordionItem.d.ts +5 -0
- package/dist/components/Accordion/index.d.ts +4 -0
- package/dist/components/Accordion/types.d.ts +98 -0
- package/dist/components/Alert/Alert.d.ts +119 -0
- package/dist/components/Alert/index.d.ts +3 -0
- package/dist/components/Avatar/Avatar.d.ts +63 -0
- package/dist/components/Avatar/index.d.ts +3 -0
- package/dist/components/Badge/Badge.d.ts +81 -0
- package/dist/components/Badge/index.d.ts +3 -0
- package/dist/components/Button/Button.d.ts +117 -0
- package/dist/components/Button/index.d.ts +3 -0
- package/dist/components/Card/Card.d.ts +120 -0
- package/dist/components/Card/index.d.ts +3 -0
- package/dist/components/Checkbox/Checkbox.d.ts +114 -0
- package/dist/components/Checkbox/index.d.ts +3 -0
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +121 -0
- package/dist/components/CheckboxGroup/index.d.ts +3 -0
- package/dist/components/Chip/Chip.d.ts +91 -0
- package/dist/components/Chip/index.d.ts +3 -0
- package/dist/components/Divider/Divider.d.ts +118 -0
- package/dist/components/Divider/index.d.ts +3 -0
- package/dist/components/Flex/Flex.d.ts +66 -0
- package/dist/components/Flex/index.d.ts +3 -0
- package/dist/components/Grid/Grid.d.ts +156 -0
- package/dist/components/Grid/index.d.ts +3 -0
- package/dist/components/Header/Header.d.ts +138 -0
- package/dist/components/Header/index.d.ts +3 -0
- package/dist/components/Input/Input.d.ts +129 -0
- package/dist/components/Input/index.d.ts +3 -0
- package/dist/components/Menu/Menu.d.ts +114 -0
- package/dist/components/Menu/index.d.ts +4 -0
- package/dist/components/Modal/Modal.d.ts +201 -0
- package/dist/components/Modal/index.d.ts +3 -0
- package/dist/components/MultiSelect/MultiSelect.d.ts +190 -0
- package/dist/components/MultiSelect/index.d.ts +3 -0
- package/dist/components/Radio/Radio.d.ts +105 -0
- package/dist/components/Radio/index.d.ts +3 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts +134 -0
- package/dist/components/RadioGroup/index.d.ts +3 -0
- package/dist/components/Select/Select.d.ts +169 -0
- package/dist/components/Select/index.d.ts +3 -0
- package/dist/components/SideMenu/SideMenu.d.ts +118 -0
- package/dist/components/SideMenu/index.d.ts +4 -0
- package/dist/components/Table/Table.d.ts +211 -0
- package/dist/components/Table/index.d.ts +3 -0
- package/dist/components/Text/Text.d.ts +160 -0
- package/dist/components/Text/index.d.ts +3 -0
- package/dist/components/Toast/Toast.d.ts +56 -0
- package/dist/components/Toast/ToastContainer.d.ts +6 -0
- package/dist/components/Toast/index.d.ts +5 -0
- package/dist/components/Toast/types.d.ts +148 -0
- package/dist/components/Toast/useToast.d.ts +34 -0
- package/dist/components/Tooltip/Tooltip.d.ts +108 -0
- package/dist/components/Tooltip/index.d.ts +3 -0
- package/dist/hooks/index.d.ts +85 -0
- package/dist/hooks/useTheme.d.ts +268 -0
- package/dist/index.cjs.js +2 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +55 -0
- package/dist/index.esm.js +2 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/theme/ThemeProvider.d.ts +39 -0
- package/dist/theme/cssVariables.d.ts +9 -0
- package/dist/theme/index.d.ts +6 -0
- package/dist/theme/tokens.d.ts +258 -0
- package/dist/types/components/Accordion/Accordion.d.ts +31 -0
- package/dist/types/components/Accordion/Accordion.examples.d.ts +3 -0
- package/dist/types/components/Accordion/AccordionItem.d.ts +5 -0
- package/dist/types/components/Accordion/index.d.ts +4 -0
- package/dist/types/components/Accordion/types.d.ts +98 -0
- package/dist/types/components/Alert/Alert.d.ts +119 -0
- package/dist/types/components/Alert/index.d.ts +3 -0
- package/dist/types/components/Avatar/Avatar.d.ts +63 -0
- package/dist/types/components/Avatar/index.d.ts +3 -0
- package/dist/types/components/Badge/Badge.d.ts +81 -0
- package/dist/types/components/Badge/index.d.ts +3 -0
- package/dist/types/components/Button/Button.d.ts +117 -0
- package/dist/types/components/Button/index.d.ts +3 -0
- package/dist/types/components/Card/Card.d.ts +120 -0
- package/dist/types/components/Card/index.d.ts +3 -0
- package/dist/types/components/Checkbox/Checkbox.d.ts +114 -0
- package/dist/types/components/Checkbox/index.d.ts +3 -0
- package/dist/types/components/CheckboxGroup/CheckboxGroup.d.ts +121 -0
- package/dist/types/components/CheckboxGroup/index.d.ts +3 -0
- package/dist/types/components/Chip/Chip.d.ts +91 -0
- package/dist/types/components/Chip/index.d.ts +3 -0
- package/dist/types/components/Divider/Divider.d.ts +118 -0
- package/dist/types/components/Divider/index.d.ts +3 -0
- package/dist/types/components/Flex/Flex.d.ts +66 -0
- package/dist/types/components/Flex/index.d.ts +3 -0
- package/dist/types/components/Grid/Grid.d.ts +156 -0
- package/dist/types/components/Grid/index.d.ts +3 -0
- package/dist/types/components/Header/Header.d.ts +138 -0
- package/dist/types/components/Header/index.d.ts +3 -0
- package/dist/types/components/Input/Input.d.ts +129 -0
- package/dist/types/components/Input/index.d.ts +3 -0
- package/dist/types/components/Menu/Menu.d.ts +114 -0
- package/dist/types/components/Menu/index.d.ts +4 -0
- package/dist/types/components/Modal/Modal.d.ts +201 -0
- package/dist/types/components/Modal/index.d.ts +3 -0
- package/dist/types/components/MultiSelect/MultiSelect.d.ts +190 -0
- package/dist/types/components/MultiSelect/index.d.ts +3 -0
- package/dist/types/components/Radio/Radio.d.ts +105 -0
- package/dist/types/components/Radio/index.d.ts +3 -0
- package/dist/types/components/RadioGroup/RadioGroup.d.ts +134 -0
- package/dist/types/components/RadioGroup/index.d.ts +3 -0
- package/dist/types/components/Select/Select.d.ts +169 -0
- package/dist/types/components/Select/index.d.ts +3 -0
- package/dist/types/components/SideMenu/SideMenu.d.ts +118 -0
- package/dist/types/components/SideMenu/index.d.ts +4 -0
- package/dist/types/components/Table/Table.d.ts +211 -0
- package/dist/types/components/Table/index.d.ts +3 -0
- package/dist/types/components/Text/Text.d.ts +160 -0
- package/dist/types/components/Text/index.d.ts +3 -0
- package/dist/types/components/Toast/Toast.d.ts +56 -0
- package/dist/types/components/Toast/ToastContainer.d.ts +6 -0
- package/dist/types/components/Toast/index.d.ts +5 -0
- package/dist/types/components/Toast/types.d.ts +148 -0
- package/dist/types/components/Toast/useToast.d.ts +34 -0
- package/dist/types/components/Tooltip/Tooltip.d.ts +108 -0
- package/dist/types/components/Tooltip/index.d.ts +3 -0
- package/dist/types/hooks/index.d.ts +85 -0
- package/dist/types/hooks/useTheme.d.ts +268 -0
- package/dist/types/index.d.ts +55 -0
- package/dist/types/theme/ThemeProvider.d.ts +39 -0
- package/dist/types/theme/cssVariables.d.ts +9 -0
- package/dist/types/theme/index.d.ts +6 -0
- package/dist/types/theme/tokens.d.ts +258 -0
- package/package.json +59 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './Flex.css';
|
|
3
|
+
export interface FlexProps {
|
|
4
|
+
/** Child elements */
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
/** Flex direction */
|
|
7
|
+
direction?: 'row' | 'column' | 'row-reverse' | 'column-reverse';
|
|
8
|
+
/** Flex wrap behavior */
|
|
9
|
+
wrap?: 'nowrap' | 'wrap' | 'wrap-reverse';
|
|
10
|
+
/** Justify content alignment */
|
|
11
|
+
justify?: 'start' | 'end' | 'center' | 'between' | 'around' | 'evenly';
|
|
12
|
+
/** Align items alignment */
|
|
13
|
+
align?: 'start' | 'end' | 'center' | 'baseline' | 'stretch';
|
|
14
|
+
/** Align content alignment (multi-line) */
|
|
15
|
+
alignContent?: 'start' | 'end' | 'center' | 'between' | 'around' | 'stretch';
|
|
16
|
+
/** Gap between items */
|
|
17
|
+
gap?: number | string;
|
|
18
|
+
/** Row gap (overrides gap for rows) */
|
|
19
|
+
rowGap?: number | string;
|
|
20
|
+
/** Column gap (overrides gap for columns) */
|
|
21
|
+
columnGap?: number | string;
|
|
22
|
+
/** Whether the container is inline-flex */
|
|
23
|
+
inline?: boolean;
|
|
24
|
+
/** Whether the container takes full width (default: true) */
|
|
25
|
+
fullWidth?: boolean;
|
|
26
|
+
/** Flex grow value */
|
|
27
|
+
grow?: number;
|
|
28
|
+
/** Flex shrink value */
|
|
29
|
+
shrink?: number;
|
|
30
|
+
/** Flex basis value */
|
|
31
|
+
basis?: string | number;
|
|
32
|
+
/** Custom className */
|
|
33
|
+
className?: string;
|
|
34
|
+
/** Custom style */
|
|
35
|
+
style?: React.CSSProperties;
|
|
36
|
+
/** HTML element to render as */
|
|
37
|
+
as?: 'div' | 'section' | 'article' | 'aside' | 'header' | 'footer' | 'nav' | 'main';
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Flex component - A flexible container for flexbox layouts
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```tsx
|
|
44
|
+
* // Basic row with gap
|
|
45
|
+
* <Flex gap={16}>
|
|
46
|
+
* <div>Item 1</div>
|
|
47
|
+
* <div>Item 2</div>
|
|
48
|
+
* </Flex>
|
|
49
|
+
*
|
|
50
|
+
* // Centered column
|
|
51
|
+
* <Flex direction="column" align="center" justify="center">
|
|
52
|
+
* <h1>Title</h1>
|
|
53
|
+
* <p>Content</p>
|
|
54
|
+
* </Flex>
|
|
55
|
+
*
|
|
56
|
+
* // Space between with wrap
|
|
57
|
+
* <Flex justify="between" wrap="wrap" gap={8}>
|
|
58
|
+
* <button>Button 1</button>
|
|
59
|
+
* <button>Button 2</button>
|
|
60
|
+
* <button>Button 3</button>
|
|
61
|
+
* </Flex>
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare const Flex: React.ForwardRefExoticComponent<FlexProps & React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
65
|
+
declare const _default: React.FC<FlexProps & React.RefAttributes<HTMLDivElement>>;
|
|
66
|
+
export default _default;
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './Grid.css';
|
|
3
|
+
type GridSize = boolean | 'auto' | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
|
|
4
|
+
type GridSpacing = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;
|
|
5
|
+
export interface GridProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
6
|
+
/**
|
|
7
|
+
* If true, the component will have the flex container behavior
|
|
8
|
+
* @default false
|
|
9
|
+
*/
|
|
10
|
+
container?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* If true, the component will have the flex item behavior
|
|
13
|
+
* @default false
|
|
14
|
+
*/
|
|
15
|
+
item?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Defines the space between items (applies to container)
|
|
18
|
+
* @default 0
|
|
19
|
+
*/
|
|
20
|
+
spacing?: GridSpacing;
|
|
21
|
+
/**
|
|
22
|
+
* Defines the row gap between items (applies to container)
|
|
23
|
+
*/
|
|
24
|
+
rowSpacing?: GridSpacing;
|
|
25
|
+
/**
|
|
26
|
+
* Defines the column gap between items (applies to container)
|
|
27
|
+
*/
|
|
28
|
+
columnSpacing?: GridSpacing;
|
|
29
|
+
/**
|
|
30
|
+
* Number of columns (1-12) for all breakpoints
|
|
31
|
+
*/
|
|
32
|
+
xs?: GridSize;
|
|
33
|
+
/**
|
|
34
|
+
* Number of columns (1-12) for small devices (≥600px)
|
|
35
|
+
*/
|
|
36
|
+
sm?: GridSize;
|
|
37
|
+
/**
|
|
38
|
+
* Number of columns (1-12) for medium devices (≥960px)
|
|
39
|
+
*/
|
|
40
|
+
md?: GridSize;
|
|
41
|
+
/**
|
|
42
|
+
* Number of columns (1-12) for large devices (≥1280px)
|
|
43
|
+
*/
|
|
44
|
+
lg?: GridSize;
|
|
45
|
+
/**
|
|
46
|
+
* Number of columns (1-12) for extra large devices (≥1920px)
|
|
47
|
+
*/
|
|
48
|
+
xl?: GridSize;
|
|
49
|
+
/**
|
|
50
|
+
* Defines the justify-content style property
|
|
51
|
+
*/
|
|
52
|
+
justifyContent?: 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around' | 'space-evenly';
|
|
53
|
+
/**
|
|
54
|
+
* Defines the align-items style property
|
|
55
|
+
*/
|
|
56
|
+
alignItems?: 'flex-start' | 'center' | 'flex-end' | 'stretch' | 'baseline';
|
|
57
|
+
/**
|
|
58
|
+
* Defines the align-content style property
|
|
59
|
+
*/
|
|
60
|
+
alignContent?: 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around' | 'stretch';
|
|
61
|
+
/**
|
|
62
|
+
* Defines the flex-direction style property
|
|
63
|
+
*/
|
|
64
|
+
direction?: 'row' | 'row-reverse' | 'column' | 'column-reverse';
|
|
65
|
+
/**
|
|
66
|
+
* Defines the flex-wrap style property
|
|
67
|
+
*/
|
|
68
|
+
wrap?: 'nowrap' | 'wrap' | 'wrap-reverse';
|
|
69
|
+
/**
|
|
70
|
+
* Additional CSS class name
|
|
71
|
+
*/
|
|
72
|
+
className?: string;
|
|
73
|
+
/**
|
|
74
|
+
* The content of the component
|
|
75
|
+
*/
|
|
76
|
+
children?: React.ReactNode;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Grid component - A responsive grid layout system
|
|
80
|
+
*
|
|
81
|
+
* The Grid component uses a 12-column responsive grid layout inspired by Material-UI.
|
|
82
|
+
* It supports five breakpoints (xs, sm, md, lg, xl) and provides flexible spacing,
|
|
83
|
+
* alignment, and direction options.
|
|
84
|
+
*
|
|
85
|
+
* ## Breakpoints
|
|
86
|
+
* - xs: 0px and up (extra small devices)
|
|
87
|
+
* - sm: 600px and up (small devices)
|
|
88
|
+
* - md: 960px and up (medium devices)
|
|
89
|
+
* - lg: 1280px and up (large devices)
|
|
90
|
+
* - xl: 1920px and up (extra large devices)
|
|
91
|
+
*
|
|
92
|
+
* ## CSS Customization
|
|
93
|
+
*
|
|
94
|
+
* You can customize the grid spacing using CSS custom properties:
|
|
95
|
+
*
|
|
96
|
+
* ```css
|
|
97
|
+
* :root {
|
|
98
|
+
* --vtx-grid-spacing-unit: 8px;
|
|
99
|
+
* }
|
|
100
|
+
* ```
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* Basic grid with equal columns
|
|
104
|
+
* ```tsx
|
|
105
|
+
* <Grid container spacing={2}>
|
|
106
|
+
* <Grid item xs={12} sm={6} md={4}>
|
|
107
|
+
* <div>Column 1</div>
|
|
108
|
+
* </Grid>
|
|
109
|
+
* <Grid item xs={12} sm={6} md={4}>
|
|
110
|
+
* <div>Column 2</div>
|
|
111
|
+
* </Grid>
|
|
112
|
+
* <Grid item xs={12} sm={6} md={4}>
|
|
113
|
+
* <div>Column 3</div>
|
|
114
|
+
* </Grid>
|
|
115
|
+
* </Grid>
|
|
116
|
+
* ```
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* Responsive layout
|
|
120
|
+
* ```tsx
|
|
121
|
+
* <Grid container spacing={3}>
|
|
122
|
+
* <Grid item xs={12} md={8}>
|
|
123
|
+
* <div>Main content</div>
|
|
124
|
+
* </Grid>
|
|
125
|
+
* <Grid item xs={12} md={4}>
|
|
126
|
+
* <div>Sidebar</div>
|
|
127
|
+
* </Grid>
|
|
128
|
+
* </Grid>
|
|
129
|
+
* ```
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* Auto-width columns
|
|
133
|
+
* ```tsx
|
|
134
|
+
* <Grid container spacing={2}>
|
|
135
|
+
* <Grid item xs="auto">
|
|
136
|
+
* <div>Auto width</div>
|
|
137
|
+
* </Grid>
|
|
138
|
+
* <Grid item xs>
|
|
139
|
+
* <div>Fills remaining space</div>
|
|
140
|
+
* </Grid>
|
|
141
|
+
* </Grid>
|
|
142
|
+
* ```
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* With alignment
|
|
146
|
+
* ```tsx
|
|
147
|
+
* <Grid container spacing={2} justifyContent="center" alignItems="center">
|
|
148
|
+
* <Grid item xs={6}>
|
|
149
|
+
* <div>Centered content</div>
|
|
150
|
+
* </Grid>
|
|
151
|
+
* </Grid>
|
|
152
|
+
* ```
|
|
153
|
+
*/
|
|
154
|
+
export declare const Grid: React.ForwardRefExoticComponent<GridProps & React.RefAttributes<HTMLDivElement>>;
|
|
155
|
+
declare const _default: React.FC<GridProps & React.RefAttributes<HTMLDivElement>>;
|
|
156
|
+
export default _default;
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './Header.css';
|
|
3
|
+
export interface NotificationItem {
|
|
4
|
+
/**
|
|
5
|
+
* Notification ID
|
|
6
|
+
*/
|
|
7
|
+
id: string;
|
|
8
|
+
/**
|
|
9
|
+
* Notification title
|
|
10
|
+
*/
|
|
11
|
+
title: string;
|
|
12
|
+
/**
|
|
13
|
+
* Notification description
|
|
14
|
+
*/
|
|
15
|
+
description?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Timestamp or time ago string
|
|
18
|
+
*/
|
|
19
|
+
time: string;
|
|
20
|
+
/**
|
|
21
|
+
* Whether notification is read
|
|
22
|
+
* @default false
|
|
23
|
+
*/
|
|
24
|
+
read?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Notification icon
|
|
27
|
+
*/
|
|
28
|
+
icon?: React.ReactNode;
|
|
29
|
+
/**
|
|
30
|
+
* Click handler
|
|
31
|
+
*/
|
|
32
|
+
onClick?: () => void;
|
|
33
|
+
/**
|
|
34
|
+
* Notification type for styling
|
|
35
|
+
*/
|
|
36
|
+
type?: 'info' | 'success' | 'warning' | 'error';
|
|
37
|
+
}
|
|
38
|
+
export interface HeaderProps {
|
|
39
|
+
/**
|
|
40
|
+
* Logo or brand element
|
|
41
|
+
*/
|
|
42
|
+
logo?: React.ReactNode;
|
|
43
|
+
/**
|
|
44
|
+
* Title text
|
|
45
|
+
*/
|
|
46
|
+
title?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Toggle button click handler (for sidebar)
|
|
49
|
+
*/
|
|
50
|
+
onToggleSidebar?: () => void;
|
|
51
|
+
/**
|
|
52
|
+
* Whether to show toggle button
|
|
53
|
+
* @default true
|
|
54
|
+
*/
|
|
55
|
+
showToggle?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Notifications list
|
|
58
|
+
*/
|
|
59
|
+
notifications?: NotificationItem[];
|
|
60
|
+
/**
|
|
61
|
+
* Notification click handler
|
|
62
|
+
*/
|
|
63
|
+
onNotificationClick?: (notification: NotificationItem) => void;
|
|
64
|
+
/**
|
|
65
|
+
* Mark all as read handler
|
|
66
|
+
*/
|
|
67
|
+
onMarkAllAsRead?: () => void;
|
|
68
|
+
/**
|
|
69
|
+
* User name
|
|
70
|
+
*/
|
|
71
|
+
userName?: string;
|
|
72
|
+
/**
|
|
73
|
+
* User email or role
|
|
74
|
+
*/
|
|
75
|
+
userSubtitle?: string;
|
|
76
|
+
/**
|
|
77
|
+
* User avatar image URL
|
|
78
|
+
*/
|
|
79
|
+
userAvatar?: string;
|
|
80
|
+
/**
|
|
81
|
+
* User menu items
|
|
82
|
+
*/
|
|
83
|
+
userMenuItems?: Array<{
|
|
84
|
+
label: string;
|
|
85
|
+
icon?: React.ReactNode;
|
|
86
|
+
onClick?: () => void;
|
|
87
|
+
variant?: 'default' | 'danger';
|
|
88
|
+
divider?: boolean;
|
|
89
|
+
}>;
|
|
90
|
+
/**
|
|
91
|
+
* Custom actions (buttons, search, etc.)
|
|
92
|
+
*/
|
|
93
|
+
actions?: React.ReactNode;
|
|
94
|
+
/**
|
|
95
|
+
* Custom className
|
|
96
|
+
*/
|
|
97
|
+
className?: string;
|
|
98
|
+
/**
|
|
99
|
+
* Whether header is sticky
|
|
100
|
+
* @default true
|
|
101
|
+
*/
|
|
102
|
+
sticky?: boolean;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Header component - Professional admin panel header with notifications and user menu
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* Basic header
|
|
109
|
+
* ```tsx
|
|
110
|
+
* <Header
|
|
111
|
+
* title="Admin Dashboard"
|
|
112
|
+
* userName="John Doe"
|
|
113
|
+
* userSubtitle="Admin"
|
|
114
|
+
* onToggleSidebar={() => setCollapsed(!collapsed)}
|
|
115
|
+
* />
|
|
116
|
+
* ```
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* With notifications
|
|
120
|
+
* ```tsx
|
|
121
|
+
* <Header
|
|
122
|
+
* title="Dashboard"
|
|
123
|
+
* notifications={[
|
|
124
|
+
* { id: '1', title: 'New order received', time: '2 min ago', read: false },
|
|
125
|
+
* { id: '2', title: 'User registered', time: '1 hour ago', read: true }
|
|
126
|
+
* ]}
|
|
127
|
+
* userName="John Doe"
|
|
128
|
+
* userMenuItems={[
|
|
129
|
+
* { label: 'Profile', icon: <UserIcon /> },
|
|
130
|
+
* { label: 'Settings', icon: <SettingsIcon /> },
|
|
131
|
+
* { label: 'Logout', icon: <LogoutIcon />, variant: 'danger' }
|
|
132
|
+
* ]}
|
|
133
|
+
* />
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
export declare const Header: React.ForwardRefExoticComponent<HeaderProps & React.RefAttributes<HTMLDivElement>>;
|
|
137
|
+
declare const _default: React.FC<HeaderProps & React.RefAttributes<HTMLElement>>;
|
|
138
|
+
export default _default;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import React, { InputHTMLAttributes } from 'react';
|
|
2
|
+
import './Input.css';
|
|
3
|
+
export interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {
|
|
4
|
+
/**
|
|
5
|
+
* Label text displayed above the input
|
|
6
|
+
*/
|
|
7
|
+
label?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Helper text displayed below the input
|
|
10
|
+
* Provides additional context or instructions
|
|
11
|
+
*/
|
|
12
|
+
helperText?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Error message - when provided, input is shown in error state
|
|
15
|
+
* Takes precedence over helperText when both are present
|
|
16
|
+
*/
|
|
17
|
+
error?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Success message - when provided, input is shown in success state
|
|
20
|
+
*/
|
|
21
|
+
success?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Size of the input
|
|
24
|
+
* @default 'medium'
|
|
25
|
+
*/
|
|
26
|
+
size?: 'small' | 'medium' | 'large';
|
|
27
|
+
/**
|
|
28
|
+
* If true, input will take full width of its container
|
|
29
|
+
* @default false
|
|
30
|
+
*/
|
|
31
|
+
fullWidth?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Icon or element to display at the start of the input
|
|
34
|
+
*/
|
|
35
|
+
leftIcon?: React.ReactNode;
|
|
36
|
+
/**
|
|
37
|
+
* Icon or element to display at the end of the input
|
|
38
|
+
*/
|
|
39
|
+
rightIcon?: React.ReactNode;
|
|
40
|
+
/**
|
|
41
|
+
* If true, shows a clear button when input has value
|
|
42
|
+
* @default false
|
|
43
|
+
*/
|
|
44
|
+
clearable?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Callback fired when clear button is clicked
|
|
47
|
+
*/
|
|
48
|
+
onClear?: () => void;
|
|
49
|
+
/**
|
|
50
|
+
* If true, adds a character counter below the input
|
|
51
|
+
* Requires maxLength prop to be set
|
|
52
|
+
* @default false
|
|
53
|
+
*/
|
|
54
|
+
showCount?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Custom class name for the wrapper element
|
|
57
|
+
*/
|
|
58
|
+
wrapperClassName?: string;
|
|
59
|
+
/**
|
|
60
|
+
* Custom class name for the label element
|
|
61
|
+
*/
|
|
62
|
+
labelClassName?: string;
|
|
63
|
+
/**
|
|
64
|
+
* Custom class name for the input element itself
|
|
65
|
+
*/
|
|
66
|
+
inputClassName?: string;
|
|
67
|
+
/**
|
|
68
|
+
* Prefix text to display before input value
|
|
69
|
+
*/
|
|
70
|
+
prefix?: string;
|
|
71
|
+
/**
|
|
72
|
+
* Suffix text to display after input value
|
|
73
|
+
*/
|
|
74
|
+
suffix?: string;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Input component - Text input field with label, helper text, validation states, and rich features
|
|
78
|
+
*
|
|
79
|
+
* A comprehensive input component with support for icons, prefixes, suffixes, character counting,
|
|
80
|
+
* clear functionality, and various validation states.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* Basic usage
|
|
84
|
+
* ```tsx
|
|
85
|
+
* <Input
|
|
86
|
+
* label="Email"
|
|
87
|
+
* type="email"
|
|
88
|
+
* placeholder="Enter your email"
|
|
89
|
+
* helperText="We'll never share your email"
|
|
90
|
+
* />
|
|
91
|
+
* ```
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* With error state
|
|
95
|
+
* ```tsx
|
|
96
|
+
* <Input
|
|
97
|
+
* label="Username"
|
|
98
|
+
* error="Username is already taken"
|
|
99
|
+
* value={username}
|
|
100
|
+
* onChange={(e) => setUsername(e.target.value)}
|
|
101
|
+
* />
|
|
102
|
+
* ```
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* With icons and clear button
|
|
106
|
+
* ```tsx
|
|
107
|
+
* <Input
|
|
108
|
+
* label="Search"
|
|
109
|
+
* leftIcon={<SearchIcon />}
|
|
110
|
+
* clearable
|
|
111
|
+
* onClear={() => setSearch('')}
|
|
112
|
+
* />
|
|
113
|
+
* ```
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* With character counter
|
|
117
|
+
* ```tsx
|
|
118
|
+
* <Input
|
|
119
|
+
* label="Bio"
|
|
120
|
+
* maxLength={100}
|
|
121
|
+
* showCount
|
|
122
|
+
* value={bio}
|
|
123
|
+
* onChange={(e) => setBio(e.target.value)}
|
|
124
|
+
* />
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
export declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
|
|
128
|
+
declare const _default: React.FC<InputProps & React.RefAttributes<HTMLInputElement>>;
|
|
129
|
+
export default _default;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './Menu.css';
|
|
3
|
+
export interface MenuItemProps {
|
|
4
|
+
/**
|
|
5
|
+
* Menu item label
|
|
6
|
+
*/
|
|
7
|
+
label: string;
|
|
8
|
+
/**
|
|
9
|
+
* Click handler
|
|
10
|
+
*/
|
|
11
|
+
onClick?: () => void;
|
|
12
|
+
/**
|
|
13
|
+
* Icon to display before label
|
|
14
|
+
*/
|
|
15
|
+
icon?: React.ReactNode;
|
|
16
|
+
/**
|
|
17
|
+
* Icon to display after label
|
|
18
|
+
*/
|
|
19
|
+
rightIcon?: React.ReactNode;
|
|
20
|
+
/**
|
|
21
|
+
* Whether the item is disabled
|
|
22
|
+
* @default false
|
|
23
|
+
*/
|
|
24
|
+
disabled?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Whether the item is active/selected
|
|
27
|
+
* @default false
|
|
28
|
+
*/
|
|
29
|
+
active?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Item variant
|
|
32
|
+
* @default 'default'
|
|
33
|
+
*/
|
|
34
|
+
variant?: 'default' | 'danger';
|
|
35
|
+
/**
|
|
36
|
+
* Keyboard shortcut to display
|
|
37
|
+
*/
|
|
38
|
+
shortcut?: string;
|
|
39
|
+
/**
|
|
40
|
+
* Divider after this item
|
|
41
|
+
* @default false
|
|
42
|
+
*/
|
|
43
|
+
divider?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Submenu items for multi-level menus
|
|
46
|
+
*/
|
|
47
|
+
items?: MenuItemProps[];
|
|
48
|
+
}
|
|
49
|
+
export interface MenuProps {
|
|
50
|
+
/**
|
|
51
|
+
* Menu items configuration
|
|
52
|
+
*/
|
|
53
|
+
items?: MenuItemProps[];
|
|
54
|
+
/**
|
|
55
|
+
* Custom children (MenuItem components)
|
|
56
|
+
*/
|
|
57
|
+
children?: React.ReactNode;
|
|
58
|
+
/**
|
|
59
|
+
* Menu orientation
|
|
60
|
+
* @default 'vertical'
|
|
61
|
+
*/
|
|
62
|
+
orientation?: 'vertical' | 'horizontal';
|
|
63
|
+
/**
|
|
64
|
+
* Whether menu is responsive (converts to hamburger on mobile)
|
|
65
|
+
* @default true
|
|
66
|
+
*/
|
|
67
|
+
responsive?: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Custom className
|
|
70
|
+
*/
|
|
71
|
+
className?: string;
|
|
72
|
+
/**
|
|
73
|
+
* Menu width (for vertical menus)
|
|
74
|
+
*/
|
|
75
|
+
width?: string | number;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* MenuItem component - Individual menu item with submenu support
|
|
79
|
+
*/
|
|
80
|
+
export declare const MenuItem: React.ForwardRefExoticComponent<MenuItemProps & React.RefAttributes<HTMLDivElement>>;
|
|
81
|
+
/**
|
|
82
|
+
* Menu component - Navigation or action menu with responsive support
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* Basic menu with items array
|
|
86
|
+
* ```tsx
|
|
87
|
+
* <Menu
|
|
88
|
+
* items={[
|
|
89
|
+
* { label: 'Profile', icon: <UserIcon />, onClick: () => {} },
|
|
90
|
+
* { label: 'Settings', icon: <SettingsIcon />, onClick: () => {} },
|
|
91
|
+
* { label: 'Logout', icon: <LogoutIcon />, onClick: () => {}, variant: 'danger' }
|
|
92
|
+
* ]}
|
|
93
|
+
* />
|
|
94
|
+
* ```
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* Horizontal menu with custom children
|
|
98
|
+
* ```tsx
|
|
99
|
+
* <Menu orientation="horizontal">
|
|
100
|
+
* <MenuItem label="Home" active />
|
|
101
|
+
* <MenuItem label="Products" />
|
|
102
|
+
* <MenuItem label="About" />
|
|
103
|
+
* </Menu>
|
|
104
|
+
* ```
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* Responsive menu (hamburger on mobile)
|
|
108
|
+
* ```tsx
|
|
109
|
+
* <Menu responsive items={menuItems} />
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
export declare const Menu: React.ForwardRefExoticComponent<MenuProps & React.RefAttributes<HTMLDivElement>>;
|
|
113
|
+
declare const _default: React.FC<MenuProps & React.RefAttributes<HTMLDivElement>>;
|
|
114
|
+
export default _default;
|