import styled from '@emotion/styled'; import {Button, LinkButton} 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('Regenerate 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')} )} ); } export default RecoveryCodes; const CodeContainer = styled(Panel)` margin-top: ${space(4)}; `; const Actions = styled('div')` display: grid; grid-auto-flow: column; gap: ${space(1)}; `; const Code = styled(PanelItem)` font-family: ${p => p.theme.text.familyMono}; padding: ${space(2)}; `;
{code}