Files
vito/resources/js/components/copyable-badge.tsx
Saeed Vaziry c3f69f3247 #591 - sites
2025-06-04 08:08:20 +02:00

31 lines
1003 B
TypeScript

import React, { useState } from 'react';
import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip';
import { Badge } from '@/components/ui/badge';
export default function CopyableBadge({ text }: { text: string }) {
const [copySuccess, setCopySuccess] = useState(false);
const copyToClipboard = () => {
navigator.clipboard.writeText(text).then(() => {
setCopySuccess(true);
setTimeout(() => {
setCopySuccess(false);
}, 2000);
});
};
return (
<Tooltip>
<TooltipTrigger asChild>
<div className="inline-flex cursor-pointer justify-start space-x-2 truncate" onClick={copyToClipboard}>
<Badge variant={copySuccess ? 'success' : 'outline'} className="block max-w-[200px] overflow-ellipsis">
{text}
</Badge>
</div>
</TooltipTrigger>
<TooltipContent side="top">
<span className="flex items-center space-x-2">Copy</span>
</TooltipContent>
</Tooltip>
);
}