themes-lcars/register.go
Alex Dunmow e992d8247d feat: LCARS theme plugin — Star Trek computer interface
First-class pongo2 theme with 4 color presets (Federation, Red Alert,
Sickbay, Engineering), 3 custom blocks (header, sidebar, panel),
2 page templates, heading/text overrides, email wrapper, bundled
Antonio font, and full LCARS CSS with elbow brackets, pill buttons,
and rounded bars.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-02 23:11:11 +08:00

51 lines
1.8 KiB
Go

package main
import (
"git.dev.alexdunmow.com/block/core/blocks"
"git.dev.alexdunmow.com/block/core/templates"
"git.dev.alexdunmow.com/block/core/templates/pongo"
)
var engine = pongo.NewEngine(TemplatesFS(), "/templates/lcars/style.css")
func Register(tr templates.TemplateRegistry, br blocks.BlockRegistry) error {
tr.RegisterSystemTemplate(templates.SystemTemplateMeta{
Key: "lcars",
Title: "LCARS",
Description: "Star Trek LCARS computer interface theme",
})
if err := tr.RegisterPageTemplate("lcars", templates.PageTemplateMeta{
Key: "default",
Title: "Standard Display",
Description: "Classic LCARS layout with sidebar and header frame",
Slots: []string{"header", "sidebar", "main", "footer"},
}, engine.MustPageTemplate("default.html")); err != nil {
return err
}
if err := tr.RegisterPageTemplate("lcars", templates.PageTemplateMeta{
Key: "full-display",
Title: "Full Display",
Description: "Full-width LCARS display without sidebar",
Slots: []string{"header", "main", "footer"},
}, engine.MustPageTemplate("full_display.html")); err != nil {
return err
}
if err := br.LoadSchemasFromFS(SchemasFS()); err != nil {
return err
}
br.Register(LCARSHeaderMeta, engine.MustBlockTemplateWithDefaults("blocks/header.html", headerDefaults))
br.Register(LCARSSidebarMeta, engine.MustBlockTemplateWithDefaults("blocks/sidebar.html", sidebarDefaults))
br.Register(LCARSPanelMeta, engine.MustBlockTemplate("blocks/panel.html"))
br.RegisterTemplateOverride("lcars", "heading", engine.MustTemplateOverride("blocks/heading_override.html"))
br.RegisterTemplateOverride("lcars", "text", engine.MustTemplateOverride("blocks/text_override.html"))
tr.RegisterEmailWrapper("lcars", engine.MustEmailWrapper("email_wrapper.html"))
return nil
}