interface TenantMessagesFiltersProps { status: string; sort: string; search: string; } function updateQuery(updates: Record) { const url = new URL(globalThis.location.href); for (const [key, value] of Object.entries(updates)) { if (!value) { url.searchParams.delete(key); } else { url.searchParams.set(key, value); } } url.searchParams.set("page", "1"); globalThis.location.href = url.pathname + url.search; } export default function TenantMessagesFilters( { status, sort, search }: TenantMessagesFiltersProps, ) { const handleStatusClick = (value: string) => (e: Event) => { e.preventDefault(); updateQuery({ status: value === "all" ? null : value }); }; const handleSortChange = (e: Event) => { const target = e.target as HTMLSelectElement; updateQuery({ sort: target.value }); }; const handleSearchSubmit = (e: Event) => { e.preventDefault(); const form = e.target as HTMLFormElement; const formData = new FormData(form); const query = (formData.get("q") || "").toString().trim(); updateQuery({ q: query.length > 0 ? query : null }); }; const buttonClass = (isActive: boolean) => `px-3 py-1 text-sm rounded-full transition-colors ${ isActive ? "bg-blue-600 text-white" : "bg-gray-200 text-gray-700 hover:bg-gray-300" }`; return (
Sort:
); }