@buddhacognitivelab/theme-glassmorphic
Version:
Enhanced glassmorphic theme package with dual-mode support, advanced glass effects, interactive UI components, and gesture-based interactions
62 lines (61 loc) • 1.8 kB
TypeScript
/**
* @fileoverview Menu component with glassmorphic styling
*/
import React from 'react';
export interface MenuItem {
/** Unique identifier */
id: string;
/** Menu item label */
label: string;
/** Optional icon */
icon?: React.ReactNode;
/** Whether item is disabled */
disabled?: boolean;
/** Whether item is a divider */
divider?: boolean;
/** Submenu items */
children?: MenuItem[];
/** Click handler */
onClick?: () => void;
/** Custom className */
className?: string;
/** Badge content */
badge?: string | number;
/** Keyboard shortcut */
shortcut?: string;
}
export interface MenuProps {
/** Menu items */
items: MenuItem[];
/** Trigger element */
trigger: React.ReactNode;
/** Menu placement */
placement?: 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end' | 'left-start' | 'left-end' | 'right-start' | 'right-end';
/** Glass effect intensity */
glassIntensity?: 'light' | 'medium' | 'heavy';
/** Whether menu is disabled */
disabled?: boolean;
/** Trigger mode */
triggerMode?: 'click' | 'hover' | 'contextmenu';
/** Whether menu is open (controlled) */
open?: boolean;
/** Open change handler */
onOpenChange?: (open: boolean) => void;
/** Item select handler */
onSelect?: (item: MenuItem) => void;
/** Whether to close on item select */
closeOnSelect?: boolean;
/** Menu width */
width?: string | number;
/** Maximum height */
maxHeight?: string | number;
/** Custom className */
className?: string;
/** Offset from trigger */
offset?: number;
/** Whether to show arrow */
showArrow?: boolean;
/** Z-index */
zIndex?: number;
}
export declare const Menu: React.FC<MenuProps>;