from typing import List, Optional, Tuple from .color_triplet import ColorTriplet from .palette import Palette _ColorTuple = Tuple[int, int, int] class TerminalTheme: """A color theme used when exporting console content. Args: background (Tuple[int, int, int]): The background color. foreground (Tuple[int, int, int]): The foreground (text) color. normal (List[Tuple[int, int, int]]): A list of 8 normal intensity colors. bright (List[Tuple[int, int, int]], optional): A list of 8 bright colors, or None to repeat normal intensity. Defaults to None. """ def __init__( self, background: _ColorTuple, foreground: _ColorTuple, normal: List[_ColorTuple], bright: Optional[List[_ColorTuple]] = None, ) -> None: self.background_color = ColorTriplet(*background) self.foreground_color = ColorTriplet(*foreground) self.ansi_colors = Palette(normal + (bright or normal)) DEFAULT_TERMINAL_THEME = TerminalTheme( (255, 255, 255), (0, 0, 0), [ (0, 0, 0), (128, 0, 0), (0, 128, 0), (128, 128, 0), (0, 0, 128), (128, 0, 128), (0, 128, 128), (192, 192, 192), ], [ (128, 128, 128), (255, 0, 0), (0, 255, 0), (255, 255, 0), (0, 0, 255), (255, 0, 255), (0, 255, 255), (255, 255, 255), ], ) MONOKAI = TerminalTheme( (12, 12, 12), (217, 217, 217), [ (26, 26, 26), (244, 0, 95), (152, 224, 36), (253, 151, 31), (157, 101, 255), (244, 0, 95), (88, 209, 235), (196, 197, 181), (98, 94, 76), ], [ (244, 0, 95), (152, 224, 36), (224, 213, 97), (157, 101, 255), (244, 0, 95), (88, 209, 235), (246, 246, 239), ], ) DIMMED_MONOKAI = TerminalTheme( (25, 25, 25), (185, 188, 186), [ (58, 61, 67), (190, 63, 72), (135, 154, 59), (197, 166, 53), (79, 118, 161), (133, 92, 141), (87, 143, 164), (185, 188, 186), (136, 137, 135), ], [ (251, 0, 31), (15, 114, 47), (196, 112, 51), (24, 109, 227), (251, 0, 103), (46, 112, 109), (253, 255, 185), ], ) NIGHT_OWLISH = TerminalTheme( (255, 255, 255), (64, 63, 83), [ (1, 22, 39), (211, 66, 62), (42, 162, 152), (218, 170, 1), (72, 118, 214), (64, 63, 83), (8, 145, 106), (122, 129, 129), (122, 129, 129), ], [ (247, 110, 110), (73, 208, 197), (218, 194, 107), (92, 167, 228), (105, 112, 152), (0, 201, 144), (152, 159, 177), ], ) SVG_EXPORT_THEME = TerminalTheme( (41, 41, 41), (197, 200, 198), [ (75, 78, 85), (204, 85, 90), (152, 168, 75), (208, 179, 68), (96, 138, 177), (152, 114, 159), (104, 160, 179), (197, 200, 198), (154, 155, 153), ], [ (255, 38, 39), (0, 130, 61), (208, 132, 66), (25, 132, 233), (255, 44, 122), (57, 130, 128), (253, 253, 197), ], )