"""Color design tokens for the smarty_ui component library.

Aligned with Smartbank Figma design system.
"""

from dataclasses import dataclass


@dataclass(frozen=True)
class ColorTokens:
    """Immutable color palette based on Smartbank design system.

    All values are hex color strings. Create a new instance to customize.
    """

    # Primary Brand Colors
    primary: str = "#076AE2"
    primary_hover: str = "#035DCA"

    # Secondary / Light Blue
    blue_light: str = "#EBF2FA"
    blue_light_hover: str = "#E0EAF6"

    # Text Colors
    text_primary: str = "#1A1736"  # black
    text_secondary: str = "#80858E"  # grey-dark
    text_on_primary: str = "#FFFFFF"

    # Grey Scale
    grey_dark: str = "#80858E"
    grey_medium: str = "#E6E7E8"
    grey_light: str = "#F9F9F9"

    # Surfaces
    background: str = "#FFFFFF"
    surface: str = "#F9F9F9"

    # Borders
    border: str = "#EBF2FA"
    border_light: str = "#E6E7E8"

    # Semantic Colors
    error: str = "#FF516E"
    success: str = "#65C466"
    warning: str = "#D97706"
    info: str = "#076AE2"

    # Disabled State
    disabled_bg: str = "#E6E7E8"
    disabled_text: str = "#80858E"


# Gradient definitions (CSS-style linear gradients for reference)
# These can be used with DivGradientBackground in pydivkit
GRADIENT_PURPLE = {
    "angle": 41,
    "colors": ["#E82CFF", "#FF8398"],
    "positions": [0.21, 0.84],
}

GRADIENT_BLUE = {
    "angle": 47,
    "colors": ["#20D2E6", "#24EDDF80"],  # second color with 50% opacity
    "positions": [0.22, 0.85],
}

GRADIENT_GREY = {
    "angle": 104,
    "colors": ["#09089A1A", "#4A27FF"],  # first color with 10% opacity
    "positions": [0.21, 0.82],
}
