diff --git a/apps/web/components/filter.tsx b/apps/web/components/filter.tsx
deleted file mode 100644
index bed25decb..000000000
--- a/apps/web/components/filter.tsx
+++ /dev/null
@@ -1,265 +0,0 @@
-import { Fragment, useState } from "react";
-import {
- Dialog,
- Disclosure,
- Menu,
- Popover,
- Transition,
-} from "@headlessui/react";
-import { XMarkIcon } from "@heroicons/react/24/outline";
-import { ChevronDownIcon } from "@heroicons/react/20/solid";
-import { classNames } from "@documenso/lib";
-
-const sortOptions = [
- { name: "Most Popular", href: "#" },
- { name: "Best Rating", href: "#" },
- { name: "Newest", href: "#" },
-];
-const filters = [
- {
- id: "status",
- name: "Status",
- options: [
- { value: "draft", label: "Draft" },
- { value: "pending", label: "Pending" },
- { value: "comppleted", label: "Comppleted" },
- ],
- },
-];
-
-export default function Example() {
- const [open, setOpen] = useState(false);
-
- return (
-
- {/* Mobile filter dialog */}
-
-
-
-
-
-
-
- New Arrivals
-
-
- Thoughtfully designed objects for the workspace, home, and travel.
-
-
-
-
-
- Product filters
-
-
-
-
-
-
-
-
- {filters.map((section, sectionIdx) => (
-
- ))}
-
-
-
-
-
- );
-}
diff --git a/packages/ui/components/selectBox/SelectBox.tsx b/packages/ui/components/selectBox/SelectBox.tsx
new file mode 100644
index 000000000..91f5e3b13
--- /dev/null
+++ b/packages/ui/components/selectBox/SelectBox.tsx
@@ -0,0 +1,86 @@
+import { classNames } from "@documenso/lib";
+import { Listbox, Transition } from "@headlessui/react";
+import { CheckIcon, ChevronUpDownIcon } from "@heroicons/react/24/outline";
+import React, { Fragment, useState } from "react";
+
+export function SelectBox(props: any) {
+ return (
+
+
{
+ props.onChange(e);
+ }}
+ >
+ {({ open }) => (
+ <>
+
+ {props.label}
+
+
+
+ {props?.value?.label}
+
+
+
+
+
+
+
+ {props.options.map((option: any) => (
+
+ classNames(
+ active ? "text-white bg-neon" : "text-gray-900",
+ "relative cursor-default select-none py-2 pl-3 pr-9"
+ )
+ }
+ value={option}
+ >
+ {({ selected, active }) => (
+ <>
+
+ {option.label}
+
+
+ {option.value === props.value.value ? (
+
+
+
+ ) : null}
+ >
+ )}
+
+ ))}
+
+
+
+ >
+ )}
+
+
+ );
+}
diff --git a/packages/ui/components/selectBox/index.ts b/packages/ui/components/selectBox/index.ts
new file mode 100644
index 000000000..0b9a0cc57
--- /dev/null
+++ b/packages/ui/components/selectBox/index.ts
@@ -0,0 +1 @@
+export { SelectBox } from "./SelectBox";
diff --git a/packages/ui/index.ts b/packages/ui/index.ts
index 22983b785..24d9cef03 100644
--- a/packages/ui/index.ts
+++ b/packages/ui/index.ts
@@ -1,2 +1,3 @@
export { Button, IconButton } from "./components/button/index";
+export { SelectBox } from "./components/selectBox/index";
export { Breadcrumb } from "./components/breadcrumb/index";