React button components

Free React button components for Tailwind CSS: primary, accent, outline and ghost variants, icon buttons, split buttons, button groups, toggles and copy buttons.

9 itemsFree, MITshadcn CLI compatibleTailwind CSS v4Light and dark

A button system is mostly restraint: one primary action per view, a quiet secondary, and a ghost for everything else. These variants are tuned so that hierarchy is obvious at a glance, with press states, loading states and focus rings that never disappear.

Icon buttons carry their accessible label, split buttons keep the menu reachable by keyboard, and every variant reads the same design tokens, so a theme change restyles all of them at once.

Components 8

Button GroupuiGroups adjacent buttons into one segmented control in Tailwind, joining borders and rounding only the outer corners. Uses role group for toolbars.npx shadcn@latest add ui.minidev.pro/r/button-group.jsonButtonuiShadcn compatible React button on Base UI with eight variants, nine sizes including icon sizes, a pressed state and render prop support for links.npx shadcn@latest add ui.minidev.pro/r/button.jsonCopy ButtonuiReact copy to clipboard button that writes a value, then swaps to a check icon and Copied label for a moment. Accepts every Button variant and size.npx shadcn@latest add ui.minidev.pro/r/copy-button.jsonFloating Action ButtonuiA round primary button fixed to the bottom right corner of the viewport for the main action on a screen. Accepts every Button prop, including icons.npx shadcn@latest add ui.minidev.pro/r/floating-action-button.jsonIcon ButtonuiA square React button for icon only actions in small, default and large sizes with every Button variant. Its aria-label prop is required, so it is always named.npx shadcn@latest add ui.minidev.pro/r/icon-button.jsonSplit ButtonuiSplit button with a primary action and a chevron that opens a dropdown of secondary actions, including destructive items. The menu matches the button width.npx shadcn@latest add ui.minidev.pro/r/split-button.jsonToggle GroupuiToggle group on Base UI that wraps Toggle buttons for single or multiple selection with shared keyboard navigation. Use it for text formatting or view modes.npx shadcn@latest add ui.minidev.pro/r/toggle-group.jsonToggleuiTwo-state toggle button on Base UI with sm, default and lg sizes and a pressed style. A shadcn-compatible Toggle for toolbar actions like bold or mute in React.npx shadcn@latest add ui.minidev.pro/r/toggle.json

Motion 1

See them live

Galleries render these components with sample data in every state.

Frequently asked questions

How do I render a button as a link?

Pass render={<a href="/pricing" />} or a Next.js Link. The button keeps its styles and the element becomes a real anchor, which is better for SEO and middle click.

How do I show a loading state on a button?

Disable the button and place the spinner component before the label. Keep the label text so the width stays stable while the action runs.

Which variant should my main call to action use?

Use the default ink variant for the one action that matters on a screen, and the accent variant sparingly for brand moments such as a hero CTA.

Related categories