Skip to content

Separator

A 1px line that separates content. It’s a native <hr>, so it already has the separator role.

Install

import "elements-kit/ui/styles.css";
import "elements-kit/ui/separator/separator.css";

API

<hr class="x-separator" />
<hr class="x-separator" aria-orientation="vertical" data-size="2" />
AttributeValues
aria-orientationhorizontal (default), vertical
data-size1, 2, 3, 4 (default): the length
data-accentan accent line; --neutral-a6 without it

The class resets the <hr>’s native border and margin, so it doesn’t need unset.

Sizing

data-size sets the length. The line is always 1px thick.

data-sizelength
1--space-4 (16px)
2--space-6 (32px)
3--space-9 (64px)
4 (default)100%: the container’s width, or a vertical separator’s row height

The default is the full length, what an <hr> usually means.

Vertical

aria-orientation="vertical" turns it into a 1px column. At full length it stretches to a flex or grid row’s height, and on its own it’s one line tall. Sizes 1–3 give a fixed length, centered by the row’s align-items. The attribute also tells assistive technology the orientation.

<div style="display: flex; align-items: center; gap: 12px">
<button class="unset x-button" data-variant="borderless">Cut</button>
<hr class="x-separator" aria-orientation="vertical" data-size="2" />
<button class="unset x-button" data-variant="borderless">Copy</button>
</div>

Color

The line is --neutral-a6. With data-accent it’s --accent-a6: a bare data-accent uses the inherited accent, and data-accent="iris" picks a scale.

In a menu

Directly inside an x-menu, a horizontal separator is inset to the items’ text, with --space-2 above and below.

See also

  • Menu: separators between groups of items