/** * 테마 설정(3상태: system/light/dark)의 저장 키·DOM 속성명·허용값·기본값 SSOT. * * `app/layout.tsx`(Server Component — `` inline script 문자열 생성)와 * `_hooks/use-theme-preference.ts`('use client') 양쪽이 같은 값을 참조해야 한다. 'use client' * 모듈의 export는 컴포넌트가 아닌 일반 값(문자열 등)일 경우 Server Component에서 import 시 * `undefined`로 평가된다 — 그래서 이 상수는 'use client'가 없는 순수 모듈로 분리한다. */ /** 테마 선택값. "system"은 OS 설정을 따르며 ``에 속성을 부여하지 않는 것으로 표현한다. */ export type ThemePreference = "system" | "light" | "dark"; /** 선택된 테마를 기기에 영속화하는 localStorage 키. */ export const THEME_STORAGE_KEY = "edupay-admin-theme"; /** 선택된 테마를 ``에 표시하는 속성명. "system"일 때는 속성 자체가 없다(fail-safe). */ export const THEME_ATTRIBUTE_NAME = "data-theme"; /** 토글 버튼이 순환하는 순서. */ export const THEME_PREFERENCE_CYCLE: readonly ThemePreference[] = [ "system", "light", "dark", ]; /** 저장값이 없거나 손상됐을 때의 기본 테마 — 속성 부재 상태와 대응한다. */ export const DEFAULT_THEME_PREFERENCE: ThemePreference = "system";