diff options
| author | Chris Wells <chris@mathematicaster.org> | 2024-11-12 10:42:21 -0600 |
|---|---|---|
| committer | Chris Wells <chris@mathematicaster.org> | 2024-11-12 10:42:21 -0600 |
| commit | d7be39cd8a16e22f6f8784fdae06c223df5864c1 (patch) | |
| tree | cf0ef2f425d250707a4c6536618cdc882b136cb3 /src/WWW/Colors.hs | |
| download | assets-d7be39cd8a16e22f6f8784fdae06c223df5864c1.tar assets-d7be39cd8a16e22f6f8784fdae06c223df5864c1.tar.gz assets-d7be39cd8a16e22f6f8784fdae06c223df5864c1.tar.bz2 assets-d7be39cd8a16e22f6f8784fdae06c223df5864c1.tar.lz assets-d7be39cd8a16e22f6f8784fdae06c223df5864c1.tar.xz assets-d7be39cd8a16e22f6f8784fdae06c223df5864c1.tar.zst assets-d7be39cd8a16e22f6f8784fdae06c223df5864c1.zip | |
Writing some basic scaffolding for colors
Diffstat (limited to 'src/WWW/Colors.hs')
| -rw-r--r-- | src/WWW/Colors.hs | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/src/WWW/Colors.hs b/src/WWW/Colors.hs new file mode 100644 index 0000000..b52aea7 --- /dev/null +++ b/src/WWW/Colors.hs @@ -0,0 +1,140 @@ +{-# LANGUAGE QuasiQuotes #-} +module WWW.Colors + ( Gruvbox (..) + , gruvboxVar + , gruvboxDark + , gruvboxDarkH + , gruvboxDarkS + , gruvboxLight + , gruvboxLightH + , gruvboxLightS + ) where + +import Data.Colour +import Data.String +import Diagrams.Attributes + +import WWW.Colors.Instances() +import WWW.Colors.QQ + + +data Gruvbox a = Gruvbox + { _bg, _red, _green, _yellow, _blue, _purple, _aqua, _gray, _gray', _red', _green', _yellow', _blue', _purple', _aqua', _fg, _bg0h, _bg0, _bg0s, _bg1, _bg2, _bg3, _bg4, _gray'', _orange, _fg4, _fg3, _fg2, _fg1, _fg0, _orange' :: !a + } deriving stock (Foldable, Functor, Eq, Show, Traversable) + +gruvboxVar :: IsString s => Gruvbox s +gruvboxVar = Gruvbox + { _bg = "gb_bg" + , _red = "gb_red" + , _green = "gb_green" + , _yellow = "gb_yellow" + , _blue = "gb_blue" + , _purple = "gb_purple" + , _aqua = "gb_aqua" + , _gray = "gb_gray" + , _gray' = "gb_gray'" + , _red' = "gb_red'" + , _green' = "gb_green'" + , _yellow' = "gb_yellow'" + , _blue' = "gb_blue'" + , _purple' = "gb_purple'" + , _aqua' = "gb_aqua'" + , _fg = "gb_fg" + , _bg0h = "gb_bg0h" + , _bg0 = "gb_bg0" + , _bg0s = "gb_bg0s" + , _bg1 = "gb_bg1" + , _bg2 = "gb_bg2" + , _bg3 = "gb_bg3" + , _bg4 = "gb_bg4" + , _gray'' = "gb_gray''" + , _orange = "gb_orange" + , _fg4 = "gb_fg4" + , _fg3 = "gb_fg3" + , _fg2 = "gb_fg2" + , _fg1 = "gb_fg1" + , _fg0 = "gb_fg0" + , _orange' = "gb_orange'" + } + +hard :: Gruvbox a -> Gruvbox a +hard gb = gb { _bg = _bg0h gb } + +soft :: Gruvbox a -> Gruvbox a +soft gb = gb { _bg = _bg0s gb } + +gruvboxDark :: Gruvbox SomeColor +gruvboxDark = SomeColor <$> Gruvbox + { _bg = [hex|#282828|] + , _red = [hex|#cc241d|] + , _green = [hex|#98971a|] + , _yellow = [hex|#d79921|] + , _blue = [hex|#458588|] + , _purple = [hex|b16286|] + , _aqua = [hex|689d6a|] + , _gray = [hex|a89984|] + , _gray' = [hex|928374|] + , _red' = [hex|fb4934|] + , _green' = [hex|b8bb26|] + , _yellow' = [hex|fabd2f|] + , _blue' = [hex|83a598|] + , _purple' = [hex|d3869b|] + , _aqua' = [hex|8ec07c|] + , _fg = [hex|ebdbb2|] + , _bg0h = [hex|1d2021|] + , _bg0 = [hex|282828|] + , _bg0s = [hex|32302f|] + , _bg1 = [hex|3c3836|] + , _bg2 = [hex|504945|] + , _bg3 = [hex|665c54|] + , _bg4 = [hex|7c6f64|] + , _gray'' = [hex|928374|] + , _orange = [hex|d65d0e|] + , _fg4 = [hex|a89984|] + , _fg3 = [hex|bdae93|] + , _fg2 = [hex|d5c4a1|] + , _fg1 = [hex|ebdbb2|] + , _fg0 = [hex|fbf1c7|] + , _orange' = [hex|fe8019|] + } + +gruvboxDarkH :: Gruvbox SomeColor +gruvboxDarkH = hard gruvboxDark + +gruvboxDarkS :: Gruvbox SomeColor +gruvboxDarkS = soft gruvboxDark + + +gruvboxLight :: Gruvbox SomeColor +gruvboxLight = + let gb = someToAlpha <$> gruvboxDark + in SomeColor <$> gb + { _bg = [hex|fbf1c7|] + , _gray = [hex|7c6f64|] + , _red' = [hex|9d0006|] + , _green' = [hex|79740e|] + , _yellow' = [hex|b57614|] + , _blue' = [hex|076678|] + , _purple' = [hex|8f3f71|] + , _aqua' = [hex|427b58|] + , _fg = [hex|3c3836|] + , _bg0h = [hex|f9f5d7|] + , _bg0 = [hex|fbf1c7|] + , _bg0s = [hex|f2e5bc|] + , _bg1 = [hex|ebdbb2|] + , _bg2 = [hex|d5c4a1|] + , _bg3 = [hex|bdae93|] + , _bg4 = [hex|a89984|] + , _fg4 = [hex|7c6f64|] + , _fg3 = [hex|665c54|] + , _fg2 = [hex|504945|] + , _fg1 = [hex|3c3836|] + , _fg0 = [hex|282828|] + , orange' = [hex|af3a03|] + } + +gruvboxLightH :: Gruvbox SomeColor +gruvboxLightH = hard gruvboxLight + +gruvboxLightS :: Gruvbox SomeColor +gruvboxLightS = soft gruvboxLight |
