1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-10-22 11:22:43 +02:00
metamask-extension/ui/pages/onboarding-flow/recovery-phrase/recovery-phrase-chips.js
2023-02-02 20:37:53 +00:00

115 lines
3.4 KiB
JavaScript

import React from 'react';
import classnames from 'classnames';
import PropTypes from 'prop-types';
import Chip from '../../../components/ui/chip';
import Box from '../../../components/ui/box';
import Typography from '../../../components/ui/typography';
import { ChipWithInput } from '../../../components/ui/chip/chip-with-input';
import { useI18nContext } from '../../../hooks/useI18nContext';
import {
TypographyVariant,
BorderStyle,
Size,
DISPLAY,
BorderColor,
Color,
} from '../../../helpers/constants/design-system';
export default function RecoveryPhraseChips({
secretRecoveryPhrase,
phraseRevealed,
confirmPhase,
setInputValue,
inputValue,
indicesToCheck,
hiddenPhrase,
}) {
const t = useI18nContext();
const hideSeedPhrase = phraseRevealed === false;
return (
<Box
borderColor={BorderColor.borderMuted}
borderStyle={BorderStyle.solid}
padding={4}
borderWidth={1}
borderRadius={Size.MD}
display={DISPLAY.GRID}
marginBottom={4}
className="recovery-phrase__secret"
>
<div
data-testid="recovery-phrase-chips"
className={classnames('recovery-phrase__chips', {
'recovery-phrase__chips--hidden': hideSeedPhrase,
})}
>
{secretRecoveryPhrase.map((word, index) => {
if (
confirmPhase &&
indicesToCheck &&
indicesToCheck.includes(index)
) {
return (
<div className="recovery-phrase__chip-item" key={index}>
<div className="recovery-phrase__chip-item__number">
{`${index + 1}.`}
</div>
<ChipWithInput
dataTestId={`recovery-phrase-input-${index}`}
borderColor={BorderColor.primaryDefault}
className="recovery-phrase__chip--with-input"
inputValue={inputValue[index]}
setInputValue={(value) => {
setInputValue({ ...inputValue, [index]: value });
}}
/>
</div>
);
}
return (
<div className="recovery-phrase__chip-item" key={index}>
<div className="recovery-phrase__chip-item__number">
{`${index + 1}.`}
</div>
<Chip
dataTestId={`recovery-phrase-chip-${index}`}
className="recovery-phrase__chip"
borderColor={BorderColor.borderDefault}
>
{word}
</Chip>
</div>
);
})}
</div>
{hideSeedPhrase && (
<div className="recovery-phrase__secret-blocker">
{!hiddenPhrase && (
<>
<i className="far fa-eye" color="white" />
<Typography
variant={TypographyVariant.H6}
color={Color.overlayInverse}
className="recovery-phrase__secret-blocker--text"
>
{t('makeSureNoOneWatching')}
</Typography>
</>
)}
</div>
)}
</Box>
);
}
RecoveryPhraseChips.propTypes = {
secretRecoveryPhrase: PropTypes.array,
phraseRevealed: PropTypes.bool,
confirmPhase: PropTypes.bool,
setInputValue: PropTypes.func,
inputValue: PropTypes.object,
indicesToCheck: PropTypes.array,
hiddenPhrase: PropTypes.bool,
};