import { type ButtonHTMLAttributes, type ReactNode } from "react"; import { type ColumnDef } from "@tanstack/react-table"; export declare function PageHeader({ title, description, actions, }: { title: ReactNode; description?: ReactNode; actions?: ReactNode; }): import("react/jsx-runtime").JSX.Element; export declare function PageBody({ children }: { children: ReactNode; }): import("react/jsx-runtime").JSX.Element; export declare function Button({ variant, className, ...props }: ButtonHTMLAttributes & { variant?: "primary" | "secondary" | "ghost" | "danger"; }): import("react/jsx-runtime").JSX.Element; export declare function IconButton({ label, children, ...props }: ButtonHTMLAttributes & { label: string; children: ReactNode; }): import("react/jsx-runtime").JSX.Element; export declare function Modal({ open, title, description, onClose, children, }: { open: boolean; title: string; description?: string; onClose: () => void; children: ReactNode; }): import("react/jsx-runtime").JSX.Element | null; export declare function Field({ label, hint, children, }: { label: string; hint?: string; children: ReactNode; }): import("react/jsx-runtime").JSX.Element; export declare function LoadingRows({ rows }: { rows?: number; }): import("react/jsx-runtime").JSX.Element; export type ColumnMeta = { align?: "left" | "right" | "center"; width?: number; cellClassName?: string; hideOnMobile?: boolean; }; export declare function DataTable({ columns, data, getRowId, rowHref, onRowClick, searchPlaceholder, searchFn, rightSlot, filters, empty, pageSize, }: { columns: ColumnDef[]; data: T[]; getRowId?: (row: T) => string; rowHref?: (row: T) => string; onRowClick?: (row: T) => void; searchPlaceholder?: string; searchFn?: (row: T, query: string) => boolean; rightSlot?: ReactNode; filters?: ReactNode; empty?: ReactNode; pageSize?: number; }): import("react/jsx-runtime").JSX.Element; export declare function useStableColumns(factory: () => ColumnDef[], deps: unknown[]): ColumnDef[]; //# sourceMappingURL=components.d.ts.map