// components/ui/FontCard.jsx import React, { useState } from "react"; import { Card } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { Copy, Check, Heart, Share2, Info } from "lucide-react"; import { transformText, fontTransforms } from "../fontTransforms"; import { getFontData } from "@/lib/fonts"; import fontMap from "@/lib/tailwind-font-map"; export default function FontCard({ fontName, transformedText, category, isPopular, index = 0, }) { const [copied, setCopied] = useState(false); const [liked, setLiked] = useState(false); const fontInfo = fontTransforms[fontName]; const fontData = getFontData(fontName); const fontKey = fontName.toLowerCase().replace(/\s+/g, ""); const fontVarName = fontMap[fontKey]; const fontVar = fontVarName ? { fontFamily: `var(${fontVarName})` } : {}; const fontClass = fontData?.className || ""; const rawText = "Hallo Instagram!"; const transformed = transformText(rawText, fontName); const finalText = transformed?.transformed || rawText; const copyText = transformed?.transformed || rawText; const handleCopy = () => { if (navigator.clipboard && window.isSecureContext) { navigator.clipboard .writeText(copyText) .then(() => flashCopied()) .catch(() => fallbackCopy()); } else { fallbackCopy(); } }; const flashCopied = () => { setCopied(true); setTimeout(() => setCopied(false), 2000); }; const fallbackCopy = () => { const textarea = document.createElement("textarea"); textarea.value = copyText; textarea.setAttribute("readonly", ""); textarea.style.position = "fixed"; textarea.style.top = "0"; textarea.style.left = "0"; textarea.style.width = "1px"; textarea.style.height = "1px"; textarea.style.padding = "0"; textarea.style.border = "none"; textarea.style.outline = "none"; textarea.style.boxShadow = "none"; textarea.style.background = "transparent"; document.body.appendChild(textarea); textarea.focus(); textarea.select(); try { document.execCommand("copy"); flashCopied(); } catch (err) { console.error("Fallback Copy fehlgeschlagen:", err); } document.body.removeChild(textarea); }; const handleShare = async () => { if (!navigator.share) return; try { await navigator.share({ title: `FancyText – ${fontName}`, text: copyText, url: window.location.href, }); } catch (err) { console.error("Share fehlgeschlagen:", err); } }; return (