{{-- M3's window size classes, live: the one this window is in, what each one changes, and the variants that key on them. The five cards light up through the variants themselves, so the page proves the compiled breakpoints rather than describing them. Then the layout components, and an example of each canonical layout — list-detail, supporting pane, feed — written as an application writes them, with the layout components and the md-* text classes and no Tailwind. Resize the window to watch each one change at its breakpoints. --}} @php $examples = [ 'List-detail' => <<<'BLADE'

Select a message to read it.

Below 840px the list gives way to this message, with a back button that returns you — and your focus — to the list. From 840px both panes show, the list 360px wide and 412px from 1200px.

BLADE, 'Supporting pane' => <<<'BLADE'

Three days by the lake in June: the train on Friday morning, two nights at the harbour, and a walk round the old town on Sunday before the train home.

From 840px the comments sit beside the proposal, 360px wide (412px from 1200px). Below it they are a bottom sheet docked to the window: press its handle to read them.

BLADE, 'Feed' => <<<'BLADE' The boats before the ferry. Every lane, twice. Colder than it looks. Cheese, mostly. Up to the ridge and back. Asleep by the second stop. BLADE, 'Surfaces, stacks, rows and grids' => <<<'BLADE'

lowest, outlined

low

high

highest

A row that stacks below 600px

Its middle item is hidden from 840px.

Widen the window past 840px and this goes.

BLADE, ]; @endphp

Layout

Widths are M3's window size classes and nothing else: compact below 600px, then medium: 600, expanded: 840, large: 1200 and extra-large: 1600, with max-medium: and friends for "below". Tailwind's sm:2xl: compile to nothing. Scripts read the same numbers from resources/js/breakpoints.js.

This window

Compact

below 600px

Medium

600–839px

Expanded

840–1199px

Large

1200–1599px

Extra-large

from 1600px

Class Navigation Panes Dialogs and sheets Margin
Compact Navigation bar; the rail opens as a modal One Full-screen dialogs, bottom sheets for choices, date pickers as dialogs 16px
Medium Collapsed navigation rail One Basic dialogs, docked search and pickers 24px
Expanded Navigation rail, collapsible; starts collapsed Two: <x-list-detail>, or <x-supporting-pane> at 360px Basic dialogs, side sheets 24px
Large Navigation rail, expanded by default Two; a fixed pane is 412px Basic dialogs, side sheets 24px
Extra-large Navigation rail, expanded Two, a third as a side sheet Basic dialogs, side sheets 24px

<x-scaffold> does all of this: resize this showcase and watch the bar, the rail and the content margin (--material-margin) change at 600, 840 and 1200px. A visitor who has chosen a rail width keeps it; until then the rail follows the class.

The layout components

M3 describes a layout as a scaffold of bars and rails around panes, and names three canonical layouts. These are those words as components, each taking as, hide-below and hide-from, and only the spacing tokens for a gap or padding:

  • <x-scaffold> — the bars, the rail and the FAB around the page (this showcase is one).
  • <x-pane> — a content region with M3's margins and its own app bar.
  • <x-list-detail> — a list and the detail of its selection: one pane below 840px, two from it.
  • <x-supporting-pane> — a focus pane and a pane beside it from 840px, below it or a bottom sheet before.
  • <x-feed> — cards in columns that multiply as the room grows, one column below 600px.
  • <x-surface> — a tonal region: a surface role, padding, a corner and an outline.
  • <x-stack>, <x-row> and <x-grid> — arrangement inside a pane.
  • @foreach ($examples as $title => $code) @endforeach