diff --git a/src/components/Directory/ContactsFilterPanel.jsx b/src/components/Directory/ContactsFilterPanel.jsx
new file mode 100644
index 00000000..1ec0e4a6
--- /dev/null
+++ b/src/components/Directory/ContactsFilterPanel.jsx
@@ -0,0 +1,94 @@
+import { zodResolver } from "@hookform/resolvers/zod";
+import React, { useState, useCallback, useEffect } from "react";
+import { FormProvider, useForm } from "react-hook-form";
+import { useLocation } from "react-router-dom";
+import moment from "moment";
+
+// replace these with your actual schema + defaults
+// import { contactsFilterSchema, defaultContactsFilterValues } from "./ContactsSchema";
+import { contactsFilterSchema,defaultContactsFilterValues } from "./contactsFilterSchema";
+import SelectMultiple from "../../components/common/SelectMultiple";
+
+const ContactsFilterPanel = ({ onApply, buckets = [], categories = [] }) => {
+ const [resetKey, setResetKey] = useState(0);
+
+ const methods = useForm({
+ resolver: zodResolver(contactsFilterSchema),
+ defaultValues: defaultContactsFilterValues,
+ });
+
+ const { handleSubmit, reset } = methods;
+
+ const handleClosePanel = useCallback(() => {
+ document.querySelector(".offcanvas.show .btn-close")?.click();
+ }, []);
+
+ const onSubmit = useCallback(
+ (formData) => {
+ onApply({
+ ...formData,
+ // Remove startDate/endDate handling since date picker is gone
+ });
+ handleClosePanel();
+ },
+ [onApply, handleClosePanel]
+ );
+
+ // ✅ Auto-close when navigating
+ const location = useLocation();
+ useEffect(() => {
+ handleClosePanel();
+ }, [location, handleClosePanel]);
+
+ const onClear = useCallback(() => {
+ reset(defaultContactsFilterValues);
+ setResetKey((prev) => prev + 1);
+ onApply(defaultContactsFilterValues);
+ }, [onApply, reset]);
+
+ return (
+
Created By
-Organization
-Filter by
- - {filteredBuckets.length === 0 && filteredCategories.length === 0 ? ( -Buckets
-Categories
-