From 889a050f25b5f14e102b3bce38b844eb16f23719 Mon Sep 17 00:00:00 2001 From: jang_yoonsu Date: Thu, 16 May 2024 23:23:06 +0900 Subject: [PATCH] feat : add copy button component --- frontend/src/components/CopyButton.tsx | 45 ++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 frontend/src/components/CopyButton.tsx diff --git a/frontend/src/components/CopyButton.tsx b/frontend/src/components/CopyButton.tsx new file mode 100644 index 0000000..e28fdca --- /dev/null +++ b/frontend/src/components/CopyButton.tsx @@ -0,0 +1,45 @@ +import { useState } from 'react'; +import Copy from './../assets/copy.svg?react'; +import CheckMark from './../assets/checkmark.svg?react'; +import copy from 'copy-to-clipboard'; + +export default function CoppyButton({ text }: { text: string }) { + const [copied, setCopied] = useState(false); + const [isCopyHovered, setIsCopyHovered] = useState(false); + + const handleCopyClick = (text: string) => { + copy(text); + setCopied(true); + // Reset copied to false after a few seconds + setTimeout(() => { + setCopied(false); + }, 3000); + }; + + return ( +
+ {copied ? ( + setIsCopyHovered(true)} + onMouseLeave={() => setIsCopyHovered(false)} + /> + ) : ( + { + handleCopyClick(text); + }} + onMouseEnter={() => setIsCopyHovered(true)} + onMouseLeave={() => setIsCopyHovered(false)} + /> + )} +
+ ); +}