diff --git a/packages/webapp/package.json b/packages/webapp/package.json index c997612b2..670f64eef 100644 --- a/packages/webapp/package.json +++ b/packages/webapp/package.json @@ -5,6 +5,7 @@ "dependencies": { "@bigcapital/utils": "*", "@bigcapital/pdf-templates": "*", + "@bigcapital/email-components": "*", "@blueprintjs-formik/core": "^0.3.7", "@blueprintjs-formik/datetime": "^0.3.7", "@blueprintjs-formik/select": "^0.3.5", diff --git a/packages/webapp/src/containers/Sales/Estimates/SendMailViewDrawer/SendMailViewReceiptPreview.tsx b/packages/webapp/src/containers/Sales/Estimates/SendMailViewDrawer/SendMailViewReceiptPreview.tsx new file mode 100644 index 000000000..b6157c16e --- /dev/null +++ b/packages/webapp/src/containers/Sales/Estimates/SendMailViewDrawer/SendMailViewReceiptPreview.tsx @@ -0,0 +1,49 @@ +import { x } from '@xstyled/emotion'; +import { Stack, StackProps } from '@/components'; + +interface SendMailReceiptProps extends StackProps { + children: React.ReactNode; +} + +export function SendMailReceipt({ + children, + ...restProps +}: SendMailReceiptProps) { + return ( + + ); +} + +interface SendMailReceiptCompanyLogoProps extends StackProps { + src: string; +} + +function SendMailReceiptCompanyLogo({ + src, + ...props +}: SendMailReceiptCompanyLogoProps) { + return ( + + ); +} + +SendMailReceipt.CompanyLogo = SendMailReceiptCompanyLogo; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 34598c1cd..bca408cb5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -484,6 +484,9 @@ importers: packages/webapp: dependencies: + '@bigcapital/email-components': + specifier: '*' + version: link:../../shared/email-components '@bigcapital/pdf-templates': specifier: '*' version: link:../../shared/pdf-templates diff --git a/shared/email-components/src/lib/CreditNoteEmailTemplate.tsx b/shared/email-components/src/lib/CreditNoteEmailTemplate.tsx index 3bccc11df..bc2341f45 100644 --- a/shared/email-components/src/lib/CreditNoteEmailTemplate.tsx +++ b/shared/email-components/src/lib/CreditNoteEmailTemplate.tsx @@ -1,8 +1,8 @@ import { Button, Column, - Container, Heading, + render, Row, Section, Text, @@ -135,6 +135,15 @@ export const CreditNoteEmailTemplate: React.FC< ); }; +/** + * Renders the estimate mail template to string + * @param {EstimatePaymentEmailProps} props + * @returns {Promise} + */ +export const renderCreditNoteEmailTemplate = (props: CreditNoteEmailProps) => { + return render(); +}; + const containerStyle: CSSProperties = { backgroundColor: '#fff', width: '100%', diff --git a/shared/email-components/src/lib/EstimatePaymentEmail.tsx b/shared/email-components/src/lib/EstimatePaymentEmail.tsx index 8bc3333bc..562cf76d8 100644 --- a/shared/email-components/src/lib/EstimatePaymentEmail.tsx +++ b/shared/email-components/src/lib/EstimatePaymentEmail.tsx @@ -4,6 +4,7 @@ import { Column, Container, Heading, + render, Row, Section, Text, @@ -143,6 +144,17 @@ export const EstimatePaymentEmail: React.FC< ); }; +/** + * Renders the estimate mail template to string + * @param {EstimatePaymentEmailProps} props + * @returns {Promise} + */ +export const renderEstimateEmailTemplate = ( + props: EstimatePaymentEmailProps +) => { + return render(); +}; + const headerInfoStyle: CSSProperties = { textAlign: 'center', marginBottom: 20, diff --git a/shared/email-components/src/lib/PaymentReceivedEmailTemplate.tsx b/shared/email-components/src/lib/PaymentReceivedEmailTemplate.tsx index f502ab4af..a91670506 100644 --- a/shared/email-components/src/lib/PaymentReceivedEmailTemplate.tsx +++ b/shared/email-components/src/lib/PaymentReceivedEmailTemplate.tsx @@ -2,6 +2,7 @@ import { Button, Container, Heading, + render, Row, Section, Text, @@ -65,47 +66,58 @@ export const PaymentReceivedEmailTemplate: React.FC< viewPaymentButtonLabel = 'View Payment', viewPaymentButtonUrl, }) => { - return ( - - - {companyLogoUri && ( -
-
-
- )} -
- - {companyName} - - - {total} - - - - {paymentNumberLabel?.replace('{paymentNumber}', paymentNumber)} - - + return ( + + + {companyLogoUri && ( +
+
+ )} +
+ + {companyName} + + + {total} + + + + {paymentNumberLabel?.replace('{paymentNumber}', paymentNumber)} + + +
- {message} - -
-
- ); - }; + {message} + + + + ); +}; + +/** + * Renders the payment received mail template to string + * @param {EstimatePaymentEmailProps} props + * @returns {Promise} + */ +export const renderPaymentReceivedEmailTemplate = ( + props: PaymentReceivedEmailTemplateProps +) => { + return render(); +}; const containerStyle: CSSProperties = { backgroundColor: '#fff', diff --git a/shared/email-components/src/lib/ReceiptPaymentEmail.tsx b/shared/email-components/src/lib/ReceiptPaymentEmail.tsx index e195ff357..00a7dead1 100644 --- a/shared/email-components/src/lib/ReceiptPaymentEmail.tsx +++ b/shared/email-components/src/lib/ReceiptPaymentEmail.tsx @@ -1,8 +1,8 @@ import { Button, Column, - Container, Heading, + render, Row, Section, Text, @@ -148,6 +148,17 @@ export const ReceiptEmailTemplate: React.FC< ); }; +/** + * Renders the sale receipt mail template to string + * @param {ReceiptEmailTemplateProps} props + * @returns {Promise} + */ +export const renderReceiptEmailTemplate = ( + props: ReceiptEmailTemplateProps +) => { + return render(); +}; + const headerInfoStyle: CSSProperties = { textAlign: 'center', marginBottom: 20,