[feat](trx-frontend-http): implement Phase 1 UX/UI quick wins from Settings analysis

- IX-2: Add confirm() dialogs before all destructive actions (10 history
  clear buttons, scheduler reset, background decode reset)
- IX-6: Add Select All / Deselect All buttons for background decode
  bookmark checklist
- IX-1: Add dirty-state indicator (pulsing dot) on Save buttons when
  unsaved changes exist in scheduler and background decode panels
- A-4: Add role="alert" and aria-live="polite" to toast notification
  elements for screen reader accessibility
- A-3: Add Unicode symbol prefixes to background decode state labels
  (checkmark/triangle/cross) so state is distinguishable without color

https://claude.ai/code/session_01ShfPMW9hPLD3czp9YovkbJ
Signed-off-by: Claude <noreply@anthropic.com>
This commit is contained in:
Claude
2026-03-30 07:33:45 +00:00
committed by Stan Grams
parent 8ea7bf3b84
commit c85a9c9bc4
14 changed files with 155 additions and 13 deletions
@@ -4502,6 +4502,21 @@ button:focus-visible, input:focus-visible, select:focus-visible {
border-color: var(--accent-green);
font-weight: 700;
}
.sch-save-btn.sch-dirty::after {
content: "";
display: inline-block;
width: 7px;
height: 7px;
border-radius: 50%;
background: #fff;
margin-left: 0.45rem;
vertical-align: middle;
animation: sch-dirty-pulse 1.5s ease-in-out infinite;
}
@keyframes sch-dirty-pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.4; }
}
.sch-status-card {
font-size: 0.9rem;
color: var(--text-muted);
@@ -4829,6 +4844,26 @@ button:focus-visible, input:focus-visible, select:focus-visible {
color: var(--text-muted);
font-size: 0.85rem;
}
/* ── Select All / Deselect All buttons ────────────────────────────── */
.bgd-select-actions {
display: flex;
gap: 0.5rem;
}
.bgd-select-btn {
background: var(--bg-secondary);
border: 1px solid var(--border-light);
border-radius: 0.3rem;
color: var(--text-muted);
font-size: 0.78rem;
font-weight: 600;
padding: 0.25rem 0.65rem;
cursor: pointer;
transition: background 0.15s, color 0.15s;
}
.bgd-select-btn:hover {
background: var(--card-bg);
color: var(--text);
}
/* ── SVG State Dot Badges ─────────────────────────────────────────── */
.bgd-state-dot {
width: 8px;