import { Dispatch, SetStateAction, FC } from "react"; // icons import { Copy } from "lucide-react"; // ui import { Button } from "@plane/ui"; // hooks import useToast from "hooks/use-toast"; // types import { IApiToken } from "types/api_token"; interface APITokenKeySectionProps { generatedToken: IApiToken | null | undefined; renderExpiry: () => string; setDeleteTokenModal: Dispatch<SetStateAction<boolean>>; } export const APITokenKeySection: FC<APITokenKeySectionProps> = (props) => { const { generatedToken, renderExpiry, setDeleteTokenModal } = props; // hooks const { setToastAlert } = useToast(); return generatedToken ? ( <div className={`mt-${generatedToken ? "8" : "16"}`}> <p className="font-medium text-base pb-2">Api key created successfully</p> <p className="text-sm pb-4 w-[80%] text-custom-text-400/60"> Save this API key somewhere safe. You will not be able to view it again once you close this page or reload this page. </p> <Button variant="neutral-primary" className="py-3 w-[85%] flex justify-between items-center"> <p className="font-medium text-base">{generatedToken.token}</p> <Copy size={18} color="#B9B9B9" onClick={() => { navigator.clipboard.writeText(generatedToken.token); setToastAlert({ message: "The Secret key has been successfully copied to your clipboard", type: "success", title: "Copied to clipboard", }); }} /> </Button> <p className="mt-2 text-sm text-custom-text-400/60"> {generatedToken.expired_at ? "Expires on " + renderExpiry() : "Never Expires"} </p> <button className="border py-3 px-5 text-custom-primary-100 text-sm mt-8 rounded-md border-custom-primary-100 w-fit font-medium" onClick={(e) => { e.preventDefault(); setDeleteTokenModal(true); }} > Revoke </button> </div> ) : null; };