import PropTypes from 'prop-types' import { useState } from 'react' import { createPortal } from 'react-dom' import { Box, Dialog, DialogContent, DialogTitle, Tabs, Tab } from '@mui/material' import { tabsClasses } from '@mui/material/Tabs' import SpeechToText from '@/ui-component/extended/SpeechToText' import RateLimit from '@/ui-component/extended/RateLimit' import AllowedDomains from '@/ui-component/extended/AllowedDomains' import ChatFeedback from '@/ui-component/extended/ChatFeedback' import AnalyseFlow from '@/ui-component/extended/AnalyseFlow' import StarterPrompts from '@/ui-component/extended/StarterPrompts' import Leads from '@/ui-component/extended/Leads' import FollowUpPrompts from '@/ui-component/extended/FollowUpPrompts' const CHATFLOW_CONFIGURATION_TABS = [ { label: 'Rate Limiting', id: 'rateLimiting' }, { label: 'Starter Prompts', id: 'conversationStarters' }, { label: 'Follow-up Prompts', id: 'followUpPrompts' }, { label: 'Speech to Text', id: 'speechToText' }, { label: 'Chat Feedback', id: 'chatFeedback' }, { label: 'Allowed Domains', id: 'allowedDomains' }, { label: 'Analyse Chatflow', id: 'analyseChatflow' }, { label: 'Leads', id: 'leads' } ] function TabPanel(props) { const { children, value, index, ...other } = props return ( ) } TabPanel.propTypes = { children: PropTypes.node, index: PropTypes.number.isRequired, value: PropTypes.number.isRequired } function a11yProps(index) { return { id: `chatflow-config-tab-${index}`, 'aria-controls': `chatflow-config-tabpanel-${index}` } } const ChatflowConfigurationDialog = ({ show, dialogProps, onCancel }) => { const portalElement = document.getElementById('portal') const [tabValue, setTabValue] = useState(0) const component = show ? (
{dialogProps.title}
setTabValue(value)} aria-label='tabs' variant='scrollable' scrollButtons='auto' > {CHATFLOW_CONFIGURATION_TABS.map((item, index) => ( ))} {CHATFLOW_CONFIGURATION_TABS.map((item, index) => ( {item.id === 'rateLimiting' && } {item.id === 'conversationStarters' ? : null} {item.id === 'followUpPrompts' ? : null} {item.id === 'speechToText' ? : null} {item.id === 'chatFeedback' ? : null} {item.id === 'allowedDomains' ? : null} {item.id === 'analyseChatflow' ? : null} {item.id === 'leads' ? : null} ))}
) : null return createPortal(component, portalElement) } ChatflowConfigurationDialog.propTypes = { show: PropTypes.bool, dialogProps: PropTypes.object, onCancel: PropTypes.func } export default ChatflowConfigurationDialog