banhatten-ui 0.1.1 → 0.2.0

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.
@@ -0,0 +1,106 @@
1
+ # Banhatten Design System — Library Customization Rule
2
+
3
+ Use this rule to customize any UI library to match the Banhatten Design System.
4
+ Copy this file into your project's `.cursor/rules/` directory.
5
+
6
+ ---
7
+
8
+ ## Source of Truth
9
+
10
+ After running `npm install banhatten-ui`, two resources are available:
11
+
12
+ 1. **Design Tokens** — `node_modules/banhatten-ui/dist/tokens/tokens.json`
13
+ 2. **Component Specs** — `node_modules/banhatten-ui/dist/specs/<component>.json`
14
+
15
+ Always read these files before making styling decisions. They are the single source of truth.
16
+
17
+ ---
18
+
19
+ ## Token Resolution
20
+
21
+ `tokens.json` has four top-level sections:
22
+
23
+ | Section | Purpose | Example |
24
+ |-------------|---------------------------------------------|----------------------------------------|
25
+ | `brand` | Raw color palette (hex values) | `"primary-600": "#2563eb"` |
26
+ | `alias` | Semantic tokens referencing `brand` | `"bg-brand": "{brand.primary-600}"` |
27
+ | `shadow` | Box-shadow CSS strings | `"md": "0px 1.75px 4px -1px ..."` |
28
+ | `radius` | Border-radius pixel values | `"sm": "8px"` |
29
+ | `spacing` | Spacing values (rem or px) | `"lg": "1rem"` |
30
+
31
+ **Resolution chain:** Component specs reference `{alias.*}`, `{shadow.*}`, `{radius.*}`, and `{spacing.*}`. Alias tokens reference `{brand.*}` which holds the final hex value.
32
+
33
+ Example:
34
+ ```
35
+ spec: "{alias.component-button-brand-bg}" → tokens alias: "{brand.primary-600}" → tokens brand: "#2563eb"
36
+ ```
37
+
38
+ ---
39
+
40
+ ## Component Spec Schema
41
+
42
+ Each `<component>.json` in `specs/` follows this structure:
43
+
44
+ - **`base`** — Default CSS properties applied to every instance.
45
+ - **`variants`** — Named style presets (e.g. `primary`, `secondary`, `danger`). Each variant specifies `bg`, `text`, `border`, `hover`, `active` etc. using token references.
46
+ - **`sizes`** — Named size presets (e.g. `xs`, `md`, `lg`). Each size specifies `height`, `paddingX`, `paddingY`, `fontSize`, `borderRadius`, `gap` using token references or raw CSS values.
47
+ - **`states`** — `disabled`, `focus`, `error`, and other state styles.
48
+ - **`compoundVariants`** — Conditional overrides when multiple props match simultaneously.
49
+ - **`props`** — Component API: prop name, type, allowed values, and defaults.
50
+ - **`slots`** — Named sub-elements within the component (e.g. `leftIcon`, `rightIcon`).
51
+ - **`subComponents`** — Definitions for child components (e.g. `MenuItem` inside `Menu`).
52
+ - **`defaults`** — Default variant and size.
53
+ - **`accessibility`** — Required ARIA attributes and notes.
54
+
55
+ ---
56
+
57
+ ## Customization Process
58
+
59
+ ### Step 1: Global Theme
60
+
61
+ Read `tokens.json` and configure your library's global theme:
62
+
63
+ 1. **Colors** — Map every `alias.*` token to your library's color system. Resolve each alias through `brand` to get the final hex value. Create semantic color keys that match the alias names.
64
+ 2. **Shadows** — Map `shadow.*` values directly as CSS box-shadow strings.
65
+ 3. **Border Radius** — Map `radius.*` values to your library's radius/shape tokens.
66
+ 4. **Spacing** — Map `spacing.*` values to your library's spacing scale.
67
+
68
+ ### Step 2: Component Overrides
69
+
70
+ For each component your project uses:
71
+
72
+ 1. Read the matching spec from `node_modules/banhatten-ui/dist/specs/<component>.json`.
73
+ 2. Map **variants** to the library's variant/color system. Match backgrounds, text colors, borders, and hover/active/focus states exactly.
74
+ 3. Map **sizes** to the library's size system. Match height, padding, font size, border radius, and gap exactly.
75
+ 4. Map **states** (disabled opacity, focus rings) to the library's state styling.
76
+ 5. Map **compound variants** as conditional overrides.
77
+ 6. Ensure the component exposes the same **props** as the spec (or provide wrappers that do).
78
+
79
+ ### Step 3: Missing Components
80
+
81
+ For components in the specs that do not exist in your library:
82
+
83
+ 1. Create a custom component using your library's primitives and styling utilities.
84
+ 2. Follow the spec exactly for all variants, sizes, states, and props.
85
+ 3. Resolve all token references to final CSS values through `tokens.json`.
86
+ 4. Implement the accessibility requirements from the spec's `accessibility` section.
87
+
88
+ ---
89
+
90
+ ## Available Component Specs
91
+
92
+ accordion, alert, avatar, avatar-group, avatar-profile, badge, breadcrumb,
93
+ button, button-group, checkbox, checkbox-card, close-button, divider,
94
+ dropdown, dropdown-input, featured-icon, icon, input, menu, progress-bar,
95
+ radio, radio-card, sidebar, slider, tag, textarea, toggle, tooltip
96
+
97
+ ---
98
+
99
+ ## Rules
100
+
101
+ - Never hardcode hex colors — always resolve through `tokens.json` so themes stay updatable.
102
+ - Preserve the variant/size naming from specs (e.g. `primary`, `md`) in your theme configuration.
103
+ - When a spec uses `{alias.*}`, resolve it to the final value through `brand` only at the point of CSS output — keep semantic names in theme config.
104
+ - Match pixel-perfect dimensions: if the spec says `height: "40px"` and `paddingX: "{spacing.lg}"` (1rem), use those exact values.
105
+ - Focus rings must use `{alias.border-brand}` (resolved: `#2563eb`) with a 2px offset unless the spec says otherwise.
106
+ - Icon sizing follows the spec's `slots.*.iconSizeByButtonSize` mappings when present.
package/dist/index.d.mts CHANGED
@@ -803,4 +803,111 @@ interface TooltipProps extends Omit<React.ComponentPropsWithoutRef<typeof Toolti
803
803
  }
