import type { ReactNode } from 'react' import type { Table } from '@tanstack/react-table' import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@evobgp/ui/components/card' import { DataGridToolbar } from '@/components/data-grid-toolbar' import { DataGridPagination } from '@/components/reui/data-grid/data-grid-pagination' import { DataGrid, DataGridContainer } from '@/components/reui/data-grid/data-grid' import { DataGridTable } from '@/components/reui/data-grid/data-grid-table' import { DATA_GRID_PAGINATION_RU, DATA_GRID_TABLE_LAYOUT, } from '@/lib/data-grid-defaults' interface DataGridShellProps { table: Table recordCount: number isLoading?: boolean emptyMessage?: ReactNode showPagination?: boolean tableLayout?: typeof DATA_GRID_TABLE_LAYOUT className?: string onRowClick?: (row: TData) => void } export function DataGridShell({ table, recordCount, isLoading = false, emptyMessage, showPagination = true, tableLayout = DATA_GRID_TABLE_LAYOUT, className, onRowClick, }: DataGridShellProps) { return ( {showPagination ? (
) : null}
) } interface DataGridCardProps { title?: string description?: string actions?: ReactNode children: ReactNode className?: string } export function DataGridCard({ title, description, actions, children, className }: DataGridCardProps) { const hasHeader = Boolean(title || description || actions) return ( {hasHeader ? (
{title ? {title} : null} {description ? {description} : null}
{actions ?
{actions}
: null}
) : null} {children}
) } interface DataGridSectionProps extends DataGridShellProps { searchValue: string onSearchChange: (value: string) => void searchPlaceholder?: string toolbarFilters?: ReactNode toolbarActions?: ReactNode beforeGrid?: ReactNode } export function DataGridSection({ searchValue, onSearchChange, searchPlaceholder, toolbarFilters, toolbarActions, beforeGrid, ...shellProps }: DataGridSectionProps) { return ( <> {beforeGrid} ) }