This plugin generates a set of css vars from tailwinds colors list and puts then into the :root
selector.
Install
yarn add tailwind-color-vars
# or
npm i tailwind-color-vars
API
colorVars({ colors, strategy = 'override', colorTransform } = {})
Creates tailwind plugin that registers colors from config as css vars.
colors
: [optional] an object with colors to extend, replace or override config colorsstrategy
: [optional] string:
extend
_: will merge config colors with given colors, config ones will take priorityoverride
_: will merge config colors with given colors, given ones will take priorityreplace
_: will discard config colors and only use given ones
colorTransform
: [optional] Function that will be invoked on every color value before injection
Usage
In tailwind config
const colorVars = require('tailwind-color-vars')
module.exports = {
plugins: [
colorVars(),
],
}
This will produce css like:
:root {
--transparent: transparent;
--black: #22292f;
--grey-darkest: #3d4852;
--grey-darker: #606f7b;
--grey-dark: #8795a1;
...
}
To extend, override or replace colors:
const colorVars = require('tailwind-color-vars')
module.exports = {
plugins: [
colorVars({
colors: {
'primary': 'rgba(0, 80, 200, 0.7)',
'black': 'black',
},
// default value, this will give passed values priority
strategy: 'override',
}),
],
}
This will produce:
:root {
--primary: rgba(0, 80, 200, 0.7);
--transparent: transparent;
--black: black;
...
}
To process every color value before injection you can specify colorTransform
. For example you can transform all values to a set value type:
const colorVars = require('tailwind-color-vars')
const tinycolor = require("tinycolor2");
module.exports = {
plugins: [
colorVars({
colors: {
'primary': 'rgba(0, 80, 200, 0.7)',
'black': 'black',
},
// this will give priority to config values
// so black will not be overridden
strategy: 'extend',
// this will parse each color value and return it in `rgb()/rgba()` format
colorTransform: col => tinycolor(col).toRgbString()
}),
],
}
This will produce:
:root {
--primary: rgba(0, 80, 200, 0.7);
--black: rgb(34, 41, 47);
--transparent: rgba(0, 0, 0, 0);
--grey-darkest: rgb(61, 72, 82);
--grey-darker: rgb(96, 111, 123);
...
}
Add support for Tailwind v1.x
This PR changed how the default values are retrieved from the config file to allow using it with Tailwind v1.x.
It also gets rid of some unnecessary variables and adds a default
colorTransform()
that allows us to get rid of the ternary inside the loop.@derevandal was having issues in https://github.com/tailwindcss/tailwindcss/issues/861 and this fixed them for him. Haven't tested much further so please let me know if there something I missed so I can fix it.