This plugin implements a custom property extend
which allows you to mix in styles in various ways.
Style object own properties always take precedence over extended objects, so you can always override the extended definition. Exception is function values.
const buttonColor = {
color: 'green'
}
const buttonTheme = {
extend: buttonColor
background: 'red'
}
const styles = {
button: {
extend: buttonTheme,
fontSize: '20px'
}
}
const styles = {
buttonColor: {
background: 'red'
},
button: {
extend: 'buttonColor',
fontSize: '20px'
}
}
const styles = {
button: {
extend: [{background: 'red'}, {color: 'green'}],
fontSize: '20px'
}
}
const background = {background: 'red'}
const color = {color: 'green'}
const styles = {
button: {
extend: [background, color],
fontSize: '20px'
}
}
Nested extend
inside of the function is not supported. Will override other properties defined in the same rule.
const styles = {
button: {
extend: (data) => ({
color: data.theme.color
}),
fontSize: '20px'
}
}
File a bug against cssinjs/jss prefixed with [jss-extend].
npm i
npm run test
MIT