Overview
The six cards of the default overview on the grid, live, with the figures of one day: Tuesday, May 12, 2026. Change a unit, turn a week, read a day of shipments; narrow the window and the columns follow the reading order of the desktop layout.
Live
Orders
Open total6,720 plt
May 2026
- 1,420 pltshipped
- 80 plton hold
- 1,100 pltpending
June 2026
- 1,500 pltshipped
- 160 plton hold
- 1,100 pltpending
New order
Daily shipments
Month to date4,485 plt
May 2026
- Today
- 350 plt
- Yesterday
- 370 plt
- This month
- 4,485 plt
- Returns
- 40 plt
Balance
Total balance3,900,000.00 USD
Overdue
2,230,800.00 USD
57.2%
Due today
46,800.00 USD1.2%
Deliveries
May 2026
May 12TuesdayTotal 415 plt
- 04-118BDelivered
- 04-121ADelayed
- 04-127CDelayed
- 04-130ADelivered
Recurring orders, quick action
Selected products1
- Packaging CB-4030BoxStock: 380 plt
- Packaging SF-2300RollStock: 560 plt
SF-2000410 plt- Packaging KP-1200RollStock: 210 plt
- Packaging EP-5050UnitStock: 940 plt
- Packaging CB-2010BoxStock: 640 plt
- Packaging SF-1700RollStock: 320 plt
- Packaging TS-1210UnitStock: 150 plt
- Packaging SB-1200RollStock: 480 plt
Inventory
Total2,800 plt
840 plt1,960 plt On holdAvailable
Code: a self-contained version
/* The overview: cards on a grid of columns, each as tall as its size. The grid tokens follow the window */
import { Card, CardLink } from '@orbex/sonar-components/card'
import '@orbex/sonar-components/card.css'
const columns = [
[
{ id: 'orders', title: 'Orders', size: 'm', figure: ['Open total', '3,940 plt'] },
{ id: 'inventory', title: 'Inventory', size: 's', figure: ['Total', '2,800 plt'] },
],
[
{ id: 'deliveries', title: 'Deliveries', size: 'l', figure: null },
{ id: 'balance', title: 'Balance', size: 'm', figure: ['Balance', '3,900,000 USD'] },
],
[
{ id: 'shipments', title: 'Daily shipments', size: 'xl', figure: ['Month to date', '4,485 plt'] },
{ id: 'recurring', title: 'Recurring orders', size: 'l', figure: null },
],
] as const
export function Overview() {
return (
<div
style={{
display: 'grid',
gridTemplateColumns: 'repeat(var(--sonar-layout-columns), minmax(0, 1fr))',
gap: 'var(--sonar-layout-gap)',
alignItems: 'start',
}}
>
{columns.map((cards, index) => (
<div key={index} style={{ display: 'grid', gap: 'var(--sonar-layout-gap)' }}>
{cards.map(({ id, title, size, figure }) => (
<Card key={id} id={`card-${id}`} title={title} size={size} summary={figure ? { label: figure[0], value: figure[1] } : undefined} footer={<CardLink href={`/${id}`}>Go to {title}</CardLink>}>
{/* The card’s content */}
</Card>
))}
</div>
))}
</div>
)
}
Rules
- One overview, arranged once. People arrange it on a desktop; tablets and phones read that arrangement in order. See Breakpoints and grid.
- Columns end level. Card heights are chosen so that M + L = S + XL, and the default overview keeps a straight bottom edge.
- What matters most goes first. Orders and Daily shipments open the reading order because they are what people check every morning.
- Every card leads somewhere. The overview never becomes the place where work is done; it says where to go.
- Units are per card. Pallets, kilograms or items are chosen in each card, because each team counts differently.