Getting Started
12-hour clock
Default. Three wheels: hour / minute / AM-PM.
import { useState } from "react"
import { format } from "date-fns"
import {
Body2,
Card,
Flex,
PrimaryButton,
TimePicker,
} from "@appboxo/ui-kit"
import { PreviewLayout } from "./_section"
export function TimePicker12hPreview() {
const [open, setOpen] = useState(false)
const [value, setValue] = useState<number | undefined>()
return (
<PreviewLayout>
<Card>
<Flex vertical gap={12}>
<Body2 color="text-3">Reminder time (12h)</Body2>
<PrimaryButton
text={value ? format(value, "hh:mm a") : "Pick a time"}
onClick={() => setOpen(true)}
/>
</Flex>
</Card>
<TimePicker
visible={open}
onHide={() => setOpen(false)}
onOk={(ts) => {
setValue(ts)
setOpen(false)
}}
value={value}
hourFormat="12h"
title="Select time"
/>
</PreviewLayout>
)
}
24-hour clock
Pass hourFormat="24h" for two wheels (hour / minute).
import { useState } from "react"
import { format } from "date-fns"
import {
Body2,
Card,
Flex,
SecondaryButton,
TimePicker,
} from "@appboxo/ui-kit"
import { PreviewLayout } from "./_section"
export function TimePicker24hPreview() {
const [open, setOpen] = useState(false)
const [value, setValue] = useState<number | undefined>()
return (
<PreviewLayout>
<Card>
<Flex vertical gap={12}>
<Body2 color="text-3">Departure (24h)</Body2>
<SecondaryButton
text={value ? format(value, "HH:mm") : "Pick a time (24h)"}
onClick={() => setOpen(true)}
/>
</Flex>
</Card>
<TimePicker
visible={open}
onHide={() => setOpen(false)}
onOk={(ts) => {
setValue(ts)
setOpen(false)
}}
value={value}
hourFormat="24h"
title="Select time (24h)"
/>
</PreviewLayout>
)
}
Installation
pnpm add @appboxo/ui-kitRequires UIKitProvider
The picker reads useUIKitTranslation() for OK / cancel labels. Wrap in <NextUIKitProvider> (Next) or <UIKitProvider translation={useTranslation}> (Vite / CRA).
Build mini-apps with Boxo
Freedom UI Kit is the design system behind partner mini-apps shipping on the Boxo platform.
Learn more about Boxo