/**
* html/layout — polymorphic layout primitives with CVA.
*
* All layout CVA lives here. layout.tsx re-exports from this file.
* These components are intentionally polymorphic (via `as` prop) —
* they render as whatever HTML element makes semantic sense at the call site.
*/
import { type VariantProps } from "class-variance-authority";
import type { ComponentPropsWithoutRef, ElementType } from "react";
type BaseLayoutProps = {
as?: T;
className?: string;
} & Omit, "as" | "className">;
export declare const boxVariants: (props?: ({
position?: "relative" | "absolute" | null | undefined;
inset?: "topRight" | "topRightOverlap" | null | undefined;
z?: 10 | null | undefined;
pointerEvents?: "none" | null | undefined;
border?: "left" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
type BoxProps = BaseLayoutProps & VariantProps;
export declare function Box({ as, position, inset, z, pointerEvents, border, className, ...props }: BoxProps): import("react").JSX.Element;
export declare const stackVariants: (props?: ({
gap?: "none" | "sm" | "lg" | "xs" | "md" | "xl" | null | undefined;
align?: "center" | "start" | "end" | "stretch" | null | undefined;
grow?: boolean | null | undefined;
width?: "sm" | "lg" | "xs" | "md" | "xl" | null | undefined;
shrink?: "0" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
type StackProps = BaseLayoutProps & VariantProps;
export declare function Stack({ as, gap, align, grow, width, shrink, className, ...props }: StackProps): import("react").JSX.Element;
export declare const inlineVariants: (props?: ({
gap?: "none" | "sm" | "lg" | "xs" | "md" | "xl" | null | undefined;
align?: "center" | "baseline" | "start" | "end" | "stretch" | null | undefined;
justify?: "center" | "start" | "end" | "between" | null | undefined;
wrap?: boolean | null | undefined;
position?: "relative" | "absolute" | null | undefined;
inset?: "topRight" | null | undefined;
paddingX?: "none" | "sm" | "lg" | "md" | "xl" | null | undefined;
paddingY?: "none" | "sm" | "lg" | "md" | "xl" | null | undefined;
borderBottom?: boolean | null | undefined;
borderTop?: boolean | null | undefined;
background?: "primary" | "muted" | "none" | "primarySubtle" | null | undefined;
indent?: "none" | "sm" | "lg" | "md" | "xl" | null | undefined;
accent?: boolean | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
type InlineProps = BaseLayoutProps & VariantProps;
export declare function Inline({ as, gap, align, justify, wrap, position, inset, paddingX, paddingY, borderBottom, borderTop, background, indent, accent, className, ...props }: InlineProps): import("react").JSX.Element;
export declare const gridVariants: (props?: ({
gap?: "none" | "sm" | "lg" | "xs" | "md" | "xl" | null | undefined;
columns?: 1 | "auto" | 2 | 3 | 4 | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
type GridProps = BaseLayoutProps & VariantProps & {
/**
* Only for `columns="auto"`: the width each column may shrink to before
* the grid drops a column. The grid then shows `floor(width / min)` equal
* columns and reflows continuously as the container resizes. Ignored for
* fixed column counts. Defaults to `12rem`.
*/
minColumnWidth?: string;
};
/**
* Multi-column grids react to their own container width, not the viewport —
* a grid in a narrow panel collapses to one column even on a wide screen.
* The `@container` scope goes on a wrapper the component renders itself;
* the element carrying the `@…:` variants must live inside it.
*
* `columns="auto"` is the exception: an auto-fit track that fits as many
* equal columns as `minColumnWidth` allows, reflowing at every width without
* breakpoints — right for dense tile grids (stat/metric cards) that should
* never bottom out at a single full-width column.
*/
export declare function Grid({ as, gap, columns, minColumnWidth, className, style, ...props }: GridProps): import("react").JSX.Element;
export declare const splitVariants: (props?: ({
gap?: "none" | "sm" | "lg" | "xs" | "md" | "xl" | null | undefined;
at?: "sm" | "lg" | "md" | "xl" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
type SplitProps = BaseLayoutProps & VariantProps & {
/**
* Fill and shrink within a parent flex row — adds `flex-1 min-w-0` to the
* container scope so a Split placed beside a leading control (icon, chevron)
* takes the remaining width and its text can wrap.
*/
grow?: boolean;
};
/**
* Two slots that react to their OWN container width, not the viewport: the two
* children stack vertically in a narrow panel and become a horizontal row —
* first child leading, second pushed to the trailing edge (space-between) — once
* the container passes the `at` breakpoint. Use it for a title opposite a
* trailing metadata/aside cluster that should drop below the title on narrow
* screens instead of squeezing beside it. Like {@link Grid}, the `@container`
* scope goes on a wrapper the component renders itself.
*/
export declare function Split({ as, gap, at, grow, className, ...props }: SplitProps): import("react").JSX.Element;
export declare const centerVariants: (props?: ({
maxWidth?: "none" | "sm" | "lg" | "md" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
type CenterProps = BaseLayoutProps & VariantProps;
export declare function Center({ as, maxWidth, className, ...props }: CenterProps): import("react").JSX.Element;
export declare const containerVariants: (props?: ({
padding?: "none" | "sm" | "lg" | "md" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
type ContainerProps = BaseLayoutProps & VariantProps;
export declare function Container({ as, padding, className, ...props }: ContainerProps): import("react").JSX.Element;
export {};
//# sourceMappingURL=layout.d.ts.map