This module defines the HTML types required by the Halogen library, and provides smart constructors for HTML5 elements.
newtype TagName
A type-safe wrapper for a HTML tag name
tagName :: String -> TagName
Create a tag name
runTagName :: TagName -> String
Unwrap a TagName
to get the tag name as a String
.
data HTML i
= Text String
| Element TagName [A.Attr i] [HTML i]
An initial encoding of HTML nodes.
instance functorHTML :: Functor HTML
text :: forall i. String -> HTML i
element :: forall i. TagName -> [A.Attr i] -> [HTML i] -> HTML i
a :: forall i. [A.Attr i] -> [HTML i] -> HTML i
a_ :: forall i. [HTML i] -> HTML i
abbr :: forall i. [A.Attr i] -> [HTML i] -> HTML i
abbr_ :: forall i. [HTML i] -> HTML i
acronym :: forall i. [A.Attr i] -> [HTML i] -> HTML i
acronym_ :: forall i. [HTML i] -> HTML i
address :: forall i. [A.Attr i] -> [HTML i] -> HTML i
address_ :: forall i. [HTML i] -> HTML i
applet :: forall i. [A.Attr i] -> [HTML i] -> HTML i
applet_ :: forall i. [HTML i] -> HTML i
area :: forall i. [A.Attr i] -> [HTML i] -> HTML i
area_ :: forall i. [HTML i] -> HTML i
article :: forall i. [A.Attr i] -> [HTML i] -> HTML i
article_ :: forall i. [HTML i] -> HTML i
aside :: forall i. [A.Attr i] -> [HTML i] -> HTML i
aside_ :: forall i. [HTML i] -> HTML i
audio :: forall i. [A.Attr i] -> [HTML i] -> HTML i
audio_ :: forall i. [HTML i] -> HTML i
b :: forall i. [A.Attr i] -> [HTML i] -> HTML i
b_ :: forall i. [HTML i] -> HTML i
base :: forall i. [A.Attr i] -> [HTML i] -> HTML i
base_ :: forall i. [HTML i] -> HTML i
basefont :: forall i. [A.Attr i] -> [HTML i] -> HTML i
basefont_ :: forall i. [HTML i] -> HTML i
bdi :: forall i. [A.Attr i] -> [HTML i] -> HTML i
bdi_ :: forall i. [HTML i] -> HTML i
bdo :: forall i. [A.Attr i] -> [HTML i] -> HTML i
bdo_ :: forall i. [HTML i] -> HTML i
big :: forall i. [A.Attr i] -> [HTML i] -> HTML i
big_ :: forall i. [HTML i] -> HTML i
blockquote :: forall i. [A.Attr i] -> [HTML i] -> HTML i
blockquote_ :: forall i. [HTML i] -> HTML i
body :: forall i. [A.Attr i] -> [HTML i] -> HTML i
body_ :: forall i. [HTML i] -> HTML i
br :: forall i. [A.Attr i] -> [HTML i] -> HTML i
br_ :: forall i. [HTML i] -> HTML i
button :: forall i. [A.Attr i] -> [HTML i] -> HTML i
button_ :: forall i. [HTML i] -> HTML i
canvas :: forall i. [A.Attr i] -> [HTML i] -> HTML i
canvas_ :: forall i. [HTML i] -> HTML i
caption :: forall i. [A.Attr i] -> [HTML i] -> HTML i
caption_ :: forall i. [HTML i] -> HTML i
center :: forall i. [A.Attr i] -> [HTML i] -> HTML i
center_ :: forall i. [HTML i] -> HTML i
cite :: forall i. [A.Attr i] -> [HTML i] -> HTML i
cite_ :: forall i. [HTML i] -> HTML i
code :: forall i. [A.Attr i] -> [HTML i] -> HTML i
code_ :: forall i. [HTML i] -> HTML i
col :: forall i. [A.Attr i] -> [HTML i] -> HTML i
col_ :: forall i. [HTML i] -> HTML i
colgroup :: forall i. [A.Attr i] -> [HTML i] -> HTML i
colgroup_ :: forall i. [HTML i] -> HTML i
datalist :: forall i. [A.Attr i] -> [HTML i] -> HTML i
datalist_ :: forall i. [HTML i] -> HTML i
dd :: forall i. [A.Attr i] -> [HTML i] -> HTML i
dd_ :: forall i. [HTML i] -> HTML i
del :: forall i. [A.Attr i] -> [HTML i] -> HTML i
del_ :: forall i. [HTML i] -> HTML i
details :: forall i. [A.Attr i] -> [HTML i] -> HTML i
details_ :: forall i. [HTML i] -> HTML i
dfn :: forall i. [A.Attr i] -> [HTML i] -> HTML i
dfn_ :: forall i. [HTML i] -> HTML i
dialog :: forall i. [A.Attr i] -> [HTML i] -> HTML i
dialog_ :: forall i. [HTML i] -> HTML i
dir :: forall i. [A.Attr i] -> [HTML i] -> HTML i
dir_ :: forall i. [HTML i] -> HTML i
div :: forall i. [A.Attr i] -> [HTML i] -> HTML i
div_ :: forall i. [HTML i] -> HTML i
dl :: forall i. [A.Attr i] -> [HTML i] -> HTML i
dl_ :: forall i. [HTML i] -> HTML i
dt :: forall i. [A.Attr i] -> [HTML i] -> HTML i
dt_ :: forall i. [HTML i] -> HTML i
em :: forall i. [A.Attr i] -> [HTML i] -> HTML i
em_ :: forall i. [HTML i] -> HTML i
embed :: forall i. [A.Attr i] -> [HTML i] -> HTML i
embed_ :: forall i. [HTML i] -> HTML i
fieldset :: forall i. [A.Attr i] -> [HTML i] -> HTML i
fieldset_ :: forall i. [HTML i] -> HTML i
figcaption :: forall i. [A.Attr i] -> [HTML i] -> HTML i
figcaption_ :: forall i. [HTML i] -> HTML i
figure :: forall i. [A.Attr i] -> [HTML i] -> HTML i
figure_ :: forall i. [HTML i] -> HTML i
font :: forall i. [A.Attr i] -> [HTML i] -> HTML i
font_ :: forall i. [HTML i] -> HTML i
footer :: forall i. [A.Attr i] -> [HTML i] -> HTML i
footer_ :: forall i. [HTML i] -> HTML i
form :: forall i. [A.Attr i] -> [HTML i] -> HTML i
form_ :: forall i. [HTML i] -> HTML i
frame :: forall i. [A.Attr i] -> [HTML i] -> HTML i
frame_ :: forall i. [HTML i] -> HTML i
frameset :: forall i. [A.Attr i] -> [HTML i] -> HTML i
frameset_ :: forall i. [HTML i] -> HTML i
h1 :: forall i. [A.Attr i] -> [HTML i] -> HTML i
h1_ :: forall i. [HTML i] -> HTML i
h2 :: forall i. [A.Attr i] -> [HTML i] -> HTML i
h2_ :: forall i. [HTML i] -> HTML i
h3 :: forall i. [A.Attr i] -> [HTML i] -> HTML i
h3_ :: forall i. [HTML i] -> HTML i
h4 :: forall i. [A.Attr i] -> [HTML i] -> HTML i
h4_ :: forall i. [HTML i] -> HTML i
h5 :: forall i. [A.Attr i] -> [HTML i] -> HTML i
h5_ :: forall i. [HTML i] -> HTML i
h6 :: forall i. [A.Attr i] -> [HTML i] -> HTML i
h6_ :: forall i. [HTML i] -> HTML i
head :: forall i. [A.Attr i] -> [HTML i] -> HTML i
head_ :: forall i. [HTML i] -> HTML i
header :: forall i. [A.Attr i] -> [HTML i] -> HTML i
header_ :: forall i. [HTML i] -> HTML i
hr :: forall i. [A.Attr i] -> [HTML i] -> HTML i
hr_ :: forall i. [HTML i] -> HTML i
html :: forall i. [A.Attr i] -> [HTML i] -> HTML i
html_ :: forall i. [HTML i] -> HTML i
i :: forall i. [A.Attr i] -> [HTML i] -> HTML i
i_ :: forall i. [HTML i] -> HTML i
iframe :: forall i. [A.Attr i] -> [HTML i] -> HTML i
iframe_ :: forall i. [HTML i] -> HTML i
img :: forall i. [A.Attr i] -> [HTML i] -> HTML i
img_ :: forall i. [HTML i] -> HTML i
input :: forall i. [A.Attr i] -> [HTML i] -> HTML i
input_ :: forall i. [HTML i] -> HTML i
ins :: forall i. [A.Attr i] -> [HTML i] -> HTML i
ins_ :: forall i. [HTML i] -> HTML i
kbd :: forall i. [A.Attr i] -> [HTML i] -> HTML i
kbd_ :: forall i. [HTML i] -> HTML i
keygen :: forall i. [A.Attr i] -> [HTML i] -> HTML i
keygen_ :: forall i. [HTML i] -> HTML i
label :: forall i. [A.Attr i] -> [HTML i] -> HTML i
label_ :: forall i. [HTML i] -> HTML i
legend :: forall i. [A.Attr i] -> [HTML i] -> HTML i
legend_ :: forall i. [HTML i] -> HTML i
li :: forall i. [A.Attr i] -> [HTML i] -> HTML i
li_ :: forall i. [HTML i] -> HTML i
link :: forall i. [A.Attr i] -> [HTML i] -> HTML i
link_ :: forall i. [HTML i] -> HTML i
main :: forall i. [A.Attr i] -> [HTML i] -> HTML i
main_ :: forall i. [HTML i] -> HTML i
map :: forall i. [A.Attr i] -> [HTML i] -> HTML i
map_ :: forall i. [HTML i] -> HTML i
mark :: forall i. [A.Attr i] -> [HTML i] -> HTML i
mark_ :: forall i. [HTML i] -> HTML i
menu :: forall i. [A.Attr i] -> [HTML i] -> HTML i
menu_ :: forall i. [HTML i] -> HTML i
menuitem :: forall i. [A.Attr i] -> [HTML i] -> HTML i
menuitem_ :: forall i. [HTML i] -> HTML i
meta :: forall i. [A.Attr i] -> [HTML i] -> HTML i
meta_ :: forall i. [HTML i] -> HTML i
meter :: forall i. [A.Attr i] -> [HTML i] -> HTML i
meter_ :: forall i. [HTML i] -> HTML i
nav :: forall i. [A.Attr i] -> [HTML i] -> HTML i
nav_ :: forall i. [HTML i] -> HTML i
noframes :: forall i. [A.Attr i] -> [HTML i] -> HTML i
noframes_ :: forall i. [HTML i] -> HTML i
noscript :: forall i. [A.Attr i] -> [HTML i] -> HTML i
noscript_ :: forall i. [HTML i] -> HTML i
object :: forall i. [A.Attr i] -> [HTML i] -> HTML i
object_ :: forall i. [HTML i] -> HTML i
ol :: forall i. [A.Attr i] -> [HTML i] -> HTML i
ol_ :: forall i. [HTML i] -> HTML i
optgroup :: forall i. [A.Attr i] -> [HTML i] -> HTML i
optgroup_ :: forall i. [HTML i] -> HTML i
option :: forall i. [A.Attr i] -> [HTML i] -> HTML i
option_ :: forall i. [HTML i] -> HTML i
output :: forall i. [A.Attr i] -> [HTML i] -> HTML i
output_ :: forall i. [HTML i] -> HTML i
p :: forall i. [A.Attr i] -> [HTML i] -> HTML i
p_ :: forall i. [HTML i] -> HTML i
param :: forall i. [A.Attr i] -> [HTML i] -> HTML i
param_ :: forall i. [HTML i] -> HTML i
pre :: forall i. [A.Attr i] -> [HTML i] -> HTML i
pre_ :: forall i. [HTML i] -> HTML i
progress :: forall i. [A.Attr i] -> [HTML i] -> HTML i
progress_ :: forall i. [HTML i] -> HTML i
q :: forall i. [A.Attr i] -> [HTML i] -> HTML i
q_ :: forall i. [HTML i] -> HTML i
rp :: forall i. [A.Attr i] -> [HTML i] -> HTML i
rp_ :: forall i. [HTML i] -> HTML i
rt :: forall i. [A.Attr i] -> [HTML i] -> HTML i
rt_ :: forall i. [HTML i] -> HTML i
ruby :: forall i. [A.Attr i] -> [HTML i] -> HTML i
ruby_ :: forall i. [HTML i] -> HTML i
s :: forall i. [A.Attr i] -> [HTML i] -> HTML i
s_ :: forall i. [HTML i] -> HTML i
samp :: forall i. [A.Attr i] -> [HTML i] -> HTML i
samp_ :: forall i. [HTML i] -> HTML i
script :: forall i. [A.Attr i] -> [HTML i] -> HTML i
script_ :: forall i. [HTML i] -> HTML i
section :: forall i. [A.Attr i] -> [HTML i] -> HTML i
section_ :: forall i. [HTML i] -> HTML i
select :: forall i. [A.Attr i] -> [HTML i] -> HTML i
select_ :: forall i. [HTML i] -> HTML i
small :: forall i. [A.Attr i] -> [HTML i] -> HTML i
small_ :: forall i. [HTML i] -> HTML i
source :: forall i. [A.Attr i] -> [HTML i] -> HTML i
source_ :: forall i. [HTML i] -> HTML i
span :: forall i. [A.Attr i] -> [HTML i] -> HTML i
span_ :: forall i. [HTML i] -> HTML i
strike :: forall i. [A.Attr i] -> [HTML i] -> HTML i
strike_ :: forall i. [HTML i] -> HTML i
strong :: forall i. [A.Attr i] -> [HTML i] -> HTML i
strong_ :: forall i. [HTML i] -> HTML i
style :: forall i. [A.Attr i] -> [HTML i] -> HTML i
style_ :: forall i. [HTML i] -> HTML i
sub :: forall i. [A.Attr i] -> [HTML i] -> HTML i
sub_ :: forall i. [HTML i] -> HTML i
summary :: forall i. [A.Attr i] -> [HTML i] -> HTML i
summary_ :: forall i. [HTML i] -> HTML i
sup :: forall i. [A.Attr i] -> [HTML i] -> HTML i
sup_ :: forall i. [HTML i] -> HTML i
table :: forall i. [A.Attr i] -> [HTML i] -> HTML i
table_ :: forall i. [HTML i] -> HTML i
tbody :: forall i. [A.Attr i] -> [HTML i] -> HTML i
tbody_ :: forall i. [HTML i] -> HTML i
td :: forall i. [A.Attr i] -> [HTML i] -> HTML i
td_ :: forall i. [HTML i] -> HTML i
textarea :: forall i. [A.Attr i] -> [HTML i] -> HTML i
textarea_ :: forall i. [HTML i] -> HTML i
tfoot :: forall i. [A.Attr i] -> [HTML i] -> HTML i
tfoot_ :: forall i. [HTML i] -> HTML i
th :: forall i. [A.Attr i] -> [HTML i] -> HTML i
th_ :: forall i. [HTML i] -> HTML i
thead :: forall i. [A.Attr i] -> [HTML i] -> HTML i
thead_ :: forall i. [HTML i] -> HTML i
time :: forall i. [A.Attr i] -> [HTML i] -> HTML i
time_ :: forall i. [HTML i] -> HTML i
title :: forall i. [A.Attr i] -> [HTML i] -> HTML i
title_ :: forall i. [HTML i] -> HTML i
tr :: forall i. [A.Attr i] -> [HTML i] -> HTML i
tr_ :: forall i. [HTML i] -> HTML i
track :: forall i. [A.Attr i] -> [HTML i] -> HTML i
track_ :: forall i. [HTML i] -> HTML i
tt :: forall i. [A.Attr i] -> [HTML i] -> HTML i
tt_ :: forall i. [HTML i] -> HTML i
u :: forall i. [A.Attr i] -> [HTML i] -> HTML i
u_ :: forall i. [HTML i] -> HTML i
ul :: forall i. [A.Attr i] -> [HTML i] -> HTML i
ul_ :: forall i. [HTML i] -> HTML i
var :: forall i. [A.Attr i] -> [HTML i] -> HTML i
var_ :: forall i. [HTML i] -> HTML i
video :: forall i. [A.Attr i] -> [HTML i] -> HTML i
video_ :: forall i. [HTML i] -> HTML i
wbr :: forall i. [A.Attr i] -> [HTML i] -> HTML i
wbr_ :: forall i. [HTML i] -> HTML i
This module enumerates some common HTML attributes, and provides additional helper functions for working with CSS classes.
data ExistsR (f :: # * -> *)
We need a variant of Exists
which works for type constructors which accept a row of types.
runExistsR :: forall f r. (forall a. f a -> r) -> ExistsR f -> r
mkExistsR :: forall f a. f a -> ExistsR f
data AttrF value
= AttrF (AttributeName value -> value -> String) (AttributeName value) value
The data which represents a typed attribute, hidden inside an existential package in
the Attr
type.
data HandlerF i fields
= HandlerF (EventName fields) (Event fields -> EventHandler i)
The data which represents a typed event handler, hidden inside an existential package in
the Attr
type.
data Attr i
= Attr (Exists AttrF)
| Handler (ExistsR (HandlerF i))
| Initializer i
| Finalizer i
A single attribute is either
- An attribute
- An event handler
instance functorAttr :: Functor Attr
attr :: forall value i. (IsAttribute value) => AttributeName value -> value -> Attr i
Create an attribute
handler :: forall fields i. EventName fields -> (Event fields -> EventHandler i) -> Attr i
Create an event handler
initializer :: forall i. i -> Attr i
Attach an initializer.
finalizer :: forall i. i -> Attr i
Attach a finalizer.
newtype ClassName
A wrapper for strings which are used as CSS classes
className :: String -> ClassName
runClassName :: ClassName -> String
Unpack a class name
newtype AttributeName value
A type-safe wrapper for attribute names
The phantom type value
describes the type of value which this attribute requires.
attributeName :: forall value. String -> AttributeName value
Create an attribute name
runAttributeName :: forall value. AttributeName value -> String
Unpack an attribute name
newtype EventName (fields :: # *)
A type-safe wrapper for event names.
The phantom type fields
describes the event type which we can expect to exist on events
corresponding to this name.
eventName :: forall fields. String -> EventName fields
runEventName :: forall fields. EventName fields -> String
Unpack an event name
class IsAttribute a where
toAttrString :: AttributeName a -> a -> String
This type class captures those types which can be used as attribute values.
toAttrString
is an alternative to show
, and is needed by attr
in the string renderer.
instance stringIsAttribute :: IsAttribute String
instance numberIsAttribute :: IsAttribute Number
instance booleanIsAttribute :: IsAttribute Boolean
key :: forall i. String -> Attr i
alt :: forall i. String -> Attr i
charset :: forall i. String -> Attr i
class_ :: forall i. ClassName -> Attr i
classes :: forall i. [ClassName] -> Attr i
colSpan :: forall i. Number -> Attr i
rowSpan :: forall i. Number -> Attr i
content :: forall i. String -> Attr i
for :: forall i. String -> Attr i
height :: forall i. Number -> Attr i
href :: forall i. String -> Attr i
httpEquiv :: forall i. String -> Attr i
id_ :: forall i. String -> Attr i
name :: forall i. String -> Attr i
rel :: forall i. String -> Attr i
src :: forall i. String -> Attr i
target :: forall i. String -> Attr i
title :: forall i. String -> Attr i
type_ :: forall i. String -> Attr i
value :: forall i. String -> Attr i
width :: forall i. Number -> Attr i
disabled :: forall i. Boolean -> Attr i
required :: forall i. Boolean -> Attr i
readonly :: forall i. Boolean -> Attr i
spellcheck :: forall i. Boolean -> Attr i
enabled :: forall i. Boolean -> Attr i
checked :: forall i. Boolean -> Attr i
selected :: forall i. Boolean -> Attr i
placeholder :: forall i. String -> Attr i