Free · MIT · Violetta Studio
Twenty files, twenty‑three React components for Next.js 16 and Tailwind v4. The date, range and time pickers are written by hand: no react‑day‑picker, no date‑fns, no dayjs. Radix does the popover positioning and the focus trapping; everything above that is plain React you can read in one sitting.
Twenty component files, twenty‑three exported components. Every one of
them imports nothing but React, Radix and a four‑line cn().
DatePicker, DateRangePicker (two months, or one), TimePicker, Combobox.
Select, DropdownMenu, Checkbox, RadioGroup and Radio.
Dialog, ConfirmDialog, Tooltip, Toaster.
Field, Input, Textarea, Button, ButtonLink, Link.
Reveal and Stagger, with a first render that matches the server.
No CLI, no config to adopt, no npm package to depend on.
Most kits hand you a date field that pulls in a calendar library, a date library, and a plugin for the timezone edge cases. Here the 42‑cell month, the week offset and the month arithmetic are about forty lines of pure functions at the top of the file.
import { DateRangePicker } from "@/components/ui/DateRangePicker";
<DateRangePicker
startValue={from} // "2026-08-12"
endValue={to}
onChange={(a, b) => setRange([a, b])}
months={2} // the default; 1 for a single grid
min={todayISO}
locale="es-CL"
/>
There is not one hard‑coded colour anywhere under
src/components. Rebind the tokens and the whole set follows,
including into a design system you already have.
Not a pass somebody promises to do later.
prefers-reduced-motion honoured globally, with a safety net so a scroll reveal is never left invisible.MIT. Use it in commercial work, no attribution required. Copy the files you want — there is no package to install and nothing to keep in sync.
Built by Violetta Studio. If you want these same primitives already assembled into a finished, production‑ready site, the paid templates live at violettadev.com.