mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-09-14 21:46:35 +00:00
28 lines
900 B
JavaScript
28 lines
900 B
JavaScript
// Theme parity: every color token in `:root` must also exist in
|
|
// `[data-theme="dark"]` and vice versa. A color defined in only one theme
|
|
// silently breaks dark mode. Derived tokens (values containing var()) adapt
|
|
// to the theme automatically and are exempt.
|
|
|
|
import { isColorValue, isDerived } from "./helpers.mjs";
|
|
|
|
export function checkParity({ light, dark }) {
|
|
const errors = [];
|
|
|
|
// Every colorful light token must have a dark-mate (derived excluded).
|
|
for (const [token, value] of light) {
|
|
if (!isColorValue(value) || isDerived(value)) continue;
|
|
if (!dark.has(token)) {
|
|
errors.push(` ${token} in :root has no [data-theme="dark"] override`);
|
|
}
|
|
}
|
|
|
|
// Every dark token must exist in :root (a dark-only token is orphaned).
|
|
for (const [token] of dark) {
|
|
if (!light.has(token)) {
|
|
errors.push(` ${token} in [data-theme="dark"] is missing in :root`);
|
|
}
|
|
}
|
|
|
|
return errors;
|
|
}
|