diff --git a/components/admin/QRCodeDisplay.tsx b/components/admin/QRCodeDisplay.tsx index 915e857..4edf520 100644 --- a/components/admin/QRCodeDisplay.tsx +++ b/components/admin/QRCodeDisplay.tsx @@ -1,6 +1,9 @@ "use client"; +import { useState } from "react"; import { QRCodeSVG } from "qrcode.react"; +import { Button } from "@/components/ui/button"; +import { Copy, Check } from "lucide-react"; interface QRCodeDisplayProps { url: string; @@ -8,12 +11,89 @@ interface QRCodeDisplayProps { } export default function QRCodeDisplay({ url, size = 200 }: QRCodeDisplayProps) { + const [copied, setCopied] = useState(false); + + const handleCopyLink = async () => { + try { + await navigator.clipboard.writeText(url); + setCopied(true); + alert(`✅ Lien copié !\n\n${url}\n\nVous pouvez maintenant le coller (Ctrl+V) pour le partager avec votre client.`); + setTimeout(() => setCopied(false), 3000); + } catch (err) { + console.error("Erreur lors de la copie:", err); + const textArea = document.createElement("textarea"); + textArea.value = url; + textArea.style.position = "fixed"; + textArea.style.left = "-999999px"; + document.body.appendChild(textArea); + textArea.select(); + try { + const successful = document.execCommand("copy"); + if (successful) { + setCopied(true); + alert(`✅ Lien copié !\n\n${url}\n\nVous pouvez maintenant le coller (Ctrl+V) pour le partager avec votre client.`); + setTimeout(() => setCopied(false), 3000); + } else { + alert(`Copiez ce lien manuellement:\n\n${url}`); + } + } catch (e) { + alert(`Copiez ce lien manuellement:\n\n${url}`); + } + document.body.removeChild(textArea); + } + }; + return ( -
+
-

- {url} -

+ +
+

Lien unique :

+