{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}

module RIO.PrettyPrint.DefaultStyles
  (
    defaultStyles
  ) where

import Data.Array.IArray (array)
import RIO
import RIO.PrettyPrint.Types (Style (..), Styles)
import System.Console.ANSI.Codes (Color (..), ColorIntensity (..),
  ConsoleIntensity (..), ConsoleLayer (..), SGR (..))

-- | Default styles for rio-prettyprint output.
defaultStyles :: Styles
defaultStyles :: Styles
defaultStyles = (Style, Style) -> [(Style, (Text, [SGR]))] -> Styles
forall (a :: * -> * -> *) e i.
(IArray a e, Ix i) =>
(i, i) -> [(i, e)] -> a i e
array (Style
forall a. Bounded a => a
minBound, Style
forall a. Bounded a => a
maxBound)
  [ (Style
Error, ("error", [ConsoleLayer -> ColorIntensity -> Color -> SGR
SetColor ConsoleLayer
Foreground ColorIntensity
Vivid Color
Red]))
  , (Style
Warning, ("warning", [ConsoleLayer -> ColorIntensity -> Color -> SGR
SetColor ConsoleLayer
Foreground ColorIntensity
Dull Color
Yellow]))
  , (Style
Good, ("good", [ConsoleLayer -> ColorIntensity -> Color -> SGR
SetColor ConsoleLayer
Foreground ColorIntensity
Vivid Color
Green]))
  , (Style
Shell, ("shell", [ConsoleLayer -> ColorIntensity -> Color -> SGR
SetColor ConsoleLayer
Foreground ColorIntensity
Vivid Color
Magenta]))
  , (Style
File, ("file", [ConsoleLayer -> ColorIntensity -> Color -> SGR
SetColor ConsoleLayer
Foreground ColorIntensity
Dull Color
Cyan]))
  -- For now 'Url' using the same style as 'File'
  , (Style
Url, ("url", [ConsoleLayer -> ColorIntensity -> Color -> SGR
SetColor ConsoleLayer
Foreground ColorIntensity
Dull Color
Cyan]))
  , (Style
Dir, ("dir", [ ConsoleIntensity -> SGR
SetConsoleIntensity ConsoleIntensity
BoldIntensity
                  , ConsoleLayer -> ColorIntensity -> Color -> SGR
SetColor ConsoleLayer
Foreground ColorIntensity
Vivid Color
Blue ]))
  , (Style
Recommendation, ("recommendation", [ ConsoleIntensity -> SGR
SetConsoleIntensity ConsoleIntensity
BoldIntensity
                                      , ConsoleLayer -> ColorIntensity -> Color -> SGR
SetColor ConsoleLayer
Foreground ColorIntensity
Vivid Color
Green]))
  , (Style
Current, ("current", [ConsoleLayer -> ColorIntensity -> Color -> SGR
SetColor ConsoleLayer
Foreground ColorIntensity
Dull Color
Yellow]))
  , (Style
Target, ("target", [ConsoleLayer -> ColorIntensity -> Color -> SGR
SetColor ConsoleLayer
Foreground ColorIntensity
Vivid Color
Cyan]))
  -- TODO: what color should Module be?
  , (Style
Module, ("module", [ConsoleLayer -> ColorIntensity -> Color -> SGR
SetColor ConsoleLayer
Foreground ColorIntensity
Vivid Color
Magenta]))
  , (Style
PkgComponent, ("package-component", [ConsoleLayer -> ColorIntensity -> Color -> SGR
SetColor ConsoleLayer
Foreground ColorIntensity
Vivid Color
Cyan])) ]