/* Copyright (C) 2023-2026 QuantumNous This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . For commercial licensing, please contact support@quantumnous.com */ import { KeyRound, Loader2, RefreshCw } from 'lucide-react' import { useState } from 'react' import { useTranslation } from 'react-i18next' import { ConfirmDialog } from '@/components/confirm-dialog' import { CopyButton } from '@/components/copy-button' import { Dialog } from '@/components/dialog' import { Button } from '@/components/ui/button' import { Empty, EmptyDescription, EmptyHeader, EmptyMedia, EmptyTitle, } from '@/components/ui/empty' import { Input } from '@/components/ui/input' import { Label } from '@/components/ui/label' import { useAccessToken } from '../../hooks' // ============================================================================ // Access Token Dialog Component // ============================================================================ interface AccessTokenDialogProps { open: boolean onOpenChange: (open: boolean) => void } export function AccessTokenDialog({ open, onOpenChange, }: AccessTokenDialogProps) { const { t } = useTranslation() const { token, generating, generate, clearToken } = useAccessToken() const [confirmOpen, setConfirmOpen] = useState(false) const handleOpenChange = (nextOpen: boolean) => { if (generating) return if (!nextOpen) { setConfirmOpen(false) clearToken() } onOpenChange(nextOpen) } const handleGenerate = async () => { if (await generate()) { setConfirmOpen(false) } } return ( <> } >
{token ? (

{t( "Save this token now. You won't be able to view it again after closing this dialog." )}

) : ( {t('Access tokens are shown only once')} {t( 'For security, existing access tokens cannot be displayed. Regenerate only when you need a new token.' )} {t( 'Regenerating immediately invalidates any existing token.' )} )}
{ if (!generating) setConfirmOpen(nextOpen) }} title={t('Regenerate access token?')} desc={

{t( 'This will immediately invalidate your existing access token. Any applications or scripts using it will stop working.' )}

{t( 'The new token will only be shown once. Copy it and store it securely.' )}

} confirmText={ generating ? ( <>