diff --git a/client/components/roadmap/ThemeToggle.tsx b/client/components/roadmap/ThemeToggle.tsx new file mode 100644 index 00000000..4c117cf8 --- /dev/null +++ b/client/components/roadmap/ThemeToggle.tsx @@ -0,0 +1,45 @@ +import { useEffect, useState } from "react"; +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; + +export type RoadmapTheme = "space" | "fantasy" | "city" | "adventure"; + +const key = "aethex_roadmap_theme_v1"; + +export default function ThemeToggle({ value, onChange }: { value?: RoadmapTheme; onChange?: (v: RoadmapTheme) => void }) { + const [theme, setTheme] = useState(value || "space"); + + useEffect(() => { + try { + const raw = localStorage.getItem(key); + if (raw) { + const saved = JSON.parse(raw) as RoadmapTheme; + setTheme(saved); + onChange?.(saved); + } + } catch {} + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const set = (v: RoadmapTheme) => { + setTheme(v); + onChange?.(v); + try { + localStorage.setItem(key, JSON.stringify(v)); + } catch {} + }; + + return ( + set(v as RoadmapTheme)} className="w-full"> + + Space + Fantasy + City + Adventure + + + + + + + ); +}