<arc-sidebar> Overview
Guidelines
When to use
- Group related links under a SidebarSection with a descriptive heading
- Set the active prop on the link that matches the current route
- Keep section headings short — one to three words that name the category
- Place the Sidebar inside an AppShell or PageLayout for consistent layout
- Use a Drawer to present the Sidebar on narrow viewports
- Order sections by importance or frequency of use, most common first
When not to use
- Nest Sidebars inside each other — use sections and indentation instead
- Mark more than one link as active at the same time
- Use Sidebar for top-level site-wide navigation — prefer TopBar for that role
- Add more than eight to ten links per section; split large groups into sub-sections
- Omit headings on sections — unlabelled groups make navigation harder to scan
- Place actions (buttons, toggles) inside the Sidebar — it is for navigation links only
Features
- Collapsible sections with heading labels for grouped navigation
- Active link highlighting to indicate the current page
- Independent scroll region for deep navigation trees
- Composable with SidebarSection and SidebarLink sub-components
- Keyboard navigable with focus-visible indicators on every link
- Designed to integrate with AppShell and PageLayout for full-page chrome
- Responsive-ready — pairs with Drawer for mobile breakpoints
- Token-driven theming for background, border, and active-link colors
Preview
Usage
Layout and styling work without JavaScript via the HTML/CSS versions. Interactive features like events and state management require the Web Component or a framework wrapper.
<script type="module" src="@arclux/arc-ui"></script>
<arc-sidebar>
<arc-sidebar-section heading="Guide">
<arc-sidebar-link href="/docs/getting-started">Getting Started</arc-sidebar-link>
<arc-sidebar-link href="/docs/tokens">Design Tokens</arc-sidebar-link>
<arc-sidebar-link href="/docs/theming" active>Theming</arc-sidebar-link>
</arc-sidebar-section>
<arc-sidebar-section heading="Components">
<arc-sidebar-link href="/docs/components/button">Button</arc-sidebar-link>
<arc-sidebar-link href="/docs/components/card">Card</arc-sidebar-link>
<arc-sidebar-link href="/docs/components/modal">Modal</arc-sidebar-link>
</arc-sidebar-section>
</arc-sidebar> import { Sidebar, SidebarSection, SidebarLink } from '@arclux/arc-ui-react';
export function DocsSidebar() {
return (
<Sidebar>
<SidebarSection heading="Guide">
<SidebarLink href="/docs/getting-started">Getting Started</SidebarLink>
<SidebarLink href="/docs/tokens">Design Tokens</SidebarLink>
<SidebarLink href="/docs/theming" active>Theming</SidebarLink>
</SidebarSection>
<SidebarSection heading="Components">
<SidebarLink href="/docs/components/button">Button</SidebarLink>
<SidebarLink href="/docs/components/card">Card</SidebarLink>
<SidebarLink href="/docs/components/modal">Modal</SidebarLink>
</SidebarSection>
</Sidebar>
);
} <script setup>
import { Sidebar, SidebarSection, SidebarLink } from '@arclux/arc-ui-vue';
</script>
<template>
<Sidebar>
<SidebarSection heading="Guide">
<SidebarLink href="/docs/getting-started">Getting Started</SidebarLink>
<SidebarLink href="/docs/tokens">Design Tokens</SidebarLink>
<SidebarLink href="/docs/theming" active>Theming</SidebarLink>
</SidebarSection>
<SidebarSection heading="Components">
<SidebarLink href="/docs/components/button">Button</SidebarLink>
<SidebarLink href="/docs/components/card">Card</SidebarLink>
<SidebarLink href="/docs/components/modal">Modal</SidebarLink>
</SidebarSection>
</Sidebar>
</template> <script>
import { Sidebar, SidebarSection, SidebarLink } from '@arclux/arc-ui-svelte';
</script>
<Sidebar>
<SidebarSection heading="Guide">
<SidebarLink href="/docs/getting-started">Getting Started</SidebarLink>
<SidebarLink href="/docs/tokens">Design Tokens</SidebarLink>
<SidebarLink href="/docs/theming" active>Theming</SidebarLink>
</SidebarSection>
<SidebarSection heading="Components">
<SidebarLink href="/docs/components/button">Button</SidebarLink>
<SidebarLink href="/docs/components/card">Card</SidebarLink>
<SidebarLink href="/docs/components/modal">Modal</SidebarLink>
</SidebarSection>
</Sidebar> import { Component } from '@angular/core';
import { Sidebar, SidebarSection, SidebarLink } from '@arclux/arc-ui-angular';
@Component({
imports: [Sidebar, SidebarSection, SidebarLink],
template: `
<Sidebar>
<SidebarSection heading="Guide">
<SidebarLink href="/docs/getting-started">Getting Started</SidebarLink>
<SidebarLink href="/docs/tokens">Design Tokens</SidebarLink>
<SidebarLink href="/docs/theming" active>Theming</SidebarLink>
</SidebarSection>
<SidebarSection heading="Components">
<SidebarLink href="/docs/components/button">Button</SidebarLink>
<SidebarLink href="/docs/components/card">Card</SidebarLink>
<SidebarLink href="/docs/components/modal">Modal</SidebarLink>
</SidebarSection>
</Sidebar>
`,
})
export class DocsSidebarComponent {} import { Sidebar, SidebarSection, SidebarLink } from '@arclux/arc-ui-solid';
export function DocsSidebar() {
return (
<Sidebar>
<SidebarSection heading="Guide">
<SidebarLink href="/docs/getting-started">Getting Started</SidebarLink>
<SidebarLink href="/docs/tokens">Design Tokens</SidebarLink>
<SidebarLink href="/docs/theming" active>Theming</SidebarLink>
</SidebarSection>
<SidebarSection heading="Components">
<SidebarLink href="/docs/components/button">Button</SidebarLink>
<SidebarLink href="/docs/components/card">Card</SidebarLink>
<SidebarLink href="/docs/components/modal">Modal</SidebarLink>
</SidebarSection>
</Sidebar>
);
} import { Sidebar, SidebarSection, SidebarLink } from '@arclux/arc-ui-preact';
export function DocsSidebar() {
return (
<Sidebar>
<SidebarSection heading="Guide">
<SidebarLink href="/docs/getting-started">Getting Started</SidebarLink>
<SidebarLink href="/docs/tokens">Design Tokens</SidebarLink>
<SidebarLink href="/docs/theming" active>Theming</SidebarLink>
</SidebarSection>
<SidebarSection heading="Components">
<SidebarLink href="/docs/components/button">Button</SidebarLink>
<SidebarLink href="/docs/components/card">Card</SidebarLink>
<SidebarLink href="/docs/components/modal">Modal</SidebarLink>
</SidebarSection>
</Sidebar>
);
} <arc-sidebar>
<arc-sidebar-section heading="Guide">
<arc-sidebar-link href="/docs/getting-started">Getting Started</arc-sidebar-link>
<arc-sidebar-link href="/docs/tokens">Design Tokens</arc-sidebar-link>
<arc-sidebar-link href="/docs/theming" active>Theming</arc-sidebar-link>
</arc-sidebar-section>
<arc-sidebar-section heading="Components">
<arc-sidebar-link href="/docs/components/button">Button</arc-sidebar-link>
<arc-sidebar-link href="/docs/components/card">Card</arc-sidebar-link>
<arc-sidebar-link href="/docs/components/modal">Modal</arc-sidebar-link>
</arc-sidebar-section>
</arc-sidebar> <!-- arc-sidebar is hybrid — CSS handles layout, JS enhances interactivity -->
<arc-sidebar></arc-sidebar> API
| Prop | Type | Default | Description |
|---|---|---|---|
position | string | 'left' | Controls which side the sidebar appears on. Options: 'left', 'right'. Moves the border line to the opposite edge. |
active | string | '' | The href of the currently active sidebar link. Used to highlight the matching link with accent styling. |
collapsed | boolean | false | When true, collapses the sidebar to icon-only mode, hiding labels and reducing width. |
width | string | '280px' | Width of the sidebar. Accepts any CSS length value. |
glow | boolean | false | Enables an accent glow effect on the active sidebar link for enhanced visual emphasis. |
Events
| Event | Description |
|---|---|
arc-navigate | Fired when a sidebar link is clicked |
See Also
- Navigation Menu Horizontal navigation bar with hover-triggered dropdown sub-menus and full keyboard accessibility. Designed for marketing sites, documentation hubs, and product landing pages where top-level sections expand into categorised link lists.
- Drawer Slide-out panel with backdrop overlay, keyboard dismissal, and left/right positioning for off-canvas navigation, filters, and detail views.
- App Shell Full-page layout scaffold that composes a TopBar, Sidebar, and scrollable content area into a cohesive application frame. Handles responsive collapse, sidebar toggling, and optional table-of-contents rail out of the box.
- Top Bar Fixed header bar that anchors every page with a brand slot on the left, an optional center navigation area, and a right-aligned actions region for user controls, search, and settings.