Filters

Advanced filtering component with multiple field types and grouping.

Configuring your account...

Please wait while we prepare everything for you

Usage

'use client';

import { useCallback, useState } from 'react';
import { cn } from '@/lib/utils';
import { Button } from '@/components/ui/button';
import { createFilter, Filters, type Filter, type FilterFieldConfig } from '@/components/ui/filters';

export default function FiltersDemo() {
  const fields: FilterFieldConfig[] = [
    {
      group: 'Basic',
      fields: [
        {
          key: 'text',
          label: 'Text',
          type: 'text',
          icon: <Type />,
          placeholder: 'Search text...',
        },
        // ... more fields
      ],
    },
  ];

  const [filters, setFilters] = useState<Filter[]>([
    createFilter('priority', 'contains', ['low', 'medium', 'critical']),
  ]);

  const handleFiltersChange = useCallback((filters: Filter[]) => {
    setFilters(filters);
  }, []);

  return (
    <div className="flex items-start gap-2.5">
      <Filters filters={filters} fields={fields} variant="outline" onChange={handleFiltersChange} />
      {filters.length > 0 && (
        <Button variant="outline" onClick={() => setFilters([])}>
          Clear
        </Button>
      )}
    </div>
  );
}