/*
Package templates contient les fichiers html à templater par l'application.

Le contenu sera embedded dans le fichier binaire, dans le but de bundle les
dépendances avec l'application, simplifiant son déploiement.

Une copie du contenu peut être obtenue par un appel de GetTemplatesFS().
*/
package ui

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

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

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

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")),
	}
}
