import type { ComponentProps } from "../../types/component-props";
import type {
ColElement,
ColumnSpan,
ColumnOffset,
ColumnOrder,
} from "../../types/layout-primitives";
/**
* Props for the Col component
*
* Col provides a column element for use within Row containers. Maps React
* props to column utility classes (.col-*, .col-offset-*, .col-order-*,
* .col-auto) without a base class. Pure utility class composition.
*
* @example
* // Basic column with 50% width
*
Column content
*
* @example
* // Column with offset and order
*
* Offset and reordered
*
*/
export interface ColProps
extends Partial,
Omit, "className"> {
/**
* Column span (1-12 or "flex")
*
* - Numeric values (1-12): Maps to .col-{span} utility class (fixed width)
* - "flex": Maps to .col-flex utility class (grows to fill space)
*
* Ignored if auto is true (auto takes precedence)
*
* @default undefined
*
* @example
* // Fixed width column
* 50% width on desktop
*
* @example
* // Flex column fills remaining space
* Grows to fill available space
*/
span?: ColumnSpan;
/**
* Column offset (0-11)
* Pushes column to the right using margin-inline-start
* Maps to .col-offset-{offset} utility class
* @default undefined
*/
offset?: ColumnOffset;
/**
* Column order
* Controls visual order using flexbox order property
* Maps to .col-order-{order} utility class
* @default undefined
*/
order?: ColumnOrder;
/**
* Auto-width column
* When true, uses .col-auto (content-based width)
* Takes precedence over span prop (including "flex")
* @default false
*
* @see span - For flex-grow behavior, use span="flex" instead of auto
*/
auto?: boolean;
/**
* Element type to render
* @default "div"
*/
as?: ColElement;
/**
* Additional CSS classes
*/
className?: string;
/**
* Child elements
*/
children?: React.ReactNode;
}