mirror of
https://code.sup39.dev/repos/Wqawg
synced 2025-01-07 20:36:45 +09:00
102 lines
2.5 KiB
Haskell
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
|