File size: 916 Bytes
b279884
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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