Skip to content

Commit a5b56af

Browse files
authored
feat(onboarding-ui): Magic Link Email Page (#524)
1 parent 37b3a10 commit a5b56af

9 files changed

+103
-0
lines changed

packages/onboarding-ui/.i18n/en.i18n.json

+4
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@
5353
"requestTrial": {
5454
"title": "Request a 30-\u2060day Trial",
5555
"subtitle": "Try our enterprise solution for free"
56+
},
57+
"magicLinkEmail": {
58+
"title": "We emailed you a magic link",
59+
"subtitle": "Click the link in the email we just sent you to sign in to your workspace."
5660
}
5761
},
5862
"form": {
Loading

packages/onboarding-ui/src/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export { default as ConfirmationProcessPage } from './pages/ConfirmationProcessP
77
export { default as CreateCloudWorkspacePage } from './pages/CreateCloudWorkspacePage';
88
export { default as EmailConfirmedPage } from './pages/EmailConfirmedPage';
99
export { default as InvalidLinkPage } from './pages/InvalidLinkPage';
10+
export { default as MagicLinkEmailPage } from './pages/MagicLinkEmailPage';
1011
export { default as OrganizationInfoPage } from './pages/OrganizationInfoPage';
1112
export { default as RegisterServerPage } from './pages/RegisterServerPage';
1213
export { default as RequestTrialPage } from './pages/RequestTrialPage';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import ReactDOM from 'react-dom';
2+
3+
import MagicLinkEmailPage from './MagicLinkEmailPage';
4+
5+
it('renders without crashing', () => {
6+
const div = document.createElement('div');
7+
ReactDOM.render(
8+
<MagicLinkEmailPage
9+
onResendEmailRequest={() => undefined}
10+
onChangeEmailRequest={() => undefined}
11+
/>,
12+
div
13+
);
14+
ReactDOM.unmountComponentAtNode(div);
15+
});
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import type { Story, Meta } from '@storybook/react';
2+
import type { ComponentProps } from 'react';
3+
4+
import MagicLinkEmailPage from './MagicLinkEmailPage';
5+
6+
type Args = ComponentProps<typeof MagicLinkEmailPage>;
7+
8+
export default {
9+
title: 'pages/MagicLinkEmailPage',
10+
component: MagicLinkEmailPage,
11+
parameters: {
12+
actions: { argTypesRegex: '^on.*' },
13+
layout: 'fullscreen',
14+
},
15+
} as Meta<Args>;
16+
17+
export const _MagicLinkEmailPage: Story<Args> = (args) => (
18+
<MagicLinkEmailPage {...args} />
19+
);
20+
_MagicLinkEmailPage.storyName = 'MagicLinkEmailPage';
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import { Box, Margins } from '@rocket.chat/fuselage';
2+
import colors from '@rocket.chat/fuselage-tokens/colors.json';
3+
import type { ReactElement } from 'react';
4+
import { useTranslation } from 'react-i18next';
5+
6+
import BackgroundLayer from '../../common/BackgroundLayer';
7+
import { useDarkMode } from '../../common/DarkModeProvider';
8+
import EmailCodeFallback from '../../common/EmailCodeFallback';
9+
import RocketChatLogo from '../../common/RocketChatLogo';
10+
11+
type MagicLinkEmailProps = {
12+
onResendEmailRequest: () => void;
13+
onChangeEmailRequest: () => void;
14+
};
15+
16+
const MagicLinkEmailPage = ({
17+
onResendEmailRequest,
18+
onChangeEmailRequest,
19+
}: MagicLinkEmailProps): ReactElement => {
20+
const darkMode = useDarkMode();
21+
const { t } = useTranslation();
22+
23+
return (
24+
<BackgroundLayer>
25+
<Box
26+
display='flex'
27+
flexDirection='column'
28+
alignItems='center'
29+
textAlign='center'
30+
width='100%'
31+
maxWidth={576}
32+
paddingBlock={32}
33+
paddingInline={16}
34+
color={darkMode ? colors.white : colors.n900}
35+
>
36+
<Margins blockEnd={32}>
37+
<Box width='100%' maxWidth={180}>
38+
<RocketChatLogo />
39+
</Box>
40+
41+
<Box
42+
fontWeight={800}
43+
fontSize='x52'
44+
lineHeight='x62'
45+
fontFamily='sans'
46+
>
47+
{t('page.magicLinkEmail.title')}
48+
</Box>
49+
50+
<Box fontScale='s1'>{t('page.magicLinkEmail.subtitle')}</Box>
51+
52+
<EmailCodeFallback
53+
onResendEmailRequest={onResendEmailRequest}
54+
onChangeEmailRequest={onChangeEmailRequest}
55+
/>
56+
</Margins>
57+
</Box>
58+
</BackgroundLayer>
59+
);
60+
};
61+
62+
export default MagicLinkEmailPage;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export { default } from './MagicLinkEmailPage';

0 commit comments

Comments
 (0)