@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,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,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,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,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;
|