-module(html).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([html/2, head/2, title/1, meta/1, body/2, document/3, p/2, h1/2, h2/2, h3/2, h4/2, h5/2, a/2, span/2, 'div'/2]).
-spec html(list(elements:attribute()), list(elements:element())) -> elements:element().
html(Attrs, Children) ->
elements:element(<<"html"/utf8>>, Attrs, Children).
-spec head(list(elements:attribute()), list(elements:element())) -> elements:element().
head(Attrs, Children) ->
elements:element(<<"head"/utf8>>, Attrs, Children).
-spec title(binary()) -> elements:element().
title(Title) ->
elements:element(<<"title"/utf8>>, [], [elements:text(Title)]).
-spec meta(list(elements:attribute())) -> elements:element().
meta(Attrs) ->
elements:element_self_closing(<<"meta"/utf8>>, Attrs).
-spec body(list(elements:attribute()), list(elements:element())) -> elements:element().
body(Attrs, Children) ->
elements:element(<<"body"/utf8>>, Attrs, Children).
-spec document(
list(elements:attribute()),
list(elements:element()),
list(elements:element())
) -> elements:element().
document(Attrs, Head_elements, Body_elements) ->
html(Attrs, [head([], Head_elements), body([], Body_elements)]).
-spec p(list(elements:attribute()), list(elements:element())) -> elements:element().
p(Attrs, Children) ->
elements:element(<<"p"/utf8>>, Attrs, Children).
-spec h1(list(elements:attribute()), list(elements:element())) -> elements:element().
h1(Attrs, Children) ->
elements:element(<<"h1"/utf8>>, Attrs, Children).
-spec h2(list(elements:attribute()), list(elements:element())) -> elements:element().
h2(Attrs, Children) ->
elements:element(<<"h2"/utf8>>, Attrs, Children).
-spec h3(list(elements:attribute()), list(elements:element())) -> elements:element().
h3(Attrs, Children) ->
elements:element(<<"h3"/utf8>>, Attrs, Children).
-spec h4(list(elements:attribute()), list(elements:element())) -> elements:element().
h4(Attrs, Children) ->
elements:element(<<"h4"/utf8>>, Attrs, Children).
-spec h5(list(elements:attribute()), list(elements:element())) -> elements:element().
h5(Attrs, Children) ->
elements:element(<<"h5"/utf8>>, Attrs, Children).
-spec a(list(elements:attribute()), list(elements:element())) -> elements:element().
a(Attrs, Children) ->
elements:element(<<"a"/utf8>>, Attrs, Children).
-spec span(list(elements:attribute()), list(elements:element())) -> elements:element().
span(Attrs, Children) ->
elements:element(<<"span"/utf8>>, Attrs, Children).
-spec 'div'(list(elements:attribute()), list(elements:element())) -> elements:element().
'div'(Attrs, Children) ->
elements:element(<<"div"/utf8>>, Attrs, Children).