diff --git a/src/client/components/contextView.tsx b/src/client/components/contextView.tsx index ff7bf7f..4eb48de 100644 --- a/src/client/components/contextView.tsx +++ b/src/client/components/contextView.tsx @@ -509,8 +509,8 @@ export function makeContextView( {/* The head band splits into two rows: the session's shape beside the plugin card, then the two donut cards together. The sidebar panel drops the first row (context stats / plugin info pay off only on - the full-width tab) and keeps the donut row, whose container query - stacks the pair in the narrow pane. */} + the full-width tab); the rows' own flex-wrap stacks the pair in a + narrow pane at the shared 360px card floor. */} {inSidebar ? null : (
-
{compositionCard}{trendCard}
+
{compositionCard}{trendCard}
{/* `lc-col-browser` stretches the browser card to the left column's height; the /context modal, which draws its own stack, must stay content-sized. */} -
{browserCard}
+
{browserCard}
-
+
{t('events.title')}
diff --git a/src/client/components/donut.tsx b/src/client/components/donut.tsx index 4180a2b..d892269 100644 --- a/src/client/components/donut.tsx +++ b/src/client/components/donut.tsx @@ -80,7 +80,7 @@ export function makeDonut(kit: ViewKit): (props: DonutProps) => ReactElement { && arcs.some(a => a.key === props.hoverKey) return (
{ if (props.onHoverKey !== undefined) props.onHoverKey(null) }} > diff --git a/src/client/components/events.tsx b/src/client/components/events.tsx index c5dd9c4..bc02a9d 100644 --- a/src/client/components/events.tsx +++ b/src/client/components/events.tsx @@ -119,11 +119,15 @@ export function makeEventList(kit: ViewKit): (props: EventListProps) => ReactEle : EVENT_ICONS[ev.kind] || '•' // Key on the durable seq alone: the list renders newest-first, so a fresh event lands at index 0 // and an index-bearing key would shift EVERY existing row's key — a full-list remount on every push. + // Narrow cards (phone panes): the single-line row would crush the label and push the meta + // tail into a scrollbar, so the row wraps — the label's near-full-width basis keeps line 1 + // to icon + kind + label, and the meta tail folds onto line 2. The 92px basis reservation + // covers icon + gap + the widest kind chip (both locales) + gap. return ( -
+
{glyph} {t('kind.' + ev.kind)} - {label} + {label} {at !== null ? {at} : null} {ev.tokens ? ( diff --git a/src/client/components/fileCard.tsx b/src/client/components/fileCard.tsx index 322ca38..31b2734 100644 --- a/src/client/components/fileCard.tsx +++ b/src/client/components/fileCard.tsx @@ -156,7 +156,8 @@ export function makeFileCard(kit: ViewKit, settings: ContextSettings): Component ) : (
-
+ {/* The five purpose chips (labels + counts) overflow a ~300px card in English — flow the group to two lines. */} +
{chips.map(c => (