Skip to content

Dashboard page layout ​

A stats row, a pair of charts, an activity block, and a free-form slot for everything else.

Open in demo
Open in demo

Usage ​

Four slots, each with its own grid:

SlotGrid
statsOne column, two from sm, four from xl.
chartsOne column, two from lg.
activityFull width.
defaultNo grid. Lay it out yourself.

The stats row goes four-up at xl, not at lg. With a 256-pixel sidebar, a 1024-wide window leaves 646 for the row, which is 149 pixels a card, and a stat card needs roughly 240 before its figure fits beside the icon tile.

None of the thirteen dashboards that ship fills a named slot. Every one of them opens with DashboardGreeting and then lays its own rows out in the default slot, because the uneven splits of a richer dashboard cannot use a fixed two-column grid. The named slots are there for the straightforward case, and they are kept correct so the next dashboard does not inherit a wrong grid.

The header is optional ​

With no title and no header slots, no header is rendered at all. That is what the shipped dashboards rely on: they pass nothing and open with DashboardGreeting instead. Without the guard the header would draw an empty <h1> with the pin floating beside it.

API ​

Source: src/shared/components/common/pages/DashboardPageLayout.vue

Props ​

PropTypeDefaultDescription
titlestring—Forwarded to the page header. Omit it and the header is not rendered.

Emits ​

None.

Slots ​

SlotDescription
breadcrumbForwarded to the page header.
descriptionForwarded to the page header.
actionsForwarded to the page header.
statsThe KPI row.
chartsA two-column chart row.
activityA full-width block.
defaultFree-form rows, after the named blocks.

Accessibility ​

  • With no header, the page has no <h1> of its own, so give the first block a heading, which is what the dashboard greeting does.
  • Each block is spacing rather than a landmark, so give the cards inside them their own headings.