export type CssValue = string | number; export interface NoLayoutProps { layout?: undefined; } export interface BoxProps { layout: 'box'; } export interface CenterProps { layout: 'center'; } export interface ClusterProps { layout: 'cluster'; } export interface FlexProps { layout: 'flex'; } export interface FrameProps { layout: 'frame'; } export interface GridLayoutProps { layout: 'grid'; } export interface StackProps { layout: 'stack'; } export interface ColumnsProps { layout: 'columns'; } export interface TileGridProps { layout: 'tileGrid'; } export interface FlowLayoutProps { layout: 'flow'; flow?: CssValue; } export interface FluidColsProps { layout: 'fluidCols'; autoFill?: boolean; } export interface SideMainProps { layout: 'sideMain'; sideW?: CssValue; mainW?: CssValue; } export interface SwitchColsProps { layout: 'switchCols'; breakSize?: CssValue; } export type LayoutSpecificProps = NoLayoutProps | BoxProps | CenterProps | ClusterProps | ColumnsProps | FlexProps | FlowLayoutProps | FluidColsProps | FrameProps | GridLayoutProps | StackProps | SideMainProps | SwitchColsProps | TileGridProps; export type LayoutType = Exclude['layout']; export interface LayoutProps { layout?: LayoutType; }