From 3246bb0aca438c5e9602412f0832ce3d6ceba8be Mon Sep 17 00:00:00 2001 From: sandy Date: Fri, 16 Jan 2026 18:31:29 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=EB=AA=A8=EB=B0=94=EC=9D=BC=20?= =?UTF-8?q?=EB=B7=B0=20=EA=B5=AC=ED=98=84=20=EB=B0=8F=20=EB=A1=9C=EC=A7=81?= =?UTF-8?q?=20=EC=88=98=EC=A0=95=20(#49)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/comment/CommentList.tsx | 2 +- src/components/common/DarkHeader.tsx | 66 ++++++--- src/components/feedback/FeedbackInput.tsx | 156 +++++++++++++--------- src/components/feedback/SlideViewer.tsx | 149 ++++++++++++--------- src/pages/FeedbackSlidePage.tsx | 140 +++++++++++++++++-- src/stores/slideStore.ts | 114 ++++++++++------ 6 files changed, 434 insertions(+), 193 deletions(-) diff --git a/src/components/comment/CommentList.tsx b/src/components/comment/CommentList.tsx index 5e6005b8..663668d6 100644 --- a/src/components/comment/CommentList.tsx +++ b/src/components/comment/CommentList.tsx @@ -46,7 +46,7 @@ export default function CommentList({ }; return ( -
+
{comments.map((comment) => ( { +export const DarkHeader = ({ + title, + renderRight, + publisher = '익명의 바다거북이', + publishedAt = '2025.11.25 21:10:34', +}: DarkHeaderProps) => { return ( -
+
-
+
{title} - ( + + )} + align="end" // 팝오버 왼쪽 정렬 (취향에 따라 center로 변경 가능) + position="bottom" + className="w-[250px] rounded-lg bg-white p-4 shadow-lg ring-1 ring-black/5 translate-x-20" > - - - - + {/* 팝오버 내부 콘텐츠 (사진 디자인 반영) */} +
+ {/* 행 1: 게시자 */} +
+ 게시자 + {publisher} +
+ + {/* 행 2: 게시 날짜 */} +
+ 게시 날짜 + {publishedAt} +
+
+
- =
{renderRight}
+
{renderRight}
); }; diff --git a/src/components/feedback/FeedbackInput.tsx b/src/components/feedback/FeedbackInput.tsx index 78e4bb07..f0f1cd2b 100644 --- a/src/components/feedback/FeedbackInput.tsx +++ b/src/components/feedback/FeedbackInput.tsx @@ -8,12 +8,22 @@ interface Props { reactions: EmojiReaction[]; onToggleReaction: (emoji: string) => void; onAddComment: (content: string) => void; + // 'all'(기존), 'reactions-only'(중간바), 'input-only'(댓글탭하단) + viewType?: 'all' | 'reactions-only' | 'input-only'; } -export default function FeedbackInput({ reactions, onToggleReaction, onAddComment }: Props) { +export default function FeedbackInput({ + reactions, + onToggleReaction, + onAddComment, + viewType = 'all', +}: Props) { const [commentDraft, setCommentDraft] = useState(''); const commentTextareaRef = useRef(null); + const showInput = viewType === 'all' || viewType === 'input-only'; + const showReactions = viewType === 'all' || viewType === 'reactions-only'; + const handleAddComment = () => { onAddComment(commentDraft); setCommentDraft(''); @@ -31,73 +41,97 @@ export default function FeedbackInput({ reactions, onToggleReaction, onAddCommen const formatReactionCount = (count: number) => (count > 99 ? '99+' : count); - return ( -
-
-