From 36854a223fb9a8693fd9733db62ed8c871cfea7c Mon Sep 17 00:00:00 2001 From: caadiq Date: Sun, 5 Apr 2026 13:46:31 +0900 Subject: [PATCH] =?UTF-8?q?style:=20PC=20=EC=98=88=EB=8A=A5=20=EC=83=81?= =?UTF-8?q?=EC=84=B8=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=94=94=EC=9E=90?= =?UTF-8?q?=EC=9D=B8=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 썸네일: aspect-video 비율, hover 시 확대 + 재생 버튼 오버레이 - 방송사 뱃지: 카테고리 색상 기반, 날짜와 한 줄로 배치 - 다시보기 버튼: 다크 pill 스타일, 유튜브면 Play 아이콘 - 전체 카드 레이아웃으로 통일 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../schedule/sections/VarietySection.jsx | 113 ++++++++++-------- 1 file changed, 63 insertions(+), 50 deletions(-) diff --git a/frontend/src/pages/pc/public/schedule/sections/VarietySection.jsx b/frontend/src/pages/pc/public/schedule/sections/VarietySection.jsx index 2cdd3c5..88015ac 100644 --- a/frontend/src/pages/pc/public/schedule/sections/VarietySection.jsx +++ b/frontend/src/pages/pc/public/schedule/sections/VarietySection.jsx @@ -1,4 +1,4 @@ -import { Calendar, Clock, Tv, ExternalLink } from 'lucide-react'; +import { Calendar, Clock, Tv, ExternalLink, Play } from 'lucide-react'; import { decodeHtmlEntities, formatFullDate, formatTime } from './utils'; /** @@ -7,80 +7,93 @@ import { decodeHtmlEntities, formatFullDate, formatTime } from './utils'; function VarietySection({ schedule }) { const members = schedule.members || []; const isFullGroup = members.length === 5; + const hasThumbnail = !!schedule.thumbnailUrl; + const hasReplayUrl = !!schedule.replayUrl; + + // 다시보기 링크가 유튜브인지 확인 + const isYoutubeReplay = hasReplayUrl && /youtu\.?be/i.test(schedule.replayUrl); return ( -
- {/* 썸네일 */} - {schedule.thumbnailUrl && ( -
- {schedule.title} +
+ {/* 상단: 썸네일 + 오버레이 */} + {hasThumbnail && ( +
+ {hasReplayUrl ? ( + +
+ {schedule.title} +
+ {/* 재생 오버레이 */} +
+
+ +
+
+
+ ) : ( +
+ {schedule.title} +
+ )}
)} - {/* 정보 카드 */} -
- {/* 방송사 뱃지 + 제목 */} -
+ {/* 콘텐츠 */} +
+ {/* 방송사 + 날짜 */} +
{schedule.broadcaster && ( - - + + {schedule.broadcaster} )} + + {formatFullDate(schedule.date)} + {schedule.time && ` · ${formatTime(schedule.time)}`} +
-

+ {/* 제목 */} +

{decodeHtmlEntities(schedule.title)}

- {/* 메타 정보 */} -
-
- - {formatFullDate(schedule.date)} -
- {schedule.time && ( -
- - {formatTime(schedule.time)} -
- )} -
- {/* 멤버 */} {members.length > 0 && ( -
-

출연 멤버

-
- {isFullGroup ? ( - - 프로미스나인 +
+ {isFullGroup ? ( + + 프로미스나인 + + ) : ( + members.map((member) => ( + + {member.name} - ) : ( - members.map((member) => ( - - {member.name} - - )) - )} -
+ )) + )}
)} - {/* 다시보기 링크 */} - {schedule.replayUrl && ( -
+ {/* 다시보기 버튼 */} + {hasReplayUrl && ( +