Typed functional HTML template DSL for MoonBit
Dependencies
import "test" {
"f4ah6o/tmpx/tmpx" as @tmpx
}// A div with class/id and content
let card = div_parts([
part_attr(class_("card")),
part_attr(id_("main")),
part_child(h1_parts([part_text("Title")])),
part_child(p_parts([part_text("Body")]))
])
// Render to HTML string
let html = render(card)
// <div class="card" id="main"><h1>Title</h1><p>Body</p></div>let form = form_parts([
part_attr(attr("action", "/submit")),
part_attr(attr("method", "post")),
part_child(label_parts([
part_attr(attr("for", "name")),
part_text("Name:")
])),
part_child(input_attrs([
attr("type", "text"),
attr("name", "name"),
bool_attr("required")
])),
part_child(button_parts([part_text("Send")]))
])
let html = render(form)let node = fragment([
text("Hello "),
raw("<b>World</b>")
])
render(node)
// Hello <b>World</b>class_("container")
class_list(["a", "b"])
id_("main")
href("/page")
src("/image.png")
alt("Logo")
attr("data-id", "123")
bool_attr("required")mx_get("/api/data")
mx_post("/api/create")
mx_target("#pane")
mx_trigger("click")
mx_swap(InnerHTML)render(node) -> StringTyped functional HTML template DSL for MoonBit
Dependencies