import { Bookmark, Loader2, Play } from 'lucide-react'; import type { ProfileSaveArchiveSummary } from '../../../packages/shared/src/contracts/runtime'; import type { VisualNovelRunSnapshot } from '../../../packages/shared/src/contracts/visualNovel'; type VisualNovelSavePanelProps = { run: VisualNovelRunSnapshot; saveArchives?: ProfileSaveArchiveSummary[]; isSaving?: boolean; isLoadingArchives?: boolean; resumingWorldKey?: string | null; onSaveRun?: () => void; onResumeSaveArchive?: (worldKey: string) => void; }; function formatArchiveTime(value: string) { const timestamp = new Date(value).getTime(); if (Number.isNaN(timestamp)) { return value; } return new Intl.DateTimeFormat('zh-CN', { month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit', }).format(timestamp); } export function VisualNovelSavePanel({ run, saveArchives = [], isSaving = false, isLoadingArchives = false, resumingWorldKey = null, onSaveRun, onResumeSaveArchive, }: VisualNovelSavePanelProps) { return (