Tessina UI
Tessina UI
GitHubIntroduction
InstallationUsageTheming
Components
ButtonIconButtonLinkSpinnerBadgeAvatarStatusChipShortcutSkeletonSurfaceProgressMeterRating
LabelFieldFieldsetCheckboxRadioSwitchSliderSelectComboboxSearchTextareaNumberFieldDate PickerTime PickerOTP InputFile UploadCalendar
AlertBannerToastTooltip
TabsAccordionCollapsibleBreadcrumbPaginationStepperSegmentedControlButtonGroupToggleButtonToggleGroupToolbarNavigation MenuMenubarBottom NavSidebar
Split ButtonFABDropdown MenuContextMenuCommandPopoverHoverCard
ContainerStackFlexGridAspectRatioSpacerCardCarouselDividerScroll Area
Table
ChatBubblePromptInputCodeBlock
ModalAlertDialogDrawerAction SheetTop Header MobileTop Header DesktopEmptyStateForm
Contributing
ComponentsLayout Blocks

Divider

A thin line that separates content. Horizontal or vertical, solid / dashed / dotted, five thickness sizes, tonal colours, optional inline label, and RTL support.

Playground

Installation

pnpm add @tessinaui/ui

Usage

import { Divider } from "@tessinaui/ui";
<Divider />

Showcase

Variants

VariantDescription
solidContinuous line. Default.
dashedEvenly spaced dashes.
dottedFine dotted pattern.

Orientations

OrientationNotes
horizontalSpans the full width of its container. Default.
verticalFills the container height; use inside a flex row with a defined height.

Tones

ToneTokenWhen to use
defaultborder-borderStandard on light/background surfaces. Default.
subtleborder/50Barely-there separation inside grouped content.
strongmuted-foregroundHeavier emphasis — section breaks, checkout summaries.
on-colorwhite/20For placement on bg-foreground / dark surfaces.

Labels

Pass label (or children) to render text between two flanking lines. Use labelPosition to control where the label sits on the axis.

<Divider label="or" />
<Divider label="Recently" labelPosition="start" />
<Divider label="Archive" labelPosition="end" />

Accessibility

By default Divider is decorative — it renders role="none" and isn't announced by screen readers. When the divider has semantic meaning (e.g. separating list sections, form groups), set decorative={false} to emit role="separator" and the correct aria-orientation.

<Divider decorative={false} />                     {/* semantic separator */}
<Divider decorative={false} orientation="vertical" /> {/* vertical separator */}

RTL

The divider uses logical CSS properties (border-inline-start) so vertical dividers flip correctly in right-to-left layouts. Pass dir="rtl" when you need explicit direction context (e.g. for label alignment).

<Divider label="أو" labelPosition="start" dir="rtl" />

API Reference

Divider

PropTypeDefaultDescription
orientation"horizontal" | "vertical""horizontal"Layout axis
variant"solid" | "dashed" | "dotted""solid"Line style
size"xs" | "sm" | "md" | "lg" | "xl""xs"Thickness: 1 / 2 / 3 / 4 / 6 px
tone"default" | "subtle" | "strong" | "on-color""default"Colour token applied to the rule
spacing"none" | "xs" | "sm" | "md" | "lg" | "xl""none"Margin along the orientation axis
labelReactNode—Inline label between two flanking lines
labelPosition"start" | "center" | "end""center"Where the label sits along the axis
decorativebooleantrueIf false, emits role="separator" + aria-orientation
dir"ltr" | "rtl"—Text direction
classNamestring—Extra classes on the root element

The component extends all standard div HTML attributes.

Carousel

Touch-friendly slider with multiple variants — slide, card/3D, fade, and free-scroll. Built on Embla Carousel with autoplay, loop, RTL, and vertical orientation support.

Scroll Area

A scrollable container with custom overlay scrollbars that do not steal layout space. Supports vertical, horizontal, and both-axis content with a neutral branded thumb, RTL, and a compound API for full control.

On this page

PlaygroundInstallationUsageShowcaseVariantsOrientationsTonesLabelsAccessibilityRTLAPI ReferenceDivider