blob: a3cd4976a6830e314462c1b8f7937bca84b3ca97 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
{-# 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
|