From d816bb2d132e9592cafaa23c03ea7d62372ce51a Mon Sep 17 00:00:00 2001 From: Haewon Kam Date: Tue, 14 Apr 2026 16:40:43 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=BD=98=ED=85=90=EC=B8=A0=20=EC=BA=98?= =?UTF-8?q?=EB=A6=B0=EB=8D=94=20=EB=BF=8C=EC=97=B0=20=ED=98=84=EC=83=81=20?= =?UTF-8?q?=EA=B7=BC=EB=B3=B8=20=ED=95=B4=EA=B2=B0=20=E2=80=94=20isDraggin?= =?UTF-8?q?g=20bug=20fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 세션 내내 추적하던 'opacity 20-30% 흐림' 인상의 진짜 원인: const isDragging = draggedEntry?.entry.id === entry.id; → mock entry에 id가 없어 undefined === undefined → true → 모든 entry에 opacity-40 상시 적용됨 수정: - isDragging: 오브젝트 참조 비교로 전환 (id 의존 제거) - entry 배경/border: 더 진한 파스텔로 대비 강화 (#F3F0FF → #EDE5FF, border #D5CDF5 → #B8A8E8 등) - entry 제목: text-slate-700 → font-medium text-[#0A1128] - 아이콘 opacity-60 제거 (100% 불투명) - shadow-sm + hover:shadow-lg - 섹션 dark 테마 복원 (Dark/White 섹션 교차 규칙 유지) - 일자 셀 bg-slate-50/50 제거, 빈 셀 border 불투명화 6개 병원 데모(view-clinic/banobagi/grand/wonjin/ts/irum) 모두 ContentCalendar 컴포넌트를 공유하므로 한 번에 반영. Co-Authored-By: Claude Opus 4.6 --- src/components/plan/ContentCalendar.tsx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/components/plan/ContentCalendar.tsx b/src/components/plan/ContentCalendar.tsx index 4c1c36b..93fc67a 100644 --- a/src/components/plan/ContentCalendar.tsx +++ b/src/components/plan/ContentCalendar.tsx @@ -24,10 +24,10 @@ interface ContentCalendarProps { } const contentTypeColors: Record = { - video: { bg: 'bg-[#F3F0FF]', text: 'text-[#6C5CE7]', entry: 'bg-[#F3F0FF] border-[#D5CDF5]', border: 'border-[#D5CDF5]', shadow: 'shadow-[2px_3px_8px_rgba(155,138,212,0.15)]' }, - blog: { bg: 'bg-[#EFF0FF]', text: 'text-[#3A3F7C]', entry: 'bg-[#EFF0FF] border-[#C5CBF5]', border: 'border-[#C5CBF5]', shadow: 'shadow-[2px_3px_8px_rgba(122,132,212,0.15)]' }, - social: { bg: 'bg-[#FFF6ED]', text: 'text-[#7C5C3A]', entry: 'bg-[#FFF6ED] border-[#F5E0C5]', border: 'border-[#F5E0C5]', shadow: 'shadow-[2px_3px_8px_rgba(212,168,114,0.15)]' }, - ad: { bg: 'bg-[#FFF0F0]', text: 'text-[#7C3A4B]', entry: 'bg-[#FFF0F0] border-[#F5D5DC]', border: 'border-[#F5D5DC]', shadow: 'shadow-[2px_3px_8px_rgba(212,136,154,0.15)]' }, + video: { bg: 'bg-[#F3F0FF]', text: 'text-[#6C5CE7]', entry: 'bg-[#EDE5FF] border-[#B8A8E8]', border: 'border-[#D5CDF5]', shadow: 'shadow-[2px_3px_8px_rgba(155,138,212,0.15)]' }, + blog: { bg: 'bg-[#EFF0FF]', text: 'text-[#3A3F7C]', entry: 'bg-[#E2E5FF] border-[#A8B0E8]', border: 'border-[#C5CBF5]', shadow: 'shadow-[2px_3px_8px_rgba(122,132,212,0.15)]' }, + social: { bg: 'bg-[#FFF6ED]', text: 'text-[#7C5C3A]', entry: 'bg-[#FFEED9] border-[#E8C896]', border: 'border-[#F5E0C5]', shadow: 'shadow-[2px_3px_8px_rgba(212,168,114,0.15)]' }, + ad: { bg: 'bg-[#FFF0F0]', text: 'text-[#7C3A4B]', entry: 'bg-[#FFE0E0] border-[#E8A8B4]', border: 'border-[#F5D5DC]', shadow: 'shadow-[2px_3px_8px_rgba(212,136,154,0.15)]' }, }; const contentTypeLabels: Record = { @@ -220,12 +220,12 @@ export default function ContentCalendar({ data, planId, onEntryUpdate }: Content const ContentIcon = contentTypeIcons[entry.contentType]; const ChannelIcon = channelIconMap[entry.channelIcon] ?? GlobeFilled; const statusDot = statusDotColors[entry.status ?? 'draft']; - const isDragging = draggedEntry?.entry.id === entry.id; + const isDragging = draggedEntry !== null && draggedEntry.entry === entry; return (
handleDragStart(entry, weekNumber) : undefined} onDragEnd={weekNumber !== undefined ? handleDragEnd : undefined} @@ -234,9 +234,9 @@ export default function ContentCalendar({ data, planId, onEntryUpdate }: Content
- +
-

+

{entry.title}

{entry.description && (