evokit v3.2.5
EvoKit
Allows you to divide the user interface into independent blocks and think about them separately. EvoKit blocks can be declared with createBlock.
Usage
Peer dependencies react, prop-types
npm install evokit --saveCreate block
?> createBlock(tagName, blockName, blockMods, preset)
See example create block
tagName- string, html tagblockName- string, block nameblockMods- array of string, block modifier key listpreset- object, default value:{ b: 'ek-', m: '_', v: '_', css: null }
More about preset:
| Key | Type | Default value | Description |
|---|---|---|---|
b | string | ek- | block class name prefix: {b}blockName => ek-blockName |
m | string | _ | block modifier name separator: blockName{m}modName => blockName_modName |
v | string | _ | block modifier value separator: modName{v}modVal => modName_modVal |
css | object | null | object CSS Modules classes |
import { createBlock } from 'evokit';
const Footer = createBlock('div', 'footer', ['padding']);
<Footer /> // <div class="ek-footer"></div>
<Footer footer-padding='xxl' /> // <div class="ek-footer ek-footer_padding_xxl"></div>
// ADDITIONAL PROPS:
<Footer footer-as='span' /> // <span class="ek-footer ek-footer_padding_xxl"></span>
<Footer footer-preset={{ css: cssModules }} /> // CSS ModulesCSS Modules with custom class prefix mp-:
/* css-modules.css */
.mp-footer {}
.mp-footer_padding_xs {}import { createBlock } from 'evokit';
import styles from 'css-modules.css';
const Footer = createBlock('div', 'footer', ['padding'], {
b: 'mp-',
css: styles,
});
<Footer /> // <div class="mp-footer"></div>
<Footer footer-padding='xs' /> // <div class="mp-footer mp-footer_padding_xs"></div>With props
?> withProps(Block, props)
Return block with default props
See example with props
import { createBlock, withProps } from 'evokit';
// import styles from 'css-modules.css';
const Footer = createBlock('div', 'footer', ['padding']);
const FooterXXL = withProps(Footer, {
'footer-as': 'table',
'footer-padding': 'xxl',
});
// const FooterCssModules = withProps(Footer, {
// 'footer-preset': {
// css: styles,
// },
// });
<Footer /> // <div class="ek-footer"></div>
<FooterXXL /> // <table class="ek-footer ek-footer_padding_xxl"></table>
<FooterXXL footer-as='span' footer-padding='m' /> // <span class="ek-footer ek-footer_padding_m"></span>2 years ago
2 years ago
4 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago