import React, { useEffect, useState } from 'react'; import { useRecoilValue } from 'recoil'; import { useCreatePresetMutation, EditPresetProps, TPreset } from 'librechat-data-provider'; import { Dialog, Input, Label } from '~/components/ui/'; import DialogTemplate from '~/components/ui/DialogTemplate'; import { cn, defaultTextPropsLabel, removeFocusOutlines, cleanupPreset } from '~/utils/'; import { useLocalize } from '~/hooks'; import store from '~/store'; const SaveAsPresetDialog = ({ open, onOpenChange, preset }: EditPresetProps) => { const [title, setTitle] = useState(preset?.title || 'My Preset'); const endpointsConfig = useRecoilValue(store.endpointsConfig); const createPresetMutation = useCreatePresetMutation(); const localize = useLocalize(); const submitPreset = () => { const _preset = cleanupPreset({ preset: { ...preset, title, }, endpointsConfig, }) as TPreset; createPresetMutation.mutate(_preset); }; useEffect(() => { setTitle(preset?.title || localize('com_endpoint_my_preset')); // eslint-disable-next-line react-hooks/exhaustive-deps }, [open]); return (
setTitle(e.target.value || '')} placeholder="Set a custom name for this preset" className={cn( defaultTextPropsLabel, 'flex h-10 max-h-10 w-full resize-none px-3 py-2', removeFocusOutlines, )} />
} selection={{ selectHandler: submitPreset, selectClasses: 'bg-green-600 hover:bg-green-700 dark:hover:bg-green-800 text-white', selectText: 'Save', }} />
); }; export default SaveAsPresetDialog;