"""Individual style configuration for text formatting."""

from __future__ import annotations

from dataclasses import dataclass
from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from freyja.theme import RGB


@dataclass
class ThemeStyle:
    """
    Individual style configuration for text formatting.
    Supports foreground/background colors (RGB instances only) and text decorations.
    """

    fg: RGB | None = None  # Foreground color (RGB instance only)
    bg: RGB | None = None  # Background color (RGB instance only)
    bold: bool = False  # Bold text
    italic: bool = False  # Italic text (may not work on all terminals)
    dim: bool = False  # Dimmed/faint text
    underline: bool = False  # Underlined text


@dataclass
class CommandStyleSection:
    """
    Hierarchical command styling configuration for a specific command level.
    Groups related styling attributes for cmd_tree and their options.
    """

    command_name: ThemeStyle  # Style for command names at this level
    command_description: ThemeStyle  # Style for command descriptions at this level
    option_name: ThemeStyle  # Style for option names at this level
    option_description: ThemeStyle  # Style for option descriptions at this level
