hyperbole-0.5.0: Interactive HTML apps using type-safe serverside Haskell
Safe HaskellSafe-Inferred
LanguageGHC2021

Web.Hyperbole.Page

Synopsis

Documentation

type Page es (views :: [Type]) = Eff (Reader (Root views) : es) (View (Root views) ()) Source #

An application is divided into multiple Pages. Each page module should have a Page function, which returns a root View

page :: Page es [Message, Count]
page = do
  pure $ do
    hyper Message $ messageView "Hello"
    hyper Count $ countView 0

runPage :: (Hyperbole :> es, RunHandlers views es) => Page es views -> Eff es Response Source #

Run a Page and return a Response

main :: IO ()
main = do
  run 3000 $ do
    liveApp quickStartDocument (runPage page)

page :: Page es '[]
page = do
  pure $ el "Hello World"

subPage :: Hyperbole :> es => Eff (Reader (Root inner) : es) a -> Eff es a Source #