import os import streamlit as st from app.backend.constant import LEADERBOARD_MAP from app.backend.data_engine import DataEngine from app.backend.data_page import render_page # init global data engine data_engine = DataEngine() data_engine.jsons_to_df() st.session_state["data_engine"] = data_engine st.set_page_config(layout="wide") # Add custom CSS st.markdown(""" """, unsafe_allow_html=True) # Implement navigation using sidebar with st.sidebar: # Initialize session state if "selected_page" not in st.session_state: st.session_state.selected_page = "text" # Text Leaderboard as clickable button selected_class = "selected" if st.session_state.selected_page == "text" else "" if st.button("📚 Text Leaderboard", key="text", use_container_width=True, ): st.session_state.selected_page = "text" st.rerun() # Subpage list pages = [ ("law", "⚖️ Law"), ("multilingual", "🌎 Multilingual"), ("german", "🇩🇪 German"), ("code", "💻 Code"), ("tech", "🛠️ Tech") ] # Use container for indentation with st.container(): st.markdown('
', unsafe_allow_html=True) for page_id, page_title in pages: selected_class = "selected" if st.session_state.selected_page == page_id else "" if st.button(page_title, key=page_id, use_container_width=True): st.session_state.selected_page = page_id # st.rerun() st.markdown('
', unsafe_allow_html=True) # Add page title if st.session_state.selected_page == "text": st.title("📚 Text Leaderboard") elif st.session_state.selected_page == "law": st.title("⚖️ Law") elif st.session_state.selected_page == "multilingual": st.title("🌎 Multilingual") elif st.session_state.selected_page == "german": st.title("🇩🇪 German") elif st.session_state.selected_page == "code": st.title("💻 Code") elif st.session_state.selected_page == "tech": st.title("🛠️ Tech") # Render current selected page render_page(st.session_state.selected_page)