import { Center, Container, Loader, Stack } from "@mantine/core"; import { usePubSub } from "create-pubsub/react"; import { Suspense } from "react"; import { lazy } from "react"; import { imageSearchStatePubSub, queryPubSub, settingsPubSub, textGenerationStatePubSub, textSearchStatePubSub, } from "../../../modules/pubSub"; import { searchAndRespond } from "../../../modules/textGeneration"; const AiResponseSection = lazy( () => import("../../AiResponse/AiResponseSection"), ); const SearchResultsSection = lazy( () => import("../../Search/Results/SearchResultsSection"), ); const MenuButton = lazy(() => import("./Menu/MenuButton")); const SearchForm = lazy(() => import("../../Search/Form/SearchForm")); const EnableAiResponsePrompt = lazy( () => import("../../AiResponse/EnableAiResponsePrompt"), ); export default function MainPage() { const [query, updateQuery] = usePubSub(queryPubSub); const [textSearchState] = usePubSub(textSearchStatePubSub); const [imageSearchState] = usePubSub(imageSearchStatePubSub); const [textGenerationState] = usePubSub(textGenerationStatePubSub); const [settings, setSettings] = usePubSub(settingsPubSub); const isQueryEmpty = query.length === 0; return ( } > } /> {!isQueryEmpty && ( <> {settings.showEnableAiResponsePrompt && ( { setSettings({ ...settings, showEnableAiResponsePrompt: false, enableAiResponse: true, }); searchAndRespond(); }} onDecline={() => { setSettings({ ...settings, showEnableAiResponsePrompt: false, enableAiResponse: false, }); }} /> )} {!settings.showEnableAiResponsePrompt && textGenerationState !== "idle" && ( )} {(textSearchState !== "idle" || imageSearchState !== "idle") && ( )} )} ); }