
Security News
PodRocket Podcast: Inside the Recent npm Supply Chain Attacks
Socket CEO Feross Aboukhadijeh discusses the recent npm supply chain attacks on PodRocket, covering novel attack vectors and how developers can protect themselves.
@dazl/color-scheme
Advanced tools
A simple color scheme management library for web applications with support for light/dark themes and automatic system preference detection.
color-scheme
CSS property on the document root for native browser themingnpm install @dazl/color-scheme
Import the client module to initialize color scheme management:
Note: This import should only be used in client-side code and must run before the
<body>
is rendered. For best results, include it in an inline script.
import '@dazl/color-scheme/client';
// The color scheme API is now available globally
const currentScheme = window.colorSchemeApi.current;
console.log(currentScheme); // { config: 'system', resolved: 'dark' }
// Change the color scheme
window.colorSchemeApi.config = 'light';
// Subscribe to changes
const unsubscribe = window.colorSchemeApi.subscribe(({ config, resolved }) => {
console.log(`Color scheme changed: ${config} (resolved: ${resolved})`);
});
config
(light|dark|system
) - Get or set the current color scheme configurationcurrentState
({ config: light|dark|system, resolved: light|dark }
) - Get the current state including both config and resolved valuesresolvedSystem
(light|dark
) - Get the resolved theme based on system preferencessubscribe
((handler: (currentState) => void) => () => void
) - Subscribe to color scheme changes and return an unsubscribe functiongetRootCssClass
((resolved?: light|dark) => string
) - CSS class applied to the document root based on the resolved theme or passed valueOverride the default CSS classes applied to the document root by specifying data-dark-class
and data-light-class
attributes in the client script tag:
<script src="@dazl/color-scheme/client" data-dark-class="dark-theme" data-light-class="light-theme"></script>
Use the provided React hook for easy integration:
import { useColorScheme } from '@dazl/color-scheme/react';
function ThemeToggle() {
const { configScheme, resolvedScheme, setColorScheme, isLight, isDark } = useColorScheme();
return (
<div>
<p>Current config: {configScheme}</p>
<p>Resolved theme: {resolvedScheme}</p>
<p>Is light theme: {isLight}</p>
<p>Is dark theme: {isDark}</p>
<button onClick={() => setColorScheme('light')}>Light Theme</button>
<button onClick={() => setColorScheme('dark')}>Dark Theme</button>
<button onClick={() => setColorScheme('system')}>System Theme</button>
</div>
);
}
resolvedScheme
(light|dark
) - Resolved theme (light/dark)configScheme
(light|dark|system
) - Current configuration (light/dark/system)setColorScheme
((config: light|dark|system) => void
) - Function to change the color schemeisLight
(boolean
) - Whether the current resolved theme is lightisDark
(boolean
) - Whether the current resolved theme is darkrootCssClass
(string
) - CSS class applied to the document root based on the resolved themeThe library automatically applies CSS classes to the document root. Style your application accordingly:
/* Dark theme styles */
:root.dark-theme {
--bg-color: #000000;
--text-color: #ffffff;
}
/* Light theme styles (explicit) */
:root.light-theme {
--bg-color: #ffffff;
--text-color: #000000;
}
MIT © Dazl
FAQs
Color scheme utilities and tools
We found that @dazl/color-scheme demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Socket CEO Feross Aboukhadijeh discusses the recent npm supply chain attacks on PodRocket, covering novel attack vectors and how developers can protect themselves.
Security News
Maintainers back GitHub’s npm security overhaul but raise concerns about CI/CD workflows, enterprise support, and token management.
Product
Socket Firewall is a free tool that blocks malicious packages at install time, giving developers proactive protection against rising supply chain attacks.