systems-obscure/src/components/Header.tsx

110 lines
2.7 KiB
TypeScript
Raw Normal View History

2025-07-07 17:08:27 +01:00
// @ts-nocheck
import { Button } from "@/components/ui/button"
import { useTheme } from "@/context/ThemeProvider"
import { MoonStar } from "lucide-react"
import { Link } from "react-router"
import {
NavigationMenu,
NavigationMenuContent,
NavigationMenuItem,
NavigationMenuLink,
NavigationMenuList,
NavigationMenuTrigger,
navigationMenuTriggerStyle,
NavigationMenuViewport,
} from "@/components/ui/navigation-menu"
import { Toggle } from "@/components/ui/toggle"
const Menu = () => {
return (
<NavigationMenu>
<NavigationMenuList>
{/* Desktop menu - hidden on mobile, visible on md+ */}
<div className="hidden md:flex md:space-x-1">
<NavigationMenuItem>
<NavigationMenuLink
asChild
className={navigationMenuTriggerStyle()}
>
<Link to="/posts/page/1">Posts</Link>
</NavigationMenuLink>
</NavigationMenuItem>
<NavigationMenuItem>
<NavigationMenuLink
asChild
className={navigationMenuTriggerStyle()}
>
<Link to="/about">About</Link>
</NavigationMenuLink>
</NavigationMenuItem>
</div>
{/* Mobile dropdown - visible only on small screens */}
<NavigationMenuItem className="md:hidden">
<NavigationMenuTrigger>Menu</NavigationMenuTrigger>
2025-07-13 14:26:08 +01:00
2025-07-07 17:08:27 +01:00
<NavigationMenuContent>
<NavigationMenuLink asChild>
2025-07-13 14:26:08 +01:00
<Link to="/posts/page/1" className="block px-2 py-1.5">
2025-07-07 17:08:27 +01:00
Posts
</Link>
</NavigationMenuLink>
<NavigationMenuLink asChild>
2025-07-13 14:26:08 +01:00
<Link to="/about" className="block px-2 py-1.5">
2025-07-07 17:08:27 +01:00
About
</Link>
</NavigationMenuLink>
</NavigationMenuContent>
</NavigationMenuItem>
</NavigationMenuList>
<NavigationMenuViewport />
</NavigationMenu>
)
}
const Header = () => {
const { theme, setTheme } = useTheme()
return (
<header className="w-full h-12 flex items-center justify-center border-b fixed top-0 z-20 bg-background">
2025-07-13 14:26:08 +01:00
<div className="w-full px-0 md:px-4 flex items-center justify-between">
2025-07-07 17:08:27 +01:00
<div className="flex items-center gap-2">
<Button variant="ghost" asChild>
<Link to="/">
<span className="text-lg tracking-normal font-semibold">
Systems Obscure
</span>
</Link>
</Button>
</div>
<div className="flex items-center justify-between gap-2">
<Toggle
pressed={theme === "dark"}
onPressedChange={() =>
setTheme(theme === "dark" ? "light" : "dark")
}
>
2025-07-13 14:26:08 +01:00
{/*
2025-07-07 17:08:27 +01:00
<MoonStar />
2025-07-13 14:26:08 +01:00
*/}
<span className="">Dark theme</span>
2025-07-07 17:08:27 +01:00
</Toggle>
2025-07-13 14:26:08 +01:00
<Menu />
2025-07-07 17:08:27 +01:00
{/*
<div className="hidden md:block">
<Button variant="ghost">
<GitMerge /> Forgejo
</Button>
</div>
*/}
</div>
</div>
</header>
)
}
export { Header }