804
804
  declare function Tooltip({ children, content, title, subtitle, size, variant, side, sideOffset, delayDuration, showArrow, contentClassName, ...rootProps }: TooltipProps): react_jsx_runtime.JSX.Element;
805
805
 
806
- export { Accordion, AccordionContent, type AccordionContentProps, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, type AccordionTriggerProps, Alert, type AlertAction, type AlertProps, Avatar, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, type AvatarGroupSize, AvatarProfile, type AvatarProfileProps, type AvatarProps, Badge, type BadgeProps, Breadcrumb, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbList, BreadcrumbListItem, type BreadcrumbListItemProps, type BreadcrumbListProps, type BreadcrumbProps, BreadcrumbSeparator, type BreadcrumbSeparatorProps, Button, ButtonGroup, ButtonGroupItem, type ButtonGroupItemProps, type ButtonGroupProps, type ButtonGroupSize, type ButtonProps, Checkbox, CheckboxCard, type CheckboxCardProps, type CheckboxProps, CloseButton, type CloseButtonProps, ColorPalette, Divider, type DividerProps, FeaturedIcon, type FeaturedIconProps, Icon, type IconProps, type IconSize, Input, type InputPreset, type InputProps, Menu, MenuGroup, type MenuGroupProps, MenuHeading, type MenuHeadingProps, MenuItem, type MenuItemProps, type MenuItemType, type MenuProps, ProgressBar, type ProgressBarProps, Radio, RadioCard, type RadioCardProps, type RadioProps, Sidebar, SidebarAccountCard, type SidebarAccountCardProps, SidebarContext, type SidebarContextValue, SidebarMenuItem, type SidebarMenuItemProps, type SidebarProps, SidebarSubmenuItem, type SidebarSubmenuItemProps, Slider, type SliderDoubleProps, SliderHandle, type SliderHandleProps, type SliderProps, type SliderSingleProps, type SliderVariant, Tag, type TagProps, TextArea, type TextAreaProps, Toggle, type ToggleProps, Tooltip, TooltipContent, type TooltipContentProps, type TooltipProps, TooltipProvider, TooltipTrigger, accordionTriggerVariants, alertVariants, avatarProfileVariants, avatarVariants, badgeVariants, breadcrumbItemVariants, breadcrumbListVariants, breadcrumbSeparatorVariants, buttonGroupItemVariants, buttonGroupVariants, buttonVariants, closeButtonVariants, dividerVariants, featuredIconVariants, iconVariants, inputWrapperVariants as inputVariants, menuGroupVariants, menuHeadingVariants, menuItemVariants, menuVariants, progressBarFillVariants, progressBarTrackVariants, sidebarAccountCardVariants, sidebarMenuItemVariants, sidebarSubmenuItemVariants, sidebarVariants, sliderHandleCircleVariants, tagVariants, textareaWrapperVariants as textareaVariants, thumbVariants, toggleVariants, tooltipContentVariants, useSidebarContext };
806
+ declare const dropdownTriggerVariants: (props?: ({
807
+ size?: "sm" | "md" | "lg" | null | undefined;
808
+ error?: boolean | null | undefined;
809
+ disabled?: boolean | null | undefined;
810
+ focused?: boolean | null | undefined;
811
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
812
+ declare const focusRingVariants: (props?: ({
813
+ error?: boolean | null | undefined;
814
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
815
+ interface DropdownInputProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "size" | "value">, Omit<VariantProps<typeof dropdownTriggerVariants>, "disabled" | "focused" | "error"> {
816
+ /** Label text displayed above the trigger */
817
+ label?: string;
818
+ /** Whether the field is optional (displays "(Optional)" next to label) */
819
+ optional?: boolean;
820
+ /** Helper text displayed below the trigger */
821
+ helperText?: string;
822
+ /** Error message displayed below the trigger (overrides helperText when present) */
823
+ errorMessage?: string;
824
+ /** Placeholder text when no value is selected */
825
+ placeholder?: string;
826
+ /** Selected value(s) — only used to derive placeholder vs filled styling */
827
+ value?: string | string[];
828
+ /** Display text for the selected value(s) */
829
+ displayValue?: string;
830
+ /** Whether the dropdown is open */
831
+ open?: boolean;
832
+ /** Callback when dropdown open state changes */
833
+ onOpenChange?: (open: boolean) => void;
834
+ /** Show selection count badge */
835
+ showIndicator?: boolean;
836
+ /** Selection count for indicator badge */
837
+ indicatorCount?: number;
838
+ /** Material Symbol name for left icon (e.g., "account_circle", "search") */
839
+ leftIcon?: string;
840
+ /** Icon variant style. Default: "outlined" */
841
+ iconVariant?: IconProps["variant"];
842
+ /** Render filled variant of icons */
843
+ iconFilled?: boolean;
844
+ /** Render custom left element (overrides leftIcon) */
845
+ leftElement?: React.ReactNode;
846
+ }
847
+ declare const DropdownInput: React.ForwardRefExoticComponent<DropdownInputProps & React.RefAttributes<HTMLButtonElement>>;
848
+
849
+ interface DropdownOption {
850
+ /** Unique value for the option */
851
+ value: string;
852
+ /** Display label for the option */
853
+ label: string;
854
+ /** Optional left icon (Material Symbol name) */
855
+ leftIcon?: string;
856
+ /** Whether this option is disabled */
857
+ disabled?: boolean;
858
+ }
859
+ interface DropdownProps extends Omit<DropdownInputProps, "value" | "open" | "onOpenChange" | "displayValue" | "showIndicator" | "indicatorCount"> {
860
+ /** Array of options for simple usage */
861
+ options?: DropdownOption[];
862
+ /** Selected value (single select) or values (multi-select) */
863
+ value?: string | string[];
864
+ /** Callback when selection changes */
865
+ onValueChange?: (value: string | string[]) => void;
866
+ /** Enable multi-select mode */
867
+ multiple?: boolean;
868
+ /** Custom render for options (overrides options prop) */
869
+ children?: React.ReactNode;
870
+ /** Custom display value (overrides auto-generated display) */
871
+ displayValue?: string;
872
+ /** Width of the dropdown menu. Default: matches trigger width */
873
+ menuWidth?: "trigger" | "auto" | number;
874
+ /** Maximum height of the menu before scrolling. Default: 300 */
875
+ maxHeight?: number;
876
+ /** Align menu relative to trigger. Default: "start" */
877
+ align?: "start" | "center" | "end";
878
+ /** Side offset from trigger. Default: 4 */
879
+ sideOffset?: number;
880
+ }
881
+ declare const Dropdown: React.ForwardRefExoticComponent<DropdownProps & React.RefAttributes<HTMLButtonElement>>;
882
+ interface DropdownItemProps {
883
+ /** Unique value for this option */
884
+ value: string;
885
+ /** Display content */
886
+ children: React.ReactNode;
887
+ /** Whether this option is currently selected */
888
+ selected?: boolean;
889
+ /** Callback when option is selected */
890
+ onSelect?: (value: string) => void;
891
+ /** Left icon (Material Symbol name) */
892
+ leftIcon?: string;
893
+ /** Whether this option is disabled */
894
+ disabled?: boolean;
895
+ /** Whether dropdown is in multi-select mode (shows checkbox) */
896
+ multiple?: boolean;
897
+ /** Additional class names */
898
+ className?: string;
899
+ }
900
+ declare const DropdownItem: React.ForwardRefExoticComponent<DropdownItemProps & React.RefAttributes<HTMLButtonElement>>;
901
+ interface DropdownGroupProps {
902
+ /** Optional section heading */
903
+ heading?: React.ReactNode;
904
+ /** DropdownItem children */
905
+ children: React.ReactNode;
906
+ /** ID for accessibility (aria-labelledby) */
907
+ headingId?: string;
908
+ /** Additional class names */
909
+ className?: string;
910
+ }
911
+ declare const DropdownGroup: React.ForwardRefExoticComponent<DropdownGroupProps & React.RefAttributes<HTMLDivElement>>;
912
+
913
+ export { Accordion, AccordionContent, type AccordionContentProps, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, type AccordionTriggerProps, Alert, type AlertAction, type AlertProps, Avatar, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, type AvatarGroupSize, AvatarProfile, type AvatarProfileProps, type AvatarProps, Badge, type BadgeProps, Breadcrumb, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbList, BreadcrumbListItem, type BreadcrumbListItemProps, type BreadcrumbListProps, type BreadcrumbProps, BreadcrumbSeparator, type BreadcrumbSeparatorProps, Button, ButtonGroup, ButtonGroupItem, type ButtonGroupItemProps, type ButtonGroupProps, type ButtonGroupSize, type ButtonProps, Checkbox, CheckboxCard, type CheckboxCardProps, type CheckboxProps, CloseButton, type CloseButtonProps, ColorPalette, Divider, type DividerProps, Dropdown, DropdownGroup, type DropdownGroupProps, DropdownInput, type DropdownInputProps, DropdownItem, type DropdownItemProps, type DropdownOption, type DropdownProps, FeaturedIcon, type FeaturedIconProps, Icon, type IconProps, type IconSize, Input, type InputPreset, type InputProps, Menu, MenuGroup, type MenuGroupProps, MenuHeading, type MenuHeadingProps, MenuItem, type MenuItemProps, type MenuItemType, type MenuProps, ProgressBar, type ProgressBarProps, Radio, RadioCard, type RadioCardProps, type RadioProps, Sidebar, SidebarAccountCard, type SidebarAccountCardProps, SidebarContext, type SidebarContextValue, SidebarMenuItem, type SidebarMenuItemProps, type SidebarProps, SidebarSubmenuItem, type SidebarSubmenuItemProps, Slider, type SliderDoubleProps, SliderHandle, type SliderHandleProps, type SliderProps, type SliderSingleProps, type SliderVariant, Tag, type TagProps, TextArea, type TextAreaProps, Toggle, type ToggleProps, Tooltip, TooltipContent, type TooltipContentProps, type TooltipProps, TooltipProvider, TooltipTrigger, accordionTriggerVariants, alertVariants, avatarProfileVariants, avatarVariants, badgeVariants, breadcrumbItemVariants, breadcrumbListVariants, breadcrumbSeparatorVariants, buttonGroupItemVariants, buttonGroupVariants, buttonVariants, closeButtonVariants, dividerVariants, focusRingVariants as dropdownFocusRingVariants, dropdownTriggerVariants, featuredIconVariants, iconVariants, inputWrapperVariants as inputVariants, menuGroupVariants, menuHeadingVariants, menuItemVariants, menuVariants, progressBarFillVariants, progressBarTrackVariants, sidebarAccountCardVariants, sidebarMenuItemVariants, sidebarSubmenuItemVariants, sidebarVariants, sliderHandleCircleVariants, tagVariants, textareaWrapperVariants as textareaVariants, thumbVariants, toggleVariants, tooltipContentVariants, useSidebarContext };
package/dist/index.d.ts CHANGED
@@ -803,4 +803,111 @@ interface TooltipProps extends Omit<React.ComponentPropsWithoutRef<typeof Toolti
803
803
  }
804
804
  declare function Tooltip({ children, content, title, subtitle, size, variant, side, sideOffset, delayDuration, showArrow, contentClassName, ...rootProps }: TooltipProps): react_jsx_runtime.JSX.Element;
805
805
 
806
- export { Accordion, AccordionContent, type AccordionContentProps, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, type AccordionTriggerProps, Alert, type AlertAction, type AlertProps, Avatar, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, type AvatarGroupSize, AvatarProfile, type AvatarProfileProps, type AvatarProps, Badge, type BadgeProps, Breadcrumb, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbList, BreadcrumbListItem, type BreadcrumbListItemProps, type BreadcrumbListProps, type BreadcrumbProps, BreadcrumbSeparator, type BreadcrumbSeparatorProps, Button, ButtonGroup, ButtonGroupItem, type ButtonGroupItemProps, type ButtonGroupProps, type ButtonGroupSize, type ButtonProps, Checkbox, CheckboxCard, type CheckboxCardProps, type CheckboxProps, CloseButton, type CloseButtonProps, ColorPalette, Divider, type DividerProps, FeaturedIcon, type FeaturedIconProps, Icon, type IconProps, type IconSize, Input, type InputPreset, type InputProps, Menu, MenuGroup, type MenuGroupProps, MenuHeading, type MenuHeadingProps, MenuItem, type MenuItemProps, type MenuItemType, type MenuProps, ProgressBar, type ProgressBarProps, Radio, RadioCard, type RadioCardProps, type RadioProps, Sidebar, SidebarAccountCard, type SidebarAccountCardProps, SidebarContext, type SidebarContextValue, SidebarMenuItem, type SidebarMenuItemProps, type SidebarProps, SidebarSubmenuItem, type SidebarSubmenuItemProps, Slider, type SliderDoubleProps, SliderHandle, type SliderHandleProps, type SliderProps, type SliderSingleProps, type SliderVariant, Tag, type TagProps, TextArea, type TextAreaProps, Toggle, type ToggleProps, Tooltip, TooltipContent, type TooltipContentProps, type TooltipProps, TooltipProvider, TooltipTrigger, accordionTriggerVariants, alertVariants, avatarProfileVariants, avatarVariants, badgeVariants, breadcrumbItemVariants, breadcrumbListVariants, breadcrumbSeparatorVariants, buttonGroupItemVariants, buttonGroupVariants, buttonVariants, closeButtonVariants, dividerVariants, featuredIconVariants, iconVariants, inputWrapperVariants as inputVariants, menuGroupVariants, menuHeadingVariants, menuItemVariants, menuVariants, progressBarFillVariants, progressBarTrackVariants, sidebarAccountCardVariants, sidebarMenuItemVariants, sidebarSubmenuItemVariants, sidebarVariants, sliderHandleCircleVariants, tagVariants, textareaWrapperVariants as textareaVariants, thumbVariants, toggleVariants, tooltipContentVariants, useSidebarContext };
806
+ declare const dropdownTriggerVariants: (props?: ({
807
+ size?: "sm" | "md" | "lg" | null | undefined;
808
+ error?: boolean | null | undefined;
809
+ disabled?: boolean | null | undefined;
810
+ focused?: boolean | null | undefined;
811
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
812
+ declare const focusRingVariants: (props?: ({
813
+ error?: boolean | null | undefined;
814
+ } & class_variance_authority_types.ClassProp) | undefined) => string;
815
+ interface DropdownInputProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "size" | "value">, Omit<VariantProps<typeof dropdownTriggerVariants>, "disabled" | "focused" | "error"> {
816
+ /** Label text displayed above the trigger */
817
+ label?: string;
818
+ /** Whether the field is optional (displays "(Optional)" next to label) */
819
+ optional?: boolean;
820
+ /** Helper text displayed below the trigger */
821
+ helperText?: string;
822
+ /** Error message displayed below the trigger (overrides helperText when present) */
823
+ errorMessage?: string;
824
+ /** Placeholder text when no value is selected */
825
+ placeholder?: string;
826
+ /** Selected value(s) — only used to derive placeholder vs filled styling */
827
+ value?: string | string[];
828
+ /** Display text for the selected value(s) */
829
+ displayValue?: string;
830
+ /** Whether the dropdown is open */
831
+ open?: boolean;
832
+ /** Callback when dropdown open state changes */
833
+ onOpenChange?: (open: boolean) => void;
834
+ /** Show selection count badge */
835
+ showIndicator?: boolean;
836
+ /** Selection count for indicator badge */
837
+ indicatorCount?: number;
838
+ /** Material Symbol name for left icon (e.g., "account_circle", "search") */
839
+ leftIcon?: string;
840
+ /** Icon variant style. Default: "outlined" */
841
+ iconVariant?: IconProps["variant"];
842
+ /** Render filled variant of icons */
843
+ iconFilled?: boolean;
844
+ /** Render custom left element (overrides leftIcon) */
845
+ leftElement?: React.ReactNode;
846
+ }
847
+ declare const DropdownInput: React.ForwardRefExoticComponent<DropdownInputProps & React.RefAttributes<HTMLButtonElement>>;
848
+
849
+ interface DropdownOption {
850
+ /** Unique value for the option */
851
+ value: string;
852
+ /** Display label for the option */
853
+ label: string;
854
+ /** Optional left icon (Material Symbol name) */
855
+ leftIcon?: string;
856
+ /** Whether this option is disabled */
857
+ disabled?: boolean;
858
+ }
859
+ interface DropdownProps extends Omit<DropdownInputProps, "value" | "open" | "onOpenChange" | "displayValue" | "showIndicator" | "indicatorCount"> {
860
+ /** Array of options for simple usage */
861
+ options?: DropdownOption[];
862
+ /** Selected value (single select) or values (multi-select) */
863
+ value?: string | string[];
864
+ /** Callback when selection changes */
865
+ onValueChange?: (value: string | string[]) => void;
866
+ /** Enable multi-select mode */
867
+ multiple?: boolean;
868
+ /** Custom render for options (overrides options prop) */
869
+ children?: React.ReactNode;
870
+ /** Custom display value (overrides auto-generated display) */
871
+ displayValue?: string;
872
+ /** Width of the dropdown menu. Default: matches trigger width */
873
+ menuWidth?: "trigger" | "auto" | number;
874
+ /** Maximum height of the menu before scrolling. Default: 300 */
875
+ maxHeight?: number;
876
+ /** Align menu relative to trigger. Default: "start" */
877
+ align?: "start" | "center" | "end";
878
+ /** Side offset from trigger. Default: 4 */
879
+ sideOffset?: number;
880
+ }
881
+ declare const Dropdown: React.ForwardRefExoticComponent<DropdownProps & React.RefAttributes<HTMLButtonElement>>;
882
+ interface DropdownItemProps {
883
+ /** Unique value for this option */
884
+ value: string;
885
+ /** Display content */
886
+ children: React.ReactNode;
887
+ /** Whether this option is currently selected */
888
+ selected?: boolean;
889
+ /** Callback when option is selected */
890
+ onSelect?: (value: string) => void;
891
+ /** Left icon (Material Symbol name) */
892
+ leftIcon?: string;
893
+ /** Whether this option is disabled */
894
+ disabled?: boolean;
895
+ /** Whether dropdown is in multi-select mode (shows checkbox) */
896
+ multiple?: boolean;
897
+ /** Additional class names */
898
+ className?: string;
899
+ }
900
+ declare const DropdownItem: React.ForwardRefExoticComponent<DropdownItemProps & React.RefAttributes<HTMLButtonElement>>;
901
+ interface DropdownGroupProps {
902
+ /** Optional section heading */
903
+ heading?: React.ReactNode;
904
+ /** DropdownItem children */
905
+ children: React.ReactNode;
906
+ /** ID for accessibility (aria-labelledby) */
907
+ headingId?: string;
908
+ /** Additional class names */
909
+ className?: string;
910
+ }
911
+ declare const DropdownGroup: React.ForwardRefExoticComponent<DropdownGroupProps & React.RefAttributes<HTMLDivElement>>;
912
+
913
+ export { Accordion, AccordionContent, type AccordionContentProps, AccordionItem, type AccordionItemProps, type AccordionProps, AccordionTrigger, type AccordionTriggerProps, Alert, type AlertAction, type AlertProps, Avatar, AvatarGroup, type AvatarGroupItem, type AvatarGroupProps, type AvatarGroupSize, AvatarProfile, type AvatarProfileProps, type AvatarProps, Badge, type BadgeProps, Breadcrumb, BreadcrumbItem, type BreadcrumbItemProps, BreadcrumbList, BreadcrumbListItem, type BreadcrumbListItemProps, type BreadcrumbListProps, type BreadcrumbProps, BreadcrumbSeparator, type BreadcrumbSeparatorProps, Button, ButtonGroup, ButtonGroupItem, type ButtonGroupItemProps, type ButtonGroupProps, type ButtonGroupSize, type ButtonProps, Checkbox, CheckboxCard, type CheckboxCardProps, type CheckboxProps, CloseButton, type CloseButtonProps, ColorPalette, Divider, type DividerProps, Dropdown, DropdownGroup, type DropdownGroupProps, DropdownInput, type DropdownInputProps, DropdownItem, type DropdownItemProps, type DropdownOption, type DropdownProps, FeaturedIcon, type FeaturedIconProps, Icon, type IconProps, type IconSize, Input, type InputPreset, type InputProps, Menu, MenuGroup, type MenuGroupProps, MenuHeading, type MenuHeadingProps, MenuItem, type MenuItemProps, type MenuItemType, type MenuProps, ProgressBar, type ProgressBarProps, Radio, RadioCard, type RadioCardProps, type RadioProps, Sidebar, SidebarAccountCard, type SidebarAccountCardProps, SidebarContext, type SidebarContextValue, SidebarMenuItem, type SidebarMenuItemProps, type SidebarProps, SidebarSubmenuItem, type SidebarSubmenuItemProps, Slider, type SliderDoubleProps, SliderHandle, type SliderHandleProps, type SliderProps, type SliderSingleProps, type SliderVariant, Tag, type TagProps, TextArea, type TextAreaProps, Toggle, type ToggleProps, Tooltip, TooltipContent, type TooltipContentProps, type TooltipProps, TooltipProvider, TooltipTrigger, accordionTriggerVariants, alertVariants, avatarProfileVariants, avatarVariants, badgeVariants, breadcrumbItemVariants, breadcrumbListVariants, breadcrumbSeparatorVariants, buttonGroupItemVariants, buttonGroupVariants, buttonVariants, closeButtonVariants, dividerVariants, focusRingVariants as dropdownFocusRingVariants, dropdownTriggerVariants, featuredIconVariants, iconVariants, inputWrapperVariants as inputVariants, menuGroupVariants, menuHeadingVariants, menuItemVariants, menuVariants, progressBarFillVariants, progressBarTrackVariants, sidebarAccountCardVariants, sidebarMenuItemVariants, sidebarSubmenuItemVariants, sidebarVariants, sliderHandleCircleVariants, tagVariants, textareaWrapperVariants as textareaVariants, thumbVariants, toggleVariants, tooltipContentVariants, useSidebarContext };