diff --git a/web/src/components/filter/ZoneMaskFilter.tsx b/web/src/components/filter/ZoneMaskFilter.tsx
new file mode 100644
index 000000000..071d9ece0
--- /dev/null
+++ b/web/src/components/filter/ZoneMaskFilter.tsx
@@ -0,0 +1,130 @@
+import { Button } from "../ui/button";
+import { FaFilter } from "react-icons/fa";
+import { isMobile } from "react-device-detect";
+import { Drawer, DrawerContent, DrawerTrigger } from "../ui/drawer";
+import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover";
+import { PolygonType } from "@/types/canvas";
+import { Label } from "../ui/label";
+import { Switch } from "../ui/switch";
+import { DropdownMenuSeparator } from "../ui/dropdown-menu";
+
+type ZoneMaskFilterButtonProps = {
+ selectedZoneMask?: PolygonType[];
+ updateZoneMaskFilter: (labels: PolygonType[] | undefined) => void;
+};
+export function ZoneMaskFilterButton({
+ selectedZoneMask,
+ updateZoneMaskFilter,
+}: ZoneMaskFilterButtonProps) {
+ const trigger = (
+
+ );
+ const content = (
+