package render import ( "bytes" "github.com/a-h/templ" "github.com/labstack/echo/v4" ) type ( EchoView func(c echo.Context) error EchoViewFunc func(c echo.Context, b templ.Component) error EchoPartialView func(c echo.Context) templ.Component ) func Page(cmp templ.Component) echo.HandlerFunc { return func(c echo.Context) error { return Component(c, cmp) } } func Component(c echo.Context, cmp templ.Component) error { // Create a buffer to store the rendered HTML buf := &bytes.Buffer{} // Render the component to the buffer err := cmp.Render(c.Request().Context(), buf) if err != nil { return err } // Set the content type c.Response().Header().Set(echo.HeaderContentType, echo.MIMETextHTML) // Write the buffered content to the response _, err = c.Response().Write(buf.Bytes()) if err != nil { return err } c.Response().WriteHeader(200) return nil }