@dimasbaguspm/versaur 0.0.48 → 0.0.49
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/dist/assets/styles.css +14 -6
- package/dist/js/forms/index.js +12 -14
- package/dist/js/image-rectangle-K9jmTTED.js +2607 -0
- package/dist/js/index.js +66 -68
- package/dist/js/layouts/index.js +8 -9
- package/dist/js/navigation/index.js +1 -1
- package/dist/js/overlays/index.js +2 -2
- package/dist/js/primitive/index.js +21 -20
- package/dist/js/tabs-I4n6MLAv.js +210 -0
- package/dist/js/time-picker-input-jJBtyikv.js +1562 -0
- package/dist/js/{tooltip-D6fUigp2.js → tooltip-nZW9TUz3.js} +293 -297
- package/dist/js/{top-bar-Dx0JVXms.js → top-bar-BMw3gFYA.js} +292 -247
- package/dist/types/forms/checkbox-input/checkbox-input.d.ts +1 -1
- package/dist/types/forms/checkbox-input/types.d.ts +11 -14
- package/dist/types/forms/chip-multiple-input/chip-multiple-input.atoms.d.ts +2 -2
- package/dist/types/forms/chip-multiple-input/chip-multiple-input.d.ts +1 -1
- package/dist/types/forms/chip-multiple-input/types.d.ts +15 -14
- package/dist/types/forms/chip-single-input/chip-single-input.atoms.d.ts +1 -1
- package/dist/types/forms/chip-single-input/chip-single-input.d.ts +1 -1
- package/dist/types/forms/chip-single-input/types.d.ts +15 -14
- package/dist/types/forms/date-single-picker-input/types.d.ts +10 -0
- package/dist/types/forms/index.d.ts +0 -2
- package/dist/types/forms/pin-field/pin-field.d.ts +2 -2
- package/dist/types/forms/pin-field/types.d.ts +16 -28
- package/dist/types/forms/select-input/index.d.ts +1 -1
- package/dist/types/forms/select-input/select-input.atoms.d.ts +16 -0
- package/dist/types/forms/select-input/select-input.d.ts +4 -7
- package/dist/types/forms/select-input/types.d.ts +32 -9
- package/dist/types/forms/selectable-multiple-input/selectable-multiple-input.d.ts +1 -1
- package/dist/types/forms/selectable-multiple-input/types.d.ts +20 -3
- package/dist/types/forms/selectable-single-input/selectable-single-input.d.ts +1 -1
- package/dist/types/forms/selectable-single-input/types.d.ts +20 -3
- package/dist/types/forms/switch-input/switch-input.atoms.d.ts +7 -8
- package/dist/types/forms/switch-input/switch-input.d.ts +5 -1
- package/dist/types/forms/switch-input/types.d.ts +10 -33
- package/dist/types/forms/text-input/text-input.d.ts +2 -2
- package/dist/types/forms/text-input/types.d.ts +0 -7
- package/dist/types/forms/textarea-input/textarea-input.d.ts +3 -3
- package/dist/types/forms/textarea-input/types.d.ts +33 -18
- package/dist/types/layouts/index.d.ts +1 -2
- package/dist/types/layouts/page-content/index.d.ts +1 -1
- package/dist/types/layouts/page-content/page-content.d.ts +5 -11
- package/dist/types/layouts/page-content/types.d.ts +29 -9
- package/dist/types/layouts/page-header/types.d.ts +13 -0
- package/dist/types/navigation/tabs/tabs.atoms.d.ts +3 -2
- package/dist/types/navigation/tabs/types.d.ts +5 -13
- package/dist/types/navigation/tabs/use-tab-indicator.d.ts +8 -8
- package/dist/types/overlays/drawer/drawer.atoms.d.ts +18 -8
- package/dist/types/overlays/drawer/drawer.d.ts +5 -5
- package/dist/types/overlays/drawer/types.d.ts +11 -15
- package/dist/types/primitive/button/button.d.ts +5 -0
- package/dist/types/primitive/button/types.d.ts +24 -11
- package/dist/types/primitive/button-anchor/button-anchor.d.ts +9 -0
- package/dist/types/primitive/button-anchor/index.d.ts +2 -0
- package/dist/types/primitive/button-anchor/types.d.ts +35 -0
- package/dist/types/primitive/button-icon/button-icon.d.ts +6 -0
- package/dist/types/primitive/button-icon/types.d.ts +21 -10
- package/dist/types/primitive/filter-chip/types.d.ts +0 -10
- package/dist/types/primitive/index.d.ts +1 -0
- package/dist/types/templates/pin-verifier-drawer/types.d.ts +0 -5
- package/dist/utils/enforce-subpath-import.js +1 -3
- package/package.json +1 -1
- package/dist/js/image-rectangle-B4nXH4Q5.js +0 -2581
- package/dist/js/tabs-BAzThVka.js +0 -291
- package/dist/js/time-picker-input-JBEgDV2V.js +0 -2049
- package/dist/types/forms/segment-multiple-input/index.d.ts +0 -2
- package/dist/types/forms/segment-multiple-input/segment-multiple-input.atoms.d.ts +0 -12
- package/dist/types/forms/segment-multiple-input/segment-multiple-input.d.ts +0 -7
- package/dist/types/forms/segment-multiple-input/types.d.ts +0 -55
- package/dist/types/forms/segment-single-input/index.d.ts +0 -2
- package/dist/types/forms/segment-single-input/segment-single-input.atoms.d.ts +0 -11
- package/dist/types/forms/segment-single-input/segment-single-input.d.ts +0 -7
- package/dist/types/forms/segment-single-input/types.d.ts +0 -55
- package/dist/types/layouts/page-layout/index.d.ts +0 -2
- package/dist/types/layouts/page-layout/page-layout.d.ts +0 -8
- package/dist/types/layouts/page-layout/types.d.ts +0 -20
|
@@ -3,8 +3,8 @@ import { TextAreaInputProps } from './types';
|
|
|
3
3
|
/**
|
|
4
4
|
* TextAreaInput component for Versaur UI
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* Uses contentEditable div for robust multi-line text input with better control
|
|
7
|
+
* Provides error states, disabled, and readOnly support
|
|
8
8
|
* Follows browser standards and accessibility best practices
|
|
9
9
|
*/
|
|
10
|
-
export declare const TextAreaInput: React.ForwardRefExoticComponent<TextAreaInputProps & React.RefAttributes<
|
|
10
|
+
export declare const TextAreaInput: React.ForwardRefExoticComponent<TextAreaInputProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -1,15 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { HTMLAttributes, ReactNode } from 'react';
|
|
2
2
|
/**
|
|
3
3
|
* Props for the TextAreaInput component
|
|
4
4
|
*/
|
|
5
|
-
export interface TextAreaInputProps extends Omit<
|
|
6
|
-
/**
|
|
7
|
-
* Visual style variant supporting Versaur color system
|
|
8
|
-
* Core variants: primary (coral), secondary (sage), tertiary (mist), ghost (slate), neutral (light gray)
|
|
9
|
-
* Semantic variants: success, info, warning, danger
|
|
10
|
-
* Each variant supports outline form for flexible design expression
|
|
11
|
-
*/
|
|
12
|
-
variant?: 'primary' | 'primary-outline' | 'secondary' | 'secondary-outline' | 'tertiary' | 'tertiary-outline' | 'ghost' | 'ghost-outline' | 'neutral' | 'neutral-outline' | 'success' | 'success-outline' | 'info' | 'info-outline' | 'warning' | 'warning-outline' | 'danger' | 'danger-outline';
|
|
5
|
+
export interface TextAreaInputProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'children' | 'defaultValue'> {
|
|
13
6
|
/**
|
|
14
7
|
* Label text to display above the textarea
|
|
15
8
|
*/
|
|
@@ -23,18 +16,40 @@ export interface TextAreaInputProps extends Omit<TextareaHTMLAttributes<HTMLText
|
|
|
23
16
|
*/
|
|
24
17
|
error?: ReactNode;
|
|
25
18
|
/**
|
|
26
|
-
*
|
|
19
|
+
* The current value of the textarea (for controlled components)
|
|
20
|
+
*/
|
|
21
|
+
value?: string;
|
|
22
|
+
/**
|
|
23
|
+
* The default value for uncontrolled components
|
|
24
|
+
*/
|
|
25
|
+
defaultValue?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Callback fired when the content changes
|
|
28
|
+
*/
|
|
29
|
+
onChange?: (value: string) => void;
|
|
30
|
+
/**
|
|
31
|
+
* Whether the textarea is disabled
|
|
32
|
+
*/
|
|
33
|
+
disabled?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Whether the textarea is read-only
|
|
36
|
+
*/
|
|
37
|
+
readOnly?: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Placeholder text to display when empty
|
|
40
|
+
*/
|
|
41
|
+
placeholder?: string;
|
|
42
|
+
/**
|
|
43
|
+
* Name attribute for form submission
|
|
27
44
|
*/
|
|
28
|
-
|
|
45
|
+
name?: string;
|
|
29
46
|
/**
|
|
30
|
-
*
|
|
31
|
-
*
|
|
47
|
+
* Number of rows (height in rem units)
|
|
48
|
+
* @default 3
|
|
32
49
|
*/
|
|
33
|
-
|
|
50
|
+
row?: number;
|
|
34
51
|
/**
|
|
35
|
-
*
|
|
36
|
-
* 'content' - Auto-resize to fit content (ignores maxRows)
|
|
37
|
-
* 'fixed' - Fixed size with manual resize handle (respects minRows/maxRows)
|
|
52
|
+
* Whether the textarea is required
|
|
38
53
|
*/
|
|
39
|
-
|
|
54
|
+
required?: boolean;
|
|
40
55
|
}
|
|
@@ -3,9 +3,8 @@ export * from './bottom-bar';
|
|
|
3
3
|
export * from './badge-group';
|
|
4
4
|
export * from './button-group';
|
|
5
5
|
export * from './filter-chip-group';
|
|
6
|
-
export * from './page-content';
|
|
7
6
|
export * from './page-header';
|
|
8
|
-
export * from './page-
|
|
7
|
+
export * from './page-content';
|
|
9
8
|
export * from './page-loader';
|
|
10
9
|
export * from './form-layout';
|
|
11
10
|
export * from './side-bar';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { PageContent } from './page-content';
|
|
2
|
-
export type
|
|
2
|
+
export type * from './types';
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
import { PageContentProps } from './types';
|
|
2
|
+
import * as React from 'react';
|
|
2
3
|
/**
|
|
3
|
-
* PageContent
|
|
4
|
+
* PageContent component serves as a parent wrapper for main content
|
|
5
|
+
* Sits in the body region or below the page header
|
|
4
6
|
*
|
|
5
|
-
*
|
|
6
|
-
* component, with additional vertical padding for proper content separation.
|
|
7
|
-
* Designed to be used as a sibling to PageHeader for consistent page layouts.
|
|
8
|
-
*
|
|
9
|
-
* Key features:
|
|
10
|
-
* - Horizontal padding matches page-header (px-4 sm:px-6)
|
|
11
|
-
* - Additional vertical padding for content separation (py-6 sm:py-8)
|
|
12
|
-
* - Mobile-first responsive design
|
|
13
|
-
* - Full width container
|
|
7
|
+
* @group Layout
|
|
14
8
|
*/
|
|
15
|
-
export declare const PageContent:
|
|
9
|
+
export declare const PageContent: React.ForwardRefExoticComponent<PageContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -1,14 +1,34 @@
|
|
|
1
|
-
import { ReactNode, HTMLAttributes } from 'react';
|
|
2
1
|
/**
|
|
3
|
-
* Props for PageContent
|
|
4
|
-
*
|
|
5
|
-
* A layout component that provides consistent horizontal spacing
|
|
6
|
-
* matching the page-header component, with additional vertical
|
|
7
|
-
* padding for content separation
|
|
2
|
+
* Props for the PageContent component
|
|
8
3
|
*/
|
|
9
|
-
export interface PageContentProps extends HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
export interface PageContentProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
10
5
|
/**
|
|
11
|
-
*
|
|
6
|
+
* Size determines the max-width and padding
|
|
7
|
+
* - 'fluid': No padding, full viewport width
|
|
8
|
+
* - 'wide': Container for desktop screens (centered)
|
|
9
|
+
* - 'narrow': Container for mobile screens (centered)
|
|
12
10
|
*/
|
|
13
|
-
|
|
11
|
+
size?: 'fluid' | 'wide' | 'narrow';
|
|
12
|
+
/**
|
|
13
|
+
* Template defines the column layout structure
|
|
14
|
+
* - 'single-column': Single centered column
|
|
15
|
+
* - 'two-column': Two equal columns
|
|
16
|
+
* - 'two-column-asymmetric-left': Two columns with left column wider
|
|
17
|
+
* - 'two-column-asymmetric-right': Two columns with right column wider
|
|
18
|
+
*/
|
|
19
|
+
template?: 'single-column' | 'two-column' | 'two-column-asymmetric-left' | 'two-column-asymmetric-right';
|
|
20
|
+
/**
|
|
21
|
+
* Background color of the layout
|
|
22
|
+
* - 'white': White background
|
|
23
|
+
* - 'gray': Gray background
|
|
24
|
+
*/
|
|
25
|
+
backgroundColor?: 'white' | 'gray';
|
|
26
|
+
/**
|
|
27
|
+
* Content to render inside the layout
|
|
28
|
+
*/
|
|
29
|
+
children: React.ReactNode;
|
|
30
|
+
/**
|
|
31
|
+
* Additional class names to apply to the root element
|
|
32
|
+
*/
|
|
33
|
+
className?: string;
|
|
14
34
|
}
|
|
@@ -4,6 +4,19 @@ import { ReactNode, HTMLAttributes } from 'react';
|
|
|
4
4
|
* Props for PageHeader main container
|
|
5
5
|
*/
|
|
6
6
|
export interface PageHeaderProps extends HTMLAttributes<HTMLElement> {
|
|
7
|
+
/**
|
|
8
|
+
* Size determines the max-width and padding
|
|
9
|
+
* - 'fluid': No padding, full viewport width
|
|
10
|
+
* - 'wide': Container for desktop screens (centered)
|
|
11
|
+
* - 'narrow': Container for mobile screens (centered)
|
|
12
|
+
*/
|
|
13
|
+
size?: 'fluid' | 'wide' | 'narrow';
|
|
14
|
+
/**
|
|
15
|
+
* Background color of the header
|
|
16
|
+
* - 'white': White background
|
|
17
|
+
* - 'gray': Gray background
|
|
18
|
+
*/
|
|
19
|
+
backgroundColor?: 'white' | 'gray';
|
|
7
20
|
children?: ReactNode;
|
|
8
21
|
}
|
|
9
22
|
/**
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
2
|
import { TabsTriggerProps, TabsIndicatorProps } from './types';
|
|
3
3
|
/**
|
|
4
|
-
* TabsTrigger:
|
|
4
|
+
* TabsTrigger: Semantic tab link (li > a)
|
|
5
|
+
* Follows WCAG 2.1 AA standards for navigation tabs
|
|
5
6
|
*/
|
|
6
7
|
export declare const TabsTrigger: React.FC<TabsTriggerProps>;
|
|
7
8
|
/**
|
|
8
|
-
* TabsIndicator: Animated underline indicator for active tab
|
|
9
|
+
* TabsIndicator: Animated underline indicator for active tab (primary color)
|
|
9
10
|
*/
|
|
10
11
|
export declare const TabsIndicator: React.FC<TabsIndicatorProps>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ReactNode, HTMLAttributes } from 'react';
|
|
1
|
+
import { ReactNode, HTMLAttributes, AnchorHTMLAttributes } from 'react';
|
|
2
2
|
/**
|
|
3
3
|
* TabsContextValue: Shared state for compound/context Tabs
|
|
4
4
|
*/
|
|
@@ -7,30 +7,22 @@ export interface TabsContextValue {
|
|
|
7
7
|
activeTab: string;
|
|
8
8
|
/** Set active tab */
|
|
9
9
|
setActiveTab: (tab: string) => void;
|
|
10
|
-
/** Default color for triggers */
|
|
11
|
-
color?: 'primary' | 'secondary' | 'tertiary' | 'ghost' | 'neutral';
|
|
12
|
-
/** Variant for tab style */
|
|
13
|
-
variant?: 'underline' | 'filled';
|
|
14
10
|
}
|
|
15
11
|
/**
|
|
16
|
-
* TabsRootProps: Props for Tabs root
|
|
12
|
+
* TabsRootProps: Props for Tabs root (rendered as nav element)
|
|
17
13
|
*/
|
|
18
|
-
export interface TabsRootProps extends HTMLAttributes<
|
|
14
|
+
export interface TabsRootProps extends HTMLAttributes<HTMLElement> {
|
|
19
15
|
/** Controlled tab value */
|
|
20
16
|
value: string;
|
|
21
17
|
/** Callback when tab changes */
|
|
22
18
|
onValueChange: (tab: string) => void;
|
|
23
|
-
/** Color for triggers */
|
|
24
|
-
color?: 'primary' | 'secondary' | 'tertiary' | 'ghost' | 'neutral';
|
|
25
|
-
/** Variant for tab style */
|
|
26
|
-
variant?: 'underline' | 'filled';
|
|
27
19
|
/** Children: Tabs.Trigger */
|
|
28
20
|
children: ReactNode;
|
|
29
21
|
}
|
|
30
22
|
/**
|
|
31
|
-
* TabsTriggerProps: Individual tab
|
|
23
|
+
* TabsTriggerProps: Individual tab link (rendered as li > a)
|
|
32
24
|
*/
|
|
33
|
-
export interface TabsTriggerProps extends
|
|
25
|
+
export interface TabsTriggerProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
34
26
|
/** Tab value (unique string) */
|
|
35
27
|
value: string;
|
|
36
28
|
/** Children: tab label */
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
2
1
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* @param
|
|
8
|
-
* @
|
|
2
|
+
* useTabIndicator
|
|
3
|
+
* Calculates position and width for the animated underline indicator
|
|
4
|
+
* Also scrolls active tab into view for better UX
|
|
5
|
+
*
|
|
6
|
+
* @param value - Currently active tab value
|
|
7
|
+
* @param containerRef - Reference to the ul[role="tablist"] element
|
|
8
|
+
* @returns Object with left offset and width for the indicator
|
|
9
9
|
*/
|
|
10
|
-
export declare function
|
|
10
|
+
export declare function useTabIndicator(value: string, containerRef: React.RefObject<HTMLUListElement | null>): {
|
|
11
11
|
left: number;
|
|
12
12
|
width: number;
|
|
13
13
|
};
|
|
@@ -3,25 +3,35 @@ import { DrawerHeaderProps, DrawerBodyProps, DrawerFooterProps, DrawerHeaderTabP
|
|
|
3
3
|
import { ButtonIconProps, TextProps } from '../../primitive';
|
|
4
4
|
/**
|
|
5
5
|
* DrawerOverlay - Background overlay that appears behind the drawer
|
|
6
|
-
*
|
|
6
|
+
* Provides a dark blurred background to help users focus on the drawer content
|
|
7
7
|
*/
|
|
8
8
|
export declare const DrawerOverlay: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
9
9
|
/**
|
|
10
10
|
* DrawerHeader - Header section of the drawer
|
|
11
|
-
*
|
|
11
|
+
* Uses semantic <header> element with proper ARIA labeling
|
|
12
|
+
*/
|
|
13
|
+
export declare const DrawerHeader: React.ForwardRefExoticComponent<DrawerHeaderProps & React.RefAttributes<HTMLElement>>;
|
|
14
|
+
/**
|
|
15
|
+
* DrawerTitle - Title element for the drawer header
|
|
16
|
+
* Automatically uses the titleId from context for ARIA labeling
|
|
12
17
|
*/
|
|
13
|
-
export declare const DrawerHeader: React.ForwardRefExoticComponent<DrawerHeaderProps & React.RefAttributes<HTMLDivElement>>;
|
|
14
18
|
export declare const DrawerTitle: React.ForwardRefExoticComponent<TextProps & React.RefAttributes<HTMLElement>>;
|
|
19
|
+
/**
|
|
20
|
+
* DrawerCloseButton - Close button for the drawer
|
|
21
|
+
* Triggers the onClose callback when clicked
|
|
22
|
+
*/
|
|
15
23
|
export declare const DrawerCloseButton: React.ForwardRefExoticComponent<Partial<ButtonIconProps> & React.RefAttributes<HTMLButtonElement>>;
|
|
24
|
+
/**
|
|
25
|
+
* DrawerTab - Container for tabbed navigation within drawer header
|
|
26
|
+
*/
|
|
16
27
|
export declare const DrawerTab: React.ForwardRefExoticComponent<DrawerHeaderTabProps & React.RefAttributes<HTMLDivElement>>;
|
|
17
28
|
/**
|
|
18
29
|
* DrawerBody - Main content area of the drawer
|
|
19
|
-
*
|
|
30
|
+
* Uses semantic <main> element and scrollable container
|
|
20
31
|
*/
|
|
21
|
-
export declare const DrawerBody: React.ForwardRefExoticComponent<DrawerBodyProps & React.RefAttributes<
|
|
32
|
+
export declare const DrawerBody: React.ForwardRefExoticComponent<DrawerBodyProps & React.RefAttributes<HTMLElement>>;
|
|
22
33
|
/**
|
|
23
34
|
* DrawerFooter - Footer section of the drawer
|
|
24
|
-
*
|
|
25
|
-
* Supports responsive flex behavior for optimal button layout across screen sizes
|
|
35
|
+
* Uses semantic <footer> element for action buttons
|
|
26
36
|
*/
|
|
27
|
-
export declare const DrawerFooter: React.ForwardRefExoticComponent<DrawerFooterProps & React.RefAttributes<
|
|
37
|
+
export declare const DrawerFooter: React.ForwardRefExoticComponent<DrawerFooterProps & React.RefAttributes<HTMLElement>>;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
2
|
import { DrawerProps } from './types';
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
* Provides additional space for content with positioning
|
|
4
|
+
* DrawerRoot - A controlled sliding drawer overlay component
|
|
5
|
+
* Provides additional space for content with positioning and sizing options
|
|
6
6
|
*/
|
|
7
7
|
export declare const DrawerRoot: React.FC<DrawerProps>;
|
|
8
8
|
/**
|
|
@@ -10,10 +10,10 @@ export declare const DrawerRoot: React.FC<DrawerProps>;
|
|
|
10
10
|
* Provides a convenient API for using the drawer with all its parts
|
|
11
11
|
*/
|
|
12
12
|
export declare const Drawer: React.FC<DrawerProps> & {
|
|
13
|
-
Header: React.ForwardRefExoticComponent<import('./types').DrawerHeaderProps & React.RefAttributes<
|
|
13
|
+
Header: React.ForwardRefExoticComponent<import('./types').DrawerHeaderProps & React.RefAttributes<HTMLElement>>;
|
|
14
14
|
Title: React.ForwardRefExoticComponent<import('../..').TextProps & React.RefAttributes<HTMLElement>>;
|
|
15
15
|
CloseButton: React.ForwardRefExoticComponent<Partial<import('../..').ButtonIconProps> & React.RefAttributes<HTMLButtonElement>>;
|
|
16
16
|
Tab: React.ForwardRefExoticComponent<import('./types').DrawerHeaderTabProps & React.RefAttributes<HTMLDivElement>>;
|
|
17
|
-
Body: React.ForwardRefExoticComponent<import('./types').DrawerBodyProps & React.RefAttributes<
|
|
18
|
-
Footer: React.ForwardRefExoticComponent<import('./types').DrawerFooterProps & React.RefAttributes<
|
|
17
|
+
Body: React.ForwardRefExoticComponent<import('./types').DrawerBodyProps & React.RefAttributes<HTMLElement>>;
|
|
18
|
+
Footer: React.ForwardRefExoticComponent<import('./types').DrawerFooterProps & React.RefAttributes<HTMLElement>>;
|
|
19
19
|
};
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
import { ComponentPropsWithoutRef, HTMLAttributes, ReactNode } from 'react';
|
|
2
|
-
import { VariantProps } from '../../utils/variants';
|
|
3
|
-
import { drawerVariants } from './helpers';
|
|
4
2
|
import { OverlayPortalProps } from '../../utils/overlay-portal';
|
|
5
3
|
/**
|
|
6
4
|
* Drawer transition type options
|
|
7
5
|
*/
|
|
8
6
|
export type DrawerTransitionType = 'slide' | 'fade';
|
|
9
|
-
/**
|
|
10
|
-
* Base drawer variant props derived from the drawer variants
|
|
11
|
-
*/
|
|
12
|
-
export type DrawerVariantProps = VariantProps<typeof drawerVariants>;
|
|
13
7
|
/**
|
|
14
8
|
* Drawer positioning options
|
|
15
9
|
*/
|
|
@@ -18,10 +12,6 @@ export type DrawerPosition = 'left' | 'right';
|
|
|
18
12
|
* Drawer size options
|
|
19
13
|
*/
|
|
20
14
|
export type DrawerSize = 'sm' | 'md' | 'lg' | 'xl' | '3/4' | 'full';
|
|
21
|
-
/**
|
|
22
|
-
* Drawer variant options
|
|
23
|
-
*/
|
|
24
|
-
export type DrawerVariant = 'default' | 'glass';
|
|
25
15
|
/**
|
|
26
16
|
* Context value for the Drawer compound component
|
|
27
17
|
*/
|
|
@@ -34,14 +24,16 @@ export interface DrawerContextValue {
|
|
|
34
24
|
position: DrawerPosition;
|
|
35
25
|
/** Drawer size */
|
|
36
26
|
size: DrawerSize;
|
|
37
|
-
/** Drawer variant */
|
|
38
|
-
variant: DrawerVariant;
|
|
39
27
|
/** Drawer transition type */
|
|
40
28
|
transitionType: DrawerTransitionType;
|
|
41
29
|
/** Whether to disable overlay click to close */
|
|
42
30
|
disableOverlayClickToClose: boolean;
|
|
43
31
|
/** Whether to disable escape key down */
|
|
44
32
|
disableEscapeKeyDown: boolean;
|
|
33
|
+
/** ID for the drawer title element (for aria-labelledby) */
|
|
34
|
+
titleId: string;
|
|
35
|
+
/** ID for the drawer description element (for aria-describedby) */
|
|
36
|
+
descriptionId: string;
|
|
45
37
|
}
|
|
46
38
|
/**
|
|
47
39
|
* Props for the Drawer component (controlled component)
|
|
@@ -53,11 +45,15 @@ export interface DrawerProps extends ComponentPropsWithoutRef<'div'>, OverlayPor
|
|
|
53
45
|
/**
|
|
54
46
|
* Props for the DrawerHeader component
|
|
55
47
|
*/
|
|
56
|
-
export interface DrawerHeaderProps extends ComponentPropsWithoutRef<'
|
|
48
|
+
export interface DrawerHeaderProps extends ComponentPropsWithoutRef<'header'> {
|
|
57
49
|
/** Children components */
|
|
58
50
|
children: ReactNode;
|
|
51
|
+
/** Whether the header has tabs */
|
|
59
52
|
hasTab?: boolean;
|
|
60
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Props for the DrawerTab component
|
|
56
|
+
*/
|
|
61
57
|
export interface DrawerHeaderTabProps extends HTMLAttributes<HTMLDivElement> {
|
|
62
58
|
/** Children components */
|
|
63
59
|
children: ReactNode;
|
|
@@ -65,14 +61,14 @@ export interface DrawerHeaderTabProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
65
61
|
/**
|
|
66
62
|
* Props for the DrawerBody component
|
|
67
63
|
*/
|
|
68
|
-
export interface DrawerBodyProps extends ComponentPropsWithoutRef<'
|
|
64
|
+
export interface DrawerBodyProps extends ComponentPropsWithoutRef<'main'> {
|
|
69
65
|
/** Children components */
|
|
70
66
|
children: ReactNode;
|
|
71
67
|
}
|
|
72
68
|
/**
|
|
73
69
|
* Props for the DrawerFooter component
|
|
74
70
|
*/
|
|
75
|
-
export interface DrawerFooterProps extends ComponentPropsWithoutRef<'
|
|
71
|
+
export interface DrawerFooterProps extends ComponentPropsWithoutRef<'footer'> {
|
|
76
72
|
/** Children components */
|
|
77
73
|
children: ReactNode;
|
|
78
74
|
}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
2
|
import { ButtonProps } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Button component following browser-standard button behavior
|
|
5
|
+
* Supports 4 variants: primary, ghost, outline, and destructive
|
|
6
|
+
* Provides 3 sizes: sm, md (default), lg
|
|
7
|
+
*/
|
|
3
8
|
export declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
@@ -1,25 +1,26 @@
|
|
|
1
1
|
import { ButtonHTMLAttributes } from 'react';
|
|
2
2
|
/**
|
|
3
3
|
* ButtonProps defines the props for the Button component
|
|
4
|
-
* @property variant - Visual style variant
|
|
4
|
+
* @property variant - Visual style variant (primary, ghost, outline, destructive)
|
|
5
5
|
* @property size - Size of the button (sm, md, lg)
|
|
6
6
|
* @property disabled - Whether the button is disabled
|
|
7
|
-
* @property
|
|
8
|
-
* @property
|
|
7
|
+
* @property busy - Whether the button is in a loading/busy state
|
|
8
|
+
* @property type - Button type attribute (button, submit, reset)
|
|
9
9
|
*/
|
|
10
10
|
export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
11
11
|
/**
|
|
12
|
-
* Visual style variant
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
12
|
+
* Visual style variant
|
|
13
|
+
* - primary: Main action button with coral background (default)
|
|
14
|
+
* - ghost: Subtle, minimal visual weight for secondary actions
|
|
15
|
+
* - outline: Bordered lightweight alternative for secondary actions
|
|
16
|
+
* - destructive: For dangerous or irreversible actions (delete, remove, etc.)
|
|
16
17
|
*/
|
|
17
|
-
variant?: 'primary' | '
|
|
18
|
+
variant?: 'primary' | 'ghost' | 'outline' | 'destructive';
|
|
18
19
|
/**
|
|
19
20
|
* Size of the button
|
|
20
|
-
* sm:
|
|
21
|
-
* md:
|
|
22
|
-
* lg:
|
|
21
|
+
* - sm: 28px height, compact for space-constrained interfaces
|
|
22
|
+
* - md: 36px height, standard for most use cases (default)
|
|
23
|
+
* - lg: 40px height, prominent for primary actions
|
|
23
24
|
*/
|
|
24
25
|
size?: 'sm' | 'md' | 'lg';
|
|
25
26
|
/**
|
|
@@ -27,4 +28,16 @@ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
|
27
28
|
* When true, the button becomes non-interactive and visually dimmed
|
|
28
29
|
*/
|
|
29
30
|
disabled?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Whether the button is in a loading/busy state
|
|
33
|
+
* Can be used to show loading indicators or disable interaction during async operations
|
|
34
|
+
*/
|
|
35
|
+
busy?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Button type attribute
|
|
38
|
+
* - button: Standard button (default, prevents form submission)
|
|
39
|
+
* - submit: Submits the containing form
|
|
40
|
+
* - reset: Resets the containing form
|
|
41
|
+
*/
|
|
42
|
+
type?: 'button' | 'submit' | 'reset';
|
|
30
43
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { ButtonAnchorProps } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* ButtonAnchor component styled as a button but rendered as an anchor
|
|
5
|
+
* Supports 3 variants: primary, ghost, and outline
|
|
6
|
+
* Provides 3 sizes: sm, md (default), lg
|
|
7
|
+
* Useful for navigation actions that should look like buttons
|
|
8
|
+
*/
|
|
9
|
+
export declare const ButtonAnchor: React.ForwardRefExoticComponent<ButtonAnchorProps & React.RefAttributes<HTMLAnchorElement>>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { AnchorHTMLAttributes } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* ButtonAnchorProps defines the props for the ButtonAnchor component
|
|
4
|
+
* @property variant - Visual style variant (primary, ghost, outline)
|
|
5
|
+
* @property size - Size of the anchor button (sm, md, lg)
|
|
6
|
+
* @property disabled - Whether the anchor is disabled (prevents navigation and applies disabled styles)
|
|
7
|
+
* @property href - Required URL that the anchor links to
|
|
8
|
+
*/
|
|
9
|
+
export interface ButtonAnchorProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {
|
|
10
|
+
/**
|
|
11
|
+
* Visual style variant
|
|
12
|
+
* - primary: Main action button with coral background (default)
|
|
13
|
+
* - ghost: Subtle, minimal visual weight for secondary actions
|
|
14
|
+
* - outline: Bordered lightweight alternative for secondary actions
|
|
15
|
+
*/
|
|
16
|
+
variant?: 'primary' | 'ghost' | 'outline';
|
|
17
|
+
/**
|
|
18
|
+
* Size of the anchor button
|
|
19
|
+
* - sm: 28px height, compact for space-constrained interfaces
|
|
20
|
+
* - md: 36px height, standard for most use cases (default)
|
|
21
|
+
* - lg: 40px height, prominent for primary actions
|
|
22
|
+
*/
|
|
23
|
+
size?: 'sm' | 'md' | 'lg';
|
|
24
|
+
/**
|
|
25
|
+
* Whether the anchor is disabled
|
|
26
|
+
* When true, the anchor becomes non-interactive and visually dimmed
|
|
27
|
+
* Prevents navigation by removing href and adding aria-disabled
|
|
28
|
+
*/
|
|
29
|
+
disabled?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* URL the anchor links to (required)
|
|
32
|
+
* When disabled, this href will be temporarily removed but preserved for when enabled
|
|
33
|
+
*/
|
|
34
|
+
href: string;
|
|
35
|
+
}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
2
|
import { ButtonIconProps } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* ButtonIcon component - icon-only button following browser-standard button behavior
|
|
5
|
+
* Supports 4 variants: primary, ghost, outline, and destructive
|
|
6
|
+
* Provides 3 sizes: sm, md (default), lg
|
|
7
|
+
* Provides 3 shapes: rounded (default), square, circle
|
|
8
|
+
*/
|
|
3
9
|
export declare const ButtonIcon: React.ForwardRefExoticComponent<ButtonIconProps & React.RefAttributes<HTMLButtonElement>>;
|
|
@@ -3,32 +3,38 @@ import { IconProps } from '../icon';
|
|
|
3
3
|
/**
|
|
4
4
|
* ButtonIconProps defines the props for the ButtonIcon component
|
|
5
5
|
* @property as - Icon component to render inside the button (e.g., from lucide-react)
|
|
6
|
-
* @property variant - Visual style variant
|
|
6
|
+
* @property variant - Visual style variant (primary, ghost, outline, destructive)
|
|
7
7
|
* @property shape - Shape type of the button (rounded, square, circle)
|
|
8
8
|
* @property size - Size of the button (sm, md, lg)
|
|
9
9
|
* @property disabled - Whether the button is disabled
|
|
10
|
+
* @property busy - Whether the button is in a loading/busy state
|
|
10
11
|
* @property aria-label - Accessible label for screen readers (required for icon-only buttons)
|
|
11
|
-
*
|
|
12
|
-
* Inherits icon sizing and color props from IconProps for alignment
|
|
13
12
|
*/
|
|
14
13
|
export interface ButtonIconProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'type' | 'color'>, Pick<IconProps, 'as'> {
|
|
15
14
|
/**
|
|
16
15
|
* Icon component to render inside the button (e.g., from lucide-react)
|
|
17
16
|
*/
|
|
17
|
+
as: IconProps['as'];
|
|
18
18
|
/**
|
|
19
|
-
* Visual style variant
|
|
19
|
+
* Visual style variant
|
|
20
|
+
* - primary: Main action button with coral background (default)
|
|
21
|
+
* - ghost: Subtle, minimal visual weight for secondary actions
|
|
22
|
+
* - outline: Bordered lightweight alternative for secondary actions
|
|
23
|
+
* - destructive: For dangerous or irreversible actions (delete, remove, etc.)
|
|
20
24
|
*/
|
|
21
|
-
variant?: 'primary' | '
|
|
25
|
+
variant?: 'primary' | 'ghost' | 'outline' | 'destructive';
|
|
22
26
|
/**
|
|
23
27
|
* Size of the button and icon
|
|
24
|
-
*
|
|
28
|
+
* - sm: 28px height/width, compact for space-constrained interfaces
|
|
29
|
+
* - md: 36px height/width, standard for most use cases (default)
|
|
30
|
+
* - lg: 40px height/width, prominent for primary actions
|
|
25
31
|
*/
|
|
26
|
-
size?: '
|
|
32
|
+
size?: 'sm' | 'md' | 'lg';
|
|
27
33
|
/**
|
|
28
34
|
* Shape type of the button
|
|
29
|
-
* rounded: Standard rounded corners (default)
|
|
30
|
-
* square: Perfect square with minimal rounded corners
|
|
31
|
-
* circle: Circular shape
|
|
35
|
+
* - rounded: Standard rounded corners (default)
|
|
36
|
+
* - square: Perfect square with minimal rounded corners
|
|
37
|
+
* - circle: Circular shape
|
|
32
38
|
*/
|
|
33
39
|
shape?: 'rounded' | 'square' | 'circle';
|
|
34
40
|
/**
|
|
@@ -36,6 +42,11 @@ export interface ButtonIconProps extends Omit<ButtonHTMLAttributes<HTMLButtonEle
|
|
|
36
42
|
* When true, the button becomes non-interactive and visually dimmed
|
|
37
43
|
*/
|
|
38
44
|
disabled?: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Whether the button is in a loading/busy state
|
|
47
|
+
* Can be used to show loading indicators or disable interaction during async operations
|
|
48
|
+
*/
|
|
49
|
+
busy?: boolean;
|
|
39
50
|
/**
|
|
40
51
|
* Accessible label for screen readers
|
|
41
52
|
* Required for icon-only buttons to ensure accessibility
|
|
@@ -1,20 +1,10 @@
|
|
|
1
1
|
import { ButtonHTMLAttributes } from 'react';
|
|
2
2
|
/**
|
|
3
3
|
* FilterChipProps defines the props for the FilterChip component
|
|
4
|
-
* @property variant - Visual style variant based on Versaur color system
|
|
5
4
|
* @property size - Size of the chip (sm, md, lg)
|
|
6
5
|
* @property disabled - Whether the chip is disabled
|
|
7
|
-
* @property onRemove - Callback when the remove icon is clicked
|
|
8
|
-
* @property label - The text content of the chip
|
|
9
6
|
*/
|
|
10
7
|
export interface FilterChipProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
11
|
-
/**
|
|
12
|
-
* Visual style variant supporting Versaur color system
|
|
13
|
-
* Core variants: primary (coral), secondary (sage), tertiary (mist), ghost (slate), neutral (light gray)
|
|
14
|
-
* Semantic variants: success, info, warning, danger
|
|
15
|
-
* Each variant supports outline forms for flexible design expression
|
|
16
|
-
*/
|
|
17
|
-
variant?: 'primary' | 'primary-outline' | 'secondary' | 'secondary-outline' | 'tertiary' | 'tertiary-outline' | 'ghost' | 'ghost-outline' | 'neutral' | 'neutral-outline' | 'success' | 'success-outline' | 'info' | 'info-outline' | 'warning' | 'warning-outline' | 'danger' | 'danger-outline';
|
|
18
8
|
/**
|
|
19
9
|
* Size of the chip
|
|
20
10
|
* sm: 28px height, compact for dense layouts
|