Brik Design System
Build Standards

Prop Axes

The four shared prop names — size, status, variant, appearance — that any BDS component with overlapping visual concerns must use.

A prop is an axis when more than one component exposes it. Axis names belong to the system, not any single component. When adding a new pill, chip, or indicator, reuse the axis names below — never invent kind, style, or flavor.

The four axes

AxisValuesMeaningComponents
sizexs · sm · md · lg (indicators); tiny · sm · md · lg · xl (buttons)Physical dimensions on a shared scaleBadge, Tag, Chip, Button, IconButton, ServiceTag, Field, Sheet, most form controls
statuspositive · warning · error · info · progress · brandSemantic value judgment — which system color tier appliesBadge, Banner, Dot
variantcomponent-specific (see matrix)Shared prop name; meaning varies by componentChip, Button, IconButton, LinkButton, Card, ServiceTag
appearancesolid · subtle · outlineHow the shape is filled vs borderedBadge (solid / subtle), Tag (solid / subtle)

variant vs appearance

appearance describes fill. variant is the shared prop name — its meaning varies by component.

  • Interactive components (Chip, Button) use variant only. They have hierarchy to express.
  • Read-only indicators (Badge, Tag) use appearance only. Fill form is the only lever.

Never cross this boundary.

Why solid | subtle | outline (not dark | light)

dark | light was ambiguous with dark-mode theming. solid | subtle | outline names the fill form explicitly:

  • solid — filled background, typically saturated or neutral
  • subtle — tinted background, lower emphasis
  • outline — transparent background, visible border

Coverage matrix

Source of truth: manifest/component-axes.json — auto-generated via npm run typegen:axes (ADR-009). When the table and the manifest disagree, the manifest wins.

Componentvariantappearancesizestatus
Buttonprimary · outline · secondary · ghost · inverse · on-color · danger · danger-outline · danger-ghost · destructive · positive · selectedtiny · sm · md · lg · xl
LinkButtonshares ButtonVariantshares ButtonSize
IconButtonprimary · outline · secondary · ghost · inverse · danger · danger-outline · danger-ghost · destructive · positive · selectedshares ButtonSize
Chipprimary · secondarysm · md · lg
Cardoutlined · brand · elevated
ServiceTagtext · icon-text · iconsm · md · lg
Tagsolid · subtlexs · sm · md · lg
Badgesolid · subtlexs · sm · md · lgpositive · warning · error · info · progress · brand

Notes:

  • Chip appearance removed in v0.66 — Chip is interactive; emphasis lives on variant only.
  • Card variant encodes border/elevation style — not a hierarchy or fill axis. CardPreset (control · summary · display) is orthogonal to variant.
  • Badge outline appearance excluded — low contrast for status indicators.

TypeScript is the authoritative gate. Pass only values the component's declared union includes — never invent values. The manifest shows which types are exported.

  • Components — each component implements the axes documented here
  • Slot Vocabulary — slot names that pair with these axis props

On this page