
Security News
Axios Maintainer Confirms Social Engineering Attack Behind npm Compromise
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.
Toolkit for easily and smoothly building UIs with React. As smooth as Floki build ships.
With npm.
npm install --save flokit
Or with yarn.
yarn add flokit
Import components directly from flokit to build and/or compose your UI or design system.
import { Flex } from 'flokit'
<Flex
width={1}
height={1}
alignItems='center'
justifyContent='center'
>
I'm a flexbox
</Flex>
Flokit is built with styled-system for theamable and responsive style props. So go check their docs if you are not familiar with it yet.
Strings values are parsed to raw CSS values, you can use it to set non numerical property values, or to use custom units for numerical values, as rem or em. You can also use strings for setting values defined in the theme object, as for color values.
// picks the value defined in `theme.colors['blue']`
<Box color='blue' />
// picks up a nested color value using dot notation
// `theme.colors['gray'][0]`
<Box color='gray.0' />
// raw CSS color value
<Box color='#f00' />
// width `'2em'`
<Box width='2em' />
// sets margin `'auto'`
<Box m='auto' />
// sets margin `'16rem'`
<Box m='16rem' />
You can use numbers as props in several ways to define property values.
const spaces = [0, 4, 8, 16, 32] for defining margin and padding, you can use numbers from 0 to the length of the scale.// sets margin value of `theme.space[1]`
<Box m={1} />
// sets a margin value of `16px` since it's greater than `theme.space.length`
<Box m={16} />
width and height you can use numbers between 0-1. Numbers greater than 1 are transformed into raw pixel values.// width `33.3%`
<Box width={1/3} />
// width `50%`
<Box width={1/2} />
// width `100%`
<Box width={1} />
// width `256px`
<Box width={256} />
You can use a shorthand array syntax to define responsive width, height, margin, padding, font-size and a lot of other properties.
<Box width={[1, 1/2, 1/4]} />
This will map your array of values into mobile-first media queries, giving you the following:
.Box {
width: 100%;
}
@media screen and (min-width: 40em) {
.Box {
width: 50%;
}
}
@media screen and (min-width: 52em) {
.Box {
width: 25%;
}
}
Primitive box-model component. Used as the base for all other components.
import { Box } from 'flokit'
<Box>
I'm a box
</Box>
| Prop | CSS Property | Type | Theme |
|---|---|---|---|
position | position | string|array | none |
zIndex | z-index | string|array | zIndices |
top | top | string|array | none |
right | right | string|array | none |
bottom | bottom | string|array | none |
left | left | string|array | none |
display | display | string|array | none |
width | width | string|number|array | sizes |
height | height | string|number|array | sizes |
minWidth | min-width | string|number|array | sizes |
maxWidth | max-width | string|number|array | sizes |
minHeight | min-height | string|number|array | sizes |
maxHeight | max-height | string|number|array | sizes |
size | width & height | string|number|array | sizes |
verticalAlign | vertical-align | string|array | none |
overflow | overflow | string|array | none |
m|margin | margin | string|number|array | space |
mt|marginTop | margin-top | string|number|array | space |
mr|marginRight | margin-right | string|number|array | space |
mb|marginBottom | margin-bottom | string|number|array | space |
ml|marginLeft | margin-left | string|number|array | space |
mx|marginX | margin-left & margin-right | string|number|array | space |
my|marginY | margin-top & margin-bottom | string|number|array | space |
p|padding | padding | string|number|array | space |
pt|paddingTop | padding-top | string|number|array | space |
pr|paddingRight | padding-right | string|number|array | space |
pb|paddingBottom | padding-bottom | string|number|array | space |
pl|paddingLeft | padding-left | string|number|array | space |
px | padding-left & padding-right | string|number|array | space |
py | padding-top & padding-bottom | string|number|array | space |
background | background | string|array | none |
backgroundImage | background-image | string|array | none |
backgroundSize | background-size | string|array | none |
backgroundPosition | background-position | string|array | none |
backgroundRepeat | background-repeat | string|array | none |
border | border | string|array | borders |
borderWidth | border-width | string|array | borderWidths |
borderStyle | border-style | string|array | borderStyles |
borderColor | border-color | string|array | colors |
borderRadius | border-radius | string|number|array | radii |
borderTop | border-top | string|array | borders |
borderRight | border-right | string|array | borders |
borderBottom | border-bottom | string|array | borders |
borderLeft | border-left | string|array | borders |
textShadow | text-shadow | string|array | shadows |
boxShadow | box-shadow | string|array | shadows |
color | color | string|array | colors |
bg|backgroundColor | background-color | string|array | colors |
opacity | opacity | string|array | none |
flex | flex | string|array | none |
flex-grow | flex-grow | string|array | none |
flex-shrink | flex-shrink | string|array | none |
flex-basis | flex-basis | string|array | none |
justifySelf | justify-self | string|array | none |
alignSelf | align-self | string|array | none |
order | order | string|array | none |
Primitive flexbox component. Extends Box.
import { Flex } from 'flokit'
<Flex alignItems='center'>
I'm a flexbox
</Flex>
| Prop | CSS Property | Type | Theme |
|---|---|---|---|
alignItems | align-items | string|array | none |
alignContent | align-content | string|array | none |
justifyItems | justify-items | string|array | none |
justifyContent | justify-content | string|array | none |
flexWrap | flex-wrap | string|array | none |
flexDirection | flex-direction | string|array | none |
Primitive text component. Extends Box.
import { Text } from 'flokit'
<Text alignItems='center'>
I'm a text
</Text>
| Prop | CSS Property | Type | Theme |
|---|---|---|---|
fontFamily | font-family | string|number|array | fonts |
fontSize | font-size | string|number|array | fontSizes |
fontWeight | font-weight | string|number|array | fontWeights |
lineHeight | line-height | string|number|array | lineHeights |
letterSpacing | letter-spacing | string|number|array | letterSpacings |
fontStyle | font-style | string|number|array | none |
textAlign | text-align | string|number|array | none |
textTransform | text-transform | string|number|array | none |
Primitive text component for headings. Extends Text.
import { Heading } from 'flokit'
<Heading alignItems='center'>
I'm a heading
</Heading>
git checkout -b my-new-featuregit commit -m 'Add some feature'git push origin my-new-featureMIT License © Iago Dahlem
FAQs
Toolkit for easily and smoothly building UIs with React.
We found that flokit demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.