{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE FlexibleContexts #-} module Settlr.UI.Page ( page ) where import Text.Blaze.Html5 (Html, (!), text, textValue) import qualified Text.Blaze.Html5 as H import qualified Text.Blaze.Html5.Attributes as A import Data.Text (Text) import Settlr.Config (Config(..)) import Control.Monad.Reader (MonadReader, asks) page :: MonadReader Config m => Text -- ^ the page title -> Html -- ^ main content -> m Html -- ^ given the config, the rendered page (i.e., the entire html document) page title content = do cssPath <- asks cfgCssPath pure $ H.docTypeHtml $ do H.head $ do H.meta ! A.charset "utf-8" H.title (text (title <> " | Settlr")) H.link ! A.rel "stylesheet" ! A.href (textValue cssPath) H.body $ do H.main $ do content