| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | 
							- import type { FC } from 'react'
 
- import { useTranslation } from 'react-i18next'
 
- import Switch from '@/app/components/base/switch'
 
- import type { ModerationContentConfig } from '@/models/debug'
 
- type ModerationContentProps = {
 
-   title: string
 
-   info?: string
 
-   showPreset?: boolean
 
-   config: ModerationContentConfig
 
-   onConfigChange: (config: ModerationContentConfig) => void
 
- }
 
- const ModerationContent: FC<ModerationContentProps> = ({
 
-   title,
 
-   info,
 
-   showPreset = true,
 
-   config,
 
-   onConfigChange,
 
- }) => {
 
-   const { t } = useTranslation()
 
-   const handleConfigChange = (field: string, value: boolean | string) => {
 
-     if (field === 'preset_response' && typeof value === 'string')
 
-       value = value.slice(0, 100)
 
-     onConfigChange({ ...config, [field]: value })
 
-   }
 
-   return (
 
-     <div className='py-2'>
 
-       <div className='rounded-lg bg-gray-50 border border-gray-200'>
 
-         <div className='flex items-center justify-between px-3 h-10 rounded-lg'>
 
-           <div className='shrink-0 text-sm font-medium text-gray-900'>{title}</div>
 
-           <div className='grow flex items-center justify-end'>
 
-             {
 
-               info && (
 
-                 <div className='mr-2 text-xs text-gray-500 truncate' title={info}>{info}</div>
 
-               )
 
-             }
 
-             <Switch
 
-               size='l'
 
-               defaultValue={config.enabled}
 
-               onChange={v => handleConfigChange('enabled', v)}
 
-             />
 
-           </div>
 
-         </div>
 
-         {
 
-           config.enabled && showPreset && (
 
-             <div className='px-3 pt-1 pb-3 bg-white rounded-lg'>
 
-               <div className='flex items-center justify-between h-8 text-[13px] font-medium text-gray-700'>
 
-                 {t('appDebug.feature.moderation.modal.content.preset')}
 
-                 <span className='text-xs font-normal text-gray-500'>{t('appDebug.feature.moderation.modal.content.supportMarkdown')}</span>
 
-               </div>
 
-               <div className='relative px-3 py-2 h-20 rounded-lg bg-gray-100'>
 
-                 <textarea
 
-                   value={config.preset_response || ''}
 
-                   className='block w-full h-full bg-transparent text-sm outline-none appearance-none resize-none'
 
-                   placeholder={t('appDebug.feature.moderation.modal.content.placeholder') || ''}
 
-                   onChange={e => handleConfigChange('preset_response', e.target.value)}
 
-                 />
 
-                 <div className='absolute bottom-2 right-2 flex items-center px-1 h-5 rounded-md bg-gray-50 text-xs font-medium text-gray-300'>
 
-                   <span>{(config.preset_response || '').length}</span>/<span className='text-gray-500'>100</span>
 
-                 </div>
 
-               </div>
 
-             </div>
 
-           )
 
-         }
 
-       </div>
 
-     </div>
 
-   )
 
- }
 
- export default ModerationContent
 
 
  |