Spaces:
Sleeping
Sleeping
| import { useState, useCallback } from 'react'; | |
| export function useCopy(timeout = 2000) { | |
| const [copied, setCopied] = useState(false); | |
| const copy = useCallback( | |
| async (text: string) => { | |
| if (!navigator.clipboard) { | |
| console.error('Clipboard API not available'); | |
| return false; | |
| } | |
| try { | |
| await navigator.clipboard.writeText(text); | |
| setCopied(true); | |
| setTimeout(() => { | |
| setCopied(false); | |
| }, timeout); | |
| return true; | |
| } catch (error) { | |
| console.error('Failed to copy text:', error); | |
| return false; | |
| } | |
| }, | |
| [timeout] | |
| ); | |
| return { copied, copy }; | |
| } |