import React, { useState } from "react"; import { SettingContainer } from "./SettingContainer"; interface TextDisplayProps { label: string; description: string; value: string; descriptionMode?: "inline" | "tooltip"; grouped?: boolean; placeholder?: string; copyable?: boolean; monospace?: boolean; onCopy?: (value: string) => void; } export const TextDisplay: React.FC = ({ label, description, value, descriptionMode = "tooltip", grouped = false, placeholder = "Not available", copyable = false, monospace = false, onCopy, }) => { const [showCopied, setShowCopied] = useState(false); const handleCopy = async () => { if (!value || !copyable) return; try { await navigator.clipboard.writeText(value); setShowCopied(true); setTimeout(() => setShowCopied(false), 1500); if (onCopy) { onCopy(value); } } catch (err) { console.error("Failed to copy to clipboard:", err); } }; const displayValue = value || placeholder; const textClasses = monospace ? "font-mono break-all" : "break-words"; return (
{displayValue}
{copyable && value && ( )}
); };