Spaces:
Running
Running
import { Alert } from "@mantine/core"; | |
import { IconInfoCircle } from "@tabler/icons-react"; | |
import { usePubSub } from "create-pubsub/react"; | |
import { | |
textSearchResultsPubSub, | |
textSearchStatePubSub, | |
} from "../../../../modules/pubSub"; | |
import SearchResultsList from "./SearchResultsList"; | |
import TextResultsLoadingState from "./TextResultsLoadingState"; | |
export default function TextSearchResults() { | |
const [searchState] = usePubSub(textSearchStatePubSub); | |
const [results] = usePubSub(textSearchResultsPubSub); | |
if (searchState === "running") { | |
return <TextResultsLoadingState />; | |
} | |
if (searchState === "completed") { | |
if (results.length > 0) { | |
return <SearchResultsList searchResults={results} />; | |
} | |
return ( | |
<Alert | |
variant="light" | |
color="yellow" | |
title="No results found" | |
icon={<IconInfoCircle />} | |
> | |
No text results found for your search query. | |
</Alert> | |
); | |
} | |
if (searchState === "failed") { | |
return ( | |
<Alert | |
variant="light" | |
color="red" | |
title="Search failed" | |
icon={<IconInfoCircle />} | |
> | |
Failed to fetch text results. Please try refreshing the page. | |
</Alert> | |
); | |
} | |
return null; | |
} | |