39 lines
720 B
Go
39 lines
720 B
Go
package web
|
|
|
|
import (
|
|
"embed"
|
|
"fmt"
|
|
"io/fs"
|
|
"net/http"
|
|
"text/template"
|
|
|
|
"github.com/olivere/vite"
|
|
)
|
|
|
|
type PageData struct {
|
|
Title string
|
|
MsgType string
|
|
Message string
|
|
Redirect string
|
|
Vite *vite.Fragment
|
|
}
|
|
|
|
//go:embed templates
|
|
var Templates embed.FS
|
|
|
|
//go:embed all:frontend/dist
|
|
var StaticAssets embed.FS
|
|
|
|
func DistFS() fs.FS {
|
|
efs, err := fs.Sub(StaticAssets, "frontend/dist")
|
|
if err != nil {
|
|
panic(fmt.Sprintf("unable to serve frontend: %v", err))
|
|
}
|
|
return efs
|
|
}
|
|
|
|
func RenderTemplate(w http.ResponseWriter, name string, data PageData) error {
|
|
tpl := template.Must(template.ParseFS(Templates, "templates/"+name+".html", "templates/base.html"))
|
|
return tpl.ExecuteTemplate(w, "base", data)
|
|
}
|