UNPKG

@dcl/react-ecs

Version:
135 lines (133 loc) 6.65 kB
import { Color4 } from '@dcl/ecs/dist/components/generated/pb/decentraland/common/colors.gen'; import { ScaleUnit } from '../types'; /** * unit value specified. i.e. 1 || '100%' || '1px' || '10vw' * @public */ export type PositionUnit = `${number}px` | `${number}%` | number | `${number}` | ScaleUnit; /** * The values are in clockwise order, beginning at the top: top, right, bottom, then left * When one value is specified, it applies the same margin to all four sides. * * When two values are specified, the first margin applies to the top and bottom, the second to the left and right. * * When three values are specified, the first margin applies to the top, the second to the left and right, the third to the bottom. * When four values are specified, the margins apply to the top, right, bottom, and left in that order (clockwise). * @public */ export type PositionShorthand = PositionUnit | `${PositionUnit} ${PositionUnit}` | `${PositionUnit} ${PositionUnit} ${PositionUnit}` | `${PositionUnit} ${PositionUnit} ${PositionUnit} ${PositionUnit}`; /** * Type used for defining the position of the element. i.e. margin, padding * @public */ export interface Position { top: PositionUnit; right: PositionUnit; bottom: PositionUnit; left: PositionUnit; } /** * Type used for defining the border radius of the element * @public */ export interface BorderRadius { topLeft: PositionUnit; topRight: PositionUnit; bottomLeft: PositionUnit; bottomRight: PositionUnit; } /** * @public */ export type DisplayType = 'flex' | 'none'; /** * @public */ export type JustifyType = 'flex-start' | 'center' | 'flex-end' | 'space-between' | 'space-around' | 'space-evenly'; /** * @public */ export type AlignType = 'auto' | 'flex-start' | 'center' | 'flex-end' | 'stretch' | 'baseline' | 'space-between' | 'space-around'; /** * @public */ export type FlexDirectionType = 'row' | 'column' | 'column-reverse' | 'row-reverse'; /** * @public */ export type FlexWrapType = 'wrap' | 'nowrap' | 'wrap-reverse'; /** * @public * The overflow property controls what happens to content that is too big to fit into an area */ export type OverflowType = 'hidden' | 'scroll' | 'visible'; /** * @public * The position property specifies the type of positioning method used for an element */ export type PositionType = 'absolute' | 'relative'; /** * @public * The pointer filter property determines if the ui element blocks the pointer or not (elements with pointer events always block the pointer regardless of this property) */ export type PointerFilterType = 'none' | 'block'; /** * Layout props to position things in the canvas * @public */ export interface UiTransformProps { /** The display property controls if a item is going to be displayed or not. */ display?: DisplayType; /** The flex shorthand property sets how a flex item will grow or shrink to fit the space available in its flex container. */ flex?: number; /** Justify content describes how to align children within the main axis of their container. */ justifyContent?: JustifyType; /** The position type of an element defines how it is positioned within its parent. */ positionType?: PositionType; /** The align-items property controls the alignment of items on the Cross Axis. */ alignItems?: AlignType; /** The align-self property has the same options and effect as align items but instead of affecting the children within a container, you can apply this property to a single child to change its alignment within its parent */ alignSelf?: AlignType; /** The align-content property sets the distribution of space between and around content items along a flexbox's cross-axis or a grid's block axis. */ alignContent?: AlignType; /** The flex-direction property sets how flex items are placed in the flex container defining the main axis and the direction (normal or reversed). */ flexDirection?: FlexDirectionType; /** The position property sets how an element is positioned in a document. The top, right, bottom, and left properties determine the final location of positioned elements. */ position?: Partial<Position> | PositionShorthand; /** The padding shorthand property sets the padding area on all four sides of an element at once. */ padding?: Partial<Position> | PositionShorthand; /** The margin shorthand property sets the margin area on all four sides of an element. */ margin?: Partial<Position> | PositionShorthand; /** The width property specifies the width of an element. Using 'auto' as value makes it adapt to its content. */ width?: PositionUnit | 'auto'; /** The height property specifies the height of an element. Using 'auto' as value makes it adapt to its content. */ height?: PositionUnit | 'auto'; /** The min-width property sets the minimum width of an element. */ minWidth?: PositionUnit; /** The max-width property sets the maximum width of an element. */ maxWidth?: PositionUnit; /** The min-height CSS property sets the minimum height of an element. */ minHeight?: PositionUnit; /** The max-height property sets the maximum height of an element */ maxHeight?: PositionUnit; /** The flex-wrap 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*/ flexWrap?: FlexWrapType; /** The flex-basis property sets the initial main size of a flex item. It sets the size of the content box.*/ flexBasis?: number; /** The flex-grow property sets the flex grow factor of a flex item's main size. */ flexGrow?: number; /** The flex-shrink 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. */ flexShrink?: number; /** The overflow property controls what happens to content that is too big to fit into an area */ overflow?: OverflowType; /** The pointer filter property determines if the ui element blocks the pointer or not (elements with pointer events always block the pointer regardless of this property) **/ pointerFilter?: PointerFilterType; borderColor?: Record<keyof Partial<Position>, Color4> | Color4 | undefined; borderRadius?: Partial<BorderRadius> | PositionUnit; borderWidth?: Partial<Position> | PositionUnit; /** The opacity property sets the opacity level for an element, it's accumulated across children @defaultValue 1 */ opacity?: number; /** default 0 */ zIndex?: number; }