"use client"; import type { RouterOutputs } from "@openstatus/api"; import { Button } from "@openstatus/ui/components/ui/button"; import type { Table } from "@tanstack/react-table"; import { CircleCheck, Globe, X } from "lucide-react"; import { DataTableFacetedFilter } from "@/components/ui/data-table/data-table-faceted-filter"; type Subscriber = RouterOutputs["pageSubscriber"]["list"][number]; const STATUS_OPTIONS = [ { label: "Active", value: "active" }, { label: "Pending", value: "pending" }, { label: "Unsubscribed", value: "unsubscribed" }, ]; const SOURCE_OPTIONS = [ { label: "Self-signup", value: "self_signup" }, { label: "Vendor", value: "vendor" }, { label: "Import", value: "import" }, ]; function filterAvailable( options: T[], facets: Map | undefined, ) { if (!facets) return []; return options.filter((option) => facets.has(option.value)); } export function SubscribersDataTableToolbar({ table, }: { table: Table; }) { const isFiltered = table.getState().columnFilters.length > 0; const statusFacets = table.getColumn("status")?.getFacetedUniqueValues(); const sourceFacets = table.getColumn("source")?.getFacetedUniqueValues(); const statusOptions = filterAvailable(STATUS_OPTIONS, statusFacets); const sourceOptions = filterAvailable(SOURCE_OPTIONS, sourceFacets); return (
{table.getColumn("status") && statusOptions.length > 0 && ( )} {table.getColumn("source") && sourceOptions.length > 0 && ( )} {isFiltered && ( )}
); }