Skip to content

Zero-dependency · Framework-agnostic · SSR-safe

Precise time
input, for the web.

A time picker with an analog clock, scroll wheel, and compact-wheel modes. 12 themes, full TypeScript types, and plugins that tree-shake out when unused.

Live12:30
0
Dependencies
3
UI Modes
12
Themes
SSR
Safe
TS
Typed

Capabilities

What it does

read the docs
01

12h / 24h formats

Switch clock format at runtime, with AM/PM or 24-hour output.

02

Three UI modes

Analog clock, scroll wheel, and compact-wheel - one option to swap.

03

12 built-in themes

Material 2/3, Crane, Dark, Glassmorphic, Cyberpunk, Pastel, AI, Blueprint.

04

Framework-agnostic

Vanilla JS core. Works in React, Vue, Angular, Svelte.

05

TypeScript types

Full type definitions and grouped, autocompleted options.

06

Inline mode

Render the picker in-page without a modal overlay.

07

Keyboard & ARIA

Focus trap, arrow-key selection, screen-reader labels.

08

SSR-safe

No top-level DOM access. Runs under Next.js and Nuxt.

09

Tree-shakeable plugins

Range, timezone, and wheel ship only when imported.

Interactive

Try it here

Analog clock

Default 12-hour

Mobile view

Touch input

Range plugin

Start & end

plugin

Wheel plugin

Scroll spinner

plugin

Setup

Three lines to a picker

Install, import, and call create(). No build step, no wrapper required.

  • npm, yarn, or pnpm
  • ESM and CJS builds
  • Typed options with autocomplete
  • Drop into any existing input
Quick start
app.tstypescript
1import { TimepickerUI } from 'timepicker-ui';
2import 'timepicker-ui/index.css';
3
4const input = document.querySelector('#timepicker');
5const picker = new TimepickerUI(input, {
6 clock: { type: '24h' },
7 ui: { theme: 'dark' },
8});
9
10picker.create();

Open source · MIT

If it saved you an afternoon

Built and maintained by one person, with zero runtime dependencies, no funding, and no telemetry. A star is the quiet signal that says it's worth the next release.

GitHub stars
93/ 100

Next milestone

00:00

Add a time picker in minutes