Major refactoring to make CSS classes not arrays anymore.
parent
24770b75d6
commit
a349c6463d
|
@ -291,7 +291,7 @@ render state
|
|||
reconnection_bar =
|
||||
if (state.are_we_connected_to_authd && state.are_we_connected_to_dnsmanagerd)
|
||||
then HH.div_ []
|
||||
else Bulma.btn_ (C.is_large <> C.is_danger) "You have been disconnected. Click here to reconnect." Reconnection
|
||||
else Bulma.btn_ [C.is_large, C.is_danger] "You have been disconnected. Click here to reconnect." Reconnection
|
||||
render_auth_WS :: forall monad. MonadAff monad => H.ComponentHTML Action ChildSlots monad
|
||||
render_auth_WS = HH.slot _ws_auth unit WS.component (Tuple "ws://127.0.0.1:8080" "authd") AuthenticationDaemonEvent
|
||||
|
||||
|
@ -326,7 +326,7 @@ render state
|
|||
render_legal_notice :: forall monad. MonadAff monad => H.ComponentHTML Action ChildSlots monad
|
||||
render_legal_notice
|
||||
= Bulma.section_small [ Explanations.legal_notice
|
||||
, Bulma.btn_ (C.is_large <> C.margin_top 3 <> C.is_info) "Home page" (Routing Home)
|
||||
, Bulma.btn_ [C.is_large, C.margin_top 3, C.is_info] "Home page" (Routing Home)
|
||||
]
|
||||
|
||||
render_nav :: forall monad. MonadAff monad => H.ComponentHTML Action ChildSlots monad
|
||||
|
@ -334,10 +334,10 @@ render state
|
|||
|
||||
render_header :: forall monad. MonadAff monad => H.ComponentHTML Action ChildSlots monad
|
||||
render_header =
|
||||
HH.section [ HP.classes (C.hero <> C.is_info <> C.is_small) ]
|
||||
[ HH.div [ HP.classes C.hero_body ]
|
||||
[ HH.div [ HP.classes $ C.container <> C.has_text_centered ]
|
||||
[ HH.p [ HP.classes C.subtitle ]
|
||||
HH.section [ HP.classes [C.hero, C.is_info, C.is_small] ]
|
||||
[ HH.div [ HP.classes [C.hero_body] ]
|
||||
[ HH.div [ HP.classes [C.container, C.has_text_centered] ]
|
||||
[ HH.p [ HP.classes [C.subtitle] ]
|
||||
[ HH.strong_ [ HH.u_ [ HH.text "net libre" ]]
|
||||
, HH.text ": providing free domains since 2015!"
|
||||
]
|
||||
|
|
|
@ -133,13 +133,13 @@ render { addUserForm, searchUserForm, matching_users, current_tab, orphan_domain
|
|||
, case current_tab of
|
||||
Home -> Bulma.h3 "Select an action"
|
||||
Search -> Bulma.columns_
|
||||
[ Bulma.column (C.is 3) [Bulma.article (Bulma.p "Search users") render_searchuser_form]
|
||||
[ Bulma.column [C.is 3] [Bulma.article (Bulma.p "Search users") render_searchuser_form]
|
||||
, Bulma.column_ [ Bulma.h3 "Result", show_found_users ]
|
||||
]
|
||||
Add -> Bulma.columns_
|
||||
[ Bulma.column (C.is 5) [Bulma.article (Bulma.p "Add a new user") render_adduser_form] ]
|
||||
[ Bulma.column [C.is 5] [Bulma.article (Bulma.p "Add a new user") render_adduser_form] ]
|
||||
OrphanDomains -> HH.div_
|
||||
[ Bulma.btn_ (C.is_small) "Get orphan domains" ShowOrphanDomains
|
||||
[ Bulma.btn_ [C.is_small] "Get orphan domains" ShowOrphanDomains
|
||||
, show_orphan_domains
|
||||
]
|
||||
]
|
||||
|
@ -155,11 +155,11 @@ render { addUserForm, searchUserForm, matching_users, current_tab, orphan_domain
|
|||
|
||||
show_found_users = Bulma.box [ HH.ul_ $ map user_card matching_users ]
|
||||
user_card user = HH.li_ [ Bulma.btn_delete (RemoveUser user.uid)
|
||||
, Bulma.btn_ (C.is_small) user.login (ShowUser user.uid)
|
||||
, Bulma.btn_ [C.is_small] user.login (ShowUser user.uid)
|
||||
]
|
||||
show_orphan_domains = Bulma.box [ HH.ul_ $ map domain_entry orphan_domains ]
|
||||
domain_entry domain = HH.li_ [ Bulma.btn_delete (RemoveDomain domain)
|
||||
, Bulma.btn_ (C.is_small) domain (ShowDomain domain)
|
||||
, Bulma.btn_ [C.is_small] domain (ShowDomain domain)
|
||||
]
|
||||
up x = HandleAddUserInput <<< x
|
||||
|
||||
|
|
|
@ -277,7 +277,7 @@ render { accepted_domains, my_domains, newDomainForm, askDomainTransferForm, del
|
|||
, HH.td_ [ HH.text $ fromMaybe "" domain.share_key ]
|
||||
, if A.length domain.owners == 1
|
||||
then HH.td_ [ Bulma.alert_btn_abbr "Unshare the domain by removing the \"share\" token." "Unshare" (UnShareDomain domain.name) ]
|
||||
else HH.td_ [ Bulma.btn_ro (C.is_warning) "Cannot unshare it" ]
|
||||
else HH.td_ [ Bulma.btn_ro [C.is_warning] "Cannot unshare it" ]
|
||||
, HH.td_ [ Bulma.alert_btn_abbr "Delete the domain from your list of owned domains. In case you are the only owner, this will also remove all zone data and the domain won't be served anymore." "Delete" (DeleteDomainModal domain.name) ]
|
||||
]
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
-- | `App.HomeInterface` presents the website and its features.
|
||||
module App.Page.Home where
|
||||
|
||||
import Prelude (Unit, pure, unit, ($), (<>))
|
||||
import Prelude (Unit, pure, unit, ($))
|
||||
|
||||
-- import Data.Either (Either(..))
|
||||
-- import Data.Maybe (Maybe(..), maybe)
|
||||
|
@ -51,8 +51,8 @@ render _ = HH.div_
|
|||
Les comptes migrés sont conservés 6 mois, puis supprimés si aucune connexion n'est faite,
|
||||
afin de purger un certain nombre de vieux comptes de robots.
|
||||
"""
|
||||
, HH.p [ HP.classes (C.margin_top 3) ]
|
||||
[ Bulma.outside_link (C.button <> C.is_info) url_linuxfr "Cliquez ici pour en savoir plus." ]
|
||||
, HH.p [ HP.classes [C.margin_top 3] ]
|
||||
[ Bulma.outside_link [C.button, C.is_info] url_linuxfr "Cliquez ici pour en savoir plus." ]
|
||||
]
|
||||
, Bulma.section_small
|
||||
[ Bulma.h1 "Welcome to netlib.re"
|
||||
|
|
|
@ -129,17 +129,17 @@ render { logged, active, admin, login } =
|
|||
navbar_color = C.is_success
|
||||
|
||||
main_nav =
|
||||
HH.nav [ HP.classes $ C.navbar <> navbar_color
|
||||
HH.nav [ HP.classes [C.navbar, navbar_color]
|
||||
, ARIA.label "main navigation"
|
||||
, ARIA.role "navigation"
|
||||
]
|
||||
|
||||
logo = HH.strong [HP.classes $ C.navbar_item <> (C.is_size 4)] [HH.text "🍉"]
|
||||
-- HH.a [HP.classes C.navbar_item, HP.href "/"]
|
||||
logo = HH.strong [HP.classes [C.navbar_item, (C.is_size 4)]] [HH.text "🍉"]
|
||||
-- HH.a [HP.classes [C.navbar_item], HP.href "/"]
|
||||
-- [HH.img [HP.src "/logo.jpeg", HP.width 112, HP.height 28]]
|
||||
|
||||
burger_menu =
|
||||
HH.a [ HP.classes $ C.navbar_burger <> if active then C.is_active else []
|
||||
HH.a [ HP.classes $ [C.navbar_burger] <> if active then [C.is_active] else []
|
||||
, ARIA.label "menu"
|
||||
, ARIA.expanded "false"
|
||||
, Bulma.data_target "navbar-netlibre"
|
||||
|
@ -149,14 +149,14 @@ render { logged, active, admin, login } =
|
|||
, HH.span [ARIA.hidden "true"] []
|
||||
]
|
||||
|
||||
nav_brand = HH.div [HP.classes C.navbar_brand]
|
||||
nav_brand = HH.div [HP.classes [C.navbar_brand]]
|
||||
nav_menu = HH.div
|
||||
[ HP.id "navbar-netlibre"
|
||||
, HP.classes $ C.navbar_menu <> C.is_spaced <> if active then C.is_active else []
|
||||
, HP.classes $ [C.navbar_menu, C.is_spaced] <> if active then [C.is_active] else []
|
||||
]
|
||||
|
||||
navbar_start = HH.div [HP.classes C.navbar_start]
|
||||
navbar_end = HH.div [HP.classes C.navbar_end]
|
||||
navbar_start = HH.div [HP.classes [C.navbar_start]]
|
||||
navbar_end = HH.div [HP.classes [C.navbar_end]]
|
||||
|
||||
link_home = nav_link "Home" (Navigate Home)
|
||||
link_domains = nav_link "Domains" (Navigate DomainList)
|
||||
|
@ -168,38 +168,38 @@ render { logged, active, admin, login } =
|
|||
render_login Nothing = []
|
||||
render_login (Just l)= [nav_link ("logged as " <> l) (Navigate Setup)]
|
||||
link_disconnection =
|
||||
nav_link_ (C.has_text_light <> C.has_background_danger) "Disconnection" UnLog
|
||||
nav_link_ [C.has_text_light, C.has_background_danger] "Disconnection" UnLog
|
||||
|
||||
dropdown title dropdown_elements
|
||||
= HH.div [HP.classes $ C.navbar_item <> C.has_dropdown <> C.is_hoverable]
|
||||
[ dropdown_title title, HH.div [HP.classes C.navbar_dropdown] dropdown_elements ]
|
||||
dropdown_title str = HH.a [HP.classes C.navbar_link] [HH.text str]
|
||||
dropdown_separator = HH.hr [HP.classes C.navbar_divider]
|
||||
= HH.div [HP.classes [C.navbar_item, C.has_dropdown, C.is_hoverable]]
|
||||
[ dropdown_title title, HH.div [HP.classes [C.navbar_dropdown]] dropdown_elements ]
|
||||
dropdown_title str = HH.a [HP.classes [C.navbar_link]] [HH.text str]
|
||||
dropdown_separator = HH.hr [HP.classes [C.navbar_divider]]
|
||||
|
||||
--nav_button_strong str action = btn C.is_primary action (HH.strong [] [ HH.text str ])
|
||||
--nav_button_strong str action = btn [C.is_primary] action (HH.strong [] [ HH.text str ])
|
||||
--nav_button classes str action = btn classes action (HH.text str)
|
||||
|
||||
nav_link_strong str action =
|
||||
HH.a [ HP.classes (C.navbar_item <> C.is_danger <> C.has_background_success_dark)
|
||||
HH.a [ HP.classes [C.navbar_item, C.is_danger, C.has_background_success_dark]
|
||||
, HE.onClick (\_ -> action)
|
||||
] [ (HH.strong [] [ HH.text str ]) ]
|
||||
|
||||
nav_link str action = nav_link_ navbar_color str action
|
||||
nav_link_warn str action = nav_link_ (C.has_background_warning <> C.has_text_dark) str action
|
||||
nav_link str action = nav_link_ [navbar_color] str action
|
||||
nav_link_warn str action = nav_link_ [C.has_background_warning, C.has_text_dark] str action
|
||||
|
||||
nav_link_ classes str action =
|
||||
HH.a [ HP.classes (C.navbar_item <> classes)
|
||||
HH.a [ HP.classes ([C.navbar_item] <> classes)
|
||||
, HE.onClick (\_ -> action)
|
||||
] [ (HH.text str) ]
|
||||
|
||||
dropdown_element classes link str = Bulma.outside_link (C.navbar_item <> classes) link str
|
||||
dropdown_element_primary link str = dropdown_element C.has_background_info_light link str
|
||||
dropdown_element_secondary link str = dropdown_element C.has_background_warning_light link str
|
||||
dropdown_element classes link str = Bulma.outside_link ([C.navbar_item] <> classes) link str
|
||||
dropdown_element_primary link str = dropdown_element [C.has_background_info_light] link str
|
||||
dropdown_element_secondary link str = dropdown_element [C.has_background_warning_light] link str
|
||||
|
||||
dropdown_section_primary t
|
||||
= HH.p [HP.classes $ C.has_background_info <> C.has_text_light <> C.navbar_item] [HH.text t]
|
||||
= HH.p [HP.classes [C.has_background_info, C.has_text_light, C.navbar_item]] [HH.text t]
|
||||
dropdown_section_secondary t
|
||||
= HH.p [HP.classes $ C.has_background_warning <> C.navbar_item] [HH.text t]
|
||||
= HH.p [HP.classes [C.has_background_warning, C.navbar_item]] [HH.text t]
|
||||
code_dropdown =
|
||||
dropdown "Source code"
|
||||
[ dropdown_section_primary "Main parts of this service"
|
||||
|
@ -211,8 +211,3 @@ render { logged, active, admin, login } =
|
|||
, dropdown_element_secondary "https://git.baguette.netlib.re/Baguette/libipc" "libIPC: communication library"
|
||||
, dropdown_element_secondary "https://git.baguette.netlib.re/Baguette/dodb.cr" "DoDB: document-oriented database"
|
||||
]
|
||||
|
||||
--btn c action str
|
||||
-- = HH.a [ HP.classes (C.navbar_item <> C.button <> c)
|
||||
-- , HE.onClick (\_ -> action)
|
||||
-- ] [ str ]
|
||||
|
|
|
@ -146,9 +146,9 @@ render { registrationForm }
|
|||
_, Right _ -> []
|
||||
|
||||
legal_mentions = [ Explanations.legal_notice
|
||||
, HH.div [HP.classes (C.margin_top 3 <> C.margin_bottom 3)]
|
||||
, HH.div [HP.classes [C.margin_top 3, C.margin_bottom 3]]
|
||||
[ Bulma.checkbox
|
||||
[HH.span [HP.classes (C.margin_left 3)] [HH.text "I have read and accept the terms of service and privacy policy."]]
|
||||
[HH.span [HP.classes [C.margin_left 3]] [HH.text "I have read and accept the terms of service and privacy policy."]]
|
||||
LegalCheckboxToggle
|
||||
]
|
||||
]
|
||||
|
|
|
@ -112,11 +112,11 @@ render { modal, newPasswordForm, new_email_address, emails } =
|
|||
render_emails (Tuple current pending) = HH.div [] $ render_current current <> render_pending pending
|
||||
where
|
||||
render_current (Just (Email.Email e)) = [ Bulma.p $ "Current email address: " ] <>
|
||||
[ Bulma.btn_ro (C.is_small <> C.is_warning) e]
|
||||
[ Bulma.btn_ro [C.is_small, C.is_warning] e]
|
||||
render_current Nothing = [ Bulma.p "You do not currently have a validated email address." ]
|
||||
|
||||
render_pending (Just (Email.Email e)) = [ Bulma.p $ "Pending email address: " ] <>
|
||||
[ Bulma.btn_ro (C.is_small <> C.is_warning) e]
|
||||
[ Bulma.btn_ro [C.is_small, C.is_warning] e]
|
||||
render_pending Nothing = []
|
||||
|
||||
render_delete_account = Bulma.alert_btn "Delete my account" DeleteAccountPopup
|
||||
|
|
|
@ -357,7 +357,7 @@ render state
|
|||
NewRRModal _ -> render_current_rr_modal
|
||||
UpdateRRModal -> render_current_rr_modal
|
||||
NoModal -> HH.div_
|
||||
[ Bulma.level [ Bulma.btn_ (C.is_large <> C.is_info) "Back to the domain list" ReturnToDomainList
|
||||
[ Bulma.level [ Bulma.btn_ [C.is_large, C.is_info] "Back to the domain list" ReturnToDomainList
|
||||
, Bulma.h1 state._domain
|
||||
] []
|
||||
, Bulma.hr
|
||||
|
@ -522,7 +522,7 @@ render state
|
|||
-- Nothing -> Bulma.p "default value for the version (spf1)"
|
||||
-- Just v -> Bulma.box_input "vSPF" "Version" "spf1" (updateForm Field_SPF_v) v
|
||||
, Bulma.hr
|
||||
, Bulma.box_with_tag C.has_background_info_light tag_mechanisms
|
||||
, Bulma.box_with_tag [C.has_background_info_light] tag_mechanisms
|
||||
[ Bulma.div_content [] [Bulma.explanation [Bulma.p "Mechanisms specify which mail servers are allowed to send mail for the domain and how to evaluate the sending mail server’s IP address."] ]
|
||||
, maybe (Bulma.p "You don't have any mechanism.") display_mechanisms state._currentRR.mechanisms
|
||||
, Bulma.hr
|
||||
|
@ -535,7 +535,7 @@ render state
|
|||
, Bulma.btn "Add a mechanism" SPF_Mechanism_Add
|
||||
]
|
||||
, Bulma.hr
|
||||
, Bulma.box_with_tag C.has_background_success_light tag_modifiers
|
||||
, Bulma.box_with_tag [C.has_background_success_light] tag_modifiers
|
||||
[ Bulma.div_content [] [Bulma.explanation [Bulma.p "Modifiers provide additional instructions, such as explanations for SPF failures or redirecting SPF checks to another domain."] ]
|
||||
, maybe (Bulma.p "You don't have any modifier.") display_modifiers state._currentRR.modifiers
|
||||
, Bulma.hr
|
||||
|
@ -626,12 +626,12 @@ render state
|
|||
|
||||
, Bulma.hr
|
||||
, Bulma.div_content [] [Bulma.explanation Explanations.dmarc_contact]
|
||||
, Bulma.box_with_tag C.has_background_info_light tag_aggregated_reports
|
||||
, Bulma.box_with_tag [C.has_background_info_light] tag_aggregated_reports
|
||||
[ maybe (Bulma.p "There is no address to send aggregated reports to.")
|
||||
(display_dmarc_mail_addresses DMARC_remove_rua)
|
||||
state.dmarc.rua
|
||||
]
|
||||
, Bulma.box_with_tag C.has_background_success_light tag_detailed_reports
|
||||
, Bulma.box_with_tag [C.has_background_success_light] tag_detailed_reports
|
||||
[ maybe (Bulma.p "There is no address to send detailed reports to.")
|
||||
(display_dmarc_mail_addresses DMARC_remove_ruf)
|
||||
state.dmarc.ruf
|
||||
|
@ -641,8 +641,8 @@ render state
|
|||
, render_dmarc_mail_errors
|
||||
, Bulma.box_input "idDMARCmail" "Address to contact" "admin@example.com" DMARC_mail state.dmarc_mail
|
||||
, Bulma.box_input "idDMARCmaillimit" "Report size limit (in KB)" "2000" DMARC_mail_limit (maybe "0" show state.dmarc_mail_limit)
|
||||
, Bulma.level [ Bulma.btn_ C.has_background_info_light "New address for aggregated report" DMARC_rua_Add
|
||||
, Bulma.btn_ C.has_background_success_light "New address for specific report" DMARC_ruf_Add
|
||||
, Bulma.level [ Bulma.btn_ [C.has_background_info_light] "New address for aggregated report" DMARC_rua_Add
|
||||
, Bulma.btn_ [C.has_background_success_light] "New address for specific report" DMARC_ruf_Add
|
||||
] []
|
||||
|
||||
, Bulma.hr
|
||||
|
@ -1041,31 +1041,31 @@ handleQuery = case _ of
|
|||
add_RR state new_rr = state { _resources = (state._resources <> [ new_rr ]) }
|
||||
|
||||
-- Rendering
|
||||
bg_color_ro = C.has_background_warning_light :: Array HH.ClassName
|
||||
bg_color_ro = C.has_background_warning_light :: HH.ClassName
|
||||
|
||||
tag :: forall w i. String -> HH.HTML w i
|
||||
tag str = HH.span [HP.classes (C.tag <> C.is_dark)] [HH.text str]
|
||||
tag str = HH.span [HP.classes [C.tag, C.is_dark]] [HH.text str]
|
||||
|
||||
tag_ro :: forall w i. String -> HH.HTML w i
|
||||
tag_ro str = HH.span [HP.classes (C.tag <> C.is_warning)] [HH.text str]
|
||||
tag_ro str = HH.span [HP.classes [C.tag, C.is_warning]] [HH.text str]
|
||||
|
||||
tags :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
||||
tags xs = HH.span [HP.classes (C.tags <> C.no_margin_bottom <> C.no_padding_bottom)] xs
|
||||
tags xs = HH.span [HP.classes [C.tags, C.no_margin_bottom, C.no_padding_bottom]] xs
|
||||
|
||||
-- | Render all Resource Records.
|
||||
render_resources :: forall w. Array ResourceRecord -> HH.HTML w Action
|
||||
render_resources [] = Bulma.box [Bulma.zone_rr_title "Resource records", Bulma.subtitle "No records for now"]
|
||||
render_resources records
|
||||
= HH.div_ $
|
||||
(rr_box bg_color_ro tag_soa Bulma.soa_table_header table_content all_soa_rr)
|
||||
<> (rr_box [] tag_basic Bulma.simple_table_header table_content_w_seps all_basic_rr)
|
||||
<> (rr_box [] tag_mx Bulma.mx_table_header table_content all_mx_rr)
|
||||
<> (rr_box [] tag_caa Bulma.caa_table_header table_content all_caa_rr)
|
||||
<> (rr_box [] tag_srv Bulma.srv_table_header table_content all_srv_rr)
|
||||
<> (rr_box [] tag_spf Bulma.spf_table_header table_content all_spf_rr)
|
||||
<> (rr_box [] tag_dkim Bulma.dkim_table_header table_content all_dkim_rr)
|
||||
<> (rr_box [] tag_dmarc Bulma.dmarc_table_header table_content all_dmarc_rr)
|
||||
<> (rr_box bg_color_ro tag_basic_ro Bulma.simple_table_header_ro table_content_w_seps all_basic_ro_rr)
|
||||
(rr_box [bg_color_ro] tag_soa Bulma.soa_table_header table_content all_soa_rr)
|
||||
<> (rr_box [] tag_basic Bulma.simple_table_header table_content_w_seps all_basic_rr)
|
||||
<> (rr_box [] tag_mx Bulma.mx_table_header table_content all_mx_rr)
|
||||
<> (rr_box [] tag_caa Bulma.caa_table_header table_content all_caa_rr)
|
||||
<> (rr_box [] tag_srv Bulma.srv_table_header table_content all_srv_rr)
|
||||
<> (rr_box [] tag_spf Bulma.spf_table_header table_content all_spf_rr)
|
||||
<> (rr_box [] tag_dkim Bulma.dkim_table_header table_content all_dkim_rr)
|
||||
<> (rr_box [] tag_dmarc Bulma.dmarc_table_header table_content all_dmarc_rr)
|
||||
<> (rr_box [bg_color_ro] tag_basic_ro Bulma.simple_table_header_ro table_content_w_seps all_basic_ro_rr)
|
||||
where
|
||||
all_basic_rr = A.filter (\rr -> A.elem rr.rrtype baseRecords && not rr.readonly) records
|
||||
all_basic_ro_rr = A.filter (\rr -> A.elem rr.rrtype baseRecords && rr.readonly) records
|
||||
|
@ -1096,7 +1096,7 @@ render_resources records
|
|||
-> Array (HH.HTML w Action)
|
||||
rr_box colors title header dp rrs =
|
||||
if A.length rrs > 0
|
||||
then [ Bulma.box_with_tag colors title [Bulma.table_ (C.margin_left 3) [] [header, dp rrs]] ]
|
||||
then [ Bulma.box_with_tag colors title [Bulma.table_ [C.margin_left 3] [] [header, dp rrs]] ]
|
||||
else []
|
||||
--title_col_props = C.is 1
|
||||
|
||||
|
@ -1111,7 +1111,7 @@ render_resources records
|
|||
|
||||
table_content records_ = HH.tbody_ $ map rows records_
|
||||
rows rr = if rr.readonly
|
||||
then HH.tr [ HP.classes C.has_background_warning_light ] $ render_row rr
|
||||
then HH.tr [ HP.classes [C.has_background_warning_light] ] $ render_row rr
|
||||
else HH.tr_ $ render_row rr
|
||||
|
||||
render_row :: ResourceRecord -> Array (HH.HTML w Action)
|
||||
|
@ -1223,8 +1223,8 @@ render_resources records
|
|||
|
||||
show_token_or_btn rr =
|
||||
case rr.rrtype of
|
||||
"A" -> Bulma.btn_ (C.is_small) "🏁 Ask for a token" (NewToken rr.rrid)
|
||||
"AAAA" -> Bulma.btn_ (C.is_small) "🏁 Ask for a token" (NewToken rr.rrid)
|
||||
"A" -> Bulma.btn_ [C.is_small] "🏁 Ask for a token" (NewToken rr.rrid)
|
||||
"AAAA" -> Bulma.btn_ [C.is_small] "🏁 Ask for a token" (NewToken rr.rrid)
|
||||
_ -> HH.text ""
|
||||
|
||||
fancy_qualifier_display :: RR.Qualifier -> String
|
||||
|
|
|
@ -355,7 +355,7 @@ dmarc_aspf =
|
|||
In relaxed mode, they can be different, but in the same Organizational Domain.
|
||||
"""
|
||||
, HH.p_ [ HH.text "From RFC7489:"
|
||||
, HH.div [HP.classes C.is_italic]
|
||||
, HH.div [HP.classes [C.is_italic]]
|
||||
[ HH.text """For example, if a message passes an SPF check with an
|
||||
RFC5321.MailFrom domain of "cbg.bounces.example.com", and the address
|
||||
portion of the RFC5322.From field contains "payments@example.com",
|
||||
|
|
|
@ -166,7 +166,7 @@ render { wsInfo }
|
|||
]
|
||||
reconnection_btn = HH.button [ HP.type_ HP.ButtonButton
|
||||
, HE.onClick \_ -> ConnectWebSocket
|
||||
, HP.classes (C.has_background_danger_light <> C.is_large)
|
||||
, HP.classes [C.has_background_danger_light, C.is_large]
|
||||
]
|
||||
|
||||
handleAction :: forall m. MonadAff m => Action -> H.HalogenM State Action () Output m Unit
|
||||
|
|
216
src/Bulma.purs
216
src/Bulma.purs
|
@ -19,7 +19,7 @@ import Halogen.HTML.Core (AttrName(..))
|
|||
checkbox :: forall w i. Array (HH.HTML w i) -> i -> HH.HTML w i
|
||||
checkbox content_ action
|
||||
= HH.label
|
||||
[ HP.classes C.label ] $ [ HH.input [ HE.onValueInput \ _ -> action, MissingProperties.ty "checkbox" ] ] <> content_
|
||||
[ HP.classes [C.label] ] $ [ HH.input [ HE.onValueInput \ _ -> action, MissingProperties.ty "checkbox" ] ] <> content_
|
||||
-- <label class="checkbox">
|
||||
-- <input type="checkbox" />
|
||||
-- I agree to the <a href="#">terms and conditions</a>
|
||||
|
@ -30,34 +30,34 @@ outside_link classes url title = HH.a [ HP.classes classes, HP.target "_blank",
|
|||
|
||||
columns :: forall (w :: Type) (i :: Type).
|
||||
Array HH.ClassName -> Array (HH.HTML w i) -> HH.HTML w i
|
||||
columns classes = HH.div [ HP.classes (C.columns <> classes) ]
|
||||
columns classes = HH.div [ HP.classes ([C.columns] <> classes) ]
|
||||
|
||||
columns_ :: forall (w :: Type) (i :: Type). Array (HH.HTML w i) -> HH.HTML w i
|
||||
columns_ = columns []
|
||||
|
||||
column :: forall (w :: Type) (i :: Type).
|
||||
Array HH.ClassName -> Array (HH.HTML w i) -> HH.HTML w i
|
||||
column classes = HH.div [ HP.classes (C.column <> classes) ]
|
||||
column classes = HH.div [ HP.classes ([C.column] <> classes) ]
|
||||
|
||||
column_ :: forall (w :: Type) (i :: Type). Array (HH.HTML w i) -> HH.HTML w i
|
||||
column_ = column []
|
||||
|
||||
h1 :: forall (w :: Type) (a :: Type). String -> HH.HTML w a
|
||||
h1 title = HH.h1 [ HP.classes (C.title) ] [ HH.text title ]
|
||||
h1 title = HH.h1 [ HP.classes [C.title] ] [ HH.text title ]
|
||||
|
||||
h3 :: forall (w :: Type) (a :: Type). String -> HH.HTML w a
|
||||
h3 title = HH.h3 [ HP.classes (C.title <> C.is5) ] [ HH.text title ]
|
||||
h3 title = HH.h3 [ HP.classes [C.title, C.is5] ] [ HH.text title ]
|
||||
|
||||
h4 :: forall (w :: Type) (a :: Type). String -> HH.HTML w a
|
||||
h4 title = HH.h4 [ HP.classes (C.title <> C.is5) ] [ HH.text title ]
|
||||
h4 title = HH.h4 [ HP.classes [C.title, C.is5] ] [ HH.text title ]
|
||||
|
||||
zone_rr_title :: forall (w :: Type) (a :: Type). String -> HH.HTML w a
|
||||
zone_rr_title title
|
||||
= HH.h3 [ HP.classes (C.title <> C.is5 <> C.has_text_light <> C.has_background_dark) ]
|
||||
= HH.h3 [ HP.classes [C.title, C.is5, C.has_text_light, C.has_background_dark] ]
|
||||
[ HH.text title ]
|
||||
|
||||
subtitle :: forall (w :: Type) (a :: Type). String -> HH.HTML w a
|
||||
subtitle title = HH.h2 [ HP.classes (C.subtitle <> C.is4) ] [ HH.text title ]
|
||||
subtitle title = HH.h2 [ HP.classes [C.subtitle, C.is4] ] [ HH.text title ]
|
||||
|
||||
hdiv :: forall (w :: Type) (a :: Type). Array (HH.HTML w a) -> HH.HTML w a
|
||||
hdiv = HH.div [ HP.classes [HH.ClassName "mt-5"] ]
|
||||
|
@ -69,13 +69,13 @@ hdiv = HH.div [ HP.classes [HH.ClassName "mt-5"] ]
|
|||
-- = column [ HH.ClassName ("is-offset-" <> (show offset) <> " is-" <> (show size)) ]
|
||||
|
||||
input_classes :: Array HH.ClassName
|
||||
input_classes = C.input <> C.is_small <> C.is_info
|
||||
input_classes = [C.input, C.is_small, C.is_info]
|
||||
|
||||
table :: forall w i. HH.Node DHI.HTMLtable w i
|
||||
table prop xs = HH.table ([ HP.classes $ C.table ] <> prop) xs
|
||||
table prop xs = HH.table ([ HP.classes [C.table] ] <> prop) xs
|
||||
|
||||
table_ :: forall w i. Array HH.ClassName -> HH.Node DHI.HTMLtable w i
|
||||
table_ classes prop xs = HH.table ([ HP.classes $ C.table <> classes] <> prop) xs
|
||||
table_ classes prop xs = HH.table ([ HP.classes $ [C.table] <> classes] <> prop) xs
|
||||
|
||||
table_header_owned_domains :: forall w i. HH.HTML w i
|
||||
table_header_owned_domains
|
||||
|
@ -228,7 +228,7 @@ simple_table_header
|
|||
|
||||
simple_table_header_ro :: forall w i. HH.HTML w i
|
||||
simple_table_header_ro
|
||||
= HH.thead_ [ HH.tr [ HP.classes C.has_background_warning_light ]
|
||||
= HH.thead_ [ HH.tr [ HP.classes [C.has_background_warning_light] ]
|
||||
[ HH.th [ HP.style "width: 50px;" ] [ HH.text "Type" ]
|
||||
, HH.th_ [ name_header ]
|
||||
, HH.th_ [ ttl_header ]
|
||||
|
@ -356,7 +356,7 @@ minttl_soa_header = HH.abbr
|
|||
|
||||
soa_table_header :: forall w i. HH.HTML w i
|
||||
soa_table_header
|
||||
= HH.thead_ [ HH.tr [ HP.classes C.has_background_warning_light ]
|
||||
= HH.thead_ [ HH.tr [ HP.classes [C.has_background_warning_light] ]
|
||||
[ HH.th_ [ name_soa_header ]
|
||||
, HH.th_ [ ttl_header ]
|
||||
, HH.th_ [ mname_soa_header ]
|
||||
|
@ -382,7 +382,7 @@ textarea_ classes placeholder value action
|
|||
[ HE.onValueInput action
|
||||
, HP.value value
|
||||
, HP.placeholder placeholder
|
||||
, HP.classes $ C.textarea <> classes
|
||||
, HP.classes $ [C.textarea] <> classes
|
||||
]
|
||||
|
||||
textarea :: forall w i. String -> String -> (String -> i) -> HH.HTML w i
|
||||
|
@ -398,63 +398,63 @@ btn_abbr_ :: forall w action.
|
|||
btn_abbr_ btnclasses divclasses explanation_ title action
|
||||
= HH.button
|
||||
[ HE.onClick \_ -> action
|
||||
, HP.classes $ C.button <> btnclasses
|
||||
, HP.classes $ [C.button] <> btnclasses
|
||||
] [ HH.abbr [ HP.title explanation_ ] [ HH.div [ HP.classes divclasses ] [ HH.text title ] ] ]
|
||||
|
||||
btn_abbr :: forall w action. String -> String -> action -> HH.HTML w action
|
||||
btn_abbr explanation_ title action = btn_abbr_ [] [] explanation_ title action
|
||||
|
||||
alert_btn_abbr :: forall w action. String -> String -> action -> HH.HTML w action
|
||||
alert_btn_abbr explanation_ title action = btn_abbr_ C.is_danger [] explanation_ title action
|
||||
alert_btn_abbr explanation_ title action = btn_abbr_ [C.is_danger] [] explanation_ title action
|
||||
|
||||
btn_modify :: forall w i. i -> HH.HTML w i
|
||||
btn_modify action = btn_abbr_ (C.is_small <> C.is_info) (C.is_size 4) "Edit" "⚒" action
|
||||
btn_modify action = btn_abbr_ [C.is_small, C.is_info] [C.is_size 4] "Edit" "⚒" action
|
||||
|
||||
btn_save :: forall w i. i -> HH.HTML w i
|
||||
btn_save action = btn_ C.is_info "Save" action
|
||||
btn_save action = btn_ [C.is_info] "Save" action
|
||||
|
||||
btn_add :: forall w i. i -> HH.HTML w i
|
||||
btn_add action = btn_ C.is_info "Add" action
|
||||
btn_add action = btn_ [C.is_info] "Add" action
|
||||
|
||||
btn_delete :: forall w i. i -> HH.HTML w i
|
||||
btn_delete action = btn_abbr_ (C.is_small <> C.is_danger) (C.is_size 4) "Delete" "✖" action
|
||||
btn_delete action = btn_abbr_ [C.is_small, C.is_danger] [C.is_size 4] "Delete" "✖" action
|
||||
|
||||
btn_modify_ro :: forall w i. HH.HTML w i
|
||||
btn_modify_ro = btn_ro (C.is_small <> C.is_warning) "modify"
|
||||
btn_modify_ro = btn_ro [C.is_small, C.is_warning] "modify"
|
||||
|
||||
btn_readonly :: forall w i. HH.HTML w i
|
||||
btn_readonly = btn_ro (C.is_small <> C.is_warning) "read only"
|
||||
btn_readonly = btn_ro [C.is_small, C.is_warning] "read only"
|
||||
|
||||
btn_delete_ro :: forall w i. HH.HTML w i
|
||||
btn_delete_ro = btn_ro (C.is_small <> C.is_warning) "remove"
|
||||
btn_delete_ro = btn_ro [C.is_small, C.is_warning] "remove"
|
||||
|
||||
btn_ro :: forall w i. Array HH.ClassName -> String -> HH.HTML w i
|
||||
btn_ro classes title
|
||||
= HH.button
|
||||
[ HP.classes $ C.button <> classes
|
||||
[ HP.classes $ [C.button] <> classes
|
||||
] [ HH.text title ]
|
||||
|
||||
-- | Create a `level`, different components that should appear on the same horizontal line.
|
||||
-- | First argument, elements that should appear on the left, second on the right.
|
||||
level :: forall w i. Array (HH.HTML w i) -> Array (HH.HTML w i) -> HH.HTML w i
|
||||
level left right = HH.nav [ HP.classes C.level ]
|
||||
[ HH.div [ HP.classes C.level_left ] $ itemize left
|
||||
, HH.div [ HP.classes C.level_right ] $ itemize right
|
||||
level left right = HH.nav [ HP.classes [C.level] ]
|
||||
[ HH.div [ HP.classes [C.level_left] ] $ itemize left
|
||||
, HH.div [ HP.classes [C.level_right] ] $ itemize right
|
||||
]
|
||||
where itemize = map (\v -> HH.div [ HP.classes C.level_item ] [v])
|
||||
where itemize = map (\v -> HH.div [ HP.classes [C.level_item] ] [v])
|
||||
|
||||
btn_ :: forall w action. Array HH.ClassName -> String -> action -> HH.HTML w action
|
||||
btn_ classes title action
|
||||
= HH.button
|
||||
[ HE.onClick \_ -> action
|
||||
, HP.classes $ C.button <> classes
|
||||
, HP.classes $ [C.button] <> classes
|
||||
] [ HH.text title ]
|
||||
|
||||
btn :: forall w action. String -> action -> HH.HTML w action
|
||||
btn title action = btn_ [] title action
|
||||
|
||||
alert_btn :: forall w action. String -> action -> HH.HTML w action
|
||||
alert_btn title action = btn_ C.is_danger title action
|
||||
alert_btn title action = btn_ [C.is_danger] title action
|
||||
|
||||
render_input :: forall w i.
|
||||
Boolean -> String -> String -> (String -> i) -> String -> (HP.IProp DHI.HTMLinput i) -> HH.HTML w i
|
||||
|
@ -473,18 +473,18 @@ render_input password id placeholder action value cond
|
|||
-- | Bulma's `field`, which contains an array of `Halogen.HTML` entries.
|
||||
-- | Two entries are expected: a field label (`div_field_label`) and a field content (`div_field_content`).
|
||||
div_field :: forall w i. Array HH.ClassName -> Array (HH.HTML w i) -> HH.HTML w i
|
||||
div_field classes = HH.div [HP.classes (C.field <> C.is_horizontal <> classes)]
|
||||
div_field classes = HH.div [HP.classes ([C.field, C.is_horizontal] <> classes)]
|
||||
|
||||
-- | Field label (id and title) for a Bulma `field`.
|
||||
div_field_label :: forall w i. String -> String -> HH.HTML w i
|
||||
div_field_label id title = HH.div [HP.classes (C.field_label <> C.normal)]
|
||||
[HH.label [ HP.classes C.label, HP.for id ] [ HH.text title ]]
|
||||
div_field_label id title = HH.div [HP.classes [C.field_label, C.normal]]
|
||||
[HH.label [ HP.classes [C.label], HP.for id ] [ HH.text title ]]
|
||||
|
||||
-- | Any `Halogen.HTML` data in Bulma `field-body > field > control` divs.
|
||||
div_field_content :: forall w i. HH.HTML w i -> HH.HTML w i
|
||||
div_field_content content
|
||||
= HH.div [ HP.classes C.field_body ]
|
||||
[ HH.div [HP.classes C.field ] [ HH.div [HP.classes C.control ] [ content ] ] ]
|
||||
= HH.div [ HP.classes [C.field_body] ]
|
||||
[ HH.div [HP.classes [C.field] ] [ HH.div [HP.classes [C.control] ] [ content ] ] ]
|
||||
|
||||
-- | Basic field entry with a title and a field content.
|
||||
-- |
|
||||
|
@ -507,7 +507,7 @@ field_entry id title entry
|
|||
-- | Error field entry with a title and a field content.
|
||||
error_field_entry :: forall w i. String -> String -> HH.HTML w i -> HH.HTML w i
|
||||
error_field_entry id title entry
|
||||
= div_field C.has_background_danger_light
|
||||
= div_field [C.has_background_danger_light]
|
||||
[ div_field_label id title
|
||||
, div_field_content entry
|
||||
]
|
||||
|
@ -521,13 +521,13 @@ field_inner ispassword cond id title placeholder action value
|
|||
= field_entry id title $ render_input ispassword id placeholder action value cond
|
||||
|
||||
div_field_ :: forall w i. Array HH.ClassName -> Array (HH.HTML w i) -> HH.HTML w i
|
||||
div_field_ classes = HH.div [ HP.classes (C.field <> classes) ]
|
||||
div_field_ classes = HH.div [ HP.classes ([C.field] <> classes) ]
|
||||
|
||||
btn_labeled :: forall w i. String -> String -> String -> i -> HH.HTML w i
|
||||
btn_labeled id title button_text action
|
||||
= field_entry id title $ HH.button
|
||||
[ HE.onClick \_ -> action
|
||||
, HP.classes $ C.button <> C.is_small <> C.is_info
|
||||
, HP.classes [C.button, C.is_small, C.is_info]
|
||||
, HP.id id
|
||||
] [ HH.text button_text ]
|
||||
|
||||
|
@ -546,27 +546,27 @@ box_password :: forall w i. String -> String -> String -> (String -> i) -> Strin
|
|||
box_password = box_password_ (HP.enabled true)
|
||||
|
||||
section_small :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
||||
section_small = HH.section [ HP.classes (C.section <> C.is_small) ]
|
||||
section_small = HH.section [ HP.classes [C.section, C.is_small] ]
|
||||
|
||||
section_medium :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
||||
section_medium = HH.section [ HP.classes (C.section <> C.medium) ]
|
||||
section_medium = HH.section [ HP.classes [C.section, C.medium] ]
|
||||
|
||||
new_domain_field :: forall w i.
|
||||
(String -> i) -> String -> Array (HP.IProp DHI.HTMLselect i) -> Array String -> HH.HTML w i
|
||||
new_domain_field inputaction text_ selectaction accepted_domains
|
||||
= div_field_ C.has_addons
|
||||
= div_field_ [C.has_addons]
|
||||
[ HH.p
|
||||
[ HP.classes C.control ]
|
||||
[ HP.classes [C.control] ]
|
||||
[ HH.input $
|
||||
[ HE.onValueInput inputaction
|
||||
, HP.placeholder "www"
|
||||
, HP.value text_
|
||||
, HP.type_ HP.InputText
|
||||
, HP.classes (C.is_primary <> C.input)
|
||||
, HP.classes [C.is_primary, C.input]
|
||||
]
|
||||
]
|
||||
, HH.p
|
||||
[ HP.classes C.control ]
|
||||
[ HP.classes [C.control] ]
|
||||
[ select selectaction $ map option accepted_domains ]
|
||||
]
|
||||
|
||||
|
@ -583,35 +583,35 @@ p_ :: forall w i. Array HH.ClassName -> String -> HH.HTML w i
|
|||
p_ classes str = HH.p [HP.classes classes] [ HH.text str ]
|
||||
|
||||
box :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
||||
box = HH.div [HP.classes C.box]
|
||||
box = HH.div [HP.classes [C.box]]
|
||||
|
||||
box_ :: forall w i. Array HH.ClassName -> Array (HH.HTML w i) -> HH.HTML w i
|
||||
box_ classes = HH.div [HP.classes $ C.box <> classes]
|
||||
box_ classes = HH.div [HP.classes $ [C.box] <> classes]
|
||||
|
||||
option :: forall w i. String -> HH.HTML w i
|
||||
option value = HH.option_ [HH.text value]
|
||||
|
||||
select :: forall w i. HH.Node DHI.HTMLselect w i
|
||||
select action options
|
||||
= HH.div [ HP.classes (C.select <> C.is_primary) ]
|
||||
= HH.div [ HP.classes [C.select, C.is_primary] ]
|
||||
[ HH.select action options]
|
||||
|
||||
hero :: forall w i. String -> String -> HH.HTML w i
|
||||
hero _title _subtitle
|
||||
= HH.section [ HP.classes (C.hero <> C.is_info <> C.is_small) ]
|
||||
[ HH.div [ HP.classes C.hero_body ]
|
||||
[ HH.p [ HP.classes C.title ] [ HH.text _title ]
|
||||
, HH.p [ HP.classes C.subtitle ] [ HH.text _subtitle ]
|
||||
= HH.section [ HP.classes [C.hero, C.is_info, C.is_small] ]
|
||||
[ HH.div [ HP.classes [C.hero_body] ]
|
||||
[ HH.p [ HP.classes [C.title] ] [ HH.text _title ]
|
||||
, HH.p [ HP.classes [C.subtitle] ] [ HH.text _subtitle ]
|
||||
]
|
||||
]
|
||||
|
||||
small_hero :: forall w i. String -> String -> HH.HTML w i
|
||||
small_hero _title _subtitle =
|
||||
HH.section [ HP.classes (C.hero <> C.is_info <> C.is_small) ]
|
||||
[ HH.div [ HP.classes C.hero_body ]
|
||||
[ HH.div [ HP.classes $ C.container <> C.has_text_centered ]
|
||||
[ HH.p [ HP.classes C.title ] [ HH.text _title ]
|
||||
, HH.p [ HP.classes C.subtitle ] [ HH.text _subtitle ]
|
||||
HH.section [ HP.classes [C.hero, C.is_info, C.is_small] ]
|
||||
[ HH.div [ HP.classes [C.hero_body] ]
|
||||
[ HH.div [ HP.classes [C.container, C.has_text_centered] ]
|
||||
[ HH.p [ HP.classes [C.title] ] [ HH.text _title ]
|
||||
, HH.p [ HP.classes [C.subtitle] ] [ HH.text _subtitle ]
|
||||
]
|
||||
]
|
||||
]
|
||||
|
@ -622,10 +622,10 @@ hero_danger_txt _title _subtitle
|
|||
|
||||
hero_danger :: forall w i. Array (HH.HTML w i) -> Array (HH.HTML w i) -> HH.HTML w i
|
||||
hero_danger _title _subtitle
|
||||
= HH.section [ HP.classes (C.hero <> C.is_danger <> C.is_small) ]
|
||||
[ HH.div [ HP.classes C.hero_body ]
|
||||
[ HH.p [ HP.classes C.title ] _title
|
||||
, HH.p [ HP.classes C.subtitle ] _subtitle
|
||||
= HH.section [ HP.classes [C.hero, C.is_danger, C.is_small] ]
|
||||
[ HH.div [ HP.classes [C.hero_body] ]
|
||||
[ HH.p [ HP.classes [C.title] ] _title
|
||||
, HH.p [ HP.classes [C.subtitle] ] _subtitle
|
||||
]
|
||||
]
|
||||
|
||||
|
@ -633,29 +633,29 @@ header :: forall w i. String -> String -> HH.HTML w i
|
|||
header = hero
|
||||
|
||||
container :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
||||
container = HH.div [HP.classes (C.container <> C.is_info)]
|
||||
container = HH.div [HP.classes [C.container, C.is_info]]
|
||||
|
||||
data_target :: forall r i. String -> HP.IProp r i
|
||||
data_target = HP.attr (AttrName "data-target")
|
||||
|
||||
modal_ :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
||||
modal_ = HH.div [HP.classes (C.modal <> C.is_active)]
|
||||
modal_ = HH.div [HP.classes [C.modal, C.is_active]]
|
||||
modal_background :: forall w i. HH.HTML w i
|
||||
modal_background = HH.div [HP.classes C.modal_background] []
|
||||
modal_background = HH.div [HP.classes [C.modal_background]] []
|
||||
modal_card_large :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
||||
modal_card_large = HH.div [HP.classes $ C.modal_card <> C.is_large]
|
||||
modal_card_large = HH.div [HP.classes [C.modal_card, C.is_large]]
|
||||
modal_header :: forall w i. String -> HH.HTML w i
|
||||
modal_header title = HH.header [HP.classes C.modal_card_head]
|
||||
[ HH.p [HP.classes C.modal_card_title] [HH.text title]
|
||||
modal_header title = HH.header [HP.classes [C.modal_card_head]]
|
||||
[ HH.p [HP.classes [C.modal_card_title]] [HH.text title]
|
||||
]
|
||||
modal_body :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
||||
modal_body = HH.section [HP.classes C.modal_card_body]
|
||||
modal_body = HH.section [HP.classes [C.modal_card_body]]
|
||||
modal_foot :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
||||
modal_foot = HH.div [HP.classes C.modal_card_foot]
|
||||
modal_foot = HH.div [HP.classes [C.modal_card_foot]]
|
||||
|
||||
cancel_button :: forall w i. i -> HH.HTML w i
|
||||
cancel_button action
|
||||
= HH.button [ HP.classes C.button
|
||||
= HH.button [ HP.classes [C.button]
|
||||
, HE.onClick \_ -> action
|
||||
] [HH.text "Cancel"]
|
||||
|
||||
|
@ -666,28 +666,28 @@ hr :: forall w i. HH.HTML w i
|
|||
hr = HH.hr_
|
||||
|
||||
tile :: forall w i. Array HH.ClassName -> Array (HH.HTML w i) -> HH.HTML w i
|
||||
tile classes = HH.div [HP.classes (C.tile <> classes)]
|
||||
tile classes = HH.div [HP.classes ([C.tile] <> classes)]
|
||||
|
||||
tile_ :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
||||
tile_ = tile []
|
||||
|
||||
tile_danger :: forall w i. Array HH.ClassName -> Array (HH.HTML w i) -> HH.HTML w i
|
||||
tile_danger classes = tile (C.is_danger <> C.notification <> classes)
|
||||
tile_danger classes = tile $ [C.is_danger, C.notification] <> classes
|
||||
|
||||
tile_warning :: forall w i. Array HH.ClassName -> Array (HH.HTML w i) -> HH.HTML w i
|
||||
tile_warning classes = tile (C.is_warning <> C.notification <> classes)
|
||||
tile_warning classes = tile $ [C.is_warning, C.notification] <> classes
|
||||
|
||||
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_ 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
|
||||
|
||||
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
|
||||
error_message head body = article_ [C.is_danger] head body
|
||||
|
||||
|
||||
-- | Basic input field with a read-only side text.
|
||||
|
@ -708,12 +708,12 @@ error_message head body = article_ C.is_danger head body
|
|||
input_with_side_text :: forall w i.
|
||||
String -> String -> String -> (String -> i) -> String -> String -> HH.HTML w i
|
||||
input_with_side_text id title placeholder action value sidetext
|
||||
= HH.div [HP.classes $ C.field <> C.is_horizontal]
|
||||
[ HH.div [ HP.classes (C.field_label <> C.normal) ]
|
||||
[HH.label [ HP.classes C.label, HP.for id ] [ HH.text title ]]
|
||||
, HH.div [ HP.classes C.field_body ]
|
||||
[ HH.div [ HP.classes $ C.has_addons <> C.field ]
|
||||
[ HH.p [HP.classes C.control]
|
||||
= HH.div [HP.classes [C.field, C.is_horizontal]]
|
||||
[ HH.div [ HP.classes [C.field_label, C.normal] ]
|
||||
[HH.label [ HP.classes [C.label], HP.for id ] [ HH.text title ]]
|
||||
, HH.div [ HP.classes [C.field_body] ]
|
||||
[ HH.div [ HP.classes [C.has_addons, C.field] ]
|
||||
[ HH.p [HP.classes [C.control]]
|
||||
[ HH.input $
|
||||
[ HE.onValueInput action
|
||||
, HP.value value
|
||||
|
@ -722,8 +722,8 @@ input_with_side_text id title placeholder action value sidetext
|
|||
, HP.id id
|
||||
]
|
||||
]
|
||||
, HH.p [HP.classes C.control]
|
||||
[ HH.a [HP.classes $ C.button <> C.is_small <> C.is_static]
|
||||
, HH.p [HP.classes [C.control]]
|
||||
[ HH.a [HP.classes [C.button, C.is_small, C.is_static]]
|
||||
[HH.text sidetext] ]
|
||||
]
|
||||
]
|
||||
|
@ -744,7 +744,7 @@ modal title body foot =
|
|||
-- selection: create a "select" input.
|
||||
-- Get the changes with "onSelectedIndexChange" which provides an index.
|
||||
selection :: forall w i. (Int -> i) -> Array String -> String -> HH.HTML w i
|
||||
selection action values selected = HH.div [HP.classes $ C.select <> C.is_normal]
|
||||
selection action values selected = HH.div [HP.classes [C.select, C.is_normal]]
|
||||
[ HH.select [ HE.onSelectedIndexChange action ]
|
||||
$ map (\n -> HH.option [HP.value n, HP.selected (n == selected)] [HH.text n]) values
|
||||
]
|
||||
|
@ -768,19 +768,19 @@ selection_field'' id title action values default_value selected
|
|||
-- | selection': as `selection` but takes an array of tuple as values.
|
||||
-- | First value in the tuple is what to display, the second one is what to match on.
|
||||
selection' :: forall w i. (Int -> i) -> Array (Tuple String String) -> String -> HH.HTML w i
|
||||
selection' action values selected = HH.div [HP.classes $ C.select <> C.is_normal]
|
||||
selection' action values selected = HH.div [HP.classes [C.select, C.is_normal]]
|
||||
[ HH.select [ HE.onSelectedIndexChange action ]
|
||||
$ map (\n -> HH.option [HP.value (snd n), HP.selected ((snd n) == selected)] [HH.text (fst n)]) values
|
||||
]
|
||||
|
||||
tag_light_info :: forall w i. String -> HH.HTML w i
|
||||
tag_light_info str = HH.span [HP.classes (C.tag <> C.is_info <> C.is_light)] [HH.text str]
|
||||
tag_light_info str = HH.span [HP.classes [C.tag, C.is_info, C.is_light]] [HH.text str]
|
||||
|
||||
div_large_content :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
||||
div_large_content content = HH.div [HP.classes (C.is_large <> C.content)] content
|
||||
div_large_content content = HH.div [HP.classes [C.is_large, C.content]] content
|
||||
|
||||
div_content :: forall w i. Array HH.ClassName -> Array (HH.HTML w i) -> HH.HTML w i
|
||||
div_content classes content = HH.div [HP.classes (C.content <> classes)] content
|
||||
div_content classes content = HH.div [HP.classes ([C.content] <> classes)] content
|
||||
|
||||
explanation :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
||||
explanation content = HH.blockquote [HP.classes [HH.ClassName "justified"]] content
|
||||
|
@ -792,64 +792,64 @@ simple_quote :: forall w i. String -> HH.HTML w i
|
|||
simple_quote content = quote [ p content ]
|
||||
|
||||
tabs :: forall w i. Array HH.ClassName -> Array (HH.HTML w i) -> HH.HTML w i
|
||||
tabs classes tab_list = HH.div [HP.classes $ C.tabs <> classes] [HH.ul_ tab_list]
|
||||
tabs classes tab_list = HH.div [HP.classes $ [C.tabs] <> classes] [HH.ul_ tab_list]
|
||||
|
||||
fancy_tabs :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
||||
fancy_tabs arr = tabs (C.is_medium <> C.is_boxed <> C.is_centered) arr
|
||||
fancy_tabs arr = tabs [C.is_medium, C.is_boxed, C.is_centered] arr
|
||||
|
||||
tab_entry :: forall w i. Boolean -> String -> i -> HH.HTML w i
|
||||
tab_entry active name action =
|
||||
HH.li (if active then [HP.classes C.is_active] else [])
|
||||
HH.li (if active then [HP.classes [C.is_active]] else [])
|
||||
[ HH.a [HE.onClick \_ -> action] [HH.text name] ]
|
||||
|
||||
delete_btn :: forall w i. i -> HH.HTML w i
|
||||
delete_btn action = HH.button [HE.onClick \_ -> action, HP.classes C.delete] []
|
||||
delete_btn action = HH.button [HE.onClick \_ -> action, HP.classes [C.delete]] []
|
||||
|
||||
notification :: forall w i. Array HH.ClassName -> String -> i -> HH.HTML w i
|
||||
notification classes value deleteaction =
|
||||
HH.div [HP.classes (C.notification <> classes)]
|
||||
HH.div [HP.classes $ [C.notification] <> classes]
|
||||
[ delete_btn deleteaction
|
||||
, HH.text value
|
||||
]
|
||||
|
||||
notification_primary :: forall w i. String -> i -> HH.HTML w i
|
||||
notification_primary value action = notification C.is_primary value action
|
||||
notification_primary value action = notification [C.is_primary] value action
|
||||
|
||||
notification_success :: forall w i. String -> i -> HH.HTML w i
|
||||
notification_success value action = notification C.is_success value action
|
||||
notification_success value action = notification [C.is_success] value action
|
||||
|
||||
notification_warning :: forall w i. String -> i -> HH.HTML w i
|
||||
notification_warning value action = notification C.is_warning value action
|
||||
notification_warning value action = notification [C.is_warning] value action
|
||||
|
||||
notification_danger :: forall w i. String -> i -> HH.HTML w i
|
||||
notification_danger value action = notification C.is_danger value action
|
||||
notification_danger value action = notification [C.is_danger] value action
|
||||
|
||||
notification_block' :: forall w i. Array HH.ClassName -> Array (HH.HTML w i) -> HH.HTML w i
|
||||
notification_block' classes content =
|
||||
HH.div [HP.classes (C.notification <> classes)] content
|
||||
HH.div [HP.classes ([C.notification] <> classes)] content
|
||||
|
||||
notification' :: forall w i. Array HH.ClassName -> String -> HH.HTML w i
|
||||
notification' classes value =
|
||||
HH.div [HP.classes (C.notification <> classes)]
|
||||
HH.div [HP.classes ([C.notification] <> classes)]
|
||||
[ HH.text value ]
|
||||
|
||||
notification_primary' :: forall w i. String -> HH.HTML w i
|
||||
notification_primary' value = notification' C.is_primary value
|
||||
notification_primary' value = notification' [C.is_primary] value
|
||||
|
||||
notification_warning' :: forall w i. String -> HH.HTML w i
|
||||
notification_warning' value = notification' C.is_warning value
|
||||
notification_warning' value = notification' [C.is_warning] value
|
||||
|
||||
notification_danger' :: forall w i. String -> HH.HTML w i
|
||||
notification_danger' value = notification' C.is_danger value
|
||||
notification_danger' value = notification' [C.is_danger] value
|
||||
|
||||
notification_danger_block' :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
||||
notification_danger_block' content = notification_block' C.is_danger content
|
||||
notification_danger_block' content = notification_block' [C.is_danger] content
|
||||
|
||||
btn_validation_ :: forall w i. String -> HH.HTML w i
|
||||
btn_validation_ str = HH.button
|
||||
-- [ HP.style "padding: 0.5rem 1.25rem;"
|
||||
[ HP.type_ HP.ButtonSubmit
|
||||
, HP.classes $ C.button <> C.is_primary
|
||||
, HP.classes [C.button, C.is_primary]
|
||||
]
|
||||
[ HH.text str ]
|
||||
|
||||
|
@ -858,7 +858,7 @@ btn_validation = btn_validation_ "Validate"
|
|||
|
||||
-- | Box with tags.
|
||||
-- |```
|
||||
-- |box_with_tag C.has_background_danger_light some_tag [Bulma.p "Hello"]
|
||||
-- |box_with_tag [C.has_background_danger_light] some_tag [Bulma.p "Hello"]
|
||||
-- |```
|
||||
box_with_tag :: forall w action.
|
||||
Array HH.ClassName -- css classes (like the color)
|
||||
|
@ -867,5 +867,5 @@ box_with_tag :: forall w action.
|
|||
-> HH.HTML w action
|
||||
box_with_tag colors tag xs
|
||||
= box_
|
||||
(C.no_padding_left <> C.no_padding_top <> colors)
|
||||
[tag, HH.div [HP.classes $ C.restore_padding_left <> C.restore_padding_top] xs]
|
||||
([C.no_padding_left, C.no_padding_top] <> colors)
|
||||
[tag, HH.div [HP.classes [C.restore_padding_left, C.restore_padding_top]] xs]
|
||||
|
|
|
@ -4,130 +4,142 @@ import Prelude (show, ($), (<>))
|
|||
|
||||
import Halogen.HTML as HH
|
||||
|
||||
margin_top :: Int -> Array HH.ClassName
|
||||
margin_top size = [HH.ClassName $ "mt-" <> show size]
|
||||
margin_top :: Int -> HH.ClassName
|
||||
margin_top size = HH.ClassName $ "mt-" <> show size
|
||||
|
||||
margin_left :: Int -> Array HH.ClassName
|
||||
margin_left size = [HH.ClassName $ "ml-" <> show size]
|
||||
margin_left :: Int -> HH.ClassName
|
||||
margin_left size = HH.ClassName $ "ml-" <> show size
|
||||
|
||||
margin_bottom :: Int -> Array HH.ClassName
|
||||
margin_bottom size = [HH.ClassName $ "mb-" <> show size]
|
||||
margin_bottom :: Int -> HH.ClassName
|
||||
margin_bottom size = HH.ClassName $ "mb-" <> show size
|
||||
|
||||
is :: Int -> Array HH.ClassName
|
||||
is size = [HH.ClassName $ "is-" <> show size]
|
||||
margin_right :: Int -> HH.ClassName
|
||||
margin_right size = HH.ClassName $ "mr-" <> show size
|
||||
|
||||
is_size :: Int -> Array HH.ClassName
|
||||
is_size size = [HH.ClassName $ "is-size-" <> show size]
|
||||
is :: Int -> HH.ClassName
|
||||
is size = HH.ClassName $ "is-" <> show size
|
||||
|
||||
padding_left :: Int -> Array HH.ClassName
|
||||
padding_left size = [HH.ClassName $ "pl-" <> show size]
|
||||
is_size :: Int -> HH.ClassName
|
||||
is_size size = HH.ClassName $ "is-size-" <> show size
|
||||
|
||||
box = [HH.ClassName "box"] :: Array HH.ClassName
|
||||
breadcrumb = [HH.ClassName "breadcrumb"] :: Array HH.ClassName
|
||||
button = [HH.ClassName "button"] :: Array HH.ClassName
|
||||
buttons = [HH.ClassName "buttons"] :: Array HH.ClassName
|
||||
column = [HH.ClassName "column"] :: Array HH.ClassName
|
||||
columns = [HH.ClassName "columns"] :: Array HH.ClassName
|
||||
container = [HH.ClassName "container"] :: Array HH.ClassName
|
||||
content = [HH.ClassName "content"] :: Array HH.ClassName
|
||||
control = [HH.ClassName "control"] :: Array HH.ClassName
|
||||
delete = [HH.ClassName "delete"] :: Array HH.ClassName
|
||||
field_body = [HH.ClassName "field-body"] :: Array HH.ClassName
|
||||
field = [HH.ClassName "field"] :: Array HH.ClassName
|
||||
field_label = [HH.ClassName "field-label"] :: Array HH.ClassName
|
||||
has_addons = [HH.ClassName "has-addons"] :: Array HH.ClassName
|
||||
has_background_danger_dark = [HH.ClassName "has-background-danger-dark"] :: Array HH.ClassName
|
||||
has_background_danger = [HH.ClassName "has-background-danger"] :: Array HH.ClassName
|
||||
has_background_danger_light = [HH.ClassName "has-background-danger-light"] :: Array HH.ClassName
|
||||
has_background_dark = [HH.ClassName "has-background-dark"] :: Array HH.ClassName
|
||||
has_background_info_dark = [HH.ClassName "has-background-info-dark"] :: Array HH.ClassName
|
||||
has_background_info = [HH.ClassName "has-background-info"] :: Array HH.ClassName
|
||||
has_background_info_light = [HH.ClassName "has-background-info-light"] :: Array HH.ClassName
|
||||
has_background_link_dark = [HH.ClassName "has-background-link-dark"] :: Array HH.ClassName
|
||||
has_background_link_light = [HH.ClassName "has-background-link-light"] :: Array HH.ClassName
|
||||
has_background_primary_dark = [HH.ClassName "has-background-primary-dark"] :: Array HH.ClassName
|
||||
has_background_primary_light = [HH.ClassName "has-background-primary-light"] :: Array HH.ClassName
|
||||
has_background_success_dark = [HH.ClassName "has-background-success-dark"] :: Array HH.ClassName
|
||||
has_background_success_light = [HH.ClassName "has-background-success-light"] :: Array HH.ClassName
|
||||
has_background_warning_dark = [HH.ClassName "has-background-warning-dark"] :: Array HH.ClassName
|
||||
has_background_warning = [HH.ClassName "has-background-warning"] :: Array HH.ClassName
|
||||
has_background_warning_light = [HH.ClassName "has-background-warning-light"] :: Array HH.ClassName
|
||||
has_dropdown = [HH.ClassName "has-dropdown"] :: Array HH.ClassName
|
||||
has_succeeds_separator = [HH.ClassName "has-succeeds-separator"] :: Array HH.ClassName
|
||||
has_text_centered = [HH.ClassName "has-text-centered"] :: Array HH.ClassName
|
||||
has_text_dark = [HH.ClassName "has-text-dark"] :: Array HH.ClassName
|
||||
has_text_light = [HH.ClassName "has-text-light"] :: Array HH.ClassName
|
||||
help = [HH.ClassName "help"] :: Array HH.ClassName
|
||||
hero_body = [HH.ClassName "hero-body"] :: Array HH.ClassName
|
||||
hero = [HH.ClassName "hero"] :: Array HH.ClassName
|
||||
input = [HH.ClassName "input"] :: Array HH.ClassName
|
||||
is4 = [HH.ClassName "is-4"] :: Array HH.ClassName
|
||||
is5 = [HH.ClassName "is-5"] :: Array HH.ClassName
|
||||
is_active = [HH.ClassName "is-active"] :: Array HH.ClassName
|
||||
is_ancestor = [HH.ClassName "is-ancestor"] :: Array HH.ClassName
|
||||
is_boxed = [HH.ClassName "is-boxed"] :: Array HH.ClassName
|
||||
is_centered = [HH.ClassName "is-centered"] :: Array HH.ClassName
|
||||
is_child = [HH.ClassName "is-child"] :: Array HH.ClassName
|
||||
is_danger = [HH.ClassName "is-danger"] :: Array HH.ClassName
|
||||
is_dark = [HH.ClassName "is-dark"] :: Array HH.ClassName
|
||||
is_horizontal = [HH.ClassName "is-horizontal"] :: Array HH.ClassName
|
||||
is_hoverable = [HH.ClassName "is-hoverable"] :: Array HH.ClassName
|
||||
is_info = [HH.ClassName "is-info"] :: Array HH.ClassName
|
||||
is_italic = [HH.ClassName "is-italic"] :: Array HH.ClassName
|
||||
is_large = [HH.ClassName "is-large"] :: Array HH.ClassName
|
||||
is_light = [HH.ClassName "is-light"] :: Array HH.ClassName
|
||||
is_medium = [HH.ClassName "is-medium"] :: Array HH.ClassName
|
||||
is_normal = [HH.ClassName "is-normal"] :: Array HH.ClassName
|
||||
is_parent = [HH.ClassName "is-parent"] :: Array HH.ClassName
|
||||
is_primary = [HH.ClassName "is-primary"] :: Array HH.ClassName
|
||||
is_selected = [HH.ClassName "is-selected"] :: Array HH.ClassName
|
||||
is_small = [HH.ClassName "is-small"] :: Array HH.ClassName
|
||||
is_spaced = [HH.ClassName "is-spaced"] :: Array HH.ClassName
|
||||
is_static = [HH.ClassName "is-static"] :: Array HH.ClassName
|
||||
is_success = [HH.ClassName "is-success"] :: Array HH.ClassName
|
||||
is_vertical = [HH.ClassName "is-vertical"] :: Array HH.ClassName
|
||||
is_warning = [HH.ClassName "is-warning"] :: Array HH.ClassName
|
||||
label = [HH.ClassName "label"] :: Array HH.ClassName
|
||||
level = [HH.ClassName "level"] :: Array HH.ClassName
|
||||
level_item = [HH.ClassName "level-item"] :: Array HH.ClassName
|
||||
level_left = [HH.ClassName "level-left"] :: Array HH.ClassName
|
||||
level_right = [HH.ClassName "level-right"] :: Array HH.ClassName
|
||||
medium = [HH.ClassName "is-medium"] :: Array HH.ClassName
|
||||
message_body = [HH.ClassName "message-body"] :: Array HH.ClassName
|
||||
message_header = [HH.ClassName "message-header"] :: Array HH.ClassName
|
||||
message = [HH.ClassName "message"] :: Array HH.ClassName
|
||||
modal_background = [HH.ClassName "modal-background"] :: Array HH.ClassName
|
||||
modal_card_body = [HH.ClassName "modal-card-body"] :: Array HH.ClassName
|
||||
modal_card_foot = [HH.ClassName "modal-card-foot"] :: Array HH.ClassName
|
||||
modal_card_head = [HH.ClassName "modal-card-head"] :: Array HH.ClassName
|
||||
modal_card = [HH.ClassName "modal-card"] :: Array HH.ClassName
|
||||
modal_card_title = [HH.ClassName "modal-card-title"] :: Array HH.ClassName
|
||||
modal = [HH.ClassName "modal"] :: Array HH.ClassName
|
||||
navbar_brand = [HH.ClassName "navbar-brand"] :: Array HH.ClassName
|
||||
navbar_burger = [HH.ClassName "navbar-burger"] :: Array HH.ClassName
|
||||
navbar_divider = [HH.ClassName "navbar-divider"] :: Array HH.ClassName
|
||||
navbar_dropdown = [HH.ClassName "navbar-dropdown"] :: Array HH.ClassName
|
||||
navbar_end = [HH.ClassName "navbar-end"] :: Array HH.ClassName
|
||||
navbar = [HH.ClassName "navbar"] :: Array HH.ClassName
|
||||
navbar_item = [HH.ClassName "navbar-item"] :: Array HH.ClassName
|
||||
navbar_link = [HH.ClassName "navbar-link"] :: Array HH.ClassName
|
||||
navbar_menu = [HH.ClassName "navbar-menu"] :: Array HH.ClassName
|
||||
navbar_start = [HH.ClassName "navbar-start"] :: Array HH.ClassName
|
||||
no_margin_bottom = [HH.ClassName "mb-0"] :: Array HH.ClassName
|
||||
no_padding_bottom = [HH.ClassName "pb-0"] :: Array HH.ClassName
|
||||
no_padding_left = [HH.ClassName "pl-0"] :: Array HH.ClassName
|
||||
no_padding_top = [HH.ClassName "pt-0"] :: Array HH.ClassName
|
||||
normal = [HH.ClassName "is-normal"] :: Array HH.ClassName
|
||||
notification = [HH.ClassName "notification"] :: Array HH.ClassName
|
||||
restore_padding_left = [HH.ClassName "pl-4"] :: Array HH.ClassName
|
||||
restore_padding_top = [HH.ClassName "pt-4"] :: Array HH.ClassName
|
||||
section = [HH.ClassName "section"] :: Array HH.ClassName
|
||||
select = [HH.ClassName "select"] :: Array HH.ClassName
|
||||
subtitle = [HH.ClassName "subtitle"] :: Array HH.ClassName
|
||||
table = [HH.ClassName "table"] :: Array HH.ClassName
|
||||
tabs = [HH.ClassName "tabs"] :: Array HH.ClassName
|
||||
tag = [HH.ClassName "tag"] :: Array HH.ClassName
|
||||
tags = [HH.ClassName "tags"] :: Array HH.ClassName
|
||||
textarea = [HH.ClassName "textarea"] :: Array HH.ClassName
|
||||
tile = [HH.ClassName "tile"] :: Array HH.ClassName
|
||||
title = [HH.ClassName "title"] :: Array HH.ClassName
|
||||
padding_left :: Int -> HH.ClassName
|
||||
padding_left size = HH.ClassName $ "pl-" <> show size
|
||||
|
||||
padding_right :: Int -> HH.ClassName
|
||||
padding_right size = HH.ClassName $ "pr-" <> show size
|
||||
|
||||
padding_top :: Int -> HH.ClassName
|
||||
padding_top size = HH.ClassName $ "pt-" <> show size
|
||||
|
||||
padding_bottom :: Int -> HH.ClassName
|
||||
padding_bottom size = HH.ClassName $ "pb-" <> show size
|
||||
|
||||
box = HH.ClassName "box" :: HH.ClassName
|
||||
breadcrumb = HH.ClassName "breadcrumb" :: HH.ClassName
|
||||
button = HH.ClassName "button" :: HH.ClassName
|
||||
buttons = HH.ClassName "buttons" :: HH.ClassName
|
||||
column = HH.ClassName "column" :: HH.ClassName
|
||||
columns = HH.ClassName "columns" :: HH.ClassName
|
||||
container = HH.ClassName "container" :: HH.ClassName
|
||||
content = HH.ClassName "content" :: HH.ClassName
|
||||
control = HH.ClassName "control" :: HH.ClassName
|
||||
delete = HH.ClassName "delete" :: HH.ClassName
|
||||
field_body = HH.ClassName "field-body" :: HH.ClassName
|
||||
field = HH.ClassName "field" :: HH.ClassName
|
||||
field_label = HH.ClassName "field-label" :: HH.ClassName
|
||||
has_addons = HH.ClassName "has-addons" :: HH.ClassName
|
||||
has_background_danger_dark = HH.ClassName "has-background-danger-dark" :: HH.ClassName
|
||||
has_background_danger = HH.ClassName "has-background-danger" :: HH.ClassName
|
||||
has_background_danger_light = HH.ClassName "has-background-danger-light" :: HH.ClassName
|
||||
has_background_dark = HH.ClassName "has-background-dark" :: HH.ClassName
|
||||
has_background_info_dark = HH.ClassName "has-background-info-dark" :: HH.ClassName
|
||||
has_background_info = HH.ClassName "has-background-info" :: HH.ClassName
|
||||
has_background_info_light = HH.ClassName "has-background-info-light" :: HH.ClassName
|
||||
has_background_link_dark = HH.ClassName "has-background-link-dark" :: HH.ClassName
|
||||
has_background_link_light = HH.ClassName "has-background-link-light" :: HH.ClassName
|
||||
has_background_primary_dark = HH.ClassName "has-background-primary-dark" :: HH.ClassName
|
||||
has_background_primary_light = HH.ClassName "has-background-primary-light" :: HH.ClassName
|
||||
has_background_success_dark = HH.ClassName "has-background-success-dark" :: HH.ClassName
|
||||
has_background_success_light = HH.ClassName "has-background-success-light" :: HH.ClassName
|
||||
has_background_warning_dark = HH.ClassName "has-background-warning-dark" :: HH.ClassName
|
||||
has_background_warning = HH.ClassName "has-background-warning" :: HH.ClassName
|
||||
has_background_warning_light = HH.ClassName "has-background-warning-light" :: HH.ClassName
|
||||
has_dropdown = HH.ClassName "has-dropdown" :: HH.ClassName
|
||||
has_succeeds_separator = HH.ClassName "has-succeeds-separator" :: HH.ClassName
|
||||
has_text_centered = HH.ClassName "has-text-centered" :: HH.ClassName
|
||||
has_text_dark = HH.ClassName "has-text-dark" :: HH.ClassName
|
||||
has_text_light = HH.ClassName "has-text-light" :: HH.ClassName
|
||||
help = HH.ClassName "help" :: HH.ClassName
|
||||
hero_body = HH.ClassName "hero-body" :: HH.ClassName
|
||||
hero = HH.ClassName "hero" :: HH.ClassName
|
||||
input = HH.ClassName "input" :: HH.ClassName
|
||||
is4 = HH.ClassName "is-4" :: HH.ClassName
|
||||
is5 = HH.ClassName "is-5" :: HH.ClassName
|
||||
is_active = HH.ClassName "is-active" :: HH.ClassName
|
||||
is_ancestor = HH.ClassName "is-ancestor" :: HH.ClassName
|
||||
is_boxed = HH.ClassName "is-boxed" :: HH.ClassName
|
||||
is_centered = HH.ClassName "is-centered" :: HH.ClassName
|
||||
is_child = HH.ClassName "is-child" :: HH.ClassName
|
||||
is_danger = HH.ClassName "is-danger" :: HH.ClassName
|
||||
is_dark = HH.ClassName "is-dark" :: HH.ClassName
|
||||
is_horizontal = HH.ClassName "is-horizontal" :: HH.ClassName
|
||||
is_hoverable = HH.ClassName "is-hoverable" :: HH.ClassName
|
||||
is_info = HH.ClassName "is-info" :: HH.ClassName
|
||||
is_italic = HH.ClassName "is-italic" :: HH.ClassName
|
||||
is_large = HH.ClassName "is-large" :: HH.ClassName
|
||||
is_light = HH.ClassName "is-light" :: HH.ClassName
|
||||
is_medium = HH.ClassName "is-medium" :: HH.ClassName
|
||||
is_normal = HH.ClassName "is-normal" :: HH.ClassName
|
||||
is_parent = HH.ClassName "is-parent" :: HH.ClassName
|
||||
is_primary = HH.ClassName "is-primary" :: HH.ClassName
|
||||
is_selected = HH.ClassName "is-selected" :: HH.ClassName
|
||||
is_small = HH.ClassName "is-small" :: HH.ClassName
|
||||
is_spaced = HH.ClassName "is-spaced" :: HH.ClassName
|
||||
is_static = HH.ClassName "is-static" :: HH.ClassName
|
||||
is_success = HH.ClassName "is-success" :: HH.ClassName
|
||||
is_vertical = HH.ClassName "is-vertical" :: HH.ClassName
|
||||
is_warning = HH.ClassName "is-warning" :: HH.ClassName
|
||||
label = HH.ClassName "label" :: HH.ClassName
|
||||
level = HH.ClassName "level" :: HH.ClassName
|
||||
level_item = HH.ClassName "level-item" :: HH.ClassName
|
||||
level_left = HH.ClassName "level-left" :: HH.ClassName
|
||||
level_right = HH.ClassName "level-right" :: HH.ClassName
|
||||
medium = HH.ClassName "is-medium" :: HH.ClassName
|
||||
message_body = HH.ClassName "message-body" :: HH.ClassName
|
||||
message_header = HH.ClassName "message-header" :: HH.ClassName
|
||||
message = HH.ClassName "message" :: HH.ClassName
|
||||
modal_background = HH.ClassName "modal-background" :: HH.ClassName
|
||||
modal_card_body = HH.ClassName "modal-card-body" :: HH.ClassName
|
||||
modal_card_foot = HH.ClassName "modal-card-foot" :: HH.ClassName
|
||||
modal_card_head = HH.ClassName "modal-card-head" :: HH.ClassName
|
||||
modal_card = HH.ClassName "modal-card" :: HH.ClassName
|
||||
modal_card_title = HH.ClassName "modal-card-title" :: HH.ClassName
|
||||
modal = HH.ClassName "modal" :: HH.ClassName
|
||||
navbar_brand = HH.ClassName "navbar-brand" :: HH.ClassName
|
||||
navbar_burger = HH.ClassName "navbar-burger" :: HH.ClassName
|
||||
navbar_divider = HH.ClassName "navbar-divider" :: HH.ClassName
|
||||
navbar_dropdown = HH.ClassName "navbar-dropdown" :: HH.ClassName
|
||||
navbar_end = HH.ClassName "navbar-end" :: HH.ClassName
|
||||
navbar = HH.ClassName "navbar" :: HH.ClassName
|
||||
navbar_item = HH.ClassName "navbar-item" :: HH.ClassName
|
||||
navbar_link = HH.ClassName "navbar-link" :: HH.ClassName
|
||||
navbar_menu = HH.ClassName "navbar-menu" :: HH.ClassName
|
||||
navbar_start = HH.ClassName "navbar-start" :: HH.ClassName
|
||||
no_margin_bottom = HH.ClassName "mb-0" :: HH.ClassName
|
||||
no_padding_bottom = HH.ClassName "pb-0" :: HH.ClassName
|
||||
no_padding_left = HH.ClassName "pl-0" :: HH.ClassName
|
||||
no_padding_top = HH.ClassName "pt-0" :: HH.ClassName
|
||||
normal = HH.ClassName "is-normal" :: HH.ClassName
|
||||
notification = HH.ClassName "notification" :: HH.ClassName
|
||||
restore_padding_left = HH.ClassName "pl-4" :: HH.ClassName
|
||||
restore_padding_top = HH.ClassName "pt-4" :: HH.ClassName
|
||||
section = HH.ClassName "section" :: HH.ClassName
|
||||
select = HH.ClassName "select" :: HH.ClassName
|
||||
subtitle = HH.ClassName "subtitle" :: HH.ClassName
|
||||
table = HH.ClassName "table" :: HH.ClassName
|
||||
tabs = HH.ClassName "tabs" :: HH.ClassName
|
||||
tag = HH.ClassName "tag" :: HH.ClassName
|
||||
tags = HH.ClassName "tags" :: HH.ClassName
|
||||
textarea = HH.ClassName "textarea" :: HH.ClassName
|
||||
tile = HH.ClassName "tile" :: HH.ClassName
|
||||
title = HH.ClassName "title" :: HH.ClassName
|
||||
|
|
Loading…
Reference in New Issue