website/frontend/src/Config/Theme.elm

158 lines
2.9 KiB
Elm
Raw Normal View History

2024-11-10 22:55:49 -06:00
module Config.Theme exposing (..)
import Element exposing (..)
import Element.Background as B
import Element.Font as F
2024-11-11 18:57:51 -06:00
import Html.Attributes as H exposing (style)
2024-11-10 22:55:49 -06:00
2024-11-11 00:43:03 -06:00
topLevelContainer : Element msg -> Element msg
topLevelContainer =
el
[ width fill
, height fill
, B.color colourTheme.backgroundColour
]
2024-11-11 18:57:51 -06:00
pageList : List (Attribute msg)
pageList =
[ spacing 40
, centerX
, centerY
, moveDown 60
, alignTop
]
type alias Theme =
{ nonHighlightedText : Color
, nonHighlightedDarkText : Color
, highlightText : Color
, highlightTextHover : Color
, backgroundColour : Color
, debugColour : Color
}
2024-11-10 22:55:49 -06:00
colourTheme : Theme
colourTheme =
{ nonHighlightedText = rgb255 212 212 212
, nonHighlightedDarkText = rgb255 126 126 126
, highlightText = rgb255 204 102 0
2024-11-11 18:57:51 -06:00
, highlightTextHover = rgb255 120 60 0
2024-11-10 22:55:49 -06:00
, backgroundColour = rgb255 40 40 40
, debugColour = rgb255 227 28 121
}
2024-11-11 00:43:03 -06:00
2024-11-11 18:57:51 -06:00
transitionStyle : Attribute msg
transitionStyle =
htmlAttribute <| style "transition" "all .2s"
transitionHighlightedLinkHover : Element msg -> Element msg
transitionHighlightedLinkHover =
el
[ mouseOver [ F.color colourTheme.highlightTextHover ]
, transitionStyle
]
transitionNonHighlightedLinkHover : Element msg -> Element msg
transitionNonHighlightedLinkHover =
el
[ mouseOver [ F.color colourTheme.highlightText ]
, transitionStyle
]
2024-11-11 00:43:03 -06:00
spartanFont : F.Font
spartanFont =
F.typeface "League Spartan"
imageSpacer : Attribute msg
imageSpacer =
spacing 20
2024-11-11 18:57:51 -06:00
navBarLinkFormat : List (Attr () msg)
navBarLinkFormat =
[ F.size 15
-- , F.bold
]
2024-11-11 00:43:03 -06:00
titleFormat : List (Attr () msg)
titleFormat =
[ F.size 23
, F.bold
]
2024-11-11 18:57:51 -06:00
nonHighlightedTitleFormat : List (Attr () msg)
nonHighlightedTitleFormat =
[ F.color colourTheme.nonHighlightedText
]
++ titleFormat
highlightedTitleFormat : List (Attr () msg)
highlightedTitleFormat =
[ F.color colourTheme.highlightText
]
++ titleFormat
2024-11-11 00:43:03 -06:00
paragraphFontSize : Attr decorative msg
paragraphFontSize =
F.size 17
paragraphLinkFormat : { url : String, label : Element msg } -> Element msg
paragraphLinkFormat =
newTabLink
[ paragraphFontSize
, F.color colourTheme.highlightText
]
2024-11-11 18:57:51 -06:00
paragraphText : List (Attr () msg)
paragraphText =
[ F.color colourTheme.nonHighlightedText
, spacing 8
2024-11-11 00:43:03 -06:00
, paragraphFontSize
]
2024-11-11 18:57:51 -06:00
paragraphFormat : List (Attr () msg)
paragraphFormat =
[]
++ paragraphText
paragraphBoldFormat : List (Attr () msg)
paragraphBoldFormat =
[ F.bold ]
++ paragraphText
paragraphWidth : Attribute msg
paragraphWidth =
width <| px 700
paragraphAlignLeft : List (Attr () msg)
paragraphAlignLeft =
[ alignLeft, paragraphWidth ]
++ paragraphText
2024-11-11 00:43:03 -06:00
paragraphColumnFormat : List (Attribute msg)
paragraphColumnFormat =
[ spacing 20
2024-11-11 18:57:51 -06:00
, paragraphWidth
2024-11-11 00:43:03 -06:00
]