templates/homepage.go (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | package templates
import (
"alin.ovh/homestead/internal/config"
"alin.ovh/homestead/internal/content"
g "alin.ovh/gomponents"
. "alin.ovh/gomponents/html"
)
type HomepageVars struct {
Email string
Me []config.MenuItem
Posts []*content.Post
}
func Homepage(site SiteSettings, vars HomepageVars, content g.Node) g.Node {
return Layout(site, PageSettings{
Title: site.Title,
TitleAttrs: Attrs{"class": "p-name u-url"},
BodyAttrs: Attrs{"class": "h-card"},
},
Div(
ID("content"),
content,
),
Section(
H2(g.Text("Latest Posts")),
list(vars.Posts[0:5]),
),
Section(
H2(g.Text("Elsewhere on the Internet")),
Ul(Class("elsewhere"),
Li(
A(Class("u-email"), Rel("me"), Href("mailto:"+vars.Email), g.Text(vars.Email)),
),
g.Map(vars.Me, func(link config.MenuItem) g.Node {
return Li(
A(Class("u-url"), Rel("me"), Href(link.URL.String()), g.Text(link.Name)),
)
}),
),
),
)
}
|