diff --git a/screens/rendering/render_jauge.py b/screens/rendering/render_jauge.py
index f2efc3d4..4fd09b85 100644
--- a/screens/rendering/render_jauge.py
+++ b/screens/rendering/render_jauge.py
@@ -138,8 +138,10 @@ def _render_jauge(el, meta, slug, children_map=None, ctx=None, parent_flex_direc
# donnée" — sinon la jauge resterait figée sur sa valeur de départ après
# un changement, exactement comme il fallait déjà repérer "repeaterItem"
# pour les Répéteurs (voir 1.1/1.2).
+ extra_classes = " ".join(v for k, v in attrs.items() if k.startswith("_class_") and v)
+ bar_class = html_lib.escape((f"progress jaugeBar {extra_classes}").strip())
bar = (
- f''
)
diff --git a/screens/rendering/render_onglets.py b/screens/rendering/render_onglets.py
index 633b933e..feb1fbaa 100644
--- a/screens/rendering/render_onglets.py
+++ b/screens/rendering/render_onglets.py
@@ -21,6 +21,10 @@ def _render_onglets(el, meta, slug, children_map=None, ctx=None, parent_flex_dir
tabs = (children_map or {}).get(el["id"], [])
attrs = _visible_attrs(el, meta, ctx)
+ # Les variantes Bulma (alignement/style/taille... voir BULMA_TABS_CONTROLS)
+ # calculées par _visible_attrs atterrissent dans "class" — c'est le
+ #
qui doit les porter, pas ce wrapper de positionnement.
+ tabs_extra_classes = attrs.pop("class", "")
style = _style_string(el, " display:flex; flex-direction:column;", parent_flex_direction)
group_id = _auto_id(el)
@@ -53,9 +57,10 @@ def _render_onglets(el, meta, slug, children_map=None, ctx=None, parent_flex_dir
f'{tab_html}
'
)
+ tabs_class = html_lib.escape(("tabs " + tabs_extra_classes).strip())
return (
f''
- f'
'
+ f'
'
f'
{"".join(panels)}
'
f"
"
)
diff --git a/screens/rendering/render_select.py b/screens/rendering/render_select.py
index cd3835c1..ac0e9505 100644
--- a/screens/rendering/render_select.py
+++ b/screens/rendering/render_select.py
@@ -15,6 +15,11 @@ def _render_select(el, meta, slug=None, children_map=None, ctx=None, parent_flex
# l'élément (comme tous les autres widgets), le