feat(alarmas): simplify alarm cards and add vacation summary row

Restyle the Alarmas root per the functional redesign: alarm cards drop
the always-visible edit/skip/delete button row for a minimal giant
time + station + switch layout. Tap opens the editor, swipe deletes
(with an AlertDialog confirmation), and the hero banner gains an
inline "Saltar" pill for the featured (soonest-firing) alarm's skip
action. No capability from the old button row is lost, only the
trigger location moved; estado_alarmas.dart and its scheduling/
snooze/dismiss-guard tests are untouched.

The vacation inline panel becomes a tappable summary row (range count
+ next-range countdown, computed over the existing estado.vacaciones)
that pushes a Vacaciones manager screen. That destination is a
placeholder for now (_PantallaVacacionesTemporal, holding the old
panel's body verbatim so add/delete-range capability is preserved) --
WU9 replaces it with the real PantallaVacaciones per design ADR-6.

New ARB keys (en/es only; other 11 locales are WU18's job):
alarmHeroSkipAction, alarmDeleteConfirmTitle/Message,
vacationRangesCount, vacationSummary{Active,Upcoming}Countdown.
This commit is contained in:
2026-07-29 10:20:25 +02:00
parent 6653e044c7
commit 9a2eb57a0e
19 changed files with 876 additions and 237 deletions
+27
View File
@@ -422,6 +422,9 @@
"editAction": "Editar",
"skipNextAction": "Omitir siguiente",
"deleteTooltip": "Eliminar",
"alarmHeroSkipAction": "Saltar",
"alarmDeleteConfirmTitle": "¿Eliminar alarma?",
"alarmDeleteConfirmMessage": "Esta acción no se puede deshacer.",
"alarmSkippedNoNextSnackbar": "Alarma omitida. No queda próxima ejecución.",
"alarmSkippedReturnsSnackbar": "Alarma omitida. Volverá el {date}.",
"@alarmSkippedReturnsSnackbar": {
@@ -508,6 +511,30 @@
"vacationRangesHint": "Si una alarma tiene \"Pausa en vacaciones\", se salta automáticamente estos rangos.",
"noVacationRangesLoaded": "Sin rangos cargados.",
"deleteRangeTooltip": "Eliminar rango",
"vacationRangesCount": "{count} rangos",
"@vacationRangesCount": {
"placeholders": {
"count": {
"type": "int"
}
}
},
"vacationSummaryActiveCountdown": "En curso · quedan {days} días",
"@vacationSummaryActiveCountdown": {
"placeholders": {
"days": {
"type": "int"
}
}
},
"vacationSummaryUpcomingCountdown": "Próximo rango en {days} días",
"@vacationSummaryUpcomingCountdown": {
"placeholders": {
"days": {
"type": "int"
}
}
},
"vacationsDefaultName": "Vacaciones",
"newVacationRangeTitle": "Nuevo rango de vacaciones",
"startField": "Inicio",