{-|
Module      : Monomer.Core.Themes.SampleThemes
Copyright   : (c) 2018 Francisco Vallarino
License     : BSD-3-Clause (see the LICENSE file)
Maintainer  : fjvallarino@gmail.com
Stability   : experimental
Portability : non-portable

Provides sample color schemes for the base theme.
-}
module Monomer.Core.Themes.SampleThemes (
  lightTheme,
  lightThemeColors,
  darkTheme,
  darkThemeColors
) where

import Control.Lens ((&), (.~))

import Monomer.Core.ThemeTypes
import Monomer.Core.Themes.BaseTheme
import Monomer.Graphics

import qualified Monomer.Lens as L

-- | Light theme provided by the library.
lightTheme :: Theme
lightTheme :: Theme
lightTheme = BaseThemeColors -> Theme
baseTheme BaseThemeColors
lightThemeColors

-- | Colors for the light theme.
lightThemeColors :: BaseThemeColors
lightThemeColors :: BaseThemeColors
lightThemeColors = BaseThemeColors {
  clearColor :: Color
clearColor = Color
gray10, -- gray12,
  sectionColor :: Color
sectionColor = Color
gray09, -- gray11,

  btnFocusBorder :: Color
btnFocusBorder = Color
blue08,
  btnBgBasic :: Color
btnBgBasic = Color
gray07,
  btnBgHover :: Color
btnBgHover = Color
gray07c,
  btnBgFocus :: Color
btnBgFocus = Color
gray07b,
  btnBgActive :: Color
btnBgActive = Color
gray06,
  btnBgDisabled :: Color
btnBgDisabled = Color
gray05,
  btnText :: Color
btnText = Color
gray02,
  btnTextDisabled :: Color
btnTextDisabled = Color
gray02,

  btnMainFocusBorder :: Color
btnMainFocusBorder = Color
blue09,
  btnMainBgBasic :: Color
btnMainBgBasic = Color
blue05b,
  btnMainBgHover :: Color
btnMainBgHover = Color
blue06,
  btnMainBgFocus :: Color
btnMainBgFocus = Color
blue05c,
  btnMainBgActive :: Color
btnMainBgActive = Color
blue05,
  btnMainBgDisabled :: Color
btnMainBgDisabled = Color
blue04,
  btnMainText :: Color
btnMainText = Color
white,
  btnMainTextDisabled :: Color
btnMainTextDisabled = Color
white,

  dialogBg :: Color
dialogBg = Color
white,
  dialogBorder :: Color
dialogBorder = Color
white,
  dialogText :: Color
dialogText = Color
black,
  dialogTitleText :: Color
dialogTitleText = Color
black,
  emptyOverlay :: Color
emptyOverlay = Color
gray07 Color -> (Color -> Color) -> Color
forall a b. a -> (a -> b) -> b
& (Double -> Identity Double) -> Color -> Identity Color
forall s a. HasA s a => Lens' s a
Lens' Color Double
L.a ((Double -> Identity Double) -> Color -> Identity Color)
-> Double -> Color -> Color
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Double
0.8,
  shadow :: Color
shadow = Color
gray00 Color -> (Color -> Color) -> Color
forall a b. a -> (a -> b) -> b
& (Double -> Identity Double) -> Color -> Identity Color
forall s a. HasA s a => Lens' s a
Lens' Color Double
L.a ((Double -> Identity Double) -> Color -> Identity Color)
-> Double -> Color -> Color
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Double
0.2,

  externalLinkBasic :: Color
externalLinkBasic = Color
blue07,
  externalLinkHover :: Color
externalLinkHover = Color
blue08,
  externalLinkFocus :: Color
externalLinkFocus = Color
blue07,
  externalLinkActive :: Color
externalLinkActive = Color
blue06,
  externalLinkDisabled :: Color
externalLinkDisabled = Color
gray06,

  iconBg :: Color
iconBg = Color
gray07,
  iconFg :: Color
iconFg = Color
gray01,

  inputIconFg :: Color
inputIconFg = Color
black,
  inputBorder :: Color
inputBorder = Color
gray06,
  inputFocusBorder :: Color
inputFocusBorder = Color
blue07,

  inputBgBasic :: Color
inputBgBasic = Color
gray10,
  inputBgHover :: Color
inputBgHover = Color
white,
  inputBgFocus :: Color
inputBgFocus = Color
white,
  inputBgActive :: Color
inputBgActive = Color
gray09,
  inputBgDisabled :: Color
inputBgDisabled = Color
gray05,

  inputFgBasic :: Color
inputFgBasic = Color
gray05,
  inputFgHover :: Color
inputFgHover = Color
blue07,
  inputFgFocus :: Color
inputFgFocus = Color
blue07,
  inputFgActive :: Color
inputFgActive = Color
blue06,
  inputFgDisabled :: Color
inputFgDisabled = Color
gray04,

  inputSndBasic :: Color
inputSndBasic = Color
gray04,
  inputSndHover :: Color
inputSndHover = Color
gray05,
  inputSndFocus :: Color
inputSndFocus = Color
gray05,
  inputSndActive :: Color
inputSndActive = Color
gray04,
  inputSndDisabled :: Color
inputSndDisabled = Color
gray03,

  inputHlBasic :: Color
inputHlBasic = Color
gray06,
  inputHlHover :: Color
inputHlHover = Color
blue07,
  inputHlFocus :: Color
inputHlFocus = Color
blue07,
  inputHlActive :: Color
inputHlActive = Color
blue06,
  inputHlDisabled :: Color
inputHlDisabled = Color
gray05,

  inputSelBasic :: Color
inputSelBasic = Color
gray07,
  inputSelFocus :: Color
inputSelFocus = Color
blue08,

  inputText :: Color
inputText = Color
black,
  inputTextDisabled :: Color
inputTextDisabled = Color
gray02,
  labelText :: Color
labelText = Color
black,

  scrollBarBasic :: Color
scrollBarBasic = Color
gray03 Color -> (Color -> Color) -> Color
forall a b. a -> (a -> b) -> b
& (Double -> Identity Double) -> Color -> Identity Color
forall s a. HasA s a => Lens' s a
Lens' Color Double
L.a ((Double -> Identity Double) -> Color -> Identity Color)
-> Double -> Color -> Color
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Double
0.2,
  scrollThumbBasic :: Color
scrollThumbBasic = Color
gray01 Color -> (Color -> Color) -> Color
forall a b. a -> (a -> b) -> b
& (Double -> Identity Double) -> Color -> Identity Color
forall s a. HasA s a => Lens' s a
Lens' Color Double
L.a ((Double -> Identity Double) -> Color -> Identity Color)
-> Double -> Color -> Color
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Double
0.2,
  scrollBarHover :: Color
scrollBarHover = Color
gray07 Color -> (Color -> Color) -> Color
forall a b. a -> (a -> b) -> b
& (Double -> Identity Double) -> Color -> Identity Color
forall s a. HasA s a => Lens' s a
Lens' Color Double
L.a ((Double -> Identity Double) -> Color -> Identity Color)
-> Double -> Color -> Color
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Double
0.8,
  scrollThumbHover :: Color
scrollThumbHover = Color
gray05 Color -> (Color -> Color) -> Color
forall a b. a -> (a -> b) -> b
& (Double -> Identity Double) -> Color -> Identity Color
forall s a. HasA s a => Lens' s a
Lens' Color Double
L.a ((Double -> Identity Double) -> Color -> Identity Color)
-> Double -> Color -> Color
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Double
0.8,

  slMainBg :: Color
slMainBg = Color
white,
  slNormalBgBasic :: Color
slNormalBgBasic = Color
transparent,
  slNormalBgHover :: Color
slNormalBgHover = Color
gray09,
  slNormalText :: Color
slNormalText = Color
black,
  slNormalFocusBorder :: Color
slNormalFocusBorder = Color
blue07,

  slSelectedBgBasic :: Color
slSelectedBgBasic = Color
gray08,
  slSelectedBgHover :: Color
slSelectedBgHover = Color
gray09,
  slSelectedText :: Color
slSelectedText = Color
black,
  slSelectedFocusBorder :: Color
slSelectedFocusBorder = Color
blue07,

  tooltipBorder :: Color
tooltipBorder = Color
gray08,
  tooltipBg :: Color
tooltipBg = Color
gray07,
  tooltipText :: Color
tooltipText = Color
black
}

