Spaces:
Build error
Build error
import React from "react"; | |
import { useTranslation } from "react-i18next"; | |
import { I18nKey } from "#/i18n/declaration"; | |
import { BrandButton } from "#/components/features/settings/brand-button"; | |
import { CreateApiKeyResponse } from "#/api/api-keys"; | |
import { displaySuccessToast } from "#/utils/custom-toast-handlers"; | |
import { ApiKeyModalBase } from "./api-key-modal-base"; | |
interface NewApiKeyModalProps { | |
isOpen: boolean; | |
newlyCreatedKey: CreateApiKeyResponse | null; | |
onClose: () => void; | |
} | |
export function NewApiKeyModal({ | |
isOpen, | |
newlyCreatedKey, | |
onClose, | |
}: NewApiKeyModalProps) { | |
const { t } = useTranslation(); | |
const handleCopyToClipboard = () => { | |
if (newlyCreatedKey) { | |
navigator.clipboard.writeText(newlyCreatedKey.key); | |
displaySuccessToast(t(I18nKey.SETTINGS$API_KEY_COPIED)); | |
} | |
}; | |
if (!newlyCreatedKey) return null; | |
const modalFooter = ( | |
<> | |
<BrandButton | |
type="button" | |
variant="primary" | |
onClick={handleCopyToClipboard} | |
> | |
{t(I18nKey.BUTTON$COPY_TO_CLIPBOARD)} | |
</BrandButton> | |
<BrandButton type="button" variant="secondary" onClick={onClose}> | |
{t(I18nKey.BUTTON$CLOSE)} | |
</BrandButton> | |
</> | |
); | |
return ( | |
<ApiKeyModalBase | |
isOpen={isOpen && !!newlyCreatedKey} | |
title={t(I18nKey.SETTINGS$API_KEY_CREATED)} | |
width="600px" | |
footer={modalFooter} | |
> | |
<div data-testid="new-api-key-modal"> | |
<p className="text-sm">{t(I18nKey.SETTINGS$API_KEY_WARNING)}</p> | |
<div className="bg-base-tertiary p-4 rounded-md font-mono text-sm break-all mt-4"> | |
{newlyCreatedKey.key} | |
</div> | |
</div> | |
</ApiKeyModalBase> | |
); | |
} | |