UNPKG

@buddhacognitivelab/theme-glassmorphic

Version:

Enhanced glassmorphic theme package with dual-mode support, advanced glass effects, interactive UI components, and gesture-based interactions

59 lines (58 loc) 1.99 kB
/** * @fileoverview Dropdown component with glassmorphic styling */ import React from 'react'; import type { GlassIntensity } from '../../types/theme'; export interface DropdownItem { /** Item key */ key: string; /** Item label */ label: string; /** Item value */ value?: any; /** Whether item is disabled */ disabled?: boolean; /** Item icon */ icon?: React.ReactNode; /** Item description */ description?: string; /** Whether item is a divider */ divider?: boolean; /** Custom onClick handler */ onClick?: (item: DropdownItem) => void; /** Nested items for submenu */ children?: DropdownItem[]; } export interface DropdownProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'onSelect'> { /** Dropdown trigger element */ trigger: React.ReactNode; /** Dropdown items */ items: DropdownItem[]; /** Dropdown placement */ placement?: 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end' | 'left-start' | 'left-end' | 'right-start' | 'right-end'; /** Glass effect intensity */ glassIntensity?: GlassIntensity; /** Whether dropdown is disabled */ disabled?: boolean; /** Trigger mode */ triggerMode?: 'click' | 'hover'; /** Callback when item is selected */ onSelect?: (item: DropdownItem) => void; /** Whether to close on item click */ closeOnSelect?: boolean; /** Custom dropdown width */ width?: number | string; /** Maximum height of dropdown */ maxHeight?: number; /** Whether dropdown is open (controlled) */ open?: boolean; /** Callback when open state changes */ onOpenChange?: (open: boolean) => void; /** Additional CSS class */ className?: string; /** Dropdown offset from trigger */ offset?: number; /** Whether to show arrow */ showArrow?: boolean; } export declare const Dropdown: React.ForwardRefExoticComponent<DropdownProps & React.RefAttributes<HTMLDivElement>>;