"use client";
import { CheckIcon, CopyIcon } from "lucide-react";
import * as React from "react";
import { useCopyToClipboard } from "@/registry/default/hooks/use-copy-to-clipboard";
import { Button } from "@/registry/default/ui/button";
import { anchoredToastManager } from "@/registry/default/ui/toast";
import {
Tooltip,
TooltipPopup,
TooltipTrigger,
} from "@/registry/default/ui/tooltip";
export default function Particle() {
const copyButtonRef = React.useRef<HTMLButtonElement>(null);
const toastTimeout = 2000;
const { copyToClipboard, isCopied } = useCopyToClipboard({
onCopy: () => {
if (copyButtonRef.current) {
anchoredToastManager.add({
data: {
tooltipStyle: true,
},
positionerProps: {
anchor: copyButtonRef.current,
},
timeout: toastTimeout,
title: "Copied!",
});
}
},
timeout: toastTimeout,
});
function handleCopy() {
const url = "https://coss.com";
copyToClipboard(url);
}
return (
<Tooltip>
<TooltipTrigger
render={
<Button
aria-label="Copy link"
disabled={isCopied}
onClick={handleCopy}
ref={copyButtonRef}
size="icon"
variant="outline"
/>
}
>
{isCopied ? (
<CheckIcon className="size-4" />
) : (
<CopyIcon className="size-4" />
)}
</TooltipTrigger>
<TooltipPopup>
<p>Copy to clipboard</p>
</TooltipPopup>
</Tooltip>
);
}