Skip to content

Formatting Components

In addition to the useKanjou hook, @kanjou/react provides specialized components for inline formatting of dates, numbers, relative time, etc. They are simple wrappers around the hooks.

Import

ts
import {
  KanjouDateTime,
  KanjouNumber,
  KanjouPlural,
  KanjouList,
  KanjouDuration,
  KanjouRelativeTime,
  KanjouRich,
} from '@kanjou/react'

KanjouRich

Embeds a formatted rich text message (rendering React nodes).

Props

PropTypeDescription
idMessageKeyThe message key.
valuesMessageValues<Key>Variables for the message template.

Example

tsx
<KanjouRich id="welcome_message" values={{ name: 'World' }} />

KanjouDateTime

Formats a date or timestamp.

Props

PropTypeDescription
dateTimenumber | DateThe date to format.
optionsIntl.DateTimeFormatOptionsOptional formatting options.

Example

tsx
<KanjouDateTime dateTime={Date.now()} options={{ dateStyle: 'long' }} />

KanjouNumber

Formats a number.

Props

PropTypeDescription
numbernumber | bigintThe number to format.
optionsIntl.NumberFormatOptionsOptional formatting options.

Example

tsx
<KanjouNumber number={1000000} options={{ style: 'currency', currency: 'USD' }} />

KanjouPlural

Returns the plural category (zero, one, two, few, many, or other) for a given value.

Props

PropTypeDescription
valuenumberThe number to evaluate.
optionsIntl.PluralRulesOptionsOptional formatting options.

Example

tsx
<KanjouPlural value={2} options={{ type: 'ordinal' }} />

KanjouList

Formats a list of strings into a localized list (e.g., "A, B, and C").

Props

PropTypeDescription
listIterable<string>The list of strings to format.
optionsIntl.ListFormatOptionsOptional formatting options.

Example

tsx
<KanjouList list={['Apples', 'Oranges', 'Bananas']} options={{ type: 'conjunction' }} />

KanjouDuration

Formats a duration object (e.g., hours, minutes, seconds).

Props

PropTypeDescription
durationDurationAn object with duration values (e.g., { hours: 2, minutes: 30 }).
optionsIntl.DurationFormatOptionsOptional formatting options.

Example

tsx
<KanjouDuration duration={{ hours: 1, minutes: 45 }} />

KanjouRelativeTime

Formats a relative time string (e.g., "2 days ago", "in 1 year").

Props

PropTypeDescription
valuenumberThe numerical value.
unitIntl.RelativeTimeFormatUnitThe time unit (e.g. 'day', 'month').
optionsIntl.RelativeTimeFormatOptionsOptional formatting options.

Example

tsx
<KanjouRelativeTime value={-2} unit="day" options={{ numeric: 'auto' }} />

Released under the ISC License.