+
+
+
+
+ {selected.size} of {options.length} selected
+
+
+
+ anySelected
+ ? onBulkToggle?.(
+ options.map((option) => option.value),
+
+ false,
+ )
+ : onBulkToggle?.(
+ list.map((option) => option.value),
+
+ true,
+ )
+ }
+ />
+
+
+
+ {list.map((option) => (
+
onToggle(option.value)}
+ />
+ ))}
+
+ {list.length === 0 && (
+ No matches
+ )}
+
+
+ );
+}
diff --git a/src/app/(protected)/workorders/_components/list/advanced-search/adv-section.tsx b/src/app/(protected)/workorders/_components/list/advanced-search/adv-section.tsx
new file mode 100644
index 00000000..f7195508
--- /dev/null
+++ b/src/app/(protected)/workorders/_components/list/advanced-search/adv-section.tsx
@@ -0,0 +1,19 @@
+import type { ElementType, ReactNode } from "react";
+
+import { CollapsibleSection } from "@/components/ui/collapsible-section";
+
+type AdvSectionProps = {
+ icon?: ElementType;
+
+ label: string;
+
+ count?: number;
+
+ defaultOpen?: boolean;
+
+ children: ReactNode;
+};
+
+export function AdvSection(props: AdvSectionProps) {
+ return