1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00
2021-04-28 14:53:59 -05:00

108 lines
2.9 KiB
JavaScript

import { select } from '@storybook/addon-knobs';
import React, { useState } from 'react';
import {
COLORS,
SEVERITIES,
TYPOGRAPHY,
} from '../../../helpers/constants/design-system';
import Box from '../box';
import Typography from '../typography';
import Callout from './callout';
export default {
title: 'Callout',
};
export const persistentCallout = () => (
<Box borderColor={COLORS.UI2} padding={[8, 0, 0, 0]}>
<Box margin={2}>
<Typography variant={TYPOGRAPHY.H4}>This is your private key:</Typography>
<Typography variant={TYPOGRAPHY.H6}>
some seed words that are super important and probably deserve a callout
</Typography>
</Box>
<Callout severity={select('severity', SEVERITIES, SEVERITIES.WARNING)}>
Always back up your private key!
</Callout>
</Box>
);
export const DismissibleCallout = () => {
const [dismissed, setDismissed] = useState(false);
return (
<Box borderColor={COLORS.UI2} padding={[8, 0, 0, 0]}>
<Box margin={2}>
<Typography variant={TYPOGRAPHY.H4}>
This is your private key:
</Typography>
<Typography variant={TYPOGRAPHY.H6}>
some seed words that are super important and probably deserve a
callout
</Typography>
</Box>
{!dismissed && (
<Callout
severity={select('severity', SEVERITIES, SEVERITIES.WARNING)}
dismiss={() => setDismissed(true)}
>
Always back up your private key!
</Callout>
)}
</Box>
);
};
const MULTIPLE_CALLOUTS = {
WARN: {
severity: SEVERITIES.WARNING,
content: 'Always back up your private key!',
dismissed: false,
},
DANGER: {
severity: SEVERITIES.DANGER,
content: 'Never give your private key out, it will lead to loss of funds!',
dismissed: false,
},
};
export const MultipleDismissibleCallouts = () => {
const [calloutState, setCalloutState] = useState(MULTIPLE_CALLOUTS);
const dismiss = (id) => {
setCalloutState((prevState) => ({
...prevState,
[id]: {
...prevState[id],
dismissed: true,
},
}));
};
return (
<Box borderColor={COLORS.UI2} padding={[8, 0, 0, 0]}>
<Box margin={2}>
<Typography variant={TYPOGRAPHY.H4}>
This is your private key:
</Typography>
<Typography variant={TYPOGRAPHY.H6}>
some seed words that are super important and probably deserve a
callout
</Typography>
</Box>
{Object.entries(calloutState)
.filter(([_, callout]) => callout.dismissed === false)
.map(([id, callout], idx, filtered) => (
<Callout
key={id}
severity={callout.severity}
dismiss={() => dismiss(id)}
isFirst={idx === 0}
isLast={idx + 1 === filtered.length}
isMultiple={filtered.length > 1}
>
{callout.content}
</Callout>
))}
</Box>
);
};