diff --git a/frontend/src/main-page/grants/filter-bar/FilterBar.tsx b/frontend/src/main-page/grants/filter-bar/FilterBar.tsx
index 729f6f2..eeab6f9 100644
--- a/frontend/src/main-page/grants/filter-bar/FilterBar.tsx
+++ b/frontend/src/main-page/grants/filter-bar/FilterBar.tsx
@@ -59,7 +59,7 @@ const FilterBar: React.FC = observer(() => {
to={item.linkTo ? item.linkTo : "#"}
>
diff --git a/frontend/src/main-page/grants/filter-bar/components/FilterCard.tsx b/frontend/src/main-page/grants/filter-bar/components/FilterCard.tsx
new file mode 100644
index 0000000..ea811ee
--- /dev/null
+++ b/frontend/src/main-page/grants/filter-bar/components/FilterCard.tsx
@@ -0,0 +1,113 @@
+import { useState } from "react";
+import Button from "../../../settings/components/Button";
+
+type SortDirection = "increasing" | "decreasing";
+
+interface FilterCardProps {
+ directionFirst?: boolean;
+ initialDirection?: SortDirection;
+ initialStartDate?: string;
+ initialEndDate?: string;
+ onClearAll?: () => void;
+ onDirectionChange?: (direction: SortDirection) => void;
+ onDateRangeChange?: (startDate: string, endDate: string) => void;
+}
+
+export default function FilterCard({
+ directionFirst = true, //if true, direction section is shown before date range section
+ initialDirection = "increasing", //default sort direction is increasing
+ initialStartDate = "", //default start date is empty string (no filter)
+ initialEndDate = "", //default end date is empty string (no filter)
+ onClearAll, //optional callback for when "Clear all" is clicked
+ onDirectionChange, //optional callback for when sort direction changes
+ onDateRangeChange, //optional callback for when date range changes
+}: FilterCardProps) {
+ const [direction, setDirection] = useState
(initialDirection);
+ const [startDate, setStartDate] = useState(initialStartDate);
+ const [endDate, setEndDate] = useState(initialEndDate);
+
+ const handleClearAll = () => {
+ setDirection("increasing");
+ setStartDate("");
+ setEndDate("");
+ onClearAll?.();
+ };
+
+ const directionSection = (
+
+
+ Direction
+
+
+
+
+
+ );
+
+ // date format: "YYYY-MM-DD"
+ const dateRangeSection = (
+
+ );
+
+ const sections = directionFirst
+ ? [directionSection, dateRangeSection]
+ : [dateRangeSection, directionSection];
+
+ return (
+
+ {sections}
+
+ );
+}