-
-
- {title}
-
-
-
-
- {sheetOptions.map((option) => (
- onChange(option.value)}
- className={optionClassName}
- />
- ))}
-
-
+
+
-
-
+
+
+ {sheetOptions.map((option) => (
+ onChange(option.value)}
+ className={optionClassName}
+ />
+ ))}
-
+
+
+
+
+
+
+
);
}
@@ -120,7 +109,7 @@ function SortOptionButton({
);
diff --git a/app/routes/matching/brand/brand-content.tsx b/app/routes/matching/brand/brand-content.tsx
index 569b7da..2753a44 100644
--- a/app/routes/matching/brand/brand-content.tsx
+++ b/app/routes/matching/brand/brand-content.tsx
@@ -5,7 +5,7 @@ import FilterButton from "../../../components/common/FilterButton";
import BrandCard from "./components/BrandCard";
import { type BrandCategory } from "../../../data/brand";
import BrandFilterBar from "./components/BrandFilterBar";
-import FilterBottomSheet from "../../../components/common/FilterBottomSheet";
+import BottomSheet from "../../../components/common/BottomSheet";
import MatchingFilter from "../components/MatchingFilter";
import { useHideBottomTab } from "../../../hooks/useHideBottomTab";
import EmptyMatchState from "../../../components/common/EmptyMatchState";
@@ -22,6 +22,7 @@ export default function BrandContent() {
const [isFilterOpen, setIsFilterOpen] = useState(false);
const [filterOpenTab, setFilterOpenTab] = useState<"sort" | "filter">("sort");
const [sortOption, setSortOption] = useState("매칭률 순");
+ const [sortApplied, setSortApplied] = useState(false);
const [selectedTags, setSelectedTags] = useState
([]);
// 검색 상태
@@ -114,6 +115,7 @@ export default function BrandContent() {
const handleFilterApply = (sort: string, tags: string[]) => {
setSortOption(sort);
setSelectedTags(tags);
+ setSortApplied(true);
};
@@ -172,7 +174,7 @@ export default function BrandContent() {
{ setFilterOpenTab("sort"); setIsFilterOpen(true); }}
/>
{/* 필터 바텀시트 */}
- setIsFilterOpen(false)}>
+ setIsFilterOpen(false)}
+ height={500}
+ >
setIsFilterOpen(false)}
initialTab={filterOpenTab}
/>
-
+
);
}
diff --git a/app/routes/matching/campaign/campaign-content.tsx b/app/routes/matching/campaign/campaign-content.tsx
index 83c4d38..7542c28 100644
--- a/app/routes/matching/campaign/campaign-content.tsx
+++ b/app/routes/matching/campaign/campaign-content.tsx
@@ -6,7 +6,7 @@ import FilterButton from "../../../components/common/FilterButton";
import CampaignCard from "./components/CampaignCard";
import { type CampaignCategory } from "../../../data/campaign";
import CampaignFilterBar from "./components/CampaignFilterBar";
-import FilterBottomSheet from "../../../components/common/FilterBottomSheet";
+import BottomSheet from "../../../components/common/BottomSheet";
import MatchingFilter from "../components/MatchingFilter";
import { useHideBottomTab } from "../../../hooks/useHideBottomTab";
import EmptyMatchState from "../../../components/common/EmptyMatchState";
@@ -23,6 +23,7 @@ export default function CampaignContent() {
// 필터 상태
const [isFilterOpen, setIsFilterOpen] = useState(false);
const [sortOption, setSortOption] = useState("매칭률 순");
+ const [sortApplied, setSortApplied] = useState(false);
const [selectedTags, setSelectedTags] = useState([]);
// 검색 상태
@@ -129,6 +130,7 @@ export default function CampaignContent() {
const handleFilterApply = (sort: string, tags: string[]) => {
setSortOption(sort);
setSelectedTags(tags);
+ setSortApplied(true);
};
@@ -180,7 +182,7 @@ export default function CampaignContent() {
setIsFilterOpen(true)}
/>
{/* 필터 바텀시트 */}
- setIsFilterOpen(false)}>
+ setIsFilterOpen(false)}
+ height={500}
+ >
setIsFilterOpen(false)}
/>
-
+
);
}
diff --git a/app/routes/matching/components/MatchingFilter.tsx b/app/routes/matching/components/MatchingFilter.tsx
index 4cbf91b..4777116 100644
--- a/app/routes/matching/components/MatchingFilter.tsx
+++ b/app/routes/matching/components/MatchingFilter.tsx
@@ -1,6 +1,7 @@
import { useState } from "react";
import { cn } from "../../../lib/utils";
import FilterChip from "../../../components/common/FilterChip";
+import SelectChip from "../test/components/SelectChip";
import {
SORT_OPTIONS,
CAMPAIGN_SORT_OPTIONS,
@@ -74,34 +75,42 @@ export default function MatchingFilter({
};
return (
-
+
{/* 메인 탭 */}
-
-
-
+
+
+
+
+
{/* 컨텐츠 영역 */}
{mainTab === "정렬 필터" ? (
/* 정렬 필터 */
-
+
{sortOptions.map((option) => (