Page Header

One compact, Linear-style header strip for every in-app screen. Left: the title (Sharp Grotesk, 18px) with an optional parent breadcrumb above it — no subtitle. Right: a primary action plus secondary / icon actions (overflow past 3). Optional tabs / filters sub-rows. Sticky, with a hairline divider. Phase 1 of the layout harmonization — see the tech design.

Top-level destination

A sidebar root (Home, Assets, a dashboard). Title only — no breadcrumb, since the sidebar already shows location. One primary action.

Competitive intelligence

… page content scrolls under the (sticky) header …

Detail page (breadcrumb + actions)

A nested entity, Linear-compact: the breadcrumb trail is the header on one row, ending in the current entity as an emphasized leaf (the title). A favourite toggle as the trailing visual, icon-only utility actions, then the primary.

… page content scrolls under the (sticky) header …

With tabs sub-row

In-page navigation lives in the tabs slot as segmented pills (the app's pill language, like Linear) — not an underline. A divider sits below the title, so the tab sub-row reads as a distinct strip beneath it.

My issues

… page content scrolls under the (sticky) header …

With filters sub-row

The dashboards' channel / date / refresh chips fold into the filters slot — retiring the standalone FilterStrip.

Campaign spend

Meta · All campaignsLast 4 weeks
… page content scrolls under the (sticky) header …

Action overflow

Past 3 visible secondary actions the rest collapse into a “…” menu (Material 3 ceiling). Emphasis comes from the primary's fill, not the count.

Top creatives

… page content scrolls under the (sticky) header …

Breadcrumb (standalone)

Short trail

Chevron separators (Lucide 1.8px). The leaf is the current page — plain text, aria-current, never a link.

Long trail — truncated

Past 4 crumbs the middle collapses into a “…” menu; the first crumb and last two stay visible (Carbon / Primer).