From 749189c364df4aae49d2a51a2c24d492855fe8a8 Mon Sep 17 00:00:00 2001 From: Alex Soffronow Pagonidis <237136924+alex-clickhouse@users.noreply.github.com> Date: Sun, 9 Aug 2026 17:39:36 +0000 Subject: [PATCH] Give notification body text the width of its card MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The status/type badges sat beside the text in a `shrink-0` column, so they held a fixed ~127px of a 330px row whatever the viewport. On a phone that left the body wrapping at 191px — a third of the card spent on two short chips, and prose breaking every four or five words. Below `sm` the badges take a row of their own above the title and the text gets the full card: body width goes 191px → 346px. Only spans move, so nothing changes about the tab order. Two things found alongside it: - the page scroll containers used `p-6`, so 48px of a 412px viewport went to padding before the card's own `p-4`. Now `p-4 md:p-6` on the three list pages. - the priority dot was centred against the whole title block, so a title long enough to wrap left the dot floating beside its second line rather than marking the first. Aligned to the top with a small offset. Desktop is unchanged: the badges stay beside the title from `sm` up. Refs #271 --- web/src/pages/NotificationsPage.tsx | 19 +++++++++++++------ web/src/pages/PlansPage.tsx | 2 +- web/src/pages/TasksPage.tsx | 2 +- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/web/src/pages/NotificationsPage.tsx b/web/src/pages/NotificationsPage.tsx index bfdc892d..1d267da2 100644 --- a/web/src/pages/NotificationsPage.tsx +++ b/web/src/pages/NotificationsPage.tsx @@ -194,10 +194,17 @@ function NotificationCard({ notif }: { notif: Notification }) {
-
-
-
- {priorityDot && } + {/* The badge column is shrink-0, so beside the text it costs a fixed + ~127px — over a third of the card on a phone, which left the body + wrapping at ~190px. Below `sm` the badges take a row of their own + above the title instead, and the text gets the full card width. */} +
+
+ {/* items-start, not items-center: a title long enough to wrap was + centring the priority dot against the whole block, leaving it + floating beside the second line. */} +
+ {priorityDot && }

{notif.title}

{notif.body && ( @@ -209,7 +216,7 @@ function NotificationCard({ notif }: { notif: Notification }) {

)}
-
+
{(notif.redelivery_count ?? 0) > 0 && ( -
+
{showSilences && } {loading ? (
Loading...
diff --git a/web/src/pages/PlansPage.tsx b/web/src/pages/PlansPage.tsx index 11fa6607..942f6260 100644 --- a/web/src/pages/PlansPage.tsx +++ b/web/src/pages/PlansPage.tsx @@ -83,7 +83,7 @@ export function PlansPage() { ))} /> -
+
{loading ? (
Loading...
) : plans.length === 0 ? ( diff --git a/web/src/pages/TasksPage.tsx b/web/src/pages/TasksPage.tsx index 646ebf80..e3447e6d 100644 --- a/web/src/pages/TasksPage.tsx +++ b/web/src/pages/TasksPage.tsx @@ -229,7 +229,7 @@ export function TasksPage() { // and no max-width — filling the viewport is the whole point. ) : ( -
+
{loading ? (
Loading...
) : tasks.length === 0 ? (