{"id":86290,"date":"2024-12-01T07:35:23","date_gmt":"2024-12-01T04:05:23","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/nextjs-api-management-implement-search-pagination-filter-sort-and-limit-features-411i\/"},"modified":"2024-12-01T07:35:23","modified_gmt":"2024-12-01T04:05:23","slug":"nextjs-api-management-implement-search-pagination-filter-sort-and-limit-features-411i","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/nextjs-api-management-implement-search-pagination-filter-sort-and-limit-features-411i\/","title":{"rendered":"\u0645\u062f\u06cc\u0631\u06cc\u062a API Next.js: \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc \u062c\u0633\u062a\u062c\u0648\u060c \u0635\u0641\u062d\u0647 \u0628\u0646\u062f\u06cc\u060c \u0641\u06cc\u0644\u062a\u0631\u060c \u0645\u0631\u062a\u0628 \u0633\u0627\u0632\u06cc \u0648 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang<br \/>\n              \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 \u0646\u062d\u0648\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a API\u0647\u0627 \u0631\u0627 \u062f\u0631 a \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u0645 Next.js \u06a9\u0627\u0631\u0628\u0631\u062f\u060c \u0627\u0632 \u062c\u0645\u0644\u0647 \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u060c \u0646\u0645\u0627\u06cc\u0634 \u0622\u0646\u200c\u0647\u0627 \u0648 \u0627\u062c\u0631\u0627\u06cc \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u062c\u0633\u062a\u062c\u0648\u060c \u0635\u0641\u062d\u0647\u200c\u0628\u0646\u062f\u06cc\u060c \u0641\u06cc\u0644\u062a\u0631 \u06a9\u0631\u062f\u0646\u060c \u0645\u0631\u062a\u0628\u200c\u0633\u0627\u0632\u06cc \u0648 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u062a\u0627\u06cc\u062c. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0648\u0627\u0631\u062f \u062c\u0632\u0626\u06cc\u0627\u062a \u0634\u0648\u06cc\u0645.<\/p>\n<p>  \u0627\u0644\u0632\u0627\u0645\u0627\u062a:<\/p>\n<p>Next.js 14.2.18<br \/>\nAxios 1.7.8<br \/>\n\u0627\u0632 debounce 10.0.4 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<br \/>\nAPI\u060c \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 API \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0645\u0627 \u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u062c\u0633\u062a\u062c\u0648\u060c \u0635\u0641\u062d\u0647\u200c\u0628\u0646\u062f\u06cc\u060c \u0641\u06cc\u0644\u062a\u0631 \u06a9\u0631\u062f\u0646\u060c \u0645\u0631\u062a\u0628\u200c\u0633\u0627\u0632\u06cc \u0648 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 API Jikan \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u0645 \u06a9\u0647 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0646\u06cc\u0645\u0647 \u0648 \u0645\u062d\u062a\u0648\u0627\u06cc \u0645\u0631\u062a\u0628\u0637 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p>  \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0631\u0648\u0698\u0647<\/p>\n<p>Next.js \u0648 Required Packages \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<br \/>\n\u0627\u06cc\u062c\u0627\u062f \u0633\u0627\u062e\u062a\u0627\u0631 \u0641\u0627\u06cc\u0644 \u0648 \u067e\u0648\u0634\u0647 \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0633\u0627\u062e\u062a\u0627\u0631 \u0632\u06cc\u0631 \u0633\u0627\u0632\u0645\u0627\u0646\u062f\u0647\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<p>  \u0648\u0627\u06a9\u0634\u06cc \u0648 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0647\u0627<\/p>\n<p>\/\/src\/lib\/actions.ts<\/p>\n<p>import axios from &#8216;axios&#8217;;<\/p>\n<p>const axiosInstance = axios.create({<br \/>\n  baseURL: &#8216;https:\/\/api.jikan.moe\/v4&#8217;,<br \/>\n});<\/p>\n<p>export const getAllAnime = async (<br \/>\n  query?: string,<br \/>\n  currentPage?: number,<br \/>\n  orderBy?: string,<br \/>\n  type?: string,<br \/>\n  status?: string,<br \/>\n  sort?: string,<br \/>\n  limit?: number<br \/>\n) =&gt; {<br \/>\n  try {<br \/>\n    const res = await axiosInstance.get(<br \/>\n      `\/anime?q=${query}&amp;page=${currentPage}&amp;order_by=${orderBy}&amp;type=${type}&amp;status=${status}&amp;sort=${sort}&amp;limit=${limit}`<br \/>\n    );<\/p>\n<p>    const totalPages = res.data.pagination.last_visible_page;<\/p>\n<p>    return {<br \/>\n      data: res.data.data,<br \/>\n      totalPages,<br \/>\n    };<br \/>\n  } catch (error) {<br \/>\n    console.log(error);<br \/>\n    return null;<br \/>\n  }<br \/>\n};<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\/\/src\/components\/AnimeList.tsx<\/p>\n<p>import { getAllAnime } from &#8216;@\/lib\/actions&#8217;;<br \/>\nimport Image from &#8216;next\/image&#8217;;<\/p>\n<p>type AnimeProps = {<br \/>\n  mal_id: number;<br \/>\n  images: {<br \/>\n    webp: {<br \/>\n      image_url: string;<br \/>\n    };<br \/>\n  };<br \/>\n  title: string;<br \/>\n};<\/p>\n<p>export default async function AnimeList({<br \/>\n  query,<br \/>\n  currentPage,<br \/>\n  orderBy,<br \/>\n  type,<br \/>\n  status,<br \/>\n  sort,<br \/>\n  limit,<br \/>\n}: {<br \/>\n  query?: string;<br \/>\n  currentPage?: number;<br \/>\n  orderBy?: string;<br \/>\n  type?: string;<br \/>\n  status?: string;<br \/>\n  sort?: string;<br \/>\n  limit?: number;<br \/>\n}) {<br \/>\n  const animes = await getAllAnime(<br \/>\n    query,<br \/>\n    currentPage,<br \/>\n    orderBy,<br \/>\n    type,<br \/>\n    status,<br \/>\n    sort,<br \/>\n    limit<br \/>\n  );<\/p>\n<p>  return (<br \/>\n    &lt;&gt;<br \/>\n      &lt;div className=&#8221;grid grid-cols-6 gap-4 pt-4&#8243;&gt;<br \/>\n        {animes?.data.map((anime: AnimeProps) =&gt; (<br \/>\n          &lt;div key={anime.mal_id}&gt;<br \/>\n            &lt;Image<br \/>\n              src={anime.images.webp.image_url}<br \/>\n              alt={anime.title}<br \/>\n              width={500}<br \/>\n              height={500}<br \/>\n              className=&#8221;w-full h-[250px] object-cover rounded-md&#8221;<br \/>\n            \/&gt;<br \/>\n            &lt;h3&gt;<br \/>\n              {anime.title.length &gt; 15<br \/>\n                ? `${anime.title.slice(0, 15)}&#8230;`<br \/>\n                : anime.title}<br \/>\n            h3&gt;<br \/>\n          div&gt;<br \/>\n        ))}<br \/>\n      div&gt;<br \/>\n    &gt;<br \/>\n  );<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u062c\u0633\u062a\u062c\u0648 \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f<\/p>\n<p>\/\/src\/components\/Search.tsx<\/p>\n<p>&#8216;use client&#8217;;<\/p>\n<p>import { usePathname, useRouter, useSearchParams } from &#8216;next\/navigation&#8217;;<br \/>\nimport { useDebouncedCallback } from &#8216;use-debounce&#8217;;<\/p>\n<p>export default function Search() {<br \/>\n  const pathname = usePathname();<br \/>\n  const { replace } = useRouter();<br \/>\n  const searchParams = useSearchParams();<\/p>\n<p>  const handleSearch = useDebouncedCallback((term: string) =&gt; {<br \/>\n    const params = new URLSearchParams(searchParams);<br \/>\n    params.set(&#8216;page&#8217;, &#8216;1&#8217;);<br \/>\n    if (term) {<br \/>\n      params.set(&#8216;query&#8217;, term);<br \/>\n    } else {<br \/>\n      params.delete(&#8216;query&#8217;);<br \/>\n    }<br \/>\n    replace(`${pathname}?${params.toString()}`);<br \/>\n  }, 500);<\/p>\n<p>  return (<br \/>\n    &lt;div className=&#8221;w-[50%]&#8221;&gt;<br \/>\n      &lt;input<br \/>\n        type=&#8221;text&#8221;<br \/>\n        placeholder=&#8221;Search&#8230;&#8221;<br \/>\n        className=&#8221;w-full bg-neutral-200 px-2 py-1 rounded-md&#8221;<br \/>\n        onChange={(e) =&gt; {<br \/>\n          handleSearch(e.target.value);<br \/>\n        }}<br \/>\n        defaultValue={searchParams.get(&#8216;query&#8217;)?.toString()}<br \/>\n      \/&gt;<br \/>\n    div&gt;<br \/>\n  );<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0635\u0641\u062d\u0647 \u0628\u0646\u062f\u06cc<\/p>\n<p>\/\/src\/components\/Pagination.tsx<\/p>\n<p>&#8216;use client&#8217;;<\/p>\n<p>import { usePathname, useRouter, useSearchParams } from &#8216;next\/navigation&#8217;;<\/p>\n<p>export default function Pagination({ totalPages }: { totalPages: number }) {<br \/>\n  const pathname = usePathname();<br \/>\n  const searchParams = useSearchParams();<br \/>\n  const currentPage = Number(searchParams.get(&#8216;page&#8217;)) || 1;<br \/>\n  const router = useRouter();<\/p>\n<p>  const createPageURL = (pageNumber: number | string) =&gt; {<br \/>\n    const params = new URLSearchParams(searchParams);<br \/>\n    params.set(&#8216;page&#8217;, pageNumber.toString());<br \/>\n    return `${pathname}?${params.toString()}`;<br \/>\n  };<\/p>\n<p>  return (<br \/>\n    &lt;&gt;<br \/>\n      &lt;div className=&#8221;w-full flex items-center justify-center gap-x-8&#8243;&gt;<br \/>\n        &lt;button<br \/>\n          onClick={() =&gt; router.push(createPageURL(currentPage &#8211; 1))}<br \/>\n          disabled={currentPage === 1}<br \/>\n          className=&#8221;bg-neutral-600 px-2 py-1 rounded-md text-neutral-100 disabled:bg-neutral-400 disabled:cursor-not-allowed&#8221;<br \/>\n        &gt;<br \/>\n          Prev<br \/>\n        button&gt;<br \/>\n        &lt;p className=&#8221;text-[1rem] text-neutral-700&#8243;&gt;<br \/>\n          Page\u00a0{currentPage} of\u00a0{totalPages}<br \/>\n        p&gt;<br \/>\n        &lt;button<br \/>\n          onClick={() =&gt; router.push(createPageURL(currentPage + 1))}<br \/>\n          disabled={currentPage === totalPages}<br \/>\n          className=&#8221;bg-neutral-600 px-2 py-1 rounded-md text-neutral-100 disabled:bg-neutral-400 disabled:cursor-not-allowed&#8221;<br \/>\n        &gt;<br \/>\n          Next<br \/>\n        button&gt;<br \/>\n      div&gt;<br \/>\n    &gt;<br \/>\n  );<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0641\u06cc\u0644\u062a\u0631 \u0648 \u0645\u0631\u062a\u0628 \u0633\u0627\u0632\u06cc<\/p>\n<p>\/\/src\/components\/FilterByType.tsx<\/p>\n<p>&#8216;use client&#8217;;<\/p>\n<p>import { usePathname, useRouter, useSearchParams } from &#8216;next\/navigation&#8217;;<\/p>\n<p>type TypeProps = { value: string; name: string };<\/p>\n<p>const TYPE = [<br \/>\n  { value: &#8216;tv&#8217;, name: &#8216;TV&#8217; },<br \/>\n  { value: &#8216;movie&#8217;, name: &#8216;Movie&#8217; },<br \/>\n  { value: &#8216;ova&#8217;, name: &#8216;OVA&#8217; },<br \/>\n  { value: &#8216;special&#8217;, name: &#8216;Special&#8217; },<br \/>\n  { value: &#8216;ona&#8217;, name: &#8216;ONA&#8217; },<br \/>\n  { value: &#8216;music&#8217;, name: &#8216;Music&#8217; },<br \/>\n  { value: &#8216;cm&#8217;, name: &#8216;CM&#8217; },<br \/>\n  { value: &#8216;pv&#8217;, name: &#8216;PV&#8217; },<br \/>\n  { value: &#8216;tv_special&#8217;, name: &#8216;TV Special&#8217; },<br \/>\n];<\/p>\n<p>export default function FilterByType() {<br \/>\n  const pathname = usePathname();<br \/>\n  const searchParams = useSearchParams();<br \/>\n  const router = useRouter();<\/p>\n<p>  const handleFilterByType = (type: string) =&gt; {<br \/>\n    const params = new URLSearchParams(searchParams);<br \/>\n    params.set(&#8216;page&#8217;, &#8216;1&#8217;);<br \/>\n    params.set(&#8216;type&#8217;, type);<br \/>\n    router.replace(`${pathname}?${params.toString()}`);<br \/>\n  };<\/p>\n<p>  return (<br \/>\n    &lt;&gt;<br \/>\n      &lt;form className=&#8221;w-[10%] bg-neutral-400 px-2 py-1 rounded-md&#8221;&gt;<br \/>\n        &lt;select<br \/>\n          className=&#8221;bg-neutral-400 w-full&#8221;<br \/>\n          onChange={(e) =&gt; handleFilterByType(e.target.value)}<br \/>\n          defaultValue={searchParams.get(&#8216;type&#8217;)?.toString()}<br \/>\n        &gt;<br \/>\n          &lt;option value={&#8221;} defaultValue={&#8221;}&gt;<br \/>\n            Type:<br \/>\n          option&gt;<br \/>\n          {TYPE.map((type: TypeProps, index) =&gt; (<br \/>\n            &lt;option key={index} value={type.value}&gt;<br \/>\n              {type.name}<br \/>\n            option&gt;<br \/>\n          ))}<br \/>\n        select&gt;<br \/>\n      form&gt;<br \/>\n    &gt;<br \/>\n  );<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\/\/src\/components\/FilterByStatus.tsx<\/p>\n<p>&#8216;use client&#8217;;<\/p>\n<p>import { usePathname, useRouter, useSearchParams } from &#8216;next\/navigation&#8217;;<\/p>\n<p>type StatusProps = { value: string; name: string };<\/p>\n<p>const STATUS = [<br \/>\n  { value: &#8216;airing&#8217;, name: &#8216;Airing&#8217; },<br \/>\n  { value: &#8216;upcoming&#8217;, name: &#8216;Upcoming&#8217; },<br \/>\n  { value: &#8216;complete&#8217;, name: &#8216;Complete&#8217; },<br \/>\n];<\/p>\n<p>export default function FilterByStatus() {<br \/>\n  const pathname = usePathname();<br \/>\n  const searchParams = useSearchParams();<br \/>\n  const router = useRouter();<\/p>\n<p>  const handleFilterByStatus = (status: string) =&gt; {<br \/>\n    const params = new URLSearchParams(searchParams);<br \/>\n    params.set(&#8216;page&#8217;, &#8216;1&#8217;);<br \/>\n    params.set(&#8216;status&#8217;, status);<br \/>\n    router.replace(`${pathname}?${params.toString()}`);<br \/>\n  };<br \/>\n  return (<br \/>\n    &lt;&gt;<br \/>\n      &lt;form className=&#8221;w-[10%] bg-neutral-400 px-2 py-1 rounded-md&#8221;&gt;<br \/>\n        &lt;select<br \/>\n          className=&#8221;bg-neutral-400 w-full&#8221;<br \/>\n          onChange={(e) =&gt; handleFilterByStatus(e.target.value)}<br \/>\n          defaultValue={searchParams.get(&#8216;status&#8217;)?.toString()}<br \/>\n        &gt;<br \/>\n          &lt;option value={&#8221;} defaultValue={&#8221;}&gt;<br \/>\n            Status:<br \/>\n          option&gt;<br \/>\n          {STATUS.map((status: StatusProps, index) =&gt; (<br \/>\n            &lt;option key={index} value={status.value}&gt;<br \/>\n              {status.name}<br \/>\n            option&gt;<br \/>\n          ))}<br \/>\n        select&gt;<br \/>\n      form&gt;<br \/>\n    &gt;<br \/>\n  );<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\/\/src\/components\/SortByOrder<\/p>\n<p>&#8216;use client&#8217;;<\/p>\n<p>import { usePathname, useRouter, useSearchParams } from &#8216;next\/navigation&#8217;;<\/p>\n<p>type OrderByProps = { value: string; name: string };<\/p>\n<p>const ORDER_BY = [<br \/>\n  { value: &#8216;mal_id&#8217;, name: &#8216;Mal id&#8217; },<br \/>\n  { value: &#8216;title&#8217;, name: &#8216;Title&#8217; },<br \/>\n  { value: &#8216;start_date&#8217;, name: &#8216;Start date&#8217; },<br \/>\n  { value: &#8216;end_date&#8217;, name: &#8216;End date&#8217; },<br \/>\n  { value: &#8216;episodes&#8217;, name: &#8216;Episodes&#8217; },<br \/>\n  { value: &#8216;score&#8217;, name: &#8216;Score&#8217; },<br \/>\n  { value: &#8216;scored_by&#8217;, name: &#8216;Scored by&#8217; },<br \/>\n  { value: &#8216;rank&#8217;, name: &#8216;Rank&#8217; },<br \/>\n  { value: &#8216;popularity&#8217;, name: &#8216;Popularity&#8217; },<br \/>\n  { value: &#8216;members&#8217;, name: &#8216;Members&#8217; },<br \/>\n  { value: &#8216;favorites&#8217;, name: &#8216;Favorites&#8217; },<br \/>\n];<\/p>\n<p>export default function SortByOrder() {<br \/>\n  const pathname = usePathname();<br \/>\n  const searchParams = useSearchParams();<br \/>\n  const router = useRouter();<\/p>\n<p>  const handleSortByOrder = (orderBy: string) =&gt; {<br \/>\n    const params = new URLSearchParams(searchParams);<br \/>\n    params.set(&#8216;page&#8217;, &#8216;1&#8217;);<br \/>\n    params.set(&#8216;order_by&#8217;, orderBy);<br \/>\n    router.replace(`${pathname}?${params.toString()}`);<br \/>\n  };<br \/>\n  return (<br \/>\n    &lt;&gt;<br \/>\n      &lt;form className=&#8221;w-[10%] bg-neutral-400 px-2 py-1 rounded-md&#8221;&gt;<br \/>\n        &lt;select<br \/>\n          className=&#8221;bg-neutral-400 w-full&#8221;<br \/>\n          onChange={(e) =&gt; handleSortByOrder(e.target.value)}<br \/>\n          defaultValue={searchParams.get(&#8216;order_by&#8217;)?.toString()}<br \/>\n        &gt;<br \/>\n          &lt;option value={&#8221;} defaultValue={&#8221;}&gt;<br \/>\n            Order by:<br \/>\n          option&gt;<br \/>\n          {ORDER_BY.map((orderBy: OrderByProps, index: number) =&gt; (<br \/>\n            &lt;option key={index} value={orderBy.value}&gt;<br \/>\n              {orderBy.name}<br \/>\n            option&gt;<br \/>\n          ))}<br \/>\n        select&gt;<br \/>\n      form&gt;<br \/>\n    &gt;<br \/>\n  );<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\/\/src\/components\/SortDirection.tsx<\/p>\n<p>&#8216;use client&#8217;;<\/p>\n<p>import { usePathname, useRouter, useSearchParams } from &#8216;next\/navigation&#8217;;<\/p>\n<p>type SortDirectionProps = { value: string; name: string };<\/p>\n<p>const SORT_DIRECTION = [<br \/>\n  { value: &#8216;asc&#8217;, name: &#8216;Ascending&#8217; },<br \/>\n  { value: &#8216;desc&#8217;, name: &#8216;Descending&#8217; },<br \/>\n];<\/p>\n<p>export default function SortDirection() {<br \/>\n  const pathname = usePathname();<br \/>\n  const searchParams = useSearchParams();<br \/>\n  const router = useRouter();<\/p>\n<p>  const handleSortDirection = (sort: string) =&gt; {<br \/>\n    const params = new URLSearchParams(searchParams);<br \/>\n    params.set(&#8216;page&#8217;, &#8216;1&#8217;);<br \/>\n    params.set(&#8216;sort&#8217;, sort);<br \/>\n    router.replace(`${pathname}?${params.toString()}`);<br \/>\n  };<br \/>\n  return (<br \/>\n    &lt;&gt;<br \/>\n      &lt;form className=&#8221;w-[10%] bg-neutral-400 px-2 py-1 rounded-md&#8221;&gt;<br \/>\n        &lt;select<br \/>\n          className=&#8221;bg-neutral-400 w-full&#8221;<br \/>\n          onChange={(e) =&gt; handleSortDirection(e.target.value)}<br \/>\n          defaultValue={searchParams.get(&#8216;sort&#8217;)?.toString()}<br \/>\n        &gt;<br \/>\n          &lt;option value={&#8221;} defaultValue={&#8221;}&gt;<br \/>\n            Sort:<br \/>\n          option&gt;<br \/>\n          {SORT_DIRECTION.map((orderBy: SortDirectionProps, index: number) =&gt; (<br \/>\n            &lt;option key={index} value={orderBy.value}&gt;<br \/>\n              {orderBy.name}<br \/>\n            option&gt;<br \/>\n          ))}<br \/>\n        select&gt;<br \/>\n      form&gt;<br \/>\n    &gt;<br \/>\n  );<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u062a\u0627\u06cc\u062c<\/p>\n<p>\/\/src\/components\/Limit.tsx<\/p>\n<p>&#8216;use client&#8217;;<\/p>\n<p>import { usePathname, useRouter, useSearchParams } from &#8216;next\/navigation&#8217;;<\/p>\n<p>export default function Limit() {<br \/>\n  const pathname = usePathname();<br \/>\n  const searchParams = useSearchParams();<br \/>\n  const router = useRouter();<\/p>\n<p>  const handleLimitChange = (event: React.ChangeEvent&lt;HTMLInputElement&gt;) =&gt; {<br \/>\n    const value = event.target.value;<br \/>\n    const params = new URLSearchParams(searchParams);<\/p>\n<p>    if (!isNaN(Number(value)) &amp;&amp; Number(value) &gt; 0) {<br \/>\n      params.set(&#8216;page&#8217;, &#8216;1&#8217;);<br \/>\n      params.set(&#8216;limit&#8217;, value);<br \/>\n      router.replace(`${pathname}?${params.toString()}`);<br \/>\n    }<\/p>\n<p>    if (<br \/>\n      Number(value) === 0 ||<br \/>\n      isNaN(Number(value)) ||<br \/>\n      value === &#8221; ||<br \/>\n      Number(value) &gt; 25<br \/>\n    ) {<br \/>\n      params.delete(&#8216;limit&#8217;);<br \/>\n      router.replace(`${pathname}?${params.toString()}`);<br \/>\n    }<br \/>\n  };<\/p>\n<p>  return (<br \/>\n    &lt;form className=&#8221;w-[10%] bg-neutral-400 px-2 py-1 rounded-md flex items-center gap-x-2&#8243;&gt;<br \/>\n      &lt;label htmlFor=&#8221;limit&#8221;&gt;Limit:label&gt;<br \/>\n      &lt;input<br \/>\n        id=&#8221;limit&#8221;<br \/>\n        type=&#8221;string&#8221;<br \/>\n        className=&#8221;bg-neutral-400 w-full placeholder-neutral-700&#8243;<br \/>\n        min=&#8221;1&#8243;<br \/>\n        placeholder=&#8221;1-25&#8243;<br \/>\n        defaultValue={searchParams.get(&#8216;limit&#8217;) || &#8221;}<br \/>\n        onChange={handleLimitChange}<br \/>\n      \/&gt;<br \/>\n    form&gt;<br \/>\n  );<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc<\/p>\n<p>\/\/src\/app\/page<\/p>\n<p>import AnimeList from &#8216;@\/components\/AnimeList&#8217;;<br \/>\nimport FilterByStatus from &#8216;@\/components\/FilterByStatus&#8217;;<br \/>\nimport FilterByType from &#8216;@\/components\/FilterByType&#8217;;<br \/>\nimport Limit from &#8216;@\/components\/Limit&#8217;;<br \/>\nimport Pagination from &#8216;@\/components\/Pagination&#8217;;<br \/>\nimport Search from &#8216;@\/components\/Search&#8217;;<br \/>\nimport SortByOrder from &#8216;@\/components\/SortByOrder&#8217;;<br \/>\nimport SortDirection from &#8216;@\/components\/SortDirection&#8217;;<br \/>\nimport { getAllAnime } from &#8216;@\/lib\/actions&#8217;;<br \/>\nimport { Suspense } from &#8216;react&#8217;;<\/p>\n<p>export default async function Home({<br \/>\n  searchParams,<br \/>\n}: {<br \/>\n  searchParams?: {<br \/>\n    query?: string;<br \/>\n    page?: string;<br \/>\n    order_by?: string;<br \/>\n    type?: string;<br \/>\n    status?: string;<br \/>\n    sort?: string;<br \/>\n    limit?: string;<br \/>\n  };<br \/>\n}) {<br \/>\n  const query = searchParams?.query || &#8221;;<br \/>\n  const currentPage = Number(searchParams?.page) || 1;<br \/>\n  const orderBy = searchParams?.order_by || &#8221;;<br \/>\n  const type = searchParams?.type || &#8221;;<br \/>\n  const status = searchParams?.status || &#8221;;<br \/>\n  const sort = searchParams?.sort || &#8221;;<br \/>\n  const limit = Number(searchParams?.limit) || 25;<\/p>\n<p>  const pages = await getAllAnime(<br \/>\n    query,<br \/>\n    currentPage,<br \/>\n    orderBy,<br \/>\n    type,<br \/>\n    status,<br \/>\n    sort,<br \/>\n    limit<br \/>\n  );<br \/>\n  const totalPages = pages?.totalPages;<\/p>\n<p>  return (<br \/>\n    &lt;main className=&#8221;w-[1020px] mx-auto&#8221;&gt;<br \/>\n      &lt;div className=&#8221;flex items-center gap-x-4 py-4&#8243;&gt;<br \/>\n        &lt;Search \/&gt;<br \/>\n        &lt;FilterByType \/&gt;<br \/>\n        &lt;FilterByStatus \/&gt;<br \/>\n        &lt;SortByOrder \/&gt;<br \/>\n        &lt;SortDirection \/&gt;<br \/>\n        &lt;Limit \/&gt;<br \/>\n      div&gt;<br \/>\n      &lt;Pagination totalPages={totalPages} \/&gt;<br \/>\n      &lt;Suspense<br \/>\n        key={query + currentPage + orderBy + type + status + sort + limit}<br \/>\n        fallback={&lt;div&gt;Loading&#8230;div&gt;}<br \/>\n      &gt;<br \/>\n        &lt;AnimeList<br \/>\n          query={query}<br \/>\n          currentPage={currentPage}<br \/>\n          orderBy={orderBy}<br \/>\n          type={type}<br \/>\n          status={status}<br \/>\n          sort={sort}<br \/>\n          limit={limit}<br \/>\n        \/&gt;<br \/>\n      Suspense&gt;<br \/>\n    main&gt;<br \/>\n  );<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0627\u062c\u0632\u0627\u06cc Refactor<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u06a9\u062f \u0631\u0627 \u0645\u062e\u062a\u0635\u0631\u062a\u0631 \u0648 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u200c\u062a\u0631 \u06a9\u0646\u06cc\u0645\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0641\u06cc\u0644\u062a\u0631 \u0631\u0627 \u0627\u0635\u0644\u0627\u062d \u06a9\u0646\u06cc\u0645 \u0648 \u0627\u062c\u0632\u0627 \u0631\u0627 \u0645\u0631\u062a\u0628 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0627\u0641\u0632\u0648\u0646\u06af\u06cc \u0631\u0627 \u06a9\u0627\u0647\u0634 \u062f\u0647\u06cc\u0645. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f FilterSelect.tsx \u0645\u0624\u0644\u0641\u0647 \u0627\u06cc \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0647\u0645 \u0639\u0645\u0644\u06a9\u0631\u062f \u0641\u06cc\u0644\u062a\u0631 \u06a9\u0631\u062f\u0646 \u0648 \u0647\u0645 \u0645\u0631\u062a\u0628 \u0633\u0627\u0632\u06cc \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u062f. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u0627\u062c\u0632\u0627\u06cc \u062e\u0648\u062f \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<p>\/\/src\/components\/FilterSelect.tsx<\/p>\n<p>&#8216;use client&#8217;;<\/p>\n<p>import { usePathname, useRouter, useSearchParams } from &#8216;next\/navigation&#8217;;<br \/>\nimport React from &#8216;react&#8217;;<\/p>\n<p>type FilterSelectProps = {<br \/>\n  options: { value: string; name: string }[];<br \/>\n  paramKey: string;<br \/>\n  label: string;<br \/>\n};<\/p>\n<p>const FilterSelect: React.FC&lt;FilterSelectProps&gt; = ({<br \/>\n  options,<br \/>\n  paramKey,<br \/>\n  label,<br \/>\n}) =&gt; {<br \/>\n  const pathname = usePathname();<br \/>\n  const searchParams = useSearchParams();<br \/>\n  const router = useRouter();<\/p>\n<p>  const handleChange = (value: string) =&gt; {<br \/>\n    const params = new URLSearchParams(searchParams);<br \/>\n    params.set(&#8216;page&#8217;, &#8216;1&#8217;);<br \/>\n    params.set(paramKey, value);<br \/>\n    router.replace(`${pathname}?${params.toString()}`);<br \/>\n  };<\/p>\n<p>  return (<br \/>\n    &lt;form className=&#8221;w-[10%] bg-neutral-400 px-2 py-1 rounded-md&#8221;&gt;<br \/>\n      &lt;select<br \/>\n        className=&#8221;bg-neutral-400 w-full&#8221;<br \/>\n        onChange={(e) =&gt; handleChange(e.target.value)}<br \/>\n        defaultValue={searchParams.get(paramKey) || &#8221;}<br \/>\n      &gt;<br \/>\n        &lt;option value=&#8221;&#8221;&gt;{label}:option&gt;<br \/>\n        {options.map((option, index) =&gt; (<br \/>\n          &lt;option key={index} value={option.value}&gt;<br \/>\n            {option.name}<br \/>\n          option&gt;<br \/>\n        ))}<br \/>\n      select&gt;<br \/>\n    form&gt;<br \/>\n  );<br \/>\n};<\/p>\n<p>const STATUS = [<br \/>\n  { value: &#8216;airing&#8217;, name: &#8216;Airing&#8217; },<br \/>\n  { value: &#8216;upcoming&#8217;, name: &#8216;Upcoming&#8217; },<br \/>\n  { value: &#8216;complete&#8217;, name: &#8216;Complete&#8217; },<br \/>\n];<\/p>\n<p>const TYPE = [<br \/>\n  { value: &#8216;tv&#8217;, name: &#8216;TV&#8217; },<br \/>\n  { value: &#8216;movie&#8217;, name: &#8216;Movie&#8217; },<br \/>\n  { value: &#8216;ova&#8217;, name: &#8216;OVA&#8217; },<br \/>\n  { value: &#8216;special&#8217;, name: &#8216;Special&#8217; },<br \/>\n  { value: &#8216;ona&#8217;, name: &#8216;ONA&#8217; },<br \/>\n  { value: &#8216;music&#8217;, name: &#8216;Music&#8217; },<br \/>\n  { value: &#8216;cm&#8217;, name: &#8216;CM&#8217; },<br \/>\n  { value: &#8216;pv&#8217;, name: &#8216;PV&#8217; },<br \/>\n  { value: &#8216;tv_special&#8217;, name: &#8216;TV Special&#8217; },<br \/>\n];<\/p>\n<p>const ORDER_BY = [<br \/>\n  { value: &#8216;mal_id&#8217;, name: &#8216;Mal id&#8217; },<br \/>\n  { value: &#8216;title&#8217;, name: &#8216;Title&#8217; },<br \/>\n  { value: &#8216;start_date&#8217;, name: &#8216;Start date&#8217; },<br \/>\n  { value: &#8216;end_date&#8217;, name: &#8216;End date&#8217; },<br \/>\n  { value: &#8216;episodes&#8217;, name: &#8216;Episodes&#8217; },<br \/>\n  { value: &#8216;score&#8217;, name: &#8216;Score&#8217; },<br \/>\n  { value: &#8216;scored_by&#8217;, name: &#8216;Scored by&#8217; },<br \/>\n  { value: &#8216;rank&#8217;, name: &#8216;Rank&#8217; },<br \/>\n  { value: &#8216;popularity&#8217;, name: &#8216;Popularity&#8217; },<br \/>\n  { value: &#8216;members&#8217;, name: &#8216;Members&#8217; },<br \/>\n  { value: &#8216;favorites&#8217;, name: &#8216;Favorites&#8217; },<br \/>\n];<\/p>\n<p>const SORT_DIRECTION = [<br \/>\n  { value: &#8216;asc&#8217;, name: &#8216;Ascending&#8217; },<br \/>\n  { value: &#8216;desc&#8217;, name: &#8216;Descending&#8217; },<br \/>\n];<\/p>\n<p>export function FilterByStatus() {<br \/>\n  return &lt;FilterSelect options={STATUS} paramKey=&#8221;status&#8221; label=&#8221;Status&#8221; \/&gt;;<br \/>\n}<\/p>\n<p>export function FilterByType() {<br \/>\n  return &lt;FilterSelect options={TYPE} paramKey=&#8221;type&#8221; label=&#8221;Type&#8221; \/&gt;;<br \/>\n}<\/p>\n<p>export function SortByOrder() {<br \/>\n  return (<br \/>\n    &lt;FilterSelect options={ORDER_BY} paramKey=&#8221;order_by&#8221; label=&#8221;Order by&#8221; \/&gt;<br \/>\n  );<br \/>\n}<\/p>\n<p>export function SortDirection() {<br \/>\n  return &lt;FilterSelect options={SORT_DIRECTION} paramKey=&#8221;sort&#8221; label=&#8221;Sort&#8221; \/&gt;;<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f \u0648 \u0641\u06cc\u0644\u062a\u0631 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f \u0648 \u0627\u062c\u0632\u0627\u06cc \u0622\u0646 \u0631\u0627 \u0645\u0631\u062a\u0628 \u06a9\u0646\u06cc\u062f FilterSelect<\/p>\n<p>  \u062a\u0648\u0636\u06cc\u062d<\/p>\n<p>usePathname\u060c useSearchParams\u060c \u0648 useRouterHooks\u0627\u06cc\u0646 \u0642\u0644\u0627\u0628\u200c\u0647\u0627 \u0627\u0632 next\/navigation \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648\u0636\u0639\u06cc\u062a\u200c\u0647\u0627\u06cc URL \u0636\u0631\u0648\u0631\u06cc \u0647\u0633\u062a\u0646\u062f:<\/p>\n<p>usePathname: \u0645\u0633\u06cc\u0631 \u0641\u0639\u0644\u06cc URL \u0631\u0627 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>useSearchParams: \u0628\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u067e\u0631\u0633 \u0648 \u062c\u0648 \u062f\u0633\u062a\u0631\u0633\u06cc \u0648 \u062f\u0633\u062a\u06a9\u0627\u0631\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>useRouter: \u062a\u0648\u0627\u0628\u0639 \u0645\u0633\u06cc\u0631\u06cc\u0627\u0628\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u067e\u06cc\u0645\u0627\u06cc\u0634 \u06cc\u0627 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0627\u06cc URL\u0647\u0627 (\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06cc\u0627 \u0641\u0634\u0627\u0631) \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0631\u06af\u0634\u062a \u0628\u0647 \u062a\u0645\u0627\u0633 \u062f\u0631 \u0645\u0624\u0644\u0641\u0647 \u062c\u0633\u062a\u062c\u0648\u0631\u0627 useDebouncedCallback \u062a\u0627\u0628\u0639 \u0627\u062c\u0631\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062c\u0633\u062a\u062c\u0648 \u0631\u0627 \u0628\u0647 \u062a\u0627\u062e\u06cc\u0631 \u0645\u06cc \u0627\u0646\u062f\u0627\u0632\u062f:<\/p>\n<p>\u0628\u0627 \u0627\u0646\u062a\u0638\u0627\u0631 \u0628\u0631\u0627\u06cc \u0645\u062f\u062a \u0632\u0645\u0627\u0646 \u0645\u0634\u062e\u0635 (500 \u0645\u06cc\u0644\u06cc \u062b\u0627\u0646\u06cc\u0647) \u0627\u0632 \u062a\u0645\u0627\u0633 \u0647\u0627\u06cc \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f API \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc \u06a9\u0646\u062f.<br \/>\n\u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0647\u062a\u0631 \u0648 \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0648\u0627\u0646 \u062a\u0631 \u0631\u0627 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u067e\u0648\u06cc\u0627 URL\u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u200c\u0647\u0627\u06cc \u067e\u0648\u06cc\u0627 \u0628\u0631\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc URL\u060c \u0646\u0627\u0648\u0628\u0631\u06cc \u0631\u0648\u0627\u0646 \u0648 \u062f\u0631 \u0633\u0645\u062a \u0645\u0634\u062a\u0631\u06cc \u0631\u0627 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n<p>replace()  URL \u0631\u0627 \u0628\u062f\u0648\u0646 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0645\u062c\u062f\u062f \u0635\u0641\u062d\u0647 \u0628\u0647 \u0631\u0648\u0632 \u0645\u06cc \u06a9\u0646\u062f.<br \/>\n\u062a\u0627\u0631\u06cc\u062e\u0686\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u0631\u0627 \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0645\u0646\u0639\u06a9\u0633 \u0645\u06cc \u06a9\u0646\u062f\u060c \u062a\u0645\u06cc\u0632 \u0646\u06af\u0647 \u0645\u06cc \u062f\u0627\u0631\u062f filter\u060c sort\u060c \u0648 pagination \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a AnimeList \u0648 \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u062c\u0632\u0621 AnimeList \u0634\u0627\u0645\u0644 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n<p>\u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0627\u0632 API Jikan (getAllAnime()).<\/p>\n<p>\u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a FilterSelect \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f\u0631\u0627 FilterSelect\u062c\u0632\u0621:<\/p>\n<p>\u0639\u0645\u0644\u06a9\u0631\u062f \u06a9\u0634\u0648\u06cc\u06cc \u0686\u06a9\u06cc\u062f\u0647 \u0628\u0631\u0627\u06cc \u0641\u06cc\u0644\u062a\u0631\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f status\u060c type\u060c order_by\u060c \u0648 sort.<br \/>\n\u06a9\u062f \u0631\u0627 \u0628\u0627 \u06a9\u0627\u0647\u0634 \u0627\u0641\u0632\u0648\u0646\u06af\u06cc \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u0633\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f filter\u0648 sort\u0627\u062c\u0632\u0627\u0621<\/p>\n<p>\u0645\u062f\u06cc\u0631\u06cc\u062a \u0635\u0641\u062d\u0647 \u0628\u0646\u062f\u06cc\u062c\u0632\u0621 \u0635\u0641\u062d\u0647 \u0628\u0646\u062f\u06cc:<\/p>\n<p>\u0628\u0647 \u0635\u0648\u0631\u062a \u067e\u0648\u06cc\u0627 \u0644\u06cc\u0646\u06a9 \u0647\u0627\u06cc \u0646\u0627\u0648\u0628\u0631\u06cc (Prev \u0648 Next) \u0628\u0631 \u0627\u0633\u0627\u0633 currentPage \u0648 totalPages.<br \/>\n\u062f\u06a9\u0645\u0647 \u0647\u0627 \u0631\u0627 \u0647\u0646\u06af\u0627\u0645 \u0631\u0633\u06cc\u062f\u0646 \u0628\u0647 \u0635\u0641\u062d\u0647 \u0627\u0648\u0644 \u06cc\u0627 \u0622\u062e\u0631 \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0648\u0631\u0648\u062f\u06cc \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u06a9\u0646\u06cc\u062f\u0645\u0624\u0644\u0641\u0647 Limit \u0648\u0631\u0648\u062f\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062a\u0639\u062f\u0627\u062f \u0646\u062a\u0627\u06cc\u062c \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<p>\u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u0628\u06cc\u0646 1 \u0648 25 \u0627\u0633\u062a.<br \/>\nURL \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u067e\u0648\u06cc\u0627 \u0628\u0647 \u0631\u0648\u0632 \u0645\u06cc \u06a9\u0646\u062f \u06cc\u0627 \u0627\u06af\u0631 \u0648\u0631\u0648\u062f\u06cc \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0628\u0627\u0634\u062f\u060c \u0628\u0627\u0632\u0646\u0634\u0627\u0646\u06cc \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u062a\u0639\u0644\u06cc\u0642 \u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u062c\u0632\u0621 Suspense \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0646\u062f\u0631 \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f:<\/p>\n<p>\u0646\u0634\u0627\u0646\u06af\u0631 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0645\u062c\u062f\u062f \u0631\u0627 \u062f\u0631 \u062d\u06cc\u0646 \u0627\u0646\u062a\u0638\u0627\u0631 \u0628\u0631\u0627\u06cc \u062f\u0627\u062f\u0647 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f.<br \/>\n\u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 UI \u062f\u0631 \u0637\u0648\u0644 \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627 \u067e\u0627\u0633\u062e\u06af\u0648 \u0628\u0627\u0642\u06cc \u0645\u06cc \u0645\u0627\u0646\u062f.<\/p>\n<p>\u0648 \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0627\u0633\u062a:<\/p>\n<p>\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc\u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u062d\u0648\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0636\u0631\u0648\u0631\u06cc \u0627\u0631\u0627\u0626\u0647 \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u062f \u062c\u0633\u062a\u062c\u0648 \u06a9\u0646\u06cc\u062f\u060c \u0635\u0641\u062d\u0647 \u0628\u0646\u062f\u06cc\u060c \u0641\u06cc\u0644\u062a\u0631 \u06a9\u0631\u062f\u0646\u060c \u0645\u0631\u062a\u0628 \u0633\u0627\u0632\u06cc\u060c \u0648 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u062a\u06cc\u062c\u0647 \u062f\u0631 \u06cc\u06a9 Next.js \u06a9\u0627\u0631\u0628\u0631\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u06a9\u0627\u0648\u0634\u060c \u0634\u0628\u06cc\u0647 \u0633\u0627\u0632\u06cc\u060c \u06cc\u0627 \u0645\u0634\u0627\u0631\u06a9\u062a \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u062f\u0631 github \u0631\u0627\u062d\u062a \u0628\u0627\u0634\u06cc\u062f. \u0645\u0646 \u0645\u0634\u062a\u0627\u0642\u0627\u0646\u0647 \u0645\u0646\u062a\u0638\u0631 \u0646\u0638\u0631\u0627\u062a \u0634\u0645\u0627 \u0647\u0633\u062a\u0645 \u0648 \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0628\u0647 \u0634\u0645\u0627 \u062f\u0631 \u0633\u0641\u0631 \u062a\u0648\u0633\u0639\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u06a9\u0646\u062f!<\/p>\n<p>\u0645\u0631\u0627\u062c\u0639:https:\/\/nextjs.org\/learn\/dashboard-app\/adding-search-and-paginationhttps:\/\/nextjs.org\/docs\/app\/api-reference\/functions\/use-search-paramshttps:\/\/docs.api.jikan.moe\/<\/p>\n<div data-article-id=\"2128761\" id=\"article-body\">\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 \u0646\u062d\u0648\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a API\u0647\u0627 \u0631\u0627 \u062f\u0631 a \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u0645 <strong>Next.js<\/strong> \u06a9\u0627\u0631\u0628\u0631\u062f\u060c <strong>\u0627\u0632 \u062c\u0645\u0644\u0647 \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u060c \u0646\u0645\u0627\u06cc\u0634 \u0622\u0646\u200c\u0647\u0627 \u0648 \u0627\u062c\u0631\u0627\u06cc \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u062c\u0633\u062a\u062c\u0648\u060c \u0635\u0641\u062d\u0647\u200c\u0628\u0646\u062f\u06cc\u060c \u0641\u06cc\u0644\u062a\u0631 \u06a9\u0631\u062f\u0646\u060c \u0645\u0631\u062a\u0628\u200c\u0633\u0627\u0632\u06cc \u0648 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u062a\u0627\u06cc\u062c.<\/strong> \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0648\u0627\u0631\u062f \u062c\u0632\u0626\u06cc\u0627\u062a \u0634\u0648\u06cc\u0645.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/nextjs-api-management-implement-search-pagination-filter-sort-and-limit-features-411i\/#%D8%A7%D9%84%D8%B2%D8%A7%D9%85%D8%A7%D8%AA\" >\u0627\u0644\u0632\u0627\u0645\u0627\u062a:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/nextjs-api-management-implement-search-pagination-filter-sort-and-limit-features-411i\/#%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%D9%BE%D8%B1%D9%88%DA%98%D9%87\" >\u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0631\u0648\u0698\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/nextjs-api-management-implement-search-pagination-filter-sort-and-limit-features-411i\/#%D9%88%D8%A7%DA%A9%D8%B4%DB%8C_%D9%88_%D9%86%D9%85%D8%A7%DB%8C%D8%B4_%D8%AF%D8%A7%D8%AF%D9%87_%D9%87%D8%A7\" >\u0648\u0627\u06a9\u0634\u06cc \u0648 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/nextjs-api-management-implement-search-pagination-filter-sort-and-limit-features-411i\/#%D8%AC%D8%B3%D8%AA%D8%AC%D9%88_%D8%B1%D8%A7_%D9%BE%DB%8C%D8%A7%D8%AF%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%DA%A9%D9%86%DB%8C%D8%AF\" >\u062c\u0633\u062a\u062c\u0648 \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/nextjs-api-management-implement-search-pagination-filter-sort-and-limit-features-411i\/#%D9%BE%DB%8C%D8%A7%D8%AF%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%B5%D9%81%D8%AD%D9%87_%D8%A8%D9%86%D8%AF%DB%8C\" >\u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0635\u0641\u062d\u0647 \u0628\u0646\u062f\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/nextjs-api-management-implement-search-pagination-filter-sort-and-limit-features-411i\/#%D9%BE%DB%8C%D8%A7%D8%AF%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D9%81%DB%8C%D9%84%D8%AA%D8%B1_%D9%88_%D9%85%D8%B1%D8%AA%D8%A8_%D8%B3%D8%A7%D8%B2%DB%8C\" >\u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0641\u06cc\u0644\u062a\u0631 \u0648 \u0645\u0631\u062a\u0628 \u0633\u0627\u0632\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/nextjs-api-management-implement-search-pagination-filter-sort-and-limit-features-411i\/#%D9%85%D8%AD%D8%AF%D9%88%D8%AF_%DA%A9%D8%B1%D8%AF%D9%86_%D9%86%D8%AA%D8%A7%DB%8C%D8%AC\" >\u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u062a\u0627\u06cc\u062c<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/nextjs-api-management-implement-search-pagination-filter-sort-and-limit-features-411i\/#%D8%B5%D9%81%D8%AD%D9%87_%D8%A7%D8%B5%D9%84%DB%8C\" >\u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/nextjs-api-management-implement-search-pagination-filter-sort-and-limit-features-411i\/#%D8%A7%D8%AC%D8%B2%D8%A7%DB%8C_Refactor\" >\u0627\u062c\u0632\u0627\u06cc Refactor<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/nextjs-api-management-implement-search-pagination-filter-sort-and-limit-features-411i\/#%D8%AA%D9%88%D8%B6%DB%8C%D8%AD\" >\u062a\u0648\u0636\u06cc\u062d<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D9%84%D8%B2%D8%A7%D9%85%D8%A7%D8%AA\"><\/span>\n<p>  \u0627\u0644\u0632\u0627\u0645\u0627\u062a:<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>Next.js 14.2.18<\/li>\n<li>Axios 1.7.8<\/li>\n<li>\u0627\u0632 debounce 10.0.4 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<\/li>\n<li>API\u060c \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 API \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0645\u0627 \u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u062c\u0633\u062a\u062c\u0648\u060c \u0635\u0641\u062d\u0647\u200c\u0628\u0646\u062f\u06cc\u060c \u0641\u06cc\u0644\u062a\u0631 \u06a9\u0631\u062f\u0646\u060c \u0645\u0631\u062a\u0628\u200c\u0633\u0627\u0632\u06cc \u0648 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 API Jikan \u0631\u0627 \u0646\u0634\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u0645 \u06a9\u0647 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0646\u06cc\u0645\u0647 \u0648 \u0645\u062d\u062a\u0648\u0627\u06cc \u0645\u0631\u062a\u0628\u0637 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C_%D9%BE%D8%B1%D9%88%DA%98%D9%87\"><\/span>\n<p>  \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u067e\u0631\u0648\u0698\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ol>\n<li>Next.js \u0648 Required Packages \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f<\/li>\n<li>\u0627\u06cc\u062c\u0627\u062f \u0633\u0627\u062e\u062a\u0627\u0631 \u0641\u0627\u06cc\u0644 \u0648 \u067e\u0648\u0634\u0647 \u067e\u0631\u0648\u0698\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0633\u0627\u062e\u062a\u0627\u0631 \u0632\u06cc\u0631 \u0633\u0627\u0632\u0645\u0627\u0646\u062f\u0647\u06cc \u06a9\u0646\u06cc\u062f:<\/li>\n<\/ol>\n<p><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%88%D8%A7%DA%A9%D8%B4%DB%8C_%D9%88_%D9%86%D9%85%D8%A7%DB%8C%D8%B4_%D8%AF%D8%A7%D8%AF%D9%87_%D9%87%D8%A7\"><\/span>\n<p>  \u0648\u0627\u06a9\u0634\u06cc \u0648 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"c1\">\/\/src\/lib\/actions.ts<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"nx\">axios<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">axios<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">axiosInstance<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">axios<\/span><span class=\"p\">.<\/span><span class=\"nf\">create<\/span><span class=\"p\">({<\/span>\n  <span class=\"na\">baseURL<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">https:\/\/api.jikan.moe\/v4<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">});<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"kd\">const<\/span> <span class=\"nx\">getAllAnime<\/span> <span class=\"o\">=<\/span> <span class=\"k\">async <\/span><span class=\"p\">(<\/span>\n  <span class=\"nx\">query<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">currentPage<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">number<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">orderBy<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">type<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">status<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">sort<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">limit<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">number<\/span>\n<span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">try<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">res<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nx\">axiosInstance<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span>\n      <span class=\"s2\">`\/anime?q=<\/span><span class=\"p\">${<\/span><span class=\"nx\">query<\/span><span class=\"p\">}<\/span><span class=\"s2\">&amp;page=<\/span><span class=\"p\">${<\/span><span class=\"nx\">currentPage<\/span><span class=\"p\">}<\/span><span class=\"s2\">&amp;order_by=<\/span><span class=\"p\">${<\/span><span class=\"nx\">orderBy<\/span><span class=\"p\">}<\/span><span class=\"s2\">&amp;type=<\/span><span class=\"p\">${<\/span><span class=\"nx\">type<\/span><span class=\"p\">}<\/span><span class=\"s2\">&amp;status=<\/span><span class=\"p\">${<\/span><span class=\"nx\">status<\/span><span class=\"p\">}<\/span><span class=\"s2\">&amp;sort=<\/span><span class=\"p\">${<\/span><span class=\"nx\">sort<\/span><span class=\"p\">}<\/span><span class=\"s2\">&amp;limit=<\/span><span class=\"p\">${<\/span><span class=\"nx\">limit<\/span><span class=\"p\">}<\/span><span class=\"s2\">`<\/span>\n    <span class=\"p\">);<\/span>\n\n    <span class=\"kd\">const<\/span> <span class=\"nx\">totalPages<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nx\">data<\/span><span class=\"p\">.<\/span><span class=\"nx\">pagination<\/span><span class=\"p\">.<\/span><span class=\"nx\">last_visible_page<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">return<\/span> <span class=\"p\">{<\/span>\n      <span class=\"na\">data<\/span><span class=\"p\">:<\/span> <span class=\"nx\">res<\/span><span class=\"p\">.<\/span><span class=\"nx\">data<\/span><span class=\"p\">.<\/span><span class=\"nx\">data<\/span><span class=\"p\">,<\/span>\n      <span class=\"nx\">totalPages<\/span><span class=\"p\">,<\/span>\n    <span class=\"p\">};<\/span>\n  <span class=\"p\">}<\/span> <span class=\"k\">catch <\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">console<\/span><span class=\"p\">.<\/span><span class=\"nf\">log<\/span><span class=\"p\">(<\/span><span class=\"nx\">error<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">return<\/span> <span class=\"kc\">null<\/span><span class=\"p\">;<\/span>\n  <span class=\"p\">}<\/span>\n<span class=\"p\">};<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"c1\">\/\/src\/components\/AnimeList.tsx<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">getAllAnime<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@\/lib\/actions<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">Image<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">next\/image<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"nx\">type<\/span> <span class=\"nx\">AnimeProps<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n  <span class=\"na\">mal_id<\/span><span class=\"p\">:<\/span> <span class=\"nx\">number<\/span><span class=\"p\">;<\/span>\n  <span class=\"nl\">images<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n    <span class=\"na\">webp<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span>\n      <span class=\"na\">image_url<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">;<\/span>\n    <span class=\"p\">};<\/span>\n  <span class=\"p\">};<\/span>\n  <span class=\"nl\">title<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"k\">async<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">AnimeList<\/span><span class=\"p\">({<\/span>\n  <span class=\"nx\">query<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">currentPage<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">orderBy<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">type<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">status<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">sort<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">limit<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">}:<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">query<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">;<\/span>\n  <span class=\"nx\">currentPage<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">number<\/span><span class=\"p\">;<\/span>\n  <span class=\"nx\">orderBy<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">;<\/span>\n  <span class=\"nx\">type<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">;<\/span>\n  <span class=\"nx\">status<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">;<\/span>\n  <span class=\"nx\">sort<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">;<\/span>\n  <span class=\"nx\">limit<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">number<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">})<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">animes<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nf\">getAllAnime<\/span><span class=\"p\">(<\/span>\n    <span class=\"nx\">query<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">currentPage<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">orderBy<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">type<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">status<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">sort<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">limit<\/span>\n  <span class=\"p\">);<\/span>\n\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;&gt;<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"grid grid-cols-6 gap-4 pt-4\"<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"si\">{<\/span><span class=\"nx\">animes<\/span><span class=\"p\">?.<\/span><span class=\"nx\">data<\/span><span class=\"p\">.<\/span><span class=\"nf\">map<\/span><span class=\"p\">((<\/span><span class=\"nx\">anime<\/span><span class=\"p\">:<\/span> <span class=\"nx\">AnimeProps<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">(<\/span>\n          <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span> <span class=\"na\">key<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">anime<\/span><span class=\"p\">.<\/span><span class=\"nx\">mal_id<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>\n            <span class=\"p\">&lt;<\/span><span class=\"nc\">Image<\/span>\n              <span class=\"na\">src<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">anime<\/span><span class=\"p\">.<\/span><span class=\"nx\">images<\/span><span class=\"p\">.<\/span><span class=\"nx\">webp<\/span><span class=\"p\">.<\/span><span class=\"nx\">image_url<\/span><span class=\"si\">}<\/span>\n              <span class=\"na\">alt<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">anime<\/span><span class=\"p\">.<\/span><span class=\"nx\">title<\/span><span class=\"si\">}<\/span>\n              <span class=\"na\">width<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"mi\">500<\/span><span class=\"si\">}<\/span>\n              <span class=\"na\">height<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"mi\">500<\/span><span class=\"si\">}<\/span>\n              <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"w-full h-[250px] object-cover rounded-md\"<\/span>\n            <span class=\"p\">\/&gt;<\/span>\n            <span class=\"p\">&lt;<\/span><span class=\"nt\">h3<\/span><span class=\"p\">&gt;<\/span>\n              <span class=\"si\">{<\/span><span class=\"nx\">anime<\/span><span class=\"p\">.<\/span><span class=\"nx\">title<\/span><span class=\"p\">.<\/span><span class=\"nx\">length<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">15<\/span>\n                <span class=\"p\">?<\/span> <span class=\"s2\">`<\/span><span class=\"p\">${<\/span><span class=\"nx\">anime<\/span><span class=\"p\">.<\/span><span class=\"nx\">title<\/span><span class=\"p\">.<\/span><span class=\"nf\">slice<\/span><span class=\"p\">(<\/span><span class=\"mi\">0<\/span><span class=\"p\">,<\/span> <span class=\"mi\">15<\/span><span class=\"p\">)}<\/span><span class=\"s2\">...`<\/span>\n                <span class=\"p\">:<\/span> <span class=\"nx\">anime<\/span><span class=\"p\">.<\/span><span class=\"nx\">title<\/span><span class=\"si\">}<\/span>\n            <span class=\"p\"\/><span class=\"nt\">h3<\/span><span class=\"p\">&gt;<\/span>\n          <span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\">))<\/span><span class=\"si\">}<\/span>\n      <span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n    <span class=\"p\">&gt;<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AC%D8%B3%D8%AA%D8%AC%D9%88_%D8%B1%D8%A7_%D9%BE%DB%8C%D8%A7%D8%AF%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  \u062c\u0633\u062a\u062c\u0648 \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"c1\">\/\/src\/components\/Search.tsx<\/span>\n\n<span class=\"dl\">'<\/span><span class=\"s1\">use client<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">usePathname<\/span><span class=\"p\">,<\/span> <span class=\"nx\">useRouter<\/span><span class=\"p\">,<\/span> <span class=\"nx\">useSearchParams<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">next\/navigation<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">useDebouncedCallback<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">use-debounce<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">Search<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">pathname<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">usePathname<\/span><span class=\"p\">();<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">replace<\/span> <span class=\"p\">}<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useRouter<\/span><span class=\"p\">();<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">searchParams<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useSearchParams<\/span><span class=\"p\">();<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">handleSearch<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useDebouncedCallback<\/span><span class=\"p\">((<\/span><span class=\"nx\">term<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">params<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">URLSearchParams<\/span><span class=\"p\">(<\/span><span class=\"nx\">searchParams<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">page<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">1<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"nx\">term<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">query<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">term<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span> <span class=\"k\">else<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"k\">delete<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">query<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n    <span class=\"nf\">replace<\/span><span class=\"p\">(<\/span><span class=\"s2\">`<\/span><span class=\"p\">${<\/span><span class=\"nx\">pathname<\/span><span class=\"p\">}<\/span><span class=\"s2\">?<\/span><span class=\"p\">${<\/span><span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()}<\/span><span class=\"s2\">`<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">},<\/span> <span class=\"mi\">500<\/span><span class=\"p\">);<\/span>\n\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"w-[50%]\"<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">input<\/span>\n        <span class=\"na\">type<\/span><span class=\"p\">=<\/span><span class=\"s\">\"text\"<\/span>\n        <span class=\"na\">placeholder<\/span><span class=\"p\">=<\/span><span class=\"s\">\"Search...\"<\/span>\n        <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"w-full bg-neutral-200 px-2 py-1 rounded-md\"<\/span>\n        <span class=\"na\">onChange<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n          <span class=\"nf\">handleSearch<\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">);<\/span>\n        <span class=\"p\">}<\/span><span class=\"si\">}<\/span>\n        <span class=\"na\">defaultValue<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">searchParams<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">query<\/span><span class=\"dl\">'<\/span><span class=\"p\">)?.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()<\/span><span class=\"si\">}<\/span>\n      <span class=\"p\">\/&gt;<\/span>\n    <span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%BE%DB%8C%D8%A7%D8%AF%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%B5%D9%81%D8%AD%D9%87_%D8%A8%D9%86%D8%AF%DB%8C\"><\/span>\n<p>  \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0635\u0641\u062d\u0647 \u0628\u0646\u062f\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"c1\">\/\/src\/components\/Pagination.tsx<\/span>\n\n<span class=\"dl\">'<\/span><span class=\"s1\">use client<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">usePathname<\/span><span class=\"p\">,<\/span> <span class=\"nx\">useRouter<\/span><span class=\"p\">,<\/span> <span class=\"nx\">useSearchParams<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">next\/navigation<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">Pagination<\/span><span class=\"p\">({<\/span> <span class=\"nx\">totalPages<\/span> <span class=\"p\">}:<\/span> <span class=\"p\">{<\/span> <span class=\"nl\">totalPages<\/span><span class=\"p\">:<\/span> <span class=\"nx\">number<\/span> <span class=\"p\">})<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">pathname<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">usePathname<\/span><span class=\"p\">();<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">searchParams<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useSearchParams<\/span><span class=\"p\">();<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">currentPage<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">Number<\/span><span class=\"p\">(<\/span><span class=\"nx\">searchParams<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">page<\/span><span class=\"dl\">'<\/span><span class=\"p\">))<\/span> <span class=\"o\">||<\/span> <span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">router<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useRouter<\/span><span class=\"p\">();<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">createPageURL<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">pageNumber<\/span><span class=\"p\">:<\/span> <span class=\"nx\">number<\/span> <span class=\"o\">|<\/span> <span class=\"nx\">string<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">params<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">URLSearchParams<\/span><span class=\"p\">(<\/span><span class=\"nx\">searchParams<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">page<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">pageNumber<\/span><span class=\"p\">.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">());<\/span>\n    <span class=\"k\">return<\/span> <span class=\"s2\">`<\/span><span class=\"p\">${<\/span><span class=\"nx\">pathname<\/span><span class=\"p\">}<\/span><span class=\"s2\">?<\/span><span class=\"p\">${<\/span><span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()}<\/span><span class=\"s2\">`<\/span><span class=\"p\">;<\/span>\n  <span class=\"p\">};<\/span>\n\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;&gt;<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"w-full flex items-center justify-center gap-x-8\"<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nt\">button<\/span>\n          <span class=\"na\">onClick<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">router<\/span><span class=\"p\">.<\/span><span class=\"nf\">push<\/span><span class=\"p\">(<\/span><span class=\"nf\">createPageURL<\/span><span class=\"p\">(<\/span><span class=\"nx\">currentPage<\/span> <span class=\"o\">-<\/span> <span class=\"mi\">1<\/span><span class=\"p\">))<\/span><span class=\"si\">}<\/span>\n          <span class=\"na\">disabled<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">currentPage<\/span> <span class=\"o\">===<\/span> <span class=\"mi\">1<\/span><span class=\"si\">}<\/span>\n          <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"bg-neutral-600 px-2 py-1 rounded-md text-neutral-100 disabled:bg-neutral-400 disabled:cursor-not-allowed\"<\/span>\n        <span class=\"p\">&gt;<\/span>\n          Prev\n        <span class=\"p\"\/><span class=\"nt\">button<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nt\">p<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"text-[1rem] text-neutral-700\"<\/span><span class=\"p\">&gt;<\/span>\n          Page<span class=\"ni\">\u00a0<\/span><span class=\"si\">{<\/span><span class=\"nx\">currentPage<\/span><span class=\"si\">}<\/span> of<span class=\"ni\">\u00a0<\/span><span class=\"si\">{<\/span><span class=\"nx\">totalPages<\/span><span class=\"si\">}<\/span>\n        <span class=\"p\"\/><span class=\"nt\">p<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nt\">button<\/span>\n          <span class=\"na\">onClick<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">()<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nx\">router<\/span><span class=\"p\">.<\/span><span class=\"nf\">push<\/span><span class=\"p\">(<\/span><span class=\"nf\">createPageURL<\/span><span class=\"p\">(<\/span><span class=\"nx\">currentPage<\/span> <span class=\"o\">+<\/span> <span class=\"mi\">1<\/span><span class=\"p\">))<\/span><span class=\"si\">}<\/span>\n          <span class=\"na\">disabled<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">currentPage<\/span> <span class=\"o\">===<\/span> <span class=\"nx\">totalPages<\/span><span class=\"si\">}<\/span>\n          <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"bg-neutral-600 px-2 py-1 rounded-md text-neutral-100 disabled:bg-neutral-400 disabled:cursor-not-allowed\"<\/span>\n        <span class=\"p\">&gt;<\/span>\n          Next\n        <span class=\"p\"\/><span class=\"nt\">button<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n    <span class=\"p\">&gt;<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%BE%DB%8C%D8%A7%D8%AF%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D9%81%DB%8C%D9%84%D8%AA%D8%B1_%D9%88_%D9%85%D8%B1%D8%AA%D8%A8_%D8%B3%D8%A7%D8%B2%DB%8C\"><\/span>\n<p>  \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0641\u06cc\u0644\u062a\u0631 \u0648 \u0645\u0631\u062a\u0628 \u0633\u0627\u0632\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"c1\">\/\/src\/components\/FilterByType.tsx<\/span>\n\n<span class=\"dl\">'<\/span><span class=\"s1\">use client<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">usePathname<\/span><span class=\"p\">,<\/span> <span class=\"nx\">useRouter<\/span><span class=\"p\">,<\/span> <span class=\"nx\">useSearchParams<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">next\/navigation<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"nx\">type<\/span> <span class=\"nx\">TypeProps<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">;<\/span> <span class=\"nl\">name<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span> <span class=\"p\">};<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">TYPE<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">tv<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">TV<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">movie<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Movie<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">ova<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">OVA<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">special<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Special<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">ona<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">ONA<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">music<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Music<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">cm<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">CM<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">pv<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">PV<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">tv_special<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">TV Special<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n<span class=\"p\">];<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">FilterByType<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">pathname<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">usePathname<\/span><span class=\"p\">();<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">searchParams<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useSearchParams<\/span><span class=\"p\">();<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">router<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useRouter<\/span><span class=\"p\">();<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">handleFilterByType<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">type<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">params<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">URLSearchParams<\/span><span class=\"p\">(<\/span><span class=\"nx\">searchParams<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">page<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">1<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">type<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">type<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">router<\/span><span class=\"p\">.<\/span><span class=\"nf\">replace<\/span><span class=\"p\">(<\/span><span class=\"s2\">`<\/span><span class=\"p\">${<\/span><span class=\"nx\">pathname<\/span><span class=\"p\">}<\/span><span class=\"s2\">?<\/span><span class=\"p\">${<\/span><span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()}<\/span><span class=\"s2\">`<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">};<\/span>\n\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;&gt;<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">form<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"w-[10%] bg-neutral-400 px-2 py-1 rounded-md\"<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nt\">select<\/span>\n          <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"bg-neutral-400 w-full\"<\/span>\n          <span class=\"na\">onChange<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nf\">handleFilterByType<\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">)<\/span><span class=\"si\">}<\/span>\n          <span class=\"na\">defaultValue<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">searchParams<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">type<\/span><span class=\"dl\">'<\/span><span class=\"p\">)?.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()<\/span><span class=\"si\">}<\/span>\n        <span class=\"p\">&gt;<\/span>\n          <span class=\"p\">&lt;<\/span><span class=\"nt\">option<\/span> <span class=\"na\">value<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"dl\">''<\/span><span class=\"si\">}<\/span> <span class=\"na\">defaultValue<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"dl\">''<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>\n            Type:\n          <span class=\"p\"\/><span class=\"nt\">option<\/span><span class=\"p\">&gt;<\/span>\n          <span class=\"si\">{<\/span><span class=\"nx\">TYPE<\/span><span class=\"p\">.<\/span><span class=\"nf\">map<\/span><span class=\"p\">((<\/span><span class=\"nx\">type<\/span><span class=\"p\">:<\/span> <span class=\"nx\">TypeProps<\/span><span class=\"p\">,<\/span> <span class=\"nx\">index<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">(<\/span>\n            <span class=\"p\">&lt;<\/span><span class=\"nt\">option<\/span> <span class=\"na\">key<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">index<\/span><span class=\"si\">}<\/span> <span class=\"na\">value<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">type<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>\n              <span class=\"si\">{<\/span><span class=\"nx\">type<\/span><span class=\"p\">.<\/span><span class=\"nx\">name<\/span><span class=\"si\">}<\/span>\n            <span class=\"p\"\/><span class=\"nt\">option<\/span><span class=\"p\">&gt;<\/span>\n          <span class=\"p\">))<\/span><span class=\"si\">}<\/span>\n        <span class=\"p\"\/><span class=\"nt\">select<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\"\/><span class=\"nt\">form<\/span><span class=\"p\">&gt;<\/span>\n    <span class=\"p\">&gt;<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"c1\">\/\/src\/components\/FilterByStatus.tsx<\/span>\n\n<span class=\"dl\">'<\/span><span class=\"s1\">use client<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">usePathname<\/span><span class=\"p\">,<\/span> <span class=\"nx\">useRouter<\/span><span class=\"p\">,<\/span> <span class=\"nx\">useSearchParams<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">next\/navigation<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"nx\">type<\/span> <span class=\"nx\">StatusProps<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">;<\/span> <span class=\"nl\">name<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span> <span class=\"p\">};<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">STATUS<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">airing<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Airing<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">upcoming<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Upcoming<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">complete<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Complete<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n<span class=\"p\">];<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">FilterByStatus<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">pathname<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">usePathname<\/span><span class=\"p\">();<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">searchParams<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useSearchParams<\/span><span class=\"p\">();<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">router<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useRouter<\/span><span class=\"p\">();<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">handleFilterByStatus<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">status<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">params<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">URLSearchParams<\/span><span class=\"p\">(<\/span><span class=\"nx\">searchParams<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">page<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">1<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">status<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">status<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">router<\/span><span class=\"p\">.<\/span><span class=\"nf\">replace<\/span><span class=\"p\">(<\/span><span class=\"s2\">`<\/span><span class=\"p\">${<\/span><span class=\"nx\">pathname<\/span><span class=\"p\">}<\/span><span class=\"s2\">?<\/span><span class=\"p\">${<\/span><span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()}<\/span><span class=\"s2\">`<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">};<\/span>\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;&gt;<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">form<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"w-[10%] bg-neutral-400 px-2 py-1 rounded-md\"<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nt\">select<\/span>\n          <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"bg-neutral-400 w-full\"<\/span>\n          <span class=\"na\">onChange<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nf\">handleFilterByStatus<\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">)<\/span><span class=\"si\">}<\/span>\n          <span class=\"na\">defaultValue<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">searchParams<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">status<\/span><span class=\"dl\">'<\/span><span class=\"p\">)?.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()<\/span><span class=\"si\">}<\/span>\n        <span class=\"p\">&gt;<\/span>\n          <span class=\"p\">&lt;<\/span><span class=\"nt\">option<\/span> <span class=\"na\">value<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"dl\">''<\/span><span class=\"si\">}<\/span> <span class=\"na\">defaultValue<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"dl\">''<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>\n            Status:\n          <span class=\"p\"\/><span class=\"nt\">option<\/span><span class=\"p\">&gt;<\/span>\n          <span class=\"si\">{<\/span><span class=\"nx\">STATUS<\/span><span class=\"p\">.<\/span><span class=\"nf\">map<\/span><span class=\"p\">((<\/span><span class=\"nx\">status<\/span><span class=\"p\">:<\/span> <span class=\"nx\">StatusProps<\/span><span class=\"p\">,<\/span> <span class=\"nx\">index<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">(<\/span>\n            <span class=\"p\">&lt;<\/span><span class=\"nt\">option<\/span> <span class=\"na\">key<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">index<\/span><span class=\"si\">}<\/span> <span class=\"na\">value<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">status<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>\n              <span class=\"si\">{<\/span><span class=\"nx\">status<\/span><span class=\"p\">.<\/span><span class=\"nx\">name<\/span><span class=\"si\">}<\/span>\n            <span class=\"p\"\/><span class=\"nt\">option<\/span><span class=\"p\">&gt;<\/span>\n          <span class=\"p\">))<\/span><span class=\"si\">}<\/span>\n        <span class=\"p\"\/><span class=\"nt\">select<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\"\/><span class=\"nt\">form<\/span><span class=\"p\">&gt;<\/span>\n    <span class=\"p\">&gt;<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"c1\">\/\/src\/components\/SortByOrder<\/span>\n\n<span class=\"dl\">'<\/span><span class=\"s1\">use client<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">usePathname<\/span><span class=\"p\">,<\/span> <span class=\"nx\">useRouter<\/span><span class=\"p\">,<\/span> <span class=\"nx\">useSearchParams<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">next\/navigation<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"nx\">type<\/span> <span class=\"nx\">OrderByProps<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">;<\/span> <span class=\"nl\">name<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span> <span class=\"p\">};<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">ORDER_BY<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">mal_id<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Mal id<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">title<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Title<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">start_date<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Start date<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">end_date<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">End date<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">episodes<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Episodes<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">score<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Score<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">scored_by<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Scored by<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">rank<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Rank<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">popularity<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Popularity<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">members<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Members<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">favorites<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Favorites<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n<span class=\"p\">];<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">SortByOrder<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">pathname<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">usePathname<\/span><span class=\"p\">();<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">searchParams<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useSearchParams<\/span><span class=\"p\">();<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">router<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useRouter<\/span><span class=\"p\">();<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">handleSortByOrder<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">orderBy<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">params<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">URLSearchParams<\/span><span class=\"p\">(<\/span><span class=\"nx\">searchParams<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">page<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">1<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">order_by<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">orderBy<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">router<\/span><span class=\"p\">.<\/span><span class=\"nf\">replace<\/span><span class=\"p\">(<\/span><span class=\"s2\">`<\/span><span class=\"p\">${<\/span><span class=\"nx\">pathname<\/span><span class=\"p\">}<\/span><span class=\"s2\">?<\/span><span class=\"p\">${<\/span><span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()}<\/span><span class=\"s2\">`<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">};<\/span>\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;&gt;<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">form<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"w-[10%] bg-neutral-400 px-2 py-1 rounded-md\"<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nt\">select<\/span>\n          <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"bg-neutral-400 w-full\"<\/span>\n          <span class=\"na\">onChange<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nf\">handleSortByOrder<\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">)<\/span><span class=\"si\">}<\/span>\n          <span class=\"na\">defaultValue<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">searchParams<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">order_by<\/span><span class=\"dl\">'<\/span><span class=\"p\">)?.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()<\/span><span class=\"si\">}<\/span>\n        <span class=\"p\">&gt;<\/span>\n          <span class=\"p\">&lt;<\/span><span class=\"nt\">option<\/span> <span class=\"na\">value<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"dl\">''<\/span><span class=\"si\">}<\/span> <span class=\"na\">defaultValue<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"dl\">''<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>\n            Order by:\n          <span class=\"p\"\/><span class=\"nt\">option<\/span><span class=\"p\">&gt;<\/span>\n          <span class=\"si\">{<\/span><span class=\"nx\">ORDER_BY<\/span><span class=\"p\">.<\/span><span class=\"nf\">map<\/span><span class=\"p\">((<\/span><span class=\"nx\">orderBy<\/span><span class=\"p\">:<\/span> <span class=\"nx\">OrderByProps<\/span><span class=\"p\">,<\/span> <span class=\"nx\">index<\/span><span class=\"p\">:<\/span> <span class=\"nx\">number<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">(<\/span>\n            <span class=\"p\">&lt;<\/span><span class=\"nt\">option<\/span> <span class=\"na\">key<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">index<\/span><span class=\"si\">}<\/span> <span class=\"na\">value<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">orderBy<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>\n              <span class=\"si\">{<\/span><span class=\"nx\">orderBy<\/span><span class=\"p\">.<\/span><span class=\"nx\">name<\/span><span class=\"si\">}<\/span>\n            <span class=\"p\"\/><span class=\"nt\">option<\/span><span class=\"p\">&gt;<\/span>\n          <span class=\"p\">))<\/span><span class=\"si\">}<\/span>\n        <span class=\"p\"\/><span class=\"nt\">select<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\"\/><span class=\"nt\">form<\/span><span class=\"p\">&gt;<\/span>\n    <span class=\"p\">&gt;<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"c1\">\/\/src\/components\/SortDirection.tsx<\/span>\n\n<span class=\"dl\">'<\/span><span class=\"s1\">use client<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">usePathname<\/span><span class=\"p\">,<\/span> <span class=\"nx\">useRouter<\/span><span class=\"p\">,<\/span> <span class=\"nx\">useSearchParams<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">next\/navigation<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"nx\">type<\/span> <span class=\"nx\">SortDirectionProps<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">;<\/span> <span class=\"nl\">name<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span> <span class=\"p\">};<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">SORT_DIRECTION<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">asc<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Ascending<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">desc<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Descending<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n<span class=\"p\">];<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">SortDirection<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">pathname<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">usePathname<\/span><span class=\"p\">();<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">searchParams<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useSearchParams<\/span><span class=\"p\">();<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">router<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useRouter<\/span><span class=\"p\">();<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">handleSortDirection<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">sort<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">params<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">URLSearchParams<\/span><span class=\"p\">(<\/span><span class=\"nx\">searchParams<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">page<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">1<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">sort<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">sort<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">router<\/span><span class=\"p\">.<\/span><span class=\"nf\">replace<\/span><span class=\"p\">(<\/span><span class=\"s2\">`<\/span><span class=\"p\">${<\/span><span class=\"nx\">pathname<\/span><span class=\"p\">}<\/span><span class=\"s2\">?<\/span><span class=\"p\">${<\/span><span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()}<\/span><span class=\"s2\">`<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">};<\/span>\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;&gt;<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">form<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"w-[10%] bg-neutral-400 px-2 py-1 rounded-md\"<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nt\">select<\/span>\n          <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"bg-neutral-400 w-full\"<\/span>\n          <span class=\"na\">onChange<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nf\">handleSortDirection<\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">)<\/span><span class=\"si\">}<\/span>\n          <span class=\"na\">defaultValue<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">searchParams<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">sort<\/span><span class=\"dl\">'<\/span><span class=\"p\">)?.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()<\/span><span class=\"si\">}<\/span>\n        <span class=\"p\">&gt;<\/span>\n          <span class=\"p\">&lt;<\/span><span class=\"nt\">option<\/span> <span class=\"na\">value<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"dl\">''<\/span><span class=\"si\">}<\/span> <span class=\"na\">defaultValue<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"dl\">''<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>\n            Sort:\n          <span class=\"p\"\/><span class=\"nt\">option<\/span><span class=\"p\">&gt;<\/span>\n          <span class=\"si\">{<\/span><span class=\"nx\">SORT_DIRECTION<\/span><span class=\"p\">.<\/span><span class=\"nf\">map<\/span><span class=\"p\">((<\/span><span class=\"nx\">orderBy<\/span><span class=\"p\">:<\/span> <span class=\"nx\">SortDirectionProps<\/span><span class=\"p\">,<\/span> <span class=\"nx\">index<\/span><span class=\"p\">:<\/span> <span class=\"nx\">number<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">(<\/span>\n            <span class=\"p\">&lt;<\/span><span class=\"nt\">option<\/span> <span class=\"na\">key<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">index<\/span><span class=\"si\">}<\/span> <span class=\"na\">value<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">orderBy<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>\n              <span class=\"si\">{<\/span><span class=\"nx\">orderBy<\/span><span class=\"p\">.<\/span><span class=\"nx\">name<\/span><span class=\"si\">}<\/span>\n            <span class=\"p\"\/><span class=\"nt\">option<\/span><span class=\"p\">&gt;<\/span>\n          <span class=\"p\">))<\/span><span class=\"si\">}<\/span>\n        <span class=\"p\"\/><span class=\"nt\">select<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\"\/><span class=\"nt\">form<\/span><span class=\"p\">&gt;<\/span>\n    <span class=\"p\">&gt;<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%AD%D8%AF%D9%88%D8%AF_%DA%A9%D8%B1%D8%AF%D9%86_%D9%86%D8%AA%D8%A7%DB%8C%D8%AC\"><\/span>\n<p>  \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u062a\u0627\u06cc\u062c<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"c1\">\/\/src\/components\/Limit.tsx<\/span>\n\n<span class=\"dl\">'<\/span><span class=\"s1\">use client<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">usePathname<\/span><span class=\"p\">,<\/span> <span class=\"nx\">useRouter<\/span><span class=\"p\">,<\/span> <span class=\"nx\">useSearchParams<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">next\/navigation<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">Limit<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">pathname<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">usePathname<\/span><span class=\"p\">();<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">searchParams<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useSearchParams<\/span><span class=\"p\">();<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">router<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useRouter<\/span><span class=\"p\">();<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">handleLimitChange<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"nx\">event<\/span><span class=\"p\">:<\/span> <span class=\"nx\">React<\/span><span class=\"p\">.<\/span><span class=\"nx\">ChangeEvent<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">HTMLInputElement<\/span><span class=\"o\">&gt;<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">value<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">event<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">;<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">params<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">URLSearchParams<\/span><span class=\"p\">(<\/span><span class=\"nx\">searchParams<\/span><span class=\"p\">);<\/span>\n\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span><span class=\"o\">!<\/span><span class=\"nf\">isNaN<\/span><span class=\"p\">(<\/span><span class=\"nc\">Number<\/span><span class=\"p\">(<\/span><span class=\"nx\">value<\/span><span class=\"p\">))<\/span> <span class=\"o\">&amp;&amp;<\/span> <span class=\"nc\">Number<\/span><span class=\"p\">(<\/span><span class=\"nx\">value<\/span><span class=\"p\">)<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">page<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">1<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n      <span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">limit<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"nx\">value<\/span><span class=\"p\">);<\/span>\n      <span class=\"nx\">router<\/span><span class=\"p\">.<\/span><span class=\"nf\">replace<\/span><span class=\"p\">(<\/span><span class=\"s2\">`<\/span><span class=\"p\">${<\/span><span class=\"nx\">pathname<\/span><span class=\"p\">}<\/span><span class=\"s2\">?<\/span><span class=\"p\">${<\/span><span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()}<\/span><span class=\"s2\">`<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">if <\/span><span class=\"p\">(<\/span>\n      <span class=\"nc\">Number<\/span><span class=\"p\">(<\/span><span class=\"nx\">value<\/span><span class=\"p\">)<\/span> <span class=\"o\">===<\/span> <span class=\"mi\">0<\/span> <span class=\"o\">||<\/span>\n      <span class=\"nf\">isNaN<\/span><span class=\"p\">(<\/span><span class=\"nc\">Number<\/span><span class=\"p\">(<\/span><span class=\"nx\">value<\/span><span class=\"p\">))<\/span> <span class=\"o\">||<\/span>\n      <span class=\"nx\">value<\/span> <span class=\"o\">===<\/span> <span class=\"dl\">''<\/span> <span class=\"o\">||<\/span>\n      <span class=\"nc\">Number<\/span><span class=\"p\">(<\/span><span class=\"nx\">value<\/span><span class=\"p\">)<\/span> <span class=\"o\">&gt;<\/span> <span class=\"mi\">25<\/span>\n    <span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n      <span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"k\">delete<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">limit<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n      <span class=\"nx\">router<\/span><span class=\"p\">.<\/span><span class=\"nf\">replace<\/span><span class=\"p\">(<\/span><span class=\"s2\">`<\/span><span class=\"p\">${<\/span><span class=\"nx\">pathname<\/span><span class=\"p\">}<\/span><span class=\"s2\">?<\/span><span class=\"p\">${<\/span><span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()}<\/span><span class=\"s2\">`<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n  <span class=\"p\">};<\/span>\n\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">form<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"w-[10%] bg-neutral-400 px-2 py-1 rounded-md flex items-center gap-x-2\"<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">label<\/span> <span class=\"na\">htmlFor<\/span><span class=\"p\">=<\/span><span class=\"s\">\"limit\"<\/span><span class=\"p\">&gt;<\/span>Limit:<span class=\"p\"\/><span class=\"nt\">label<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">input<\/span>\n        <span class=\"na\">id<\/span><span class=\"p\">=<\/span><span class=\"s\">\"limit\"<\/span>\n        <span class=\"na\">type<\/span><span class=\"p\">=<\/span><span class=\"s\">\"string\"<\/span>\n        <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"bg-neutral-400 w-full placeholder-neutral-700\"<\/span>\n        <span class=\"na\">min<\/span><span class=\"p\">=<\/span><span class=\"s\">\"1\"<\/span>\n        <span class=\"na\">placeholder<\/span><span class=\"p\">=<\/span><span class=\"s\">\"1-25\"<\/span>\n        <span class=\"na\">defaultValue<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">searchParams<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">limit<\/span><span class=\"dl\">'<\/span><span class=\"p\">)<\/span> <span class=\"o\">||<\/span> <span class=\"dl\">''<\/span><span class=\"si\">}<\/span>\n        <span class=\"na\">onChange<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">handleLimitChange<\/span><span class=\"si\">}<\/span>\n      <span class=\"p\">\/&gt;<\/span>\n    <span class=\"p\"\/><span class=\"nt\">form<\/span><span class=\"p\">&gt;<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%B5%D9%81%D8%AD%D9%87_%D8%A7%D8%B5%D9%84%DB%8C\"><\/span>\n<p>  \u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"c1\">\/\/src\/app\/page<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"nx\">AnimeList<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@\/components\/AnimeList<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">FilterByStatus<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@\/components\/FilterByStatus<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">FilterByType<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@\/components\/FilterByType<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">Limit<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@\/components\/Limit<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">Pagination<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@\/components\/Pagination<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">Search<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@\/components\/Search<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">SortByOrder<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@\/components\/SortByOrder<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">SortDirection<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@\/components\/SortDirection<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">getAllAnime<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">@\/lib\/actions<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">Suspense<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"k\">default<\/span> <span class=\"k\">async<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">Home<\/span><span class=\"p\">({<\/span>\n  <span class=\"nx\">searchParams<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">}:<\/span> <span class=\"p\">{<\/span>\n  <span class=\"nx\">searchParams<\/span><span class=\"p\">?:<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nx\">query<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">;<\/span>\n    <span class=\"nx\">page<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">;<\/span>\n    <span class=\"nx\">order_by<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">;<\/span>\n    <span class=\"nx\">type<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">;<\/span>\n    <span class=\"nx\">status<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">;<\/span>\n    <span class=\"nx\">sort<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">;<\/span>\n    <span class=\"nx\">limit<\/span><span class=\"p\">?:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">;<\/span>\n  <span class=\"p\">};<\/span>\n<span class=\"p\">})<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">query<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">searchParams<\/span><span class=\"p\">?.<\/span><span class=\"nx\">query<\/span> <span class=\"o\">||<\/span> <span class=\"dl\">''<\/span><span class=\"p\">;<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">currentPage<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">Number<\/span><span class=\"p\">(<\/span><span class=\"nx\">searchParams<\/span><span class=\"p\">?.<\/span><span class=\"nx\">page<\/span><span class=\"p\">)<\/span> <span class=\"o\">||<\/span> <span class=\"mi\">1<\/span><span class=\"p\">;<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">orderBy<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">searchParams<\/span><span class=\"p\">?.<\/span><span class=\"nx\">order_by<\/span> <span class=\"o\">||<\/span> <span class=\"dl\">''<\/span><span class=\"p\">;<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">type<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">searchParams<\/span><span class=\"p\">?.<\/span><span class=\"nx\">type<\/span> <span class=\"o\">||<\/span> <span class=\"dl\">''<\/span><span class=\"p\">;<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">status<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">searchParams<\/span><span class=\"p\">?.<\/span><span class=\"nx\">status<\/span> <span class=\"o\">||<\/span> <span class=\"dl\">''<\/span><span class=\"p\">;<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">sort<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">searchParams<\/span><span class=\"p\">?.<\/span><span class=\"nx\">sort<\/span> <span class=\"o\">||<\/span> <span class=\"dl\">''<\/span><span class=\"p\">;<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">limit<\/span> <span class=\"o\">=<\/span> <span class=\"nc\">Number<\/span><span class=\"p\">(<\/span><span class=\"nx\">searchParams<\/span><span class=\"p\">?.<\/span><span class=\"nx\">limit<\/span><span class=\"p\">)<\/span> <span class=\"o\">||<\/span> <span class=\"mi\">25<\/span><span class=\"p\">;<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">pages<\/span> <span class=\"o\">=<\/span> <span class=\"k\">await<\/span> <span class=\"nf\">getAllAnime<\/span><span class=\"p\">(<\/span>\n    <span class=\"nx\">query<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">currentPage<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">orderBy<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">type<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">status<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">sort<\/span><span class=\"p\">,<\/span>\n    <span class=\"nx\">limit<\/span>\n  <span class=\"p\">);<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">totalPages<\/span> <span class=\"o\">=<\/span> <span class=\"nx\">pages<\/span><span class=\"p\">?.<\/span><span class=\"nx\">totalPages<\/span><span class=\"p\">;<\/span>\n\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">main<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"w-[1020px] mx-auto\"<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"flex items-center gap-x-4 py-4\"<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nc\">Search<\/span> <span class=\"p\">\/&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nc\">FilterByType<\/span> <span class=\"p\">\/&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nc\">FilterByStatus<\/span> <span class=\"p\">\/&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nc\">SortByOrder<\/span> <span class=\"p\">\/&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nc\">SortDirection<\/span> <span class=\"p\">\/&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nc\">Limit<\/span> <span class=\"p\">\/&gt;<\/span>\n      <span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nc\">Pagination<\/span> <span class=\"na\">totalPages<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">totalPages<\/span><span class=\"si\">}<\/span> <span class=\"p\">\/&gt;<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nc\">Suspense<\/span>\n        <span class=\"na\">key<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">query<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">currentPage<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">orderBy<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">type<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">status<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">sort<\/span> <span class=\"o\">+<\/span> <span class=\"nx\">limit<\/span><span class=\"si\">}<\/span>\n        <span class=\"na\">fallback<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">&lt;<\/span><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span>Loading...<span class=\"p\"\/><span class=\"nt\">div<\/span><span class=\"p\">&gt;<\/span><span class=\"si\">}<\/span>\n      <span class=\"p\">&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nc\">AnimeList<\/span>\n          <span class=\"na\">query<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">query<\/span><span class=\"si\">}<\/span>\n          <span class=\"na\">currentPage<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">currentPage<\/span><span class=\"si\">}<\/span>\n          <span class=\"na\">orderBy<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">orderBy<\/span><span class=\"si\">}<\/span>\n          <span class=\"na\">type<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">type<\/span><span class=\"si\">}<\/span>\n          <span class=\"na\">status<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">status<\/span><span class=\"si\">}<\/span>\n          <span class=\"na\">sort<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">sort<\/span><span class=\"si\">}<\/span>\n          <span class=\"na\">limit<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">limit<\/span><span class=\"si\">}<\/span>\n        <span class=\"p\">\/&gt;<\/span>\n      <span class=\"p\"\/><span class=\"nc\">Suspense<\/span><span class=\"p\">&gt;<\/span>\n    <span class=\"p\"\/><span class=\"nt\">main<\/span><span class=\"p\">&gt;<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%AC%D8%B2%D8%A7%DB%8C_Refactor\"><\/span>\n<p>  \u0627\u062c\u0632\u0627\u06cc Refactor<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u06a9\u062f \u0631\u0627 \u0645\u062e\u062a\u0635\u0631\u062a\u0631 \u0648 \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647\u200c\u062a\u0631 \u06a9\u0646\u06cc\u0645\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0641\u06cc\u0644\u062a\u0631 \u0631\u0627 \u0627\u0635\u0644\u0627\u062d \u06a9\u0646\u06cc\u0645 \u0648 \u0627\u062c\u0632\u0627 \u0631\u0627 \u0645\u0631\u062a\u0628 \u06a9\u0646\u06cc\u0645 \u062a\u0627 \u0627\u0641\u0632\u0648\u0646\u06af\u06cc \u0631\u0627 \u06a9\u0627\u0647\u0634 \u062f\u0647\u06cc\u0645. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f <code>FilterSelect.tsx<\/code> \u0645\u0624\u0644\u0641\u0647 \u0627\u06cc \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0647\u0645 \u0639\u0645\u0644\u06a9\u0631\u062f \u0641\u06cc\u0644\u062a\u0631 \u06a9\u0631\u062f\u0646 \u0648 \u0647\u0645 \u0645\u0631\u062a\u0628 \u0633\u0627\u0632\u06cc \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u062f. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0646\u062d\u0648\u0647 \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u0627\u062c\u0632\u0627\u06cc \u062e\u0648\u062f \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight jsx\"><code><span class=\"c1\">\/\/src\/components\/FilterSelect.tsx<\/span>\n\n<span class=\"dl\">'<\/span><span class=\"s1\">use client<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"k\">import<\/span> <span class=\"p\">{<\/span> <span class=\"nx\">usePathname<\/span><span class=\"p\">,<\/span> <span class=\"nx\">useRouter<\/span><span class=\"p\">,<\/span> <span class=\"nx\">useSearchParams<\/span> <span class=\"p\">}<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">next\/navigation<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">import<\/span> <span class=\"nx\">React<\/span> <span class=\"k\">from<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">react<\/span><span class=\"dl\">'<\/span><span class=\"p\">;<\/span>\n\n<span class=\"nx\">type<\/span> <span class=\"nx\">FilterSelectProps<\/span> <span class=\"o\">=<\/span> <span class=\"p\">{<\/span>\n  <span class=\"na\">options<\/span><span class=\"p\">:<\/span> <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">;<\/span> <span class=\"nl\">name<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span> <span class=\"p\">}[];<\/span>\n  <span class=\"nl\">paramKey<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">;<\/span>\n  <span class=\"nl\">label<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">FilterSelect<\/span><span class=\"p\">:<\/span> <span class=\"nx\">React<\/span><span class=\"p\">.<\/span><span class=\"nx\">FC<\/span><span class=\"o\">&lt;<\/span><span class=\"nx\">FilterSelectProps<\/span><span class=\"o\">&gt;<\/span> <span class=\"o\">=<\/span> <span class=\"p\">({<\/span>\n  <span class=\"nx\">options<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">paramKey<\/span><span class=\"p\">,<\/span>\n  <span class=\"nx\">label<\/span><span class=\"p\">,<\/span>\n<span class=\"p\">})<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">pathname<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">usePathname<\/span><span class=\"p\">();<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">searchParams<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useSearchParams<\/span><span class=\"p\">();<\/span>\n  <span class=\"kd\">const<\/span> <span class=\"nx\">router<\/span> <span class=\"o\">=<\/span> <span class=\"nf\">useRouter<\/span><span class=\"p\">();<\/span>\n\n  <span class=\"kd\">const<\/span> <span class=\"nx\">handleChange<\/span> <span class=\"o\">=<\/span> <span class=\"p\">(<\/span><span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"nx\">string<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">const<\/span> <span class=\"nx\">params<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">URLSearchParams<\/span><span class=\"p\">(<\/span><span class=\"nx\">searchParams<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"dl\">'<\/span><span class=\"s1\">page<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">1<\/span><span class=\"dl\">'<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">set<\/span><span class=\"p\">(<\/span><span class=\"nx\">paramKey<\/span><span class=\"p\">,<\/span> <span class=\"nx\">value<\/span><span class=\"p\">);<\/span>\n    <span class=\"nx\">router<\/span><span class=\"p\">.<\/span><span class=\"nf\">replace<\/span><span class=\"p\">(<\/span><span class=\"s2\">`<\/span><span class=\"p\">${<\/span><span class=\"nx\">pathname<\/span><span class=\"p\">}<\/span><span class=\"s2\">?<\/span><span class=\"p\">${<\/span><span class=\"nx\">params<\/span><span class=\"p\">.<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()}<\/span><span class=\"s2\">`<\/span><span class=\"p\">);<\/span>\n  <span class=\"p\">};<\/span>\n\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;<\/span><span class=\"nt\">form<\/span> <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"w-[10%] bg-neutral-400 px-2 py-1 rounded-md\"<\/span><span class=\"p\">&gt;<\/span>\n      <span class=\"p\">&lt;<\/span><span class=\"nt\">select<\/span>\n        <span class=\"na\">className<\/span><span class=\"p\">=<\/span><span class=\"s\">\"bg-neutral-400 w-full\"<\/span>\n        <span class=\"na\">onChange<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"nf\">handleChange<\/span><span class=\"p\">(<\/span><span class=\"nx\">e<\/span><span class=\"p\">.<\/span><span class=\"nx\">target<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"p\">)<\/span><span class=\"si\">}<\/span>\n        <span class=\"na\">defaultValue<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">searchParams<\/span><span class=\"p\">.<\/span><span class=\"nf\">get<\/span><span class=\"p\">(<\/span><span class=\"nx\">paramKey<\/span><span class=\"p\">)<\/span> <span class=\"o\">||<\/span> <span class=\"dl\">''<\/span><span class=\"si\">}<\/span>\n      <span class=\"p\">&gt;<\/span>\n        <span class=\"p\">&lt;<\/span><span class=\"nt\">option<\/span> <span class=\"na\">value<\/span><span class=\"p\">=<\/span><span class=\"s\">\"\"<\/span><span class=\"p\">&gt;<\/span><span class=\"si\">{<\/span><span class=\"nx\">label<\/span><span class=\"si\">}<\/span>:<span class=\"p\"\/><span class=\"nt\">option<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"si\">{<\/span><span class=\"nx\">options<\/span><span class=\"p\">.<\/span><span class=\"nf\">map<\/span><span class=\"p\">((<\/span><span class=\"nx\">option<\/span><span class=\"p\">,<\/span> <span class=\"nx\">index<\/span><span class=\"p\">)<\/span> <span class=\"o\">=&gt;<\/span> <span class=\"p\">(<\/span>\n          <span class=\"p\">&lt;<\/span><span class=\"nt\">option<\/span> <span class=\"na\">key<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">index<\/span><span class=\"si\">}<\/span> <span class=\"na\">value<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">option<\/span><span class=\"p\">.<\/span><span class=\"nx\">value<\/span><span class=\"si\">}<\/span><span class=\"p\">&gt;<\/span>\n            <span class=\"si\">{<\/span><span class=\"nx\">option<\/span><span class=\"p\">.<\/span><span class=\"nx\">name<\/span><span class=\"si\">}<\/span>\n          <span class=\"p\"\/><span class=\"nt\">option<\/span><span class=\"p\">&gt;<\/span>\n        <span class=\"p\">))<\/span><span class=\"si\">}<\/span>\n      <span class=\"p\"\/><span class=\"nt\">select<\/span><span class=\"p\">&gt;<\/span>\n    <span class=\"p\"\/><span class=\"nt\">form<\/span><span class=\"p\">&gt;<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">};<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">STATUS<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">airing<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Airing<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">upcoming<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Upcoming<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">complete<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Complete<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n<span class=\"p\">];<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">TYPE<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">tv<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">TV<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">movie<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Movie<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">ova<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">OVA<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">special<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Special<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">ona<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">ONA<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">music<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Music<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">cm<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">CM<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">pv<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">PV<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">tv_special<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">TV Special<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n<span class=\"p\">];<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">ORDER_BY<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">mal_id<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Mal id<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">title<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Title<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">start_date<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Start date<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">end_date<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">End date<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">episodes<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Episodes<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">score<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Score<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">scored_by<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Scored by<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">rank<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Rank<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">popularity<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Popularity<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">members<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Members<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">favorites<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Favorites<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n<span class=\"p\">];<\/span>\n\n<span class=\"kd\">const<\/span> <span class=\"nx\">SORT_DIRECTION<\/span> <span class=\"o\">=<\/span> <span class=\"p\">[<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">asc<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Ascending<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n  <span class=\"p\">{<\/span> <span class=\"na\">value<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">desc<\/span><span class=\"dl\">'<\/span><span class=\"p\">,<\/span> <span class=\"na\">name<\/span><span class=\"p\">:<\/span> <span class=\"dl\">'<\/span><span class=\"s1\">Descending<\/span><span class=\"dl\">'<\/span> <span class=\"p\">},<\/span>\n<span class=\"p\">];<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">FilterByStatus<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">return<\/span> <span class=\"p\">&lt;<\/span><span class=\"nc\">FilterSelect<\/span> <span class=\"na\">options<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">STATUS<\/span><span class=\"si\">}<\/span> <span class=\"na\">paramKey<\/span><span class=\"p\">=<\/span><span class=\"s\">\"status\"<\/span> <span class=\"na\">label<\/span><span class=\"p\">=<\/span><span class=\"s\">\"Status\"<\/span> <span class=\"p\">\/&gt;;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">FilterByType<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">return<\/span> <span class=\"p\">&lt;<\/span><span class=\"nc\">FilterSelect<\/span> <span class=\"na\">options<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">TYPE<\/span><span class=\"si\">}<\/span> <span class=\"na\">paramKey<\/span><span class=\"p\">=<\/span><span class=\"s\">\"type\"<\/span> <span class=\"na\">label<\/span><span class=\"p\">=<\/span><span class=\"s\">\"Type\"<\/span> <span class=\"p\">\/&gt;;<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">SortByOrder<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">return <\/span><span class=\"p\">(<\/span>\n    <span class=\"p\">&lt;<\/span><span class=\"nc\">FilterSelect<\/span> <span class=\"na\">options<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">ORDER_BY<\/span><span class=\"si\">}<\/span> <span class=\"na\">paramKey<\/span><span class=\"p\">=<\/span><span class=\"s\">\"order_by\"<\/span> <span class=\"na\">label<\/span><span class=\"p\">=<\/span><span class=\"s\">\"Order by\"<\/span> <span class=\"p\">\/&gt;<\/span>\n  <span class=\"p\">);<\/span>\n<span class=\"p\">}<\/span>\n\n<span class=\"k\">export<\/span> <span class=\"kd\">function<\/span> <span class=\"nf\">SortDirection<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span>\n  <span class=\"k\">return<\/span> <span class=\"p\">&lt;<\/span><span class=\"nc\">FilterSelect<\/span> <span class=\"na\">options<\/span><span class=\"p\">=<\/span><span class=\"si\">{<\/span><span class=\"nx\">SORT_DIRECTION<\/span><span class=\"si\">}<\/span> <span class=\"na\">paramKey<\/span><span class=\"p\">=<\/span><span class=\"s\">\"sort\"<\/span> <span class=\"na\">label<\/span><span class=\"p\">=<\/span><span class=\"s\">\"Sort\"<\/span> <span class=\"p\">\/&gt;;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0635\u0641\u062d\u0647 \u0627\u0635\u0644\u06cc \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u062f \u0648 \u0641\u06cc\u0644\u062a\u0631 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f \u0648 \u0627\u062c\u0632\u0627\u06cc \u0622\u0646 \u0631\u0627 \u0645\u0631\u062a\u0628 \u06a9\u0646\u06cc\u062f <code>FilterSelect<\/code><\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AA%D9%88%D8%B6%DB%8C%D8%AD\"><\/span>\n<p>  \u062a\u0648\u0636\u06cc\u062d<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>usePathname\u060c useSearchParams\u060c \u0648 useRouterHooks<\/strong><br \/>\u0627\u06cc\u0646 \u0642\u0644\u0627\u0628\u200c\u0647\u0627 \u0627\u0632 next\/navigation \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0648\u0636\u0639\u06cc\u062a\u200c\u0647\u0627\u06cc URL \u0636\u0631\u0648\u0631\u06cc \u0647\u0633\u062a\u0646\u062f:<\/p>\n<ul>\n<li>\n<code>usePathname<\/code>: \u0645\u0633\u06cc\u0631 \u0641\u0639\u0644\u06cc URL \u0631\u0627 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\n<code>useSearchParams<\/code>: \u0628\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u067e\u0631\u0633 \u0648 \u062c\u0648 \u062f\u0633\u062a\u0631\u0633\u06cc \u0648 \u062f\u0633\u062a\u06a9\u0627\u0631\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\n<code>useRouter<\/code>: \u062a\u0648\u0627\u0628\u0639 \u0645\u0633\u06cc\u0631\u06cc\u0627\u0628\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u067e\u06cc\u0645\u0627\u06cc\u0634 \u06cc\u0627 \u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0628\u0631\u0646\u0627\u0645\u0647\u200c\u0627\u06cc URL\u0647\u0627 (\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06cc\u0627 \u0641\u0634\u0627\u0631) \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f.<\/li>\n<\/ul>\n<p><strong>\u0628\u0631\u06af\u0634\u062a \u0628\u0647 \u062a\u0645\u0627\u0633 \u062f\u0631 \u0645\u0624\u0644\u0641\u0647 \u062c\u0633\u062a\u062c\u0648<\/strong><br \/>\u0631\u0627 <code>useDebouncedCallback<\/code> \u062a\u0627\u0628\u0639 \u0627\u062c\u0631\u0627\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062c\u0633\u062a\u062c\u0648 \u0631\u0627 \u0628\u0647 \u062a\u0627\u062e\u06cc\u0631 \u0645\u06cc \u0627\u0646\u062f\u0627\u0632\u062f:<\/p>\n<ul>\n<li>\u0628\u0627 \u0627\u0646\u062a\u0638\u0627\u0631 \u0628\u0631\u0627\u06cc \u0645\u062f\u062a \u0632\u0645\u0627\u0646 \u0645\u0634\u062e\u0635 (500 \u0645\u06cc\u0644\u06cc \u062b\u0627\u0646\u06cc\u0647) \u0627\u0632 \u062a\u0645\u0627\u0633 \u0647\u0627\u06cc \u0628\u06cc\u0634 \u0627\u0632 \u062d\u062f API \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0647\u062a\u0631 \u0648 \u062a\u062c\u0631\u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0631\u0648\u0627\u0646 \u062a\u0631 \u0631\u0627 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<\/ul>\n<p><strong>\u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u067e\u0648\u06cc\u0627 URL<\/strong><br \/>\u0628\u0647\u200c\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc\u200c\u0647\u0627\u06cc \u067e\u0648\u06cc\u0627 \u0628\u0631\u0627\u06cc \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc URL\u060c \u0646\u0627\u0648\u0628\u0631\u06cc \u0631\u0648\u0627\u0646 \u0648 \u062f\u0631 \u0633\u0645\u062a \u0645\u0634\u062a\u0631\u06cc \u0631\u0627 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc\u200c\u06a9\u0646\u062f:<\/p>\n<ul>\n<li>\n<code>replace()<\/code>  URL \u0631\u0627 \u0628\u062f\u0648\u0646 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0645\u062c\u062f\u062f \u0635\u0641\u062d\u0647 \u0628\u0647 \u0631\u0648\u0632 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\u062a\u0627\u0631\u06cc\u062e\u0686\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u0631\u0627 \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0645\u0646\u0639\u06a9\u0633 \u0645\u06cc \u06a9\u0646\u062f\u060c \u062a\u0645\u06cc\u0632 \u0646\u06af\u0647 \u0645\u06cc \u062f\u0627\u0631\u062f <code>filter<\/code>\u060c <code>sort<\/code>\u060c \u0648 <code>pagination<\/code> \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<\/ul>\n<p><strong>\u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a AnimeList \u0648 \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627<\/strong><br \/>\u062c\u0632\u0621 AnimeList \u0634\u0627\u0645\u0644 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0627\u0633\u062a:<\/p>\n<ul>\n<li>\u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0627\u0632 API Jikan (<code>getAllAnime()<\/code>).<\/li>\n<\/ul>\n<p><strong>\u06a9\u0627\u0645\u067e\u0648\u0646\u0646\u062a FilterSelect \u0642\u0627\u0628\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f<\/strong><br \/>\u0631\u0627 <code>FilterSelect<\/code>\u062c\u0632\u0621:<\/p>\n<ul>\n<li>\u0639\u0645\u0644\u06a9\u0631\u062f \u06a9\u0634\u0648\u06cc\u06cc \u0686\u06a9\u06cc\u062f\u0647 \u0628\u0631\u0627\u06cc \u0641\u06cc\u0644\u062a\u0631\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f <code>status<\/code>\u060c <code>type<\/code>\u060c <code>order_by<\/code>\u060c \u0648 <code>sort<\/code>.<\/li>\n<li>\u06a9\u062f \u0631\u0627 \u0628\u0627 \u06a9\u0627\u0647\u0634 \u0627\u0641\u0632\u0648\u0646\u06af\u06cc \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u0633\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f <code>filter<\/code>\u0648 <code>sort<\/code>\u0627\u062c\u0632\u0627\u0621<\/li>\n<\/ul>\n<p><strong>\u0645\u062f\u06cc\u0631\u06cc\u062a \u0635\u0641\u062d\u0647 \u0628\u0646\u062f\u06cc<\/strong><br \/>\u062c\u0632\u0621 \u0635\u0641\u062d\u0647 \u0628\u0646\u062f\u06cc:<\/p>\n<ul>\n<li>\u0628\u0647 \u0635\u0648\u0631\u062a \u067e\u0648\u06cc\u0627 \u0644\u06cc\u0646\u06a9 \u0647\u0627\u06cc \u0646\u0627\u0648\u0628\u0631\u06cc (<code>Prev<\/code> \u0648 <code>Next<\/code>) \u0628\u0631 \u0627\u0633\u0627\u0633 <code>currentPage<\/code> \u0648 <code>totalPages<\/code>.<\/li>\n<li>\u062f\u06a9\u0645\u0647 \u0647\u0627 \u0631\u0627 \u0647\u0646\u06af\u0627\u0645 \u0631\u0633\u06cc\u062f\u0646 \u0628\u0647 \u0635\u0641\u062d\u0647 \u0627\u0648\u0644 \u06cc\u0627 \u0622\u062e\u0631 \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<\/ul>\n<p><strong>\u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0648\u0631\u0648\u062f\u06cc \u0631\u0627 \u0645\u062d\u062f\u0648\u062f \u06a9\u0646\u06cc\u062f<\/strong><br \/>\u0645\u0624\u0644\u0641\u0647 Limit \u0648\u0631\u0648\u062f\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u062a\u0639\u062f\u0627\u062f \u0646\u062a\u0627\u06cc\u062c \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc \u06a9\u0646\u062f:<\/p>\n<ul>\n<li>\u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0645\u0642\u062f\u0627\u0631 \u0628\u06cc\u0646 1 \u0648 25 \u0627\u0633\u062a.<\/li>\n<li>URL \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u067e\u0648\u06cc\u0627 \u0628\u0647 \u0631\u0648\u0632 \u0645\u06cc \u06a9\u0646\u062f \u06cc\u0627 \u0627\u06af\u0631 \u0648\u0631\u0648\u062f\u06cc \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0628\u0627\u0634\u062f\u060c \u0628\u0627\u0632\u0646\u0634\u0627\u0646\u06cc \u0645\u06cc \u0634\u0648\u062f.<\/li>\n<\/ul>\n<p><strong>\u062a\u0639\u0644\u06cc\u0642 \u0628\u0631\u0627\u06cc \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627<\/strong><br \/>\u062c\u0632\u0621 Suspense \u0628\u0631\u0627\u06cc \u0645\u062f\u06cc\u0631\u06cc\u062a \u0631\u0646\u062f\u0631 \u0646\u0627\u0647\u0645\u0632\u0645\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f:<\/p>\n<ul>\n<li>\u0646\u0634\u0627\u0646\u06af\u0631 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0645\u062c\u062f\u062f \u0631\u0627 \u062f\u0631 \u062d\u06cc\u0646 \u0627\u0646\u062a\u0638\u0627\u0631 \u0628\u0631\u0627\u06cc \u062f\u0627\u062f\u0647 \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f.<\/li>\n<li>\u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 UI \u062f\u0631 \u0637\u0648\u0644 \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627 \u067e\u0627\u0633\u062e\u06af\u0648 \u0628\u0627\u0642\u06cc \u0645\u06cc \u0645\u0627\u0646\u062f.<\/li>\n<\/ul>\n<p>\u0648 \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0627\u0633\u062a:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frpyzv2omuyj3swjxjiq6.png\" alt=\"\u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0628\u06cc\u0647 1 \u0627\u0633\u062a\" loading=\"lazy\" width=\"800\" height=\"407\" title=\"\"><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fafdyh6f3ivntqymqky5w.png\" alt=\"\u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0628\u06cc\u0647 2 \u0627\u0633\u062a\" loading=\"lazy\" width=\"720\" height=\"366\" title=\"\"><\/p>\n<p>\u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<br \/>\u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062c\u0627\u0645\u0639\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u062d\u0648\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0636\u0631\u0648\u0631\u06cc \u0627\u0631\u0627\u0626\u0647 \u06a9\u0631\u062f\u0647 \u0628\u0627\u0634\u062f <strong>\u062c\u0633\u062a\u062c\u0648 \u06a9\u0646\u06cc\u062f<\/strong>\u060c <strong>\u0635\u0641\u062d\u0647 \u0628\u0646\u062f\u06cc<\/strong>\u060c <strong>\u0641\u06cc\u0644\u062a\u0631 \u06a9\u0631\u062f\u0646<\/strong>\u060c <strong>\u0645\u0631\u062a\u0628 \u0633\u0627\u0632\u06cc<\/strong>\u060c \u0648 <strong>\u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u062a\u06cc\u062c\u0647<\/strong> \u062f\u0631 \u06cc\u06a9 <strong>Next.js<\/strong> \u06a9\u0627\u0631\u0628\u0631\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u06a9\u0627\u0648\u0634\u060c \u0634\u0628\u06cc\u0647 \u0633\u0627\u0632\u06cc\u060c \u06cc\u0627 \u0645\u0634\u0627\u0631\u06a9\u062a \u062f\u0631 \u067e\u0631\u0648\u0698\u0647 \u062f\u0631 github \u0631\u0627\u062d\u062a \u0628\u0627\u0634\u06cc\u062f. \u0645\u0646 \u0645\u0634\u062a\u0627\u0642\u0627\u0646\u0647 \u0645\u0646\u062a\u0638\u0631 \u0646\u0638\u0631\u0627\u062a \u0634\u0645\u0627 \u0647\u0633\u062a\u0645 \u0648 \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0628\u0647 \u0634\u0645\u0627 \u062f\u0631 \u0633\u0641\u0631 \u062a\u0648\u0633\u0639\u0647 \u0634\u0645\u0627 \u06a9\u0645\u06a9 \u06a9\u0646\u062f!<\/p>\n<p>\u0645\u0631\u0627\u062c\u0639:<br \/>https:\/\/nextjs.org\/learn\/dashboard-app\/adding-search-and-pagination<br \/>https:\/\/nextjs.org\/docs\/app\/api-reference\/functions\/use-search-params<br \/>https:\/\/docs.api.jikan.moe\/<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u0645 \u0646\u062d\u0648\u0647 \u0645\u062f\u06cc\u0631\u06cc\u062a API\u0647\u0627 \u0631\u0627 \u062f\u0631 a \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u0628\u06af\u0630\u0627\u0631\u0645 Next.js \u06a9\u0627\u0631\u0628\u0631\u062f\u060c \u0627\u0632 \u062c\u0645\u0644\u0647 \u0648\u0627\u06a9\u0634\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u060c \u0646\u0645\u0627\u06cc\u0634 \u0622\u0646\u200c\u0647\u0627 \u0648 \u0627\u062c\u0631\u0627\u06cc \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f \u062c\u0633\u062a\u062c\u0648\u060c \u0635\u0641\u062d\u0647\u200c\u0628\u0646\u062f\u06cc\u060c \u0641\u06cc\u0644\u062a\u0631 \u06a9\u0631\u062f\u0646\u060c \u0645\u0631\u062a\u0628\u200c\u0633\u0627\u0632\u06cc \u0648 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062f\u0646 \u0646\u062a\u0627\u06cc\u062c. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u0648\u0627\u0631\u062f \u062c\u0632\u0626\u06cc\u0627\u062a \u0634\u0648\u06cc\u0645. \u0627\u0644\u0632\u0627\u0645\u0627\u062a: Next.js 14.2.18 Axios 1.7.8 \u0627\u0632 debounce &hellip;<\/p>\n","protected":false},"author":2,"featured_media":86291,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-86290","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/86290","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=86290"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/86290\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/86291"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=86290"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=86290"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=86290"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}