1module Theme.Types where
5import CSS (ColorSpace(..), blue, brightness, darken, desaturate, isLight, lighten, mix, rotateHue)
6import CSS.Color (toHexString)
8import Data.Foldable (intercalate)
9import Data.Symbol (SProxy(..))
10import Record.Builder as RB
13 { backgroundColour ∷ Color
15 , interfaceColour ∷ Color
16 , highlightColour ∷ Color
17 , altHighlightColour ∷ Color
18 , textFontFamily ∷ Array String
19 , headingFontFamily ∷ Array String
29f ∷ ∀ fieldName. SProxy fieldName
32fromTheme ∷ Theme -> CSSTheme
33fromTheme theme = RB.build (
35 RB.modify (f ∷ _ "backgroundColour") toHexString
36 >>> RB.insert (f ∷ _ "backgroundColourLighter")
37 (theme.backgroundColour # lighter >>> toHexString)
38 >>> RB.modify (f ∷ _ "interfaceColour") toHexString
39 >>> RB.insert (f ∷ _ "interfaceColourLighter")
40 (theme.interfaceColour # lighter >>> toHexString)
41 >>> RB.insert (f ∷ _ "interfaceColourLightest")
42 (theme.interfaceColour # lighter >>> lighter >>> toHexString)
43 >>> RB.insert (f ∷ _ "interfaceColourDarker")
44 (theme.interfaceColour # darker >>> toHexString)
45 >>> RB.insert (f ∷ _ "interfaceColourDarkest")
46 (theme.interfaceColour # darker >>> darker >>> toHexString)
48 >>> RB.modify (f ∷ _ "textColour") toHexString
49 >>> RB.insert (f ∷ _ "textColourLighter")
50 (theme.textColour # lighter >>> toHexString)
51 >>> RB.insert (f ∷ _ "textColourLightest")
52 (theme.textColour # lighter >>> lighter >>> toHexString)
53 >>> RB.insert (f ∷ _ "textColourDarker")
54 (theme.textColour # darker >>> toHexString)
55 >>> RB.insert (f ∷ _ "textColourDarkest")
56 (theme.textColour # darker >>> darker >>> toHexString)
58 >>> RB.modify (f ∷ _ "highlightColour") toHexString
59 >>> RB.insert (f ∷ _ "highlightColourDark")
60 (theme.highlightColour # darken 0.2 # rotateHue (-10.0) # toHexString)
62 >>> RB.modify (f ∷ _ "altHighlightColour") toHexString
63 >>> RB.insert (f ∷ _ "altHighlightColourDark")
64 (theme.altHighlightColour # darken 0.2 # toHexString)
66 >>> RB.modify (f ∷ _ "yellow") toHexString
67 >>> RB.modify (f ∷ _ "green") toHexString
68 >>> RB.modify (f ∷ _ "pink") toHexString
69 >>> RB.modify (f ∷ _ "orange") toHexString
70 >>> RB.modify (f ∷ _ "turquoise") toHexString
71 >>> RB.modify (f ∷ _ "red") toHexString
72 >>> RB.modify (f ∷ _ "blue") toHexString
74 >>> RB.modify (f ∷ _ "textFontFamily") (intercalate ",")
75 >>> RB.modify (f ∷ _ "headingFontFamily") (intercalate ",")
76 >>> RB.insert (f ∷ _ "isLight") isLightTheme
79 isLightTheme = isLight theme.backgroundColour
80 yellower ∷ Color -> Color
82 if brightness col > 0.8
95 lighter ∷ Color -> Color
98 darker ∷ Color -> Color
102 { backgroundColour ∷ String
103 , backgroundColourLighter ∷ String
104 , interfaceColour ∷ String
105 , interfaceColourDarker ∷ String
106 , interfaceColourDarkest ∷ String
107 , interfaceColourLighter ∷ String
108 , interfaceColourLightest ∷ String
109 , textColourLightest ∷ String
110 , textColourLighter ∷ String
111 , textColour ∷ String
112 , textColourDarker ∷ String
113 , textColourDarkest ∷ String
114 , highlightColour ∷ String
115 , highlightColourDark ∷ String
116 , altHighlightColour ∷ String
117 , altHighlightColourDark ∷ String
119 , textFontFamily ∷ String
120 , headingFontFamily ∷ String
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list