import { JSX } from 'react'; import { CellClickedEvent, CellSelectionChangedEvent, CellValueChangedEvent, ColumnMovedEvent, ColumnResizedEvent, ColumnsStateChangedEvent, ColumnSortedEvent, DataChangedEvent, ExportEvent, FilterChangedEvent, GridApi, PageChangedEvent, RowClickPayload, RowSelectedEvent, ThemeChangedEvent, LoadingChangedEvent } from 'photon-grid-core'; import { ColumnDef, PhotonGridOptions } from './react-renderer-adapter'; export interface PhotonGridProps { columns?: ColumnDef[]; dataSet?: Record[]; /** * Additional grid options (theme, selection, features…), forwarded verbatim * to the core. Enable the natural-language AI panel — and, optionally, its * Gemini generative back-end — through `options.photonAI`: * * @example Deterministic (offline) AI panel * ```tsx * * ``` * * @example Gemini-powered AI panel * ```tsx * import { PhotonAIProviderType } from 'photon-grid-react'; * * * ``` * @example React component as a Master/Detail renderer * ```tsx * const OrderDetail = ({ data, ctx }) => ( * * ); * * * ``` */ options?: Partial; /** * Whether the grid shows its loading indicator. * * A dedicated prop rather than an `options` field, because a new `options` * object identity recreates the grid — this routes to `GridApi.setLoading` * instead, so toggling it is a repaint, not a rebuild, and grid state * (scroll position, selection, column layout) survives untouched. * * Configure the indicator's appearance — spinner (default) or skeleton * placeholder rows — through `options.loadingOverlay`. * * @example * ```tsx * * ``` */ loading?: boolean; onGridReady?: (api: GridApi) => void; onDataChanged?: (event: DataChangedEvent) => void; onRowClicked?: (payload: RowClickPayload) => void; onRowDoubleClicked?: (payload: RowClickPayload) => void; onRowSelected?: (event: RowSelectedEvent) => void; onCellClicked?: (event: CellClickedEvent) => void; onCellDoubleClicked?: (event: CellClickedEvent) => void; onCellValueChanged?: (event: CellValueChangedEvent) => void; onCellSelectionChanged?: (event: CellSelectionChangedEvent) => void; onColumnResized?: (event: ColumnResizedEvent) => void; onColumnMoved?: (event: ColumnMovedEvent) => void; onSortChanged?: (event: ColumnSortedEvent) => void; onFilterChanged?: (event: FilterChangedEvent) => void; onPageChanged?: (event: PageChangedEvent) => void; onColumnsStateChanged?: (event: ColumnsStateChangedEvent) => void; onThemeChanged?: (event: ThemeChangedEvent) => void; onExportComplete?: (event: ExportEvent) => void; /** * The loading state changed — fired once per transition, whether it came from * the `loading` prop, `GridApi.setLoading`, or a server-backed row model * fetching in the background. */ onLoadingChanged?: (event: LoadingChangedEvent) => void; } export declare function PhotonGrid(props: PhotonGridProps): JSX.Element; export default PhotonGrid;