package main
import (
"context"
"git.dev.alexdunmow.com/block/core/templates/bn"
)
// Brutalist default page template: header / 12-col body / colophon footer.
templ Brutalist(data PageData) {
@bn.Head(bn.HeadData{
Title: data.Title,
Settings: data.SiteSettings,
PageMeta: data.PageMeta,
ThemeMode: data.ThemeMode,
ThemeCSS: data.ThemeCSS,
PluginStyles: []string{"/templates/brutalist/style.css"},
StructuredData: data.StructuredData,
CSSHash: data.CSSHash,
PageviewNonce: data.PageviewNonce,
EngagementConfig: data.EngagementConfig,
})
@bn.AdminBypassBanner(data.SiteSettings)
if main, ok := data.Slots["main"]; ok && main != "" {
@templ.Raw(main)
} else {
NO CONTENT BLOCKS ASSIGNED TO THIS PAGE.
}
@bn.BodyEnd(data.SiteSettings)
}
// BrutalistLanding: oversized headline + project ledger.
templ BrutalistLanding(data PageData) {
@bn.Head(bn.HeadData{
Title: data.Title,
Settings: data.SiteSettings,
PageMeta: data.PageMeta,
ThemeMode: data.ThemeMode,
ThemeCSS: data.ThemeCSS,
PluginStyles: []string{"/templates/brutalist/style.css"},
StructuredData: data.StructuredData,
CSSHash: data.CSSHash,
PageviewNonce: data.PageviewNonce,
EngagementConfig: data.EngagementConfig,
})
@bn.AdminBypassBanner(data.SiteSettings)
@templ.Raw(data.Slots["hero"])
if ledger, ok := data.Slots["ledger"]; ok && ledger != "" {
@templ.Raw(ledger)
}
@bn.BodyEnd(data.SiteSettings)
}
// BrutalistArticle: case study with metadata strip.
templ BrutalistArticle(data PageData) {
@bn.Head(bn.HeadData{
Title: data.Title,
Settings: data.SiteSettings,
PageMeta: data.PageMeta,
ThemeMode: data.ThemeMode,
ThemeCSS: data.ThemeCSS,
PluginStyles: []string{"/templates/brutalist/style.css"},
StructuredData: data.StructuredData,
CSSHash: data.CSSHash,
PageviewNonce: data.PageviewNonce,
EngagementConfig: data.EngagementConfig,
})
@bn.AdminBypassBanner(data.SiteSettings)
@templ.Raw(data.Slots["meta"])
if main, ok := data.Slots["main"]; ok && main != "" {
@templ.Raw(main)
}
@bn.BodyEnd(data.SiteSettings)
}
// BrutalistFullWidth: edge-to-edge gallery layout.
templ BrutalistFullWidth(data PageData) {
@bn.Head(bn.HeadData{
Title: data.Title,
Settings: data.SiteSettings,
PageMeta: data.PageMeta,
ThemeMode: data.ThemeMode,
ThemeCSS: data.ThemeCSS,
PluginStyles: []string{"/templates/brutalist/style.css"},
StructuredData: data.StructuredData,
CSSHash: data.CSSHash,
PageviewNonce: data.PageviewNonce,
EngagementConfig: data.EngagementConfig,
})
@bn.AdminBypassBanner(data.SiteSettings)
if main, ok := data.Slots["main"]; ok && main != "" {
@templ.Raw(main)
}
@bn.BodyEnd(data.SiteSettings)
}
func RenderBrutalist(ctx context.Context, doc map[string]any) templ.Component {
return Brutalist(parseBrutalistPageData(doc))
}
func RenderBrutalistLanding(ctx context.Context, doc map[string]any) templ.Component {
return BrutalistLanding(parseBrutalistPageData(doc))
}
func RenderBrutalistArticle(ctx context.Context, doc map[string]any) templ.Component {
return BrutalistArticle(parseBrutalistPageData(doc))
}
func RenderBrutalistFullWidth(ctx context.Context, doc map[string]any) templ.Component {
return BrutalistFullWidth(parseBrutalistPageData(doc))
}