package main import ( "bytes" "context" "fmt" "git.dev.alexdunmow.com/block/core/templates" ) // NoirEmailWrapper wraps body content in a pure black 600px canvas with a // Tenor Sans masthead and a mono caption strip above the footer. func NoirEmailWrapper(body string, emailCtx templates.EmailContext) string { var buf bytes.Buffer _ = noirEmailTemplate(emailCtx, body).Render(context.Background(), &buf) return buf.String() } // noirEmailTemplate renders the inline-styled HTML email wrapper. templ noirEmailTemplate(emailCtx templates.EmailContext, body string) { { emailCtx.SiteSettings.SiteName } if emailCtx.PreviewText != "" {
{ emailCtx.PreviewText }
}
if emailCtx.SiteSettings.LogoURL != "" { }
if emailCtx.SiteSettings.SiteName != "" {
{ emailCtx.SiteSettings.SiteName }
}
{
@templ.Raw(body)
if emailCtx.SiteSettings.SiteName != "" { { "© " + emailCtx.SiteSettings.SiteName } } if emailCtx.UnsubscribeURL != "" { Unsubscribe }
if emailCtx.SiteSettings.SiteURL != "" { { emailCtx.SiteSettings.SiteURL } }
} // noirEmailBg returns the canvas colour (pure black per spec) with a fallback // derived from the EmailContext. func noirEmailBg(emailCtx templates.EmailContext) string { if emailCtx.Colors.Background != "" { return emailCtx.Colors.Background } return "#000000" } func noirEmailCard(emailCtx templates.EmailContext) string { if emailCtx.Colors.Card != "" { return emailCtx.Colors.Card } return "#0a0a0a" } func noirEmailFg(emailCtx templates.EmailContext) string { if emailCtx.Colors.Foreground != "" { return emailCtx.Colors.Foreground } return "#f5f5f5" } func noirEmailMutedFg(emailCtx templates.EmailContext) string { if emailCtx.Colors.MutedForeground != "" { return emailCtx.Colors.MutedForeground } return "#8c8c8c" } func noirEmailBorder(emailCtx templates.EmailContext) string { if emailCtx.Colors.Border != "" { return emailCtx.Colors.Border } return "#1f1f1f" }