// preview in
saved for every page

Separator

A thin line between groups of content or of buttons. Use it when spacing alone doesn't make the groups clear.

Built on Base UIPattern WAI-ARIA separatorClient componentSource ↗
minimal · light · #3fa34d
Workspace name and logo
Members, invitations and access levels
orientation

Installation

Set up Camaleo once (Installation), then import what you need. The skin you load styles it.

import { Separator } from "@camaleo/react";

Anatomy

One <div> with role="separator": 1px tall when horizontal, 1px wide when vertical. It has a data-slot you can target from CSS.

Examples

Every example is a real file you can copy. They all wear the skin, mode and brand from the bar above.

minimal · light · #3fa34d
Workspace name and logo
Members, invitations and access levels
Pro plan · $49.00 per month
Renews on 11/12/2026 with the Visa ending in 4242

Between stacked blocks

The line takes the full width of its parent. Space it with the parent's gap, so the gap above and below stays the same.

12 files
4.2 MB
Updated 10/28/2026

Between items in a row

With orientation="vertical" the line takes the height of the row. Use it for short facts that sit side by side, like file count and size.

Between groups of buttons

Split actions that do different kinds of things, like replying and deleting. For a real toolbar with arrow keys, use Toolbar and its own separator.

or

With a label, like "or"

Put the word between two separators with aria-hidden. Screen readers read "or" once, instead of "separator, or, separator".

Case study

How Vila Nova Design cut invoice errors by half

Only decoration

This short accent line adds no structure, so it gets aria-hidden and screen readers skip it. Keep the separator role for lines that really split content.

Pro plan · $49.00 per month
Renews on 11/12/2026 with the Visa ending in 4242

Changing with the layout

Click Side by side. When the blocks move into a row, switch the orientation too, so the line and aria-orientation follow the layout.

In context

Separators split menus, lists and panels into groups people can scan. These are whole pieces of UI you can copy, in the skin you picked.

Rodrigo Castro
rodrigo@acme.com
Account cardCard · Separator · Link · Button
Today, Oct 28
Marina approved invoice INV-4029
Yesterday, Oct 27
Paulo added 3 seats to the workspace
Activity by daySeparator
Sidebar sectionsSeparator

Guidelines

Billing
Invoices, payment method and tax details.
DoOne line between real groups.

A separator says "something new starts here". Use it where the topic changes.

Billing
Invoices, payment method and tax details.
Don’tLines stacked to make space.

Use margin or gap for space. Extra lines look like a bug and screen readers announce each one.

12 files
4.2 MB
DoLet a vertical line take the row's height.

Put it straight in a flex row. It stretches with the items, and you don't need to set a height.

12 files|4.2 MB
Don’tA pipe character as a divider.

Some screen readers say "vertical bar" between the items. Use a vertical separator instead.

Props

PropTypeDefaultDescription

Separator also takes the attributes of a <div>, like aria-hidden and style.

Styling hooks

Restyle it without forking: target the attributes, or set the tokens on a parent, a skin or the separator itself.

Attributes

data-orientationhorizontal · vertical

Tokens it reads

Color

--cml-border

Accessibility

—A separator doesn't take focus. Tab skips it.
Was this page helpful? · Edit this page on GitHub