Kodza

Sheet

A panel that slides in from the right, and on phones rises from the bottom as a sheet you drag, with half and full stops and a flick to dismiss.

Overlays No dependencies sheetdrawerdialogmobile Added Jan 2026
/anim/drawer/ 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.

Open my cart in a Kodza Sheet.

Not plugged in yet?
claude mcp add -t http kodza https://kodza.dev/api/mcp
Also in Codex, Cursor and VS Code.
kodza-drawer.html
<div class="kodza-sheet">
  <button class="kodza-sheet__trigger" type="button">Cart <span class="kodza-sheet__badge">3</span></button>
  <dialog class="kodza-sheet__panel">
    <div class="kodza-sheet__grip" aria-hidden="true"><span></span></div>
    <header class="kodza-sheet__head">
      <h2 class="kodza-sheet__title">Your cart</h2>
      <button class="kodza-sheet__close" type="button" aria-label="Close"><svg viewBox="0 0 16 16" aria-hidden="true"><path d="M4 4l8 8M12 4l-8 8"/></svg></button>
    </header>
    <ul class="kodza-sheet__items">
      <li class="kodza-sheet__item"><img src="https://kodza.dev/media/kz-block-1400.webp" alt=""><span class="kodza-sheet__name">Fill Button<small>HTML, CSS, a pinch of JS</small></span><span class="kodza-sheet__price">€0.00</span></li>
      <li class="kodza-sheet__item"><img src="https://kodza.dev/media/kz-stack-1400.webp" alt=""><span class="kodza-sheet__name">Sticky Cards<small>Scroll, then scroll some more</small></span><span class="kodza-sheet__price">€0.00</span></li>
      <li class="kodza-sheet__item"><img src="https://kodza.dev/media/kz-arch-1400.webp" alt=""><span class="kodza-sheet__name">Date Picker<small>Fridays included, at your own risk</small></span><span class="kodza-sheet__price">€0.00</span></li>
    </ul>
    <footer class="kodza-sheet__foot">
      <p class="kodza-sheet__total"><span>Total</span><b>€0.00</b></p>
      <p class="kodza-sheet__note">Everything is free. The cart is just for the feeling.</p>
      <button class="kodza-sheet__cta" type="button">Copy everything</button>
    </footer>
  </dialog>
</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 the button
  • Opens it, focus goes into the panelEnter/Space
In the panel
  • Next or previous control, the page behind is out of reachTab/⇧Tab
Anywhere, while it's open
  • Closes it, focus back on the buttonEsc

More like this

More in Overlays