feat: 기능 추가 과정중

This commit is contained in:
donghyeon-ka
2026-07-30 15:58:20 +09:00
parent d3ef801fe6
commit 6c52cdb916
648 changed files with 126325 additions and 6680 deletions
+36
View File
@@ -0,0 +1,36 @@
import {
normalizeColorSchemePreference,
resolveColorScheme,
} from "../application/policies/color-scheme.ts";
import type { ApplicationApi } from "../application/ports/in/application-api.ts";
type ColorSchemeBrowser = Readonly<{
documentElement?: HTMLElement;
matchMedia?: (query: string) => Pick<MediaQueryList, "matches">;
}>;
/** Applies the persisted public preference before React paints. */
export function initializeColorScheme(
preferences: Pick<ApplicationApi["preferences"], "getColorScheme">,
browser: ColorSchemeBrowser = {},
) {
const documentElement = browser.documentElement ?? document.documentElement;
const matchMedia =
browser.matchMedia ??
(typeof window.matchMedia === "function"
? window.matchMedia.bind(window)
: () => ({ matches: false }));
const preference = normalizeColorSchemePreference(
preferences.getColorScheme(),
);
const resolved = resolveColorScheme(
preference,
matchMedia("(prefers-color-scheme: dark)").matches,
);
documentElement.dataset.theme = resolved;
documentElement.dataset.themePreference = preference;
documentElement.style.colorScheme = resolved;
return Object.freeze({ preference, resolved });
}