feat/notifications · real component
Connection-health banner
The bar above renders the selected state in context, at the top of the work area
(under the topbar, above content). Built from daisyUI alert + our
Button and Lucide icons. Collapsing a Broken bar (chevron) tucks it into
a pill in the topbar next to the bell; warning and success states dismiss.
Broken · source Broken · destination Multiple broken Expiring soon Degraded Reconnecting Restored
Healthy (none)
All states
Every state at full width, with the event that raises it.
Broken · source Airtable token revoked or expired → backups paused
Backups paused: your Airtable connection expired.
Nothing is being backed up until you reconnect. Last successful backup: 2 days ago.
Broken · destination Google Drive access revoked → backups can’t be written
Backups paused: can’t write to Google Drive.
Your source is fine. The destination needs reconnecting before backups can resume.
Multiple broken 2+ connections down → grouped roll-up, not stacked banners
3 connections need attention. Backups are paused.
Airtable, Google Drive and Dropbox have stopped working. Reconnect them to get backups running again.
Expiring soon token TTL known → warn before it dies (conditional on API, research §8.2)
Your Google Drive connection expires in 5 days.
Reconnect now to keep backups running, with no interruption if you do it in time.
Degraded no successful backup in 24h, not yet a hard auth failure
No successful backup of Airtable in the last 24 hours.
We’re retrying automatically. If it keeps failing, we’ll ask you to reconnect.
Reconnecting user clicked Reconnect → OAuth done, verifying access
Reconnecting Airtable…
Verifying access. Authorization ✓ · Read access ✓ · Checking destination…
Restored verify passed → confirm + re-queue the missed backup
Connection restored. Backups are running again.
Next backup runs at 03:00, and we’ve re-queued the one that was missed.
Healthy everything live → no banner is rendered
No banner. The shell stays clean; health shows only on the Sources / Destinations badges.
Behaviour & decisions
- Placement: top of the work area (under the topbar), via an optional
app-bannerslot inSidebarLayout— not above the sidebar. - Severity by colour: error (broken), warning (expiring / degraded), info (reconnecting), success (restored). Soft daisyUI tints.
- Collapse-not-dismiss for broken: the chevron tucks the bar into a pill in the topbar next to the bell (try it ↑); warning / success states dismiss with an ×.
- Provider is named in text for now; real Airtable / Drive brand logos are a follow-up.
- “Expires in N days” ships only if the Airtable / Drive token APIs expose a TTL (research §8.2, unverified).