91 lines
3 KiB
Text
91 lines
3 KiB
Text
module Web.Basics where
|
|
|
|
import Prelude (($), (<>))
|
|
|
|
import DOM.HTML.Indexed as DHI
|
|
import Halogen.HTML as HH
|
|
import Halogen.HTML.Events as HE
|
|
import Halogen.HTML.Properties as HP
|
|
|
|
import CSSClasses as C
|
|
|
|
code :: forall w i. String -> HH.HTML w i
|
|
code str = HH.code_ [ HH.text str ]
|
|
|
|
text :: forall w i. String -> HH.HTML w i
|
|
text = HH.text
|
|
|
|
p :: forall w i. String -> HH.HTML w i
|
|
p str = HH.p_ [ HH.text str ]
|
|
|
|
p_ :: forall w i. Array HH.ClassName -> String -> HH.HTML w i
|
|
p_ classes str = HH.p [HP.classes classes] [ HH.text str ]
|
|
|
|
ul :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
|
ul body = HH.ul_ body
|
|
|
|
li :: forall w i. String -> HH.HTML w i
|
|
li body = li_ [] body
|
|
|
|
li_ :: forall w i. Array HH.ClassName -> String -> HH.HTML w i
|
|
li_ classes body = HH.li [HP.classes classes] [ HH.text body ]
|
|
|
|
strong :: forall w i. String -> HH.HTML w i
|
|
strong str = HH.strong_ [ HH.text str ]
|
|
|
|
hr :: forall w i. HH.HTML w i
|
|
hr = HH.hr_
|
|
|
|
div :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
|
div body = HH.div_ body
|
|
|
|
div_ :: forall w i. HH.Node DHI.HTMLdiv w i
|
|
div_ = HH.div
|
|
|
|
content :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
|
content body = HH.div [HP.classes [C.content]] body
|
|
|
|
content_ :: forall w i. Array HH.ClassName -> Array (HH.HTML w i) -> HH.HTML w i
|
|
content_ classes body = HH.div [HP.classes ([C.content] <> classes)] body
|
|
|
|
explanation :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
|
explanation body = HH.blockquote [HP.classes [HH.ClassName "justified"]] body
|
|
|
|
quote :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
|
quote body = content [ explanation body ]
|
|
|
|
simple_quote :: forall w i. String -> HH.HTML w i
|
|
simple_quote string = quote [ p string ]
|
|
|
|
article_ :: forall w i. Array HH.ClassName -> HH.HTML w i -> HH.HTML w i -> HH.HTML w i
|
|
article_ classes head body = HH.article [HP.classes $ [C.message] <> classes]
|
|
[ HH.div [HP.classes [C.message_header]] [head]
|
|
, HH.div [HP.classes [C.message_body] ] [body]
|
|
]
|
|
|
|
article :: forall w i. HH.HTML w i -> HH.HTML w i -> HH.HTML w i
|
|
article head body = article_ [] head body
|
|
|
|
container :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
|
container body = HH.div [HP.classes [C.container, C.is_info]] body
|
|
|
|
hdiv :: forall (w :: Type) (a :: Type). Array (HH.HTML w a) -> HH.HTML w a
|
|
hdiv = HH.div [ HP.classes [HH.ClassName "mt-5"] ]
|
|
|
|
error_message :: forall w i. HH.HTML w i -> HH.HTML w i -> HH.HTML w i
|
|
error_message head body = article_ [C.is_danger] head body
|
|
|
|
textarea_ :: forall w i. Array HH.ClassName -> String -> String -> (String -> i) -> HH.HTML w i
|
|
textarea_ classes placeholder value action
|
|
= HH.textarea
|
|
[ HE.onValueInput action
|
|
, HP.value value
|
|
, HP.placeholder placeholder
|
|
, HP.classes $ [C.textarea] <> classes
|
|
]
|
|
|
|
textarea :: forall w i. String -> String -> (String -> i) -> HH.HTML w i
|
|
textarea placeholder value action = textarea_ [] placeholder value action
|
|
|
|
outside_link :: forall w a. Array HH.ClassName -> String -> String -> HH.HTML w a
|
|
outside_link classes url str = HH.a [ HP.classes classes, HP.target "_blank", HP.href url ] [ HH.text str ]
|