Files
outline/server/emails/templates/WelcomeEmail.tsx
2024-06-12 22:33:00 -04:00

88 lines
2.4 KiB
TypeScript

import * as React from "react";
import { UserRole } from "@shared/types";
import env from "@server/env";
import BaseEmail, { EmailProps } from "./BaseEmail";
import Body from "./components/Body";
import Button from "./components/Button";
import EmailTemplate from "./components/EmailLayout";
import EmptySpace from "./components/EmptySpace";
import Footer from "./components/Footer";
import Header from "./components/Header";
import Heading from "./components/Heading";
type Props = EmailProps & {
role: UserRole;
teamUrl: string;
};
type BeforeSend = Record<string, never>;
/**
* Email sent to a user when their account has just been created, or they signed
* in for the first time from an invite.
*/
export default class WelcomeEmail extends BaseEmail<Props, BeforeSend> {
protected subject() {
return `Welcome to ${env.APP_NAME}`;
}
protected async beforeSend(props: Props) {
if (props.role === UserRole.Guest) {
return false;
}
return {};
}
protected preview() {
return `${env.APP_NAME} is a place for your team to build and share knowledge.`;
}
protected renderAsText({ teamUrl }: Props) {
return `
Welcome to ${env.APP_NAME}!
${env.APP_NAME} is a place for your team to build and share knowledge.
To get started, head to the home screen and try creating a collection to help document your processes, create playbooks, or plan your team's work.
Or, learn more about everything Outline can do in the guide:
https://docs.getoutline.com/s/guide
${teamUrl}/home
`;
}
protected render({ teamUrl }: Props) {
const welcomeLink = `${teamUrl}/home?ref=welcome-email`;
return (
<EmailTemplate previewText={this.preview()}>
<Header />
<Body>
<Heading>Welcome to {env.APP_NAME}!</Heading>
<p>
{env.APP_NAME} is a place for your team to build and share
knowledge.
</p>
<p>
To get started, head to the home screen and try creating a
collection to help document your processes, create playbooks, or
plan your teams work.
</p>
<p>
Or, learn more about everything Outline can do in{" "}
<a href="https://docs.getoutline.com/s/guide">the guide</a>.
</p>
<EmptySpace height={10} />
<p>
<Button href={welcomeLink}>Open {env.APP_NAME}</Button>
</p>
</Body>
<Footer />
</EmailTemplate>
);
}
}