2026-05-12 21:19:52 +02:00
import { Link , Text , render } from '@react-email/components' ;
import * as React from 'react' ;
2026-05-13 00:08:51 +02:00
import { brandingPrimaryColor , renderShell , safeUrl , type BrandingShell } from '@/lib/email/shell' ;
2026-05-12 21:19:52 +02:00
export interface InquiryClientConfirmationData {
firstName : string ;
mooringNumber : string | null ;
contactEmail : string ;
portName? : string ;
}
interface RenderOpts {
branding? : BrandingShell | null ;
}
function ClientConfirmationBody ( {
firstName ,
berthText ,
contactEmail ,
portName ,
accent ,
} : {
firstName : string ;
berthText : string ;
contactEmail : string ;
portName : string ;
accent : string ;
} ) {
return (
< >
< Text style = { { marginBottom : '10px' , fontSize : '16px' } } > Dear { firstName } , < / Text >
< Text style = { { marginBottom : '10px' , fontSize : '16px' } } >
Thank you for expressing interest in { berthText } . Our team has registered your interest , and
we will reach out to you very shortly by your preferred method of contact with more
information .
< / Text >
< Text style = { { marginBottom : '10px' , fontSize : '16px' } } >
If you have any questions , please feel free to reach out to us at { ' ' }
< Link
2026-05-13 00:08:51 +02:00
href = { safeUrl ( ` mailto: ${ contactEmail } ` ) }
2026-05-12 21:19:52 +02:00
style = { { color : accent , textDecoration : 'underline' } }
>
{ contactEmail }
< / Link >
.
< / Text >
< Text style = { { fontSize : '16px' } } >
Best regards ,
< br / >
The { portName } Sales Team
< / Text >
< / >
) ;
}
export async function inquiryClientConfirmation (
data : InquiryClientConfirmationData ,
overrides? : RenderOpts ,
) {
const { firstName , mooringNumber , contactEmail } = data ;
const portName = data . portName ? ? 'Port Nimara' ;
const berthText = mooringNumber ? ` Berth ${ mooringNumber } ` : ` a ${ portName } Berth ` ;
const subject = mooringNumber
? ` Thank You for Your Interest in Berth ${ mooringNumber } `
: ` Thank You for Your Interest in a ${ portName } Berth ` ;
const accent = brandingPrimaryColor ( overrides ? . branding ) ;
const body = await render (
< ClientConfirmationBody
firstName = { firstName }
berthText = { berthText }
contactEmail = { contactEmail }
portName = { portName }
accent = { accent }
/ > ,
{ pretty : false } ,
) ;
const text = [
` Dear ${ firstName } , ` ,
'' ,
` Thank you for expressing interest in ${ berthText } . Our team has registered your interest, and we will reach out to you very shortly by your preferred method of contact with more information. ` ,
'' ,
` If you have any questions, please feel free to reach out to us at ${ contactEmail } . ` ,
'' ,
'Best regards,' ,
` The ${ portName } Sales Team ` ,
] . join ( '\n' ) ;
return {
subject ,
html : renderShell ( { title : subject , body , branding : overrides?.branding } ) ,
text ,
} ;
}