import { useState, useMemo } from "react"; import { Group, MultiSelect, Select, Space, TextInput } from "@mantine/core"; import { useDebouncedValue } from "@mantine/hooks"; import { Helmet } from "react-helmet-async"; import { useTranslation } from "react-i18next"; import { IconSearch } from "@tabler/icons-react"; import SettingsTitle from "@/components/settings/settings-title"; import { getAppName } from "@/lib/config"; import Paginate from "@/components/common/paginate"; import { useCursorPaginate } from "@/hooks/use-cursor-paginate"; import { useVerificationListQuery } from "@/ee/page-verification/queries/page-verification-query"; import { IVerificationListParams } from "@/ee/page-verification/types/page-verification.types"; import VerificationListTable from "@/ee/page-verification/components/verification-list-table"; import { useGetSpacesQuery } from "@/features/space/queries/space-query"; export default function VerifiedPages() { const { t } = useTranslation(); const { cursor, goNext, goPrev, resetCursor } = useCursorPaginate(); const [searchValue, setSearchValue] = useState(""); const [debouncedSearch] = useDebouncedValue(searchValue, 300); const [spaceFilter, setSpaceFilter] = useState([]); const [typeFilter, setTypeFilter] = useState(null); const { data: spacesData } = useGetSpacesQuery({ limit: 100 }); const spaceOptions = useMemo( () => spacesData?.items?.map((space) => ({ value: space.id, label: space.name, })) ?? [], [spacesData], ); const typeOptions = [ { value: "expiring", label: t("Expiring") }, { value: "qms", label: t("QMS") }, ]; const params: IVerificationListParams = useMemo( () => ({ cursor, limit: 50, spaceIds: spaceFilter.length > 0 ? spaceFilter : undefined, type: typeFilter as IVerificationListParams["type"], query: debouncedSearch || undefined, }), [cursor, spaceFilter, typeFilter, debouncedSearch], ); const { data, isLoading } = useVerificationListQuery(params); const handleSpaceChange = (value: string[]) => { setSpaceFilter(value); resetCursor(); }; const handleTypeChange = (value: string | null) => { setTypeFilter(value); resetCursor(); }; const handleSearchChange = (e: React.ChangeEvent) => { setSearchValue(e.currentTarget.value); resetCursor(); }; return ( <> {t("Verified pages")} - {getAppName()} } value={searchValue} onChange={handleSearchChange} size="sm" w={220} /> {/*