feat(F-159): completed feature
This commit is contained in:
@@ -1,17 +1,23 @@
|
||||
# Feature activa: F-158 — POS use same-origin API proxy on LAN
|
||||
# Feature activa: F-159 — Admin 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.
|
||||
|
||||
Reference in New Issue
Block a user