You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
979 B

"use client";
import { useSearchParams } from "next/navigation";
import { FC, useMemo } from "react";
import { SearchType, SearchTypeModel } from "@/client/typings/search/options";
import { Container } from "@/components/Container";
import { Search } from "@/components/Search";
import { SearchPageBody } from "./SearchPageBody";
export const SearchPage: FC = () => {
const searchParams = useSearchParams();
const query = useMemo(() => {
const param = searchParams.get("search_query");
if (param === null || param.length === 0) return;
return param;
}, [searchParams]);
const filter: SearchType = useMemo(() => {
const param = searchParams.get("filter");
const parsed = SearchTypeModel.safeParse(param);
if (!parsed.success) return "all";
return parsed.data;
}, [searchParams]);
return (
<>
<Container>
<Search query={query} filter={filter} />
{query && <SearchPageBody query={query} filter={filter} />}
</Container>
</>
);
};