@vtx-ui/react 0.0.1-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +228 -0
  3. package/dist/components/Accordion/Accordion.d.ts +31 -0
  4. package/dist/components/Accordion/Accordion.examples.d.ts +3 -0
  5. package/dist/components/Accordion/AccordionItem.d.ts +5 -0
  6. package/dist/components/Accordion/index.d.ts +4 -0
  7. package/dist/components/Accordion/types.d.ts +98 -0
  8. package/dist/components/Alert/Alert.d.ts +119 -0
  9. package/dist/components/Alert/index.d.ts +3 -0
  10. package/dist/components/Avatar/Avatar.d.ts +63 -0
  11. package/dist/components/Avatar/index.d.ts +3 -0
  12. package/dist/components/Badge/Badge.d.ts +81 -0
  13. package/dist/components/Badge/index.d.ts +3 -0
  14. package/dist/components/Button/Button.d.ts +117 -0
  15. package/dist/components/Button/index.d.ts +3 -0
  16. package/dist/components/Card/Card.d.ts +120 -0
  17. package/dist/components/Card/index.d.ts +3 -0
  18. package/dist/components/Checkbox/Checkbox.d.ts +114 -0
  19. package/dist/components/Checkbox/index.d.ts +3 -0
  20. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +121 -0
  21. package/dist/components/CheckboxGroup/index.d.ts +3 -0
  22. package/dist/components/Chip/Chip.d.ts +91 -0
  23. package/dist/components/Chip/index.d.ts +3 -0
  24. package/dist/components/Divider/Divider.d.ts +118 -0
  25. package/dist/components/Divider/index.d.ts +3 -0
  26. package/dist/components/Flex/Flex.d.ts +66 -0
  27. package/dist/components/Flex/index.d.ts +3 -0
  28. package/dist/components/Grid/Grid.d.ts +156 -0
  29. package/dist/components/Grid/index.d.ts +3 -0
  30. package/dist/components/Header/Header.d.ts +138 -0
  31. package/dist/components/Header/index.d.ts +3 -0
  32. package/dist/components/Input/Input.d.ts +129 -0
  33. package/dist/components/Input/index.d.ts +3 -0
  34. package/dist/components/Menu/Menu.d.ts +114 -0
  35. package/dist/components/Menu/index.d.ts +4 -0
  36. package/dist/components/Modal/Modal.d.ts +201 -0
  37. package/dist/components/Modal/index.d.ts +3 -0
  38. package/dist/components/MultiSelect/MultiSelect.d.ts +190 -0
  39. package/dist/components/MultiSelect/index.d.ts +3 -0
  40. package/dist/components/Radio/Radio.d.ts +105 -0
  41. package/dist/components/Radio/index.d.ts +3 -0
  42. package/dist/components/RadioGroup/RadioGroup.d.ts +134 -0
  43. package/dist/components/RadioGroup/index.d.ts +3 -0
  44. package/dist/components/Select/Select.d.ts +169 -0
  45. package/dist/components/Select/index.d.ts +3 -0
  46. package/dist/components/SideMenu/SideMenu.d.ts +118 -0
  47. package/dist/components/SideMenu/index.d.ts +4 -0
  48. package/dist/components/Table/Table.d.ts +211 -0
  49. package/dist/components/Table/index.d.ts +3 -0
  50. package/dist/components/Text/Text.d.ts +160 -0
  51. package/dist/components/Text/index.d.ts +3 -0
  52. package/dist/components/Toast/Toast.d.ts +56 -0
  53. package/dist/components/Toast/ToastContainer.d.ts +6 -0
  54. package/dist/components/Toast/index.d.ts +5 -0
  55. package/dist/components/Toast/types.d.ts +148 -0
  56. package/dist/components/Toast/useToast.d.ts +34 -0
  57. package/dist/components/Tooltip/Tooltip.d.ts +108 -0
  58. package/dist/components/Tooltip/index.d.ts +3 -0
  59. package/dist/hooks/index.d.ts +85 -0
  60. package/dist/hooks/useTheme.d.ts +268 -0
  61. package/dist/index.cjs.js +2 -0
  62. package/dist/index.cjs.js.map +1 -0
  63. package/dist/index.d.ts +55 -0
  64. package/dist/index.esm.js +2 -0
  65. package/dist/index.esm.js.map +1 -0
  66. package/dist/theme/ThemeProvider.d.ts +39 -0
  67. package/dist/theme/cssVariables.d.ts +9 -0
  68. package/dist/theme/index.d.ts +6 -0
  69. package/dist/theme/tokens.d.ts +258 -0
  70. package/dist/types/components/Accordion/Accordion.d.ts +31 -0
  71. package/dist/types/components/Accordion/Accordion.examples.d.ts +3 -0
  72. package/dist/types/components/Accordion/AccordionItem.d.ts +5 -0
  73. package/dist/types/components/Accordion/index.d.ts +4 -0
  74. package/dist/types/components/Accordion/types.d.ts +98 -0
  75. package/dist/types/components/Alert/Alert.d.ts +119 -0
  76. package/dist/types/components/Alert/index.d.ts +3 -0
  77. package/dist/types/components/Avatar/Avatar.d.ts +63 -0
  78. package/dist/types/components/Avatar/index.d.ts +3 -0
  79. package/dist/types/components/Badge/Badge.d.ts +81 -0
  80. package/dist/types/components/Badge/index.d.ts +3 -0
  81. package/dist/types/components/Button/Button.d.ts +117 -0
  82. package/dist/types/components/Button/index.d.ts +3 -0
  83. package/dist/types/components/Card/Card.d.ts +120 -0
  84. package/dist/types/components/Card/index.d.ts +3 -0
  85. package/dist/types/components/Checkbox/Checkbox.d.ts +114 -0
  86. package/dist/types/components/Checkbox/index.d.ts +3 -0
  87. package/dist/types/components/CheckboxGroup/CheckboxGroup.d.ts +121 -0
  88. package/dist/types/components/CheckboxGroup/index.d.ts +3 -0
  89. package/dist/types/components/Chip/Chip.d.ts +91 -0
  90. package/dist/types/components/Chip/index.d.ts +3 -0
  91. package/dist/types/components/Divider/Divider.d.ts +118 -0
  92. package/dist/types/components/Divider/index.d.ts +3 -0
  93. package/dist/types/components/Flex/Flex.d.ts +66 -0
  94. package/dist/types/components/Flex/index.d.ts +3 -0
  95. package/dist/types/components/Grid/Grid.d.ts +156 -0
  96. package/dist/types/components/Grid/index.d.ts +3 -0
  97. package/dist/types/components/Header/Header.d.ts +138 -0
  98. package/dist/types/components/Header/index.d.ts +3 -0
  99. package/dist/types/components/Input/Input.d.ts +129 -0
  100. package/dist/types/components/Input/index.d.ts +3 -0
  101. package/dist/types/components/Menu/Menu.d.ts +114 -0
  102. package/dist/types/components/Menu/index.d.ts +4 -0
  103. package/dist/types/components/Modal/Modal.d.ts +201 -0
  104. package/dist/types/components/Modal/index.d.ts +3 -0
  105. package/dist/types/components/MultiSelect/MultiSelect.d.ts +190 -0
  106. package/dist/types/components/MultiSelect/index.d.ts +3 -0
  107. package/dist/types/components/Radio/Radio.d.ts +105 -0
  108. package/dist/types/components/Radio/index.d.ts +3 -0
  109. package/dist/types/components/RadioGroup/RadioGroup.d.ts +134 -0
  110. package/dist/types/components/RadioGroup/index.d.ts +3 -0
  111. package/dist/types/components/Select/Select.d.ts +169 -0
  112. package/dist/types/components/Select/index.d.ts +3 -0
  113. package/dist/types/components/SideMenu/SideMenu.d.ts +118 -0
  114. package/dist/types/components/SideMenu/index.d.ts +4 -0
  115. package/dist/types/components/Table/Table.d.ts +211 -0
  116. package/dist/types/components/Table/index.d.ts +3 -0
  117. package/dist/types/components/Text/Text.d.ts +160 -0
  118. package/dist/types/components/Text/index.d.ts +3 -0
  119. package/dist/types/components/Toast/Toast.d.ts +56 -0
  120. package/dist/types/components/Toast/ToastContainer.d.ts +6 -0
  121. package/dist/types/components/Toast/index.d.ts +5 -0
  122. package/dist/types/components/Toast/types.d.ts +148 -0
  123. package/dist/types/components/Toast/useToast.d.ts +34 -0
  124. package/dist/types/components/Tooltip/Tooltip.d.ts +108 -0
  125. package/dist/types/components/Tooltip/index.d.ts +3 -0
  126. package/dist/types/hooks/index.d.ts +85 -0
  127. package/dist/types/hooks/useTheme.d.ts +268 -0
  128. package/dist/types/index.d.ts +55 -0
  129. package/dist/types/theme/ThemeProvider.d.ts +39 -0
  130. package/dist/types/theme/cssVariables.d.ts +9 -0
  131. package/dist/types/theme/index.d.ts +6 -0
  132. package/dist/types/theme/tokens.d.ts +258 -0
  133. package/package.json +59 -0
