import { useState, useCallback } from "react" import { ArrowDown, ArrowUp, ChevronsUpDown } from "lucide-react" export type SortDirection = "asc" | "desc" | null export function useTableSort(defaultSortBy: string = "", defaultSortDir: SortDirection = null) { const [sortBy, setSortBy] = useState(defaultSortBy) const [sortDir, setSortDir] = useState(defaultSortDir) const handleSort = useCallback((column: string) => { if (sortBy === column) { if (sortDir === "asc") setSortDir("desc") else if (sortDir === "desc") { setSortBy("") setSortDir(null) } else setSortDir("asc") } else { setSortBy(column) setSortDir("asc") } }, [sortBy, sortDir]) const appendSortParams = useCallback((params: URLSearchParams) => { if (sortBy && sortDir) { params.append("sort_by", sortBy) params.append("sort_dir", sortDir) } }, [sortBy, sortDir]) const SortIcon = ({ column }: { column: string }) => { if (sortBy !== column || !sortDir) { return } return sortDir === "asc" ? ( ) : ( ) } return { sortBy, sortDir, handleSort, appendSortParams, SortIcon } }