Separator
Visually divide content sections
Import
import { AvSeparatorImports } from '@avesra/angular';Usage
Avesra Components
Beautiful, fast and modern Angular UI library.
import { Component } from '@angular/core';
import { AvSeparatorImports } from '@avesra/angular';
@Component({
selector: 'app-separator-basic-demo',
imports: [AvSeparatorImports],
template: `<div class="max-w-md">
<div class="space-y-1">
<h4 class="text-sm font-medium text-foreground">Avesra Components</h4>
<p class="text-sm text-muted">Beautiful, fast and modern Angular UI library.</p>
</div>
<hr av-separator class="my-4" />
<div class="flex h-5 items-center gap-4 text-sm">
<span>Blog</span>
<div av-separator orientation="vertical"></div>
<span>Docs</span>
<div av-separator orientation="vertical"></div>
<span>Source</span>
</div>
</div>`,
})
export class SeparatorBasicDemo {}Anatomy
Use hr[av-separator] or div[av-separator] for a plain rule. For labeled dividers, compose div[av-separator-container], div[av-separator-line], and span[av-separator-content].
<!-- Simple divider -->
<hr av-separator />
<div av-separator orientation="vertical"></div>
<!-- Labeled compound divider -->
<div av-separator-container>
<div av-separator-line></div>
<span av-separator-content>Label</span>
<div av-separator-line></div>
</div>Variants
import { Component } from '@angular/core';
import { AvSeparatorImports } from '@avesra/angular';
@Component({
selector: 'app-separator-variants-demo',
imports: [AvSeparatorImports],
template: `<div class="flex max-w-md flex-col items-center gap-3">
<div>Default Variant</div>
<hr av-separator variant="default" />
<div>Secondary Variant</div>
<hr av-separator variant="secondary" />
<div>Tertiary Variant</div>
<hr av-separator variant="tertiary" />
</div>`,
})
export class SeparatorVariantsDemo {}With Surface
The Separator component adapts to different surface backgrounds for better visibility.
Default Surface
Surface Content
Secondary Surface
Surface Content
Tertiary Surface
Surface Content
Transparent Surface
Surface Content
import { Component } from '@angular/core';
import { AvSeparatorImports, AvSurfaceComponent } from '@avesra/angular';
@Component({
selector: 'app-separator-with-surface-demo',
imports: [AvSeparatorImports, AvSurfaceComponent],
template: `<div class="flex flex-col gap-8">
<div class="flex flex-col gap-2">
<div av-surface variant="default" class="flex min-w-[320px] flex-col gap-3 rounded-3xl p-6">
<h3 class="text-base font-semibold text-foreground">Default Surface</h3>
<hr av-separator />
<p class="text-sm text-muted">Surface Content</p>
</div>
</div>
<div class="flex flex-col gap-2">
<div av-surface variant="secondary" class="flex min-w-[320px] flex-col gap-3 rounded-3xl p-6">
<h3 class="text-base font-semibold text-foreground">Secondary Surface</h3>
<hr av-separator variant="secondary" />
<p class="text-sm text-muted">Surface Content</p>
</div>
</div>
<div class="flex flex-col gap-2">
<div av-surface variant="tertiary" class="flex min-w-[320px] flex-col gap-3 rounded-3xl p-6">
<h3 class="text-base font-semibold text-foreground">Tertiary Surface</h3>
<hr av-separator variant="tertiary" />
<p class="text-sm text-muted">Surface Content</p>
</div>
</div>
<div class="flex flex-col gap-2">
<div
av-surface
variant="transparent"
class="flex min-w-[320px] flex-col gap-3 rounded-3xl border border-border p-6"
>
<h3 class="text-base font-semibold text-foreground">Transparent Surface</h3>
<hr av-separator />
<p class="text-sm text-muted">Surface Content</p>
</div>
</div>
</div>`,
})
export class SeparatorWithSurfaceDemo {}Vertical
import { Component } from '@angular/core';
import { AvSeparatorImports } from '@avesra/angular';
@Component({
selector: 'app-separator-vertical-demo',
imports: [AvSeparatorImports],
template: `<div class="flex h-5 items-center gap-4 text-sm">
<span>Blog</span>
<div av-separator orientation="vertical"></div>
<span>Docs</span>
<div av-separator orientation="vertical"></div>
<span>Source</span>
</div>`,
})
export class SeparatorVerticalDemo {}With Content
Set Up Notifications
Receive account activity updates
Secure Your Account
Enable two-factor authentication
Launch Your Project
Create your first workspace
import { Component } from '@angular/core';
import { AvSeparatorImports } from '@avesra/angular';
interface SeparatorDemoItem {
iconUrl: string;
title: string;
subtitle: string;
}
@Component({
selector: 'app-separator-with-content-demo',
imports: [AvSeparatorImports],
template: `<div class="max-w-md space-y-4">
@for (item of items; track item.title; let last = $last) {
<div>
<div class="flex items-center gap-3">
<img [alt]="item.title" class="size-12" [src]="item.iconUrl" />
<div class="flex-1 space-y-0">
<h4 class="text-sm font-medium text-foreground">{{ item.title }}</h4>
<p class="text-sm text-muted">{{ item.subtitle }}</p>
</div>
</div>
@if (!last) {
<hr av-separator class="my-4" />
}
</div>
}
</div>`,
})
export class SeparatorWithContentDemo {
readonly items: SeparatorDemoItem[] = [
{
iconUrl: '/images/icons/icon-3d-alarm-clock-red.png',
title: 'Set Up Notifications',
subtitle: 'Receive account activity updates',
},
{
iconUrl: '/images/icons/icon-3d-shield-check.png',
title: 'Secure Your Account',
subtitle: 'Enable two-factor authentication',
},
{
iconUrl: '/images/icons/icon-3d-rocket-launch.png',
title: 'Launch Your Project',
subtitle: 'Create your first workspace',
},
];
}With Label
Compose container, line, and content parts for a labeled divider. Set orientation="vertical" on div[av-separator-container] for a vertical stack.
import { Component } from '@angular/core';
import { AvSeparatorImports } from '@avesra/angular';
@Component({
selector: 'app-separator-with-label-demo',
imports: [AvSeparatorImports],
template: `<div class="max-w-md space-y-6">
<div av-separator-container>
<div av-separator-line></div>
<span av-separator-content>OR</span>
<div av-separator-line></div>
</div>
<div av-separator-container orientation="vertical" class="mx-auto h-24">
<div av-separator-line></div>
<span av-separator-content>OR</span>
<div av-separator-line></div>
</div>
</div>`,
})
export class SeparatorWithLabelDemo {}Styling
Passing Tailwind CSS classes
Pass utility classes on the separator host — for example hr[av-separator] or div[av-separator].
Custom Separator
Pass Tailwind utilities on the host element.
import { Component } from '@angular/core';
import { AvSeparatorImports } from '@avesra/angular';
@Component({
selector: 'app-separator-custom-styling-demo',
imports: [AvSeparatorImports],
template: `<div class="max-w-md">
<div class="space-y-1">
<h4 class="text-sm font-medium text-foreground">Custom Separator</h4>
<p class="text-sm text-muted">Pass Tailwind utilities on the host element.</p>
</div>
<hr
av-separator
class="my-8 h-0.5 bg-linear-to-r from-transparent via-accent to-transparent"
/>
</div>`,
})
export class SeparatorCustomStylingDemo {}Customizing the component classes
To customize the Separator classes, use the @layer components directive. Learn more.
@layer components {
.av-separator {
@apply bg-accent h-[2px];
}
.av-separator--vertical {
@apply bg-accent w-[2px];
}
}Avesra follows the BEM methodology so component variants and states stay reusable and easy to customize.
CSS Classes
The Separator component uses these CSS classes:
Base & Orientation Classes
.av-separator— Base separator styles with default horizontal orientation.av-separator--horizontal— Horizontal orientation (full width, 1px height).av-separator--vertical— Vertical orientation (full height, 1px width)
Variant Classes
.av-separator--default— Default variant with standard contrast.av-separator--secondary— Secondary variant with medium contrast.av-separator--tertiary— Tertiary variant with subtle contrast
Compound Element Classes
.av-separator__container— Labeled separator wrapper.av-separator__line— Flex-grow line segment.av-separator__content— Center label or icon
API
Props for hr[av-separator] / div[av-separator]. div[av-separator-container] accepts the same orientation and variant inputs and shares them with child lines via context. div[av-separator-line] and span[av-separator-content] inherit when omitted.
| Prop | Type | Default | Description |
|---|---|---|---|
orientation | 'horizontal' | 'vertical' | 'horizontal' | The orientation of the separator. Inherits from av-separator-container when omitted (av-separator / av-separator-line / av-separator-content). |
variant | 'default' | 'secondary' | 'tertiary' | 'default' | The visual variant of the separator. Inherits from av-separator-container when omitted (av-separator / av-separator-line). |