import { default as React, ReactNode, CSSProperties } from 'react'; /** * Generic list item type constraint */ export interface ListItemBase { id: string; } /** * Generic list props */ export interface GenericListProps { items: T[]; renderItem: (item: T, isSelected: boolean, index: number) => ReactNode; keyExtractor?: (item: T) => string; selectedId?: string | null; onSelect?: (id: string | null) => void; emptyState?: ReactNode; className?: string; style?: CSSProperties; gap?: string | number; virtualized?: boolean; } /** * Memoized GenericList component with preserved generic signature */ export declare const GenericList: (props: GenericListProps) => React.ReactElement; /** * Generic detail view props */ export interface GenericDetailProps { item: T | null | undefined; isLoading?: boolean; error?: Error | null; renderContent: (item: T) => ReactNode; renderLoading?: () => ReactNode; renderEmpty?: () => ReactNode; renderError?: (error: Error) => ReactNode; } /** * Memoized GenericDetail component with preserved generic signature */ export declare const GenericDetail: (props: GenericDetailProps) => React.ReactElement; /** * Stats card props */ export interface StatsCardProps { label: string; value: string | number; icon?: ReactNode; trend?: { value: number; direction: 'up' | 'down' | 'neutral'; }; onClick?: () => void; className?: string; style?: CSSProperties; } /** * Stats Card component - memoized for performance */ export declare const StatsCard: React.MemoExoticComponent<({ label, value, icon, trend, onClick, className, style, }: StatsCardProps) => React.ReactElement>; /** * Action configuration */ export interface ActionConfig { id: string; label: string; icon?: ReactNode; onClick: () => void; variant?: 'primary' | 'secondary' | 'danger' | 'ghost'; disabled?: boolean; loading?: boolean; } /** * Action toolbar props */ export interface ActionToolbarProps { actions: ActionConfig[]; className?: string; style?: CSSProperties; size?: 'sm' | 'md' | 'lg'; direction?: 'horizontal' | 'vertical'; } /** * Action Toolbar component - memoized for performance */ export declare const ActionToolbar: React.MemoExoticComponent<({ actions, className, style, size, direction, }: ActionToolbarProps) => React.ReactElement>; /** * Filter panel props */ export interface FilterPanelProps> { filters: TFilters; onChange: (filters: Partial) => void; onClear: () => void; renderFilters: (filters: TFilters, onChange: (key: K, value: TFilters[K]) => void) => ReactNode; isOpen?: boolean; onToggle?: () => void; title?: string; className?: string; style?: CSSProperties; } /** * Memoized FilterPanel component with preserved generic signature */ export declare const FilterPanel: >(props: FilterPanelProps) => React.ReactElement | null; /** * Pagination props */ export interface PaginationProps { currentPage: number; totalPages: number; pageSize: number; totalItems: number; onPageChange: (page: number) => void; onPageSizeChange?: (pageSize: number) => void; pageSizeOptions?: number[]; showPageSizeSelector?: boolean; showItemCount?: boolean; className?: string; style?: CSSProperties; } /** * Pagination component - memoized for performance */ export declare const Pagination: React.MemoExoticComponent<({ currentPage, totalPages, pageSize, totalItems, onPageChange, onPageSizeChange, pageSizeOptions, showPageSizeSelector, showItemCount, className, style, }: PaginationProps) => React.ReactElement>; /** * Search input props */ export interface SearchInputProps { value: string; onChange: (value: string) => void; placeholder?: string; debounceMs?: number; className?: string; style?: CSSProperties; } /** * Search Input component with debouncing - memoized for performance */ export declare const SearchInput: React.MemoExoticComponent<({ value, onChange, placeholder, debounceMs, className, style, }: SearchInputProps) => React.ReactElement>;