| 
														
															@@ -4,21 +4,25 @@ import React, { useEffect, useState } from 'react' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import { ChevronRightIcon } from '@heroicons/react/20/solid' 
														 | 
														
														 | 
														
															 import { ChevronRightIcon } from '@heroicons/react/20/solid' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import Link from 'next/link' 
														 | 
														
														 | 
														
															 import Link from 'next/link' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import { Trans, useTranslation } from 'react-i18next' 
														 | 
														
														 | 
														
															 import { Trans, useTranslation } from 'react-i18next' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import { useContextSelector } from 'use-context-selector' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import s from './style.module.css' 
														 | 
														
														 | 
														
															 import s from './style.module.css' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import Modal from '@/app/components/base/modal' 
														 | 
														
														 | 
														
															 import Modal from '@/app/components/base/modal' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import Button from '@/app/components/base/button' 
														 | 
														
														 | 
														
															 import Button from '@/app/components/base/button' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import AppIcon from '@/app/components/base/app-icon' 
														 | 
														
														 | 
														
															 import AppIcon from '@/app/components/base/app-icon' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import Switch from '@/app/components/base/switch' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import { SimpleSelect } from '@/app/components/base/select' 
														 | 
														
														 | 
														
															 import { SimpleSelect } from '@/app/components/base/select' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import type { AppDetailResponse } from '@/models/app' 
														 | 
														
														 | 
														
															 import type { AppDetailResponse } from '@/models/app' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-import type { AppIconType, Language } from '@/types/app' 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import type { AppIconType, AppSSO, Language } from '@/types/app' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import { useToastContext } from '@/app/components/base/toast' 
														 | 
														
														 | 
														
															 import { useToastContext } from '@/app/components/base/toast' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import { languages } from '@/i18n/language' 
														 | 
														
														 | 
														
															 import { languages } from '@/i18n/language' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import TooltipPlus from '@/app/components/base/tooltip-plus' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import AppContext from '@/context/app-context' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import type { AppIconSelection } from '@/app/components/base/app-icon-picker' 
														 | 
														
														 | 
														
															 import type { AppIconSelection } from '@/app/components/base/app-icon-picker' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import AppIconPicker from '@/app/components/base/app-icon-picker' 
														 | 
														
														 | 
														
															 import AppIconPicker from '@/app/components/base/app-icon-picker' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 export type ISettingsModalProps = { 
														 | 
														
														 | 
														
															 export type ISettingsModalProps = { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   isChat: boolean 
														 | 
														
														 | 
														
															   isChat: boolean 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  appInfo: AppDetailResponse 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  appInfo: AppDetailResponse & Partial<AppSSO> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   isShow: boolean 
														 | 
														
														 | 
														
															   isShow: boolean 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   defaultValue?: string 
														 | 
														
														 | 
														
															   defaultValue?: string 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   onClose: () => void 
														 | 
														
														 | 
														
															   onClose: () => void 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -39,6 +43,7 @@ export type ConfigParams = { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   icon: string 
														 | 
														
														 | 
														
															   icon: string 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   icon_background?: string 
														 | 
														
														 | 
														
															   icon_background?: string 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   show_workflow_steps: boolean 
														 | 
														
														 | 
														
															   show_workflow_steps: boolean 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  enable_sso?: boolean 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 const prefixSettings = 'appOverview.overview.appInfo.settings' 
														 | 
														
														 | 
														
															 const prefixSettings = 'appOverview.overview.appInfo.settings' 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -50,6 +55,7 @@ const SettingsModal: FC<ISettingsModalProps> = ({ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   onClose, 
														 | 
														
														 | 
														
															   onClose, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   onSave, 
														 | 
														
														 | 
														
															   onSave, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 }) => { 
														 | 
														
														 | 
														
															 }) => { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  const systemFeatures = useContextSelector(AppContext, state => state.systemFeatures) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   const { notify } = useToastContext() 
														 | 
														
														 | 
														
															   const { notify } = useToastContext() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   const [isShowMore, setIsShowMore] = useState(false) 
														 | 
														
														 | 
														
															   const [isShowMore, setIsShowMore] = useState(false) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   const { 
														 | 
														
														 | 
														
															   const { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -76,6 +82,7 @@ const SettingsModal: FC<ISettingsModalProps> = ({ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     privacyPolicy: privacy_policy, 
														 | 
														
														 | 
														
															     privacyPolicy: privacy_policy, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     customDisclaimer: custom_disclaimer, 
														 | 
														
														 | 
														
															     customDisclaimer: custom_disclaimer, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     show_workflow_steps, 
														 | 
														
														 | 
														
															     show_workflow_steps, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    enable_sso: appInfo.enable_sso, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   }) 
														 | 
														
														 | 
														
															   }) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   const [language, setLanguage] = useState(default_language) 
														 | 
														
														 | 
														
															   const [language, setLanguage] = useState(default_language) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   const [saveLoading, setSaveLoading] = useState(false) 
														 | 
														
														 | 
														
															   const [saveLoading, setSaveLoading] = useState(false) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -98,6 +105,7 @@ const SettingsModal: FC<ISettingsModalProps> = ({ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       privacyPolicy: privacy_policy, 
														 | 
														
														 | 
														
															       privacyPolicy: privacy_policy, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       customDisclaimer: custom_disclaimer, 
														 | 
														
														 | 
														
															       customDisclaimer: custom_disclaimer, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       show_workflow_steps, 
														 | 
														
														 | 
														
															       show_workflow_steps, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      enable_sso: appInfo.enable_sso, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     }) 
														 | 
														
														 | 
														
															     }) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     setLanguage(default_language) 
														 | 
														
														 | 
														
															     setLanguage(default_language) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     setAppIcon(icon_type === 'image' 
														 | 
														
														 | 
														
															     setAppIcon(icon_type === 'image' 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -149,6 +157,7 @@ const SettingsModal: FC<ISettingsModalProps> = ({ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       icon: appIcon.type === 'emoji' ? appIcon.icon : appIcon.fileId, 
														 | 
														
														 | 
														
															       icon: appIcon.type === 'emoji' ? appIcon.icon : appIcon.fileId, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       icon_background: appIcon.type === 'emoji' ? appIcon.background : undefined, 
														 | 
														
														 | 
														
															       icon_background: appIcon.type === 'emoji' ? appIcon.background : undefined, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       show_workflow_steps: inputInfo.show_workflow_steps, 
														 | 
														
														 | 
														
															       show_workflow_steps: inputInfo.show_workflow_steps, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      enable_sso: inputInfo.enable_sso, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     await onSave?.(params) 
														 | 
														
														 | 
														
															     await onSave?.(params) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     setSaveLoading(false) 
														 | 
														
														 | 
														
															     setSaveLoading(false) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -219,9 +228,19 @@ const SettingsModal: FC<ISettingsModalProps> = ({ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															           <input className={`w-full mt-2 rounded-lg h-10 box-border px-3 ${s.projectName} bg-gray-100`} 
														 | 
														
														 | 
														
															           <input className={`w-full mt-2 rounded-lg h-10 box-border px-3 ${s.projectName} bg-gray-100`} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             value={inputInfo.chatColorTheme ?? ''} 
														 | 
														
														 | 
														
															             value={inputInfo.chatColorTheme ?? ''} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             onChange={onChange('chatColorTheme')} 
														 | 
														
														 | 
														
															             onChange={onChange('chatColorTheme')} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            placeholder= 'E.g #A020F0' 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            placeholder='E.g #A020F0' 
														 | 
													
												
											
												
													
														| 
														 | 
														
															           /> 
														 | 
														
														 | 
														
															           /> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         </>} 
														 | 
														
														 | 
														
															         </>} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        {systemFeatures.enable_web_sso_switch_component && <div className='w-full mt-8'> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+          <p className='system-xs-medium text-gray-500'>{t(`${prefixSettings}.sso.label`)}</p> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+          <div className='flex justify-between items-center'> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            <div className='font-medium system-sm-semibold flex-grow text-gray-900'>{t(`${prefixSettings}.sso.title`)}</div> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            <TooltipPlus disabled={systemFeatures.sso_enforced_for_web} popupContent={<div className='w-[180px]'>{t(`${prefixSettings}.sso.tooltip`)}</div>}> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+              <Switch disabled={!systemFeatures.sso_enforced_for_web} defaultValue={systemFeatures.sso_enforced_for_web && inputInfo.enable_sso} onChange={v => setInputInfo({ ...inputInfo, enable_sso: v })}></Switch> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            </TooltipPlus> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+          </div> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+          <p className='body-xs-regular text-gray-500'>{t(`${prefixSettings}.sso.description`)}</p> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        </div>} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         {!isShowMore && <div className='w-full cursor-pointer mt-8' onClick={() => setIsShowMore(true)}> 
														 | 
														
														 | 
														
															         {!isShowMore && <div className='w-full cursor-pointer mt-8' onClick={() => setIsShowMore(true)}> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															           <div className='flex justify-between'> 
														 | 
														
														 | 
														
															           <div className='flex justify-between'> 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             <div className={`font-medium ${s.settingTitle} flex-grow text-gray-900`}>{t(`${prefixSettings}.more.entry`)}</div> 
														 | 
														
														 | 
														
															             <div className={`font-medium ${s.settingTitle} flex-grow text-gray-900`}>{t(`${prefixSettings}.more.entry`)}</div> 
														 |