Files
2025-11-15 12:16:59 +01:00

84 lines
1.9 KiB
Go

package about
import (
. "git.gorlug.de/code/ersteller"
. "maragu.dev/gomponents"
. "maragu.dev/gomponents/html"
)
const AboutPath = "/about"
const AboutPathDe = "/ueber-uns"
var aboutTexts *AboutTexts
type AboutTexts struct {
PageTitle I18nText
PageDescription I18nText
HeroTitle I18nText
HeroDescription I18nText
}
type Page struct {
createPage CreateHtmxPageFunc
ViewRoute HtmxRoute
}
func NewPage(createPage CreateHtmxPageFunc, server HtmxServer, path *ActivePath) *Page {
if aboutTexts == nil {
createAboutTexts()
}
page := &Page{
createPage: createPage,
}
page.ViewRoute = NewHtmxGetRoute(page.View, LanguagePaths{
En: AboutPath,
De: AboutPathDe,
}).SetActivePath(path)
page.ViewRoute.Add(server)
return page
}
func createAboutTexts() {
aboutTexts = &AboutTexts{
PageTitle: NewI18nText(map[Language]string{
En: "About",
De: "Über uns",
}),
PageDescription: NewI18nText(map[Language]string{
En: "Learn more about us",
De: "Erfahren Sie mehr über uns",
}),
HeroTitle: NewI18nText(map[Language]string{
En: "About Us",
De: "Über uns",
}),
HeroDescription: NewI18nText(map[Language]string{
En: "This is a placeholder about page. Customize this content to tell your story.",
De: "Dies ist eine Platzhalter-Über-uns-Seite. Passen Sie diesen Inhalt an, um Ihre Geschichte zu erzählen.",
}),
}
}
func (p *Page) getMetaData() PageWebsiteMetaData {
return PageWebsiteMetaData{
Title: aboutTexts.PageTitle,
Lang: En,
Description: aboutTexts.PageDescription,
}
}
func (p *Page) View(c HtmxContext) {
content := AboutContent(c.GetLanguage())
p.createPage(c, p.getMetaData(), content)
}
func AboutContent(language Language) Group {
return []Node{
Div(Class("hero-section"),
H1(Class("hero-title"), Text(aboutTexts.HeroTitle.FromLang(language))),
P(Class("hero-description"), Text(aboutTexts.HeroDescription.FromLang(language))),
),
}
}