diff --git a/packages/server/assets/emails/templates/basic/basic.html b/packages/server/assets/emails/templates/basic/basic.html index 90e7585d5..00e57361d 100644 --- a/packages/server/assets/emails/templates/basic/basic.html +++ b/packages/server/assets/emails/templates/basic/basic.html @@ -518,7 +518,7 @@ font-size: 14px; line-height: 1; text-align: center; - color: #999999; + color: #626263; " > Sent from <%= params.server.name || 'Speckle Server' %> at @@ -528,7 +528,8 @@ > <%= params.server.url %> - , deployed and managed by <%= params.server.company %>. Your + , + deployed and managed by <%= params.server.company %>. Your admin contact is <%= params.server.contact %>. diff --git a/packages/server/assets/emails/templates/components/ctaButton.mjml b/packages/server/assets/emails/templates/components/ctaButton.mjml index bbbd4fbab..d72b7e89e 100644 --- a/packages/server/assets/emails/templates/components/ctaButton.mjml +++ b/packages/server/assets/emails/templates/components/ctaButton.mjml @@ -1,15 +1,14 @@ - + <%- params.cta.title -%> diff --git a/packages/server/assets/emails/templates/components/footer.mjml b/packages/server/assets/emails/templates/components/footer.mjml index efb333941..96430dba5 100644 --- a/packages/server/assets/emails/templates/components/footer.mjml +++ b/packages/server/assets/emails/templates/components/footer.mjml @@ -1,6 +1,6 @@ - + - + Sent from <%- params.serverInfo.name -%> at <%- params.serverInfo.canonicalUrl -%> - , deployed and managed by <%- params.serverInfo.company -%>. Your admin contact is + , deployed and managed by <%- params.serverInfo.company -%>. +
+ Your admin contact is - <%- params.serverInfo.adminContact -%> + <%- params.serverInfo.adminContact -%>. - .
- + - + Brought to you by Speckle - , the Open Source Data Platform for 3D Data. Follow Us + , the Open Source Data Platform for 3D Data.
- - LinkedIn + Join our + Community forum +
+
+ Follow us + + LinkedIn + +     + + X + +     + + Instagram + +     + + YouTube - Twitter - Instagram - Facebook - YouTube - Community
diff --git a/packages/server/assets/emails/templates/components/head.mjml b/packages/server/assets/emails/templates/components/head.mjml index 83878e56d..e5529ffd6 100644 --- a/packages/server/assets/emails/templates/components/head.mjml +++ b/packages/server/assets/emails/templates/components/head.mjml @@ -1,6 +1,7 @@ - + + h1 { font-size: 2em } h2 { font-size: 1.5em } h3 { font-size: 1.17em } h4 { diff --git a/packages/server/assets/emails/templates/components/headerLogo.mjml b/packages/server/assets/emails/templates/components/headerLogo.mjml index 383d1750f..c9e0ae10d 100644 --- a/packages/server/assets/emails/templates/components/headerLogo.mjml +++ b/packages/server/assets/emails/templates/components/headerLogo.mjml @@ -1,7 +1,7 @@ - + diff --git a/packages/server/assets/emails/templates/speckleBasicEmailTemplate.mjml.ejs b/packages/server/assets/emails/templates/speckleBasicEmailTemplate.mjml.ejs index 40b3bc310..321772dba 100644 --- a/packages/server/assets/emails/templates/speckleBasicEmailTemplate.mjml.ejs +++ b/packages/server/assets/emails/templates/speckleBasicEmailTemplate.mjml.ejs @@ -6,9 +6,7 @@ - - <%- params.body.mjml -%> - + <%- params.body.mjml -%> <% if (params.cta) { %> @@ -18,19 +16,19 @@ <% if (params.bodyEnd?.mjml?.length) { %> - - <%- params.bodyEnd?.mjml -%> - + <%- params.bodyEnd?.mjml -%> - <% } %> - - <% if (params.user?.email) { %> - + <% } %> <% if (params.user?.email) { %> + - +

If you don't want to receive these emails, update your preferences - here + + here + .

diff --git a/packages/server/assets/public/social/facebook.svg b/packages/server/assets/public/social/facebook.svg new file mode 100644 index 000000000..133487659 --- /dev/null +++ b/packages/server/assets/public/social/facebook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/server/assets/public/social/instagram.svg b/packages/server/assets/public/social/instagram.svg new file mode 100644 index 000000000..615c7d6e3 --- /dev/null +++ b/packages/server/assets/public/social/instagram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/server/assets/public/social/linkedin.svg b/packages/server/assets/public/social/linkedin.svg new file mode 100644 index 000000000..d9d3241e7 --- /dev/null +++ b/packages/server/assets/public/social/linkedin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/server/assets/public/social/x.svg b/packages/server/assets/public/social/x.svg new file mode 100644 index 000000000..ff082526f --- /dev/null +++ b/packages/server/assets/public/social/x.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/server/assets/public/social/youtube.svg b/packages/server/assets/public/social/youtube.svg new file mode 100644 index 000000000..bda19ab71 --- /dev/null +++ b/packages/server/assets/public/social/youtube.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/server/assets/public/speckle-email-logo.png b/packages/server/assets/public/speckle-email-logo.png index 79aef8d15..bd5f850ab 100644 Binary files a/packages/server/assets/public/speckle-email-logo.png and b/packages/server/assets/public/speckle-email-logo.png differ diff --git a/packages/server/modules/emails/services/verification/request.ts b/packages/server/modules/emails/services/verification/request.ts index 5547b33cb..694fd684a 100644 --- a/packages/server/modules/emails/services/verification/request.ts +++ b/packages/server/modules/emails/services/verification/request.ts @@ -16,7 +16,7 @@ import { import { GetUser } from '@/modules/core/domain/users/operations' import { GetServerInfo } from '@/modules/core/domain/server/operations' -const EMAIL_SUBJECT = 'Speckle Account E-mail Verification' +const EMAIL_SUBJECT = 'Speckle account email verification' type CreateNewVerificationDeps = { getUser: GetUser @@ -101,11 +101,11 @@ const createNewEmailVerificationFactory = } function buildMjmlBody(verificationCode: string) { - const bodyStart = `

You have just registered to the Speckle server, or initiated the email verification process manually. To finalize the verification process, use the code below.

- ${verificationCode} -

This code will expire in 5 minutes. Please do not disclose this code to others.

-

If you did not make this request, please disregard this email.

-

See you soon,
Speckle

` + const bodyStart = `You have just registered to the Speckle server, or initiated the email verification process manually. To finalize the verification process, use the code below. + ${verificationCode} + This code will expire in 5 minutes. Please do not disclose this code to others. + If you did not make this request, please disregard this email. + See you soon,
Speckle
` return { bodyStart } } diff --git a/packages/server/modules/emails/tests/verifications.spec.ts b/packages/server/modules/emails/tests/verifications.spec.ts index 6fb9eb028..75b9f24b3 100644 --- a/packages/server/modules/emails/tests/verifications.spec.ts +++ b/packages/server/modules/emails/tests/verifications.spec.ts @@ -92,7 +92,7 @@ describe('Email verifications @emails', () => { const emailParams = sendEmailInvocations.args[0][0] expect(emailParams).to.be.ok - expect(emailParams.subject).to.contain('Speckle Account E-mail Verification') + expect(emailParams.subject).to.contain('Speckle account email verification') const verification = await getPendingToken({ email: newGuy.email }) expect(verification).to.be.ok @@ -157,7 +157,7 @@ describe('Email verifications @emails', () => { const emailParams = sendEmailInvocations.args[0][0] expect(emailParams).to.be.ok - expect(emailParams.subject).to.contain('Speckle Account E-mail Verification') + expect(emailParams.subject).to.contain('Speckle account email verification') expect(emailParams.html).to.be.ok expect(emailParams.text).to.be.ok diff --git a/packages/server/modules/gatekeeper/services/trialEmails.ts b/packages/server/modules/gatekeeper/services/trialEmails.ts index 424856814..40a9d8f31 100644 --- a/packages/server/modules/gatekeeper/services/trialEmails.ts +++ b/packages/server/modules/gatekeeper/services/trialEmails.ts @@ -31,21 +31,17 @@ const buildMjmlBody = ({ expiresInDays === 0 ? `today` : `in ${expiresInDays} days` - const bodyStart = ` + const bodyStart = ` Hi ${workspaceAdmin.name}!

The trial for your workspace ${workspace.name} expires ${expireMessage}.
-
Upgrade to a paid plan before the trial expires to keep using your workspace. You can compare plans and get an overview of your estimated billing from your workspace's billing settings. -
-
-
` - const bodyEnd = ` -Have questions or feedback? Please write us at hello@speckle.systems and we'd be more than happy to talk. + const bodyEnd = ` +Have questions or feedback?
Please write us at hello@speckle.systems and we'd be more than happy to talk.
` return { bodyStart, bodyEnd } } diff --git a/packages/server/modules/notifications/services/handlers/mentionedInComment.ts b/packages/server/modules/notifications/services/handlers/mentionedInComment.ts index ca411c45a..c8dc9bb7a 100644 --- a/packages/server/modules/notifications/services/handlers/mentionedInComment.ts +++ b/packages/server/modules/notifications/services/handlers/mentionedInComment.ts @@ -111,14 +111,14 @@ function buildEmailTemplateMjml( return { bodyStart: ` - + Hello,

${author.name} has just mentioned you in a comment on the ${stream.name} project. Please click on the button below to see the comment.
`, - bodyEnd: undefined + bodyEnd: `

` } } diff --git a/packages/server/modules/notifications/services/handlers/newStreamAccessRequest.ts b/packages/server/modules/notifications/services/handlers/newStreamAccessRequest.ts index d2d5751f5..7d46e249d 100644 --- a/packages/server/modules/notifications/services/handlers/newStreamAccessRequest.ts +++ b/packages/server/modules/notifications/services/handlers/newStreamAccessRequest.ts @@ -82,14 +82,14 @@ function buildEmailTemplateHtml( const { requester, stream } = state return { - bodyStart: ` + bodyStart: ` Hello,

${requester.name} requested access to the ${stream.name} project. You can add them as a collaborator by clicking the button below.
`, - bodyEnd: ` + bodyEnd: ` You received this email because you are an owner on ${stream.name}. ` } diff --git a/packages/server/modules/notifications/services/handlers/streamAccessRequestApproved.ts b/packages/server/modules/notifications/services/handlers/streamAccessRequestApproved.ts index 28e7e803b..b852486f1 100644 --- a/packages/server/modules/notifications/services/handlers/streamAccessRequestApproved.ts +++ b/packages/server/modules/notifications/services/handlers/streamAccessRequestApproved.ts @@ -62,13 +62,13 @@ function buildEmailTemplateMjml( const { stream } = state return { - bodyStart: ` + bodyStart: ` Hello,

You have just been granted access to the ${stream.name} project. Check it out below:
`, - bodyEnd: ` + bodyEnd: ` You received this email because you requested access to this project ` } diff --git a/packages/server/modules/pwdreset/services/request.ts b/packages/server/modules/pwdreset/services/request.ts index f584c99b0..dcfd854b4 100644 --- a/packages/server/modules/pwdreset/services/request.ts +++ b/packages/server/modules/pwdreset/services/request.ts @@ -62,9 +62,9 @@ function buildResetLink(token: PasswordResetTokenRecord) { } function buildMjmlBody() { - const bodyStart = `Hello,

You have just requested a password reset a few moments ago for your Speckle account. Please click on the button below to complete the process:
` + const bodyStart = `Hello,

You have just requested a password reset a few moments ago for your Speckle account. Please click on the button below to complete the process:
` - const bodyEnd = `The link above is valid for 1 hour. If you didn't request a password reset, feel free to ignore this email - nothing will happen, and your account is secure.` + const bodyEnd = `The link above is valid for 1 hour. If you didn't request a password reset, feel free to ignore this email - nothing will happen, and your account is secure.` return { bodyStart, diff --git a/packages/server/modules/serverinvites/services/coreEmailContents.ts b/packages/server/modules/serverinvites/services/coreEmailContents.ts index e259dfb47..ffd1a9e8b 100644 --- a/packages/server/modules/serverinvites/services/coreEmailContents.ts +++ b/packages/server/modules/serverinvites/services/coreEmailContents.ts @@ -23,7 +23,7 @@ function buildServerMjmlPreamble(params: Parameters[0] const { message } = invite const bodyStart = ` - + Hello!

@@ -37,7 +37,7 @@ function buildServerMjmlPreamble(params: Parameters[0] return { bodyStart, bodyEnd: - 'Feel free to ignore this invite if you do not know the person sending it.' + 'Feel free to ignore this invite if you do not know the person sending it.' } } @@ -101,7 +101,7 @@ function buildProjectMjmlPreamble( const { message } = invite const bodyStart = ` - + Hello!

@@ -117,7 +117,7 @@ function buildProjectMjmlPreamble( return { bodyStart, bodyEnd: - 'Feel free to ignore this invite if you do not know the person sending it.' + 'Feel free to ignore this invite if you do not know the person sending it.' } } diff --git a/packages/server/modules/workspaces/services/invites.ts b/packages/server/modules/workspaces/services/invites.ts index 9c8624fa2..e6c5e7c3d 100644 --- a/packages/server/modules/workspaces/services/invites.ts +++ b/packages/server/modules/workspaces/services/invites.ts @@ -326,7 +326,7 @@ export const buildWorkspaceInviteEmailContentsFactory = const mjml = { bodyStart: ` - + Hello!

@@ -334,7 +334,7 @@ export const buildWorkspaceInviteEmailContentsFactory =
`, bodyEnd: - 'Feel free to ignore this invite if you do not know the person sending it.' + 'Feel free to ignore this invite if you do not know the person sending it.' } const text = { bodyStart: `Hello! diff --git a/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/approved.ts b/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/approved.ts index 9bef04dcb..2180cba24 100644 --- a/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/approved.ts +++ b/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/approved.ts @@ -13,18 +13,15 @@ const buildMjmlBody = ({ workspace, requester }: WorkspaceJoinRequestApprovedEmailArgs) => { - const bodyStart = ` + const bodyStart = ` Hi ${requester.name}!

You are now a member of the workspace ${workspace.name}. -
-
-
` - const bodyEnd = ` -Have questions or feedback? Please write us at hello@speckle.systems and we'd be more than happy to talk. + const bodyEnd = ` +Have questions or feedback?
Please write us at hello@speckle.systems and we'd be more than happy to talk.
` return { bodyStart, bodyEnd } } diff --git a/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/denied.ts b/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/denied.ts index 8405f0341..8868f652e 100644 --- a/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/denied.ts +++ b/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/denied.ts @@ -13,18 +13,15 @@ const buildMjmlBody = ({ workspace, requester }: WorkspaceJoinRequestDeniedEmailArgs) => { - const bodyStart = ` + const bodyStart = ` Hi ${requester.name}!

Your request to join the workspace ${workspace.name} was denied by the workspace admin. -
-
-
` - const bodyEnd = ` -Have questions or feedback? Please write us at hello@speckle.systems and we'd be more than happy to talk. + const bodyEnd = ` +Have questions or feedback?
Please write us at hello@speckle.systems and we'd be more than happy to talk.
` return { bodyStart, bodyEnd } } diff --git a/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/received.ts b/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/received.ts index 6ab9188b1..95366b533 100644 --- a/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/received.ts +++ b/packages/server/modules/workspaces/services/workspaceJoinRequestEmails/received.ts @@ -19,18 +19,14 @@ const buildMjmlBody = ({ requester, workspaceAdmin }: WorkspaceJoinRequestReceivedEmailArgs) => { - const bodyStart = ` + const bodyStart = ` Hi ${workspaceAdmin.name}!
-
${requester.name} is requesting to join your workspace ${workspace.name}. -
-
-
` - const bodyEnd = ` -Have questions or feedback? Please write us at hello@speckle.systems and we'd be more than happy to talk. + const bodyEnd = ` +Have questions or feedback?
Please write us at hello@speckle.systems and we'd be more than happy to talk.
` return { bodyStart, bodyEnd } }