feat(HAI-004): add settings trigger to Header and wire into App

This commit is contained in:
Dustin Byrne
2026-03-25 20:03:42 -04:00
parent 46aae5728b
commit daafab1b17
2 changed files with 16 additions and 2 deletions

View File

@@ -4,6 +4,7 @@ import { fetchConfig } from "./api";
import { Header } from "./components/Header";
import { Board } from "./components/Board";
import { TaskDetailModal } from "./components/TaskDetailModal";
import { SettingsModal } from "./components/SettingsModal";
import { ToastContainer } from "./components/ToastContainer";
import { useTasks } from "./hooks/useTasks";
import { ToastProvider, useToast } from "./hooks/useToast";
@@ -11,6 +12,7 @@ import { ToastProvider, useToast } from "./hooks/useToast";
function AppInner() {
const [isCreating, setIsCreating] = useState(false);
const [detailTask, setDetailTask] = useState<TaskDetail | null>(null);
const [settingsOpen, setSettingsOpen] = useState(false);
const [maxConcurrent, setMaxConcurrent] = useState(2);
const { tasks, createTask, moveTask, deleteTask, mergeTask } = useTasks();
@@ -41,7 +43,7 @@ function AppInner() {
return (
<>
<Header />
<Header onOpenSettings={() => setSettingsOpen(true)} />
<Board
tasks={tasks}
maxConcurrent={maxConcurrent}
@@ -63,6 +65,9 @@ function AppInner() {
addToast={addToast}
/>
)}
{settingsOpen && (
<SettingsModal onClose={() => setSettingsOpen(false)} addToast={addToast} />
)}
<ToastContainer toasts={toasts} onRemove={removeToast} />
</>
);

View File

@@ -1,10 +1,19 @@
export function Header() {
interface HeaderProps {
onOpenSettings?: () => void;
}
export function Header({ onOpenSettings }: HeaderProps) {
return (
<header className="header">
<div className="header-left">
<h1 className="logo">hai</h1>
<span className="logo-sub">board</span>
</div>
<div className="header-actions">
<button className="btn-icon" onClick={onOpenSettings} title="Settings">
</button>
</div>
</header>
);
}