/** * TypeScript definitions for bare-v2 scripts */ export interface ToastOptions { title?: string; description?: string; variant?: 'default' | 'success' | 'error' | 'destructive' | 'warning' | 'info'; duration?: number; // 0 = persistent action?: string; // HTML string for action button icon?: string; // HTML string for custom icon } export interface ToastInstance { id: number; element: HTMLElement; timeoutId: number | null; } export interface ToastAPI { show(options: ToastOptions): number; success(title: string, description?: string, options?: Partial): number; error(title: string, description?: string, options?: Partial): number; warning(title: string, description?: string, options?: Partial): number; info(title: string, description?: string, options?: Partial): number; dismiss(id: number): void; } export interface ThemeAPI { toggle(): void; set(theme: 'light' | 'dark'): void; get(): 'light' | 'dark'; init(): void; } export interface DropdownOptions { closeOnClick?: boolean; closeOnOutsideClick?: boolean; triggerEvent?: 'click' | 'hover'; } export interface DropdownAPI { init(selector?: string, options?: DropdownOptions): void; open(selector: string): void; close(selector: string): void; closeAll(): void; } export interface NavigationOptions { navSelector?: string; linkSelector?: string; activeClass?: string; openClass?: string; closeOnLinkClick?: boolean; closeOnBackdropClick?: boolean; } export interface NavigationAPI { init(options?: NavigationOptions): void; open(selector: string): void; close(selector: string): void; toggle(selector: string): void; refreshActive(navSelector?: string): void; } export interface BareAPI { toast: ToastAPI; theme: ThemeAPI; dropdown: DropdownAPI; navigation: NavigationAPI; version: string; } declare global { interface Window { bare: BareAPI; } // Build-time constants const __VERSION__: string; }