Installation
Pick the gentleduck package you want to install and follow the per-framework setup guide.
Pick what you need
gentleduck is a set of independent packages. Most teams start with one of the two entry points below, then add tools as they need them.
Start here
Duck UI
Tailwind-styled components, copy-pasted into your app via the CLI. The fastest path to a full UI.
Duck Primitives
Headless, accessible behavior. Bring your own styles. 50–92% smaller than Radix.
Add tools as you grow
Duck CLI
Scaffold, add, update, diff, and remove components.
Duck Calendar
5 KB headless calendar engine with seven date adapters.
Duck Vim
Keyboard command and chord engine with React hooks.
Duck Motion
Animation tokens that respect prefers-reduced-motion.
Quick start
The shortest path is the CLI. From an existing React project:
bunx @gentleduck/cli init
bunx @gentleduck/cli add button dialogbunx @gentleduck/cli init
bunx @gentleduck/cli add button dialoginit writes a duck-ui.json config, sets up Tailwind tokens, and prepares the import alias. add copies the component source — you own it.
If you only want primitives, install the package directly:
bun add @gentleduck/primitivesbun add @gentleduck/primitivesPer-framework guides
Pick the framework you ship with for the full setup walkthrough, including Tailwind config, dark mode, and import aliases:
New to the project? Read the Introduction first to see how the packages fit together before installing them piecemeal.