-- | Dark theme provided by the library.
darkTheme :: Theme
darkTheme :: Theme
darkTheme = BaseThemeColors -> Theme
baseTheme BaseThemeColors
darkThemeColors

-- | Colors for the dark theme.
darkThemeColors :: BaseThemeColors
darkThemeColors :: BaseThemeColors
darkThemeColors = BaseThemeColors {
  clearColor :: Color
clearColor = Color
gray03,
  sectionColor :: Color
sectionColor = Color
gray02,

  btnFocusBorder :: Color
btnFocusBorder = Color
blue09,
  btnBgBasic :: Color
btnBgBasic = Color
gray07b,
  btnBgHover :: Color
btnBgHover = Color
gray08,
  btnBgFocus :: Color
btnBgFocus = Color
gray07c,
  btnBgActive :: Color
btnBgActive = Color
gray06,
  btnBgDisabled :: Color
btnBgDisabled = Color
gray05,

  btnText :: Color
btnText = Color
gray02,
  btnTextDisabled :: Color
btnTextDisabled = Color
gray01,
  btnMainFocusBorder :: Color
btnMainFocusBorder = Color
blue08,
  btnMainBgBasic :: Color
btnMainBgBasic = Color
blue05b,
  btnMainBgHover :: Color
btnMainBgHover = Color
blue06,
  btnMainBgFocus :: Color
btnMainBgFocus = Color
blue05c,
  btnMainBgActive :: Color
btnMainBgActive = Color
blue05,
  btnMainBgDisabled :: Color
btnMainBgDisabled = Color
blue04,
  btnMainText :: Color
btnMainText = Color
white,
  btnMainTextDisabled :: Color
btnMainTextDisabled = Color
gray08,

  dialogBg :: Color
dialogBg = Color
gray01,
  dialogBorder :: Color
dialogBorder = Color
gray01,
  dialogText :: Color
dialogText = Color
white,
  dialogTitleText :: Color
dialogTitleText = Color
white,
  emptyOverlay :: Color
emptyOverlay = Color
gray05 Color -> (Color -> Color) -> Color
forall a b. a -> (a -> b) -> b
& (Double -> Identity Double) -> Color -> Identity Color
forall s a. HasA s a => Lens' s a
Lens' Color Double
L.a ((Double -> Identity Double) -> Color -> Identity Color)
-> Double -> Color -> Color
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Double
0.8,
  shadow :: Color
shadow = Color
gray00 Color -> (Color -> Color) -> Color
forall a b. a -> (a -> b) -> b
& (Double -> Identity Double) -> Color -> Identity Color
forall s a. HasA s a => Lens' s a
Lens' Color Double
L.a ((Double -> Identity Double) -> Color -> Identity Color)
-> Double -> Color -> Color
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Double
0.33,

  externalLinkBasic :: Color
externalLinkBasic = Color
blue07,
  externalLinkHover :: Color
externalLinkHover = Color
blue08,
  externalLinkFocus :: Color
externalLinkFocus = Color
blue07,
  externalLinkActive :: Color
externalLinkActive = Color
blue06,
  externalLinkDisabled :: Color
externalLinkDisabled = Color
gray06,

  iconBg :: Color
iconBg = Color
gray08,
  iconFg :: Color
iconFg = Color
gray01,

  inputIconFg :: Color
inputIconFg = Color
black,
  inputBorder :: Color
inputBorder = Color
gray02,
  inputFocusBorder :: Color
inputFocusBorder = Color
blue08,

  inputBgBasic :: Color
inputBgBasic = Color
gray04,
  inputBgHover :: Color
inputBgHover = Color
gray06,
  inputBgFocus :: Color
inputBgFocus = Color
gray05,
  inputBgActive :: Color
inputBgActive = Color
gray03,
  inputBgDisabled :: Color
inputBgDisabled = Color
gray07,

  inputFgBasic :: Color
inputFgBasic = Color
gray06,
  inputFgHover :: Color
inputFgHover = Color
blue08,
  inputFgFocus :: Color
inputFgFocus = Color
blue08,
  inputFgActive :: Color
inputFgActive = Color
blue07,
  inputFgDisabled :: Color
inputFgDisabled = Color
gray07,

  inputSndBasic :: Color
inputSndBasic = Color
gray05,
  inputSndHover :: Color
inputSndHover = Color
gray06,
  inputSndFocus :: Color
inputSndFocus = Color
gray05,
  inputSndActive :: Color
inputSndActive = Color
gray05,
  inputSndDisabled :: Color
inputSndDisabled = Color
gray03,

  inputHlBasic :: Color
inputHlBasic = Color
gray07,
  inputHlHover :: Color
inputHlHover = Color
blue08,
  inputHlFocus :: Color
inputHlFocus = Color
blue08,
  inputHlActive :: Color
inputHlActive = Color
blue08,
  inputHlDisabled :: Color
inputHlDisabled = Color
gray08,

  inputSelBasic :: Color
inputSelBasic = Color
gray06,
  inputSelFocus :: Color
inputSelFocus = Color
blue06,

  inputText :: Color
inputText = Color
white,
  inputTextDisabled :: Color
inputTextDisabled = Color
gray02,
  labelText :: Color
labelText = Color
white,

  scrollBarBasic :: Color
scrollBarBasic = Color
gray01 Color -> (Color -> Color) -> Color
forall a b. a -> (a -> b) -> b
& (Double -> Identity Double) -> Color -> Identity Color
forall s a. HasA s a => Lens' s a
Lens' Color Double
L.a ((Double -> Identity Double) -> Color -> Identity Color)
-> Double -> Color -> Color
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Double
0.2,
  scrollThumbBasic :: Color
scrollThumbBasic = Color
gray07 Color -> (Color -> Color) -> Color
forall a b. a -> (a -> b) -> b
& (Double -> Identity Double) -> Color -> Identity Color
forall s a. HasA s a => Lens' s a
Lens' Color Double
L.a ((Double -> Identity Double) -> Color -> Identity Color)
-> Double -> Color -> Color
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Double
0.6,
  scrollBarHover :: Color
scrollBarHover = Color
gray01 Color -> (Color -> Color) -> Color
forall a b. a -> (a -> b) -> b
& (Double -> Identity Double) -> Color -> Identity Color
forall s a. HasA s a => Lens' s a
Lens' Color Double
L.a ((Double -> Identity Double) -> Color -> Identity Color)
-> Double -> Color -> Color
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Double
0.4,
  scrollThumbHover :: Color
scrollThumbHover = Color
gray07 Color -> (Color -> Color) -> Color
forall a b. a -> (a -> b) -> b
& (Double -> Identity Double) -> Color -> Identity Color
forall s a. HasA s a => Lens' s a
Lens' Color Double
L.a ((Double -> Identity Double) -> Color -> Identity Color)
-> Double -> Color -> Color
forall s t a b. ASetter s t a b -> b -> s -> t
.~ Double
0.8,

  slMainBg :: Color
slMainBg = Color
gray00,
  slNormalBgBasic :: Color
slNormalBgBasic = Color
transparent,
  slNormalBgHover :: Color
slNormalBgHover = Color
gray05,
  slNormalText :: Color
slNormalText = Color
white,
  slNormalFocusBorder :: Color
slNormalFocusBorder = Color
blue08,

  slSelectedBgBasic :: Color
slSelectedBgBasic = Color
gray04,
  slSelectedBgHover :: Color
slSelectedBgHover = Color
gray05,
  slSelectedText :: Color
slSelectedText = Color
white,
  slSelectedFocusBorder :: Color
slSelectedFocusBorder = Color
blue08,

  tooltipBorder :: Color
tooltipBorder = Color
gray05,
  tooltipBg :: Color
tooltipBg = String -> Color
rgbHex String
"#1D212B",
  tooltipText :: Color
tooltipText = Color
white
}

