@ragrabbit/mcp

by madarco
Verified
"use client"; import { useChat } from "ai/react"; import { createContext, useContext, useState } from "react"; export interface ChatContextType { chat: ReturnType<typeof useChat>; /** When using the agentic mode with tools */ agentMode: boolean; welcomeMessage: string; suggestedQueries: string[]; logoUrl: string; /** When inside a modal */ modalMode: boolean; setAgentMode: (mode: boolean) => void; setWelcomeMessage: (message: string) => void; setSuggestedQueries: (queries: string[]) => void; setLogoUrl: (url: string) => void; setChat: (chat: ReturnType<typeof useChat>) => void; setModalMode: (mode: boolean) => void; } const ChatContext = createContext<ChatContextType | undefined>(undefined); function useChatConfig() { const context = useContext(ChatContext); if (context === undefined) { throw new Error("useChatConfig must be used within a ChatConfigProvider"); } return context; } interface ChatConfigProviderProps { children: React.ReactNode; initialData?: Partial<ChatContextType>; } function ChatConfigProvider({ children, initialData = {} }: ChatConfigProviderProps) { const [agentMode, setAgentMode] = useState(initialData.agentMode ?? false); const [welcomeMessage, setWelcomeMessage] = useState(initialData.welcomeMessage ?? ""); const [suggestedQueries, setSuggestedQueries] = useState<string[]>(initialData.suggestedQueries ?? []); const [logoUrl, setLogoUrl] = useState(initialData.logoUrl ?? ""); const [chat, setChat] = useState<ReturnType<typeof useChat> | undefined>(undefined); const [modalMode, setModalMode] = useState(initialData.modalMode ?? false); const value = { agentMode, welcomeMessage, suggestedQueries, logoUrl, setAgentMode, setWelcomeMessage, setSuggestedQueries, setLogoUrl, chat, setChat, modalMode, setModalMode, }; return <ChatContext.Provider value={value}>{children}</ChatContext.Provider>; } export { ChatConfigProvider, useChatConfig };