import { EModelEndpoint } from 'librechat-data-provider'; import { MessagesSquared, GPTIcon } from '~/components/svg'; import { useRecoilState } from 'recoil'; import { Button } from '~/components'; import { cn } from '~/utils/'; import store from '~/store'; import { useLocalize } from '~/hooks'; type TPopoverButton = { label: string; buttonClass: string; handler: () => void; icon: React.ReactNode; }; export default function PopoverButtons({ endpoint, buttonClass, iconClass = '', }: { endpoint: EModelEndpoint | string; buttonClass?: string; iconClass?: string; }) { const localize = useLocalize(); const [optionSettings, setOptionSettings] = useRecoilState(store.optionSettings); const [showAgentSettings, setShowAgentSettings] = useRecoilState(store.showAgentSettings); const { showExamples, isCodeChat } = optionSettings; const triggerExamples = () => setOptionSettings((prev) => ({ ...prev, showExamples: !prev.showExamples })); const buttons: { [key: string]: TPopoverButton[] } = { google: [ { label: (showExamples ? localize('com_endpoint_hide') : localize('com_endpoint_show')) + localize('com_endpoint_examples'), buttonClass: isCodeChat ? 'disabled' : '', handler: triggerExamples, icon: , }, ], gptPlugins: [ { label: localize( 'com_endpoint_show_what_settings', showAgentSettings ? localize('com_endpoint_completion') : localize('com_endpoint_agent'), ), buttonClass: '', handler: () => setShowAgentSettings((prev) => !prev), icon: , }, ], }; const endpointButtons = buttons[endpoint]; if (!endpointButtons) { return null; } return (
{endpointButtons.map((button, index) => ( ))}
); }