PProfile Design Languageliving library

One design language,
every Profile screen.

The color roles, type, and components behind the Profile scheduler — laid out as a living reference. Everything here is the real production component and the real token value; nothing is a mockup. Flip the theme (top right) to see that light and dark are both first-class.

01 · Foundations

Color

Components name what a color means — a role like sch-accent or sch-late-soft — and the theme decides what it looks like. Swatch values below are read live from the rendered page, so they can never drift from what ships.

Surfaces & lines
sch-surface
page canvas
sch-card
cards, bars
sch-muted
chips, fills
sch-border
rules
sch-border-strong
hover
Text ramp
sch-text
primary
sch-text-2
secondary
sch-text-3
muted
sch-text-4
faint, labels
Action — brand blue (PMS 2145C)
sch-accent
THE action color
sch-accent-hover
hover
sch-accent-soft
selected wash
[#00b2e9]
brand cyan · highlight

Brand cyan #00B2E9 (PMS 299C) never carries text — it reads 2.5:1 against white, failing accessibility at any size. It stays a highlight: selection washes, focus rings, the logo block. Anything with text on it uses the blue above.

Status triads — base · soft fill · ink on the fill
sch-running
running
sch-running-soft
sch-running-text
sch-late
late · rush · down
sch-late-soft
sch-late-text
sch-warn
blocks · caution
sch-warn-soft
sch-warn-text
sch-info
live readings
sch-info-soft
sch-amber
est-done slip
02 · Foundations

Typography

Barlow — the brand's DIN OT substitute — for every word; JetBrains Mono for every number and code. Numerics are always mono with tabular figures, so columns of quantities align.

Line 4 runs 45120-CLR-40 tonight
Queue · 7 unplaced · 91,200 lbs
Post the draft when the plan is ready
Body text is 12–14px Barlow. It stays quiet so the numbers can talk: quantities, run numbers, timestamps and rates are all set in mono.
Section label · 10px · uppercase · tracked
Numerics — JetBrains Mono, tabular
8451218,240 lbs
845209,800 lbs
8453530,500 lbs
03 · Components

Buttons & actions

The base button from @profile-web/ui, plus the scheduler treatment: primary actions are the brand blue, and every action cluster reads Cancel · Secondary · Primary, left to right, with the primary top-right.

Scheduler actions
Standardized order — Cancel · Secondary · Primary
Post Line 4?
The floor sees the new order right away.
04 · Components

Form controls

Inputs, labels, checkboxes, menus and feedback from the ui package — themed once, reused everywhere.

Text input
Numeric fields take mono values; blank clears the override.
Checkbox
Menu
Toast — says what happens next
05 · Scheduler vocabulary

Status vocabulary

One vocabulary on every screen — green is running, red is late/rush/down, amber is caution, cyan is a quiet live reading, neutral is idle or closed. These are the production pill and badge components, not drawings of them.

Pills — soft fill + ink, dot optional
RunningDownBlockedLive CPMIdle
Line status
RunningIdleDown
Urgency
RushNormalLow
Run badges
U unposted changeNC no changeoverASAP flagged ASAPLATE past Mfg dueHOLD on holdSKIPPED skipped
06 · Scheduler vocabulary

Cards & metrics

Cards sit on the canvas with a hairline border and a whisper of shadow; the status bar is inset and rounded, never a flush edge. Stats are label-over-mono-value.

Metric
Rolls305
Lbs16,800
Hrs33.8
Ship8/24
84545SO-45455RushU
31102-CLR-3030x1500 1.50 Clear · Film
Rolls305
Lbs16,800
Hrs33.8
Ship8/24
07 · Scheduler vocabulary

Tables

Tracked uppercase headers in the faint text step, hairline row rules, quantities right-aligned in mono.

Run #ProductLineLbsEst done
8451231084-CLR-30L118,2408/23 14:53
8452031090-CLR-32L122,4008/25 13:35
8450828816-WHT-24L212,6008/22 23:09
08 · Rules

Principles

The short list every screen follows — each one is written down in docs/design/design-language.md, and the color rule is enforced by the build.

Roles, not hues
Components use sch-* tokens; a raw palette color fails the build. Reskins edit one file.
Cyan never carries text
Brand cyan is a highlight. Anything with text on it uses the brand blue ramp.
One status vocabulary
Green / red / amber / cyan / neutral mean the same thing on every screen.
Numbers are mono
Every quantity, code and timestamp sets in JetBrains Mono with tabular figures.
Both themes, always
Every role has a light and a dark value; nothing may assume one theme.
Cancel · Secondary · Primary
The action order never varies, and the primary sits top-right.
09 · Rules

Voice & tone

Plain, warm, and in the floor's vocabulary — pallets, rolls, lines, shifts. Say what happens next, not that an operation succeeded.

Empty state — sounds like Profile
Nothing on hold. Nice.
Empty state — doesn't
No records found. Please refine your search criteria.
Confirm — sounds like Profile
Post Line 4? The floor sees the new order right away.
Confirm — doesn't
Are you sure you want to perform this operation?
Toast — sounds like Profile
Posted · L4 on the floor at 08:24.
Toast — doesn't
Record has been successfully updated.