import React from "react"; export interface TableColumn { key?: string; label: string; width?: string; componentType?: COMPONENT_TYPE | string; } export declare enum COMPONENT_TYPE { ID = "ID", BOLD_TEXT = "BOLD_TEXT", TEXT = "TEXT", OBJECT = "OBJECT", MULTIPLE_TEXT_LINES = "MULTIPLE_TEXT_LINES", CREATED_UPDATED_AT = "CREATED_UPDATED_AT", ACTIONS = "ACTIONS", BOOLEAN = "BOOLEAN" } export interface TableRow extends Record { id?: string; [key: string]: unknown; } export interface RowAction { id?: string; key?: string; label: string; enabled?: boolean | ((row?: TableRow) => boolean); order?: number; variant?: "default" | "destructive"; /** Preferred handler for row and header actions. Receives the full `row` when invoked from a row. */ handleOnClick?: (row?: TableRow) => void; } export interface HeaderAction { id?: string; key?: string; label: string; enabled?: boolean | ((row?: TableRow) => boolean); order?: number; variant?: "default" | "outline" | "secondary"; /** Preferred handler — will receive a `row` when invoked from row actions. */ handleOnClick?: (row?: TableRow) => void; } export interface PageLimitOption { option: string; } export interface EnhancedTableProps { /** Columns configuration for the table header. */ tableHeadItems: TableColumn[]; /** Row data to render in the table body. */ tableBodyRows: TableRow[]; /** Column definitions describing how to render each cell. */ tableBodyCols: Array<{ /** Key path(s) used to resolve the value from a row. Supports colon-separated nested paths. */ key?: string | string[]; /** Component type (from `COMPONENT_TYPE`) or a compatible external string. */ componentType: COMPONENT_TYPE | string; /** Optional custom formatter invoked with `(value, row)` to render the cell. */ textFormatter?: (value: unknown, row: unknown) => React.ReactNode; }>; /** Visible table heading shown above the table. */ tableHeading: string; /** Optional description text shown beneath the heading. */ tableDescription?: string; /** Current page number (1-based). */ currentPage: number; /** Total number of pages available. */ totalPages: number; /** Items per page (page size). */ pageLimit: number; /** Options for rows-per-page selector. */ listOptions: PageLimitOption[]; /** Called when the user navigates to the next page. */ handleNextOnClick: () => void; /** Called when the user navigates to the previous page. */ handlePreviousOnClick: () => void; /** Handler for select changes in pagination controls. */ handleOnSelect: (node: string, value: object) => void; /** Whether the "next" control is disabled. */ isNextDisabled: boolean; /** Whether the "previous" control is disabled. */ isPreviousDisabled: boolean; /** Enable/disable the search input in the table header. */ searchEnabled?: boolean; /** Current search input value. */ searchValue: string; /** Placeholder text for the search input. */ searchPlaceholder?: string; /** Optional id attribute for the search input element. */ searchId?: string; /** Disable the search input. */ searchDisabled?: boolean; /** Called when the search input value changes. */ handleSearchInput: (key: string, value: string) => void; /** Header-level actions to show in the table header. */ headerActions: HeaderAction[]; /** Row-level actions for each row. */ rowActions: RowAction[]; /** Number of active filters (shown in header actions). */ numberOfFilters?: number; /** Called to clear applied filters. */ onClearFilters?: () => void; /** Whether the table is currently loading data. */ loading: boolean; /** Render layout in right-to-left mode when true. */ isRTL?: boolean; /** Optional override labels used for UI text in the table. */ translationLabels?: { /** Label to use for boolean `true`. */ booleanYes?: string; /** Label to use for boolean `false`. */ booleanNo?: string; /** Empty-state text when no rows exist. */ noResultsFound?: string; /** Label for the previous page control. */ previousPage?: string; /** Label for the next page control. */ nextPage?: string; /** Label for the word "page" used in pagination. */ page?: string; /** Label for the word "of" used in pagination. */ of?: string; /** Label used while loading. */ loading?: string; /** Label for the rows-per-page control. */ rowsPerPage?: string; }; /** Optional key name used by the pagination select control (defaults to "pageLimit"). */ nodeSelectKey?: string; /** `data-testid` for the root container wrapping the whole component. */ testIdWrapper?: string; /** `data-testid` for the table heading (`h2`). */ testIdHeading?: string; /** `data-testid` for the optional table description paragraph. */ testIdTableDescription?: string; /** `data-testid` for the search wrapper (contains the header search component). */ testIdSearch?: string; /** `data-testid` for the header actions wrapper. */ testIdHeaderActions?: string; /** `data-testid` prefix for individual header action buttons: `${prefix}-${index}`. */ testIdHeaderActionPrefix?: string; /** `data-testid` for the filter badge showing number of active filters. */ testIdHeaderActionFilterBadge?: string; /** `data-testid` for the clear filters button/icon. */ testIdHeaderActionClearFilters?: string; /** `data-testid` for the table wrapper (the bordered `div` that contains the table). */ testIdTableWrapper?: string; /** Prefix used for row test ids: `${prefix}-${rowIndex}`. */ testIdRowPrefix?: string; /** Prefix used for cell test ids: `${prefix}-${rowIndex}-${colIndex}`. */ testIdCellPrefix?: string; /** `data-testid` prefix for row action dropdown menu items: `${prefix}-${rowIndex}-${actionIndex}`. */ testIdRowActionPrefix?: string; /** `data-testid` for the no-results empty state cell. */ testIdNoResults?: string; /** Prefix used for loading row test ids: `${prefix}-${index}`. */ testIdLoadingRowPrefix?: string; /** `data-testid` for the pagination wrapper area. */ testIdPaginationWrapper?: string; /** `data-testid` forwarded to the footer pagination component. */ testIdFooterPagination?: string; /** `data-testid` forwarded to the footer page component. */ testIdFooterPage?: string; /** `data-testid` forwarded to the footer action component. */ testIdFooterAction?: string; /** RTL `data-testid` for the root container. */ testIdWrapperRtl?: string; /** RTL `data-testid` for the table heading. */ testIdHeadingRtl?: string; /** RTL `data-testid` for the table description. */ testIdTableDescriptionRtl?: string; /** RTL `data-testid` for the search wrapper. */ testIdSearchRtl?: string; /** RTL `data-testid` for the header actions wrapper. */ testIdHeaderActionsRtl?: string; /** RTL `data-testid` prefix for individual header action buttons: `${prefix}-${index}`. */ testIdHeaderActionPrefixRtl?: string; /** RTL `data-testid` for the filter badge showing number of active filters. */ testIdHeaderActionFilterBadgeRtl?: string; /** RTL `data-testid` for the clear filters button/icon. */ testIdHeaderActionClearFiltersRtl?: string; /** RTL `data-testid` for the table wrapper. */ testIdTableWrapperRtl?: string; /** Prefix used for row test ids in RTL: `${prefix}-${rowIndex}`. */ testIdRowPrefixRtl?: string; /** Prefix used for cell test ids in RTL: `${prefix}-${rowIndex}-${colIndex}`. */ testIdCellPrefixRtl?: string; /** RTL `data-testid` prefix for row action dropdown menu items: `${prefix}-${rowIndex}-${actionIndex}`. */ testIdRowActionPrefixRtl?: string; /** RTL `data-testid` for the no-results empty state cell. */ testIdNoResultsRtl?: string; /** Prefix used for loading row test ids in RTL: `${prefix}-${index}`. */ testIdLoadingRowPrefixRtl?: string; /** RTL `data-testid` for the pagination wrapper area. */ testIdPaginationWrapperRtl?: string; /** RTL `data-testid` forwarded to the footer pagination component. */ testIdFooterPaginationRtl?: string; /** RTL `data-testid` forwarded to the footer page component. */ testIdFooterPageRtl?: string; /** RTL `data-testid` forwarded to the footer action component. */ testIdFooterActionRtl?: string; } export declare const EnhancedTable: React.FC;