@mt-gloss/ui 0.0.2
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/README.md +33 -0
- package/index.css +1 -0
- package/index.d.ts +80 -0
- package/index.js +17560 -0
- package/lib/Accordion.d.ts +103 -0
- package/lib/AsyncLoader.d.ts +41 -0
- package/lib/Badge.d.ts +42 -0
- package/lib/Button.d.ts +73 -0
- package/lib/ButtonGroup.d.ts +72 -0
- package/lib/Card.d.ts +140 -0
- package/lib/Checkbox.d.ts +70 -0
- package/lib/CheckboxGroup.d.ts +162 -0
- package/lib/Chip.d.ts +68 -0
- package/lib/ColorPicker.d.ts +82 -0
- package/lib/DatePicker.d.ts +102 -0
- package/lib/DateRangePicker.d.ts +109 -0
- package/lib/Dropdown.d.ts +65 -0
- package/lib/FileUpload.d.ts +109 -0
- package/lib/Form.d.ts +119 -0
- package/lib/FormField.d.ts +69 -0
- package/lib/Input.d.ts +89 -0
- package/lib/InputGroup.d.ts +59 -0
- package/lib/Link.d.ts +69 -0
- package/lib/MaskedInput.d.ts +95 -0
- package/lib/Menu.d.ts +132 -0
- package/lib/NumberInput.d.ts +81 -0
- package/lib/Radio.d.ts +60 -0
- package/lib/RadioGroup.d.ts +163 -0
- package/lib/RangeSlider.d.ts +105 -0
- package/lib/Rating.d.ts +115 -0
- package/lib/SegmentedControl.d.ts +96 -0
- package/lib/Select.d.ts +205 -0
- package/lib/Slider.d.ts +111 -0
- package/lib/SplitButton.d.ts +84 -0
- package/lib/Textarea.d.ts +59 -0
- package/lib/TimePicker.d.ts +93 -0
- package/lib/Toggle.d.ts +68 -0
- package/lib/Tooltip.d.ts +89 -0
- package/lib/Transition.d.ts +107 -0
- package/lib/composed/AddressSelect.d.ts +132 -0
- package/lib/composed/PasswordInput.d.ts +75 -0
- package/lib/composed/PaymentMethodSelect.d.ts +96 -0
- package/lib/composed/PhoneInput.d.ts +71 -0
- package/lib/composed/SearchInput.d.ts +80 -0
- package/lib/composed/TagInput.d.ts +98 -0
- package/lib/composed/index.d.ts +12 -0
- package/lib/dashboard/ChartControlBar/ChartControlBar.d.ts +45 -0
- package/lib/dashboard/ChartControlBar/FilterInput.d.ts +34 -0
- package/lib/dashboard/ChartControlBar/FusedShape.d.ts +32 -0
- package/lib/dashboard/ChartControlBar/Row1Controls.d.ts +62 -0
- package/lib/dashboard/ChartControlBar/Row2FilterTray.d.ts +62 -0
- package/lib/dashboard/ChartControlBar/fixtures/controlBarStates.d.ts +4 -0
- package/lib/dashboard/ChartControlBar/index.d.ts +8 -0
- package/lib/dashboard/ChartControlBar/types.d.ts +37 -0
- package/lib/dashboard/ChartControlBar/useFilterLayout.d.ts +51 -0
- package/lib/dashboard/FilterChip/FilterChip.d.ts +26 -0
- package/lib/dashboard/FilterChip/fixtures/filterChips.d.ts +11 -0
- package/lib/dashboard/FilterChip/index.d.ts +3 -0
- package/lib/dashboard/FilterChip/types.d.ts +17 -0
- package/lib/dashboard/MetricCard/CardShell.d.ts +22 -0
- package/lib/dashboard/MetricCard/GutterActions.d.ts +56 -0
- package/lib/dashboard/MetricCard/MetricCard.d.ts +33 -0
- package/lib/dashboard/MetricCard/StackedGroupCard.d.ts +43 -0
- package/lib/dashboard/MetricCard/TrendIndicator.d.ts +20 -0
- package/lib/dashboard/MetricCard/fixtures/allVariants.d.ts +6 -0
- package/lib/dashboard/MetricCard/fixtures/sparklineCard.d.ts +5 -0
- package/lib/dashboard/MetricCard/fixtures/standardCard.d.ts +7 -0
- package/lib/dashboard/MetricCard/fixtures/states.d.ts +19 -0
- package/lib/dashboard/MetricCard/index.d.ts +20 -0
- package/lib/dashboard/MetricCard/types.d.ts +109 -0
- package/lib/dashboard/MetricCard/useSlideOutReveal.d.ts +42 -0
- package/lib/dashboard/MetricCard/utils/formatTrend.d.ts +2 -0
- package/lib/dashboard/MetricCard/utils/formatValue.d.ts +2 -0
- package/lib/dashboard/MetricCard/visualizations/BarsBg.d.ts +25 -0
- package/lib/dashboard/MetricCard/visualizations/DonutChart.d.ts +26 -0
- package/lib/dashboard/MetricCard/visualizations/ObjectArrow.d.ts +28 -0
- package/lib/dashboard/MetricCard/visualizations/SparklineBg.d.ts +24 -0
- package/lib/dashboard/MetricCardGrid/MetricCardGrid.d.ts +28 -0
- package/lib/dashboard/MetricCardGrid/fixtures/gridCards.d.ts +3 -0
- package/lib/dashboard/MetricCardGrid/fixtures/layouts.d.ts +7 -0
- package/lib/dashboard/MetricCardGrid/index.d.ts +4 -0
- package/lib/dashboard/MetricCardGrid/types.d.ts +28 -0
- package/lib/dashboard/Skeleton/Skeleton.d.ts +25 -0
- package/lib/dashboard/Skeleton/SkeletonCard.d.ts +20 -0
- package/lib/dashboard/Skeleton/SkeletonChart.d.ts +18 -0
- package/lib/dashboard/Skeleton/SkeletonTable.d.ts +18 -0
- package/lib/dashboard/Skeleton/fixtures/skeletonSamples.d.ts +7 -0
- package/lib/dashboard/Skeleton/index.d.ts +6 -0
- package/lib/dashboard/Skeleton/types.d.ts +55 -0
- package/lib/dashboard/TabGroup/TabGroup.d.ts +27 -0
- package/lib/dashboard/TabGroup/fixtures/tabGroups.d.ts +7 -0
- package/lib/dashboard/TabGroup/index.d.ts +3 -0
- package/lib/dashboard/TabGroup/types.d.ts +22 -0
- package/lib/dashboard/TabbedDataView/TabbedDataView.d.ts +29 -0
- package/lib/dashboard/TabbedDataView/fixtures/tabConfigs.d.ts +9 -0
- package/lib/dashboard/TabbedDataView/index.d.ts +3 -0
- package/lib/dashboard/TabbedDataView/types.d.ts +20 -0
- package/lib/dashboard/TimeFrame/ExpandableChip.d.ts +22 -0
- package/lib/dashboard/TimeFrame/HybridDatePicker.d.ts +24 -0
- package/lib/dashboard/TimeFrame/MarketPresetRow.d.ts +16 -0
- package/lib/dashboard/TimeFrame/MiniCalendar.d.ts +16 -0
- package/lib/dashboard/TimeFrame/TimeFrame.d.ts +21 -0
- package/lib/dashboard/TimeFrame/fixtures/timeFrameSamples.d.ts +17 -0
- package/lib/dashboard/TimeFrame/index.d.ts +14 -0
- package/lib/dashboard/TimeFrame/types.d.ts +202 -0
- package/lib/dashboard/TimeFrame/utils/dateHelpers.d.ts +1 -0
- package/lib/dashboard/TimeFrame/utils/presets.d.ts +1 -0
- package/lib/dashboard/TimeFrame/utils/smartDateFormat.d.ts +1 -0
- package/lib/dashboard/UnifiedBreakdownTable/UnifiedBreakdownTable.d.ts +24 -0
- package/lib/dashboard/UnifiedBreakdownTable/fixtures/columns.d.ts +5 -0
- package/lib/dashboard/UnifiedBreakdownTable/fixtures/itemRows.d.ts +15 -0
- package/lib/dashboard/UnifiedBreakdownTable/fixtures/orderRows.d.ts +15 -0
- package/lib/dashboard/UnifiedBreakdownTable/index.d.ts +7 -0
- package/lib/dashboard/UnifiedBreakdownTable/types.d.ts +61 -0
- package/lib/dashboard/UnifiedContextMenu/UnifiedContextMenu.d.ts +5 -0
- package/lib/dashboard/UnifiedContextMenu/fixtures/menuActions.d.ts +9 -0
- package/lib/dashboard/UnifiedContextMenu/index.d.ts +3 -0
- package/lib/dashboard/UnifiedContextMenu/types.d.ts +130 -0
- package/lib/dashboard/index.d.ts +10 -0
- package/lib/hooks/index.d.ts +3 -0
- package/lib/hooks/useArrowNavigation.d.ts +106 -0
- package/lib/hooks/useFocusReturn.d.ts +26 -0
- package/lib/hooks/useFocusTrap.d.ts +50 -0
- package/lib/patterns/feedback/DestructiveModal.d.ts +31 -0
- package/lib/patterns/feedback/index.d.ts +1 -0
- package/lib/patterns/forms/AddressGroup.d.ts +37 -0
- package/lib/patterns/forms/CreditCardForm.d.ts +41 -0
- package/lib/patterns/forms/LoginForm.d.ts +38 -0
- package/lib/patterns/forms/index.d.ts +3 -0
- package/lib/patterns/index.d.ts +14 -0
- package/lib/patterns/types.d.ts +63 -0
- package/lib/types/icon.d.ts +27 -0
- package/lib/utils/animations.d.ts +60 -0
- package/lib/utils/renderIcon.d.ts +21 -0
- package/package.json +59 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export type AccordionShowCount = 'always' | 'collapsed-only' | 'never';
|
|
3
|
+
export interface AccordionProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
/**
|
|
5
|
+
* Content of the accordion (AccordionItem components)
|
|
6
|
+
*/
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* Additional CSS class names
|
|
10
|
+
*/
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Accordion - container for collapsible sections
|
|
15
|
+
*
|
|
16
|
+
* DOM Structure: `<div class="gloss-accordion">`
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```tsx
|
|
20
|
+
* <Accordion>
|
|
21
|
+
* <AccordionItem defaultOpen>
|
|
22
|
+
* <AccordionTrigger>Section 1</AccordionTrigger>
|
|
23
|
+
* <AccordionContent>Content here</AccordionContent>
|
|
24
|
+
* </AccordionItem>
|
|
25
|
+
* </Accordion>
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare const Accordion: React.ForwardRefExoticComponent<AccordionProps & React.RefAttributes<HTMLDivElement>>;
|
|
29
|
+
export interface AccordionItemProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
30
|
+
/**
|
|
31
|
+
* Whether the item is expanded by default (uncontrolled)
|
|
32
|
+
*/
|
|
33
|
+
defaultOpen?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Controlled open state
|
|
36
|
+
*/
|
|
37
|
+
open?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Callback when open state changes
|
|
40
|
+
*/
|
|
41
|
+
onOpenChange?: (open: boolean) => void;
|
|
42
|
+
/**
|
|
43
|
+
* When to show the item count badge
|
|
44
|
+
* - 'always': Always show count
|
|
45
|
+
* - 'collapsed-only': Show count only when collapsed (default)
|
|
46
|
+
* - 'never': Never show count
|
|
47
|
+
*/
|
|
48
|
+
showCount?: AccordionShowCount;
|
|
49
|
+
/**
|
|
50
|
+
* Whether the item is disabled
|
|
51
|
+
*/
|
|
52
|
+
disabled?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Content of the item (AccordionTrigger and AccordionContent)
|
|
55
|
+
*/
|
|
56
|
+
children: React.ReactNode;
|
|
57
|
+
/**
|
|
58
|
+
* Additional CSS class names
|
|
59
|
+
*/
|
|
60
|
+
className?: string;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* AccordionItem - individual collapsible section
|
|
64
|
+
*
|
|
65
|
+
* DOM Structure: `<div class="gloss-accordion-item">`
|
|
66
|
+
*/
|
|
67
|
+
export declare const AccordionItem: React.ForwardRefExoticComponent<AccordionItemProps & React.RefAttributes<HTMLDivElement>>;
|
|
68
|
+
export interface AccordionTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
69
|
+
/**
|
|
70
|
+
* Icon to display on the left side
|
|
71
|
+
*/
|
|
72
|
+
icon?: React.ReactNode;
|
|
73
|
+
/**
|
|
74
|
+
* Content of the trigger (label text)
|
|
75
|
+
*/
|
|
76
|
+
children: React.ReactNode;
|
|
77
|
+
/**
|
|
78
|
+
* Additional CSS class names
|
|
79
|
+
*/
|
|
80
|
+
className?: string;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* AccordionTrigger - clickable header that toggles the accordion
|
|
84
|
+
*
|
|
85
|
+
* DOM Structure: `<button class="gloss-accordion-trigger">`
|
|
86
|
+
*/
|
|
87
|
+
export declare const AccordionTrigger: React.ForwardRefExoticComponent<AccordionTriggerProps & React.RefAttributes<HTMLButtonElement>>;
|
|
88
|
+
export interface AccordionContentProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
89
|
+
/**
|
|
90
|
+
* Content to display when expanded
|
|
91
|
+
*/
|
|
92
|
+
children: React.ReactNode;
|
|
93
|
+
/**
|
|
94
|
+
* Additional CSS class names
|
|
95
|
+
*/
|
|
96
|
+
className?: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* AccordionContent - collapsible content area
|
|
100
|
+
*
|
|
101
|
+
* DOM Structure: `<div class="gloss-accordion-content">`
|
|
102
|
+
*/
|
|
103
|
+
export declare const AccordionContent: React.ForwardRefExoticComponent<AccordionContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface AsyncLoaderProps {
|
|
3
|
+
/**
|
|
4
|
+
* Color variant for the loading animation
|
|
5
|
+
* @default 'blue'
|
|
6
|
+
*/
|
|
7
|
+
color?: 'blue' | 'green';
|
|
8
|
+
/**
|
|
9
|
+
* Whether the loading animation is active
|
|
10
|
+
*/
|
|
11
|
+
isLoading?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Content to wrap (typically an Input component)
|
|
14
|
+
*/
|
|
15
|
+
children?: React.ReactNode;
|
|
16
|
+
/**
|
|
17
|
+
* Additional CSS class names
|
|
18
|
+
*/
|
|
19
|
+
className?: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* AsyncLoader component - perimeter-tracing SVG animation wrapper
|
|
23
|
+
*
|
|
24
|
+
* DOM Structure:
|
|
25
|
+
* - `.gloss-async` wrapper (with `--loading` and `--{color}` modifiers)
|
|
26
|
+
* - `.gloss-async__container` containing two SVG elements
|
|
27
|
+
* - `.gloss-async__rect` (static background rect)
|
|
28
|
+
* - `.gloss-async__chaser` (animated chasing rect)
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```tsx
|
|
32
|
+
* <AsyncLoader isLoading color="blue">
|
|
33
|
+
* <Input value="checking..." />
|
|
34
|
+
* </AsyncLoader>
|
|
35
|
+
*
|
|
36
|
+
* <AsyncLoader isLoading color="green">
|
|
37
|
+
* <Input status="success" value="verified" />
|
|
38
|
+
* </AsyncLoader>
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
export declare const AsyncLoader: React.ForwardRefExoticComponent<AsyncLoaderProps & React.RefAttributes<HTMLDivElement>>;
|
package/lib/Badge.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export type BadgeVariant = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info';
|
|
3
|
+
export type BadgeSize = 'sm' | 'md' | 'lg';
|
|
4
|
+
export interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {
|
|
5
|
+
/**
|
|
6
|
+
* Color variant of the badge
|
|
7
|
+
*/
|
|
8
|
+
variant?: BadgeVariant;
|
|
9
|
+
/**
|
|
10
|
+
* Size of the badge
|
|
11
|
+
*/
|
|
12
|
+
size?: BadgeSize;
|
|
13
|
+
/**
|
|
14
|
+
* Whether to display as a small dot (ignores children)
|
|
15
|
+
*/
|
|
16
|
+
dot?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Whether the badge should have a subtle/soft appearance
|
|
19
|
+
*/
|
|
20
|
+
soft?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Content of the badge
|
|
23
|
+
*/
|
|
24
|
+
children?: React.ReactNode;
|
|
25
|
+
/**
|
|
26
|
+
* Additional CSS class names
|
|
27
|
+
*/
|
|
28
|
+
className?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Badge component - small status indicator for labeling and categorization
|
|
32
|
+
*
|
|
33
|
+
* DOM Structure: `<span class="gloss-badge">`
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```tsx
|
|
37
|
+
* <Badge variant="success">Active</Badge>
|
|
38
|
+
* <Badge variant="error" dot />
|
|
39
|
+
* <Badge variant="primary" size="lg">New</Badge>
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare const Badge: React.ForwardRefExoticComponent<BadgeProps & React.RefAttributes<HTMLSpanElement>>;
|
package/lib/Button.d.ts
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { IconSlotProps } from './types/icon';
|
|
3
|
+
import { TooltipPlacement } from './Tooltip';
|
|
4
|
+
export type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'outline' | 'danger' | 'danger-outline';
|
|
5
|
+
export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, IconSlotProps {
|
|
6
|
+
/**
|
|
7
|
+
* Visual style variant
|
|
8
|
+
* @default 'primary'
|
|
9
|
+
*/
|
|
10
|
+
variant?: ButtonVariant;
|
|
11
|
+
/**
|
|
12
|
+
* Button size
|
|
13
|
+
* @default 'md'
|
|
14
|
+
*/
|
|
15
|
+
size?: 'sm' | 'md' | 'lg';
|
|
16
|
+
/**
|
|
17
|
+
* Loading state - shows spinner and disables interaction
|
|
18
|
+
*/
|
|
19
|
+
isLoading?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Disabled state
|
|
22
|
+
*/
|
|
23
|
+
disabled?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Error state - shows error icon and makes button clickable to fix errors
|
|
26
|
+
* If string, displays as tooltip. If true, shows icon without tooltip.
|
|
27
|
+
*/
|
|
28
|
+
error?: string | boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Renders button as icon-only (square aspect ratio)
|
|
31
|
+
* Requires leftIcon or rightIcon, and aria-label for accessibility
|
|
32
|
+
*/
|
|
33
|
+
iconOnly?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Makes button full width of container
|
|
36
|
+
*/
|
|
37
|
+
fullWidth?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Tooltip content - wraps button with Tooltip component
|
|
40
|
+
*/
|
|
41
|
+
tooltip?: React.ReactNode;
|
|
42
|
+
/**
|
|
43
|
+
* Tooltip placement
|
|
44
|
+
* @default 'top'
|
|
45
|
+
*/
|
|
46
|
+
tooltipPlacement?: TooltipPlacement;
|
|
47
|
+
/**
|
|
48
|
+
* Delay before showing tooltip (ms)
|
|
49
|
+
* @default 200
|
|
50
|
+
*/
|
|
51
|
+
tooltipDelay?: number;
|
|
52
|
+
/**
|
|
53
|
+
* Content of the button
|
|
54
|
+
*/
|
|
55
|
+
children?: React.ReactNode;
|
|
56
|
+
/**
|
|
57
|
+
* Additional CSS class names
|
|
58
|
+
*/
|
|
59
|
+
className?: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Button component with tactile feedback and multiple variants
|
|
63
|
+
*
|
|
64
|
+
* DOM Structure: `<button class="gloss-btn gloss-btn--{variant}">`
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```tsx
|
|
68
|
+
* <Button variant="primary">Save</Button>
|
|
69
|
+
* <Button variant="secondary" disabled>Cancel</Button>
|
|
70
|
+
* <Button variant="ghost" isLoading>Loading...</Button>
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { ButtonVariant } from './Button';
|
|
3
|
+
export interface ButtonGroupProps {
|
|
4
|
+
/**
|
|
5
|
+
* Button elements to group
|
|
6
|
+
*/
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* Orientation of the group
|
|
10
|
+
* @default 'horizontal'
|
|
11
|
+
*/
|
|
12
|
+
orientation?: 'horizontal' | 'vertical';
|
|
13
|
+
/**
|
|
14
|
+
* Visual style for connected buttons (removes gaps, merges borders)
|
|
15
|
+
* @default false
|
|
16
|
+
*/
|
|
17
|
+
attached?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Size applied to all child buttons via context
|
|
20
|
+
*/
|
|
21
|
+
size?: 'sm' | 'md' | 'lg';
|
|
22
|
+
/**
|
|
23
|
+
* Variant applied to all child buttons via context
|
|
24
|
+
*/
|
|
25
|
+
variant?: ButtonVariant;
|
|
26
|
+
/**
|
|
27
|
+
* Full width distribution - buttons share available space equally
|
|
28
|
+
* @default false
|
|
29
|
+
*/
|
|
30
|
+
fullWidth?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Gap between buttons when not attached
|
|
33
|
+
* @default 'md'
|
|
34
|
+
*/
|
|
35
|
+
gap?: 'none' | 'sm' | 'md' | 'lg';
|
|
36
|
+
/**
|
|
37
|
+
* Additional CSS class names
|
|
38
|
+
*/
|
|
39
|
+
className?: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Context for sharing ButtonGroup props with child buttons
|
|
43
|
+
*/
|
|
44
|
+
export interface ButtonGroupContextValue {
|
|
45
|
+
size?: 'sm' | 'md' | 'lg';
|
|
46
|
+
variant?: ButtonVariant;
|
|
47
|
+
isInGroup: boolean;
|
|
48
|
+
}
|
|
49
|
+
export declare const ButtonGroupContext: React.Context<ButtonGroupContextValue>;
|
|
50
|
+
/**
|
|
51
|
+
* ButtonGroup component for grouping related buttons
|
|
52
|
+
*
|
|
53
|
+
* DOM Structure: `<div class="gloss-btn-group">`
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```tsx
|
|
57
|
+
* // Attached button group
|
|
58
|
+
* <ButtonGroup attached>
|
|
59
|
+
* <Button>Left</Button>
|
|
60
|
+
* <Button>Center</Button>
|
|
61
|
+
* <Button>Right</Button>
|
|
62
|
+
* </ButtonGroup>
|
|
63
|
+
*
|
|
64
|
+
* // Vertical button group
|
|
65
|
+
* <ButtonGroup orientation="vertical" variant="secondary">
|
|
66
|
+
* <Button>Option 1</Button>
|
|
67
|
+
* <Button>Option 2</Button>
|
|
68
|
+
* <Button>Option 3</Button>
|
|
69
|
+
* </ButtonGroup>
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export declare const ButtonGroup: React.ForwardRefExoticComponent<ButtonGroupProps & React.RefAttributes<HTMLDivElement>>;
|
package/lib/Card.d.ts
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export type CardVariant = 'elevated' | 'outlined' | 'filled';
|
|
3
|
+
export type CardSize = 'sm' | 'md' | 'lg';
|
|
4
|
+
export type CardPadding = 'none' | 'sm' | 'md' | 'lg';
|
|
5
|
+
export interface CardProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
6
|
+
/**
|
|
7
|
+
* Visual style variant
|
|
8
|
+
* - elevated: Default style with shadow (default)
|
|
9
|
+
* - outlined: Border-focused, no shadow
|
|
10
|
+
* - filled: Subtle background fill
|
|
11
|
+
*/
|
|
12
|
+
variant?: CardVariant;
|
|
13
|
+
/**
|
|
14
|
+
* Size of the card (affects padding)
|
|
15
|
+
*/
|
|
16
|
+
size?: CardSize;
|
|
17
|
+
/**
|
|
18
|
+
* Whether the card should have interactive hover effects
|
|
19
|
+
*/
|
|
20
|
+
interactive?: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Whether the card is in a selected state
|
|
23
|
+
*/
|
|
24
|
+
selected?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Content of the card
|
|
27
|
+
*/
|
|
28
|
+
children?: React.ReactNode;
|
|
29
|
+
/**
|
|
30
|
+
* Additional CSS class names
|
|
31
|
+
*/
|
|
32
|
+
className?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Card component - flexible container for grouping related content
|
|
36
|
+
*
|
|
37
|
+
* DOM Structure: `<div class="gloss-card">`
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```tsx
|
|
41
|
+
* <Card variant="elevated" interactive>
|
|
42
|
+
* <CardHeader>
|
|
43
|
+
* <CardTitle>Title</CardTitle>
|
|
44
|
+
* </CardHeader>
|
|
45
|
+
* <CardBody>Content here</CardBody>
|
|
46
|
+
* <CardFooter>Actions</CardFooter>
|
|
47
|
+
* </Card>
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare const Card: React.ForwardRefExoticComponent<CardProps & React.RefAttributes<HTMLDivElement>>;
|
|
51
|
+
export interface CardMediaProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
52
|
+
/**
|
|
53
|
+
* Image source URL
|
|
54
|
+
*/
|
|
55
|
+
src?: string;
|
|
56
|
+
/**
|
|
57
|
+
* Alt text for the image
|
|
58
|
+
*/
|
|
59
|
+
alt?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Height of the media container
|
|
62
|
+
*/
|
|
63
|
+
height?: number | string;
|
|
64
|
+
children?: React.ReactNode;
|
|
65
|
+
className?: string;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* CardMedia - media/image section of a card
|
|
69
|
+
*
|
|
70
|
+
* DOM Structure: `<div class="gloss-card__media">`
|
|
71
|
+
*/
|
|
72
|
+
export declare const CardMedia: React.ForwardRefExoticComponent<CardMediaProps & React.RefAttributes<HTMLDivElement>>;
|
|
73
|
+
export interface CardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
74
|
+
children?: React.ReactNode;
|
|
75
|
+
className?: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* CardHeader - header section of a card
|
|
79
|
+
*
|
|
80
|
+
* DOM Structure: `<div class="gloss-card__header">`
|
|
81
|
+
*/
|
|
82
|
+
export declare const CardHeader: React.ForwardRefExoticComponent<CardHeaderProps & React.RefAttributes<HTMLDivElement>>;
|
|
83
|
+
export interface CardTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {
|
|
84
|
+
/**
|
|
85
|
+
* HTML heading level (h1-h6)
|
|
86
|
+
*/
|
|
87
|
+
as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
|
|
88
|
+
children?: React.ReactNode;
|
|
89
|
+
className?: string;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* CardTitle - title element for card headers
|
|
93
|
+
*
|
|
94
|
+
* DOM Structure: `<h3 class="gloss-card__title">`
|
|
95
|
+
*/
|
|
96
|
+
export declare const CardTitle: React.ForwardRefExoticComponent<CardTitleProps & React.RefAttributes<HTMLHeadingElement>>;
|
|
97
|
+
export interface CardSubtitleProps extends React.HTMLAttributes<HTMLParagraphElement> {
|
|
98
|
+
children?: React.ReactNode;
|
|
99
|
+
className?: string;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* CardSubtitle - subtitle element for card headers
|
|
103
|
+
*
|
|
104
|
+
* DOM Structure: `<p class="gloss-card__subtitle">`
|
|
105
|
+
*/
|
|
106
|
+
export declare const CardSubtitle: React.ForwardRefExoticComponent<CardSubtitleProps & React.RefAttributes<HTMLParagraphElement>>;
|
|
107
|
+
export interface CardBodyProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
108
|
+
children?: React.ReactNode;
|
|
109
|
+
className?: string;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* CardBody - main content section of a card
|
|
113
|
+
*
|
|
114
|
+
* DOM Structure: `<div class="gloss-card__body">`
|
|
115
|
+
*/
|
|
116
|
+
export declare const CardBody: React.ForwardRefExoticComponent<CardBodyProps & React.RefAttributes<HTMLDivElement>>;
|
|
117
|
+
export interface CardActionsProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
118
|
+
/**
|
|
119
|
+
* Alignment of actions
|
|
120
|
+
*/
|
|
121
|
+
align?: 'start' | 'center' | 'end' | 'between';
|
|
122
|
+
children?: React.ReactNode;
|
|
123
|
+
className?: string;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* CardActions - inline action area (different from Footer, no background)
|
|
127
|
+
*
|
|
128
|
+
* DOM Structure: `<div class="gloss-card__actions">`
|
|
129
|
+
*/
|
|
130
|
+
export declare const CardActions: React.ForwardRefExoticComponent<CardActionsProps & React.RefAttributes<HTMLDivElement>>;
|
|
131
|
+
export interface CardFooterProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
132
|
+
children?: React.ReactNode;
|
|
133
|
+
className?: string;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* CardFooter - footer/action section of a card (with background)
|
|
137
|
+
*
|
|
138
|
+
* DOM Structure: `<div class="gloss-card__footer">`
|
|
139
|
+
*/
|
|
140
|
+
export declare const CardFooter: React.ForwardRefExoticComponent<CardFooterProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {
|
|
3
|
+
/**
|
|
4
|
+
* Whether the checkbox is checked (controlled)
|
|
5
|
+
*/
|
|
6
|
+
checked?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Default checked state (uncontrolled)
|
|
9
|
+
*/
|
|
10
|
+
defaultChecked?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Whether the checkbox is in an indeterminate state
|
|
13
|
+
* (represents a partially-selected parent of a group)
|
|
14
|
+
*/
|
|
15
|
+
indeterminate?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Callback when checked state changes
|
|
18
|
+
*/
|
|
19
|
+
onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
20
|
+
/**
|
|
21
|
+
* Callback with just the boolean value (convenience)
|
|
22
|
+
*/
|
|
23
|
+
onCheckedChange?: (checked: boolean) => void;
|
|
24
|
+
/**
|
|
25
|
+
* Label text displayed next to the checkbox
|
|
26
|
+
*/
|
|
27
|
+
label?: React.ReactNode;
|
|
28
|
+
/**
|
|
29
|
+
* Helper text displayed below the checkbox
|
|
30
|
+
*/
|
|
31
|
+
helperText?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Validation/status state
|
|
34
|
+
* @default 'default'
|
|
35
|
+
*/
|
|
36
|
+
status?: 'default' | 'success' | 'error';
|
|
37
|
+
/**
|
|
38
|
+
* Whether the field is required
|
|
39
|
+
*/
|
|
40
|
+
required?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Size of the checkbox
|
|
43
|
+
* @default 'md'
|
|
44
|
+
*/
|
|
45
|
+
size?: 'sm' | 'md' | 'lg';
|
|
46
|
+
/**
|
|
47
|
+
* Position of the label relative to the checkbox
|
|
48
|
+
* @default 'right'
|
|
49
|
+
*/
|
|
50
|
+
labelPosition?: 'left' | 'right';
|
|
51
|
+
/**
|
|
52
|
+
* Additional CSS class names
|
|
53
|
+
*/
|
|
54
|
+
className?: string;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Checkbox component for boolean input with label support
|
|
58
|
+
*
|
|
59
|
+
* Supports controlled/uncontrolled modes, indeterminate state, and form integration.
|
|
60
|
+
* Uses convex physics - checkbox elevates slightly on hover.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```tsx
|
|
64
|
+
* <Checkbox label="Accept terms" />
|
|
65
|
+
* <Checkbox label="Subscribe" defaultChecked />
|
|
66
|
+
* <Checkbox label="Select all" indeterminate />
|
|
67
|
+
* <Checkbox label="Agree" status="error" helperText="Required" />
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export declare const Checkbox: React.ForwardRefExoticComponent<CheckboxProps & React.RefAttributes<HTMLInputElement>>;
|