UNPKG

@rxxuzi/gumi

Version:

Clean & minimal design system with delightful interactions

90 lines (89 loc) 2.16 kB
export interface GumiOptions { duration?: number; easing?: string; delay?: number; } export interface AnimationOptions extends GumiOptions { fill?: FillMode; iterations?: number; direction?: PlaybackDirection; } export interface ToastOptions { type?: 'info' | 'success' | 'warning' | 'error'; duration?: number; position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right'; } export interface ModalOptions { backdrop?: boolean; keyboard?: boolean; focus?: boolean; } export interface ThemeOptions { theme: 'light' | 'dark' | 'auto'; savePreference?: boolean; } export interface ProgressOptions { value: number; animated?: boolean; striped?: boolean; } export interface DropdownOptions { trigger?: 'click' | 'hover'; closeOnClick?: boolean; keyboard?: boolean; } export interface AccordionOptions { multiple?: boolean; collapsed?: boolean; } export interface TabOptions { activeIndex?: number; onChange?: (index: number) => void; } export interface ValidatorRule { required?: boolean; min?: number; max?: number; pattern?: RegExp; custom?: (value: any) => boolean; message?: string; } export interface FormValidationOptions { rules?: Record<string, ValidatorRule>; showErrors?: boolean; validateOnChange?: boolean; } export type GumiElement = Element | HTMLElement | string | null; export interface GumiEventMap { 'theme-change': CustomEvent<{ theme: string; }>; 'modal-open': CustomEvent<{ modal: HTMLElement; }>; 'modal-close': CustomEvent<{ modal: HTMLElement; }>; 'toast-show': CustomEvent<{ toast: HTMLElement; }>; 'toast-hide': CustomEvent<{ toast: HTMLElement; }>; 'tab-change': CustomEvent<{ index: number; }>; 'accordion-toggle': CustomEvent<{ item: HTMLElement; open: boolean; }>; 'switch-change': CustomEvent<{ checked: boolean; }>; 'gumi:dropdown:show': CustomEvent<{ dropdown: any; }>; 'gumi:dropdown:hide': CustomEvent<{ dropdown: any; }>; }