{-# LANGUAGE OverloadedStrings #-}
module Hledger.UI.Theme (
defaultTheme
,getTheme
,themes
,themeNames
)
where
import qualified Data.Map as M
import Data.Maybe
import Graphics.Vty
import Brick
defaultTheme :: AttrMap
defaultTheme :: AttrMap
defaultTheme = forall a. a -> Maybe a -> a
fromMaybe (forall a b. (a, b) -> b
snd forall a b. (a -> b) -> a -> b
$ forall a. [a] -> a
head [(String, AttrMap)]
themesList) forall a b. (a -> b) -> a -> b
$ String -> Maybe AttrMap
getTheme String
"white"
getTheme :: String -> Maybe AttrMap
getTheme :: String -> Maybe AttrMap
getTheme String
name = forall k a. Ord k => k -> Map k a -> Maybe a
M.lookup String
name Map String AttrMap
themes
themes :: M.Map String AttrMap
themes :: Map String AttrMap
themes = forall k a. Ord k => [(k, a)] -> Map k a
M.fromList [(String, AttrMap)]
themesList
themeNames :: [String]
themeNames :: [String]
themeNames = forall a b. (a -> b) -> [a] -> [b]
map forall a b. (a, b) -> a
fst [(String, AttrMap)]
themesList
& :: Attr -> Style -> Attr
(&) = Attr -> Style -> Attr
withStyle
active :: Attr
active = Color -> Attr
fg Color
brightWhite Attr -> Style -> Attr
& Style
bold
selectbg :: Color
selectbg = Color
yellow
select :: Attr
select = Color
black Color -> Color -> Attr
`on` Color
selectbg
themesList :: [(String, AttrMap)]
themesList :: [(String, AttrMap)]
themesList = [
(String
"default", Attr -> [(AttrName, Attr)] -> AttrMap
attrMap (Color
black Color -> Color -> Attr
`on` Color
white) [
(String -> AttrName
attrName String
"border" , Color
white Color -> Color -> Attr
`on` Color
black Attr -> Style -> Attr
& Style
dim)
,(String -> AttrName
attrName String
"border" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"bold" , Attr
currentAttr Attr -> Style -> Attr
& Style
bold)
,(String -> AttrName
attrName String
"border" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"depth" , Attr
active)
,(String -> AttrName
attrName String
"border" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"filename" , Attr
currentAttr)
,(String -> AttrName
attrName String
"border" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"key" , Attr
active)
,(String -> AttrName
attrName String
"border" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"minibuffer" , Color
white Color -> Color -> Attr
`on` Color
black Attr -> Style -> Attr
& Style
bold)
,(String -> AttrName
attrName String
"border" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"query" , Attr
active)
,(String -> AttrName
attrName String
"border" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"selected" , Attr
active)
,(String -> AttrName
attrName String
"error" , Color -> Attr
fg Color
red)
,(String -> AttrName
attrName String
"help" , Color
white Color -> Color -> Attr
`on` Color
black Attr -> Style -> Attr
& Style
dim)
,(String -> AttrName
attrName String
"help" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"heading" , Color -> Attr
fg Color
yellow)
,(String -> AttrName
attrName String
"help" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"key" , Attr
active)
,(String -> AttrName
attrName String
"list" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"amount" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"decrease" , Color -> Attr
fg Color
red)
,(String -> AttrName
attrName String
"list" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"amount" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"decrease" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"selected" , Color
red Color -> Color -> Attr
`on` Color
selectbg Attr -> Style -> Attr
& Style
bold)
,(String -> AttrName
attrName String
"list" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"balance" , Attr
currentAttr Attr -> Style -> Attr
& Style
bold)
,(String -> AttrName
attrName String
"list" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"balance" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"negative" , Color -> Attr
fg Color
red)
,(String -> AttrName
attrName String
"list" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"balance" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"positive" , Color -> Attr
fg Color
black)
,(String -> AttrName
attrName String
"list" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"balance" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"negative" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"selected" , Color
red Color -> Color -> Attr
`on` Color
selectbg Attr -> Style -> Attr
& Style
bold)
,(String -> AttrName
attrName String
"list" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"balance" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"positive" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"selected" , Attr
select Attr -> Style -> Attr
& Style
bold)
,(String -> AttrName
attrName String
"list" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"selected" , Attr
select)
])
,(String
"greenterm", Attr -> [(AttrName, Attr)] -> AttrMap
attrMap (Color
green Color -> Color -> Attr
`on` Color
black) [
(String -> AttrName
attrName String
"list" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"selected" , Color
black Color -> Color -> Attr
`on` Color
green)
])
,(String
"terminal", Attr -> [(AttrName, Attr)] -> AttrMap
attrMap Attr
defAttr [
(String -> AttrName
attrName String
"border" , Color
white Color -> Color -> Attr
`on` Color
black),
(String -> AttrName
attrName String
"list" , Attr
defAttr),
(String -> AttrName
attrName String
"list" forall a. Semigroup a => a -> a -> a
<> String -> AttrName
attrName String
"selected" , Attr
defAttr Attr -> Style -> Attr
& Style
reverseVideo)
])
]