Prometheus Design System

Tokens

All design tokens extracted from the Prometheus v3 web UI.

Brand

brand-blue
rgb(34,139,230)
Primary action — Execute button fill, active nav button, tab underline, link color, focus ring, info-Alert icon/title. Mantine blue.6.
nav-slate
rgb(65,73,81)
Top header background — fixed across both themes. The product-brand anchor that keeps the global chrome visually stable when toggling theme.

Status

ok
ok · light
ok · dark
error
error · light
error · dark
info
info · light
info · dark

Surface

page-bg
rgb(255,255,255)
dark: rgb(36,36,36)
card-bg
rgb(255,255,255)
dark: rgb(36,36,36)
input-bg
rgb(255,255,255)
dark: rgb(46,46,46)
code-block-bg
transparent
dark: rgb(31,31,31)
badge-bg
rgb(241,243,245)
dark: rgb(52,58,64)
header-bg
rgb(65,73,81)
dark: rgb(65,73,81)
icon-button-bg
rgb(134,142,150)
dark: rgb(134,142,150)

Text

primary
rgb(0,0,0)
dark: rgb(201,201,201)
secondary
rgb(73,80,87)
dark: rgb(173,181,189)
muted
rgb(134,142,150)
dark: rgb(134,142,150)
inverted
rgb(255,255,255)
dark: rgb(255,255,255)
link
rgb(34,139,230)
dark: rgb(34,139,230)

Border

card
rgb(222,226,230)
dark: rgb(66,66,66)
input
rgb(206,212,218)
dark: rgb(66,66,66)
accordion-ok-left
rgb(140,233,154)
dark: rgb(47,158,68)
accordion-error-left
rgb(255,168,168)
dark: rgb(201,42,42)

Spacing

xs
4px
sm
8px
md
12px
lg
16px
xl
24px
2xl
32px

Layout semantics

TokenValue
header-height56px
control-height36px
icon-button-size32px
card-padding16px
alert-padding16px
table-cell-padding-y7px
table-cell-padding-x10px
badge-padding-x10px
tab-padding-y10px
tab-padding-x16px
primary-button-padding-x18px
accordion-left-border-width5px

Typography

Families

body-sans-apple-system, system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji'
All UI chrome — body text, buttons, labels, table cells, badge text. The Mantine default system stack.
monoui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace
Code blocks, inline code, label/flag identifiers. Canonical stack — replaces the bare 'monospace' keyword found on /config and /flags (INC-008).

Styles

The quick brown fox
heading/page
24px · 700 · lh 1.3
The quick brown fox
heading/card-title
18px · 600 · lh 1.4
The quick brown fox
heading/section
16px · 600 · lh 1.4
The quick brown fox
body/default
14px · 400 · lh 1.55
The quick brown fox
body/strong
14px · 700 · lh 1.55
The quick brown fox
label/button-primary
14px · 600 · lh 1.0
The quick brown fox
label/button-secondary
14px · 500 · lh 1.0
The quick brown fox
label/badge
11px · 700 · lh 1.0
The quick brown fox
code/block
16px · 400 · lh 1.5
The quick brown fox
code/inline
14px · 400 · lh 1.4

Border radius

none
0px
sm
4px
pill
1000px

Elevation

card
0 1px 3px rgba(0,0,0,0.05), 0 1px 2px rgba(0,0,0,0.10)

Breakpoints

TokenMin width
mobile480px
tablet768px
desktop1200px
wide1600px

Motion

Durations

TokenValue
fast100ms
base200ms
slow300ms

Easings

TokenCurve
ease-in-outcubic-bezier(0.4, 0, 0.2, 1)
ease-outcubic-bezier(0, 0, 0.2, 1)

CSS custom properties

Copy these into your stylesheet. All tokens are prefixed with --doc-.

