lens @ 8448f93e179e03d4ba46af7ae457675146f93d6b

 1package img
 2
 3import (
 4	"embed"
 5	"fmt"
 6	"html/template"
 7	"io"
 8)
 9
10var (
11	//go:embed templates/*.html
12	TemplateFS embed.FS
13
14	//go:embed static/*
15	StaticFS embed.FS
16
17	Template *template.Template
18)
19
20type HTMLView[T any] struct {
21	Title    string
22	Username string
23	Data     T
24}
25
26func Render[T any](w io.Writer, page string, view *HTMLView[T]) error {
27	pageFile := fmt.Sprintf("templates/%s", page)
28	tmpl, err := template.New("").ParseFS(TemplateFS, "templates/layout.html", pageFile)
29	if err != nil {
30		return err
31	}
32
33	return tmpl.ExecuteTemplate(w, page, view)
34}