import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { IconBug, IconCopy, IconCheck } from '@tabler/icons-react' import StyledModal from './StyledModal' import api from '~/lib/api' interface DebugInfoModalProps { open: boolean onClose: () => void } export default function DebugInfoModal({ open, onClose }: DebugInfoModalProps) { const { t } = useTranslation() const [debugText, setDebugText] = useState('') const [loading, setLoading] = useState(false) const [copied, setCopied] = useState(false) useEffect(() => { if (!open) return setLoading(true) setCopied(false) api.getDebugInfo().then((text) => { if (text) { const browserLine = `Browser: ${navigator.userAgent}` setDebugText(text + '\n' + browserLine) } else { setDebugText(t('debugInfo.loadFailed')) } setLoading(false) }).catch(() => { setDebugText(t('debugInfo.loadFailed')) setLoading(false) }) }, [open]) const handleCopy = async () => { try { await navigator.clipboard.writeText(debugText) } catch { // Fallback for older browsers const textarea = document.querySelector('#debug-info-text') if (textarea) { textarea.select() document.execCommand('copy') } } setCopied(true) setTimeout(() => setCopied(false), 2000) } return ( } cancelText={t('debugInfo.close')} onCancel={onClose} >

{t('debugInfo.description')}