@dimasbaguspm/versaur 0.0.47 → 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.
Files changed (81) hide show
  1. package/dist/assets/styles.css +14 -6
  2. package/dist/js/forms/index.js +12 -14
  3. package/dist/js/image-rectangle-K9jmTTED.js +2607 -0
  4. package/dist/js/index.js +66 -68
  5. package/dist/js/layouts/index.js +8 -9
  6. package/dist/js/navigation/index.js +1 -1
  7. package/dist/js/overlays/index.js +2 -2
  8. package/dist/js/primitive/index.js +21 -20
  9. package/dist/js/tabs-I4n6MLAv.js +210 -0
  10. package/dist/js/templates/index.js +1 -0
  11. package/dist/js/time-picker-input-jJBtyikv.js +1562 -0
  12. package/dist/js/{tooltip-D6fUigp2.js → tooltip-nZW9TUz3.js} +293 -297
  13. package/dist/js/{top-bar-Dx0JVXms.js → top-bar-BMw3gFYA.js} +292 -247
  14. package/dist/types/forms/checkbox-input/checkbox-input.d.ts +1 -1
  15. package/dist/types/forms/checkbox-input/types.d.ts +11 -14
  16. package/dist/types/forms/chip-multiple-input/chip-multiple-input.atoms.d.ts +2 -2
  17. package/dist/types/forms/chip-multiple-input/chip-multiple-input.d.ts +1 -1
  18. package/dist/types/forms/chip-multiple-input/types.d.ts +15 -14
  19. package/dist/types/forms/chip-single-input/chip-single-input.atoms.d.ts +1 -1
  20. package/dist/types/forms/chip-single-input/chip-single-input.d.ts +1 -1
  21. package/dist/types/forms/chip-single-input/types.d.ts +15 -14
  22. package/dist/types/forms/date-single-picker-input/types.d.ts +10 -0
  23. package/dist/types/forms/index.d.ts +0 -2
  24. package/dist/types/forms/pin-field/pin-field.d.ts +2 -2
  25. package/dist/types/forms/pin-field/types.d.ts +16 -28
  26. package/dist/types/forms/select-input/index.d.ts +1 -1
  27. package/dist/types/forms/select-input/select-input.atoms.d.ts +16 -0
  28. package/dist/types/forms/select-input/select-input.d.ts +4 -7
  29. package/dist/types/forms/select-input/types.d.ts +32 -9
  30. package/dist/types/forms/selectable-multiple-input/selectable-multiple-input.d.ts +1 -1
  31. package/dist/types/forms/selectable-multiple-input/types.d.ts +20 -3
  32. package/dist/types/forms/selectable-single-input/selectable-single-input.d.ts +1 -1
  33. package/dist/types/forms/selectable-single-input/types.d.ts +20 -3
  34. package/dist/types/forms/switch-input/switch-input.atoms.d.ts +7 -8
  35. package/dist/types/forms/switch-input/switch-input.d.ts +5 -1
  36. package/dist/types/forms/switch-input/types.d.ts +10 -33
  37. package/dist/types/forms/text-input/text-input.d.ts +2 -2
  38. package/dist/types/forms/text-input/types.d.ts +0 -7
  39. package/dist/types/forms/textarea-input/textarea-input.d.ts +3 -3
  40. package/dist/types/forms/textarea-input/types.d.ts +33 -18
  41. package/dist/types/layouts/index.d.ts +1 -2
  42. package/dist/types/layouts/page-content/index.d.ts +1 -1
  43. package/dist/types/layouts/page-content/page-content.d.ts +5 -11
  44. package/dist/types/layouts/page-content/types.d.ts +29 -9
  45. package/dist/types/layouts/page-header/types.d.ts +13 -0
  46. package/dist/types/navigation/tabs/tabs.atoms.d.ts +3 -2
  47. package/dist/types/navigation/tabs/types.d.ts +5 -13
  48. package/dist/types/navigation/tabs/use-tab-indicator.d.ts +8 -8
  49. package/dist/types/overlays/drawer/drawer.atoms.d.ts +18 -8
  50. package/dist/types/overlays/drawer/drawer.d.ts +5 -5
  51. package/dist/types/overlays/drawer/types.d.ts +11 -15
  52. package/dist/types/primitive/button/button.d.ts +5 -0
  53. package/dist/types/primitive/button/types.d.ts +24 -11
  54. package/dist/types/primitive/button-anchor/button-anchor.d.ts +9 -0
  55. package/dist/types/primitive/button-anchor/index.d.ts +2 -0
  56. package/dist/types/primitive/button-anchor/types.d.ts +35 -0
  57. package/dist/types/primitive/button-icon/button-icon.d.ts +6 -0
  58. package/dist/types/primitive/button-icon/types.d.ts +21 -10
  59. package/dist/types/primitive/filter-chip/types.d.ts +0 -10
  60. package/dist/types/primitive/index.d.ts +1 -0
  61. package/dist/types/templates/index.d.ts +1 -0
  62. package/dist/types/templates/pin-verifier-drawer/index.d.ts +2 -0
  63. package/dist/types/templates/pin-verifier-drawer/pin-verifier-drawer.atoms.d.ts +7 -0
  64. package/dist/types/templates/pin-verifier-drawer/pin-verifier-drawer.d.ts +10 -0
  65. package/dist/types/templates/pin-verifier-drawer/types.d.ts +97 -0
  66. package/dist/utils/enforce-subpath-import.js +2 -3
  67. package/package.json +5 -1
  68. package/dist/js/image-rectangle-B4nXH4Q5.js +0 -2581
  69. package/dist/js/tabs-BAzThVka.js +0 -291
  70. package/dist/js/time-picker-input-JBEgDV2V.js +0 -2049
  71. package/dist/types/forms/segment-multiple-input/index.d.ts +0 -2
  72. package/dist/types/forms/segment-multiple-input/segment-multiple-input.atoms.d.ts +0 -12
  73. package/dist/types/forms/segment-multiple-input/segment-multiple-input.d.ts +0 -7
  74. package/dist/types/forms/segment-multiple-input/types.d.ts +0 -55
  75. package/dist/types/forms/segment-single-input/index.d.ts +0 -2
  76. package/dist/types/forms/segment-single-input/segment-single-input.atoms.d.ts +0 -11
  77. package/dist/types/forms/segment-single-input/segment-single-input.d.ts +0 -7
  78. package/dist/types/forms/segment-single-input/types.d.ts +0 -55
  79. package/dist/types/layouts/page-layout/index.d.ts +0 -2
  80. package/dist/types/layouts/page-layout/page-layout.d.ts +0 -8
  81. 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
