#641 Schedule cell polish: alignment + external text colour

- Attendees column no longer centres its content. AttendeeFlow's <ul>
  switched from justify-center to justify-start; AttendeeGroup header
  and subheading rows (both committed and pending) switched from
  text-center to text-start. Restores cell-start alignment (right in
  AR, left in EN) the user expected on fresh inline-add and on
  existing rows.
- External meetings now render the meeting title cell text and the
  attendee names in red (#b91c1c), matching the row tint family, in
  addition to the existing red background. Implemented by:
  * Conditional text-[#b91c1c] / text-[#0B1E3F] on the meeting <td>
    based on meeting.isExternal.
  * New optional `externalText` prop on AttendeeFlowSharedProps,
    threaded from AttendeesCell (derived from meeting.isExternal) and
    applied as a colour class on the AttendeeFlow root <ul> so all
    attendee names inherit red. Group headers and subheadings keep
    their neutral navy palette per scope.
- Non-external rows and the cancelled/highlighted white-on-red # cell
  are untouched. Print/PDF path reuses the same renderer so the red
  carries through automatically.
- No schema/API/migration changes. TS clean.

Files: artifacts/tx-os/src/pages/executive-meetings.tsx
This commit is contained in:
riyadhafraa
2026-05-25 12:54:19 +00:00
parent 32cac678bf
commit 19fd5cc445
@@ -4567,7 +4567,15 @@ function MeetingRow({
onSave={onSaveTitle}
ariaLabel={t("executiveMeetings.editMeetingTitle")}
dir={isRtl ? "rtl" : "ltr"}
className="font-medium leading-snug break-words"
// #641: pin to cell-start alignment (right in AR, left in EN)
// for the view-mode wrapper AND any inner `<p>` Tiptap saved —
// `safeHtml` keeps `style` attributes (so users can colour /
// size text), which means a stray `text-align: center` saved
// by the editor would otherwise leak into the cell. The
// `!` modifier outranks the inline style so the title always
// reads from the start of the cell regardless of what's
// stored.
className="font-medium leading-snug break-words text-start [&_p]:!text-start"
disabled={!canMutate}
testId={`em-edit-title-${meeting.id}`}
startInEditMode={autoEditTitle}