Skip to content

Timer

A timer / countdown. Segments carry data-type (days/hours/minutes/ seconds); action triggers carry data-action.

A countdown runs from start-ms down to target-ms (0 by default), so a one-minute countdown sets start-ms. Leaving start-ms at 0 means the timer has already reached its target and completes on the first tick.

:
html
<div
  data-controller="zag-timer"
  data-part="root"
  data-zag-timer-start-ms-value="90000"
  data-zag-timer-countdown-value="true"
  class="space-y-3"
>
  <div data-part="area" class="flex items-center gap-1 font-mono text-3xl tabular-nums">
    <div data-part="item" data-type="minutes">
      <span data-part="item-value"></span>
    </div>
    <span data-part="separator">:</span>
    <div data-part="item" data-type="seconds">
      <span data-part="item-value"></span>
    </div>
  </div>
  <div data-part="control" class="flex gap-2">
    <button
      data-part="action-trigger"
      data-action="start"
      class="bg-primary text-primary-foreground hover:bg-primary/90 rounded-lg px-3 py-1.5 text-sm font-medium"
    >
      Start
    </button>
    <button
      data-part="action-trigger"
      data-action="pause"
      class="border-input hover:bg-accent rounded-lg border px-3 py-1.5 text-sm"
    >
      Pause
    </button>
    <button
      data-part="action-trigger"
      data-action="reset"
      class="border-input hover:bg-accent rounded-lg border px-3 py-1.5 text-sm"
    >
      Reset
    </button>
  </div>
</div>

Parts

root, area, control, item, item-value, item-label, action-trigger, separator.

Values

AttributeTypeDefaultDescription
data-zag-timer-start-ms-valueNumber0Time to start from, in ms. A countdown counts down from this.
data-zag-timer-target-ms-valueNumber0Time to stop at, in ms.
data-zag-timer-countdown-valueBooleanfalseCount down instead of up.
data-zag-timer-interval-valueNumber1000Tick interval (ms).
data-zag-timer-auto-start-valueBooleanfalseStart automatically.

Events

Emits zag-timer:tick and zag-timer:complete.

Programmatic control

running (getter), start(), pause(), resume(), reset().