From d718074a40f4ca068cb5247b53480c8d9a219ddd Mon Sep 17 00:00:00 2001 From: jungsunbeen Date: Sat, 31 May 2025 15:55:01 +0900 Subject: [PATCH 01/15] =?UTF-8?q?style:=20=ED=83=9C=EA=B7=B8=20=EC=8A=A4?= =?UTF-8?q?=ED=83=80=EC=9D=BC=20=EA=B0=9C=EC=84=A0=20=EB=B0=8F=20=EB=A0=88?= =?UTF-8?q?=EC=9D=B4=EC=95=84=EC=9B=83=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/home/DiaryList.tsx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/components/home/DiaryList.tsx b/src/components/home/DiaryList.tsx index 1735393..1902116 100644 --- a/src/components/home/DiaryList.tsx +++ b/src/components/home/DiaryList.tsx @@ -93,13 +93,19 @@ export const DiaryTitle = styled.div` export const TagWrapper = styled.div` display: flex; - gap: 8px; - font-size: 14px; - color: #3b82f6; + flex-wrap: nowrap; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; margin-bottom: 8px; `; -export const Tag = styled.span``; +export const Tag = styled.span` + font-size: 14px; + color: #3b82f6; + margin-right: 8px; + flex-shrink: 0; +`; export const Content = styled.div` font-size: 14px; From a500a6aaf7f6bb4fecf16e118e0a01d87da709d7 Mon Sep 17 00:00:00 2001 From: jungsunbeen Date: Sat, 31 May 2025 16:01:29 +0900 Subject: [PATCH 02/15] =?UTF-8?q?feat:=20=EB=B3=84=ED=91=9C=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20=EC=83=81=ED=83=9C?= =?UTF-8?q?=20=EA=B4=80=EB=A6=AC=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/DiaryDetail.tsx | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/pages/DiaryDetail.tsx b/src/pages/DiaryDetail.tsx index d0fe4ed..0bd2a0d 100644 --- a/src/pages/DiaryDetail.tsx +++ b/src/pages/DiaryDetail.tsx @@ -1,6 +1,6 @@ import styled from "styled-components"; import { IoHomeOutline, IoTrashBinOutline } from "react-icons/io5"; -import { BsPencil } from "react-icons/bs"; +import { BsPencil, BsStar, BsStarFill } from "react-icons/bs"; import { useNavigate, useParams } from "react-router-dom"; import { useEffect, useState } from "react"; import { getDiary } from "../services/apis/diary/diary"; @@ -48,6 +48,8 @@ const DiaryDetail = () => { } }, [diary]); + const [starred, setStarred] = useState(false); + const formatDate = (rawDate: string) => { const date = new Date(rawDate); return `${date.getFullYear()}.${String(date.getMonth() + 1).padStart(2, "0")}.${String(date.getDate()).padStart(2, "0")}.`; @@ -87,6 +89,11 @@ const DiaryDetail = () => { alt={diary.character} /> {diary.character} + {starred ? ( + setStarred(false)} /> + ) : ( + setStarred(true)} /> + )} {aiComment || "AI 코멘트를 생성 중입니다..."} @@ -222,3 +229,16 @@ const CommentText = styled.p` color: #374151; line-height: 1.6; `; + +const StarIcon = styled(BsStar)` + margin-left: auto; + font-size: 20px; + cursor: pointer; +`; + +const StarIconFill = styled(BsStarFill)` + margin-left: auto; + font-size: 20px; + color: #FFD600; + cursor: pointer; +`; From a21899aafd1c97bdec02a2ff2d54113651056d95 Mon Sep 17 00:00:00 2001 From: jungsunbeen Date: Sat, 31 May 2025 16:09:51 +0900 Subject: [PATCH 03/15] =?UTF-8?q?feat:=20=EB=8C=93=EA=B8=80=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EA=B5=AC=ED=98=84=20=EB=B0=8F=20?= =?UTF-8?q?=EC=8A=A4=ED=83=80=EC=9D=BC=EB=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/DiaryDetail.tsx | 16 +++++----- src/pages/collection/Comments.tsx | 53 ++++++++++++++++++++++++++++--- 2 files changed, 57 insertions(+), 12 deletions(-) diff --git a/src/pages/DiaryDetail.tsx b/src/pages/DiaryDetail.tsx index 0bd2a0d..4bdb6b4 100644 --- a/src/pages/DiaryDetail.tsx +++ b/src/pages/DiaryDetail.tsx @@ -155,7 +155,7 @@ const EditIcon = styled(BsPencil)` color: #1e2a52; `; -const Body = styled.div` +export const Body = styled.div` padding: 24px; display: flex; flex-direction: column; @@ -198,45 +198,45 @@ const CommentTitle = styled.h3` color: #1e2a52; `; -const CommentCard = styled.div` +export const CommentCard = styled.div` background: #fff; border-radius: 16px; padding: 16px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05); `; -const CharacterRow = styled.div` +export const CharacterRow = styled.div` display: flex; align-items: center; gap: 12px; margin-bottom: 8px; `; -const CharacterImg = styled.img` +export const CharacterImg = styled.img` width: 40px; height: 40px; border-radius: 50%; `; -const CharacterName = styled.div` +export const CharacterName = styled.div` font-size: 16px; font-weight: 600; color: #1e2a52; `; -const CommentText = styled.p` +export const CommentText = styled.p` font-size: 14px; color: #374151; line-height: 1.6; `; -const StarIcon = styled(BsStar)` +export const StarIcon = styled(BsStar)` margin-left: auto; font-size: 20px; cursor: pointer; `; -const StarIconFill = styled(BsStarFill)` +export const StarIconFill = styled(BsStarFill)` margin-left: auto; font-size: 20px; color: #FFD600; diff --git a/src/pages/collection/Comments.tsx b/src/pages/collection/Comments.tsx index 1de4d7f..7c549dc 100644 --- a/src/pages/collection/Comments.tsx +++ b/src/pages/collection/Comments.tsx @@ -1,9 +1,54 @@ +import { useState } from "react"; +import { + Body, + CharacterImg, + CharacterName, + CharacterRow, + CommentCard, + CommentText, + StarIcon, + StarIconFill, +} from "../DiaryDetail"; + +const dummyComments = [ + "오랜만에 영화관에서 좋은 시간 보냈다니 내가 다 기쁘다! 너의 여유로운 하루가 참 따뜻하게 느껴져 :)", + "오늘 하루도 수고 많았어! 너의 일상이 더 행복해지길 바랄게.", + "새로운 도전을 했다는 말에 나도 힘이 나! 계속 응원할게 :)", +]; + const Comments = () => { + const [starred, setStarred] = useState(new Array(dummyComments.length).fill(false)); + return ( - <> - <>Comments -

