{{--
Inbox workspace — three direct children inside this root:
1. Views column (w-60 shrink-0)
2. Ticket list column (w-80 shrink-0)
3. Conversation pane (flex-1 min-w-0)
The Conversation child renders the 4th column (right context)
inside the pane.
Width-collapse guards:
- root has `min-w-0 overflow-hidden` so flex children that
contain long text don't push the page wider than the
viewport.
- each fixed-width column has `shrink-0`.
- flex-1 columns also have `min-w-0`.
--}}
{{-- ─── Views column ───────────────────────────────────── --}}
{{-- ─── Ticket list column ─────────────────────────────── --}}
{{-- Width discipline — belt-and-braces:
• `w-72` sets width: 18rem (288px).
• `basis-72` sets flex-basis: 18rem so flex math can't
collapse the column even if a future ancestor changes
how `width:` interacts with flex.
• `shrink-0` is the load-bearing class — without it the
column could shrink to fit the conversation pane's
content under flex auto-shrink, "sliding" the ticket
list behind the conversation pane.
• `overflow-x-hidden` prevents long subject lines from
pushing horizontal scroll into the column.
`min-h-0` lets the inner scroll container shrink so the
ticket list scrolls instead of pushing the pagination bar
below the viewport.
Inline `style` is a final defence in depth — if Tailwind's
JIT misses w-72 / basis-72 for any reason, the literal CSS
still pins the column. The data-test attributes below let
WorkspaceTest assert the load-bearing classes survive
every refactor. --}}
{{-- Scroll wrapper: vertical only. `overflow-x-hidden` is the
load-bearing class — without it a long subject line or
customer name could push horizontal scroll and visually
"tuck" the list under the conversation pane. --}}
@forelse ($this->tickets as $ticket)
@php
$isSelected = $ticket->id === $this->selectedTicketId;
@endphp
{{-- Layout containment for the ticket-list row.
════════════════════════════════════════════
DEVTOOLS-STYLE DIAGNOSIS of the "list bleeds
under the conversation pane" regression:
Tailwind's `truncate` utility expands to
`overflow: hidden; text-overflow: ellipsis;
white-space: nowrap;`. Those three together
only clip text if the element's effective
display is BLOCK or INLINE-BLOCK. A bare
`` is `display: inline` — even when
it's a flex item, inline content boxes are
allowed to bleed beyond the flex item's
constrained width because the span itself
doesn't establish a containing block for
the overflow. The visible symptom is
exactly what the operator reported: the
customer name and store name "slide out
from under the column".
The fix is row-level: every text leaf that
needs to truncate is now a `
` (or has
an explicit `block` class), every flex row
carries `min-w-0`, every overflowing axis
is clipped at the row level so nothing can
escape the column's width — even if the
flex math has a momentary off-by-one
miscalculation.
════════════════════════════════════════════ --}}
@empty
{{ __('No tickets match these filters.') }}
@endforelse
{{ $this->tickets->links() }}
{{-- ─── Conversation pane (renders Conversation child) ── --}}
{{-- Explicit `h-full` + `min-h-0` + `min-w-0` + `overflow-hidden`
on the pane:
• `min-w-0` is the load-bearing class — without it, a long
unbroken token inside the conversation (a customer URL,
a tracking link, a `
` block) could push the pane's
min-content width above the available flex space and
squeeze the ticket-list column to the side / under
other content.
• `flex-1` lets the pane fill remaining horizontal space
after the views aside + ticket list have taken their
fixed widths.
• `overflow-hidden` clips any inner overflow at the pane
edge instead of letting it escape sideways onto the
ticket list.
The Conversation child relies on a definite parent height
to make the timeline's `flex-1 overflow-y-auto` actually
scroll — without `h-full` + `min-h-0` here, stretched-flex
height propagation through `` → workspace root →
pane is unreliable in some browsers and the timeline ends
up sizing to content. --}}
@if ($this->selectedTicketId !== null)
@else
{{ __('Select a ticket') }}
{{ __('Pick a conversation from the list to view its messages, customer context, and add internal notes.') }}