Skip to content
Redpanda UI
Esc
↑↓navigate↵open⌘Jpreview
Made by imskyleen
Edit on GitHub

Copy Button

A button with a copy to clipboard animation and optional text label.

Installation

bash
npx shadcn@latest add @redpanda/copy-button
bash
pnpm dlx shadcn@latest add @redpanda/copy-button
bash
yarn dlx shadcn@latest add @redpanda/copy-button
bash
bunx shadcn@latest add @redpanda/copy-button
bash
nubx shadcn@latest add @redpanda/copy-button
bash
aube dlx shadcn@latest add @redpanda/copy-button

When to use

Use this decision tree to determine when to use the Copy Button component:

Motion features

CopyButton includes its synchronous Motion features; no application-level LazyMotion provider is required. Its HTMLMotionProps contract still supports drag and layout animations, and it inherits an enclosing MotionConfig, including reduced-motion preferences.

Usage

Icon Only

tsx
<CopyButton content="Hello world!" size="icon" />

With Text Label

tsx
<CopyButton content="npm install @redpanda/ui">Copy</CopyButton>

Different Variants

tsx
<CopyButton content="Hello world!" variant="outline">  Copy to clipboard</CopyButton>
<CopyButton content="Some text" variant="default">  Copy text</CopyButton>
<CopyButton content="Code snippet" variant="ghost">  Copy</CopyButton>

When the write is refused

No permission, no secure context, no clipboard API: the button swaps to an X for delay and renders a role="alert" region beside itself. The icon span carries data-state="idle" | "copied" | "error", and an icon-only button is named “Copy” unless you pass an aria-label.

Props

PropType
content?string

The content to copy to the clipboard.

Typestring
children?React.ReactNode

Optional text label to display next to the icon.

TypeReact.ReactNode
delay?number

The delay in milliseconds before the button resets.

Typenumber
Default3000
size?'sm' | 'md' | 'lg' | 'icon' | 'icon-xs'

The size of the button.

Type'sm' | 'md' | 'lg' | 'icon' | 'icon-xs'
Defaultmd
variant?'default' | 'destructive' | 'outline' | 'secondary' | 'ghost'

The variant of the button.

Type'default' | 'destructive' | 'outline' | 'secondary' | 'ghost'
Defaultdefault
onCopy?(content: string) => void

The function to call when copy is successful.

Type(content: string) => void

Credits

Recent changes

  • patchv1.2.0Pin shipped dependency floors to the version we develop against. Registry items now declare ranges like `^5.1.9` (the actual installed version) instead of collapsing to `^5.0.0`, so consumers start on the known-tested baseline while caret semantics still allow any compatible release within the same major.#133
  • minorv1.1.0Theme docs refresh, readability pass on semantic foregrounds, and consumer-facing Base UI regression fixes.#121
  • minorv1.0.0Post-Base-UI polish. Public API unchanged.#116
  • majorv1.0.0Migrate every Radix-based primitive to `@base-ui/react@^1.4.0` (Base UI).#114
  • minorv0.3.0Add theme-provider component to the registry with documentation and tests. Includes playground type improvements (export RegistryItem, remove as-const boilerplate) and docs site dark mode border color fix.#109
See full history →

Last updated on

Was this page helpful?