helloya20's picture
Upload 2345 files
f0743f4 verified
import React, { useMemo } from 'react';
import * as DialogPrimitive from '@radix-ui/react-dialog';
import type { TPromptGroup } from 'librechat-data-provider';
import { OGDialog, OGDialogTitle, OGDialogContent } from '@librechat/client';
import { detectVariables } from '~/utils';
import VariableForm from './VariableForm';
interface VariableDialogProps extends Omit<DialogPrimitive.DialogProps, 'onOpenChange'> {
onClose: () => void;
group: TPromptGroup | null;
}
const VariableDialog: React.FC<VariableDialogProps> = ({ open, onClose, group }) => {
const handleOpenChange = (open: boolean) => {
if (!open) {
onClose();
}
};
const hasVariables = useMemo(
() => detectVariables(group?.productionPrompt?.prompt ?? ''),
[group?.productionPrompt?.prompt],
);
if (!group) {
return null;
}
if (!hasVariables) {
return null;
}
return (
<OGDialog open={open} onOpenChange={handleOpenChange}>
<OGDialogContent className="max-h-[90vh] max-w-full overflow-y-auto bg-white dark:border-gray-700 dark:bg-gray-850 dark:text-gray-300 md:max-w-[60vw]">
<OGDialogTitle>{group.name}</OGDialogTitle>
<VariableForm group={group} onClose={onClose} />
</OGDialogContent>
</OGDialog>
);
};
export default VariableDialog;