module NanoUI.Widgets.Button
( button
, button'
, buttonWith
, buttonWith'
)
where
import Data.Text (Text)
import Effectful (Eff, type (:>))
import NanoUI.Monad (Ui)
import NanoUI.Style (Layout, defaultLayout)
import NanoUI.Widgets.Combinators (buttonStyledEx)
import NanoUI.Widgets.Node (Response, respClicked)
{-# INLINE button #-}
button :: Ui :> es => Text -> Eff es Bool
button :: forall (es :: [Effect]). (Ui :> es) => Text -> Eff es Bool
button Text
txt = Response -> Bool
forall r. HasResponse r => r -> Bool
respClicked (Response -> Bool) -> Eff es Response -> Eff es Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Text -> Eff es Response
forall (es :: [Effect]). (Ui :> es) => Text -> Eff es Response
button' Text
txt
{-# INLINE button' #-}
button' :: Ui :> es => Text -> Eff es Response
button' :: forall (es :: [Effect]). (Ui :> es) => Text -> Eff es Response
button' = (Layout -> Layout) -> Text -> Eff es Response
forall (es :: [Effect]).
(Ui :> es) =>
(Layout -> Layout) -> Text -> Eff es Response
buttonWith' Layout -> Layout
forall a. a -> a
id
{-# INLINE buttonWith #-}
buttonWith :: Ui :> es => (Layout -> Layout) -> Text -> Eff es Bool
buttonWith :: forall (es :: [Effect]).
(Ui :> es) =>
(Layout -> Layout) -> Text -> Eff es Bool
buttonWith Layout -> Layout
f Text
txt = Response -> Bool
forall r. HasResponse r => r -> Bool
respClicked (Response -> Bool) -> Eff es Response -> Eff es Bool
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (Layout -> Layout) -> Text -> Eff es Response
forall (es :: [Effect]).
(Ui :> es) =>
(Layout -> Layout) -> Text -> Eff es Response
buttonWith' Layout -> Layout
f Text
txt
{-# INLINE buttonWith' #-}
buttonWith' :: Ui :> es => (Layout -> Layout) -> Text -> Eff es Response
buttonWith' :: forall (es :: [Effect]).
(Ui :> es) =>
(Layout -> Layout) -> Text -> Eff es Response
buttonWith' Layout -> Layout
f Text
txt = Bool -> Text -> Float -> Layout -> Int -> Eff es Response
forall (es :: [Effect]).
(Ui :> es) =>
Bool -> Text -> Float -> Layout -> Int -> Eff es Response
buttonStyledEx Bool
True Text
txt Float
0 (Layout -> Layout
f Layout
defaultLayout) Int
0