import { ReactNode, ReactElement, CSSProperties, ButtonHTMLAttributes, InputHTMLAttributes } from 'react'; export type Size = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'; export type Variant = 'primary' | 'secondary' | 'outline' | 'ghost' | 'destructive' | 'success' | 'warning'; export type AlertType = 'success' | 'error' | 'warning' | 'info'; export type Position = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center'; export type Orientation = 'horizontal' | 'vertical'; export type Shape = 'circle' | 'square' | 'rounded'; export type Status = 'online' | 'offline' | 'away' | 'busy'; export type Theme = 'light' | 'dark'; export interface BaseComponentProps { className?: string; style?: CSSProperties; id?: string; } export interface ButtonProps extends BaseComponentProps, Omit, 'className'> { variant?: Variant; size?: Size; disabled?: boolean; loading?: boolean; leftIcon?: ReactNode; rightIcon?: ReactNode; fullWidth?: boolean; children?: ReactNode; onClick?: (event: React.MouseEvent) => void; type?: 'button' | 'submit' | 'reset'; } export interface InputProps extends BaseComponentProps, Omit, 'className'> { type?: 'text' | 'password' | 'email' | 'search' | 'number' | 'tel' | 'url'; label?: string; placeholder?: string; error?: string; success?: string; disabled?: boolean; required?: boolean; clearable?: boolean; icon?: ReactNode; iconPosition?: 'left' | 'right'; showCount?: boolean; maxLength?: number; readOnly?: boolean; onClear?: () => void; value?: string | number; defaultValue?: string | number; onChange?: (event: React.ChangeEvent) => void; } export interface SelectOption { value: string | number; label: string; disabled?: boolean; group?: string; } export interface SelectProps extends BaseComponentProps { options: SelectOption[]; value?: string | number | Array; onChange?: (value: string | number | Array) => void; placeholder?: string; label?: string; error?: string; disabled?: boolean; required?: boolean; multiSelect?: boolean; searchable?: boolean; grouped?: boolean; creatable?: boolean; onCreateOption?: (value: string) => void; onSearch?: (term: string) => void; loading?: boolean; selectAllOption?: boolean; closeOnSelect?: boolean; maxTagCount?: number; allowClear?: boolean; name?: string; onMenuItemRender?: (option: SelectOption) => ReactNode; renderGroupLabel?: (label: string) => ReactNode; } export interface CheckboxProps extends BaseComponentProps { checked?: boolean; defaultChecked?: boolean; onChange?: (event: React.ChangeEvent) => void; label?: string; disabled?: boolean; required?: boolean; indeterminate?: boolean; size?: Size; name?: string; value?: string | number; ariaLabel?: string; labelPosition?: 'left' | 'right'; borderColor?: string; iconClass?: string; checkedClass?: string; } export interface RadioOption { value: string | number; label: string; disabled?: boolean; } export interface RadioProps extends BaseComponentProps { value?: string | number; checked?: boolean; defaultChecked?: boolean; onChange?: (event: React.ChangeEvent) => void; name?: string; label?: ReactNode; disabled?: boolean; required?: boolean; size?: Size; labelPosition?: 'left' | 'right'; radioColor?: string; ariaLabel?: string; } export interface SwitchProps extends BaseComponentProps { checked?: boolean; defaultChecked?: boolean; onChange?: (checked: boolean) => void; disabled?: boolean; size?: Size; name?: string; trackClass?: string; thumbClass?: string; topLabel?: ReactNode; bottomLabel?: ReactNode; leftLabel?: ReactNode; rightLabel?: ReactNode; ariaLabel?: string; } export interface DatePickerProps extends BaseComponentProps { value?: Date | string | null; onChange?: (date: Date | null) => void; placeholder?: string; label?: string; error?: string; disabled?: boolean; required?: boolean; minDate?: Date | string; maxDate?: Date | string; weekStartsOn?: 0 | 1; portal?: boolean; displayFormat?: string; locale?: any; showClear?: boolean; closeOnSelect?: boolean; } export interface DateRange { start: Date | null; end: Date | null; } export interface DateRangePickerProps extends BaseComponentProps { value?: DateRange; onChange?: (range: DateRange | null) => void; placeholder?: string; label?: string; error?: string; disabled?: boolean; required?: boolean; minDate?: Date | string; maxDate?: Date | string; weekStartsOn?: 0 | 1; portal?: boolean; displayFormat?: string; locale?: any; showClear?: boolean; closeOnSelect?: boolean; } export interface ColorPickerProps extends BaseComponentProps { value?: string; defaultValue?: string; onChange?: (rgbaString: string) => void; swatches?: string[]; showAlpha?: boolean; size?: Size; disabled?: boolean; label?: string; } export interface PriceRange { min: number; max: number; } export interface PriceRangePreset { id: string | number; label: ReactNode; value: PriceRange; } export interface PriceRangePickerProps extends BaseComponentProps { min?: number; max?: number; step?: number; minGap?: number; value?: PriceRange | null; defaultValue?: PriceRange; onChange?: (range: PriceRange) => void; onFinalChange?: (range: PriceRange) => void; showInputs?: boolean; showTooltips?: boolean; disabled?: boolean; presets?: PriceRangePreset[]; formatValue?: (n: number) => string; size?: Size; colorClass?: string; ariaLabel?: string; } export interface FormField { type: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'select' | 'date' | 'textarea' | 'checkbox' | 'radio' | 'file' | 'switch' | 'custom'; name: string; label?: string; placeholder?: string; required?: boolean; options?: SelectOption[] | RadioOption[]; rows?: number; accept?: string; multiple?: boolean; disabled?: boolean; render?: (field: any) => ReactNode; [key: string]: any; } export interface FormFieldGroup { type: 'group'; name: string; title?: string; description?: string; gridCols?: number; fields: FormField[]; } export interface FormProps extends BaseComponentProps { fields: Array; onSubmit?: (data: any) => void; defaultValues?: Record; validationSchema?: any; submitText?: string; resetText?: string; submitButtonClass?: string; resetButtonClass?: string; showReset?: boolean; submitDisabled?: boolean; } export interface TableColumn { key: string; label: string; sortable?: boolean; filterable?: boolean; render?: (value: any, row: T) => ReactNode; width?: string | number; } export interface TableAction { name?: string; label?: string; icon?: ReactNode; render?: (row: T) => ReactNode; onClick?: (row: T) => void; } export interface TableSortConfig { key: string | null; direction: 'asc' | 'desc'; } export interface TableTheme { stripedColors?: string[]; rowHover?: string; accentColor?: string; menuBg?: string; menuItemHover?: string; } export interface TableProps extends BaseComponentProps { data?: T[]; columns?: TableColumn[]; sortable?: boolean; filterable?: boolean; selectable?: boolean; pagination?: boolean; pageSize?: number; onSort?: (key: string, direction: 'asc' | 'desc') => void; onFilter?: (filters: Record) => void; onFilterChange?: (filters: Record) => void; onFetch?: (params: { setData: (rows: T[]) => void; setLoading: (loading: boolean) => void; filters: Record; page: number; limit: number; sort: TableSortConfig; }) => void; onSelectionChange?: (selectedRows: T[]) => void; onRowClick?: (row: T, index: number) => void; hasDetails?: boolean; DetailsComponent?: React.ComponentType<{ row: T; index?: number; }>; withAction?: boolean; onAction?: (args: { action: TableAction; row: T; }) => void; actions?: TableAction[]; showSerial?: boolean; cellClass?: string | ((ctx: { row: T; rowIndex: number; column: TableColumn; columnIndex: number; }) => string); rowClass?: string | ((ctx: { row: T; rowIndex: number; }) => string); globalSearch?: boolean; limitOptions?: number[]; showLimitSelector?: boolean; onLimitChange?: (limit: number) => void; showReloadButton?: boolean; renderReloadButton?: ReactNode | (() => ReactNode); onReload?: () => void; stripedRows?: boolean; theme?: TableTheme; responsiveBreakpoint?: number; serverSide?: boolean; totalRecords?: number; pageNumber?: number; TheadComponent?: React.ComponentType<{ columns: TableColumn[]; data: T[]; }> | null; TfootComponent?: React.ComponentType | null; } export interface NavItem { id: string; label: string; href?: string; icon?: ReactNode; active?: boolean; onClick?: (item: NavItem) => void; children?: NavItem[]; } export interface SidebarItem extends NavItem { badge?: string | number; disabled?: boolean; } export interface FootNavItem extends NavItem { badge?: string | number; } export interface MenuItem { id: string; label: string; onClick: () => void; icon?: ReactNode; divider?: boolean; } export interface UserInfo { name: string; email: string; avatar?: string; menuItems?: MenuItem[]; } export interface Notification { id: string | number; title?: string; message?: string; read: boolean; timestamp?: Date | string; icon?: ReactNode; } export interface NavbarEmitter { emit: (event: string, ...args: any[]) => Promise | any; } export interface NavbarProps extends BaseComponentProps { emitter: NavbarEmitter; logo?: ReactNode; items?: NavItem[]; user?: UserInfo; notifications?: Notification[]; searchable?: boolean; onSearch?: (term: string) => void; leftIcon?: ReactNode | false; onLeftIconClick?: () => void; onLoginClick?: () => void; onLogoutClick?: () => void; rightMenuContent?: ReactNode | ((props: { notifications?: Notification[]; }) => ReactNode); } export interface SidebarProps extends BaseComponentProps { items: SidebarItem[]; collapsed?: boolean; onToggle?: () => void; logo?: ReactNode; user?: UserInfo; onUserClick?: (user: UserInfo) => void; drawerPosition?: 'left' | 'right'; isMobileOpen?: boolean; setIsMobileOpen?: (open: boolean) => void; showCollapsedTooltips?: boolean; tooltipOptions?: Record; } export interface FootNavProps extends BaseComponentProps { items: FootNavItem[]; } export interface BreadcrumbItem { id: string; label: string; href?: string; icon?: ReactNode; onClick?: (item: BreadcrumbItem) => void; } export interface BreadcrumbsProps extends BaseComponentProps { items: BreadcrumbItem[]; separator?: ReactNode; showHome?: boolean; homeIcon?: ReactNode; onHomeClick?: (item: BreadcrumbItem) => void; } export interface AlertProps extends BaseComponentProps { variant?: AlertType; title?: string; children?: ReactNode; dismissible?: boolean; onDismiss?: () => void; } export type DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full'; export interface DialogProps extends BaseComponentProps { isOpen: boolean; onClose: () => void; title?: string; children?: ReactNode; size?: DialogSize; dismissible?: boolean; showCloseButton?: boolean; footer?: ReactNode; onOpen?: (context: { dialogRef: HTMLDivElement | null; }) => void; } export interface ToastProps extends BaseComponentProps { id: string; title?: string; message?: string; type?: AlertType; duration?: number; onClose?: (id: string) => void; position?: Position; } export interface ToastContainerProps { toasts?: ToastProps[]; position?: Position; onRemove?: (id: string) => void; } export interface CardProps extends BaseComponentProps { children?: ReactNode; hover?: boolean; } export interface CardHeaderProps extends BaseComponentProps { children?: ReactNode; } export interface CardTitleProps extends BaseComponentProps { children?: ReactNode; } export interface CardDescriptionProps extends BaseComponentProps { children?: ReactNode; } export interface CardContentProps extends BaseComponentProps { children?: ReactNode; } export interface CardFooterProps extends BaseComponentProps { children?: ReactNode; } export interface AvatarProps extends BaseComponentProps { src?: string; alt?: string; name?: string; size?: Size; shape?: Shape; status?: Status; } export interface BadgeProps extends BaseComponentProps { children?: ReactNode; variant?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'outline'; size?: Size; rounded?: boolean; } export interface TabsProps extends BaseComponentProps { children?: ReactNode; defaultIndex?: number; index?: number; onChange?: (index: number) => void; orientation?: Orientation; size?: Size; variant?: 'line' | 'pills' | 'unstyled'; animated?: boolean; } export interface TabListProps extends BaseComponentProps { children?: ReactNode; } export interface TabProps extends BaseComponentProps { children?: ReactNode; index?: number; iconLeft?: ReactNode; iconRight?: ReactNode; disabled?: boolean; tabClassName?: string; } export interface TabPanelsProps extends BaseComponentProps { children?: ReactNode; } export interface TabPanelProps extends BaseComponentProps { children?: ReactNode; index?: number; animated?: boolean; } export interface AccordionItem { id?: string; title: ReactNode; subtitle?: ReactNode; content: ReactNode; disabled?: boolean; leftIcon?: ReactNode | ((index: number, item: any) => ReactNode); } export interface AccordionProps extends BaseComponentProps { items: AccordionItem[]; allowMultiple?: boolean; defaultOpenIndexes?: number[]; onChange?: (openIndexes: number[]) => void; headerClassName?: string; contentClassName?: string; chevronPosition?: 'left' | 'right'; chevronIcon?: ReactNode; bordered?: boolean; rounded?: 'none' | 'sm' | 'md' | 'lg' | 'xl'; size?: 'sm' | 'md' | 'lg'; transitionDuration?: number; } export interface StepperStep { title: string; description?: string; icon?: ReactNode; status?: 'completed' | 'current' | 'upcoming'; } export interface StepperProps extends BaseComponentProps { steps: StepperStep[]; currentStep: number; onStepClick?: (step: StepperStep, index: number) => void; orientation?: Orientation; variant?: string; } export interface PaginationProps extends BaseComponentProps { currentPage: number; totalPages: number; onPageChange: (page: number) => void; showFirstLast?: boolean; showPrevNext?: boolean; maxVisiblePages?: number; } export interface LoaderProps extends BaseComponentProps { size?: Size | number; speed?: number; thickness?: number; color?: string; secondaryColor?: string; variant?: string; inline?: boolean; ariaLabel?: string; text?: ReactNode; reverse?: boolean; } export interface SkeletonProps extends BaseComponentProps { count?: number; circle?: boolean; height?: string | number; width?: string | number; rounded?: boolean; animated?: boolean; active?: boolean; gap?: string; inline?: boolean; children?: ReactNode; } export interface ProgressBarProps extends BaseComponentProps { value?: number; max?: number; size?: Size | number; showValue?: boolean; rounded?: boolean; color?: string; bgColor?: string; valueColor?: string; striped?: boolean; animated?: boolean; label?: ReactNode; ariaLabel?: string; } export interface RoundedTagProps extends BaseComponentProps { label?: ReactNode; avatarSrc?: string; avatarAlt?: string; initials?: string; size?: Size; onRemove?: () => void; onClick?: (event: React.MouseEvent) => void; closeClass?: string; ariaLabel?: string; avatarPosition?: 'left' | 'right'; avatarClassname?: string; initialClassname?: string; } export type TooltipTrigger = 'hover' | 'click' | 'focus'; export interface TooltipProps extends BaseComponentProps { position?: 'auto' | 'top' | 'bottom' | 'left' | 'right'; trigger?: TooltipTrigger | TooltipTrigger[]; content?: ReactNode | ((args: { close: () => void; }) => ReactNode); customTrigger?: ReactElement; children?: ReactNode; open?: boolean; defaultOpen?: boolean; onChange?: (open: boolean) => void; delay?: number; offset?: number; textClass?: string; bgClass?: string; portal?: boolean; } export interface FileUploadProps extends BaseComponentProps { accept?: string; multiple?: boolean; maxSize?: number; files?: File[]; onFileSelect?: (files: File[]) => void; onFileRemove?: (index: number) => void; disabled?: boolean; } export interface CarouselProps extends BaseComponentProps { children?: ReactNode; autoPlay?: boolean; interval?: number; showDots?: boolean; itemClassName?: string; } export interface ConditionProps { condition: any; children: ReactNode; fallback?: ReactNode; } export interface RateProps extends BaseComponentProps { count?: number; value?: number; defaultValue?: number; readOnly?: boolean; icon?: ReactNode; toggledIcon?: ReactNode; activeColor?: string; inactiveColor?: string; size?: number; onChange?: (value: number) => void; onClick?: (value: number) => void; text?: ReactNode; name?: string; } export interface ThreeDotPopoverItem { key?: string | number; label: ReactNode; icon?: React.ComponentType | ReactNode; onClick?: (item: ThreeDotPopoverItem) => void; disabled?: boolean; destructive?: boolean; } export interface ThreeDotPopoverProps extends BaseComponentProps { items?: ThreeDotPopoverItem[]; trigger?: ReactElement; menuClass?: string; menuItemClass?: string; closeOnSelect?: boolean; ariaLabel?: string; } export interface LatLng { lat: number; lng: number; } export interface LocationPickerProps extends BaseComponentProps { value?: LatLng | null; onChange?: (location: LatLng | null) => void; inputProps?: Record; icon?: ReactElement; iconProps?: Record; iconPosition?: 'left' | 'right'; placeholder?: string; } export interface SpeechToTextState { isListening: boolean; isSupported: boolean; error: Error | null; start: () => void; stop: () => void; toggle: () => void; disabled: boolean; } export interface SpeechToTextProps { lang?: string; continuous?: boolean; interimResults?: boolean; onSpeechComplete?: (text: string) => void; onSpeaking?: (interim: string) => void; onError?: (err: Error) => void; onStart?: () => void; onStop?: () => void; renderButton?: (state: SpeechToTextState) => ReactNode; autoStart?: boolean; disabled?: boolean; resetOnStart?: boolean; } export interface TextToSpeechState { onClick: () => void; isSpeaking: boolean; } export interface TextToSpeechProps { text?: string; rate?: number; pitch?: number; onSpeak?: (text: string) => void; renderButton?: (state: TextToSpeechState) => ReactNode; } export interface ThemeContextValue { theme: Theme; setTheme: (theme: Theme) => void; toggleTheme: () => void; isDark: boolean; isLight: boolean; } export interface ThemeProviderProps { children: ReactNode; defaultTheme?: Theme; } export interface ApiConfig { BASE_URL?: string; DEFAULT_HEADERS?: Record; apiMap?: Record { url: string; method: string; headers?: Record; data?: any; }>; createRequestInstance?: (baseURL?: string | null, defaultHeaders?: Record) => any; sendRequest?: (requestInstance: any, method: string, url: string, data?: any, headers?: Record) => Promise; } export interface UseApiReturn { data: any; error: any; loading: boolean; fetchData: (url: string, method: string, data?: any, headers?: Record, options?: { needLoading?: boolean; }) => Promise; fetchApi: (apiKey: string, data?: any, needLoading?: boolean) => Promise; lastRequest: string | null; } export interface ToastFunction { (title: string, message?: string, options?: Partial): void; } export interface UseToastReturn { toast: { success: ToastFunction; error: ToastFunction; warning: ToastFunction; info: ToastFunction; }; toasts: ToastProps[]; removeToast: (id: string) => void; } export interface StoreProviderProps { children: ReactNode; loading?: ReactNode; initialState?: Record; } export type ClassValue = string | number | boolean | undefined | null | ClassValue[] | Record; export type ClassNameFunction = (...inputs: ClassValue[]) => string; export interface HelperOptions { state?: Record; prefix?: string; } export interface EmitterPayload { listener: (...args: any[]) => any; once?: boolean; schedule?: Date | number | string; } export interface EmitterConfig { resolve: (value?: any) => void; reject: (reason?: any) => void; } //# sourceMappingURL=index.d.ts.map