(or `as`) in the browser. │
* └──────────────────────────────────────────────────────────────────┘
*
* @example
*
*
* {user.name}
*
*
* @example
*
* Wide
* …
*
*/
import React from "react";
/** Semantic spacing scale — maps to --vyre-spacing-* tokens. */
export type SpaceToken = "none" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
export type StackDirection = "row" | "column" | "row-reverse" | "column-reverse";
export type StackWrap = "nowrap" | "wrap" | "wrap-reverse";
export type StackAlign = "start" | "center" | "end" | "stretch" | "baseline";
export type StackJustify = "start" | "center" | "end" | "between" | "around" | "evenly";
export type StackAlignContent = "start" | "center" | "end" | "stretch" | "between" | "around" | "evenly";
export type StackAlignSelf = "auto" | "start" | "center" | "end" | "stretch" | "baseline";
export type StackBasis = SpaceToken | "auto" | "content" | "0";
export type GridAlign = "start" | "center" | "end" | "stretch";
export type GridFlow = "row" | "column" | "dense" | "row-dense" | "column-dense";
export type GridColumns = number | "auto-fit";
/**
* Sizing scale for width / height.
* - Keywords: "auto" | "full" (100%) | "fit" (fit-content) | "screen"
* (100vw for width, 100vh for height)
* - Token sizes (fixed rem): xs 8 · sm 12 · md 16 · lg 24 · xl 32 · 2xl 42
*/
export type SizeToken = "auto" | "full" | "fit" | "screen" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
interface SizingProps {
/** Width — keyword or token size. Avoids an inline width style. */
width?: SizeToken;
/** Height — keyword or token size. Avoids an inline height style. */
height?: SizeToken;
}
type PolymorphicProps
= P & {
/** HTML element to render. Always a real DOM element in the browser. */
as?: keyof JSX.IntrinsicElements;
className?: string;
/**
* Inline styles. Prefer the token props above; use this only for values
* the design system genuinely cannot express. Flagged as an anti-pattern
* by @usevyre/eslint-plugin (no-inline-layout-styles).
*/
style?: React.CSSProperties;
children?: React.ReactNode;
};
export interface StackProps extends PolymorphicProps>, SizingProps {
/** Main axis direction (flex-direction) */
direction?: StackDirection;
/** Render as inline-flex instead of flex */
inline?: boolean;
/** Space between children — design token */
gap?: SpaceToken;
/** Row gap override — design token */
rowGap?: SpaceToken;
/** Column gap override — design token */
columnGap?: SpaceToken;
/** Cross-axis alignment of items (align-items) */
align?: StackAlign;
/** Main-axis distribution (justify-content) */
justify?: StackJustify;
/** Multi-line cross-axis distribution (align-content) */
alignContent?: StackAlignContent;
/** This element's own cross-axis alignment (align-self) */
alignSelf?: StackAlignSelf;
/** Wrapping behaviour (flex-wrap). `true` is treated as "wrap". */
wrap?: StackWrap | boolean;
/** flex-grow */
grow?: number;
/** flex-shrink */
shrink?: number;
/** flex-basis — token, "auto", "content", or "0" */
basis?: StackBasis;
}
export declare const Stack: React.ForwardRefExoticComponent>;
export interface GridProps extends PolymorphicProps>, SizingProps {
/** Number of equal columns (1–12) or responsive "auto-fit" */
columns?: GridColumns;
/** Explicit row count, or "auto" */
rows?: number | "auto";
/** Auto-placement flow (grid-auto-flow) */
flow?: GridFlow;
/** Space between cells — design token */
gap?: SpaceToken;
/** Row gap override — design token */
rowGap?: SpaceToken;
/** Column gap override — design token */
columnGap?: SpaceToken;
/** Cross-axis alignment of cells (align-items) */
align?: GridAlign;
/** Inline-axis alignment of cells (justify-items) */
justify?: GridAlign;
}
export declare const Grid: React.ForwardRefExoticComponent>;
export interface GridItemProps extends PolymorphicProps> {
/** Number of columns this item spans */
colSpan?: number;
/** Number of rows this item spans */
rowSpan?: number;
/** 1-based column line this item starts at */
colStart?: number;
/** 1-based row line this item starts at */
rowStart?: number;
}
export declare const GridItem: React.ForwardRefExoticComponent>;
export interface BoxProps extends PolymorphicProps>, SizingProps {
/** Inner spacing (all sides) — design token */
padding?: SpaceToken;
/** Inner spacing left+right — design token */
paddingX?: SpaceToken;
/** Inner spacing top+bottom — design token */
paddingY?: SpaceToken;
paddingTop?: SpaceToken;
paddingRight?: SpaceToken;
paddingBottom?: SpaceToken;
paddingLeft?: SpaceToken;
/** Outer spacing (all sides) — design token */
margin?: SpaceToken;
/** Outer spacing left+right — design token */
marginX?: SpaceToken;
/** Outer spacing top+bottom — design token */
marginY?: SpaceToken;
marginTop?: SpaceToken;
marginRight?: SpaceToken;
marginBottom?: SpaceToken;
marginLeft?: SpaceToken;
}
export declare const Box: React.ForwardRefExoticComponent>;
export {};