Stylus lib to create modular CSS components
npm install advanced-css-component-stylusnpm i advanced-css-component-stylus --save-dev
``css
.buttonLogin {
display: block;
width: 100%;
padding: 10px;
color: #000;
background: yellow;
border-color: #000;
}
.buttonReset {
display: block;
width: 100%;
padding: 10px;
color: #000;
background: green;
border-color: #000;
}
`
You can see a simple improvement
`css
.buttonLogin,
.buttonReset {
display: block;
width: 100%;
padding: 10px;
color: #000;
border-color: #000;
}
.buttonLogin {
background: yellow;
}
.buttonReset {
background: green;
}
`
Now imagine this in stylus
`stylus
$button {
display: block;
width: 100%;
padding: 10px;
color: #000;
border-color: #000;
}
.buttonLogin {
@extend $button;
background: yellow;
}
.buttonReset {
@extend $button;
background: green;
}
`
That's great but not really modular. Imagine to write it like this:
`stylus
$button {
display: block;
width: 100%;
padding: 10px;
color: #000;
border-color: #000;
}
$button-skin-default {
background: yellow;
}
button($selector: '.button', $skin: 'default') {
{$selector} {
@extend $button;
@extend $button-skin-{$skin} !optional;
}
}
button('.buttonLogin');
$button-skin-green {
background: green;
}
button('.buttonReset', 'green');
`
This is totaly modular and your component is totaly skin friendly
Instead of this:
`stylus`
@extend $button;
@extend $button-skin-{$skin} !optional;
You only write this:
`stylus`
ACCExtend('$button', $skin);
This mixin add a map to $ACComponents global variable.
It take 3 parameters
* componentName: ex. 'button'
* variationName: ex. '.buttonLogin' (it become the selector if selector is undefined in the next parameter)
* optionMap: _default: ()_ the configuration of the componentVariation (don't forget to escape the dollar in key for example: $selector will be selector)
`stylus`
ACCRegister('button', '.buttonLogin');
ACCRegister('button', '.buttonReset', ($skin: 'green'));
become like the default button, you will write this:`stylus
ACCConfig('button', '.buttonReset', ($skin: 'default'));
``