'use client'; import React, { useMemo } from 'react'; import { usePathname, useSearchParams } from 'next/navigation'; import clsx from 'clsx'; import { Button, Icon, Select, Link } from '@theme/components'; import { SortOption } from '@akinon/next/types'; import { useRouter, useLocalization } from '@akinon/next/hooks'; interface Props { totalCount: number; setMenuStatus: () => void; sortOptions: SortOption[]; } export const CategoryHeader = (props: Props) => { const { t } = useLocalization(); const PAGE_SIZE = [ { label: t('category.filters.48_products'), value: 48 }, { label: t('category.filters.96_products'), value: 96 } ]; const LAYOUTS = [ { icon: 'layout-2', value: 2 }, { icon: 'layout-3', value: 3 } ]; const { totalCount, setMenuStatus, sortOptions } = props; const router = useRouter(); const searchParams = useSearchParams(); const pathname = usePathname(); const pageSize = useMemo( () => searchParams.get('page_size') ?? 48, [searchParams] ); const layoutSize = useMemo( () => searchParams.get('layout') ?? 3, [searchParams] ); const handleSelectFilter = ({ key, value }: { key: string; value: string; }) => { const urlSearchParams = new URLSearchParams(searchParams.toString()); urlSearchParams.set(key, value); router.push(pathname + '?' + urlSearchParams.toString()); }; return (