From 1d2bdaf88c65e80deaa8ca1cbd07f0a53d4b5cda Mon Sep 17 00:00:00 2001 From: jyswee Date: Thu, 23 Jul 2026 22:15:04 +0000 Subject: [PATCH] Seed: product-management template (23 files) --- src/components/Header.tsx | 122 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 src/components/Header.tsx diff --git a/src/components/Header.tsx b/src/components/Header.tsx new file mode 100644 index 0000000..46a3b13 --- /dev/null +++ b/src/components/Header.tsx @@ -0,0 +1,122 @@ +import { useState } from "react"; +import { Link } from "react-router-dom"; +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { Badge } from "@/components/ui/badge"; +import { Avatar, AvatarFallback } from "@/components/ui/avatar"; +import { Sheet, SheetContent, SheetTrigger } from "@/components/ui/sheet"; +import { + DropdownMenu, DropdownMenuContent, DropdownMenuItem, + DropdownMenuSeparator, DropdownMenuTrigger +} from "@/components/ui/dropdown-menu"; +import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"; +import { Separator } from "@/components/ui/separator"; +import { + Menu, Search, Bell, User, Settings, LogOut, Clock, ChevronRight +} from "lucide-react"; +import { SidebarContent } from "@/components/Sidebar"; +import { ThemeToggle } from "@/components/ThemeToggle"; + +const notifications = [ + { title: "New feature vote", desc: "Visual Roadmap Board received 5 new votes", time: "5m ago", unread: true }, + { title: "Feedback submitted", desc: "Elena Martinez submitted new feedback", time: "18m ago", unread: true }, + { title: "Release published", desc: "v2.4.0 changelog is now live", time: "1h ago", unread: false }, +]; + +export default function Header() { + const [mobileOpen, setMobileOpen] = useState(false); + + return ( +
+
+ {/* Mobile menu */} + + + + + + + + + + {/* Breadcrumb */} +
+ ProductLab + + Roadmap +
+ + {/* Search */} +
+
+ + +
+
+ +
+ + + {/* Notifications */} + + + + + +
+
+

Notifications

+ 2 new +
+
+
+ {notifications.map((n, i) => ( +
+
+ {n.unread &&
} +
+

{n.title}

+

{n.desc}

+

+ {n.time} +

+
+
+
+ ))} +
+
+ +
+ + + + + + {/* User Menu */} + + + + + + Profile + Settings + + Log Out + + +
+
+
+ ); +}