GitHub

/ toggle

Toggle

@kumiki/headless/toggle

Svelte 5 attachment for Toggle. Drives ARIA + data-state directly on a DOM node.

This component, layer by layer

Styled, copy-paste presets (preview). Run pnpm kumiki add to drop the source into your project, then edit freely.

Live preview

Live preview…

Install
pnpm add @kumiki/atelier
Drop-in styled Toggle (Tailwind v4)
<script lang="ts">
  import { Tailwind as Toggle } from '@kumiki/atelier/toggle';
  let bold = $state(false);
</script>

<Toggle.Root bind:pressed={bold} variant="outline" size="md">
  Bold
</Toggle.Root>
Vanilla CSS variant
<script lang="ts">
  import { Vanilla as Toggle } from '@kumiki/atelier/toggle';
</script>

<Toggle.Root size="lg">Italic</Toggle.Root>

<!-- Theme via CSS custom properties:
     .kumiki-toggle { --kumiki-toggle-bg-on: oklch(0.85 0.15 252); } -->

/ accessibility

Accessibility

axe-core — run on every PR (LTR + RTL × every documented state).

Keyboard

KeyEffect
Space, EnterToggles pressed state.
TabMove focus into / out.

Test discipline

  • axe-core — run on every PR (LTR + RTL × every documented state).
  • APG keyboard tests — Playwright, hand-written per pattern.
  • VoiceOver / NVDA — Guidepup nightly schedule.
  • Type-level required names — title / aria-label / aria-labelledby.
Read the W3C ARIA APG pattern ↗