package layouts import ( "context" "fmt" "io" "log/slog" "net/http" "git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/pkg/config" "git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/pkg/templer" "github.com/a-h/templ" ) type Layouts struct { cfg config.Cfg } func New(cfg config.Cfg) *Layouts { return &Layouts{ cfg: cfg, } } // Render renders a page. If the query paramenter "c" is set // the component gets rendered without the layout func (l *Layouts) Render(ctx context.Context, w io.Writer, r *http.Request, component templ.Component) { withLayout := !r.URL.Query().Has("c") fmt.Println("layout: ", withLayout) title := templer.GetTitle(ctx, "Schreifuchs") slog.Debug("HX-Request", "value", r.Header.Get("HX-Request")) if r.Header.Get("HX-Request") != "true" { ctx = templ.WithChildren(ctx, component) component = Base(l.cfg, title) } else { ctx = templ.WithChildren(ctx, component) component = Head(l.cfg, title) } if err := component.Render(ctx, w); err != nil { slog.Error("error while rendering component", "err", err, "ctx", ctx) } }