aboutsummaryrefslogtreecommitdiff
path: root/src/components/button.style.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/button.style.js')
-rw-r--r--src/components/button.style.js27
1 files changed, 16 insertions, 11 deletions
diff --git a/src/components/button.style.js b/src/components/button.style.js
index c86fee64..84db88fb 100644
--- a/src/components/button.style.js
+++ b/src/components/button.style.js
@@ -23,28 +23,37 @@ const hoverGlow = {
export default {
name: 'Button', // Name of the component
selector: '.button', // CSS selector/prefix
- // States, system witll calculate ALL possible combinations of those and append a "normal" to them + standalone "normal" state
+ // outOfTreeSelector: '' // out-of-tree selector is used when other components are laid over it but it's not part of the tree, see Underlay component
+ // States, system witll calculate ALL possible combinations of those and prepend "normal" to them + standalone "normal" state
states: {
- // normal: state is implicitly added
+ // States are a bit expensive - the amount of combinations generated is about (1/6)n^3+n, so adding more state increased number of combination by an order of magnitude!
+ // All states inherit from "normal" state, there is no other inheirtance, i.e. hover+disabled only inherits from "normal", not from hover nor disabled.
+ // However, cascading still works, so resulting state will be result of merging of all relevant states/variants
+ // normal: '' // normal state is implicitly added, it is always included
disabled: ':disabled',
toggled: '.toggled',
pressed: ':active',
hover: ':hover',
focused: ':focus-within'
},
- // Variants are mutually exclusive, which saves on computation time
+ // Variants are mutually exclusive, each component implicitly has "normal" variant, and all other variants inherit from it.
variants: {
- normal: '-default', // you can override normal variant
- danger: '.danger',
- unstyled: '-unstyled'
+ // Variants save on computation time since adding new variant just adds one more "set".
+ normal: '-default', // you can override normal variant, it will be appenended to the main class
+ danger: '-default.danger'
+ // Overall the compuation difficulty is N*((1/6)M^3+M) where M is number of distinct states and N is number of variants.
+ // This (currently) is further multipled by number of places where component can exist.
},
+ // This lists all other components that can possibly exist within one. Recursion is currently not supported (and probably won't be supported ever).
validInnerComponents: [
'Text',
'Icon'
],
+ // Default rules, used as "default theme", essentially.
defaultRules: [
{
- component: 'Button',
+ // component: 'Button', // no need to specify components every time unless you're specifying how other component should look
+ // like within it
directives: {
background: '--fg',
shadow: [{
@@ -58,7 +67,6 @@ export default {
}
},
{
- component: 'Button',
variant: 'unstyled',
directives: {
background: '--fg',
@@ -66,14 +74,12 @@ export default {
}
},
{
- component: 'Button',
state: ['hover'],
directives: {
shadow: [hoverGlow, ...buttonInsetFakeBorders]
}
},
{
- component: 'Button',
state: ['hover', 'pressed'],
directives: {
background: '--accent,-24.2',
@@ -81,7 +87,6 @@ export default {
}
},
{
- component: 'Button',
state: ['disabled'],
directives: {
background: '$blend(--background, 0.25, --parent)',