From 130f7cff71e42db53c6d96ce6f3070ef085f3e1d Mon Sep 17 00:00:00 2001 From: Chaim Date: Tue, 30 Jun 2026 19:03:05 +0000 Subject: [PATCH] feat(case-ui): full-width tabs + parties popover + subject on title line MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Chair-requested refinements to the case banner: - Tabs now span the full band width via justify-between — wide gaps with the current 6 tabs, tightening as more are added (gap-2 no-overlap floor). - Parties moved out of the always-on header line into a "צדדים" Popover, so the band is shorter and the tab content sits higher on the page. - Case subject (title) moved up onto the case-number line in a smaller font, instead of its own line below. tsc --noEmit + eslint clean. Co-Authored-By: Claude Opus 4.8 (1M context) --- web-ui/src/app/cases/[caseNumber]/page.tsx | 4 +- web-ui/src/components/cases/case-header.tsx | 82 +++++++++++++-------- 2 files changed, 55 insertions(+), 31 deletions(-) diff --git a/web-ui/src/app/cases/[caseNumber]/page.tsx b/web-ui/src/app/cases/[caseNumber]/page.tsx index 179abcc..596d8a0 100644 --- a/web-ui/src/app/cases/[caseNumber]/page.tsx +++ b/web-ui/src/app/cases/[caseNumber]/page.tsx @@ -80,10 +80,12 @@ export default function CaseDetailPage({ ]; // V2 "segmented" tab strip (X17): each tab a pill, active = raised white card. + // Spread full-width via justify-between (chair request) — wide gaps with few + // tabs, tightening as more are added; gap-2 is the no-overlap floor. const tabsList = ( {tabDefs.map(([value, label, Icon]) => ( 0 || respondents.length > 0; const isBlam = data?.proceeding_type === 'בל"מ' || isBlamSubtype(data?.appeal_subtype); @@ -61,6 +60,12 @@ export function CaseHeader({ {data?.proceeding_type ?? "ערר"} {data?.case_number ?? "—"} + {/* case subject on the same line, smaller font (chair request) */} + {data?.title && ( + + {data.title} + + )} {data?.status && } {data?.archived_at && ( - {/* case title / subject under the heading */} - {data?.title && ( -

- {data.title} -

- )} - {/* parties line (mockup .parties) — clamped to 2 lines so a long list - of appellants/respondents doesn't grow the band; full text on hover. */} - {parties ? ( -

- {parties} -

- ) : data?.subject ? ( -

- {data.subject} -

- ) : null} - - {/* case actions — kept verbatim, moved into the band */} + {/* case actions — parties now live in a popover (chair request) so + they don't push the tab content down the page. */}
+ {hasParties && ( + + + + + + {appellants.length > 0 && ( +
+
+ עוררים +
+
    + {appellants.map((a, i) =>
  • {a}
  • )} +
+
+ )} + {respondents.length > 0 && ( +
+
+ משיבים +
+
    + {respondents.map((r, i) =>
  • {r}
  • )} +
+
+ )} +
+
+ )} {data?.case_number && (