Skip to main content
@gentleduck/ui

Components you copy and own

Styled Tailwind components built on @gentleduck/primitives. The CLI copies the source into your project, so every file is yours.

  • The full kit

    Buttons, dialogs, selects, tabs, sidebar, data table, calendar, command, and carousel. Styled and ready to ship.

  • Built on primitives

    Every component sits on the headless @gentleduck/primitives layer. Styled and unstyled are one family.

  • Tailwind and cva

    Written with cva() variants and cn() merging. Override className on any instance without forking.

  • Themes and dark mode

    OKLCH tokens in CSS variables, with dark mode built in. Change a few variables to swap the palette.

  • Accessible by default

    Keyboard, focus, and ARIA behavior come straight from duck-primitives. The styled layer never breaks them.

  • Copy, don’t depend

    The CLI writes the source into your project. Patch it, restyle it, or extend it. It’s your code.

Install

Scaffold once, then add components one at a time. Works with Next.js, Vite, Remix, and Astro.

  1. Set up your project

    npx @gentleduck/cli init
  2. Add your first component

    npx @gentleduck/cli add button

Free & open source

gentleduck is MIT licensed and will always be free and open source. Every package ships with full source access — fork it, modify it, own it.

Become a Sponsor