copy-button
efferd-/copy-buttonFreeComponent
Copy button component.
Live preview
live · rendered by the registry
Rendered by efferd on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add http://efferd.com/r/copy-button.jsonSource
1"use client";2import { cn } from "@/lib/utils";3import type React from "react";4import { useCopyToClipboard } from "@/hooks/use-copy-to-clipboard";5import { Button } from "@/components/ui/button";6import {7 Tooltip,8 TooltipContent,9 TooltipTrigger,10} from "@/components/ui/tooltip";1112type CopyButtonProps = React.ComponentProps<typeof Button> & {13 text: string;14 disableTooltip?: boolean;15};1617export function CopyButton({18 variant = "ghost",19 size = "icon-sm",20 text,21 onClick,22 disableTooltip = false,23 ...props24}: CopyButtonProps) {25 const { copied, copy } = useCopyToClipboard();2627 const handleCopy = (event: React.MouseEvent<HTMLButtonElement>) => {28 copy(text);29 onClick?.(event); // ✅ pass event to onClick30 };3132 return (33 <Tooltip>34 <TooltipTrigger asChild>35 <Button36 aria-label={copied ? "Copied" : "Copy to clipboard"}37 disabled={copied || props.disabled}38 onClick={handleCopy}39 size={size}40 variant={variant}41 {...props}42 >43 <div44 className={cn(45 "transition-all",46 copied ? "scale-100 opacity-100" : "scale-0 opacity-0"47 )}48 >49 <IconPlaceholder50 aria-hidden="true"51 className="size-3.5 stroke-emerald-500"52 hugeicons="Tick01Icon"53 lucide="CheckIcon"54 phosphor="CheckIcon"55 remixicon="RiCheckLine"56 tabler="IconCheck"57 />58 </div>59 <div60 className={cn(61 "absolute transition-all",62 copied ? "scale-0 opacity-0" : "scale-100 opacity-100"63 )}64 >65 <IconPlaceholder66 aria-hidden="true"67 className="size-3.5"68 hugeicons="Copy01Icon"69 lucide="CopyIcon"70 phosphor="CopyIcon"71 remixicon="RiFileCopyLine"72 tabler="IconCopy"73 />74 </div>75 </Button>76 </TooltipTrigger>77 {!disableTooltip && (78 <TooltipContent className="px-2 py-1 text-xs">79 Click to copy80 </TooltipContent>81 )}82 </Tooltip>83 );84}
Files it writes
More from efferd
All 201 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| apple-iconapple-icon | efferd | Components | Free | no deps | |
| auth-dividerauth-divider | efferd | Components | Free | no deps | |
| decor-icondecor-icon | efferd | Components | Free | no deps | |
| discord-icondiscord-icon | efferd | Components | Free | no deps | |
| facebook-iconfacebook-icon | efferd | Components | Free | no deps | |
| figma-iconfigma-icon | efferd | Components | Free | no deps | |
| formaterformater | efferd | Components | Free | no deps | |
| framer-iconframer-icon | efferd | Components | Free | no deps |
