{-# LANGUAGE OverloadedStrings #-} module View.Header ( renderHeader ) where import Control.Monad (forM_) import Data.String (fromString) import Text.Blaze.Html import Text.Blaze.Html5 import Text.Blaze.Html5.Attributes import qualified Text.Blaze.Html5 as H import Model.Header import Model.Translation.Language import Model.Translation.Message renderHeader :: Language -> Maybe Header -> Html renderHeader language mbCurrentHeader = H.div ! class_ "header" $ ul $ forM_ allHeaders (headerItem language mbCurrentHeader) headerItem :: Language -> Maybe Header -> Header -> Html headerItem language mbCurrentHeader pageHeader = li $ a ! class_ (fromString $ (headerClass pageHeader) ++ " " ++ (if mbCurrentHeader == Just pageHeader then "currentHeader" else "")) ! href (fromString . headerLink $ pageHeader) $ do i ! class_ (fromString $ "fa fa-lg " ++ (headerIcon pageHeader)) $ "" H.span ! class_ "text" $ fromString (getMessage (headerKey pageHeader) language) headerClass :: Header -> String headerClass Resume = "resume" headerClass Projects = "projects" headerIcon :: Header -> String headerIcon Resume = "fa-user" headerIcon Projects = "fa-flask"