VariableValueUsage
--doc-brand-bluergb(34,139,230)Primary action — Execute button fill, active nav button, tab underline, link color, focus ring, info-Alert icon/title. Mantine blue.6.
--doc-nav-slatergb(65,73,81)Top header background — fixed across both themes. The product-brand anchor that keeps the global chrome visually stable when toggling theme.
--doc-status-ok-bgrgb(211,249,216)status bg (light)
--doc-status-ok-textrgb(43,138,62)status text (light)
--doc-status-error-bgrgb(255,236,236)status bg (light)
--doc-status-error-textrgb(201,42,42)status text (light)
--doc-status-info-bgrgba(34,139,230,0.10)status bg (light)
--doc-status-info-textrgb(34,139,230)status text (light)
--doc-surface-page-bgrgb(255,255,255)surface (light)
--doc-surface-card-bgrgb(255,255,255)surface (light)
--doc-surface-input-bgrgb(255,255,255)surface (light)
--doc-surface-code-block-bgtransparentsurface (light)
--doc-surface-badge-bgrgb(241,243,245)surface (light)
--doc-surface-header-bgrgb(65,73,81)surface (light)
--doc-surface-icon-button-bgrgb(134,142,150)surface (light)
--doc-text-primaryrgb(0,0,0)text (light)
--doc-text-secondaryrgb(73,80,87)text (light)
--doc-text-mutedrgb(134,142,150)text (light)
--doc-text-invertedrgb(255,255,255)text (light)
--doc-text-linkrgb(34,139,230)text (light)
--doc-border-cardrgb(222,226,230)border (light)
--doc-border-inputrgb(206,212,218)border (light)
--doc-border-accordion-ok-leftrgb(140,233,154)border (light)
--doc-border-accordion-error-leftrgb(255,168,168)border (light)
--doc-spacing-xs4pxspacing scale
--doc-spacing-sm8pxspacing scale
--doc-spacing-md12pxspacing scale
--doc-spacing-lg16pxspacing scale
--doc-spacing-xl24pxspacing scale
--doc-spacing-2xl32pxspacing scale
--doc-layout-header-height56pxlayout
--doc-layout-control-height36pxlayout
--doc-layout-icon-button-size32pxlayout
--doc-layout-card-padding16pxlayout
--doc-layout-alert-padding16pxlayout
--doc-layout-table-cell-padding-y7pxlayout
--doc-layout-table-cell-padding-x10pxlayout
--doc-layout-badge-padding-x10pxlayout
--doc-layout-tab-padding-y10pxlayout
--doc-layout-tab-padding-x16pxlayout
--doc-layout-primary-button-padding-x18pxlayout
--doc-layout-accordion-left-border-width5pxlayout
--doc-radius-none0pxborder radius
--doc-radius-sm4pxborder radius
--doc-radius-pill1000pxborder radius
--doc-shadow-card0 1px 3px rgba(0,0,0,0.05), 0 1px 2px rgba(0,0,0,0.10)elevation

Domain lexicon

TermDefinitionUI surface
PromQLPrometheus Query Language — the expression language entered in the /query editor./query expression input
Scrape poolA logical grouping of scrape targets sharing the same job/discovery configuration. Drives the accordion grouping on /targets and /service-discovery./targets, /service-discovery (accordion items)
TargetA single endpoint Prometheus scrapes for metrics. Each renders one row inside its scrape-pool accordion./targets accordion rows
UP / DOWNBoolean health of a target's last scrape. UP renders as the ok status pill, DOWN renders as the error status pill./targets Health Status Badge
Alerting ruleA rule that emits an alert when its PromQL expression matches. Listed on /alerts./alerts
Recording ruleA rule that pre-computes a PromQL expression and stores the result as a new series. Listed on /rules./rules
LabelKey=value pair attached to a metric or target. Should always render in the Label Badge component./targets, /service-discovery, /tsdb-status
RelabelingServer-side label rewriting at scrape time. Disclosed via the 'show relabeling' link inside a /service-discovery panel./service-discovery
TSDBTime-series database — the storage layer. /tsdb-status surfaces head-block health and Top-N label statistics./tsdb-status
AlertmanagerExternal component that receives alerts from Prometheus. Discovery state shown on /alertmanager-discovery./alertmanager-discovery

Known gaps