packages feed

Shpadoinkle-examples-0.0.0.3: Counter.hs

{-# LANGUAGE OverloadedStrings #-}


module Main where


import           Data.Text                   (pack)
import           Prelude                     hiding (span)

import           Shpadoinkle                 (Html, JSM, text)
import           Shpadoinkle.Backend.ParDiff (runParDiff)
import           Shpadoinkle.Html            (br'_, button, div_, h2_, id',
                                              onClick, span)
import           Shpadoinkle.Html.Utils
import           Shpadoinkle.Run             (runJSorWarp, simple)


view :: Int -> Html m Int
view count = div_
  [ h2_ [ "Counter Example" ]
  , "The current count is: "
  , span [ id' "out" ] [ text . pack $ show count ]
  , br'_, br'_
  , button [ onClick $ subtract 1 ] [ "Decrement" ]
  , button [ onClick (+ 1)        ] [ "Increment" ]
  ]


app :: JSM ()
app = simple runParDiff 0 view getBody


main :: IO ()
main = runJSorWarp 8080 app