1 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
2 -----------------------------------------------------------------------------
3 {-# LANGUAGE LambdaCase #-}
4 {-# LANGUAGE OverloadedStrings #-}
6 -----------------------------------------------------------------------------
10 -----------------------------------------------------------------------------
11 import Miso hiding (text_)
13 import Miso.Lynx.Element.View.Event (onTap)
15 -----------------------------------------------------------------------------
17 import qualified Miso.CSS as CSS
21 -----------------------------------------------------------------------------
23 -- | Application model
24 newtype Model = Model {_value :: Int}
25 deriving (Show, Eq, ToMisoString)
27 -----------------------------------------------------------------------------
28 value :: Lens Model Int
29 value = lens _value $ \m v -> m{_value = v}
31 -----------------------------------------------------------------------------
37 -----------------------------------------------------------------------------
39 -- | Entry point for a miso application
48 -----------------------------------------------------------------------------
49 counterComponent :: App Model Action
50 counterComponent = component (Model 0) updateModel viewModel
52 -----------------------------------------------------------------------------
55 Transition Model Action
62 -----------------------------------------------------------------------------
64 -- | Constructs a virtual DOM from a model
65 viewModel :: Model -> View Model Action
71 , CSS.alignItems "center"
72 , CSS.justifyContent "center"
78 [ CSS.backgroundColor CSS.yellow
83 , CSS.alignItems "center"
84 , CSS.justifyContent "center"
97 [ CSS.backgroundColor CSS.orange
101 , CSS.alignItems "center"
102 , CSS.justifyContent "center"
107 [ CSS.fontSize "48px"
110 [ text $ ms (m ^. value)
116 [ CSS.backgroundColor CSS.pink
121 , CSS.alignItems "center"
122 , CSS.justifyContent "center"
127 [ CSS.fontSize "48px"
135 -----------------------------------------------------------------------------