RELE · 16-interaction-specs.md · 18 de 22

En esta página 1. Convenciones 0%

16 — Especificaciones de interacción — RELE

1. Convenciones

ParámetroValor
Duración hover~150ms CSS default
Feedback críticoInmediato al response HTTP
NavegaciónAngular router, sin full reload
ToastsNo en v1; UI actualiza in-place

2. Home

InteracciónComportamiento
Hover CTA seahover:bg-sea-strong
Hover CTA outlineborder/ink enfatizado
Click CTAs rol/login
Sticky headersticky top-0 + surface/95
Hero imageobject-cover, no zoom interaction

3. Login

InteracciónComportamiento
Prefillemail residente demo
Submitdisable visual no; espera HTTP
Errormuestra coral bajo form; no limpia password
Successnavigate /lecturas
Link ← Inicio/

4. Lista lecturas

InteracciónComportamiento
Loadparalelo list + stats (subscribe independientes)
Click card/lecturas/:id
Hover cardhover:border-sea
Nueva lectura (RESIDENT)/lecturas/nueva
Salirlogout + clear storage
Reintentarre-ejecuta load()
Empty CTA→ nueva lectura

Badges

StatusClase orientativa (impl.)
SUBMITTEDsoft navy
REVIEWEDsea-soft
FLAGGEDcoral-soft
DRAFTmuted

5. Nueva lectura

InteracciónComportamiento
Campostwo-way ngModel
SubmitPOST; on success volver a lista (o stay — según page impl.)
ValidaciónHTML required en period/kwh; server refuerza
Cancel / backlink a lista

6. Detalle

InteracciónComportamiento
LoadGET by id; 403/404 → vacío o redirect futuro
RESIDENT viewsin botones patch
ADVISOR notetextarea bindeada
Marcar REVIEWEDPATCH status REVIEWED + note
Marcar FLAGGEDPATCH status FLAGGED + note
Success patchitem = response in-place; sin toast

7. Estados de superficie

Loading

Superficiev1
Listaloading=true evita empty flash hasta respuesta
Detalleno skeleton; aparece al next

Empty

CondiciónUI
items.length===0 && !error && !loadingpanel centrado + copy

Error

CondiciónUI
HTTP error listpanel coral-soft + Reintentar
Login errortexto coral

8. Responsive

ViewportAjuste
< mdhero 1 col; login stack (form abajo); stats wrap
≥ mdhero 2 col; login split; stats row
Touchbotones full/rounded-full con padding ≥ 10px vertical

9. Teclado

Atajo implícitoResultado
Enter en loginsubmit form
Tab orderver doc 10
Escno cierra modales (no hay modal v1)

10. Movimiento y reduced motion

v1 no define animaciones custom largas.
L2+: respetar prefers-reduced-motion si se añaden transitions de lista.

11. Edge cases de interacción

CasoComportamiento esperado
Doble click submit createposible double POST; L2+ debounce
Patch concurrentelast write wins
Token expira mid-sessionpróximo GET falla → error/relogin
Deep link detalle sin tokenredirect login

12. Criterios de aceptación interacción

  1. Card hover visible.
  2. Patch actualiza badge sin reload full page.
  3. Error lista recuperable con Reintentar.
  4. Empty no muestra lista fantasma.
  5. ADVISOR no ve botón “Nueva lectura”.