import { useEffect } from 'react'; import { createPortal } from 'react-dom'; import { X, ExternalLink } from 'lucide-react'; import { useTranslation } from 'react-i18next'; import { open as openExternal } from '@tauri-apps/plugin-shell'; import type { LicenseEntry } from '../utils/licensesData'; interface Props { entry: LicenseEntry | null; onClose: () => void; } export default function LicenseTextModal({ entry, onClose }: Props) { const { t } = useTranslation(); useEffect(() => { if (!entry) return; const onKey = (e: KeyboardEvent) => { if (e.key === 'Escape') onClose(); }; window.addEventListener('keydown', onKey); return () => window.removeEventListener('keydown', onKey); }, [entry, onClose]); if (!entry) return null; const repoLink = entry.repository || entry.homepage; return createPortal(
e.stopPropagation()} style={{ maxWidth: '760px', width: '92vw', maxHeight: '82vh', display: 'flex', flexDirection: 'column', }} >

{entry.name} {entry.version}

{entry.licenses.map((lid) => ( {lid} ))} {entry.source} {repoLink && ( )}
{entry.description && (

{entry.description}

)}
{entry.licenseText || t('licenses.noLicenseText')}
, document.body, ); }