1 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
2 {-# LANGUAGE LambdaCase #-}
3 {-# LANGUAGE OverloadedStrings #-}
7 import Miso hiding (text_)
8 import Miso.CSS qualified as CSS
11 import Miso.Lynx.Element.View.Event (onTap)
14 -- | Application model
15 newtype Model = Model {_value :: Int}
16 deriving (Show, Eq, ToMisoString)
18 value :: Lens Model Int
19 value = lens _value $ \m v -> m{_value = v}
26 -- | Entry point for a miso application
35 counterComponent :: App Model Action
36 counterComponent = component (Model 0) updateModel viewModel
40 Transition Model Action
47 -- | Constructs a virtual DOM from a model
48 viewModel :: Model -> View Model Action
54 , CSS.alignItems "center"
55 , CSS.justifyContent "center"
61 [ CSS.backgroundColor CSS.yellow
66 , CSS.alignItems "center"
67 , CSS.justifyContent "center"
80 [ CSS.backgroundColor CSS.orange
84 , CSS.alignItems "center"
85 , CSS.justifyContent "center"
93 [ text $ ms (m ^. value)
99 [ CSS.backgroundColor CSS.pink
104 , CSS.alignItems "center"
105 , CSS.justifyContent "center"
110 [ CSS.fontSize "48px"