From 86f4f3f08a2ab231cc3ea261ec9412447d6a68ea Mon Sep 17 00:00:00 2001 From: kimtaewoo <70637743+kim3360@users.noreply.github.com> Date: Fri, 27 Mar 2026 00:18:50 +0900 Subject: [PATCH 01/15] =?UTF-8?q?feat=20:=20Navbar=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=EC=BD=98=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/Alter-logo-text.png | Bin 0 -> 974 bytes src/assets/icons/bell.svg | 4 ++++ src/assets/icons/menu.svg | 5 +++++ src/shared/ui/common/Navbar.tsx | 14 +++++++++++--- 4 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 src/assets/Alter-logo-text.png create mode 100644 src/assets/icons/bell.svg create mode 100644 src/assets/icons/menu.svg diff --git a/src/assets/Alter-logo-text.png b/src/assets/Alter-logo-text.png new file mode 100644 index 0000000000000000000000000000000000000000..6b6e5e18f287c7d47c2c9df9d8bd6a593d2c566d GIT binary patch literal 974 zcmV;<12O!GP)X1^@s6k%(qJ00009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yP2m zZ=ibu@dUd!SUkbTH>>>F@dokDDi!wopa*H@1MSJ{>+7kM#NOWCSAFk3 z-g)S+p-Y09flcnAuRxbWtBjs!jyT70BPA(y|+Y5 zK*2KvZZUo5@Y}n)yJ%-;C(K$$>);(vXuo9!u)eLWt)0uLewr-WfW->Lhm(l104p6# zTGv8-CdClKI}CUXo;TI{tbeSLF=F>f3TElRS{vgOnox}CIh0~x939X~{=BZyC9Qac zcM_bp_;IW8YGn%a69p8r=$foq*yKAl4ly2!6Q+4|*R(DVgL8BX+!8G65v|5kC10J- z*vH5c@FDv>JUq0~v5D57zB{OJRHBaOI;{GOt|9})YfxyoNAjc@OR@wc?|v5$;+qU& zi-Ptom6paA4X?z++6a?IKU9itCnb`_yr9|fMh0I5{kWuCzr4J}30ME(p5ZBN$x~_y z@Dqd^TRp*Nv`r~@e@xhl@eY*&BQL8)W{2gE)~cu|6YCV>XP;58&Sb&JQ_AqG)eTmmW)(r1l)h-V4D2%VO&-ItmGT9C(wL3$Z&j2mywkw1 wQ&v71NF;6kja63Q1l(a<<2gd?NA9cPKhe?8ECD~o`2YX_07*qoM6N<$f&#(Dn*aa+ literal 0 HcmV?d00001 diff --git a/src/assets/icons/bell.svg b/src/assets/icons/bell.svg new file mode 100644 index 0000000..ccbc685 --- /dev/null +++ b/src/assets/icons/bell.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/menu.svg b/src/assets/icons/menu.svg new file mode 100644 index 0000000..caba79e --- /dev/null +++ b/src/assets/icons/menu.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/shared/ui/common/Navbar.tsx b/src/shared/ui/common/Navbar.tsx index 929c50e..28033cb 100644 --- a/src/shared/ui/common/Navbar.tsx +++ b/src/shared/ui/common/Navbar.tsx @@ -1,10 +1,18 @@ import AlterLogo from '@/assets/Alter-logo.png' +import AlterLogotext from '@/assets/Alter-logo-text.png' +import BellIcon from '@/assets/icons/bell.svg' +import MenuIcon from '@/assets/icons/menu.svg' export function Navbar() { return ( -
-
- logo +
+
+ logo + logo-text +
+
+ bell + menu
) From e8b1d1064d720e455a69a3e5ea27bc9b8d2f7e1e Mon Sep 17 00:00:00 2001 From: kimtaewoo <70637743+kim3360@users.noreply.github.com> Date: Fri, 27 Mar 2026 00:22:30 +0900 Subject: [PATCH 02/15] =?UTF-8?q?Revert=20"feat=20:=20Navbar=20=EC=95=84?= =?UTF-8?q?=EC=9D=B4=EC=BD=98=20=EC=B6=94=EA=B0=80"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 86f4f3f08a2ab231cc3ea261ec9412447d6a68ea. --- src/assets/Alter-logo-text.png | Bin 974 -> 0 bytes src/assets/icons/bell.svg | 4 ---- src/assets/icons/menu.svg | 5 ----- src/shared/ui/common/Navbar.tsx | 14 +++----------- 4 files changed, 3 insertions(+), 20 deletions(-) delete mode 100644 src/assets/Alter-logo-text.png delete mode 100644 src/assets/icons/bell.svg delete mode 100644 src/assets/icons/menu.svg diff --git a/src/assets/Alter-logo-text.png b/src/assets/Alter-logo-text.png deleted file mode 100644 index 6b6e5e18f287c7d47c2c9df9d8bd6a593d2c566d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 974 zcmV;<12O!GP)X1^@s6k%(qJ00009a7bBm000XU z000XU0RWnu7ytkO0drDELIAGL9O(c600d`2O+f$vv5yP2m zZ=ibu@dUd!SUkbTH>>>F@dokDDi!wopa*H@1MSJ{>+7kM#NOWCSAFk3 z-g)S+p-Y09flcnAuRxbWtBjs!jyT70BPA(y|+Y5 zK*2KvZZUo5@Y}n)yJ%-;C(K$$>);(vXuo9!u)eLWt)0uLewr-WfW->Lhm(l104p6# zTGv8-CdClKI}CUXo;TI{tbeSLF=F>f3TElRS{vgOnox}CIh0~x939X~{=BZyC9Qac zcM_bp_;IW8YGn%a69p8r=$foq*yKAl4ly2!6Q+4|*R(DVgL8BX+!8G65v|5kC10J- z*vH5c@FDv>JUq0~v5D57zB{OJRHBaOI;{GOt|9})YfxyoNAjc@OR@wc?|v5$;+qU& zi-Ptom6paA4X?z++6a?IKU9itCnb`_yr9|fMh0I5{kWuCzr4J}30ME(p5ZBN$x~_y z@Dqd^TRp*Nv`r~@e@xhl@eY*&BQL8)W{2gE)~cu|6YCV>XP;58&Sb&JQ_AqG)eTmmW)(r1l)h-V4D2%VO&-ItmGT9C(wL3$Z&j2mywkw1 wQ&v71NF;6kja63Q1l(a<<2gd?NA9cPKhe?8ECD~o`2YX_07*qoM6N<$f&#(Dn*aa+ diff --git a/src/assets/icons/bell.svg b/src/assets/icons/bell.svg deleted file mode 100644 index ccbc685..0000000 --- a/src/assets/icons/bell.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/assets/icons/menu.svg b/src/assets/icons/menu.svg deleted file mode 100644 index caba79e..0000000 --- a/src/assets/icons/menu.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/shared/ui/common/Navbar.tsx b/src/shared/ui/common/Navbar.tsx index 28033cb..929c50e 100644 --- a/src/shared/ui/common/Navbar.tsx +++ b/src/shared/ui/common/Navbar.tsx @@ -1,18 +1,10 @@ import AlterLogo from '@/assets/Alter-logo.png' -import AlterLogotext from '@/assets/Alter-logo-text.png' -import BellIcon from '@/assets/icons/bell.svg' -import MenuIcon from '@/assets/icons/menu.svg' export function Navbar() { return ( -
-
- logo - logo-text -
-
- bell - menu +
+
+ logo
) From 4c94bf1fbc59afc44935d3bd44e6437ef4145c05 Mon Sep 17 00:00:00 2001 From: kimtaewoo <70637743+kim3360@users.noreply.github.com> Date: Fri, 27 Mar 2026 02:58:38 +0900 Subject: [PATCH 03/15] =?UTF-8?q?feat=20:=20FloatingActionButton=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/assets/icons/Plus.svg | 3 +++ src/shared/ui/common/FloatingActionButton.tsx | 12 ++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 src/assets/icons/Plus.svg create mode 100644 src/shared/ui/common/FloatingActionButton.tsx diff --git a/src/assets/icons/Plus.svg b/src/assets/icons/Plus.svg new file mode 100644 index 0000000..4e5bb74 --- /dev/null +++ b/src/assets/icons/Plus.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/shared/ui/common/FloatingActionButton.tsx b/src/shared/ui/common/FloatingActionButton.tsx new file mode 100644 index 0000000..50897cb --- /dev/null +++ b/src/shared/ui/common/FloatingActionButton.tsx @@ -0,0 +1,12 @@ +import PlusIcon from '@/assets/icons/plus.svg' +export function FloatingActionButton() { + return ( + + ) +} From 26bfd3b0a587f221e7bdbc038e1ec61f075f8c92 Mon Sep 17 00:00:00 2001 From: kimtaewoo <70637743+kim3360@users.noreply.github.com> Date: Fri, 27 Mar 2026 03:00:43 +0900 Subject: [PATCH 04/15] =?UTF-8?q?feat=20:=20=EC=86=8C=EC=85=9C=20=EC=B9=B4?= =?UTF-8?q?=ED=85=8C=EA=B3=A0=EB=A6=AC=20=EC=BB=B4=ED=8F=AC=EB=84=8C?= =?UTF-8?q?=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/manager/social/SocialCategory.tsx | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/shared/ui/manager/social/SocialCategory.tsx diff --git a/src/shared/ui/manager/social/SocialCategory.tsx b/src/shared/ui/manager/social/SocialCategory.tsx new file mode 100644 index 0000000..28c2a41 --- /dev/null +++ b/src/shared/ui/manager/social/SocialCategory.tsx @@ -0,0 +1,19 @@ +interface SocialCategoryProps { + label: string + active?: boolean +} + +export function SocialCategory({ label, active = false }: SocialCategoryProps) { + return ( + + ) +} From 1e1c816cb2e2841082366d2ac897d05739d3770b Mon Sep 17 00:00:00 2001 From: kimtaewoo <70637743+kim3360@users.noreply.github.com> Date: Fri, 27 Mar 2026 03:36:49 +0900 Subject: [PATCH 05/15] =?UTF-8?q?feat=20:=20=EC=86=8C=EC=85=9C=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/App.tsx | 4 + src/assets/icons/chevron-left.svg | 3 + src/assets/icons/message.svg | 6 + src/assets/icons/search.svg | 4 + src/pages/manager/social/index.tsx | 142 ++++++++++++++++ src/shared/ui/manager/social/SocialList.tsx | 154 ++++++++++++++++++ src/shared/ui/manager/social/SocialSearch.tsx | 17 ++ 7 files changed, 330 insertions(+) create mode 100644 src/assets/icons/chevron-left.svg create mode 100644 src/assets/icons/message.svg create mode 100644 src/assets/icons/search.svg create mode 100644 src/pages/manager/social/index.tsx create mode 100644 src/shared/ui/manager/social/SocialList.tsx create mode 100644 src/shared/ui/manager/social/SocialSearch.tsx diff --git a/src/app/App.tsx b/src/app/App.tsx index 7e127de..e639026 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -1,5 +1,7 @@ import { BrowserRouter, Routes, Route, Navigate } from 'react-router-dom' import { ManagerHomePage } from '@/pages/manager/home' +import { SocialPage } from '@/pages/manager/social' +import { SocialChatPage } from '@/pages/manager/social-chat' import { LoginPage } from '@/pages/login' import { SignupPage } from '@/pages/signup' import { JobLookupMapPage } from '@/pages/user/job-lookup-map' @@ -21,6 +23,8 @@ export function App() { } /> } /> + } /> + } /> ) diff --git a/src/assets/icons/chevron-left.svg b/src/assets/icons/chevron-left.svg new file mode 100644 index 0000000..217ce76 --- /dev/null +++ b/src/assets/icons/chevron-left.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/message.svg b/src/assets/icons/message.svg new file mode 100644 index 0000000..dd20451 --- /dev/null +++ b/src/assets/icons/message.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/icons/search.svg b/src/assets/icons/search.svg new file mode 100644 index 0000000..0bb8b80 --- /dev/null +++ b/src/assets/icons/search.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/pages/manager/social/index.tsx b/src/pages/manager/social/index.tsx new file mode 100644 index 0000000..0e393b5 --- /dev/null +++ b/src/pages/manager/social/index.tsx @@ -0,0 +1,142 @@ +import { useState } from 'react' +import { useNavigate } from 'react-router-dom' +import { MobileLayout } from '@/shared/ui/MobileLayout' +import { Navbar } from '@/shared/ui/common/Navbar' +import { SocialCategory } from '@/shared/ui/manager/social/SocialCategory' +import { SwipeableSocialItem } from '@/shared/ui/manager/social/SocialList' +import { SocialSearch } from '@/shared/ui/manager/social/SocialSearch' +import { FloatingActionButton } from '@/shared/ui/common/FloatingActionButton' + +import SearchIcon from '@/assets/icons/search.svg' +import messageIcon from '@/assets/icons/message.svg' + +const SOCIAL_CATEGORY = [ + { + id: 1, + name: '전체', + }, + { + id: 2, + name: '알바1', + }, + { + id: 3, + name: '알바 2', + }, + { + id: 4, + name: '알바 3', + }, +] + +const SOCIAL_LIST = [ + { + id: 1, + name: '나영채', + message: '메시지 내용 최대 한 줄만 출력 됩니다.', + timeAgo: '1시간 전', + unread: true, + }, + { + id: 2, + name: '나영채', + message: '메시지 내용 최대 한 줄만 출력 됩니다.', + timeAgo: '1시간 전', + unread: false, + }, +] + +export function SocialPage() { + const [searchPopupOpen, setSearchPopupOpen] = useState(false) + const navigate = useNavigate() + + return ( + +
+ +
+ {SOCIAL_CATEGORY.map((item, index) => ( + + ))} +
+ +
+
+ {SOCIAL_LIST.map(item => ( + + ))} +
+
+ +
+
+ setSearchPopupOpen(true)} /> + + +
+
+
+ + {searchPopupOpen && ( +
setSearchPopupOpen(false)} + > +
e.stopPropagation()} + > + + +
+ {Array.from({ length: 5 }).map((_, index) => ( +
+
+
+
+ 나영채 +
+
+ 근무지 이름 +
+
+ +
+ ))} +
+
+
+ )} + + ) +} diff --git a/src/shared/ui/manager/social/SocialList.tsx b/src/shared/ui/manager/social/SocialList.tsx new file mode 100644 index 0000000..39a21d0 --- /dev/null +++ b/src/shared/ui/manager/social/SocialList.tsx @@ -0,0 +1,154 @@ +import { useRef, useState, type PointerEventHandler } from 'react' + +interface SocialProfileProps { + name: string + message: string + timeAgo: string + unread?: boolean +} + +interface SocialActionProps { + onRead?: () => void + onDelete?: () => void +} + +interface SwipeableSocialItemProps extends SocialProfileProps { + onRead?: () => void + onDelete?: () => void +} + +const ACTION_WIDTH = 160 +const OPEN_THRESHOLD = ACTION_WIDTH * 0.45 + +export function SocialList({ + name, + message, + timeAgo, + unread = false, +}: SocialProfileProps) { + return ( +
+
+ +
+
+
{name}
+
+ {timeAgo} +
+
+ +
+
+ {message} +
+
+
+
+
+ ) +} + +export function SwipeableSocialItem({ + name, + message, + timeAgo, + unread = false, + onRead, + onDelete, +}: SwipeableSocialItemProps) { + const [translateX, setTranslateX] = useState(0) + const [isDragging, setIsDragging] = useState(false) + + const pointerIdRef = useRef(null) + const startXRef = useRef(0) + const startTranslateXRef = useRef(0) + + const handlePointerDown: PointerEventHandler = event => { + pointerIdRef.current = event.pointerId + startXRef.current = event.clientX + startTranslateXRef.current = translateX + setIsDragging(true) + event.currentTarget.setPointerCapture(event.pointerId) + } + + const handlePointerMove: PointerEventHandler = event => { + if (!isDragging || pointerIdRef.current !== event.pointerId) return + + const deltaX = event.clientX - startXRef.current + const nextTranslateX = Math.min( + 0, + Math.max(-ACTION_WIDTH, startTranslateXRef.current + deltaX) + ) + setTranslateX(nextTranslateX) + } + + const finishDrag = (pointerId: number) => { + if (pointerIdRef.current !== pointerId) return + + pointerIdRef.current = null + setIsDragging(false) + setTranslateX(prev => (Math.abs(prev) > OPEN_THRESHOLD ? -ACTION_WIDTH : 0)) + } + + const handlePointerUp: PointerEventHandler = event => { + finishDrag(event.pointerId) + } + + const handlePointerCancel: PointerEventHandler = event => { + finishDrag(event.pointerId) + } + + return ( +
+
+ +
+ +
+
+ +
+
+
+ ) +} + +export function SocialAction({ onRead, onDelete }: SocialActionProps) { + return ( +
+ + +
+ ) +} diff --git a/src/shared/ui/manager/social/SocialSearch.tsx b/src/shared/ui/manager/social/SocialSearch.tsx new file mode 100644 index 0000000..940c6bc --- /dev/null +++ b/src/shared/ui/manager/social/SocialSearch.tsx @@ -0,0 +1,17 @@ +import SearchIcon from '@/assets/icons/search.svg' + +interface SocialSearchProps { + onClick?: () => void +} + +export function SocialSearch({ onClick }: SocialSearchProps) { + return ( + + ) +} From 2b513f622df92925ac7d5b1c8d3399d5fac1dba5 Mon Sep 17 00:00:00 2001 From: kimtaewoo <70637743+kim3360@users.noreply.github.com> Date: Fri, 27 Mar 2026 03:52:06 +0900 Subject: [PATCH 06/15] =?UTF-8?q?feat=20:=20=EC=86=8C=EC=85=9C=EC=B1=84?= =?UTF-8?q?=ED=8C=85=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/icons/camera.svg | 4 + src/assets/icons/image.svg | 5 + src/assets/icons/socialvector.svg | 3 + src/pages/manager/social-chat/index.tsx | 118 ++++++++++++++++++++++++ 4 files changed, 130 insertions(+) create mode 100644 src/assets/icons/camera.svg create mode 100644 src/assets/icons/image.svg create mode 100644 src/assets/icons/socialvector.svg create mode 100644 src/pages/manager/social-chat/index.tsx diff --git a/src/assets/icons/camera.svg b/src/assets/icons/camera.svg new file mode 100644 index 0000000..99b6f7b --- /dev/null +++ b/src/assets/icons/camera.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/icons/image.svg b/src/assets/icons/image.svg new file mode 100644 index 0000000..75c5e07 --- /dev/null +++ b/src/assets/icons/image.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/icons/socialvector.svg b/src/assets/icons/socialvector.svg new file mode 100644 index 0000000..7d3721c --- /dev/null +++ b/src/assets/icons/socialvector.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/pages/manager/social-chat/index.tsx b/src/pages/manager/social-chat/index.tsx new file mode 100644 index 0000000..3c892d2 --- /dev/null +++ b/src/pages/manager/social-chat/index.tsx @@ -0,0 +1,118 @@ +import { MobileLayout } from '@/shared/ui/MobileLayout' +import { useNavigate } from 'react-router-dom' +import { useState } from 'react' +import chevronLeftIcon from '@/assets/icons/chevron-left.svg' +import socialVectorIcon from '@/assets/icons/socialvector.svg' +import imageIcon from '@/assets/icons/image.svg' +import cameraIcon from '@/assets/icons/camera.svg' + +export function SocialChatPage() { + const navigate = useNavigate() + const [attachMenuOpen, setAttachMenuOpen] = useState(false) + + return ( + +
+
+ +

이수연

+
+ +
+
+
+ 안녕하세요! +
+ 오전 12:00 +
+ +
+
+ 안녕하세요! +
+
+ +
+ 오전 12:00 +
+ 혹시 저 대타 부탁드려도 될까요?? +
+
+
+ +
+
+ + + +
+
+ + {attachMenuOpen && ( +
+
+ + + +
+
+ )} +
+
+ ) +} From 227b3081d229354724c88c832d51fed810f06459 Mon Sep 17 00:00:00 2001 From: kimtaewoo <70637743+kim3360@users.noreply.github.com> Date: Sat, 28 Mar 2026 04:55:36 +0900 Subject: [PATCH 07/15] =?UTF-8?q?feat=20:=20=EC=95=8C=EB=B0=94=EC=B0=BE?= =?UTF-8?q?=EA=B8=B0=20=ED=95=98=EB=8B=A8=EB=B0=95=EC=8A=A4=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/shared/ui/manager/alba-find/Albabox.tsx | 177 ++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 src/shared/ui/manager/alba-find/Albabox.tsx diff --git a/src/shared/ui/manager/alba-find/Albabox.tsx b/src/shared/ui/manager/alba-find/Albabox.tsx new file mode 100644 index 0000000..d22d1e0 --- /dev/null +++ b/src/shared/ui/manager/alba-find/Albabox.tsx @@ -0,0 +1,177 @@ +export type AlbaboxProps = { + storeName: string + title: string + wageAmount: string + timeRange: string + workDays: string + distance: string + postedAgo: string + saved?: boolean + likeCount?: string + onBookmarkClick?: () => void + className?: string +} + +function ClockIcon({ className }: { className?: string }) { + return ( + + + + + ) +} + +function CalendarIcon({ className }: { className?: string }) { + return ( + + + + + + ) +} + +function BookmarkIcon({ filled }: { filled: boolean }) { + return ( + + + + ) +} + +function ThumbUpIcon({ className }: { className?: string }) { + return ( + + + + ) +} + +export function Albabox({ + storeName, + title, + wageAmount, + timeRange, + workDays, + distance, + postedAgo, + saved = false, + likeCount, + onBookmarkClick, + className = '', +}: AlbaboxProps) { + return ( +
+
+

+ {storeName} +

+

+ {distance} · {postedAgo} +

+
+ +
+

+ {title} +

+ +
+ +

+ 시급 {wageAmount} +

+ +
+
+ + + {timeRange} + + + + {workDays} + +
+ {likeCount != null && ( +
+ + {likeCount} +
+ )} +
+
+ ) +} From d93fbbe8fda35827cf95cf902e7b92ec316fe726 Mon Sep 17 00:00:00 2001 From: kimtaewoo <70637743+kim3360@users.noreply.github.com> Date: Sat, 28 Mar 2026 05:36:49 +0900 Subject: [PATCH 08/15] =?UTF-8?q?fix=20:=20=EB=9D=BC=EC=9A=B0=ED=8C=85=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/App.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/app/App.tsx b/src/app/App.tsx index 0c9e767..a17dc30 100644 --- a/src/app/App.tsx +++ b/src/app/App.tsx @@ -47,13 +47,12 @@ export function App() { /> - } /> - } /> - } /> }> } /> } /> } /> + } /> + } /> } /> From d47540c69783c3e7aac353d1e7d08f62cc045b3b Mon Sep 17 00:00:00 2001 From: kimtaewoo <70637743+kim3360@users.noreply.github.com> Date: Sun, 29 Mar 2026 03:36:51 +0900 Subject: [PATCH 09/15] =?UTF-8?q?feat=20:=20=EC=95=8C=EB=B0=94=EC=B0=BE?= =?UTF-8?q?=EA=B8=B0=20=ED=95=98=EB=8B=A8=EB=B0=95=EC=8A=A4=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/icons/alba/Bookmark.svg | 3 + src/assets/icons/alba/Calendar.svg | 6 + src/assets/icons/alba/Clock.svg | 11 ++ src/assets/icons/alba/Thumbsup.svg | 10 ++ src/assets/icons/message.svg | 6 - src/pages/manager/social/index.tsx | 4 +- src/shared/ui/manager/alba-find/Albabox.tsx | 138 ++++---------------- 7 files changed, 55 insertions(+), 123 deletions(-) create mode 100644 src/assets/icons/alba/Bookmark.svg create mode 100644 src/assets/icons/alba/Calendar.svg create mode 100644 src/assets/icons/alba/Clock.svg create mode 100644 src/assets/icons/alba/Thumbsup.svg delete mode 100644 src/assets/icons/message.svg diff --git a/src/assets/icons/alba/Bookmark.svg b/src/assets/icons/alba/Bookmark.svg new file mode 100644 index 0000000..51109d8 --- /dev/null +++ b/src/assets/icons/alba/Bookmark.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/assets/icons/alba/Calendar.svg b/src/assets/icons/alba/Calendar.svg new file mode 100644 index 0000000..8f5544e --- /dev/null +++ b/src/assets/icons/alba/Calendar.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/icons/alba/Clock.svg b/src/assets/icons/alba/Clock.svg new file mode 100644 index 0000000..a89f2a9 --- /dev/null +++ b/src/assets/icons/alba/Clock.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/src/assets/icons/alba/Thumbsup.svg b/src/assets/icons/alba/Thumbsup.svg new file mode 100644 index 0000000..152006f --- /dev/null +++ b/src/assets/icons/alba/Thumbsup.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/assets/icons/message.svg b/src/assets/icons/message.svg deleted file mode 100644 index dd20451..0000000 --- a/src/assets/icons/message.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/src/pages/manager/social/index.tsx b/src/pages/manager/social/index.tsx index 0e393b5..8fe1f01 100644 --- a/src/pages/manager/social/index.tsx +++ b/src/pages/manager/social/index.tsx @@ -8,7 +8,7 @@ import { SocialSearch } from '@/shared/ui/manager/social/SocialSearch' import { FloatingActionButton } from '@/shared/ui/common/FloatingActionButton' import SearchIcon from '@/assets/icons/search.svg' -import messageIcon from '@/assets/icons/message.svg' +import MessageIcon from '@/assets/icons/doc/Message.svg' const SOCIAL_CATEGORY = [ { @@ -129,7 +129,7 @@ export function SocialPage() { navigate('/manager/social/chat') }} > - message + message
))} diff --git a/src/shared/ui/manager/alba-find/Albabox.tsx b/src/shared/ui/manager/alba-find/Albabox.tsx index d22d1e0..7689099 100644 --- a/src/shared/ui/manager/alba-find/Albabox.tsx +++ b/src/shared/ui/manager/alba-find/Albabox.tsx @@ -1,3 +1,8 @@ +import BookmarkIcon from '@/assets/icons/alba/Bookmark.svg?react' +import CalendarIcon from '@/assets/icons/alba/Calendar.svg?react' +import ClockIcon from '@/assets/icons/alba/Clock.svg?react' +import ThumbUpIcon from '@/assets/icons/alba/Thumbsup.svg?react' + export type AlbaboxProps = { storeName: string title: string @@ -9,103 +14,6 @@ export type AlbaboxProps = { saved?: boolean likeCount?: string onBookmarkClick?: () => void - className?: string -} - -function ClockIcon({ className }: { className?: string }) { - return ( - - - - - ) -} - -function CalendarIcon({ className }: { className?: string }) { - return ( - - - - - - ) -} - -function BookmarkIcon({ filled }: { filled: boolean }) { - return ( - - - - ) -} - -function ThumbUpIcon({ className }: { className?: string }) { - return ( - - - - ) } export function Albabox({ @@ -119,17 +27,14 @@ export function Albabox({ saved = false, likeCount, onBookmarkClick, - className = '', }: AlbaboxProps) { return ( -
+
-

+

{storeName}

-

+

{distance} · {postedAgo}

@@ -141,34 +46,37 @@ export function Albabox({

- 시급 {wageAmount} + 시급{' '} + + {wageAmount} + + 원

-
-
+
+
- + {timeRange} - + {workDays}
{likeCount != null && ( -
- - {likeCount} +
+ + + {likeCount} +
)}
From bebdb24d8ba0d6c58a8c61d45816ba06eed9cec3 Mon Sep 17 00:00:00 2001 From: kimtaewoo <70637743+kim3360@users.noreply.github.com> Date: Sun, 29 Mar 2026 03:42:14 +0900 Subject: [PATCH 10/15] =?UTF-8?q?fix=20:=20=EC=86=8C=EC=85=9C=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EB=AA=A8=EB=B0=94=EC=9D=BC=EB=A0=88?= =?UTF-8?q?=EC=9D=B4=EC=95=84=EC=9B=83=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/manager/social-chat/index.tsx | 175 +++++++++++------------- src/pages/manager/social/index.tsx | 57 ++++---- 2 files changed, 110 insertions(+), 122 deletions(-) diff --git a/src/pages/manager/social-chat/index.tsx b/src/pages/manager/social-chat/index.tsx index 3c892d2..d179da2 100644 --- a/src/pages/manager/social-chat/index.tsx +++ b/src/pages/manager/social-chat/index.tsx @@ -1,4 +1,3 @@ -import { MobileLayout } from '@/shared/ui/MobileLayout' import { useNavigate } from 'react-router-dom' import { useState } from 'react' import chevronLeftIcon from '@/assets/icons/chevron-left.svg' @@ -11,108 +10,100 @@ export function SocialChatPage() { const [attachMenuOpen, setAttachMenuOpen] = useState(false) return ( - -
-
- -

이수연

-
+
+
+ +

이수연

+
-
-
-
- 안녕하세요! -
- 오전 12:00 +
+
+
+ 안녕하세요!
+ 오전 12:00 +
-
-
- 안녕하세요! -
+
+
+ 안녕하세요!
+
-
- 오전 12:00 -
- 혹시 저 대타 부탁드려도 될까요?? -
+
+ 오전 12:00 +
+ 혹시 저 대타 부탁드려도 될까요??
-
+
+
-
-
- - +
+ + + -
+
+
- {attachMenuOpen && ( -
-
- + {attachMenuOpen && ( +
+
+ - -
+
- )} -
- +
+ )} +
) } diff --git a/src/pages/manager/social/index.tsx b/src/pages/manager/social/index.tsx index 8fe1f01..4552431 100644 --- a/src/pages/manager/social/index.tsx +++ b/src/pages/manager/social/index.tsx @@ -1,6 +1,5 @@ import { useState } from 'react' import { useNavigate } from 'react-router-dom' -import { MobileLayout } from '@/shared/ui/MobileLayout' import { Navbar } from '@/shared/ui/common/Navbar' import { SocialCategory } from '@/shared/ui/manager/social/SocialCategory' import { SwipeableSocialItem } from '@/shared/ui/manager/social/SocialList' @@ -51,39 +50,37 @@ export function SocialPage() { const navigate = useNavigate() return ( - -
- -
- {SOCIAL_CATEGORY.map((item, index) => ( - + +
+ {SOCIAL_CATEGORY.map((item, index) => ( + + ))} +
+ +
+
+ {SOCIAL_LIST.map(item => ( + ))} -
+ + -
-
- {SOCIAL_LIST.map(item => ( - - ))} -
-
+
+
+ setSearchPopupOpen(true)} /> -
-
- setSearchPopupOpen(true)} /> - - -
+
@@ -137,6 +134,6 @@ export function SocialPage() {
)} -
+
) } From a9a371474d878a42cda584dc6e980343d8e5e070 Mon Sep 17 00:00:00 2001 From: kimtaewoo <70637743+kim3360@users.noreply.github.com> Date: Sun, 29 Mar 2026 03:48:42 +0900 Subject: [PATCH 11/15] =?UTF-8?q?feat=20:=20=EC=86=8C=EC=85=9C&=EC=95=8C?= =?UTF-8?q?=EB=B0=94=EC=B0=BE=EA=B8=B0=20=EC=8A=A4=ED=86=A0=EB=A6=AC?= =?UTF-8?q?=EB=B6=81=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- storybook/stories/Albabox.stories.tsx | 62 ++++++++++++++++++++ storybook/stories/SocialCategory.stories.tsx | 30 ++++++++++ storybook/stories/SocialList.stories.tsx | 55 +++++++++++++++++ 3 files changed, 147 insertions(+) create mode 100644 storybook/stories/Albabox.stories.tsx create mode 100644 storybook/stories/SocialCategory.stories.tsx create mode 100644 storybook/stories/SocialList.stories.tsx diff --git a/storybook/stories/Albabox.stories.tsx b/storybook/stories/Albabox.stories.tsx new file mode 100644 index 0000000..369cbc4 --- /dev/null +++ b/storybook/stories/Albabox.stories.tsx @@ -0,0 +1,62 @@ +import type { Meta, StoryObj } from '@storybook/react-vite' +import React from 'react' + +import { Albabox } from '../../src/shared/ui/manager/alba-find/Albabox' + +const meta = { + title: 'shared/ui/alba-find/Albabox', + component: Albabox, + parameters: { layout: 'centered' }, + tags: ['autodocs'], + decorators: [ + Story => ( +
+ +
+ ), + ], + argTypes: { + saved: { control: 'boolean' }, + onBookmarkClick: { action: 'bookmark' }, + }, +} satisfies Meta + +export default meta +type Story = StoryObj + +const baseArgs = { + storeName: '스타벅스 강남역점', + title: '주말 오전 카페 알바 모집 (경력 무관)', + wageAmount: '12,000', + timeRange: '09:00–15:00', + workDays: '토·일', + distance: '도보 5분', + postedAgo: '2시간 전', +} + +export const Default: Story = { + args: { + ...baseArgs, + saved: false, + likeCount: '24', + }, +} + +export const Saved: Story = { + args: { + ...baseArgs, + saved: true, + likeCount: '24', + }, +} + +export const WithoutLikeCount: Story = { + args: { + ...baseArgs, + saved: false, + likeCount: undefined, + }, +} diff --git a/storybook/stories/SocialCategory.stories.tsx b/storybook/stories/SocialCategory.stories.tsx new file mode 100644 index 0000000..3f0f1d8 --- /dev/null +++ b/storybook/stories/SocialCategory.stories.tsx @@ -0,0 +1,30 @@ +import type { Meta, StoryObj } from '@storybook/react-vite' + +import { SocialCategory } from '../../src/shared/ui/manager/social/SocialCategory' + +const meta = { + title: 'shared/ui/social/SocialCategory', + component: SocialCategory, + parameters: { layout: 'centered' }, + tags: ['autodocs'], + argTypes: { + active: { control: 'boolean' }, + }, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + label: '전체', + active: false, + }, +} + +export const Active: Story = { + args: { + label: '전체', + active: true, + }, +} diff --git a/storybook/stories/SocialList.stories.tsx b/storybook/stories/SocialList.stories.tsx new file mode 100644 index 0000000..ed922e4 --- /dev/null +++ b/storybook/stories/SocialList.stories.tsx @@ -0,0 +1,55 @@ +import type { Meta, StoryObj } from '@storybook/react-vite' +import React from 'react' + +import { SocialList } from '../../src/shared/ui/manager/social/SocialList' + +const meta = { + title: 'shared/ui/social/SocialList', + component: SocialList, + parameters: { layout: 'centered' }, + tags: ['autodocs'], + decorators: [ + Story => ( +
+ +
+ ), + ], + argTypes: { + unread: { control: 'boolean' }, + }, +} satisfies Meta + +export default meta +type Story = StoryObj + +export const Default: Story = { + args: { + name: '홍길동', + message: '오늘 스케줄 확인 부탁드려요.', + timeAgo: '5분 전', + unread: false, + }, +} + +export const Unread: Story = { + args: { + name: '김철수', + message: '내일 대타 가능하신가요?', + timeAgo: '1시간 전', + unread: true, + }, +} + +export const LongMessage: Story = { + args: { + name: '매장 매니저', + message: + '이번 주 금요일 야간 근무 인원이 부족해서 혹시 가능하시면 연락 주시면 감사하겠습니다.', + timeAgo: '어제', + unread: true, + }, +} From dd88583b514b62eb62e7e464913ad9da289103d0 Mon Sep 17 00:00:00 2001 From: kimtaewoo <70637743+kim3360@users.noreply.github.com> Date: Fri, 3 Apr 2026 19:33:08 +0900 Subject: [PATCH 12/15] =?UTF-8?q?fix=20:=20=EC=86=8C=EC=85=9C=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=20=EB=84=93=EC=9D=B4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/manager/social/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/manager/social/index.tsx b/src/pages/manager/social/index.tsx index 4552431..1200820 100644 --- a/src/pages/manager/social/index.tsx +++ b/src/pages/manager/social/index.tsx @@ -90,7 +90,7 @@ export function SocialPage() { onClick={() => setSearchPopupOpen(false)} >
e.stopPropagation()} > + +
+ +
+ {FILTER_ITEMS.map(({ id, label }) => { + const active = activeFilter === id + return ( + + ) + })} +
+
+ ) +} diff --git a/src/shared/ui/manager/alba-find/AlbaFindList.tsx b/src/shared/ui/manager/alba-find/AlbaFindList.tsx new file mode 100644 index 0000000..c602a20 --- /dev/null +++ b/src/shared/ui/manager/alba-find/AlbaFindList.tsx @@ -0,0 +1,16 @@ +import type { ReactNode } from 'react' + +type AlbaFindListProps = { + children: ReactNode + className?: string +} + +export function AlbaFindList({ children, className }: AlbaFindListProps) { + return ( +
+ {children} +
+ ) +} diff --git a/src/shared/ui/manager/alba-find/Albabox.tsx b/src/shared/ui/manager/alba-find/Albabox.tsx deleted file mode 100644 index 7689099..0000000 --- a/src/shared/ui/manager/alba-find/Albabox.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import BookmarkIcon from '@/assets/icons/alba/Bookmark.svg?react' -import CalendarIcon from '@/assets/icons/alba/Calendar.svg?react' -import ClockIcon from '@/assets/icons/alba/Clock.svg?react' -import ThumbUpIcon from '@/assets/icons/alba/Thumbsup.svg?react' - -export type AlbaboxProps = { - storeName: string - title: string - wageAmount: string - timeRange: string - workDays: string - distance: string - postedAgo: string - saved?: boolean - likeCount?: string - onBookmarkClick?: () => void -} - -export function Albabox({ - storeName, - title, - wageAmount, - timeRange, - workDays, - distance, - postedAgo, - saved = false, - likeCount, - onBookmarkClick, -}: AlbaboxProps) { - return ( -
-
-

- {storeName} -

-

- {distance} · {postedAgo} -

-
- -
-

- {title} -

- -
- -

- 시급{' '} - - {wageAmount} - - 원 -

- -
-
- - - {timeRange} - - - - {workDays} - -
- {likeCount != null && ( -
- - - {likeCount} - -
- )} -
-
- ) -} From 34d446c4bd2239df43e17976642cdda9b9ab6292 Mon Sep 17 00:00:00 2001 From: Dohyeon Date: Sun, 5 Apr 2026 14:29:52 +0900 Subject: [PATCH 14/15] =?UTF-8?q?fix:=20=EB=B9=8C=EB=93=9C=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/shared/ui/manager/alba-find/Albabox.tsx | 68 +++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/shared/ui/manager/alba-find/Albabox.tsx diff --git a/src/shared/ui/manager/alba-find/Albabox.tsx b/src/shared/ui/manager/alba-find/Albabox.tsx new file mode 100644 index 0000000..a80d379 --- /dev/null +++ b/src/shared/ui/manager/alba-find/Albabox.tsx @@ -0,0 +1,68 @@ +import BookmarkIcon from '@/assets/icons/alba/Bookmark.svg?react' + +export type AlbaboxProps = { + storeName: string + title: string + wageAmount: string + timeRange: string + workDays: string + distance: string + postedAgo: string + saved: boolean + likeCount?: string + onBookmarkClick?: () => void +} + +export function Albabox({ + storeName, + title, + wageAmount, + timeRange, + workDays, + distance, + postedAgo, + saved, + likeCount, + onBookmarkClick, +}: AlbaboxProps) { + return ( +
+
+

{storeName}

+ +
+ +

+ {title} +

+ +

+ 시급 {wageAmount}원 +

+ +
+ {timeRange} + {workDays} + {distance} +
+ +
+ {postedAgo} + {likeCount != null && likeCount !== '' && ( + 좋아요 {likeCount} + )} +
+
+ ) +} From 4b01b0aa20cdba71aba6d98ba348963af53da89a Mon Sep 17 00:00:00 2001 From: Dohyeon Date: Sun, 5 Apr 2026 14:33:53 +0900 Subject: [PATCH 15/15] =?UTF-8?q?fix:=20svg=ED=8C=8C=EC=9D=BC=20=EC=9E=84?= =?UTF-8?q?=ED=8F=AC=ED=8A=B8=20=EA=B2=BD=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/shared/ui/common/FloatingActionButton.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/ui/common/FloatingActionButton.tsx b/src/shared/ui/common/FloatingActionButton.tsx index 50897cb..86de7fb 100644 --- a/src/shared/ui/common/FloatingActionButton.tsx +++ b/src/shared/ui/common/FloatingActionButton.tsx @@ -1,4 +1,4 @@ -import PlusIcon from '@/assets/icons/plus.svg' +import PlusIcon from '@/assets/icons/Plus.svg' export function FloatingActionButton() { return (