Krizaka UI
Krizaka UI
Composants

Countdown

The time left until a moment, in tabular figures, turning urgent under a threshold.

Web + MobileStableAffichage de données

Web et mobile — le même composant pour React et React Native. Stable : son API ne change qu’à une version majeure.

Pourquoi il est là. Used by Orochia, krizaka.com.

Quand l’utiliser

  • For a deadline the user acts against: an auction, an offer, a live event about to start.
  • With the server's clock (skewMs) when the end is decided by the server.

Quand ne pas l’utiliser

  • For a date far away: write the date (“Ends on 12 May”).
  • For the progress of a task.À la place : Progress
  • For an elapsed time that keeps growing: format a duration in the text.

Installation

Installer

npm install @krizaka/ui @krizaka/tailwind @krizaka/tokens tailwindcss

Styles

@import "tailwindcss";
@import "@krizaka/tailwind";
@import "@krizaka/ui/tailwind.css";

Importer

import { Countdown } from "@krizaka/ui/countdown";

Exemples

Hours

Hours, minutes and seconds.

01h02m03s

Days

Days appear when there are some.

02d04h13m

Sizes

sm, md (default), lg.

01h02m03s01h02m03s01h02m03s

Urgent

Under a minute: the danger text role, the last segment pulses.

00h00m42s

With its label

showLabel: the label written before the segments.

01h02m03s

Ended

Past the target: zeros and data-ended.

00h00m00s

Props

Time left until a moment, as segments (2d 04h 13m 09s — days only when there are some) in tabular figures. Under urgentBelowMs it turns to the danger text role and its last segment pulses (no motion under prefers-reduced-motion). Words come from the app: units are the short unit labels. role="timer" without live announcements — the app announces what matters. State: data-urgent, data-ended. The urgent colour is --kz-danger-text (≥ 4.5:1 on every surface in both themes), so size="sm" is safe too.

PropTypeDéfautDescription
labelrequisstring—Accessible name, e.g. "Ends in".
targetrequisstring | number | Date—The moment it counts down to: a Date, an ISO string or epoch milliseconds.
unitsrequisCountdownUnits—The short unit labels, passed translated.
classNamestring—Classes merged last, over the primitive's.
showLabelbooleanfalseAlso show label before the segments, in the secondary text role (default: only read by screen readers).
size"sm" | "md" | "lg"mdsm · md · lg — the danger text role reads at 4.5:1 at every size, in both themes.
skewMsnumber0Server clock − this clock, in milliseconds.
urgentBelowMsnumber60000Below this many milliseconds it turns urgent (text-fg-danger, the last segment pulses). Default 60 s.

Accessibilité

  • role="timer" named by label, without live announcements: a screen reader is not interrupted every second.
  • Announce the end yourself (a toast, a status) if it matters.
  • The pulse of the last segment stops under prefers-reduced-motion.

Bonnes pratiques

  • Pass units and label translated: they are the app's words.
  • Use size="md" or larger when it can turn urgent: the danger colour is large-text safe from md.
  • Say what happens at zero next to it: the countdown only shows zeros.

Générée depuis le code de @krizaka/ui 3.9.0 : son meta.ts, ses exemples et ses types.Modifier cette documentation sur GitHub

Sur cette page