import { Link, useParams } from 'react-router-dom'; import { useI18n } from '../hooks/useI18n'; import { siteData } from '../data/siteData'; import DownloadTable from '../components/DownloadTable'; import RoadmapGrid from '../components/RoadmapGrid'; import ChangelogList from '../components/ChangelogList'; import ScreenshotCarousel from '../components/ScreenshotCarousel'; import { getIcon } from '../utils/iconRegistry'; import { ExternalLink, Download, BookOpen, Globe } from 'lucide-react'; export default function ProjectDetailPage() { const { id } = useParams(); const { t, bi, biArray, lang } = useI18n(); const p = siteData.projects.find((pr) => pr.id === id); if (!p) { return (
Project not found
); } const statusDef = siteData.statuses[p.status]; const hasDownloads = p.downloads && p.downloads.length > 0; const IconComponent = getIcon(p.icon); return (
{/* Breadcrumb */}
{bi(siteData.nav[0].label)} {' / '} {bi(siteData.nav[1].label)} {' / '} {p.name}
{/* Header */}
{p.logo ? {p.name} : (IconComponent ? : {p.icon}) }

{p.displayName[lang] || p.name}

{bi(p.slogan)}

{p.techStack.map((ts) => ( {ts} ))} {p.platforms.map((pl) => ( {pl} ))} {bi(statusDef?.label)}
{p.websiteUrl && ( {t('detail.website')} )} {hasDownloads && ( { e.preventDefault(); document.getElementById('downloads')?.scrollIntoView({ behavior: 'smooth' }); }}> {t('common.download')} )} {p.docsUrl && ( {t('common.docs')} )} {t('contact.issues')}
{/* Body */}
{/* Overview */}

{t('detail.overview')}

{bi(p.description)}

{/* Quick Start */} {p.quickStart && p.quickStart[lang] && p.quickStart[lang].length > 0 && (

{t('detail.quickStart')}

{p.quickStart[lang].map((cmd, i) => (
$ {cmd}
))}
)} {/* Features */}

{t('detail.features')}

{biArray(p.features).map((f, i) => ( {f} ))}
{/* Screenshots */} {p.screenshots && p.screenshots.length > 0 && (

{t('detail.screenshots')}

)} {/* Downloads */} {hasDownloads && (

{t('detail.downloads')}

{p.installGuide && (
{p.installGuide[lang].map((item) => (
{item.icon} {item.format} {item.tip}
))}
)}
{t('downloads.trustNote')}
)} {/* Changelog */} {p.changelog && p.changelog.length > 0 && (

{t('detail.changelog')}

)} {/* Roadmap */} {p.roadmap && (

{t('detail.roadmap')}

)}
{/* Sidebar */}
); }