@vrplatform/email 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +3 -0
- package/build/main/components/ActionEmailTemplate.d.ts +15 -0
- package/build/main/components/ActionEmailTemplate.js +39 -0
- package/build/main/components/ActionEmailTemplate.js.map +1 -0
- package/build/main/components/Button.d.ts +11 -0
- package/build/main/components/Button.js +15 -0
- package/build/main/components/Button.js.map +1 -0
- package/build/main/components/EmailContainer.d.ts +10 -0
- package/build/main/components/EmailContainer.js +52 -0
- package/build/main/components/EmailContainer.js.map +1 -0
- package/build/main/components/index.d.ts +2 -0
- package/build/main/components/index.js +3 -0
- package/build/main/components/index.js.map +1 -0
- package/build/main/components/utils/index.d.ts +1 -0
- package/build/main/components/utils/index.js +2 -0
- package/build/main/components/utils/index.js.map +1 -0
- package/build/main/components/utils/parse-email-html.d.ts +6 -0
- package/build/main/components/utils/parse-email-html.js +11 -0
- package/build/main/components/utils/parse-email-html.js.map +1 -0
- package/build/main/components/utils/parse-email-html.test.d.ts +1 -0
- package/build/main/components/utils/parse-email-html.test.js +59 -0
- package/build/main/components/utils/parse-email-html.test.js.map +1 -0
- package/build/main/const.d.ts +6 -0
- package/build/main/const.js +7 -0
- package/build/main/const.js.map +1 -0
- package/build/main/extensions.d.ts +4 -0
- package/build/main/extensions.js +5 -0
- package/build/main/extensions.js.map +1 -0
- package/build/main/index.d.ts +7 -0
- package/build/main/index.js +7 -0
- package/build/main/index.js.map +1 -0
- package/build/main/templates/InviteOwnerEmailTemplate.d.ts +8 -0
- package/build/main/templates/InviteOwnerEmailTemplate.js +41 -0
- package/build/main/templates/InviteOwnerEmailTemplate.js.map +1 -0
- package/build/main/templates/InvitePmEmailTemplate.d.ts +8 -0
- package/build/main/templates/InvitePmEmailTemplate.js +51 -0
- package/build/main/templates/InvitePmEmailTemplate.js.map +1 -0
- package/build/main/templates/OwnerStatementEmailTemplate.d.ts +11 -0
- package/build/main/templates/OwnerStatementEmailTemplate.js +55 -0
- package/build/main/templates/OwnerStatementEmailTemplate.js.map +1 -0
- package/build/main/templates/OwnerStatementSummaryEmailTemplate.d.ts +9 -0
- package/build/main/templates/OwnerStatementSummaryEmailTemplate.js +46 -0
- package/build/main/templates/OwnerStatementSummaryEmailTemplate.js.map +1 -0
- package/build/main/templates/OwnerTaxStatementEmailTemplate.d.ts +10 -0
- package/build/main/templates/OwnerTaxStatementEmailTemplate.js +47 -0
- package/build/main/templates/OwnerTaxStatementEmailTemplate.js.map +1 -0
- package/build/main/templates/TenantDeletionEmailTemplate.d.ts +10 -0
- package/build/main/templates/TenantDeletionEmailTemplate.js +26 -0
- package/build/main/templates/TenantDeletionEmailTemplate.js.map +1 -0
- package/build/main/templates/TenantSuspensionEmailTemplate.d.ts +9 -0
- package/build/main/templates/TenantSuspensionEmailTemplate.js +24 -0
- package/build/main/templates/TenantSuspensionEmailTemplate.js.map +1 -0
- package/build/main/templates/index.d.ts +7 -0
- package/build/main/templates/index.js +12 -0
- package/build/main/templates/index.js.map +1 -0
- package/build/main/theme.d.ts +29 -0
- package/build/main/theme.js +283 -0
- package/build/main/theme.js.map +1 -0
- package/build/main/tsconfig.main.tsbuildinfo +1 -0
- package/build/main/types.d.ts +25 -0
- package/build/main/types.js +2 -0
- package/build/main/types.js.map +1 -0
- package/build/main/utils/index.d.ts +1 -0
- package/build/main/utils/index.js +2 -0
- package/build/main/utils/index.js.map +1 -0
- package/build/main/utils/send-email.d.ts +10 -0
- package/build/main/utils/send-email.js +24 -0
- package/build/main/utils/send-email.js.map +1 -0
- package/build/module/components/ActionEmailTemplate.d.ts +15 -0
- package/build/module/components/ActionEmailTemplate.js +39 -0
- package/build/module/components/ActionEmailTemplate.js.map +1 -0
- package/build/module/components/Button.d.ts +11 -0
- package/build/module/components/Button.js +15 -0
- package/build/module/components/Button.js.map +1 -0
- package/build/module/components/EmailContainer.d.ts +10 -0
- package/build/module/components/EmailContainer.js +52 -0
- package/build/module/components/EmailContainer.js.map +1 -0
- package/build/module/components/index.d.ts +2 -0
- package/build/module/components/index.js +3 -0
- package/build/module/components/index.js.map +1 -0
- package/build/module/components/utils/index.d.ts +1 -0
- package/build/module/components/utils/index.js +2 -0
- package/build/module/components/utils/index.js.map +1 -0
- package/build/module/components/utils/parse-email-html.d.ts +6 -0
- package/build/module/components/utils/parse-email-html.js +11 -0
- package/build/module/components/utils/parse-email-html.js.map +1 -0
- package/build/module/components/utils/parse-email-html.test.d.ts +1 -0
- package/build/module/components/utils/parse-email-html.test.js +59 -0
- package/build/module/components/utils/parse-email-html.test.js.map +1 -0
- package/build/module/const.d.ts +6 -0
- package/build/module/const.js +7 -0
- package/build/module/const.js.map +1 -0
- package/build/module/extensions.d.ts +4 -0
- package/build/module/extensions.js +5 -0
- package/build/module/extensions.js.map +1 -0
- package/build/module/index.d.ts +7 -0
- package/build/module/index.js +7 -0
- package/build/module/index.js.map +1 -0
- package/build/module/templates/InviteOwnerEmailTemplate.d.ts +8 -0
- package/build/module/templates/InviteOwnerEmailTemplate.js +41 -0
- package/build/module/templates/InviteOwnerEmailTemplate.js.map +1 -0
- package/build/module/templates/InvitePmEmailTemplate.d.ts +8 -0
- package/build/module/templates/InvitePmEmailTemplate.js +51 -0
- package/build/module/templates/InvitePmEmailTemplate.js.map +1 -0
- package/build/module/templates/OwnerStatementEmailTemplate.d.ts +11 -0
- package/build/module/templates/OwnerStatementEmailTemplate.js +55 -0
- package/build/module/templates/OwnerStatementEmailTemplate.js.map +1 -0
- package/build/module/templates/OwnerStatementSummaryEmailTemplate.d.ts +9 -0
- package/build/module/templates/OwnerStatementSummaryEmailTemplate.js +46 -0
- package/build/module/templates/OwnerStatementSummaryEmailTemplate.js.map +1 -0
- package/build/module/templates/OwnerTaxStatementEmailTemplate.d.ts +10 -0
- package/build/module/templates/OwnerTaxStatementEmailTemplate.js +47 -0
- package/build/module/templates/OwnerTaxStatementEmailTemplate.js.map +1 -0
- package/build/module/templates/TenantDeletionEmailTemplate.d.ts +10 -0
- package/build/module/templates/TenantDeletionEmailTemplate.js +26 -0
- package/build/module/templates/TenantDeletionEmailTemplate.js.map +1 -0
- package/build/module/templates/TenantSuspensionEmailTemplate.d.ts +9 -0
- package/build/module/templates/TenantSuspensionEmailTemplate.js +24 -0
- package/build/module/templates/TenantSuspensionEmailTemplate.js.map +1 -0
- package/build/module/templates/index.d.ts +7 -0
- package/build/module/templates/index.js +12 -0
- package/build/module/templates/index.js.map +1 -0
- package/build/module/theme.d.ts +29 -0
- package/build/module/theme.js +283 -0
- package/build/module/theme.js.map +1 -0
- package/build/module/tsconfig.esm.tsbuildinfo +1 -0
- package/build/module/types.d.ts +25 -0
- package/build/module/types.js +2 -0
- package/build/module/types.js.map +1 -0
- package/build/module/utils/index.d.ts +1 -0
- package/build/module/utils/index.js +2 -0
- package/build/module/utils/index.js.map +1 -0
- package/build/module/utils/send-email.d.ts +10 -0
- package/build/module/utils/send-email.js +24 -0
- package/build/module/utils/send-email.js.map +1 -0
- package/package.json +53 -0
- package/src/components/ActionEmailTemplate.tsx +97 -0
- package/src/components/Button.tsx +40 -0
- package/src/components/EmailContainer.tsx +161 -0
- package/src/components/index.ts +2 -0
- package/src/components/utils/index.ts +1 -0
- package/src/components/utils/parse-email-html.test.ts +65 -0
- package/src/components/utils/parse-email-html.ts +28 -0
- package/src/const.ts +6 -0
- package/src/extensions.ts +7 -0
- package/src/index.ts +8 -0
- package/src/templates/InviteOwnerEmailTemplate.tsx +66 -0
- package/src/templates/InvitePmEmailTemplate.tsx +83 -0
- package/src/templates/OwnerStatementEmailTemplate.tsx +93 -0
- package/src/templates/OwnerStatementSummaryEmailTemplate.tsx +78 -0
- package/src/templates/OwnerTaxStatementEmailTemplate.tsx +80 -0
- package/src/templates/TenantDeletionEmailTemplate.tsx +119 -0
- package/src/templates/TenantSuspensionEmailTemplate.tsx +102 -0
- package/src/templates/index.ts +14 -0
- package/src/theme.ts +307 -0
- package/src/types.ts +25 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/send-email.ts +37 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import {
|
|
2
|
+
type ActionEmailData,
|
|
3
|
+
ActionEmailTemplate,
|
|
4
|
+
type ActionEmailTemplateProps,
|
|
5
|
+
} from '../components';
|
|
6
|
+
import {
|
|
7
|
+
EMAIL_ACTION_LINK_COMPONENT,
|
|
8
|
+
EMAIL_USER_NAME_COMPONENT,
|
|
9
|
+
} from '../extensions';
|
|
10
|
+
|
|
11
|
+
export const getDefaultOwnerStatementSummaryEmailData = (
|
|
12
|
+
mode: 'tag' | 'text',
|
|
13
|
+
args: {
|
|
14
|
+
appName: string;
|
|
15
|
+
ownerStatementHref: string;
|
|
16
|
+
userName: string;
|
|
17
|
+
}
|
|
18
|
+
): ActionEmailData => {
|
|
19
|
+
const ownerStatementHref =
|
|
20
|
+
mode === 'tag' ? EMAIL_ACTION_LINK_COMPONENT : args.ownerStatementHref;
|
|
21
|
+
|
|
22
|
+
const userName = mode === 'tag' ? EMAIL_USER_NAME_COMPONENT : args.userName;
|
|
23
|
+
|
|
24
|
+
return {
|
|
25
|
+
subject: 'Summary statement is ready',
|
|
26
|
+
shortDescription: `An summary statement is ready for you. Log in to ${args.appName} to view it.`,
|
|
27
|
+
header: 'Summary is ready to view',
|
|
28
|
+
bodyOne: `<p>Hi ${userName},<p>A summary statement is ready for your review on ${args.appName}.</p><p>To access your statement, please click the button below:</p>`,
|
|
29
|
+
buttonText: 'View statement',
|
|
30
|
+
bodyTwo: `<p>If you have any trouble with the button, you can copy and paste the link below into your browser: ${ownerStatementHref}</p>`,
|
|
31
|
+
href: args.ownerStatementHref,
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export const OwnerStatementSummaryEmailTemplate = (
|
|
36
|
+
props: ActionEmailTemplateProps
|
|
37
|
+
) => {
|
|
38
|
+
return <ActionEmailTemplate {...props} />;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
const Preview = () => {
|
|
42
|
+
const defaultName = 'John';
|
|
43
|
+
|
|
44
|
+
return (
|
|
45
|
+
<ActionEmailTemplate
|
|
46
|
+
mode="send"
|
|
47
|
+
tenant={{
|
|
48
|
+
name: 'Pineapple Mountain',
|
|
49
|
+
logo: 'https://imagedelivery.net/Ftdv9WftbW1DctaiLSVfFA/fbd8c31f-478f-4eb0-74ac-c8eeb47b5000/256x256',
|
|
50
|
+
}}
|
|
51
|
+
data={getDefaultOwnerStatementSummaryEmailData('text', {
|
|
52
|
+
appName: 'VRPlatform',
|
|
53
|
+
ownerStatementHref: 'https://example.com',
|
|
54
|
+
userName: defaultName,
|
|
55
|
+
})}
|
|
56
|
+
user={{
|
|
57
|
+
firstName: 'John',
|
|
58
|
+
}}
|
|
59
|
+
listing={undefined}
|
|
60
|
+
month={undefined}
|
|
61
|
+
themeColors={[
|
|
62
|
+
// portal.brown
|
|
63
|
+
'#9E9390',
|
|
64
|
+
'#8D7C78',
|
|
65
|
+
'#7C6964',
|
|
66
|
+
'#6E5954',
|
|
67
|
+
'#614B46',
|
|
68
|
+
'#573F39',
|
|
69
|
+
'#4E342E',
|
|
70
|
+
'#3F2D29',
|
|
71
|
+
'#332725',
|
|
72
|
+
'#2A2220',
|
|
73
|
+
]}
|
|
74
|
+
/>
|
|
75
|
+
);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export default Preview;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import {
|
|
2
|
+
EMAIL_ACTION_LINK_COMPONENT,
|
|
3
|
+
EMAIL_USER_NAME_COMPONENT,
|
|
4
|
+
} from '../extensions';
|
|
5
|
+
import {
|
|
6
|
+
type ActionEmailData,
|
|
7
|
+
ActionEmailTemplate,
|
|
8
|
+
type ActionEmailTemplateProps,
|
|
9
|
+
} from '../components';
|
|
10
|
+
|
|
11
|
+
export const getDefaultOwnerTaxStatementEmailData = (
|
|
12
|
+
mode: 'tag' | 'text',
|
|
13
|
+
args: {
|
|
14
|
+
appName: string;
|
|
15
|
+
href: string;
|
|
16
|
+
firstName: string | undefined | null;
|
|
17
|
+
year: number;
|
|
18
|
+
}
|
|
19
|
+
): ActionEmailData => {
|
|
20
|
+
const href = mode === 'tag' ? EMAIL_ACTION_LINK_COMPONENT : args.href;
|
|
21
|
+
|
|
22
|
+
const firstName =
|
|
23
|
+
mode === 'tag' ? EMAIL_USER_NAME_COMPONENT : args.firstName || 'there';
|
|
24
|
+
|
|
25
|
+
return {
|
|
26
|
+
subject: 'Your 1099 Tax Statement is ready',
|
|
27
|
+
shortDescription: `Your 1099 Tax Statement is ready for you. Log in to ${args.appName} to view it.`,
|
|
28
|
+
header: '1099 Tax Statement is ready',
|
|
29
|
+
bodyOne: `<p>Hi ${firstName},<p>Your 1099 tax statement for ${args.year} is now available for you to review on ${args.appName}.</p><p>Click below to see your tax statement before we send it to the IRS.</p><p>To update your tax statement details, log into your ${args.appName} account and navigate to Settings>Statement Details.</p><p>To view your annual summary statement, navigate to the Summary page from within your ${args.appName} account.</p><p>Simply reply to this email if you have any questions.</p>`,
|
|
30
|
+
buttonText: 'View tax statement',
|
|
31
|
+
bodyTwo: `<p>If you have any trouble with the button, you can copy and paste the link below into your browser: ${href}</p>`,
|
|
32
|
+
href: args.href,
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export const OwnerTaxStatementEmailTemplate = (
|
|
37
|
+
props: ActionEmailTemplateProps
|
|
38
|
+
) => {
|
|
39
|
+
return <ActionEmailTemplate {...props} />;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const Preview = () => {
|
|
43
|
+
const defaultName = 'John';
|
|
44
|
+
|
|
45
|
+
return (
|
|
46
|
+
<ActionEmailTemplate
|
|
47
|
+
mode="send"
|
|
48
|
+
tenant={{
|
|
49
|
+
name: 'Pineapple Mountain',
|
|
50
|
+
logo: 'https://imagedelivery.net/Ftdv9WftbW1DctaiLSVfFA/fbd8c31f-478f-4eb0-74ac-c8eeb47b5000/256x256',
|
|
51
|
+
}}
|
|
52
|
+
data={getDefaultOwnerTaxStatementEmailData('text', {
|
|
53
|
+
appName: 'VRPlatform',
|
|
54
|
+
href: 'https://example.com',
|
|
55
|
+
firstName: defaultName,
|
|
56
|
+
year: new Date().getFullYear(),
|
|
57
|
+
})}
|
|
58
|
+
user={{
|
|
59
|
+
firstName: 'John',
|
|
60
|
+
}}
|
|
61
|
+
listing={undefined}
|
|
62
|
+
month={undefined}
|
|
63
|
+
themeColors={[
|
|
64
|
+
// portal.brown
|
|
65
|
+
'#9E9390',
|
|
66
|
+
'#8D7C78',
|
|
67
|
+
'#7C6964',
|
|
68
|
+
'#6E5954',
|
|
69
|
+
'#614B46',
|
|
70
|
+
'#573F39',
|
|
71
|
+
'#4E342E',
|
|
72
|
+
'#3F2D29',
|
|
73
|
+
'#332725',
|
|
74
|
+
'#2A2220',
|
|
75
|
+
]}
|
|
76
|
+
/>
|
|
77
|
+
);
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
export default Preview;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { Heading } from '@react-email/heading';
|
|
2
|
+
import { Text } from '@react-email/text';
|
|
3
|
+
import { EmailContainer } from '../components';
|
|
4
|
+
import type { EmailBaseProps } from '../types';
|
|
5
|
+
|
|
6
|
+
export type TenantDeletionEmailTemplateProps = {
|
|
7
|
+
tenant: EmailBaseProps['tenant'];
|
|
8
|
+
mode: EmailBaseProps['mode'];
|
|
9
|
+
user: EmailBaseProps['user'];
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export const TenantDeletionEmailTemplate = ({
|
|
13
|
+
tenant,
|
|
14
|
+
mode,
|
|
15
|
+
user,
|
|
16
|
+
}: TenantDeletionEmailTemplateProps) => {
|
|
17
|
+
return (
|
|
18
|
+
<EmailContainer
|
|
19
|
+
title={'Team Account Deletion Notification'}
|
|
20
|
+
shortDescription={
|
|
21
|
+
"We're reaching out to inform you that your VRPlatform team has been deleted."
|
|
22
|
+
}
|
|
23
|
+
tenant={{
|
|
24
|
+
logo: undefined,
|
|
25
|
+
}}
|
|
26
|
+
mode={mode}
|
|
27
|
+
>
|
|
28
|
+
<Heading
|
|
29
|
+
style={{
|
|
30
|
+
fontSize: 28,
|
|
31
|
+
fontWeight: 600,
|
|
32
|
+
marginBottom: '50px',
|
|
33
|
+
}}
|
|
34
|
+
>
|
|
35
|
+
{user.firstName ? `Dear ${user.firstName},` : 'Hi there,'}
|
|
36
|
+
</Heading>
|
|
37
|
+
|
|
38
|
+
<Text>
|
|
39
|
+
We wanted to inform you that the team account "{tenant.name}" has been
|
|
40
|
+
deleted. This action has resulted in the removal of the following data
|
|
41
|
+
associated with the team:
|
|
42
|
+
</Text>
|
|
43
|
+
<ul>
|
|
44
|
+
<li>
|
|
45
|
+
<Text>
|
|
46
|
+
<b>Payments:</b> All payment records linked to the team have been
|
|
47
|
+
permanently deleted.
|
|
48
|
+
</Text>
|
|
49
|
+
</li>
|
|
50
|
+
<li>
|
|
51
|
+
<Text>
|
|
52
|
+
<b>Reservations:</b> Any reservations made under this team account
|
|
53
|
+
have been erased.
|
|
54
|
+
</Text>
|
|
55
|
+
</li>
|
|
56
|
+
|
|
57
|
+
<li>
|
|
58
|
+
<Text>
|
|
59
|
+
<b>Owner Statements:</b> All statements generated for owners within
|
|
60
|
+
this team are no longer accessible.
|
|
61
|
+
</Text>
|
|
62
|
+
</li>
|
|
63
|
+
|
|
64
|
+
<li>
|
|
65
|
+
<Text>
|
|
66
|
+
<b>Owner Data:</b> Personal and transactional data of the owners
|
|
67
|
+
connected to this team have been removed.
|
|
68
|
+
</Text>
|
|
69
|
+
</li>
|
|
70
|
+
|
|
71
|
+
<li>
|
|
72
|
+
<Text>
|
|
73
|
+
<b>Connections:</b> Any established connections or integrations
|
|
74
|
+
related to this team have been terminated.
|
|
75
|
+
</Text>
|
|
76
|
+
</li>
|
|
77
|
+
|
|
78
|
+
<li>
|
|
79
|
+
<Text>
|
|
80
|
+
<b>Other Related Data:</b> All other data associated with this team
|
|
81
|
+
has been permanently deleted.
|
|
82
|
+
</Text>
|
|
83
|
+
</li>
|
|
84
|
+
</ul>
|
|
85
|
+
<Text>
|
|
86
|
+
If you have any questions or need further assistance, please don't
|
|
87
|
+
hesitate to reach out.
|
|
88
|
+
</Text>
|
|
89
|
+
<Text>
|
|
90
|
+
Best regards,
|
|
91
|
+
<br />
|
|
92
|
+
The VRPlatform Team
|
|
93
|
+
</Text>
|
|
94
|
+
</EmailContainer>
|
|
95
|
+
);
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
export const TenantDeletionEmail = (
|
|
99
|
+
props: TenantDeletionEmailTemplateProps
|
|
100
|
+
) => {
|
|
101
|
+
return <TenantDeletionEmailTemplate {...props} />;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
const Preview = () => {
|
|
105
|
+
return (
|
|
106
|
+
<TenantDeletionEmailTemplate
|
|
107
|
+
mode="send"
|
|
108
|
+
tenant={{
|
|
109
|
+
name: 'Pineapple Mountain',
|
|
110
|
+
logo: undefined,
|
|
111
|
+
}}
|
|
112
|
+
user={{
|
|
113
|
+
firstName: 'John',
|
|
114
|
+
}}
|
|
115
|
+
/>
|
|
116
|
+
);
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
export default Preview;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { Heading } from '@react-email/heading';
|
|
2
|
+
import { Text } from '@react-email/text';
|
|
3
|
+
import { EmailContainer } from '../components';
|
|
4
|
+
import type { EmailBaseProps } from '../types';
|
|
5
|
+
|
|
6
|
+
export type TenantSuspensionEmailTemplateProps = {
|
|
7
|
+
mode: EmailBaseProps['mode'];
|
|
8
|
+
user: EmailBaseProps['user'];
|
|
9
|
+
tenant: Omit<EmailBaseProps['tenant'], 'logo'>;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export const TenantSuspensionEmailTemplate = ({
|
|
13
|
+
mode,
|
|
14
|
+
user,
|
|
15
|
+
tenant,
|
|
16
|
+
}: TenantSuspensionEmailTemplateProps) => {
|
|
17
|
+
return (
|
|
18
|
+
<EmailContainer
|
|
19
|
+
title={'Action Required: Your VRPlatform Account Access'}
|
|
20
|
+
shortDescription={
|
|
21
|
+
"We're reaching out to inform you that access to your VRPlatform team has been temporarily suspended."
|
|
22
|
+
}
|
|
23
|
+
tenant={{
|
|
24
|
+
logo: undefined,
|
|
25
|
+
}}
|
|
26
|
+
mode={mode}
|
|
27
|
+
>
|
|
28
|
+
<Heading
|
|
29
|
+
style={{
|
|
30
|
+
fontSize: 28,
|
|
31
|
+
fontWeight: 600,
|
|
32
|
+
marginBottom: '50px',
|
|
33
|
+
}}
|
|
34
|
+
>
|
|
35
|
+
{user.firstName ? `Dear ${user.firstName},` : 'Hi there,'}
|
|
36
|
+
</Heading>
|
|
37
|
+
|
|
38
|
+
<Text>
|
|
39
|
+
We're reaching out to inform you that as of today, access to your team{' '}
|
|
40
|
+
<b>{tenant.name}</b> has been temporarily suspended. This includes
|
|
41
|
+
access to features such as accounting automations, owner statements,
|
|
42
|
+
management commissions and the owner portal (including portal access for
|
|
43
|
+
all owners).
|
|
44
|
+
</Text>
|
|
45
|
+
<Text>
|
|
46
|
+
At VRPlatform, we take the security and functionality of our platform
|
|
47
|
+
seriously, ensuring that our partners have the best possible experience.
|
|
48
|
+
This step, though necessary, is intended to be temporary and is part of
|
|
49
|
+
our commitment to maintain the highest standards of service.
|
|
50
|
+
</Text>
|
|
51
|
+
<Text
|
|
52
|
+
style={{
|
|
53
|
+
fontWeight: 'bold',
|
|
54
|
+
}}
|
|
55
|
+
>
|
|
56
|
+
Next Steps to Regain Access:
|
|
57
|
+
</Text>
|
|
58
|
+
<ul>
|
|
59
|
+
<li>
|
|
60
|
+
<Text>
|
|
61
|
+
<b>Immediate Action:</b> To adress this and help you regain access
|
|
62
|
+
to your account, please contact our support team at your earliest
|
|
63
|
+
convenience. We're here to assist you with the necessary steps to
|
|
64
|
+
restore your services.
|
|
65
|
+
</Text>
|
|
66
|
+
</li>
|
|
67
|
+
<li>
|
|
68
|
+
<Text>
|
|
69
|
+
<b>Contact Information:</b> You can reach us by emailing
|
|
70
|
+
support@vrplatform.app. Our dedicated team is ready to support you
|
|
71
|
+
in resolving this matter promptly.
|
|
72
|
+
</Text>
|
|
73
|
+
</li>
|
|
74
|
+
</ul>
|
|
75
|
+
<Text>
|
|
76
|
+
Thank you for your prompt attention to this important matter. We value
|
|
77
|
+
your partnership and are here to support you every step of the way.
|
|
78
|
+
</Text>
|
|
79
|
+
<Text>
|
|
80
|
+
Best regards,
|
|
81
|
+
<br />
|
|
82
|
+
The VRPlatform Team
|
|
83
|
+
</Text>
|
|
84
|
+
</EmailContainer>
|
|
85
|
+
);
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
const Preview = () => {
|
|
89
|
+
return (
|
|
90
|
+
<TenantSuspensionEmailTemplate
|
|
91
|
+
mode="send"
|
|
92
|
+
user={{
|
|
93
|
+
firstName: 'John',
|
|
94
|
+
}}
|
|
95
|
+
tenant={{
|
|
96
|
+
name: 'Demo Test Console',
|
|
97
|
+
}}
|
|
98
|
+
/>
|
|
99
|
+
);
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
export default Preview;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Teams
|
|
2
|
+
export * from './TenantSuspensionEmailTemplate';
|
|
3
|
+
export * from './TenantDeletionEmailTemplate';
|
|
4
|
+
|
|
5
|
+
// Owner Statements
|
|
6
|
+
export * from './OwnerStatementSummaryEmailTemplate';
|
|
7
|
+
export * from './OwnerStatementEmailTemplate';
|
|
8
|
+
|
|
9
|
+
// Owner Tax Statements
|
|
10
|
+
export * from './OwnerTaxStatementEmailTemplate';
|
|
11
|
+
|
|
12
|
+
// Invitations
|
|
13
|
+
export * from './InviteOwnerEmailTemplate';
|
|
14
|
+
export * from './InvitePmEmailTemplate';
|
package/src/theme.ts
ADDED
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
import type { Maybe } from '@finalytic/utils';
|
|
2
|
+
|
|
3
|
+
export const getOwnerPortalColor = (color: Maybe<string>) => {
|
|
4
|
+
if (!color) return undefined;
|
|
5
|
+
if (color.includes('portal.')) return color;
|
|
6
|
+
|
|
7
|
+
return `portal.${color}`;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export const OWNER_PORTAL_COLORS = {
|
|
11
|
+
orange: '#9A3412',
|
|
12
|
+
teal: '#004d40',
|
|
13
|
+
indigo: '#1D3783',
|
|
14
|
+
brown: '#4e342e',
|
|
15
|
+
green: '#3a5d57',
|
|
16
|
+
blue: '#15638f',
|
|
17
|
+
gray: '#707786',
|
|
18
|
+
black: '#22201f',
|
|
19
|
+
red: '#EB144C',
|
|
20
|
+
violett: '#9900EF',
|
|
21
|
+
deepPurple: '#4527a0',
|
|
22
|
+
purple: '#6a1b9a',
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export const THEME_COLORS: Record<
|
|
26
|
+
string,
|
|
27
|
+
[
|
|
28
|
+
string,
|
|
29
|
+
string,
|
|
30
|
+
string,
|
|
31
|
+
string,
|
|
32
|
+
string,
|
|
33
|
+
string,
|
|
34
|
+
string,
|
|
35
|
+
string,
|
|
36
|
+
string,
|
|
37
|
+
string,
|
|
38
|
+
...string[],
|
|
39
|
+
]
|
|
40
|
+
> = {
|
|
41
|
+
purple: [
|
|
42
|
+
'#BF98E7',
|
|
43
|
+
'#AE7CE0',
|
|
44
|
+
'#9E62DA',
|
|
45
|
+
'#904BD5',
|
|
46
|
+
'#8336D0',
|
|
47
|
+
'#772DC1',
|
|
48
|
+
'#6C29AF',
|
|
49
|
+
'#61259D',
|
|
50
|
+
'#57218E',
|
|
51
|
+
'#4F1E80',
|
|
52
|
+
],
|
|
53
|
+
|
|
54
|
+
finalytic: [
|
|
55
|
+
'#C1C2C5',
|
|
56
|
+
'#A6A7AB',
|
|
57
|
+
'#909296',
|
|
58
|
+
'#5c5f66',
|
|
59
|
+
'#373A40',
|
|
60
|
+
'#2C2E33',
|
|
61
|
+
'#25262b',
|
|
62
|
+
'#1A1B1E',
|
|
63
|
+
'#141517',
|
|
64
|
+
'#101113',
|
|
65
|
+
],
|
|
66
|
+
|
|
67
|
+
vrplatform: [
|
|
68
|
+
// baseColor: #012F64
|
|
69
|
+
'#E6F1FF',
|
|
70
|
+
'#B8D9FE',
|
|
71
|
+
'#8BC0FE',
|
|
72
|
+
'#5DA8FD',
|
|
73
|
+
'#308FFD',
|
|
74
|
+
'#0377FC',
|
|
75
|
+
'#025FCA',
|
|
76
|
+
'#024797',
|
|
77
|
+
'#012F65',
|
|
78
|
+
'#011832',
|
|
79
|
+
],
|
|
80
|
+
|
|
81
|
+
// * Tailwind colors // leaving out last color to due mantine 10 color limit
|
|
82
|
+
neutral: [
|
|
83
|
+
'#fafafa',
|
|
84
|
+
'#f5f5f5',
|
|
85
|
+
'#e5e5e5',
|
|
86
|
+
'#d4d4d4',
|
|
87
|
+
'#a3a3a3',
|
|
88
|
+
'#737373',
|
|
89
|
+
'#525252',
|
|
90
|
+
'#404040',
|
|
91
|
+
'#262626',
|
|
92
|
+
'#171717',
|
|
93
|
+
// "#0a0a0a"
|
|
94
|
+
],
|
|
95
|
+
|
|
96
|
+
sky: [
|
|
97
|
+
'#f0f9ff',
|
|
98
|
+
'#e0f2fe',
|
|
99
|
+
'#bae6fd',
|
|
100
|
+
'#7dd3fc',
|
|
101
|
+
'#38bdf8',
|
|
102
|
+
'#0ea5e9',
|
|
103
|
+
'#0284c7',
|
|
104
|
+
'#0369a1',
|
|
105
|
+
'#075985',
|
|
106
|
+
'#0c4a6e',
|
|
107
|
+
// '#082f49',
|
|
108
|
+
],
|
|
109
|
+
|
|
110
|
+
indigo: [
|
|
111
|
+
'#eef2ff',
|
|
112
|
+
'#e0e7ff',
|
|
113
|
+
'#c7d2fe',
|
|
114
|
+
'#a5b4fc',
|
|
115
|
+
'#818cf8',
|
|
116
|
+
'#6366f1',
|
|
117
|
+
'#4f46e5',
|
|
118
|
+
'#4338ca',
|
|
119
|
+
'#3730a3',
|
|
120
|
+
'#312e81',
|
|
121
|
+
// '#1e1b4b',
|
|
122
|
+
],
|
|
123
|
+
violet: [
|
|
124
|
+
'#f5f3ff',
|
|
125
|
+
'#ede9fe',
|
|
126
|
+
'#ddd6fe',
|
|
127
|
+
'#c4b5fd',
|
|
128
|
+
'#a78bfa',
|
|
129
|
+
'#8b5cf6',
|
|
130
|
+
'#7c3aed',
|
|
131
|
+
'#6d28d9',
|
|
132
|
+
'#5b21b6',
|
|
133
|
+
'#4c1d95',
|
|
134
|
+
// '#2e1065',
|
|
135
|
+
],
|
|
136
|
+
amber: [
|
|
137
|
+
'#fffbeb',
|
|
138
|
+
'#fef3c7',
|
|
139
|
+
'#fde68a',
|
|
140
|
+
'#fcd34d',
|
|
141
|
+
'#fbbf24',
|
|
142
|
+
'#f59e0b',
|
|
143
|
+
'#d97706',
|
|
144
|
+
'#b45309',
|
|
145
|
+
'#92400e',
|
|
146
|
+
'#78350f',
|
|
147
|
+
],
|
|
148
|
+
|
|
149
|
+
// Portal Colors
|
|
150
|
+
'portal.orange': [
|
|
151
|
+
'#DBCDC8',
|
|
152
|
+
'#C8ABA1',
|
|
153
|
+
'#BC8C7C',
|
|
154
|
+
'#B76E55',
|
|
155
|
+
'#AE5639',
|
|
156
|
+
'#A34425',
|
|
157
|
+
'#9A3412',
|
|
158
|
+
'#76311B',
|
|
159
|
+
'#5B2D1E',
|
|
160
|
+
'#48291E',
|
|
161
|
+
],
|
|
162
|
+
|
|
163
|
+
'portal.teal': [
|
|
164
|
+
'#45766E',
|
|
165
|
+
'#366B62',
|
|
166
|
+
'#296259',
|
|
167
|
+
'#1D5B50',
|
|
168
|
+
'#13554A',
|
|
169
|
+
'#095044',
|
|
170
|
+
'#004D40',
|
|
171
|
+
'#063A31',
|
|
172
|
+
'#0A2D27',
|
|
173
|
+
'#0B231F',
|
|
174
|
+
],
|
|
175
|
+
'portal.indigo': [
|
|
176
|
+
'#B9BECD',
|
|
177
|
+
'#969FBA',
|
|
178
|
+
'#7483AE',
|
|
179
|
+
'#5469A6',
|
|
180
|
+
'#405698',
|
|
181
|
+
'#2D468C',
|
|
182
|
+
'#1D3783',
|
|
183
|
+
'#213265',
|
|
184
|
+
'#212D4F',
|
|
185
|
+
'#20283F',
|
|
186
|
+
],
|
|
187
|
+
'portal.brown': [
|
|
188
|
+
'#9E9390',
|
|
189
|
+
'#8D7C78',
|
|
190
|
+
'#7C6964',
|
|
191
|
+
'#6E5954',
|
|
192
|
+
'#614B46',
|
|
193
|
+
'#573F39',
|
|
194
|
+
'#4E342E',
|
|
195
|
+
'#3F2D29',
|
|
196
|
+
'#332725',
|
|
197
|
+
'#2A2220',
|
|
198
|
+
],
|
|
199
|
+
'portal.green': [
|
|
200
|
+
'#B4BCBB',
|
|
201
|
+
'#97A6A3',
|
|
202
|
+
'#7D9490',
|
|
203
|
+
'#68847F',
|
|
204
|
+
'#57756F',
|
|
205
|
+
'#476862',
|
|
206
|
+
'#3A5D57',
|
|
207
|
+
'#344B47',
|
|
208
|
+
'#2D3D3A',
|
|
209
|
+
'#273230',
|
|
210
|
+
],
|
|
211
|
+
'portal.blue': [
|
|
212
|
+
'#BDCBD3',
|
|
213
|
+
'#98B2C0',
|
|
214
|
+
'#749EB5',
|
|
215
|
+
'#508DB0',
|
|
216
|
+
'#3A7DA3',
|
|
217
|
+
'#276F98',
|
|
218
|
+
'#15638F',
|
|
219
|
+
'#1C506E',
|
|
220
|
+
'#1E4255',
|
|
221
|
+
'#1E3643',
|
|
222
|
+
],
|
|
223
|
+
'portal.gray': [
|
|
224
|
+
'#DEDEE0',
|
|
225
|
+
'#BDBFC3',
|
|
226
|
+
'#A0A4AB',
|
|
227
|
+
'#878C97',
|
|
228
|
+
'#707786',
|
|
229
|
+
'#60656F',
|
|
230
|
+
'#52555C',
|
|
231
|
+
'#46484C',
|
|
232
|
+
'#3B3C3F',
|
|
233
|
+
'#323335',
|
|
234
|
+
],
|
|
235
|
+
'portal.black': [
|
|
236
|
+
'#504F4E',
|
|
237
|
+
'#454443',
|
|
238
|
+
'#3C3A3A',
|
|
239
|
+
'#343232',
|
|
240
|
+
'#2D2B2A',
|
|
241
|
+
'#272524',
|
|
242
|
+
'#22201F',
|
|
243
|
+
'#1C1B1A',
|
|
244
|
+
'#181716',
|
|
245
|
+
'#141313',
|
|
246
|
+
],
|
|
247
|
+
'portal.red': [
|
|
248
|
+
'#EFDFE3',
|
|
249
|
+
'#DFAFBB',
|
|
250
|
+
'#D97F96',
|
|
251
|
+
'#DC4C71',
|
|
252
|
+
'#EB144C',
|
|
253
|
+
'#B32348',
|
|
254
|
+
'#8B2943',
|
|
255
|
+
'#6C2B3C',
|
|
256
|
+
'#552A35',
|
|
257
|
+
'#44272E',
|
|
258
|
+
],
|
|
259
|
+
'portal.violett': [
|
|
260
|
+
'#FBFAFC',
|
|
261
|
+
'#DDC9E8',
|
|
262
|
+
'#C497DE',
|
|
263
|
+
'#B265DD',
|
|
264
|
+
'#A52EE8',
|
|
265
|
+
'#9900EF',
|
|
266
|
+
'#7B14B5',
|
|
267
|
+
'#631E8A',
|
|
268
|
+
'#51236B',
|
|
269
|
+
'#422354',
|
|
270
|
+
],
|
|
271
|
+
'portal.deepPurple': [
|
|
272
|
+
'#F1F0F4',
|
|
273
|
+
'#CCC8DA',
|
|
274
|
+
'#ABA2C7',
|
|
275
|
+
'#8C7CBA',
|
|
276
|
+
'#6E57B5',
|
|
277
|
+
'#573BAC',
|
|
278
|
+
'#4527A0',
|
|
279
|
+
'#3F2B7C',
|
|
280
|
+
'#382B62',
|
|
281
|
+
'#32294D',
|
|
282
|
+
],
|
|
283
|
+
'portal.purple': [
|
|
284
|
+
'#DED6E3',
|
|
285
|
+
'#C2AFCD',
|
|
286
|
+
'#AA8ABE',
|
|
287
|
+
'#9764B6',
|
|
288
|
+
'#8743B0',
|
|
289
|
+
'#772EA4',
|
|
290
|
+
'#6A1B9A',
|
|
291
|
+
'#562177',
|
|
292
|
+
'#47235D',
|
|
293
|
+
'#3A2249',
|
|
294
|
+
],
|
|
295
|
+
'portal.hostingBlue': [
|
|
296
|
+
'#C4C6CA',
|
|
297
|
+
'#A6ABB1',
|
|
298
|
+
'#8B939C',
|
|
299
|
+
'#727E8C',
|
|
300
|
+
'#5F6C7C',
|
|
301
|
+
'#4F5D6E',
|
|
302
|
+
'#415062',
|
|
303
|
+
'#394350',
|
|
304
|
+
'#323941',
|
|
305
|
+
'#2B3035',
|
|
306
|
+
],
|
|
307
|
+
};
|