diff --git a/src/components/buyer-tasks/buyer-task-group-card.tsx b/src/components/buyer-tasks/buyer-task-group-card.tsx index 81a23b8..9d72504 100644 --- a/src/components/buyer-tasks/buyer-task-group-card.tsx +++ b/src/components/buyer-tasks/buyer-task-group-card.tsx @@ -67,17 +67,25 @@ export function BuyerTaskGroupCard({ /> -
+ {/* On mobile the action column drops below the info column so + neither gets crushed — the PO number badge no longer wraps + mid-number and the buttons get full-width tap targets. On + `sm:` and up the original side-by-side layout returns. */} +
{/* PO number + order number on the top row so they're both scannable. The PO number is the headline — the thing the operator needs to find quickly — so it goes first and gets its own visual weight. Only shown when - a PO has been generated (po_draft / po_sent tabs). */} + a PO has been generated (po_draft / po_sent tabs). The + badge uses `whitespace-nowrap` so a long PO number + (`PO-26071401`) never breaks mid-string when the info + column gets narrow — the parent `flex-wrap` carries + it onto the next line as a whole. */}
{group.poNumber && ( @@ -88,7 +96,7 @@ export function BuyerTaskGroupCard({ {group.orderNumber} -
+ // + // Mobile (below `sm:`): the buttons stack vertically and + // stretch to the full card width so the tap target is easy + // to hit; the caption aligns left to sit under the buttons + // naturally. On `sm:` and up the original side-by-side + // button row + right-aligned caption returns. +
+
{group.emailPayload?.sentAt ? (
{group.emailPayload.to ? ( @@ -169,12 +187,16 @@ export function BuyerTaskGroupCard({ ) : null}
) : ( - // needs_po / po_draft: single button (unchanged behaviour). + // needs_po / po_draft: single button. On mobile the button + // stretches full-width below the info column (better tap + // target, gives the info column all the available width); + // on `sm:` it sits inline to the right of the info.