"use client"; import { useMemo } from "react"; import { useRouter, useSearchParams, usePathname } from "next/navigation"; // import { ChevronDownIcon } from "@/app/utils/svgs/chevronDownIcon"; const OPTIONS = [10, 20, 50, 100] as const; type Option = (typeof OPTIONS)[number]; export default function ItemsPerPageSelect() { const router = useRouter(); const searchParams = useSearchParams(); const pathname = usePathname(); const value: Option = useMemo(() => { const raw = searchParams?.get("first"); const n = raw ? parseInt(raw, 10) : NaN; return (OPTIONS as readonly number[]).includes(n) ? (n as Option) : 20; }, [searchParams]); const onChange = (e: React.ChangeEvent) => { const next = parseInt(e.target.value, 10) as Option; const params = new URLSearchParams(searchParams?.toString() || ""); params.set("first", String(next)); // reset pagination cursor when page size changes params.delete("after"); const href = `${pathname}?${params.toString()}`; router.push(href, { scroll: false }); }; return ( ); }