summaryrefslogtreecommitdiff
path: root/src/Settlr/UI
diff options
context:
space:
mode:
authorHannes Schulze <contact@haschu.me>2026-10-03 23:23:51 +0200
committerHannes Schulze <contact@haschu.me>2026-10-03 23:23:51 +0200
commit41dc555f3a4d53a8773a03ac24bed9aea8143bfa (patch)
tree743a584897754dd55a3908e572f5f841282e3afa /src/Settlr/UI
parentb945c36d932efdaac36db284e82637bdf0193263 (diff)
restructure common page layout
Diffstat (limited to 'src/Settlr/UI')
-rw-r--r--src/Settlr/UI/Page.hs29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/Settlr/UI/Page.hs b/src/Settlr/UI/Page.hs
new file mode 100644
index 0000000..a3cd497
--- /dev/null
+++ b/src/Settlr/UI/Page.hs
@@ -0,0 +1,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