import { Moon, Sun } from "lucide-react";
import { useEffect, useState } from "react";
import type { History } from "../types/types";
import { CubeLogo } from "./CubeLogo.tsx";
import { ImportButton } from "./ImportButton.tsx";
interface HeaderProps {
showImport?: boolean;
setSessions?: (sessions: History[]) => void;
}
export function Header({ showImport = false, setSessions }: HeaderProps) {
const [darkMode, setDarkMode] = useState(() =>
document.documentElement.classList.contains("dark"),
);
useEffect(() => {
const root = document.documentElement;
if (darkMode) {
root.classList.add("dark");
localStorage.setItem("theme", "dark");
} else {
root.classList.remove("dark");
localStorage.setItem("theme", "light");
}
}, [darkMode]);
return (
<header className="sticky top-0 z-50 w-full border-b border-border bg-header-bg backdrop-blur-xl transition-colors duration-300">
<div className="max-w-6xl mx-auto px-4 sm:px-6 h-14 flex items-center justify-between">
<div className="flex items-center gap-2.5">
<CubeLogo size={24} />
<span className="font-sans font-medium text-sm tracking-tight text-ink transition-colors duration-300">
cube<span className="text-accent">tui</span>
</span>
</div>
<div className="flex items-center gap-2">
{showImport && setSessions && (
<ImportButton onImport={setSessions} compact={true} />
)}
<button
type="button"
onClick={() => setDarkMode((prev) => !prev)}
aria-label="Toggle theme"
role="switch"
aria-checked={darkMode}
data-theme={darkMode ? "dark" : "light"}
className="theme-toggle relative flex items-center gap-1.5 rounded-full px-1 py-1 border transition-all duration-300 focus:outline-none focus-visible:ring-2 focus-visible:ring-accent"
>
<span className="theme-toggle-thumb absolute top-1 bottom-1 rounded-full transition-all duration-300" />
<span className="theme-toggle-moon relative z-10 flex items-center justify-center w-1/2 transition-colors duration-300">
<Moon size={12} strokeWidth={2} />
</span>
<span className="theme-toggle-sun relative z-10 flex items-center justify-center w-1/2 transition-colors duration-300">
<Sun size={12} strokeWidth={2} />
</span>
</button>
</div>
</div>
</header>
);
}