import { ChevronDown, ChevronUp, MoreHorizontal, Plus, RefreshCcw, Settings2, SlidersHorizontal } from 'lucide-react'; import { useMemo, useState } from 'react'; import { DataTableCard, type DataTableColumn } from '../components/data-table'; import { Badge, Button, Card, CardHeader, Modal, Progress } from '../components/ui'; import { agentDevices, alerts, authApiEndpoints, gatewayConnections, k3sWorkloads, launcherCommonSettings, launcherVersions, runtimeCommands, tailscaleNodes, tailscaleSettings } from '../data/mock'; import { PageTitle } from '../layout/AppLayout'; type Tone = 'neutral' | 'green' | 'amber' | 'red' | 'blue' | 'violet'; function tone(status: string): Tone { if (['활성', '완료', '게시됨', '실행 중', '배포됨'].includes(status)) return 'green'; if (['주의', '예약됨', '대기', '준비중', '카나리'].includes(status)) return 'amber'; if (['잠김', '실패', '오프라인', '비활성'].includes(status)) return 'red'; return 'neutral'; } function StatusBadge({ status, badgeTone }: { status: string; badgeTone?: Tone }) { return {status}; } export function LauncherVersionsPage() { const [sourceOpen, setSourceOpen] = useState(false); const [releaseOpen, setReleaseOpen] = useState(false); const launcher = launcherVersions[0]; return ( <> } /> {!launcher ? 등록된 런처 버전이 없습니다. : null} {launcher ? (

{launcher.name}

최신 {launcher.latestVersion} · 최소 지원 {launcher.minimumSupportedVersion || '-'}

배포 파일

{launcher.artifact}

다운로드 URL

{launcher.downloadUrl}

소스 연결

Repository

platform/launcher

Branch

release

Commit SHA

-

{launcher.releaseNotes}
) : null} setSourceOpen(false)} footer={ <> } >
setReleaseOpen(false)} footer={ <> } >
{['버전', '최소 지원 버전', '배포 파일', '다운로드 URL', 'Repository', 'Branch', 'Commit SHA'].map((label) => ( ))}