/*
Package frontend contient les fichiers sources et templates du frontend web

Les fichiers sont embedded dans l'exécutable afin de simplifier le déploiement.
*/
package frontend

import (
	"embed"
	"io"
	"text/template"

	"github.com/labstack/echo/v4"
)

//go:embed *.html
var htmlFS embed.FS

//go:embed vie-etudiante-organismes.json
var organismesJSON string

func OrganismesJSON() string { return organismesJSON }

type Renderer struct {
	templates *template.Template
}

func (t *Renderer) Render(w io.Writer, name string, data any, c echo.Context) error {
	return t.templates.ExecuteTemplate(w, name, data)
}

func NewRenderer() *Renderer {
	return &Renderer{
		templates: template.Must(template.ParseFS(htmlFS, "*.html")),
	}
}
