From 1efc43475ca045f443bdb46ee527a3ad9d62a950 Mon Sep 17 00:00:00 2001 From: jjangminii Date: Thu, 19 Feb 2026 00:03:04 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=EA=B4=80=EC=8B=AC=20=EC=A7=81?= =?UTF-8?q?=EB=AC=B4=20=ED=95=80=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=B0=8F?= =?UTF-8?q?=20=EB=9D=BC=EC=9A=B0=ED=8C=85=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/client/src/pages/jobPins/JobPins.tsx | 5 +++++ apps/client/src/routes/router.tsx | 5 +++++ apps/client/src/routes/routesConfig.ts | 4 ++++ 3 files changed, 14 insertions(+) create mode 100644 apps/client/src/pages/jobPins/JobPins.tsx diff --git a/apps/client/src/pages/jobPins/JobPins.tsx b/apps/client/src/pages/jobPins/JobPins.tsx new file mode 100644 index 00000000..b6ff90be --- /dev/null +++ b/apps/client/src/pages/jobPins/JobPins.tsx @@ -0,0 +1,5 @@ +const JobPins = () => { + return
관심 직무 핀 페이지
; +}; + +export default JobPins; diff --git a/apps/client/src/routes/router.tsx b/apps/client/src/routes/router.tsx index 26955bd1..e1fac835 100644 --- a/apps/client/src/routes/router.tsx +++ b/apps/client/src/routes/router.tsx @@ -1,4 +1,5 @@ import Category from '@pages/category/Category'; +import JobPins from '@pages/jobPins/JobPins'; import Level from '@pages/level/Level'; import Login from '@pages/login/Login'; import MyBookmark from '@pages/myBookmark/MyBookmark'; @@ -52,6 +53,10 @@ export const router = createBrowserRouter([ path: ROUTES_CONFIG.termsOfService.path, element: , }, + { + path: ROUTES_CONFIG.jobPins.path, + element: , + }, ], }, ]); diff --git a/apps/client/src/routes/routesConfig.ts b/apps/client/src/routes/routesConfig.ts index 1c2b18d5..91566dcf 100644 --- a/apps/client/src/routes/routesConfig.ts +++ b/apps/client/src/routes/routesConfig.ts @@ -35,4 +35,8 @@ export const ROUTES_CONFIG = { title: '이용약관', path: '/terms', }, + jobPins: { + title: '관심 직무 핀', + path: '/job-pins', + }, }; From e0f5395dcb697c5c22997725eb2c87c565f76c50 Mon Sep 17 00:00:00 2001 From: jjangminii Date: Thu, 19 Feb 2026 00:28:57 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=EC=82=AC=EC=9D=B4=EB=93=9C?= =?UTF-8?q?=EB=B0=94=EC=97=90=20'=EA=B4=80=EC=8B=AC=20=EC=A7=81=EB=AC=B4?= =?UTF-8?q?=20=ED=95=80'=20=EB=A9=94=EB=89=B4=20=EC=B6=94=EA=B0=80=20?= =?UTF-8?q?=EB=B0=8F=20=EB=9D=BC=EC=9A=B0=ED=8C=85=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/shared/components/sidebar/Sidebar.tsx | 10 +++++++ apps/client/src/shared/hooks/useSidebarNav.ts | 30 ++++++++++++++----- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/apps/client/src/shared/components/sidebar/Sidebar.tsx b/apps/client/src/shared/components/sidebar/Sidebar.tsx index a99de3bf..a794550b 100644 --- a/apps/client/src/shared/components/sidebar/Sidebar.tsx +++ b/apps/client/src/shared/components/sidebar/Sidebar.tsx @@ -54,6 +54,7 @@ export function Sidebar() { goBookmarks, selectCategory, goLevel, + goJobPins, setSelectedCategoryId, setActiveTab, } = useSidebarNav(); @@ -164,6 +165,15 @@ export function Sidebar() { {/* 메뉴 영역 */}
+ { + closeMenu(); + goJobPins(); + }} + /> { const path = location.pathname; - if (path.startsWith('/my-bookmarks')) { + if (path.startsWith(ROUTES_CONFIG.myBookmarks.path)) { setActiveTab('mybookmark'); const id = searchParams.get('id'); @@ -25,32 +26,38 @@ export function useSidebarNav() { } else { setSelectedCategoryId(null); } - } else if (path === '/' || path.startsWith('/remind')) { + } else if ( + path === ROUTES_CONFIG.remind.path || + path.startsWith('/remind') + ) { setActiveTab('remind'); setSelectedCategoryId(null); - } else if (path.startsWith('/level')) { + } else if (path.startsWith(ROUTES_CONFIG.level.path)) { setActiveTab('level'); setSelectedCategoryId(null); + } else if (path.startsWith(ROUTES_CONFIG.jobPins.path)) { + setActiveTab('job-pins'); + setSelectedCategoryId(null); } }, [location.pathname, searchParams]); const goRemind = useCallback(() => { setActiveTab('remind'); setSelectedCategoryId(null); - navigate('/'); + navigate(ROUTES_CONFIG.remind.path); }, [navigate]); const goBookmarks = useCallback(() => { setActiveTab('mybookmark'); setSelectedCategoryId(null); - navigate('/my-bookmarks'); + navigate(ROUTES_CONFIG.myBookmarks.path); }, [navigate]); const selectCategory = useCallback( (id: number, name: string) => { setActiveTab('mybookmark'); setSelectedCategoryId(id); - navigate(`/my-bookmarks?id=${id}&category=${name}`); + navigate(`${ROUTES_CONFIG.myBookmarks.path}?id=${id}&category=${name}`); }, [navigate] ); @@ -58,7 +65,13 @@ export function useSidebarNav() { const goLevel = useCallback(() => { setActiveTab('level'); setSelectedCategoryId(null); - navigate('/level'); + navigate(ROUTES_CONFIG.level.path); + }, [navigate]); + + const goJobPins = useCallback(() => { + setActiveTab('job-pins'); + setSelectedCategoryId(null); + navigate(ROUTES_CONFIG.jobPins.path); }, [navigate]); return { @@ -68,6 +81,7 @@ export function useSidebarNav() { goBookmarks, selectCategory, goLevel, + goJobPins, setSelectedCategoryId, setActiveTab, }; From 7fca09368e352cb28cc4e8affd935cbee67877b8 Mon Sep 17 00:00:00 2001 From: jjangminii Date: Thu, 19 Feb 2026 00:40:21 +0900 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20'=EA=B4=80=EC=8B=AC=20=EC=A7=81?= =?UTF-8?q?=EB=AC=B4=20=ED=95=80'=20=EC=95=84=EC=9D=B4=EC=BD=98=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EB=B0=8F=20=EC=82=AC=EC=9D=B4=EB=93=9C?= =?UTF-8?q?=EB=B0=94=EC=97=90=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/client/src/shared/components/sidebar/SideItem.tsx | 1 + apps/client/src/shared/components/sidebar/Sidebar.tsx | 2 +- .../src/shared/components/sidebar/types/IconTokenType.ts | 2 +- packages/design-system/src/icons/iconNames.ts | 3 +++ packages/design-system/src/icons/source/ic_pin.svg | 1 + packages/design-system/src/icons/source/ic_pin_active.svg | 1 + packages/design-system/src/icons/source/ic_pin_disable.svg | 1 + 7 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 packages/design-system/src/icons/source/ic_pin.svg create mode 100644 packages/design-system/src/icons/source/ic_pin_active.svg create mode 100644 packages/design-system/src/icons/source/ic_pin_disable.svg diff --git a/apps/client/src/shared/components/sidebar/SideItem.tsx b/apps/client/src/shared/components/sidebar/SideItem.tsx index 6db49b9d..cd27430b 100644 --- a/apps/client/src/shared/components/sidebar/SideItem.tsx +++ b/apps/client/src/shared/components/sidebar/SideItem.tsx @@ -5,6 +5,7 @@ import { IconToken } from './types/IconTokenType'; const ICON_MAP: Record = { clock: { on: 'ic_clock_active', off: 'ic_clock_disable' }, bookmark: { on: 'ic_bookmark_active', off: 'ic_bookmark_disable' }, + pin: { on: 'ic_pin_active', off: 'ic_pin_disable' }, } as const; interface SideItemProps { diff --git a/apps/client/src/shared/components/sidebar/Sidebar.tsx b/apps/client/src/shared/components/sidebar/Sidebar.tsx index a794550b..8a6807a6 100644 --- a/apps/client/src/shared/components/sidebar/Sidebar.tsx +++ b/apps/client/src/shared/components/sidebar/Sidebar.tsx @@ -166,7 +166,7 @@ export function Sidebar() { {/* 메뉴 영역 */}
{ diff --git a/apps/client/src/shared/components/sidebar/types/IconTokenType.ts b/apps/client/src/shared/components/sidebar/types/IconTokenType.ts index aab0fc75..705af978 100644 --- a/apps/client/src/shared/components/sidebar/types/IconTokenType.ts +++ b/apps/client/src/shared/components/sidebar/types/IconTokenType.ts @@ -1 +1 @@ -export type IconToken = 'clock' | 'bookmark'; +export type IconToken = 'clock' | 'bookmark' | 'pin'; diff --git a/packages/design-system/src/icons/iconNames.ts b/packages/design-system/src/icons/iconNames.ts index 5543bebe..894a3353 100644 --- a/packages/design-system/src/icons/iconNames.ts +++ b/packages/design-system/src/icons/iconNames.ts @@ -18,6 +18,9 @@ export const iconNames = [ 'ic_details_disable', 'ic_extension', 'ic_info', + 'ic_pin', + 'ic_pin_active', + 'ic_pin_disable', 'ic_plus', 'instagram', 'logo', diff --git a/packages/design-system/src/icons/source/ic_pin.svg b/packages/design-system/src/icons/source/ic_pin.svg new file mode 100644 index 00000000..39704489 --- /dev/null +++ b/packages/design-system/src/icons/source/ic_pin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/design-system/src/icons/source/ic_pin_active.svg b/packages/design-system/src/icons/source/ic_pin_active.svg new file mode 100644 index 00000000..ebe617d3 --- /dev/null +++ b/packages/design-system/src/icons/source/ic_pin_active.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/design-system/src/icons/source/ic_pin_disable.svg b/packages/design-system/src/icons/source/ic_pin_disable.svg new file mode 100644 index 00000000..603b3c4a --- /dev/null +++ b/packages/design-system/src/icons/source/ic_pin_disable.svg @@ -0,0 +1 @@ + \ No newline at end of file