package templates import ( "context" "io" ) // HTMLComponent is the generic interface for rendered template output. // Both templ.Component and pongo2 engine output satisfy this interface. type HTMLComponent interface { Render(ctx context.Context, w io.Writer) error } // TemplateFunc is the signature for template functions loaded from plugins. type TemplateFunc func(ctx context.Context, doc map[string]any) HTMLComponent // PageTemplateMeta provides metadata about a page template within a system template. type PageTemplateMeta struct { Key string Title string Description string Slots []string } // SystemTemplateMeta provides metadata about a system template (theme). type SystemTemplateMeta struct { Key string Title string Description string } // EmailWrapperFunc wraps body content in a branded email template. type EmailWrapperFunc func(body string, ctx EmailContext) string // EmailContext provides data for email wrapper rendering. type EmailContext struct { Colors EmailColors SiteSettings EmailSiteData UnsubscribeURL string PreviewText string } // EmailColors contains theme colors converted to hex for email inlining. type EmailColors struct { Primary string PrimaryForeground string Secondary string SecondaryForeground string Background string Foreground string Muted string MutedForeground string Border string Card string CardForeground string } // EmailSiteData contains site information for email rendering. type EmailSiteData struct { SiteName string LogoURL string SiteURL string SupportEmail string }