Packages
Every package in the gentleduck organization, what it does, and when to reach for it.
The map
gentleduck ships as discrete packages so you can adopt one piece without inheriting the rest. Every package below is independently versioned and independently published on npm under the @gentleduck scope.
Component layer
@gentleduck/registry-ui
50+ Tailwind-styled components — Button, Dialog, Select, Sidebar, Sonner, Chart. Copy-pasted via the CLI.
@gentleduck/primitives
Headless ARIA-correct primitives. The behavior layer underneath every styled component.
Tools
@gentleduck/cli
init, add, update, diff, list, remove. Project detection and template scaffolding.
@gentleduck/registry-build
Compile and publish your own component registry. Powers the duck-ui registry itself.
Engines
@gentleduck/calendar
Headless calendar engine. 5 KB. Gregorian, Islamic, Persian, Hebrew, Buddhist, Indian, Japanese adapters.
@gentleduck/vim
Keyboard command engine — chord matching, key sequences, recorder, React hooks.
@gentleduck/motion
Animation tokens and reduced-motion handling.
@gentleduck/variants
Typed cva() variant system with VariantProps extraction.
Utilities
@gentleduck/hooks
React utility hooks used across the stack.
@gentleduck/libs
cn() and other small helpers shared by components.
@gentleduck/state
Atom-based state management for component-local stores.
@gentleduck/lazy
Intersection-observer lazy mounting for heavy children.
Server-side
@gentleduck/iam
Identity and access primitives — sessions, RBAC, audit.
@gentleduck/upload
Resumable upload pipeline with chunking and progress.
@gentleduck/query
Typed query helpers for the data layer.
@gentleduck/gen
Code generation for controllers, routes, and schemas.
Pick-and-mix
You don't have to install everything. Common starting points:
- Just primitives:
bun add @gentleduck/primitives - Styled components + CLI:
bunx @gentleduck/cli init - Calendar in another design system:
bun add @gentleduck/calendar - Keyboard layer in any React app:
bun add @gentleduck/vim
See Installation for per-framework guides.