일단 없는 걸로

- + +
AI 코멘트 모아보기
+ {dummyComments.map((comment, index) => ( + + + + 웅이 + {starred[index] ? ( + { + const newStars = [...starred]; + newStars[index] = false; + setStarred(newStars); + }} /> + ) : ( + { + const newStars = [...starred]; + newStars[index] = true; + setStarred(newStars); + }} /> + )} + + {comment} + + ))} + ); }; + export default Comments; From 678d4870a3b5a7a3df374f5dd715961dfb11b198 Mon Sep 17 00:00:00 2001 From: jungsunbeen Date: Sat, 31 May 2025 16:11:08 +0900 Subject: [PATCH 04/15] =?UTF-8?q?feat:=20=EB=8C=93=EA=B8=80=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=EC=A0=9C=EB=AA=A9=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/collection/Comments.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/collection/Comments.tsx b/src/pages/collection/Comments.tsx index 7c549dc..766e748 100644 --- a/src/pages/collection/Comments.tsx +++ b/src/pages/collection/Comments.tsx @@ -21,7 +21,7 @@ const Comments = () => { return ( -
AI 코멘트 모아보기
+
즐겨찾기 한 코멘트 목록
{dummyComments.map((comment, index) => ( From c5d8206208d8e8fb85cc95bb0a17caa69c06642a Mon Sep 17 00:00:00 2001 From: jungsunbeen Date: Sat, 31 May 2025 16:20:29 +0900 Subject: [PATCH 05/15] =?UTF-8?q?feat:=20=EB=8C=93=EA=B8=80=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=EC=97=90=20=EB=84=A4=EB=B9=84=EA=B2=8C=EC=9D=B4?= =?UTF-8?q?=EC=85=98=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80=20=EB=B0=8F?= =?UTF-8?q?=20=EC=8A=A4=ED=83=80=EC=9D=BC=EB=A7=81=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/DiaryDetail.tsx | 12 ++-- src/pages/collection/Comments.tsx | 107 +++++++++++++++++++++++++----- 2 files changed, 98 insertions(+), 21 deletions(-) diff --git a/src/pages/DiaryDetail.tsx b/src/pages/DiaryDetail.tsx index 4bdb6b4..4cffa36 100644 --- a/src/pages/DiaryDetail.tsx +++ b/src/pages/DiaryDetail.tsx @@ -89,11 +89,11 @@ const DiaryDetail = () => { alt={diary.character} /> {diary.character} - {starred ? ( - setStarred(false)} /> - ) : ( - setStarred(true)} /> - )} + {starred ? ( + setStarred(false)} /> + ) : ( + setStarred(true)} /> + )} {aiComment || "AI 코멘트를 생성 중입니다..."} @@ -239,6 +239,6 @@ export const StarIcon = styled(BsStar)` export const StarIconFill = styled(BsStarFill)` margin-left: auto; font-size: 20px; - color: #FFD600; + color: #ffd600; cursor: pointer; `; diff --git a/src/pages/collection/Comments.tsx b/src/pages/collection/Comments.tsx index 766e748..01f9d68 100644 --- a/src/pages/collection/Comments.tsx +++ b/src/pages/collection/Comments.tsx @@ -9,6 +9,13 @@ import { StarIcon, StarIconFill, } from "../DiaryDetail"; +import styled from "styled-components"; +import { + IoChevronBack, + IoChevronForward, + IoHomeOutline, +} from "react-icons/io5"; +import { useNavigate } from "react-router-dom"; const dummyComments = [ "오랜만에 영화관에서 좋은 시간 보냈다니 내가 다 기쁘다! 너의 여유로운 하루가 참 따뜻하게 느껴져 :)", @@ -17,31 +24,65 @@ const dummyComments = [ ]; const Comments = () => { - const [starred, setStarred] = useState(new Array(dummyComments.length).fill(false)); + const [starred, setStarred] = useState( + new Array(dummyComments.length).fill(false), + ); + const [currentIndex, setCurrentIndex] = useState(0); + const navigate = useNavigate(); + + const goPrev = () => { + setCurrentIndex( + (prev) => (prev - 1 + characterList.length) % characterList.length, + ); + }; + + const goNext = () => { + setCurrentIndex((prev) => (prev + 1) % characterList.length); + }; return ( + + navigate("/")} + /> + + + + + + {characterList[currentIndex]} + + + + + + +
즐겨찾기 한 코멘트 목록
{dummyComments.map((comment, index) => ( - + 웅이 {starred[index] ? ( - { - const newStars = [...starred]; - newStars[index] = false; - setStarred(newStars); - }} /> + { + const newStars = [...starred]; + newStars[index] = false; + setStarred(newStars); + }} + /> ) : ( - { - const newStars = [...starred]; - newStars[index] = true; - setStarred(newStars); - }} /> + { + const newStars = [...starred]; + newStars[index] = true; + setStarred(newStars); + }} + /> )} {comment} @@ -52,3 +93,39 @@ const Comments = () => { }; export default Comments; + +const characterList = ["웅이", "앙글이", "티바노"]; + +const HeaderWrapper = styled.div` + display: flex; + align-items: center; + justify-content: space-between; + padding: 1rem; + position: relative; +`; + +const CenterContainer = styled.div` + position: absolute; + left: 50%; + transform: translateX(-50%); + width: 160px; /* 고정 너비로 좌우 아이콘 위치 유지 */ + display: flex; + align-items: center; + justify-content: space-between; + color: #2d3552; + font-weight: 500; + font-size: 1.2rem; +`; + +const Name = styled.span` + flex: 1; + text-align: center; +`; + +const Placeholder = styled.div` + width: 28px; /* 오른쪽 균형용 */ +`; + +const ClickableIcon = styled.div` + cursor: pointer; +`; From 4d66497c94e9bccabcf94125a353ab73c7a33147 Mon Sep 17 00:00:00 2001 From: jungsunbeen Date: Sat, 31 May 2025 16:22:05 +0900 Subject: [PATCH 06/15] =?UTF-8?q?fix:=20=EB=8C=93=EA=B8=80=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=95=84=EC=9D=B4=EC=BD=98=20?= =?UTF-8?q?=ED=81=AC=EA=B8=B0=20=EC=A1=B0=EC=A0=95=20=EB=B0=8F=20=EC=8A=A4?= =?UTF-8?q?=ED=83=80=EC=9D=BC=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/collection/Comments.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/pages/collection/Comments.tsx b/src/pages/collection/Comments.tsx index 01f9d68..ee47c76 100644 --- a/src/pages/collection/Comments.tsx +++ b/src/pages/collection/Comments.tsx @@ -44,7 +44,7 @@ const Comments = () => { navigate("/")} /> @@ -100,8 +100,7 @@ const HeaderWrapper = styled.div` display: flex; align-items: center; justify-content: space-between; - padding: 1rem; - position: relative; + margin-bottom: 20px; `; const CenterContainer = styled.div` From 7faf02dd52f084c76c9c06d3b2032eb402709132 Mon Sep 17 00:00:00 2001 From: jungsunbeen Date: Sat, 31 May 2025 16:27:59 +0900 Subject: [PATCH 07/15] =?UTF-8?q?feat:=20=ED=97=A4=EB=8D=94=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EA=B5=AC=ED=98=84=20=EB=B0=8F=20?= =?UTF-8?q?=EB=8C=93=EA=B8=80=20=ED=8E=98=EC=9D=B4=EC=A7=80=EC=97=90=20?= =?UTF-8?q?=ED=86=B5=ED=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/diary/Header.tsx | 83 ++++++++++++++++++++++++++++++- src/pages/collection/Comments.tsx | 79 +++-------------------------- 2 files changed, 90 insertions(+), 72 deletions(-) diff --git a/src/components/diary/Header.tsx b/src/components/diary/Header.tsx index 9d8ccf6..b6b6a5d 100644 --- a/src/components/diary/Header.tsx +++ b/src/components/diary/Header.tsx @@ -1,3 +1,84 @@ -const Header = () => {}; +import styled from "styled-components"; +import { + IoChevronBack, + IoChevronForward, + IoHomeOutline, +} from "react-icons/io5"; +import { useNavigate } from "react-router-dom"; + +interface HeaderProps { + characterList: string[]; + currentIndex: number; + setCurrentIndex: React.Dispatch>; +} + +const Header = ({ characterList, currentIndex, setCurrentIndex }: HeaderProps) => { + const navigate = useNavigate(); + + const goPrev = () => { + setCurrentIndex( + (prev) => (prev - 1 + characterList.length) % characterList.length, + ); + }; + + const goNext = () => { + setCurrentIndex((prev) => (prev + 1) % characterList.length); + }; + + return ( + + navigate("/")} + /> + + + + + + {characterList[currentIndex]} + + + + + + + + ); +}; export default Header; + +const HeaderWrapper = styled.div` + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 20px; +`; + +const CenterContainer = styled.div` + position: absolute; + left: 50%; + transform: translateX(-50%); + width: 160px; + display: flex; + align-items: center; + justify-content: space-between; + color: #2d3552; + font-weight: 500; + font-size: 1.2rem; +`; + +const Name = styled.span` + flex: 1; + text-align: center; +`; + +const Placeholder = styled.div` + width: 28px; +`; + +const ClickableIcon = styled.div` + cursor: pointer; +`; diff --git a/src/pages/collection/Comments.tsx b/src/pages/collection/Comments.tsx index ee47c76..3883190 100644 --- a/src/pages/collection/Comments.tsx +++ b/src/pages/collection/Comments.tsx @@ -9,13 +9,7 @@ import { StarIcon, StarIconFill, } from "../DiaryDetail"; -import styled from "styled-components"; -import { - IoChevronBack, - IoChevronForward, - IoHomeOutline, -} from "react-icons/io5"; -import { useNavigate } from "react-router-dom"; +import Header from "../../components/diary/Header"; const dummyComments = [ "오랜만에 영화관에서 좋은 시간 보냈다니 내가 다 기쁘다! 너의 여유로운 하루가 참 따뜻하게 느껴져 :)", @@ -23,44 +17,22 @@ const dummyComments = [ "새로운 도전을 했다는 말에 나도 힘이 나! 계속 응원할게 :)", ]; +const characterList = ["웅이", "앙글이", "티바노"]; + const Comments = () => { const [starred, setStarred] = useState( new Array(dummyComments.length).fill(false), ); const [currentIndex, setCurrentIndex] = useState(0); - const navigate = useNavigate(); - - const goPrev = () => { - setCurrentIndex( - (prev) => (prev - 1 + characterList.length) % characterList.length, - ); - }; - - const goNext = () => { - setCurrentIndex((prev) => (prev + 1) % characterList.length); - }; return ( - - navigate("/")} - /> - - - - - - {characterList[currentIndex]} - - - - +
- -
즐겨찾기 한 코멘트 목록
{dummyComments.map((comment, index) => ( @@ -93,38 +65,3 @@ const Comments = () => { }; export default Comments; - -const characterList = ["웅이", "앙글이", "티바노"]; - -const HeaderWrapper = styled.div` - display: flex; - align-items: center; - justify-content: space-between; - margin-bottom: 20px; -`; - -const CenterContainer = styled.div` - position: absolute; - left: 50%; - transform: translateX(-50%); - width: 160px; /* 고정 너비로 좌우 아이콘 위치 유지 */ - display: flex; - align-items: center; - justify-content: space-between; - color: #2d3552; - font-weight: 500; - font-size: 1.2rem; -`; - -const Name = styled.span` - flex: 1; - text-align: center; -`; - -const Placeholder = styled.div` - width: 28px; /* 오른쪽 균형용 */ -`; - -const ClickableIcon = styled.div` - cursor: pointer; -`; From 67c78c42407a48dc6dab877d09f46c1189306435 Mon Sep 17 00:00:00 2001 From: jungsunbeen Date: Sat, 31 May 2025 16:32:02 +0900 Subject: [PATCH 08/15] =?UTF-8?q?feat:=20=ED=97=A4=EB=8D=94=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=EC=9D=98=20props=20=EA=B5=AC?= =?UTF-8?q?=EC=A1=B0=20=EA=B0=9C=EC=84=A0=20=EB=B0=8F=20=ED=95=B4=EC=8B=9C?= =?UTF-8?q?=ED=83=9C=EA=B7=B8=20=EC=83=81=EC=84=B8=20=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/diary/Header.tsx | 12 +++++------ src/pages/collection/HashtagDetail.tsx | 29 ++++++++++++++++++++++++++ src/pages/collection/Hashtags.tsx | 13 ++++++++---- 3 files changed, 44 insertions(+), 10 deletions(-) create mode 100644 src/pages/collection/HashtagDetail.tsx diff --git a/src/components/diary/Header.tsx b/src/components/diary/Header.tsx index b6b6a5d..38dbf35 100644 --- a/src/components/diary/Header.tsx +++ b/src/components/diary/Header.tsx @@ -12,7 +12,11 @@ interface HeaderProps { setCurrentIndex: React.Dispatch>; } -const Header = ({ characterList, currentIndex, setCurrentIndex }: HeaderProps) => { +const Header = ({ + characterList, + currentIndex, + setCurrentIndex, +}: HeaderProps) => { const navigate = useNavigate(); const goPrev = () => { @@ -27,11 +31,7 @@ const Header = ({ characterList, currentIndex, setCurrentIndex }: HeaderProps) = return ( - navigate("/")} - /> + navigate("/")} /> diff --git a/src/pages/collection/HashtagDetail.tsx b/src/pages/collection/HashtagDetail.tsx new file mode 100644 index 0000000..dba5f58 --- /dev/null +++ b/src/pages/collection/HashtagDetail.tsx @@ -0,0 +1,29 @@ +import { useState } from "react"; +import Header from "../../components/diary/Header"; +import { Body } from "../DiaryDetail"; + +const characterList = [ + "슬픔", + "행복", + "기쁨", + "사랑", + "우정", + "추억", + "여행", + "일상", + "꿈", +]; + +const HashtagDetail = () => { + const [currentIndex, setCurrentIndex] = useState(0); + return ( + +
+ + ); +}; +export default HashtagDetail; diff --git a/src/pages/collection/Hashtags.tsx b/src/pages/collection/Hashtags.tsx index e8e96d1..a0d7159 100644 --- a/src/pages/collection/Hashtags.tsx +++ b/src/pages/collection/Hashtags.tsx @@ -1,9 +1,14 @@ +import { IoHomeOutline } from "react-icons/io5"; +import { Body } from "../DiaryDetail"; +import { useNavigate } from "react-router-dom"; + const Hashtags = () => { + const navigate = useNavigate(); return ( - <> - <>Hashtags -

일단 없는 걸로

- + + navigate("/")} /> +
해시태그 목록
+ ); }; export default Hashtags; From d29c89f1eacbdead5a7a2ff410f6623483748201 Mon Sep 17 00:00:00 2001 From: jungsunbeen Date: Sat, 31 May 2025 16:33:29 +0900 Subject: [PATCH 09/15] =?UTF-8?q?feat:=20=ED=95=B4=EC=8B=9C=ED=83=9C?= =?UTF-8?q?=EA=B7=B8=20=EC=83=81=EC=84=B8=20=ED=8E=98=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?=EB=9D=BC=EC=9A=B0=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/App.tsx b/src/App.tsx index a45430c..e5c923c 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -12,6 +12,7 @@ import styled from "styled-components"; import WritingPage from "./pages/writing/WritingPage"; import Testpage from "./pages/Testpage"; import EditPage from "./pages/writing/EditPage"; +import HashtagDetail from "./pages/collection/HashtagDetail"; function App() { return ( @@ -29,6 +30,7 @@ function App() { } /> } /> + } /> } /> From 191291535c802f04172b2b16b731b8438bb32408 Mon Sep 17 00:00:00 2001 From: jungsunbeen Date: Sat, 31 May 2025 16:37:02 +0900 Subject: [PATCH 10/15] =?UTF-8?q?feat:=20=EB=8B=A4=EC=9D=B4=EC=96=B4?= =?UTF-8?q?=EB=A6=AC=20=EC=83=81=EC=84=B8=20=ED=8E=98=EC=9D=B4=EC=A7=80?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=ED=83=9C=EA=B7=B8=20=EB=B0=95=EC=8A=A4=20?= =?UTF-8?q?=EB=B0=8F=20=ED=83=9C=EA=B7=B8=20=EC=BB=B4=ED=8F=AC=EB=84=8C?= =?UTF-8?q?=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/DiaryDetail.tsx | 4 ++-- src/pages/collection/Hashtags.tsx | 9 ++++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/pages/DiaryDetail.tsx b/src/pages/DiaryDetail.tsx index 4cffa36..27f914f 100644 --- a/src/pages/DiaryDetail.tsx +++ b/src/pages/DiaryDetail.tsx @@ -169,13 +169,13 @@ const Title = styled.h2` border-radius: 8px; `; -const TagBox = styled.div` +export const TagBox = styled.div` display: flex; gap: 8px; flex-wrap: wrap; `; -const Tag = styled.span` +export const Tag = styled.span` background: #ffffff; color: #2563eb; padding: 6px 12px; diff --git a/src/pages/collection/Hashtags.tsx b/src/pages/collection/Hashtags.tsx index a0d7159..cbd98cb 100644 --- a/src/pages/collection/Hashtags.tsx +++ b/src/pages/collection/Hashtags.tsx @@ -1,13 +1,20 @@ import { IoHomeOutline } from "react-icons/io5"; -import { Body } from "../DiaryDetail"; +import { Body, Tag, TagBox } from "../DiaryDetail"; import { useNavigate } from "react-router-dom"; +const dummyHashtags = Array.from({ length: 50 }, (_, i) => `더미태그${i + 1}`); + const Hashtags = () => { const navigate = useNavigate(); return ( navigate("/")} />
해시태그 목록
+ + {dummyHashtags.map((tag, idx) => ( + #{tag} + ))} + ); }; From 6dfddbcb116cafc89f2aa2e01bfe878e6c0d4a05 Mon Sep 17 00:00:00 2001 From: jungsunbeen Date: Sat, 31 May 2025 16:37:48 +0900 Subject: [PATCH 11/15] =?UTF-8?q?fix:=20=ED=95=B4=EC=8B=9C=ED=83=9C?= =?UTF-8?q?=EA=B7=B8=20=EC=83=81=EC=84=B8=20=ED=8E=98=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?=EB=9D=BC=EC=9A=B0=ED=8A=B8=20=EA=B2=BD=EB=A1=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/App.tsx b/src/App.tsx index e5c923c..f976809 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -30,7 +30,7 @@ function App() { } /> } /> - } /> + } /> } /> From 8afde0773f936e1a0405eaaf76e5fa0a02f4321c Mon Sep 17 00:00:00 2001 From: jungsunbeen Date: Sat, 31 May 2025 16:38:46 +0900 Subject: [PATCH 12/15] =?UTF-8?q?feat:=20=ED=95=B4=EC=8B=9C=ED=83=9C?= =?UTF-8?q?=EA=B7=B8=20=EB=AA=A9=EB=A1=9D=EC=97=90=EC=84=9C=20=ED=83=9C?= =?UTF-8?q?=EA=B7=B8=20=ED=81=B4=EB=A6=AD=20=EC=8B=9C=20=EC=83=81=EC=84=B8?= =?UTF-8?q?=20=ED=8E=98=EC=9D=B4=EC=A7=80=EB=A1=9C=20=EC=9D=B4=EB=8F=99=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/collection/Hashtags.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/pages/collection/Hashtags.tsx b/src/pages/collection/Hashtags.tsx index cbd98cb..12afc32 100644 --- a/src/pages/collection/Hashtags.tsx +++ b/src/pages/collection/Hashtags.tsx @@ -12,7 +12,9 @@ const Hashtags = () => {
해시태그 목록
{dummyHashtags.map((tag, idx) => ( - #{tag} + navigate(`/hashtag/${(idx + 1).toString()}`)}> + #{tag} + ))} From 3eff51a3973d535e99d83c31339567804d3924cc Mon Sep 17 00:00:00 2001 From: jungsunbeen Date: Sat, 31 May 2025 16:43:24 +0900 Subject: [PATCH 13/15] =?UTF-8?q?feat:=20=ED=95=B4=EC=8B=9C=ED=83=9C?= =?UTF-8?q?=EA=B7=B8=20=EC=83=81=EC=84=B8=20=ED=8E=98=EC=9D=B4=EC=A7=80?= =?UTF-8?q?=EC=97=90=20=EB=8B=A4=EC=9D=B4=EC=96=B4=EB=A6=AC=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/collection/HashtagDetail.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/pages/collection/HashtagDetail.tsx b/src/pages/collection/HashtagDetail.tsx index dba5f58..b86d958 100644 --- a/src/pages/collection/HashtagDetail.tsx +++ b/src/pages/collection/HashtagDetail.tsx @@ -1,6 +1,8 @@ import { useState } from "react"; import Header from "../../components/diary/Header"; import { Body } from "../DiaryDetail"; +import DiaryList from "../../components/home/DiaryList"; +import { TheFooter } from "../../components/common/TheFooter"; const characterList = [ "슬픔", @@ -23,6 +25,7 @@ const HashtagDetail = () => { currentIndex={currentIndex} setCurrentIndex={setCurrentIndex} /> + ); }; From 4835d860ff9d2b36a8200e2fe94392ef2254b48f Mon Sep 17 00:00:00 2001 From: jungsunbeen Date: Sat, 31 May 2025 16:46:41 +0900 Subject: [PATCH 14/15] =?UTF-8?q?fix:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20TheFooter=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20?= =?UTF-8?q?=EC=9E=84=ED=8F=AC=ED=8A=B8=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/collection/HashtagDetail.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/collection/HashtagDetail.tsx b/src/pages/collection/HashtagDetail.tsx index b86d958..73f1fd3 100644 --- a/src/pages/collection/HashtagDetail.tsx +++ b/src/pages/collection/HashtagDetail.tsx @@ -2,7 +2,6 @@ import { useState } from "react"; import Header from "../../components/diary/Header"; import { Body } from "../DiaryDetail"; import DiaryList from "../../components/home/DiaryList"; -import { TheFooter } from "../../components/common/TheFooter"; const characterList = [ "슬픔", From 1eec332e321684208704a76a12186ea5b3d65c8e Mon Sep 17 00:00:00 2001 From: jungsunbeen Date: Sat, 31 May 2025 16:47:26 +0900 Subject: [PATCH 15/15] =?UTF-8?q?fix:=20.github/workflows=EC=97=90?= =?UTF-8?q?=EC=84=9C=20closed-issue.yml=20=ED=8C=8C=EC=9D=BC=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/closed-issue.yml | 41 ------------------------------ 1 file changed, 41 deletions(-) delete mode 100644 .github/workflows/closed-issue.yml diff --git a/.github/workflows/closed-issue.yml b/.github/workflows/closed-issue.yml deleted file mode 100644 index 375418c..0000000 --- a/.github/workflows/closed-issue.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: Close Mentioned Issues if Checklist Complete - -on: - pull_request: - types: [closed] - -permissions: - issues: write - pull-requests: read - contents: read - -jobs: - close-mentioned-issues: - if: github.event.pull_request.merged == true - runs-on: ubuntu-latest - steps: - - name: Check if checklist is fully complete - id: checklist - run: | - BODY="${{ github.event.pull_request.body }}" - UNCHECKED=$(echo "$BODY" | grep -c '\[ \]') - if [ "$UNCHECKED" -eq 0 ]; then - echo "checklist-complete=true" >> $GITHUB_OUTPUT - else - echo "checklist-complete=false" >> $GITHUB_OUTPUT - fi - - - name: Extract issue numbers - id: issues - run: | - BODY="${{ github.event.pull_request.body }}" - echo "ISSUES=$(echo "$BODY" | grep -oE '#[0-9]+' | tr -d '#' | tr '\n' ' ')" >> $GITHUB_OUTPUT - - - name: Close mentioned issues - if: steps.checklist.outputs.checklist-complete == 'true' - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - for issue in ${{ steps.issues.outputs.ISSUES }}; do - gh issue close "$issue" --repo "${{ github.repository }}" - done