import { ClipboardCheckIcon, ClipboardIcon } from "lucide-react"; import { useCopy } from "~/hooks/useCopy"; import { cn } from "~/utils/cn"; import { Button } from "./Buttons"; import { SimpleTooltip } from "./Tooltip"; const sizes = { "extra-small": { icon: "size-3", button: "h-5 px-1", }, small: { icon: "size-3.5", button: "h-6 px-1", }, medium: { icon: "size-4", button: "h-8 px-1.5", }, }; type CopyButtonProps = { value: string; variant?: "icon" | "button"; size?: keyof typeof sizes; className?: string; buttonClassName?: string; showTooltip?: boolean; buttonVariant?: "primary" | "secondary" | "tertiary" | "minimal"; children?: React.ReactNode; }; export function CopyButton({ value, variant = "button", size = "medium", className, buttonClassName, showTooltip = true, buttonVariant = "tertiary", children, }: CopyButtonProps) { const { copy, copied } = useCopy(value); const { icon: iconSize, button: buttonSize } = sizes[size]; const button = variant === "icon" ? ( {copied ? ( ) : ( )} ) : ( ); if (!showTooltip) return {button}; return ( ); }