Skip to content

Item overview

Status: ✅ Implemented

Keep the key information about the item the user is working on — name, status, stock, price — always visible in a left-hand panel, while the rest of the page (charts, specifications, history) is organised in tabs.

On tabbed detail pages the identifying information lives in the first tab, so as soon as the user switches to “Reviews” they lose sight of what item they are looking at. Repeating the header in every tab wastes space and drifts out of sync.

Extend ItemOverview. The first component field is the key-info panel (left, sticky — it stays put while the right side scrolls); each component field annotated with @Panel becomes a tab.

@UI("/product/:id")
@Title("Ergonomic chair EC-200")
public class ProductOverview extends ItemOverview {
Markdown keyInfo = new Markdown("""
### Ergonomic chair EC-200
**SKU:** EC-200-BLK · **Stock:** 143 · **Price:** 349 €
""", null, null);
@Panel(title = "Sales")
Chart sales = Chart.builder().chartType(ChartType.bar) /* … */ .build();
@Panel(title = "Specifications")
Markdown specs = new Markdown("| Property | Value | …", null, null);
@Panel(title = "Reviews")
Markdown reviews = new Markdown("⭐⭐⭐⭐⭐ …", null, null);
}

Product overview

Override panelWidth() (default 22rem) to size the key-info panel.

What the Redwood item-overview-page template and its item-overview key-info pattern expose, and what Mateu gives you for them. The canonical page-header elements shared by every template are documented once in Page templates.

Legend: ✅ supported · 🟡 partial · — not supported · ⚪ deliberately out of scope

Redwood prop / slotMateu
Slot overview (key info)the first component field, sticky; width via panelWidth() (default 22rem)✅
Slot maincomponent fields annotated @Panel, rendered as tabs✅
overviewExpanded + spOverviewCollapse— the key-info panel is always expanded—
nextItem / previousItem + getPreviousNextItemsPeerNavigationSupplier → PeerNav✅
Redwood prop / slotMateu
itemTitle / itemSubtitlecompose them in the key-info panel — typically an EntityHeader, which the renderer hoists into the page header✅
photo {src}EntityHeader image / any component in the panel✅
badge {text, style: strong | subtle, position: leading | trailing}@BadgeInHeader / EntityHeader badges; no position control🟡
isFavorite + spExpand——
displayOptions {edit, share, favorite}— no built-in affordance bar; declare your own buttons—
Slots body / footerthe panel is a single component tree; compose a VerticalLayout🟡
spEdit / spShareyour own @Action methods behind declared buttons🟡

Use item overview for read-mostly detail pages where identity context matters across categories. If the user must edit the item, prefer AutoEditableView; if the categories must be visible simultaneously rather than tabbed, use the Foldout pattern; for a long single-flow page with an index, use @Toc + sticky sections.