Web.Hyperbole.Page
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
View
page :: Page es [Message, Count] page = do pure $ do hyper Message $ messageView "Hello" hyper Count $ countView 0
hyper
runPage :: (Hyperbole :> es, RunHandlers views es) => Page es views -> Eff es Response Source #
Run a Page and return a Response
Response
main :: IO () main = do run 3000 $ do liveApp quickStartDocument (runPage page) page :: Page es '[] page = do pure $ el "Hello World"
run
liveApp
quickStartDocument
runPage
el
subPage :: Hyperbole :> es => Eff (Reader (Root inner) : es) a -> Eff es a Source #