dnsmanager-webclient/src/Web/Basics.purs
2025-05-06 20:28:34 +02:00

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 ]