import { memo, useState, } from 'react' import { RiAddLine, RiKey2Line, } from '@remixicon/react' import { useTranslation } from 'react-i18next' import AddOAuthButton from './authorize/add-oauth-button' import AddApiKeyButton from './authorize/add-api-key-button' import type { PluginPayload } from './types' import cn from '@/utils/classnames' import { PortalToFollowElem, PortalToFollowElemContent, PortalToFollowElemTrigger, } from '@/app/components/base/portal-to-follow-elem' export type CredentialConfigHeaderProps = { pluginPayload: PluginPayload canOAuth?: boolean canApiKey?: boolean hasOAuthClientConfigured?: boolean disabled?: boolean onCredentialAdded?: () => void onAddMenuOpenChange?: (open: boolean) => void } const CredentialConfigHeader = ({ pluginPayload, canOAuth, canApiKey, hasOAuthClientConfigured, disabled, onCredentialAdded, onAddMenuOpenChange, }: CredentialConfigHeaderProps) => { const { t } = useTranslation() const [showAddMenu, setShowAddMenu] = useState(false) const handleAddMenuOpenChange = (open: boolean) => { setShowAddMenu(open) onAddMenuOpenChange?.(open) } const addButtonDisabled = disabled || (!canOAuth && !canApiKey && !hasOAuthClientConfigured) return (
{t('plugin.auth.configuredCredentials.title')}
{t('plugin.auth.configuredCredentials.desc')}
{canOAuth && ( { setShowAddMenu(false) onCredentialAdded?.() }} /> )} {canApiKey && ( { setShowAddMenu(false) onCredentialAdded?.() }} /> )}
) } export default memo(CredentialConfigHeader)