All files / src/components/chat/task-header/buttons CopyTaskButton.tsx

0% Statements 0/29
0% Branches 0/1
0% Functions 0/1
0% Lines 0/29

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 35 36 37 38 39 40                                                                               
import { Button } from "@heroui/button"
import { cn } from "@heroui/react"
import { CheckIcon, CopyIcon } from "lucide-react"
import { useCallback, useState } from "react"
import HeroTooltip from "@/components/common/HeroTooltip"
 
const CopyTaskButton: React.FC<{
	taskText?: string
	className?: string
}> = ({ taskText, className }) => {
	const [copied, setCopied] = useState(false)
 
	const handleCopy = useCallback(() => {
		if (!taskText) {
			return
		}
 
		navigator.clipboard.writeText(taskText).then(() => {
			setCopied(true)
			setTimeout(() => setCopied(false), 1500)
		})
	}, [taskText])
 
	return (
		<HeroTooltip content="Copy Text" placement="right">
			<Button
				aria-label="Copy"
				className={cn("bg-transparent hover:opacity-100", className)}
				isIconOnly={true}
				onPress={() => handleCopy()}
				radius="sm"
				size="sm">
				{copied ? <CheckIcon size="13" /> : <CopyIcon size="13" />}
			</Button>
		</HeroTooltip>
	)
}
 
export default CopyTaskButton