aboutsummaryrefslogtreecommitdiffstats
path: root/renderer/src/App.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'renderer/src/App.tsx')
-rw-r--r--renderer/src/App.tsx18
1 files changed, 18 insertions, 0 deletions
diff --git a/renderer/src/App.tsx b/renderer/src/App.tsx
index 26ac252..5ca7a9b 100644
--- a/renderer/src/App.tsx
+++ b/renderer/src/App.tsx
@@ -8,6 +8,8 @@ import "./styles/globals.css";
8 8
9const api = window.api; 9const api = window.api;
10 10
11type Theme = "dark" | "light";
12
11export function App() { 13export function App() {
12 const [projects, setProjects] = useState<Project[]>([]); 14 const [projects, setProjects] = useState<Project[]>([]);
13 const [sessions, setSessions] = useState<Session[]>([]); 15 const [sessions, setSessions] = useState<Session[]>([]);
@@ -23,6 +25,19 @@ export function App() {
23 }); 25 });
24 const [error, setError] = useState<string | null>(null); 26 const [error, setError] = useState<string | null>(null);
25 27
28 const [theme, setTheme] = useState<Theme>(
29 () => (localStorage.getItem("cf-theme") as Theme) ?? "dark"
30 );
31
32 // Keep document.documentElement in sync and persist to localStorage
33 useEffect(() => {
34 document.documentElement.setAttribute("data-theme", theme);
35 localStorage.setItem("cf-theme", theme);
36 }, [theme]);
37
38 const handleToggleTheme = () =>
39 setTheme((t) => (t === "dark" ? "light" : "dark"));
40
26 const hasChanges = documentContent !== originalContent; 41 const hasChanges = documentContent !== originalContent;
27 42
28 // Clear error after 5 seconds 43 // Clear error after 5 seconds
@@ -282,6 +297,8 @@ export function App() {
282 onCreateSession={handleCreateSession} 297 onCreateSession={handleCreateSession}
283 onDeleteProject={handleDeleteProject} 298 onDeleteProject={handleDeleteProject}
284 onDeleteSession={handleDeleteSession} 299 onDeleteSession={handleDeleteSession}
300 theme={theme}
301 onToggleTheme={handleToggleTheme}
285 /> 302 />
286 303
287 <div className="main-content"> 304 <div className="main-content">
@@ -291,6 +308,7 @@ export function App() {
291 phase={selectedSession?.phase || "research"} 308 phase={selectedSession?.phase || "research"}
292 disabled={!selectedSession || selectedSession.phase === "implement"} 309 disabled={!selectedSession || selectedSession.phase === "implement"}
293 showOnboarding={!selectedProject} 310 showOnboarding={!selectedProject}
311 theme={theme}
294 /> 312 />
295 313
296 <ChatPane 314 <ChatPane