Divider

The hairline. #1e1e1e, one pixel, everywhere.

v1.0.0·Updated Jul 8, 2026 · 10:45
Live Demo — Fully Interactive
A one-pixel hairline between blocks
Content above the line.
Content below the line.
Dashed variant

Configuration
Orientation
Style
Label

<Divider />
Behavior — The Engineering Contract
PropTypeNotes
orientationhorizontal · verticalA row rule, or an inline column rule
variantsolid · dashedContinuous or dashed hairline
labelstringCentred caption with a rule each side
elementhr · role=separatorSemantic where it divides content
insetbooleanIndent to align with content, not the edge

A Divider separates; it never emphasises. Reach for spacing first — add a line only when whitespace alone doesn't read as a break.

Anatomy
Or
1RuleA single #1E1E1E pixel, full width.
2LabelOptional mono caption breaking the rule.
Do's and Don'ts
✓ Do
Section one
Section two

Keep it one pixel and quiet. Let spacing do most of the work.

✕ Don't

Don't thicken or colour it for emphasis. That's not its job.

✓ Do
Or

Use a labelled divider to break auth flows and long lists.

✕ Don't



Don't stack rules with no content between. That's just noise.

In context: Examples
A · Menu groups
RenameDuplicate
Delete

Separating a destructive action in a menu.

B · Sign-in
Or continue with

Between a form and social sign-in options.

C · Toolbar
BoldItalicLink

Vertical rules grouping toolbar controls.

Measurements & Tokens
TokenValueRole
--divider#1E1E1EThe one hairline colour
--divider-dashed#2A2A30Dashed variant
--divider-h1pxAlways one pixel
--divider-label#565A62Caption colour, mono
--divider-gap14pxSpace around a label
--divider-vh≥ 22pxMin height of a vertical rule
Code
<hr class="o-divider" />
<hr class="o-divider o-divider--dashed" />

<div class="o-divider-label">Or</div>

<span class="o-divider--vertical"></span>