Separator
A visual divider between content sections or items.
Quick Start
<%= kiso(:separator) %>
Locals
| Local | Type | Default |
|---|---|---|
orientation: |
:horizontal | :vertical |
:horizontal |
decorative: |
Boolean |
true |
css_classes: |
String |
"" |
**component_options |
Hash |
{} |
Usage
Horizontal
The default orientation. Add spacing with css_classes:.
<div class="space-y-1">
<h4 class="text-sm font-medium leading-none">Kiso Components</h4>
<p class="text-sm text-muted-foreground">A UI component library for Rails.</p>
</div>
<%= kiso(:separator, css_classes: "my-4") %>
<div class="space-y-1">
<h4 class="text-sm font-medium leading-none">Built with Tailwind</h4>
<p class="text-sm text-muted-foreground">Semantic tokens, dark mode, no @@apply.</p>
</div>
Vertical
Use orientation: :vertical for inline dividers. The parent element needs
a fixed height and flex layout.
<div class="flex h-5 items-center space-x-4 text-sm">
<div>Blog</div>
<%= kiso(:separator, orientation: :vertical) %>
<div>Docs</div>
<%= kiso(:separator, orientation: :vertical) %>
<div>Source</div>
</div>
Examples
Between Cards
<%= kiso(:card) do %>
<%= kiso(:card, :content) { "First card" } %>
<% end %>
<%= kiso(:separator, css_classes: "my-6") %>
<%= kiso(:card) do %>
<%= kiso(:card, :content) { "Second card" } %>
<% end %>
Custom Classes
Use css_classes: to override styles. TailwindMerge resolves conflicts.
<%= kiso(:separator, css_classes: "my-8 bg-primary") %>
Theme
# lib/kiso/themes/separator.rb
Kiso::Themes::Separator = ClassVariants.build(
base: "bg-border shrink-0",
variants: {
orientation: {
horizontal: "h-px w-full",
vertical: "h-full w-px"
}
},
defaults: { orientation: :horizontal }
)
Accessibility
| Attribute | Value |
|---|---|
data-component |
"separator" |
role |
"none" (decorative) or "separator" (semantic) |
aria-orientation |
Set when decorative: false |
By default, the separator is decorative (role="none"). When it serves as a
meaningful boundary, set decorative: false to add role="separator" and
aria-orientation:
<%= kiso(:separator, decorative: false) %>