import styled from '@emotion/styled'; import {Button} from 'sentry/components/button'; import Confirm from 'sentry/components/confirm'; import {CopyToClipboardButton} from 'sentry/components/copyToClipboardButton'; import EmptyMessage from 'sentry/components/emptyMessage'; import Panel from 'sentry/components/panels/panel'; import PanelAlert from 'sentry/components/panels/panelAlert'; import PanelBody from 'sentry/components/panels/panelBody'; import PanelHeader from 'sentry/components/panels/panelHeader'; import PanelItem from 'sentry/components/panels/panelItem'; import {IconDownload, IconPrint} from 'sentry/icons'; import {t} from 'sentry/locale'; import {space} from 'sentry/styles/space'; type Props = { codes: string[]; isEnrolled: boolean; onRegenerateBackupCodes: () => void; className?: string; }; function RecoveryCodes({className, isEnrolled, codes, onRegenerateBackupCodes}: Props) { const printCodes = () => { // eslint-disable-next-line dot-notation const iframe = window.frames['printable']; iframe.document.write(codes.join('
')); iframe.print(); iframe.document.close(); }; if (!isEnrolled || !codes) { return null; } const formattedCodes = codes.join(' \n'); return ( {t('Unused Codes')} {t( 'Make sure to save a copy of your recovery codes and store them in a safe place.' )}
{!!codes.length && codes.map(code => {code})}
{!codes.length && ( {t('You have no more recovery codes to use')} )}