Home

Awesome

Tailwindcss DarkMode

Tailwind CSS plugin that adds variants for DarkMode.

Downloads License Travis Build

Installation

# npm
npm install @danestves/tailwindcss-darkmode --save-dev

# yarn
yarn add --dev @danestves/tailwindcss-darkmode

Add the plugin to the plugins array in your tailwind.config.js file.

module.exports = {
  // ...

  plugins: [
    // ...
    require('@danestves/tailwindcss-darkmode')()
  ]
};

Actually the function receive two parameters:

So if you want to rename the activatorClass you can make it as simple as:

module.exports = {
  // ...

  plugins: [
    // ...
    require('@danestves/tailwindcss-darkmode')('dark', 'my-custom-activator-class')
  ]
};

Variants generated

Note: These variants are activated when either the html or body tag has the class dark-mode. But you can change it.

<div class="bg-gray-100 dark:bg-gray-800 border-t-4 border-green-500">
  <nav class="flex flex-wrap justify-end items-center p-4">
    <a class="text-gray-700 hover:bg-gray-300 dark:hover:bg-transparent dark:focus:text-green-500" href="#">Text</a>
  </nav>
</div>

🚨 Dark variants must be enabled on each utility in your tailwind.config.js file. 🚨

variants: {
    backgroundColor: [
      "responsive",
      "hover",
      "focus",
      "dark",
      "dark:hover",
      "dark:focus"
    ],
    borderColor: [
      "responsive",
      "hover",
      "focus",
      "dark",
      "dark:hover",
      "dark:focus"
    ],
    textColor: [
      "responsive",
      "hover",
      "focus",
      "group-hover",
      "dark",
      "dark:hover",
      "dark:focus",
      "dark:group-hover",
      "focus-within",
      "dark:focus-within",
      "dark:odd",
      "dark:even",
      "dark:active",
      "dark:disabled"
    ],
    borderStyle: ["responsive", "dark"]
  }

You can check the full list of default variants in the Tailwind default config file.

Customize class name prefix for variants

dark is used as default prefix for the variants that are generated. It´s possible to change dark for whatever you want, just pass any string as a param. For example, with prefers-dark:

module.exports = {
  // ...

  plugins: [
    // ...
    require('tailwindcss-prefers-dark-mode')('prefers-dark')
  ]
};

And variants must be named with the new prefix:

variants: {
  textColor: [
    'responsive',
    'hover',
    'focus',
    'group-hover',
    'prefers-dark',
    'prefers-dark:hover',
    'prefers-dark:focus',
    'prefers-dark:group-hover',
    'focus-within',
    'prefers-dark:focus-within'
  ];
}