From b02e9cb0ce900acb32497908aa7b792d72b37de6 Mon Sep 17 00:00:00 2001 From: vidane Date: Sat, 2 May 2026 18:03:49 -0400 Subject: [PATCH] Add src/components/FilterPanel.tsx --- src/components/FilterPanel.tsx | 112 +++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 src/components/FilterPanel.tsx diff --git a/src/components/FilterPanel.tsx b/src/components/FilterPanel.tsx new file mode 100644 index 0000000..205a760 --- /dev/null +++ b/src/components/FilterPanel.tsx @@ -0,0 +1,112 @@ +'use client'; + +import { useApp } from './AppProvider'; + +export default function FilterPanel() { + const { + filterStatus, setFilterStatus, filterPriority, setFilterPriority, + filterDueBefore, setFilterDueBefore, filterDueAfter, setFilterDueAfter, + filterCompleted, setFilterCompleted, refreshTasks, + } = useApp(); + + const handleApply = () => { + refreshTasks(); + }; + + const handleReset = () => { + setFilterStatus(''); + setFilterPriority(''); + setFilterDueBefore(''); + setFilterDueAfter(''); + setFilterCompleted(''); + }; + + return ( +
+
+ {/* Status */} +
+ + +
+ + {/* Priority */} +
+ + +
+ + {/* Due before */} +
+ + setFilterDueBefore(e.target.value)} + className="bg-content border border-border rounded px-2 py-1.5 text-sm focus:outline-none focus:border-accent" + /> +
+ + {/* Due after */} +
+ + setFilterDueAfter(e.target.value)} + className="bg-content border border-border rounded px-2 py-1.5 text-sm focus:outline-none focus:border-accent" + /> +
+ + {/* Completed */} +
+ + +
+ + {/* Actions */} +
+ + +
+
+
+ ); +}