{-# LANGUAGE OverloadedStrings , ExtendedDefaultRules , BangPatterns #-} module Web.Page.Lucid ( module X , template ) where import Web.Page.Types as X import Lucid import qualified Data.Text as T -- | Generic page template implemented in Lucid. template :: Monad m => WebPage (HtmlT m ()) T.Text -- ^ Page information -> HtmlT m () -- ^ Content to insert in @\@ -> HtmlT m () template page content = doctypehtml_ $ mconcat $ [ head_ [] $ mconcat $ [ initScripts page , title_ $ toHtmlRaw $ pageTitle page , metaVars page , favicon page , beforeStylesScripts page , styles page , afterStylesScripts page ] , body_ [] $ mconcat $ [ content , bodyScripts page ] ]