diff --git a/src/components/BridgeFilterSort.tsx b/src/components/BridgeFilterSort.tsx
index dd7a2d0..4215aeb 100644
--- a/src/components/BridgeFilterSort.tsx
+++ b/src/components/BridgeFilterSort.tsx
@@ -1,16 +1,53 @@
+import {
+ useBridgeFilterSortStore,
+ type BridgeSortBy,
+ type BridgeStatusFilter,
+} from "../stores/bridgeFilterSortStore";
+
interface BridgeFilterSortProps {
- statusFilter: string;
- onStatusFilterChange: (status: string) => void;
- sortBy: string;
- onSortByChange: (sortBy: string) => void;
+ /** Optional controlled status filter; defaults to the persisted store value. */
+ statusFilter?: string;
+ onStatusFilterChange?: (status: string) => void;
+ /** Optional controlled sort key; defaults to the persisted store value. */
+ sortBy?: string;
+ onSortByChange?: (sortBy: string) => void;
}
+/**
+ * Bridge status filter + sort controls.
+ * Selections are persisted to localStorage via `useBridgeFilterSortStore`
+ * unless fully controlled by the parent through props.
+ */
export default function BridgeFilterSort({
- statusFilter,
+ statusFilter: statusFilterProp,
onStatusFilterChange,
- sortBy,
+ sortBy: sortByProp,
onSortByChange,
-}: BridgeFilterSortProps) {
+}: BridgeFilterSortProps = {}) {
+ const storeStatusFilter = useBridgeFilterSortStore((s) => s.statusFilter);
+ const storeSortBy = useBridgeFilterSortStore((s) => s.sortBy);
+ const setStatusFilter = useBridgeFilterSortStore((s) => s.setStatusFilter);
+ const setSortBy = useBridgeFilterSortStore((s) => s.setSortBy);
+
+ const statusFilter = statusFilterProp ?? storeStatusFilter;
+ const sortBy = sortByProp ?? storeSortBy;
+
+ const handleStatusChange = (value: string) => {
+ if (onStatusFilterChange) {
+ onStatusFilterChange(value);
+ } else {
+ setStatusFilter(value as BridgeStatusFilter);
+ }
+ };
+
+ const handleSortChange = (value: string) => {
+ if (onSortByChange) {
+ onSortByChange(value);
+ } else {
+ setSortBy(value as BridgeSortBy);
+ }
+ };
+
return (
@@ -20,7 +57,7 @@ export default function BridgeFilterSort({