From 27f36522331932ca0828b8194998847b6ba6b562 Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Tue, 6 May 2025 21:07:23 +0900 Subject: [PATCH 001/140] =?UTF-8?q?design(components/layout/Home.tsx):=20?= =?UTF-8?q?=ED=99=88=20=ED=99=94=EB=A9=B4=20UI/UX=20=EA=B8=B0=EB=B3=B8=20?= =?UTF-8?q?=EB=94=94=EC=9E=90=EC=9D=B8=20=EC=99=84=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit TODO: 1. 버튼, 링크 등의 이벤트 요소 만들기 2. 현재는 대부분 요소의 위치나 크기가 픽셀 단위로 하드코딩되어 있는데 이를 브라우저 크기에 맞게 자동 조정되도록 만들기 참고사항: 1. public 디렉토리에 home화면 제작에 사용된 이미지와 로고 이미지를 추가하였음. 2. 기존의 components/layout/MoaLogo.tsx는 더이상 필요 없어졌기 때문에 삭제하였음. --- public/home_img/chat.png | Bin 0 -> 7405 bytes public/home_img/diagram.png | Bin 0 -> 4679 bytes public/home_img/discord_icon.png | Bin 0 -> 12870 bytes public/home_img/email_icon.png | Bin 0 -> 5737 bytes public/home_img/github_icon.png | Bin 0 -> 4219 bytes public/home_img/memo.png | Bin 0 -> 145913 bytes public/home_img/recording.png | Bin 0 -> 4710 bytes public/home_img/textedit.png | Bin 0 -> 1874 bytes public/logo.png | Bin 8927 -> 0 bytes public/moanote_logo/logo1.png | Bin 0 -> 7646 bytes public/moanote_logo/logo2.png | Bin 0 -> 203566 bytes src/app/layout.tsx | 27 ++-- src/app/login/page.tsx | 16 +++ src/app/page.tsx | 22 +--- src/components/layout/Home.tsx | 202 ++++++++++++++++++++++++++++++ src/components/layout/MoaLogo.tsx | 20 --- 16 files changed, 237 insertions(+), 50 deletions(-) create mode 100644 public/home_img/chat.png create mode 100644 public/home_img/diagram.png create mode 100644 public/home_img/discord_icon.png create mode 100644 public/home_img/email_icon.png create mode 100644 public/home_img/github_icon.png create mode 100644 public/home_img/memo.png create mode 100644 public/home_img/recording.png create mode 100644 public/home_img/textedit.png delete mode 100644 public/logo.png create mode 100644 public/moanote_logo/logo1.png create mode 100644 public/moanote_logo/logo2.png create mode 100644 src/app/login/page.tsx create mode 100644 src/components/layout/Home.tsx delete mode 100644 src/components/layout/MoaLogo.tsx diff --git a/public/home_img/chat.png b/public/home_img/chat.png new file mode 100644 index 0000000000000000000000000000000000000000..372a53ed9a9778afba0cbd5afd0a41962552ffb7 GIT binary patch literal 7405 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 literal 0 HcmV?d00001 diff --git a/public/home_img/diagram.png b/public/home_img/diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..39c240d377166037f5d4331abf6f09a2ee822f59 GIT binary patch literal 4679 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ξ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 literal 0 HcmV?d00001 diff --git a/public/home_img/email_icon.png b/public/home_img/email_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d715e5e76cbe03bda90deeeef25d073bb02c5312 GIT binary patch literal 5737 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 blt}zPZ5gk|qoxdU00000NkvXXu0mjfrHm#< literal 0 HcmV?d00001 diff --git a/public/home_img/github_icon.png b/public/home_img/github_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d354fa642ef6176be6b3311fac202033a0e2b4a2 GIT binary patch literal 4219 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%0Dfnf*TI4nvy1T0Npy5q76(a__$_`VgO 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 literal 0 HcmV?d00001 diff --git a/public/home_img/recording.png b/public/home_img/recording.png new file mode 100644 index 0000000000000000000000000000000000000000..6de444d13b1ae032730668f8566e75a5416cc4bd GIT binary patch literal 4710 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 literal 0 HcmV?d00001 diff --git a/public/logo.png b/public/logo.png deleted file mode 100644 index f95278ea26770d68e0bd583cf7c2ddb1d6e4a4ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8927 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 diff --git a/public/moanote_logo/logo1.png b/public/moanote_logo/logo1.png new file mode 100644 index 0000000000000000000000000000000000000000..ce6982482cb5da8a36ac86800ee4ec42e327db21 GIT binary patch literal 7646 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 { return ( - - - - - - - - - {children} - + + + + + + + + + + {/* {children} */} + ); } diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx new file mode 100644 index 0000000..da73d4c --- /dev/null +++ b/src/app/login/page.tsx @@ -0,0 +1,16 @@ +export default function Login() { + return ( +

+
+ 모아노트 로그인 +
+
+ + + + +
+
) +} diff --git a/src/app/page.tsx b/src/app/page.tsx index da73d4c..2bfd7de 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,16 +1,6 @@ -export default function Login() { - return ( -
-
- 모아노트 로그인 -
-
- - - - -
-
) -} +export default function RootPage() { + return
+} \ No newline at end of file diff --git a/src/components/layout/Home.tsx b/src/components/layout/Home.tsx new file mode 100644 index 0000000..872d496 --- /dev/null +++ b/src/components/layout/Home.tsx @@ -0,0 +1,202 @@ +export default function HomeTopMenu() { + return ( +
+
+
+ +

+ 모아노트 +

+
+
+
+

+ 서비스 소개 +

+
+
+

+ 자주 묻는 질문 +

+
+
+

+ 새로운 소식 ↗ +

+
+
+
+
+

+ 로그인 +

+
+
+

+ 회원가입 +

+
+
+
+
+
+

+ 세상의 모든 +
+ 아이디어를 모아 +

+

+ 모아노트 +

+
+
+ + + +

+ 시작하기 → +

+
+
+ +
+
+
+
+

+ + 당신이 상상하던 모든 아이디어,{" "} + +
+ + 모아 AI와 함께 펼치세요 + +

+
+
+ +

+ AI 채팅 +

+

+ + 자동 텍스트 완성, 자동 다이어 그램 그리기, 문서 요약.. + +
+
+ + 모아 AI와 대화하여 무엇이든지 만들 수 있습니다. + +

+ +

+ AI 음성 인식 +

+

+ + 회의 내용을 녹음하여 모아 AI에게 줘보세요.{" "} + +
+
+ + 핵심을 요약하고 키워드를 정리해 줍니다. + +

+
+
+
+
+

+ 손쉬운 도표 편집 +

+

+ 다이어그램 +

+ +

+ 마크다운 문법과 완벽 호환{" "} +

+

+ 텍스트 편집 +

+ +

+ 글과 그림, 다양한 편집 기능으로 자유롭게 아이디어를 펼치세요 +

+
+
+
+

+ 모아노트 + 와 함께 +
+ + 여러분의 아이디어를{" "} + +
+ 모아보세요! +

+ +
+
+

+ 더 알아보기 ↗ +

+
+
+
+
+ +
+
+ +
+
+ +
+
+
); +} \ No newline at end of file diff --git a/src/components/layout/MoaLogo.tsx b/src/components/layout/MoaLogo.tsx deleted file mode 100644 index 06cf35d..0000000 --- a/src/components/layout/MoaLogo.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import Image from "next/image"; - -export default function MoaLogo() { - return -} \ No newline at end of file From 9b181cf972c4d4ac6a09f4c98a2a00e2e189f992 Mon Sep 17 00:00:00 2001 From: SONY-STRING Date: Wed, 7 May 2025 04:01:51 +0900 Subject: [PATCH 002/140] =?UTF-8?q?chore:=20=ED=95=B4=EA=B2=B0=EB=90=9C=20?= =?UTF-8?q?todo=20=EC=A3=BC=EC=84=9D=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/useDocumentSync.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/hooks/useDocumentSync.ts b/src/hooks/useDocumentSync.ts index f74a9f1..52ddc4c 100644 --- a/src/hooks/useDocumentSync.ts +++ b/src/hooks/useDocumentSync.ts @@ -15,7 +15,6 @@ const SERVER_WS_URL = process.env.NEXT_PUBLIC_SERVER_WS_URL; const useDocumentSync = (user:User, uuid:string, update:(content: string)=>void) => { const timestampRef = useRef(0); const clientRef = useRef(null); - // TODO@ : 이 부분은 나중에 서버에서 받아온 uuid로 바꿔야함 const docsSubWith = { 'docId': uuid, 'userId': user.id, From f95e561af023395af04e1f5b3dbdf8af6b6bfd81 Mon Sep 17 00:00:00 2001 From: SONY-STRING Date: Wed, 7 May 2025 04:04:35 +0900 Subject: [PATCH 003/140] =?UTF-8?q?feat(useDocumentSync):=20BE=20=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EB=B3=80=EA=B2=BD=EB=90=9C=20subscribe=20destinati?= =?UTF-8?q?on=20=EC=97=90=20=EB=8C=80=EC=9D=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - https://github.com/CBNU-MoaNote-CapstonDesign/backend/issues/51 BE 에서 해당 이슈에 대응하면서 subscribe destination 이 수정되었기에 이에 대응함 --- src/hooks/useDocumentSync.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/hooks/useDocumentSync.ts b/src/hooks/useDocumentSync.ts index 52ddc4c..552205d 100644 --- a/src/hooks/useDocumentSync.ts +++ b/src/hooks/useDocumentSync.ts @@ -44,7 +44,7 @@ const useDocumentSync = (user:User, uuid:string, update:(content: string)=>void) onConnect: () => { if (process.env.DEBUG==='true') toast("연결시도 끝"); - client.subscribe(`/app/docs/${docsSubWith.docId}`, message => { + client.subscribe(`/app/docs/participate/${docsSubWith.docId}`, message => { try { const body = JSON.parse(message.body); sync(body); @@ -53,6 +53,15 @@ const useDocumentSync = (user:User, uuid:string, update:(content: string)=>void) toast.error("받은 정보의 body가 불충분함"); } }, {'participantUserId': docsSubWith['userId']}); + client.subscribe(`/topic/docs/${docsSubWith.docId}`, (message) => { + try { + const body = JSON.parse(message.body); + sync(body); + } catch { + // body not fit + toast.error("받은 정보의 body가 불충분함"); + } + }); }, onWebSocketError: (event) => { toast.error("서버와의 연결이 실패하였습니다.",{position:"bottom-right"}); From 3df632c83770f790cd9e7aa10fb2cd8e9f6d12c9 Mon Sep 17 00:00:00 2001 From: Kim Minseok Date: Wed, 7 May 2025 13:47:43 +0900 Subject: [PATCH 004/140] =?UTF-8?q?fix:=20note=EB=A5=BC=20=EC=B5=9C?= =?UTF-8?q?=EC=B4=88=EB=A1=9C=20=EB=B6=88=EB=9F=AC=EC=98=AC=20=EB=95=8C=20?= =?UTF-8?q?=ED=81=B4=EB=9D=BC=EC=9D=B4=EC=96=B8=ED=8A=B8=EC=97=90=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9=20=EC=95=88=EB=90=98=EB=8A=94=20=EB=AC=B8?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 최초로 note를 받아올 때는 강제로 덮어씌우도록 구현하였습니다. close #39 --- src/components/document/DocumentRenderer.tsx | 2 +- src/hooks/useDocumentSync.ts | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/components/document/DocumentRenderer.tsx b/src/components/document/DocumentRenderer.tsx index a799b18..5199fcd 100644 --- a/src/components/document/DocumentRenderer.tsx +++ b/src/components/document/DocumentRenderer.tsx @@ -8,7 +8,7 @@ import DocumentTitle from "@/components/document/DocumentTitle"; import useDocumentSync from "@/hooks/useDocumentSync"; export default function DocumentRenderer({user, uuid}: { user:User, uuid: string }) { - const [document, setDocument] = useState({title: uuid, id: uuid, content: "편집하려면 여기 클릭"}); // 현재 문서 내용 + const [document, setDocument] = useState({title: uuid, id: uuid, content: ""}); // 현재 문서 내용 const [isEditing, setEditing] = useState(false); // 현재 편집중인가? const startEditing = () => setEditing(true); diff --git a/src/hooks/useDocumentSync.ts b/src/hooks/useDocumentSync.ts index 552205d..c892590 100644 --- a/src/hooks/useDocumentSync.ts +++ b/src/hooks/useDocumentSync.ts @@ -26,6 +26,11 @@ const useDocumentSync = (user:User, uuid:string, update:(content: string)=>void) debugToast(`received l[${timestampRef.current}] r[${received.timeStamp}] ${received.value.content}`, {position:"bottom-right"}); } }; + const init = (received:{stateId:string, timeStamp: number, value:{content:string}}) => { + update(received.value.content); + timestampRef.current = received.timeStamp; + debugToast(`received l[${timestampRef.current}] r[${received.timeStamp}] ${received.value.content}`, {position:"bottom-right"}); + }; const publish = (content: string) => { if (clientRef.current && clientRef.current.connected) { const updatedTimestamp = timestampRef.current + 1; @@ -47,7 +52,7 @@ const useDocumentSync = (user:User, uuid:string, update:(content: string)=>void) client.subscribe(`/app/docs/participate/${docsSubWith.docId}`, message => { try { const body = JSON.parse(message.body); - sync(body); + init(body); } catch { // body not fit toast.error("받은 정보의 body가 불충분함"); From d85403ea4655747a5594c61e27525c2edaad7160 Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Wed, 7 May 2025 15:28:00 +0900 Subject: [PATCH 005/140] =?UTF-8?q?design:=20=EB=B0=98=EC=9D=91=ED=98=95?= =?UTF-8?q?=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20=EC=99=84=EC=84=B1=20?= =?UTF-8?q?=EB=B0=8F=20=EC=97=AC=EB=9F=AC=20=EC=BB=B4=ED=8F=AC=EB=84=8C?= =?UTF-8?q?=ED=8A=B8=EB=A1=9C=20=EB=82=98=EB=88=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/layout.tsx | 18 +- src/components/layout/Home.tsx | 202 ------------------ src/components/layout/Home/BasicIntroduce.tsx | 59 +++++ src/components/layout/Home/ContactLink.tsx | 24 +++ src/components/layout/Home/Final.tsx | 39 ++++ src/components/layout/Home/Main.tsx | 49 +++++ src/components/layout/Home/MoaAIIntroduce.tsx | 79 +++++++ .../layout/Home/TopNavigationBar.tsx | 59 +++++ 8 files changed, 324 insertions(+), 205 deletions(-) delete mode 100644 src/components/layout/Home.tsx create mode 100644 src/components/layout/Home/BasicIntroduce.tsx create mode 100644 src/components/layout/Home/ContactLink.tsx create mode 100644 src/components/layout/Home/Final.tsx create mode 100644 src/components/layout/Home/Main.tsx create mode 100644 src/components/layout/Home/MoaAIIntroduce.tsx create mode 100644 src/components/layout/Home/TopNavigationBar.tsx diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 166dee7..2278bc2 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -3,7 +3,12 @@ import "./globals.css"; import React from "react"; import {Toaster} from "react-hot-toast"; -import Home from "@/components/layout/Home"; +import TopNavigationBar from "@/components/layout/Home/TopNavigationBar"; +import Main from "@/components/layout/Home/Main" +import BasicIntroduce from "@/components/layout/Home/BasicIntroduce" +import MoaAIIntroduce from "@/components/layout/Home/MoaAIIntroduce" +import Final from "@/components/layout/Home/Final" +import ContactLink from "@/components/layout/Home/ContactLink" export const metadata: Metadata = { title: "모아노트", @@ -24,9 +29,16 @@ export default function RootLayout({ - - +
+ + +
+ + + + {/* {children} */} +
); diff --git a/src/components/layout/Home.tsx b/src/components/layout/Home.tsx deleted file mode 100644 index 872d496..0000000 --- a/src/components/layout/Home.tsx +++ /dev/null @@ -1,202 +0,0 @@ -export default function HomeTopMenu() { - return ( -
-
-
- -

- 모아노트 -

-
-
-
-

- 서비스 소개 -

-
-
-

- 자주 묻는 질문 -

-
-
-

- 새로운 소식 ↗ -

-
-
-
-
-

- 로그인 -

-
-
-

- 회원가입 -

-
-
-
-
-
-

- 세상의 모든 -
- 아이디어를 모아 -

-

- 모아노트 -

-
-
- - - -

- 시작하기 → -

-
-
- -
-
-
-
-

- - 당신이 상상하던 모든 아이디어,{" "} - -
- - 모아 AI와 함께 펼치세요 - -

-
-
- -

- AI 채팅 -

-

- - 자동 텍스트 완성, 자동 다이어 그램 그리기, 문서 요약.. - -
-
- - 모아 AI와 대화하여 무엇이든지 만들 수 있습니다. - -

- -

- AI 음성 인식 -

-

- - 회의 내용을 녹음하여 모아 AI에게 줘보세요.{" "} - -
-
- - 핵심을 요약하고 키워드를 정리해 줍니다. - -

-
-
-
-
-

- 손쉬운 도표 편집 -

-

- 다이어그램 -

- -

- 마크다운 문법과 완벽 호환{" "} -

-

- 텍스트 편집 -

- -

- 글과 그림, 다양한 편집 기능으로 자유롭게 아이디어를 펼치세요 -

-
-
-
-

- 모아노트 - 와 함께 -
- - 여러분의 아이디어를{" "} - -
- 모아보세요! -

- -
-
-

- 더 알아보기 ↗ -

-
-
-
-
- -
-
- -
-
- -
-
-
); -} \ No newline at end of file diff --git a/src/components/layout/Home/BasicIntroduce.tsx b/src/components/layout/Home/BasicIntroduce.tsx new file mode 100644 index 0000000..b136340 --- /dev/null +++ b/src/components/layout/Home/BasicIntroduce.tsx @@ -0,0 +1,59 @@ +export default function Introduce() { + return ( + //
+ //
+ //
+ //

+ // 손쉬운 도표 편집 + //

+ //

+ // 다이어그램 + //

+ // + //

+ // 마크다운 문법과 완벽 호환{" "} + //

+ //

+ // 텍스트 편집 + //

+ // + //

+ // 글과 그림, 다양한 편집 기능으로 자유롭게 아이디어를 펼치세요 + //

+ //
+
+
+ 글과 그림, 다양한 편집 기능으로
+ 자유롭게 아이디어를 펼치세요 +
+
+
+ chat +

텍스트 편집

+

+ 마크다운 문법과 완벽 호환

+

+
+
+ recording +

다이어그램

+

+ 손쉬운 도표 편집 +

+
+
+
+ ); +} \ No newline at end of file diff --git a/src/components/layout/Home/ContactLink.tsx b/src/components/layout/Home/ContactLink.tsx new file mode 100644 index 0000000..449ba37 --- /dev/null +++ b/src/components/layout/Home/ContactLink.tsx @@ -0,0 +1,24 @@ +export default function ContactLink() { + return ( +
+
+ +
+
+ +
+
+ +
+
+ ); +} \ No newline at end of file diff --git a/src/components/layout/Home/Final.tsx b/src/components/layout/Home/Final.tsx new file mode 100644 index 0000000..84551a0 --- /dev/null +++ b/src/components/layout/Home/Final.tsx @@ -0,0 +1,39 @@ +export default function Final() { + return ( + //
+ //

+ // 모아노트 + // 와 함께 + //
+ // + // 여러분의 아이디어를{" "} + // + //
+ // 모아보세요! + //

+ // + //
+ //
+ //

+ // 더 알아보기 ↗ + //

+ //
+ //
+
+
+

+ 모아노트와 함께
+ 여러분의 아이디어를
+ 모아보세요! +

+ +
+ logo2 +
+ ); +} \ No newline at end of file diff --git a/src/components/layout/Home/Main.tsx b/src/components/layout/Home/Main.tsx new file mode 100644 index 0000000..6d0da05 --- /dev/null +++ b/src/components/layout/Home/Main.tsx @@ -0,0 +1,49 @@ +export default function Main() { + return ( + //
+ //
+ //

+ // 세상의 모든 + //
+ // 아이디어를 모아 + //

+ //

+ // 모아노트 + //

+ //
+ //
+ // + // + // + //

+ // 시작하기 → + //

+ //
+ //
+ // + //
+ //
+
+
+

+ 세상의 모든
아이디어를 모아 +

+

모아노트

+ +
+ memo +
+ ); +} \ No newline at end of file diff --git a/src/components/layout/Home/MoaAIIntroduce.tsx b/src/components/layout/Home/MoaAIIntroduce.tsx new file mode 100644 index 0000000..27245ce --- /dev/null +++ b/src/components/layout/Home/MoaAIIntroduce.tsx @@ -0,0 +1,79 @@ +export default function MoaAIIntroduce() { + return ( + //
+ //

+ // + // 당신이 상상하던 모든 아이디어,{" "} + // + //
+ // + // 모아 AI와 함께 펼치세요 + // + //

+ //
+ //
+ // + //

+ // AI 채팅 + //

+ //

+ // + // 자동 텍스트 완성, 자동 다이어 그램 그리기, 문서 요약.. + // + //
+ //
+ // + // 모아 AI와 대화하여 무엇이든지 만들 수 있습니다. + // + //

+ // + //

+ // AI 음성 인식 + //

+ //

+ // + // 회의 내용을 녹음하여 모아 AI에게 줘보세요.{" "} + // + //
+ //
+ // + // 핵심을 요약하고 키워드를 정리해 줍니다. + // + //

+ //
+ +
+
+ 당신이 상상하던 모든 아이디어,
+ 모아 AI와 함께 펼치세요 +
+ +
+
+ chat +

AI 채팅

+

+ 자동 텍스트 완성, 자동 다이어그램 그리기, 문서 요약..

+ 모아 AI와 대화하여 무엇이든지 만들 수 있습니다. +

+
+
+ recording +

AI 음성인식

+

+ 회의 내용을 녹음하여 모아 AI에게 줘보세요.

+ 핵심을 요약하고 키워드를 정리해 줍니다. +

+
+
+
+ ); +} \ No newline at end of file diff --git a/src/components/layout/Home/TopNavigationBar.tsx b/src/components/layout/Home/TopNavigationBar.tsx new file mode 100644 index 0000000..7831a48 --- /dev/null +++ b/src/components/layout/Home/TopNavigationBar.tsx @@ -0,0 +1,59 @@ +export default function TopNavigationBar() { + return ( + //
+ //
+ // + //

+ // 모아노트 + //

+ //
+ //
+ //
+ //

+ // 서비스 소개 + //

+ //
+ //
+ //

+ // 자주 묻는 질문 + //

+ //
+ //
+ //

+ // 새로운 소식 ↗ + //

+ //
+ //
+ //
+ //
+ //

+ // 로그인 + //

+ //
+ //
+ //

+ // 회원가입 + //

+ //
+ //
+ //
+
+
+ logo +

모아노트

+
+
+

서비스 소개

+

자주 묻는 질문

+

새로운 소식 ↗

+
+
+

로그인

+

회원가입

+
+
+ ); +} \ No newline at end of file From 605fe4a85ebe801748fc65d364dfed3c0ca8a183 Mon Sep 17 00:00:00 2001 From: SONY-STRING Date: Sat, 10 May 2025 20:46:14 +0900 Subject: [PATCH 006/140] =?UTF-8?q?feat(component/document):=20`MarkdownEd?= =?UTF-8?q?itor`=20=EC=97=90=EC=84=9C=20=EC=BB=A4=EC=84=9C=20=EC=9C=84?= =?UTF-8?q?=EC=B9=98=EB=A5=BC=20=EC=B6=94=EC=A0=81=ED=95=98=EA=B2=8C=20?= =?UTF-8?q?=ED=95=A8=20#44?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - `MarkdownEditor` 에서 현재 커서의 위치를 추적해서 `cursorHandler` 콜백을 실행함 - `MarkdownEditor` 가 마운트 될 시에 prop 으로 전달받은 `lastCursorPosition` 을 통해 커서 위치를 초기화하도록 함 - 부모 컴포넌트인 `DocumentRender` 가 커서 위치를 state 로 관리하도록 함 - 관련 todo 제거 --- src/components/document/DocumentRenderer.tsx | 3 +++ src/components/document/MarkdownEditor.tsx | 26 ++++++++++++++------ 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/components/document/DocumentRenderer.tsx b/src/components/document/DocumentRenderer.tsx index 5199fcd..3ce1f73 100644 --- a/src/components/document/DocumentRenderer.tsx +++ b/src/components/document/DocumentRenderer.tsx @@ -10,6 +10,7 @@ import useDocumentSync from "@/hooks/useDocumentSync"; export default function DocumentRenderer({user, uuid}: { user:User, uuid: string }) { const [document, setDocument] = useState({title: uuid, id: uuid, content: ""}); // 현재 문서 내용 const [isEditing, setEditing] = useState(false); // 현재 편집중인가? + const [cursorPosition, setCursorPosition] = useState(0); // 커서 위치 const startEditing = () => setEditing(true); const endEditing = () => setEditing(false); @@ -40,6 +41,8 @@ export default function DocumentRenderer({user, uuid}: { user:User, uuid: string updateContent={(content) => { send(content); }} + lastCursorPosition={cursorPosition} + cursorHandler={setCursorPosition} /> ) : ( void), - updateBlur?: null | (() => void) + updateBlur?: null | (() => void), + lastCursorPosition: number, + cursorHandler: ((cursor: number) => void) }) { - const [, setCursor] = useState(0); const [content, setContent] = useState(initialContent ? initialContent : ""); + const [cursorPosition, setCursor] = useState(lastCursorPosition); const textAreaRef = useRef(null); - const handleCursor = () => { + const handleSelect = () => { const el = textAreaRef.current; - if (el) + if (el) { setCursor(el.selectionStart); + cursorHandler(el.selectionStart); + } } useEffect(() => { @@ -32,6 +37,13 @@ export function MarkdownEditor({initialContent, updateContent = null, updateBlur } }, [content]); + useEffect(() => { + if (textAreaRef.current) { + textAreaRef.current.focus(); + textAreaRef.current.setSelectionRange(cursorPosition, cursorPosition); + } + }, [cursorPosition, textAreaRef]); + // TODO : change 발생 시 api 로 백엔드 호출해 적용시키기, 상위 컴포넌트에서 할 것 const handleChange = () => { const el = textAreaRef.current; @@ -54,7 +66,7 @@ export function MarkdownEditor({initialContent, updateContent = null, updateBlur value={content ? content : ""} onBlur={handleBlur} onChange={handleChange} - onSelect={handleCursor} + onSelect={handleSelect} ref={textAreaRef} autoFocus={true}/>
From 84a80d4f2da480db1b1174f423dd0028e84062d5 Mon Sep 17 00:00:00 2001 From: SONY-STRING Date: Sat, 10 May 2025 20:50:49 +0900 Subject: [PATCH 007/140] =?UTF-8?q?deps(assert):=20`tiny-invariant`=20?= =?UTF-8?q?=EC=9D=98=EC=A1=B4=EC=84=B1=20=EC=B6=94=EA=B0=80;=20dev=20mode?= =?UTF-8?q?=20=EC=97=90=EC=84=9C=EB=A7=8C=20=EB=8F=99=EC=9E=91=ED=95=98?= =?UTF-8?q?=EB=8A=94=20assert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - https://www.npmjs.com/package/tiny-invariant --- package-lock.json | 8 +++++++- package.json | 3 ++- src/components/document/MarkdownEditor.tsx | 2 ++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1b0ae82..f19e012 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,8 @@ "react-icons": "^5.5.0", "react-markdown": "^10.1.0", "react-textarea-autosize": "^8.5.9", - "stompjs": "^2.3.3" + "stompjs": "^2.3.3", + "tiny-invariant": "^1.3.3" }, "devDependencies": { "@eslint/eslintrc": "^3", @@ -9235,6 +9236,11 @@ "node": ">=6" } }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + }, "node_modules/tinyglobby": { "version": "0.2.12", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz", diff --git a/package.json b/package.json index 8ed1fc5..17f2bac 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,8 @@ "react-markdown": "^10.1.0", "stompjs": "^2.3.3", "react-icons": "^5.5.0", - "react-textarea-autosize": "^8.5.9" + "react-textarea-autosize": "^8.5.9", + "tiny-invariant": "^1.3.3" }, "devDependencies": { "@eslint/eslintrc": "^3", diff --git a/src/components/document/MarkdownEditor.tsx b/src/components/document/MarkdownEditor.tsx index b49ca84..383542b 100644 --- a/src/components/document/MarkdownEditor.tsx +++ b/src/components/document/MarkdownEditor.tsx @@ -1,3 +1,4 @@ +import invariant from 'tiny-invariant'; import {useEffect, useRef, useState} from "react"; import TextareaAutosize from "react-textarea-autosize"; //import toast from "react-hot-toast"; @@ -25,6 +26,7 @@ export function MarkdownEditor({initialContent, updateContent = null, updateBlur const handleSelect = () => { const el = textAreaRef.current; + invariant(el, "textAreaRef is null"); if (el) { setCursor(el.selectionStart); cursorHandler(el.selectionStart); From 60eef938842d907479ac7bb7705dca20359409d0 Mon Sep 17 00:00:00 2001 From: SONY-STRING Date: Sun, 11 May 2025 03:57:42 +0900 Subject: [PATCH 008/140] =?UTF-8?q?fix(component/document):=20`documentRen?= =?UTF-8?q?derer`=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=EC=97=90=EC=84=9C?= =?UTF-8?q?=20`MarkdownRenderer`=20=EB=A5=BC=20=ED=81=B4=EB=A6=AD=20?= =?UTF-8?q?=EC=8B=9C=EC=97=90=20=EC=88=98=EC=A0=95=20=EC=82=AC=ED=95=AD?= =?UTF-8?q?=EC=9D=84=20=EC=A0=84=ED=8C=8C=ED=95=98=EB=8A=94=20=ED=98=84?= =?UTF-8?q?=EC=83=81=20=ED=95=B4=EA=B2=B0=20#45?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 기존에는 `MarkdownEditor` 의 mount 시 `useEffect` 가 실행되며 조건없이 `updateContent` 를 호출하였음 - 또한 `updateContent` 는 `documentRenderer` 의 `send` 를 호출함 (`documentRenderer` 에서 그렇게 정의함) 따라서 실제로 수정이 일어나지 않았음에도 `MarkdownEditor` 가 호출될 시에 수정 사항을 외부로 전파함 - 따라서 문서 수정에 대한 `useEffect` 내부에서 `needSend` 조건을 체크하도록 변경 --- src/components/document/DocumentRenderer.tsx | 20 +++++++++++++++++--- src/components/document/MarkdownEditor.tsx | 15 ++++----------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/components/document/DocumentRenderer.tsx b/src/components/document/DocumentRenderer.tsx index 3ce1f73..f900ed2 100644 --- a/src/components/document/DocumentRenderer.tsx +++ b/src/components/document/DocumentRenderer.tsx @@ -1,6 +1,6 @@ "use client"; -import {useState} from "react"; +import {useEffect, useState} from "react"; import {Note} from "@/types/note"; import {MarkdownEditor} from "@/components/document/MarkdownEditor"; import {MarkdownRenderer} from "@/components/document/MarkdownRenderer"; @@ -11,6 +11,7 @@ export default function DocumentRenderer({user, uuid}: { user:User, uuid: string const [document, setDocument] = useState({title: uuid, id: uuid, content: ""}); // 현재 문서 내용 const [isEditing, setEditing] = useState(false); // 현재 편집중인가? const [cursorPosition, setCursorPosition] = useState(0); // 커서 위치 + const [needSend, setNeedSend] = useState(false); // 수정 사항을 보내야 하는지 const startEditing = () => setEditing(true); const endEditing = () => setEditing(false); @@ -31,15 +32,28 @@ export default function DocumentRenderer({user, uuid}: { user:User, uuid: string publish(content); } + useEffect(() => { + if (needSend) { + setNeedSend(false); + send(document.content); + } + /* + * needSend 는 dependency 에 포함하지 말아야 함. + * useEffect 수정 시 dependency 목록을 변경해야 하는 지 확인하는 것이 좋음 (경고가 꺼져있으므로 직접 확인해야 함) + */ + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [document.content, document.id, document.title, send]); + return (
{isEditing ? ( { - send(content); + setNeedSend(true); + setDocument({...document, content}); }} lastCursorPosition={cursorPosition} cursorHandler={setCursorPosition} diff --git a/src/components/document/MarkdownEditor.tsx b/src/components/document/MarkdownEditor.tsx index 383542b..e1cfd3d 100644 --- a/src/components/document/MarkdownEditor.tsx +++ b/src/components/document/MarkdownEditor.tsx @@ -6,7 +6,7 @@ import TextareaAutosize from "react-textarea-autosize"; /** * 마크다운 에디터 * @param initialContent 초기 내용 - * @param updateContent 사용자가 내용 업데이트할 때 콜백, 상위 컴포넌트에서 서버로 업데이트 해야 함 + * @param updateContent 에디터에서 내용 업데이트할 때 콜백 * @param updateBlur 사용자가 에디터의 포커스를 잃었을 때 콜백 * @param lastCursorPosition 커서 위치 초기값 * @param cursorHandler 커서 위치를 상위 컴포넌트로 전달하는 콜백 @@ -20,7 +20,6 @@ export function MarkdownEditor({initialContent, updateContent = null, updateBlur cursorHandler: ((cursor: number) => void) }) { - const [content, setContent] = useState(initialContent ? initialContent : ""); const [cursorPosition, setCursor] = useState(lastCursorPosition); const textAreaRef = useRef(null); @@ -33,12 +32,6 @@ export function MarkdownEditor({initialContent, updateContent = null, updateBlur } } - useEffect(() => { - if (updateContent) { - updateContent(content); - } - }, [content]); - useEffect(() => { if (textAreaRef.current) { textAreaRef.current.focus(); @@ -49,8 +42,8 @@ export function MarkdownEditor({initialContent, updateContent = null, updateBlur // TODO : change 발생 시 api 로 백엔드 호출해 적용시키기, 상위 컴포넌트에서 할 것 const handleChange = () => { const el = textAreaRef.current; - if (el) { - setContent(el.value); + if (el && updateContent) { + updateContent(el.value); } } @@ -65,7 +58,7 @@ export function MarkdownEditor({initialContent, updateContent = null, updateBlur className="w-full border p-2 rounded-xl" minRows={5} placeholder={"Type Document Here..."} - value={content ? content : ""} + value={initialContent ? initialContent : ""} onBlur={handleBlur} onChange={handleChange} onSelect={handleSelect} From 97aba484a4ea4bd6baf729ad2462a875933c7684 Mon Sep 17 00:00:00 2001 From: SONY-STRING Date: Sun, 11 May 2025 14:46:15 +0900 Subject: [PATCH 009/140] =?UTF-8?q?refactor(MarkdownEditor):=20`lastCursor?= =?UTF-8?q?Position`=20=EA=B3=BC=20`cursorHandler`=20prop=20=EC=9D=84=20op?= =?UTF-8?q?tional=20=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - initialContent 의 기본값을 null 로 수정 --- src/components/document/MarkdownEditor.tsx | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/components/document/MarkdownEditor.tsx b/src/components/document/MarkdownEditor.tsx index e1cfd3d..7e3f9e6 100644 --- a/src/components/document/MarkdownEditor.tsx +++ b/src/components/document/MarkdownEditor.tsx @@ -6,30 +6,31 @@ import TextareaAutosize from "react-textarea-autosize"; /** * 마크다운 에디터 * @param initialContent 초기 내용 - * @param updateContent 에디터에서 내용 업데이트할 때 콜백 - * @param updateBlur 사용자가 에디터의 포커스를 잃었을 때 콜백 + * @param updateContent 에디터에서 내용 업데이트할 때 콜백 (optional) + * @param updateBlur 사용자가 에디터의 포커스를 잃었을 때 콜백 (optional) * @param lastCursorPosition 커서 위치 초기값 - * @param cursorHandler 커서 위치를 상위 컴포넌트로 전달하는 콜백 + * @param cursorHandler 커서 위치를 상위 컴포넌트로 전달하는 콜백 (optional) * @constructor */ -export function MarkdownEditor({initialContent, updateContent = null, updateBlur = null, lastCursorPosition, cursorHandler}: { +export function MarkdownEditor({initialContent = null, updateContent = null, updateBlur = null, lastCursorPosition = null, cursorHandler = null}: { initialContent: string | null | undefined, updateContent?: null | ((content: string) => void), updateBlur?: null | (() => void), - lastCursorPosition: number, - cursorHandler: ((cursor: number) => void) + lastCursorPosition?: number | null | undefined, + cursorHandler?: null | ((cursor: number) => void) }) { - const [cursorPosition, setCursor] = useState(lastCursorPosition); + const [cursorPosition, setCursor] = useState(lastCursorPosition ? lastCursorPosition : 0); const textAreaRef = useRef(null); const handleSelect = () => { const el = textAreaRef.current; invariant(el, "textAreaRef is null"); - if (el) { - setCursor(el.selectionStart); + if (!el) + return; + setCursor(el.selectionStart); + if (cursorHandler) cursorHandler(el.selectionStart); - } } useEffect(() => { From 69375a4128caabb4e554ba3d21b606ae7151897c Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Mon, 12 May 2025 13:55:48 +0900 Subject: [PATCH 010/140] =?UTF-8?q?style:=20=EC=93=B8=EB=8D=B0=20=EC=97=86?= =?UTF-8?q?=EB=8A=94=20=EC=A3=BC=EC=84=9D=20=EC=82=AD=EC=A0=9C.=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EB=B3=80=EA=B2=BD=20=EC=97=86=EC=9D=8C.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/layout.tsx | 55 +++++++------- src/components/layout/Home/BasicIntroduce.tsx | 35 +-------- src/components/layout/Home/Final.tsx | 22 ------ src/components/layout/Home/Main.tsx | 33 --------- src/components/layout/Home/MoaAIIntroduce.tsx | 50 ------------- .../layout/Home/TopNavigationBar.tsx | 74 +++++-------------- 6 files changed, 46 insertions(+), 223 deletions(-) diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 2278bc2..547de87 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,7 +1,7 @@ import type { Metadata } from "next"; import "./globals.css"; import React from "react"; -import {Toaster} from "react-hot-toast"; +import { Toaster } from "react-hot-toast"; import TopNavigationBar from "@/components/layout/Home/TopNavigationBar"; import Main from "@/components/layout/Home/Main" @@ -11,35 +11,36 @@ import Final from "@/components/layout/Home/Final" import ContactLink from "@/components/layout/Home/ContactLink" export const metadata: Metadata = { - title: "모아노트", - description: "세상의 모든 아이디어를 모아, 모아노트", + title: "모아노트", + description: "세상의 모든 아이디어를 모아, 모아노트", }; export default function RootLayout({ - children, + children, }: Readonly<{ - children: React.ReactNode; + children: React.ReactNode; }>) { - return ( - - - - - - + return ( + + + + + + - -
- - -
- - - - - {/* {children} */} -
- - - ); -} + +
+ + +
+ + + + + + {/* {children} */} +
+ + + ); +} \ No newline at end of file diff --git a/src/components/layout/Home/BasicIntroduce.tsx b/src/components/layout/Home/BasicIntroduce.tsx index b136340..e240f04 100644 --- a/src/components/layout/Home/BasicIntroduce.tsx +++ b/src/components/layout/Home/BasicIntroduce.tsx @@ -1,41 +1,8 @@ export default function Introduce() { return ( - //
- //
- //
- //

- // 손쉬운 도표 편집 - //

- //

- // 다이어그램 - //

- // - //

- // 마크다운 문법과 완벽 호환{" "} - //

- //

- // 텍스트 편집 - //

- // - //

- // 글과 그림, 다양한 편집 기능으로 자유롭게 아이디어를 펼치세요 - //

- //
- 글과 그림, 다양한 편집 기능으로
+ 글과 그림, 다양한 편집 기능으로
자유롭게 아이디어를 펼치세요
diff --git a/src/components/layout/Home/Final.tsx b/src/components/layout/Home/Final.tsx index 84551a0..f4719c9 100644 --- a/src/components/layout/Home/Final.tsx +++ b/src/components/layout/Home/Final.tsx @@ -1,27 +1,5 @@ export default function Final() { return ( - //
- //

- // 모아노트 - // 와 함께 - //
- // - // 여러분의 아이디어를{" "} - // - //
- // 모아보세요! - //

- // - //
- //
- //

- // 더 알아보기 ↗ - //

- //
- //

diff --git a/src/components/layout/Home/Main.tsx b/src/components/layout/Home/Main.tsx index 6d0da05..9627b17 100644 --- a/src/components/layout/Home/Main.tsx +++ b/src/components/layout/Home/Main.tsx @@ -1,38 +1,5 @@ export default function Main() { return ( - //

- //
- //

- // 세상의 모든 - //
- // 아이디어를 모아 - //

- //

- // 모아노트 - //

- //
- //
- // - // - // - //

- // 시작하기 → - //

- //
- //
- // - //
- //

diff --git a/src/components/layout/Home/MoaAIIntroduce.tsx b/src/components/layout/Home/MoaAIIntroduce.tsx index 27245ce..09e3189 100644 --- a/src/components/layout/Home/MoaAIIntroduce.tsx +++ b/src/components/layout/Home/MoaAIIntroduce.tsx @@ -1,55 +1,5 @@ export default function MoaAIIntroduce() { return ( - //

- //

- // - // 당신이 상상하던 모든 아이디어,{" "} - // - //
- // - // 모아 AI와 함께 펼치세요 - // - //

- //
- //
- // - //

- // AI 채팅 - //

- //

- // - // 자동 텍스트 완성, 자동 다이어 그램 그리기, 문서 요약.. - // - //
- //
- // - // 모아 AI와 대화하여 무엇이든지 만들 수 있습니다. - // - //

- // - //

- // AI 음성 인식 - //

- //

- // - // 회의 내용을 녹음하여 모아 AI에게 줘보세요.{" "} - // - //
- //
- // - // 핵심을 요약하고 키워드를 정리해 줍니다. - // - //

- //
-
당신이 상상하던 모든 아이디어,
diff --git a/src/components/layout/Home/TopNavigationBar.tsx b/src/components/layout/Home/TopNavigationBar.tsx index 7831a48..785f6e2 100644 --- a/src/components/layout/Home/TopNavigationBar.tsx +++ b/src/components/layout/Home/TopNavigationBar.tsx @@ -1,59 +1,19 @@ export default function TopNavigationBar() { - return ( - //
- //
- // - //

- // 모아노트 - //

- //
- //
- //
- //

- // 서비스 소개 - //

- //
- //
- //

- // 자주 묻는 질문 - //

- //
- //
- //

- // 새로운 소식 ↗ - //

- //
- //
- //
- //
- //

- // 로그인 - //

- //
- //
- //

- // 회원가입 - //

- //
- //
- //
-
-
- logo -

모아노트

-
-
-

서비스 소개

-

자주 묻는 질문

-

새로운 소식 ↗

-
-
-

로그인

-

회원가입

-
-
- ); + return ( +
+
+ logo +

모아노트

+
+
+

서비스 소개

+

자주 묻는 질문

+

새로운 소식 ↗

+
+
+

로그인

+

회원가입

+
+
+ ); } \ No newline at end of file From 20aa020a4d9ce6750ede97a9328cdb2aae6d91fe Mon Sep 17 00:00:00 2001 From: Kim Minseok Date: Mon, 12 May 2025 13:36:35 +0900 Subject: [PATCH 011/140] =?UTF-8?q?fix:=20=EC=B1=84=ED=8C=85=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EB=B3=B5=EC=9B=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 채팅 버튼 복원 - /api/auth/me 로 호출하는 것 삭제 후 BE me API로 복구 --- src/app/doc/[uuid]/page.tsx | 2 +- src/components/chat/input/CallBotButton.tsx | 13 ++++--------- src/components/chat/input/SendButton.tsx | 13 ++++--------- src/libs/client/user.ts | 2 -- 4 files changed, 9 insertions(+), 21 deletions(-) diff --git a/src/app/doc/[uuid]/page.tsx b/src/app/doc/[uuid]/page.tsx index c5cce3a..2de85d2 100644 --- a/src/app/doc/[uuid]/page.tsx +++ b/src/app/doc/[uuid]/page.tsx @@ -14,7 +14,7 @@ export default async function DocumentPage({params}: { params: { uuid: string } user && } - {/**/} +
); } diff --git a/src/components/chat/input/CallBotButton.tsx b/src/components/chat/input/CallBotButton.tsx index 358a181..181f4f8 100644 --- a/src/components/chat/input/CallBotButton.tsx +++ b/src/components/chat/input/CallBotButton.tsx @@ -1,20 +1,15 @@ "use client" import useChatSync from "@/hooks/useChatSync"; import {useEffect, useState} from "react"; -import {User} from "@/types/user"; +import {fetchCurrentUser} from "@/libs/client/user"; export default function CallBotButton({chat, uuid}: { chat: string, uuid: string }) { const [me, setMe] = useState(null); useEffect(() => { - fetch("/api/auth/me", { - method: "GET", - credentials: "include", - }).then((res) => { - res.json().then((data) => { - setMe(data); - }) - }); + fetchCurrentUser().then((user) => { + setMe(user); + }) }, []); const send = useChatSync(uuid); diff --git a/src/components/chat/input/SendButton.tsx b/src/components/chat/input/SendButton.tsx index f48a559..9176390 100644 --- a/src/components/chat/input/SendButton.tsx +++ b/src/components/chat/input/SendButton.tsx @@ -1,21 +1,16 @@ "use client" import {FaRegPaperPlane} from "react-icons/fa"; import {useEffect, useState} from "react"; -import {User} from "@/types/user"; import useChatSync from "@/hooks/useChatSync"; +import {fetchCurrentUser} from "@/libs/client/user"; export default function SendButton({chat, uuid}: { chat: string, uuid: string }) { const [me, setMe] = useState(null); useEffect(() => { - fetch("/api/auth/me", { - method: "GET", - credentials: "include", - }).then((res) => { - res.json().then((data) => { - setMe(data); - }) - }); + fetchCurrentUser().then((user) => { + setMe(user); + }) }, []); const send = useChatSync(uuid); diff --git a/src/libs/client/user.ts b/src/libs/client/user.ts index dfc12e6..88314f5 100644 --- a/src/libs/client/user.ts +++ b/src/libs/client/user.ts @@ -1,5 +1,3 @@ -import {User} from "@/types/user"; - const SERVER_URL = process.env.NEXT_PUBLIC_SERVER_URL; /** From 544a363c64539cbddd0709467656e11c2e2639aa Mon Sep 17 00:00:00 2001 From: Kim Minseok Date: Mon, 12 May 2025 13:38:06 +0900 Subject: [PATCH 012/140] =?UTF-8?q?feature(useChatSync):=20=EB=8F=99?= =?UTF-8?q?=EC=9D=BC=20Chat=20id=20=EB=A9=94=EC=8B=9C=EC=A7=80=20update=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 같은 chat id를 가진 메시지가 새로 들어오면 해당 메시지를 update 하도록 기능 변경 --- src/hooks/useChatSync.ts | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/hooks/useChatSync.ts b/src/hooks/useChatSync.ts index 81b8727..49a9c5b 100644 --- a/src/hooks/useChatSync.ts +++ b/src/hooks/useChatSync.ts @@ -15,17 +15,36 @@ const SERVER_WS_URL = process.env.NEXT_PUBLIC_SERVER_WS_URL; * @param update stomp에 새로운 채팅이 들어왔을 때 업데이트 하는 함수 * @constructor */ -const useChatSync = (uuid: string, update?: (messages: Array) => void) : ((message: SendMessage)=>(void)) => { +const useChatSync = (uuid: string, update?: (messages: Array) => void): ((message: SendMessage) => (void)) => { const clientRef = useRef(null); const messagesRef = useRef>([]); const receive = (message: ChatMessage) => { if (messagesRef.current) { - // ... 으로 복제해야 React에서 감지하고 변경 가능 - messagesRef.current = [...messagesRef.current, message]; - if (update) update(messagesRef.current); + // 기존 메시지 목록 + const current = messagesRef.current; + + // 동일 chatId 가진 메시지가 있는지 확인 + const existingIndex = current.findIndex(m => m.chatId === message.chatId); + + let updatedMessages; + + if (existingIndex !== -1) { + // 이미 존재 → 해당 위치를 새로운 메시지로 대체 + updatedMessages = [ + ...current.slice(0, existingIndex), + message, + ...current.slice(existingIndex + 1) + ]; + } else { + // 존재하지 않음 → 맨 뒤에 추가 + updatedMessages = [...current, message]; + } + + messagesRef.current = updatedMessages; + if (update) update(updatedMessages); } - } + }; const send = (message: SendMessage) => { if (clientRef.current && clientRef.current.connected) { From 648cfa8c439015c525886843b073cdf5ad469881 Mon Sep 17 00:00:00 2001 From: Kim Minseok Date: Tue, 13 May 2025 14:45:08 +0900 Subject: [PATCH 013/140] =?UTF-8?q?feature(useChatSync):=20=EB=8F=99?= =?UTF-8?q?=EC=9D=BC=20Chat=20id=20=EB=A9=94=EC=8B=9C=EC=A7=80=20update=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 같은 chat id를 가진 메시지가 새로 들어오면 해당 메시지를 update 하도록 기능 변경 --- .env.local.example | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.env.local.example b/.env.local.example index 5a191a0..281cdfe 100644 --- a/.env.local.example +++ b/.env.local.example @@ -1,5 +1,5 @@ # Debug 메시지 출력 여부 -NEXT_PUBLIC_DEBUG=false +NEXT_PUBLIC_DEBUG=true # NEXT app router URL NEXT_PUBLIC_API_URL=http://localhost:3000 @@ -8,4 +8,7 @@ NEXT_PUBLIC_API_URL=http://localhost:3000 NEXT_PUBLIC_SERVER_URL=http://localhost:8080 # Backend WS server URL -NEXT_PUBLIC_SERVER_WS_URL=http://localhost:8080 \ No newline at end of file +NEXT_PUBLIC_SERVER_WS_URL=http://localhost:8080 + +# Backend Login Page +NEXT_PUBLIC_LOGIN_URL=http://localhost:8080/login \ No newline at end of file From 64b18962dd9cc8f5ac83548edcbc2fb5c4c7ba6b Mon Sep 17 00:00:00 2001 From: Kim Minseok Date: Tue, 13 May 2025 14:45:08 +0900 Subject: [PATCH 014/140] =?UTF-8?q?feature(useChatSync):=20=EB=8F=99?= =?UTF-8?q?=EC=9D=BC=20Chat=20id=20=EB=A9=94=EC=8B=9C=EC=A7=80=20update=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 같은 chat id를 가진 메시지가 새로 들어오면 해당 메시지를 update 하도록 기능 변경 --- .env.local.example | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.env.local.example b/.env.local.example index 5a191a0..281cdfe 100644 --- a/.env.local.example +++ b/.env.local.example @@ -1,5 +1,5 @@ # Debug 메시지 출력 여부 -NEXT_PUBLIC_DEBUG=false +NEXT_PUBLIC_DEBUG=true # NEXT app router URL NEXT_PUBLIC_API_URL=http://localhost:3000 @@ -8,4 +8,7 @@ NEXT_PUBLIC_API_URL=http://localhost:3000 NEXT_PUBLIC_SERVER_URL=http://localhost:8080 # Backend WS server URL -NEXT_PUBLIC_SERVER_WS_URL=http://localhost:8080 \ No newline at end of file +NEXT_PUBLIC_SERVER_WS_URL=http://localhost:8080 + +# Backend Login Page +NEXT_PUBLIC_LOGIN_URL=http://localhost:8080/login \ No newline at end of file From e6889cc1873e7a73529afe25ad9fbe28a02b3e28 Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Tue, 13 May 2025 15:19:08 +0900 Subject: [PATCH 015/140] =?UTF-8?q?feature:=20=ED=99=88=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=20=EB=A0=88=EC=9D=B4=EC=95=84=EC=9B=83=20=EB=B2=84?= =?UTF-8?q?=ED=8A=BC=20=EB=B0=8F=20=EB=A7=81=ED=81=AC=20=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=95=84=EC=9B=83=20=EC=99=84=EC=84=B1.=20=EB=8F=99=EC=9E=91?= =?UTF-8?q?=EC=9D=80=20=EB=AF=B8=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/layout.tsx | 4 +-- src/app/main/layout.tsx | 6 ++-- src/app/page.tsx | 4 +-- src/components/layout/Home/ContactLink.tsx | 24 ------------- src/components/layout/Home/ContactLinkBar.tsx | 34 +++++++++++++++++++ src/components/layout/Home/Final.tsx | 25 ++++++++++++-- src/components/layout/Home/Main.tsx | 25 ++++++++++++-- .../layout/Home/TopNavigationBar.tsx | 20 ++++++++--- 8 files changed, 100 insertions(+), 42 deletions(-) delete mode 100644 src/components/layout/Home/ContactLink.tsx create mode 100644 src/components/layout/Home/ContactLinkBar.tsx diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 547de87..5afa55b 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -8,7 +8,7 @@ import Main from "@/components/layout/Home/Main" import BasicIntroduce from "@/components/layout/Home/BasicIntroduce" import MoaAIIntroduce from "@/components/layout/Home/MoaAIIntroduce" import Final from "@/components/layout/Home/Final" -import ContactLink from "@/components/layout/Home/ContactLink" +import ContactLinkBar from "@/components/layout/Home/ContactLinkBar" export const metadata: Metadata = { title: "모아노트", @@ -36,7 +36,7 @@ export default function RootLayout({ - + {/* {children} */}
diff --git a/src/app/main/layout.tsx b/src/app/main/layout.tsx index 94563b5..54fd2f8 100644 --- a/src/app/main/layout.tsx +++ b/src/app/main/layout.tsx @@ -1,8 +1,8 @@ export default function MainLayout({ - children, - }: Readonly<{ + children, +}: Readonly<{ children: React.ReactNode; -}>){ +}>) { return
{children} diff --git a/src/app/page.tsx b/src/app/page.tsx index 5c8930f..d63618a 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,5 +1,5 @@ -import {fetchCurrentUserServerSide} from "@/libs/server/user"; -import {redirect} from "next/navigation"; +import { fetchCurrentUserServerSide } from "@/libs/server/user"; +import { redirect } from "next/navigation"; const LOGIN_URL = process.env.NEXT_PUBLIC_LOGIN_URL; diff --git a/src/components/layout/Home/ContactLink.tsx b/src/components/layout/Home/ContactLink.tsx deleted file mode 100644 index 449ba37..0000000 --- a/src/components/layout/Home/ContactLink.tsx +++ /dev/null @@ -1,24 +0,0 @@ -export default function ContactLink() { - return ( -
-
- -
-
- -
-
- -
-
- ); -} \ No newline at end of file diff --git a/src/components/layout/Home/ContactLinkBar.tsx b/src/components/layout/Home/ContactLinkBar.tsx new file mode 100644 index 0000000..cb0e410 --- /dev/null +++ b/src/components/layout/Home/ContactLinkBar.tsx @@ -0,0 +1,34 @@ +'use client'; + +import Link from 'next/link'; + +export default function ContactLinkBar() { + return ( +
+
+ {/*이메일 링크 미구현*/} + + +
+
+ {/*깃허브 링크 미구현*/} + + +
+
+ {/*디스코드 링크 미구현*/} + + +
+
+ ); +} \ No newline at end of file diff --git a/src/components/layout/Home/Final.tsx b/src/components/layout/Home/Final.tsx index f4719c9..fb28c8b 100644 --- a/src/components/layout/Home/Final.tsx +++ b/src/components/layout/Home/Final.tsx @@ -1,4 +1,25 @@ +'use client'; + +import { useRouter } from 'next/navigation'; + +function SeeMoreButton({ text, onClick }: { text: string, onClick: () => void }) { + return ( + + ); +} + export default function Final() { + const router = useRouter(); + + // 더 알아보기 버튼 클릭 시 /seemore으로 이동(/more 페이지 미구현) + const handleSeeMoreButtonClick = () => { + router.push('/seemore'); + }; + return (
@@ -7,9 +28,7 @@ export default function Final() { 여러분의 아이디어를
모아보세요!

- +
logo2
diff --git a/src/components/layout/Home/Main.tsx b/src/components/layout/Home/Main.tsx index 9627b17..02abd43 100644 --- a/src/components/layout/Home/Main.tsx +++ b/src/components/layout/Home/Main.tsx @@ -1,4 +1,25 @@ +'use client'; + +import { useRouter } from 'next/navigation'; + +function StartButton({ text, onClick }: { text: string, onClick: () => void }) { + return ( + + ); +} + export default function Main() { + const router = useRouter(); + + // 시작하기 버튼 클릭 시 /login으로 이동(/login 페이지 미완성) + const handleStartButtonClick = () => { + router.push('/login'); + }; + return (
@@ -6,9 +27,7 @@ export default function Main() { 세상의 모든
아이디어를 모아

모아노트

- +
memo
diff --git a/src/components/layout/Home/TopNavigationBar.tsx b/src/components/layout/Home/TopNavigationBar.tsx index 785f6e2..9cd7be8 100644 --- a/src/components/layout/Home/TopNavigationBar.tsx +++ b/src/components/layout/Home/TopNavigationBar.tsx @@ -1,3 +1,13 @@ +'use client'; + +import Link from 'next/link'; + +function NavigationLink({ text, link }: { text: string, link: string }) { + return ( + {text} + ); +} + export default function TopNavigationBar() { return (
@@ -6,13 +16,13 @@ export default function TopNavigationBar() {

모아노트

-

서비스 소개

-

자주 묻는 질문

-

새로운 소식 ↗

+ {/* 페이지 미구현 */} + {/* 페이지 미구현 */} + {/* 페이지 미구현 */}
-

로그인

-

회원가입

+ {/* 로그인 페이지 /login 미완성 */} + { /*회원가입 페이지 /register 미구현*/}
); From d6b962e900c5bef33320cab3c8681b639f3c092f Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Wed, 14 May 2025 14:54:49 +0900 Subject: [PATCH 016/140] =?UTF-8?q?feature:=20=ED=99=88=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4=EC=97=90=EC=84=9C=20=EC=8B=9C=EC=9E=91=ED=95=98?= =?UTF-8?q?=EA=B8=B0,=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=ED=81=B4=EB=A6=AD?= =?UTF-8?q?=20=EC=8B=9C=20=EB=B0=B1=EC=97=94=EB=93=9C=20=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EC=9D=B8=20=EC=84=9C=EB=B2=84=EB=A1=9C=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/layout.tsx | 20 ++------------------ src/app/login/page.tsx | 38 +++++++++++++++++++++++--------------- src/app/page.tsx | 39 +++++++++++++++++++-------------------- 3 files changed, 44 insertions(+), 53 deletions(-) diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 5afa55b..ee70d46 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -3,13 +3,6 @@ import "./globals.css"; import React from "react"; import { Toaster } from "react-hot-toast"; -import TopNavigationBar from "@/components/layout/Home/TopNavigationBar"; -import Main from "@/components/layout/Home/Main" -import BasicIntroduce from "@/components/layout/Home/BasicIntroduce" -import MoaAIIntroduce from "@/components/layout/Home/MoaAIIntroduce" -import Final from "@/components/layout/Home/Final" -import ContactLinkBar from "@/components/layout/Home/ContactLinkBar" - export const metadata: Metadata = { title: "모아노트", description: "세상의 모든 아이디어를 모아, 모아노트", @@ -29,17 +22,8 @@ export default function RootLayout({ -
- - -
- - - - - - {/* {children} */} -
+ + {children} ); diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index da73d4c..a231eba 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -1,16 +1,24 @@ -export default function Login() { +import { fetchCurrentUserServerSide } from "@/libs/server/user"; +import { redirect } from "next/navigation"; + +const LOGIN_URL = process.env.NEXT_PUBLIC_LOGIN_URL; + +export default async function LoginPage() { + + const user = await fetchCurrentUserServerSide(); + + if (!user) { + // 미로그인시 백엔드 로그인 페이지로 이동 + if (LOGIN_URL) + redirect(LOGIN_URL); + } else { + // 로그인 되어있으면 /main 으로 이동 + redirect("/main"); + } + return ( -
-
- 모아노트 로그인 -
-
- - - - -
-
) -} +
+

로그인 페이지로 이동 중...

+
+ ); +} \ No newline at end of file diff --git a/src/app/page.tsx b/src/app/page.tsx index d63618a..8592112 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,22 +1,21 @@ -import { fetchCurrentUserServerSide } from "@/libs/server/user"; -import { redirect } from "next/navigation"; +import TopNavigationBar from "@/components/layout/Home/TopNavigationBar"; +import Main from "@/components/layout/Home/Main" +import BasicIntroduce from "@/components/layout/Home/BasicIntroduce" +import MoaAIIntroduce from "@/components/layout/Home/MoaAIIntroduce" +import Final from "@/components/layout/Home/Final" +import ContactLinkBar from "@/components/layout/Home/ContactLinkBar" -const LOGIN_URL = process.env.NEXT_PUBLIC_LOGIN_URL; - -export default async function RootPage() { - - const user = await fetchCurrentUserServerSide(); - - if (!user) { - // 미로그인시 백엔드 로그인 페이지로 이동 - if (LOGIN_URL) - redirect(LOGIN_URL); - } else { - // 로그인 되어있으면 /main 으로 이동 - redirect("/main"); - } - - return
- -
; +export default function RootPage() { + return ( +
+
+ +
+ + + + +
+
+ ); } \ No newline at end of file From 488a49365c42cb799628d59b35eb35d6e33bac18 Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Wed, 21 May 2025 15:54:48 +0900 Subject: [PATCH 017/140] =?UTF-8?q?design:=20=ED=99=88=ED=99=94=EB=A9=B4(?= =?UTF-8?q?=EB=AA=A8=EC=95=84=EB=85=B8=ED=8A=B8=20=EC=A0=91=EC=86=8D=20?= =?UTF-8?q?=EC=8B=9C=20=EC=B5=9C=EC=B4=88=20=EB=93=B1=EC=9E=A5=20=ED=99=94?= =?UTF-8?q?=EB=A9=B4)=20=EB=94=94=EC=9E=90=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 --- src/components/layout/Home/BasicIntroduce.tsx | 10 ++-- src/components/layout/Home/ContactLinkBar.tsx | 47 +++++++++---------- src/components/layout/Home/Final.tsx | 6 +-- src/components/layout/Home/Main.tsx | 9 ++-- src/components/layout/Home/MoaAIIntroduce.tsx | 10 ++-- .../layout/Home/TopNavigationBar.tsx | 40 ++++++++-------- 6 files changed, 59 insertions(+), 63 deletions(-) diff --git a/src/components/layout/Home/BasicIntroduce.tsx b/src/components/layout/Home/BasicIntroduce.tsx index e240f04..3f9cbfe 100644 --- a/src/components/layout/Home/BasicIntroduce.tsx +++ b/src/components/layout/Home/BasicIntroduce.tsx @@ -1,20 +1,20 @@ export default function Introduce() { return (
-
+
글과 그림, 다양한 편집 기능으로
자유롭게 아이디어를 펼치세요
-
- chat +
+ 텍스트 편집

텍스트 편집

마크다운 문법과 완벽 호환

-
- recording +
+ 다이어그램

다이어그램

손쉬운 도표 편집 diff --git a/src/components/layout/Home/ContactLinkBar.tsx b/src/components/layout/Home/ContactLinkBar.tsx index cb0e410..7893b75 100644 --- a/src/components/layout/Home/ContactLinkBar.tsx +++ b/src/components/layout/Home/ContactLinkBar.tsx @@ -4,31 +4,28 @@ import Link from 'next/link'; export default function ContactLinkBar() { return ( -

-
- {/*이메일 링크 미구현*/} - - -
-
- {/*깃허브 링크 미구현*/} - - -
-
- {/*디스코드 링크 미구현*/} - - -
+
+ + 이메일 + + + 깃허브 + + + 디스코드 +
); } \ No newline at end of file diff --git a/src/components/layout/Home/Final.tsx b/src/components/layout/Home/Final.tsx index fb28c8b..b15b389 100644 --- a/src/components/layout/Home/Final.tsx +++ b/src/components/layout/Home/Final.tsx @@ -5,7 +5,7 @@ import { useRouter } from 'next/navigation'; function SeeMoreButton({ text, onClick }: { text: string, onClick: () => void }) { return ( @@ -23,14 +23,14 @@ export default function Final() { return (
-

+

모아노트와 함께
여러분의 아이디어를
모아보세요!

- logo2 + logo2
); } \ No newline at end of file diff --git a/src/components/layout/Home/Main.tsx b/src/components/layout/Home/Main.tsx index 02abd43..9d1cefa 100644 --- a/src/components/layout/Home/Main.tsx +++ b/src/components/layout/Home/Main.tsx @@ -5,7 +5,7 @@ import { useRouter } from 'next/navigation'; function StartButton({ text, onClick }: { text: string, onClick: () => void }) { return ( @@ -15,21 +15,20 @@ function StartButton({ text, onClick }: { text: string, onClick: () => void }) { export default function Main() { const router = useRouter(); - // 시작하기 버튼 클릭 시 /login으로 이동(/login 페이지 미완성) const handleStartButtonClick = () => { router.push('/login'); }; return (
-
-

+

+

세상의 모든
아이디어를 모아

모아노트

- memo + memo
); } \ No newline at end of file diff --git a/src/components/layout/Home/MoaAIIntroduce.tsx b/src/components/layout/Home/MoaAIIntroduce.tsx index 09e3189..a489908 100644 --- a/src/components/layout/Home/MoaAIIntroduce.tsx +++ b/src/components/layout/Home/MoaAIIntroduce.tsx @@ -1,22 +1,22 @@ export default function MoaAIIntroduce() { return (
-
+
당신이 상상하던 모든 아이디어,
모아 AI와 함께 펼치세요
-
- chat +
+ AI 채팅

AI 채팅

자동 텍스트 완성, 자동 다이어그램 그리기, 문서 요약..

모아 AI와 대화하여 무엇이든지 만들 수 있습니다.

-
- recording +
+ AI 음성인식

AI 음성인식

회의 내용을 녹음하여 모아 AI에게 줘보세요.

diff --git a/src/components/layout/Home/TopNavigationBar.tsx b/src/components/layout/Home/TopNavigationBar.tsx index 9cd7be8..d47c561 100644 --- a/src/components/layout/Home/TopNavigationBar.tsx +++ b/src/components/layout/Home/TopNavigationBar.tsx @@ -3,27 +3,27 @@ import Link from 'next/link'; function NavigationLink({ text, link }: { text: string, link: string }) { - return ( - {text} - ); + return ( + {text} + ); } export default function TopNavigationBar() { - return ( -

-
- logo -

모아노트

-
-
- {/* 페이지 미구현 */} - {/* 페이지 미구현 */} - {/* 페이지 미구현 */} -
-
- {/* 로그인 페이지 /login 미완성 */} - { /*회원가입 페이지 /register 미구현*/} -
-
- ); + return ( +
+
+ logo +

모아노트

+
+
+ + + +
+
+ + +
+
+ ); } \ No newline at end of file From a2739ee494780878e5263f05b7af3dff7f819f80 Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Wed, 21 May 2025 15:57:19 +0900 Subject: [PATCH 018/140] =?UTF-8?q?design:=20=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=ED=99=94=EB=A9=B4(=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=9D=B4?= =?UTF-8?q?=ED=9B=84=20=EB=93=B1=EC=9E=A5=ED=95=98=EB=8A=94=20=EB=85=B8?= =?UTF-8?q?=ED=8A=B8=20=ED=99=94=EB=A9=B4)=20=EB=94=94=EC=9E=90=EC=9D=B8?= =?UTF-8?q?=20=EC=99=84=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/profile_img/my_profile.png | Bin 0 -> 17165 bytes public/profile_img/shared_profileA.png | Bin 0 -> 19906 bytes public/profile_img/shared_profileB.png | Bin 0 -> 15235 bytes public/profile_img/shared_profileC.png | Bin 0 -> 21640 bytes public/profile_img/shared_profileD.png | Bin 0 -> 18238 bytes src/app/main/layout.tsx | 11 -- src/app/main/page.tsx | 54 ++++------ src/components/layout/NotePage/AIChatBot.tsx | 3 + .../layout/NotePage/DesignBlock.tsx | 29 +++++ .../layout/NotePage/NoteExplorer.tsx | 73 +++++++++++++ src/components/layout/NotePage/NoteUI.tsx | 32 ++++++ src/components/layout/NotePage/TextBlock.tsx | 11 ++ src/components/layout/NotePage/TitleBlock.tsx | 11 ++ .../layout/NotePage/TopNavigationBar.tsx | 100 ++++++++++++++++++ 14 files changed, 277 insertions(+), 47 deletions(-) create mode 100644 public/profile_img/my_profile.png create mode 100644 public/profile_img/shared_profileA.png create mode 100644 public/profile_img/shared_profileB.png create mode 100644 public/profile_img/shared_profileC.png create mode 100644 public/profile_img/shared_profileD.png delete mode 100644 src/app/main/layout.tsx create mode 100644 src/components/layout/NotePage/AIChatBot.tsx create mode 100644 src/components/layout/NotePage/DesignBlock.tsx create mode 100644 src/components/layout/NotePage/NoteExplorer.tsx create mode 100644 src/components/layout/NotePage/NoteUI.tsx create mode 100644 src/components/layout/NotePage/TextBlock.tsx create mode 100644 src/components/layout/NotePage/TitleBlock.tsx create mode 100644 src/components/layout/NotePage/TopNavigationBar.tsx diff --git a/public/profile_img/my_profile.png b/public/profile_img/my_profile.png new file mode 100644 index 0000000000000000000000000000000000000000..ffeb2c37fe243e4bb2ffaae9e3410a1071b99f01 GIT binary patch literal 17165 zcmYkkby$?o`v&?hNT-MrN+=*DARzEz0a*)a5TsL58iWPuRaBH*7HKJ2y1OI{xA zPFR;_h9GuG;qim#ufMEKdirP$rtWQ8ues96$6lr9Q)TCSY~XN-oaw(m@&vm`dt5L4 zcXju$xA(D^fw#B!bcOztFF8Z0-ERl^Xc5n-nNqTfZOO7elK*#;&y~GR(!0(db?qH` zhSDzC)o8;{gD8|s&D2tc@pK4Qp|OOVf2G2f^h>e( zp@SlJI|apF!}~jqJdV?o_e=*!cApMbR#B5$@RLL6OHGB>7O(o~7ZrX}kMNOFZl+gY zzMUcRs_^RCPylm|>&NOqiO|Y!lU__JXJXTM*v<-Zbb-+bzpE*B@aq>+4_Nq;&xH$yv zhIOwuXN^nMD>*M}{&r^+-cvd##{Ju87EVt~PY=zPVXT$vEg#O%dBWwi(=i`{l7sE{ zK84u+wF{&2Mk2X89h_N6o!^_dweoT#-S_G_IT`uS6W*-PVqG!yDSV>5oVHcfX$m7T z_czky z9g(9Bp^^1xpPlYK>wm0JXJq|QZj95WATQ&6sHdPl)9G(8WE>ch{O>?};6ai{kOj9Q zGcWHv{7Q+UVTr#)voynY=KzK3$9f!`7R^HriDfSFTE23XY#42aEb52?drTh?v_!HG5I6WM` zY|-{bAbSMKYASI}$;wt5`?N|Km68UrqZKn__97n2iX?THXis19*NM=}vsg6n44)Un zeOglJD=#2~P5%e}4FEqiDK9|fVd zl_Y10ZOT#t=QjkXvY^h7JK=ig+#(Bf3dgnGgqIq@e{VLKdkm@O8O^{cUy%?&Ho{(G zvCon+b2$_5@UFsXXb}Q(3pUd)HH@C@Y!v)tKYj+GMV@E|Z5`9^$vl(OQD9z!)1V)$ zSgy`@c{_N0JIgw{23C{E1IgDsE0tTj9Q4=dmbqZ$y+$M}dw{P+x>QK$dA9q*HD=HY zpg=ypHAMbA)~(p05c9hO^s&=*_}q7DJTmp%*JoF8*agi3I*nxMMFc!_@vg>Fa3PV2 zB&}v$n528n=SC_|y3D{pqdd@3*;dXLhp(L<@ABhK4>Eb~>Gu2PC%sO#+}*xEk&G6% z{cO^Hwp&H}j_YrD=_T@=QNslF6h!kn3vqmDg*DUxoj-(}%Ep)C%s+V7`|)OLoJ_*r z{$ftE8QMRqb^kHp1*Ty-;0hCuQWIiZ@m?7AnI#eVapQ2R!Nmr0n2C|p*MjG}$-aMh zuA{veobL5TdA4Jzu>Rq>WW#K_CD2?f4>ZzN(Q;T2vr2^7GFpW7+H?&qt?McsR8pw< zxJ2RZl3pW+>b0fwtBM-kY7LuD9%`r!dqSLDx0zhMs}Sc`Sgubl!71N@t#pvu4wZZ& zClN&Dg|gp^$UE~!%o*>i$oSe$AQ`Kkz*=1_MO#=Me9vzyJgw>`V0T#go8X_D$QW8f zP2j-;N%Co2WnwJd^XE!jgHu4(8G$mco^C!ngu@Tee)OmtqPFc>Z`EH+UBy%z%T0o% z{xM9maHM2d@c{NH0A%q6V_@CJVk7f16GGikxH}MmbzDe6L4K@67m^lBLc~t;xr^_* z>D<&BM%6u$2=PZ{|Hqz&J4>hEopnrCp7QcPVTShj#a}9Z(Ac6WE@695%Jsa9pW65= z=xa#<;Z3nvSgXc(#ZukVe%)a`$b!#cQO`(SCe`Z`j#K_VIU<_Zul&ElKLd`#t+6Ib zE32PUeV9&1D}J5jum7r{0)h(DqbPMW#H_v**BJEI7nDM+ zOdX-Sf;n+_Jt}bQOVZ?s56ohg&mUwNoNaI#37*Li$jkDldH*C@&=+THSEjtdl;zeu z5`j5KV*`w=Vd(9tNNYb0sr&jkI4S%C0s6r$SB@FoG=PcSS$$d5pO0;^vRhb$RVrlh zv7afOq~jfH%%BJO5~clZHKCVjo8MS}0Zux$P)&`hh|-Qa*A;)>^M{80kKAkVv+$DT zh*Cq62jj6Y(jwroy?Aca56GX~g|*(J38d&spI~P+q(`Cn;x0?Jx8A>LQv~*{S7GBo zL^jrh$#)V-yBeYd!Jg}DotbkO2oU>2acib(?hi&oTGfn5zITIB(VJRxwf5?B7J5cY z063gceKL09etwc_WS796v)|H+cq5FH<%){{nnDEqJ|<5TY1m5tTM&R!g5IcWi@7Uz zj_EL+z$~iG)HZdLGM|RIuw0^tDghuuw)pdR7v;yskvAaufO-*k?d6@VbF}5PF|M;2 zDUB_A1)3}5(?V&QKp7B2-fAh);h}7t>*^O|LFxQ0aui{@s3J`?m5ji}PB#`;hHk1A zWM}EE!sQEQ=n(Ny-5-_F4+}*O2vMBNw03nw>7uu|tEe${Jdn+EZLtM{w)-5}fj}d) z>@r+Zb#8KpmIVRxbnc&(Ncc73w_XKcWrO;OpxRl546_DNni2D+?;XiH&xepH_AN3H z@3pw=%gj!{1GM)@@Unk+4X@8W%p=Ma8UYIsPlK?%A2Y+JL>rVkN--eb5J4irMoWR_ z)5-oPCq0JTZQArGdL}XcSL!^DxtvrN9e#VeOg|TlW%TVpqV0d}F46PkG8@nZjT4#u zBSAf;B=@W+$g^E#9DY!8nTWkj(du(@y@O=~9;AqCBR}>1-4(PB;|c;Su9G9^qO?K} z-$!^p)X)KDz#i--JS1%>Zr+Im%~#f8^2Gd_8e$9ka@}$MGR=F6uEUGK%pMm)fJS}geRAkaetf_E!+i+t?oYuG&-SE6 z4&*|ZY#u1lZDMtKJ(@g+L z7Bn}TMIpI|Ksv!Wpbo)#L?rrUDn?Z!wSIxAQJkYS*9M*!7n#j?4J(L{5v34@dCtTd z8^jw}DS+JJ4uoR)#!Mr|*6`;Ykx30ThL;CgyJtI;CG&9eWRdG?Etp~?F2cB2+|Ot2 z-I!QGsRh9`0^2}yr{!5ZoqCA6Wb+wrV=eq8AR$u`b;!p&=A0o6kyd7;ElN{1# zfNr5NGr4%@mkTbX;kX63Lhm!keXeS>1xYbpFu*C=50;7Wj>9zT4v5a>HhZ`va<=k7 z`8-M5h9itl@s8M6K>rYn`zrDH!D9ZI)&<~5fpMI#w`Td1@8jnA8;MRaRkTPb z$q{ZS(r!Q|5<+OW+|hn~yQf4=_hn$33YG&LvSrQpZ=ZQWh>FtYc(!5XkN0QcAMGS% zK?1}hv~QUd^K1JnguV{4b~5CZg)St^ukkaIGWqGE;(=d(XrStsG;_zIPkUJFVsPvQ^A<2hyib+3NG_ElsRoXj!?^9Ff_pFxnLp3Unw%V!LeXz#ff-KT7VO!pUVD{$9# z!yr=9G)<+z@I(IsbF6{tB?|_ zN=${ITDq7%h4QQ08P(JnYRPAiqE(p8uY#UdjlxTDtW{dw)7?LPNQwhg@*1GQT{?k+B&slw0AGBkDtcl){QBK+wsks2r@{;DJo zePyA-$_xlB?3sDuH_xU1cLb5Qwp``9@G>{2@AHDNggDwQb=f#mo)Tg=r$8h-dY|cQ zPhViSRFx;6*|i!+n-~?*mG0wp_;NbdwzyjsYRtbqcgSJeJp64LF8|bWg0k_#ey?w* zFrL7mb!4&2M)5OExvN#w{m+*8&a_*F24_x2ElXJ;HJ8*cl7aYC z$_^^1)oVzx#kzm!JCi7yRpPkHF|;_tUlHC5EEsZs@uaGk9{53t8tQ&lCRZ|3*N*7v zPhdl64Ud~74jWupzSfDD5vN?F2PWK(Cxpp-@{g~G&{(+Jm}*I*0qhSv*I zNh*J;t(Ijx3zxThD@EuWAbn;3{0?4^3(Is83u+Ih_}PnyQruo2a*6Qa)rji8tKqpE zBFs?L-4~A#kGwei{g@%fAG}}?I}A7H_j2UzCn4W?c&h}FD>3_x8cpCjQJupB+h&zD z)W!U75@0-u;tQOfUSs$LVp^2*@3vmO;!pZGbGqeoX0TQ>If(U0m1L34K=OpHwq``3W44fCH6(BWIHOVw>MY ze;xjj9?OJMe~H0wT&nOzB5@yFuc*_?8&AMWYkrTCK& zBD8H{BlDt0^|^TdYVFXrvC5((n3r9<-os+;SG5y%&cY@ER+QusfM3tc&|+h0hf>If z3H`L^w{e%v2xU-d70v8@!gwY{~{)m>F zNbF^_YZFrJ_b~+|ZZwjYb*+5fTK@Y;(>MMz12i3*oH-|r_`3B?+DL2O%~cTFd-X{S z|Fk(w!{U;VW2YFetO6emYjzOj=bfL=lL+NAW_-i@t6=6vEeH&YjOiD--Qy%2BchgR zc@>ZOsCHLu8T8BdT)%ihR-`lPr=U)yv&674n)Ch4LnHAWjbUL_*oxVYna`>U8F|2k ziP_TdZx1|YVUv%NsaZ|k{_tfEPK=p9xw)8aGF)F^4kfy{%*V-ZJZF)%Bx0xUsC_Iq zsfqMqk5ZNSLr=BriN-O?_olE0xNX7CTac6~rC!aoBNUp*f1l}5vpT`s7M)z#|B0ii zlQ!KZUkta4PBg@4SDZvotgONbCI?VeS`j&m>~1a`AUPCOc_6Ro8;#=uFJ=y z)&=I6{dqks+^Y~p$nU0`{1f1xu3T-nrzY`B5Md@3(lr-SYjSzxRy*Gt{98)aGUgBZ zR^68O%GXDN&MbuTF~gXo<7Okto~3?#}cQDGm@nLcpn3TvAjeQI6N$ zGFhDY!kumz{2hJ0bYj7J*M^8)M1t-b#W{O$qQv}-UEEj?lCsRKN6>ra%S~B#Ai_=W z85>Pi3NGAB1%7C=E1uoPv?Pq=lFExJ^%$DEPSATc=PSSN52jJaX|Rphh~G|#%Q5#HLV*{$d0kdkuZ7^Pqv_0jxZOXd0&~-ZQj+BC)0#CLoER;5Q|+v} z?LYO|fIX_MJU4B+5{PN;4sjxaQMW3*8yj+Sam3Z_(d?YZ4-y_0R!LR52C@jv3!MLo z*C}w3B$l*2-@5!a;xP^8osDU&&|{ytHL5mo2eK(sN!1nTsw@N&!g30q)l7?JlS@)S|E|p zB%{6G)fcAPE$QD{y)s;0h+{-45p4?Yl|80Lk8nY0rB}RU(L{JKM<=VKJ&++@o+ng& z#X{)ZUHNGeHN8wwv?lor>!e0%5sxNYuK8IIW&N5?d@v-WKx&m)+=_scDf>=@7z}=T zy`!|av?7VEv3Kgx=v#3rzWw~(7rxZ4EQF-wS2Rv`y6daA+4MpVUt~^GSfnaZ*U8sy zU#a0HsqGUj%oK#r69CIZY^Jjz_v#Y)AWPAXdVx>O)b@cezH%Pj#_kX|3q7sTqV8{% zuA)$VOQydmL+n>oD#2nXfBWxgis%OJIjpFkH_?*~y;d=Wbr+Dx=DIAQM^I~>*RKgx zsGPG+#6`lYP1VB*J(UGMz3!xYIdJpuKu4hajtYw)RKI($LsRzVy)7o-eKcxsQ>CS4 zftmp_N4|PGO*qdSoufh>txr7Gkx>DxiJ$G(`WeaC`z~8L(XSiM;syj`8z1qPeID~v zEPP;fJF>l(?RCZ_J<J?$rDMW|qb{z0uqC6tp($x}OokP4Sp=#be6i%l{8kdLfA; z5iymu(Bq6JNBX&!S=27gixZcIrQU-jnqx7S)!6E+y-lXq31}$}uVNl1DiY1#%_x=n z&~Y1)`F^YRSD4*K@VGx&V|=@66D;MjZy>3h{4X@bNQn9V%c0h4 zb=;E%B_kej7pfrtpTm%AMt*L*D^gRl#3!y!fceE-ZrABp3WdBrT9UCuKAw#LgU$F- zo7;`AJzqCS<=8t21Abnd$rxT&re+{yTMEr19V9bk3JH7tVyNqMf#a(Vn=$P9mQ=HZ zrU0(8L`7bl-Uj!?fqJ#sOZl8op}DbgkSov_J9Ri=Ldj_)B}iB{7g;BBn@JB^&3a|} zo*EZf>upE1Ci7Y8CL)NDOBVvS!PJ;C|9(2yLA%ba-=LEhmdz-c^!2YKYSgbCmmrj% zI3!7q(WLmZ+Gk0FS0=!Ip7m!041GB`hLBgAQSi6rBOxRUheN>)cS)sNgf^y@?ouBr z^+7rwMTNfi-|{DDb$$sp_sZ^Vj4w7pqO{98Hr%{kOFn?q_jJq}rHZN_r z`q9YOH3p{zz+b_nOPjnFN21_gZ)6VZE#| ztX`kI{_ekGNt^Uq*!|rUXuJd`MyMr7_inLo~8vJBL)SCmhWa_}H|MM8sy5no$R6D2+c zsc53)0p;4TgUPTkRMvA7xU9nA#j_g7&1ljU{h9!3Wt6?YWWR=U{x_NV&j9ZIFRr_r zCgo?%FY%_m;}x25BZ80C>lNk*>UI$R2aEW>B%Zgw_+CW`OF8xFIX-&USV)1|?0Qh^ zCy7d7?sKYY-Vste_T)HidHLITTItvm#(A4_dpGcO&56K*7-~i6P}dp~rM@joEVRqA zV`qDEsaG7g@fBj^w}McVzYFbT6Q$LPE;mw1+4>NviqxCmFOb zuz96=E$*uxxxla{6T=PUC?^51U36FW@_)bZ4Z^s8!vphgV-S{w24$X9nOv3+G1{bz z--9qsqDdfQ(0{MYBiRB!(f4e&J8ptR-j432`rENLSZckfk-N(N-;z0^#8{NcytR=Wg72^v}YTZM6rJyufmb? zihZ4S4qY~xTG?;e5gJ~qlS>zVc4T?nV4hMJk~x*+^ow8`h0SJ@{tJKDZX~>F%}085 zb!WFAwcu#9w_8>umN(;D^67clo4sORX%2FTUBUIf-?LqlZwqia#kE1C5Wpw5l<(=c zn~ORA5By0!^)K!UP4_A#f18IB(^6{J$+RtAMwlifT${|h*3g6u`3xXC;HKX5-Q@hR zah+tTj8M%bmSkKS>YI|njFaB(b zh`?X9G@uI4v|$e0QILgj~YdP}u|H>)kO-R6_oS?4G)Pl*I;esqN0 zyaGNq72*5GDNG2J&3@WXo?qXjEPFMeD6@G+58BxIcQ}Dx7%DpusEJr?5$#q9c5FM^ zy@7hH>yQXDU8FIUm^#>^>N-4lfevU~Ne`2uluPR^>&|wDWbj8Rsp%ReT>Nl#7|h~^8XZFyiaO`WIm7sTi)vW-)s*b; zo&HW5Ykce1|A?TaOZ>S8%(r>1%nQ=y^QuB|3m*)0(=RW5VFYd1eerLF4SxU1aEy|6 zDmle--tI}wSrB!=W$PnFny+g?jjs1=H@?+s951BaVdLn|C5_T+2HHz>=Jc>Mzu?;fNg&}KszGjA2$n)^ zX62(mg+MAyj84N>&tz>dF>=9IKc6VsC5;Pxr#Y)HQW!YXPq&5YjS}XR^SC;q53Wtt z&#QuQ^UTua)cWNBn(ennqkD9*w?D0$9Hrc!Jjn)zqb)pSzh%)>pMk*09G=k&j5msu zfAaF5BZ)sc(*#26wVKQ^J%T|P0mr!-&puA^90gR=Aohd7s56;7%&u&xbf_dk98KU< zaF}W3zw-^p$YeJZSh_pLa1JgbS`~-9aMB$>Dv?T|YE7{3VC632W%j*BPLm+jK{uU< zB>|1M1I%O|M^A0Q<(jJ(*JSNfwwduu{~On<-=lc)8OFP_8njsUdW~*aSfqIzH`V9L zpNR*FnB5v&h`!R^iW-Xs=$&v5_QBPL(Y-z?CFuY8ZZ_Fd_-{V2idJ{0Lhq+N1+Tl2 zA&tl5LDq2su>O>4N&l!}Y12t-x*k4Qw)_70{z`C$kYNjH9^Qs}Hk=zSp^5z-^c*l4 zpFZ0an7t3N{}pc%cdFqDuevb}{CbRQ4&Q^SNvyN^Nr z^8ul3OKtlZRbiJIfq%qKjsL^nbamgA>Vz2m(+BP$!aV;?29C_A8hEJsEKLRiV7&@4 z5_I5)h5%0uEoU%m;5LrOwzH$gPYZ`ICvcE1jbRDndub+09Ea1%YGwyw^ ziFQ|xK2Y_<+_DK#BMt6Rr44GrP3b46!zU*f7LK*}S(TdV7Z|Vt)vd~8SnGcEC8+A( z@`9F^+o(Bss+s%=klYf=hEJ_IuiNV11ncP2`I@X?`zoHa^;vlReiiWWGjO>vpQ`0Y zGG|kf094gEF5k&0>Oa@lko+M&#N2mgByH8ZfPMWSI6hS)Hyv#E67Yfz4);v>mD8n! z42nqTLEnx%>x@t4xq#zdZwfc*pVkoqez4VY!*5r%UJx2O!39J8PFu6%<-8SbAX3?c zh^>TGuH*YS4EdbCm>ys60FI2>cXTHmZv*(V&$QIO-EMRbezN$@)o!9juV^Nyu{iVo zL2h(GPd!@`@G_a1G3Q-i6BiHN8DgN24eMzq7WSV9L&KrLXFStK1!`+MPhBRT3=SJ6t((I67V=Mm>_J1bLGF`o*Vu~&`NlY zQ$*EeTGF?`mm6HT#)zU_0UQ$G5yUvt+{!fbG!wNZPbr@cTbHppXhflc@{30uvhsia zwo#jE{QN~AfvF5QQP7Lt&+GpxM&;0OHzhjHn?G035{m0)78pJ2nUbhifk6bbxz`Ei z#Mi+==Mb#_yt5#I>5cNDo>QQ(UmyYPEFDD4W5AZ|-HZ&O_Ff6dEO$Evm#2_D_rmy) z5X?<-rH3y9 zvHx7pD;pT8*Mt=fWrCA~+rZa^!C8`ha--nsuL;*qpJ@+)XS!)q3zPGOVRt@gN>HBw z+P^=slgjG9K{hO`zdPcs_VTd#szU=UV$8FGMHEuWSVn##r@7RJ_q`X0Esn&e5)l`v zgz2zPVZ#1`L_?J(Ojozqxvtorit^Gk5cee{lwYx!b64J*$Pw5S0O%bl_W(O`z2UGa zksQUTm!_kUOoFh!V|ZF(t20;~wpkvpRi1NfUk|ofztUO9WWo}LUKKQ3!{l-VN ziT|@usK}s}b-*AF_7B)4Du3*oB2C?K5svYwqn2hlvRMrTrK0QFpo@nd4HK^s zPl|Y$^x8iNpEj+Y@Jr*U zT73)>IJzYy86;ogRX(%xVZq2ZH_990v~%|zfKY#4&vi)b{Ah9Q_nTUj^?Fcf+1UOL z(Jks#UG7w_4@plu8wjCc>$4Y{QnM?HqE$DM2^-upT7^ zW=LVza)9~NbNSRpYP!zpTrb(Wcl{lLx>Q_9dwfj7KmfwO7T)?qRriMSU*}eXP21RS zr}@L~8jqdMAZtxOR!E`P;%swU)^05!zXt?8Wn{?!B!3?yB)}8-;H-BfAj?x12IDP!5<@A%hEEYIjm$sD1)NZMrBOsxQP6My_r*K zQ;=P+S=c?=mfGh6#~zIqigE42b0r6Q)XIiVgHt*U1}M4R{^e+jY#maqKis>;z{A#P zy9Ud~fM~yyf4|=A@49hsvkZj6?#NnDrVLp5{ik$(FuRLo+2|5G|D8u;&As*->YsgI zVcZ)=U^*^MiuzMjQj`7yVQQ%G^P!h}8GTf-)y z%Dl(0myx&eZ-4V?eFc--pGi?y zBCk7YmNs-uB0RF2oci*qA~nHzD~B;nXwPw?)~NQdA{SBy^fp7eHCuY3Z6D z{v#p;CPZtNA_P3eVvAP}MkZzmXk$EU(l)?@V)oo|#-o9A4Q}$r6SBT1n5mVeWALfs z9sRq)V>2$*Kf%Wqlrf+u>80c6)>DJo1b+_C(!gCdc)%1t-|YUDt4WmN^>CMN^B!Q7 z7u4w+=pCzCPmNS7fw%5~>}K#KCS$?C2%(Yl}h^v_yO;vM}>59E?3SuP2joeV*Iri^aPLwptTK zX-Wth$*(HkB#CrM!P2Atr{()hEr4jBpEFiNtu~7hC1h`FJ=QDZrp1KG9}?ZlGsa($_wDizkuI_?qqV_91H@NY2H1*2Qr%@kyY5Mkiynn zv8hSdsw6yqhoI;xc*ch~->Y=R#$yOT4iKuQ zaCG--3o&>_&Li~@?ZM81`yB|+Ki6IE2G4yE%J4;gwE$e4S*fX5(~S(l*VovQPb?u|S8%~i-pZDYS_HQU z6k@#d)6wl$z-#E8*n|G3C0?8tzdw#8u~W@DNf`0=GCWJ^Sae zE0Nf5(C^UX>@HZdRMG?=0jRbxWiHw_xU>o9Em{+)4(p3-%(T ziqh~Qn3+?1Z#jNb%qausV^eqA$#V;!n$XRr^D*;67 zCTFF1@wC1D#ioIOnt4N(E8W5zKuSbidI9&rE&1LWQHtZqL}jROc*ZgQRXrk#Rrjv& zk#s+6sYRzw4BYM-(1K2V*@SLFi2ya&VOkGuHj}#krca6a zox?YJj@cBh8zus4Y#CyjJMSKBOT3DD&s|@oICM5OcnE`>+vFSa0da9{G^Vsq)s6_UOUa&7XHEsFRN(}=KG8%zti6r^QVaqQXQjp@;YR8ZtjmRuuS(2#> zSNOM+FB)jg3(5LJ{l{G!=uGYMlobYJCFPhG;h?^T#d>j2`*}FkkFT<|bgfK~0wzK% z$mCYrvVI%zNDnn9_64a|fEKEO7V`6apNceG5MZc__jD+3%T0q6&4a)Q;^Z~VnpW_d z{2$q-tLs!^auxpAfWQR$YMv%Mcg&y=gy$9_uFq;OoE)XCfYZE<(jN*G=b&<)r=Cb9 zo@~|Vs3)3TAaaz0V_b{43`7<`zV3H(Sq9INdfBw)EHU{9{@B}68J2~w2D$G2iGD(g z4+aWbB$7P*!0x8u*w>h~$7rE-U{zBxcGT zPvUX7_MZIP`74&MX(9#CZ?!z9&%529=?|ptzyK>NnA=;<&Hmopwfv4MVC&^q7KRMc z&KJQ(v$yCO85rrEstpUnIXHj}4x@H+=ki{oKzKxVys?3#koksE#|VMC|8w79`;(`b zA-wFZlF9Ea1xdH`&mG!EE=IJSE-e8JB47Z#+9Hcjf$IZ|%#R_05azj#o=g+tHUnM+ z$+?QL_9eIBn{-i|KsfS;hcOD|I|WJ*DzE52K%reMc*Ggt!osd6cR?}fj(PqE&ky4l z^D3F{_+5L}zzeR#Ic@wbcaU~fz^Ks7Lt{#%mj7Z(vH%v1p6sTT+__2#BA=_>vj=K5f_jr}u^GRfwMMuqrSV|+Y1Dw9I_=)E7gPI;?ihY^t z1ys!vOCuN>`_ghpvu8}R$qzXDZo5qjHIuuW>EVF3_df3q5Dt*k>#=#Sp93nTpA`;% zK3L$2RUDEg9*Hkuir~&$rNNtq#pf0~{>8)@_+viHHOfXE@*jtbO8R(1V>dr3y*t5$ zW8?2R0(j+1*1rF1zmp&1g(pIimX&X!nd<+%TdD<2K>Z<*$7i02SLl`A@z4%q-=4TX4Sm=f-rk)zb2)Q`M5|f2RsQHEp8Cv)R5c(y#E~DO|(3< z%U@OFJj4&J(XF_5;&9wFU-m`l{{z)&Ch%gY-z7tang)8OvA7!#5U`Pq46`XVi_Q%r zpm^*Du_MdLcT1eZl5cO#!x8Ab*Yg1k``-H~7$yi$Z{rLvcGqyQ+!ZohB&D;0Dy%K+ zOp-i4MR@jKFl#6DH1&K#akLK}!45L6&-+)~?1o#e+T&@cpM;xF()Xe~V-{y0$~vS% zs}FxJQ*~{I3UKQ!bKzx8wAfM3LdXtMN&hY9m#m{zHwenS%5d#nO%M8l-;6kBT0UIQ z_;)PIZzW#cP4~PLT9rHfb=3SrJ%$WpYY0|X7L(6U>LD5T-G4t8_VR+cJRH3cy~q{n z4761w<(?Ya6rL|t>==OKe9%IPkm{6l?}m>akYO$e`zc!fG!ow2cMmFQh*A=5xqlb% zQhLbf_us%TPpU+tJhUk+IEmf}2Up5Sf!rFmTVxxu19`ugh9tRy@&A>_on=_vKlGs8 z2hOwa^VgI6?|s>#`m(`xAOuC_dXPFZ%M<^GT{=NCUU)+0{iD<=S<)TqXr5S$jL!T!}Cxk zr@SQe?*YI#CH+{g4X^tjM|hqN)I*YuR+dBn?Iam(il%BO^F+e`zUWPF{Vp=G zo_+^k@qg%L*9Tt^bzVUI;#6tf79J=t9PxvY;bpLcS1FxTo5E8LR>c#`m9oVN=U$g?q4y}KO6nYLI>D?$LU{)yr4NWr2Gy4_!OpQsSkYN$# z_WnQeV5Sq%E20pSqnp;D%hZq<;U3T_qWksq>nS3!xyAY=P$U%2grbya_lT9)`zTP$o&yJGL}FL$jNL(%(|1b5 zwd{hdv!_+PK59c}h6XXymr#!#B039)?T>u^3-EV;LCmfcTEHwZvTg3s5t|0kf-bh5 zt*>_e{%gsgAb|al2O8~c|J;2?cD!}MK7Y@Rg#^*8%b$CmmH)*$S+vfi$!lW9(1n5VKpw=g%IFgGBiLVB`BQ{i9WA$T#2@Ed-YRNJH zvH9Cutx3VCPAAS?=R^{eYXYaMCXMF5b1Usm`&TT)%b=L+8COrVPsh8T4Uulq2j0+p z&hpk=%-}`sB58lP$%$lvkDO<<(DqY>ryy9e8?8R`ILA3$rd@P z!x9>`z|bQ6maDtvbGd8_>wfCMvt3lN)U0`avhWkgj=@Pom|wPOA&2Hw>J7nRp(XN+ zoX?;l3OpsIBlz$6!xD!7Rh_Aho2A!o`D{1zed_Bm3Vcwc4)x|-(DPkf>+-rI>D?1a z5VeOQN4X58=g;t@UeM|8GpIM?|D|bz8a&>;aOiDk`x5Wy!ESj}`9>9WfN2_(GFh=E zexRhl9n>I&Kp$xDG0g?~X-c`QUoZH{F8WXD28+0t*Zkd{5&sys4_Gu#8r+3ptQe=y zwYq-A4;uzP07Yae1MSwI+19Ubo0Pzx7&1fsZ4x4yr|3hKNix^#_%2@|_7`cn%~X5# zC*%qY@_az`7qyik#|!?WUl~4ucAE;B`>(St3emq?KzU}cJ$eT*L38@X=m>p>9^#x7 z7P>KDr=+>vB(fl)a9q<(Xi;=^D1O{*YQg)O_8r3wIAsY15tQv3@U8!{IiDr+J=WZ? z1tub27m|2G@EeJ-b*x+Byk5HVxoaU^X56@TzTXYKDSct0w2p|bZw2s$vi!ajNsd=h&N>m(` z2N+|_pv;Wp0#nA}3;_|;9hxNU=nn{&7@4R2XTY9#cj`ec?X-W2yV)8!sPhE1w4`Cz z=cB?xLZZv9JBFD=R@UKk=t~9`_f+buGb==nzJ}!C5U9s61cGJzhj3lIzP{>yez%B5 zwyq6rTvN=m^4&EK;X)g}@P9Wyg2BE$8)#m;vSpU32v-r|0yEYY>xyXBRh=_b%sc@l zMCfO7D#15a-miv-4BB8m04=uWJZM&pI%yew%MkaD02QJIuX96(NIWyJCYB3s=#fuu z!o=As`zZde02bB#hv9a~!{wd+2hHzPH`B@F_%4srb5xsQ@+151u?nH0z@Ha*i~qX- zLK&HHQ%}WHAa)#xrE47T!y+=xEp~ksPC-%ig0P&4?lM=KYRraOZlZc^GxGLDS+#AZ zilo4fLik{s@&v1OXjs%e!%k|`VYB9?t0rDI=f_9ACD!YlSC%#B3Le3-L20z=C+RE8 zEEMC#BJd&k7X7pUL+iJiN?diOA)cv9#;@1Em@nqJvXII%kVCJ=hU&=d<3be6cc{oE;Uw@RuI(A56!!JLxUu%b{$?E9gS z_bR92^~U&949*mx{tQA<^Wm$$$o{h35i;hq3*s`k6StuVOhVvk*-Kpcu~*wrhZohR z^MDE&|w%A(=Kg*EiKOW*s{e!Vlm}?!e#BC;b zWPj7HTU`g|MFYb?LJ<}sNIn(t+^RfFD;wyquO2S2Gf`EP1cZu_w7o>fijCZ{iHkC_ z%G)p4TrH_u73tZZrt+XD{D`*}l1n95i6G~!yqvt`2qwn;@2xM1=kXsBs(l)Yu&YoS1l{Wv~F~;JkznYV1%_^>R#U#@M(RoX17&!1KHlRu;J70*ZU0`nces>D&JYL<@<@ literal 0 HcmV?d00001 diff --git a/public/profile_img/shared_profileA.png b/public/profile_img/shared_profileA.png new file mode 100644 index 0000000000000000000000000000000000000000..50b14cd0784caadaab45c882a9eb915ff6651942 GIT binary patch literal 19906 zcmYIQ2RM~)*nbZh*~cdHq>PM&D7%g*vW1Y9mAyA7!Xc{?%8W82BYTrABbmqEBRiYp zdrtrB`@XKLOL^b(Joj_&`+n}<30GHDBqw1efgp(dp%PLPg7CmU@gQPC@Z+!7?-TIj zvXhd&D+E!r;Qqqe9dn+8UoyEV=(%Y*TDp0fx>!J-o}Pj>4z{l5rcM@ujxJV7n^MdW z!~s1-%4>Ti|C#jmGSu~!-QM!G8gS5$ukfmf?>NnpV$tkhDancDIw0& zDZ`6(f#*V^xe+fQXSjBnN9Q9QE>$c!{4?}7`M^C)=MB6GE*Gj@#?UVVUnOwzI=c9K z6V+0`#d;UJ-`8%o<1e?o*JhY3*fUKGUko0lkfXKGH7YZIDiwXFSkF!n<&Elv-Bi@E z#J_8FX;54Er$?_L+JqgotYg8Rt`jB^DAK&*Kym%iVpV@>5wL5;xpN9`kz%0;L{ z=t!XqDPhY)evYyqhsD~+c=U=Ul&`H}Dw&iS3b~=vSsUr66Fi1`;_Wfa<@Tc-Oqf}; zVLKkmI$5yh&+Ly#rlI9FvtM7=#9mvM@;$-lsYnqZLB?vfQo#Lx94^B9TCU2CWw!OK zm8L{>T;qq(y=EIvqXeG*F5{wqw+B0?frOs4nnBK(u@zby$N)MI&O1acA5-G(8%Tu6 ziQc7$klezS?OcsD>N>`J2nI+(jZUZBRYNs8Vun+WecOLR@@8!Pa#j*OYbk34504(C z{@KWTu{>{g_s22x?DEV#GTB+~wxioFvBbCXyr^S+wRdjxDNp{?A*Qw9hj=s#E6vpO zb#&J5^|j<{@9X60@iwOgqjwdaXXZ^^3#x&(*v#oEMky4u`OjuD`)igy7QQb|ym+DG zO&6NBt88zTF$0%x;0q8!cv{@@u`)0?x5RuvlY|pMA<@ERc@@irI;`oVHk~CF{ zmuj>ZRdvpK_7()ADbz=cpmg=hwY-9|Yu7r(VY?6Hj62H?VP4n8XUz{6RoIg@|8fzy#cKkHU}~rLeB|{?&GBb7 zd3UqtP(SAMj`v*q??|qF566yszC*z z!5Updx}IXK^Ct;;UP7aFYMdNFRyr2J#MqX^>c{1KR4I*ksIN7Y7lpHY;WG_HjTU)1#VKJqdPpY~9W3T>=Y4s3 zbyWGDx@a+!o^dNndiB)8k$Rx}X6=QH#^>-ExSXS;%jX4yiiukl(;jRQ6!efbZQGwz z0y2Nb*lwI9v1LF$Y_S+k-mM!G2B?Ua1Q1=Eu;g$~n+)+vO_TIdc!@Aq5WCeatbo0J z)FFoA{%k8AYPXkhAGN8hvrj_iID8*j1!PzOxy#;q;D<5gF$5f%VjN7p^l0i6pDs-A zxg@2Amr_Drz`$PZw_SBa7Xv*cYTD9$L>;*9eWa+CE8tB&1um_90VjQ6jwGo?>QexIb-fO$4wH)CWjSy-+Z#azJ4%Hao@oNCTD&t ztM1pKvh199WrTP@hTJ;5DdF_g`8-N|n7x=aG$@Jyidys1z3_!>bXv*420W4om&U{W zH0i!mJYDjBYdxr+DY8m(^K@_eMuq^i1muOhgAoYoE3X*wf2T-2xC-9jja>D+hU&{T ztJ>g4#))IJ_vZ@=$Qz1SUj+pdKrkqBtQa|TY6X2OO$kAhELnYsyeM8TwEgp)_0=D9 z7?pF{anHNb`JE$oXo|eCG$jm8qI@Yh?#iP1-QFeUl1Z#mlL2X=T+@v+cDobIi3 zzFm3wVTA%A?%ZQP6tC?MYbKX-U+GRLyL?pK$PB_h(>un{87efh9!8ji|_W5D%73e$%x4u2%M8IUb zrHy~1I3=Vli~waGxhkbbHw}|K3+LfL_NR0nZQ0q{)=qoScd?N|Ryp6lyZLKh5{D^` ztKLVtef&;5Tvjnsw&TPpUIaOzgj4pQIwPHDfLi##7`o$p_4}b}Dle6v)P?j+b6M5AA^1X&Xt>6jntDuPc%D9d!IQueKY|ox$RN|M`r|ZDK+iQWR8u zvR0U-r?LeV{lGoDJid8~{Q@j|qdd4jSAu}*W}91`Fxv=GQ<5w^q@}7j(X&C=$g!05 zm1-*-h0?2eVy>LvQLyK4*y#^WWvBfK;ga7`sK)5(Jnq3}2BRWwle$BPzDVGEW&!Bd z;0#}J3=6Go&}*o7__o2X(T>-6%iQCu#(n@~@)9r&sjwTja8>b#4m}I5Rz@VA->&FSn+c=k*4+ygWw`5p3&c8^2$#M?8-yOdZ+g#;^504HtO;d9mmj zn?~O{VN&*rlxuvW`08A3ZuKAIrf}9EdPY{~O;JiHx&!76Kd!L-wsC@&o}4AffnB8U zaLR5tWY3!k*Fz%jP&E-Y`c?>&64_Z@zDf@fnDnIbHqNk0H7B60n>T45HgqOtotFo{ zA}2*jiCFrky!f*W(U0}sL()>Sejo!z>Ao*%M|7Fy09tq>Y$QZzMu`#+L}d8AK)3Il z+7_-_m$P!I=s^qN!jf2Roh{8)QDBVd<_B~lQfk<5fNC?0els`~8#q;+{Lm=@>LG9n z@DRN(=(C>0LfHydE;2nxC05udP$0t-;=x%V4_=qfezt%Bt79?i4|jg(dOC0@B-0}p z*bjRvPDDiP=jF~rpo!RK52}P>s6#_pxm`A5#uZ`sP#&pmm#5^F>X-fH%esGgX=Ma~ z90hpw;vv$ZBqbQl)1?i^|7+Xk7SQ8C&rl38X3ra(PMJs&!Qn6jmCnSkU%$KyHuwu? zxA!FseeHFxr0ZgO<&j7$>ZYi+-+^5o6uM5AIFv`8VTz-1e3;Q}m1P(?c_ zE`H33a7iN8tQT^$w=X!&-QbsRxiVq%^r=Vf!yl(Im32aJ4L!2lwIuM_08>e&*dj+@Gx=s9nfwzd; zTk)26&_Qi~j(5eIg@hXPZB5 zC#h77%p#f@Oq=qK&O0RCUQz?1|G40N6fQg|Vo$^yuS5&Axg}hG_ksOC+lCVi;|=vt zW|m0Zq$Yr70w2-|m81lr(Lt)%&*j6XK^wHKR3~_iiP7EKJ2IF%fE4n)BNJt1-Ic8? zpB(T+v({TtSXH_=jJ<&4wMCK)B9HKQ}x4V{_eV3{8@p}%}$(< zNhskg_-C@hSZYSg2Mo}zeSm6T>?xMeb44~N8>Rr8nJS*-}{ZvVLS)I1)9YA zvigZPhI98C?Nz|By2m==qc}U7&Cc7hwzoe@-C&_v^n;o7MBmAqdH`wJ;WSQ3f15Zo9BV zVykSZuqrEaY;Qs4KbiCRAY<_s?wPM)O(c~ClUZO#3*2e>=+*_v861K98VdJx8q8IE zzijYVIh8;;U;murC7i+G8jxsCJhpU$s>;cM1UQ~~0fb8!&Pb8mIVX+|_V#DR8!Yp) z+OX{peNuNM-zeE>4*}1OMx#|rWZy>==rsg1m6iuT@6P2#ArU(kAi|(|P+34_zKu}` zv-RQ>sP?|j^mClg8Bo%84i`=V>4su?aw6VM%RX8Y>(_ji|Ku&o48L+g>8Hdw}p&xqxK`)fs=J>@#m4@aXRIpi?2)}cSy{O^`l5-G*DU3b^b?kAAJ&FH0mf zMni_KkC$JY2~T_@$yPG}pX}IG_-g^O8Y{^TCA>R$COwlodMfo@xKG~c(R%;wna5bm zWsLj->JB_8G4M-XVL8qWtb^izf?UxV!})-^k{6Z#ZAydvwYS=TZXV4;dGgCfzr?|4 zQV=7rN?!>_c}>(1{1doWT>Cumja1pBzll*GHWcQ0j^p$v&M|Mw_Nf5_;Sw7|B2dKx zF7@h%bdNzu2~j|BCf*eb@9JWF`%vCyb^Ah%ODcy?lUIRn(cGl5y+1Z1n>+aYG%WT} z?#2r8)71=vH1DPDE{ubu5J)1RANE8NO&~|-Y)+EZD17^{>Fn4dQT!Y2U^cg~{Zl+K zvCAD2-F`YV+q1L>8_K5B^_+jEq){o7L^mZ?7_LibAalCr^h;j|5^dkX=%Y}Pkl&Js zT5ojwJO9mAHaAH9H1@xX16VfEOb88vXC% zyeb#o=IRwAMoXWwvicwG#2n6!7DsOIAXSU%`1_v%7cl8;vUy!c-|hx@|M7>njmFqT zGL@wG@2uBuv`1TP*KJ9MWv4QKXAS8fP_rA;ta#BvSga{#z~Ym3S^<(I6MPKl7(4r`A^-&+W>0C{A6_wZ{2CfLoa8rtoOe6zx+5pI&|FUmKzhbwwf z%TAs>fR9v%6Rx8kWEpZaO@;VGXITc0_WUPBAHKveocjU`eo$_$K_FP?Ry`;l2zf2u z$eytfO0ttA)JV@Y3$QQH)2G(^3rF4fHt|H~N&E_Qvu^a;V_LVUs70@KNlRM0`|MW& zj=S-_W?o(`H>V|If7K_?U^7GC z3Kh)Ft2P*sFTX_CEH3T@@*J$wmq9m|I&%?E|6V9%q`z(_0I$2n#YxC)%HqLieko_0 zcg30fF_xoM+3i&Gf1&$W*tobO?e>mZUeHDpGP?>0Lt;6Z8Y4`S^|hx3GcD6{vKfMu z{}QqG_U+&Hh~tk6H=x4m7q$W@N{01)wBf*S?dYNW7Gs9KT38hNCjU5U|LUEHwmp=1z4Ox*X4dfC9P3O-ff>elCXt2>R}}*$$6%;#FZp2L zXX2Y5$IEIZtie37+8QY;S+Y+fNBF#OvEyOh?wflJ6mM*?XMMI;Pr1%^6GqbW_$+~7 zIK0`gO^F9VX;__CaA>Oqs$^vxc(~Lj6!mxf=q)uRgRxXAPTradQCkVM75(3|`tfFV zyFKF|o-TF5H_FfU^PXbhUk&Q2NkpuwUHjo0!rrNd!hSCtV8)rT4Bv9!9Old=->WBl zV@oeo*qD6h&npI40s(c@JvvhVK&%1DF*CspXt;1Fak-P5#N8jEYvcyE`k`w5B5$Td zEBd4%{Yft$Y}hWUPqLE?F1?K!j7MEKRR&!8lIsWToHzTkP*SaH0W*msnEEC z7Zt;>J&shZ-o7Vuo>rKf%OYY~#DKEq%HtVT@{uP&;gazuL!>0m_6XgdAGCsw_mu71 zi9hf4#Y_bdBgfQRlM3s7mgnvn)^HG@mM`PDy!SR?do@tBJ3%)iBj^;5Dn<1Y^=k`~ zl8=I01SsJeE0~u-{Ws->lDs^|j~_E?HUs&?Uzz-5cA$SG8gb}%GH4{S>pxJ-0Oj3h zhc#Z7&Up9rnKW-n4c5Z;=f{UsSUPyrXHmA1hVDa!y{C|2z;QG+{8&!r+rx#s@a@&x zq+(*u{Dyk}q!m8X(k?#Iom5K?m6a8j(e)`1nj$3j0M?<)^!xE=FGBfd+ z*1XZjKGLN!NPUQManA>7+L(RuN8qV;uO;9rn&aCb0CCKGZnr{pD6$kf!*LhXG5 z*nB_3*E}ju3g)&iydI}~Y@Dc?xEXHEg*XvUJ6mw2JFa~4j0Bn%I#q`FG2yBuCi1*l zs*gvbXSog@Q$?xJ4ZVLaZM)}O09Hd_rZ7c<2IIeUE&W+kVo>wQIv@?zPd zfz>2~l*3Hn8uewYp30?cpe`O~si&#o&#dkN>3O!p&ey|3IY^R*^1b&y=IEC`a_YU~ zJ$V$#gItid9a(#I`)8s$Z02;&I6uPmx(j(m(QMR>Ks_ZmpuChpXzI8t+|V4Xw7gn# zefJz``s363*{n9nz=~8~TEDc!GTuzrjS3x@*E#Z8GLPM8ZM<>I&$zQwF6P#xn5~v~ z?~+MTzkVHk$(tE4LUQX@$90eFMqTAYUe!_v*-EJA9NFqSe)kAjxyL?W<5k+#0Mu33 zo>^QQ!5qFkE98ouGOX`Rj9!JX{38t4NUl1V8c0lNez4a5R)uTYR{5D1UWK-xM*LpD zc*~z$#HT|fL1BD2;=|v*eXeSNzpMv!U|dgSGMpk>FWt~B(JxTv<1^Fyj&A3pi9*t~ z@&YYM&5a;+@fOY~dip(wg^rG9{9SOH)0DTA!Al@zuj8HEW9LrOON|Yp6W#7*P>@=!)+Lf7-4kK zidf6x+Mnk}(C=ZNZ%|`MFS1=nr?r1{<=LLGuC8n}+ha*-lKzPv8-@(H_VBQeQ1`*> zb`gTccNakSeD=A#Qhmv7lEf*ekHqco5>8jJTvxoI`-Jm@+tyZUPQSME!*XNERJa1)IujZZ@IfnaGfc zFTP9(%=hkUb$AX4#`;*2{t;mOsh&P@fbsKTy$V-91x4 zxaivCF8`4iHJ6^x@hJB9!5jwR}4bJEZQD2YCmc4FUm+nsMey_07g(APJp_C=a z<=pt*luoxO3Vm z(L~)9^@s<7{GQGa5_m+%wa(9B7TwKbXP(uAeI!ogAXuuxg#;dBJFNq~%6U+sB&skI{jqbM-0c-V9q$&5mb6Y5yiDNFl~W){GeE0uOV!%_mX+*2jCv|YrSQ_-KTxb4iMfT>Uq^;YijhWoFRTq-6q_@- zc`i>4G+1(6rEpScx;^JUAyNY#LmDsSxtIQdJ9Xuy z?8|5MQCED^9ULx0sGlfg_U?n^U+ms`jaU48Q9OJgC3o`htO^%gmUQ9>$xid|w4G6S z-KC+^YAJ_+)ZfFmRx|yp>nc(D=;WET?TdQ<+}c0uTP`B$%a@;gvlQWgL+Hpe^}q)( z6BW-~K6(ZjY7M8M;p;aYQ}O*?2C)J|=NDxw=AOJk#-vgZ^zqH<8@S1koRC80a#hkZPd z-?Xt&vJ$e17BIQct@POOaPv%X*7f+6T;rq-ONQUx`6$!jfd~oIM?(+M+PtQJFIkgh zSZI5pSnBV~esWSGtIT1|e5G61`xcRCxRhGEAOwBoy+@zX=(0bP23jMSBl@|Itqa~J zxWnlr*Fm_>G89iI0M}^L)@@IjL}sb0trx1{f7KVcT$~t8&Wb!PoBPWOQ#)?`^~GpE z&uMQkhKKTFQhxFVOW)!4#bw_EGLs9ewtS%xnU0QdvaetgjCYrBaMfr}4I8B;v*u@< zKrc?I;pD|uSJ;fKgAxfL2pD2_3XW_f5nQaGW8?T$bFiPAy0kC7>9 z-0lK3^;&p(?$Jy1AA{1Yt})e}pGmJ>U5tHw)#S68NDBHQ>+b&VEI_SPsKRSLyLOHe zORuEB^Le64c2bm^&xl_kl%DgntZQ<1)=X@Loa|_{eiGQ$%UK;ZB>ahuO8Xz0h9h&> zjCVkAiWJhLYJ%fn!u9@Wjc1Pax8>c-FQFnQQ>LuP%Hz@U&j;DJ_PO^V9#SZRt0L(l z!uS4EaVER8^rizjSrJoghM!EH`yEM#YJIJv8t+vJ=>jut&>?Jhjbeo4&wNQ z&x}Hl%|8PuGr~3fXP*WBB1W~tp@?Lie7=+oGMoz@$UK%j7BVROM#v+uU-bMk5M7A` zf!w7^fAz?M$>UUSOR7Fuh%Zmi`Ud$Ma^RZpVyNO(Zp(vA2aGI>_P{gD`+e3t<9>R7d4m3QEe;;tqnU6k9ew>F|2H}=IH{=9VDTHI@1 z3=GUL%*|NSN*mX~XAy!PJ-RvKz?CuQ;?FjEKyx&Z**fN56pM4jw^l7Lhz5{x@s>+? z?Z6XQ!Q=)&n)jtNW#;@`=I-4;(|)A>Sh-K{LD($+`U?~>8GHWzpP=npM!-H=uzRXk z2GNJea{+G*##dN$;Xn!kN6lD*fz@;@U~+GSfoJZ$ll{XZGMQkp)7QGA{heBMo!IuD zv1^H9-IIrS8iG=kLXi-ZXf8~up;0w)=Duyhr{2C>UC#|QYCsWeLs}%z2MZB0jbg5M zZ1Do-d&c!{9tZkkkvwVfLf_;bcCK<~(u5=s_rjtXK<-OcRitKUj%0e+lVX4i8O17MOPiJA_D_f0;FVPz zAFWvoWe9JtWN+I~tYCTMTuW=VC^MXQLqnHFd{UPmSERhk>7R3MilEyJX!P_r08z+X zvMuMfqer0a4CoVRJXvxGBp&eMdY3rcYF2Dh9!y0y{`MN3YG5T%!SR+GXj1eKSp<4E zhbwV`M6=p}i#jT7YhASO(7*RWYXz`RT=es3xxmqtO>p22-gnZ_JNs-7zR%<1mzMfG zE1GQApNN-FOjegM1P3?udEeH`zFuVVvSy1e!_GVPw^u4R3oKn7*eS`JQ_}jUl=ZrTzR}fFgn@eCj^j24r5Y`6rjPORPrjwsYbeZF>Yg3SnV_i-{9k_lbk`<`^0 zHFzsv@QewUb*^SlPBT{)7Lt{fZ5||0rKr#eJ2=aKy6O0g_n)H{<}_vGV}Hzea0x`z zkSK1vLk1SD1u^lO^QN=2J)Cdv@Q4iZo(pIDJh<5hqN>*7Us0NY%ZQF5h+`S&uu6Vx zXcZVq12+tOna3ZeKyP!9hQFrQ8I6{YqqI?bPXJZfw?;hTqTZBwpGzUj8D^xHCDAL{ zw=r-XBr%J`PzY*$uSC-GV7}wc_YFpZ3V&aTa*1a}={?5*GziFsQtn9Bo98<&>%X%c zHyRB{_P)iYe4Qp57n+_yh=g#ZPy*=A&wa`{x2MJKwh|5zW5g{lAQP|Oor^Zy2)RKv z6bvLPE^kyw;sso5j)nNSmn_ynLS7u$aB6@b_Gu?B<1yWNDqnNOKBGc&iN$*!UT5DM zuWve>OU4(SiI+0P8eY#hXM+w$mejcl^yd$Tzy5RF8He)~&hy3UcH~l?4!oAV&qX+@ z9-V;cqIdu0@gVRum)z;~VwFj5+nk(D^meNw{-U(LhXg@t)4A@LlDJRZOR)JDS*6RD z(?NCG$9XffP!%^D!&kjo4;WQe_Ke~8ibKSEm%zW7pMSLc`ZB>3oBVqjhTb$MzGKt* zmL%?d)%ou-8!d@cl&jc3U38N2tvzZTD!)nB<8=RC9uF0p`f7F}_`Z3&gJn&0~`WU@~IYaALFh)HET1o$^5H&DiNZ{;;U!G%kE=fN<($5m~-Ou~lBjw4|_zdeEf0kKd=uXQX&TmehEuRiZ z0M#(%4W+&e+%cekV%FQI17C_BT6l%aW%Zd#!M4@a%_4tNC`~_7*f=bSLU$I6mQN*~ zOA=_@Ztg#;@OG78p5Eo<&xAxQxr99nG3UIrto1QhQM~xBsf}8~>h56rj|5f9@DsAn6;do9d7KQ^xwrn*X2Is%?L(3k(tJF(QV-vDZu&z)Wo3i=}-oX97vS8+T6RTdU%R7OL zwQ>9=JHzDa%-krCd5L~7*smVFwpIy<_=T%Jtt3)iNKL!rQ~M*ML5yH23Tz?lOlHjY znR-E+QA*t1BwN3QojMG;^)HaHoWuVM5tws6T8F$*Qiu&gqx>OSC7gG=9gm3?Hf6!G z8|al25{{B7y*!k1s)f{BOFc@dqU`q9_&{O3QU+7%(u&r{NH^~ALVZ`T z1RAlgW>?cP^0Thbo-OIns-|)a(Lx_ofN>H$`aho_$|-d{G3cQuemlrH@77@)7&EjA z4E4jkCN`F2GqSQ=R6hP#WhaTpV&6T03L64;V9>1IE9Fm(vw9Dd=yiz#UVwS$PL_+EH;b0)50Av_c> z%_!=Zom#JZ6Y#Dh{+A}Da=bQ3SmSg-#DVUVLK5D3sE+u>?i+8EijHHNzZ4gPh9&R- zfA-GdS&%CBF~VT>98{}rt8?&Wco`P?-2t>d1$svR_s9I6XUf@?Y+C5bZKVg7l3pi;XV~E! zPeMEHsCfjWkA(g2Qr2c<`1pC1O_TOo*F0%8Z|%OX(H_bZ!B>Bnn}}S9^gU%FK%q+j zMTxhry*%FQ#?>BXLwS6uzVZs6W74paSNUt>6<@X(gd}srlWRfQ+uQf3`)!{QWc&L1RJ1ZHhcITjyIE+MszH zoyT|kLgV|-6oW4Oq8!HZ2_M_}nbn3nb5r?<6O-9J^|)eKgf(LzeGV}jJ zVR8goIA6l5rf?MxMR&uCf{b`h}&E< zAe>`pP|NwkI#A{X%xUoP>u8vS`IbqBVZpPXvw<0^clCd8>#No|^}lYyAF-v;5?r zfygm*JHfy5;rau*7{=1=?Xh~x9#(zreL*OHFFpdntSL9R#^NPZxDE>#5TWs)cBc(f+2L~_aW7tbsUq09wHJ?4L zuyLU1>!YAcAoihTSB@=Z2U<_pOjmz7^;n$Lo9!*JVT7$|)uhGH z{->dK?H&28uWzX9cUsCZ%j!({uNOoGoBJC*d1qNKdtit+unMXxBmy42)DRsVz#s=;zqIr)*6DY@ zHgfg5r`2ua1Rc=nX`w-^r0Q`+y#4QfU{+%4d&6}5!G?dic|W6%&#jdeV%-`|;LP{; zEy~Sf?<4!YC*9rEEceRvza?o5r7g3CXIxiNyHJxF2zI+`s1|QZ*K66h{na78S*tas z^nCm)DFg?z)?c~a&E6e~Y`NGRt*@h$mY!W3vVOtW{`sMK;plZd2>tw`DAgV2G=rKF zzzd-Mm5941fA~=1w#8V3ENEu2m41lFYd)k)x*d|w)W7$N+eWiI8ZTJ?+j#eh*2&S^ zAmc^aaKts0`|+kMniMsP?9wkJ?@fWo(?qKH_%Xqk22o3!;dRsY}`k>V5z-QR64 z_k5sV;Mx|bZezHYENkCLOeusuCzh-9z@*ob3=Re= zDzby7I3`;D4zc<4gT#RH9F9;zLbLg`p)0!JO0u~HakOy+oXV>W+R~^i$A7o-KnSCy&l z1+Y~zn?B_jTP%CWC+OcmB;O|M)}clvsLF~=6!d@2@} zlC_FsM^s|KFyQ=oeKLJKx+B!EKBgI5$kO9S31KoXH*P<;W_q`bKazDpV}B*Hede@WYhk2nIX*LwkEQN*9K-$K;M`=N zJr_O@sq3BDIVNb)5EK<<@#$DjlYCjrT$@$;V_R>^>|G8XI|A{?k?6BI+@Nj8qOa?e z!6Ukh_v?q6m9KI|s`B$e!Rq96L#26?tkRM^=5m&4{nmwN;dGKKtbar|AdI-VtT(i+ z0M`Wz-4?xOKfzd^r10Aw+zDW@PCxN~|Ne1*$W6HlF7Ie;yx8Y*js=%hNsg&wq)NR) zDzmuoXIAVa6+uQ3>bM~RTm3#4&fP3tK$B%r5qG1`{ODP7(q&em+0&DPa6j29Ar;on zjg7ib80qNH5NBqSfsBa$w*siITa zT3iC{dlqXw!#@56OQTEke5K(3o`HGKV z!}J+RYp*Hu*(q`;BNx`M-0pbgvG}w7Xdo~zXg&*0^ZGKq5Jg{D-+WA%V|1cwnX~y( zxu=62zv3;XXf~FvR6fy^UO(52kq=J5{?9$&6S4#Au?B1F-S=F#WB7`^U5`>JR<*&9 z%Ae5zE6E4Xu2Bbt5~|`OqtIsu)$7cX+&(F_Zm~ICf#61SAsTeyMa~*rtz;=!=f*F1 zh|NVz5+BTg0e0-jo^uMg`ouvDAjLgr0g`$z!~Wm2so4}17mDDIY&0wBh-ud2$BRl_ z6692zVJ~-+53sUE;7%1l5}+dwnL>po&&{gEPx=9(wFhYga@t4rp$?_l;1Z=dWP+B5 z54ru=+;Y)E@P=dB90Hp#M#f0~nm)v;!?`;ir0YBOSFV{FlB?^s<8koaV!E(Bu6{BF z)@H6i&rJCl#RPTkH5LSR+JJUb|0HW6evkwn72R$iZcO>O`suTFXPq6#<61U?zOVY% zKCNP9L03IRvg$xKg3a%yp@1?N4ARhmN2e)+JL9wwU%O|dsQY1OTdz%w!3}rQEl-Es z4PtMawrHoW-UFZ=PmekAdOm2GNfOe<5+C?X%~0-n{{+|F6;tC9#KelQdv?QLo%}jp z6*EPaET1;EP=?vka`4M0iQbxSZ(uGJ{dTIqT=yO{>rQo{*>SfdtaV%DXRt%DzpwF1 zeDJ`L)XB<#IxF@E9!D+m=8E@}?w>-o0T|QexrEwm)#wd zq_^!!`l$QI$DPjXexb45i6MQ9rx^tLJpyynn&|bnM(^K)VpYQBuQhW@%Ir9Gyvtsg zEK4yfr(<6J{I=9#po|UI6a%Tt&^^Q7iEWCo2`#kkJ89F^TLFKH&A0tAygbAQo2<>i zp!KN1JqjORbFn-_%A7bDldh#=5FD*hxWqz0{Neepb4rGxS*=;L>QM`O^B@^xJnP+6 zg1p`1dqy>=t@vto*r;aZx>j+B=}|*wCM7TfP=r8Z(^ExuTh43Ak5|^uc&GpVEF%FUi`#`&oT_uMux8Qa z?x1J}>BEU8j6zX%>^J#V5s8(9AIJ6n_gDUqwfhMzj%3ELk+!~V#0Ci3lfTJEHEq%F z5|BKFCOk0SymBPJ>XceNkBTrYpZ!j<2mbC`6nU3o>Nr6Mij1t%=<^_{wzF%!IQEWF zljMVwlhAs;p!*>KtbDaEVbfzjUBUI{r>A?5kC#v0HZG?vV{JKI`u7O2nf*eV+juiL zWR+HH0q*_i>{OS%?c^|aigqd?x?a~l@;m;IOgt-+WRu*k>zvmLE0bb>XvT?M#m7Hl zLAA7c3GneVEcb&Uultl$=WdFvv%8`iibUcSB=~TaomxE&wvS*eXTr<;94=R{9XXQG zJYHTfQZ)o6i62Txy34ngfh(4SElZD+i*I`Nk)E0^UYum(y3#wR)}^_ z>@^rY2|S;}&zspqaXKxh5Zx4|{Ug>+DeEUHYEY}`?C$p098*5SPz9=CbQt@Rhz{eC z47Ms!?LzJiDFoW;FG1xyW!50LIP&Sf&DqIF)8v$?wUTq6G!Xd2r1$bmIU&}^*>tkU zoieF*OcZ^TWS=9Zc#Qwz%^Z!lU5Plajtiue@w%iY1@HOk9&mAbe`VElS$1)=|C3w# z6}*eXz(ez`XP!QE)^2&fd_cY(G1Y0a`lsXNH*`9t*H%mBe1ZEEf8=IaU?9oi^wy@2 z14;DhmTb^uO>jk1?|n+v*36iaJy|Xfw!3l1o>zqIzCaT74Lk0)pC#?ug5G{b!?~Tw zuxdV@?D?w9=fNh{>T8}kc(Nx0^>Q1<4Hn8m0XwhHLBf-YUMU04$l8L2Nck!x=j%Hu z4znxSKZ%nCGM)(Vy%~W5f{Qe&2|E1oVDqlm&5$jBM@Np^jpHDp^PJd`T0U=?-#Iuq z*&6k6wk2o`C4Z|i6f@@I-}Nn1aq#G5B&}&s4TFjLnwiPoaQxWm3Qeccazd;|;Q%JGm-jBn&7yx!0{`mgKFlm|-n0=MKv~7vG!y^kW4H67*(SZpA`hEAq zKTM6_Y%GLC$JWRYEpT5}(cn+`=uyPspM}#1dUcbZdh@BPTpg!fsaDD|fTw~dY#}x6*BS2R}SGT!W>x~yhFLXfOaMmycth#cq z7k{);I8hnSTWcoV6vCj|rfhtdsq;B@8UymX&AP*zn>AZX96pph(+kyo0p**_>%4YE z(0@aO&r-cK>6XD1@UghJ3yY9<=ku?68en87obvAef#vp0u;Mmw#pK$aw-x$6KXk7B z`(+5sHj!9Z&;&ZNgCq*4756E3>R6v3yqFpF-2Bv7YV_@hBtGF#5r`KS0$g;8Qi8Zn zwWyem$!xQx%17G1wNve|7|F>xU&x^105_Rh-&Mr)wOI zNk9kI97Nea6JuLF@&<8N;NA(s?$hNd_{8eCD{{FJ{D0UOZI+=S=ikHE)wSNq>3;|V zgLjCQmNa0wD+8hw?5guKO|)sD9lT{_m%&RnEgs>4+dVI~8E?F4T_B*9)y|ojCeee9 zEB73QJikVgz@@BJCJ9iNGI~f=fL8#M)Bxwo_Qqrpfk1pD*2!6(MVPN`6{jp-TF-}6 zEmd0l5!FpNfIx=duGG0ltOHiA5#Xkkvg>Xr^gH4vur*Tu0$66gU6_Q?3<=78ea+)o zM#lEv6B+c(NB8xQspTp2ZZB^DiSKz_ye4M*2gJ(D?Y;?Yud9+%P_XbBKR06O*x&Y_-NS0E-S}KEzM| z2V%%@9v4Kc14@$Q7$6*!()h;(iVv^Y1`iC1>j4ZDz=Z)gY_H4hm*AqiF|qA}rfI}} znFE373MH<8q0-`Lx6G(K1AG=EV`F<5r8;;*A_$kdF-PF=^Fk?^2Xd$_#-g{n>2SmI z@RX>nb;U>=4l>$KLIZ;2Y;7kAAz2(s25n6{4Im{)pEjt*T(TetrOkI>3Z4Gj>+a9J z+_+)1@UR?Of>}fPd>xwx3%PggFiL65=hoz|8GASYI*iX zL4mt$S&DgWGT^7&=f5Nn#ts}H!Z8wSI%2X4Va;(fY8Mv_KH$KY+r(%;|2E`#Lj# z#0qQlGT?SQXNBrbaT*blGU4H8^>jHT1Ayt@yzGYA{nLf!hnJFkeY<5HBo*slWkEMB zZDNS05J6XQI46x27Q(;3aHWNi zmofSgyqW|M^u0{rtYB-tZbC2-jSk%+IKd7NpBQ6$HSOL2B?CvmHYoI4;^a4$HNrgT zRI@>Q8<}-^TZIn*i_XdArtKv!!{Kyk#8^yXwI?2RCwx{Z8X}|dKNt(%Vvt`5^+%&K zRFQ$c;E+=}Q)e%g7@$V`ij;)4t#$(#GH(Z<%I3<+$hf9lK)dFR191#ar*J)IL8# z*6l2;Re9+pI4MelQ7bSkubv&{h+8|VZ=1eh*RxI3Z^R=$-3;bL4=}~k+V5lj!7;`F zc!&)}2 z7a#AP4I*YI6b%p%NV(t&y7JEzh=k8P0PkA-L)6`*z`Yl-B0Giye`IS8(NCSVhh2s4 z+|1hB(%!KsLIFtFi%JZ;?)UQHz$Op+k)nTaz-38=ZF2C%2Eg7klrAw%w-Y@zSZ{EU zeEk|=4FR6Sk?1cbPYH*zp%uQ5*i|)Ot9O({=Yxmp%F4^vQp3pecyK6b9uiPWonno@ zm*2*YdeGy*hQVOYI>4KM=|UTP7Xq;GkPpN@u-dVI*s?kBl?mQ1KgCjncBRg!8)0|Vgo=QMr1k=Bd_qf(?H2`_<0OS@9D4A;Hzuz0O<8`u} zR|2*~WZa~Z_vO2m@YO)KqT3_>=Iq@AshZ7df=PV*@Pr7Il^PBF@q{B7jGH>!iy@GM zO*plj-EVBPg{uBx^ulnk+_E-)DS&NbbS6np*N$AR9zGmEG&k4+JP?a)Z^ckzbst_v z`Q9r!$43hN0EjA%aJho|jPp-0@y~o)jsRO2zrkVJj+d?!xq2j`a|}au;%Fy$Lrej~ zerXfMrUB4xBVIcCKZyAq6v4m8;l$O0tE1OOj4Dj>!3#~-8xgkvj127wO9##t@Sfuk zcEVkI%m9$q2ocL!SA_4g>p@p=uA)TEfrhDaG%dp^ zA8~{h-oLPsRMIYnih2?^bx?s}eDnZlgVg4#@n;86KpYZ0mS>(8WdRCKKPRUZ1%yvF z?oc7ugN)H!x_e8G>;T1l{|m^89>Kp7k%}NlKFlYbPF(u!KhC%VK1=Nj$uYF9n|Df_mQ*eirjY5p5-+g3g zi;Afdf@;jeJM|i6E5j-erpJbdj}kZdEJPG7BG~8q^1jyAx}Vz4 zLb+i9;J8nJdgnQbMEc(Vd86$tL=+7o_`%SSd}RIly1lluQ0`a&ghWeA*IE(%3V^A$ zvk*~eJtrcU8&mgv+d*jJxDilDw6@l55YeR~`Yqd8h$viCp(6S%k>pa|{KJDI03l>d z*V|O}R}Ox^bf2CxW_FNz>zI}Z^#DJ_B<0dEy= z{^7(CfRHn0#~Q%9O%=_yvk;LRMC7qd#{WQDTf-x^vryr%0EmFgE_*mJb7sxQMbHAE z+;$!!3MLWs0=T-pz3$cx8-$~WA;$tBLO%1ECub)TvFlakUAD6jQE;e2JrCbcrQ{#i zt*hH*I}a5H3xEh}Y3aCFM7{`Mne8n9zrDK)&GW3|IR5=#cb+tDGum~;N@?iQWUg(% zF?x_$iyml;;9Na0I}kQ}86Cc`6)dwa122g2X#mK- ziLvj)z+rc8$=xC%*M^z>4%ns7^UF*c0PM6urha#h`c>B{sDXg(!m&Sx{$j^Dw_s?T(Jipc=@`9hSKLX1Vk#!= zrS!=7xPAT5p;jH{C9|RdAafSuKm(NT1l#A%&AEF-s@PdGzBM|^5ncFYt~3DTnu*av zN&_D?^F6?p+&v;yq}QFt1_#sQk3M?Scdu#dJJ35PL}tZ|<0;vZ zuCA72V4k~2s*47I%&Qn*S?^wVKlnYsvfMo)i@<~#KP#8R!`Q43&6W__lQ&)GtL2zPfXZ14<1~9E_aVqKMep`P%-w@r?hm3neTMxLuUFn zD7DRuQ{dko9$s?v$dTsJ+&xk|^ut%OdGNvho9pWQ(_r_w`wh8!L>7t}!|wL|l>D*o z?$$r#?vdK00U+7!-hFm?W8+9C*k@8=tL_R&HFC#8@ZSL6g=IgAam}UNO;X$RgH|fa z{{6kpMPZ)|fqUI)$=xF|S7y8cJOTcl7~6Vt_lR7k0U#A=>P&%Gw}p`I0zU4}^4v`# zS8D2rUjJ!I;b;gg&*)XWQi(JGq~gUm(2$aE3&HPlX9rN9yGi6fnNfDs3>ZTh(ZeWF0#&WIVmPKl>O;1@BrzLGmgWIkyCNKJ{crylCJ zK-fM#2yWGbgtck<|MGte{>yT?c)BPqy`bOnrIu&_NKK2erx6-%1Gc*Je&7S>VZy33 zeZl{|yFKsDb0L(T(Np_U%QOH)W|$fTOSb@9-Mzz%4tG}M?vhyT}Hu)Db-g2kMjFaFeCMWAo9yqY> zWiZd(CQ_+107S0R&YdroR9&uiD0N|S4gf^{j;Z02jtXa-y3&T2E7+-U+r?$)c6%sB7Pc{9#|zv<2yGdlzP zxm@P8q6lYVY#GWODpIR707NR>)X9dgHkHe%sVKY&!YW|p)St8xZ2Ipko4%vaV8+s^ z1COlUj1}NB2SkHAOJ{x$Ge&{28DB~641-UYaS^!W&iK@8Zn*>ufe%3#N{K=6p%8qq nT(+t_zy%RY8lVi08=dt)mRl0?}Xlx-%-l6A6XNi}Hf638Sz{r%xJUe9^%ea=1ioO91P_kGfw9IUuF4sbva#D%do$3hSs{0oQJ zSisM(n8`ojhds>tR3rp(_cQ)rgP{-3frnz3Elyr`4n2Q4+Bd=E|2f zuO1o^P_k}x0D`0;jQKH_n9^_a(WRxXcmI7KE1q{D^1=z@xiYS#=o}?1@e=%4QjFU4 zON6S()9D{(Tu+d+mI`+mGD=4}=h8JDi!T*0(l);|-|?&OFBSjX_2XxI5%Oeor1(nt z*zV@6J8`}^p!>sm`9|rdE3eqCYl7c=FukF9U?!b%A^j3Z2D2WMCBGPkkZZ1YNb~xT zrVrGF8gE-2n`XYjC)Tv^X*N~Wdn3OP`gU>ul6=#(A!WFV(xW2ESs$$?wzqpvhvGOo zN0e8!<(mus_9T-Yv6Gps+lBn7HUpYD-w45|M@-4OiP@K!F0#an=IaD3sxhB|uL=|) zJK08H<%&Px!JU+I`xb0kfi|dWRR}BZCC=I;5n3_SU>*gFLPW_wQX!P#34u%s(;P-j zMhK(dG%G4*^@nOe$`jHT66a&c`eRtQIOWMD$8(`Fv9Q?w+C*-LgAE}q&bPHW(oyA8YwyK8?F>}j@vE`P152$`?Zd1*-@35i{kA6MWm4U2vX1x`Z-}8)wv(J7H z4LVV+Wm0%&5|dO`T{S$|=WJI(;H|HRM@tW^R&vWvaUk(O>UF467^*&1$;WZ8eW-zA zM0Jxn0&msQGRi{}^U`}h=V`bPj0RHcFS6_{6Uz7%u{IZxun|(`DLZZ?){0p39A0th zsXn(4rxl;RWQ<{xiIa7yO$(WA&Wy?;Gp$wnUi9Fsa|%%zy!Z9WH?IVNar3|_BXX-7 zbObi4qnY%5$(ziC`FIZIq^C1Dk9Q_0$fUrz(gaYa(RjnO5vbuDHs&x+n%tub)p%=v zSfDW5Z2ZW!E4BRnLv!5DN5OvS?W8ZMy9s*G?J2Qn&QvXMg|+E4O`kt^klmBpbJYt` zqbLkbb=NL$F)IkfXjHmxlRP#xb6*k`V{V(aynS%{p=Ds0pLn%w!H8fl15JmdI z+26+1*PjE<)_xY&1PxA}^f6hmA#9)Ms0h74v&M?mDQGh7==Sg2Y89?=I|=12xQ2@y z*x{l6r92@oTMPX%%JrV0RNApQR&(EvdkiUMwrp%2)W11&t~1#2H&%`=lJ42Z))3)l ziaH6ocs>3gijFa%AMzQT3@5F?f2QuGQ?f5`L}CX|Bmla^==U%gDOLrhOfa{u;<)9C z4K>z|GrB74{@2IQgNUl<1kSVkh@%cGsbD<%a0w-OS>;eeY4yxs2@Fg!zh6V^TpgpIQM6f;C?Qk-t6g|iq!tlODV*E-|3Q_B3f4z zQ{0Pq&jXqLp=yNVLeJ0L8oJWGTu3veT2kMXA8?A^^KWR-9h6AjGof;N*0|RwTEG)Y zWn+;xG0Hg6DFq~6&!wYm!xJ6=X9BEF2GmoYn|Hq=(XoJ4HDRc$%79xwf}4);F{kMh zhtDJEW*$2Socn%E`nrIHDt{YkHL2#`5e^xb^?!Gh;(lQ%z>Zx4NI?y0x}ZDQdSc~0 z^OmiI1$JsgfgX6f&)b>x1X>v1*`W|(Ww;0}l%Uf|=gv>`8kF*v+e?^F1;B<%0>jyo zek+BkYpUYJF)!-neyCZ79rZJ_1sq8tP0Mu#om1mjXHYmnjIIJ*kj{SlcqC1!h8t-r zxu+E}3MH`FIe-t2mSA#up04?9oq`^z4wz~Oz!&@8|B>5t@nN^<9_iY{lkXOxvy}Vc zIj(P(8wA^~56w)TkejN1uN0;r&?ieyda$Poor(mW>1`apK96V~I*WuBxgh&P!efWu z`S?YezOoe3v_NODKW&eB#t?8*{8JhX?JomEjlfVRkG^eNN_F@fNld;obArvv8#|7d z*pw6hPC~T#j2Qkft)_UI5;0=gfTMKudYBhYnr4VJ?NV0z9CI!=RVgw>s+=%UOdFeHkNYwqQ*opL}j z4uFE*{n9U`WJ8HXa#JPVZ~9WYOq-%kK|xc$Vt5e=j^_%2pvaCg*>8pdGkCTuv+i+S z;iwSS9o*(?d)MoY^+I;$a<5ky><7@4W^=TmmX+K3sZr|8uWTeNh{Ip`J@f~kG6$s~ zD%?B;TJI;Rq>A50r^~qxT{@tj|9z=_^4JOrKdUL*ogB5lMAbkobCZ%1!*E9GINnpx zM7oxyaRO%>-;6R)j+$#~N?~f+9|F=|pZa`#FZ<5$FMaVH141-oy=ivU$=llUsu&5m zY*h%A=eGHj|G#~*`Kpy}x5}_a=_|`9d{7CW;&`t~7`;#qKaUDyeY2cKPFl%CRNSr_ z)F#y8m&o_6v0P%ud=y5%1GQL5tA=V04Ny3{?Wivqq|B!|u{+GpW?HzMy2p^qtbMrV z%N<0R2iRK|#RgLHwx)cYjfC7wRVe?m|6HkM6_ZsJU=JrBCK7CSE+WPNmsj@)avA>B zrb4)gpT}C|lF*wvgzq}ZR?e(1WHjJ)*S~zXhDTGW8koNiwR7JW@huY3*21Tt;b6p`;Z zjG{34xI^}FrMzcp(wnc~)|Xs^|8BA3emu zlm!xYD~@*A{m!gpR$=_Qr+}5_^)-BwvsJDfPBub`U=r>%Cx^@P2!PELt$k2veq*;X z4%Un@j*_cwPrvw~V)9r}F``0cG+e2+m|gr9P)_pnf`ehtr>dDEv~~R>=yKKMfoi5f z1qT@n?dh#k1C@4}S-3K~$?%`5=Pc-*7L`2=R-rS6X$Pfsb^85PRcH;UZPCrtPHnI% z?7KMp`R+ordHqAEuC_SzLqh^F&qB)I(ntfB>hU3O$V2;s2)?m8>ky`H@JpbdN_Fu`yv!}A?q}6JJXCVgB$*_@mIcf+#1!~#N$Ud;6=hI zyv2m19=VV24qiB?FdBXVOt#Vp*<~VFejcRK8G?EtVVCQ@8s0*g`^&Qmb#noKYesaD zg>O(z_Z4v&K`*CuA?**RD9_1$*2EwuYR?6Ze}!nvmX&H~Bvlcn4MpD|%HgV#C@7ue z)yZQuholfbSLezo^ORJ^^t!=f2yXx5F><&Zo0t2#(3=mMaQ6>D`)Lbd>7LJZwSM|p zK0%sh5RQ3re9dR9F667j!JeT%!hP@5A?@F)4EqPd(ssJ|KO4QX=-fp0a6b z#?YJ&;9=wxk`H28$=5Fl<3XS!Sj3e9&J3c<^qHz$CNYsS))J(-N6{Qq;JDz4&w9Oy zlZmG%dWAd%v|IfyZE=_ynlN)S7M;hJYZka1OZLk<{lo#*HgQLejFkz{MC}>jG9q3$ zz=|Y!WWrQ(+5-<@u=Xb{n5;C9&K07q4bI(%>~8jpKDz`DwFBSH3(V%#PpxV?jLX>{ z9?*r7em?{|K<3zD?k+={8%+M=q-5-DP%0VnjF3B=hViweiT*vY$PimT#hCKnuCyP% zqqi_Z_B}(Bj(6>;hCqhUn#RXSvnB zj^;HP;d06!+;N8LOS2gaMt!6Bbl*msJ5CL9Ql`E;am?Lt|7%MOI-N^7p_6QgW&Pst zZ45|^2}Rci7LI9Yggi%{hnv!*=gEKJnyDI4EW=!|+2#w+-tI-yMCZxhoS`?%>&)v+ zEY-mOU^VKhDEoG7*(C0X{Mj;C(E%iLLOSEq`<(ZNELu9CcgCL)$l^Dlf-(q_?YkTMP91Gvc z1@2(Jf+xLuZZVZY!p(i@S)|-bk0v6^*4elia8}|6CShk>S7Mo2|JA+o6D@7=qY2g^ z)GT5WggR%ie}4XUrGK@FIg2prhOfRIdG^3X%M2B9H0&x(+DQd)@IBZ(#7@HOWAp$w z{mqeThr3ss?lDQ8=H6B#B&w^$&$S8`G*>z(!F)g-~E?MSr%dM`zG#WzkTkoHet!!JvbS|3yw?wj9&z?94*j0uKZsv0T(S$O;Ua(233wrE_DD6Zj(RFhksPe`8c z!rAu5%ISOWmp;V%?j9lwVAfLOQpL1haI^(-m@;`IzAh7M&O6<0R+_pMs#aDo`&y=A zRx^jvjylu!2jOEmcQ7V;%G;fYCnQg_pt5^fbYz<i$ine%;haR+7`Mj&{*z!ZJe~T738PGIA;RKDPQq zh{ZzhueL;8??)X7X}UjF})Qh{>GJL}$9iJ3s9z29Lw1CnPBR@87jqm9B{ zfa6c!g$dOB@F2RdBtv%=>s^?iNS2~ABhDQL>CRNlU78?1s{8uJzWmf(KfRQ9R{eZu zq#w}O1Zy6vn|?%6M%ok!7@TB*^0 zgiUGmgkAV(Mrlfy@Fw!dE=JLl;<43EH!>?Ir}EJ;{v4F&;Sl|9y7*~g&`?VBwZ`>a zbn;;p`fFXkpm(lSP{xvu&-?$VBkfOniw#K*cQa-Sf{Q%UnB1!%=2zsQaCx%j-^G$S z6H_66l}Ih0-$>vd*{C^>q}+)?GkCb2A={J4cRu-xOP&%uYTL(NdPB-_@2|;C)x2g} zie^2Y6wUHrPFeFwK`WFetoC52odZ+DYL$IWqurxoSdGrTFWRd9>Cns55JxGyPQhjo z(IsGiF(ho}JlR>vS%yh;NbIB0x!)WV`-i#rkpHZ)W_a7}q~7&w_af3upEu7qHT36i zypJ>xU~6+Pkb}i?CTV;v082a{%Myug=XUFc^Lp)A5#MgU^YU%A2cj7$^=e?suZBE@ zqG4GoFCWUGWLbo%d+8grhEjvHQ{jUV;tz}v6}j5OQL32XoENA2PkTyRe|%$VD5W$= z_+xUxF%u!Pfie@u43k3J-0{OG`i5QRU&)?bZ)odNjL&X@lojzXE%k)DK;5I+TqgY| zJ*;06VQe3Z({o6wk>S$$r+Nk#_W#>cpRm9R|Tr? zM24*)F*E{C!N=KPcKjj1n1Dp?@kM87cOCL(GeRZLx_G#>zOjzs=XbGjoNQ2QT7dvhoa%Xy9At%Fz~Mg78ZntF65SNj@(L zn&&ky8H#R+v&3?zbfxqwi9AG=$b!VbdV>7BadQ>br2a*8P@{AwE_%sTXq^>Ftm_ugvBYe)9P)Z?ly+Z+S+ z!v`Z-E5kF(yS7)gnKZdCe2$mITzOa_baYEvJl@c#>oD&2YyixuSa*EryK#Kj7}E4y z+?@~B!)5P9`t}o(Oh)X>NKe`o@xu)wez>v!O#D};tM$Z0lzzNk+|$8nxlh>$Q-2Zt zw34&g>-4o#Fwy=Kl%f4|#5@zeoss^qg=O-s$tu1~&56?}*E9D|zVbD`;xoo!O1+-& zJU8#6vsBW}JGN!_^n#6*z!o`WpZ^+rm5cIzm(QH2|LNGy`)iY^ps@!8u-eG8V*_8; zk)~e?uKoQ}VukH)5n7txrVyV@VuEhIRH=n?pFclW_mmaq4Y7oIW=kq!=8N9LKSi~? z3UdfP4|Dph%WLoikWHGl!<3H^uYRx^D<}|jd*S5ne!~B4jHtyvqj>^}$%mK+k5n zxbs_mB6G7<+t=rS>wXA{SFR-7KeF{PGjT0B)8rJ;pBNNmt2$cMMa%T3Dmk8cupg!#@cFUC5JW!8xRnG&N_hd8^aWuie(H7{zBbL_-zYqR-g~Y%4N31#LpEX9%2u|@YhdX`5p{t^CT&9Je zIOWKtZYyn&{@=!$)Uxa^Wg>XWF(EEl%*DD_-*q94HeO=Qp)l)!I}1$^NLqQ{wSOSU zvCqg2zF#^DGH3Y5XAR(S-M<%HNK?aIrn?8y>K$9GqLTwNTCbD0>9I4k>wYLh z4yIYBg}ZjS6y`MbjB9WU3{d1Dl59jh@oI)$W(K>n>GT|g=@kD==wHX+lMsh6gqeEy zW_+(aH13>1^Xd-V+VxbcHdHxvZR>%XB<{dk`q2`B% zxzom`MCFf7qgX}jPd9!u=qwM_o;K{JZ92lfx<1z=Myx+L0S3R8Tsj{BxdcC-&i>x0 z0TGOA4_IPDxPtL!mQ@b917$aDUP896LPy-7d)g4O#;?zs4|c0q?+B0vwon@q8H6!M)n1jxv_JmKE86N0c4O`ducS9PXCs25L(&`7yEZ+5 z0lr#*Ns|v8?NQf4N1f7yeW(O%~-ICCMQ*b9Z;p|20j< zbNyEjHobA4qb-DWvE^2Z4fY)~^+UX^E%fQN&`%%V)4=<;e7G38<-Mzw@d~o8snd?a zFI!eSk%j4E`v< z-&pz8orp)qZ8y#~EpSpMPf9mA*XR%*t=Y>`S7m=Z{iZ=#6s7>Rug-yHiba{~)S%F_ zDn35L=EO&z+FsMAWqsCq$+t*v_?B+*R5~2$3R2R3C;nC#Pq=hPCyQhk$f=2oZd-Q} z&Hp)Nk$`4hKSe|*H)ov<9MPy}6I6qU!^`!jDbd?E;;l#y#D#l$`rEH3Q6#QQJag~c zUYW>|$G8_ckM4jzUgnDh^f@YaRf3MQf9^Ql&EJUU%9EfOPQL1oN?zA^)Ef1 z3=Dd?`EzM-tjggK?jHS*GxT1bOBST*MuJ%j;tC-M#o*$N)4LsqdxRDeHM$$I!Rc$l z&`p=^boi>?F5sj&bV%|C^ zKaRJeaHUi_yw;XwHD#+r{pHK7?Cm*3a&Wz)9@o)KyW{d0tg;od7CIbZnlRlpR(sL= zhNDR-I(f2Q4aNadN`k#WN-n8mYy5D`wDI_QTH;jqXuCeQl4gb)>e~bgLrc1%rn#m61J&(wvY` zkt0X`JiU~$Tk-B=e7-zk^gtS?ZJ8M{==B|M!uC8e@-$X4cR1vhrH?gDkmzDt(9$m= zr4sygnVEbz$XZqt=q08`2xL>)M%3Yi;m*66<~Q1Sb4Z=B=M46yndpV?V0=vnqisVzbut1K{CL@NoT2*z3nl9YyF&7o6DvLND3b8rw4Wh&N$R)l-XS zR(vPl8$592x)eiF#e7~Mg@-@E3YPWl%I zC#9%u_XbEmP9CKW6I2Fg{}x6;0l3)-O%mJXYHSyw-w>E z!CmktP&x5(n{H6|o@Lut(+z$nuLu@XaAr0KQ*WEuK89l@P6Yx!6Ry5o4f}RibB@2_ z&%;NMs$(0z8up}>!6E$N#XT^b+l{8n#xXHh7mlqbJn4+ zC9m5C<7-0jy+6>*uENRLa**(b!2Ha1XCGrV6fsZ zEqlMb2l;|{EH^kRd|){)r;zWd&F|Ckp#|cWFDL`AG z|2;ILF%Rb|PVZNazf+Va-*yvO`nvlwR@vu+Thqr1Fc7)aa%4C8)ln2?Dr)U`QTZEP z46AUbypt>TYaIj_Mm=miTE2J+uWiItLHoQSXxa;xM%Bj_P`G|NS6lmK`-bq7lrMa~ z#6m@s!y>v>Q%I8uWy}6A214^e6d9shlJ^$E7Gdm1-hvtugjM&oC~2p` zK8>UsJz6&br*+UPHAV#dNevWWDn>j)GZN!rpPL|Sn~m9E39RRsFOa1xvHIcp8c$lb&TVrCDDG?iU)t|;3$f-o> zmSwzP+_oCh<1VBZV@+MCd7evBU%|0J)CzkLm9qqEJ_$Vur2`N6MQy{nOuFodAyY*J za;|m1T2B=!Yi7pOJP|VR;$-tlxywjZ&{q#LY2tT>HWI{%LCsCPS2!Rz|aG7amZCH<}Yac_oX4>+5VX&ePZ*8l9e5|w!2(S zzbQagVuYvY-OHa4(oy?9n3@735eWZ{l_8VQuCUJ^dWkM-r$5C(;%|$9H15xoz{iKW zC^VbZTvFy0vsaDRqjgR5G055@oe*z_GPK+mM7@)5Cx`K3r#KjBKuM8te57HTlpTA0 zS-h{`;@NVRoV;i2{o)WSW2vcg^HYT#`+PU&&g5zWhkf6&(jjLdr&L5be>B)D{_a}n z!>E0?TqQsP`Lf_~pp$rO*4C)a=M6{-*;kToF3*p_x*vdNyg!Uf|K$esmqYH%yw@{GIr@0kY#9gT@N9vgB}I9zX3fZA@Tg1hC9C zk&a;zF$sP=pI>CpX8Lo;V!USkME5>%lbt8Co&%u57}vaUg(9NjeUddcQ4qejGWvS~ z9utp5dp)(M-F3=>kH5MDYqZLD(UM9`y7{l}qARQF&jZk=mtk!i`M<NhqN#o%4}!Id%$aR9k*I%Q)Y^* zpLwkHGyowT;nmY;J#iHTq5Bccm(bEU;;bLcsmHuw<3;~fH^`$+=;X{DBVzO07k<REux!^Z8nA{~fOWNjx3ne`Y&;;6y zE&wesvhdIj)ZyB(aJi2QK<=?wgzRpZ(Z`-}9*Lk9nG@eCxWJMVfmb zpdaVYqwjA=liTzSG&E{GjN_OhN6p42jGh?_fPnuZ8153SvE3lzIC7xDKycmUZEw$! z^)oAKc-rIB2J))wUy@?CLyk_^Q6HSKBIaG;f^i>UcYcD3zjQ<&ckj>T!F!YJF0C@! zu|MexLU@*jiXjB!%XYKiTr(Eml7bCh;vQYd_oEDjh1&o6`1orr`eyIT9Tt1% zjt1uJDZ@SA5O4=#OXztm_$O}DI`KRtO)p6>_68|xK%|YlDXnFu2l->y9dZj7YpU@c z%psKqsq{t1w#3x_su9wOxB_Z`J#bBV)kB(H|4}=BT`5{Vt+Z*elAVG4+i|%$5mB)+ zaai1p7*W~6CSp{KPNuot{pT0@4@tQc!o2!xSD%7d?=(}$ zc5Q<4;Yv{3n!KwylPrwZRUiZ`ceosTq1GPrlJL!7;eVKGr_kIK0f7!SyX)Kg^#4q68(F z`(U1DX<&5EC#ZCO%bNJrhaf&Y@?b#ECs+yp>VMsI>4xk$vXA+P_~wuV zWx{%IX@1{m>XexdQ2EqQfigPrMT8s&Q|cOaDMjSu!EU~{LGHz^^C=BX2Id{hmGN#I zK)O~#c5FOw?f-6D4n?b9O9~;Z7Gf1ooJTZJSLmj?XKK(0sDkiQX|xoB^$N@eCCRYK zVESY_n8O#$QTz6$Ya;}pJ$x4$7&ks*b5EJMdxWZvvPg6%pYZp30q%!e&eUB+0Q(UF zY`CzxUCw*;Qz{O*=NC@X875d$Yp3FRX~KARU%lMg+CR66lSm0ZPOM}y>B79&=WHN}{deWj<=8uU)<}zP z;)i7CQaJwmlELwhPxSLh4XPJYY|E44_c?CuuTvYJ$(Vdtp~s~cI%qRNPAeCg7kD@w z3yxt!KqV>RyAg02WM=CZh=TE<-{dn#fp--=bJnsGs%ia9AjMrdi?Ay}_FR>ejD|@~ zl{aduk2r3A_`(61A{Tu%17L=7qlZx1lAbK?qX1NT<=CB|*~gsAtSBau8syxkeEwM^ z!CQXx5IIEcLb6E@wj+7t&u{u(&14!$k}WRl;h`_1Re`{61bXfkXTw=5vt-Cy#$Ast zA5Hu=*#B}q-w~$}CL&N&fVTVt=RHm`NVqX%4=_nJ5-;D|e)=Zm$pWrxcMA&kJtqs$ z#giJj+($8NFD_pE1Bb>1_iZ9OONR^rEXGAb#n2}N**T8A{lt6s`wmA;+?6jsu`GWJ zZuNg7n?cvXO)}1YE-OkBp@)&M_!zmO6tfsbc7AZc?Xu~`hrhPBPIgR%oHDGV;Xg_= zHFKQ_Np^o5S4Xohakudi%QXg0p^6*c;sQapm)oDw*1_#K)|Gj`q>5e-F1&3X^ZU3T z*b&YhbRNu+Baf7m2uSCYlkUMnAR^R794-6rHeJXdCEOQB6J4vRXE1*|%`^YM=Z7;f zOS6-Q-nz#El`hMMZvHokH{3QgP6n6pYVtfxUw1^7{(DkO4nr%Hxl@;4yFcxIIvQ4| z0ziRB;Gy;ae?dCBbI?AcKG`A>?OdV_Ie8pvBJjY}S!FOaM{3#Qn%r0uAAE#Enn#Ts zsA~)m#-y!x70T!~`q{u_6bup__-(#!3*aCm$&Nc$;uLYI>yzuc&{|Md3U9l_1#89^ zGCxa4h~DZm`F|_}q?7!VeNPkId=vGQ>0MVv_wJtIFnu9{uXauWLO_l^Oed4ge!2V= z#8)*DDJl5dUH7oWyweu&0C4^|N|35))ex9ujUdH9K1^KgHgn#Ir15s0@Mc)081*4z z!5+)UZv1>cdFX2GK8LCENem%TcANnRLT!5}{RkPj(Q&%DVIO$H>zXA){}`B=;V#GU zh!|;HYWIUNu-@!OSTtk$;re2osSR8pz>ffstf0QcNd{sM6@8|PpndU5{lE3eP#6TF z4whE{GC<5z;nV*QrkwQ4DjtO7X}$*t-c^igGNm-NM(iZ+_0W1Ch;v2O)PAEw4l{f` zC2%Q{Y?f!H$3bEDMR1jJ1Hc?W#hg+>{ZOyEZkM6^P6>jR`{S7#S##uEtylUtufFsS zc;pNesxOp%GuHNo9N7}lJx0nQuZ=!(g`m|RTGY1;2^5F3*6wUf9vW67aXayWtN!#k zvvX?DpCe3QbN6m?FDxa%fHokT`HG3pd!-(EK#&7>tC?QNRF0fH z?{C3deWPSQ7aKiCSlva-J!1g!14x>V2r+^Fr_Lz=XY>lH(@oXJvoe%$DviR#IlLeI z@tp>wcwGp9sZSDt)X1x9RYT_-*i-=gsQD`pPZgcnVgUhwc0k)s5cJ^HS||`W*yyg@ z2aqq0X}Axg zl}n^vKT`y9*A>QZ+H+ZW#7O0?0r;fcrZcs0uHWE_=jUp}a`@-rX8r5EBg_j7oh9?g zxNBWQWpJ%Czh_5M26P7RnxBUaGBAp?{I$SyGRu850RPKJR2WV_x4*FD$ehIhhE2-0 zYNZP3AF2buu!1XGrqN*kPTC8EMKdH5!n`gMK}<^AE`@z27l&)hB+5iwU=SSUF|3N= zHYZEb*2ZBh71aPg&bboI3~)6T#AZTCn)n8FF;W=60OqYAurr@$Eb8jioeN9m3d#Ne zUMYYy4b4Q>o_cPW=9vqa|9HlSC9||IuSpreDE(lcZ=&wzPjw=9EWpR|{CfOEtFP92 zFUIisB<5{#?;H(tU_4jJz1dcnt*P6VA1ieV`lB*HvFo;2ab_S_)tS3rFdzN&qx-KP zOsP=p`(w&)pi|fZFUm7|`{bcV6u6TEz>S)#Q~ou8(yRs5*^YD3Rzgli{K0U&L3h$n zBmNL$9?LqGqm*Z1r)bir&cYsCUyaev{X+Q+6pH*xt%8EGV{0XG6Tv3gv@5S4XL^jE z2WJkcLog;CzAP#w=_nz8)04FV>%i`)l_Q%v;~`JpUauhZOYEr(!ksXRH3qz#3 zRb>mY0D^pAoj3Y{zo~hm5T!KCBUAdFkbNXatK8#t&@Q)xA}SkUOg@- zX)hrc+Q}lF42-l^AHKr?vE_~XbAFI!{ijn3vkta2x=G>bQa8nBH8XuWtmT=5wk`)q z>E4kT9g8ZMAA@O*62}!Ch2#?Oc|%9o<%7YU?|OUmPC`Kz&M~=5 z;!OJT3aFdvcavKqf{F^!sWwIkr<=Ezd-&R!MH%|L>5L@syb)9f!0*NY*aO$c9}+Hy zi8WaPz9y}Buq*SW;*!=9<_CWWn${nXTKCi6WfFmF0jM-Bna%S!)rs}r>_<*h<03If z=?GMAJ!2z6Iyp;w8BjIe;8Ja9)8}|wmfjZA9)alcvY|TjulU|t5_l~4KM4JEB(wZf zmaxnnKN%7JYt^c2*AW$xUJ~0f^waQNV6CWa(5n-okh}|U{u=<6D_JHkc^*nR;h_y& zLKew0osz5*QIV7wAHh-q`U94y>%^M;0P_*cV(zKDewDcBl!!+(Gmz zV1Bfhq^W}Abxje0t-g4%WV!nNJZM5GsLYZjE7VCxNM?4v=r!>!g$>ny2|oz`#I(`7 z!Gvl&&%XnDn;dA;HAfS_f13Xl!%6su;0EU(HlKO@UXo)(M4K^AuoBcezJw6OI+G{} z%0cX4u8Y=~fPNwS-fZozKWzLWqod`6nV^35P!(u-Q7-vtzF){!IyOU<@r8qal#%>! zTNXM(Mv9q*!OoZmUP@qx#eOLtv~hrb7TWAocq~ULa*uVKu}hLF{5!I_V~4ejZlN=R zZXrzPOC+Ne>HqMF{im%eJ%rgkj}aop7?x|gdDl7r(BrT zS-Xdy(Val2ha;#yc?Yg7WrNNXGq7Gp6HWi^+CTI6-2a{h&;?JiRuX|nU`MIx6ipv{ zLzPKgo^Bug#kn1{|0KNmP{p~LM6tqu13fLY8F4DBP6YdM-^8SE9_VRteKmQKYC6Cq zB_H7l#!3|1Q;*;HZa8pb3()NW-73=P`p_VIXVMTJv$o1{W336E1tui0{`c&9V(AJ4TF?R9nd zse(Y_CrX5(No72|JJJ6&FL7MGLD3-C27=zDloQ>jAQwX$5iZGND_wbRV&Vm80GCr^ zzWs&DukbzKcq(YG@_{+k-xfaN&+E+A$*Rxce!wLj1wX>nb2s;8SF&RZC^FAZi?>z| z8M1W>=pV+32g*t+L>LgfJGdHy$`GcTl?Lm_RxVS^DCIy;C}zy+)fE4b-rB1`rhjjX zMOP(N>1s1sQMVu0RR3}?Ih=W`zn|Q19lxYu=ifilrk(4YW><0fHYGUS)!`c@*!(uT z=a*mI;H0SdS}bKD1%HkF- z;M_-?B#?q0LQ0EZ2bv>w2=|q|48x#(&vWnIP=YD-m%~64T7bZ(T;g|;vgQVr!Vpk=8!<% z!u*)R58kBq6oLM}$=4(x(wyO?s+l2 zftXbLnAC@N<#9&jg;Nm8rURw-s7NC4oQTX*{&&d~^}O|?GhzW;ZZJofBVPw^u#e$>LI`)TBn3fGQc4C80qK&IzS1EbBMJ;iDgsIh(hXA5IS2|Ol0!Gr z-SFGv_kI7kAFiBz_TFc$wO2gr*@SC6RU#$6MGQd@sq$ll76jpd|HXlb2*8hh??0#D z$2FJ7hVBqV){gxThIY=g0>8ZJp$}cww#l0h zZ$S_%q>PZ$@lIKv^hz;#nJRNRayB94<*V}XtFq90oSUEC6nw@j`-~G&Zi%4{+>9t( zyKCn9-0iX5x01Y36N67EJjycG-`APsAL0CWTll?@GUt1dfTiKR%Zs=-?|jde)7;Ja z(d;p@Zd>94JAD@o{kg=bybP1TlRK|==FyP^RF)7EZU%wN3r3|E3L3Z>ig-f>&&VEs zM8)IY(ouK-H4_z(*II?};y7R7Qg%SsnYX{0>fT2DB7Cf)8wN4a#j!z+enI~UAWhNb zzK4y0Vg1X~*S>C*ZPe{doYS*qI#3M4P!VH8`lT!zN0yoW%gJ~dl)u6u&Vn91Sv1Q0 zE3aa5-$ydab-XfpT~C~E3V24au{p6(E5qN{5H+KRKTLAmsc7%eK?w2t&S|GMeG`A| z4Eyf){fr&CyDFM5UHvKH{&grff6f3392{F=nuGLkPsw%HIC|Yo2|nq&6TMp5 z1}im2IhK~<6p0s{GE<6Ex9}9?-A{e{`?o+a2eN5F%v+ihyFTYUSfb3@g_;63z#J8{bGZuoT_1r% z>BTTr+srohU`pMGci=HxRHvhDAwNr#`w;Oed{DQ$gP%N+%TivC64Zz%o3*OCAPpb= z!W)x6r=GwOQ|X0l2*rnd+JFJ%3-DYsz22>WG;OImidTc*z}Xg+Wr00mF5gi0Q?-Tn z(2ziG{Fp#XnwfeH-KFrEi|PJfOph{%RsW>VOQP%a zqK^x)Kn+ciwg{z$M~pOm!0#{YxhOZ7yG(Za)HDbNTa`l@!8OiHmthL~d;Y(3A5}Hm zLci)m!{(b8({OcG3?L1;ijCY0*?B^p10l+j$K@=atl^6435_JEk~I~H=b=#(>|c&!{65r2;lIVcI*8@Ip~w;T?S<|lwoaq zr5SRo!=5I29i%6;TWIj(^yU#=hCeVCacj()y54~aY-PDs>NxxzC2eba_#5}$wva)y z`%Iw?Z}B1PRL4SmhvTGzKx#kHHMY$Chg`u%$eb_-BgVn!-9|u2!=r}?+h$aHuPlf8+lj}+Lp?rjSyun1m#h%n^{c7mFrB9`&PKc<5| z-IHLFafkZKrwynChrlGXai)+=G~!&Q;biH%R8D)WB+yp;hNSP&6WwzL}^4*MTKo6o;TV~7r>PXl6vQY2AEO@%6Y9Z3uF#K7*iRQp;Kpw{!`y0g!o=AqV1&XU_{+nl%_+hANUNn9r#+a3!tiC|zMb#tP7*>8 zCy&(QvZZ>tOKth{gavHIwYqWkcFT#G?hldF5R~!!19Yp5fbnQU2bhJ44q`s|>Fk-H zr?0e(drYo-th&qw9|_0Zt^EACV$1*Pj8s0SUE{DE+GfRUiW%t!k(!6D@*x&Hf3s!k zk9zJ==e*bO1Wze2QyN(X)4D^YsO>8wcn>orUj!o4tZ_BR(kr>|(O9cu8~ZaONofni zQ+HieL9meqWxPqGsWoPBQz$h=2#wRSc(}1}L;|s3cNy^-^^h^@nOWmb7mrC!rN*fN zRBK>wk5K}aTU9U&W<)6D>LZ$8fY*hY-u!OIX$fgM`PuiopkVYTGH}v^4$kWY_Z6i$ zp~pDgyq_AP1x8o{-P7ov6Qsdz&|NwNkLYlaSsNAHz~kmQyMF};}zmxu7XswMC4o*h`1?Qp@JlVvXLKYaINXCOnwI3KR}!QJTmrQ{9FU zAeT&Is)5ddyo2uy&JKS?QnN?PA;BNjBk4siE|^K4XKJ!D2neTmRkvt@(x;=#RdmfbDi$j7MJ@_@j*3#O0O{vd;E2NZ?M zi$$5=F%KB6&b=#|nr+}hCYv_ud4`XCNC;$$Ak^%{Yw^jcs@iy+Q%OTY2l@OOAHU>) zf;1JXfL$U&p3r`P?>+{mLJOYb(m~?c7MP7{A}4)?7LQwSIQ{n9Zh@u#tz*gz#+*L3 zOZ3mUM&XNMj7}?cISTcgHCO?8;DbrKC6e0t)&N>SI(iMm;s|}-2vBNvnNozCIbejn zK9bEn;DaiF&>rNUUS6NMffd@rO#Zl*kP)-#hA9sUfmuc*U&TiBAT+IFKCh05R~tMJ zeCW4PrCWzR{(XMpD2g>-UgLt}pz6u;77wx-b8=a# z;{|oZ0yDgJygFH2$B%{&if*gM80osEt}-GJ@ee8ed#jU!%q5iAEMYEq#l=k1R0CVd zeR2pyzGeuHTW2u7S~DzZLl-KEA>T94z_TV@3E4K7}Nr#eyhQyR4NO?QQ zjoRzKB?x$w|DtjdL8VUd zGVBisPzVHm_Oz>@?QGl9h#KMd#LSPl+o@X)jJYqQh_T1iql~w=jlH_@bE`+JKTiZs zOSR~m;MR_I=oZ!kWClM_c(4;@VaRMigAdJ|BWQC!Jq0@odD@p(S`%m`p&;$u1lFtW z)!k9Y+FG1s-dx1+Fj;>MLs}Z19fm0vb{feWktrF5LRE0`1y?%MpU@7Qht&CjMSA79TlE}Z z?IJzzMKPpdi~T~{5L3z&JIv2yFxQ*HFv!7(zvUZ=!+AK0JLrXuYYpaz(B&m;MvS3E zuhST75P2&plfQpo@(;2J&5pAn?Moe#9SwJJkQrDj)A2`8;95mHie9vPBzV+T5YEV4 zTKd)Xb2Y;lg5Yo=1T9SW0+c-kz$%zZ_#j^1(7+CkAn+oTlOKAC@j!XhIuT_62b~4q z&A=XG#96)s_B>rY9~9S`Ex?&+zFdpC_Da?~a6HgN#E!YP+NYi*m?wg1r8T~K{>9i{|N$t2f>B< ztCN`pQ|BKOf77hmaI|jewlA>5<|8O>L--0=*adpZe{X?#(2y)QBMj0}qN@N}gV$(w zj=p<$9F^nFsN8x88T&b&Vy=k8^Ph3nTx0u!)mDw{6RUgY*s(W;q1R=AWkcA z;t_Xk@_PgXn$JHVS6RcfV(}rt6JFhb#8ny~wwn?qpFbZ?tA&Zh2Q%Q*E`2)qDV<(L z_0Q+SGx=^rqpgQYMejQbF)eHmmk_pW)j0iA(QdR*vstsVM8_-Q0<0BH_ZBPPO59soL#>#@zu91_r>KJt3bieADj^Ve zkQaUoX@y#2^^2lS|&X^(3Q4 zG&C(u%-477w6R%+4E^1aAoEc+FFKmV%#Q=flGKMo^O(FP=wgI{`aJOJ**}k4C#MiX zPR$u_zCOy@6?x6#Padmc6mi4+_eKg1s)(j0v1;cSi?c(bZ{H3tr3GUJnWDJOPA%_! z)FcYSr$vy5d&!Gd*Huy&=n&fuNvJ^7T(!oVY)j??{A`1c?6E0kAD^V`ZYeQu8v09 z%vEYJx7QWPZ`5Yc=u1?nPyV@C#z}%o^O>pu$^FA9ON{#2E9KJsp7I6p)TX!O}G`la&z8oSxGyNGL0=SDQZop>X*u*kUa+v*pEw;hiY6I$7j%4Rn6 z>YcK9NfK2wTxka3hLt^(L}f$$bd(w8_uh1MQA}N3`WBf;M$+CP_%(3PLgJRDP_+Gj z|1~=dz$c#1Eh#pI|3fN<^DW+mpHVN$zpP@(P07|7NQ?~q;FEFeB;F<)2aVYZpQDeAU=Q1^8kUxH( zSk^64Qn^9b6=)#OVyq&t;n;%Z^i=G>SmL)to@C_cPt8Y-mIS*#(+x*Zd;&o!4sd2Z z!Tnrft6!d^ywr=b7hUEdXw8_36fSW6o3HDAaUjQMI`K9wEqF9Km8jr`iQdwcC^WLX z*W|MSE87rNgk6&9>MZRwA;y;Wu7QuhSx(V@{p}laRV+Re@u=MY1WF717AB9YLxK23 zPj;4zbyI2nlfwNme3w_ijGQ=eQoJoVmimenUOq@ap6pqs{*h+#PoE?L`?H<&ew0ye zxpG2Ev_l*mJI+v2da2)1G2zVL!jV6T@pz&Dx~cgjluff06vWgOb>|*aNQHwr>#NSU zeq|1ZGU|73zdvQCyo&cfz**R!%=vQrm|x^_LGj=Kmf~f~^z2zr%%z1}cFz+Q>GN4l zvBh}a^OOF1U^^mA;St)p+%({0J*Axz5}6^)W)W^CgCP`~e0&jH*H>Le^(O&^U zYw+zWi@J0jAv^mzS;l$KvN7`E0fe|T(H%X0Z+~ATbUQ94vTJ1^Wk%ltfz*DQ|42mz zpH5)2wO8OsPFxDPi=Z89H9ud2N_r0(-7XC*F>8f7#cI$Cw*Y}m)sRPYKsKHKtbZ%|i6wRnoe`}ns z$l0lj_=X5#7U{i@1Sx(_{BIR|czSt0wK+2-qxsQFtB(Qnror>Z-E=yk6 zbicF9lT;$?UXRb0(VrVql%%ws^5%3fPU-Ip*OuLgW~SY}9W%e`=%4K@3dEq5xmo2z4{#{<#Cx!)@2jG{<&hj^2n z+BqQVxq}h+Z!g|P#Pa@e_2(Zkld)E-E=_&U4E0h;UuesTU+ll|KdhV|J=T5-3?nAM z;rh~#*$CU7yOgN@#ADy5C8--ET+=RQm8ae}B?l1;j?&q4g zFgme3Hl&X3wCafx6?tj9mua{K(}=pf17?M7pWr2$N`ywqEDn9=(x0nLca&9DW^>q)af_gE-h&dYUVwD=^5(UFNL8D-2-*efh1mW6LLq&zO0fA* z`KESN)4O7O>%~DkOd+q1yb(;tdLB$RD!C*>mZem=liOBp(aCzb9mbSn8T&Ro!`Y?G zzwM}bS}=aKs^T~9j97L$0Yi`wD+PuBUv04R`#Zq7;P*+!^lI@06y%lU-AGA{vbWBL zC|sLTqSh#~+bWPM0!**Fx?)$k5z3Nh>(5erdD9cQ0}6Jt9gMl=ab`Z*OV||jtd0@M z$49)qdn?K^nn#rBHMcd(xw%x1>hswrtD2pL)srIpgKJjC(DB7FSKI_6FTz8N-dF=o zebHUTr{c1jZK;7TazzBW&cG>H= zIK-1E4a1M*w6xOkiDw#ytL=H3a*?-aTUG|-{tTTMvflm=92#&gnbLe;#H?~J2o)r` ztd}zgK-&i2M!NH$GQLJtpBdUkW$SG6^z#LSlI*8#-Kf`neS#v6#95WXk(--#dZM3i zGCwu5Y|x#U6^T zV!>~|J0u>3!3-tZeJ2;e0)eg%IiK>~W6Cyv`BI_GX;N^?+wz8q2_=n|t2A&$XlA2m z%NYJ;8?~@s(=6!zz-s(iK{O7x4`>dwkycL%CH0*RZo-H{&RKxbpSaD2WQ`uPv~5n_ zD>Ar;8Zl*%b#|WcNNNAO8J$@#8PR;zNci$43>#RVO4m^h4c&bC$X8MK0}IQstQ51a zT`mv_yntJuGyt!~dC(_lTqXd%`_W@sB|c(48iO(TWg7m*VyJ+P&+vClUtig(7!RhB zD-?vL?e$72kT)@669#ZfAIHV4r+8>_=#?_JeS67BoUvd?CmnU41o<^^!J*zUvcN$h z)SUajNWJi31kwO>oYNnxk>!r zGcBiXUDy8#w%DF@`YaE9F1c$ip*ZC@PSe#N)I_V2u%8^Qr6J;UeV)E~RLg^5(bz?f z3Fj5OD42(T_3KX_T1ellF^9QjEPv_^w;?rG!p#0)p&GjTj;{I69P@Gs1tRRKEwzlwZ%jJho;;t$sGGrr`(DXw!$r}X$~ zofgmzsA#=K#5ah$zYw%h-Ep9kxWGHMU5m8uVD)pv*^KaX)*rR299i3yB z9v(2o0?O{m9`x=mRMOxUaE*02n>l=C<;9EhB;njHkI06xuRM_$CrpHt-{@j`bYEX% z<-*x%L$l7d)YfwWh+_lS5A%27wh8oS#Aq3J=BrLm_)$|$lU>sS*4Tj~qwV~5X*}L2 z87jHCvg=Q&p*h>WgWfAle5a*p=A8Or{jK&*oX7t;yy7;DiemfmN!Lk2(X_}|97V`H z`pUaOtgFnuIF~CF<9u|v@O|*^Eyy@YkuHH#Ie`C-ju8k6bA2Zf9r9133*6NF-olT-iXD(g-q z8{Wu#o$B_4wxFP)vACn!ky2gsNr=sS7v;mY z4?|;#rr!J9&aAFtplXgAEV=_JB17r zgxG`K-x-o6A;^(w#SwE4Q(JtoegN<-5&#cCP4v)wp zY=YOy8U|bG*3mRIixG}F{FW8?PKU|!N?Y$kyn**oePd(MYD~~X2)_|L$C8F04P*9q z30o#Ela&>G$*Yh1Yk))8Bj^u~?3?+kc#}$7{mh~t_3BrpO%g~@CaI#ieZgtqd$!PM zo%o)sQa&O2?#Jpg6u?)!hV$o+*A+4?Yz^mD2QNLhqGwBkCLJXRHU>eVSJ{8~DLPI! zDry~;k)_?~0Ggp4;d)A|FjPvw{s;v}X?8Z_(9l%MNwe2PGiK0!U~=W7t#A3uLa$KE zt|$`t4Zh&iN^b3hc`>DwmZ119lfFKiTbaWB`c3B4HK7j}@OCs~YKz+}fgR@bQVkMX#`IW*B z5;%2{^T%W_Fyy=tp9*M#cLmFl{QQ{>l&A~;Y<#q(d3CHLbGYu>uYJ%J1v=ah60(&9 zASfjzjBmjeKs66*bXKE8L+^!eo@4^P=SziOgY#(?A;hnFqm7{-$+^-H zdXb;fXZY)XQ_1Hw4j<1r-)im-m$G#Ae0ZH>$w<4Lq4DXdn2S=2*SU&{ic%$S!;rIz zqPOE=P*4!##s+(irAG9{L1{gS?<4d3f6FMcJ#;(flR29&$fqfA}aR1~43=*A0>+Dk}|U6>W61^UJeFlV&3;%zq8yfwLs=cfe~#Ph4> z21CdoLHMUC^Db2>Ewna5-tJ2Lg(YdX&lL#*-gB#KE59^wye5Y_Uk7nxrX1F$hxH4A zhAmC+K;z@17iQ~J*E%nbyeu)*=LdKP`yDQ5CKKSjKGpbXm2Wc{gULmbugRNg8ZpRP zXZHh-K9{zJ2Z1yKMBldYsyY@jkcGFF1~rmOdV%_WT|1z#I0)m!KYSl)k{aK1jk@8% zS;;Zi9Z>UD=Us3(NsrFE{O3$XMkaO?~?A6<-jzuz7N#*{1yMw(o)Q?u2v@ zZvm6GS~i=ro!#~`Sj%RR#891C2jrUOW^A}x3Y4h zmBIP?=VHe<)M`A=i0wW$WMQcj1HQr3cvIAF$>&xhdB~_5a9px56&%6*MpK_y4NN!X zLHY9GLm=L3oOJaJ;tq?5)>bjkjR-czrT5YwKS%Unldz4SqUxJFxU$OEIB9|DEj&GI z-fyt5<8EElk5Bmg880-HYP2c!{c)aP$fIy&$d?atVN?}L2{Z1qpS*Go%4CP{QlSTw zTbitq35$S3b#rGNuf@OQgcIIVsc3En%P0VPWIs6g`18%(`z9uU^wpirN8)?{K}mLk zBtEh^DxZl-z0BF+rCI?>FxGjsP`0BzEf__(*viHto-BNqlQI(bkQRdX8C1G<|2z+r z)BSL@BH(dN`hq$xG2eo3dx;SOteXD{i%De{R!ZI9rb=4ouv1Vj{=NZ~-Ngd^yf4&p z*^YL>z9#DpA&R)%C@ha@cxB*&C1U3DvS?4u__HmKD_p-A3l8|M;GJ8k#?FQb54t?4 z+-iEB{5xs@je|Rr5ZoKyJ@L;{BV_a1`%TvZ)#3|M`lQXT*!8+HMqgd~E%l^mSwy^h0!LMX^)){r6VqEbH*T08fd+rbEfv7> z(T?>4rJzQ)#3_l1g*j3RLM(vNeu)CI?ogS(g8U#karg9_PNMt{*vM!i%a7^(+ii)*(v8aegAG0I026?(00gsNd zE{5pI7%otkDXfJJg7XqvWAy~iTif$P;AZaq5>k0155-G^<655d>EG51v|hl7K9W7! zq$ToRzP*Zg6!#b_mo1D8VT&X~o%WPrf)_E;4%05`7`;uM|3*!-2)_pFG@Ob!7z1MIA;&3p3Oc37#`XgFWnQW9RVBhcrCF zzv47P`sKB2yYY6Op7mpQ%$q<|d&HCdQzeQMD;on8Yby>?=-o_i7^*vJE`b-s+H^2g z!`ECGAdlo#5F&*ZvWwjt?|+U%t#HrLA!~tlOiiCjfLsI>5rVo6LXKj?5U#ldj8e17 zZUTn_#LS6aBX?*NR~CE#Eqem5qADSFP5_mGnqdgE}oEPR0-Kd_o9% z@??}m7NPKb6i3ib0>5sg8|CE-LH`qppcQQ80a(G_d(=n@N+HB<i*!% zFKY<+Vixxl_?A+CB71s(a^sG~$xgwhZ|-Rc$SQJk%|p!g3bwKpj!eI`p3-rg<`YH=q-YH|+7`W+m0We}s3`Udg~Nz5_TsMQ+_aDb^y z)Ut9uy$%XgtZ`7LCL!>upv?R=MBAF9_FSE|e}TDRg#eO)P#H$F zl|K~WH4&XO?d{j%6aBKz8k*AZA*NI!K}*G((K1aq!Zz{jH&h#OrpnnPM$A|`fY(lY z_EZJmnXs%B(ojeo<6H2Ql5*{*fdEJ{NSW7C^)-He!hKE9*TW|L!#&Gjv8!{56!)k6 zrhbkTZ|RS`Uuf~ua#C*KO#Owe=xnVoJt0^hr|s+r=K!gTLVy&Y$$i~*W4Zgy?!HYQ zU+>?S7lEx<#PfLm4i+%+-mH@rBWsT5u@%8RBZkm%PbmXOxdSFAH3umxLZu)N?kq+8 z?T`KU7xwokiHQ0nOUVEbJqysmR&kto>gd-`p)#nY;_#A0^IL-s6nT?+`^Ou_p6CKz znY;B4##0gP%I_c5&P9YL-RA*tn5JtvpHCqKdSCwzJTDY1_qH9{=WI5^u95LgqPZTC zknpT_y@EjXqt>U9Gp&2Sezr8>urkLui!g*vIN5Q(YL(miVZkig$FO&k+Z{AU-iC%| z#Q71vrjtG!Be*Y8!G)}_wOVkLfs}v_ANp`?}AYL}Ex=-CsuxpaPxrF`?EU(!Yon<@#tF4;}-9yx7K9-obm_2m3#(rzHNcP-SP; zV$+%1*4>@1SXL^W{{cEbQ+t;2Khz$)Bxctoz!3+h0 z78AZ=v$NnLbV|QGwkfA*% zwNED~9y;cy#Pu`t!`q?Gg+JPbGe`8G%nJnYg8ssn;L2OxYcuJ%1n)dvHVwwsbj(K- z8#PwmV#VY(Y0mDR;RDF7*7C}E`G|y5bw*3~$(ZE$F)lGSvfkYLE!YC8zxWTXW4ib3 z{^L>dsq?#RUfQO~exe(r1Bn4UvP>57vE>c7zGm~oTtN1o3#QiBk)OOMQwJOAY5-`; zPPNk)2%#APDR2!)z9e}|Q?Dx<8Gj4C!_)*BR2AeiJ)}Vi(Zt*t$21O-{F*QhHIJn( zX(-ChZpcWyWFqE*X+;oRTz*fUx+L777G9SBpLC*Gk`RUf5 zcOO1TfBm{mK_}qa+ZPljB-V|Cd{=!6MzY-J^y?1!0zY-z+|#({y-@}HR>j}Rt&)38 zuPUrSBjOgrr09ur^Q%|2*i{6W{*sd$f>Nau2U%g!86hXee5=60j>uyCzL(<-`7qC6 z!_B)(o?C}cw{9&C&oci7gAEee!Qf0#>qRj%R`O7^m_hCqOR9$nH#4xjJ0?yW7Xi5O2Tx`;{cL z>Gfvt_I|7h0U|#_k+x9Z&t7>Zo+rCx^U+`F>OWHs!a(;x= z+48jBC)Qg(?*wf5t!X~{yL-6+cm1vW!Oo5d06OJAli45N_9lZkc`n0W@os05EHcD z?%FUEz=PwzBA+#LCh8pQtSi8A zOntxmy@$cDAhGLu`IPtX{fM^$%ux}<&K?)IE#p<|m$?fl#>Nfl7cf>FP~7SoRU`iA zQn|1J69BR~mK2A~hr;eTXCvoZ%bo5IxV@;ZnJwW%=2BcZfq%IRLC^Uf6C2kP6@LHo zc}sDYmNL*C{*k&?%=Yoaov@6lPtx+@@Zir=Q^%TKdr~g|4yxTQ*7o!fVij8y0>8YD zpCnd}M{o9U+#@nm*JJ~oofz$U;n_^+yYax8sX(DFD{3&ot8X~~F2mhMkL%GgX<-D55&c}pD@sa!bMejchUFF%aYRR! zSqph{vsPxw9{M{OZ`x1P(9~J<~ybM@?xbMOJqEyL$A2!>dKH7NAU50s2fY z3gye^QmZ)TM@|9H@EB2Du0LvT{k;qX zaCuZ3b6U?+gzib%C88iVA9*KeEk>Lvu5{P(~+t= zx+mBcO8dh1DTcjibz1LPeCN$i%5|ARRT~Lk65oEQ)zV{8en6%v1S(hW)Bm>alK9ty zVjTO@-h@__|3}cG>lH{xy3RjQRr;P^Wgk}Nh|x@Rqi$60IJM+0RR`R9DLmv`O&%^& zpX_G4VF^({b@))Ky1h^Ba5u%r=0VeTh-=#T^p%EAWAmfXio3VS&a^%iCTd{~%TJ+9 ztV$K}-IZ}hAZToH_1Y_EeeHQPeX|%dwr|SzDvKL5kg;9tqvmGjgvE<1J%GSlprhxw zLwO_-+sB|Bf13Y7)u&PwJusbn%A9HCIK_CkfL~n!3Hlq`{Z|i}Ez!QtxXBJ;m&e5C zYt2tPiVQo;(;xBWq)l9Gq@{KN z-9e3Kf6LX@2X%B8(YZ2{|60WrLe5?%&65C0&#XxlzT)9W{XRL3I(!Q`aFm2>FhRWGm3?LEpnlz_mH5KbtNA z?TGaAFVy7*agnbz^-wde7^gt9f-RM`88=G9FIa5ARr`gR zW7A_k~;VkZl{py5Va zQ26%fj`hYk8?Z+JzSgPVrwY%0AS$qNS#`1}$&9~`yV{h_eG?#&#}mt4auJ1G$FXhC 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 literal 0 HcmV?d00001 diff --git a/public/profile_img/shared_profileD.png b/public/profile_img/shared_profileD.png new file mode 100644 index 0000000000000000000000000000000000000000..add59e4c443840314cbfb2e9a32a64a715a328ed GIT binary patch literal 18238 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�u0q;RXKoHfSF)3xpX=kO}#U{v7H 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 D5Ouuy literal 0 HcmV?d00001 diff --git a/src/app/main/layout.tsx b/src/app/main/layout.tsx deleted file mode 100644 index 54fd2f8..0000000 --- a/src/app/main/layout.tsx +++ /dev/null @@ -1,11 +0,0 @@ -export default function MainLayout({ - children, -}: Readonly<{ - children: React.ReactNode; -}>) { - return
-
- {children} -
-
-} \ No newline at end of file diff --git a/src/app/main/page.tsx b/src/app/main/page.tsx index 5f7665e..50a02f4 100644 --- a/src/app/main/page.tsx +++ b/src/app/main/page.tsx @@ -1,47 +1,29 @@ -import Profile from "@/components/layout/Profile"; -import {fetchCurrentUserServerSide} from "@/libs/server/user"; -import {fetchNotesServerSide} from "@/libs/server/note"; +import { fetchCurrentUserServerSide } from "@/libs/server/user"; -export default async function Main() { +import TopNavigationBar from "@/components/layout/NotePage/TopNavigationBar" +import NoteExplorer from "@/components/layout/NotePage/NoteExplorer" +import NoteUI from "@/components/layout/NotePage/NoteUI" +// import AIChatBot from "@/components/layout/NotePage/AIChatBot" + +export default async function MainPage() { const user = await fetchCurrentUserServerSide(); + if (!user) { return
로그인 필요
} - const notes = await fetchNotesServerSide(user.id); - return ( -
-
- -
    -
  • 내 정보
  • -
  • 문서 목록
  • -
  • 설정
  • -
-
-
-

문서 목록

- +
+ + +
+ +
-
) + + {/* */} +
+ ); } \ No newline at end of file diff --git a/src/components/layout/NotePage/AIChatBot.tsx b/src/components/layout/NotePage/AIChatBot.tsx new file mode 100644 index 0000000..7207e92 --- /dev/null +++ b/src/components/layout/NotePage/AIChatBot.tsx @@ -0,0 +1,3 @@ +export default function AIChatBot(){ + /*TODO*/ +} \ No newline at end of file diff --git a/src/components/layout/NotePage/DesignBlock.tsx b/src/components/layout/NotePage/DesignBlock.tsx new file mode 100644 index 0000000..d899e77 --- /dev/null +++ b/src/components/layout/NotePage/DesignBlock.tsx @@ -0,0 +1,29 @@ +'use client'; + +export default function DesignBlock() { + return ( +
+
+
1
+
2
+
3
+
+ {/* 선 연결 (예시, 실제 디자인에 맞게 조정 가능) */} + + + + + + + +
+ ); +} \ No newline at end of file diff --git a/src/components/layout/NotePage/NoteExplorer.tsx b/src/components/layout/NotePage/NoteExplorer.tsx new file mode 100644 index 0000000..eee1d1b --- /dev/null +++ b/src/components/layout/NotePage/NoteExplorer.tsx @@ -0,0 +1,73 @@ +// 'use client'; + +import { fetchCurrentUserServerSide } from "@/libs/server/user"; +import { fetchNotesServerSide } from "@/libs/server/note"; + +export default async function NoteExplorer() { + const user = await fetchCurrentUserServerSide(); + const notes = await fetchNotesServerSide(user.id); + + return ( + + ); +} \ No newline at end of file diff --git a/src/components/layout/NotePage/NoteUI.tsx b/src/components/layout/NotePage/NoteUI.tsx new file mode 100644 index 0000000..5bc4cb6 --- /dev/null +++ b/src/components/layout/NotePage/NoteUI.tsx @@ -0,0 +1,32 @@ +'use client'; + +import TitleBlock from "@/components/layout/NotePage/TitleBlock"; +import TextBlock from "@/components/layout/NotePage/TextBlock"; +import DesignBlock from "@/components/layout/NotePage/DesignBlock"; + +export default function NoteUI() { + return ( +
+
+ + + +
+
+ ); +} \ No newline at end of file diff --git a/src/components/layout/NotePage/TextBlock.tsx b/src/components/layout/NotePage/TextBlock.tsx new file mode 100644 index 0000000..cff0392 --- /dev/null +++ b/src/components/layout/NotePage/TextBlock.tsx @@ -0,0 +1,11 @@ +'use client'; + +export default function TextBlock() { + return ( +
+

+ 가나다라마바사아자차카타파하 +

+
+ ); +} \ No newline at end of file diff --git a/src/components/layout/NotePage/TitleBlock.tsx b/src/components/layout/NotePage/TitleBlock.tsx new file mode 100644 index 0000000..101de4d --- /dev/null +++ b/src/components/layout/NotePage/TitleBlock.tsx @@ -0,0 +1,11 @@ +'use client'; + +export default function TitleBlock() { + return ( +
+

+ 데이터 사이언스 과제 보고서 +

+
+ ); +} \ No newline at end of file diff --git a/src/components/layout/NotePage/TopNavigationBar.tsx b/src/components/layout/NotePage/TopNavigationBar.tsx new file mode 100644 index 0000000..b093e36 --- /dev/null +++ b/src/components/layout/NotePage/TopNavigationBar.tsx @@ -0,0 +1,100 @@ +'use client'; + +export default function TopNavigationBar() { + // 예시 공유 편집자 프로필 배열 (실제 데이터로 대체 가능) + const sharedUsers = [ + "/profile_img/shared_profileA.png", + "/profile_img/shared_profileB.png", + "/profile_img/shared_profileC.png", + "/profile_img/shared_profileD.png", + ]; + // 예시 본인 프로필 (실제 데이터로 대체 가능) + const myProfile = "/profile_img/my_profile.png"; + + return ( +
+ {/* 로고 및 제목 */} +
+ logo + + 모아노트 + +
+ + {/* 중앙 블록: 문서 제목 및 블록 타입 */} +
+ + 현재 문서 제목 + +
+ + 디자인 블록 + + + 텍스트 블록 + +
+
+ + {/* 공유자 프로필 */} +
+ {sharedUsers.map((src, idx) => ( + {`공유자${idx + ))} +
+ + {/* 더보기 버튼 및 본인 프로필 */} +
+ + 내 프로필 +
+
+ ); +} \ No newline at end of file From d4f66ca5838c5e61c9e084f8f03dfee69714ce8c Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Tue, 27 May 2025 19:42:22 +0900 Subject: [PATCH 019/140] =?UTF-8?q?design:=20=EB=AA=A8=EC=95=84=20AI=20?= =?UTF-8?q?=EC=B1=97=EB=B4=87=20=EB=B2=84=ED=8A=BC=20=EB=A7=8C=EB=93=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/icon/chatbot.png | Bin 0 -> 22360 bytes src/components/layout/NotePage/AIChatBot.tsx | 34 +++++++++++++++++-- 2 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 public/icon/chatbot.png diff --git a/public/icon/chatbot.png b/public/icon/chatbot.png new file mode 100644 index 0000000000000000000000000000000000000000..8efa961ca06b452dcfd152afadead8d74f70b431 GIT binary patch literal 22360 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%0AyPx>cV2X&kFf*7<^8{*ws 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 LZNs`7h`9d&3<4PQ literal 0 HcmV?d00001 diff --git a/src/components/layout/NotePage/AIChatBot.tsx b/src/components/layout/NotePage/AIChatBot.tsx index 7207e92..d5b4114 100644 --- a/src/components/layout/NotePage/AIChatBot.tsx +++ b/src/components/layout/NotePage/AIChatBot.tsx @@ -1,3 +1,33 @@ -export default function AIChatBot(){ - /*TODO*/ +'use client'; + +export default function AIChatBot() { + return ( + + ); } \ No newline at end of file From db6ec82d301599ad8b11203919c6730246aa0ba6 Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Tue, 27 May 2025 19:53:59 +0900 Subject: [PATCH 020/140] =?UTF-8?q?design:=20=EB=8D=94=20=EC=95=8C?= =?UTF-8?q?=EC=95=84=EB=B3=B4=EA=B8=B0=20=EB=B2=84=ED=8A=BC=EC=97=90=20?= =?UTF-8?q?=EC=BB=A4=EC=84=9C=20=ED=8F=AC=EC=9D=B8=ED=84=B0=20=ED=9A=A8?= =?UTF-8?q?=EA=B3=BC=EB=A5=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/layout/Home/Final.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/layout/Home/Final.tsx b/src/components/layout/Home/Final.tsx index b15b389..ced1a34 100644 --- a/src/components/layout/Home/Final.tsx +++ b/src/components/layout/Home/Final.tsx @@ -5,7 +5,7 @@ import { useRouter } from 'next/navigation'; function SeeMoreButton({ text, onClick }: { text: string, onClick: () => void }) { return ( From e84ab9b7c034fca1a4f528cb6c35ec60399313c3 Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Tue, 27 May 2025 20:03:17 +0900 Subject: [PATCH 021/140] =?UTF-8?q?refactor:=20=EC=84=9C=EB=B2=84=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=82=AC=EC=9A=A9=EC=9E=90/=EB=85=B8=ED=8A=B8=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=EB=A5=BC=20=EA=B0=80=EC=A0=B8=EC=98=AC=20?= =?UTF-8?q?=EC=88=98=20=EC=9E=88=EB=8F=84=EB=A1=9D=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=20=EC=BD=94=EB=93=9C=EC=97=90=20Props?= =?UTF-8?q?=EB=A5=BC=20=EB=A7=8C=EB=93=A4=EC=96=B4=20=EC=A4=8C=20-=20NoteU?= =?UTF-8?q?I.tsx,=20TitleBlock.tsx,=20TextBlock.tsx,=20DesignBlock.tsx?= =?UTF-8?q?=EC=97=90=EB=8F=84=20=ED=95=B4=EB=8B=B9=20=EB=A7=A4=EA=B0=9C=20?= =?UTF-8?q?=EB=B3=80=EC=88=98=EA=B0=80=20=ED=95=84=EC=9A=94=ED=95=98?= =?UTF-8?q?=EB=82=98=20=EC=95=84=EC=A7=81=20Props=20=EC=A0=84=EB=8B=AC=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=EB=A5=BC=20=EC=9E=91=EC=84=B1=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EC=9D=8C.=20-=20NoteUI.tsx=20=ED=95=98?= =?UTF-8?q?=EC=9C=84=EC=9D=98=20=EC=84=B8=20=EC=BB=B4=ED=8F=AC=EB=84=8C?= =?UTF-8?q?=ED=8A=B8=EC=97=90=20=EC=A0=84=EB=B6=80=20=EA=B0=99=EC=9D=80=20?= =?UTF-8?q?Props=EB=A5=BC=20=EC=A0=84=EB=8B=AC=ED=95=98=EB=8A=94=20?= =?UTF-8?q?=EB=B0=A9=EB=B2=95=EC=9D=84=20=EA=B3=A0=EB=AF=BC=20=EC=A4=91.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/main/page.tsx | 22 +++++++++---------- .../layout/NotePage/DesignBlock.tsx | 4 +--- .../layout/NotePage/NoteExplorer.tsx | 15 +++++-------- src/components/layout/NotePage/NoteUI.tsx | 4 ++-- src/components/layout/NotePage/TextBlock.tsx | 4 +--- src/components/layout/NotePage/TitleBlock.tsx | 2 +- .../layout/NotePage/TopNavigationBar.tsx | 20 ++++++++++++----- 7 files changed, 35 insertions(+), 36 deletions(-) diff --git a/src/app/main/page.tsx b/src/app/main/page.tsx index 50a02f4..efd216a 100644 --- a/src/app/main/page.tsx +++ b/src/app/main/page.tsx @@ -1,29 +1,27 @@ import { fetchCurrentUserServerSide } from "@/libs/server/user"; +import { fetchNotesServerSide } from "@/libs/server/note"; -import TopNavigationBar from "@/components/layout/NotePage/TopNavigationBar" -import NoteExplorer from "@/components/layout/NotePage/NoteExplorer" -import NoteUI from "@/components/layout/NotePage/NoteUI" -// import AIChatBot from "@/components/layout/NotePage/AIChatBot" +import TopNavigationBar from "@/components/layout/NotePage/TopNavigationBar"; +import NoteExplorer from "@/components/layout/NotePage/NoteExplorer"; +import NoteUI from "@/components/layout/NotePage/NoteUI"; export default async function MainPage() { const user = await fetchCurrentUserServerSide(); if (!user) { - return
- 로그인 필요 -
+ return
로그인 필요
; } + const notes = await fetchNotesServerSide(user.id); + const noteProps = { user, notes }; + return (
- - +
- +
- - {/* */}
); } \ No newline at end of file diff --git a/src/components/layout/NotePage/DesignBlock.tsx b/src/components/layout/NotePage/DesignBlock.tsx index d899e77..9fa5f19 100644 --- a/src/components/layout/NotePage/DesignBlock.tsx +++ b/src/components/layout/NotePage/DesignBlock.tsx @@ -1,6 +1,4 @@ -'use client'; - -export default function DesignBlock() { +export default async function DesignBlock() { return (
diff --git a/src/components/layout/NotePage/NoteExplorer.tsx b/src/components/layout/NotePage/NoteExplorer.tsx index eee1d1b..96c4512 100644 --- a/src/components/layout/NotePage/NoteExplorer.tsx +++ b/src/components/layout/NotePage/NoteExplorer.tsx @@ -1,11 +1,6 @@ -// 'use client'; +import { Note } from "@/types/note"; -import { fetchCurrentUserServerSide } from "@/libs/server/user"; -import { fetchNotesServerSide } from "@/libs/server/note"; - -export default async function NoteExplorer() { - const user = await fetchCurrentUserServerSide(); - const notes = await fetchNotesServerSide(user.id); +export default async function NoteExplorer({ user, notes }: { user: User; notes: Note[] }) { return (
- {/* 노트 불러와서 표시하는 기능 */} + {/* 노트 목록 표시 */}
{notes && notes.length > 0 ? ( - notes.map((note: any) => ( + notes.map((note) => (
+ {/* 노트 제목을 따로 저장하는 DB 칼럼이 필요함 */} + {/* 현재 백엔드 노트 DB에 title 칼럼은 없으므로, 노트 목록 화면에 노트 제목은 빈칸으로 표시됨 */} {note.title} +
); diff --git a/src/components/layout/NotePage/TextBlock.tsx b/src/components/layout/NotePage/TextBlock.tsx index cff0392..bca63f6 100644 --- a/src/components/layout/NotePage/TextBlock.tsx +++ b/src/components/layout/NotePage/TextBlock.tsx @@ -1,6 +1,4 @@ -'use client'; - -export default function TextBlock() { +export default async function TextBlock() { return (

diff --git a/src/components/layout/NotePage/TitleBlock.tsx b/src/components/layout/NotePage/TitleBlock.tsx index 101de4d..8ecd73a 100644 --- a/src/components/layout/NotePage/TitleBlock.tsx +++ b/src/components/layout/NotePage/TitleBlock.tsx @@ -4,7 +4,7 @@ export default function TitleBlock() { return (

- 데이터 사이언스 과제 보고서 + 문서 제목

); diff --git a/src/components/layout/NotePage/TopNavigationBar.tsx b/src/components/layout/NotePage/TopNavigationBar.tsx index b093e36..f94e60f 100644 --- a/src/components/layout/NotePage/TopNavigationBar.tsx +++ b/src/components/layout/NotePage/TopNavigationBar.tsx @@ -1,14 +1,15 @@ -'use client'; +import { Note } from "@/types/note"; -export default function TopNavigationBar() { - // 예시 공유 편집자 프로필 배열 (실제 데이터로 대체 가능) +export default async function TopNavigationBar({ user, notes }: { user: User; notes: Note[] }) { + + // 예시 공유 편집자 프로필 배열 const sharedUsers = [ "/profile_img/shared_profileA.png", "/profile_img/shared_profileB.png", "/profile_img/shared_profileC.png", "/profile_img/shared_profileD.png", ]; - // 예시 본인 프로필 (실제 데이터로 대체 가능) + // 예시 본인 프로필 const myProfile = "/profile_img/my_profile.png"; return ( @@ -25,7 +26,7 @@ export default function TopNavigationBar() {
- {/* 중앙 블록: 문서 제목 및 블록 타입 */} + {/* 문서 제목 및 블록 타입 */}
현재 문서 제목 @@ -68,7 +69,7 @@ export default function TopNavigationBar() {
- {/* 공유자 프로필 */} + {/* 공유자 프로필 + 초대 버튼 */}
{sharedUsers.map((src, idx) => ( ))} + {/* 초대 버튼 */} +
{/* 더보기 버튼 및 본인 프로필 */} From 7dc5b61adab6eca79b9571210e18d60af5dc7135 Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Sat, 31 May 2025 17:37:59 +0900 Subject: [PATCH 022/140] =?UTF-8?q?design:=20=EA=B3=B5=EC=9C=A0=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9E=90=20=EC=B4=88=EB=8C=80=20=EC=B0=BD=20?= =?UTF-8?q?=EB=94=94=EC=9E=90=EC=9D=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../layout/NotePage/InviteUserModal.tsx | 139 ++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 src/components/layout/NotePage/InviteUserModal.tsx diff --git a/src/components/layout/NotePage/InviteUserModal.tsx b/src/components/layout/NotePage/InviteUserModal.tsx new file mode 100644 index 0000000..86a59be --- /dev/null +++ b/src/components/layout/NotePage/InviteUserModal.tsx @@ -0,0 +1,139 @@ +'use client'; + +import { useState, useEffect } from "react"; + +type Permission = "읽기" | "쓰기" | "소유자"; + +interface InviteUser { + username: string; + permission: Permission; +} + +interface InviteUserModalProps { + open: boolean; + onClose: () => void; + onInvite: (users: InviteUser[]) => void; + initialUsers?: InviteUser[]; // 기존 공유자 목록을 받아옴 +} + +export default function InviteUserModal({ + open, + onClose, + onInvite, + initialUsers = [], +}: InviteUserModalProps) { + const [input, setInput] = useState(""); + const [users, setUsers] = useState([]); + + // 모달이 열릴 때마다 기존 공유자 목록을 세팅 + useEffect(() => { + if (open) setUsers(initialUsers); + }, [open, initialUsers]); + + const handleAddUser = () => { + const username = input.trim(); + if (!username || users.some(u => u.username === username)) return; + setUsers([...users, { username, permission: "읽기" }]); + setInput(""); + }; + + const handlePermissionChange = (idx: number, permission: Permission) => { + setUsers(users => + users.map((u, i) => + i === idx ? { ...u, permission } : u + ) + ); + }; + + const handleRemoveUser = (idx: number) => { + setUsers(users => users.filter((_, i) => i !== idx)); + }; + + if (!open) return null; + + return ( +
+
+
+ 사용자 초대 + +
+ {/* 사용자 입력 및 추가 */} +
+ setInput(e.target.value)} + onKeyDown={e => { if (e.key === "Enter") handleAddUser(); }} + /> + +
+ {/* 추가된 사용자 목록 */} +
+ {users.map((user, idx) => ( +
+ {/* 프로필(이름 첫글자) */} +
+ {user.username[0]?.toUpperCase() || "?"} +
+ {user.username} + {/* 권한 토글 */} +
+ {(["읽기", "쓰기", "소유자"] as Permission[]).map(p => ( + + ))} +
+ {/* 삭제 버튼 */} + +
+ ))} +
+ {/* 초대하기 버튼 */} + +
+
+ ); +} \ No newline at end of file From b86c9e7612ea2e7d9330ab8a7693b2919153cca7 Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Sat, 31 May 2025 17:39:27 +0900 Subject: [PATCH 023/140] =?UTF-8?q?design:=20=EB=B3=B8=EC=9D=B8=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=ED=95=84=20=ED=91=9C=EC=8B=9C=20UI=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/layout/Profile.tsx | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/components/layout/Profile.tsx b/src/components/layout/Profile.tsx index bfee54c..01f2be5 100644 --- a/src/components/layout/Profile.tsx +++ b/src/components/layout/Profile.tsx @@ -1,10 +1,16 @@ -import ProfileImage from "@/components/layout/ProfileImage"; +export default function Profile({ name }: { name: string }) { + // 이름의 첫 글자 추출 (없으면 ?) + const initial = name ? name[0].toUpperCase() : "?"; -export default function Profile({name}:{name:string}) { - return
- -
- {name} + return ( +
+ {/* 원형 프로필 (이름 앞글자) */} +
+ {initial} +
-
+ ); } \ No newline at end of file From 6cddb9b7421e83a0115f310d593b37d25df9943e Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Sat, 31 May 2025 17:41:39 +0900 Subject: [PATCH 024/140] =?UTF-8?q?feature:=20=EB=85=B8=ED=8A=B8=20?= =?UTF-8?q?=ED=83=90=EC=83=89=EA=B8=B0=EC=97=90=20=EB=85=B8=ED=8A=B8=20ID?= =?UTF-8?q?=EA=B0=80=20=ED=91=9C=EC=8B=9C=EB=90=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/layout/NotePage/NoteExplorer.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/layout/NotePage/NoteExplorer.tsx b/src/components/layout/NotePage/NoteExplorer.tsx index 96c4512..236d416 100644 --- a/src/components/layout/NotePage/NoteExplorer.tsx +++ b/src/components/layout/NotePage/NoteExplorer.tsx @@ -45,8 +45,8 @@ export default async function NoteExplorer({ user, notes }: { user: User; notes: " > {/* 노트 제목을 따로 저장하는 DB 칼럼이 필요함 */} - {/* 현재 백엔드 노트 DB에 title 칼럼은 없으므로, 노트 목록 화면에 노트 제목은 빈칸으로 표시됨 */} - {note.title} + {/* 현재 백엔드 노트 DB에 title 칼럼은 없으므로, 일단은 노트 DB id 값으로 표시되게 만듦 */} + {note.id} Date: Sat, 31 May 2025 17:42:35 +0900 Subject: [PATCH 025/140] =?UTF-8?q?design:=20=EA=B3=B5=EC=9C=A0=20?= =?UTF-8?q?=ED=8E=B8=EC=A7=91=EC=9E=90=20=EC=B4=88=EB=8C=80=EC=8B=9C=20?= =?UTF-8?q?=EA=B3=B5=EC=9C=A0=EC=9E=90=20=ED=94=84=EB=A1=9C=ED=95=84=20?= =?UTF-8?q?=ED=91=9C=EC=8B=9C=EB=90=98=EB=8A=94=20UI=20=EC=99=84=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../layout/NotePage/TopNavigationBar.tsx | 95 ++++++++++++++----- 1 file changed, 73 insertions(+), 22 deletions(-) diff --git a/src/components/layout/NotePage/TopNavigationBar.tsx b/src/components/layout/NotePage/TopNavigationBar.tsx index f94e60f..d930009 100644 --- a/src/components/layout/NotePage/TopNavigationBar.tsx +++ b/src/components/layout/NotePage/TopNavigationBar.tsx @@ -1,16 +1,57 @@ +'use client'; + +import { useState } from "react"; import { Note } from "@/types/note"; +import Profile from "@/components/layout/Profile"; +import InviteUserModal from "@/components/layout/NotePage/InviteUserModal"; + +type Permission = "읽기" | "쓰기" | "소유자"; +interface InviteUser { + username: string; + permission: Permission; +} + +export default function TopNavigationBar({ user, notes }: { user: User; notes: Note[] }) { + const [inviteOpen, setInviteOpen] = useState(false); + const [sharedUsers, setSharedUsers] = useState([]); -export default async function TopNavigationBar({ user, notes }: { user: User; notes: Note[] }) { + /* 아래 주석처리된 handleInvite 함수는 초대한 사용자 이름과 권한 정보를 백엔드에 전송하는 로직 */ + /* 백엔드에서 초대한 사용자의 정보는 아래와 같은 JSON 형식으로 받게 된다. */ + /* + * { + * "users": [ + * { "username": "alice", "permission": "읽기" }, + * { "username": "bob", "permission": "쓰기" }, + * { "username": "carol", "permission": "소유자" } + * ] + * } + */ - // 예시 공유 편집자 프로필 배열 - const sharedUsers = [ - "/profile_img/shared_profileA.png", - "/profile_img/shared_profileB.png", - "/profile_img/shared_profileC.png", - "/profile_img/shared_profileD.png", - ]; - // 예시 본인 프로필 - const myProfile = "/profile_img/my_profile.png"; + // // 현재 선택된 노트 id를 저장하는 변수(미완성) + // const note = /* CURRENT NOTE ID */ + + // // 초대 정보 백엔드로 전송 + // const handleInvite = async (users: InviteUser[]) => { + // if (!note) return; + // try { + // // 초대 API 링크 가정 + // const res = await fetch(`/api/notes/${note.id}/invite`, { + // method: "POST", + // headers: { "Content-Type": "application/json" }, + // body: JSON.stringify({ users }), + // }); + // if (!res.ok) { + // // 실패 처리 (예: alert) + // alert("초대에 실패했습니다."); + // return; + // } + // setSharedUsers(users); + // } catch (e) { + // alert("네트워크 오류가 발생했습니다."); + // } finally { + // setInviteOpen(false); + // } + // }; return (
@@ -71,22 +112,36 @@ export default async function TopNavigationBar({ user, notes }: { user: User; no {/* 공유자 프로필 + 초대 버튼 */}
- {sharedUsers.map((src, idx) => ( - {`공유자${idx ( +
+ > + {user.username[0]?.toUpperCase() || "?"} +
))} {/* 초대 버튼 */} + setInviteOpen(false)} + initialUsers={sharedUsers} + onInvite={(users) => { + setSharedUsers(users); + setInviteOpen(false); + }} + + /* 백엔드 초대 사용자 받는 API가 완성되면 기존 onInvite를 지우고 아래 주석으로 대체 */ + // onInvite={handleInvite} + />
{/* 더보기 버튼 및 본인 프로필 */} @@ -97,11 +152,7 @@ export default async function TopNavigationBar({ user, notes }: { user: User; no > … - 내 프로필 +
); From 9ff2581bf289f3d8630b2cb63a443f8e4377d2cd Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Sat, 31 May 2025 17:43:24 +0900 Subject: [PATCH 026/140] =?UTF-8?q?remove:=20=EB=8D=94=EC=9D=B4=EC=83=81?= =?UTF-8?q?=20=ED=95=84=EC=9A=94=20=EC=97=86=EB=8A=94=20=EA=B8=B0=EC=A1=B4?= =?UTF-8?q?=20=ED=94=84=EB=A1=9C=ED=95=84=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/layout/ProfileImage.tsx | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 src/components/layout/ProfileImage.tsx diff --git a/src/components/layout/ProfileImage.tsx b/src/components/layout/ProfileImage.tsx deleted file mode 100644 index 5c1548b..0000000 --- a/src/components/layout/ProfileImage.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import { CgProfile } from "react-icons/cg"; -import Image from "next/image"; - -export default function ProfileImage ({size="150px",url}:{size?:string,url?:string}) { - if(url) { - return
- {""} -
- } else { - return
- -
- } -} From 54ecc5c69c1e32c976cf1dd804f139ae1043cab6 Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Mon, 2 Jun 2025 13:35:10 +0900 Subject: [PATCH 027/140] =?UTF-8?q?design:=20=EB=85=B8=ED=8A=B8=20?= =?UTF-8?q?=ED=85=8D=EC=8A=A4=ED=8A=B8=20=ED=8E=B8=EC=A7=91=20UI=20?= =?UTF-8?q?=EC=9D=BC=EB=B6=80=20=ED=86=B5=ED=95=A9=20-=ED=86=B5=ED=95=A9?= =?UTF-8?q?=ED=95=9C=20UI=20=EB=B0=8F=20=EA=B5=AC=ED=98=84=ED=95=9C=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5-=201.=20=EC=A0=80=EC=9E=A5=EB=90=9C=20?= =?UTF-8?q?=EB=85=B8=ED=8A=B8=20=EB=B6=88=EB=9F=AC=EC=98=A4=EA=B8=B0=202.?= =?UTF-8?q?=20=EC=A0=80=EC=9E=A5=EB=90=9C=20=EB=85=B8=ED=8A=B8=EC=9D=98=20?= =?UTF-8?q?=ED=85=8D=EC=8A=A4=ED=8A=B8=20=EB=B8=94=EB=9F=AD=20=ED=91=9C?= =?UTF-8?q?=EC=8B=9C=ED=95=98=EA=B8=B0=20-TODO-=201.=20=EB=85=B8=ED=8A=B8?= =?UTF-8?q?=20=ED=8E=B8=EC=A7=91=202.=20=EB=94=94=EC=9E=90=EC=9D=B8=20?= =?UTF-8?q?=EB=B8=94=EB=A1=9D=20UI=20=ED=86=B5=ED=95=A9=203.=20=ED=85=8D?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EB=B8=94=EB=A1=9D/=EB=94=94=EC=9E=90?= =?UTF-8?q?=EC=9D=B8=20=EB=B8=94=EB=A1=9D=20=EC=83=9D=EC=84=B1=20=EB=B0=8F?= =?UTF-8?q?=20=ED=8E=B8=EC=A7=91=204.=20=EB=85=B8=ED=8A=B8=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20Please=20enter=20the=20commit=20message=20for=20you?= =?UTF-8?q?r=20changes.=20Lines=20starting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/main/MainPageClient.tsx | 34 +++++ src/app/main/page.tsx | 16 +- .../layout/NotePage/NoteExplorer.tsx | 138 ++++++++++-------- src/components/layout/NotePage/NoteUI.tsx | 60 +++++--- src/components/layout/NotePage/TextBlock.tsx | 8 +- src/components/layout/NotePage/TitleBlock.tsx | 4 +- .../layout/NotePage/TopNavigationBar.tsx | 2 +- 7 files changed, 155 insertions(+), 107 deletions(-) create mode 100644 src/app/main/MainPageClient.tsx diff --git a/src/app/main/MainPageClient.tsx b/src/app/main/MainPageClient.tsx new file mode 100644 index 0000000..8c596d3 --- /dev/null +++ b/src/app/main/MainPageClient.tsx @@ -0,0 +1,34 @@ +'use client'; + +import { useState } from "react"; +import TopNavigationBar from "@/components/layout/NotePage/TopNavigationBar"; +import NoteExplorer from "@/components/layout/NotePage/NoteExplorer"; +import NoteUI from "@/components/layout/NotePage/NoteUI"; +import { Note } from "@/types/note"; + +interface MainPageClientProps { + user: User; + notes: Note[]; +} + +export default function MainPageClient({ user, notes }: MainPageClientProps) { + const [selectedNoteId, setSelectedNoteId] = useState( + notes && notes.length > 0 ? notes[0].id : "" + ); + const selectedNote = notes.find(note => note.id === selectedNoteId); + + return ( +
+ +
+ + +
+
+ ); +} \ No newline at end of file diff --git a/src/app/main/page.tsx b/src/app/main/page.tsx index efd216a..3b5bb1f 100644 --- a/src/app/main/page.tsx +++ b/src/app/main/page.tsx @@ -1,9 +1,6 @@ import { fetchCurrentUserServerSide } from "@/libs/server/user"; import { fetchNotesServerSide } from "@/libs/server/note"; - -import TopNavigationBar from "@/components/layout/NotePage/TopNavigationBar"; -import NoteExplorer from "@/components/layout/NotePage/NoteExplorer"; -import NoteUI from "@/components/layout/NotePage/NoteUI"; +import MainPageClient from "./MainPageClient"; export default async function MainPage() { const user = await fetchCurrentUserServerSide(); @@ -13,15 +10,6 @@ export default async function MainPage() { } const notes = await fetchNotesServerSide(user.id); - const noteProps = { user, notes }; - return ( -
- -
- - -
-
- ); + return ; } \ No newline at end of file diff --git a/src/components/layout/NotePage/NoteExplorer.tsx b/src/components/layout/NotePage/NoteExplorer.tsx index 236d416..fba60cd 100644 --- a/src/components/layout/NotePage/NoteExplorer.tsx +++ b/src/components/layout/NotePage/NoteExplorer.tsx @@ -1,70 +1,82 @@ import { Note } from "@/types/note"; -export default async function NoteExplorer({ user, notes }: { user: User; notes: Note[] }) { +interface NoteExplorerProps { + user: User; + notes: Note[]; + selectedNoteId: string; + onSelectNote: (id: string) => void; +} - return ( -
- {/* 노트 목록 표시 */} -
- {notes && notes.length > 0 ? ( - notes.map((note) => ( -
- {/* 노트 제목을 따로 저장하는 DB 칼럼이 필요함 */} - {/* 현재 백엔드 노트 DB에 title 칼럼은 없으므로, 일단은 노트 DB id 값으로 표시되게 만듦 */} - {note.id} - - - -
- )) - ) : ( -
- 노트가 없습니다. -
- )} + {/* 노트 목록 표시 */} +
+ {notes && notes.length > 0 ? ( + notes.map((note) => ( +
onSelectNote(note.id)} + > + {/* 노트 제목이 아지 없으므로 ID로 표시 */} + + {/* note.title */note.id} + + + +
- - ); + )) + ) : ( +
+ 노트가 없습니다. +
+ )} +
+ + ); } \ No newline at end of file diff --git a/src/components/layout/NotePage/NoteUI.tsx b/src/components/layout/NotePage/NoteUI.tsx index 758f5ad..edcf608 100644 --- a/src/components/layout/NotePage/NoteUI.tsx +++ b/src/components/layout/NotePage/NoteUI.tsx @@ -2,31 +2,43 @@ import TitleBlock from "@/components/layout/NotePage/TitleBlock"; import TextBlock from "@/components/layout/NotePage/TextBlock"; import DesignBlock from "@/components/layout/NotePage/DesignBlock"; import AIChatBot from "@/components/layout/NotePage/AIChatBot"; +import { Note } from "@/types/note"; -export default function NoteUI() { +export default function NoteUI({ note }: { note?: Note }) { + if (!note) { return ( -
-
- - - - -
-
+
+
+ 노트를 선택하세요. +
+
); + } + + return ( +
+
+ {/* 노트 제목이 아직 없으므로 ID로 표시 */} + + + {/* */} + +
+
+ ); } \ No newline at end of file diff --git a/src/components/layout/NotePage/TextBlock.tsx b/src/components/layout/NotePage/TextBlock.tsx index bca63f6..87d9df0 100644 --- a/src/components/layout/NotePage/TextBlock.tsx +++ b/src/components/layout/NotePage/TextBlock.tsx @@ -1,9 +1,11 @@ -export default async function TextBlock() { +'use client'; + +export default function TextBlock({ content }: { content: string }) { return (

- 가나다라마바사아자차카타파하 + {content}

); -} \ No newline at end of file +} diff --git a/src/components/layout/NotePage/TitleBlock.tsx b/src/components/layout/NotePage/TitleBlock.tsx index 8ecd73a..fcd7d95 100644 --- a/src/components/layout/NotePage/TitleBlock.tsx +++ b/src/components/layout/NotePage/TitleBlock.tsx @@ -1,10 +1,10 @@ 'use client'; -export default function TitleBlock() { +export default function TitleBlock({ title }: { title: string }) { return (

- 문서 제목 + {title}

); diff --git a/src/components/layout/NotePage/TopNavigationBar.tsx b/src/components/layout/NotePage/TopNavigationBar.tsx index d930009..9604637 100644 --- a/src/components/layout/NotePage/TopNavigationBar.tsx +++ b/src/components/layout/NotePage/TopNavigationBar.tsx @@ -152,7 +152,7 @@ export default function TopNavigationBar({ user, notes }: { user: User; notes: N > … - +
); From eeb61a02b95c85538589875c2f590232c99e59a4 Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Mon, 2 Jun 2025 14:41:51 +0900 Subject: [PATCH 028/140] =?UTF-8?q?design:=20=ED=85=8D=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=ED=8E=B8=EC=A7=91=20UI=20=ED=86=B5=ED=95=A9=20=EC=99=84?= =?UTF-8?q?=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -통합된 기능 상세- 1. 블록 클릭시 편집 모드로 진입 2. 블록 바깥 클릭시 입력한 텍스트 마크다운 형식으로 표시 3. DB 저장 및 불러오기 가능 4. 기존 DocumentRenderer의 동시 편집 로직을 포함하므로 이 기능도 사용 가능할 것으로 추정 -TODO- 1. 디자인 블록 UI 통합 --- src/app/main/MainPageClient.tsx | 2 +- src/components/document/MarkdownEditor.tsx | 8 +- src/components/document/MarkdownRenderer.tsx | 2 +- src/components/layout/NotePage/NoteUI.tsx | 6 +- src/components/layout/NotePage/TextBlock.tsx | 89 ++++++++++++++++++-- 5 files changed, 91 insertions(+), 16 deletions(-) diff --git a/src/app/main/MainPageClient.tsx b/src/app/main/MainPageClient.tsx index 8c596d3..fa5fc9a 100644 --- a/src/app/main/MainPageClient.tsx +++ b/src/app/main/MainPageClient.tsx @@ -27,7 +27,7 @@ export default function MainPageClient({ user, notes }: MainPageClientProps) { selectedNoteId={selectedNoteId} onSelectNote={setSelectedNoteId} /> - +
); diff --git a/src/components/document/MarkdownEditor.tsx b/src/components/document/MarkdownEditor.tsx index 7e3f9e6..44c8b7e 100644 --- a/src/components/document/MarkdownEditor.tsx +++ b/src/components/document/MarkdownEditor.tsx @@ -56,15 +56,17 @@ export function MarkdownEditor({initialContent = null, updateContent = null, upd return (
+ autoFocus={true} + style={{ resize: "none" }} // 크기 조절 기능 제거 + />
); } \ No newline at end of file diff --git a/src/components/document/MarkdownRenderer.tsx b/src/components/document/MarkdownRenderer.tsx index 0bf6e23..11c19e7 100644 --- a/src/components/document/MarkdownRenderer.tsx +++ b/src/components/document/MarkdownRenderer.tsx @@ -10,7 +10,7 @@ export function MarkdownRenderer({content, startEditing}: { return (
{content ? content : ""} diff --git a/src/components/layout/NotePage/NoteUI.tsx b/src/components/layout/NotePage/NoteUI.tsx index edcf608..f44dd53 100644 --- a/src/components/layout/NotePage/NoteUI.tsx +++ b/src/components/layout/NotePage/NoteUI.tsx @@ -4,7 +4,7 @@ import DesignBlock from "@/components/layout/NotePage/DesignBlock"; import AIChatBot from "@/components/layout/NotePage/AIChatBot"; import { Note } from "@/types/note"; -export default function NoteUI({ note }: { note?: Note }) { +export default function NoteUI({ user, note }: { user: User; note?: Note }) { if (!note) { return (
@@ -34,8 +34,8 @@ export default function NoteUI({ note }: { note?: Note }) { >
{/* 노트 제목이 아직 없으므로 ID로 표시 */} - - + + {/* */}
diff --git a/src/components/layout/NotePage/TextBlock.tsx b/src/components/layout/NotePage/TextBlock.tsx index 87d9df0..1fd596b 100644 --- a/src/components/layout/NotePage/TextBlock.tsx +++ b/src/components/layout/NotePage/TextBlock.tsx @@ -1,11 +1,84 @@ 'use client'; -export default function TextBlock({ content }: { content: string }) { - return ( -
-

- {content} -

-
- ); +import { useEffect, useState } from "react"; +import { MarkdownRenderer } from "@/components/document/MarkdownRenderer"; +import { MarkdownEditor } from "@/components/document/MarkdownEditor"; +import useDocumentSync from "@/hooks/useDocumentSync"; + +interface TextBlockProps { + user: User; + uuid: string; // 문서 고유 ID + initialContent: string; + onContentChange?: (content: string) => void; } + +export default function TextBlock({ + user, + uuid, + initialContent, + onContentChange, +}: TextBlockProps) { + const [content, setContent] = useState(initialContent); + const [isEditing, setIsEditing] = useState(false); + const [cursorPosition, setCursorPosition] = useState(0); + const [needSend, setNeedSend] = useState(false); + + // 외부에서 전파된 변경사항을 반영 + const update = (newContent: string) => { + setContent(newContent); + }; + + // 실시간 동기화 훅 + const { publish } = useDocumentSync(user, uuid, update); + + // 로컬에서 변경된 내용을 서버/다른 클라이언트에 전파 + const send = (newContent: string) => { + setContent(newContent); + publish(newContent); + onContentChange?.(newContent); + }; + + // needSend가 true가 되면 send 실행 + useEffect(() => { + if (needSend) { + setNeedSend(false); + send(content); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [content, needSend]); + + // 외부에서 initialContent가 바뀌면 동기화 + useEffect(() => { + setContent(initialContent); + }, [initialContent]); + + return ( +
+ {isEditing ? ( +
+ setIsEditing(false)} + updateContent={(newContent: string) => { + setNeedSend(true); + setContent(newContent); + }} + lastCursorPosition={cursorPosition} + cursorHandler={setCursorPosition} + /> +
+ ) : ( +
setIsEditing(true)} + > + setIsEditing(true)} /> +
+ )} +
+ ); +} \ No newline at end of file From 671fa1ed1425ca5d470825db4e27f614a41d6c35 Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Mon, 2 Jun 2025 15:15:36 +0900 Subject: [PATCH 029/140] =?UTF-8?q?design:=20=ED=98=84=EC=9E=AC=20?= =?UTF-8?q?=EC=84=A0=ED=83=9D=ED=95=9C=20=EB=AC=B8=EC=84=9C=EC=9D=98=20?= =?UTF-8?q?=EC=A0=9C=EB=AA=A9=EC=9D=B4=20=EC=83=81=EB=8B=A8=20=EB=84=A4?= =?UTF-8?q?=EB=B9=84=EA=B2=8C=EC=9D=B4=EC=85=98=20=EB=B0=94=EC=97=90=20?= =?UTF-8?q?=ED=91=9C=EC=8B=9C=EB=90=98=EB=8F=84=EB=A1=9D=20=ED=95=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/main/MainPageClient.tsx | 4 +++- src/components/layout/NotePage/TopNavigationBar.tsx | 8 ++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/app/main/MainPageClient.tsx b/src/app/main/MainPageClient.tsx index fa5fc9a..5138be3 100644 --- a/src/app/main/MainPageClient.tsx +++ b/src/app/main/MainPageClient.tsx @@ -19,7 +19,8 @@ export default function MainPageClient({ user, notes }: MainPageClientProps) { return (
- + +
+
diff --git a/src/components/layout/NotePage/TopNavigationBar.tsx b/src/components/layout/NotePage/TopNavigationBar.tsx index 9604637..427a613 100644 --- a/src/components/layout/NotePage/TopNavigationBar.tsx +++ b/src/components/layout/NotePage/TopNavigationBar.tsx @@ -11,10 +11,13 @@ interface InviteUser { permission: Permission; } -export default function TopNavigationBar({ user, notes }: { user: User; notes: Note[] }) { +export default function TopNavigationBar({ user, notes, selectedNoteId }: { user: User; notes: Note[]; selectedNoteId: string }) { const [inviteOpen, setInviteOpen] = useState(false); const [sharedUsers, setSharedUsers] = useState([]); + // 현재 선택된 노트 + const currentNote = notes.find(note => note.id === selectedNoteId); + /* 아래 주석처리된 handleInvite 함수는 초대한 사용자 이름과 권한 정보를 백엔드에 전송하는 로직 */ /* 백엔드에서 초대한 사용자의 정보는 아래와 같은 JSON 형식으로 받게 된다. */ /* @@ -70,7 +73,8 @@ export default function TopNavigationBar({ user, notes }: { user: User; notes: N {/* 문서 제목 및 블록 타입 */}
- 현재 문서 제목 + {/* 현재 문서 제목 DB 칼럼에 없으므로 currentNote.id로 대체 */} + {currentNote ? /* currentNote.title */currentNote.id : "문서 없음"}
Date: Mon, 2 Jun 2025 20:51:37 +0900 Subject: [PATCH 030/140] =?UTF-8?q?refactor:=20=EA=B8=B0=EC=A1=B4=20?= =?UTF-8?q?=EB=AC=B8=EC=84=9C=EB=A5=BC=20/main=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EB=9D=84=EC=9A=B0=EB=8D=98=20=EB=B0=A9=EC=8B=9D=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EA=B0=81=20=EB=85=B8=ED=8A=B8=20uuid=EB=A1=9C=20?= =?UTF-8?q?=EB=A7=81=ED=81=AC=EB=A5=BC=20=EC=97=B0=EA=B2=B0=ED=95=B4?= =?UTF-8?q?=EC=84=9C=20=EB=9D=84=EC=9A=B0=EB=8A=94=20=EB=B0=A9=EC=8B=9D?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -세부사항- 기능과 디자인 면에서는 이전 커밋과 변함이 없음. 단지 노트 띄우는 방식만 변경함 -TODO- 1. 노트 목록 디렉토리화 UI 제작 2. 디자인 블록 UI 통합 3. 모아 AI 챗 봇 UI 통합 4. (백엔드에서 노트 제목 구현 완료 시) 노트 제목 편집 기능 추가 5. (백엔드에서 공유 편집자 API 완성 시) 공유 편집자 초대 요청 구현 --- src/app/doc/[uuid]/DocPageClient.tsx | 32 ++++++++++++++++++ src/app/doc/[uuid]/page.tsx | 33 +++++++++---------- src/app/main/MainPageClient.tsx | 1 - src/components/layout/NotePage/AIChatBot.tsx | 2 +- .../layout/NotePage/NoteExplorer.tsx | 10 ++++-- 5 files changed, 56 insertions(+), 22 deletions(-) create mode 100644 src/app/doc/[uuid]/DocPageClient.tsx diff --git a/src/app/doc/[uuid]/DocPageClient.tsx b/src/app/doc/[uuid]/DocPageClient.tsx new file mode 100644 index 0000000..5c224f9 --- /dev/null +++ b/src/app/doc/[uuid]/DocPageClient.tsx @@ -0,0 +1,32 @@ +'use client'; + +import TopNavigationBar from "@/components/layout/NotePage/TopNavigationBar"; +import NoteExplorer from "@/components/layout/NotePage/NoteExplorer"; +import NoteUI from "@/components/layout/NotePage/NoteUI"; +import { Note } from "@/types/note"; + +export default function DocPageClient({ + user, + notes, + selectedNoteId, +}: { + user: User; + notes: Note[]; + selectedNoteId: string; +}) { + const selectedNote = notes.find(note => note.id === selectedNoteId); + + return ( +
+ +
+ + +
+
+ ); +} \ No newline at end of file diff --git a/src/app/doc/[uuid]/page.tsx b/src/app/doc/[uuid]/page.tsx index 2de85d2..2ec43d2 100644 --- a/src/app/doc/[uuid]/page.tsx +++ b/src/app/doc/[uuid]/page.tsx @@ -1,20 +1,19 @@ -import DocumentRenderer from "@/components/document/DocumentRenderer"; -import HamburgerMenu from "@/components/layout/HamburgerMenu"; -import ChatMenu from "@/components/chat/ChatMenu"; -import {fetchCurrentUserServerSide} from "@/libs/server/user"; +// TODO: 추후 아래 햄버거 메뉴와 AI 챗 봇 메뉴 구현해야 함 +// import HamburgerMenu from "@/components/layout/HamburgerMenu"; +// import ChatMenu from "@/components/chat/ChatMenu"; + +import { fetchCurrentUserServerSide } from "@/libs/server/user"; +import { fetchNotesServerSide } from "@/libs/server/note"; +import DocPageClient from "./DocPageClient"; + +export default async function DocumentPage(props: { params: { uuid: string } }) { + const params = await props.params; // params를 await로 받아옴 + const uuid = params.uuid; -export default async function DocumentPage({params}: { params: { uuid: string } }) { - const {uuid} = await params; const user = await fetchCurrentUserServerSide(); + if (!user) return
로그인 필요
; + + const notes = await fetchNotesServerSide(user.id); - return ( -
- - { - user && - - } - -
- ); -} + return ; +} \ No newline at end of file diff --git a/src/app/main/MainPageClient.tsx b/src/app/main/MainPageClient.tsx index 5138be3..4f24714 100644 --- a/src/app/main/MainPageClient.tsx +++ b/src/app/main/MainPageClient.tsx @@ -26,7 +26,6 @@ export default function MainPageClient({ user, notes }: MainPageClientProps) { user={user} notes={notes} selectedNoteId={selectedNoteId} - onSelectNote={setSelectedNoteId} /> diff --git a/src/components/layout/NotePage/AIChatBot.tsx b/src/components/layout/NotePage/AIChatBot.tsx index d5b4114..e7493ca 100644 --- a/src/components/layout/NotePage/AIChatBot.tsx +++ b/src/components/layout/NotePage/AIChatBot.tsx @@ -24,7 +24,7 @@ export default function AIChatBot() { aria-label="모아 AI 챗봇 열기" > 모아 AI diff --git a/src/components/layout/NotePage/NoteExplorer.tsx b/src/components/layout/NotePage/NoteExplorer.tsx index fba60cd..6688180 100644 --- a/src/components/layout/NotePage/NoteExplorer.tsx +++ b/src/components/layout/NotePage/NoteExplorer.tsx @@ -1,18 +1,21 @@ import { Note } from "@/types/note"; +import { useRouter } from "next/navigation"; interface NoteExplorerProps { user: User; notes: Note[]; selectedNoteId: string; - onSelectNote: (id: string) => void; + // onSelectNote: (id: string) => void; } export default function NoteExplorer({ user, notes, selectedNoteId, - onSelectNote, + // onSelectNote, }: NoteExplorerProps) { + const router = useRouter(); + return (
); diff --git a/src/components/layout/NotePage/TextBlock.tsx b/src/components/layout/NotePage/TextBlock.tsx index 1fd596b..3f600a9 100644 --- a/src/components/layout/NotePage/TextBlock.tsx +++ b/src/components/layout/NotePage/TextBlock.tsx @@ -1,3 +1,6 @@ +// 더이상 사용하지 않는 컴포넌트 +// 대신 components/document/DocumentRenderer.tsx 사용 + 'use client'; import { useEffect, useState } from "react"; diff --git a/src/components/layout/NotePage/TitleBlock.tsx b/src/components/layout/NotePage/TitleBlock.tsx index fcd7d95..5c557ef 100644 --- a/src/components/layout/NotePage/TitleBlock.tsx +++ b/src/components/layout/NotePage/TitleBlock.tsx @@ -1,3 +1,5 @@ +// 더이상 사용하지 않는 컴포넌트 +// 대신 components/document/DocumentTitle.tsx 사용 'use client'; export default function TitleBlock({ title }: { title: string }) { From a16eb4fab9b301089075d4f7b22cf1d1722c6a0b Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Wed, 4 Jun 2025 14:43:20 +0900 Subject: [PATCH 032/140] =?UTF-8?q?BugFix:=20DocumentRenderer=EC=97=90=20T?= =?UTF-8?q?extBlock=EC=9D=98=20=EB=94=94=EC=9E=90=EC=9D=B8=EC=9D=84=20?= =?UTF-8?q?=EC=98=AE=EA=B8=B0=EB=8A=94=20=EA=B3=BC=EC=A0=95=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EA=B7=B8=EB=A6=BC=EC=9E=90=20=ED=9A=A8=EA=B3=BC?= =?UTF-8?q?=EA=B0=80=20=EB=88=84=EB=9D=BD=EB=90=98=EC=97=88=EB=8D=98=20?= =?UTF-8?q?=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/document/DocumentRenderer.tsx | 52 +++++++++----------- src/components/layout/NotePage/NoteUI.tsx | 15 ++---- 2 files changed, 27 insertions(+), 40 deletions(-) diff --git a/src/components/document/DocumentRenderer.tsx b/src/components/document/DocumentRenderer.tsx index 2349037..0579455 100644 --- a/src/components/document/DocumentRenderer.tsx +++ b/src/components/document/DocumentRenderer.tsx @@ -46,42 +46,34 @@ export default function DocumentRenderer({user, uuid}: { user:User, uuid: string return (
{isEditing ? ( - { - setNeedSend(true); - setDocument({...document, content}); - }} - lastCursorPosition={cursorPosition} - cursorHandler={setCursorPosition} - /> +
+ { + setNeedSend(true); + setDocument({...document, content}); + }} + lastCursorPosition={cursorPosition} + cursorHandler={setCursorPosition} + /> +
) : ( - +
+ +
)}
); diff --git a/src/components/layout/NotePage/NoteUI.tsx b/src/components/layout/NotePage/NoteUI.tsx index c1f524d..fe2ff09 100644 --- a/src/components/layout/NotePage/NoteUI.tsx +++ b/src/components/layout/NotePage/NoteUI.tsx @@ -1,12 +1,8 @@ import DocumentTitle from "@/components/document/DocumentTitle"; import DocumentRenderer from "@/components/document/DocumentRenderer"; -/* 더이상 사용하지 않는 컴포넌트 -* import TitleBlock from "@/components/layout/NotePage/TitleBlock"; -* import TextBlock from "@/components/layout/NotePage/TextBlock"; -* import DesignBlock from "@/components/layout/NotePage/DesignBlock"; -* import AIChatBot from "@/components/layout/NotePage/AIChatBot"; -*/ +// TODO: AI 챗 봇 UI 통합하기 +// import ChatMenu from "@/components/chat/ChatMenu"; import { Note } from "@/types/note"; @@ -43,10 +39,9 @@ export default function NoteUI({ user, note }: { user: User; note?: Note }) { - {/* 더이상 사용하지 않는 컴포넌트 */} - {/* */} - {/* */} - {/* */} + {/* TODO: AI 챗 봇 UI 통합하기 */} + {/* */} +
); From ea5f5de43c759909e7cfa424ec2554a5e60a4ed6 Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Wed, 4 Jun 2025 14:59:26 +0900 Subject: [PATCH 033/140] =?UTF-8?q?rename:=20Final.tsx=EC=97=90=EC=84=9C?= =?UTF-8?q?=20Footer.tsx=EB=A1=9C=20=EC=9D=B4=EB=A6=84=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/page.tsx | 4 ++-- src/components/layout/Home/{Final.tsx => Footer.tsx} | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename src/components/layout/Home/{Final.tsx => Footer.tsx} (97%) diff --git a/src/app/page.tsx b/src/app/page.tsx index 8592112..30f9ef3 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -2,7 +2,7 @@ import TopNavigationBar from "@/components/layout/Home/TopNavigationBar"; import Main from "@/components/layout/Home/Main" import BasicIntroduce from "@/components/layout/Home/BasicIntroduce" import MoaAIIntroduce from "@/components/layout/Home/MoaAIIntroduce" -import Final from "@/components/layout/Home/Final" +import Footer from "@/components/layout/Home/Footer"; import ContactLinkBar from "@/components/layout/Home/ContactLinkBar" export default function RootPage() { @@ -13,7 +13,7 @@ export default function RootPage() {
- +
diff --git a/src/components/layout/Home/Final.tsx b/src/components/layout/Home/Footer.tsx similarity index 97% rename from src/components/layout/Home/Final.tsx rename to src/components/layout/Home/Footer.tsx index ced1a34..07aab35 100644 --- a/src/components/layout/Home/Final.tsx +++ b/src/components/layout/Home/Footer.tsx @@ -12,7 +12,7 @@ function SeeMoreButton({ text, onClick }: { text: string, onClick: () => void }) ); } -export default function Final() { +export default function Footer() { const router = useRouter(); // 더 알아보기 버튼 클릭 시 /seemore으로 이동(/more 페이지 미구현) From 85cd0a62e89338b0db4b615ee935e9a8f70861f8 Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Wed, 4 Jun 2025 16:00:21 +0900 Subject: [PATCH 034/140] =?UTF-8?q?feature:=20=EB=85=B8=ED=8A=B8=20?= =?UTF-8?q?=EB=AA=A9=EB=A1=9D=EC=97=90=20=EC=97=B4=EA=B3=A0=20=EB=8B=AB?= =?UTF-8?q?=EC=9D=84=20=EC=88=98=20=EC=9E=88=EB=8A=94=20=ED=96=84=EB=B2=84?= =?UTF-8?q?=EA=B1=B0=20=EB=B2=84=ED=8A=BC=20=EA=B8=B0=EB=8A=A5=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 --- .../layout/NotePage/NoteExplorer.tsx | 157 +++++++++++------- 1 file changed, 99 insertions(+), 58 deletions(-) diff --git a/src/components/layout/NotePage/NoteExplorer.tsx b/src/components/layout/NotePage/NoteExplorer.tsx index c35350e..c3576de 100644 --- a/src/components/layout/NotePage/NoteExplorer.tsx +++ b/src/components/layout/NotePage/NoteExplorer.tsx @@ -1,5 +1,8 @@ import { Note } from "@/types/note"; import { useRouter } from "next/navigation"; +import { useRef, useState } from "react"; +import { RxHamburgerMenu } from "react-icons/rx"; +import { BsChevronLeft } from "react-icons/bs"; // 화살표 아이콘 추가 interface NoteExplorerProps { user: User; @@ -13,71 +16,109 @@ export default function NoteExplorer({ selectedNoteId, }: NoteExplorerProps) { const router = useRouter(); + const [open, setOpen] = useState(true); + const asideRef = useRef(null); + + // 햄버거 버튼 클릭 시 NoteExplorer 열기 + const handleOpen = () => setOpen(true); + // 닫기 버튼 클릭 시 NoteExplorer 닫기 + const handleClose = () => setOpen(false); return ( - + )} + ); } \ No newline at end of file From 89751f528a3d545e9c03395cf7054b26bee430d4 Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Wed, 4 Jun 2025 17:08:58 +0900 Subject: [PATCH 035/140] =?UTF-8?q?refactor:=20=EB=85=B8=ED=8A=B8=20?= =?UTF-8?q?=EB=A7=81=ED=81=AC=20=EC=A0=91=EC=86=8D=20=EB=B0=A9=EC=8B=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [변경내용] 기존 main 화면에 접속하면 첫번째 문서를 표시하고 노트 선택시 해당 링크로 이동하던 방식에서 처음 main 화면에 접속하면 어떤 노트도 표시되지 않고, 선택해야 해당 링크로 이동하도록 변경 --- src/app/doc/[uuid]/DocPageClient.tsx | 2 +- src/app/doc/[uuid]/page.tsx | 4 --- src/app/main/MainPageClient.tsx | 26 +++++++++---------- src/app/main/page.tsx | 3 ++- .../layout/NotePage/NoteExplorer.tsx | 1 - src/components/layout/NotePage/NoteUI.tsx | 7 ++--- 6 files changed, 18 insertions(+), 25 deletions(-) diff --git a/src/app/doc/[uuid]/DocPageClient.tsx b/src/app/doc/[uuid]/DocPageClient.tsx index 5c224f9..e1ae74c 100644 --- a/src/app/doc/[uuid]/DocPageClient.tsx +++ b/src/app/doc/[uuid]/DocPageClient.tsx @@ -19,7 +19,7 @@ export default function DocPageClient({ return (
-
+
0 ? notes[0].id : "" - ); +export default function MainPageClient({ user, notes, selectedNoteId }: MainPageClientProps) { const selectedNote = notes.find(note => note.id === selectedNoteId); return (
- - -
- + +
+ - + {/* 노트가 선택되지 않았을 때 안내 메시지 표시 */} + {selectedNote ? ( + + ) : ( +
+ 노트를 만들거나 선택하세요 +
+ )}
); diff --git a/src/app/main/page.tsx b/src/app/main/page.tsx index 3b5bb1f..c06969a 100644 --- a/src/app/main/page.tsx +++ b/src/app/main/page.tsx @@ -11,5 +11,6 @@ export default async function MainPage() { const notes = await fetchNotesServerSide(user.id); - return ; + // selectedNoteId를 빈 문자열로 전달 + return ; } \ No newline at end of file diff --git a/src/components/layout/NotePage/NoteExplorer.tsx b/src/components/layout/NotePage/NoteExplorer.tsx index c3576de..6a74559 100644 --- a/src/components/layout/NotePage/NoteExplorer.tsx +++ b/src/components/layout/NotePage/NoteExplorer.tsx @@ -46,7 +46,6 @@ export default function NoteExplorer({ flex flex-col w-full max-w-xs h-[calc(100vh-6rem)] - mt-24 bg-[#e0f2ff] shadow-md rounded-r-2xl diff --git a/src/components/layout/NotePage/NoteUI.tsx b/src/components/layout/NotePage/NoteUI.tsx index fe2ff09..857cb26 100644 --- a/src/components/layout/NotePage/NoteUI.tsx +++ b/src/components/layout/NotePage/NoteUI.tsx @@ -9,9 +9,9 @@ import { Note } from "@/types/note"; export default function NoteUI({ user, note }: { user: User; note?: Note }) { if (!note) { return ( -
+
- 노트를 선택하세요. + 노트를 만들거나 선택하세요
); @@ -22,7 +22,6 @@ export default function NoteUI({ user, note }: { user: User; note?: Note }) { className=" flex-1 h-[calc(100vh-6rem)] - mt-24 ml-0 bg-[#f8fbff] rounded-l-2xl @@ -35,13 +34,11 @@ export default function NoteUI({ user, note }: { user: User; note?: Note }) { " >
- {/* 노트 제목이 아직 없으므로 ID로 표시 */} {/* TODO: AI 챗 봇 UI 통합하기 */} {/* */} -
); From ee7b745f98c1d67acd28e9fc5f8991a1fd43f056 Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Wed, 4 Jun 2025 17:11:17 +0900 Subject: [PATCH 036/140] =?UTF-8?q?BugFix:=20=EB=85=B8=ED=8A=B8=20?= =?UTF-8?q?=EB=A7=81=ED=81=AC=EB=A1=9C=20=EC=9D=B4=EB=8F=99=EC=8B=9C=20?= =?UTF-8?q?=ED=99=94=EB=A9=B4=EC=9D=B4=20=EC=82=B4=EC=A7=9D=20=EB=B0=91?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=82=B4=EB=A0=A4=EA=B0=80=EB=8D=98=20?= =?UTF-8?q?=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/doc/layout.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/doc/layout.tsx b/src/app/doc/layout.tsx index 21cb469..a702f86 100644 --- a/src/app/doc/layout.tsx +++ b/src/app/doc/layout.tsx @@ -4,7 +4,7 @@ export default function DocumentLayout({ children: React.ReactNode; }>) { return
-
+
{children}
From fbb69ff692792da3fb067967d800db1a4c25da90 Mon Sep 17 00:00:00 2001 From: Kim Minseok Date: Fri, 6 Jun 2025 19:22:39 +0900 Subject: [PATCH 037/140] =?UTF-8?q?feature(file):=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=20=EB=8D=B0=EC=9D=B4=ED=84=B0=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/types/dto.ts | 50 +++++++++++++++++++++++++++++++++++++++++++++ src/types/file.d.ts | 13 ++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 src/types/dto.ts create mode 100644 src/types/file.d.ts diff --git a/src/types/dto.ts b/src/types/dto.ts new file mode 100644 index 0000000..4109cfa --- /dev/null +++ b/src/types/dto.ts @@ -0,0 +1,50 @@ +import {UUID} from "node:crypto"; + +export interface FileDTO { + id: UUID, + name: string, + type: FileTypeDTO, + dir: UUID, +} + +export enum FileTypeDTO { + DOCUMENT, + DIRECTORY, +} + +export interface NoteDTO { + file: FileDTO, + segments: SegmentDTO[], +} + +export interface SegmentDTO { + id: UUID, + type: "text" | "diagram", +} + +export interface TextNoteSegmentDTO { + id: UUID, + rootNode: TreeNodeDTO, + nodes: TreeNodeDTO[] +} + +export interface DiagramNoteSegment { + id: UUID, + state: LWWStateDTO, +} + +export interface TreeNodeDTO { + node: string, + parentId: UUID, + value: string, +} + +export interface LWWStateDTO { + timestamp: number, + id: UUID, + value : {content: string}, +} + + + + diff --git a/src/types/file.d.ts b/src/types/file.d.ts new file mode 100644 index 0000000..92443ee --- /dev/null +++ b/src/types/file.d.ts @@ -0,0 +1,13 @@ +import {UUID} from "node:crypto"; +import {FileTypeDTO} from "@/types/dto"; + +export interface MoaFile { + id: UUID; + name: string; + type: FileTypeDTO; + children?: MoaFile[]; +} + +export interface Segment { + +} \ No newline at end of file From 030b2b44e2c63bed14cacf10c5c2b07708d55a64 Mon Sep 17 00:00:00 2001 From: Kim Minseok Date: Fri, 6 Jun 2025 19:23:32 +0900 Subject: [PATCH 038/140] =?UTF-8?q?feature(file):=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EA=B4=80=EB=A0=A8=20API=20call=20=ED=95=A8=EC=88=98=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/libs/server/file.tsx | 281 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 281 insertions(+) create mode 100644 src/libs/server/file.tsx diff --git a/src/libs/server/file.tsx b/src/libs/server/file.tsx new file mode 100644 index 0000000..88204b1 --- /dev/null +++ b/src/libs/server/file.tsx @@ -0,0 +1,281 @@ +import {MoaFile} from "@/types/file"; +import {FileDTO, FileTypeDTO, NoteDTO } from "@/types/dto"; +import {cookies} from "next/headers"; + +const SERVER_URL = process.env.NEXT_PUBLIC_SERVER_URL; + +/** + * 백엔드에 Get으로 API 호출하는 함수 + * @param location API 호출할 realative-location + */ +async function getRequest(location:string) { + const url = `${SERVER_URL}${location}`; + + const cookie = (await cookies()).toString(); + + const res = await fetch(url, { + method: "GET", + credentials: "include", + headers: { + cookie, + "Content-Type": "application/json", + }, + }); + + console.log(`getRequest[${res.status}]: ${location}`); + + if (!res.ok) { + return null; + } + + if (!res.body) { + return true; + } + + return await res.json(); +} + +/** + * 백엔드에 Post로 API 호출하는 함수 + * Stringfied된 JSON BODY 필요 + * @param location API 호출할 Relative Location + * @param stringfiedBody 담을 Body + */ +async function postRequest(location:string, stringfiedBody?: string) { + const cookie = (await cookies()).toString(); + + const res = await fetch(`${SERVER_URL}${location}`, { + method: "POST", + credentials: "include", + body: stringfiedBody, + headers:{ + cookie, + "Content-Type": "application/json", + } + }); + + console.log(`postRequest[${res.status}]: ${location}`); + + if (!res.ok) { + return null; + } + + if (!res.body) { + return true; + } + + return await res.json(); +} + +// TODO 장기적으로 백엔드에서 지원할 경우 user 삭제 +/** + * MoaFile 을 디렉토리 구조로 네스팅하여 반환 + * + * @param fileId 자식 구조를 가져올 파일들, null 이나 ''등으로 지정 안할 경우 루트부터 + * @param user 유저 ID + */ +export async function getFileList(fileId:string|null, user:User) { + try { + let location = ''; + + if(fileId) { + location = `/api/files/list/${fileId}?user=${user.id}`; + } else { + location = `/api/files/list?user=${user.id}`; // 루트 파일 + } + + const data = await getRequest(location); + + let fileDTOs: FileDTO[] = []; + + try { + fileDTOs = data as FileDTO[]; + } catch { + fileDTOs = []; + } + + + const files: Array = []; + + for (const fileDTO of fileDTOs) { + if (fileDTO.type == FileTypeDTO.DIRECTORY) { + // 디렉토리 + const children = await getFileList(fileDTO.id, user); + files.push({ + id: fileDTO.id, + type: fileDTO.type, + name: fileDTO.name, + children: children, + }) + } else if(fileDTO.type == FileTypeDTO.DOCUMENT) { + // 문서 파일 + files.push({ + id: fileDTO.id, + name: fileDTO.name, + type: fileDTO.type, + }) + } + } + + return files; + } catch (error: unknown) { + + if (error instanceof Error) { + console.log(error); + } else { + console.log(String(error)); + } + + return []; + } +} + +/** + * 특정 파일 하나의 데이터 조회 + * @param fileId 조회할 파일 id + * @param user + */ +export async function getFile(fileId:string, user: User) { + try { + const location = `/api/files/metadata/${fileId}?user=${user.id}`; + const data = await getRequest(location); + if (!data) { + return null; + } + const fileDTO = data as FileDTO; + + return { + id: fileDTO.id, + type: fileDTO.type, + name: fileDTO.name, + } as MoaFile; + + } catch (error: unknown) { + console.log(error); + return null; + } +} + +/** + * 파일 생성, 루트에 생성할 경우 parentId는 비워둘 것 + * @param name + * @param type + * @param parentId + * @param user + */ +export async function createFile(name: string, type: FileTypeDTO, parentId:string|null, user: User) { + let location = ''; + if (parentId) { + location = `/api/files/create/${parentId}?user=${user.id}`; + } else { + location = `/api/files/create?user=${user.id}`; + } + + const body = { + name : name, + type : type, + } + + const result = await postRequest(location,JSON.stringify(body)); + + if (!result) { + return null; + } + + const fileDTO = result as FileDTO; + + return { + id: fileDTO.id, + type: fileDTO.type, + name: fileDTO.name, + } as MoaFile; +} + +export async function deleteFile(fileId: string, user: User) { + const location = `/api/files/delete/${fileId}?user=${user.id}`; + + const result = await postRequest(location,JSON.stringify(null)); + + return !!result; +} + +/** + * 파일 수정 + * @param file + * @param user + */ +export async function editFile(file: MoaFile, user: User) { + const fileDTO = await getFile(file.id, user); + if (!fileDTO) { + return false; + } + fileDTO.type = file.type; + fileDTO.name = file.name; + + const location = `/api/files/edit/${file.id}?user=${user.id}`; + return await postRequest(location, JSON.stringify(fileDTO)); +} + +/** + * 문서의 메타데이터와 세그먼트 메타데이터 리스트 가져오기 + * @param file + * @param user + */ +export async function getNoteMeta(file: MoaFile, user: User) { + const location = `/api/notes/metadata/${file.id}?user=${user.id}`; + + const res = await fetch(`${SERVER_URL}${location}`, { + credentials: "include", + }); + + return await res.json() as NoteDTO; +} + +// TODO +/** + * 문서의 텍스트 가져오기 + * @param file + * @param user + */ +export async function getNoteText(file: MoaFile, user: User) { + const location = `/api/notes/text/${file.id}?user=${user.id}`; + + const cookie = (await cookies()).toString(); + + const res = await fetch(`${SERVER_URL}${location}`, { + credentials: "include", + headers: { + cookie, + } + }); + + const data = await res.json(); + + return { + note: data.note, + + }; +} + +// TODO +/** + * 문서의 다이어그램을 가져오기 + * @param file + * @param user + */ +export async function getNoteDiagram(file: MoaFile, user: User) { + const location = `/api/notes/diagram/${file.id}?user=${user.id}`; + + const cookie = (await cookies()).toString(); + + const res = await fetch(`${SERVER_URL}${location}`, { + credentials: "include", + headers: { + cookie, + } + }); + + const data = await res.json(); + + return data as NoteDTO; +} \ No newline at end of file From 8030a2fedacace63312f5ea5e1ca8d58f3cff8ba Mon Sep 17 00:00:00 2001 From: Kim Minseok Date: Fri, 6 Jun 2025 19:23:56 +0900 Subject: [PATCH 039/140] =?UTF-8?q?feature(file):=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=ED=8E=98=EC=9D=B4=EC=A7=80=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - console.log로 확인하십시오 --- src/app/test/page.tsx | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/app/test/page.tsx diff --git a/src/app/test/page.tsx b/src/app/test/page.tsx new file mode 100644 index 0000000..f168a3a --- /dev/null +++ b/src/app/test/page.tsx @@ -0,0 +1,32 @@ +import {createFile, deleteFile, editFile, getFile, getFileList} from "@/libs/server/file"; +import {fetchCurrentUserServerSide} from "@/libs/server/user"; +import {FileDTO, FileTypeDTO} from "@/types/dto"; + +export default async function Page() { + const user = await fetchCurrentUserServerSide(); + console.log("유저 정보"); + console.log(user); + + + const file = await createFile('test', FileTypeDTO.DOCUMENT, null, user) as FileDTO; + + console.log("파일 생성"); + console.log(file); + + const editedFile = await editFile({ + id: file.id, + type: file.type, + name: 'edited', + }, user); + + console.log("파일 편집"); + console.log(editedFile); + + const result = await deleteFile(file.id, user); + console.log("파일 삭제") + console.log(result) + + return
+ +
+} \ No newline at end of file From 5ee35c374d2ae5685733b4cd6c5f781bac687d90 Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Wed, 4 Jun 2025 17:54:37 +0900 Subject: [PATCH 040/140] =?UTF-8?q?design:=20=ED=8F=B4=EB=8D=94=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=20UI=20=EB=94=94=EC=9E=90=EC=9D=B8=20?= =?UTF-8?q?=EC=99=84=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [세부사항] 1. 노트 목록 상단의 + 버튼 누르면 노트 혹은 폴더 생성 버튼 표시 2. 폴더 생성 버튼 클릭 시 폴더를 만들고 폴더에 담을 문서를 선택하는 모달 표시 3. 노트 생성 기능 미구현 4. 실제 폴더 구조가 목록에 표시되는 UI 미구현 --- src/components/layout/NotePage/AddMenu.tsx | 36 ++++++++++ .../layout/NotePage/FolderAddModal.tsx | 69 +++++++++++++++++++ .../layout/NotePage/NoteExplorer.tsx | 53 ++++++++++++-- 3 files changed, 152 insertions(+), 6 deletions(-) create mode 100644 src/components/layout/NotePage/AddMenu.tsx create mode 100644 src/components/layout/NotePage/FolderAddModal.tsx diff --git a/src/components/layout/NotePage/AddMenu.tsx b/src/components/layout/NotePage/AddMenu.tsx new file mode 100644 index 0000000..8b09208 --- /dev/null +++ b/src/components/layout/NotePage/AddMenu.tsx @@ -0,0 +1,36 @@ +import { BsFileEarmarkPlus, BsFolderPlus } from "react-icons/bs"; + +export default function AddMenu({ + onAddNote, + onAddFolder, + onClose, +}: { + onAddNote: () => void; + onAddFolder: () => void; + onClose?: () => void; +}) { + return ( +
+ + +
+ ); +} \ No newline at end of file diff --git a/src/components/layout/NotePage/FolderAddModal.tsx b/src/components/layout/NotePage/FolderAddModal.tsx new file mode 100644 index 0000000..7cf51e7 --- /dev/null +++ b/src/components/layout/NotePage/FolderAddModal.tsx @@ -0,0 +1,69 @@ +import { Note } from "@/types/note"; + +export default function FolderAddModal({ + notes, + folderName, + setFolderName, + selectedNoteIds, + setSelectedNoteIds, + onCancel, + onAdd, +}: { + notes: Note[]; + folderName: string; + setFolderName: (v: string) => void; + selectedNoteIds: string[]; + setSelectedNoteIds: (v: string[]) => void; + onCancel: () => void; + onAdd: () => void; +}) { + return ( +
+
+

폴더 추가

+ + setFolderName(e.target.value)} + placeholder="폴더 이름을 입력하세요" + /> + +
+ {notes.map((note) => ( + + ))} +
+
+ + +
+
+
+ ); +} \ No newline at end of file diff --git a/src/components/layout/NotePage/NoteExplorer.tsx b/src/components/layout/NotePage/NoteExplorer.tsx index 6a74559..e1401b7 100644 --- a/src/components/layout/NotePage/NoteExplorer.tsx +++ b/src/components/layout/NotePage/NoteExplorer.tsx @@ -4,6 +4,9 @@ import { useRef, useState } from "react"; import { RxHamburgerMenu } from "react-icons/rx"; import { BsChevronLeft } from "react-icons/bs"; // 화살표 아이콘 추가 +import AddMenu from "./AddMenu"; +import FolderAddModal from "./FolderAddModal"; + interface NoteExplorerProps { user: User; notes: Note[]; @@ -17,12 +20,23 @@ export default function NoteExplorer({ }: NoteExplorerProps) { const router = useRouter(); const [open, setOpen] = useState(true); + const [showAddMenu, setShowAddMenu] = useState(false); + const [showFolderModal, setShowFolderModal] = useState(false); + const [folderName, setFolderName] = useState(""); + const [selectedNoteIds, setSelectedNoteIds] = useState([]); const asideRef = useRef(null); // 햄버거 버튼 클릭 시 NoteExplorer 열기 const handleOpen = () => setOpen(true); // 닫기 버튼 클릭 시 NoteExplorer 닫기 const handleClose = () => setOpen(false); + // 폴더 추가 모달 열기 + const openFolderModal = () => setShowFolderModal(true); + // 폴더 추가 핸들러 + const handleAddFolder = () => { + // 폴더 추가 로직 + setShowFolderModal(false); + }; return ( <> @@ -69,12 +83,26 @@ export default function NoteExplorer({
내 노트 - + {/* + 버튼 부분 */} +
+ + {showAddMenu && ( + { + setShowAddMenu(false); + // 노트 추가 기능은 아직 미구현 + }} + onAddFolder={openFolderModal} + onClose={() => setShowAddMenu(false)} + /> + )} +
{/* 노트 목록 표시 */} @@ -116,6 +144,19 @@ export default function NoteExplorer({
)}
+ + {/* 폴더 추가 모달 부분 */} + {showFolderModal && ( + setShowFolderModal(false)} + onAdd={handleAddFolder} + /> + )} )} From b3b2976496a30ac0c1bc20458c097c9dced3c08e Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Fri, 6 Jun 2025 21:03:09 +0900 Subject: [PATCH 041/140] =?UTF-8?q?design:=20=ED=8F=B4=EB=8D=94=EA=B5=AC?= =?UTF-8?q?=EC=A1=B0=20UI=20=EC=99=84=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../layout/NotePage/NoteExplorer.tsx | 115 ++++++++++++++++-- 1 file changed, 103 insertions(+), 12 deletions(-) diff --git a/src/components/layout/NotePage/NoteExplorer.tsx b/src/components/layout/NotePage/NoteExplorer.tsx index e1401b7..f517adf 100644 --- a/src/components/layout/NotePage/NoteExplorer.tsx +++ b/src/components/layout/NotePage/NoteExplorer.tsx @@ -2,7 +2,7 @@ import { Note } from "@/types/note"; import { useRouter } from "next/navigation"; import { useRef, useState } from "react"; import { RxHamburgerMenu } from "react-icons/rx"; -import { BsChevronLeft } from "react-icons/bs"; // 화살표 아이콘 추가 +import { BsChevronLeft, BsChevronDown, BsChevronRight, BsFolderFill } from "react-icons/bs"; import AddMenu from "./AddMenu"; import FolderAddModal from "./FolderAddModal"; @@ -13,6 +13,12 @@ interface NoteExplorerProps { selectedNoteId: string; } +interface Folder { + id: string; + name: string; + noteIds: string[]; +} + export default function NoteExplorer({ user, notes, @@ -24,18 +30,51 @@ export default function NoteExplorer({ const [showFolderModal, setShowFolderModal] = useState(false); const [folderName, setFolderName] = useState(""); const [selectedNoteIds, setSelectedNoteIds] = useState([]); + const [folders, setFolders] = useState([]); + const [folderOpen, setFolderOpen] = useState>({}); const asideRef = useRef(null); // 햄버거 버튼 클릭 시 NoteExplorer 열기 const handleOpen = () => setOpen(true); // 닫기 버튼 클릭 시 NoteExplorer 닫기 const handleClose = () => setOpen(false); + // 폴더 추가 모달 열기 - const openFolderModal = () => setShowFolderModal(true); + const openFolderModal = () => { + setShowAddMenu(false); + setShowFolderModal(true); + setFolderName(""); + setSelectedNoteIds([]); + }; + // 폴더 추가 핸들러 const handleAddFolder = () => { - // 폴더 추가 로직 + if (!folderName.trim() || selectedNoteIds.length === 0) return; + const newId = `${Date.now()}`; + setFolders([ + ...folders, + { + id: newId, + name: folderName, + noteIds: selectedNoteIds, + }, + ]); + setFolderOpen((prev) => ({ ...prev, [newId]: true })); setShowFolderModal(false); + setFolderName(""); + setSelectedNoteIds([]); + }; + + // 노트가 폴더에 포함되어 있는지 확인 + const isNoteInFolder = (noteId: string) => + folders.some((folder) => folder.noteIds.includes(noteId)); + + // 폴더 토글 핸들러 + const handleToggleFolder = (folderId: string) => { + setFolderOpen((prev) => ({ + ...prev, + [folderId]: !prev[folderId], + })); }; return ( @@ -105,10 +144,67 @@ export default function NoteExplorer({
- {/* 노트 목록 표시 */} + {/* 폴더 구조로 노트 목록 표시 */}
- {notes && notes.length > 0 ? ( - notes.map((note) => ( + {/* 폴더 목록 */} + {folders.map((folder) => ( +
+
handleToggleFolder(folder.id)} + > + {folderOpen[folder.id] ? ( + + ) : ( + + )} + + {folder.name} +
+ {folderOpen[folder.id] && ( +
+ {folder.noteIds.map((noteId) => { + const note = notes.find((n) => n.id === noteId); + if (!note) return null; + return ( +
router.push(`/doc/${note.id}`)} + > + + {note.id} + + + + +
+ ); + })} +
+ )} +
+ ))} + {/* 폴더에 속하지 않은 노트 목록 */} + {notes + .filter((note) => !folders.some((folder) => folder.noteIds.includes(note.id))) + .map((note) => (
- )) - ) : ( -
- 노트가 없습니다. -
- )} + ))}
{/* 폴더 추가 모달 부분 */} From 830cba6d8813b757a8ad530c8772f6c768839a97 Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Fri, 6 Jun 2025 21:24:18 +0900 Subject: [PATCH 042/140] =?UTF-8?q?design:=20=ED=8F=B4=EB=8D=94=20?= =?UTF-8?q?=EC=95=88=20=ED=8F=B4=EB=8D=94=20=EA=B5=AC=EC=A1=B0=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20+=20=EB=85=B8=ED=8A=B8=20=ED=8F=B4=EB=8D=94?= =?UTF-8?q?=EC=97=90=20=EC=A4=91=EB=B3=B5=20=EC=A0=80=EC=9E=A5=20=EB=B6=88?= =?UTF-8?q?=EA=B0=80=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../layout/NotePage/FolderAddModal.tsx | 32 ++++ .../layout/NotePage/NoteExplorer.tsx | 149 +++++++++++------- 2 files changed, 123 insertions(+), 58 deletions(-) diff --git a/src/components/layout/NotePage/FolderAddModal.tsx b/src/components/layout/NotePage/FolderAddModal.tsx index 7cf51e7..b51f8a8 100644 --- a/src/components/layout/NotePage/FolderAddModal.tsx +++ b/src/components/layout/NotePage/FolderAddModal.tsx @@ -1,26 +1,58 @@ import { Note } from "@/types/note"; +interface Folder { + id: string; + name: string; + noteIds: string[]; + parentId?: string | null; +} + export default function FolderAddModal({ notes, + folders, + parentFolderId, + setParentFolderId, folderName, setFolderName, selectedNoteIds, setSelectedNoteIds, onCancel, onAdd, + errorMsg, }: { notes: Note[]; + folders: Folder[]; + parentFolderId: string | null; + setParentFolderId: (id: string | null) => void; folderName: string; setFolderName: (v: string) => void; selectedNoteIds: string[]; setSelectedNoteIds: (v: string[]) => void; onCancel: () => void; onAdd: () => void; + errorMsg?: string | null; }) { return (

폴더 추가

+ {/* 안내문 표시 */} + {errorMsg && ( +
{errorMsg}
+ )} + + ([]); const [folders, setFolders] = useState([]); const [folderOpen, setFolderOpen] = useState>({}); + const [parentFolderId, setParentFolderId] = useState(null); + const [errorMsg, setErrorMsg] = useState(null); const asideRef = useRef(null); // 햄버거 버튼 클릭 시 NoteExplorer 열기 @@ -45,10 +48,19 @@ export default function NoteExplorer({ setShowFolderModal(true); setFolderName(""); setSelectedNoteIds([]); + setParentFolderId(null); }; // 폴더 추가 핸들러 const handleAddFolder = () => { + // 이미 다른 폴더에 포함된 노트가 있는지 검사 + const alreadyInFolder = selectedNoteIds.find(noteId => + folders.some(folder => folder.noteIds.includes(noteId)) + ); + if (alreadyInFolder) { + setErrorMsg("이미 다른 폴더에 포함된 노트입니다."); + return; + } if (!folderName.trim() || selectedNoteIds.length === 0) return; const newId = `${Date.now()}`; setFolders([ @@ -57,14 +69,22 @@ export default function NoteExplorer({ id: newId, name: folderName, noteIds: selectedNoteIds, + parentId: parentFolderId ?? null, }, ]); setFolderOpen((prev) => ({ ...prev, [newId]: true })); setShowFolderModal(false); setFolderName(""); setSelectedNoteIds([]); + setParentFolderId(null); + setErrorMsg(null); }; + // 폴더 추가 모달이 열릴 때 에러 메시지 초기화 + useEffect(() => { + if (showFolderModal) setErrorMsg(null); + }, [showFolderModal]); + // 노트가 폴더에 포함되어 있는지 확인 const isNoteInFolder = (noteId: string) => folders.some((folder) => folder.noteIds.includes(noteId)); @@ -77,6 +97,68 @@ export default function NoteExplorer({ })); }; + function renderFolders(parentId: string | null) { + return folders + .filter(folder => (folder.parentId ?? null) === parentId) + .map(folder => ( +
+
handleToggleFolder(folder.id)} + > + {folderOpen[folder.id] ? ( + + ) : ( + + )} + + {folder.name} +
+ {folderOpen[folder.id] && ( +
+ {/* 하위 폴더 */} + {renderFolders(folder.id)} + {/* 폴더에 속한 노트 */} + {folder.noteIds.map(noteId => { + const note = notes.find(n => n.id === noteId); + if (!note) return null; + return ( +
router.push(`/doc/${note.id}`)} + > + + {note.id} + + + + +
+ ); + })} +
+ )} +
+ )); + } + return ( <> {/* 햄버거 버튼: 닫혀있을 때만 표시 */} @@ -146,65 +228,12 @@ export default function NoteExplorer({ {/* 폴더 구조로 노트 목록 표시 */}
- {/* 폴더 목록 */} - {folders.map((folder) => ( -
-
handleToggleFolder(folder.id)} - > - {folderOpen[folder.id] ? ( - - ) : ( - - )} - - {folder.name} -
- {folderOpen[folder.id] && ( -
- {folder.noteIds.map((noteId) => { - const note = notes.find((n) => n.id === noteId); - if (!note) return null; - return ( -
router.push(`/doc/${note.id}`)} - > - - {note.id} - - - - -
- ); - })} -
- )} -
- ))} + {/* 폴더 트리 렌더링 */} + {renderFolders(null)} {/* 폴더에 속하지 않은 노트 목록 */} {notes - .filter((note) => !folders.some((folder) => folder.noteIds.includes(note.id))) - .map((note) => ( + .filter(note => !folders.some(folder => folder.noteIds.includes(note.id))) + .map(note => (
setShowFolderModal(false)} onAdd={handleAddFolder} + errorMsg={errorMsg} /> )} From 99ebcbdd0d0e9cbeedbf635bc1397c29eab91771 Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Fri, 6 Jun 2025 21:27:10 +0900 Subject: [PATCH 043/140] =?UTF-8?q?design:=20=EC=83=81=EC=9C=84=20?= =?UTF-8?q?=ED=8F=B4=EB=8D=94=EC=9D=98=20=EB=85=B8=ED=8A=B8=EA=B0=80=20?= =?UTF-8?q?=ED=95=98=EC=9C=84=20=ED=8F=B4=EB=8D=94=20=EB=85=B8=ED=8A=B8?= =?UTF-8?q?=EB=B3=B4=EB=8B=A4=20=EC=9C=84=EC=97=90=20=EC=9C=84=EC=B9=98?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=A0=8C=EB=8D=94=EB=A7=81=20?= =?UTF-8?q?=EC=88=9C=EC=84=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/layout/NotePage/NoteExplorer.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/layout/NotePage/NoteExplorer.tsx b/src/components/layout/NotePage/NoteExplorer.tsx index 04fd5f6..b843143 100644 --- a/src/components/layout/NotePage/NoteExplorer.tsx +++ b/src/components/layout/NotePage/NoteExplorer.tsx @@ -116,9 +116,7 @@ export default function NoteExplorer({
{folderOpen[folder.id] && (
- {/* 하위 폴더 */} - {renderFolders(folder.id)} - {/* 폴더에 속한 노트 */} + {/* 1. 상위 폴더의 노트 먼저 */} {folder.noteIds.map(noteId => { const note = notes.find(n => n.id === noteId); if (!note) return null; @@ -153,6 +151,8 @@ export default function NoteExplorer({
); })} + {/* 2. 하위 폴더는 아래에 */} + {renderFolders(folder.id)}
)}
From 5a783d1ab8732434d1a12d58f7d5a9e46eb239e4 Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Fri, 6 Jun 2025 21:48:52 +0900 Subject: [PATCH 044/140] =?UTF-8?q?design:=20=EC=83=9D=EC=84=B1=EB=90=9C?= =?UTF-8?q?=20=ED=8F=B4=EB=8D=94=20=EC=88=98=EC=A0=95=20=EA=B8=B0=EB=8A=A5?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../layout/NotePage/NoteExplorer.tsx | 208 +++++++++++++++++- 1 file changed, 200 insertions(+), 8 deletions(-) diff --git a/src/components/layout/NotePage/NoteExplorer.tsx b/src/components/layout/NotePage/NoteExplorer.tsx index b843143..a4acdec 100644 --- a/src/components/layout/NotePage/NoteExplorer.tsx +++ b/src/components/layout/NotePage/NoteExplorer.tsx @@ -2,7 +2,7 @@ import { Note } from "@/types/note"; import { useRouter } from "next/navigation"; import { useRef, useState, useEffect } from "react"; import { RxHamburgerMenu } from "react-icons/rx"; -import { BsChevronLeft, BsChevronDown, BsChevronRight, BsFolderFill } from "react-icons/bs"; +import { BsChevronLeft, BsChevronDown, BsChevronRight, BsFolderFill, BsPencil } from "react-icons/bs"; import AddMenu from "./AddMenu"; import FolderAddModal from "./FolderAddModal"; @@ -35,6 +35,9 @@ export default function NoteExplorer({ const [folderOpen, setFolderOpen] = useState>({}); const [parentFolderId, setParentFolderId] = useState(null); const [errorMsg, setErrorMsg] = useState(null); + const [editFolderId, setEditFolderId] = useState(null); + const [editFolderName, setEditFolderName] = useState(""); + const [editFolderNotes, setEditFolderNotes] = useState([]); const asideRef = useRef(null); // 햄버거 버튼 클릭 시 NoteExplorer 열기 @@ -103,16 +106,53 @@ export default function NoteExplorer({ .map(folder => (
handleToggleFolder(folder.id)} + className="flex items-center gap-2 px-2 py-1 font-semibold text-[#186370] bg-[#e0e7ff] rounded select-none" > - {folderOpen[folder.id] ? ( - - ) : ( - - )} + {/* 폴더 토글 버튼 */} + {folder.name} + {/* 연필(수정) 아이콘 - 가장 우측 */} +
{folderOpen[folder.id] && (
@@ -159,6 +199,20 @@ export default function NoteExplorer({ )); } + // 폴더 수정 모달 열기 + function openEditModal(folder: Folder) { + setEditFolderId(folder.id); + setEditFolderName(folder.name); + setEditFolderNotes([...folder.noteIds]); + } + + // 폴더 수정 모달 닫기 + function closeEditModal() { + setEditFolderId(null); + setEditFolderName(""); + setEditFolderNotes([]); + } + return ( <> {/* 햄버거 버튼: 닫혀있을 때만 표시 */} @@ -281,6 +335,144 @@ export default function NoteExplorer({ errorMsg={errorMsg} /> )} + + {/* 폴더 수정 모달 부분 */} + {editFolderId && ( +
+
+

폴더 수정

+ + setEditFolderName(e.target.value)} + /> + +
+ {editFolderNotes.length === 0 && ( +
노트 없음
+ )} + {editFolderNotes.map(noteId => { + const note = notes.find(n => n.id === noteId); + if (!note) return null; + return ( +
+ {note.id} + {/* 노트 삭제 버튼 */} + +
+ ); + })} +
+ +
+ {notes + .filter( + n => + !editFolderNotes.includes(n.id) && + !folders.some(f => f.noteIds.includes(n.id)) + ) + .map(note => ( + + ))} +
+
+ +
+ + +
+
+
+
+ )} )} From 192a0946f39a6f674e290044d45e833ec7ff8d80 Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Fri, 6 Jun 2025 22:11:14 +0900 Subject: [PATCH 045/140] =?UTF-8?q?refactor:=20=EB=85=B8=ED=8A=B8=20?= =?UTF-8?q?=ED=8F=B4=EB=8D=94=20=EA=B5=AC=EC=A1=B0=20UI=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [폴더 구조와 관련된 컴포넌트와 기능] 1. NoteExplorer: 노트 목록을 보여주는 UI 2. FolderTree: 상위폴더와 하위폴더 및 해당 폴더에 저장된 노트와의 트리 구조를 렌더링 3. FolderItem: NoteExplorer 상에서 하나의 폴더에 대한 기능(토글, 폴더 이름, 폴더 수정) 4. NoteItem: NoteExplorer 상에서 하나의 노트에 대한 기능(노트 제목 표시, 클릭 효과) 5. FolderEditModal: 폴더를 생성하는 모달 창 6. AddMenu: 노트/폴더 생성 (+)버튼 눌렀을 때 나오는 메뉴 창 --- .../layout/NotePage/FolderEditModal.tsx | 162 +++++++++++++++ src/components/layout/NotePage/FolderItem.tsx | 47 +++++ src/components/layout/NotePage/FolderTree.tsx | 84 ++++++++ .../layout/NotePage/NoteExplorer.tsx | 192 +++--------------- src/components/layout/NotePage/NoteItem.tsx | 39 ++++ 5 files changed, 355 insertions(+), 169 deletions(-) create mode 100644 src/components/layout/NotePage/FolderEditModal.tsx create mode 100644 src/components/layout/NotePage/FolderItem.tsx create mode 100644 src/components/layout/NotePage/FolderTree.tsx create mode 100644 src/components/layout/NotePage/NoteItem.tsx diff --git a/src/components/layout/NotePage/FolderEditModal.tsx b/src/components/layout/NotePage/FolderEditModal.tsx new file mode 100644 index 0000000..26a25da --- /dev/null +++ b/src/components/layout/NotePage/FolderEditModal.tsx @@ -0,0 +1,162 @@ +import { Note } from "@/types/note"; + +interface Folder { + id: string; + name: string; + noteIds: string[]; + parentId?: string | null; +} + +interface Props { + notes: Note[]; + folders: Folder[]; + editFolderId: string; + editFolderName: string; + setEditFolderName: (v: string) => void; + editFolderNotes: string[]; + setEditFolderNotes: (v: string[]) => void; + setFolders: React.Dispatch>; + closeEditModal: () => void; +} + +export default function FolderEditModal({ + notes, + folders, + editFolderId, + editFolderName, + setEditFolderName, + editFolderNotes, + setEditFolderNotes, + setFolders, + closeEditModal, +}: Props) { + const editedFolder = folders.find(f => f.id === editFolderId); + + if (!editedFolder) return null; + + return ( +
+
+

폴더 수정

+ + setEditFolderName(e.target.value)} + /> + +
+ {editFolderNotes.length === 0 && ( +
노트 없음
+ )} + {editFolderNotes.map(noteId => { + const note = notes.find(n => n.id === noteId); + if (!note) return null; + return ( +
+ {note.id} + {/* 노트 삭제 버튼 */} + +
+ ); + })} +
+ +
+ {notes + .filter( + n => + !editFolderNotes.includes(n.id) && + !folders.some(f => f.noteIds.includes(n.id)) + ) + .map(note => ( +
{ + setEditFolderNotes([...editFolderNotes, note.id]); + }} + > + {note.id} +
+ ))} +
+
+ +
+ + +
+
+
+
+ ); +} \ No newline at end of file diff --git a/src/components/layout/NotePage/FolderItem.tsx b/src/components/layout/NotePage/FolderItem.tsx new file mode 100644 index 0000000..29b26f5 --- /dev/null +++ b/src/components/layout/NotePage/FolderItem.tsx @@ -0,0 +1,47 @@ +import { BsChevronDown, BsChevronRight, BsFolderFill, BsPencil } from "react-icons/bs"; + +export default function FolderItem({ + folder, + open, + onToggle, + onEdit, + children, +}: { + folder: Folder; + open: boolean; + onToggle: () => void; + onEdit: () => void; + children: React.ReactNode; +}) { + return ( +
+
+ + + {folder.name} + +
+ {open &&
{children}
} +
+ ); +} \ No newline at end of file diff --git a/src/components/layout/NotePage/FolderTree.tsx b/src/components/layout/NotePage/FolderTree.tsx new file mode 100644 index 0000000..767bc3c --- /dev/null +++ b/src/components/layout/NotePage/FolderTree.tsx @@ -0,0 +1,84 @@ +import FolderItem from "./FolderItem"; +import NoteItem from "./NoteItem"; +import { Note } from "@/types/note"; + +// Folder 타입이 없다면 아래처럼 정의(혹은 import) +interface Folder { + id: string; + name: string; + noteIds: string[]; + parentId?: string | null; +} + +export default function FolderTree({ + folders, + notes, + selectedNoteId, + folderOpen, + onToggleFolder, + onEditFolder, + onNoteClick, + parentId = null, +}: { + folders: Folder[]; + notes: Note[]; + selectedNoteId: string; + folderOpen: Record; + onToggleFolder: (id: string) => void; + onEditFolder: (folder: Folder) => void; + onNoteClick: (noteId: string) => void; + parentId?: string | null; +}) { + return ( + <> + {folders + .filter(folder => (folder.parentId ?? null) === parentId) + .map(folder => ( + onToggleFolder(folder.id)} + onEdit={() => onEditFolder(folder)} + > + {/* 상위 폴더의 노트 */} + {folder.noteIds.map(noteId => { + const note = notes.find(n => n.id === noteId); + if (!note) return null; + return ( + onNoteClick(note.id)} + /> + ); + })} + {/* 하위 폴더 */} + + + ))} + {/* 폴더 밖 노트는 parentId === null에서만 렌더링 */} + {parentId === null && + notes + .filter(note => !folders.some(folder => folder.noteIds.includes(note.id))) + .map(note => ( + onNoteClick(note.id)} + /> + ))} + + ); +} \ No newline at end of file diff --git a/src/components/layout/NotePage/NoteExplorer.tsx b/src/components/layout/NotePage/NoteExplorer.tsx index a4acdec..75936ee 100644 --- a/src/components/layout/NotePage/NoteExplorer.tsx +++ b/src/components/layout/NotePage/NoteExplorer.tsx @@ -4,8 +4,10 @@ import { useRef, useState, useEffect } from "react"; import { RxHamburgerMenu } from "react-icons/rx"; import { BsChevronLeft, BsChevronDown, BsChevronRight, BsFolderFill, BsPencil } from "react-icons/bs"; +import FolderTree from "./FolderTree"; import AddMenu from "./AddMenu"; import FolderAddModal from "./FolderAddModal"; +import FolderEditModal from "./FolderEditModal"; interface NoteExplorerProps { user: User; @@ -282,41 +284,16 @@ export default function NoteExplorer({ {/* 폴더 구조로 노트 목록 표시 */}
- {/* 폴더 트리 렌더링 */} - {renderFolders(null)} - {/* 폴더에 속하지 않은 노트 목록 */} - {notes - .filter(note => !folders.some(folder => folder.noteIds.includes(note.id))) - .map(note => ( -
router.push(`/doc/${note.id}`)} - > - - {note.id} - - - - -
- ))} + router.push(`/doc/${noteId}`)} + /> + {/* 폴더 밖 노트는 FolderTree에서 parentId=null로 처리 */}
{/* 폴더 추가 모달 부분 */} @@ -338,140 +315,17 @@ export default function NoteExplorer({ {/* 폴더 수정 모달 부분 */} {editFolderId && ( -
-
-

폴더 수정

- - setEditFolderName(e.target.value)} - /> - -
- {editFolderNotes.length === 0 && ( -
노트 없음
- )} - {editFolderNotes.map(noteId => { - const note = notes.find(n => n.id === noteId); - if (!note) return null; - return ( -
- {note.id} - {/* 노트 삭제 버튼 */} - -
- ); - })} -
- -
- {notes - .filter( - n => - !editFolderNotes.includes(n.id) && - !folders.some(f => f.noteIds.includes(n.id)) - ) - .map(note => ( - - ))} -
-
- -
- - -
-
-
-
+ )} )} diff --git a/src/components/layout/NotePage/NoteItem.tsx b/src/components/layout/NotePage/NoteItem.tsx new file mode 100644 index 0000000..69042b1 --- /dev/null +++ b/src/components/layout/NotePage/NoteItem.tsx @@ -0,0 +1,39 @@ +export default function NoteItem({ + note, + selected, + onClick, +}: { + note: Note; + selected: boolean; + onClick: () => void; +}) { + return ( +
+ + {note.id} + + + + +
+ ); +} \ No newline at end of file From fa14bfd5fc702c97c8cacf214b74b7e030a1bebb Mon Sep 17 00:00:00 2001 From: Sa Jaeheon Date: Fri, 6 Jun 2025 22:23:28 +0900 Subject: [PATCH 046/140] =?UTF-8?q?BugFix:=20Note=20=ED=83=80=EC=9E=85=20?= =?UTF-8?q?=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=EB=A5=BC=20=EB=B9=A0?= =?UTF-8?q?=EB=9C=A8=EB=A0=B8=EB=8D=98=20=EB=B2=84=EA=B7=B8=20=ED=95=B4?= =?UTF-8?q?=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/layout/NotePage/NoteItem.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/layout/NotePage/NoteItem.tsx b/src/components/layout/NotePage/NoteItem.tsx index 69042b1..a06268a 100644 --- a/src/components/layout/NotePage/NoteItem.tsx +++ b/src/components/layout/NotePage/NoteItem.tsx @@ -1,3 +1,5 @@ +import { Note } from "@/types/note"; + export default function NoteItem({ note, selected, From b083e1ec90af070566e711cf1aab5f1b62034502 Mon Sep 17 00:00:00 2001 From: Kim Minseok Date: Sat, 7 Jun 2025 19:25:32 +0900 Subject: [PATCH 047/140] =?UTF-8?q?=EC=9E=84=EC=8B=9C=EC=BB=A4=EB=B0=8B=20?= =?UTF-8?q?-=20=EB=8C=80=EC=B6=A9=20=ED=86=B5=ED=95=A9=20(=EB=AF=B8?= =?UTF-8?q?=EC=99=84)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/doc/[uuid]/DocPageClient.tsx | 10 +- src/app/main/MainPageClient.tsx | 11 +- src/app/main/TreeTest.tsx | 30 ++ src/app/main/page.tsx | 10 +- .../layout/NotePage/FolderAddModal.tsx | 125 +++++--- .../layout/NotePage/FolderEditModal.tsx | 136 +++++---- src/components/layout/NotePage/FolderItem.tsx | 3 +- src/components/layout/NotePage/FolderTree.tsx | 137 +++++---- .../layout/NotePage/NoteExplorer.tsx | 268 ++++++----------- src/components/layout/NotePage/NoteItem.tsx | 6 +- src/libs/client/file.ts | 272 ++++++++++++++++++ 11 files changed, 612 insertions(+), 396 deletions(-) create mode 100644 src/app/main/TreeTest.tsx create mode 100644 src/libs/client/file.ts diff --git a/src/app/doc/[uuid]/DocPageClient.tsx b/src/app/doc/[uuid]/DocPageClient.tsx index e1ae74c..32ceb9a 100644 --- a/src/app/doc/[uuid]/DocPageClient.tsx +++ b/src/app/doc/[uuid]/DocPageClient.tsx @@ -3,29 +3,23 @@ import TopNavigationBar from "@/components/layout/NotePage/TopNavigationBar"; import NoteExplorer from "@/components/layout/NotePage/NoteExplorer"; import NoteUI from "@/components/layout/NotePage/NoteUI"; -import { Note } from "@/types/note"; export default function DocPageClient({ user, - notes, selectedNoteId, }: { user: User; - notes: Note[]; selectedNoteId: string; }) { - const selectedNote = notes.find(note => note.id === selectedNoteId); - return (
- +
- + {/* */}
); diff --git a/src/app/main/MainPageClient.tsx b/src/app/main/MainPageClient.tsx index f11a409..b0ab0a3 100644 --- a/src/app/main/MainPageClient.tsx +++ b/src/app/main/MainPageClient.tsx @@ -5,6 +5,7 @@ import TopNavigationBar from "@/components/layout/NotePage/TopNavigationBar"; import NoteExplorer from "@/components/layout/NotePage/NoteExplorer"; import NoteUI from "@/components/layout/NotePage/NoteUI"; import { Note } from "@/types/note"; +import {getFileTree} from "@/libs/client/file"; interface MainPageClientProps { user: User; @@ -13,22 +14,16 @@ interface MainPageClientProps { } export default function MainPageClient({ user, notes, selectedNoteId }: MainPageClientProps) { - const selectedNote = notes.find(note => note.id === selectedNoteId); return (
- +
- + - {/* 노트가 선택되지 않았을 때 안내 메시지 표시 */} - {selectedNote ? ( - - ) : (
노트를 만들거나 선택하세요
- )}
); diff --git a/src/app/main/TreeTest.tsx b/src/app/main/TreeTest.tsx new file mode 100644 index 0000000..af3a0b3 --- /dev/null +++ b/src/app/main/TreeTest.tsx @@ -0,0 +1,30 @@ +"use client"; +import { getFileTree } from "@/libs/client/file"; +import FolderTree from "@/components/layout/NotePage/FolderTree"; +import { useEffect, useState } from "react"; +import { MoaFile } from "@/types/file"; + +export default function TreeTest({ user }: { user: User }) { + const [file, setFile] = useState(null); + + useEffect(() => { + getFileTree(null, user).then(file => { + setFile(file); + }); + }, [user]); + + if (file) { + return ( + {}} + onEditFolder={() => {}} + onNoteClick={() => {}} + /> + ); + } + + return <>로딩중...; +} \ No newline at end of file diff --git a/src/app/main/page.tsx b/src/app/main/page.tsx index c06969a..d3ea7df 100644 --- a/src/app/main/page.tsx +++ b/src/app/main/page.tsx @@ -1,6 +1,6 @@ import { fetchCurrentUserServerSide } from "@/libs/server/user"; -import { fetchNotesServerSide } from "@/libs/server/note"; -import MainPageClient from "./MainPageClient"; +import {getFileList} from "@/libs/server/file"; +import MainPageClient from "@/app/main/MainPageClient"; export default async function MainPage() { const user = await fetchCurrentUserServerSide(); @@ -9,8 +9,8 @@ export default async function MainPage() { return
로그인 필요
; } - const notes = await fetchNotesServerSide(user.id); + const fileList = await getFileList(null, user); + console.log(fileList); - // selectedNoteId를 빈 문자열로 전달 - return ; + return ; } \ No newline at end of file diff --git a/src/components/layout/NotePage/FolderAddModal.tsx b/src/components/layout/NotePage/FolderAddModal.tsx index b51f8a8..66abb72 100644 --- a/src/components/layout/NotePage/FolderAddModal.tsx +++ b/src/components/layout/NotePage/FolderAddModal.tsx @@ -1,45 +1,78 @@ -import { Note } from "@/types/note"; +"use client"; -interface Folder { - id: string; - name: string; - noteIds: string[]; - parentId?: string | null; -} +import { MoaFile } from "@/types/file"; -export default function FolderAddModal({ - notes, - folders, - parentFolderId, - setParentFolderId, - folderName, - setFolderName, - selectedNoteIds, - setSelectedNoteIds, - onCancel, - onAdd, - errorMsg, -}: { - notes: Note[]; - folders: Folder[]; +interface Props { + root: MoaFile; // 루트 디렉토리 트리 전체 + selectedNotes: MoaFile[]; // 현재 선택된 노트들 + setSelectedNotes: (notes: MoaFile[]) => void; + folderName: string; + setFolderName: (name: string) => void; parentFolderId: string | null; setParentFolderId: (id: string | null) => void; - folderName: string; - setFolderName: (v: string) => void; - selectedNoteIds: string[]; - setSelectedNoteIds: (v: string[]) => void; - onCancel: () => void; onAdd: () => void; + onCancel: () => void; errorMsg?: string | null; -}) { +} + +export default function FolderAddModal({ + root, + selectedNotes, + setSelectedNotes, + folderName, + setFolderName, + parentFolderId, + setParentFolderId, + onAdd, + onCancel, + errorMsg, + }: Props) { + + const renderFolderOptions = ( + folder: MoaFile, + depth = 0 + ): React.ReactNode => { + if (folder.type.toString() !== "DIRECTORY") return null; + return ( + <> + + {folder.children && + folder.children.map((child) => + renderFolderOptions(child, depth + 1) + )} + + ); + }; + + // 재귀적으로 노트 목록 출력 + const renderNoteList = (folder: MoaFile) => { + const notes = []; + if (folder.type.toString() === "DOCUMENT") { + notes.push(folder); + } + if (folder.children) { + folder.children.forEach((child) => { + notes.push(...renderNoteList(child)); + }); + } + return notes; + }; + + const allNotes = renderNoteList(root); + return (

폴더 추가

+ {/* 안내문 표시 */} {errorMsg && (
{errorMsg}
)} + + {/* 폴더 생성 위치 */} + + {/* 폴더 이름 */} setFolderName(e.target.value)} placeholder="폴더 이름을 입력하세요" /> + + {/* 폴더에 추가할 노트 선택 */}
- {notes.map((note) => ( -
+ + {/* 버튼 영역 */}
@@ -98,4 +141,4 @@ export default function FolderAddModal({
); -} \ No newline at end of file +} diff --git a/src/components/layout/NotePage/FolderEditModal.tsx b/src/components/layout/NotePage/FolderEditModal.tsx index 26a25da..7c5d918 100644 --- a/src/components/layout/NotePage/FolderEditModal.tsx +++ b/src/components/layout/NotePage/FolderEditModal.tsx @@ -1,118 +1,131 @@ -import { Note } from "@/types/note"; +"use client"; -interface Folder { - id: string; - name: string; - noteIds: string[]; - parentId?: string | null; -} +import { MoaFile } from "@/types/file"; interface Props { - notes: Note[]; - folders: Folder[]; + notes: MoaFile[]; // 전체 노트 (type === DOCUMENT) + folders: MoaFile[]; // 전체 폴더 (type === DIRECTORY) editFolderId: string; editFolderName: string; setEditFolderName: (v: string) => void; - editFolderNotes: string[]; - setEditFolderNotes: (v: string[]) => void; - setFolders: React.Dispatch>; + editFolderNotes: MoaFile[]; + setEditFolderNotes: (v: MoaFile[]) => void; + setFolders: React.Dispatch>; closeEditModal: () => void; } export default function FolderEditModal({ - notes, - folders, - editFolderId, - editFolderName, - setEditFolderName, - editFolderNotes, - setEditFolderNotes, - setFolders, - closeEditModal, -}: Props) { + notes, + folders, + editFolderId, + editFolderName, + setEditFolderName, + editFolderNotes, + setEditFolderNotes, + setFolders, + closeEditModal, + }: Props) { const editedFolder = folders.find(f => f.id === editFolderId); if (!editedFolder) return null; + // 상위 폴더 id 추출 (children 기반이라면 따로 관리 필요) + const parentId = undefined; // MoaFile 구조라면 별도 관리 필요 (상위 폴더 id가 없다면 최상위 폴더) + return (

폴더 수정

+ + {/* 폴더 이름 */} setEditFolderName(e.target.value)} /> + + {/* 폴더에 포함된 노트 */}
{editFolderNotes.length === 0 && (
노트 없음
)} - {editFolderNotes.map(noteId => { - const note = notes.find(n => n.id === noteId); - if (!note) return null; - return ( -
- {note.id} - {/* 노트 삭제 버튼 */} - -
- ); - })} + {editFolderNotes.map(note => ( +
+ {note.name} + +
+ ))}
+ + {/* 폴더에 추가할 노트 */}
{notes .filter( n => - !editFolderNotes.includes(n.id) && - !folders.some(f => f.noteIds.includes(n.id)) + n.type.toString() === "DOCUMENT" && + !editFolderNotes.some(en => en.id === n.id) && + !folders.some(f => + (f.children || []).some(child => child.id === n.id) + ) ) .map(note => (
{ - setEditFolderNotes([...editFolderNotes, note.id]); + setEditFolderNotes([...editFolderNotes, note]); }} > - {note.id} + {note.name}
))}
+ + {/* 버튼 영역 */}
+ {/* 폴더 삭제 */} + + {/* 저장 및 취소 */}
); -} \ No newline at end of file +} diff --git a/src/components/layout/NotePage/FolderItem.tsx b/src/components/layout/NotePage/FolderItem.tsx index 29b26f5..cc183d8 100644 --- a/src/components/layout/NotePage/FolderItem.tsx +++ b/src/components/layout/NotePage/FolderItem.tsx @@ -1,4 +1,5 @@ import { BsChevronDown, BsChevronRight, BsFolderFill, BsPencil } from "react-icons/bs"; +import {MoaFile} from "@/types/file"; export default function FolderItem({ folder, @@ -7,7 +8,7 @@ export default function FolderItem({ onEdit, children, }: { - folder: Folder; + folder: MoaFile; open: boolean; onToggle: () => void; onEdit: () => void; diff --git a/src/components/layout/NotePage/FolderTree.tsx b/src/components/layout/NotePage/FolderTree.tsx index 767bc3c..0951d4d 100644 --- a/src/components/layout/NotePage/FolderTree.tsx +++ b/src/components/layout/NotePage/FolderTree.tsx @@ -1,84 +1,75 @@ import FolderItem from "./FolderItem"; import NoteItem from "./NoteItem"; -import { Note } from "@/types/note"; - -// Folder 타입이 없다면 아래처럼 정의(혹은 import) -interface Folder { - id: string; - name: string; - noteIds: string[]; - parentId?: string | null; -} +import {MoaFile} from "@/types/file"; +import {FileTypeDTO} from "@/types/dto"; export default function FolderTree({ - folders, - notes, - selectedNoteId, - folderOpen, - onToggleFolder, - onEditFolder, - onNoteClick, - parentId = null, -}: { - folders: Folder[]; - notes: Note[]; + file, + selectedNoteId, + folderOpen, + onToggleFolder, + onEditFolder, + onNoteClick, + }: { + file: MoaFile; selectedNoteId: string; folderOpen: Record; onToggleFolder: (id: string) => void; - onEditFolder: (folder: Folder) => void; + onEditFolder: (folder: MoaFile) => void; onNoteClick: (noteId: string) => void; parentId?: string | null; }) { - return ( - <> - {folders - .filter(folder => (folder.parentId ?? null) === parentId) - .map(folder => ( - onToggleFolder(folder.id)} - onEdit={() => onEditFolder(folder)} - > - {/* 상위 폴더의 노트 */} - {folder.noteIds.map(noteId => { - const note = notes.find(n => n.id === noteId); - if (!note) return null; - return ( - onNoteClick(note.id)} - /> - ); - })} - {/* 하위 폴더 */} - - - ))} - {/* 폴더 밖 노트는 parentId === null에서만 렌더링 */} - {parentId === null && - notes - .filter(note => !folders.some(folder => folder.noteIds.includes(note.id))) - .map(note => ( - onNoteClick(note.id)} - /> - ))} - - ); + console.log(file); + if (file.type.toString() == "DOCUMENT") { + return ( + onNoteClick(file.id)} + /> + ); + } else if (file.type.toString() == "DIRECTORY") { + const notes = file.children ? + file.children.filter((file) => file.type.toString() === "DOCUMENT") : []; + const directories = file.children ? + file.children.filter((file) => file.type.toString() === "DIRECTORY") : []; + + console.log("노트들"); + console.log(notes); + return ( + onToggleFolder(file.id)} + onEdit={() => onEditFolder(file)} + > + { + directories.map((directory) => ( + FolderTree({ + file: directory, + selectedNoteId: selectedNoteId, + folderOpen: folderOpen, + onToggleFolder: onToggleFolder, + onEditFolder: onEditFolder, + onNoteClick: onNoteClick + }) + )) + } + { + notes.map((note) => ( + FolderTree({ + file: note, + selectedNoteId: selectedNoteId, + folderOpen: folderOpen, + onToggleFolder: onToggleFolder, + onEditFolder: onEditFolder, + onNoteClick: onNoteClick + }) + )) + } + + ) + } } \ No newline at end of file diff --git a/src/components/layout/NotePage/NoteExplorer.tsx b/src/components/layout/NotePage/NoteExplorer.tsx index 75936ee..727e6fe 100644 --- a/src/components/layout/NotePage/NoteExplorer.tsx +++ b/src/components/layout/NotePage/NoteExplorer.tsx @@ -1,100 +1,98 @@ -import { Note } from "@/types/note"; +"use client"; + import { useRouter } from "next/navigation"; -import { useRef, useState, useEffect } from "react"; +import { useEffect, useRef, useState } from "react"; import { RxHamburgerMenu } from "react-icons/rx"; -import { BsChevronLeft, BsChevronDown, BsChevronRight, BsFolderFill, BsPencil } from "react-icons/bs"; +import { BsChevronLeft } from "react-icons/bs"; import FolderTree from "./FolderTree"; import AddMenu from "./AddMenu"; import FolderAddModal from "./FolderAddModal"; import FolderEditModal from "./FolderEditModal"; +import { MoaFile } from "@/types/file"; +import { getFileTree } from "@/libs/client/file"; interface NoteExplorerProps { user: User; - notes: Note[]; selectedNoteId: string; } -interface Folder { - id: string; - name: string; - noteIds: string[]; - parentId?: string | null; // ← 이 줄 추가! -} - export default function NoteExplorer({ - user, - notes, - selectedNoteId, -}: NoteExplorerProps) { + user, + selectedNoteId, + }: NoteExplorerProps) { const router = useRouter(); const [open, setOpen] = useState(true); const [showAddMenu, setShowAddMenu] = useState(false); const [showFolderModal, setShowFolderModal] = useState(false); const [folderName, setFolderName] = useState(""); - const [selectedNoteIds, setSelectedNoteIds] = useState([]); - const [folders, setFolders] = useState([]); + const [selectedNotes, setSelectedNotes] = useState([]); + const [files, setFiles] = useState([]); const [folderOpen, setFolderOpen] = useState>({}); const [parentFolderId, setParentFolderId] = useState(null); const [errorMsg, setErrorMsg] = useState(null); const [editFolderId, setEditFolderId] = useState(null); const [editFolderName, setEditFolderName] = useState(""); - const [editFolderNotes, setEditFolderNotes] = useState([]); + const [editFolderNotes, setEditFolderNotes] = useState([]); const asideRef = useRef(null); - // 햄버거 버튼 클릭 시 NoteExplorer 열기 + // 폴더 데이터 초기화 + useEffect(() => { + getFileTree(null, user).then((rootFolder) => { + if (rootFolder) { + setFiles([rootFolder]); + } else { + setFiles([]); + } + }); + }, [user]); + const handleOpen = () => setOpen(true); - // 닫기 버튼 클릭 시 NoteExplorer 닫기 const handleClose = () => setOpen(false); - // 폴더 추가 모달 열기 const openFolderModal = () => { setShowAddMenu(false); setShowFolderModal(true); setFolderName(""); - setSelectedNoteIds([]); + setSelectedNotes([]); setParentFolderId(null); }; - // 폴더 추가 핸들러 const handleAddFolder = () => { - // 이미 다른 폴더에 포함된 노트가 있는지 검사 - const alreadyInFolder = selectedNoteIds.find(noteId => - folders.some(folder => folder.noteIds.includes(noteId)) - ); + const alreadyInFolder = files.some((folder) => { + if (folder.children) { + return folder.children.some((child) => child.id === selectedNoteId); + } + return false; + }); + if (alreadyInFolder) { setErrorMsg("이미 다른 폴더에 포함된 노트입니다."); return; } - if (!folderName.trim() || selectedNoteIds.length === 0) return; - const newId = `${Date.now()}`; - setFolders([ - ...folders, - { - id: newId, - name: folderName, - noteIds: selectedNoteIds, - parentId: parentFolderId ?? null, - }, - ]); - setFolderOpen((prev) => ({ ...prev, [newId]: true })); - setShowFolderModal(false); - setFolderName(""); - setSelectedNoteIds([]); - setParentFolderId(null); - setErrorMsg(null); + + if (!folderName.trim() || selectedNotes.length === 0) return; + + // 실제 폴더 생성 로직(API 호출 등) 추가 가능 + + getFileTree(null, user).then((rootFolder) => { + if (rootFolder) { + setFiles([rootFolder]); + } else { + setFiles([]); + } + setShowFolderModal(false); + setFolderName(""); + setSelectedNotes([]); + setParentFolderId(null); + setErrorMsg(null); + }); }; - // 폴더 추가 모달이 열릴 때 에러 메시지 초기화 useEffect(() => { if (showFolderModal) setErrorMsg(null); }, [showFolderModal]); - // 노트가 폴더에 포함되어 있는지 확인 - const isNoteInFolder = (noteId: string) => - folders.some((folder) => folder.noteIds.includes(noteId)); - - // 폴더 토글 핸들러 const handleToggleFolder = (folderId: string) => { setFolderOpen((prev) => ({ ...prev, @@ -102,113 +100,13 @@ export default function NoteExplorer({ })); }; - function renderFolders(parentId: string | null) { - return folders - .filter(folder => (folder.parentId ?? null) === parentId) - .map(folder => ( -
-
- {/* 폴더 토글 버튼 */} - - - {folder.name} - {/* 연필(수정) 아이콘 - 가장 우측 */} - -
- {folderOpen[folder.id] && ( -
- {/* 1. 상위 폴더의 노트 먼저 */} - {folder.noteIds.map(noteId => { - const note = notes.find(n => n.id === noteId); - if (!note) return null; - return ( -
router.push(`/doc/${note.id}`)} - > - - {note.id} - - - - -
- ); - })} - {/* 2. 하위 폴더는 아래에 */} - {renderFolders(folder.id)} -
- )} -
- )); - } - - // 폴더 수정 모달 열기 - function openEditModal(folder: Folder) { + function openEditModal(folder: MoaFile) { setEditFolderId(folder.id); setEditFolderName(folder.name); - setEditFolderNotes([...folder.noteIds]); + if (folder.children) setEditFolderNotes([...folder.children]); + else setEditFolderNotes([]); } - // 폴더 수정 모달 닫기 function closeEditModal() { setEditFolderId(null); setEditFolderName(""); @@ -217,7 +115,6 @@ export default function NoteExplorer({ return ( <> - {/* 햄버거 버튼: 닫혀있을 때만 표시 */} {!open && (
- {/* 폴더 구조로 노트 목록 표시 */}
- router.push(`/doc/${noteId}`)} - /> - {/* 폴더 밖 노트는 FolderTree에서 parentId=null로 처리 */} + {files.length > 0 ? ( + router.push(`/doc/${noteId}`)} + /> + ) : ( + <>로딩중... + )}
- {/* 폴더 추가 모달 부분 */} {showFolderModal && ( setShowFolderModal(false)} onAdd={handleAddFolder} errorMsg={errorMsg} /> )} - {/* 폴더 수정 모달 부분 */} {editFolderId && ( - setShowFolderModal(false)} + errorMsg={errorMsg} /> )} )} ); -} \ No newline at end of file +} diff --git a/src/components/layout/NotePage/NoteItem.tsx b/src/components/layout/NotePage/NoteItem.tsx index a06268a..f202b0c 100644 --- a/src/components/layout/NotePage/NoteItem.tsx +++ b/src/components/layout/NotePage/NoteItem.tsx @@ -1,11 +1,11 @@ -import { Note } from "@/types/note"; +import { MoaFile } from "@/types/file"; export default function NoteItem({ note, selected, onClick, }: { - note: Note; + note: MoaFile; selected: boolean; onClick: () => void; }) { @@ -24,7 +24,7 @@ export default function NoteItem({ onClick={onClick} > - {note.id} + {note.name} Date: Sun, 8 Jun 2025 15:14:53 +0900 Subject: [PATCH 048/140] =?UTF-8?q?feat(file):=20note=20=EC=83=9D=EC=84=B1?= =?UTF-8?q?=20=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/app/main/MainPageClient.tsx | 7 +- .../layout/NotePage/AddNoteModal.tsx | 89 +++++++++++ .../layout/NotePage/FolderAddModal.tsx | 63 ++++---- .../layout/NotePage/FolderEditModal.tsx | 92 +++++++++--- .../layout/NotePage/NoteExplorer.tsx | 141 +++++++++++------- src/libs/client/file.ts | 18 ++- 6 files changed, 293 insertions(+), 117 deletions(-) create mode 100644 src/components/layout/NotePage/AddNoteModal.tsx diff --git a/src/app/main/MainPageClient.tsx b/src/app/main/MainPageClient.tsx index b0ab0a3..d903518 100644 --- a/src/app/main/MainPageClient.tsx +++ b/src/app/main/MainPageClient.tsx @@ -1,19 +1,14 @@ 'use client'; -import { useState } from "react"; import TopNavigationBar from "@/components/layout/NotePage/TopNavigationBar"; import NoteExplorer from "@/components/layout/NotePage/NoteExplorer"; -import NoteUI from "@/components/layout/NotePage/NoteUI"; -import { Note } from "@/types/note"; -import {getFileTree} from "@/libs/client/file"; interface MainPageClientProps { user: User; - notes: Note[]; selectedNoteId?: string; } -export default function MainPageClient({ user, notes, selectedNoteId }: MainPageClientProps) { +export default function MainPageClient({ user, selectedNoteId }: MainPageClientProps) { return (
diff --git a/src/components/layout/NotePage/AddNoteModal.tsx b/src/components/layout/NotePage/AddNoteModal.tsx new file mode 100644 index 0000000..5e0846f --- /dev/null +++ b/src/components/layout/NotePage/AddNoteModal.tsx @@ -0,0 +1,89 @@ +"use client" + +import {useState} from "react"; +import {MoaFile} from "@/types/file"; + +interface Props { + root: MoaFile; + onAdd: (noteId: string, parentId: string) => void; + onCancel: () => void; + errorMsg?: string | null; +} + +export default function AddNoteModal({ + root, + onAdd, + onCancel, + }: Props) { + const [noteName, setNoteName] = useState(""); + const [parentId, setParentId] = useState(root.id); + + // 모든 디렉토리 목록 + const renderFolderOptions = ( + folder: MoaFile, + depth = 0 + ): React.ReactNode => { + // 루트 폴더 가져오기 + + if (folder.type.toString() !== "DIRECTORY") return null; + + return ( + <> + + {folder.children && + folder.children.map((child) => + renderFolderOptions(child, depth + 1) + ) + } + + ); + }; + + return ( +
+
+

폴더 추가

+ + {/* 노트 생성 위치 */} + + + + {/* 노트 이름 */} + + setNoteName(e.target.value)} + placeholder="노트 이름을 입력하세요" + /> + + {/* 버튼 영역 */} +
+ + +
+
+
+ ); +} \ No newline at end of file diff --git a/src/components/layout/NotePage/FolderAddModal.tsx b/src/components/layout/NotePage/FolderAddModal.tsx index 66abb72..aebc207 100644 --- a/src/components/layout/NotePage/FolderAddModal.tsx +++ b/src/components/layout/NotePage/FolderAddModal.tsx @@ -1,38 +1,35 @@ "use client"; -import { MoaFile } from "@/types/file"; +import {MoaFile} from "@/types/file"; +import {useState} from "react"; interface Props { - root: MoaFile; // 루트 디렉토리 트리 전체 - selectedNotes: MoaFile[]; // 현재 선택된 노트들 - setSelectedNotes: (notes: MoaFile[]) => void; - folderName: string; - setFolderName: (name: string) => void; - parentFolderId: string | null; - setParentFolderId: (id: string | null) => void; - onAdd: () => void; + root: MoaFile; + onAdd: (folderName:string, parentId:string, selectedNotes:string[]) => void; onCancel: () => void; errorMsg?: string | null; } export default function FolderAddModal({ root, - selectedNotes, - setSelectedNotes, - folderName, - setFolderName, - parentFolderId, - setParentFolderId, onAdd, onCancel, errorMsg, }: Props) { + const [folderName, setFolderName] = useState(""); + const [parentId, setParentId] = useState(root.id); + const [selectedNotes, setSelectedNotes] = useState([]); + + // 모든 부모 목록 const renderFolderOptions = ( folder: MoaFile, depth = 0 ): React.ReactNode => { + // 루트 폴더 가져오기 + if (folder.type.toString() !== "DIRECTORY") return null; + return ( <>
diff --git a/src/components/layout/NotePage/TopNavigationBar.tsx b/src/components/layout/NotePage/TopNavigationBar.tsx index f258451..81f23a1 100644 --- a/src/components/layout/NotePage/TopNavigationBar.tsx +++ b/src/components/layout/NotePage/TopNavigationBar.tsx @@ -1,11 +1,19 @@ "use client"; import { useEffect, useState } from "react"; -import Profile from "@/components/layout/Profile"; -import InviteUserModal from "@/components/layout/NotePage/InviteUserModal"; -import { MoaFile } from "@/types/file"; +import type { MoaFile } from "@/types/file"; import { addNoteSegment, getCollaborators, getFile } from "@/libs/client/file"; import toast from "react-hot-toast"; +import { + UserPlus, + MoreHorizontal, + Palette, + Type, + Sparkles, +} from "lucide-react"; + +import Profile from "@/components/layout/Profile"; +import InviteUserModal from "@/components/layout/NotePage/InviteUserModal"; export default function TopNavigationBar({ user, @@ -52,85 +60,85 @@ export default function TopNavigationBar({ }, [selectedNoteId, user]); return ( -
+
{/* 로고 및 제목 */}
- logo - - 모아노트 - +
+ logo +
+
+
+ + 모아노트 + +
+
{/* 문서 제목 및 블록 타입 */} -
- - {note ? note.name : "문서 없음"} - -
- { - handleAddDiagram(); - }} - > - 디자인 블록 +
+
+
+ + {note ? note.name : "문서 없음"} - + +
+ + +
{/* 공유자 프로필 + 초대 버튼 */} -
- {sharedUsers.map((user, idx) => ( -
- {user.name[0]?.toUpperCase() || "?"} -
- ))} +
+
+ {sharedUsers.slice(0, 3).map((sharedUser, idx) => ( +
0 ? "-8px" : "0", + }} + > + {sharedUser.name[0]?.toUpperCase() || "?"} +
+
+ ))} + + {sharedUsers.length > 3 && ( +
+ +{sharedUsers.length - 3} +
+ )} +
+ {/* 초대 버튼 */} + {/* 더보기 버튼 및 본인 프로필 */} -
+
- + +
+ +
+
); diff --git a/src/components/layout/Profile.tsx b/src/components/layout/Profile.tsx index 5078e4d..62b8386 100644 --- a/src/components/layout/Profile.tsx +++ b/src/components/layout/Profile.tsx @@ -1,4 +1,6 @@ -// 현재 사용되지 않는 컴포넌트 +"use client"; + +import { User } from "lucide-react"; export default function Profile({ name }: { name: string }) { // 이름의 첫 글자 추출 (없으면 ?) @@ -6,12 +8,13 @@ export default function Profile({ name }: { name: string }) { return (
{/* 원형 프로필 (이름 앞글자) */} -
- {initial} +
+ {initial === "?" ? : initial} +
); From 06b10c390584857ee7ac307482446d603f324e79 Mon Sep 17 00:00:00 2001 From: SA JAEHEON Date: Wed, 6 Aug 2025 00:12:57 +0900 Subject: [PATCH 102/140] =?UTF-8?q?feat:=20=EC=97=90=20UI=EB=A5=BC?= =?UTF-8?q?=20=EB=9E=9C=EB=8D=94=EB=A7=81=20=ED=95=98=EA=B8=B0=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20Portal=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20?= =?UTF-8?q?=EB=A7=8C=EB=93=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [포탈이란?] 리액트 컴포넌트는 컴포넌트간의 부모-자식 관계에 의해 렌더링 되지만, 특정 컴포넌트를 리액트 부모-자식 트리와 관계없이 등 특정 DOM에 랜더링 하는 역할을 하는 컴포넌트 --- src/components/common/Portal.tsx | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/components/common/Portal.tsx diff --git a/src/components/common/Portal.tsx b/src/components/common/Portal.tsx new file mode 100644 index 0000000..38b0d35 --- /dev/null +++ b/src/components/common/Portal.tsx @@ -0,0 +1,19 @@ +import { useEffect, useRef } from "react"; +import { createPortal } from "react-dom"; + +export default function Portal({ children }: { children: React.ReactNode }) { + const elRef = useRef(null); + if (!elRef.current) { + elRef.current = document.createElement("div"); + } + + useEffect(() => { + const el = elRef.current!; + document.body.appendChild(el); + return () => { + document.body.removeChild(el); + }; + }, []); + + return createPortal(children, elRef.current); +} From b8ce4dfa483b570c62bb13021be682c86139ec3c Mon Sep 17 00:00:00 2001 From: SA JAEHEON Date: Wed, 6 Aug 2025 00:16:36 +0900 Subject: [PATCH 103/140] =?UTF-8?q?bugFix:=20blurr=20=EC=B2=98=EB=A6=AC?= =?UTF-8?q?=EC=99=80=20=EB=AA=A8=EB=8B=AC=20=ED=91=9C=EC=8B=9C=20=EC=9C=84?= =?UTF-8?q?=EC=B9=98=20=EA=B4=80=EB=A0=A8=20=EC=98=A4=EB=A5=98=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 --- .../layout/NotePage/InviteUserModal.tsx | 240 +++++++++--------- 1 file changed, 123 insertions(+), 117 deletions(-) diff --git a/src/components/layout/NotePage/InviteUserModal.tsx b/src/components/layout/NotePage/InviteUserModal.tsx index 5b4260a..75d0dd0 100644 --- a/src/components/layout/NotePage/InviteUserModal.tsx +++ b/src/components/layout/NotePage/InviteUserModal.tsx @@ -15,6 +15,8 @@ import { Trash2, } from "lucide-react"; +import Portal from "@/components/common/Portal"; + interface InviteUserModalProps { user: User; noteId: string; @@ -106,135 +108,139 @@ export default function InviteUserModal({ if (!open) return null; return ( -
-
- {/* 헤더 */} -
-
-
- -
-
-

사용자 초대

-

- 문서를 공유하고 함께 작업하세요 -

+ +
+
+ {/* 헤더 */} +
+
+
+ +
+
+

+ 사용자 초대 +

+

+ 문서를 공유하고 함께 작업하세요 +

+
+
- -
- {/* 사용자 입력 및 추가 */} -
-
- setInput(e.target.value)} - onKeyDown={(e) => { - if (e.key === "Enter") handleAddUser(); - }} - disabled={isLoading} - /> + {/* 사용자 입력 및 추가 */} +
+
+ setInput(e.target.value)} + onKeyDown={(e) => { + if (e.key === "Enter") handleAddUser(); + }} + disabled={isLoading} + /> +
+
- -
- {/* 협업자 목록 */} -
-
- - 협업자 목록 ( - {Array.isArray(collaborators) ? collaborators.length : 0}명) -
+ {/* 협업자 목록 */} +
+
+ + 협업자 목록 ( + {Array.isArray(collaborators) ? collaborators.length : 0}명) +
-
- {(Array.isArray(collaborators) ? collaborators : []).map( - (collaborator) => ( -
-
-
- {collaborator.user.name[0]?.toUpperCase() || "?"} -
-
-

- {collaborator.user.name} -

-

협업자

+
+ {(Array.isArray(collaborators) ? collaborators : []).map( + (collaborator) => ( +
+
+
+ {collaborator.user.name[0]?.toUpperCase() || "?"} +
+
+

+ {collaborator.user.name} +

+

협업자

+
-
-
- - - +
+ + + +
+ ) + )} + + {(!collaborators || collaborators.length === 0) && ( +
+ +

아직 협업자가 없습니다

+

사용자를 초대해보세요

- ) - )} - - {(!collaborators || collaborators.length === 0) && ( -
- -

아직 협업자가 없습니다

-

사용자를 초대해보세요

-
- )} + )} +
-
- {/* 초대하기 버튼 */} - + {/* 초대하기 버튼 */} + +
-
+ ); } From 596491364406ddae111d61939628b666ce0ab595 Mon Sep 17 00:00:00 2001 From: SA JAEHEON Date: Wed, 6 Aug 2025 00:17:37 +0900 Subject: [PATCH 104/140] =?UTF-8?q?design:=20=EB=85=B8=ED=8A=B8=20?= =?UTF-8?q?=ED=83=90=EC=83=89=EA=B8=B0=20+=20=EC=B6=94=EA=B0=80=EB=B2=84?= =?UTF-8?q?=ED=8A=BC=20+=20=EB=85=B8=ED=8A=B8/=ED=8F=B4=EB=8D=94=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EB=AA=A8=EB=8B=AC=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 --- src/components/layout/NotePage/AddMenu.tsx | 70 ++++-- .../layout/NotePage/FolderAddModal.tsx | 231 +++++++++++------- .../layout/NotePage/NoteAddModal.tsx | 126 ++++++---- .../layout/NotePage/NoteExplorer.tsx | 103 +++++--- 4 files changed, 347 insertions(+), 183 deletions(-) diff --git a/src/components/layout/NotePage/AddMenu.tsx b/src/components/layout/NotePage/AddMenu.tsx index f0f9d8f..b83af2b 100644 --- a/src/components/layout/NotePage/AddMenu.tsx +++ b/src/components/layout/NotePage/AddMenu.tsx @@ -1,4 +1,6 @@ -import { BsFileEarmarkPlus, BsFolderPlus } from "react-icons/bs"; +"use client"; + +import { FileText, FolderPlus, Sparkles } from "lucide-react"; export default function AddMenu({ onAddNote, @@ -10,27 +12,51 @@ export default function AddMenu({ onClose?: () => void; }) { return ( -
- - +
+ {/* 헤더 */} +
+
+ + + 새로 만들기 + +
+
+ + {/* 메뉴 아이템들 */} +
+ + + +
); } diff --git a/src/components/layout/NotePage/FolderAddModal.tsx b/src/components/layout/NotePage/FolderAddModal.tsx index 52a3886..3ef08ac 100644 --- a/src/components/layout/NotePage/FolderAddModal.tsx +++ b/src/components/layout/NotePage/FolderAddModal.tsx @@ -1,7 +1,17 @@ "use client"; -import { MoaFile } from "@/types/file"; +import type { MoaFile } from "@/types/file"; import React, { useState } from "react"; +import { + X, + FolderPlus, + FolderOpen, + FileText, + Plus, + AlertCircle, +} from "lucide-react"; + +import Portal from "@/components/common/Portal"; interface Props { root: MoaFile; @@ -30,9 +40,9 @@ export default function FolderAddModal({ return ( - + {folder.children && folder.children.map((child) => renderFolderOptions(child, depth + 1))} @@ -56,93 +66,148 @@ export default function FolderAddModal({ const notes = getNoteList(root); return ( -
-
-

폴더 추가

- - {/* 안내문 표시 */} - {errorMsg && ( -
- {errorMsg} + +
+
+ {/* 헤더 */} +
+
+
+ +
+
+

폴더 추가

+

+ 노트를 정리할 폴더를 만들어보세요 +

+
+
+
- )} - - {/* 폴더 생성 위치 */} - - - {/* 폴더 이름 */} - - setFolderName(e.target.value)} - placeholder="폴더 이름을 입력하세요" - /> + {/* 에러 메시지 */} + {errorMsg && ( +
+ + + {errorMsg} + +
+ )} - {/* 폴더에 추가할 노트 선택 */} - + {/* 폼 */} +
+ {/* 폴더 생성 위치 */} +
+ + +
-
- {notes.length === 0 && ( -
노트가 없습니다.
- )} - {notes.map((note) => ( -
+ + {/* 폴더에 추가할 노트 선택 */} +
+ + +
+ {notes.length === 0 ? ( +
+ +

노트가 없습니다

+
+ ) : ( +
+ {notes.map((note) => ( + + ))} +
+ )} +
+
+
- {/* 버튼 영역 */} -
- - + {/* 버튼 영역 */} +
+ + +
-
+
); } diff --git a/src/components/layout/NotePage/NoteAddModal.tsx b/src/components/layout/NotePage/NoteAddModal.tsx index 9b92052..4e60d46 100644 --- a/src/components/layout/NotePage/NoteAddModal.tsx +++ b/src/components/layout/NotePage/NoteAddModal.tsx @@ -1,7 +1,10 @@ "use client"; import React, { useState } from "react"; -import { MoaFile } from "@/types/file"; +import type { MoaFile } from "@/types/file"; +import { X, FileText, FolderOpen, Plus } from "lucide-react"; + +import Portal from "@/components/common/Portal"; interface Props { root: MoaFile; @@ -22,9 +25,9 @@ export default function NoteAddModal({ root, onAdd, onCancel }: Props) { return ( - + {folder.children && folder.children.map((child) => renderFolderOptions(child, depth + 1))} @@ -32,50 +35,85 @@ export default function NoteAddModal({ root, onAdd, onCancel }: Props) { }; return ( -
-
-

노트 추가

+ +
+
+ {/* 헤더 */} +
+
+
+ +
+
+

노트 추가

+

+ 새로운 문서를 만들어보세요 +

+
+
+ +
- {/* 노트 생성 위치 */} - - + {/* 폼 */} +
+ {/* 노트 생성 위치 */} +
+ + +
- {/* 노트 이름 */} - - setNoteName(e.target.value)} - placeholder="노트 이름을 입력하세요" - /> + {/* 노트 이름 */} +
+ + setNoteName(e.target.value)} + placeholder="노트 이름을 입력하세요" + autoFocus + /> +
+
- {/* 버튼 영역 */} -
- - + {/* 버튼 영역 */} +
+ + +
-
+
); } diff --git a/src/components/layout/NotePage/NoteExplorer.tsx b/src/components/layout/NotePage/NoteExplorer.tsx index 4221c3b..6568c06 100644 --- a/src/components/layout/NotePage/NoteExplorer.tsx +++ b/src/components/layout/NotePage/NoteExplorer.tsx @@ -2,13 +2,9 @@ import { useRouter } from "next/navigation"; import { useEffect, useRef, useState } from "react"; -import { RxHamburgerMenu } from "react-icons/rx"; -import { BsChevronLeft } from "react-icons/bs"; +import { Menu, ChevronLeft, Plus, FileText, Folder, Users } from "lucide-react"; -import FolderTree from "./FolderTree"; -import AddMenu from "./AddMenu"; -import FolderAddModal from "./FolderAddModal"; -import { MoaFile } from "@/types/file"; +import type { MoaFile } from "@/types/file"; import { addNoteSegment, createFile, @@ -18,9 +14,13 @@ import { getFileTree, } from "@/libs/client/file"; import { FileTypeDTO } from "@/types/dto"; + +import AddMenu from "@/components/layout/NotePage/AddMenu"; import NoteAddModal from "@/components/layout/NotePage/NoteAddModal"; -import FolderEditModal from "@/components/layout/NotePage/FolderEditModal"; +import FolderAddModal from "@/components/layout/NotePage/FolderAddModal"; import NoteEditModal from "@/components/layout/NotePage/NoteEditModal"; +import FolderEditModal from "@/components/layout/NotePage/FolderEditModal"; +import FolderTree from "@/components/layout/NotePage/FolderTree"; import SharedNoteTree from "@/components/layout/NotePage/SharedNoteTree"; interface NoteExplorerProps { @@ -249,12 +249,12 @@ export default function NoteExplorer({ <> {!open && ( )} @@ -265,37 +265,50 @@ export default function NoteExplorer({ flex flex-col w-full max-w-xs h-[calc(100vh-6rem)] - bg-[#e0f2ff] - shadow-md + bg-gradient-to-b from-white via-slate-50 to-white + shadow-xl + border border-slate-200 rounded-r-2xl overflow-visible z-40 - transition-transform + transition-all duration-300 relative + backdrop-blur-sm " > -
- - 내 노트 - + {/* 헤더 */} +
+
+
+ +
+
+ + 내 노트 + +
+
+
+
{showAddMenu && (
-
+ {/* 콘텐츠 영역 */} +
{root ? ( - router.push(`/doc/${noteId}`)} - /> +
+ router.push(`/doc/${noteId}`)} + /> +
) : ( - <>로딩중... +
+
+
+ +
+

+ 로딩 중... +

+
+
)} -
-
- + + {/* 공유된 노트 섹션 */} +
+
+ + + 공유된 노트 + +
+ +
+ + {/* 모달들 */} {showNoteModal && root && ( Date: Wed, 6 Aug 2025 00:29:03 +0900 Subject: [PATCH 105/140] =?UTF-8?q?design:=20=EB=85=B8=ED=8A=B8/=ED=8F=B4?= =?UTF-8?q?=EB=8D=94=20=ED=8E=B8=EC=A7=91=20=EB=AA=A8=EB=8B=AC=20=EB=94=94?= =?UTF-8?q?=EC=9E=90=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 --- .../layout/NotePage/FolderEditModal.tsx | 272 ++++++++++++------ .../layout/NotePage/NoteEditModal.tsx | 179 ++++++++---- 2 files changed, 319 insertions(+), 132 deletions(-) diff --git a/src/components/layout/NotePage/FolderEditModal.tsx b/src/components/layout/NotePage/FolderEditModal.tsx index 316ea6a..2c3ab0e 100644 --- a/src/components/layout/NotePage/FolderEditModal.tsx +++ b/src/components/layout/NotePage/FolderEditModal.tsx @@ -1,7 +1,17 @@ "use client"; -import { MoaFile } from "@/types/file"; +import type { MoaFile } from "@/types/file"; import React, { useEffect, useState } from "react"; +import { + X, + FolderOpen, + FileText, + Save, + Trash2, + AlertTriangle, +} from "lucide-react"; + +import Portal from "@/components/common/Portal"; interface Props { root: MoaFile; @@ -96,6 +106,7 @@ export default function FolderEditModal({ const [folderName, setFolderName] = useState(""); const [parentId, setParentId] = useState(null); const [selectedNotes, setSelectedNotes] = useState([]); + const [showDeleteConfirm, setShowDeleteConfirm] = useState(false); // 부모 ID 찾고, Selected Notes 에 children 추가하고, folder name에 이름 바꾸기 @@ -118,99 +129,192 @@ export default function FolderEditModal({ const notes = getNoteList(root); + const handleDelete = () => { + onDelete(folderId); + setShowDeleteConfirm(false); + }; + return ( -
-
-

폴더 수정

- - {/* 폴더 이름 */} - - setFolderName(e.target.value)} - /> - - {/* 폴더 위치 */} - - - - {/* 폴더에 포함된 노트 */} - -
- {notes.length === 0 && ( -
노트가 없습니다.
- )} - {notes.map((note) => ( -