- footer: dark #050e11 band with an Instrument Serif display CTA, an inverted Download button, link columns (tracked download hrefs preserved) and copyright - structure: move icon-mark to brand/, theme provider+toggle to theme/, site-constants to lib/; sections/layout/ui/brand/theme now fully separated - button: add an inverted variant for dark surfaces - metadata: point OpenGraph/Twitter at a 1200x630 og.jpg and the JSON-LD screenshot at dashboard.webp; drop the old /screenshots references - remove orphans: framer-motion (replaced by CSS + IntersectionObserver), ascii-background, and the seven superseded product screenshots - add @playwright/test for the e2e suite
21 lines
660 B
TypeScript
21 lines
660 B
TypeScript
"use client";
|
|
|
|
import { Sun } from "reicon-react/icons/Sun";
|
|
import { Moon } from "reicon-react/icons/Moon";
|
|
import { useTheme } from "./theme-provider";
|
|
|
|
export function ThemeToggle() {
|
|
const { theme, toggleTheme } = useTheme();
|
|
|
|
return (
|
|
<button
|
|
type="button"
|
|
onClick={toggleTheme}
|
|
aria-label={`Switch to ${theme === "light" ? "dark" : "light"} mode`}
|
|
className="inline-flex h-9 w-9 cursor-pointer items-center justify-center rounded-full text-[var(--muted)] transition-colors hover:bg-[var(--panel-soft)] hover:text-[var(--text)]"
|
|
>
|
|
{theme === "light" ? <Moon size={18} /> : <Sun size={18} />}
|
|
</button>
|
|
);
|
|
}
|