@csstools/postcss-light-dark-function
Use the light-dark() color function in CSS
Last updated 13 days ago by romainmenke .
MIT-0 · Repository · Bugs · Original npm · Tarball · package.json
$ npm install @csstools/postcss-light-dark-function 
SYNC missed versions from official npm registry.

PostCSS Light Dark Function PostCSS Logo

npm install @csstools/postcss-light-dark-function --save-dev

PostCSS Light Dark Function lets you use the light-dark color function in CSS, following the CSS Color 5 Specification.

Read more about this feature on mdn:

  • define the colors for light and dark with light-dark()
  • define which elements support light and/or dark with color-scheme

With both features combined you can mix and match color schemes in a single document, while also respecting the user's preferences.

.foo {
	color: light-dark(pink, magenta);
}

.bar {
	--bar: light-dark(cyan, deepskyblue);
}

/* becomes */

.foo {
	--csstools-light-dark-toggle--0: var(--csstools-color-scheme--light) magenta;
	color: var(--csstools-light-dark-toggle--0, pink);
	color: light-dark(pink, magenta);
}

.bar {
	--csstools-light-dark-toggle--1: var(--csstools-color-scheme--light) deepskyblue;
	--bar: var(--csstools-light-dark-toggle--1, cyan);
	@supports not (color: light-dark(tan, tan)) {

		& * {
	--csstools-light-dark-toggle--1: var(--csstools-color-scheme--light) deepskyblue;
	--bar: var(--csstools-light-dark-toggle--1, cyan);
		}
	}
}

@supports (color: light-dark(red, red)) {
.bar {
	--bar: light-dark(cyan, deepskyblue);
}
}

Declare that your document supports both light and dark mode:

:root {
	color-scheme: light dark;
}

/* becomes */

:root {
	--csstools-color-scheme--light: initial;
	color-scheme: light dark;
}@media (prefers-color-scheme: dark) {:root {
	--csstools-color-scheme--light:  ;
}
}

Dynamically alter the supported color scheme for some elements:

:root {
	/* Root only supports light mode */
	color-scheme: light;
}

.foo {
	/* This element and its children only support dark mode */
	color-scheme: dark;
}

/* becomes */

:root {
	/* Root only supports light mode */
	--csstools-color-scheme--light: initial;
	color-scheme: light;
}

.foo {
	/* This element and its children only support dark mode */
	--csstools-color-scheme--light:  ;
	color-scheme: dark;
}

Usage

Add PostCSS Light Dark Function to your project:

npm install postcss @csstools/postcss-light-dark-function --save-dev

Use it as a PostCSS plugin:

const postcss = require('postcss');
const postcssLightDarkFunction = require('@csstools/postcss-light-dark-function');

postcss([
	postcssLightDarkFunction(/* pluginOptions */)
]).process(YOUR_CSS /*, processOptions */);

Options

preserve

The preserve option determines whether the original notation is preserved. By default, it is preserved.

postcssLightDarkFunction({ preserve: false })
.foo {
	color: light-dark(pink, magenta);
}

.bar {
	--bar: light-dark(cyan, deepskyblue);
}

/* becomes */

.foo {
	--csstools-light-dark-toggle--0: var(--csstools-color-scheme--light) magenta;
	color: var(--csstools-light-dark-toggle--0, pink);
}

.bar {
	--csstools-light-dark-toggle--1: var(--csstools-color-scheme--light) deepskyblue;
	--bar: var(--csstools-light-dark-toggle--1, cyan);
	& * {
	--csstools-light-dark-toggle--1: var(--csstools-color-scheme--light) deepskyblue;
	--bar: var(--csstools-light-dark-toggle--1, cyan);
	}
}

enableProgressiveCustomProperties

The enableProgressiveCustomProperties option determines whether the original notation is wrapped with @supports when used in Custom Properties. By default, it is enabled.

[!NOTE] We only recommend disabling this when you set preserve to false or if you bring your own fix for Custom Properties.
See what the plugin does in its README.

postcssLightDarkFunction({ enableProgressiveCustomProperties: false })

Current Tags

  • 2.0.7                                ...           latest (13 days ago)

17 Versions

  • 2.0.7                                ...           13 days ago
  • 2.0.6                                ...           22 days ago
  • 2.0.5                                ...           a month ago
  • 2.0.4                                ...           2 months ago
  • 2.0.3                                ...           2 months ago
  • 2.0.2                                ...           3 months ago
  • 2.0.1                                ...           3 months ago
  • 2.0.0                                ...           3 months ago
  • 1.0.8                                ...           4 months ago
  • 1.0.7                                ...           4 months ago
  • 1.0.6                                ...           5 months ago
  • 1.0.5                                ...           6 months ago
  • 1.0.4                                ...           6 months ago
  • 1.0.3                                ...           7 months ago
  • 1.0.2                                ...           7 months ago
  • 1.0.1                                ...           8 months ago
  • 1.0.0                                ...           9 months ago
Downloads
Total 0
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dev Dependencies (0)
None
Dependents (1)

© 2010 - cnpmjs.org x YWFE | Home | YWFE