GitHub

/ number-field

NumberField

@kumiki/headless/number-field

Svelte 5 attachments for NumberField — root / input / increment / decrement with spinbutton ARIA + format/parse hooks.

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
Quantity stepper
<script lang="ts">
  import { Tailwind as NumberField } from '@kumiki/atelier/number-field';
  let qty = $state<number | null>(1);
</script>

<NumberField.Root min={0} max={99} step={1} bind:value={qty}>
  <NumberField.Decrement aria-label="Decrease" />
  <NumberField.Input aria-label="Quantity" />
  <NumberField.Increment aria-label="Increase" />
</NumberField.Root>

/ accessibility

Accessibility

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

Keyboard

KeyEffect
Arrow ↑ / ↓Increment / decrement by step.
PageUp / PageDownIncrement / decrement by pageStep.

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 ↗