From 81529a391082bbe0c0b2fc8a2f107ed6652535a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Bombeck?= Date: Sun, 2 Aug 2026 18:04:26 +0200 Subject: [PATCH] Give the shared-record banner the inline-action row shape MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The strip is new this release and had not been checked against the design standards. It carried the shape §11 names as the anti-pattern: a centred flex-wrap row whose gap-y drops the action onto its own line once the name is long enough. The maintainership strip is the sibling that already had an action and already had the right shape, so the two now read the same — sentence on min-w-0 flex-1, way out on shrink-0, beside it rather than under it. The exit control was a 32px tap target. Leaving somebody else's record on a phone is the one interaction in the whole banner stack, and it now carries the standard's floor (min-h-11 sm:min-h-9). The three strips also spell their icon size three ways for identical CSS; they all use size-3.5 now. Text tiers are unchanged and were already right: the person's name is foreground because it is content, the read-only qualifier is muted because it is meta. --- src/components/i18n/maintainership-banner.tsx | 4 +- src/components/layout/demo-banner.tsx | 2 +- src/components/layout/offline-banner.tsx | 2 +- .../layout/shared-record-banner.tsx | 44 +++++++++++++------ 4 files changed, 34 insertions(+), 18 deletions(-) diff --git a/src/components/i18n/maintainership-banner.tsx b/src/components/i18n/maintainership-banner.tsx index 9e092a944..d4f3f9dc1 100644 --- a/src/components/i18n/maintainership-banner.tsx +++ b/src/components/i18n/maintainership-banner.tsx @@ -97,7 +97,7 @@ export function MaintainershipBanner() { data-testid="maintainership-banner" className="border-border bg-muted/40 text-muted-foreground flex items-start gap-2 border-b px-4 py-2 text-xs sm:items-center" > - +

{t("i18n.maintainershipBanner.notice")}{" "} - + ); diff --git a/src/components/layout/demo-banner.tsx b/src/components/layout/demo-banner.tsx index af0b3f123..302854a86 100644 --- a/src/components/layout/demo-banner.tsx +++ b/src/components/layout/demo-banner.tsx @@ -31,7 +31,7 @@ export function DemoBanner() { data-slot="demo-banner" className="bg-primary/10 border-primary/30 text-foreground flex items-center justify-center gap-2 border-b px-3 py-2 text-xs" > -

+ + {t("recordSharing.banner.viewing", { name })} + {" "} + {/* Resolved server-side. `canWrite` is false for every grant in v1, and + the day it is not, this line stops claiming otherwise on its own. */} + {!active.canWrite && ( + + {t("recordSharing.banner.readOnly")} + + )} +