# pastille.py

PASTILLE_ICONS = {
    "vert": "✅",
    "orange": "🔶",
    "rouge": "🔴"
}

def pastille(indice: str, valeur: str) -> str:
    """Renvoie l'icône Unicode correspondante à la pastille en fonction de sa valeur et des seuils.

    La pastille prend une couleur (vert, orange ou rouge) selon la valeur
    de l'indicateur par rapport aux seuils définis. Les icônes sont définies
    comme des emojis Unicode pour faciliter leur affichage dans les interfaces
    interactives comme Streamlit.

    Args:
        indice (str): Clé permettant d'accéder au seuil spécifique.
            Exemples de valeurs possibles : "criticite", "confort".
        valeur (Any): Valeur numérique à comparer aux seuils.
            Généralement une float, mais peut être convertie automatiquement
            en nombre si possible.

    Returns:
        str: Une icône Unicode correspondante à la pastille. Si aucune icône n'est définie,
            une chaîne vide est renvoyée.
    """
    try:
        import streamlit as st
        seuils = st.session_state.get("seuils", {})
        if seuils and indice not in seuils:
            return ""

        seuil = seuils[indice]
        vert_max = seuil["vert"]["max"]
        rouge_min = seuil["rouge"]["min"]
        val = float(valeur)

        if val < vert_max:
            return PASTILLE_ICONS["vert"]
        if val > rouge_min:
            return PASTILLE_ICONS["rouge"]
        return PASTILLE_ICONS["orange"]
    except (KeyError, ValueError, TypeError):
        return ""
