import { useCriteria } from "@/hooks/use-criteria";
import { Filter } from "@/components/filter/filter";
import type { QueryFilter } from "@/lib/filter-utils";
interface User {
id: string;
name: string;
email: string;
status: "active" | "inactive" | "pending";
age: number;
createdAt: Date;
}
// Define filterable fields
const userFields: QueryFilter[] = [
{
field: "name",
fieldLabel: "Name",
type: "string",
},
{
field: "email",
fieldLabel: "Email",
type: "string",
},
{
field: "status",
fieldLabel: "Status",
type: "string",
options: [
{ value: "active", label: "Active" },
{ value: "inactive", label: "Inactive" },
{ value: "pending", label: "Pending" },
],
},
{
field: "age",
fieldLabel: "Age",
type: "number",
},
{
field: "createdAt",
fieldLabel: "Created At",
type: "date",
},
];
function UserFilters() {
const { filters, addOrReplaceByIndex, removeFilter, clearFilters } =
useCriteria<User>();
return (
<Filter
fields={userFields}
filters={filters}
addOrReplaceByIndex={addOrReplaceByIndex}
removeFilter={removeFilter}
clearFilters={clearFilters}
/>
);
}