1
0
Fork 0
mirror of https://code.sup39.dev/repos/Wqawg synced 2025-01-07 20:36:45 +09:00
vervis/src/Vervis/Style.hs
2016-02-23 08:45:03 +00:00

102 lines
2.5 KiB
Haskell

{- This file is part of Vervis.
-
- Written in 2016 by fr33domlover <fr33domlover@riseup.net>.
-
- ♡ Copying is an act of love. Please copy, reuse and share.
-
- The author(s) have dedicated all copyright and related and neighboring
- rights to this software to the public domain worldwide. This software is
- distributed without any warranty.
-
- You should have received a copy of the CC0 Public Domain Dedication along
- with this software. If not, see
- <http://creativecommons.org/publicdomain/zero/1.0/>.
-}
-- | Style component palette for use in page templates, in particular Cassius
-- files.
module Vervis.Style
( -- * Types
Color ()
, Hue ()
-- * Plain Colors
, black
, white
, plain
-- * Color Hues
, red
, green
, yellow
, blue
, magenta
, cyan
, gray
-- * Hue to Color
, dark
, light
)
where
import Prelude
import Text.Cassius (ToCss (..))
import qualified Text.Cassius as C (Color (Color))
data Lightness = Light | Dark
data Color
= Black
| Red Lightness
| Green Lightness
| Yellow Lightness
| Blue Lightness
| Magenta Lightness
| Cyan Lightness
| Gray Lightness
| White
| PlainText
instance ToCss Color where
toCss col =
let c r g b = toCss $ C.Color r g b
in case col of
Black -> c 0x00 0x00 0x00
Red Dark -> c 0xCC 0x00 0x00
Red Light -> c 0xEF 0x29 0x29
Green Dark -> c 0x4E 0x9A 0x06
Green Light -> c 0x8A 0xE2 0x34
Yellow Dark -> c 0xC4 0xA0 0x00
Yellow Light -> c 0xFC 0xE9 0x4F
Blue Dark -> c 0x34 0x65 0xA4
Blue Light -> c 0x73 0x9F 0xCF
Magenta Dark -> c 0x75 0x50 0x7B
Magenta Light -> c 0xAD 0x7F 0xA8
Cyan Dark -> c 0x06 0x98 0x9A
Cyan Light -> c 0x34 0xE2 0xE2
Gray Dark -> c 0x55 0x57 0x53
Gray Light -> c 0xD3 0xD7 0xCF
White -> c 0xEE 0xEE 0xEC
PlainText -> c 0xCC 0xCC 0xCC
newtype Hue = Hue (Lightness -> Color)
black, white, plain :: Color
black = Black
white = White
plain = PlainText
red, green, yellow, blue, magenta, cyan, gray :: Hue
red = Hue Red
green = Hue Green
yellow = Hue Yellow
blue = Hue Blue
magenta = Hue Magenta
cyan = Hue Cyan
gray = Hue Gray
dark :: Hue -> Color
dark (Hue h) = h Dark
light :: Hue -> Color
light (Hue h) = h Light