Glin UI
Primitive / Atom

Separator

Visual divider for grouping content with orientation support.

Edit on GitHub
OverviewActivitySettings
Subtotal$148.00
Shipping$12.00
Total$160.00

Installation

Install from
pnpm dlx @glinui/cli@latest add separator

Prefer the package?

Usage

Variants

Omitted `variant` follows the ambient style: an engraved glinr hairline, a flat plain line, or glass.

glinr
plain
hairline
gradient
dashed
dotted
glass
import { Separator } from "@glinui/ui"
<Separator />
<Separator variant="plain" />
<Separator variant="hairline" />
<Separator variant="dashed" />

Variants

import { Separator } from "@glinui/ui"

export function SeparatorVariantDemo() {
  return (
    <div className="space-y-4">
      <Separator variant="default" />
      <Separator variant="glass" />
      <Separator variant="outline" />
      <Separator variant="ghost" />
    </div>
  )
}

Vertical

Render inside a flex container with an explicit height to display a vertical divider.

import { Separator } from "@glinui/ui"

export function SeparatorVerticalDemo() {
  return (
    <div className="flex h-8 items-center gap-4">
      <span className="text-sm">Left</span>
      <Separator orientation="vertical" />
      <span className="text-sm">Right</span>
    </div>
  )
}

Sizes

import { Separator } from "@glinui/ui"

export function SeparatorSizeDemo() {
  return (
    <div className="space-y-4">
      <Separator size="sm" />
      <Separator size="md" />
      <Separator size="lg" />
    </div>
  )
}

Decorative vs Semantic

By default separators are decorative (`aria-hidden`). Set `decorative={false}` for separators that carry structural meaning for assistive technology.

import { Separator } from "@glinui/ui"

export function SeparatorDecorativeDemo() {
  return (
    <div className="space-y-4">
      <div className="space-y-2">
        <p className="text-xs text-neutral-500 dark:text-neutral-400">decorative (default)</p>
        <Separator decorative />
      </div>
      <div className="space-y-2">
        <p className="text-xs text-neutral-500 dark:text-neutral-400">semantic</p>
        <Separator decorative={false} />
      </div>
    </div>
  )
}

Hairline

A 1px divider that fades out at both ends, lit from the top.

import { Separator } from "@glinui/ui"

export function Demo() {
  return <Separator variant="hairline" />
}

Accessibility

  • Uses `role="separator"` when not decorative.
  • Set `decorative={false}` for semantic separators.
  • Use `decorative={false}` for separators that convey structural meaning.
  • Use `orientation="vertical"` for column-like content splits.

ARIA Attributes

  • `role="separator"` when not decorative
  • `aria-orientation`
  • `aria-hidden` when decorative

Reduced Motion

No animation dependencies.

Separator is a static element and does not use motion.

API Reference

PropTypeRequiredDefaultDescription
variantVariantProps<typeof lineVariants>["variant"]Noambient (glinr)Line style. Omitted or `default` follows the ambient design style.
orientation"horizontal" | "vertical"NohorizontalDivider direction.
size"sm" | "md" | "lg"NomdThickness.
labelstringNo-Centered text label displayed on the separator.
iconReact.ReactNodeNo-Centered icon displayed on the separator.
decorativebooleanNotrueWhen true, sets aria-hidden.

Source

Import directly from the package or browse the source on GitHub. Click any file to view it.

Import

import { Separator } from "@glinui/ui"

Source Files

Dependencies

@glinui/ui

Generated API Snapshot

Beta

Auto-extracted from TypeScript source in packages/ui/src/components/separator.tsx. This section is in beta and may lag behind hand-curated docs. Regenerate with pnpm --filter @glinui/docs api:generate.

Generated: 2026-10-08T01:41:21.546Z · Full index: /docs/api-metadata

Primary Props Type

SeparatorProps

SeparatorProps

PropTypeRequiredDefaultDescription
decorativebooleanNotrueWhen true the element is purely visual (default). When false, role="separator" is applied.
iconReact.ReactNodeNo-Icon node rendered centred on the separator line. Overrides label when both are provided.
labelstringNo-Text label rendered centred on the separator line.
orientation"horizontal" | "vertical"No"horizontal"Variant option from lineVariants.
size"sm" | "md" | "lg"No"md"Variant option from lineVariants.
variantVariantProps<typeof lineVariants>["variant"]No-Line style. Omitted (or `default`) follows the ambient design style: glinr (engraved hairline), plain (flat 1px border color) or glass. Other names are fixed styles.