chore: set up twenty-emails config so build isn't needed in development (#3619)
* chore: set up twenty-emails config so build isn't needed in development * fix: fix script dependency * chore: use @vitejs/plugin-react-swc * Remove useless dependancy * Fix typing * chore: use baseUrl in twenty-emails * chore: fix docker server prod build * refactor: optimize Docker file and tsconfig * fix: fix WORKDIR in docker --------- Co-authored-by: martmull <martmull@hotmail.fr>
This commit is contained in:
@ -1,13 +1,17 @@
|
||||
import * as React from 'react';
|
||||
import { PropsWithChildren } from 'react';
|
||||
import { Container, Html } from '@react-email/components';
|
||||
import { BaseHead } from 'src/components/BaseHead';
|
||||
import { Logo } from 'src/components/Logo';
|
||||
|
||||
export const BaseEmail = ({ children, width = 290 }) => {
|
||||
type BaseEmailProps = PropsWithChildren<{
|
||||
width?: number;
|
||||
}>;
|
||||
|
||||
export const BaseEmail = ({ children, width }: BaseEmailProps) => {
|
||||
return (
|
||||
<Html lang="en">
|
||||
<BaseHead />
|
||||
<Container width={width}>
|
||||
<Container width={width || 290}>
|
||||
<Logo />
|
||||
{children}
|
||||
</Container>
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
import * as React from 'react';
|
||||
import { Font, Head } from '@react-email/components';
|
||||
import { emailTheme } from 'src/common-style';
|
||||
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import * as React from 'react';
|
||||
import { ReactNode } from 'react';
|
||||
import { Button } from '@react-email/button';
|
||||
import { emailTheme } from 'src/common-style';
|
||||
|
||||
const callToActionStyle = {
|
||||
display: 'flex',
|
||||
padding: '8px 32px',
|
||||
@ -13,7 +14,12 @@ const callToActionStyle = {
|
||||
fontWeight: emailTheme.font.weight.bold,
|
||||
};
|
||||
|
||||
export const CallToAction = ({ value, href }) => {
|
||||
type CallToActionProps = {
|
||||
href: string;
|
||||
value: ReactNode;
|
||||
};
|
||||
|
||||
export const CallToAction = ({ value, href }: CallToActionProps) => {
|
||||
return (
|
||||
<Button href={href} style={callToActionStyle}>
|
||||
{value}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import * as React from 'react';
|
||||
import { ReactNode } from 'react';
|
||||
import { Column } from '@react-email/components';
|
||||
import { Row } from '@react-email/row';
|
||||
import { Text } from '@react-email/text';
|
||||
@ -18,7 +18,11 @@ const highlightedStyle = {
|
||||
color: emailTheme.font.colors.highlighted,
|
||||
};
|
||||
|
||||
export const HighlightedText = ({ value }) => {
|
||||
type HighlightedTextProps = {
|
||||
value: ReactNode;
|
||||
};
|
||||
|
||||
export const HighlightedText = ({ value }: HighlightedTextProps) => {
|
||||
return (
|
||||
<Row style={rowStyle}>
|
||||
<Column>
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import * as React from 'react';
|
||||
import { ReactNode } from 'react';
|
||||
import { Link as EmailLink } from '@react-email/components';
|
||||
import { emailTheme } from 'src/common-style';
|
||||
|
||||
@ -7,7 +7,12 @@ const linkStyle = {
|
||||
textDecoration: 'underline',
|
||||
};
|
||||
|
||||
export const Link = ({ value, href }) => {
|
||||
type LinkProps = {
|
||||
value: ReactNode;
|
||||
href: string;
|
||||
};
|
||||
|
||||
export const Link = ({ value, href }: LinkProps) => {
|
||||
return (
|
||||
<EmailLink href={href} style={linkStyle}>
|
||||
{value}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import * as React from 'react';
|
||||
import { PropsWithChildren } from 'react';
|
||||
import { Text } from '@react-email/text';
|
||||
import { emailTheme } from 'src/common-style';
|
||||
|
||||
@ -8,6 +8,6 @@ const mainTextStyle = {
|
||||
color: emailTheme.font.colors.primary,
|
||||
};
|
||||
|
||||
export const MainText = ({ children }) => {
|
||||
export const MainText = ({ children }: PropsWithChildren) => {
|
||||
return <Text style={mainTextStyle}>{children}</Text>;
|
||||
};
|
||||
|
||||
@ -1,6 +1,10 @@
|
||||
import { ReactNode } from 'react';
|
||||
import { Heading } from '@react-email/components';
|
||||
import * as React from 'react';
|
||||
|
||||
export const Title = ({ value }) => {
|
||||
type TitleProps = {
|
||||
value: ReactNode;
|
||||
};
|
||||
|
||||
export const Title = ({ value }: TitleProps) => {
|
||||
return <Heading as="h1">{value}</Heading>;
|
||||
};
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
import * as React from 'react';
|
||||
import { BaseEmail } from 'src/components/BaseEmail';
|
||||
import { CallToAction } from 'src/components/CallToAction';
|
||||
import { HighlightedText } from 'src/components/HighlightedText';
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
import * as React from 'react';
|
||||
import { Column, Row, Section } from '@react-email/components';
|
||||
import { BaseEmail } from 'src/components/BaseEmail';
|
||||
import { MainText } from 'src/components/MainText';
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
import * as React from 'react';
|
||||
import { BaseEmail } from 'src/components/BaseEmail';
|
||||
import { CallToAction } from 'src/components/CallToAction';
|
||||
import { Link } from 'src/components/Link';
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
import * as React from 'react';
|
||||
import { format } from 'date-fns';
|
||||
import { BaseEmail } from 'src/components/BaseEmail';
|
||||
import { CallToAction } from 'src/components/CallToAction';
|
||||
|
||||
4
packages/twenty-emails/src/index.ts
Normal file
4
packages/twenty-emails/src/index.ts
Normal file
@ -0,0 +1,4 @@
|
||||
export * from './emails/clean-inactive-workspaces.email';
|
||||
export * from './emails/delete-inactive-workspaces.email';
|
||||
export * from './emails/password-reset-link.email';
|
||||
export * from './emails/password-update-notify.email';
|
||||
Reference in New Issue
Block a user