diff options
| author | Clawd <ai@clawd.bot> | 2026-02-28 15:21:27 -0800 |
|---|---|---|
| committer | Clawd <ai@clawd.bot> | 2026-02-28 15:21:27 -0800 |
| commit | a9ae7c65c387bcf144de8df0a13dbbfd7496cc1e (patch) | |
| tree | e742a76e5638e8564b893584836678dec095fee8 /renderer/src/components/Header.tsx | |
| parent | 4bd42f9c508345391806eb7c5c2ed39863764695 (diff) | |
Restyle UI with light/dark theme support
- Add light/dark theme toggle with localStorage persistence
- Add 'Claude Flow' wordmark in header
- Switch to monospace font (SF Mono, Cascadia Code, etc.)
- Update accent colors (lighter blue)
- Add theme-aware CodeMirror styling (oneDark vs defaultHighlightStyle)
- Update window title to 'Claude Flow'
- Refine spacing and visual polish throughout
- Add .claude-flow/ artifacts from self-restyling session
Diffstat (limited to 'renderer/src/components/Header.tsx')
| -rw-r--r-- | renderer/src/components/Header.tsx | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/renderer/src/components/Header.tsx b/renderer/src/components/Header.tsx index b6bed26..b4faa6e 100644 --- a/renderer/src/components/Header.tsx +++ b/renderer/src/components/Header.tsx | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | import React from "react"; | 1 | import React from "react"; |
| 2 | import type { Project, Session, Phase } from "../types"; | 2 | import type { Project, Session, Phase } from "../types"; |
| 3 | 3 | ||
| 4 | type Theme = "dark" | "light"; | ||
| 5 | |||
| 4 | interface HeaderProps { | 6 | interface HeaderProps { |
| 5 | projects: Project[]; | 7 | projects: Project[]; |
| 6 | sessions: Session[]; | 8 | sessions: Session[]; |
| @@ -12,6 +14,8 @@ interface HeaderProps { | |||
| 12 | onCreateSession: () => void; | 14 | onCreateSession: () => void; |
| 13 | onDeleteProject?: (id: string) => void; | 15 | onDeleteProject?: (id: string) => void; |
| 14 | onDeleteSession?: (id: string) => void; | 16 | onDeleteSession?: (id: string) => void; |
| 17 | theme: Theme; | ||
| 18 | onToggleTheme: () => void; | ||
| 15 | } | 19 | } |
| 16 | 20 | ||
| 17 | const phaseLabels: Record<Phase, string> = { | 21 | const phaseLabels: Record<Phase, string> = { |
| @@ -33,6 +37,8 @@ export function Header({ | |||
| 33 | onCreateSession, | 37 | onCreateSession, |
| 34 | onDeleteProject, | 38 | onDeleteProject, |
| 35 | onDeleteSession, | 39 | onDeleteSession, |
| 40 | theme, | ||
| 41 | onToggleTheme, | ||
| 36 | }: HeaderProps) { | 42 | }: HeaderProps) { |
| 37 | const handleDeleteProject = () => { | 43 | const handleDeleteProject = () => { |
| 38 | if (!selectedProject || !onDeleteProject) return; | 44 | if (!selectedProject || !onDeleteProject) return; |
| @@ -51,6 +57,9 @@ export function Header({ | |||
| 51 | return ( | 57 | return ( |
| 52 | <header className="header"> | 58 | <header className="header"> |
| 53 | <div className="header-left"> | 59 | <div className="header-left"> |
| 60 | {/* ── Wordmark ── */} | ||
| 61 | <span className="app-wordmark">Claude Flow</span> | ||
| 62 | |||
| 54 | <select | 63 | <select |
| 55 | value={selectedProject?.id || ""} | 64 | value={selectedProject?.id || ""} |
| 56 | onChange={(e) => { | 65 | onChange={(e) => { |
| @@ -129,6 +138,11 @@ export function Header({ | |||
| 129 | })} | 138 | })} |
| 130 | </div> | 139 | </div> |
| 131 | )} | 140 | )} |
| 141 | |||
| 142 | {/* ── Theme toggle ── */} | ||
| 143 | <button className="theme-toggle" onClick={onToggleTheme}> | ||
| 144 | {theme === "dark" ? "[light]" : "[dark]"} | ||
| 145 | </button> | ||
| 132 | </div> | 146 | </div> |
| 133 | </header> | 147 | </header> |
| 134 | ); | 148 | ); |
