package main import ( "git.dev.alexdunmow.com/block/core/templates/bn" ) // PageData carries the data passed into Brutalist page templates. type PageData struct { Title string Slots map[string]string ThemeMode string ThemeCSS string SiteSettings bn.SiteSettingsData PageMeta bn.PageMeta StructuredData string CSSHash string PageviewNonce string EngagementConfig bn.EngagementConfig } func parseBrutalistPageData(doc map[string]any) PageData { title := "Untitled" if t, ok := doc["title"].(string); ok { title = t } slots := make(map[string]string) if s, ok := doc["slots"].(map[string]string); ok { slots = s } themeCSS := "" if tc, ok := doc["theme_css"].(string); ok { themeCSS = tc } structuredData := "" if sd, ok := doc["structured_data"].(string); ok { structuredData = sd } cssHash := "" if ch, ok := doc["css_hash"].(string); ok { cssHash = ch } pageviewNonce := "" if pn, ok := doc["pageview_nonce"].(string); ok { pageviewNonce = pn } themeMode := "light" if tm, ok := doc["theme_mode"].(string); ok && tm != "" { themeMode = tm } return PageData{ Title: title, Slots: slots, ThemeMode: themeMode, ThemeCSS: themeCSS, SiteSettings: bn.ParseSiteSettings(doc), PageMeta: bn.ParsePageMeta(doc), StructuredData: structuredData, CSSHash: cssHash, PageviewNonce: pageviewNonce, EngagementConfig: bn.ParseEngagementConfig(doc), } }