UNPKG

@types/styled-system

Version:
1,320 lines (1,150 loc) 58.7 kB
import * as CSS from "csstype"; export function get(obj: any, ...paths: Array<string | number>): any; export type ObjectOrArray<T, K extends keyof any = keyof any> = T[] | Record<K, T | Record<K, T> | T[]>; export type Scale = ObjectOrArray<number | string>; export type TLengthStyledSystem = string | 0 | number; export interface Theme<TLength = TLengthStyledSystem> { breakpoints?: ObjectOrArray<number | string | symbol> | undefined; mediaQueries?: { [size: string]: string } | undefined; space?: ObjectOrArray<CSS.Property.Margin<number | string>> | undefined; fontSizes?: ObjectOrArray<CSS.Property.FontSize<number>> | undefined; colors?: ObjectOrArray<CSS.Property.Color> | undefined; fonts?: ObjectOrArray<CSS.Property.FontFamily> | undefined; fontWeights?: ObjectOrArray<CSS.Property.FontWeight> | undefined; lineHeights?: ObjectOrArray<CSS.Property.LineHeight<TLength>> | undefined; letterSpacings?: ObjectOrArray<CSS.Property.LetterSpacing<TLength>> | undefined; sizes?: ObjectOrArray<CSS.Property.Height<{}> | CSS.Property.Width<{}>> | undefined; borders?: ObjectOrArray<CSS.Property.Border<{}>> | undefined; borderStyles?: ObjectOrArray<CSS.Property.Border<{}>> | undefined; borderWidths?: ObjectOrArray<CSS.Property.BorderWidth<TLength>> | undefined; radii?: ObjectOrArray<CSS.Property.BorderRadius<TLength>> | undefined; shadows?: ObjectOrArray<CSS.Property.BoxShadow> | undefined; zIndices?: ObjectOrArray<CSS.Property.ZIndex> | undefined; buttons?: ObjectOrArray<CSS.StandardProperties> | undefined; colorStyles?: ObjectOrArray<CSS.StandardProperties> | undefined; textStyles?: ObjectOrArray<CSS.StandardProperties> | undefined; } export type RequiredTheme = Required<Theme>; export type ResponsiveValue< T, ThemeType extends Theme = RequiredTheme, > = T | null | Array<T | null> | { [key in ThemeValue<"breakpoints", ThemeType> & string | number]?: T }; export type ThemeValue<K extends keyof ThemeType, ThemeType, TVal = any> = ThemeType[K] extends TVal[] ? number : ThemeType[K] extends Record<infer E, TVal> ? E : ThemeType[K] extends ObjectOrArray<infer F> ? F : never; export interface SpaceProps<ThemeType extends Theme = RequiredTheme, TVal = ThemeValue<"space", ThemeType>> { /** Margin on top, left, bottom and right */ m?: ResponsiveValue<TVal, ThemeType> | undefined; /** Margin on top, left, bottom and right */ margin?: ResponsiveValue<TVal, ThemeType> | undefined; /** Margin on top */ mt?: ResponsiveValue<TVal, ThemeType> | undefined; /** Margin on top */ marginTop?: ResponsiveValue<TVal, ThemeType> | undefined; /** Margin on right */ mr?: ResponsiveValue<TVal, ThemeType> | undefined; /** Margin on right */ marginRight?: ResponsiveValue<TVal, ThemeType> | undefined; /** Margin on bottom */ mb?: ResponsiveValue<TVal, ThemeType> | undefined; /** Margin on bottom */ marginBottom?: ResponsiveValue<TVal, ThemeType> | undefined; /** Margin on left */ ml?: ResponsiveValue<TVal, ThemeType> | undefined; /** Margin on left */ marginLeft?: ResponsiveValue<TVal, ThemeType> | undefined; /** Margin on left and right */ mx?: ResponsiveValue<TVal, ThemeType> | undefined; /** Margin on left and right */ marginX?: ResponsiveValue<TVal, ThemeType> | undefined; /** Margin on top and bottom */ my?: ResponsiveValue<TVal, ThemeType> | undefined; /** Margin on top and bottom */ marginY?: ResponsiveValue<TVal, ThemeType> | undefined; /** Padding on top, left, bottom and right */ p?: ResponsiveValue<TVal, ThemeType> | undefined; /** Padding on top, left, bottom and right */ padding?: ResponsiveValue<TVal, ThemeType> | undefined; /** Padding on top */ pt?: ResponsiveValue<TVal, ThemeType> | undefined; /** Padding on top */ paddingTop?: ResponsiveValue<TVal, ThemeType> | undefined; /** Padding on right */ pr?: ResponsiveValue<TVal, ThemeType> | undefined; /** Padding on right */ paddingRight?: ResponsiveValue<TVal, ThemeType> | undefined; /** Padding on bottom */ pb?: ResponsiveValue<TVal, ThemeType> | undefined; /** Padding on bottom */ paddingBottom?: ResponsiveValue<TVal, ThemeType> | undefined; /** Padding on left */ pl?: ResponsiveValue<TVal, ThemeType> | undefined; /** Padding on left */ paddingLeft?: ResponsiveValue<TVal, ThemeType> | undefined; /** Padding on left and right */ px?: ResponsiveValue<TVal, ThemeType> | undefined; /** Padding on left and right */ paddingX?: ResponsiveValue<TVal, ThemeType> | undefined; /** Padding on top and bottom */ py?: ResponsiveValue<TVal, ThemeType> | undefined; /** Padding on top and bottom */ paddingY?: ResponsiveValue<TVal, ThemeType> | undefined; } // Preserved to support v4 shim: // https://github.com/styled-system/styled-system/blob/master/packages/styled-system/src/index.js#L108 export interface LowLevelStyleFunctionArguments<N, S> { prop: string; cssProperty?: string | undefined; alias?: string | undefined; key?: string | undefined; transformValue?: ((n: N, scale?: S) => any) | undefined; scale?: S | undefined; // new v5 api properties?: string[] | undefined; } // eslint-disable-next-line @definitelytyped/no-unnecessary-generics export function style<N = string | number, S = Scale>( args: LowLevelStyleFunctionArguments<N, S>, ): styleFn; export interface styleFn { (...args: any[]): any; config?: object | undefined; propNames?: string[] | undefined; cache?: object | undefined; } export interface ConfigFunction { (value: any, scale: Scale | undefined, props: any): any; /** A string referencing a key in the `theme` object. */ scale?: string; /** A fallback scale object for when there isn't one defined in the `theme` object. */ defaults?: Scale; } export interface ConfigStyle { /** The CSS property to use in the returned style object (overridden by `properties` if present). */ property?: keyof CSS.Properties | undefined; /** * An array of multiple properties (e.g. `['marginLeft', 'marginRight']`) to which this style's value will be * assigned (overrides `property` when present). */ properties?: Array<keyof CSS.Properties> | undefined; /** A string referencing a key in the `theme` object. */ scale?: string | undefined; /** A fallback scale object for when there isn't one defined in the `theme` object. */ defaultScale?: Scale | undefined; /** A function to transform the raw value based on the scale. */ transform?: ((value: any, scale?: Scale) => any) | undefined; } export interface Config { /** Property name exposed for use in components */ [customStyleName: string]: ConfigStyle | ConfigFunction | boolean; } export function compose(...parsers: styleFn[]): styleFn; export function system(styleDefinitions: Config): styleFn; export function createParser(config: ConfigStyle): styleFn; export function createStyleFunction(args: ConfigStyle): styleFn; export interface VariantArgs< TStyle = object, K extends string = string, TPropName = string, > { key?: string | undefined; /** Component prop, defaults to "variant" */ prop?: TPropName | undefined; /** theme key for variant definitions */ scale?: string | undefined; /** inline theme aware variants definitions */ variants?: | { [key in K]: TStyle; } | undefined; } export function variant< // eslint-disable-next-line @definitelytyped/no-unnecessary-generics TStyle = object, // eslint-disable-next-line @definitelytyped/no-unnecessary-generics K extends string = string, // eslint-disable-next-line @definitelytyped/no-unnecessary-generics TPropName = string, >( props: VariantArgs<TStyle, K, TPropName>, ): (...args: any[]) => any; /** * Converts shorthand or longhand margin and padding props to margin and padding CSS declarations * * - Numbers from 0-4 (or the length of theme.space) are converted to values on the spacing scale. * - Negative values can be used for negative margins. * - Numbers greater than the length of the theme.space array are converted to raw pixel values. * - String values are passed as raw CSS values. * - Array values are converted into responsive values. */ export const space: styleFn; export interface MarginProps<ThemeType extends Theme = RequiredTheme> extends Pick< SpaceProps<ThemeType>, | "m" | "margin" | "mt" | "marginTop" | "mb" | "marginBottom" | "ml" | "marginLeft" | "mr" | "marginRight" | "my" | "marginY" | "mx" | "marginX" > { } export interface MarginTopProps<ThemeType extends Theme = RequiredTheme> extends Pick<SpaceProps<ThemeType>, "mt" | "marginTop"> { } export interface MarginBottomProps<ThemeType extends Theme = RequiredTheme> extends Pick<SpaceProps<ThemeType>, "mb" | "marginBottom"> { } export interface MarginLeftProps<ThemeType extends Theme = RequiredTheme> extends Pick<SpaceProps<ThemeType>, "ml" | "marginLeft"> { } export interface MarginRightProps<ThemeType extends Theme = RequiredTheme> extends Pick<SpaceProps<ThemeType>, "mr" | "marginRight"> { } export const margin: styleFn; export const marginTop: styleFn; export const marginBottom: styleFn; export const marginLeft: styleFn; export const marginRight: styleFn; export interface PaddingProps<ThemeType extends Theme = RequiredTheme> extends Pick< SpaceProps<ThemeType>, | "p" | "padding" | "pt" | "paddingTop" | "pb" | "paddingBottom" | "pl" | "paddingLeft" | "pr" | "paddingRight" | "py" | "paddingY" | "px" | "paddingX" > { } export interface PaddingTopProps<ThemeType extends Theme = RequiredTheme> extends Pick<SpaceProps<ThemeType>, "pt" | "paddingTop"> { } export interface PaddingBottomProps<ThemeType extends Theme = RequiredTheme> extends Pick<SpaceProps<ThemeType>, "pb" | "paddingBottom"> { } export interface PaddingLeftProps<ThemeType extends Theme = RequiredTheme> extends Pick<SpaceProps<ThemeType>, "pl" | "paddingLeft"> { } export interface PaddingRightProps<ThemeType extends Theme = RequiredTheme> extends Pick<SpaceProps<ThemeType>, "pr" | "paddingRight"> { } export const padding: styleFn; export const paddingTop: styleFn; export const paddingBottom: styleFn; export const paddingLeft: styleFn; export const paddingRight: styleFn; /** * Color */ export interface TextColorProps<ThemeType extends Theme = RequiredTheme, TVal = ThemeValue<"colors", ThemeType>> { /** * The color utility parses a component's `color` and `bg` props and converts them into CSS declarations. * By default the raw value of the prop is returned. * * Color palettes can be configured with the ThemeProvider to use keys as prop values, with support for dot notation. * Array values are converted into responsive values. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/color) */ color?: ResponsiveValue<TVal, ThemeType> | undefined; } export const textColor: styleFn; export interface BackgroundColorProps<ThemeType extends Theme = RequiredTheme, TVal = ThemeValue<"colors", ThemeType>> { /** * The color utility parses a component's `color` and `bg` props and converts them into CSS declarations. * By default the raw value of the prop is returned. * * Color palettes can be configured with the ThemeProvider to use keys as prop values, with support for dot notation. * Array values are converted into responsive values. * * [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/CSS/background-color) */ bg?: ResponsiveValue<TVal, ThemeType> | undefined; backgroundColor?: ResponsiveValue<TVal, ThemeType> | undefined; } export const backgroundColor: styleFn; export interface ColorProps<ThemeType extends Theme = RequiredTheme, TVal = ThemeValue<"colors", ThemeType>> extends TextColorProps<ThemeType, TVal>, BackgroundColorProps<ThemeType, TVal>, OpacityProps { } export const color: styleFn; /** * Typography */ export function getPx(n: any, scale: any): string; export interface FontSizeProps<ThemeType extends Theme = RequiredTheme, TVal = ThemeValue<"fontSizes", ThemeType>> { /** * The fontSize utility parses a component's `fontSize` prop and converts it into a CSS font-size declaration. * * - Numbers from 0-8 (or `theme.fontSizes.length`) are converted to values on the [font size scale](#default-theme). * - Numbers greater than `theme.fontSizes.length` are converted to raw pixel values. * - String values are passed as raw CSS values. * - And array values are converted into responsive values. */ fontSize?: ResponsiveValue<TVal, ThemeType> | undefined; } export const fontSize: styleFn; export interface FontFamilyProps<ThemeType extends Theme = RequiredTheme> { fontFamily?: ResponsiveValue<CSS.Property.FontFamily, ThemeType> | undefined; } export const fontFamily: styleFn; export interface FontWeightProps<ThemeType extends Theme = RequiredTheme, TVal = ThemeValue<"fontWeights", ThemeType>> { /** * The font-weight CSS property specifies the weight (or boldness) of the font. * * The font weights available to you will depend on the font-family you are using. Some fonts are only available in normal and bold. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight) */ fontWeight?: ResponsiveValue<TVal, ThemeType> | undefined; } export const fontWeight: styleFn; export interface LineHeightProps<ThemeType extends Theme = RequiredTheme, TVal = ThemeValue<"lineHeights", ThemeType>> { /** * The line-height CSS property sets the amount of space used for lines, such as in text. On block-level elements, * it specifies the minimum height of line boxes within the element. * * On non-replaced inline elements, it specifies the height that is used to calculate line box height. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/line-height) */ lineHeight?: ResponsiveValue<TVal, ThemeType> | undefined; } export const lineHeight: styleFn; export interface TextAlignProps<ThemeType extends Theme = RequiredTheme> { /** * The text-align CSS property specifies the horizontal alignment of an inline or table-cell box. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/text-align) */ textAlign?: ResponsiveValue<CSS.Property.TextAlign, ThemeType> | undefined; } export const textAlign: styleFn; export interface FontStyleProps<ThemeType extends Theme = RequiredTheme> { /** * The font-style CSS property specifies whether a font should be styled with a normal, italic, * or oblique face from its font-family. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/font-style) */ fontStyle?: ResponsiveValue<CSS.Property.FontStyle, ThemeType> | undefined; } export const fontStyle: styleFn; export interface LetterSpacingProps< ThemeType extends Theme = RequiredTheme, TVal = ThemeValue<"letterSpacings", ThemeType>, > { /** * The letter-spacing CSS property sets the spacing behavior between text characters. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/letter-spacing) */ letterSpacing?: ResponsiveValue<TVal, ThemeType> | undefined; } export const letterSpacing: styleFn; /** * A convenience style group containing props related to typography such as fontFamily, fontSize, fontWeight, etc. * * - String values are passed as raw CSS values. * - Array values are converted into responsive values. */ export interface TypographyProps<ThemeType extends Theme = RequiredTheme> extends FontFamilyProps<ThemeType>, FontSizeProps<ThemeType>, FontWeightProps<ThemeType>, LineHeightProps<ThemeType>, LetterSpacingProps<ThemeType>, FontStyleProps<ThemeType>, TextAlignProps<ThemeType> { } export const typography: styleFn; /** * Layout */ export interface DisplayProps<ThemeType extends Theme = RequiredTheme> { /** * The display CSS property defines the display type of an element, which consists of the two basic qualities * of how an element generates boxes — the outer display type defining how the box participates in flow layout, * and the inner display type defining how the children of the box are laid out. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/display) */ display?: ResponsiveValue<CSS.Property.Display, ThemeType> | undefined; } export const display: styleFn; export interface WidthProps<ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.Width<TLengthStyledSystem>> { /** * The width utility parses a component's `width` prop and converts it into a CSS width declaration. * * - Numbers from 0-1 are converted to percentage widths. * - Numbers greater than 1 are converted to pixel values. * - String values are passed as raw CSS values. * - And arrays are converted to responsive width styles. */ width?: ResponsiveValue<TVal, ThemeType> | undefined; } export const width: styleFn; export interface MaxWidthProps< ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.MaxWidth<TLengthStyledSystem>, > { /** * The max-width CSS property sets the maximum width of an element. * It prevents the used value of the width property from becoming larger than the value specified by max-width. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/max-width) */ maxWidth?: ResponsiveValue<TVal, ThemeType> | undefined; } export const maxWidth: styleFn; export interface MinWidthProps< ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.MinWidth<TLengthStyledSystem>, > { /** * The min-width CSS property sets the minimum width of an element. * It prevents the used value of the width property from becoming smaller than the value specified for min-width. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/min-width) */ minWidth?: ResponsiveValue<TVal, ThemeType> | undefined; } export const minWidth: styleFn; export interface HeightProps<ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.Height<TLengthStyledSystem>> { /** * The height CSS property specifies the height of an element. By default, the property defines the height of the * content area. If box-sizing is set to border-box, however, it instead determines the height of the border area. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/height) */ height?: ResponsiveValue<TVal, ThemeType> | undefined; } export const height: styleFn; export interface MaxHeightProps< ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.MaxHeight<TLengthStyledSystem>, > { /** * The max-height CSS property sets the maximum height of an element. It prevents the used value of the height * property from becoming larger than the value specified for max-height. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/max-height) */ maxHeight?: ResponsiveValue<TVal, ThemeType> | undefined; } export const maxHeight: styleFn; export interface MinHeightProps< ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.MinHeight<TLengthStyledSystem>, > { /** * The min-height CSS property sets the minimum height of an element. It prevents the used value of the height * property from becoming smaller than the value specified for min-height. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/display) */ minHeight?: ResponsiveValue<TVal, ThemeType> | undefined; } export const minHeight: styleFn; export interface SizeProps<ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.Height<TLengthStyledSystem>> { size?: ResponsiveValue<TVal, ThemeType> | undefined; } export const size: styleFn; export interface VerticalAlignProps< ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.VerticalAlign<TLengthStyledSystem>, > { /** * The vertical-align CSS property specifies sets vertical alignment of an inline or table-cell box. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/vertical-align) */ verticalAlign?: ResponsiveValue<TVal, ThemeType> | undefined; } export const verticalAlign: styleFn; /** * Flexbox */ export interface AlignItemsProps<ThemeType extends Theme = RequiredTheme> { /** * The CSS align-items property sets the align-self value on all direct children as a group. The align-self * property sets the alignment of an item within its containing block. * * In Flexbox it controls the alignment of items on the Cross Axis, in Grid Layout it controls the alignment * of items on the Block Axis within their grid area. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/align-items) */ alignItems?: ResponsiveValue<CSS.Property.AlignItems, ThemeType> | undefined; } export const alignItems: styleFn; export interface AlignContentProps<ThemeType extends Theme = RequiredTheme> { /** * The CSS align-content property sets how the browser distributes space between and around content items * along the cross-axis of a flexbox container, and the main-axis of a grid container. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/align-content) */ alignContent?: ResponsiveValue<CSS.Property.AlignContent, ThemeType> | undefined; } export const alignContent: styleFn; export interface JustifyItemsProps<ThemeType extends Theme = RequiredTheme> { /** * The CSS justify-items property defines the default justify-self for all items of the box, giving them all * a default way of justifying each box along the appropriate axis. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/justify-items) */ justifyItems?: ResponsiveValue<CSS.Property.JustifyItems, ThemeType> | undefined; } export const justifyItems: styleFn; export interface JustifyContentProps<ThemeType extends Theme = RequiredTheme> { /** * The CSS justify-content property defines how the browser distributes space between and around content items * along the main-axis of a flex container, and the inline axis of a grid container. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content) */ justifyContent?: ResponsiveValue<CSS.Property.JustifyContent, ThemeType> | undefined; } export const justifyContent: styleFn; export interface FlexWrapProps<ThemeType extends Theme = RequiredTheme> { /** * The flex-wrap CSS property sets whether flex items are forced onto one line or can wrap onto multiple lines. * If wrapping is allowed, it sets the direction that lines are stacked. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/flex-wrap) */ flexWrap?: ResponsiveValue<CSS.Property.FlexWrap, ThemeType> | undefined; } export const flexWrap: styleFn; export interface FlexBasisProps< ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.FlexBasis<TLengthStyledSystem>, > { // TODO: The FlexBasisValue currently really only exists for documentation // purposes, because flex-basis also accepts `Nem` and `Npx` strings. // Not sure there’s a way to still have the union values show up as // auto-completion results. flexBasis?: ResponsiveValue<TVal, ThemeType> | undefined; } export const flexBasis: styleFn; export interface FlexDirectionProps<ThemeType extends Theme = RequiredTheme> { /** * The flex-direction CSS property specifies how flex items are placed in the flex container defining the main * axis and the direction (normal or reversed). * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/flex-direction) */ flexDirection?: ResponsiveValue<CSS.Property.FlexDirection, ThemeType> | undefined; } export const flexDirection: styleFn; export interface FlexProps<ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.Flex<TLengthStyledSystem>> { /** * The flex CSS property specifies how a flex item will grow or shrink so as to fit the space available in * its flex container. This is a shorthand property that sets flex-grow, flex-shrink, and flex-basis. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/flex) */ flex?: ResponsiveValue<TVal, ThemeType> | undefined; } export const flex: styleFn; export interface JustifySelfProps<ThemeType extends Theme = RequiredTheme> { /** * The CSS justify-self property set the way a box is justified inside its alignment container along * the appropriate axis. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/justify-self) */ justifySelf?: ResponsiveValue<CSS.Property.JustifySelf, ThemeType> | undefined; } export const justifySelf: styleFn; export interface AlignSelfProps<ThemeType extends Theme = RequiredTheme> { /** * The align-self CSS property aligns flex items of the current flex line overriding the align-items value. * * If any of the item's cross-axis margin is set to auto, then align-self is ignored. In Grid layout align-self * aligns the item inside the grid area. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/align-self) */ alignSelf?: ResponsiveValue<CSS.Property.AlignSelf, ThemeType> | undefined; } export const alignSelf: styleFn; export interface OrderProps<ThemeType extends Theme = RequiredTheme> { /** * The order CSS property sets the order to lay out an item in a flex or grid container. Items in a container * are sorted by ascending order value and then by their source code order. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/order) */ order?: ResponsiveValue<CSS.Property.Order, ThemeType> | undefined; } export const order: styleFn; export interface FlexGrowProps<ThemeType extends Theme = RequiredTheme> { /** * The flex-grow CSS property sets the flex grow factor of a flex item main size. It specifies how much of the * remaining space in the flex container should be assigned to the item (the flex grow factor). * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/flex-grow) */ flexGrow?: ResponsiveValue<CSS.Property.FlexGrow, ThemeType> | undefined; } export const flexGrow: styleFn; export interface FlexShrinkProps<ThemeType extends Theme = RequiredTheme> { /** * The flex-shrink CSS property sets the flex shrink factor of a flex item. If the size of all flex items is larger * than the flex container, items shrink to fit according to flex-shrink. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/flex-shrink) */ flexShrink?: ResponsiveValue<CSS.Property.FlexShrink, ThemeType> | undefined; } export const flexShrink: styleFn; /** * A convenience style group containing props related to flexbox. * * - String values are passed as raw CSS values. * - Array values are converted into responsive values. */ export interface FlexboxProps<ThemeType extends Theme = RequiredTheme> extends AlignItemsProps<ThemeType>, AlignContentProps<ThemeType>, JustifyItemsProps<ThemeType>, JustifyContentProps<ThemeType>, FlexWrapProps<ThemeType>, FlexDirectionProps<ThemeType>, FlexProps<ThemeType>, FlexGrowProps<ThemeType>, FlexShrinkProps<ThemeType>, FlexBasisProps<ThemeType>, JustifySelfProps<ThemeType>, AlignSelfProps<ThemeType>, OrderProps<ThemeType> { } export const flexbox: styleFn; /** * Grid Layout */ export interface GridGapProps< ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.GridGap<TLengthStyledSystem>, > { /** * The gap CSS property sets the gaps (gutters) between rows and columns. It is a shorthand for row-gap * and column-gap. * * @deprecated use gap * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/gap) */ gridGap?: ResponsiveValue<TVal, ThemeType> | undefined; } export const gridGap: styleFn; export interface GridColumnGapProps< ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.GridColumnGap<TLengthStyledSystem>, > { /** * The column-gap CSS property sets the size of the gap (gutter) between an element's columns. * * @deprecated use column-gap * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/column-gap) */ gridColumnGap?: ResponsiveValue<TVal, ThemeType> | undefined; } export const gridColumnGap: styleFn; export interface GridRowGapProps< ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.GridRowGap<TLengthStyledSystem>, > { /** * The row-gap CSS property sets the size of the gap (gutter) between an element's rows. * * @deprecated use row-gap * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/row-gap) */ gridRowGap?: ResponsiveValue<TVal, ThemeType> | undefined; } export const gridRowGap: styleFn; export interface GridColumnProps<ThemeType extends Theme = RequiredTheme> { /** * The grid-column CSS property is a shorthand property for grid-column-start and grid-column-end specifying * a grid item's size and location within the grid column by contributing a line, a span, or nothing (automatic) * to its grid placement, thereby specifying the inline-start and inline-end edge of its grid area. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column) */ gridColumn?: ResponsiveValue<CSS.Property.GridColumn, ThemeType> | undefined; } export const gridColumn: styleFn; export interface GridRowProps<ThemeType extends Theme = RequiredTheme> { /** * The grid-row CSS property is a shorthand property for grid-row-start and grid-row-end specifying a grid item’s * size and location within the grid row by contributing a line, a span, or nothing (automatic) to its grid * placement, thereby specifying the inline-start and inline-end edge of its grid area. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-row) */ gridRow?: ResponsiveValue<CSS.Property.GridRow, ThemeType> | undefined; } export const gridRow: styleFn; export interface GridAutoFlowProps<ThemeType extends Theme = RequiredTheme> { /** * The grid-auto-flow CSS property controls how the auto-placement algorithm works, specifying exactly * how auto-placed items get flowed into the grid. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-flow) */ gridAutoFlow?: ResponsiveValue<CSS.Property.GridAutoFlow, ThemeType> | undefined; } export const gridAutoFlow: styleFn; export interface GridAutoColumnsProps< ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.GridAutoColumns<TLengthStyledSystem>, > { /** * The grid-auto-columns CSS property specifies the size of an implicitly-created grid column track. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-columns) */ gridAutoColumns?: ResponsiveValue<TVal, ThemeType> | undefined; } export const gridAutoColumns: styleFn; export interface GridAutoRowsProps< ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.GridAutoRows<TLengthStyledSystem>, > { /** * The grid-auto-rows CSS property specifies the size of an implicitly-created grid row track. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-rows) */ gridAutoRows?: ResponsiveValue<TVal, ThemeType> | undefined; } export const gridAutoRows: styleFn; export interface GridTemplateColumnsProps< ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.GridTemplateColumns<TLengthStyledSystem>, > { /** * The grid-template-columns CSS property defines the line names and track sizing functions of the grid columns. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-columns) */ gridTemplateColumns?: ResponsiveValue<TVal, ThemeType> | undefined; } export const gridTemplateColumns: styleFn; export interface GridTemplateRowsProps< ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.GridTemplateRows<TLengthStyledSystem>, > { /** * The grid-template-rows CSS property defines the line names and track sizing functions of the grid rows. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/row-template-rows) */ gridTemplateRows?: ResponsiveValue<TVal, ThemeType> | undefined; } export const gridTemplateRows: styleFn; export interface GridTemplateAreasProps<ThemeType extends Theme = RequiredTheme> { /** * The grid-template-areas CSS property specifies named grid areas. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-areas) */ gridTemplateAreas?: ResponsiveValue<CSS.Property.GridTemplateAreas, ThemeType> | undefined; } export const gridTemplateAreas: styleFn; export interface GridAreaProps<ThemeType extends Theme = RequiredTheme> { /** * The grid-area CSS property is a shorthand property for grid-row-start, grid-column-start, grid-row-end * and grid-column-end, specifying a grid item’s size and location within the grid row by contributing a line, * a span, or nothing (automatic) to its grid placement, thereby specifying the edges of its grid area. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/grid-area) */ gridArea?: ResponsiveValue<CSS.Property.GridArea, ThemeType> | undefined; } export const gridArea: styleFn; /** * A convenience style group containing props related to grid. * * - String values are passed as raw CSS values. * - Array values are converted into responsive values. */ export interface GridProps<ThemeType extends Theme = RequiredTheme> extends GridGapProps<ThemeType>, GridColumnGapProps<ThemeType>, GridRowGapProps<ThemeType>, GridColumnProps<ThemeType>, GridRowProps<ThemeType>, GridAutoFlowProps<ThemeType>, GridAutoColumnsProps<ThemeType>, GridAutoRowsProps<ThemeType>, GridTemplateColumnsProps<ThemeType>, GridTemplateRowsProps<ThemeType>, GridTemplateAreasProps<ThemeType>, GridAreaProps<ThemeType> { } export const grid: styleFn; /** * A convenience style group containing props related to layout such as width, height, and display. * * - For length props, Numbers from 0-4 (or the length of theme.sizes) are converted to values on the spacing scale. * - For length props, Numbers greater than the length of the theme.sizes array are converted to raw pixel values. * - String values are passed as raw CSS values. * - Array values are converted into responsive values. */ export interface LayoutProps<ThemeType extends Theme = RequiredTheme> extends WidthProps<ThemeType>, HeightProps<ThemeType>, MinWidthProps<ThemeType>, MinHeightProps<ThemeType>, MaxWidthProps<ThemeType>, MaxHeightProps<ThemeType>, DisplayProps<ThemeType>, VerticalAlignProps<ThemeType>, SizeProps<ThemeType>, OverflowProps<ThemeType> { } export const layout: styleFn; /** * Borders */ export interface BorderWidthProps< ThemeType extends Theme = RequiredTheme, TVal = ThemeValue<"borderWidths", ThemeType>, > { /** * The border-width shorthand CSS property sets the width of all sides of an element's border. * * [MDN * reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-width) */ borderWidth?: ResponsiveValue<TVal, ThemeType> | undefined; /** * The border-top-width CSS property sets the width of the top border of an element. * * [MDN * reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-top-width) */ borderTopWidth?: ResponsiveValue<TVal, ThemeType> | undefined; /** * The border-bottom-width CSS property sets the width of the bottom border of an element. * * [MDN * reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-bottom-width) */ borderBottomWidth?: ResponsiveValue<TVal, ThemeType> | undefined; /** * The border-left-width CSS property sets the width of the left border of an element. * * [MDN * reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-left-width) */ borderLeftWidth?: ResponsiveValue<TVal, ThemeType> | undefined; /** * The border-right-width CSS property sets the width of the right border of an element. * * [MDN * reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-right-width) */ borderRightWidth?: ResponsiveValue<TVal, ThemeType> | undefined; } export const borderWidth: styleFn; export interface BorderStyleProps<ThemeType extends Theme = RequiredTheme> { /** * The border-style shorthand CSS property sets the style of all sides of an element's border. * * [MDN * reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-style) */ borderStyle?: ResponsiveValue<CSS.Property.BorderStyle, ThemeType> | undefined; /** * The border-top-style CSS property sets the line style of an element's top border. * * [MDN * reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-top-style) */ borderTopStyle?: ResponsiveValue<CSS.Property.BorderTopStyle, ThemeType> | undefined; /** * The border-bottom-style CSS property sets the line style of an element's bottom border. * * [MDN * reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-bottom-style) */ borderBottomStyle?: ResponsiveValue<CSS.Property.BorderBottomStyle, ThemeType> | undefined; /** * The border-left-style CSS property sets the line style of an element's left border. * * [MDN * reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-left-style) */ borderLeftStyle?: ResponsiveValue<CSS.Property.BorderLeftStyle, ThemeType> | undefined; /** * The border-right-style CSS property sets the line style of an element's right border. * * [MDN * reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-right-style) */ borderRightStyle?: ResponsiveValue<CSS.Property.BorderRightStyle, ThemeType> | undefined; } export const borderStyle: styleFn; export interface BorderColorProps<ThemeType extends Theme = RequiredTheme, TVal = ThemeValue<"colors", ThemeType>> { /** * The border-color shorthand CSS property sets the color of all sides of an element's border. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-color) */ borderColor?: ResponsiveValue<TVal, ThemeType> | undefined; /** * The border-top-color CSS property sets the color of an element's top border. It can also be set with the shorthand CSS properties border-color or border-top. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-top-color) */ borderTopColor?: ResponsiveValue<TVal, ThemeType> | undefined; /** * The border-bottom-color CSS property sets the color of an element's bottom border. It can also be set with the shorthand CSS properties border-color or border-bottom. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-bottom-color) */ borderBottomColor?: ResponsiveValue<TVal, ThemeType> | undefined; /** * The border-left-color CSS property sets the color of an element's left border. It can also be set with the shorthand CSS properties border-color or border-left. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-left-color) */ borderLeftColor?: ResponsiveValue<TVal, ThemeType> | undefined; /** * The border-right-color CSS property sets the color of an element's right border. It can also be set with the shorthand CSS properties border-color or border-right. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-right-color) */ borderRightColor?: ResponsiveValue<TVal, ThemeType> | undefined; } export const borderColor: styleFn; export interface BorderTopProps< ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.BorderTop<TLengthStyledSystem>, > { /** * The border-top CSS property is a shorthand that sets the values of border-top-width, border-top-style, * and border-top-color. These properties describe an element's top border. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-top) */ borderTop?: ResponsiveValue<TVal, ThemeType> | undefined; } export const borderTop: styleFn; export interface BorderRightProps< ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.BorderRight<TLengthStyledSystem>, > { /** * The border-right CSS property is a shorthand that sets border-right-width, border-right-style, * and border-right-color. These properties set an element's right border. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-right) */ borderRight?: ResponsiveValue<TVal, ThemeType> | undefined; } export const borderRight: styleFn; export interface BorderBottomProps< ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.BorderBottom<TLengthStyledSystem>, > { /** * The border-bottom CSS property sets an element's bottom border. It's a shorthand for * border-bottom-width, border-bottom-style and border-bottom-color. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-bottom) */ borderBottom?: ResponsiveValue<TVal, ThemeType> | undefined; } export const borderBottom: styleFn; export interface BorderLeftProps< ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.BorderLeft<TLengthStyledSystem>, > { /** * The border-left CSS property is a shorthand that sets the values of border-left-width, * border-left-style, and border-left-color. These properties describe an element's left border. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-left) */ borderLeft?: ResponsiveValue<TVal, ThemeType> | undefined; } export const borderLeft: styleFn; export interface BorderRadiusProps<ThemeType extends Theme = RequiredTheme, TVal = ThemeValue<"radii", ThemeType>> { /** * The border-radius CSS property rounds the corners of an element's outer border edge. You can set a single * radius to make circular corners, or two radii to make elliptical corners. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius) */ borderRadius?: ResponsiveValue<TVal, ThemeType> | undefined; /** * The border-top-left-radius CSS property rounds the top-left corner of an element. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-top-left-radius) */ borderTopLeftRadius?: ResponsiveValue<TVal, ThemeType> | undefined; /** * The border-top-right-radius CSS property rounds the top-right corner of an element. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-top-right-radius) */ borderTopRightRadius?: ResponsiveValue<TVal, ThemeType> | undefined; /** * The border-bottom-left-radius CSS property rounds the bottom-left corner of an element. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-bottom-left-radius) */ borderBottomLeftRadius?: ResponsiveValue<TVal, ThemeType> | undefined; /** * The border-bottom-right-radius CSS property rounds the bottom-right corner of an element. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border-bottom-right-radius) */ borderBottomRightRadius?: ResponsiveValue<TVal, ThemeType> | undefined; } export const borderRadius: styleFn; export interface BordersProps<ThemeType extends Theme = RequiredTheme> extends BorderProps<ThemeType>, BorderTopProps<ThemeType>, BorderRightProps<ThemeType>, BorderBottomProps<ThemeType>, BorderLeftProps<ThemeType>, BorderWidthProps<ThemeType>, BorderColorProps<ThemeType>, BorderStyleProps<ThemeType>, BorderRadiusProps<ThemeType> { } export const borders: styleFn; export interface BorderProps<ThemeType extends Theme = RequiredTheme, TVal = CSS.Property.Border<TLengthStyledSystem>> extends BorderWidthProps<ThemeType>, BorderStyleProps<ThemeType>, BorderColorProps<ThemeType>, BorderRadiusProps<ThemeType>, BorderTopProps<ThemeType>, BorderRightProps<ThemeType>, BorderBottomProps<ThemeType>, BorderLeftProps<ThemeType> { /** * The border CSS property sets an element's border. It's a shorthand for border-width, border-style, * and border-color. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/border) */ border?: ResponsiveValue<TVal, ThemeType> | undefined; borderX?: ResponsiveValue<TVal, ThemeType> | undefined; borderY?: ResponsiveValue<TVal, ThemeType> | undefined; } export const border: styleFn; export interface BoxShadowProps<ThemeType extends Theme = RequiredTheme> { /** * The box-shadow CSS property adds shadow effects around an element's frame. You can set multiple effects separated * by commas. A box shadow is described by X and Y offsets relative to the element, blur and spread radii and color. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow) */ boxShadow?: ResponsiveValue<CSS.Property.BoxShadow | number, ThemeType> | undefined; } export const boxShadow: styleFn; export interface TextShadowProps<ThemeType extends Theme = RequiredTheme> { /** * The `text-shadow` CSS property adds shadows to text. It accepts a comma-separated list of shadows to be applied * to the text and any of its `decorations`. Each shadow is described by some combination of X and Y offsets from * the element, blur radius, and color. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/text-shadow) */ textShadow?: ResponsiveValue<CSS.Property.TextShadow | number, ThemeType> | undefined; } export const textShadow: styleFn; export interface ShadowProps<ThemeType extends Theme = RequiredTheme> extends BoxShadowProps<ThemeType>, TextShadowProps<ThemeType> { } export const shadow: styleFn; export interface OpacityProps<ThemeType extends Theme = RequiredTheme> { /** * The opacity CSS property sets the transparency of an element or the degree to which content * behind an element is visible. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/opacity) */ opacity?: ResponsiveValue<CSS.Property.Opacity, ThemeType> | undefined; } export const opacity: styleFn; export interface OverflowProps<ThemeType extends Theme = RequiredTheme> { /** * The overflow CSS property sets what to do when an element's content is too big to fit in its block * formatting context. It is a shorthand for overflow-x and overflow-y. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/overflow) */ overflow?: ResponsiveValue<CSS.Property.Overflow, ThemeType> | undefined; /** * The overflow-x CSS property sets what shows when content overflows a block-level element's left * and right edges. This may be nothing, a scroll bar, or the overflow content. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/overflow-x) */ overflowX?: ResponsiveValue<CSS.Property.OverflowX, ThemeType> | undefined; /** * The overflow-y CSS property sets what shows when content overflows a block-level element's top * and bottom edges. This may be nothing, a scroll bar, or the overflow content. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/overflow-y) */ overflowY?: ResponsiveValue<CSS.Property.OverflowY, ThemeType> | undefined; } export const overflow: styleFn; export const overflowX: styleFn; export const overflowY: styleFn; /** * Background */ export interface BackgroundImageProps<ThemeType extends Theme = RequiredTheme> { /** * The background-image CSS property sets one or more background images on an element. * * [MDN reference](https://developer.mozilla.org/en-US/docs/Web/CSS/background-image) */ backgroundImage?: ResponsiveValue<CSS.Property.BackgroundImage, ThemeType> | undefined; }