@wix/design-system
Version:
@wix/design-system
115 lines • 6.27 kB
TypeScript
import { CSSProperties } from 'react';
import { Spacing } from '../common';
import { ValuesOf } from '../utils/typeUtils';
import { DIRECTION, HORIZONTAL_ALIGNMENT, SPACING, VERTICAL_ALIGNMENT } from './Box.constants';
export type BoxPropsBase = {
/** Defines if the box behaves as an inline element */
inline?: boolean;
/** Defines how the children are ordered (horizontally or vertically) */
direction?: BoxDirection;
/** Allows to render any component as a child item */
children?: React.ReactNode;
/** Specifies a CSS class name to be appended to the component’s root element.
* @internal
*/
className?: string;
/** Defines how the children are aligned according to the X axis */
align?: BoxHorizontalAlignment;
/** Defines how the children are aligned according to the Y axis */
verticalAlign?: BoxVerticalAlignment;
/** Accepts HTML attributes that can be used in the tests */
dataHook?: string;
/**
* Accepts HTML attributes that can be used in the tests
* @deprecated use dataHook instead
*/
'data-hook'?: string;
/** Sets the gaps/gutters between flex items.
* Accepts a numeric value (multiplied by spacing unit), predefined spacing value (tiny, small, etc.)
* a spacing token (SP1, SP2, etc.) */
gap?: BoxCssSizingProperty;
/** Enables a border and sets its width and style. This prop does not include WSR color variable keys. */
border?: string;
/** Sets object of CSS styles */
style?: CSSProperties;
} & BoxColorProperties & BoxSpacingProperties & BoxSizeProperties;
export type BoxColorProperties = {
/** Sets a text color by a key from the color palette or natively supported value (Hex, RGB, etc.) */
color?: string;
/** Sets a background color by a key from the color palette or natively supported value (Hex, RGB, etc.) */
backgroundColor?: string;
/** Sets a border color by a key from the color palette or natively supported value (Hex, RGB, etc.) */
borderColor?: string;
/** Sets a border top color by a key from the color palette or natively supported value (Hex, RGB, etc.) */
borderTopColor?: string;
/** Sets a border right color by a key from the color palette or natively supported value (Hex, RGB, etc.) */
borderRightColor?: string;
/** Sets a border bottom color by a key from the color palette or natively supported value (Hex, RGB, etc.) */
borderBottomColor?: string;
/** Sets a border left color by a key from the color palette or natively supported value (Hex, RGB, etc.) */
borderLeftColor?: string;
};
export type BoxSpacingProperties = {
/** Sets margin on all sides.
* Accepts a numeric value (multiplied by spacing unit), predefined spacing value (tiny, small, etc.)
* a spacing token (SP1, SP2, etc.) or a string of space-separated values ("3px 3px") */
margin?: BoxCssSizingProperty;
/** Sets margin on the top.
* Accepts a numeric value (multiplied by spacing unit), predefined spacing value (tiny, small, etc.)
* a spacing token (SP1, SP2, etc.) or a value in pixels */
marginTop?: BoxCssSizingProperty;
/** Sets margin on the right.
* Accepts a numeric value (multiplied by spacing unit), predefined spacing value (tiny, small, etc.)
* a spacing token (SP1, SP2, etc.) or a value in pixels */
marginRight?: BoxCssSizingProperty;
/** Sets margin on the bottom.
* Accepts a numeric value (multiplied by spacing unit), predefined spacing value (tiny, small, etc.)
* a spacing token (SP1, SP2, etc.) or a value in pixels */
marginBottom?: BoxCssSizingProperty;
/** Sets margin on the left.
* Accepts a numeric value (multiplied by spacing unit), predefined spacing value (tiny, small, etc.)
* a spacing token (SP1, SP2, etc.) or a value in pixels */
marginLeft?: BoxCssSizingProperty;
/** Sets padding on all sides.
* Accepts a numeric value (multiplied by spacing unit), predefined spacing value (tiny, small, etc.)
* a spacing token (SP1, SP2, etc.) or a string of space-separated values ("3px 3px") */
padding?: BoxCssSizingProperty;
/** Sets padding on the top.
* Accepts a numeric value (multiplied by spacing unit), predefined spacing value (tiny, small, etc.)
* a spacing token (SP1, SP2, etc.) or a value in pixels */
paddingTop?: BoxCssSizingProperty;
/** Sets padding on the right.
* Accepts a numeric value (multiplied by spacing unit), predefined spacing value (tiny, small, etc.)
* a spacing token (SP1, SP2, etc.) or a value in pixels */
paddingRight?: BoxCssSizingProperty;
/** Sets padding on the bottom.
* Accepts a numeric value (multiplied by spacing unit), predefined spacing value (tiny, small, etc.)
* a spacing token (SP1, SP2, etc.) or a value in pixels */
paddingBottom?: BoxCssSizingProperty;
/** Sets padding on the left.
* Accepts a numeric value (multiplied by spacing unit), predefined spacing value (tiny, small, etc.)
* a spacing token (SP1, SP2, etc.) or a value in pixels */
paddingLeft?: BoxCssSizingProperty;
};
export type BoxSizeProperties = {
/** Sets the minimum width of the box in pixels */
minWidth?: BoxCssSizingProperty;
/** Sets the maximum width of the box in pixels */
maxWidth?: BoxCssSizingProperty;
/** Sets the width of the box in pixels */
width?: BoxCssSizingProperty;
/** Sets the minimum height of the box in pixels */
minHeight?: BoxCssSizingProperty;
/** Sets the maximum height of the box in pixels */
maxHeight?: BoxCssSizingProperty;
/** Sets the height of the box in pixels */
height?: BoxCssSizingProperty;
};
export type BoxCSSProperties = Omit<CSSProperties, 'direction' | 'flexDirection' | 'justifyContent' | 'alignItems'>;
export type BoxProps = BoxPropsBase & BoxCSSProperties;
export type BoxDirection = ValuesOf<typeof DIRECTION>;
export type BoxHorizontalAlignment = ValuesOf<typeof HORIZONTAL_ALIGNMENT>;
export type BoxVerticalAlignment = ValuesOf<typeof VERTICAL_ALIGNMENT>;
export type BoxSpacing = ValuesOf<typeof SPACING>;
export type BoxCssSizingProperty = BoxSpacing | Spacing | string | number;
//# sourceMappingURL=Box.types.d.ts.map