From 6e7bf0594248fe611d82981a6632c099bbd60ee4 Mon Sep 17 00:00:00 2001 From: Gabriel Kaszewski Date: Fri, 29 May 2026 01:07:27 +0200 Subject: [PATCH] feat(frontend): add hamburger sheet menu for mobile nav --- thoughts-frontend/components/main-nav.tsx | 108 +++++++++++++++------- 1 file changed, 76 insertions(+), 32 deletions(-) diff --git a/thoughts-frontend/components/main-nav.tsx b/thoughts-frontend/components/main-nav.tsx index 684b28f..99e6ae9 100644 --- a/thoughts-frontend/components/main-nav.tsx +++ b/thoughts-frontend/components/main-nav.tsx @@ -1,48 +1,92 @@ "use client"; +import { useState } from "react"; import Link from "next/link"; import { usePathname } from "next/navigation"; +import { Menu } from "lucide-react"; import { cn } from "@/lib/utils"; import { SearchInput } from "./search-input"; +import { Button } from "@/components/ui/button"; +import { + Sheet, + SheetContent, + SheetHeader, + SheetTitle, + SheetTrigger, +} from "@/components/ui/sheet"; interface MainNavProps { isLoggedIn?: boolean; } +const NAV_LINKS = (isLoggedIn: boolean) => [ + { href: "/users/all", label: "Discover" }, + { href: "/about/fediverse", label: "Fediverse" }, + ...(isLoggedIn ? [{ href: "/friends", label: "Friends" }] : []), +]; + export function MainNav({ isLoggedIn }: MainNavProps) { const pathname = usePathname(); + const [open, setOpen] = useState(false); + const links = NAV_LINKS(!!isLoggedIn); + return ( - + <> + {/* Desktop nav */} + + + {/* Mobile hamburger */} + + + + + + + Menu + + +
+ +
+
+
+ ); }