App / Dashboard

Analytics dashboard for a subscription-metrics platform — MRR, ARR, churn, LTV, cohort retention. Inherits the marketing brand (Inter, -0.32px tracking, #000 ink, slate/periwinkle/tan/navy palette) and derives a charting + status scale for data-dense surfaces. Nine recurring archetypes are documented below as reusable component recipes, plus the shared sidebar / tabbed-report chrome.

Colors & Charting Palette

Brand slate (#7A87A2) and periwinkle (#D0DBF5) are the primary chart series; deep navy is the emphasis line; warm tan is a contrast segment. Status uses conventional green / amber / red so growth and churn read instantly.

Surfaces & Text

Page canvas
#F7FAFD
Surface / cards
#FFFFFF
Muted / header
#F1F5F9
Muted text
#666F88
Subtle text
#A1A6BD

Chart Series

Series 1 · slate
#7A87A2
Series 2 · periwinkle
#D0DBF5
Series 3 · navy
#192744
Series 4 · tan
#E4D3CB
Series 5 · muted
#636F8A

Status

Positive / Active
#16A34A
Warning / Trial
#D97706
Negative / Churn
#DC2626

Cohort Heatmap Ramp (low → high retention)

#F1F5F9 → #DCE5F8 → #C2D2F2 → #9FB4E4 → #6E86C0 → #3F5990 → #192744

Typography

Inter throughout at -0.32px tracking. KPI values run 32px/700 with tabular-nums; table headers are 12px uppercase muted; cells 14px.

RoleSizeLineWeight
Page title28px34px700
KPI value32px38px700
KPI label14px20px500
Card title16px24px700
Table header12px uppercase16px600
Table cell14px20px400
Caption / delta12px16px400–600

Layout

Sidebar width248px
Topbar height64px
Content padding24px 32px
Card gap16px
KPI gridrepeat(auto-fit, minmax(220px, 1fr))
Chart-card min-height320px
Table row height52px
Drawer width420px

Shared Chrome — Sidebar & Tabbed Report Nav

Left sidebar: workspace switcher up top, grouped nav with icons, a usage meter pinned to the bottom. Tabbed report nav sits under the page title for sub-reports.

Acme Inc ▾
▦ Dashboard
$ Revenue
◐ Retention
⚑ Customers
MTUs 1 / 50k
Upgrade Plan →
Revenue

Shared Chrome — Filter Toolbar

Date-range preset pills, granularity dropdown, a compare control, and a Configure affordance to rearrange cards. The active range pill goes solid black.

Today 7D 30D 3M 6M 12M Custom ⚙ Configure
Archetype 1 — Overview

KPI Stat Card

Big-number card: label + info icon, 32px tabular value, a delta badge (green up / red down), a width-spanning sparkline with start/end ticks, and an "Updated…" caption. The default landing surface.

Monthly Recurring Revenue i
$9.28M ▲ 4.2%
Updated 2h ago · May 1 – May 31
Net MRR Churn i
2.1% ▼ 0.6%
Updated 2h ago
Customer LTV i
$4,120 ▲ 1.8%
Updated 2h ago
Archetypes 2 & 6 — Composition / Financial combo

Chart Card

Title + per-card toolbar (info, expand, overflow), a chart body, and a footer caption. Stacked bars show MRR composition by plan/segment; an overlaid navy line shows growth. Legend chips below. Includes a zero/empty state.

MRR composition by segmentⓘ ⤢ ⋯
EnterpriseMid-marketSMB
Updated 2h ago · stacked by company segment
Products with MRRⓘ ⤢ ⋯
There are no products with MRR
Chart renders flat at 0 rather than hiding.
Empty / zero state
Archetype 3 — Retention

Cohort Heatmap Table

Triangular grid: rows are cohort start periods, columns are Month 0..N, cells shaded by retention intensity. Toggle between % and count; pair with a "Most retained" list and an Export CSV action.

%Count
Export CSV
CohortSizeM0M1M2M3M4
Jan 2026812 10082716358
Feb 2026934 100796860
Mar 20261,021 1008473
Apr 20261,140 10081
Archetype 4 — Revenue loss

Churn Breakdown

A KPI strip plus a cumulative chart with voluntary/involuntary series, and a plain-language narrative summary. Export Data lives top-right.

Revenue churn rate
2.1%
Revenue churned
$48.2K
Subscriptions churned
126

You lost $48,200 in MRR because of revenue churn this period, of which $31,400 was voluntary and $16,800 involuntary.

Archetype 5 — Mix

Donut & Segmented Bar with Legend List

Composition shown as a donut (subscription status) or a single segmented horizontal bar, each paired with a legend list giving value and percentage per segment.

Subscriptions
3,612
Active2,240 62%
Trial434 12%
Past due506 14%
Canceled432 12%
Card$182K 62%
ACH$59K 20%
Invoice$53K 18%
Archetype 7 — Records

Data Table

Sortable uppercase headers, leading avatar + name/email cell, numeric right-aligned columns, relative-time cells, status pills, a trailing row-action menu, a gear column-config, filter chips, search, and a pagination footer. No row striping.

Status: Active + Add filter Clear
CustomerPlanMRRLTVStatusJoined
AK
Anna Kovac
Enterprise$1,200$28,400 Active8 mo ago
MR
Marco Rossi
Pro$320$6,100 Trial3 d ago
JD
Jamal Dean
Pro$320$9,800 Past due1 yr ago
LS
Lena Sø
Starter$0$2,300 Canceled2 yr ago
Archetype 8 — Query builder

Segment Builder Row

Row-based builder with inline pill controls for event / property / operator / value / date, add-condition and add-group buttons, a "Valid segment" indicator, and Save / Discard.

who did Subscription created ▾ where Plan ▾ is ▾ Enterprise ▾ in the last 90 days ▾
+ Add condition + Add group ✓ Valid segment · 312 customers Discard Save segment
Archetype 9 — Side panel

Detail Drawer

Right-side drawer over a table row: identity header with copy, a key/value detail section, and a vertical activity timeline. Lets users drill in without leaving the list.

Customers
Anna Kovac · $1,200
Marco Rossi · $320 ◀ selected
Jamal Dean · $320
Marco Rossi
marco@finhub.co  ⧉ copy
PlanPro
MRR$320
LTV$6,100
StatusTrial
Trial started
3 days ago
Plan upgraded to Pro
3 days ago
Account created
5 days ago

Status Pills

Pill-shaped (32px radius) with a 6px leading dot in the status colour over a 10%-tint background. Used across tables, drawers, and donuts.

Active Trial Past due Canceled
.status-pill.active  { color: #16A34A; background: rgba(22,163,74,0.10); }
.status-pill.trial   { color: #D97706; background: rgba(217,119,6,0.10); }
.status-pill.canceled{ color: #DC2626; background: rgba(220,38,38,0.10); }
border-radius: 32px; padding: 3px 10px 3px 8px; font: 600 12px Inter;

Tailwind Reference

Drop the tailwind block from design-system-app.json into theme.extend and use these recipes verbatim. Set letter-spacing: -0.32px globally. The full set of recipes (sidebar, toolbar, KPI, chart, cohort, table, segment builder, drawer, status pills) ships in the JSON.

RecipeClass pattern
appShellmin-h-screen bg-bg-page text-fg-primary font-sans tracking-tight grid grid-cols-[248px_1fr]
sidebarItemflex items-center gap-2.5 px-5 py-2 text-sm text-fg-muted rounded-md hover:bg-bg-page data-[active=true]:bg-bg-muted data-[active=true]:text-fg-primary data-[active=true]:font-semibold
filterToolbarflex items-center gap-3 rounded-card bg-bg-surface border border-border-table px-3 py-2.5
dateRangePillrounded-control px-3 py-1.5 text-[13px] text-fg-muted hover:bg-bg-muted data-[active=true]:bg-fg-primary data-[active=true]:text-white
kpiCardrounded-card bg-bg-surface border border-border-card p-5 shadow-card flex flex-col gap-3
kpiValuetext-kpiValue tabular-nums
chartCardrounded-card bg-bg-surface border border-border-card shadow-card min-h-[320px] flex flex-col
cohortCellrounded-cell text-center p-2 text-fg-primary (bg from heat.0…6)
dataTablew-full border-collapse rounded-card overflow-hidden border border-border-card
tableRowh-[52px] border-t border-border-table hover:bg-bg-page
statusPillActiveinline-flex items-center gap-1.5 rounded-pill bg-status-positiveBg text-status-positive text-caption font-semibold px-2.5 py-0.5
drawerfixed right-0 top-0 h-screen w-drawer bg-bg-surface shadow-drawer flex flex-col transition-transform
builderPillinline-flex items-center rounded-control border border-border-input px-2.5 py-1.5 text-[13px]