From 05b7005a414465f7abc55d149b2272854325875d Mon Sep 17 00:00:00 2001 From: Tyler Date: Sat, 16 May 2026 00:24:15 -0700 Subject: Move Top Movers to sidebar and tighten top spacing --- components/top_movers.py | 112 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 79 insertions(+), 33 deletions(-) (limited to 'components/top_movers.py') diff --git a/components/top_movers.py b/components/top_movers.py index d50eee7..fcf64d4 100644 --- a/components/top_movers.py +++ b/components/top_movers.py @@ -12,65 +12,87 @@ def _toggle_mover_tab(state_key: str): st.session_state[state_key] = not st.session_state.get(state_key, False) -def _inject_styles(): +def _inject_styles(compact: bool = False): + row_template = ( + "minmax(60px, 0.95fr) minmax(0, 2.0fr) minmax(74px, 1fr) minmax(86px, 1fr)" + if compact + else "minmax(72px, 0.8fr) minmax(0, 2.6fr) minmax(90px, 1fr) minmax(110px, 1.1fr)" + ) + row_gap = "0.45rem" if compact else "0.85rem" + row_padding = "0.12rem 0" if compact else "0.18rem 0" + symbol_size = "0.75rem" if compact else "0.875rem" + name_size = "0.75rem" if compact else "0.8125rem" + price_size = "0.75rem" if compact else "0.8125rem" + change_size = "0.75rem" if compact else "0.8125rem" + change_meta_size = "10px" if compact else "11px" + st.markdown( """ - """, + """.format( + row_template=row_template, + row_gap=row_gap, + row_padding=row_padding, + symbol_size=symbol_size, + name_size=name_size, + price_size=price_size, + change_size=change_size, + change_meta_size=change_meta_size, + ), unsafe_allow_html=True, ) @@ -150,8 +172,8 @@ def _render_mover_tab(screen: str, state_key: str): @st.fragment -def render_top_movers(): - _inject_styles() +def render_top_movers(compact: bool = False): + _inject_styles(compact=compact) st.markdown("""
{rows_html}
", unsafe_allow_html=True) + else: + _render_mover_tab(screens["gainers"], "top_movers_gainers_expanded") with tab_losers: - _render_mover_tab(screens["losers"], "top_movers_losers_expanded") + if compact: + quotes = _fetch_movers(screens["losers"]) + if not quotes: + st.caption("No data available.") + else: + rows_html = "".join(_mover_row_html(q) for q in quotes[:DEFAULT_VISIBLE_MOVERS]) + st.markdown(f"
{rows_html}
", unsafe_allow_html=True) + else: + _render_mover_tab(screens["losers"], "top_movers_losers_expanded") with tab_active: - _render_mover_tab(screens["active"], "top_movers_active_expanded") + if compact: + quotes = _fetch_movers(screens["active"]) + if not quotes: + st.caption("No data available.") + else: + rows_html = "".join(_mover_row_html(q) for q in quotes[:DEFAULT_VISIBLE_MOVERS]) + st.markdown(f"
{rows_html}
", unsafe_allow_html=True) + else: + _render_mover_tab(screens["active"], "top_movers_active_expanded") -- cgit v1.3-2-g0d8e