import React, { FC } from 'react'; import { TableColumn, HeaderAction, COMPONENT_TYPE, RowAction } from '@appcorp/shadcn/components/enhanced-table'; /** * Generic Component Factory * * Reusable UI components for CRUD modules with customizable configuration. * Generates tables, forms, drawers, and other common UI patterns. */ declare const DRAWER_TYPES: { FORM_DRAWER: string; FILTER_DRAWER: string; VIEW_DRAWER: string; MORE_ACTIONS_DRAWER: string; MISC_DRAWER_1: string; MISC_DRAWER_2: string; }; interface ComponentConfig { cancelLabel?: string; drawerDescription?: string; drawerFilterDescription: string; drawerFilterTitle: string; drawerFormDescription: string; drawerFormTitle: string; drawerMisc1Description?: string; drawerMisc1Title?: string; drawerMisc2Description?: string; drawerMisc2Title?: string; drawerMoreActionsDescription: string; drawerMoreActionsTitle: string; drawerViewDescription: string; drawerViewTitle: string; filterContent: React.ReactNode; filterDrawerValue?: string; formContent: React.ReactNode; formDrawerValue?: string; misc1Content?: React.ReactNode; misc2Content?: React.ReactNode; moduleName: string; moreActionsContent: React.ReactNode; numberOfFilters?: number; onClearFilters: () => void; saveLabel?: string; searchPlaceholder: string; size?: 'small' | 'medium' | 'large' | 'full'; tableColumns: TableColumn[]; tableDescription: string; tableTitle: string; viewContent: React.ReactNode; viewDrawerValue?: string; } interface TableBodyCol { key?: string | string[]; componentType: COMPONENT_TYPE | string; textFormatter?: (value: unknown, row: unknown) => React.ReactNode; } interface GenericTableProps { config: ComponentConfig; context: any; headerActions?: HeaderAction[]; iconMap?: Record; rowActions?: any[]; tableBodyCols: TableBodyCol[]; } declare const GenericTable: FC; interface GenericDrawerProps { config: ComponentConfig; context: any; formContent?: React.ReactNode; viewContent?: React.ReactNode; filterContent?: React.ReactNode; moreActionsContent?: React.ReactNode; misc1Content?: React.ReactNode; misc2Content?: React.ReactNode; } declare const GenericDrawer: FC; interface GenericModulePageProps { context: any; headerActions?: HeaderAction[]; iconMap?: Record; overrideConfig: ComponentConfig; rowActions?: RowAction[]; tableBodyCols: TableBodyCol[]; } declare const createGenericModulePage: () => React.FC; export { type ComponentConfig, DRAWER_TYPES, GenericDrawer, GenericTable, type TableBodyCol, createGenericModulePage };