{- This file is part of Vervis. - - Written in 2016 by fr33domlover . - - ♡ 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 - . -} -- | 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