@php
/**
* Card de filtro elegante e padronizado para listagens CMS.
*
* Colapsável sob demanda: exibe busca + botões sempre visíveis;
* filtros avançados (período + campos customizados via slot) ficam
* ocultos por padrão, expandidos via toggle.
*
* Uso básico:
* @component('v2-cms::partials.filter-card', [
* 'searchPlaceholder' => 'Buscar por nome, e-mail ou CPF...',
* 'searchValue' => request('search', ''),
* 'action' => route('v2.module.cms.index'),
* 'showDateRange' => true,
* 'dateFrom' => request('date_from', ''),
* 'dateTo' => request('date_to', ''),
* ])
*
*
*
* @endcomponent
*
* @param string $searchPlaceholder Placeholder do campo de busca
* @param string|null $searchValue Valor atual da busca (default: request('search'))
* @param string|null $action Action do form (default: url()->current())
* @param string $method Método HTTP (default: GET)
* @param bool $showDateRange Exibe campos de período (date_from / date_to)
* @param string|null $dateFrom Valor do campo date_from
* @param string|null $dateTo Valor do campo date_to
* @param bool $expandByDefault Inicia expandido (mostrando filtros avançados)
* @param string|null $searchName Nome do campo de busca (default: 'search')
*/
$searchPlaceholder = $searchPlaceholder ?? 'Buscar por termo... (suporta regex)';
$searchValue = $searchValue ?? request('search', '');
$searchName = $searchName ?? 'search';
$action = $action ?? url()->current();
$method = $method ?? 'GET';
$showDateRange = $showDateRange ?? false;
$dateFrom = $dateFrom ?? request('date_from', '');
$dateTo = $dateTo ?? request('date_to', '');
$expandByDefault = $expandByDefault ?? false;
$hasAdvancedSlots = $slot !== '';
$hasAdvanced = $showDateRange || $hasAdvancedSlots;
// Determina se deve iniciar expandido
$hasActiveFilters = !empty($searchValue) || !empty($dateFrom) || !empty($dateTo);
$showExpanded = $expandByDefault || $hasActiveFilters;
$collapseId = 'filter-advanced-' . md5($action . $searchName);
@endphp
@push('js')
@endpush