import { useCallback, useSyncExternalStore } from "react"; import { applyTheme, readAppliedTheme, subscribeTheme, type AppTheme, } from "./theme"; /** * 전역 테마 hook. Topbar와 Settings가 같은 external store를 구독한다. * 반환 형태는 기존 Settings 계약([dark, setDark])을 유지한다. */ export function useTheme(): [boolean, (next: boolean) => void] { const theme = useSyncExternalStore(subscribeTheme, readAppliedTheme, (): AppTheme => "dark"); const setDark = useCallback((next: boolean) => applyTheme(next ? "dark" : "light"), []); return [theme === "dark", setDark]; }