- * Provides a styled textarea field with semantic color, variant, error, and disabled support
7
- * Supports field-sizing for auto-resizing and configurable rows
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<HTMLTextAreaElement>>;
10
+ export declare const TextAreaInput: React.ForwardRefExoticComponent<TextAreaInputProps & React.RefAttributes<HTMLDivElement>>;
@@ -1,15 +1,8 @@
1
- import { TextareaHTMLAttributes, ReactNode } from 'react';
1
+ import { HTMLAttributes, ReactNode } from 'react';
2
2
  /**
3
3
  * Props for the TextAreaInput component
4
4
  */
5
- export interface TextAreaInputProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> {
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
- * Minimum number of rows for the textarea
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
- minRows?: number;
45
+ name?: string;
29
46
  /**
30
- * Maximum number of rows for the textarea
31
- * Only applies when fieldSizing is 'fixed'
47
+ * Number of rows (height in rem units)
48
+ * @default 3
32
49
  */
33
- maxRows?: number;
50
+ row?: number;
34
51
  /**
35
- * Enable field-sizing CSS property for auto-resizing
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
- fieldSizing?: 'content' | 'fixed';
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-layout';
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 { PageContentProps } from './types';
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 - Layout component for page content areas
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
- * Provides consistent horizontal spacing that matches the page-header
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: import('react').ForwardRefExoticComponent<PageContentProps & import('react').RefAttributes<HTMLDivElement>>;
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 main container
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
- * Content to be displayed inside the page content area
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
- children?: ReactNode;
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: Individual tab button
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<HTMLDivElement> {
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 button
23
+ * TabsTriggerProps: Individual tab link (rendered as li > a)
32
24
  */
33
- export interface TabsTriggerProps extends HTMLAttributes<HTMLButtonElement> {
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
- * useTabIndicatorAndFocus
4
- * Handles indicator position and focusing the active tab in a tablist
5
- * @param value - active tab value
6
- * @param containerRef - ref to the tablist container
7
- * @param children - tablist children (for effect dependency)
8
- * @returns { left: number, width: number }
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 useTabIndicatorAndFocus(value: string, containerRef: React.RefObject<HTMLDivElement | null>, children: React.ReactNode): {
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
- * Always provides a dark blurred background to help users focus on the drawer content
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
- * Typically contains the title and close button
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
- * Scrollable container for the drawer content
30
+ * Uses semantic <main> element and scrollable container
20
31
  */
21
- export declare const DrawerBody: React.ForwardRefExoticComponent<DrawerBodyProps & React.RefAttributes<HTMLDivElement>>;
32
+ export declare const DrawerBody: React.ForwardRefExoticComponent<DrawerBodyProps & React.RefAttributes<HTMLElement>>;
22
33
  /**
23
34
  * DrawerFooter - Footer section of the drawer
24
- * Typically contains action buttons
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<HTMLDivElement>>;
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
- * Drawer - A controlled sliding drawer overlay component
5
- * Provides additional space for content with positioning, sizing, and glass variant options
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<HTMLDivElement>>;
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<HTMLDivElement>>;
18
- Footer: React.ForwardRefExoticComponent<import('./types').DrawerFooterProps & React.RefAttributes<HTMLDivElement>>;
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<'div'> {
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<'div'> {
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<'div'> {
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 based on Versaur color system
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 type - Button type attribute
8
- * @property onClick - Click event handler
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 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 and ghost forms for flexible design expression
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' | 'primary-outline' | 'primary-ghost' | 'secondary' | 'secondary-outline' | 'secondary-ghost' | 'tertiary' | 'tertiary-outline' | 'tertiary-ghost' | 'accent_1' | 'accent_1-outline' | 'accent_1-ghost' | 'accent_2' | 'accent_2-outline' | 'accent_2-ghost' | 'accent_3' | 'accent_3-outline' | 'accent_3-ghost' | 'ghost' | 'ghost-outline' | 'neutral' | 'neutral-outline' | 'neutral-ghost' | 'success' | 'success-outline' | 'success-ghost' | 'info' | 'info-outline' | 'info-ghost' | 'warning' | 'warning-outline' | 'warning-ghost' | 'danger' | 'danger-outline' | 'danger-ghost' | 'outline' | 'destructive';
18
+ variant?: 'primary' | 'ghost' | 'outline' | 'destructive';
18
19
  /**
19
20
  * Size of the button
20
- * sm: 36px height, compact for space-constrained interfaces
21
- * md: 40px height, standard for most use cases
22
- * lg: 44px height, prominent for primary actions
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,2 @@
1
+ export { ButtonAnchor } from './button-anchor';
2
+ export type { ButtonAnchorProps } from './types';
@@ -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 based on Versaur color system
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 supporting Versaur color system
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' | 'primary-outline' | 'primary-ghost' | 'secondary' | 'secondary-outline' | 'secondary-ghost' | 'tertiary' | 'tertiary-outline' | 'tertiary-ghost' | 'ghost' | 'ghost-outline' | 'neutral' | 'neutral-outline' | 'neutral-ghost' | 'success' | 'success-outline' | 'success-ghost' | 'info' | 'info-outline' | 'info-ghost' | 'warning' | 'warning-outline' | 'warning-ghost' | 'danger' | 'danger-outline' | 'danger-ghost' | 'outline' | 'destructive';
25
+ variant?: 'primary' | 'ghost' | 'outline' | 'destructive';
22
26
  /**
23
27
  * Size of the button and icon
24
- * xs: 24px, sm: 32px, md: 40px, lg: 48px, xl: 56px
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?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
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
@@ -8,6 +8,7 @@ export * from './avatar';
8
8
  export * from './badge';
9
9
  export * from './brand';
10
10
  export * from './button';
11
+ export * from './button-anchor';
11
12
  export * from './button-menu';
12
13
  export * from './button-menu-icon';
13
14
  export * from './button-icon';
@@ -0,0 +1 @@
1
+ export {};