gsxdsm
9d1bd393d8
FN-9202: Unify dashboard banner styling
Standardize dashboard notices on a shared, token-driven banner shell.
- Add a reusable Banner primitive with consistent tones, layouts, actions, and dismissal behavior.
- Migrate dashboard notification banners away from bespoke shells and left accent borders.
- Document and test banner styling invariants, including token-only CSS lengths and colors.
- Add a patch changeset for the published dashboard bundle.
Files changed:
.changeset/fn-9202-banner-style-unification.md | 7 ++
docs/dashboard-guide.md | 4 +
.../app/__tests__/banner-style-consistency.test.ts | 25 ++++
.../app/components/ApprovalNotificationBanner.css | 10 --
.../app/components/ApprovalNotificationBanner.tsx | 5 +-
packages/dashboard/app/components/Banner.css | 81 ++++++++++++
packages/dashboard/app/components/Banner.tsx | 78 ++++++++++++
.../app/components/CapacityRiskBanner.css | 50 +-------
.../app/components/CapacityRiskBanner.tsx | 39 +++---
.../app/components/CliBinaryInstallBanner.css | 126 ++-----------------
.../app/components/CliBinaryInstallBanner.tsx | 14 +--
.../app/components/DbCorruptionBanner.css | 18 +--
.../app/components/DbCorruptionBanner.tsx | 5 +-
.../app/components/EngineStatusBanner.css | 94 ++------------
.../app/components/EngineStatusBanner.tsx | 48 +++----
.../app/components/EngineUnavailableBanner.css | 42 +------
.../app/components/EngineUnavailableBanner.tsx | 21 ++--
.../app/components/MergeAdvanceNotice.css | 129 +++----------------
.../app/components/MergeAdvanceNotice.tsx | 36 +++---
.../app/components/MigrationInProgressBanner.css | 25 ----
.../app/components/MigrationInProgressBanner.tsx | 19 +--
.../app/components/OAuthReloginBanner.css | 53 +-------
.../app/components/OAuthReloginBanner.tsx | 26 +---
.../app/components/SessionNotificationBanner.css | 16 +--
.../app/components/SessionNotificationBanner.tsx | 5 +-
.../app/components/SetupWarningBanner.css | 106 +---------------
.../app/components/SetupWarningBanner.tsx | 31 +----
.../app/components/SqliteMigrationBanner.css | 40 +-----
.../app/components/SqliteMigrationBanner.tsx | 33 ++---
.../app/components/TaskIdIntegrityBanner.css | 18 +--
.../app/components/TaskIdIntegrityBanner.tsx | 5 +-
.../dashboard/app/components/TestModeBanner.css | 18 ---
.../dashboard/app/components/TestModeBanner.tsx | 12 +-
.../app/components/UpdateAvailableBanner.css | 139 +++------------------
.../app/components/UpdateAvailableBanner.tsx | 22 ++--
.../app/components/__tests__/Banner.test.tsx | 48 +++++++
36 files changed, 450 insertions(+), 998 deletions(-)
Fusion-Task-Id: FN-9202
Fusion-Task-Lineage: 14762201-55e5-4124-a897-9667c3a1ab84
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-08-23 16:00:53 -07:00
..
2026-08-23 16:00:53 -07:00
2026-08-20 03:55:38 +00:00
2026-08-22 19:43:45 -07:00
2026-08-23 01:35:06 +00:00
2026-07-05 11:31:48 -07:00
2026-08-23 01:36:12 +00:00
2026-08-09 17:10:49 -07:00
2026-08-20 03:55:38 +00:00
2026-07-16 12:36:03 -07:00
2026-08-09 20:19:52 -07:00
2026-08-21 04:32:52 +00:00
2026-08-21 04:32:52 +00:00
2026-07-30 22:46:08 -07:00
2026-08-15 23:14:24 -07:00
2026-08-20 03:55:38 +00:00
2026-07-12 17:54:21 -07:00
2026-07-26 18:57:02 -07:00
2026-06-03 17:14:42 -07:00
2026-07-26 18:57:02 -07:00
2026-07-26 18:57:02 -07:00
2026-07-04 10:42:21 -07:00
2026-08-23 01:36:13 +00:00
2026-06-25 08:34:44 -07:00
2026-06-03 19:06:53 -07:00
2026-07-26 18:57:02 -07:00
2026-07-23 13:38:41 -07:00
2026-07-09 19:58:07 -07:00
2026-06-20 05:04:25 -07:00
2026-06-03 20:52:44 -07:00
2026-06-19 04:27:01 -07:00
2026-06-17 21:37:18 -07:00
2026-06-20 05:04:25 -07:00
2026-08-14 12:41:03 -07:00
2026-08-10 03:24:37 -07:00
2026-06-20 05:04:25 -07:00
2026-08-15 23:14:24 -07:00
2026-08-15 23:14:24 -07:00
2026-06-27 17:11:13 -07:00
2026-06-03 19:06:53 -07:00
2026-08-21 04:33:56 +00:00
2026-08-23 16:00:53 -07:00
2026-08-23 16:00:53 -07:00
2026-08-20 03:57:23 +00:00
2026-08-20 03:57:23 +00:00
2026-08-20 03:57:23 +00:00
2026-07-18 04:44:53 -07:00
2026-08-20 03:57:23 +00:00
2026-06-29 15:34:06 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-08-23 16:00:53 -07:00
2026-08-23 16:00:53 -07:00
2026-08-23 01:35:06 +00:00
2026-08-23 01:36:12 +00:00
2026-08-07 20:27:04 -07:00
2026-08-07 20:27:04 -07:00
2026-08-23 16:00:53 -07:00
2026-08-23 16:00:53 -07:00
2026-07-30 21:58:23 -07:00
2026-07-10 18:14:09 -07:00
2026-08-21 04:32:53 +00:00
2026-08-21 04:32:53 +00:00
2026-08-09 06:07:01 -07:00
2026-08-20 03:55:38 +00:00
2026-08-23 09:21:10 -07:00
2026-08-22 20:37:46 -07:00
2026-08-23 10:35:53 -07:00
2026-08-23 10:03:46 -07:00
2026-06-15 12:43:08 -07:00
2026-08-23 16:00:53 -07:00
2026-08-23 16:00:53 -07:00
2026-06-19 04:27:01 -07:00
2026-07-12 17:54:21 -07:00
2026-08-23 01:35:06 +00:00
2026-08-21 10:57:44 -07:00
2026-06-21 03:53:43 -07:00
2026-08-21 04:32:53 +00:00
2026-08-21 04:32:53 +00:00
2026-06-03 01:08:09 -07:00
2026-07-17 00:29:48 -07:00
2026-07-30 22:46:08 -07:00
2026-07-16 02:07:43 -07:00
2026-08-23 01:36:13 +00:00
2026-07-26 19:52:32 -07:00
2026-08-16 02:34:13 -07:00
2026-07-16 04:15:18 -07:00
2026-07-08 23:39:33 -07:00
2026-08-01 04:03:26 -07:00
2026-08-20 03:55:38 +00:00
2026-08-20 03:57:23 +00:00
2026-08-21 19:30:08 -07:00
2026-07-08 13:09:10 -07:00
2026-07-08 13:09:10 -07:00
2026-06-19 04:27:01 -07:00
2026-07-02 23:53:26 -07:00
2026-06-03 19:06:53 -07:00
2026-08-23 16:00:53 -07:00
2026-08-23 16:00:53 -07:00
2026-07-17 20:09:56 -07:00
2026-07-17 20:09:56 -07:00
2026-07-18 18:04:26 -07:00
2026-06-25 14:37:52 -07:00
2026-07-30 21:50:47 -07:00
2026-06-19 04:27:01 -07:00
2026-07-18 00:33:14 -07:00
2026-07-26 18:57:02 -07:00
2026-06-03 19:48:40 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-06-26 00:43:55 -07:00
2026-07-12 12:49:37 -07:00
2026-06-28 21:10:28 -07:00
2026-08-20 03:57:23 +00:00
2026-07-11 22:43:34 -07:00
2026-08-20 03:57:23 +00:00
2026-06-03 20:52:44 -07:00
2026-06-22 23:42:45 -07:00
2026-06-22 23:42:45 -07:00
2026-08-20 03:56:41 +00:00
2026-08-09 13:49:56 -10:00
2026-08-21 10:57:44 -07:00
2026-08-23 16:00:53 -07:00
2026-08-23 16:00:53 -07:00
2026-08-23 16:00:53 -07:00
2026-08-23 16:00:53 -07:00
2026-06-19 01:33:13 -07:00
2026-06-20 05:04:25 -07:00
2026-06-22 11:47:52 -07:00
2026-07-18 20:30:42 -07:00
2026-08-17 15:47:43 -07:00
2026-08-17 15:47:43 -07:00
2026-07-26 18:57:02 -07:00
2026-07-08 23:39:34 -07:00
2026-07-02 13:44:41 -07:00
2026-07-16 01:19:43 -07:00
2026-08-02 23:46:16 -07:00
2026-06-25 08:34:44 -07:00
2026-06-03 19:06:53 -07:00
2026-08-17 17:38:26 -07:00
2026-08-20 03:55:38 +00:00
2026-07-22 23:04:33 -07:00
2026-07-06 19:03:06 -07:00
2026-07-06 19:03:06 -07:00
2026-06-27 23:47:21 -07:00
2026-06-22 03:57:10 -07:00
2026-08-17 16:56:48 -07:00
2026-08-20 03:55:38 +00:00
2026-07-26 13:05:23 -07:00
2026-06-03 22:35:28 -07:00
2026-06-20 05:04:25 -07:00
2026-07-02 11:38:34 -07:00
2026-07-30 21:58:23 -07:00
2026-06-27 20:02:33 -07:00
2026-07-18 20:30:42 -07:00
2026-07-01 07:33:56 -07:00
2026-07-16 04:15:18 -07:00
2026-07-09 19:58:03 -07:00
2026-06-19 04:27:01 -07:00
2026-07-30 22:46:08 -07:00
2026-07-08 09:47:19 -07:00
2026-08-21 04:32:52 +00:00
2026-07-01 07:33:56 -07:00
2026-07-07 22:04:53 -07:00
2026-07-16 04:58:03 -07:00
2026-08-21 04:32:53 +00:00
2026-07-25 05:15:02 -07:00
2026-08-12 22:18:18 -07:00
2026-08-12 22:18:18 -07:00
2026-06-25 08:34:44 -07:00
2026-06-20 05:04:25 -07:00
2026-07-30 21:50:47 -07:00
2026-07-30 21:50:47 -07:00
2026-08-13 16:48:01 -07:00
2026-08-20 03:55:38 +00:00
2026-08-20 03:55:38 +00:00
2026-08-21 04:32:53 +00:00
2026-06-19 04:27:01 -07:00
2026-08-09 13:33:16 -10:00
2026-08-02 22:47:04 -07:00
2026-08-17 20:54:43 -07:00
2026-08-20 03:57:23 +00:00
2026-08-21 04:33:56 +00:00
2026-06-03 20:52:44 -07:00
2026-06-21 03:53:43 -07:00
2026-06-21 03:53:43 -07:00
2026-07-12 17:54:21 -07:00
2026-08-20 03:57:23 +00:00
2026-08-01 01:22:20 -07:00
2026-07-30 03:10:35 -07:00
2026-08-20 03:55:38 +00:00
2026-07-18 19:45:08 -07:00
2026-08-23 01:16:35 -07:00
2026-08-15 22:13:17 -07:00
2026-08-20 03:55:38 +00:00
2026-07-18 03:48:38 -07:00
2026-08-20 03:55:38 +00:00
2026-08-15 17:36:32 -07:00
2026-08-20 03:55:38 +00:00
2026-08-20 03:55:38 +00:00
2026-06-22 11:15:46 -07:00
2026-07-11 17:16:49 -07:00
2026-08-13 16:48:01 -07:00
2026-08-23 16:00:53 -07:00
2026-08-23 16:00:53 -07:00
2026-07-30 12:46:12 -07:00
2026-08-20 03:55:38 +00:00
2026-08-20 03:55:38 +00:00
2026-08-09 06:07:01 -07:00
2026-08-20 03:55:38 +00:00
2026-07-25 05:15:02 -07:00
2026-07-25 05:15:02 -07:00
2026-08-23 16:00:53 -07:00
2026-08-23 16:00:53 -07:00
2026-08-23 01:36:13 +00:00
2026-08-10 11:50:56 -07:00
2026-06-25 16:31:10 -07:00
2026-08-23 01:36:13 +00:00
2026-08-16 08:05:11 -07:00
2026-08-16 08:05:11 -07:00
2026-08-02 17:27:31 -07:00
2026-08-21 04:32:52 +00:00
2026-06-19 04:27:01 -07:00
2026-06-17 03:12:16 -07:00
2026-06-22 04:39:35 -07:00
2026-08-17 16:56:48 -07:00
2026-08-21 19:30:08 -07:00
2026-08-15 06:42:39 -07:00
2026-08-01 04:03:26 -07:00
2026-07-03 21:47:00 -07:00
2026-07-03 21:47:00 -07:00
2026-07-26 18:57:02 -07:00
2026-08-08 23:54:40 -07:00
2026-07-18 19:36:57 -07:00
2026-07-18 18:11:02 -07:00
2026-08-20 03:55:38 +00:00
2026-06-22 23:58:38 -07:00
2026-08-15 23:14:24 -07:00
2026-07-26 18:35:10 -07:00
2026-08-21 04:35:58 +00:00
2026-06-03 20:52:44 -07:00
2026-07-30 22:46:08 -07:00
2026-06-03 19:06:53 -07:00
2026-06-25 08:34:44 -07:00
2026-07-13 19:07:58 -07:00
2026-07-14 17:18:06 -07:00
2026-08-23 16:00:53 -07:00
2026-08-23 16:00:53 -07:00
2026-07-16 04:15:18 -07:00
2026-07-14 08:18:52 -07:00
2026-06-19 04:27:01 -07:00
2026-06-03 19:48:40 -07:00
2026-06-03 19:06:53 -07:00
2026-07-07 22:04:53 -07:00
2026-08-23 01:35:06 +00:00
2026-07-07 22:04:53 -07:00
2026-07-22 18:46:46 -07:00
2026-07-30 02:38:58 -07:00
2026-08-20 03:55:39 +00:00
2026-08-20 03:55:39 +00:00
2026-06-21 03:53:43 -07:00
2026-07-04 21:28:17 -07:00
2026-07-05 11:31:44 -07:00
2026-08-21 04:32:53 +00:00
2026-08-23 01:36:13 +00:00
2026-07-01 07:33:56 -07:00
2026-07-07 22:04:53 -07:00
2026-07-22 20:55:27 -07:00
2026-06-28 12:10:10 -07:00
2026-07-15 20:28:11 -07:00
2026-08-23 01:35:06 +00:00
2026-06-19 04:27:01 -07:00
2026-06-03 20:52:44 -07:00
2026-06-03 01:08:09 -07:00
2026-06-17 21:37:18 -07:00
2026-06-28 01:17:22 -07:00
2026-07-16 01:19:43 -07:00
2026-06-03 19:06:53 -07:00
2026-07-25 23:12:41 -07:00
2026-08-01 09:53:36 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 20:52:44 -07:00
2026-07-25 23:12:41 -07:00
2026-08-01 09:53:36 -07:00
2026-08-02 17:27:31 -07:00
2026-06-20 21:23:17 -07:00
2026-08-21 19:30:08 -07:00
2026-08-17 21:39:06 -07:00
2026-08-20 03:55:38 +00:00
2026-06-27 23:37:24 -07:00
2026-07-30 12:46:12 -07:00
2026-06-27 23:08:10 -07:00
2026-06-27 23:08:10 -07:00
2026-06-22 15:23:43 -07:00
2026-06-22 15:23:43 -07:00
2026-08-13 00:50:50 -07:00
2026-08-21 04:32:53 +00:00
2026-07-16 03:46:55 -07:00
2026-07-09 08:17:52 -07:00
2026-07-20 09:46:22 -07:00
2026-08-20 03:55:38 +00:00
2026-07-19 16:44:40 -07:00
2026-08-20 03:55:38 +00:00
2026-07-31 20:39:37 -07:00
2026-06-22 03:34:16 -07:00
2026-07-18 16:18:15 -07:00
2026-08-02 17:27:31 -07:00
2026-07-03 00:12:10 -07:00
2026-07-26 18:35:10 -07:00
2026-06-26 02:45:29 -07:00
2026-07-30 03:10:35 -07:00
2026-07-30 12:46:12 -07:00
2026-06-03 19:06:53 -07:00
2026-07-16 16:01:29 -07:00
2026-06-20 05:04:25 -07:00
2026-07-30 21:58:23 -07:00
2026-07-30 03:10:35 -07:00
2026-07-30 03:10:35 -07:00
2026-08-21 04:32:52 +00:00
2026-07-30 22:46:08 -07:00
2026-06-22 19:48:50 -07:00
2026-08-05 15:41:56 -07:00
2026-07-11 19:31:50 -07:00
2026-07-10 18:09:58 -07:00
2026-08-23 16:00:53 -07:00
2026-08-23 16:00:53 -07:00
2026-07-31 18:34:58 -07:00
2026-08-18 21:09:03 -07:00
2026-08-15 15:21:30 -07:00
2026-08-21 10:18:45 -07:00
2026-07-15 22:00:27 -07:00
2026-06-03 19:06:53 -07:00
2026-07-15 22:00:27 -07:00
2026-06-21 03:53:43 -07:00
2026-07-10 17:20:17 -07:00
2026-08-23 16:00:53 -07:00
2026-08-23 16:00:53 -07:00
2026-07-10 17:20:17 -07:00
2026-08-20 03:57:23 +00:00
2026-07-10 17:20:17 -07:00
2026-06-30 10:26:23 -07:00
2026-06-30 10:26:23 -07:00
2026-06-21 16:13:54 -07:00
2026-07-10 16:13:39 -07:00
2026-07-10 16:13:39 -07:00
2026-08-15 23:14:24 -07:00
2026-08-15 23:14:24 -07:00
2026-06-26 13:51:32 -07:00
2026-06-25 19:35:47 -07:00
2026-07-01 00:28:25 -07:00
2026-06-03 20:52:44 -07:00
2026-08-23 16:00:53 -07:00
2026-08-23 16:00:53 -07:00
2026-08-23 01:36:13 +00:00
2026-07-12 17:54:21 -07:00
2026-06-20 01:52:26 -07:00
2026-06-21 03:53:43 -07:00
2026-06-03 19:06:53 -07:00
2026-08-20 03:57:23 +00:00
2026-08-21 04:32:53 +00:00
2026-07-02 11:38:34 -07:00
2026-06-24 23:32:52 -07:00
2026-07-30 12:46:12 -07:00
2026-08-21 04:32:53 +00:00
2026-08-23 01:36:13 +00:00
2026-07-25 05:15:02 -07:00
2026-08-20 03:57:23 +00:00
2026-08-20 03:57:23 +00:00
2026-07-11 22:16:48 -07:00
2026-08-03 00:20:53 -07:00
2026-08-21 04:35:58 +00:00
2026-08-21 04:35:58 +00:00
2026-06-21 23:07:55 -07:00
2026-08-20 03:57:23 +00:00
2026-06-19 04:27:01 -07:00
2026-06-04 16:16:50 -07:00
2026-08-21 04:32:53 +00:00
2026-08-23 16:00:53 -07:00
2026-08-23 16:00:53 -07:00
2026-08-21 04:32:53 +00:00
2026-08-21 04:34:43 +00:00
2026-08-08 19:03:14 -07:00
2026-08-12 16:24:54 -07:00
2026-08-11 13:34:27 -07:00
2026-08-23 01:36:32 +00:00
2026-08-03 00:20:53 -07:00
2026-07-22 22:20:03 -07:00
2026-07-30 12:46:12 -07:00
2026-07-18 18:38:47 -07:00
2026-08-20 03:55:38 +00:00
2026-06-25 14:37:52 -07:00
2026-06-21 22:43:34 -07:00
2026-08-18 19:13:53 -07:00
2026-08-18 19:52:36 -07:00
2026-08-23 16:00:53 -07:00
2026-08-23 16:00:53 -07:00
2026-07-21 23:03:35 -07:00
2026-07-21 23:03:35 -07:00
2026-08-22 19:43:45 -07:00
2026-08-22 19:43:45 -07:00
2026-07-17 00:00:46 -07:00
2026-08-23 01:36:13 +00:00
2026-08-23 01:36:13 +00:00
2026-08-01 09:32:37 -07:00
2026-08-01 09:32:37 -07:00
2026-06-03 19:06:53 -07:00
2026-06-03 19:06:53 -07:00
2026-08-23 16:00:53 -07:00
2026-08-23 16:00:53 -07:00
2026-06-22 03:34:15 -07:00
2026-07-22 17:29:20 -07:00
2026-08-23 01:35:06 +00:00
2026-06-22 18:21:06 -07:00
2026-06-22 03:34:15 -07:00
2026-07-20 00:54:01 -07:00
2026-08-20 03:55:38 +00:00
2026-07-11 18:06:22 -07:00
2026-08-07 01:36:34 -07:00
2026-07-11 18:06:22 -07:00
2026-06-29 23:41:51 -07:00
2026-06-28 09:09:03 -07:00
2026-06-28 09:09:03 -07:00
2026-08-21 04:32:53 +00:00
2026-07-11 18:06:22 -07:00
2026-07-26 14:37:35 -07:00
2026-07-30 22:46:08 -07:00
2026-07-22 22:37:51 -07:00
2026-06-19 05:31:47 -07:00
2026-06-04 12:44:43 -07:00
2026-06-30 12:21:25 -07:00
2026-06-30 12:21:25 -07:00
2026-07-23 22:13:25 -07:00
2026-08-07 01:36:34 -07:00
2026-06-28 09:09:03 -07:00
2026-06-25 20:28:38 -07:00
2026-06-28 09:09:03 -07:00
2026-08-23 01:36:13 +00:00
2026-06-09 09:16:59 -07:00
2026-06-20 10:35:40 -07:00
2026-07-15 22:00:27 -07:00
2026-08-01 04:03:26 -07:00
2026-07-18 04:44:53 -07:00
2026-07-11 18:06:22 -07:00
2026-08-03 00:20:53 -07:00
2026-06-30 12:21:25 -07:00
2026-06-30 12:21:25 -07:00
2026-06-19 04:27:01 -07:00
2026-06-03 19:06:53 -07:00
2026-08-23 01:36:12 +00:00
2026-08-17 15:47:43 -07:00
2026-06-03 19:06:53 -07:00