Woodstock Docs
Design System

Borders and focus

The strokes that define boundaries, status, selection, and keyboard focus.

Borders and focus

Woodstock uses a one-pixel semantic border as its ordinary structural stroke. A stronger border or ring changes meaning—it is never decorative weight.

Stroke roles

TreatmentCurrent useMeaning
border border-borderInputs, cards, menus, and panel boundariesOrdinary containment.
border-b border-border / border-t border-borderHeaders, sheet edges, and section dividersStructural separation without making a new card.
border-primary with ring-1 ring-primarySelected entity/navigation itemCurrent selection.
border-activity-borderAgent activity bubble and agent badgeWork is in progress.
border-dangerDestructive controlA destructive action.
border-dashed border-borderDrop targets and empty import surfacesA place that receives something.
ring-2 ring-primary-softInputs and editable surfaces on focusKeyboard focus.

border-border/60 currently appears only in quiet diagnostic dividers. It remains an implementation exception; ordinary product boundaries use the full semantic border-border token.

Live specimens

Input boundary

Selected entity

Agent activity

Preparing a reply…

Drop target

Drop a file here

Focused field

Rules

  • Use border for a bounded surface and directional border utilities for a divider.
  • Keep ordinary strokes at one pixel. border-2 belongs only to an intentionally stronger status treatment.
  • Focus is visible with the primary border and soft two-pixel ring; never remove it without an equivalent accessible replacement.
  • Put color meaning behind the semantic roles from Colors, never a Tailwind palette shade in a product component.

On this page