module Dashi.Style.Border where

import Dashi.Prelude
import Dashi.Style.Colour
import Dashi.Style.Tokens (Token (..), ValueToken (..))
import Dashi.Style.Uchu (Uchu (..))

data BorderColour
    = BorderColour
    | BorderFocusedColour
    | BorderDangerColour
    deriving stock (BorderColour -> BorderColour -> Bool
(BorderColour -> BorderColour -> Bool)
-> (BorderColour -> BorderColour -> Bool) -> Eq BorderColour
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: BorderColour -> BorderColour -> Bool
== :: BorderColour -> BorderColour -> Bool
$c/= :: BorderColour -> BorderColour -> Bool
/= :: BorderColour -> BorderColour -> Bool
Eq, BorderColour
BorderColour -> BorderColour -> Bounded BorderColour
forall a. a -> a -> Bounded a
$cminBound :: BorderColour
minBound :: BorderColour
$cmaxBound :: BorderColour
maxBound :: BorderColour
Bounded, Int -> BorderColour
BorderColour -> Int
BorderColour -> [BorderColour]
BorderColour -> BorderColour
BorderColour -> BorderColour -> [BorderColour]
BorderColour -> BorderColour -> BorderColour -> [BorderColour]
(BorderColour -> BorderColour)
-> (BorderColour -> BorderColour)
-> (Int -> BorderColour)
-> (BorderColour -> Int)
-> (BorderColour -> [BorderColour])
-> (BorderColour -> BorderColour -> [BorderColour])
-> (BorderColour -> BorderColour -> [BorderColour])
-> (BorderColour -> BorderColour -> BorderColour -> [BorderColour])
-> Enum BorderColour
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: BorderColour -> BorderColour
succ :: BorderColour -> BorderColour
$cpred :: BorderColour -> BorderColour
pred :: BorderColour -> BorderColour
$ctoEnum :: Int -> BorderColour
toEnum :: Int -> BorderColour
$cfromEnum :: BorderColour -> Int
fromEnum :: BorderColour -> Int
$cenumFrom :: BorderColour -> [BorderColour]
enumFrom :: BorderColour -> [BorderColour]
$cenumFromThen :: BorderColour -> BorderColour -> [BorderColour]
enumFromThen :: BorderColour -> BorderColour -> [BorderColour]
$cenumFromTo :: BorderColour -> BorderColour -> [BorderColour]
enumFromTo :: BorderColour -> BorderColour -> [BorderColour]
$cenumFromThenTo :: BorderColour -> BorderColour -> BorderColour -> [BorderColour]
enumFromThenTo :: BorderColour -> BorderColour -> BorderColour -> [BorderColour]
Enum)

instance Token BorderColour where
    tokenName :: forall s. (IsString s, Semigroup s) => BorderColour -> s
tokenName BorderColour
BorderColour = s
"border-color"
    tokenName BorderColour
BorderFocusedColour = s
"border-focused-color"
    tokenName BorderColour
BorderDangerColour = s
"border-danger-color"

instance ValueToken BorderColour where
    type ValueType BorderColour = LightDark Uchu
    tokenValue :: BorderColour -> ValueType BorderColour
tokenValue BorderColour
BorderColour = Uchu -> Uchu -> LightDark Uchu
forall c. c -> c -> LightDark c
LightDark Uchu
Yin3 Uchu
Yin8
    tokenValue BorderColour
BorderFocusedColour = Uchu -> LightDark Uchu
forall c. c -> LightDark c
sameLightDark Uchu
Blue
    tokenValue BorderColour
BorderDangerColour = Uchu -> LightDark Uchu
forall c. c -> LightDark c
sameLightDark Uchu
Red