@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
TypeScript
/**
* @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>>;