htmgo/htmgo-site/pages/markdown.go

30 lines
802 B
Go
Raw Normal View History

2024-09-20 16:45:23 +00:00
package pages
import (
"github.com/maddalax/htmgo/framework/h"
"github.com/maddalax/htmgo/framework/service"
2024-09-20 16:45:23 +00:00
"htmgo-site/internal/markdown"
"io/fs"
2024-09-20 16:45:23 +00:00
)
2024-09-23 19:41:43 +00:00
func MarkdownPage(ctx *h.RequestContext, path string, id string) *h.Element {
return h.Div(
MarkdownContent(ctx, path, id),
2024-09-20 16:45:23 +00:00
h.Div(
h.Class("min-h-12"),
2024-09-20 16:45:23 +00:00
),
)
}
2024-09-23 19:41:43 +00:00
func MarkdownContent(ctx *h.RequestContext, path string, id string) *h.Element {
embeddedMd := ctx.Get("embeddedMarkdown").(fs.FS)
2024-09-20 16:45:23 +00:00
renderer := service.Get[markdown.Renderer](ctx.ServiceLocator())
return h.Div(
2024-09-23 19:41:43 +00:00
h.If(id != "", h.Id(id)),
h.Div(
2024-10-13 13:24:23 +00:00
h.Class("w-full flex flex-col prose max-w-md md:max-w-xl lg:max-w-3xl prose-code:text-black prose-p:my-1 prose:p-0 prose-li:m-0 prose-ul:m-0 prose-ol:m-0"),
h.UnsafeRaw(renderer.RenderFile(path, embeddedMd)),
2024-09-20 16:45:23 +00:00
),
)
}