black :: Color
black = String -> Color
rgbHex String
"#000000"
white :: Color
white = String -> Color
rgbHex String
"#FFFFFF"

blue01 :: Color
blue01 = String -> Color
rgbHex String
"#002159"
blue02 :: Color
blue02 = String -> Color
rgbHex String
"#01337D"
blue03 :: Color
blue03 = String -> Color
rgbHex String
"#03449E"
blue04 :: Color
blue04 = String -> Color
rgbHex String
"#0552B5"
blue05 :: Color
blue05 = String -> Color
rgbHex String
"#0967D2"
blue05b :: Color
blue05b = String -> Color
rgbHex String
"#0F6BD7"
blue05c :: Color
blue05c = String -> Color
rgbHex String
"#1673DE"
blue06 :: Color
blue06 = String -> Color
rgbHex String
"#2186EB"
blue06b :: Color
blue06b = String -> Color
rgbHex String
"#2489EE"
blue06c :: Color
blue06c = String -> Color
rgbHex String
"#2B8FF6"
blue07 :: Color
blue07 = String -> Color
rgbHex String
"#47A3F3"
blue07b :: Color
blue07b = String -> Color
rgbHex String
"#50A6F6"
blue07c :: Color
blue07c = String -> Color
rgbHex String
"#57ACFC"
blue08 :: Color
blue08 = String -> Color
rgbHex String
"#7CC4FA"
blue09 :: Color
blue09 = String -> Color
rgbHex String
"#BAE3FF"
blue10 :: Color
blue10 = String -> Color
rgbHex String
"#E6F6FF"

