feat(shell): mover Zona de marca dentro de la seccion Biblioteca de activos con acordeon
This commit is contained in:
@@ -75,13 +75,6 @@ const NAV_ITEMS: NavItem[] = [
|
||||
iconClass: 'text-pink-500',
|
||||
moduleId: 'pipeline',
|
||||
},
|
||||
{
|
||||
href: '/dashboard/marca',
|
||||
label: 'Zona de marca',
|
||||
icon: BookMarked,
|
||||
iconClass: 'text-rose-500',
|
||||
moduleId: 'marca',
|
||||
},
|
||||
{
|
||||
href: '/dashboard/activos',
|
||||
label: 'Biblioteca de Activos',
|
||||
@@ -259,17 +252,26 @@ export default function DashboardShell({
|
||||
pathname === '/dashboard/organico' ||
|
||||
(pathname !== null && pathname.startsWith('/dashboard/organico/'));
|
||||
|
||||
const isActivosRoute =
|
||||
pathname === '/dashboard/activos' ||
|
||||
(pathname !== null && pathname.startsWith('/dashboard/activos/')) ||
|
||||
pathname === '/dashboard/marca' ||
|
||||
(pathname !== null && pathname.startsWith('/dashboard/marca/'));
|
||||
|
||||
const [expandedSections, setExpandedSections] = useState<Record<string, boolean>>({});
|
||||
|
||||
const isMetricasOpen = expandedSections['metricas'] ?? isMetricasRoute;
|
||||
const isActivosOpen = expandedSections['activos'] ?? isActivosRoute;
|
||||
const isAgenciaOpen = expandedSections['agencia'] ?? isAgenciaRoute;
|
||||
|
||||
const toggleSection = (key: 'metricas' | 'agencia') => {
|
||||
const toggleSection = (key: 'metricas' | 'activos' | 'agencia') => {
|
||||
setExpandedSections((prev) => {
|
||||
const current =
|
||||
key === 'metricas'
|
||||
? (prev['metricas'] ?? isMetricasRoute)
|
||||
: (prev['agencia'] ?? isAgenciaRoute);
|
||||
: key === 'activos'
|
||||
? (prev['activos'] ?? isActivosRoute)
|
||||
: (prev['agencia'] ?? isAgenciaRoute);
|
||||
return {
|
||||
...prev,
|
||||
[key]: !current,
|
||||
@@ -293,6 +295,9 @@ export default function DashboardShell({
|
||||
moduleOn('organico')
|
||||
);
|
||||
}
|
||||
if (item.moduleId === 'activos') {
|
||||
return moduleOn('activos') || moduleOn('marca');
|
||||
}
|
||||
return moduleOn(item.moduleId);
|
||||
};
|
||||
|
||||
@@ -329,13 +334,22 @@ export default function DashboardShell({
|
||||
<nav className="flex-1 min-h-0 space-y-0.5 overflow-y-auto pr-1">
|
||||
{visibleNav.map((item) => {
|
||||
const underMetricas = item.moduleId === 'kpis';
|
||||
const underActivos = item.moduleId === 'activos';
|
||||
const hasSubItems = underMetricas || underActivos;
|
||||
const isOpen = underMetricas ? isMetricasOpen : underActivos ? isActivosOpen : false;
|
||||
const onToggle = underMetricas
|
||||
? () => toggleSection('metricas')
|
||||
: underActivos
|
||||
? () => toggleSection('activos')
|
||||
: undefined;
|
||||
|
||||
return (
|
||||
<div key={item.href} className="space-y-0.5">
|
||||
<NavLink
|
||||
item={item}
|
||||
hasSubItems={underMetricas}
|
||||
isOpen={isMetricasOpen}
|
||||
onToggle={() => toggleSection('metricas')}
|
||||
hasSubItems={hasSubItems}
|
||||
isOpen={isOpen}
|
||||
onToggle={onToggle}
|
||||
onNavigate={close}
|
||||
/>
|
||||
{underMetricas && isMetricasOpen ? (
|
||||
@@ -409,6 +423,27 @@ export default function DashboardShell({
|
||||
) : null}
|
||||
</div>
|
||||
) : null}
|
||||
|
||||
{underActivos && isActivosOpen ? (
|
||||
<div className="space-y-0.5 my-0.5">
|
||||
{moduleOn('marca') ? (
|
||||
<Link
|
||||
href="/dashboard/marca"
|
||||
onClick={close}
|
||||
className={subLinkCls('/dashboard/marca')}
|
||||
>
|
||||
<BookMarked
|
||||
className={`h-3.5 w-3.5 shrink-0 ${
|
||||
isActive(pathname, '/dashboard/marca')
|
||||
? 'text-rose-400'
|
||||
: 'text-mist-400 group-hover:text-mist-300'
|
||||
}`}
|
||||
/>
|
||||
<span className="truncate">Zona de marca</span>
|
||||
</Link>
|
||||
) : null}
|
||||
</div>
|
||||
) : null}
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
|
||||
Reference in New Issue
Block a user