From d0685805b45f233beab276519f7eb8112f8a350f Mon Sep 17 00:00:00 2001 From: kang Date: Tue, 19 May 2026 18:16:39 +0800 Subject: [PATCH] fix: move selected session detail to sidebar --- src/app/page.tsx | 16 +-- src/components/Sidebar.tsx | 238 +++++++++++++++++++++++++------------ 2 files changed, 171 insertions(+), 83 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index a0688cb..2da3ef3 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -343,13 +343,15 @@ export default function Home() {
- + {!current && ( + + )} {current && (
diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx index f3b437b..cb9ad91 100644 --- a/src/components/Sidebar.tsx +++ b/src/components/Sidebar.tsx @@ -2,6 +2,72 @@ import type { GenSession } from '@/lib/types'; +function modeLabel(mode?: GenSession['inputMode']) { + if (mode === 'remix') return '二创'; + if (mode === 'replicate') return '复刻'; + if (mode === 'extend') return '补全'; + return '想法'; +} + +function imageSourcesForSession(session: GenSession) { + const uploaded = session.uploadedImages?.map(image => ({ + url: image.url, + label: image.role === 'subject' ? '主体图' : image.role === 'reference' ? '参考图' : image.accessoryName || image.role, + })) ?? []; + if (uploaded.length) return uploaded; + return session.refImages.map((url, index) => ({ url, label: `参考 ${index + 1}` })); +} + +function ActiveSessionDetail({ session }: { session: GenSession }) { + const refs = imageSourcesForSession(session); + const selectedCount = session.images.filter(image => image.status === 'selected').length; + const packCount = session.packs?.length ?? 0; + + return ( +
+
+ Session + + {modeLabel(session.inputMode)} + +
+
+ {session.characterSpec?.name || session.prompt} +
+
+
+
图片
+ {session.images.length} +
+
+
选中
+ {selectedCount} +
+
+
+ {packCount} +
+
+ {refs.length > 0 && ( +
+
Reference
+
+ {refs.slice(0, 4).map((ref, index) => ( +
+ {ref.label} +
+ ))} +
+
+ )} +
+ {new Date(session.createdAt).toLocaleString('zh-CN', { month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit' })} + {session.id.slice(0, 10)} +
+
+ ); +} + export default function Sidebar({ open, onToggle, @@ -33,88 +99,108 @@ export default function Sidebar({ ); } + const activeSession = sessions.find(session => session.id === currentId) ?? null; + return ( -