# F-159 — Implementer ## Implementación - `SidebarToggle` reutilizable para desktop y mobile. - Estado desktop `expanded/collapsed` persistido en `localStorage` (`mdv.admin.sidebar.collapsed`). - Desktop colapsado reduce 240px→80px y oculta etiquetas solo en breakpoint `lg`. - Mobile/tablet usa el mismo sidebar como drawer con backdrop y cierre por navegación, botón o Escape. - Drawer cerrado queda `invisible`, evitando foco en enlaces fuera de pantalla. - Transiciones suaves de ancho, transformación e icono. - Accesibilidad: botones nativos, `aria-label`, `aria-expanded`, `aria-controls`, `aria-current`, focus rings y tooltips. - Restaurado acceso visible a cerrar sesión dentro del sidebar. ## Evidencia - `cd project/apps/admin && npm run build`: PASS (29 rutas). - `cd project && node_modules/.bin/tsc --noEmit`: PASS. - `git diff --check`: PASS. - `./scripts/verify.sh`: PASS. ## Archivo - `project/apps/admin/src/app/(dashboard)/layout.tsx`