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), ], )