22 lines
594 B
JavaScript
22 lines
594 B
JavaScript
export const COLOR_SCHEME_PREFERENCES = Object.freeze([
|
|
"system",
|
|
"light",
|
|
"dark",
|
|
]);
|
|
|
|
/** @param {unknown} value */
|
|
export function normalizeColorSchemePreference(value) {
|
|
return COLOR_SCHEME_PREFERENCES.includes(/** @type {string} */ (value))
|
|
? /** @type {"system" | "light" | "dark"} */ (value)
|
|
: "system";
|
|
}
|
|
|
|
/**
|
|
* @param {"system" | "light" | "dark"} preference
|
|
* @param {boolean} systemPrefersDark
|
|
*/
|
|
export function resolveColorScheme(preference, systemPrefersDark) {
|
|
if (preference === "system") return systemPrefersDark ? "dark" : "light";
|
|
return preference;
|
|
}
|