Paste
lint passPaste is Twilio's open-source design system. Its design tokens ship as DTCG-friendly JSON (@twilio-paste/design-tokens), covering colours, typography, spacing, radii, shadows, and semantic aliases across default and dark themes. Paste's visual language is calm and highly legible, with a confident blue as the primary interactive colour and a strong emphasis on WCAG-compliant contrast.
best for: Customer engagement and communications products · Accessible SaaS and admin UIs · Teams that want a calm, token-driven blue system
## get the file
Actions## colors
- primary#006DFA
- on-primary#FFFFFF
- primary-strong#001489
- on-primary-strong#FFFFFF
- link#0263E0
- surface#FFFFFF
- on-surface#121C2D
- surface-variant#F4F4F6
- on-surface-variant#606B85
- border#8B93AA
- border-weak#CACDD8
- success#14B053
- warning#F47C22
- error#C72323
## typography
- displayInter · 2.5rem · 600 · lh 1.2
- heading-lgInter · 2rem · 600 · lh 1.25
- headingInter · 1.5rem · 600 · lh 1.3
- bodyInter · 1rem · 400 · lh 1.5
- body-smInter · 0.875rem · 400 · lh 1.45
- labelInter · 0.75rem · 500 · lh 1.4
- codeJetBrains Mono · 0.875rem · 400 · lh 1.5
## spacing
- xxs0.25rem
- xs0.5rem
- sm0.75rem
- md1rem
- lg1.25rem
- xl1.5rem
- 2xl2rem
- 3xl2.75rem
## shapes
- sm2px
- md4px
- lg8px
- full9999px
## component tokens
| component | property | value |
|---|---|---|
| button-primary | backgroundColor | {colors.primary} |
| textColor | {colors.on-primary} | |
| rounded | {rounded.md} | |
| padding | 12px 20px | |
| button-primary-hover | backgroundColor | {colors.primary-strong} |
| textColor | {colors.on-primary-strong} | |
| button-secondary | backgroundColor | {colors.surface} |
| textColor | {colors.primary} | |
| rounded | {rounded.md} | |
| padding | 12px 20px | |
| card | backgroundColor | {colors.surface} |
| textColor | {colors.on-surface} | |
| rounded | {rounded.lg} | |
| padding | {spacing.md} | |
| input | backgroundColor | {colors.surface} |
| textColor | {colors.on-surface} | |
| rounded | {rounded.md} | |
| padding | 12px 16px | |
| link | textColor | {colors.link} |
| divider | backgroundColor | {colors.border} |
| height | 1px | |
| divider-weak | backgroundColor | {colors.border-weak} |
| height | 1px | |
| badge-success | backgroundColor | {colors.success} |
| textColor | {colors.on-surface} | |
| rounded | {rounded.full} | |
| padding | 2px 8px | |
| badge-warning | backgroundColor | {colors.warning} |
| textColor | {colors.on-surface} | |
| rounded | {rounded.full} | |
| padding | 2px 8px |
## preview as an app
See these tokens as full screens — an approximation of the system's language, not its official components.
## raw file
DESIGN.md — view raw file
---
version: alpha
name: Paste
description: Twilio's design system — a calm, accessible, token-driven visual language led by a confident blue.
colors:
primary: "#006DFA"
on-primary: "#FFFFFF"
primary-strong: "#001489"
on-primary-strong: "#FFFFFF"
link: "#0263E0"
surface: "#FFFFFF"
on-surface: "#121C2D"
surface-variant: "#F4F4F6"
on-surface-variant: "#606B85"
border: "#8B93AA"
border-weak: "#CACDD8"
success: "#14B053"
warning: "#F47C22"
error: "#C72323"
typography:
display:
fontFamily: Inter
fontSize: 2.5rem
fontWeight: 600
lineHeight: 1.2
letterSpacing: -0.01em
heading-lg:
fontFamily: Inter
fontSize: 2rem
fontWeight: 600
lineHeight: 1.25
heading:
fontFamily: Inter
fontSize: 1.5rem
fontWeight: 600
lineHeight: 1.3
body:
fontFamily: Inter
fontSize: 1rem
fontWeight: 400
lineHeight: 1.5
body-sm:
fontFamily: Inter
fontSize: 0.875rem
fontWeight: 400
lineHeight: 1.45
label:
fontFamily: Inter
fontSize: 0.75rem
fontWeight: 500
lineHeight: 1.4
letterSpacing: 0.01em
code:
fontFamily: JetBrains Mono
fontSize: 0.875rem
fontWeight: 400
lineHeight: 1.5
rounded:
sm: 2px
md: 4px
lg: 8px
full: 9999px
spacing:
xxs: 0.25rem
xs: 0.5rem
sm: 0.75rem
md: 1rem
lg: 1.25rem
xl: 1.5rem
2xl: 2rem
3xl: 2.75rem
components:
button-primary:
backgroundColor: "{colors.primary}"
textColor: "{colors.on-primary}"
rounded: "{rounded.md}"
padding: 12px 20px
button-primary-hover:
backgroundColor: "{colors.primary-strong}"
textColor: "{colors.on-primary-strong}"
button-secondary:
backgroundColor: "{colors.surface}"
textColor: "{colors.primary}"
rounded: "{rounded.md}"
padding: 12px 20px
card:
backgroundColor: "{colors.surface}"
textColor: "{colors.on-surface}"
rounded: "{rounded.lg}"
padding: "{spacing.md}"
input:
backgroundColor: "{colors.surface}"
textColor: "{colors.on-surface}"
rounded: "{rounded.md}"
padding: 12px 16px
link:
textColor: "{colors.link}"
divider:
backgroundColor: "{colors.border}"
height: 1px
divider-weak:
backgroundColor: "{colors.border-weak}"
height: 1px
badge-success:
backgroundColor: "{colors.success}"
textColor: "{colors.on-surface}"
rounded: "{rounded.full}"
padding: 2px 8px
badge-warning:
backgroundColor: "{colors.warning}"
textColor: "{colors.on-surface}"
rounded: "{rounded.full}"
padding: 2px 8px
---
## Overview
Paste is Twilio's design system for building customer-engagement products. Its
character is calm and highly legible: generous whitespace, a restrained neutral
surface, and a single confident blue (`{colors.primary}`) carrying interaction.
Accessibility is foundational — colour pairings are chosen to meet WCAG AA, and
the type scale stays comfortable at reading sizes.
Use Paste when you want an accessible, product-focused interface that feels
composed rather than loud — dashboards, communications tooling, and settings-
heavy SaaS all fit its temperament.
## Colors
Paste centres on a decisive blue against a clean neutral field.
- **primary (`#006DFA`)** — the interactive blue. Primary buttons, active
states, focus. `{colors.on-primary}` (white) sits on it at AA contrast.
- **primary-strong (`#001489`)** — deep navy for hover/active on primary
surfaces and for high-emphasis moments; pair with `{colors.on-primary-strong}`.
- **link (`#0263E0`)** — inline text links; slightly deeper than primary so
links read clearly against body copy.
- **surface (`#FFFFFF`) / surface-variant (`#F4F4F6`)** — the page and a subtle
raised fill for cards, wells, and table zebra rows.
- **on-surface (`#121C2D`)** — primary text ink; **on-surface-variant
(`#606B85`)** — secondary and helper text.
- **border (`#8B93AA`) / border-weak (`#CACDD8`)** — control and divider lines;
use the weak variant for quiet separation.
- **success (`#14B053`) / warning (`#F47C22`) / error (`#C72323`)** — status
colours, reserved for feedback (validation, toasts, inline errors).
All text pairs above meet WCAG AA; verify any new pairing before adding it.
## Typography
Paste ships in the TwilioSans family; this file substitutes the metrically
similar open **Inter** for UI text and **JetBrains Mono** for code (the original
families are TwilioSansText, TwilioSansDisplay, and TwilioSansMono).
- **display / heading-lg / heading** — Inter Semibold for page titles and
section headers; step down through `{typography.display}` → `{typography.heading}`.
- **body / body-sm** — Inter Regular for reading and dense UI text; body copy
measures comfortably at `{typography.body}` with a 1.5 line height.
- **label** — Inter Medium, slightly tracked, for form labels, table headers,
and eyebrows.
- **code** — JetBrains Mono for inline code, snippets, and API values via
`{typography.code}`.
## Spacing & Layout
Spacing follows a soft 4px base (`{spacing.xxs}` = 0.25rem) growing through
`{spacing.md}` (1rem) to `{spacing.3xl}` (2.75rem). Card and form internals use
`{spacing.md}`; group gaps use `{spacing.xs}`–`{spacing.sm}`; section rhythm uses
`{spacing.2xl}`–`{spacing.3xl}`. Favour whitespace over rules; when a divider is
needed, use a hairline in `{colors.border-weak}`.
## Components
- **button-primary** — solid `{colors.primary}` fill with `{colors.on-primary}`
text and `{rounded.md}` corners; hover shifts to `{colors.primary-strong}`.
- **button-secondary** — `{colors.surface}` with a `{colors.border}` outline and
`{colors.primary}` label, for secondary actions.
- **card** — `{colors.surface}` on the page with `{rounded.lg}` corners and
`{spacing.md}` padding; separate with borders, not heavy shadows.
- **input** — `{colors.surface}` field, `{rounded.md}` corners, `{colors.border}`
outline; focus uses a `{colors.primary}` ring.
- **link** — `{colors.link}` text, underlined on hover.
- **badge-success** — pill (`{rounded.full}`) in `{colors.success}` for positive
status.
## Motion
Motion is quiet and functional: 150–200ms ease transitions on hover, focus, and
disclosure. Avoid decorative or ambient animation, and honour
`prefers-reduced-motion`.
## Do's and Don'ts
- **Do** keep `{colors.primary}` for interaction; **don't** use it for large
decorative fills or headings.
- **Do** rely on whitespace and `{colors.border-weak}` hairlines for structure;
**don't** stack heavy drop shadows.
- **Do** reserve `{colors.success}`, `{colors.warning}`, and `{colors.error}` for
status; **don't** use them as brand accents.
- **Do** set headings in the semibold display/heading scale; **don't** use the
serif or all-caps for body copy.
- **Do** keep `{colors.on-surface-variant}` for secondary text; **don't** drop
body text below AA contrast.
- **Do** render code in `{typography.code}`; **don't** mix mono and text families
in the same run.
## Agent Prompt Guide
When generating UI in the Paste style:
1. Reference tokens by name (`{colors.primary}`, `{spacing.md}`,
`{typography.body}`) — never hardcode raw values.
2. Every text/background pairing must pass WCAG AA; validate against the palette.
3. Default composition: `{colors.surface}` page → bordered `{colors.surface}`
cards → one `button-primary` action per view section.
4. Use `{colors.primary}` only for interaction; keep status colours for feedback.
5. Substitute proprietary fonts (TwilioSans → Inter / JetBrains Mono); never ship
proprietary font binaries.
6. If a needed token is missing, propose it in a PR — do not invent values.
## use it with your agent
target: CLAUDE.md · full guide →
# Fetch the design system file curl -fsSL https://api.agent-ds.oday-bakkour.com/v1/systems/paste/design.md -o DESIGN.md # CLAUDE.md — add: ## Design system Read ./DESIGN.md before writing or changing any UI. Use its tokens by name; never invent colors, radii, fonts, or spacing.
target: .cursor/rules/design-system.mdc · full guide →
# Fetch the design system file curl -fsSL https://api.agent-ds.oday-bakkour.com/v1/systems/paste/design.md -o DESIGN.md # .cursor/rules/design-system.mdc — add: --- description: Design system rules for all UI work globs: ["**/*.tsx", "**/*.css"] --- Read DESIGN.md at the repo root before generating UI. Reference its tokens by name; never invent values.
target: .kiro/steering/design-system.md · full guide →
# Fetch into Kiro's steering directory curl -fsSL https://api.agent-ds.oday-bakkour.com/v1/systems/paste/design.md \ -o .kiro/steering/design-system.md
target: global_rules.md · full guide →
# Fetch the design system file curl -fsSL https://api.agent-ds.oday-bakkour.com/v1/systems/paste/design.md -o DESIGN.md # global_rules.md — add: Before any UI change, read DESIGN.md at the repo root and use its design tokens exactly. Do not invent colors, type, spacing, or radii.
target: AGENTS.md · full guide →
# Fetch the design system file curl -fsSL https://api.agent-ds.oday-bakkour.com/v1/systems/paste/design.md -o DESIGN.md # AGENTS.md — add: ## UI & design system All UI follows ./DESIGN.md. Reference tokens by name; never invent colors, typography, spacing, or radii.
target: .github/copilot-instructions.md · full guide →
# Fetch the design system file curl -fsSL https://api.agent-ds.oday-bakkour.com/v1/systems/paste/design.md -o DESIGN.md # .github/copilot-instructions.md — add: When generating or editing UI, follow the design tokens and rules in DESIGN.md at the repository root. Never invent design values.
target: AGENTS.md · full guide →
# Fetch the design system file curl -fsSL https://api.agent-ds.oday-bakkour.com/v1/systems/paste/design.md -o DESIGN.md # AGENTS.md — add (OpenCode reads it at the repo root): ## UI & design system All UI follows ./DESIGN.md. Reference tokens by name; never invent colors, typography, spacing, or radii.
target: AGENTS.md · full guide →
# Fetch the design system file curl -fsSL https://api.agent-ds.oday-bakkour.com/v1/systems/paste/design.md -o DESIGN.md # AGENTS.md — add (pi loads it at startup; run /reload after editing): ## UI & design system All UI follows ./DESIGN.md. Reference tokens by name; never invent colors, typography, spacing, or radii.
## provenance
fetched 47 times · downloaded 0 times