Kodza

Tabs

Tabs with a pill (or a line) that slides to the chosen one, a panel that comes in from its side, and the full keyboard pattern.

Navigation No dependencies tabsnavindicatorkeyboard Added Oct 2025
/anim/tabs-component/ Fullscreen

With your AI

Just ask.

Say it to your AI. It gets the exact code below, not its best guess, and knows where it goes.

Split my product details into Kodza Tabs.

Not plugged in yet?
claude mcp add -t http kodza https://kodza.dev/api/mcp
Also in Codex, Cursor and VS Code.
kodza-tabs-component.html
<div class="kodza-tabs">
  <div class="kodza-tabs__list" role="tablist" aria-label="Component details">
    <span class="kodza-tabs__indicator" aria-hidden="true"></span>
    <button class="kodza-tabs__tab" type="button" role="tab" aria-selected="true">Preview</button>
    <button class="kodza-tabs__tab" type="button" role="tab" aria-selected="false">Code</button>
    <button class="kodza-tabs__tab" type="button" role="tab" aria-selected="false">Changelog</button>
  </div>
  <div class="kodza-tabs__panels">
    <div class="kodza-tabs__panel" role="tabpanel">
      <p>It moves, it fades, and it sits still for people who asked for less motion. Your designer will nod slowly.</p>
    </div>
    <div class="kodza-tabs__panel" role="tabpanel" hidden>
      <p>One HTML block, one CSS file, a few lines of JS. No build step was harmed in the making of this tab.</p>
    </div>
    <div class="kodza-tabs__panel" role="tabpanel" hidden>
      <p>v1.2 fixed the bug we shipped in v1.1. v1.3 will fix the one we shipped in v1.2.</p>
    </div>
  </div>
</div>

<div class="kodza-tabs kodza-tabs--line">
  <div class="kodza-tabs__list" role="tablist" aria-label="Notifications">
    <span class="kodza-tabs__indicator" aria-hidden="true"></span>
    <button class="kodza-tabs__tab" type="button" role="tab" aria-selected="true">All</button>
    <button class="kodza-tabs__tab" type="button" role="tab" aria-selected="false">Unread</button>
    <button class="kodza-tabs__tab" type="button" role="tab" aria-selected="false">Mentions</button>
  </div>
  <div class="kodza-tabs__panels">
    <div class="kodza-tabs__panel" role="tabpanel">
      <p>142 notifications. 140 of them are a bot telling you the build passed.</p>
    </div>
    <div class="kodza-tabs__panel" role="tabpanel" hidden>
      <p>Three unread. One is from your mum: she found the website.</p>
    </div>
    <div class="kodza-tabs__panel" role="tabpanel" hidden>
      <p>Nobody mentioned you. Enjoy the quiet while it lasts.</p>
    </div>
  </div>
  </div>

Checked

Checked before you paste.

Robots poked at it before you did. Every component goes through the same checks, and again each time it changes.

What ranLast run
Accessibilityaxe-core 4.10.2: the WCAG 2.1 A and AA rules, plus best practices. 0 issues
KeyboardThe Tab key gets there, and the focus ring shows when it does. Passed
Reduced motionTurn on reduced motion and what moved just appears. Nothing loops. Passed
Light and darkThe same checks on both themes, contrast included. Passed
WordPressPasted into Twenty Twenty-Five, Twenty Twenty-One, Astra, Blocksy, GeneratePress, Hello Elementor, Kadence and OceanWP. Nothing to flag. 8 / 8 themes
Robots checked this. A human with VoiceOver hasn't yet.
KeyboardPress them in the preview
On a tab
  • Shows the next or previous tab, round and round→/←
  • Shows the first or last tabHome/End
  • Skips the other tabs, on to the panelTab

More like this

More in Navigation