| 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; |
|
|