Files
claudecodeui/src/components/settings/view/tabs/api-settings/CredentialsSettingsTab.tsx

92 lines
2.8 KiB
TypeScript

import { useTranslation } from 'react-i18next';
import { useCredentialsSettings } from '../../../hooks/useCredentialsSettings';
import ApiKeysSection from './sections/ApiKeysSection';
import GithubCredentialsSection from './sections/GithubCredentialsSection';
import NewApiKeyAlert from './sections/NewApiKeyAlert';
export default function CredentialsSettingsTab() {
const { t } = useTranslation('settings');
const {
apiKeys,
githubCredentials,
loading,
showNewKeyForm,
setShowNewKeyForm,
newKeyName,
setNewKeyName,
showNewGithubForm,
setShowNewGithubForm,
newGithubName,
setNewGithubName,
newGithubToken,
setNewGithubToken,
newGithubDescription,
setNewGithubDescription,
showToken,
copiedKey,
newlyCreatedKey,
createApiKey,
deleteApiKey,
toggleApiKey,
createGithubCredential,
deleteGithubCredential,
toggleGithubCredential,
copyToClipboard,
dismissNewlyCreatedKey,
cancelNewApiKeyForm,
cancelNewGithubForm,
toggleNewGithubTokenVisibility,
} = useCredentialsSettings({
confirmDeleteApiKeyText: t('apiKeys.confirmDelete'),
confirmDeleteGithubCredentialText: t('apiKeys.github.confirmDelete'),
});
if (loading) {
return <div className="text-muted-foreground">{t('apiKeys.loading')}</div>;
}
return (
<div className="space-y-8">
{newlyCreatedKey && (
<NewApiKeyAlert
apiKey={newlyCreatedKey}
copiedKey={copiedKey}
onCopy={copyToClipboard}
onDismiss={dismissNewlyCreatedKey}
/>
)}
<ApiKeysSection
apiKeys={apiKeys}
showNewKeyForm={showNewKeyForm}
newKeyName={newKeyName}
onShowNewKeyFormChange={setShowNewKeyForm}
onNewKeyNameChange={setNewKeyName}
onCreateApiKey={createApiKey}
onCancelCreateApiKey={cancelNewApiKeyForm}
onToggleApiKey={toggleApiKey}
onDeleteApiKey={deleteApiKey}
/>
<GithubCredentialsSection
githubCredentials={githubCredentials}
showNewGithubForm={showNewGithubForm}
showNewTokenPlainText={Boolean(showToken.new)}
newGithubName={newGithubName}
newGithubToken={newGithubToken}
newGithubDescription={newGithubDescription}
onShowNewGithubFormChange={setShowNewGithubForm}
onNewGithubNameChange={setNewGithubName}
onNewGithubTokenChange={setNewGithubToken}
onNewGithubDescriptionChange={setNewGithubDescription}
onToggleNewTokenVisibility={toggleNewGithubTokenVisibility}
onCreateGithubCredential={createGithubCredential}
onCancelCreateGithubCredential={cancelNewGithubForm}
onToggleGithubCredential={toggleGithubCredential}
onDeleteGithubCredential={deleteGithubCredential}
/>
</div>
);
}