From d7112191719a3d92db9309bad1e9a6fb019968ae Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Fri, 10 Oct 2025 23:43:52 +0000 Subject: [PATCH] Revert Admin Panel submenus --- src/components/DashboardLayout.tsx | 95 ++++++++++++++++++++++++++---- 1 file changed, 84 insertions(+), 11 deletions(-) diff --git a/src/components/DashboardLayout.tsx b/src/components/DashboardLayout.tsx index 656117f..97f84aa 100644 --- a/src/components/DashboardLayout.tsx +++ b/src/components/DashboardLayout.tsx @@ -47,7 +47,13 @@ import { Receipt, ChefHat, Grid3x3, - Package + Package, + Globe, + Compass, + Map, + Shield, + Radio, + Sparkles } from 'lucide-react'; const DashboardLayout = ({ children }: { children: React.ReactNode }) => { @@ -77,7 +83,33 @@ const DashboardLayout = ({ children }: { children: React.ReactNode }) => { { icon: Users, label: 'Usuarios', path: '/dashboard/admin?tab=users' }, { icon: MapPin, label: 'Proveedores', path: '/dashboard/admin?tab=services' }, { icon: DollarSign, label: 'Financiero', path: '/dashboard/admin?tab=financial' }, - { icon: FileText, label: 'Contenido', path: '/dashboard/admin?tab=content' }, + { + icon: FileText, + label: 'Contenido', + path: '/dashboard/admin?tab=content', + subItems: [ + { icon: Globe, label: 'Destinos', path: '/dashboard/admin?tab=content-destinations' }, + { icon: MapPin, label: 'Lugares', path: '/dashboard/admin?tab=content-places' }, + { icon: BookOpen, label: 'Guías', path: '/dashboard/admin?tab=content-guides' }, + { icon: Car, label: 'Taxis', path: '/dashboard/admin?tab=content-taxis' }, + { icon: Navigation, label: 'Geolocalización', path: '/dashboard/admin?tab=content-geolocation' }, + { icon: Megaphone, label: 'Promocional', path: '/dashboard/admin?tab=content-promotional' }, + { icon: Sparkles, label: 'AI Guías', path: '/dashboard/admin?tab=content-ai-guides' }, + { icon: Eye, label: 'AR Content', path: '/dashboard/admin?tab=content-ar' } + ] + }, + { + icon: Map, + label: 'Geolocalización', + path: '/dashboard/admin?tab=geofences', + subItems: [ + { icon: Target, label: 'Geofences', path: '/dashboard/admin?tab=geofences' }, + { icon: BarChart3, label: 'Analytics', path: '/dashboard/admin?tab=analytics' }, + { icon: Zap, label: 'Testing', path: '/dashboard/admin?tab=testing' }, + { icon: Shield, label: 'Emergencia Geo', path: '/dashboard/admin?tab=emergency-geo' }, + { icon: Compass, label: 'Navegación', path: '/dashboard/admin?tab=navigation' } + ] + }, { icon: AlertTriangle, label: 'Emergencias', path: '/dashboard/admin?tab=emergency' }, { icon: MessageSquare, label: 'Soporte', path: '/dashboard/admin?tab=support' }, { icon: Settings, label: 'Configuración', path: '/dashboard/admin?tab=config' } @@ -233,17 +265,58 @@ const DashboardLayout = ({ children }: { children: React.ReactNode }) => {
{item.subItems.map((sub) => { const SubIcon = sub.icon; - const activeSubPath = location.pathname === sub.path || location.pathname.startsWith(sub.path); + const activeSubPath = location.pathname === sub.path || location.pathname.startsWith(sub.path) || (sub.path.includes('?tab=') && location.search.includes(sub.path.split('?tab=')[1])); + const hasSubSubItems = sub.subItems && sub.subItems.length > 0; + const isSubExpanded = expandedItems[sub.path] || (hasSubSubItems && sub.subItems.some(subsub => location.search.includes(subsub.path.split('?tab=')[1]))); return ( - - - {sub.label} - +
+
+ + + {sub.label} + + {hasSubSubItems && ( + + )} +
+ + {/* Sub-sub-items */} + {hasSubSubItems && isSubExpanded && ( +
+ {sub.subItems.map((subsub) => { + const SubSubIcon = subsub.icon; + const activeSubSubPath = location.search.includes(subsub.path.split('?tab=')[1]); + + return ( + + + {subsub.label} + + ); + })} +
+ )} +
); })}