'use client' import type { FC } from 'react' import type { Credential } from '@/app/components/tools/types' import * as React from 'react' import { useTranslation } from 'react-i18next' import Button from '@/app/components/base/button' import Drawer from '@/app/components/base/drawer-plus' import Input from '@/app/components/base/input' import Radio from '@/app/components/base/radio/ui' import Tooltip from '@/app/components/base/tooltip' import { AuthHeaderPrefix, AuthType } from '@/app/components/tools/types' import { cn } from '@/utils/classnames' type Props = { positionCenter?: boolean credential: Credential onChange: (credential: Credential) => void onHide: () => void } type ItemProps = { text: string value: AuthType | AuthHeaderPrefix isChecked: boolean onClick: (value: AuthType | AuthHeaderPrefix) => void } const SelectItem: FC = ({ text, value, isChecked, onClick }) => { return (
onClick(value)} >
{text}
) } const ConfigCredential: FC = ({ positionCenter, credential, onChange, onHide, }) => { const { t } = useTranslation() const [tempCredential, setTempCredential] = React.useState(credential) return (
{t('createTool.authMethod.type', { ns: 'tools' })}
setTempCredential({ auth_type: value as AuthType, })} /> setTempCredential({ auth_type: value as AuthType, api_key_header: tempCredential.api_key_header || 'Authorization', api_key_value: tempCredential.api_key_value || '', api_key_header_prefix: tempCredential.api_key_header_prefix || AuthHeaderPrefix.custom, })} /> setTempCredential({ auth_type: value as AuthType, api_key_query_param: tempCredential.api_key_query_param || 'key', api_key_value: tempCredential.api_key_value || '', })} />
{tempCredential.auth_type === AuthType.apiKeyHeader && ( <>
{t('createTool.authHeaderPrefix.title', { ns: 'tools' })}
setTempCredential({ ...tempCredential, api_key_header_prefix: value as AuthHeaderPrefix })} /> setTempCredential({ ...tempCredential, api_key_header_prefix: value as AuthHeaderPrefix })} /> setTempCredential({ ...tempCredential, api_key_header_prefix: value as AuthHeaderPrefix })} />
{t('createTool.authMethod.key', { ns: 'tools' })} {t('createTool.authMethod.keyTooltip', { ns: 'tools' })}
)} triggerClassName="ml-0.5 w-4 h-4" />
setTempCredential({ ...tempCredential, api_key_header: e.target.value })} placeholder={t('createTool.authMethod.types.apiKeyPlaceholder', { ns: 'tools' })!} />
{t('createTool.authMethod.value', { ns: 'tools' })}
setTempCredential({ ...tempCredential, api_key_value: e.target.value })} placeholder={t('createTool.authMethod.types.apiValuePlaceholder', { ns: 'tools' })!} />
)} {tempCredential.auth_type === AuthType.apiKeyQuery && ( <>
{t('createTool.authMethod.queryParam', { ns: 'tools' })} {t('createTool.authMethod.queryParamTooltip', { ns: 'tools' })}
)} triggerClassName="ml-0.5 w-4 h-4" />
setTempCredential({ ...tempCredential, api_key_query_param: e.target.value })} placeholder={t('createTool.authMethod.types.queryParamPlaceholder', { ns: 'tools' })!} />
{t('createTool.authMethod.value', { ns: 'tools' })}
setTempCredential({ ...tempCredential, api_key_value: e.target.value })} placeholder={t('createTool.authMethod.types.apiValuePlaceholder', { ns: 'tools' })!} />
)}
)} /> ) } export default React.memo(ConfigCredential)