$ npm install @styled-system/css
Styled System for the css
prop
npm i @styled-system/css
Styled System CSS lets you write style objects with responsive, theme-aware Styled System shortcuts.
// usage with the css prop
import React from 'react'
import css from '@styled-system/css'
const Beep = props =>
<div
{...props}
css={css({
fontSize: [4, 5, 6],
color: 'primary',
})}
/>
// usage with a styled HOC
import styled from '@emotion/styled'
import css from '@styled-system/css'
const Boop = styled('div')(
css({
fontSize: [ 4, 5, 6 ],
color: 'primary',
bg: 'gray',
'&:hover': {
color: 'secondary',
},
})
)
To make the css prop work with styled-components
, babel-plugin-styled-components
must be enabled.
The following keys in your style object will work the same as Styled System props, pulling values from your theme
object.
Property | Theme Key |
---|---|
fontFamily |
fonts |
fontSize |
fontSizes |
fontWeight |
fontWeights |
lineHeight |
lineHeights |
letterSpacing |
letterSpacings |
color |
colors |
backgroundColor , bg |
colors |
margin , m |
space |
marginTop , mt |
space |
marginRight , mr |
space |
marginBottom , mb |
space |
marginLeft , ml |
space |
marginX , mx |
space |
marginY , my |
space |
padding , p |
space |
paddingTop , pt |
space |
paddingRight , pr |
space |
paddingBottom , pb |
space |
paddingLeft , pl |
space |
paddingX , px |
space |
paddingY , py |
space |
top |
space |
bottom |
space |
left |
space |
right |
space |
border |
borders |
borderTop |
borders |
borderRight |
borders |
borderBottom |
borders |
borderLeft |
borders |
borderColor |
colors |
borderWidth |
borderWidths |
borderStyle |
borderStyles |
borderRadius |
radii |
boxShadow |
shadows |
textShadow |
shadows |
zIndex |
zIndices |
width |
sizes |
minWidth |
sizes |
maxWidth |
sizes |
height |
sizes |
minHeight |
sizes |
maxHeight |
sizes |
size |
sizes |
All CSS properties accept arrays as values for responsive styles.
<div
css={css({
fontSize: [ 4, 5, 6 ],
})}
/>
In this example, fontSize
accepts an array, picking up values from the theme.fontSizes
scale, and borderBottom
is passed through as plain CSS.
<div
css={css({
// Styled System key
fontSize: [ 3, 4, 5 ],
// CSS property
borderBottom: '2px solid tomato',
})}
/>
MIT License
© 2010 - cnpmjs.org x YWFE | Home | YWFE