/**
 * DataGrid Molecule
 *
 * A simplified, schema-driven card grid for iterating over entity data.
 * Extracted from the CardGrid organism with all complexity removed:
 * no built-in search, sort, filter, pagination, selection, or bulk actions.
 *
 * Accepts `fields` config for per-field rendering control (icon, variant, format)
 * and `itemActions` for per-item event bus wiring.
 *
 * Uses atoms only internally: Box, VStack, HStack, Typography, Badge, Button, Icon.
 */
import React from 'react';
export interface DataGridField {
    /** Entity field name (dot-notation supported) */
    name: string;
    /** Display label (auto-generated from name if omitted) */
    label?: string;
    /** Lucide icon name to show beside the field */
    icon?: string;
    /** Rendering variant: 'h3' for title, 'body' for text, 'caption' for small,
     *  'badge' for status badge, 'progress' for progress display */
    variant?: 'h3' | 'h4' | 'body' | 'caption' | 'badge' | 'small' | 'progress';
    /** Optional format function name: 'date', 'currency', 'number', 'boolean' */
    format?: 'date' | 'currency' | 'number' | 'boolean' | 'percent';
}
export interface DataGridItemAction {
    /** Button label */
    label: string;
    /** Event name to emit (dispatched as UI:{event} with { row: itemData }) */
    event: string;
    /** Lucide icon name */
    icon?: string;
    /** Button variant */
    variant?: 'primary' | 'secondary' | 'ghost' | 'danger';
}
export interface DataGridProps {
    /** Entity data array */
    entity: unknown | readonly unknown[];
    /** Field definitions for rendering each card */
    fields: readonly DataGridField[];
    /** Alias for fields (compiler generates `columns` for field definitions) */
    columns?: readonly DataGridField[];
    /** Per-item action buttons */
    itemActions?: readonly DataGridItemAction[];
    /** Number of columns (uses auto-fit if omitted) */
    cols?: 1 | 2 | 3 | 4 | 5 | 6;
    /** Gap between cards */
    gap?: 'none' | 'sm' | 'md' | 'lg' | 'xl';
    /** Minimum card width in pixels (used when cols is not set, default 280) */
    minCardWidth?: number;
    /** Additional CSS classes */
    className?: string;
    /** Loading state */
    isLoading?: boolean;
    /** Error state */
    error?: Error | null;
    /** Entity field name containing an image URL for card thumbnails */
    imageField?: string;
    /** Enable multi-select with checkboxes */
    selectable?: boolean;
    /** Selection change event name (emits UI:{selectionEvent} with { selectedIds: string[] }) */
    selectionEvent?: string;
    /** Enable infinite scroll loading */
    infiniteScroll?: boolean;
    /** Event emitted when more items needed: UI:{loadMoreEvent} */
    loadMoreEvent?: string;
    /** Whether more items are available for infinite scroll */
    hasMore?: boolean;
    /** Render prop for custom per-item content. When provided, `fields` and `itemActions` are ignored. */
    children?: (item: Record<string, unknown>, index: number) => React.ReactNode;
    /**
     * Per-item render function (schema-level alias for children render prop).
     * In .orb schemas: ["fn", "item", { pattern tree with @item.field bindings }]
     * The compiler converts this to the children render prop.
     * @deprecated Use children render prop in React code. This prop exists for pattern registry sync.
     */
    renderItem?: (item: Record<string, unknown>, index: number) => React.ReactNode;
    /** Max items to show before "Show More" button. Defaults to 0 (disabled). */
    pageSize?: number;
}
export declare const DataGrid: React.FC<DataGridProps>;
