GitHub

/ datetime-field

DatetimeField

@kumiki/components/datetime-field

Compound <Root> / <Label> / <DatePart> / <TimePart> — combined date + time-of-day input over a single CalendarDateTime value.

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
Segmented DateTime input
<script lang="ts">
  import { Tailwind as DateTimeField } from '@kumiki/atelier/datetime-field';
  import { type CalendarDateTime, now, getLocalTimeZone } from '@internationalized/date';

  let value = $state<CalendarDateTime | null>(
    now(getLocalTimeZone()) as unknown as CalendarDateTime,
  );
</script>

<DateTimeField.Root bind:value granularity="minute">
  <DateTimeField.Label>Starts at</DateTimeField.Label>
  <DateTimeField.DatePart />
  <DateTimeField.TimePart />
</DateTimeField.Root>

/ accessibility

Accessibility

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

Keyboard

No component-specific keymap. Inherits standard browser focus / activation behaviour.

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 ↗