@@ -0,0 +1,98 @@
1
+ import { ReactNode } from 'react';
2
+ export interface AccordionItemProps {
3
+ /** Unique identifier for the accordion item */
4
+ id: string;
5
+ /** The header content for the accordion item */
6
+ header: ReactNode;
7
+ /** The body content for the accordion item */
8
+ children: ReactNode;
9
+ /** Whether this item is disabled */
10
+ disabled?: boolean;
11
+ /** Custom class name for the accordion item */
12
+ className?: string;
13
+ /** Loading state for this specific item */
14
+ loading?: boolean;
15
+ /** Status indicator for the item */
16
+ status?: 'default' | 'success' | 'warning' | 'error' | 'featured';
17
+ /** Custom icon for this specific item (overrides accordion-level icons) */
18
+ icon?: {
19
+ expanded?: React.ReactNode;
20
+ collapsed?: React.ReactNode;
21
+ };
22
+ /** Additional data attributes for testing or analytics */
23
+ dataTestId?: string;
24
+ }
25
+ export interface AccordionProps {
26
+ /** Array of accordion items */
27
+ items?: AccordionItemProps[];
28
+ /** Children accordion items (alternative to items prop) */
29
+ children?: ReactNode;
30
+ /** Whether multiple items can be open at once */
31
+ allowMultiple?: boolean;
32
+ /** Default open items (controlled) */
33
+ defaultOpenItems?: string[];
34
+ /** Open items (uncontrolled) */
35
+ openItems?: string[];
36
+ /** Callback when items are toggled */
37
+ onToggle?: (openItems: string[]) => void;
38
+ /** Visual variant style of the accordion */
39
+ variant?: 'default' | 'bordered' | 'separated' | 'flush';
40
+ /** Size variant of the accordion */
41
+ size?: 'sm' | 'md' | 'lg';
42
+ /** Custom class name */
43
+ className?: string;
44
+ /** Custom styles */
45
+ style?: React.CSSProperties;
46
+ /** Whether to show chevron icons */
47
+ showChevron?: boolean;
48
+ /** Position of the chevron icon */
49
+ chevronPosition?: 'left' | 'right';
50
+ /** Custom icon for expanded state */
51
+ expandedIcon?: React.ReactNode;
52
+ /** Custom icon for collapsed state */
53
+ collapsedIcon?: React.ReactNode;
54
+ /** Icon type preset */
55
+ iconType?: 'chevron' | 'plus-minus' | 'custom';
56
+ /** Whether to show divider lines between items */
57
+ showDivider?: boolean;
58
+ /** Whether items are collapsible (can all be closed) */
59
+ collapsible?: boolean;
60
+ /** Loading state for the entire accordion */
61
+ loading?: boolean;
62
+ /** Disable all accordion interactions */
63
+ disabled?: boolean;
64
+ /** Spacing variant for compact or spacious layouts */
65
+ spacing?: 'compact' | 'default' | 'spacious';
66
+ /** Disable animations for better performance or accessibility */
67
+ disableAnimations?: boolean;
68
+ }
69
+ export interface AccordionItemComponentProps {
70
+ /** The accordion item data */
71
+ item: AccordionItemProps;
72
+ /** Whether this item is open */
73
+ isOpen: boolean;
74
+ /** Function to toggle this item */
75
+ onToggle: () => void;
76
+ /** Variant from parent accordion */
77
+ variant: AccordionProps['variant'];
78
+ /** Size from parent accordion */
79
+ size: AccordionProps['size'];
80
+ /** Whether to show chevron */
81
+ showChevron: boolean;
82
+ /** Chevron position */
83
+ chevronPosition: AccordionProps['chevronPosition'];
84
+ /** Custom icon for expanded state */
85
+ expandedIcon?: React.ReactNode;
86
+ /** Custom icon for collapsed state */
87
+ collapsedIcon?: React.ReactNode;
88
+ /** Icon type preset */
89
+ iconType?: AccordionProps['iconType'];
90
+ /** Loading state from parent accordion */
91
+ loading?: boolean;
92
+ /** Disabled state from parent accordion */
93
+ disabled?: boolean;
94
+ /** Spacing variant from parent accordion */
95
+ spacing?: AccordionProps['spacing'];
96
+ /** Disable animations */
97
+ disableAnimations?: boolean;
98
+ }
@@ -0,0 +1,119 @@
1
+ import React from 'react';
2
+ import './Alert.css';
3
+ export interface AlertProps {
4
+ /**
5
+ * Content of the alert (primary message, can be any ReactNode)
6
+ */
7
+ children?: React.ReactNode;
8
+ /**
9
+ * Alert title
10
+ */
11
+ title?: string;
12
+ /**
13
+ * Alert description - alternative to children for simple text
14
+ */
15
+ description?: string;
16
+ /**
17
+ * Visual variant of the alert
18
+ * @default 'info'
19
+ */
20
+ variant?: 'success' | 'error' | 'warning' | 'info' | 'neutral';
21
+ /**
22
+ * Visual style of the alert
23
+ * @default 'subtle'
24
+ */
25
+ alertStyle?: 'filled' | 'outlined' | 'subtle' | 'left-accent';
26
+ /** Size of the alert. Defaults to theme defaultSize or 'md'. */
27
+ size?: 'sm' | 'md' | 'lg';
28
+ /**
29
+ * Custom icon or false to hide icon
30
+ * If not provided, shows default icon based on variant
31
+ */
32
+ icon?: React.ReactNode | false;
33
+ /**
34
+ * If true, shows close button
35
+ * @default false
36
+ */
37
+ dismissible?: boolean;
38
+ /**
39
+ * Callback fired when alert is dismissed
40
+ */
41
+ onClose?: () => void;
42
+ /**
43
+ * Action element (button or link) displayed on the right
44
+ */
45
+ action?: React.ReactNode;
46
+ /**
47
+ * If true, alert takes full width of container
48
+ * @default false
49
+ */
50
+ fullWidth?: boolean;
51
+ /**
52
+ * Custom class name
53
+ */
54
+ className?: string;
55
+ /**
56
+ * Custom inline styles
57
+ */
58
+ style?: React.CSSProperties;
59
+ /**
60
+ * Role attribute for accessibility
61
+ * @default 'alert'
62
+ */
63
+ role?: string;
64
+ }
65
+ /**
66
+ * Alert component - Displays important messages and notifications
67
+ *
68
+ * A flexible alert component supporting multiple variants, styles, and interactive features.
69
+ * Can display simple messages or complex content with titles, actions, and custom icons.
70
+ *
71
+ * @example
72
+ * Simple alert with children
73
+ * ```tsx
74
+ * <Alert variant="success">
75
+ * Your changes have been saved!
76
+ * </Alert>
77
+ * ```
78
+ *
79
+ * @example
80
+ * Alert with title and description
81
+ * ```tsx
82
+ * <Alert
83
+ * variant="error"
84
+ * title="Error occurred"
85
+ * description="Unable to connect to the server."
86
+ * dismissible
87
+ * onClose={() => console.log('closed')}
88
+ * />
89
+ * ```
90
+ *
91
+ * @example
92
+ * Alert with action button
93
+ * ```tsx
94
+ * <Alert
95
+ * variant="warning"
96
+ * title="Update available"
97
+ * style="left-accent"
98
+ * action={<Button size="small">Update Now</Button>}
99
+ * >
100
+ * A new version is available. Update to get the latest features.
101
+ * </Alert>
102
+ * ```
103
+ *
104
+ * @example
105
+ * Alert with custom icon
106
+ * ```tsx
107
+ * <Alert
108
+ * variant="info"
109
+ * icon={<CustomIcon />}
110
+ * title="Custom notification"
111
+ * >
112
+ * This alert uses a custom icon.
113
+ * </Alert>
114
+ * ```
115
+ */
116
+ declare const Alert: React.ForwardRefExoticComponent<AlertProps & React.RefAttributes<HTMLDivElement>>;
117
+ declare const _default: React.FC<AlertProps & React.RefAttributes<HTMLDivElement>>;
118
+ export default _default;
119
+ export { Alert };
@@ -0,0 +1,3 @@
1
+ export { default as Alert } from './Alert';
2
+ export type { AlertProps } from './Alert';
3
+ export { Alert as AlertComponent } from './Alert';
@@ -0,0 +1,63 @@
1
+ import React from "react";
2
+ import { HTMLAttributes, ImgHTMLAttributes } from "react";
3
+ import './Avatar.css';
4
+ /**
5
+ * Avatar component - Displays user profile image, initials, or fallback
6
+ *
7
+ * The Avatar component supports images, fallback text, different sizes, shapes, and status indicators.
8
+ *
9
+ * @example
10
+ * Basic avatar with image
11
+ * ```tsx
12
+ * <Avatar src="https://randomuser.me/api/portraits/men/1.jpg" alt="John Doe" />
13
+ * ```
14
+ *
15
+ * @example
16
+ * Avatar with fallback text
17
+ * ```tsx
18
+ * <Avatar fallback="JD" />
19
+ * ```
20
+ *
21
+ * @example
22
+ * Different sizes
23
+ * ```tsx
24
+ * <Avatar src="..." size="small" />
25
+ * <Avatar src="..." size="large" />
26
+ * ```
27
+ *
28
+ * @example
29
+ * Square shape
30
+ * ```tsx
31
+ * <Avatar src="..." shape="square" />
32
+ * ```
33
+ *
34
+ * @example
35
+ * Status indicator
36
+ * ```tsx
37
+ * <Avatar
38
+ * src="..."
39
+ * statusIndicator={<span style={{ background: 'green', borderRadius: '50%', width: 12, height: 12, display: 'inline-block' }} />}
40
+ * statusPosition="top-right"
41
+ * />
42
+ * ```
43
+ */
44
+ export interface AvatarProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
45
+ src?: string;
46
+ alt?: string;
47
+ /**
48
+ * Size of the avatar
49
+ * @default theme.defaultSize or 'md'
50
+ */
51
+ size?: 'sm' | 'md' | 'lg';
52
+ shape?: 'circle' | 'square';
53
+ fallback?: string;
54
+ onImageError?: (error: React.SyntheticEvent<HTMLImageElement, Event>) => void;
55
+ onImageLoad?: (event: React.SyntheticEvent<HTMLImageElement, Event>) => void;
56
+ imgProps?: Omit<ImgHTMLAttributes<HTMLImageElement>, 'src' | 'alt' | 'className' | 'onError' | 'onLoad'>;
57
+ statusIndicator?: React.ReactNode;
58
+ statusPosition?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
59
+ }
60
+ declare const Avatar: React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<HTMLDivElement>>;
61
+ declare const _default: React.FC<AvatarProps & React.RefAttributes<HTMLDivElement>>;
62
+ export default _default;
63
+ export { Avatar };
@@ -0,0 +1,3 @@
1
+ export { default as Avatar } from './Avatar';
2
+ export type { AvatarProps } from './Avatar';
3
+ export { Avatar as AvatarComponent } from './Avatar';
@@ -0,0 +1,81 @@
1
+ import React, { HTMLAttributes } from 'react';
2
+ import './Badge.css';
3
+ export interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
4
+ /**
5
+ * Visual variant of the badge
6
+ * @default 'neutral'
7
+ */
8
+ variant?: 'neutral' | 'primary' | 'success' | 'warning' | 'error' | 'info';
9
+ /**
10
+ * Size of the badge
11
+ * @default 'medium'
12
+ */
13
+ size?: 'small' | 'medium' | 'large';
14
+ /**
15
+ * If true, badge will be pill-shaped with rounded ends
16
+ * @default false
17
+ */
18
+ pill?: boolean;
19
+ /**
20
+ * If true, displays a dot indicator before the content
21
+ * Useful for status indicators
22
+ * @default false
23
+ */
24
+ dot?: boolean;
25
+ /**
26
+ * If true, displays the badge with an outline style instead of filled
27
+ * @default false
28
+ */
29
+ outline?: boolean;
30
+ /**
31
+ * Maximum content length before truncation
32
+ * Useful for limiting badge text length
33
+ */
34
+ maxLength?: number;
35
+ /**
36
+ * Icon to display before the badge content
37
+ */
38
+ icon?: React.ReactNode;
39
+ /**
40
+ * Badge content - text, numbers, or custom elements
41
+ */
42
+ children: React.ReactNode;
43
+ /**
44
+ * Callback fired when badge is clicked
45
+ */
46
+ onRemove?: (event: React.MouseEvent<HTMLButtonElement>) => void;
47
+ }
48
+ /**
49
+ * Badge component - Small labels and indicators for status, counts, or categories
50
+ *
51
+ * A versatile badge component that can display status indicators, counts, tags, or any short text
52
+ * with various visual styles and customization options.
53
+ *
54
+ * @example
55
+ * Basic status badges
56
+ * ```tsx
57
+ * <Badge variant="success">Active</Badge>
58
+ * <Badge variant="error" dot>Error</Badge>
59
+ * <Badge variant="primary" pill>NEW</Badge>
60
+ * ```
61
+ *
62
+ * @example
63
+ * With icon and outline
64
+ * ```tsx
65
+ * <Badge variant="info" icon={<InfoIcon />} outline>
66
+ * Information
67
+ * </Badge>
68
+ * ```
69
+ *
70
+ * @example
71
+ * Removable badge
72
+ * ```tsx
73
+ * <Badge variant="primary" onRemove={(e) => handleRemove()}>
74
+ * Tag 1
75
+ * </Badge>
76
+ * ```
77
+ */
78
+ declare const Badge: React.ForwardRefExoticComponent<BadgeProps & React.RefAttributes<HTMLSpanElement>>;
79
+ declare const _default: React.FC<BadgeProps & React.RefAttributes<HTMLSpanElement>>;
80
+ export default _default;
81
+ export { Badge };
@@ -0,0 +1,3 @@
1
+ export { default as Badge } from './Badge';
2
+ export type { BadgeProps } from './Badge';
3
+ export { Badge as BadgeComponent } from './Badge';
@@ -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,3 @@
1
+ export { default as Button } from './Button';
2
+ export type { ButtonProps } from './Button';
3
+ export { Button as ButtonComponent } from './Button';
@@ -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,3 @@
1
+ export { default as Card } from './Card';
2
+ export type { CardProps } from './Card';
3
+ export { Card as CardComponent } from './Card';