import { ReactNode, HTMLAttributes, ButtonHTMLAttributes, InputHTMLAttributes } from 'react'; export interface BaseProps { className?: string; children?: ReactNode; } export interface ButtonProps extends ButtonHTMLAttributes, BaseProps { variant?: 'primary' | 'secondary' | 'ghost'; size?: 'sm' | 'md' | 'lg'; accent?: boolean; loading?: boolean; } export interface ToggleSwitchProps extends BaseProps { checked?: boolean; onChange?: (checked: boolean) => void; disabled?: boolean; label?: string; accent?: boolean; } export interface SliderProps extends BaseProps { value?: number; onChange?: (value: number) => void; min?: number; max?: number; step?: number; disabled?: boolean; label?: string; accent?: boolean; } export interface InputProps extends InputHTMLAttributes, BaseProps { label?: string; error?: string; variant?: 'default' | 'minimal'; } export interface CardProps extends HTMLAttributes, BaseProps { variant?: 'default' | 'glass' | 'dotted'; padding?: 'none' | 'sm' | 'md' | 'lg'; } export interface ModalProps extends BaseProps { open?: boolean; onClose?: () => void; title?: string; } export interface TabsProps extends BaseProps { tabs: { id: string; label: string; content: ReactNode; }[]; activeTab?: string; onTabChange?: (tabId: string) => void; } export interface TooltipProps extends BaseProps { content: ReactNode; position?: 'top' | 'bottom' | 'left' | 'right'; } export interface BadgeProps extends BaseProps { variant?: 'default' | 'accent' | 'outline'; size?: 'sm' | 'md'; }