UNPKG

@kiwicom/orbit-components

Version:

Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com’s products.

84 lines (74 loc) 6.58 kB
# Stack To implement Stack component into your project you'll need to add the import: ```jsx import Stack from "@kiwicom/orbit-components/lib/Stack"; ``` After adding import into your project you can use it simply like: ```jsx <Stack> <Button>My button</Button> <Button iconRight={<ChevronDown />} /> </Stack> ``` ## Props Table below contains all types of the props available in Stack component. | Name | Type | Default | Description | | :------------ | :-------------------------- | :----------- | :------------------------------- | | align | [`enum`](#enum) | `"start"` | The `align-items` and `align-content` of the Stack. | basis | `string` | `auto` | Specifies the basis value of `flex-basis`. | **children** | `React.Node` | | Content of the Stack. | dataTest | `string` | | Optional prop for testing purposes. | desktop | [`Object`](#media-queries) | | Object for setting up properties for the desktop viewport. [See Media queries](#media-queries) | direction | [`enum`](#enum) | `"row"` | The `flex-direction` of the Stack. [See Functional specs](#functional-specs) | element | `string` | `"div"` | The string used for the root node. | flex | `boolean` | `false` | If `true` or you specify some flex attribute, the Stack will use flex attributes. | grow | `boolean` | `false` | If `true`, the Stack will have `flex-grow` set to `1`, otherwise it will be `0`. | inline | `boolean` | `false` | If `true`, the Stack will have `display` set to `inline-flex`, otherwise it will be `flex`. | justify | [`enum`](#enum) | `"start"` | The `justify-content` of the Stack. | largeDesktop | [`Object`](#media-queries) | | Object for setting up properties for the largeDesktop viewport. [See Media queries](#media-queries) | largeMobile | [`Object`](#media-queries) | | Object for setting up properties for the largeMobile viewport. [See Media queries](#media-queries) | mediumMobile | [`Object`](#media-queries) | | Object for setting up properties for the mediumMobile viewport. [See Media queries](#media-queries) | shrink | `boolean` | `false` | If `true`, the Stack will have `flex-shrink` set to `1`. | spacing | [`spacing`](#spacing) | `"natural"` | The spacing between its children. | spaceAfter | `enum` | | Additional `padding` to bottom of the Stack. [See this doc](https://github.com/kiwicom/orbit-components/tree/master/src/common/getSpacingToken) | tablet | [`Object`](#media-queries) | | Object for setting up properties for the tablet viewport. [See Media queries](#media-queries) | wrap | `boolean` | `false` | If `true`, the Stack will have `flex-wrap` set to `wrap`, otherwise it will be `nowrap`. ### Media Queries When you need to specify some different behaviour of the Stack component on different viewport, you can use properties for it. There are `mediumMobile`, `largeMobile`, `tablet`, `desktop` and `largeDesktop` available and it behaves the same as [mediaQueries](https://github.com/kiwicom/orbit-components/tree/master/src/utils/mediaQuery) functions. All this properties - objects have the some own properties and none is required. | Name | Type | Default | Description | | :------------ | :-------------------------- | :----------- | :------------------------------- | | align | [`enum`](#enum) | `"start"` | The `align-items` and `align-content` of the Stack. | basis | `string` | `auto` | Specifies the basis value of `flex-basis`. | direction | [`enum`](#enum) | `"row"` | The `flex-direction` of the Stack. | grow | `boolean` | `false` | If `true`, the Stack will have `flex-grow` set to `1`, otherwise it will be `0`. | inline | `boolean` | `false` | If `true`, the Stack will have `display` set to `inline-flex`, otherwise it will be `flex`. | justify | [`enum`](#enum) | `"start"` | The `justify-content` of the Stack. | shrink | `boolean` | `true` | If `false`, the Stack will have `flex-shrink` set to `0`. | spacing | [`spacing`](#spacing) | `"natural"` | The spacing between its children. | spaceAfter | `enum` | | Additional `padding` to bottom of the Stack. [See this doc](https://github.com/kiwicom/orbit-components/tree/master/src/common/getSpacingToken) | wrap | `boolean` | `false` | If `true`, the Stack will have `flex-wrap` set to `wrap`, otherwise it will be `nowrap`. ## Functional specs * The default behaviour for the `Stack` component is to not be a `flexbox` container. It means that by default it's nesting children natively (below each other) and it won't use any `flex` CSS properties. * If you specify some property (except children, spaceAfter, dataTest and spacing) it will become a `flexbox` container and the `flex-direction: row` will be used. ### enum | justify | direction | align | | :---------- | :------------------ | :---------- | | `"start"` | `"row"` | `"start"` | | `"end"` | `"column"` | `"end"` | | `"center"` | `"row-reverse"` | `"center"` | | `"between"` | `"column-reverse"` | `"stretch"` | | `"around"` | ### spacing | name | size on `0 - 991px` | size on `992px - ∞` | | :---------------- | :------------------ | :------------------ | | `"none"` | `null` | `null` | | `"extraTight"` | `2px` | `2px` | | `"tight"` | `4px` | `4px` | | `"condensed"` | `8px` | `8px` | | `"compact"` | `12px` | `12px` | | `"natural"` | `16px` | `16px` | | `"comfy"` | `20px` | `24px` | | `"loose"` | `28px` | `32px` | | `"extraLoose"` | `36px` | `40px` |