Major refactoring to make CSS classes not arrays anymore.
parent
24770b75d6
commit
a349c6463d
|
@ -291,7 +291,7 @@ render state
|
||||||
reconnection_bar =
|
reconnection_bar =
|
||||||
if (state.are_we_connected_to_authd && state.are_we_connected_to_dnsmanagerd)
|
if (state.are_we_connected_to_authd && state.are_we_connected_to_dnsmanagerd)
|
||||||
then HH.div_ []
|
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 :: 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
|
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 :: forall monad. MonadAff monad => H.ComponentHTML Action ChildSlots monad
|
||||||
render_legal_notice
|
render_legal_notice
|
||||||
= Bulma.section_small [ Explanations.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
|
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 :: forall monad. MonadAff monad => H.ComponentHTML Action ChildSlots monad
|
||||||
render_header =
|
render_header =
|
||||||
HH.section [ HP.classes (C.hero <> C.is_info <> C.is_small) ]
|
HH.section [ HP.classes [C.hero, C.is_info, C.is_small] ]
|
||||||
[ HH.div [ HP.classes C.hero_body ]
|
[ HH.div [ HP.classes [C.hero_body] ]
|
||||||
[ HH.div [ HP.classes $ C.container <> C.has_text_centered ]
|
[ HH.div [ HP.classes [C.container, C.has_text_centered] ]
|
||||||
[ HH.p [ HP.classes C.subtitle ]
|
[ HH.p [ HP.classes [C.subtitle] ]
|
||||||
[ HH.strong_ [ HH.u_ [ HH.text "net libre" ]]
|
[ HH.strong_ [ HH.u_ [ HH.text "net libre" ]]
|
||||||
, HH.text ": providing free domains since 2015!"
|
, HH.text ": providing free domains since 2015!"
|
||||||
]
|
]
|
||||||
|
|
|
@ -133,13 +133,13 @@ render { addUserForm, searchUserForm, matching_users, current_tab, orphan_domain
|
||||||
, case current_tab of
|
, case current_tab of
|
||||||
Home -> Bulma.h3 "Select an action"
|
Home -> Bulma.h3 "Select an action"
|
||||||
Search -> Bulma.columns_
|
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 ]
|
, Bulma.column_ [ Bulma.h3 "Result", show_found_users ]
|
||||||
]
|
]
|
||||||
Add -> Bulma.columns_
|
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_
|
OrphanDomains -> HH.div_
|
||||||
[ Bulma.btn_ (C.is_small) "Get orphan domains" ShowOrphanDomains
|
[ Bulma.btn_ [C.is_small] "Get orphan domains" ShowOrphanDomains
|
||||||
, show_orphan_domains
|
, 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 ]
|
show_found_users = Bulma.box [ HH.ul_ $ map user_card matching_users ]
|
||||||
user_card user = HH.li_ [ Bulma.btn_delete (RemoveUser user.uid)
|
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 ]
|
show_orphan_domains = Bulma.box [ HH.ul_ $ map domain_entry orphan_domains ]
|
||||||
domain_entry domain = HH.li_ [ Bulma.btn_delete (RemoveDomain domain)
|
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
|
up x = HandleAddUserInput <<< x
|
||||||
|
|
||||||
|
|
|
@ -277,7 +277,7 @@ render { accepted_domains, my_domains, newDomainForm, askDomainTransferForm, del
|
||||||
, HH.td_ [ HH.text $ fromMaybe "" domain.share_key ]
|
, HH.td_ [ HH.text $ fromMaybe "" domain.share_key ]
|
||||||
, if A.length domain.owners == 1
|
, 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) ]
|
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) ]
|
, 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.
|
-- | `App.HomeInterface` presents the website and its features.
|
||||||
module App.Page.Home where
|
module App.Page.Home where
|
||||||
|
|
||||||
import Prelude (Unit, pure, unit, ($), (<>))
|
import Prelude (Unit, pure, unit, ($))
|
||||||
|
|
||||||
-- import Data.Either (Either(..))
|
-- import Data.Either (Either(..))
|
||||||
-- import Data.Maybe (Maybe(..), maybe)
|
-- 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,
|
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.
|
afin de purger un certain nombre de vieux comptes de robots.
|
||||||
"""
|
"""
|
||||||
, HH.p [ HP.classes (C.margin_top 3) ]
|
, 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.outside_link [C.button, C.is_info] url_linuxfr "Cliquez ici pour en savoir plus." ]
|
||||||
]
|
]
|
||||||
, Bulma.section_small
|
, Bulma.section_small
|
||||||
[ Bulma.h1 "Welcome to netlib.re"
|
[ Bulma.h1 "Welcome to netlib.re"
|
||||||
|
|
|
@ -129,17 +129,17 @@ render { logged, active, admin, login } =
|
||||||
navbar_color = C.is_success
|
navbar_color = C.is_success
|
||||||
|
|
||||||
main_nav =
|
main_nav =
|
||||||
HH.nav [ HP.classes $ C.navbar <> navbar_color
|
HH.nav [ HP.classes [C.navbar, navbar_color]
|
||||||
, ARIA.label "main navigation"
|
, ARIA.label "main navigation"
|
||||||
, ARIA.role "navigation"
|
, ARIA.role "navigation"
|
||||||
]
|
]
|
||||||
|
|
||||||
logo = HH.strong [HP.classes $ C.navbar_item <> (C.is_size 4)] [HH.text "🍉"]
|
logo = HH.strong [HP.classes [C.navbar_item, (C.is_size 4)]] [HH.text "🍉"]
|
||||||
-- HH.a [HP.classes C.navbar_item, HP.href "/"]
|
-- HH.a [HP.classes [C.navbar_item], HP.href "/"]
|
||||||
-- [HH.img [HP.src "/logo.jpeg", HP.width 112, HP.height 28]]
|
-- [HH.img [HP.src "/logo.jpeg", HP.width 112, HP.height 28]]
|
||||||
|
|
||||||
burger_menu =
|
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.label "menu"
|
||||||
, ARIA.expanded "false"
|
, ARIA.expanded "false"
|
||||||
, Bulma.data_target "navbar-netlibre"
|
, Bulma.data_target "navbar-netlibre"
|
||||||
|
@ -149,14 +149,14 @@ render { logged, active, admin, login } =
|
||||||
, HH.span [ARIA.hidden "true"] []
|
, 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
|
nav_menu = HH.div
|
||||||
[ HP.id "navbar-netlibre"
|
[ 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_start = HH.div [HP.classes [C.navbar_start]]
|
||||||
navbar_end = HH.div [HP.classes C.navbar_end]
|
navbar_end = HH.div [HP.classes [C.navbar_end]]
|
||||||
|
|
||||||
link_home = nav_link "Home" (Navigate Home)
|
link_home = nav_link "Home" (Navigate Home)
|
||||||
link_domains = nav_link "Domains" (Navigate DomainList)
|
link_domains = nav_link "Domains" (Navigate DomainList)
|
||||||
|
@ -168,38 +168,38 @@ render { logged, active, admin, login } =
|
||||||
render_login Nothing = []
|
render_login Nothing = []
|
||||||
render_login (Just l)= [nav_link ("logged as " <> l) (Navigate Setup)]
|
render_login (Just l)= [nav_link ("logged as " <> l) (Navigate Setup)]
|
||||||
link_disconnection =
|
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
|
dropdown title dropdown_elements
|
||||||
= HH.div [HP.classes $ C.navbar_item <> C.has_dropdown <> C.is_hoverable]
|
= 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 title, HH.div [HP.classes [C.navbar_dropdown]] dropdown_elements ]
|
||||||
dropdown_title str = HH.a [HP.classes C.navbar_link] [HH.text str]
|
dropdown_title str = HH.a [HP.classes [C.navbar_link]] [HH.text str]
|
||||||
dropdown_separator = HH.hr [HP.classes C.navbar_divider]
|
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_button classes str action = btn classes action (HH.text str)
|
||||||
|
|
||||||
nav_link_strong str action =
|
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)
|
, HE.onClick (\_ -> action)
|
||||||
] [ (HH.strong [] [ HH.text str ]) ]
|
] [ (HH.strong [] [ HH.text str ]) ]
|
||||||
|
|
||||||
nav_link str action = nav_link_ navbar_color 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_warn str action = nav_link_ [C.has_background_warning, C.has_text_dark] str action
|
||||||
|
|
||||||
nav_link_ classes 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)
|
, HE.onClick (\_ -> action)
|
||||||
] [ (HH.text str) ]
|
] [ (HH.text str) ]
|
||||||
|
|
||||||
dropdown_element classes link str = Bulma.outside_link (C.navbar_item <> classes) 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_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_secondary link str = dropdown_element [C.has_background_warning_light] link str
|
||||||
|
|
||||||
dropdown_section_primary t
|
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
|
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 =
|
code_dropdown =
|
||||||
dropdown "Source code"
|
dropdown "Source code"
|
||||||
[ dropdown_section_primary "Main parts of this service"
|
[ 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/libipc" "libIPC: communication library"
|
||||||
, dropdown_element_secondary "https://git.baguette.netlib.re/Baguette/dodb.cr" "DoDB: document-oriented database"
|
, 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 _ -> []
|
_, Right _ -> []
|
||||||
|
|
||||||
legal_mentions = [ Explanations.legal_notice
|
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
|
[ 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
|
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
|
render_emails (Tuple current pending) = HH.div [] $ render_current current <> render_pending pending
|
||||||
where
|
where
|
||||||
render_current (Just (Email.Email e)) = [ Bulma.p $ "Current email address: " ] <>
|
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_current Nothing = [ Bulma.p "You do not currently have a validated email address." ]
|
||||||
|
|
||||||
render_pending (Just (Email.Email e)) = [ Bulma.p $ "Pending 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_pending Nothing = []
|
||||||
|
|
||||||
render_delete_account = Bulma.alert_btn "Delete my account" DeleteAccountPopup
|
render_delete_account = Bulma.alert_btn "Delete my account" DeleteAccountPopup
|
||||||
|
|
|
@ -357,7 +357,7 @@ render state
|
||||||
NewRRModal _ -> render_current_rr_modal
|
NewRRModal _ -> render_current_rr_modal
|
||||||
UpdateRRModal -> render_current_rr_modal
|
UpdateRRModal -> render_current_rr_modal
|
||||||
NoModal -> HH.div_
|
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.h1 state._domain
|
||||||
] []
|
] []
|
||||||
, Bulma.hr
|
, Bulma.hr
|
||||||
|
@ -522,7 +522,7 @@ render state
|
||||||
-- Nothing -> Bulma.p "default value for the version (spf1)"
|
-- Nothing -> Bulma.p "default value for the version (spf1)"
|
||||||
-- Just v -> Bulma.box_input "vSPF" "Version" "spf1" (updateForm Field_SPF_v) v
|
-- Just v -> Bulma.box_input "vSPF" "Version" "spf1" (updateForm Field_SPF_v) v
|
||||||
, Bulma.hr
|
, 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."] ]
|
[ 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
|
, maybe (Bulma.p "You don't have any mechanism.") display_mechanisms state._currentRR.mechanisms
|
||||||
, Bulma.hr
|
, Bulma.hr
|
||||||
|
@ -535,7 +535,7 @@ render state
|
||||||
, Bulma.btn "Add a mechanism" SPF_Mechanism_Add
|
, Bulma.btn "Add a mechanism" SPF_Mechanism_Add
|
||||||
]
|
]
|
||||||
, Bulma.hr
|
, 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."] ]
|
[ 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
|
, maybe (Bulma.p "You don't have any modifier.") display_modifiers state._currentRR.modifiers
|
||||||
, Bulma.hr
|
, Bulma.hr
|
||||||
|
@ -626,12 +626,12 @@ render state
|
||||||
|
|
||||||
, Bulma.hr
|
, Bulma.hr
|
||||||
, Bulma.div_content [] [Bulma.explanation Explanations.dmarc_contact]
|
, 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.")
|
[ maybe (Bulma.p "There is no address to send aggregated reports to.")
|
||||||
(display_dmarc_mail_addresses DMARC_remove_rua)
|
(display_dmarc_mail_addresses DMARC_remove_rua)
|
||||||
state.dmarc.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.")
|
[ maybe (Bulma.p "There is no address to send detailed reports to.")
|
||||||
(display_dmarc_mail_addresses DMARC_remove_ruf)
|
(display_dmarc_mail_addresses DMARC_remove_ruf)
|
||||||
state.dmarc.ruf
|
state.dmarc.ruf
|
||||||
|
@ -641,8 +641,8 @@ render state
|
||||||
, render_dmarc_mail_errors
|
, render_dmarc_mail_errors
|
||||||
, Bulma.box_input "idDMARCmail" "Address to contact" "admin@example.com" DMARC_mail state.dmarc_mail
|
, 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.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.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.btn_ [C.has_background_success_light] "New address for specific report" DMARC_ruf_Add
|
||||||
] []
|
] []
|
||||||
|
|
||||||
, Bulma.hr
|
, Bulma.hr
|
||||||
|
@ -1041,23 +1041,23 @@ handleQuery = case _ of
|
||||||
add_RR state new_rr = state { _resources = (state._resources <> [ new_rr ]) }
|
add_RR state new_rr = state { _resources = (state._resources <> [ new_rr ]) }
|
||||||
|
|
||||||
-- Rendering
|
-- 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 :: 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 :: 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 :: 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 all Resource Records.
|
||||||
render_resources :: forall w. Array ResourceRecord -> HH.HTML w Action
|
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 [] = Bulma.box [Bulma.zone_rr_title "Resource records", Bulma.subtitle "No records for now"]
|
||||||
render_resources records
|
render_resources records
|
||||||
= HH.div_ $
|
= HH.div_ $
|
||||||
(rr_box bg_color_ro tag_soa Bulma.soa_table_header table_content all_soa_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_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_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_caa Bulma.caa_table_header table_content all_caa_rr)
|
||||||
|
@ -1065,7 +1065,7 @@ render_resources records
|
||||||
<> (rr_box [] tag_spf Bulma.spf_table_header table_content all_spf_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_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 [] 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_basic_ro Bulma.simple_table_header_ro table_content_w_seps all_basic_ro_rr)
|
||||||
where
|
where
|
||||||
all_basic_rr = A.filter (\rr -> A.elem rr.rrtype baseRecords && not rr.readonly) records
|
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
|
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)
|
-> Array (HH.HTML w Action)
|
||||||
rr_box colors title header dp rrs =
|
rr_box colors title header dp rrs =
|
||||||
if A.length rrs > 0
|
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 []
|
else []
|
||||||
--title_col_props = C.is 1
|
--title_col_props = C.is 1
|
||||||
|
|
||||||
|
@ -1111,7 +1111,7 @@ render_resources records
|
||||||
|
|
||||||
table_content records_ = HH.tbody_ $ map rows records_
|
table_content records_ = HH.tbody_ $ map rows records_
|
||||||
rows rr = if rr.readonly
|
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
|
else HH.tr_ $ render_row rr
|
||||||
|
|
||||||
render_row :: ResourceRecord -> Array (HH.HTML w Action)
|
render_row :: ResourceRecord -> Array (HH.HTML w Action)
|
||||||
|
@ -1223,8 +1223,8 @@ render_resources records
|
||||||
|
|
||||||
show_token_or_btn rr =
|
show_token_or_btn rr =
|
||||||
case rr.rrtype of
|
case rr.rrtype of
|
||||||
"A" -> 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)
|
"AAAA" -> Bulma.btn_ [C.is_small] "🏁 Ask for a token" (NewToken rr.rrid)
|
||||||
_ -> HH.text ""
|
_ -> HH.text ""
|
||||||
|
|
||||||
fancy_qualifier_display :: RR.Qualifier -> String
|
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.
|
In relaxed mode, they can be different, but in the same Organizational Domain.
|
||||||
"""
|
"""
|
||||||
, HH.p_ [ HH.text "From RFC7489:"
|
, 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
|
[ HH.text """For example, if a message passes an SPF check with an
|
||||||
RFC5321.MailFrom domain of "cbg.bounces.example.com", and the address
|
RFC5321.MailFrom domain of "cbg.bounces.example.com", and the address
|
||||||
portion of the RFC5322.From field contains "payments@example.com",
|
portion of the RFC5322.From field contains "payments@example.com",
|
||||||
|
|
|
@ -166,7 +166,7 @@ render { wsInfo }
|
||||||
]
|
]
|
||||||
reconnection_btn = HH.button [ HP.type_ HP.ButtonButton
|
reconnection_btn = HH.button [ HP.type_ HP.ButtonButton
|
||||||
, HE.onClick \_ -> ConnectWebSocket
|
, 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
|
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 :: forall w i. Array (HH.HTML w i) -> i -> HH.HTML w i
|
||||||
checkbox content_ action
|
checkbox content_ action
|
||||||
= HH.label
|
= 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">
|
-- <label class="checkbox">
|
||||||
-- <input type="checkbox" />
|
-- <input type="checkbox" />
|
||||||
-- I agree to the <a href="#">terms and conditions</a>
|
-- 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).
|
columns :: forall (w :: Type) (i :: Type).
|
||||||
Array HH.ClassName -> Array (HH.HTML w i) -> HH.HTML w i
|
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_ :: forall (w :: Type) (i :: Type). Array (HH.HTML w i) -> HH.HTML w i
|
||||||
columns_ = columns []
|
columns_ = columns []
|
||||||
|
|
||||||
column :: forall (w :: Type) (i :: Type).
|
column :: forall (w :: Type) (i :: Type).
|
||||||
Array HH.ClassName -> Array (HH.HTML w i) -> HH.HTML w i
|
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_ :: forall (w :: Type) (i :: Type). Array (HH.HTML w i) -> HH.HTML w i
|
||||||
column_ = column []
|
column_ = column []
|
||||||
|
|
||||||
h1 :: forall (w :: Type) (a :: Type). String -> HH.HTML w a
|
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 :: 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 :: 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 :: forall (w :: Type) (a :: Type). String -> HH.HTML w a
|
||||||
zone_rr_title title
|
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 ]
|
[ HH.text title ]
|
||||||
|
|
||||||
subtitle :: forall (w :: Type) (a :: Type). String -> HH.HTML w a
|
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 :: forall (w :: Type) (a :: Type). Array (HH.HTML w a) -> HH.HTML w a
|
||||||
hdiv = HH.div [ HP.classes [HH.ClassName "mt-5"] ]
|
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)) ]
|
-- = column [ HH.ClassName ("is-offset-" <> (show offset) <> " is-" <> (show size)) ]
|
||||||
|
|
||||||
input_classes :: Array HH.ClassName
|
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 :: 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_ :: 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 :: forall w i. HH.HTML w i
|
||||||
table_header_owned_domains
|
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 :: forall w i. HH.HTML w i
|
||||||
simple_table_header_ro
|
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 [ HP.style "width: 50px;" ] [ HH.text "Type" ]
|
||||||
, HH.th_ [ name_header ]
|
, HH.th_ [ name_header ]
|
||||||
, HH.th_ [ ttl_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 :: forall w i. HH.HTML w i
|
||||||
soa_table_header
|
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_ [ name_soa_header ]
|
||||||
, HH.th_ [ ttl_header ]
|
, HH.th_ [ ttl_header ]
|
||||||
, HH.th_ [ mname_soa_header ]
|
, HH.th_ [ mname_soa_header ]
|
||||||
|
@ -382,7 +382,7 @@ textarea_ classes placeholder value action
|
||||||
[ HE.onValueInput action
|
[ HE.onValueInput action
|
||||||
, HP.value value
|
, HP.value value
|
||||||
, HP.placeholder placeholder
|
, 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
|
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
|
btn_abbr_ btnclasses divclasses explanation_ title action
|
||||||
= HH.button
|
= HH.button
|
||||||
[ HE.onClick \_ -> action
|
[ 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 ] ] ]
|
] [ 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 :: forall w action. String -> String -> action -> HH.HTML w action
|
||||||
btn_abbr explanation_ title action = btn_abbr_ [] [] explanation_ title 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: 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 :: forall w i. Array HH.ClassName -> String -> HH.HTML w i
|
||||||
btn_ro classes title
|
btn_ro classes title
|
||||||
= HH.button
|
= HH.button
|
||||||
[ HP.classes $ C.button <> classes
|
[ HP.classes $ [C.button] <> classes
|
||||||
] [ HH.text title ]
|
] [ HH.text title ]
|
||||||
|
|
||||||
-- | Create a `level`, different components that should appear on the same horizontal line.
|
-- | 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.
|
-- | 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 :: 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 ]
|
level left right = HH.nav [ HP.classes [C.level] ]
|
||||||
[ HH.div [ HP.classes C.level_left ] $ itemize left
|
[ HH.div [ HP.classes [C.level_left] ] $ itemize left
|
||||||
, HH.div [ HP.classes C.level_right ] $ itemize right
|
, 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_ :: forall w action. Array HH.ClassName -> String -> action -> HH.HTML w action
|
||||||
btn_ classes title action
|
btn_ classes title action
|
||||||
= HH.button
|
= HH.button
|
||||||
[ HE.onClick \_ -> action
|
[ HE.onClick \_ -> action
|
||||||
, HP.classes $ C.button <> classes
|
, HP.classes $ [C.button] <> classes
|
||||||
] [ HH.text title ]
|
] [ HH.text title ]
|
||||||
|
|
||||||
btn :: forall w action. String -> action -> HH.HTML w action
|
btn :: forall w action. String -> action -> HH.HTML w action
|
||||||
btn title action = btn_ [] title action
|
btn title action = btn_ [] title action
|
||||||
|
|
||||||
alert_btn :: forall w action. String -> action -> HH.HTML w 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.
|
render_input :: forall w i.
|
||||||
Boolean -> String -> String -> (String -> i) -> String -> (HP.IProp DHI.HTMLinput i) -> HH.HTML 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.
|
-- | 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`).
|
-- | 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 :: 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`.
|
-- | Field label (id and title) for a Bulma `field`.
|
||||||
div_field_label :: forall w i. String -> String -> HH.HTML w i
|
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)]
|
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 ]]
|
[HH.label [ HP.classes [C.label], HP.for id ] [ HH.text title ]]
|
||||||
|
|
||||||
-- | Any `Halogen.HTML` data in Bulma `field-body > field > control` divs.
|
-- | 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 :: forall w i. HH.HTML w i -> HH.HTML w i
|
||||||
div_field_content content
|
div_field_content content
|
||||||
= HH.div [ HP.classes C.field_body ]
|
= 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] ] [ HH.div [HP.classes [C.control] ] [ content ] ] ]
|
||||||
|
|
||||||
-- | Basic field entry with a title and a field 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 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 :: forall w i. String -> String -> HH.HTML w i -> HH.HTML w i
|
||||||
error_field_entry id title entry
|
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_label id title
|
||||||
, div_field_content entry
|
, 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
|
= 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_ :: 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 :: forall w i. String -> String -> String -> i -> HH.HTML w i
|
||||||
btn_labeled id title button_text action
|
btn_labeled id title button_text action
|
||||||
= field_entry id title $ HH.button
|
= field_entry id title $ HH.button
|
||||||
[ HE.onClick \_ -> action
|
[ 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
|
, HP.id id
|
||||||
] [ HH.text button_text ]
|
] [ 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)
|
box_password = box_password_ (HP.enabled true)
|
||||||
|
|
||||||
section_small :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
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 :: 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.
|
new_domain_field :: forall w i.
|
||||||
(String -> i) -> String -> Array (HP.IProp DHI.HTMLselect i) -> Array String -> HH.HTML 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
|
new_domain_field inputaction text_ selectaction accepted_domains
|
||||||
= div_field_ C.has_addons
|
= div_field_ [C.has_addons]
|
||||||
[ HH.p
|
[ HH.p
|
||||||
[ HP.classes C.control ]
|
[ HP.classes [C.control] ]
|
||||||
[ HH.input $
|
[ HH.input $
|
||||||
[ HE.onValueInput inputaction
|
[ HE.onValueInput inputaction
|
||||||
, HP.placeholder "www"
|
, HP.placeholder "www"
|
||||||
, HP.value text_
|
, HP.value text_
|
||||||
, HP.type_ HP.InputText
|
, HP.type_ HP.InputText
|
||||||
, HP.classes (C.is_primary <> C.input)
|
, HP.classes [C.is_primary, C.input]
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
, HH.p
|
, HH.p
|
||||||
[ HP.classes C.control ]
|
[ HP.classes [C.control] ]
|
||||||
[ select selectaction $ map option accepted_domains ]
|
[ 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 ]
|
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 :: 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_ :: 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 :: forall w i. String -> HH.HTML w i
|
||||||
option value = HH.option_ [HH.text value]
|
option value = HH.option_ [HH.text value]
|
||||||
|
|
||||||
select :: forall w i. HH.Node DHI.HTMLselect w i
|
select :: forall w i. HH.Node DHI.HTMLselect w i
|
||||||
select action options
|
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]
|
[ HH.select action options]
|
||||||
|
|
||||||
hero :: forall w i. String -> String -> HH.HTML w i
|
hero :: forall w i. String -> String -> HH.HTML w i
|
||||||
hero _title _subtitle
|
hero _title _subtitle
|
||||||
= HH.section [ HP.classes (C.hero <> C.is_info <> C.is_small) ]
|
= HH.section [ HP.classes [C.hero, C.is_info, C.is_small] ]
|
||||||
[ HH.div [ HP.classes C.hero_body ]
|
[ HH.div [ HP.classes [C.hero_body] ]
|
||||||
[ HH.p [ HP.classes C.title ] [ HH.text _title ]
|
[ HH.p [ HP.classes [C.title] ] [ HH.text _title ]
|
||||||
, HH.p [ HP.classes C.subtitle ] [ HH.text _subtitle ]
|
, HH.p [ HP.classes [C.subtitle] ] [ HH.text _subtitle ]
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|
||||||
small_hero :: forall w i. String -> String -> HH.HTML w i
|
small_hero :: forall w i. String -> String -> HH.HTML w i
|
||||||
small_hero _title _subtitle =
|
small_hero _title _subtitle =
|
||||||
HH.section [ HP.classes (C.hero <> C.is_info <> C.is_small) ]
|
HH.section [ HP.classes [C.hero, C.is_info, C.is_small] ]
|
||||||
[ HH.div [ HP.classes C.hero_body ]
|
[ HH.div [ HP.classes [C.hero_body] ]
|
||||||
[ HH.div [ HP.classes $ C.container <> C.has_text_centered ]
|
[ HH.div [ HP.classes [C.container, C.has_text_centered] ]
|
||||||
[ HH.p [ HP.classes C.title ] [ HH.text _title ]
|
[ HH.p [ HP.classes [C.title] ] [ HH.text _title ]
|
||||||
, HH.p [ HP.classes C.subtitle ] [ HH.text _subtitle ]
|
, 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 :: forall w i. Array (HH.HTML w i) -> Array (HH.HTML w i) -> HH.HTML w i
|
||||||
hero_danger _title _subtitle
|
hero_danger _title _subtitle
|
||||||
= HH.section [ HP.classes (C.hero <> C.is_danger <> C.is_small) ]
|
= HH.section [ HP.classes [C.hero, C.is_danger, C.is_small] ]
|
||||||
[ HH.div [ HP.classes C.hero_body ]
|
[ HH.div [ HP.classes [C.hero_body] ]
|
||||||
[ HH.p [ HP.classes C.title ] _title
|
[ HH.p [ HP.classes [C.title] ] _title
|
||||||
, HH.p [ HP.classes C.subtitle ] _subtitle
|
, HH.p [ HP.classes [C.subtitle] ] _subtitle
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -633,29 +633,29 @@ header :: forall w i. String -> String -> HH.HTML w i
|
||||||
header = hero
|
header = hero
|
||||||
|
|
||||||
container :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
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 :: forall r i. String -> HP.IProp r i
|
||||||
data_target = HP.attr (AttrName "data-target")
|
data_target = HP.attr (AttrName "data-target")
|
||||||
|
|
||||||
modal_ :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
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 :: 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 :: 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 :: forall w i. String -> HH.HTML w i
|
||||||
modal_header title = HH.header [HP.classes C.modal_card_head]
|
modal_header title = HH.header [HP.classes [C.modal_card_head]]
|
||||||
[ HH.p [HP.classes C.modal_card_title] [HH.text title]
|
[ 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 :: 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 :: 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 :: forall w i. i -> HH.HTML w i
|
||||||
cancel_button action
|
cancel_button action
|
||||||
= HH.button [ HP.classes C.button
|
= HH.button [ HP.classes [C.button]
|
||||||
, HE.onClick \_ -> action
|
, HE.onClick \_ -> action
|
||||||
] [HH.text "Cancel"]
|
] [HH.text "Cancel"]
|
||||||
|
|
||||||
|
@ -666,28 +666,28 @@ hr :: forall w i. HH.HTML w i
|
||||||
hr = HH.hr_
|
hr = HH.hr_
|
||||||
|
|
||||||
tile :: forall w i. Array HH.ClassName -> Array (HH.HTML w i) -> HH.HTML w i
|
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_ :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
||||||
tile_ = tile []
|
tile_ = tile []
|
||||||
|
|
||||||
tile_danger :: forall w i. Array HH.ClassName -> Array (HH.HTML w i) -> HH.HTML w i
|
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 :: 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_ :: 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)]
|
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_header]] [head]
|
||||||
, HH.div [HP.classes C.message_body ] [body]
|
, 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 :: forall w i. HH.HTML w i -> HH.HTML w i -> HH.HTML w i
|
||||||
article head body = article_ [] head body
|
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 :: 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.
|
-- | 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.
|
input_with_side_text :: forall w i.
|
||||||
String -> String -> String -> (String -> i) -> String -> String -> HH.HTML w i
|
String -> String -> String -> (String -> i) -> String -> String -> HH.HTML w i
|
||||||
input_with_side_text id title placeholder action value sidetext
|
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, C.is_horizontal]]
|
||||||
[ HH.div [ HP.classes (C.field_label <> C.normal) ]
|
[ HH.div [ HP.classes [C.field_label, C.normal] ]
|
||||||
[HH.label [ HP.classes C.label, HP.for id ] [ HH.text title ]]
|
[HH.label [ HP.classes [C.label], HP.for id ] [ HH.text title ]]
|
||||||
, HH.div [ HP.classes C.field_body ]
|
, HH.div [ HP.classes [C.field_body] ]
|
||||||
[ HH.div [ HP.classes $ C.has_addons <> C.field ]
|
[ HH.div [ HP.classes [C.has_addons, C.field] ]
|
||||||
[ HH.p [HP.classes C.control]
|
[ HH.p [HP.classes [C.control]]
|
||||||
[ HH.input $
|
[ HH.input $
|
||||||
[ HE.onValueInput action
|
[ HE.onValueInput action
|
||||||
, HP.value value
|
, HP.value value
|
||||||
|
@ -722,8 +722,8 @@ input_with_side_text id title placeholder action value sidetext
|
||||||
, HP.id id
|
, HP.id id
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
, HH.p [HP.classes C.control]
|
, HH.p [HP.classes [C.control]]
|
||||||
[ HH.a [HP.classes $ C.button <> C.is_small <> C.is_static]
|
[ HH.a [HP.classes [C.button, C.is_small, C.is_static]]
|
||||||
[HH.text sidetext] ]
|
[HH.text sidetext] ]
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
|
@ -744,7 +744,7 @@ modal title body foot =
|
||||||
-- selection: create a "select" input.
|
-- selection: create a "select" input.
|
||||||
-- Get the changes with "onSelectedIndexChange" which provides an index.
|
-- Get the changes with "onSelectedIndexChange" which provides an index.
|
||||||
selection :: forall w i. (Int -> i) -> Array String -> String -> HH.HTML w i
|
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 ]
|
[ HH.select [ HE.onSelectedIndexChange action ]
|
||||||
$ map (\n -> HH.option [HP.value n, HP.selected (n == selected)] [HH.text n]) values
|
$ 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.
|
-- | 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.
|
-- | 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' :: 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 ]
|
[ HH.select [ HE.onSelectedIndexChange action ]
|
||||||
$ map (\n -> HH.option [HP.value (snd n), HP.selected ((snd n) == selected)] [HH.text (fst n)]) values
|
$ 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 :: 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 :: 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 :: 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 :: forall w i. Array (HH.HTML w i) -> HH.HTML w i
|
||||||
explanation content = HH.blockquote [HP.classes [HH.ClassName "justified"]] content
|
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 ]
|
simple_quote content = quote [ p content ]
|
||||||
|
|
||||||
tabs :: forall w i. Array HH.ClassName -> Array (HH.HTML w i) -> HH.HTML w i
|
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 :: 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 :: forall w i. Boolean -> String -> i -> HH.HTML w i
|
||||||
tab_entry active name action =
|
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] ]
|
[ HH.a [HE.onClick \_ -> action] [HH.text name] ]
|
||||||
|
|
||||||
delete_btn :: forall w i. i -> HH.HTML w i
|
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 :: forall w i. Array HH.ClassName -> String -> i -> HH.HTML w i
|
||||||
notification classes value deleteaction =
|
notification classes value deleteaction =
|
||||||
HH.div [HP.classes (C.notification <> classes)]
|
HH.div [HP.classes $ [C.notification] <> classes]
|
||||||
[ delete_btn deleteaction
|
[ delete_btn deleteaction
|
||||||
, HH.text value
|
, HH.text value
|
||||||
]
|
]
|
||||||
|
|
||||||
notification_primary :: forall w i. String -> i -> HH.HTML w i
|
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 :: 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 :: 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 :: 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' :: forall w i. Array HH.ClassName -> Array (HH.HTML w i) -> HH.HTML w i
|
||||||
notification_block' classes content =
|
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' :: forall w i. Array HH.ClassName -> String -> HH.HTML w i
|
||||||
notification' classes value =
|
notification' classes value =
|
||||||
HH.div [HP.classes (C.notification <> classes)]
|
HH.div [HP.classes ([C.notification] <> classes)]
|
||||||
[ HH.text value ]
|
[ HH.text value ]
|
||||||
|
|
||||||
notification_primary' :: forall w i. String -> HH.HTML w i
|
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' :: 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' :: 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' :: 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_ :: forall w i. String -> HH.HTML w i
|
||||||
btn_validation_ str = HH.button
|
btn_validation_ str = HH.button
|
||||||
-- [ HP.style "padding: 0.5rem 1.25rem;"
|
-- [ HP.style "padding: 0.5rem 1.25rem;"
|
||||||
[ HP.type_ HP.ButtonSubmit
|
[ HP.type_ HP.ButtonSubmit
|
||||||
, HP.classes $ C.button <> C.is_primary
|
, HP.classes [C.button, C.is_primary]
|
||||||
]
|
]
|
||||||
[ HH.text str ]
|
[ HH.text str ]
|
||||||
|
|
||||||
|
@ -858,7 +858,7 @@ btn_validation = btn_validation_ "Validate"
|
||||||
|
|
||||||
-- | Box with tags.
|
-- | 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.
|
box_with_tag :: forall w action.
|
||||||
Array HH.ClassName -- css classes (like the color)
|
Array HH.ClassName -- css classes (like the color)
|
||||||
|
@ -867,5 +867,5 @@ box_with_tag :: forall w action.
|
||||||
-> HH.HTML w action
|
-> HH.HTML w action
|
||||||
box_with_tag colors tag xs
|
box_with_tag colors tag xs
|
||||||
= box_
|
= box_
|
||||||
(C.no_padding_left <> C.no_padding_top <> colors)
|
([C.no_padding_left, C.no_padding_top] <> colors)
|
||||||
[tag, HH.div [HP.classes $ C.restore_padding_left <> C.restore_padding_top] xs]
|
[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
|
import Halogen.HTML as HH
|
||||||
|
|
||||||
margin_top :: Int -> Array HH.ClassName
|
margin_top :: Int -> HH.ClassName
|
||||||
margin_top size = [HH.ClassName $ "mt-" <> show size]
|
margin_top size = HH.ClassName $ "mt-" <> show size
|
||||||
|
|
||||||
margin_left :: Int -> Array HH.ClassName
|
margin_left :: Int -> HH.ClassName
|
||||||
margin_left size = [HH.ClassName $ "ml-" <> show size]
|
margin_left size = HH.ClassName $ "ml-" <> show size
|
||||||
|
|
||||||
margin_bottom :: Int -> Array HH.ClassName
|
margin_bottom :: Int -> HH.ClassName
|
||||||
margin_bottom size = [HH.ClassName $ "mb-" <> show size]
|
margin_bottom size = HH.ClassName $ "mb-" <> show size
|
||||||
|
|
||||||
is :: Int -> Array HH.ClassName
|
margin_right :: Int -> HH.ClassName
|
||||||
is size = [HH.ClassName $ "is-" <> show size]
|
margin_right size = HH.ClassName $ "mr-" <> show size
|
||||||
|
|
||||||
is_size :: Int -> Array HH.ClassName
|
is :: Int -> HH.ClassName
|
||||||
is_size size = [HH.ClassName $ "is-size-" <> show size]
|
is size = HH.ClassName $ "is-" <> show size
|
||||||
|
|
||||||
padding_left :: Int -> Array HH.ClassName
|
is_size :: Int -> HH.ClassName
|
||||||
padding_left size = [HH.ClassName $ "pl-" <> show size]
|
is_size size = HH.ClassName $ "is-size-" <> show size
|
||||||
|
|
||||||
box = [HH.ClassName "box"] :: Array HH.ClassName
|
padding_left :: Int -> HH.ClassName
|
||||||
breadcrumb = [HH.ClassName "breadcrumb"] :: Array HH.ClassName
|
padding_left size = HH.ClassName $ "pl-" <> show size
|
||||||
button = [HH.ClassName "button"] :: Array HH.ClassName
|
|
||||||
buttons = [HH.ClassName "buttons"] :: Array HH.ClassName
|
padding_right :: Int -> HH.ClassName
|
||||||
column = [HH.ClassName "column"] :: Array HH.ClassName
|
padding_right size = HH.ClassName $ "pr-" <> show size
|
||||||
columns = [HH.ClassName "columns"] :: Array HH.ClassName
|
|
||||||
container = [HH.ClassName "container"] :: Array HH.ClassName
|
padding_top :: Int -> HH.ClassName
|
||||||
content = [HH.ClassName "content"] :: Array HH.ClassName
|
padding_top size = HH.ClassName $ "pt-" <> show size
|
||||||
control = [HH.ClassName "control"] :: Array HH.ClassName
|
|
||||||
delete = [HH.ClassName "delete"] :: Array HH.ClassName
|
padding_bottom :: Int -> HH.ClassName
|
||||||
field_body = [HH.ClassName "field-body"] :: Array HH.ClassName
|
padding_bottom size = HH.ClassName $ "pb-" <> show size
|
||||||
field = [HH.ClassName "field"] :: Array HH.ClassName
|
|
||||||
field_label = [HH.ClassName "field-label"] :: Array HH.ClassName
|
box = HH.ClassName "box" :: HH.ClassName
|
||||||
has_addons = [HH.ClassName "has-addons"] :: Array HH.ClassName
|
breadcrumb = HH.ClassName "breadcrumb" :: HH.ClassName
|
||||||
has_background_danger_dark = [HH.ClassName "has-background-danger-dark"] :: Array HH.ClassName
|
button = HH.ClassName "button" :: HH.ClassName
|
||||||
has_background_danger = [HH.ClassName "has-background-danger"] :: Array HH.ClassName
|
buttons = HH.ClassName "buttons" :: HH.ClassName
|
||||||
has_background_danger_light = [HH.ClassName "has-background-danger-light"] :: Array HH.ClassName
|
column = HH.ClassName "column" :: HH.ClassName
|
||||||
has_background_dark = [HH.ClassName "has-background-dark"] :: Array HH.ClassName
|
columns = HH.ClassName "columns" :: HH.ClassName
|
||||||
has_background_info_dark = [HH.ClassName "has-background-info-dark"] :: Array HH.ClassName
|
container = HH.ClassName "container" :: HH.ClassName
|
||||||
has_background_info = [HH.ClassName "has-background-info"] :: Array HH.ClassName
|
content = HH.ClassName "content" :: HH.ClassName
|
||||||
has_background_info_light = [HH.ClassName "has-background-info-light"] :: Array HH.ClassName
|
control = HH.ClassName "control" :: HH.ClassName
|
||||||
has_background_link_dark = [HH.ClassName "has-background-link-dark"] :: Array HH.ClassName
|
delete = HH.ClassName "delete" :: HH.ClassName
|
||||||
has_background_link_light = [HH.ClassName "has-background-link-light"] :: Array HH.ClassName
|
field_body = HH.ClassName "field-body" :: HH.ClassName
|
||||||
has_background_primary_dark = [HH.ClassName "has-background-primary-dark"] :: Array HH.ClassName
|
field = HH.ClassName "field" :: HH.ClassName
|
||||||
has_background_primary_light = [HH.ClassName "has-background-primary-light"] :: Array HH.ClassName
|
field_label = HH.ClassName "field-label" :: HH.ClassName
|
||||||
has_background_success_dark = [HH.ClassName "has-background-success-dark"] :: Array HH.ClassName
|
has_addons = HH.ClassName "has-addons" :: HH.ClassName
|
||||||
has_background_success_light = [HH.ClassName "has-background-success-light"] :: Array HH.ClassName
|
has_background_danger_dark = HH.ClassName "has-background-danger-dark" :: HH.ClassName
|
||||||
has_background_warning_dark = [HH.ClassName "has-background-warning-dark"] :: Array HH.ClassName
|
has_background_danger = HH.ClassName "has-background-danger" :: HH.ClassName
|
||||||
has_background_warning = [HH.ClassName "has-background-warning"] :: Array HH.ClassName
|
has_background_danger_light = HH.ClassName "has-background-danger-light" :: HH.ClassName
|
||||||
has_background_warning_light = [HH.ClassName "has-background-warning-light"] :: Array HH.ClassName
|
has_background_dark = HH.ClassName "has-background-dark" :: HH.ClassName
|
||||||
has_dropdown = [HH.ClassName "has-dropdown"] :: Array HH.ClassName
|
has_background_info_dark = HH.ClassName "has-background-info-dark" :: HH.ClassName
|
||||||
has_succeeds_separator = [HH.ClassName "has-succeeds-separator"] :: Array HH.ClassName
|
has_background_info = HH.ClassName "has-background-info" :: HH.ClassName
|
||||||
has_text_centered = [HH.ClassName "has-text-centered"] :: Array HH.ClassName
|
has_background_info_light = HH.ClassName "has-background-info-light" :: HH.ClassName
|
||||||
has_text_dark = [HH.ClassName "has-text-dark"] :: Array HH.ClassName
|
has_background_link_dark = HH.ClassName "has-background-link-dark" :: HH.ClassName
|
||||||
has_text_light = [HH.ClassName "has-text-light"] :: Array HH.ClassName
|
has_background_link_light = HH.ClassName "has-background-link-light" :: HH.ClassName
|
||||||
help = [HH.ClassName "help"] :: Array HH.ClassName
|
has_background_primary_dark = HH.ClassName "has-background-primary-dark" :: HH.ClassName
|
||||||
hero_body = [HH.ClassName "hero-body"] :: Array HH.ClassName
|
has_background_primary_light = HH.ClassName "has-background-primary-light" :: HH.ClassName
|
||||||
hero = [HH.ClassName "hero"] :: Array HH.ClassName
|
has_background_success_dark = HH.ClassName "has-background-success-dark" :: HH.ClassName
|
||||||
input = [HH.ClassName "input"] :: Array HH.ClassName
|
has_background_success_light = HH.ClassName "has-background-success-light" :: HH.ClassName
|
||||||
is4 = [HH.ClassName "is-4"] :: Array HH.ClassName
|
has_background_warning_dark = HH.ClassName "has-background-warning-dark" :: HH.ClassName
|
||||||
is5 = [HH.ClassName "is-5"] :: Array HH.ClassName
|
has_background_warning = HH.ClassName "has-background-warning" :: HH.ClassName
|
||||||
is_active = [HH.ClassName "is-active"] :: Array HH.ClassName
|
has_background_warning_light = HH.ClassName "has-background-warning-light" :: HH.ClassName
|
||||||
is_ancestor = [HH.ClassName "is-ancestor"] :: Array HH.ClassName
|
has_dropdown = HH.ClassName "has-dropdown" :: HH.ClassName
|
||||||
is_boxed = [HH.ClassName "is-boxed"] :: Array HH.ClassName
|
has_succeeds_separator = HH.ClassName "has-succeeds-separator" :: HH.ClassName
|
||||||
is_centered = [HH.ClassName "is-centered"] :: Array HH.ClassName
|
has_text_centered = HH.ClassName "has-text-centered" :: HH.ClassName
|
||||||
is_child = [HH.ClassName "is-child"] :: Array HH.ClassName
|
has_text_dark = HH.ClassName "has-text-dark" :: HH.ClassName
|
||||||
is_danger = [HH.ClassName "is-danger"] :: Array HH.ClassName
|
has_text_light = HH.ClassName "has-text-light" :: HH.ClassName
|
||||||
is_dark = [HH.ClassName "is-dark"] :: Array HH.ClassName
|
help = HH.ClassName "help" :: HH.ClassName
|
||||||
is_horizontal = [HH.ClassName "is-horizontal"] :: Array HH.ClassName
|
hero_body = HH.ClassName "hero-body" :: HH.ClassName
|
||||||
is_hoverable = [HH.ClassName "is-hoverable"] :: Array HH.ClassName
|
hero = HH.ClassName "hero" :: HH.ClassName
|
||||||
is_info = [HH.ClassName "is-info"] :: Array HH.ClassName
|
input = HH.ClassName "input" :: HH.ClassName
|
||||||
is_italic = [HH.ClassName "is-italic"] :: Array HH.ClassName
|
is4 = HH.ClassName "is-4" :: HH.ClassName
|
||||||
is_large = [HH.ClassName "is-large"] :: Array HH.ClassName
|
is5 = HH.ClassName "is-5" :: HH.ClassName
|
||||||
is_light = [HH.ClassName "is-light"] :: Array HH.ClassName
|
is_active = HH.ClassName "is-active" :: HH.ClassName
|
||||||
is_medium = [HH.ClassName "is-medium"] :: Array HH.ClassName
|
is_ancestor = HH.ClassName "is-ancestor" :: HH.ClassName
|
||||||
is_normal = [HH.ClassName "is-normal"] :: Array HH.ClassName
|
is_boxed = HH.ClassName "is-boxed" :: HH.ClassName
|
||||||
is_parent = [HH.ClassName "is-parent"] :: Array HH.ClassName
|
is_centered = HH.ClassName "is-centered" :: HH.ClassName
|
||||||
is_primary = [HH.ClassName "is-primary"] :: Array HH.ClassName
|
is_child = HH.ClassName "is-child" :: HH.ClassName
|
||||||
is_selected = [HH.ClassName "is-selected"] :: Array HH.ClassName
|
is_danger = HH.ClassName "is-danger" :: HH.ClassName
|
||||||
is_small = [HH.ClassName "is-small"] :: Array HH.ClassName
|
is_dark = HH.ClassName "is-dark" :: HH.ClassName
|
||||||
is_spaced = [HH.ClassName "is-spaced"] :: Array HH.ClassName
|
is_horizontal = HH.ClassName "is-horizontal" :: HH.ClassName
|
||||||
is_static = [HH.ClassName "is-static"] :: Array HH.ClassName
|
is_hoverable = HH.ClassName "is-hoverable" :: HH.ClassName
|
||||||
is_success = [HH.ClassName "is-success"] :: Array HH.ClassName
|
is_info = HH.ClassName "is-info" :: HH.ClassName
|
||||||
is_vertical = [HH.ClassName "is-vertical"] :: Array HH.ClassName
|
is_italic = HH.ClassName "is-italic" :: HH.ClassName
|
||||||
is_warning = [HH.ClassName "is-warning"] :: Array HH.ClassName
|
is_large = HH.ClassName "is-large" :: HH.ClassName
|
||||||
label = [HH.ClassName "label"] :: Array HH.ClassName
|
is_light = HH.ClassName "is-light" :: HH.ClassName
|
||||||
level = [HH.ClassName "level"] :: Array HH.ClassName
|
is_medium = HH.ClassName "is-medium" :: HH.ClassName
|
||||||
level_item = [HH.ClassName "level-item"] :: Array HH.ClassName
|
is_normal = HH.ClassName "is-normal" :: HH.ClassName
|
||||||
level_left = [HH.ClassName "level-left"] :: Array HH.ClassName
|
is_parent = HH.ClassName "is-parent" :: HH.ClassName
|
||||||
level_right = [HH.ClassName "level-right"] :: Array HH.ClassName
|
is_primary = HH.ClassName "is-primary" :: HH.ClassName
|
||||||
medium = [HH.ClassName "is-medium"] :: Array HH.ClassName
|
is_selected = HH.ClassName "is-selected" :: HH.ClassName
|
||||||
message_body = [HH.ClassName "message-body"] :: Array HH.ClassName
|
is_small = HH.ClassName "is-small" :: HH.ClassName
|
||||||
message_header = [HH.ClassName "message-header"] :: Array HH.ClassName
|
is_spaced = HH.ClassName "is-spaced" :: HH.ClassName
|
||||||
message = [HH.ClassName "message"] :: Array HH.ClassName
|
is_static = HH.ClassName "is-static" :: HH.ClassName
|
||||||
modal_background = [HH.ClassName "modal-background"] :: Array HH.ClassName
|
is_success = HH.ClassName "is-success" :: HH.ClassName
|
||||||
modal_card_body = [HH.ClassName "modal-card-body"] :: Array HH.ClassName
|
is_vertical = HH.ClassName "is-vertical" :: HH.ClassName
|
||||||
modal_card_foot = [HH.ClassName "modal-card-foot"] :: Array HH.ClassName
|
is_warning = HH.ClassName "is-warning" :: HH.ClassName
|
||||||
modal_card_head = [HH.ClassName "modal-card-head"] :: Array HH.ClassName
|
label = HH.ClassName "label" :: HH.ClassName
|
||||||
modal_card = [HH.ClassName "modal-card"] :: Array HH.ClassName
|
level = HH.ClassName "level" :: HH.ClassName
|
||||||
modal_card_title = [HH.ClassName "modal-card-title"] :: Array HH.ClassName
|
level_item = HH.ClassName "level-item" :: HH.ClassName
|
||||||
modal = [HH.ClassName "modal"] :: Array HH.ClassName
|
level_left = HH.ClassName "level-left" :: HH.ClassName
|
||||||
navbar_brand = [HH.ClassName "navbar-brand"] :: Array HH.ClassName
|
level_right = HH.ClassName "level-right" :: HH.ClassName
|
||||||
navbar_burger = [HH.ClassName "navbar-burger"] :: Array HH.ClassName
|
medium = HH.ClassName "is-medium" :: HH.ClassName
|
||||||
navbar_divider = [HH.ClassName "navbar-divider"] :: Array HH.ClassName
|
message_body = HH.ClassName "message-body" :: HH.ClassName
|
||||||
navbar_dropdown = [HH.ClassName "navbar-dropdown"] :: Array HH.ClassName
|
message_header = HH.ClassName "message-header" :: HH.ClassName
|
||||||
navbar_end = [HH.ClassName "navbar-end"] :: Array HH.ClassName
|
message = HH.ClassName "message" :: HH.ClassName
|
||||||
navbar = [HH.ClassName "navbar"] :: Array HH.ClassName
|
modal_background = HH.ClassName "modal-background" :: HH.ClassName
|
||||||
navbar_item = [HH.ClassName "navbar-item"] :: Array HH.ClassName
|
modal_card_body = HH.ClassName "modal-card-body" :: HH.ClassName
|
||||||
navbar_link = [HH.ClassName "navbar-link"] :: Array HH.ClassName
|
modal_card_foot = HH.ClassName "modal-card-foot" :: HH.ClassName
|
||||||
navbar_menu = [HH.ClassName "navbar-menu"] :: Array HH.ClassName
|
modal_card_head = HH.ClassName "modal-card-head" :: HH.ClassName
|
||||||
navbar_start = [HH.ClassName "navbar-start"] :: Array HH.ClassName
|
modal_card = HH.ClassName "modal-card" :: HH.ClassName
|
||||||
no_margin_bottom = [HH.ClassName "mb-0"] :: Array HH.ClassName
|
modal_card_title = HH.ClassName "modal-card-title" :: HH.ClassName
|
||||||
no_padding_bottom = [HH.ClassName "pb-0"] :: Array HH.ClassName
|
modal = HH.ClassName "modal" :: HH.ClassName
|
||||||
no_padding_left = [HH.ClassName "pl-0"] :: Array HH.ClassName
|
navbar_brand = HH.ClassName "navbar-brand" :: HH.ClassName
|
||||||
no_padding_top = [HH.ClassName "pt-0"] :: Array HH.ClassName
|
navbar_burger = HH.ClassName "navbar-burger" :: HH.ClassName
|
||||||
normal = [HH.ClassName "is-normal"] :: Array HH.ClassName
|
navbar_divider = HH.ClassName "navbar-divider" :: HH.ClassName
|
||||||
notification = [HH.ClassName "notification"] :: Array HH.ClassName
|
navbar_dropdown = HH.ClassName "navbar-dropdown" :: HH.ClassName
|
||||||
restore_padding_left = [HH.ClassName "pl-4"] :: Array HH.ClassName
|
navbar_end = HH.ClassName "navbar-end" :: HH.ClassName
|
||||||
restore_padding_top = [HH.ClassName "pt-4"] :: Array HH.ClassName
|
navbar = HH.ClassName "navbar" :: HH.ClassName
|
||||||
section = [HH.ClassName "section"] :: Array HH.ClassName
|
navbar_item = HH.ClassName "navbar-item" :: HH.ClassName
|
||||||
select = [HH.ClassName "select"] :: Array HH.ClassName
|
navbar_link = HH.ClassName "navbar-link" :: HH.ClassName
|
||||||
subtitle = [HH.ClassName "subtitle"] :: Array HH.ClassName
|
navbar_menu = HH.ClassName "navbar-menu" :: HH.ClassName
|
||||||
table = [HH.ClassName "table"] :: Array HH.ClassName
|
navbar_start = HH.ClassName "navbar-start" :: HH.ClassName
|
||||||
tabs = [HH.ClassName "tabs"] :: Array HH.ClassName
|
no_margin_bottom = HH.ClassName "mb-0" :: HH.ClassName
|
||||||
tag = [HH.ClassName "tag"] :: Array HH.ClassName
|
no_padding_bottom = HH.ClassName "pb-0" :: HH.ClassName
|
||||||
tags = [HH.ClassName "tags"] :: Array HH.ClassName
|
no_padding_left = HH.ClassName "pl-0" :: HH.ClassName
|
||||||
textarea = [HH.ClassName "textarea"] :: Array HH.ClassName
|
no_padding_top = HH.ClassName "pt-0" :: HH.ClassName
|
||||||
tile = [HH.ClassName "tile"] :: Array HH.ClassName
|
normal = HH.ClassName "is-normal" :: HH.ClassName
|
||||||
title = [HH.ClassName "title"] :: Array 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