feat(frontend): sidebar colapsable por secciones + fly-out en modo colapsado #62
Reference in New Issue
Block a user
Delete Branch "chore/sidebar-collapsible-sections"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Propósito
Mejora UX sobre PR #61 (categorización inicial). Dos problemas observados:
Solución
Modo expandido (240px)
/admin/medios, "Maestros" se expande automáticamente — el header quedadisabledsin chevron para evitar esconder items de la ruta actual.localStorage(key:sidebar-sections-collapsed). Si dejás "Catálogo" abierta, la próxima sesión arranca así.Modo colapsado (68px) — patrón VS Code / Azure Portal
ShieldCheck(Seguridad),Building2(Maestros),Package(Catálogo),Calculator(Tasación).z-index management (pedido explícito)
asidewrapper enProtectedLayout:z-10→z-30(sobre contenido de página).HoverCardContentdel fly-out:z-[60](por encima de cualquier overlay de página; deja los modal dialogs standard en z-50 intactos).hover-card.tsxde shadcn: envuelto enHoverCardPrimitive.Portal(faltaba — sin portal, el fly-out podía quedar cortado poroverflowdel aside o el layout).Archivos
Nuevos
src/web/src/hooks/useSidebarSections.ts— hook conisCollapsed(name)+toggle(name)+ persistencialocalStorage.src/web/src/components/ui/hover-card.tsx— shadcn primitive (agregado víanpx shadcn@latest add hover-card, luego ajustado con Portal).Modificados
src/web/src/components/layout/AppSidebar.tsx— refactor completo:ExpandedSection(collapsible) +CollapsedSectionFlyout(hover panel).src/web/src/layouts/ProtectedLayout.tsx— z-index del sidebar wrapper.src/web/src/components/layout/__tests__/AppSidebar.test.tsx— 10 → 16 tests.src/web/package.json+package-lock.json—@radix-ui/react-hover-card.Tests nuevos (6 casos agregados)
aria-expandedrefleja estado/) ninguna sección contiene active → todas colapsadaslocalStorageTotal: 16/16 AppSidebar tests ✓
Verify
vitest: 526/526 green (+16 sidebar) — sin regresionestsc --noEmit: 0 errors, 0 warningsScreenshots mentales para review
Expandido + ruta en Maestros:
Colapsado + hover en Maestros:
No merge automático
Siguiendo el flujo acordado: NO mergeo hasta tu OK después de revisar la UI en el browser. Link: #62