{-
gray01 = rgbHex "#242424"
gray02 = rgbHex "#2E2E2E"
gray03 = rgbHex "#393939"
gray04 = rgbHex "#404040"
gray05 = rgbHex "#575757"
gray06 = rgbHex "#606060"
gray07 = rgbHex "#6E6E6E"
gray08 = rgbHex "#8C8C8C"
gray09 = rgbHex "#A4A4A4"
gray10 = rgbHex "#C4C4C4"
gray11 = rgbHex "#DADADA"
gray12 = rgbHex "#EAEAEA"
-}

gray00 :: Color
gray00 = String -> Color
rgbHex String
"#222222"
gray01 :: Color
gray01 = String -> Color
rgbHex String
"#2E2E2E"
gray02 :: Color
gray02 = String -> Color
rgbHex String
"#393939"
gray03 :: Color
gray03 = String -> Color
rgbHex String
"#515151"
gray04 :: Color
gray04 = String -> Color
rgbHex String
"#626262"
gray05 :: Color
gray05 = String -> Color
rgbHex String
"#7E7E7E"
gray06 :: Color
gray06 = String -> Color
rgbHex String
"#9E9E9E"
gray07 :: Color
gray07 = String -> Color
rgbHex String
"#B1B1B1"
gray07b :: Color
gray07b = String -> Color
rgbHex String
"#B4B4B4"
gray07c :: Color
gray07c = String -> Color
rgbHex String
"#BBBBBB"
gray08 :: Color
gray08 = String -> Color
rgbHex String
"#CFCFCF"
gray09 :: Color
gray09 = String -> Color
rgbHex String
"#E1E1E1"
gray10 :: Color
gray10 = String -> Color
rgbHex String
"#F7F7F7"

{-
gray00 = rgbHex "#0F1923"
gray01 = rgbHex "#1F2933"
gray02 = rgbHex "#323F4B"
gray03 = rgbHex "#3E4C59"
gray04 = rgbHex "#52606D"
gray05 = rgbHex "#616E7C"
gray06 = rgbHex "#7B8794"
gray07 = rgbHex "#9AA5B1"
gray08 = rgbHex "#CBD2D9"
gray09 = rgbHex "#E4E7EB"
gray10 = rgbHex "#F5F7FA"
-}