File tree Expand file tree Collapse file tree 2 files changed +35
-3
lines changed
Expand file tree Collapse file tree 2 files changed +35
-3
lines changed Original file line number Diff line number Diff line change @@ -52,7 +52,7 @@ import {
5252import { database } from "../../wailsjs/go/models" ;
5353import { useSystemInfo } from "@/hooks/use-system-info" ;
5454import { cn } from "@/lib/utils" ;
55- import { useTheme } from "./theme-provider " ;
55+ import { useIsDarkTheme } from "@/hooks/use-is-dark-theme " ;
5656
5757interface CanvasViewProps {
5858 project : database . Project ;
@@ -65,8 +65,7 @@ const initialEdges: Edge[] = [];
6565function CanvasEditor ( { project, onBack } : CanvasViewProps ) {
6666 const { _ } = useLingui ( ) ;
6767 const { systemInfo } = useSystemInfo ( ) ;
68- const { theme } = useTheme ( ) ;
69- const isDarkMode = theme === "dark" ;
68+ const isDarkMode = useIsDarkTheme ( ) ;
7069 const [ name , setName ] = useState ( project . name ) ;
7170 const [ isChatOpen , setIsChatOpen ] = useState ( false ) ;
7271 const [ chatMessage , setChatMessage ] = useState ( "" ) ;
Original file line number Diff line number Diff line change 1+ import { useEffect , useState } from "react" ;
2+ import { useTheme } from "@/components/theme-provider" ;
3+
4+ export function useIsDarkTheme ( ) {
5+ const { theme } = useTheme ( ) ;
6+ const [ isDark , setIsDark ] = useState ( ( ) => {
7+ if ( theme === "dark" ) return true ;
8+ if ( theme === "light" ) return false ;
9+ return window . matchMedia ( "(prefers-color-scheme: dark)" ) . matches ;
10+ } ) ;
11+
12+ useEffect ( ( ) => {
13+ if ( theme !== "system" ) {
14+ setIsDark ( theme === "dark" ) ;
15+ return ;
16+ }
17+
18+ // Handle system theme changes
19+ const mediaQuery = window . matchMedia ( "(prefers-color-scheme: dark)" ) ;
20+ const handleChange = ( e : MediaQueryListEvent ) => {
21+ setIsDark ( e . matches ) ;
22+ } ;
23+
24+ setIsDark ( mediaQuery . matches ) ;
25+ mediaQuery . addEventListener ( "change" , handleChange ) ;
26+
27+ return ( ) => {
28+ mediaQuery . removeEventListener ( "change" , handleChange ) ;
29+ } ;
30+ } , [ theme ] ) ;
31+
32+ return isDark ;
33+ }
You can’t perform that action at this time.
0 commit comments