Inspired by Rebass, TailwindCSS, Smooth UI, and Material UI.
Implemented in Emotion.
# using npm
npm install monad-ui
# using yarn
yarn add monad-uiimport * as S from 'monad-ui';
// blue background
function Example() {
return (
<div css={S.bg('blue')}>
Lorem ipsum dolor sit, amet consectetur adipisicing elit.
</div>
);
}
// blue background and red text color
function Example() {
return (
<div css={[S.bg('blue'), S.color('red')]}>
Lorem ipsum dolor sit, amet consectetur adipisicing elit.
</div>
);
}Monad UI has four breakpoints (view source):
const breakpoints = {
sm: '576px',
md: '768px',
lg: '992px',
xl: '1200px'
};There are many ways to implement responsive styles:
-
Array Responsive API
import * as S from 'monad-ui'; function Example() { return ( <div css={S.bg(['red', 'green', 'blue'])}> Lorem ipsum dolor sit, amet consectetur adipisicing elit. </div> ); }
Example above will change the
div'sbackgroundtored. When the screen size is above576px, it will begreen. When the screen size is above768px, it will beblue. And so on. -
Object Responsive API
import * as S from 'monad-ui'; function Example() { return ( <div css={S.bg({ sm: 'red', lg: 'blue' })}> Lorem ipsum dolor sit, amet consectetur adipisicing elit. </div> ); }
Note that
mdis not specified. When it's not specified, it will take the previous value, which isredin this case. -
Higher-order Function Responsive API
import * as S from 'monad-ui'; function Example() { return ( <div css={S.up('sm')(S.hidden)}> Lorem ipsum dolor sit, amet consectetur adipisicing elit. </div> ); }
Example above will hide the
divwhen the screen size is above576px.import * as S from 'monad-ui'; function Example() { return ( <div css={S.up('sm')(S.bg('blue'))}> Lorem ipsum dolor sit, amet consectetur adipisicing elit. </div> ); }
Example above will change the
div'sbackgroundintobluewhen the screen size is above576px.
- Dynamic type accept arguments (e.g.
S.bg('blue')). - Static type does not accept arguments. (e.g.
S.down('md')(S.hidden)).
| Type | Array Responsive API | Object Responsive API | High Order Responsive API |
|---|---|---|---|
| Dynamic | ✅ | ✅ | ✅ |
| Static | ❌ | ❌ | ✅ |
View all available APIs at ./docs/available-apis.md.
-
Do I always have to
import * as S from 'monad-ui'?If you only use a few styles, you can also import and use like this:
import { bg, hidden } from 'monad-ui'; function Example() { return ( <div css={bg('blue')}> Lorem ipsum dolor sit, amet consectetur adipisicing elit. </div> ); }
-
Too many styles?
Consider extracting your style outside like this:
import { css } from '@emotion/core'; import { bg, color } from 'monad-ui'; const style = css([bg('blue'), color('red')]); function Example() { return ( <div class={style}> Lorem ipsum dolor sit, amet consectetur adipisicing elit. </div> ); }