blob: 422035357afbc884ef0963ca2171ff30f7992981 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
'use client'
import { Button } from '@/components/ui/button'
import { Check, Copy } from 'lucide-react'
import { useEffect, useState } from 'react'
type Props = { text: string }
export function CopyButton({ text }: Props) {
const [copied, setCopied] = useState(false)
useEffect(() => {
if (copied) {
let timeout = setTimeout(() => setCopied(false), 1000)
return () => {
setCopied(false)
clearTimeout(timeout)
}
}
}, [copied])
return (
<Button
size="icon"
variant="secondary"
type="button"
onClick={() => {
navigator.clipboard.writeText(text)
setCopied(true)
}}
>
{copied ? <Check className="w-4 h-4" /> : <Copy className="w-4 h-4" />}
</Button>
)
}
|