import type { CSSProp } from 'styled-components'; import type { StylableProps } from '~/types/component'; import type { ColorToken } from '~/types/tokens'; import type { OpaqueResponsive, ValueOrResponsive } from '~/utilities/opaque-responsive'; export type Border = boolean | string; type Element = 'address' | 'article' | 'aside' | 'div' | 'footer' | 'header' | 'main' | 'nav' | 'section' | 'li'; type CornerRadius = 'none' | 'small' | 'default' | 'imageDefault' | 'circle'; type AlignContent = 'flex-start' | 'flex-end' | 'center' | 'baseline' | 'stretch'; type AlignItems = 'flex-start' | 'flex-end' | 'center' | 'baseline' | 'stretch'; type AlignSelf = 'auto' | 'flex-start' | 'flex-end' | 'center' | 'baseline' | 'stretch'; type BorderStyle = 'none' | 'solid' | 'dashed' | 'dotted'; type Display = 'block' | 'flex' | 'grid' | 'inherit' | 'inline-block' | 'inline-flex' | 'inline-grid' | 'inline' | 'none'; type FlexBasis = number | string | 'auto'; type FlexDirection = 'row' | 'row-reverse' | 'column' | 'column-reverse'; type FlexWrap = 'nowrap' | 'wrap' | 'wrap-reverse'; type JustifyContent = 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around' | 'space-evenly'; type MaxHeight = 'none' | 'fill-available' | 'fit-content' | 'max-content' | 'min-content'; type MaxWidth = 'none' | 'fit-content' | 'max-content' | 'min-content'; type MinHeight = 'none' | 'fill-available' | 'fit-content' | 'max-content' | 'min-content'; type MinWidth = 'none' | 'fit-content' | 'max-content' | 'min-content'; type Overflow = 'visible' | 'hidden' | 'scroll' | 'auto'; type Position = 'static' | 'relative' | 'absolute' | 'fixed'; type TextAlign = 'left' | 'center' | 'right'; type VerticalAlign = 'baseline' | 'sub' | 'super' | 'text-top' | 'text-bottom' | 'middle' | 'top' | 'bottom'; type Height = 'auto' | 'fit-content' | '100%' | 'inherit' | 'max-content' | 'min-content'; type Width = 'auto' | 'fit-content' | '100%' | 'inherit' | 'max-content' | 'min-content'; /** * @deprecated Use styled.div`` instead. If you need responsive properties, use the `mediaForBreakpoint` utility */ export interface BoxProps extends React.AriaAttributes, StylableProps { /** * See flexbox section below */ alignContent?: ValueOrResponsive; /** * See flexbox section below */ alignItems?: ValueOrResponsive; /** * See flexbox section below */ alignSelf?: ValueOrResponsive; /** * See border section below */ b?: ValueOrResponsive; /** * See border section below */ bb?: ValueOrResponsive; /** * See border section below */ bl?: ValueOrResponsive; /** * See border section below */ br?: ValueOrResponsive; /** * See border section below */ bt?: ValueOrResponsive; /** * Accepts token value */ backgroundColor?: ValueOrResponsive; /** * Accepts an token value * @default tokens.global.border.action.default */ borderColor?: ColorToken; /** * See border section below */ borderStrokeWidth?: string; /** * See border section below * @default "solid" */ borderStyle?: BorderStyle; /** * Accepts any React node */ children?: React.ReactNode; /** * Corner/border radius, using theme keywords */ cornerRadius?: ValueOrResponsive; /** * Custom css (via styled-components/css) */ css?: CSSProp; /** * String descriptor for testing */ 'data-tag'?: string; /** * CSS [display](https://developer.mozilla.org/en-US/docs/Web/CSS/display). Accepts `` values. Keyword values are `none`, `block`, `flex`, `inline-block`, `inline-flex`, `inline`, and `inherit`. `
` (default element) defaults to `block`. */ display?: ValueOrResponsive; /** * The HTML element the `` is rendered as. * @default "div" */ el?: Element; /** * See flexbox section below */ flexBasis?: ValueOrResponsive; /** * See flexbox section below */ flexDirection?: ValueOrResponsive; /** * See flexbox section below */ flexGrow?: ValueOrResponsive; /** * See flexbox section below */ flexShrink?: ValueOrResponsive; /** * See flexbox section below */ flexWrap?: ValueOrResponsive; /** * Sets `height: 100%` */ fluidHeight?: ValueOrResponsive; /** * Sets `width: 100%` */ fluidWidth?: ValueOrResponsive; /** * CSS [height](https://developer.mozilla.org/en-US/docs/Web/CSS/height). Accepts `` values. */ height?: ValueOrResponsive; /** * HTML id property. */ id?: string; /** * See flexbox section below */ justifyContent?: ValueOrResponsive; /** * See margin & padding section below */ m?: ValueOrResponsive; /** * CSS [max-height](https://developer.mozilla.org/en-US/docs/Web/CSS/max-height). Accepts `` values. */ maxHeight?: ValueOrResponsive; /** * CSS [max-width](https://developer.mozilla.org/en-US/docs/Web/CSS/max-width). Accepts `` values. */ maxWidth?: ValueOrResponsive; /** * See margin & padding section below */ mb?: ValueOrResponsive; /** * See margin & padding section below */ mh?: ValueOrResponsive; /** * CSS [min-height](https://developer.mozilla.org/en-US/docs/Web/CSS/min-height). Accepts `` values. */ minHeight?: ValueOrResponsive; /** * CSS [min-width](https://developer.mozilla.org/en-US/docs/Web/CSS/min-width). Accepts `` values. */ minWidth?: ValueOrResponsive; /** * See margin & padding section below */ ml?: ValueOrResponsive; /** * See margin & padding section below */ mr?: ValueOrResponsive; /** * See margin & padding section below */ mt?: ValueOrResponsive; /** * See margin & padding section below */ mv?: ValueOrResponsive; /** * Callback function for Box click. */ onClick?: (e: React.MouseEvent) => void; /** * Callback function for Box mouseEnter. */ onMouseEnter?: (e: React.MouseEvent) => void; /** * Callback function for Box mouseLeave. */ onMouseLeave?: (e: React.MouseEvent) => void; /** * See flexbox section below */ order?: ValueOrResponsive; /** * CSS [overflow](https://developer.mozilla.org/en-US/docs/Web/CSS/overflow). Accepts `` values. */ overflow?: ValueOrResponsive; /** * See margin & padding section below */ p?: ValueOrResponsive; /** * See margin & padding section below */ pl?: ValueOrResponsive; /** * See margin & padding section below */ pr?: ValueOrResponsive; /** * See margin & padding section below */ pt?: ValueOrResponsive; /** * See margin & padding section below */ pb?: ValueOrResponsive; /** * See margin & padding section below */ pv?: ValueOrResponsive; /** * See margin & padding section below */ ph?: ValueOrResponsive; /** * CSS [position](https://developer.mozilla.org/en-US/docs/Web/CSS/position). Accepts `` values. */ position?: ValueOrResponsive; /** * Horizontal alignment of an inline or table-cell box. `` should still be used to compose text. * See [docs](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align) for more info. * Accepts `` values. */ textAlign?: ValueOrResponsive; /** * Vertical alignment of an inline or table-cell box. * See [docs](https://developer.mozilla.org/en-US/docs/Web/CSS/vertical-align) for more info. * Accepts `` values. */ verticalAlign?: ValueOrResponsive; /** * CSS [width](https://developer.mozilla.org/en-US/docs/Web/CSS/width). Accepts `` values. */ width?: ValueOrResponsive; } export type StyledProps = Required> & Pick & { alignContent: OpaqueResponsive; alignItems: OpaqueResponsive; alignSelf: OpaqueResponsive; backgroundColor: OpaqueResponsive; cornerRadius: OpaqueResponsive; display: OpaqueResponsive; flexBasis: OpaqueResponsive; flexDirection: OpaqueResponsive; flexGrow: OpaqueResponsive; flexShrink: OpaqueResponsive; flexWrap: OpaqueResponsive; fluidHeight: OpaqueResponsive; fluidWidth: OpaqueResponsive; height: OpaqueResponsive; justifyContent: OpaqueResponsive; maxHeight: OpaqueResponsive; maxWidth: OpaqueResponsive; minHeight: OpaqueResponsive; minWidth: OpaqueResponsive; order: OpaqueResponsive; overflow: OpaqueResponsive; position: OpaqueResponsive; textAlign: OpaqueResponsive; verticalAlign: OpaqueResponsive; width: OpaqueResponsive; b: OpaqueResponsive; bt: OpaqueResponsive; br: OpaqueResponsive; bb: OpaqueResponsive; bl: OpaqueResponsive; p: OpaqueResponsive; pv: OpaqueResponsive; ph: OpaqueResponsive; pt: OpaqueResponsive; pr: OpaqueResponsive; pb: OpaqueResponsive; pl: OpaqueResponsive; m: OpaqueResponsive; mv: OpaqueResponsive; mh: OpaqueResponsive; mt: OpaqueResponsive; mr: OpaqueResponsive; mb: OpaqueResponsive; ml: OpaqueResponsive; }; export {};