# `Cinder.FilterManager`
[🔗](https://github.com/sevenseacat/cinder/blob/v0.16.0/lib/cinder/filter_manager.ex#L1)

Coordinator for Cinder's modular filter system.

Acts as the main interface for filter operations while delegating
to individual filter type modules for specific implementations.

# `column`

```elixir
@type column() :: %{
  field: String.t(),
  label: String.t(),
  filterable: boolean(),
  filter_type: filter_type(),
  filter_options: keyword()
}
```

# `filter`

```elixir
@type filter() :: %{type: filter_type(), value: filter_value(), operator: atom()}
```

# `filter_type`

```elixir
@type filter_type() ::
  :text
  | :select
  | :multi_select
  | :multi_checkboxes
  | :date_range
  | :number_range
  | :boolean
  | :radio_group
  | :checkbox
```

# `filter_value`

```elixir
@type filter_value() ::
  String.t()
  | [String.t()]
  | %{from: String.t(), to: String.t()}
  | %{min: String.t(), max: String.t()}
```

# `filters`

```elixir
@type filters() :: %{required(String.t()) =&gt; filter()}
```

# `build_filter_values`

Builds filter values map for form inputs using modular filter system.

# `clear_all_filters`

Clears all filters from the filter state.

# `clear_filter`

Clears a specific filter from the filter state.

# `count_active_filters`

Counts the number of active filters.

# `extract_enum_options`

Extracts enum options from Ash resource attribute.

This function is public for testing purposes.

# `filter_input`

Renders an individual filter input by delegating to the appropriate filter module.

# `filter_label`

Renders a filter label with appropriate accessibility attributes based on filter type.

# `has_filter_value?`

Checks if a filter has a meaningful value using modular system.

# `infer_filter_config`

Infers filter configuration from Ash resource attribute definitions.

# `params_to_filters`

Transforms form values into structured filter objects using modular filter system.

# `process_filter_params`

Processes filter parameters from form submission using modular filter system.

# `process_filter_value`

Processes raw filter value using the appropriate filter module.

This function is public to enable comprehensive testing of custom filter processing.

# `render_filter_controls`

Renders filter controls for a list of columns.

## Parameters
- `columns` - List of column definitions
- `filters` - Current filter state map
- `theme` - Theme configuration
- `target` - LiveComponent target for events

## Returns
HEEx template for filter controls

# `validate_runtime_filters`

Validates all registered custom filters at application startup.

This function should be called during application initialization to ensure
all custom filters are properly implemented and available.

## Returns
:ok if all filters are valid, logs warnings for any issues

## Examples

    # In your application.ex start/2 function
    case Cinder.FilterManager.validate_runtime_filters() do
      :ok -> :ok
      {:error, _} -> :ok  # Continue startup but log issues
    end

---

*Consult [api-reference.md](api-reference.md) for complete listing*
