You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							123 lines
						
					
					
						
							2.5 KiB
						
					
					
				
			
		
		
	
	
							123 lines
						
					
					
						
							2.5 KiB
						
					
					
				| 
 | |
| # @styled-system/css
 | |
| 
 | |
| Styled System for the `css` prop
 | |
| 
 | |
| ```sh
 | |
| npm i @styled-system/css
 | |
| ```
 | |
| 
 | |
| Styled System CSS lets you write style objects with responsive, theme-aware Styled System shortcuts.
 | |
| 
 | |
| ```jsx
 | |
| // 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',
 | |
|     })}
 | |
|   />
 | |
| ```
 | |
| 
 | |
| ```js
 | |
| // 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.
 | |
| 
 | |
| ## Theme Keys
 | |
| 
 | |
| 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`
 | |
| 
 | |
| ## Responsive Arrays
 | |
| 
 | |
| All CSS properties accept arrays as values for responsive styles.
 | |
| 
 | |
| ```jsx
 | |
| <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.
 | |
| 
 | |
| ```jsx
 | |
| <div
 | |
|   css={css({
 | |
|     // Styled System key
 | |
|     fontSize: [ 3, 4, 5 ],
 | |
|     // CSS property
 | |
|     borderBottom: '2px solid tomato',
 | |
|   })}
 | |
| />
 | |
| ```
 | |
| 
 | |
| MIT License
 |