feat(F-159): completed feature

This commit is contained in:
chattie
2026-08-22 18:02:11 +02:00
parent 8595e1ff95
commit f802a83773
12 changed files with 427 additions and 61 deletions

View File

@@ -1,17 +1,23 @@
# Feature activa: F-158POS use same-origin API proxy on LAN
# Feature activa: F-159Admin responsive collapsible sidebar
## Problema
El TPV abierto en `http://192.168.18.93:3006` ejecuta peticiones del navegador contra `http://localhost:3000`. En un cliente LAN, `localhost` apunta al propio cliente y produce `ERR_CONNECTION_REFUSED`.
## Objetivo
Añadir un único `SidebarToggle` reutilizando el layout y `NAV_ITEMS` existentes.
## Alcance
- El cliente POS usa rutas same-origin `/api/...`.
- El route handler de Next.js reenvía las peticiones al backend privado (`127.0.0.1:3000`).
- El proxy conserva cookies de sesión y `x-terminal-id`.
- El login propaga `Set-Cookie` al navegador.
- Next dev permite el origen LAN `192.168.18.93`.
## Comportamiento
- Desktop (`lg+`): expandido a 240px o colapsado a 80px mostrando solo iconos; preferencia guardada en `localStorage`.
- Mobile/tablet: sidebar como drawer superpuesto con backdrop; siempre muestra iconos y etiquetas.
- El estado del drawer no duplica ni sustituye el estado persistido de desktop.
- Transición suave de ancho y desplazamiento.
## Accesibilidad
- Botones con `aria-label`, `aria-expanded` y `aria-controls`.
- Drawer cerrado no es visible ni alcanzable por teclado.
- Escape cierra el drawer.
- Los enlaces conservan etiquetas accesibles y tooltips al colapsar.
## Aceptación
1. El navegador no solicita directamente `localhost:3000`.
2. `GET /api/pos/config` llega al backend mediante el proxy.
3. Login conserva la cookie de sesión.
4. POS build, TypeScript y `verify.sh` pasan.
1. Toggle visible y operable por teclado.
2. Preferencia desktop persiste tras recarga.
3. Sidebar desktop colapsado muestra solo iconos.
4. Mobile/tablet usa drawer con backdrop y cierre por Escape.
5. Una sola fuente de navegación y build responsive sin regresiones.