import type * as React from 'react'; import type { ALIGNMENT, BEHAVIOR, STYLE } from './constants'; import type { Override } from '../helpers/overrides'; export type Responsive = T | Array; export type Alignment = typeof ALIGNMENT.start | typeof ALIGNMENT.center | typeof ALIGNMENT.end; export type Behavior = typeof BEHAVIOR.fixed | typeof BEHAVIOR.fluid; export type CSSLengthUnit = 'cm' | 'mm' | 'Q' | 'in' | 'pc' | 'px' | 'pt' | 'em' | 'ex' | 'ch' | 'rem' | 'lh' | 'vw' | 'vh' | 'vmin' | 'vmax' | '%'; export type GridStyle = (typeof STYLE)[keyof typeof STYLE]; export type SharedGridProps = { /** Number of columns at each breakpoint. */ gridColumns?: Responsive; /** Gap between rows at each breakpoint. */ gridGaps?: Responsive; /** Gap between columns at each breakpoint. */ gridGutters?: Responsive; /** Modify the CSS length unit used to measure columns and rows. Defaults to theme value. */ gridUnit?: CSSLengthUnit; }; export type GridOverrides = { Grid?: Override; GridWrapper?: Override; }; export type GridProps = { /** Control vertical alignment of cells at each breakpoint. */ align?: Responsive; /** Grid container behavior beyond max width. Fluid will continue to expand. Fixed will limit grid container to max width and center the container horizontally within parent element. */ behavior?: Behavior; /** Children should be Cells. */ children: React.ReactNode; /** Gap on either side of grid container at each breakpoint. */ gridMargins?: Responsive; /** Maximum width of the grid container. Does not include Margins. Only applies when `behavior` is `fluid`. */ gridMaxWidth?: number; /** Style for your grid. The `default` style will pull values from the theme, while other styles have preset values that are unaffected by the theme. **/ gridStyle?: GridStyle; /** Overrides for your grid. */ overrides?: GridOverrides; } & SharedGridProps; export type StyledGridWrapperProps = { /** Grid container behavior beyond max width. Fluid will continue to expand. Fixed will limit grid container to max width and center the container horizontally within parent element. */ $behavior?: Behavior; /** Gap on either side of grid container at each breakpoint. */ $gridMargins?: Responsive; /** Maximum width of the grid container. Does not include Margins. Only applies when `behavior` is `fluid`. */ $gridMaxWidth?: number; /** Modify the CSS length unit used to measure columns and rows. Defaults to theme value. */ $gridUnit?: CSSLengthUnit; }; export type StyledGridProps = { /** Control vertical alignment of cells at each breakpoint. */ $align?: Responsive; /** Grid container behavior beyond max width. Fluid will continue to expand. Fixed will limit grid container to max width and center the container horizontally within parent element. */ $behavior?: Behavior; /** Gap between columns at each breakpoint. */ $gridGutters?: Responsive; /** Gap on either side of grid container at each breakpoint. */ $gridMargins?: Responsive; /** Maximum width of the grid container. Does not include Margins. Only applies when `behavior` is `fluid`. */ $gridMaxWidth?: number; /** Modify the CSS length unit used to measure columns and rows. Defaults to theme value. */ $gridUnit?: CSSLengthUnit; /** Style for your grid. The `default` style will pull values from the theme, while other styles have preset values that are unaffected by the theme. **/ $gridStyle?: GridStyle; }; export type CellOverrides = { Cell?: Override; }; export type CellProps = { /** Control vertical alignment of individual cell at each breakpoint. Limited proxy for `align-self` CSS property. */ align?: Responsive; /** Content to be placed in Cell. */ children?: React.ReactNode; /** Control placement order of cell in flex row at each breakpoint. Proxy for `order` CSS property. */ order?: Responsive; /** Control number of columns to offset cell at each breakpoint. */ skip?: Responsive; /** Control number of columns the cell should span. */ span?: Responsive; /** Overrides for a single cell. */ overrides?: CellOverrides; } & SharedGridProps; export type StyledCellProps = { /** Control vertical alignment of individual cell at each breakpoint. Limited proxy for `align-self` CSS property. */ $align?: Responsive; /** Number of columns at each breakpoint. */ $gridColumns?: Responsive; /** Gap between rows at each breakpoint. */ $gridGaps?: Responsive; /** Gap between columns at each breakpoint. */ $gridGutters?: Responsive; /** Modify the CSS length unit used to measure columns and rows. Defaults to theme value. */ $gridUnit?: CSSLengthUnit; /** Control placement order of cell in flex row at each breakpoint. Proxy for `order` CSS property. */ $order?: Responsive; /** Control number of columns to offset cell at each breakpoint. */ $skip?: Responsive; /** Control number of columns the cell should span. */ $span?: Responsive; };