/**
 * @file Table.tsx
 * @input React, StyleX, BaseTable, theme tokens, types, components
 * @output Exports Table component, TableProps, TableDensity, TableDividers types
 * @position Styled wrapper; the primary table API for consumers
 *
 * SYNC: When modified, update these files to stay in sync:
 * - /packages/core/src/Table/Table.doc.mjs (props table, features, usage examples)
 * - /packages/core/src/Table/Table.test.tsx (tests for new/changed behavior)
 * - /packages/core/src/Table/index.ts (exports if types change)
 * - /apps/storybook/stories/Table.stories.tsx (storybook stories)
 * - /packages/cli/assets/templates/blocks/components/Table/ (showcase blocks)
 */
import { type ReactElement, type Ref } from 'react';
import type { BaseTableProps, TableVerticalAlign, TablePlugin } from './types';
/** Row density controlling padding and font size */
export type TableDensity = 'compact' | 'balanced' | 'spacious';
/** Divider style between cells */
export type TableDividers = 'rows' | 'columns' | 'grid' | 'none';
/** How body cell text behaves when it exceeds column width */
export type TableTextOverflow = 'wrap' | 'truncate';
/**
 * Props for the styled Table component.
 * Supports both data-driven mode and children mode with TableRow/Cell.
 *
 * @template T - The row data type
 */
export interface TableProps<T extends Record<string, unknown>> extends Omit<BaseTableProps<T>, 'plugins' | 'components'> {
    /** Row density. @default 'balanced' */
    density?: TableDensity;
    /** Divider style. @default 'rows' */
    dividers?: TableDividers;
    /** Striped even rows. @default false */
    isStriped?: boolean;
    /** Hover highlight on rows. @default false */
    hasHover?: boolean;
    /**
     * Vertical alignment for body row cells.
     * Controls `vertical-align` on `<td>` elements.
     *
     * @default 'middle'
     *
     * @example
     * ```
     * <Table data={items} columns={columns} verticalAlign="top" />
     * ```
     */
    verticalAlign?: TableVerticalAlign;
    /**
     * How body cell text behaves when it exceeds the column width.
     *
     * - `'wrap'` — text wraps and the row grows taller. No content is hidden.
     * - `'truncate'` — text is clipped with an ellipsis. Default-rendered cells
     *   show a tooltip on hover when truncated.
     *
     * Header cells always truncate regardless of this setting.
     *
     * @default 'wrap'
     *
     * @example
     * ```
     * <Table data={logs} columns={columns} textOverflow="wrap" />
     * ```
     */
    textOverflow?: 'wrap' | 'truncate';
    /** Named plugins to extend table behavior */
    plugins?: Record<string, TablePlugin<T>>;
}
/**
 * Table — a styled, data-driven table component.
 *
 * Wraps BaseTable with styled components (TableRow, TableCell,
 * TableHeaderCell) that read appearance configuration from TableContext.
 * Density, dividers, striped rows, and hover effects are applied via
 * design tokens in the component styles.
 *
 * @compositionHint Use renderCell on columns to compose rich cell content.
 * Combine with Badge (status labels), StatusDot (colored indicators),
 * Text (formatted values), Avatar (user cells), and HStack/VStack
 * (multi-element cell layouts). Without renderCell, cells render as plain text.
 * Always set explicit width on columns using proportional() or pixel() — omitting
 * width skips the minimum width floor, which can cause columns to collapse on mobile.
 *
 * @example
 * ```
 * <Table
 *   data={users}
 *   columns={[
 *     { key: 'name', header: 'Name', width: proportional(1), renderCell: (u) => (
 *       <HStack gap={2} align="center">
 *         <Avatar name={u.name} size="md" />
 *         <Text weight="semibold">{u.name}</Text>
 *       </HStack>
 *     )},
 *     { key: 'status', header: 'Status', width: proportional(1), renderCell: (u) => (
 *       <Badge variant={u.active ? 'success' : 'error'} label={u.active ? 'Active' : 'Inactive'} />
 *     )},
 *   ]}
 *   density="compact"
 *   dividers="grid"
 *   hasHover
 * />
 * ```
 */
export declare const Table: <T extends Record<string, unknown>>(props: TableProps<T> & {
    ref?: Ref<HTMLTableElement>;
}) => ReactElement;
//# sourceMappingURL=Table.d.ts.map