"""Fuji-Akzent-Definitionen — reine Daten, KEINE GTK-Abhängigkeit.

Bewusst GTK-frei, damit sowohl das GTK-Frontend (gui.style) als auch der
Persistenz-Writer (gui.config) und externe Consumer (z.B. die eww-Bar, die
gui.json liest) dieselbe Quelle nutzen. Hex-Werte kommen aus core.theme,
damit GTK-App und TUI identisch sind.
"""
from __future__ import annotations

from dataclasses import dataclass

from taninux.core import theme as T


@dataclass(frozen=True)
class Accent:
    key: str
    label: str
    hex: str


# Reihenfolge = Anzeige-Reihenfolge der Swatches.
FUJI_ACCENTS: list[Accent] = [
    Accent("ume", "Ume · violet", T.UME),
    Accent("shinkai", "Shinkai · blue", T.SHINKAI),
    Accent("take", "Take · green", T.TAKE),
    Accent("chikyu", "Chikyū · yellow", T.CHIKYU),
    Accent("beni", "Beni · red", T.RED),
]

_BY_KEY = {a.key: a for a in FUJI_ACCENTS}
DEFAULT_ACCENT = FUJI_ACCENTS[0].key


def by_key(key: str) -> Accent:
    return _BY_KEY.get(key, _BY_KEY[DEFAULT_ACCENT])
