import clsx from "clsx"; import { InfoIcon, SearchIcon, XIcon } from "~/components/ui/icons/vendor"; import ColorBackgroundUtils from "~/utils/shared/colors/ColorBackgroundUtils"; import ColorFocusUtils from "~/utils/shared/colors/ColorFocusUtils"; import ColorFocusWithinUtils from "~/utils/shared/colors/ColorFocusWithinUtils"; import ColorPlaceholderUtils from "~/utils/shared/colors/ColorPlaceholderUtils"; import ColorRingUtils from "~/utils/shared/colors/ColorRingUtils"; import ColorTextUtils from "~/utils/shared/colors/ColorTextUtils"; import { KnowledgeBaseDto } from "../dtos/KnowledgeBaseDto"; import { Link, useLoaderData, useSearchParams } from "react-router"; import { useState, useEffect } from "react"; import { useDebounce } from "use-debounce"; import { KbSearchResultDto } from "../dtos/KbSearchResultDto"; import ColorBorderUtils from "~/utils/shared/colors/ColorBorderUtils"; import { Colors } from "~/application/enums/shared/Colors"; import { KbArticleDto } from "../dtos/KbArticleDto"; import ColorHoverUtils from "~/utils/shared/colors/ColorHoverUtils"; import { useTranslation } from "react-i18next"; export default function KbSearch({ kb, autoFocus }: { kb: KnowledgeBaseDto; autoFocus: boolean }) { const { t } = useTranslation(); let data = useLoaderData< | { search: KbSearchResultDto | undefined; } | undefined >(); let [search, setSearch] = useState(data?.search?.query); let [debouncedQuery] = useDebounce(search, 500); const [searchParams, setSearchParams] = useSearchParams(); useEffect(() => { if (debouncedQuery) { searchParams.set("q", debouncedQuery); } else { searchParams.delete("q"); } if (searchParams.toString()) { setSearchParams(searchParams); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [debouncedQuery]); return (
{t("knowledgeBase.search.tryDifferent")}