🧚♀️Turn your React function components into responsive components with style props using Style Hooks and Emotion
npm install @style-hooks/core



---

Use @style-hooks to seamlessly add themes, CSS-in-JS styles,
variants, breakpoint props, a css prop, and an as prop
to any React function component.
For a styled-components-like interface, check out @style-hooks/styled.
``jsx harmony
/* @jsx jsx /
import React from 'react'
import {css, jsx} from '@emotion/core'
import {createStyleHook, createElement, ThemeProvider} from '@style-hooks/core'
// Your very own style hook
const useBox = createStyleHook('box', {
w: (value, theme, props) => css
width: ${value + theme.box.sizeUnit};
,
})
// Accompanying component w/ style props using
// your style hook
const Box = props => {
props = useBox(props)
// createElement here provides this component
// an 'as' prop, you could also use emotion's
// jsx()
return createElement('div', props)
}
// The theme for your app
const theme = {box: {sizeUnit: 'px'}}
// Usage w/ theme
const App = () => (
{/*
Shows off the 'as' prop,
followed by 'breakpoint props',
followed by the 'css' prop
*/}
w="200:phone 300:tablet"
css={theme => css
@media ${theme.breakpoints.phone} {
height: 200px;
background-color: hotpink;
}
@media ${theme.breakpoints.tablet} {
height: 300px;
background-color: skyblue;
}
}`
>
Hello world from this {'
)
#### npm i @style-hooks/core @emotion/core
#### yarn add @style-hooks/core @emotion/core
Check out
@style-hooks on CodeSandbox
Complete documentation can be found
here
- Introduction Learn more
about the basics of style-hooksuseStyles()
- createElement()
A hook for creating responsive CSS styles with responsive breakpoints
from input props
- React.createElement
A wrapper around for adding an as prop and css prop to your
component
-
The theme context provider
- useTheme()
The theme context consumer
- A hook
for consuming the theme
- useStylesContext()`
A context consumer for reading, replacing, and merging themes
-
A hook for reading, replacing, and merging themes