from .visible_attrs import _visible_attrs from .style_string import _style_string from .attr_string import _attr_string from ..widgets.fontawesome_icons import FONTAWESOME_ICONS def _render_icone(el, meta, slug=None, children_map=None, ctx=None, parent_flex_direction=None): """Widget Icône — un SVG affiché en silhouette via "mask-image" (voir .icon-svg dans style.css), pas une police d'icônes : certains navigateurs/extensions bloquent le chargement de polices web tierces (protection anti-fingerprinting), ce qui rendait les icônes Font Awesome invisibles quelle que soit leur source — un SVG posé en masque n'est jamais concerné. Se colore via "color" (couleur du texte, déjà un réglage existant), se dimensionne via "font-size" (le masque fait 1em).""" raw_attrs = el.get("attributes") or {} icon_slug = raw_attrs.get("_icon_slug") or "star" if icon_slug not in FONTAWESOME_ICONS: icon_slug = "star" # attribut corrompu/vidé : jamais d'icône cassée attrs = _visible_attrs(el, meta, ctx) existing_class = attrs.pop("class", "") attrs["class"] = (existing_class + " icon-svg").strip() icon_url = f"/static/icons/{icon_slug}.svg" style = _style_string(el, f" --icon-url:url('{icon_url}');", parent_flex_direction) return f""