fix: MetalCard onClick 미전달 문제 수정

MetalCard가 onClick/sx props를 받지 않아 클릭 이벤트가 전달되지 않던 문제.
세션 카드와 템플릿 선택 카드를 Box로 감싸서 onClick 처리.
This commit is contained in:
Yun Chan 2026-04-08 11:11:14 +09:00
parent 2b17bf47b7
commit 55774b64e0
4 changed files with 22 additions and 12 deletions

View file

@ -32,7 +32,7 @@ npm run typecheck # tsc --noEmit
- 녹음 UI: 9개 웨이브 바, cos 분포, 100ms
## 현재 상태
Phase 1~14.5 전체 완료 + 랜딩 페이지(site/).
Phase 1~15 전체 완료 + 랜딩 페이지(site/).
차단 이슈: @nut-tree-fork/nut-js 포크 사용
## 설계 문서 (구현 시 Read 도구로 참조)
@ -51,6 +51,7 @@ Phase12+: FileTranscriptionService, MeetingSummaryService, DictationTemplateServ
Phase13+: VoiceConversationService, RAGService, VoiceActionService
Phase14: MeetingModeService
Phase14.5: MeetingDocTemplateService + 다중 문서 생성/편집/내보내기
Phase15: Auto Polish + AI 채팅 + 마인드맵 + 공유
## DS 컴포넌트 (src/renderer/components/ds/)
CrtDisplay, InstrumentPanel, Led, PhysicalButton, MetalCard,

View file

@ -70,8 +70,12 @@ export function registerMeetingModeHandlers(): void {
ipcMain.handle(ch.GET_SESSION, (_event, params: MeetingGetSessionParams) => {
try {
return ipcSuccess(getMeetingModeService().getSession(params.sessionId))
logger.info(`getSession 호출: ${params.sessionId}`)
const result = getMeetingModeService().getSession(params.sessionId)
logger.info(`getSession 성공: documents=${result.documents.length}`)
return ipcSuccess(result)
} catch (err) {
logger.error(`getSession 실패: ${err instanceof Error ? err.message : String(err)}`)
return ipcError(ErrorCode.MeetingSessionNotFound, err instanceof Error ? err.message : String(err))
}
})

View file

@ -107,7 +107,7 @@ export function AddDocumentDialog({
{/* 템플릿 목록 */}
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 1 }}>
{templates.map((tp) => (
<MetalCard
<Box
key={tp.id}
onClick={() => !generating && setSelectedId(tp.id)}
sx={{
@ -115,19 +115,22 @@ export function AddDocumentDialog({
opacity: generating ? 0.6 : 1,
border:
selectedId === tp.id
? `1px solid ${d3roPalette.accent.amber}`
: `1px solid ${d3roPalette.border.subtle}`,
? `2px solid ${d3roPalette.accent.amber}`
: `2px solid transparent`,
borderRadius: d3roRadius.inner,
transition: 'border-color 0.15s',
'&:hover': {
borderColor: generating ? undefined : d3roPalette.accent.amberDim,
},
}}
>
<PhosphorText variant="compact">{tp.name}</PhosphorText>
<PhosphorText variant="dim" sx={{ fontSize: 11, mt: 0.25 }}>
{tp.description}
</PhosphorText>
</MetalCard>
<MetalCard>
<PhosphorText variant="compact">{tp.name}</PhosphorText>
<PhosphorText variant="dim" sx={{ fontSize: 11, mt: 0.25 }}>
{tp.description}
</PhosphorText>
</MetalCard>
</Box>
))}
</Box>

View file

@ -220,11 +220,12 @@ export function MeetingModePage(): React.ReactElement {
) : (
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 1.5 }}>
{sessions.map((session) => (
<MetalCard
<Box
key={session.id}
sx={{ cursor: 'pointer', '&:hover': { opacity: 0.85 } }}
onClick={() => handleViewDetail(session.id)}
sx={{ cursor: 'pointer', '&:hover': { opacity: 0.85 } }}
>
<MetalCard>
<Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center' }}>
<Box>
<PhosphorText variant="label">
@ -258,6 +259,7 @@ export function MeetingModePage(): React.ReactElement {
</Box>
)}
</MetalCard>
</Box>
))}
</Box>
)}