@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,117 @@
|
|
|
1
|
+
import React, { ButtonHTMLAttributes } from 'react';
|
|
2
|
+
import './Button.css';
|
|
3
|
+
export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
4
|
+
/**
|
|
5
|
+
* Visual style variant of the button
|
|
6
|
+
* @default 'primary'
|
|
7
|
+
*/
|
|
8
|
+
variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger' | 'success' | 'warning';
|
|
9
|
+
/**
|
|
10
|
+
* Size of the button
|
|
11
|
+
* @default 'md'
|
|
12
|
+
*/
|
|
13
|
+
size?: 'sm' | 'md' | 'lg';
|
|
14
|
+
/**
|
|
15
|
+
* If true, button will take full width of its container
|
|
16
|
+
* @default false
|
|
17
|
+
*/
|
|
18
|
+
fullWidth?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Loading state - shows loading indicator and disables interaction
|
|
21
|
+
* When true, the button becomes unclickable and shows a spinner
|
|
22
|
+
* @default false
|
|
23
|
+
*/
|
|
24
|
+
loading?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Icon to display before button text
|
|
27
|
+
* Pass any React node (icon component, emoji, etc.)
|
|
28
|
+
*/
|
|
29
|
+
leftIcon?: React.ReactNode;
|
|
30
|
+
/**
|
|
31
|
+
* Icon to display after button text
|
|
32
|
+
* Pass any React node (icon component, emoji, etc.)
|
|
33
|
+
*/
|
|
34
|
+
rightIcon?: React.ReactNode;
|
|
35
|
+
/**
|
|
36
|
+
* If true, renders the button as an icon-only button (no text padding)
|
|
37
|
+
* Content should be an icon element
|
|
38
|
+
* @default false
|
|
39
|
+
*/
|
|
40
|
+
iconOnly?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Custom loading text to display when loading is true
|
|
43
|
+
* @default undefined (uses children content)
|
|
44
|
+
*/
|
|
45
|
+
loadingText?: string;
|
|
46
|
+
/**
|
|
47
|
+
* If true, renders button as a link element with button styling
|
|
48
|
+
* Requires href prop when true
|
|
49
|
+
* @default false
|
|
50
|
+
*/
|
|
51
|
+
asLink?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* URL when rendering as link (requires asLink=true)
|
|
54
|
+
*/
|
|
55
|
+
href?: string;
|
|
56
|
+
/**
|
|
57
|
+
* Target attribute when rendering as link
|
|
58
|
+
*/
|
|
59
|
+
target?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Rel attribute when rendering as link
|
|
62
|
+
*/
|
|
63
|
+
rel?: string;
|
|
64
|
+
/**
|
|
65
|
+
* Optional text color for the button
|
|
66
|
+
*/
|
|
67
|
+
textColor?: string;
|
|
68
|
+
/**
|
|
69
|
+
* If true/false, applies dark or light text color class
|
|
70
|
+
*/
|
|
71
|
+
darkText?: boolean;
|
|
72
|
+
children?: React.ReactNode;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Button component - Primary interactive element for user actions
|
|
76
|
+
*
|
|
77
|
+
* A comprehensive button component with multiple variants, sizes, loading states,
|
|
78
|
+
* and icon support. Can also render as a link with button styling.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* Basic usage
|
|
82
|
+
* ```tsx
|
|
83
|
+
* <Button variant="primary" size="medium" onClick={() => console.log('clicked')}>
|
|
84
|
+
* Click me
|
|
85
|
+
* </Button>
|
|
86
|
+
* ```
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* With icons
|
|
90
|
+
* ```tsx
|
|
91
|
+
* <Button variant="primary" leftIcon={<SaveIcon />}>
|
|
92
|
+
* Save Changes
|
|
93
|
+
* </Button>
|
|
94
|
+
* <Button variant="secondary" rightIcon={<ArrowIcon />}>
|
|
95
|
+
* Next
|
|
96
|
+
* </Button>
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* Loading state
|
|
101
|
+
* ```tsx
|
|
102
|
+
* <Button loading loadingText="Saving...">
|
|
103
|
+
* Save
|
|
104
|
+
* </Button>
|
|
105
|
+
* ```
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* As link
|
|
109
|
+
* ```tsx
|
|
110
|
+
* <Button asLink href="/dashboard" variant="primary">
|
|
111
|
+
* Go to Dashboard
|
|
112
|
+
* </Button>
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
115
|
+
export declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
|
|
116
|
+
declare const _default: React.FC<ButtonProps & React.RefAttributes<HTMLButtonElement | HTMLAnchorElement>>;
|
|
117
|
+
export default _default;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './Card.css';
|
|
3
|
+
export interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
/**
|
|
5
|
+
* The content of the card
|
|
6
|
+
*/
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* The variant of the card
|
|
10
|
+
* @default 'elevated'
|
|
11
|
+
*/
|
|
12
|
+
variant?: 'elevated' | 'outlined' | 'filled';
|
|
13
|
+
/**
|
|
14
|
+
* Size of the card
|
|
15
|
+
* @default 'md'
|
|
16
|
+
*/
|
|
17
|
+
size?: 'sm' | 'md' | 'lg';
|
|
18
|
+
/**
|
|
19
|
+
* If true, removes padding from the card
|
|
20
|
+
* @default false
|
|
21
|
+
*/
|
|
22
|
+
noPadding?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Custom padding value (e.g., '16px', '1rem', '0')
|
|
25
|
+
* Overrides noPadding when provided
|
|
26
|
+
*/
|
|
27
|
+
padding?: string;
|
|
28
|
+
/**
|
|
29
|
+
* If true, makes the card hoverable with interaction effects
|
|
30
|
+
* @default false
|
|
31
|
+
*/
|
|
32
|
+
hoverable?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* If true, makes the card clickable (adds cursor pointer)
|
|
35
|
+
* @default false
|
|
36
|
+
*/
|
|
37
|
+
clickable?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Additional CSS class name
|
|
40
|
+
*/
|
|
41
|
+
className?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Header content for the card
|
|
44
|
+
*/
|
|
45
|
+
header?: React.ReactNode;
|
|
46
|
+
/**
|
|
47
|
+
* Footer content for the card
|
|
48
|
+
*/
|
|
49
|
+
footer?: React.ReactNode;
|
|
50
|
+
/**
|
|
51
|
+
* If true, adds dividers between header, content, and footer
|
|
52
|
+
* @default false
|
|
53
|
+
*/
|
|
54
|
+
divider?: boolean;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Card component - Container for grouping related content
|
|
58
|
+
*
|
|
59
|
+
* A versatile card component with support for variants, padding control,
|
|
60
|
+
* headers, footers, and interactive states.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* Basic card
|
|
64
|
+
* ```tsx
|
|
65
|
+
* <Card>
|
|
66
|
+
* <h3>Card Title</h3>
|
|
67
|
+
* <p>Card content goes here</p>
|
|
68
|
+
* </Card>
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* Card without padding
|
|
73
|
+
* ```tsx
|
|
74
|
+
* <Card noPadding>
|
|
75
|
+
* <img src="image.jpg" alt="Full bleed image" />
|
|
76
|
+
* </Card>
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* Card with custom padding
|
|
81
|
+
* ```tsx
|
|
82
|
+
* <Card padding="32px">
|
|
83
|
+
* <p>Card with custom padding</p>
|
|
84
|
+
* </Card>
|
|
85
|
+
* ```
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* Card with header and footer
|
|
89
|
+
* ```tsx
|
|
90
|
+
* <Card
|
|
91
|
+
* header={<h3>Card Header</h3>}
|
|
92
|
+
* footer={<button>Action</button>}
|
|
93
|
+
* divider
|
|
94
|
+
* >
|
|
95
|
+
* <p>Card content</p>
|
|
96
|
+
* </Card>
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* Interactive card
|
|
101
|
+
* ```tsx
|
|
102
|
+
* <Card hoverable clickable onClick={() => console.log('clicked')}>
|
|
103
|
+
* <p>Click me!</p>
|
|
104
|
+
* </Card>
|
|
105
|
+
* ```
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* Customize appearance with CSS
|
|
109
|
+
* ```css
|
|
110
|
+
* .vtx-card {
|
|
111
|
+
* --vtx-card-bg: #ffffff;
|
|
112
|
+
* --vtx-card-border-radius: 8px;
|
|
113
|
+
* --vtx-card-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
114
|
+
* --vtx-card-padding: 16px;
|
|
115
|
+
* }
|
|
116
|
+
* ```
|
|
117
|
+
*/
|
|
118
|
+
export declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>>;
|
|
119
|
+
declare const _default: React.FC<CardProps & React.RefAttributes<HTMLDivElement>>;
|
|
120
|
+
export default _default;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './Checkbox.css';
|
|
3
|
+
export interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {
|
|
4
|
+
/**
|
|
5
|
+
* If true, the checkbox is checked
|
|
6
|
+
*/
|
|
7
|
+
checked?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* If true, the checkbox appears indeterminate
|
|
10
|
+
* @default false
|
|
11
|
+
*/
|
|
12
|
+
indeterminate?: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* If true, the checkbox is disabled
|
|
15
|
+
* @default false
|
|
16
|
+
*/
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* The label for the checkbox
|
|
20
|
+
*/
|
|
21
|
+
label?: React.ReactNode;
|
|
22
|
+
/**
|
|
23
|
+
* The size of the checkbox
|
|
24
|
+
* @default 'md'
|
|
25
|
+
*/
|
|
26
|
+
size?: 'sm' | 'md' | 'lg';
|
|
27
|
+
/**
|
|
28
|
+
* The variant of the checkbox
|
|
29
|
+
* @default 'primary'
|
|
30
|
+
*/
|
|
31
|
+
variant?: 'primary' | 'secondary' | 'success' | 'error' | 'warning' | 'info';
|
|
32
|
+
/**
|
|
33
|
+
* If true, displays error styling
|
|
34
|
+
* @default false
|
|
35
|
+
*/
|
|
36
|
+
error?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Helper text displayed below the checkbox
|
|
39
|
+
*/
|
|
40
|
+
helperText?: React.ReactNode;
|
|
41
|
+
/**
|
|
42
|
+
* Callback fired when the state is changed
|
|
43
|
+
*/
|
|
44
|
+
onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
45
|
+
/**
|
|
46
|
+
* Additional CSS class name for the container
|
|
47
|
+
*/
|
|
48
|
+
className?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Additional CSS class name for the input element
|
|
51
|
+
*/
|
|
52
|
+
inputClassName?: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Checkbox component - Allows users to select one or more items from a set
|
|
56
|
+
*
|
|
57
|
+
* The Checkbox component provides a customizable checkbox input with support
|
|
58
|
+
* for labels, error states, indeterminate state, and three sizes.
|
|
59
|
+
*
|
|
60
|
+
* ## CSS Customization
|
|
61
|
+
*
|
|
62
|
+
* You can customize the checkbox appearance using CSS custom properties:
|
|
63
|
+
*
|
|
64
|
+
* ```css
|
|
65
|
+
* :root {
|
|
66
|
+
* --vtx-checkbox-color: #1976d2;
|
|
67
|
+
* --vtx-checkbox-size: 20px;
|
|
68
|
+
* --vtx-checkbox-border-width: 2px;
|
|
69
|
+
* --vtx-checkbox-border-radius: 4px;
|
|
70
|
+
* }
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* Basic checkbox
|
|
75
|
+
* ```tsx
|
|
76
|
+
* <Checkbox label="Accept terms and conditions" />
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* Controlled checkbox with size
|
|
81
|
+
* ```tsx
|
|
82
|
+
* const [checked, setChecked] = useState(false);
|
|
83
|
+
* <Checkbox
|
|
84
|
+
* checked={checked}
|
|
85
|
+
* onChange={(e) => setChecked(e.target.checked)}
|
|
86
|
+
* label="Subscribe to newsletter"
|
|
87
|
+
* size="lg"
|
|
88
|
+
* variant="secondary"
|
|
89
|
+
* />
|
|
90
|
+
* ```
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* With error state
|
|
94
|
+
* ```tsx
|
|
95
|
+
* <Checkbox
|
|
96
|
+
* label="I agree"
|
|
97
|
+
* error
|
|
98
|
+
* helperText="You must agree to continue"
|
|
99
|
+
* />
|
|
100
|
+
* ```
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* Indeterminate state
|
|
104
|
+
* ```tsx
|
|
105
|
+
* <Checkbox
|
|
106
|
+
* label="Select all"
|
|
107
|
+
* indeterminate
|
|
108
|
+
* />
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLInputElement>>;
|
|
112
|
+
declare const _default: React.FC<CheckboxProps & React.RefAttributes<HTMLInputElement>>;
|
|
113
|
+
export default _default;
|
|
114
|
+
export { Checkbox };
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './CheckboxGroup.css';
|
|
3
|
+
export interface CheckboxOption {
|
|
4
|
+
/**
|
|
5
|
+
* The value of the checkbox
|
|
6
|
+
*/
|
|
7
|
+
value: string;
|
|
8
|
+
/**
|
|
9
|
+
* The label for the checkbox
|
|
10
|
+
*/
|
|
11
|
+
label: React.ReactNode;
|
|
12
|
+
/**
|
|
13
|
+
* If true, the checkbox is disabled
|
|
14
|
+
*/
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface CheckboxGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
|
|
18
|
+
/**
|
|
19
|
+
* The label for the checkbox group
|
|
20
|
+
*/
|
|
21
|
+
label?: React.ReactNode;
|
|
22
|
+
/**
|
|
23
|
+
* Array of checkbox options
|
|
24
|
+
*/
|
|
25
|
+
options: CheckboxOption[];
|
|
26
|
+
/**
|
|
27
|
+
* Array of selected values
|
|
28
|
+
*/
|
|
29
|
+
value?: string[];
|
|
30
|
+
/**
|
|
31
|
+
* Default selected values for uncontrolled mode
|
|
32
|
+
*/
|
|
33
|
+
defaultValue?: string[];
|
|
34
|
+
/**
|
|
35
|
+
* Callback fired when the selection changes
|
|
36
|
+
*/
|
|
37
|
+
onChange?: (value: string[]) => void;
|
|
38
|
+
/**
|
|
39
|
+
* If true, all checkboxes are disabled
|
|
40
|
+
* @default false
|
|
41
|
+
*/
|
|
42
|
+
disabled?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* If true, displays error styling
|
|
45
|
+
* @default false
|
|
46
|
+
*/
|
|
47
|
+
error?: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Helper text displayed below the group
|
|
50
|
+
*/
|
|
51
|
+
helperText?: React.ReactNode;
|
|
52
|
+
/**
|
|
53
|
+
* The layout orientation of the checkboxes
|
|
54
|
+
* @default 'vertical'
|
|
55
|
+
*/
|
|
56
|
+
orientation?: 'horizontal' | 'vertical';
|
|
57
|
+
/**
|
|
58
|
+
* The size of the checkboxes
|
|
59
|
+
* @default 'md'
|
|
60
|
+
*/
|
|
61
|
+
size?: 'sm' | 'md' | 'lg';
|
|
62
|
+
/**
|
|
63
|
+
* Additional CSS class name
|
|
64
|
+
*/
|
|
65
|
+
className?: string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* CheckboxGroup component - Manages a group of related checkboxes
|
|
69
|
+
*
|
|
70
|
+
* The CheckboxGroup component provides a convenient way to manage multiple
|
|
71
|
+
* checkboxes with shared state, labels, and error handling.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* Basic usage
|
|
75
|
+
* ```tsx
|
|
76
|
+
* <CheckboxGroup
|
|
77
|
+
* label="Select your interests"
|
|
78
|
+
* options={[
|
|
79
|
+
* { value: 'sports', label: 'Sports' },
|
|
80
|
+
* { value: 'music', label: 'Music' },
|
|
81
|
+
* { value: 'travel', label: 'Travel' },
|
|
82
|
+
* ]}
|
|
83
|
+
* />
|
|
84
|
+
* ```
|
|
85
|
+
*
|
|
86
|
+
* @example
|
|
87
|
+
* Controlled mode
|
|
88
|
+
* ```tsx
|
|
89
|
+
* const [selected, setSelected] = useState(['sports']);
|
|
90
|
+
* <CheckboxGroup
|
|
91
|
+
* label="Interests"
|
|
92
|
+
* options={options}
|
|
93
|
+
* value={selected}
|
|
94
|
+
* onChange={setSelected}
|
|
95
|
+
* />
|
|
96
|
+
* ```
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* Horizontal layout
|
|
100
|
+
* ```tsx
|
|
101
|
+
* <CheckboxGroup
|
|
102
|
+
* label="Preferences"
|
|
103
|
+
* options={options}
|
|
104
|
+
* orientation="horizontal"
|
|
105
|
+
* />
|
|
106
|
+
* ```
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* With error state
|
|
110
|
+
* ```tsx
|
|
111
|
+
* <CheckboxGroup
|
|
112
|
+
* label="Required selection"
|
|
113
|
+
* options={options}
|
|
114
|
+
* error
|
|
115
|
+
* helperText="Please select at least one option"
|
|
116
|
+
* />
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
export declare const CheckboxGroup: React.ForwardRefExoticComponent<CheckboxGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
120
|
+
declare const _default: React.FC<CheckboxGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
121
|
+
export default _default;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import React, { ReactNode, MouseEvent } from 'react';
|
|
2
|
+
import './Chip.css';
|
|
3
|
+
export interface ChipProps {
|
|
4
|
+
/**
|
|
5
|
+
* The label text to display inside the chip
|
|
6
|
+
*/
|
|
7
|
+
label: string;
|
|
8
|
+
/**
|
|
9
|
+
* Size of the chip
|
|
10
|
+
* @default 'md'
|
|
11
|
+
*/
|
|
12
|
+
size?: 'sm' | 'md' | 'lg';
|
|
13
|
+
/**
|
|
14
|
+
* Visual style variant
|
|
15
|
+
* @default 'filled'
|
|
16
|
+
*/
|
|
17
|
+
variant?: 'filled' | 'outlined' | 'light';
|
|
18
|
+
/**
|
|
19
|
+
* Color theme of the chip
|
|
20
|
+
* @default 'default'
|
|
21
|
+
*/
|
|
22
|
+
color?: 'default' | 'primary' | 'success' | 'error' | 'warning' | 'info';
|
|
23
|
+
/**
|
|
24
|
+
* Icon to display at the start of the chip
|
|
25
|
+
*/
|
|
26
|
+
icon?: ReactNode;
|
|
27
|
+
/**
|
|
28
|
+
* Avatar image URL to display at the start
|
|
29
|
+
*/
|
|
30
|
+
avatar?: string;
|
|
31
|
+
/**
|
|
32
|
+
* If true, shows a delete/close button
|
|
33
|
+
* @default false
|
|
34
|
+
*/
|
|
35
|
+
onDelete?: (event: MouseEvent<HTMLButtonElement>) => void;
|
|
36
|
+
/**
|
|
37
|
+
* Callback when chip is clicked
|
|
38
|
+
*/
|
|
39
|
+
onClick?: (event: MouseEvent<HTMLDivElement>) => void;
|
|
40
|
+
/**
|
|
41
|
+
* If true, chip cannot be interacted with
|
|
42
|
+
* @default false
|
|
43
|
+
*/
|
|
44
|
+
disabled?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Additional CSS class names
|
|
47
|
+
*/
|
|
48
|
+
className?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Custom aria-label for accessibility
|
|
51
|
+
*/
|
|
52
|
+
'aria-label'?: string;
|
|
53
|
+
/**
|
|
54
|
+
* Data attribute for testing
|
|
55
|
+
*/
|
|
56
|
+
'data-testid'?: string;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Chip component - Compact element for displaying tags, labels, or selections
|
|
60
|
+
*
|
|
61
|
+
* A versatile chip component for representing small pieces of information like tags,
|
|
62
|
+
* filters, selections, or categories with optional delete functionality.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* Basic usage
|
|
66
|
+
* ```tsx
|
|
67
|
+
* <Chip label="React" />
|
|
68
|
+
* ```
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* With delete functionality
|
|
72
|
+
* ```tsx
|
|
73
|
+
* <Chip
|
|
74
|
+
* label="JavaScript"
|
|
75
|
+
* onDelete={() => handleRemove('js')}
|
|
76
|
+
* />
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* With avatar
|
|
81
|
+
* ```tsx
|
|
82
|
+
* <Chip
|
|
83
|
+
* label="John Doe"
|
|
84
|
+
* avatar="https://avatar.url/john.jpg"
|
|
85
|
+
* variant="outlined"
|
|
86
|
+
* />
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export declare const Chip: React.ForwardRefExoticComponent<ChipProps & React.RefAttributes<HTMLDivElement>>;
|
|
90
|
+
declare const _default: React.FC<ChipProps & React.RefAttributes<HTMLDivElement>>;
|
|
91
|
+
export default _default;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './Divider.css';
|
|
3
|
+
export interface DividerProps extends React.HTMLAttributes<HTMLHRElement | HTMLDivElement> {
|
|
4
|
+
/**
|
|
5
|
+
* Align the content within the divider
|
|
6
|
+
* Only works when children are provided
|
|
7
|
+
* @default 'center'
|
|
8
|
+
*/
|
|
9
|
+
textAlign?: 'left' | 'center' | 'right';
|
|
10
|
+
/**
|
|
11
|
+
* The component orientation
|
|
12
|
+
* @default 'horizontal'
|
|
13
|
+
*/
|
|
14
|
+
orientation?: 'horizontal' | 'vertical';
|
|
15
|
+
/**
|
|
16
|
+
* The variant to use
|
|
17
|
+
* @default 'fullWidth'
|
|
18
|
+
*/
|
|
19
|
+
variant?: 'fullWidth' | 'inset' | 'middle';
|
|
20
|
+
/**
|
|
21
|
+
* If true, the divider will have a lighter color
|
|
22
|
+
* @default false
|
|
23
|
+
*/
|
|
24
|
+
light?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* If true, the divider will be optimized for use in flex containers
|
|
27
|
+
* @default false
|
|
28
|
+
*/
|
|
29
|
+
flexItem?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* The content of the divider
|
|
32
|
+
*/
|
|
33
|
+
children?: React.ReactNode;
|
|
34
|
+
/**
|
|
35
|
+
* The component used for the root node
|
|
36
|
+
* Either a string to use a HTML element or a component
|
|
37
|
+
* @default 'hr'
|
|
38
|
+
*/
|
|
39
|
+
component?: React.ElementType;
|
|
40
|
+
/**
|
|
41
|
+
* Additional CSS class name
|
|
42
|
+
*/
|
|
43
|
+
className?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Divider component - A thin line that groups content in lists and layouts
|
|
47
|
+
*
|
|
48
|
+
* The Divider component provides a thin, unobtrusive line for grouping elements
|
|
49
|
+
* to reinforce visual hierarchy. It supports horizontal and vertical orientations,
|
|
50
|
+
* multiple variants, and can wrap content like text or chips.
|
|
51
|
+
*
|
|
52
|
+
* ## CSS Customization
|
|
53
|
+
*
|
|
54
|
+
* You can customize the divider appearance using CSS custom properties:
|
|
55
|
+
*
|
|
56
|
+
* ```css
|
|
57
|
+
* .custom-divider {
|
|
58
|
+
* --vtx-divider-color: #e91e63;
|
|
59
|
+
* --vtx-divider-color-light: #fce4ec;
|
|
60
|
+
* --vtx-divider-text-color: #c2185b;
|
|
61
|
+
* --vtx-divider-text-color-light: #f48fb1;
|
|
62
|
+
* --vtx-divider-text-size: 14px;
|
|
63
|
+
* --vtx-divider-text-weight: 600;
|
|
64
|
+
* }
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* Or set them globally on :root:
|
|
68
|
+
*
|
|
69
|
+
* ```css
|
|
70
|
+
* :root {
|
|
71
|
+
* --vtx-divider-color: #1976d2;
|
|
72
|
+
* --vtx-divider-text-color: #0d47a1;
|
|
73
|
+
* }
|
|
74
|
+
* ```
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* Basic horizontal divider
|
|
78
|
+
* ```tsx
|
|
79
|
+
* <Divider />
|
|
80
|
+
* ```
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* Vertical divider in flex container
|
|
84
|
+
* ```tsx
|
|
85
|
+
* <Box display="flex" alignItems="center">
|
|
86
|
+
* <Chip label="Item 1" />
|
|
87
|
+
* <Divider orientation="vertical" flexItem />
|
|
88
|
+
* <Chip label="Item 2" />
|
|
89
|
+
* </Box>
|
|
90
|
+
* ```
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* With text content
|
|
94
|
+
* ```tsx
|
|
95
|
+
* <div>
|
|
96
|
+
* <p>Content above</p>
|
|
97
|
+
* <Divider>OR</Divider>
|
|
98
|
+
* <p>Content below</p>
|
|
99
|
+
* </div>
|
|
100
|
+
* ```
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* With chip and custom alignment
|
|
104
|
+
* ```tsx
|
|
105
|
+
* <Divider textAlign="left">
|
|
106
|
+
* <Chip label="Section" size="small" />
|
|
107
|
+
* </Divider>
|
|
108
|
+
* ```
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* Custom colored divider
|
|
112
|
+
* ```tsx
|
|
113
|
+
* <Divider className="custom-divider">Custom</Divider>
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
export declare const Divider: React.ForwardRefExoticComponent<DividerProps & React.RefAttributes<HTMLDivElement | HTMLHRElement>>;
|
|
117
|
+
declare const _default: React.FC<DividerProps & React.RefAttributes<HTMLHRElement | HTMLDivElement>>;
|
|
118
|
+
export default _default;
|