diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx index 254a88f..898b383 100644 --- a/src/app/admin/page.tsx +++ b/src/app/admin/page.tsx @@ -25,6 +25,7 @@ function AdminPageContent() { const [showDeleteModal, setShowDeleteModal] = useState(false); const [selectedCampaign, setSelectedCampaign] = useState(null); const [searchTerm, setSearchTerm] = useState(''); + const [copiedCampaignId, setCopiedCampaignId] = useState(null); useEffect(() => { loadCampaigns(); @@ -83,6 +84,29 @@ function AdminPageContent() { return tiers.split(',').map(tier => `${tier.trim()}€`).join(', '); }; + const copyToClipboard = async (text: string, campaignId: string) => { + try { + await navigator.clipboard.writeText(text); + setCopiedCampaignId(campaignId); + setTimeout(() => setCopiedCampaignId(null), 2000); + } catch (error) { + console.error('Erreur lors de la copie:', error); + // Fallback pour les navigateurs qui ne supportent pas l'API Clipboard + const textArea = document.createElement('textarea'); + textArea.value = text; + document.body.appendChild(textArea); + textArea.select(); + try { + document.execCommand('copy'); + setCopiedCampaignId(campaignId); + setTimeout(() => setCopiedCampaignId(null), 2000); + } catch (fallbackError) { + console.error('Erreur avec la méthode de fallback:', fallbackError); + } + document.body.removeChild(textArea); + } + }; + const filteredCampaigns = campaigns.filter(campaign => campaign.title.toLowerCase().includes(searchTerm.toLowerCase()) || campaign.description.toLowerCase().includes(searchTerm.toLowerCase()) @@ -304,14 +328,14 @@ function AdminPageContent() { className="flex-1 text-sm bg-white dark:bg-slate-800 border-blue-300 dark:border-blue-600 text-blue-700 dark:text-blue-300 font-mono" />