// Package templates provides embedded HTML templates for the web UI.
package templates
import (
"embed"
"html/template"
"io"
"sync"
)
//go:embed *.html
var files embed.FS
//nolint:gochecknoglobals // intentional lazy initialization cache
var (
parsed *template.Template
parseOne sync.Once
)
// Get returns the parsed templates, parsing them on first call.
func Get() *template.Template {
parseOne.Do(func() {
parsed = template.Must(template.ParseFS(files, "*.html"))
})
return parsed
}
// Render renders a template by name to the given writer.
func Render(w io.Writer, name string, data any) error {
return Get().ExecuteTemplate(w, name, data)
}