Copy Button
The Open UI Kit Copy Button copies text to the clipboard and gives users immediate visual feedback.
Introduction
Use Copy Button for values that users often need to move into another tool: IDs, tokens, URLs, commands, and generated configuration. It is icon-only by design, so provide an accessible label for the specific value being copied.
wksp_prod_8f21d4
Import
import { CopyButton } from '@open-ui-kit/core';
When to use
Use Copy Button beside values users are likely to reuse, such as commands, URLs, tokens, ids, and generated snippets. It reduces selection mistakes and gives immediate feedback that the value was copied.
Do not hide a primary workflow behind a copy-only interaction.
Anatomy
Copy Button is an icon action with an accessible label, tooltip, and temporary success state. The copied value should be visually close to the button so users know what will go to the clipboard. For longer snippets, pair it with Code Block or a clearly framed text area.
Sizes
Use large when the button stands alone or appears beside a field.
Use medium or small inside dense layouts, tables, and inline metadata.
Feedback
After copying, the button swaps to a success icon and tooltip for two seconds.
Use onCopy when the page needs to show additional confirmation or analytics.
Nothing copied yet
Tooltip labels
Customize copyLabel, copiedLabel, and tooltipPlacement when the default tooltip would be ambiguous.
Positioned buttons
Use position, top, left, and right when the button needs to sit inside a relative container such as a code panel or read-only value box.
yarn workspace @open-ui-kit/core storybook
Behavior notes
Keep the copied string in the surrounding page state and pass the exact value to the button. Use success feedback to confirm the action without moving focus or opening a modal. For sensitive values, consider reveal, permission, or confirmation behavior before copying.
Props
CopyButton extends icon button props and adds copy-specific options.
| Prop | Type | Description |
|---|---|---|
text |
string |
Text copied to the clipboard. |
size |
'small' | 'medium' | 'large' |
Visual size. Defaults to large. |
position |
'left' | 'right' |
Absolutely positions the button inside a relative parent. |
top |
string |
Top offset for positioned usage. Defaults to 16px. |
left |
string |
Left offset when position="left". |
right |
string |
Right offset when position="right". |
disableMargin |
boolean |
Removes the default outer margin. |
tooltipPlacement |
TooltipProps['placement'] |
Tooltip placement. Defaults to top. |
copyLabel |
string |
Tooltip text before copying. Defaults to Copy. |
copiedLabel |
string |
Tooltip text after copying. Defaults to Copied. |
onCopy |
() => void |
Callback fired after the text is copied. |
Accessibility
Copy Button is an icon button, so always provide aria-label.
Make the label specific to the copied value, for example aria-label="Copy workspace ID".
Avoid using only aria-label="Copy" when several copy actions appear near each other.
Usage guidance
- Use Copy Button for exact values users should not retype.
- Place it close to the value it copies.
- Prefer
largefor standalone actions and smaller sizes in dense UIs. - Keep copied text free of invisible characters.
- Pair destructive or sensitive copied values with clear surrounding text.