wikimusic-ssr-0.6.0.0: src/WikiMusic/SSR/View/Components/Meta.hs
{-# LANGUAGE OverloadedLabels #-}
{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module WikiMusic.SSR.View.Components.Meta
( mkSharedHead,
)
where
import Data.Text qualified as T
import Optics
import Relude
import Text.Blaze.Html
import Text.Blaze.Html5 as H
import Text.Blaze.Html5.Attributes as A
import WikiMusic.SSR.Model.Api
import WikiMusic.SSR.Model.Env
mkSharedHead :: (MonadIO m) => Env -> UiMode -> Palette -> Text -> m Html
mkSharedHead env mode palette pageTitle = do
let style' = fromString . T.unpack $ (env ^. #mainCss)
let modeStyle =
if (mode ^. #value) == "dark"
then env ^. #darkCss
else env ^. #lightCss
let paletteStyle = case palette ^. #value of
"green" -> env ^. #palettes % #green
_ -> env ^. #palettes % #mauve
pure $ H.head $ do
H.meta ! charset "utf-8"
H.meta ! lang "en"
H.title . fromString . T.unpack $ pageTitle
meta ! name "viewport" ! content "width=device-width, initial-scale=1"
H.style $ fromString . T.unpack $ modeStyle
H.style $ fromString . T.unpack $ paletteStyle
H.style style'