first commit

This commit is contained in:
Beyhan Oğur
2026-04-26 21:52:23 +03:00
commit 880f412e2c
2662 changed files with 866266 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
import { useCallback, useRef, useState } from "react";
import { toast } from "sonner";
interface UseCopyToClipboardOptions {
successMessage?: string;
errorMessage?: string;
resetDelay?: number;
}
export function useCopyToClipboard(options: UseCopyToClipboardOptions = {}) {
const { successMessage = "Copied to clipboard", errorMessage = "Failed to copy", resetDelay = 2000 } = options;
const [copied, setCopied] = useState(false);
const timeoutRef = useRef<ReturnType<typeof setTimeout>>(undefined);
const copy = useCallback(
async (text: string) => {
try {
await navigator.clipboard.writeText(text);
setCopied(true);
toast.success(successMessage);
if (timeoutRef.current) clearTimeout(timeoutRef.current);
timeoutRef.current = setTimeout(() => setCopied(false), resetDelay);
} catch {
toast.error(errorMessage);
}
},
[successMessage, errorMessage, resetDelay],
);
return { copy, copied };
}