Tabs
Tabbed interface for switching between content panels. Full keyboard navigation (Arrow keys, Home, End).
Default (pill style)
Section titled “Default (pill style)”<ac-tabs>
<div class="ac-tabs__list">
<button data-tab="overview">Overview</button>
<button data-tab="analytics">Analytics</button>
<button data-tab="settings">Settings</button>
</div>
<div data-panel="overview"><p>Overview content goes here.</p></div>
<div data-panel="analytics"><p>Analytics charts and data.</p></div>
<div data-panel="settings"><p>Settings and configuration.</p></div>
</ac-tabs> Underline variant
Section titled “Underline variant”<ac-tabs class="ac-tabs--underline">
<div class="ac-tabs__list">
<button data-tab="a">Account</button>
<button data-tab="b">Security</button>
<button data-tab="c">Billing</button>
</div>
<div data-panel="a"><p>Account settings.</p></div>
<div data-panel="b"><p>Security settings.</p></div>
<div data-panel="c"><p>Billing information.</p></div>
</ac-tabs> Boxed variant
Section titled “Boxed variant”<ac-tabs class="ac-tabs--boxed">
<div class="ac-tabs__list">
<button data-tab="d">All</button>
<button data-tab="e">Active</button>
<button data-tab="f">Archived</button>
</div>
<div data-panel="d"><p>All items shown here.</p></div>
<div data-panel="e"><p>Active items only.</p></div>
<div data-panel="f"><p>Archived items.</p></div>
</ac-tabs> JavaScript
Section titled “JavaScript”// Listen for tab changesdocument.querySelector('ac-tabs').addEventListener('ac-tab-change', (e) => { console.log('Active tab:', e.detail.tab); // → "overview"});- First tab is activated by default
- Pre-activate with
.is-activeon a tab button before JS initializes data-activeattribute on<ac-tabs>reflects the current tab name- Keyboard: ArrowLeft/Right navigate, Home/End jump to first/last