"use client" import type React from "react" import { useState } from "react" import { usePathname, useRouter } from "next/navigation" import { useAuth } from "@/lib/auth-context" import { Button } from "@/components/ui/button" import { ScrollArea } from "@/components/ui/scroll-area" import { Avatar, AvatarFallback } from "@/components/ui/avatar" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { LayoutDashboard, Users, FileText, UserCog, Menu, X, Leaf, LogOut, ChevronDown, Building2, MapPin, Package, Calendar, Plus, BarChart3, Tractor, CloudRain, ClipboardList, Wrench, } from "lucide-react" import { cn } from "@/lib/utils" import { ModeToggle } from "@/components/mode-toggle" interface DashboardLayoutProps { children: React.ReactNode } export function DashboardLayout({ children }: DashboardLayoutProps) { const { user, logout } = useAuth() const [sidebarOpen, setSidebarOpen] = useState(false) const pathname = usePathname() const router = useRouter() const handleLogout = () => { logout() router.push("/login") } const isAdmin = user?.role === "admin" const navigation = [ { name: "Dashboard", href: "/dashboard", icon: LayoutDashboard, show: true, }, { name: "Análisis de Producción", href: "/dashboard/analisis", icon: BarChart3, show: true, }, { name: "Productores", href: "/dashboard/productores", icon: Users, show: true, }, { name: "Establecimientos", href: "/dashboard/establecimientos", icon: MapPin, show: true, }, { name: "Insumos", href: "/dashboard/insumos", icon: Package, show: true, }, { name: "Labores", href: "/dashboard/labores", icon: Wrench, show: true, }, { name: "Prestadores", href: "/dashboard/prestadores", icon: Tractor, show: true, }, { name: "Campañas", href: "/dashboard/campanas", icon: Calendar, show: true, }, { name: "Recetas", href: "/dashboard/recetas", icon: FileText, show: true, }, { name: "Historial de Lotes", href: "/dashboard/historial-lotes", icon: FileText, show: true, }, { name: "Precipitaciones", href: "/dashboard/precipitaciones", icon: CloudRain, show: true, }, { name: "Monitoreo de Campo", href: "/dashboard/visitas", icon: ClipboardList, show: true, }, { name: "Usuarios", href: "/dashboard/usuarios", icon: UserCog, show: isAdmin, }, { name: "Configuración", href: "/dashboard/configuracion", icon: UserCog, show: isAdmin, }, ] const visibleNavigation = navigation.filter((item) => item.show) const getInitials = (name: string) => { return name .split(" ") .map((n) => n[0]) .join("") .toUpperCase() .slice(0, 2) } const getPageTitle = () => { const exactMatch = visibleNavigation.find((item) => item.href === pathname) if (exactMatch) return exactMatch.name const partialMatch = visibleNavigation.find( (item) => item.href !== "/dashboard" && pathname.startsWith(item.href) ) if (partialMatch) return partialMatch.name return "Dashboard" } return (