@restnfeel/agentc-starter-kit
Version:
한국어 기업용 CMS 모듈 - Task Master AI와 함께 빠르게 웹사이트를 구현할 수 있는 재사용 가능한 컴포넌트 시스템
59 lines (49 loc) • 1.34 kB
text/typescript
/**
* @fileoverview Theme management hook
* @module hooks/useTheme
*/
import { useCallback, useState } from "react";
export interface Theme {
mode: "light" | "dark";
primaryColor: string;
backgroundColor: string;
textColor: string;
borderColor: string;
}
export interface UseThemeReturn {
theme: Theme;
setTheme: (theme: Partial<Theme>) => void;
toggleMode: () => void;
resetTheme: () => void;
}
const defaultTheme: Theme = {
mode: "light",
primaryColor: "#007bff",
backgroundColor: "#ffffff",
textColor: "#333333",
borderColor: "#e0e0e0",
};
export function useTheme(): UseThemeReturn {
const [theme, setThemeState] = useState<Theme>(defaultTheme);
const setTheme = useCallback((updates: Partial<Theme>) => {
setThemeState((prev) => ({ ...prev, ...updates }));
}, []);
const toggleMode = useCallback(() => {
setThemeState((prev) => ({
...prev,
mode: prev.mode === "light" ? "dark" : "light",
backgroundColor: prev.mode === "light" ? "#1a1a1a" : "#ffffff",
textColor: prev.mode === "light" ? "#ffffff" : "#333333",
borderColor: prev.mode === "light" ? "#333333" : "#e0e0e0",
}));
}, []);
const resetTheme = useCallback(() => {
setThemeState(defaultTheme);
}, []);
return {
theme,
setTheme,
toggleMode,
resetTheme,
};
}