@buddhacognitivelab/theme-glassmorphic
Version:
Enhanced glassmorphic theme package with dual-mode support, advanced glass effects, interactive UI components, and gesture-based interactions
65 lines (64 loc) • 2.06 kB
TypeScript
/**
* @fileoverview Select component with glassmorphic styling
*/
import React from 'react';
import type { GlassIntensity } from '../../types/theme';
export interface SelectOption {
/** Option value */
value: string | number;
/** Option label */
label: string;
/** Whether option is disabled */
disabled?: boolean;
/** Option description */
description?: string;
/** Custom icon */
icon?: React.ReactNode;
}
export interface SelectProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {
/** Select options */
options: SelectOption[];
/** Current selected value */
value?: string | number;
/** Default selected value */
defaultValue?: string | number;
/** Callback when selection changes */
onChange?: (value: string | number, option: SelectOption) => void;
/** Select size */
size?: 'small' | 'medium' | 'large';
/** Glass effect intensity */
glassIntensity?: GlassIntensity;
/** Select state */
state?: 'default' | 'error' | 'warning' | 'success';
/** Select label */
label?: string;
/** Placeholder text */
placeholder?: string;
/** Helper text */
helperText?: string;
/** Error message */
error?: string;
/** Whether select is disabled */
disabled?: boolean;
/** Whether select is loading */
loading?: boolean;
/** Whether select is searchable */
searchable?: boolean;
/** Whether select allows multiple selection */
multiple?: boolean;
/** Whether to clear selection */
clearable?: boolean;
/** Custom search placeholder */
searchPlaceholder?: string;
/** Custom no options message */
noOptionsMessage?: string;
/** Maximum height of dropdown */
maxHeight?: number;
/** Additional CSS class */
className?: string;
/** Required field indicator */
required?: boolean;
/** Full width */
fullWidth?: boolean;
}
export declare const Select: React.ForwardRefExoticComponent<SelectProps & React.RefAttributes<HTMLDivElement>>;