diff --git a/src/renderer/pages/MeetingModePage.tsx b/src/renderer/pages/MeetingModePage.tsx index af619ef..6d4c618 100644 --- a/src/renderer/pages/MeetingModePage.tsx +++ b/src/renderer/pages/MeetingModePage.tsx @@ -238,42 +238,87 @@ export function MeetingModePage(): React.ReactElement { ) : sessions.length === 0 ? ( ) : ( - + {sessions.map((session) => ( handleViewDetail(session.id)} - sx={{ cursor: 'pointer', '&:hover': { opacity: 0.85 } }} + sx={{ + cursor: 'pointer', + transition: 'transform 0.15s ease, box-shadow 0.15s ease', + '&:hover': { transform: 'translateY(-2px)' }, + }} > - - - - {session.title ?? t('meeting.untitled')} - - - {session.durationMs != null - ? t('meeting.duration', { minutes: Math.round(session.durationMs / 60000) }) - : '—'} - {' · '} - {t('meeting.memos')}: {session.memoCount} + {/* 상태 LED + 날짜 */} + + + + + {session.status === 'completed' ? t('meeting.completed') + : session.status === 'error' ? t('meeting.error') + : session.status === 'processing' ? t('meeting.processing') + : t('meeting.recording')} - - {formatDate(session.startedAt)} - - + + {formatDate(session.startedAt)} + - {/* 프로세싱 중인 세션 표시 */} + {/* 제목 — ellipsis */} + + {session.title ?? t('meeting.untitled')} + + + {/* 메타 — 소요 시간 · 메모 수 */} + + {session.durationMs != null + ? t('meeting.duration', { minutes: Math.round(session.durationMs / 60000) }) + : '—'} + {' · '} + {t('meeting.memos')}: {session.memoCount} + + + {/* 프로세싱 진행 바 */} {session.status === 'processing' && progress && progress.sessionId === session.id && ( - + {t(`meeting.processingStep.${progress.step}` as Parameters[0])}