44// Convenient hook for theme management with multi-color scheme support
55
66import { useCallback } from 'react' ;
7- import { useAppStore , selectTheme , selectResolvedTheme , selectCustomHue , selectIsCustomTheme } from '../stores/appStore' ;
8- import type { Theme , ColorScheme } from '../types/store' ;
7+ import {
8+ useAppStore ,
9+ selectTheme ,
10+ selectResolvedTheme ,
11+ selectCustomHue ,
12+ selectIsCustomTheme ,
13+ selectGradientLevel ,
14+ selectEnableHoverGlow ,
15+ selectEnableBackgroundAnimation ,
16+ } from '../stores/appStore' ;
17+ import type { Theme , ColorScheme , GradientLevel } from '../types/store' ;
918
1019export interface UseThemeReturn {
1120 /** Current theme preference ('light', 'dark', 'system') */
@@ -20,6 +29,12 @@ export interface UseThemeReturn {
2029 customHue : number | null ;
2130 /** Whether the current theme is a custom theme */
2231 isCustomTheme : boolean ;
32+ /** Gradient level: 'off', 'standard', or 'enhanced' */
33+ gradientLevel : GradientLevel ;
34+ /** Whether hover glow effects are enabled */
35+ enableHoverGlow : boolean ;
36+ /** Whether background gradient animation is enabled */
37+ enableBackgroundAnimation : boolean ;
2338 /** Set theme preference */
2439 setTheme : ( theme : Theme ) => void ;
2540 /** Set color scheme */
@@ -28,6 +43,12 @@ export interface UseThemeReturn {
2843 setCustomHue : ( hue : number | null ) => void ;
2944 /** Toggle between light and dark (ignores system) */
3045 toggleTheme : ( ) => void ;
46+ /** Set gradient level */
47+ setGradientLevel : ( level : GradientLevel ) => void ;
48+ /** Set hover glow enabled */
49+ setEnableHoverGlow : ( enabled : boolean ) => void ;
50+ /** Set background animation enabled */
51+ setEnableBackgroundAnimation : ( enabled : boolean ) => void ;
3152}
3253
3354/**
@@ -54,10 +75,16 @@ export function useTheme(): UseThemeReturn {
5475 const colorScheme = useAppStore ( ( state ) => state . colorScheme ) ;
5576 const customHue = useAppStore ( selectCustomHue ) ;
5677 const isCustomTheme = useAppStore ( selectIsCustomTheme ) ;
78+ const gradientLevel = useAppStore ( selectGradientLevel ) ;
79+ const enableHoverGlow = useAppStore ( selectEnableHoverGlow ) ;
80+ const enableBackgroundAnimation = useAppStore ( selectEnableBackgroundAnimation ) ;
5781 const setThemeAction = useAppStore ( ( state ) => state . setTheme ) ;
5882 const setColorSchemeAction = useAppStore ( ( state ) => state . setColorScheme ) ;
5983 const setCustomHueAction = useAppStore ( ( state ) => state . setCustomHue ) ;
6084 const toggleThemeAction = useAppStore ( ( state ) => state . toggleTheme ) ;
85+ const setGradientLevelAction = useAppStore ( ( state ) => state . setGradientLevel ) ;
86+ const setEnableHoverGlowAction = useAppStore ( ( state ) => state . setEnableHoverGlow ) ;
87+ const setEnableBackgroundAnimationAction = useAppStore ( ( state ) => state . setEnableBackgroundAnimation ) ;
6188
6289 const setTheme = useCallback (
6390 ( newTheme : Theme ) => {
@@ -84,16 +111,43 @@ export function useTheme(): UseThemeReturn {
84111 toggleThemeAction ( ) ;
85112 } , [ toggleThemeAction ] ) ;
86113
114+ const setGradientLevel = useCallback (
115+ ( level : GradientLevel ) => {
116+ setGradientLevelAction ( level ) ;
117+ } ,
118+ [ setGradientLevelAction ]
119+ ) ;
120+
121+ const setEnableHoverGlow = useCallback (
122+ ( enabled : boolean ) => {
123+ setEnableHoverGlowAction ( enabled ) ;
124+ } ,
125+ [ setEnableHoverGlowAction ]
126+ ) ;
127+
128+ const setEnableBackgroundAnimation = useCallback (
129+ ( enabled : boolean ) => {
130+ setEnableBackgroundAnimationAction ( enabled ) ;
131+ } ,
132+ [ setEnableBackgroundAnimationAction ]
133+ ) ;
134+
87135 return {
88136 theme,
89137 resolvedTheme,
90138 isDark : resolvedTheme === 'dark' ,
91139 colorScheme,
92140 customHue,
93141 isCustomTheme,
142+ gradientLevel,
143+ enableHoverGlow,
144+ enableBackgroundAnimation,
94145 setTheme,
95146 setColorScheme,
96147 setCustomHue,
97148 toggleTheme,
149+ setGradientLevel,
150+ setEnableHoverGlow,
151+ setEnableBackgroundAnimation,
98152 } ;
99153}
0 commit comments