package templates import ( "io/fs" "go.alanpearce.eu/website/internal/config" "net/url" ) var ( css string ) func Setup() { bytes, err := fs.ReadFile(Files, "style.css") if err != nil { panic(err) } css = string(bytes) } type PageSettings struct { Title string Path string TitleAttrs templ.Attributes BodyAttrs templ.Attributes } func extendClasses(cs string, attrs templ.Attributes) string { if extras, exists := attrs["class"]; exists { return templ.Classes(cs, extras).String() } else { return cs } } templ menuItem(item config.MenuItem) { { item.Name } } templ Page(site *config.Config, page PageSettings) { { page.Title } @style(css)

{ site.Title }

{ children... }
@counter(site, page.Path, page.Title) if site.InjectLiveReload { } } func mkURL(original config.URL, path string, title string) string { ou := *original.URL u := config.URL{ URL: &ou, } q := url.Values{} q.Add("p", path) q.Add("t", title) u.RawQuery = q.Encode() return u.String() } templ counter(config *config.Config, path string, title string) { } func style(css string) templ.Component { return templ.ComponentFunc(func(ctx context.Context, w io.Writer) (err error) { _, err = io.WriteString(w, "") return }) }