Primitives
Primitives are polymorphic components
Getting started
This package is already a part of admin-ui
- so if you are using it, there is no need for installation.
For standalone usage, you can install it as an npm package (with its peer dependencies):
yarn add @vtex/admin-primitives @vtex/admin-core reakit @emotion/css @emotion/react
After that, you must add the admin-core's ThemeProvider
on your app root - so that you can consume styles.
import { Flex } from '@vtex/admin-primitives'
function ApplicationRoot() {
return <Flex>A flex container</Flex>
}
Engineering
csx prop
This prop is present in all components and is responsible for receiving a style-object. More info Styles
<Primitive csx={{ bg: 'blue', color: 'light.primary' }}>Blue box</Primitive>s
Polymorphism
All primitives are polymorphic, this means that you can assign different elements to them through the element
property.
The default element is the div
, this is true to every component:
<Primitive>renders a div</Primitive>
You can choose the element to render:
<Primitive element="a" href="#">
renders an anchor
</Primitive>
You can also pass a valid React component (it must receive className
so that styles are passed correctly):
import { Link } from 'gatsby'
function Example() {
return <Primitive element={Link}>Gatsby link</Primitive>
}
Types
PrimitiveProps
prop | type | required | description |
---|---|---|---|
element | E |
Element that will be rendered | |
className | string |
element className | |
extends <E>
|
props of E
|
This component inherits all props of E |
FlexProps
prop | type | required | description |
---|---|---|---|
E | PrimitiveProps<E> |
Extends all props of Primitive
|
|
align | ResponsiveValue<AlignContent> |
Shorthand for CSS alignItems property |
|
basis | ResponsiveValue<FlexBasis> |
Shorthand for CSS flexbasis property |
|
direction | ResponsiveValue<FlexDirection> |
Shorthand for CSS flexDirection property |
|
grow | ResponsiveValue<FlexGrow> |
Shorthand for CSS flexGrow property |
|
shrink | ResponsiveValue<FlexShrink> |
Shorthand for CSS flexShrink property |
|
justify | ResponsiveValue<JustifyContent> |
Shorthand for CSS justifyContent property |
|
wrap | ResponsiveValue<FlexWrap> |
Shorthand for CSS flexWrap property |
|
order | ResponsiveValue<Order> |
Shorthand for CSS order property |
FlexSpacerProps
prop | type | required | description |
---|---|---|---|
E | PrimitiveProps<E> |
Extends all props of Primitive
|
GridProps
prop | type | required | description |
---|---|---|---|
E | PrimitiveProps<E> |
Extends all props of Primitive
|
|
gap | ResponsiveValue<GridGap> |
Shorthand for CSS gridGap property |
|
rowGap | ResponsiveValue<GridRowGap> |
Shorthand for CSS gridRowGap property |
|
columnGap | ResponsiveValue<GridColumnGap> |
Shorthand for CSS gridColumnGap property |
|
templateAreas | string[] |
Shorthand for CSS gridTemplateAreas property |
|
templateRows | ResponsiveValue<GridTemplateRows> |
Shorthand for CSS gridTemplateRows property |
|
templateColumns | ResponsiveValue<GridTemplateColumns> |
Shorthand for CSS gridTemplateColumns property |
GridItemProps
prop | type | required | description |
---|---|---|---|
E | PrimitiveProps<E> |
Extends all props of Primitive
|
|
area | ResponsiveValue<GridArea> |
Shorthand for CSS gridArea property |