import { IconLoader2 } from "@tabler/icons-react" import { useTranslation } from "react-i18next" import { PageHeader } from "@/components/page-header" import { useCredentialsPage } from "@/hooks/use-credentials-page" import { AnthropicCredentialCard } from "./anthropic-credential-card" import { AntigravityCredentialCard } from "./antigravity-credential-card" import { DeviceCodeSheet } from "./device-code-sheet" import { LogoutConfirmDialog } from "./logout-confirm-dialog" import { OpenAICredentialCard } from "./openai-credential-card" export function CredentialsPage() { const { t } = useTranslation() const { loading, error, activeAction, activeFlow, flowHint, openAIToken, anthropicToken, openaiStatus, anthropicStatus, antigravityStatus, logoutDialogOpen, logoutConfirmProvider, logoutProviderLabel, deviceSheetOpen, deviceFlow, setOpenAIToken, setAnthropicToken, startBrowserOAuth, startOpenAIDeviceCode, stopLoading, saveToken, askLogout, handleConfirmLogout, handleLogoutDialogOpenChange, handleDeviceSheetOpenChange, } = useCredentialsPage() return (

{t("credentials.description")}

{error && (
{error}
)} {activeFlow && (

{t("credentials.flow.current")}

{flowHint}

)} {loading ? (
{t("credentials.loading")}
) : (
void startBrowserOAuth("openai")} onStartDeviceCode={() => void startOpenAIDeviceCode()} onStopLoading={stopLoading} onSaveToken={() => void saveToken("openai", openAIToken.trim())} onAskLogout={() => askLogout("openai")} /> void saveToken("anthropic", anthropicToken.trim()) } onAskLogout={() => askLogout("anthropic")} /> void startBrowserOAuth("google-antigravity") } onAskLogout={() => askLogout("google-antigravity")} />
)}
) }