persona-ui / utils /selection_controls.py
Jac-Zac
Big refactoring
b279884
from __future__ import annotations
from collections.abc import Sequence
import streamlit as st
def remembered_segmented_control(
label: str,
*,
options: Sequence[str],
key: str,
remember_key: str | None = None,
default: str | None = None,
label_visibility: str = "visible",
) -> str:
"""Render a segmented control with one small, reusable memory pattern."""
fallback = default or options[0]
remembered = st.session_state.get(
remember_key,
st.session_state.get(key, fallback),
)
selected = (
st.segmented_control(
label,
options=options,
default=remembered if remembered in options else fallback,
key=key,
label_visibility=label_visibility,
)
or fallback
)
if remember_key is not None:
st.session_state[remember_key] = selected
return selected