| 
                        123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 | 
                        - 'use client'
 - import type { FC } from 'react'
 - import React from 'react'
 - import { useTranslation } from 'react-i18next'
 - import cn from 'classnames'
 - import type { Credential } from '@/app/components/tools/types'
 - import Drawer from '@/app/components/base/drawer-plus'
 - import Button from '@/app/components/base/button'
 - import Radio from '@/app/components/base/radio/ui'
 - import { AuthType } from '@/app/components/tools/types'
 - 
 - type Props = {
 -   credential: Credential
 -   onChange: (credential: Credential) => void
 -   onHide: () => void
 - }
 - const keyClassNames = 'py-2 leading-5 text-sm font-medium text-gray-900'
 - 
 - type ItemProps = {
 -   text: string
 -   value: AuthType
 -   isChecked: boolean
 -   onClick: (value: AuthType) => void
 - }
 - 
 - const SelectItem: FC<ItemProps> = ({ text, value, isChecked, onClick }) => {
 -   return (
 -     <div
 -       className={cn(isChecked ? 'border-[2px] border-indigo-600 shadow-sm bg-white' : 'border border-gray-100', 'mb-2 flex items-center h-9 pl-3 w-[150px] rounded-xl bg-gray-25 hover:bg-gray-50 cursor-pointer space-x-2')}
 -       onClick={() => onClick(value)}
 -     >
 -       <Radio isChecked={isChecked} />
 -       <div className='text-sm font-normal text-gray-900'>{text}</div>
 - 
 -     </div>
 -   )
 - }
 - 
 - const ConfigCredential: FC<Props> = ({
 -   credential,
 -   onChange,
 -   onHide,
 - }) => {
 -   const { t } = useTranslation()
 -   const [tempCredential, setTempCredential] = React.useState<Credential>(credential)
 -   return (
 -     <Drawer
 -       isShow
 -       onHide={onHide}
 -       title={t('tools.createTool.authMethod.title')!}
 -       panelClassName='mt-2 !w-[520px]'
 -       maxWidthClassName='!max-w-[520px]'
 -       height='calc(100vh - 16px)'
 -       headerClassName='!border-b-black/5'
 -       body={
 -         <div className='pt-2 px-6'>
 -           <div className='space-y-4'>
 -             <div>
 -               <div className={keyClassNames}>{t('tools.createTool.authMethod.type')}</div>
 -               <div className='flex space-x-3'>
 -                 <SelectItem
 -                   text={t('tools.createTool.authMethod.types.none')}
 -                   value={AuthType.none}
 -                   isChecked={tempCredential.auth_type === AuthType.none}
 -                   onClick={value => setTempCredential({ ...tempCredential, auth_type: value })}
 -                 />
 -                 <SelectItem
 -                   text={t('tools.createTool.authMethod.types.api_key')}
 -                   value={AuthType.apiKey}
 -                   isChecked={tempCredential.auth_type === AuthType.apiKey}
 -                   onClick={value => setTempCredential({ ...tempCredential, auth_type: value })}
 -                 />
 -               </div>
 -             </div>
 -             {tempCredential.auth_type === AuthType.apiKey && (
 -               <>
 -                 <div>
 -                   <div className={keyClassNames}>{t('tools.createTool.authMethod.key')}</div>
 -                   <input
 -                     value={tempCredential.api_key_header}
 -                     onChange={e => setTempCredential({ ...tempCredential, api_key_header: e.target.value })}
 -                     className='w-full h-10 px-3 text-sm font-normal bg-gray-100 rounded-lg grow' />
 -                 </div>
 - 
 -                 <div>
 -                   <div className={keyClassNames}>{t('tools.createTool.authMethod.value')}</div>
 -                   <input
 -                     value={tempCredential.api_key_value}
 -                     onChange={e => setTempCredential({ ...tempCredential, api_key_value: e.target.value })}
 -                     className='w-full h-10 px-3 text-sm font-normal bg-gray-100 rounded-lg grow' />
 -                 </div>
 -               </>)}
 - 
 -           </div>
 - 
 -           <div className='mt-4 shrink-0 flex justify-end space-x-2 py-4'>
 -             <Button className='flex items-center h-8 !px-3 !text-[13px] font-medium !text-gray-700' onClick={onHide}>{t('common.operation.cancel')}</Button>
 -             <Button className='flex items-center h-8 !px-3 !text-[13px] font-medium' type='primary' onClick={() => {
 -               onChange(tempCredential)
 -               onHide()
 -             }}>{t('common.operation.save')}</Button>
 -           </div>
 -         </div>
 -       }
 -     />
 -   )
 - }
 - export default React.memo(ConfigCredential)
 
 
  |