hyperbole
Safe HaskellNone
LanguageGHC2021

Web.Hyperbole.Page

Synopsis

Documentation

type Page (es :: [(Type -> Type) -> Type -> Type]) (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, Counter]
page = do
  pure $ do
    hyper Message1 $ messageView "Hello"
    hyper Message2 $ messageView "World"
    hyper Counter $ viewCount 0

runPage :: forall (es :: [Effect]) (views :: [Type]). (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 $ liveApp quickStartDocument (runPage page)

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

subPage :: forall (es :: [Effect]) (inner :: [Type]) a. Hyperbole :> es => Eff (Reader (Root inner) ': es) a -> Eff es a Source #