+ {storeName} +
+{title}
+ ++ 시급 {wageAmount}원 +
+ ++ {savedAgoLabel} +
++ {title} +
++ {description} +
+{storeName}
+ 지역 정보를 불러오는 중… +
+ ) : isError ? ( ++ 지역 정보를 불러오지 못했습니다. +
+ ) : ( + regionOptions.map(option => ( ++ 최소 / 최대 시급 +
++ {storeName} +
++ 시급 {wageAmount}원 +
+ ++ {savedAgoLabel} +
++ 스크랩한 알바를 불러오지 못했습니다. +
+ ) : favorites.length === 0 ? ( ++ 스크랩한 알바가 없습니다. +
+ ) : ( +
공고 정보를 불러오는 중…
diff --git a/src/pages/user/job-lookup-map/index.tsx b/src/pages/user/job-lookup-map/index.tsx
index 8e3e02d0..7c0d97c7 100644
--- a/src/pages/user/job-lookup-map/index.tsx
+++ b/src/pages/user/job-lookup-map/index.tsx
@@ -2,26 +2,41 @@ import {
useCallback,
useEffect,
useLayoutEffect,
+ useMemo,
useRef,
useState,
type KeyboardEvent,
} from 'react'
import { generatePath, useNavigate } from 'react-router-dom'
import { animate, motion, useMotionValue } from 'framer-motion'
-import { AlbaFindCategoryBar } from '@/features/job-lookup-map/common/AlbaFindCategoryBar'
-import { ROUTES } from '@/shared/constants/routes'
-import type {
- AlbaFindFilterId,
- AlbaFindMode,
+import {
+ AlbaFindCategoryBar,
+ type AlbaFindCategoryBarRef,
} from '@/features/job-lookup-map/common/AlbaFindCategoryBar'
+import { AlbaFindFilteredEmptyState } from '@/features/job-lookup-map/common/AlbaFindFilteredEmptyState'
+import { ROUTES } from '@/shared/constants/routes'
+import type { AlbaFindMode } from '@/features/job-lookup-map/common/AlbaFindCategoryBar'
import { AlbaFindList } from '@/features/job-lookup-map/common/AlbaFindList'
import { Albabox } from '@/features/job-lookup-map/common/Albabox'
import { usePostings } from '@/features/job-lookup-map/hooks/usePosting'
+import { useToggleFavoritePosting } from '@/features/job-lookup-map/hooks/useToggleFavoritePosting'
import { usePostingMapMarkers } from '@/features/job-lookup-map/hooks/usePostingMapMarkers'
import { usePostingSearch } from '@/features/job-lookup-map/hooks/usePostingSearch'
import { moveMapToWorkspace } from '@/features/job-lookup-map/lib/moveMapToWorkspace'
import { pickSearchTargetPosting } from '@/features/job-lookup-map/lib/pickSearchTargetPosting'
import { postingToAlbaboxProps } from '@/features/job-lookup-map/lib/postingToAlbaboxProps'
+import {
+ EMPTY_REGION_SELECTION,
+ isRegionSelectionComplete,
+ type RegionSelection,
+} from '@/features/job-lookup-map/lib/regionOptions'
+import {
+ DEFAULT_SORT_VALUE,
+ EMPTY_SALARY_FILTER,
+ buildPostingsListFilters,
+ isListFilterApplied,
+ type SalaryFilterSelection,
+} from '@/features/job-lookup-map/lib/postingFilters'
import {
getNaverMaps,
type NaverMapInstance,
@@ -44,16 +59,41 @@ export function JobLookupMapPage() {
const sheetRef = useRef
+ 공고를 불러오는 중…
+
+ 공고를 불러오지 못했습니다.
+
+ 조건에 맞는 공고가 없습니다.
+