Spaces:
Sleeping
Sleeping
| import { Bell, Search, HelpCircle, Menu } from 'lucide-react'; | |
| import { Button } from '@/components/ui/button'; | |
| import { Input } from '@/components/ui/input'; | |
| import { Badge } from '@/components/ui/badge'; | |
| import { | |
| DropdownMenu, | |
| DropdownMenuContent, | |
| DropdownMenuItem, | |
| DropdownMenuLabel, | |
| DropdownMenuSeparator, | |
| DropdownMenuTrigger, | |
| } from '@/components/ui/dropdown-menu'; | |
| import { useIsMobile } from '@/hooks/use-mobile'; | |
| interface HeaderProps { | |
| onMobileMenuOpen: () => void; | |
| } | |
| export function Header({ onMobileMenuOpen }: HeaderProps) { | |
| const isMobile = useIsMobile(); | |
| return ( | |
| <header className="sticky top-0 z-30 h-16 border-b border-border bg-card/95 backdrop-blur supports-[backdrop-filter]:bg-card/60"> | |
| <div className="flex h-full items-center justify-between px-4 md:px-6 gap-4"> | |
| {/* Mobile Menu Button */} | |
| {isMobile && ( | |
| <Button | |
| variant="ghost" | |
| size="icon" | |
| className="text-muted-foreground hover:text-foreground" | |
| onClick={onMobileMenuOpen} | |
| > | |
| <Menu className="h-5 w-5" /> | |
| </Button> | |
| )} | |
| {/* Search */} | |
| <div className="relative flex-1 max-w-md"> | |
| <Search className="absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" /> | |
| <Input | |
| type="search" | |
| placeholder={isMobile ? "Search..." : "Search applications, certificates..."} | |
| className="pl-10 bg-background" | |
| /> | |
| </div> | |
| {/* Actions */} | |
| <div className="flex items-center gap-2"> | |
| <Button variant="ghost" size="icon" className="text-muted-foreground hover:text-foreground"> | |
| <HelpCircle className="h-5 w-5" /> | |
| </Button> | |
| <DropdownMenu> | |
| <DropdownMenuTrigger asChild> | |
| <Button variant="ghost" size="icon" className="relative text-muted-foreground hover:text-foreground"> | |
| <Bell className="h-5 w-5" /> | |
| <Badge className="absolute -right-1 -top-1 h-5 w-5 rounded-full p-0 text-[10px] bg-destructive text-destructive-foreground"> | |
| 5 | |
| </Badge> | |
| </Button> | |
| </DropdownMenuTrigger> | |
| <DropdownMenuContent align="end" className="w-80"> | |
| <DropdownMenuLabel>Notifications</DropdownMenuLabel> | |
| <DropdownMenuSeparator /> | |
| <DropdownMenuItem className="flex flex-col items-start gap-1 py-3"> | |
| <span className="font-medium text-sm">New Application Submitted</span> | |
| <span className="text-xs text-muted-foreground">SHAP/H/2025/004 - Blue Lagoon Hatchery</span> | |
| <span className="text-xs text-muted-foreground">2 minutes ago</span> | |
| </DropdownMenuItem> | |
| <DropdownMenuItem className="flex flex-col items-start gap-1 py-3"> | |
| <span className="font-medium text-sm">Audit Report Submitted</span> | |
| <span className="text-xs text-muted-foreground">Dr. Mohan Das submitted report for SHAP/H/2025/001</span> | |
| <span className="text-xs text-muted-foreground">1 hour ago</span> | |
| </DropdownMenuItem> | |
| <DropdownMenuItem className="flex flex-col items-start gap-1 py-3"> | |
| <span className="font-medium text-sm">Non-Compliance Resolved</span> | |
| <span className="text-xs text-muted-foreground">NC resolved for Coastal Aqua Hatchery</span> | |
| <span className="text-xs text-muted-foreground">3 hours ago</span> | |
| </DropdownMenuItem> | |
| <DropdownMenuSeparator /> | |
| <DropdownMenuItem className="text-center text-primary text-sm"> | |
| View all notifications | |
| </DropdownMenuItem> | |
| </DropdownMenuContent> | |
| </DropdownMenu> | |
| </div> | |
| </div> | |
| </header> | |
| ); | |
| } | |