Utility First CSS-in-JS
36
stars
51
commits
JavaScript
primary language
Aug 29, 2024
updated

Inspired by Rebass, TailwindCSS, Smooth UI, and Material UI.
Implemented in Emotion.
# using npm
npm install monad-ui
# using yarn
yarn add monad-ui
import * 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's background to red. When the screen size is above 576px, it will be green. When the screen size is above 768px, it will be blue. 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 md is not specified. When it's not specified, it will take the previous value, which is red in 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 div when the screen size is above 576px.
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's background into blue when the screen size is above 576px.
S.bg('blue')).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>
);
}
JavaScript
100.0%
Utility First CSS-in-JS
36
stars
51
commits
JavaScript
primary language
Aug 29, 2024
updated

Inspired by Rebass, TailwindCSS, Smooth UI, and Material UI.
Implemented in Emotion.
# using npm
npm install monad-ui
# using yarn
yarn add monad-ui
import * 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's background to red. When the screen size is above 576px, it will be green. When the screen size is above 768px, it will be blue. 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 md is not specified. When it's not specified, it will take the previous value, which is red in 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 div when the screen size is above 576px.
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's background into blue when the screen size is above 576px.
S.bg('blue')).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>
);
}
JavaScript
100.0%