export * from '../@types/common'; export * from '../@types/page'; export * from '../@types/pagination-model'; export interface BaseComponentProps { className?: string; style?: React.CSSProperties; 'data-testid'?: string; } export interface ThemeConfig { mode: 'light' | 'dark'; primaryColor?: any; direction: 'ltr' | 'rtl'; } export interface ERPUIProviderProps { theme?: ThemeConfig; children: React.ReactNode; } export interface LibraryReduxSlices { share?: any; header?: any; reportsTitleBar?: any; } export interface ReduxIntegration { slices: LibraryReduxSlices; middleware: any[]; } export interface SelectOption { label: string; value: any; disabled?: boolean; } export interface TableColumn { id: string; label: string; minWidth?: number; align?: 'left' | 'right' | 'center'; format?: (value: any) => string; } export interface PaginationProps { count: number; page: number; rowsPerPage: number; onPageChange: (event: unknown, newPage: number) => void; onRowsPerPageChange: (event: React.ChangeEvent) => void; } export interface FormField { name: string; label: string; type: string; required?: boolean; validation?: any; } export interface ApiResponse { success: boolean; data?: T; message?: string; error?: string; } export interface Language { code: string; name: string; direction: 'ltr' | 'rtl'; flag?: string; } export interface LanguageContextType { currentLanguage: Language; availableLanguages: Language[]; changeLanguage: (languageCode: string) => void; t: (key: string, params?: Record) => string; } export interface User { id: string; name: string; email: string; role?: string; permissions?: string[]; } export interface AuthContextType { user: User | null; isAuthenticated: boolean; login: (credentials: any) => Promise; logout: () => void; loading: boolean; } export interface PageContextType { currentPage: string; setCurrentPage: (page: string) => void; breadcrumbs: any[]; setBreadcrumbs: (breadcrumbs: any[]) => void; } export interface Permission { resource: string; action: string; granted: boolean; } export interface PermissionContextType { permissions: Permission[]; hasPermission: (resource: string, action: string) => boolean; loading: boolean; }