Skip to content
v1.0.3

Divider

A thin rule that separates content. Horizontal by default, vertical for inline groups, or a centered label to break up a stack (e.g. "OR").

bash
jlds add divider

Usage

html
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/jarooda/jlds@main/registry/css/index.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/jarooda/jlds@main/registry/css/divider.css">

<hr class="jl-divider jl-divider--h" role="separator" />
vue
<script setup lang="ts">
import { Divider } from "@/components/ui/divider"
</script>

<template>
  <Divider />
</template>
tsx
import { Divider } from "@/components/ui/divider"

<Divider />

Vertical

Use orientation="vertical" for separating inline items. It stretches to its flex parent's height.

html
<div style="display: flex; align-items: center;">
  <span>Edit</span>
  <hr class="jl-divider jl-divider--v" role="separator" aria-orientation="vertical" />
  <span>Duplicate</span>
  <hr class="jl-divider jl-divider--v" role="separator" aria-orientation="vertical" />
  <span>Delete</span>
</div>
vue
<template>
  <div style="display: flex; align-items: center;">
    <span>Edit</span>
    <Divider orientation="vertical" />
    <span>Duplicate</span>
    <Divider orientation="vertical" />
    <span>Delete</span>
  </div>
</template>
tsx
<div style={{ display: "flex", alignItems: "center" }}>
  <span>Edit</span>
  <Divider orientation="vertical" />
  <span>Duplicate</span>
  <Divider orientation="vertical" />
  <span>Delete</span>
</div>

With a label

Pass a label (React/Vue) — or use the jl-divider--labeled element (HTML) — for a centered caption between two rules.

html
<div class="jl-divider jl-divider--labeled" role="separator">OR</div>
vue
<template>
  <Divider label="OR" />
</template>
tsx
<Divider label="OR" />

Props

React

Divider extends React.HTMLAttributes<HTMLElement>.

PropTypeDefaultDescription
orientation"horizontal" | "vertical""horizontal"Direction (ignored when label is set)
labelReact.ReactNodeCentered label; renders a labeled separator

Vue

PropTypeDefaultDescription
orientation"horizontal" | "vertical""horizontal"Direction (ignored when labeled)
labelstringCentered label text

Slots: default — label content (alternative to the label prop).

CSS classes (HTML)

ClassPurpose
.jl-dividerBase class — always required
.jl-divider--hHorizontal rule
.jl-divider--vVertical rule (stretches to flex parent height)
.jl-divider--labeledLabeled separator with rules on either side