import streamlit as st def init_session_state(): if "dark_mode" not in st.session_state: st.session_state.dark_mode = False if "code" not in st.session_state: st.session_state.code = "" if "stdin" not in st.session_state: st.session_state.stdin = "" if "language" not in st.session_state: st.session_state.language = "Python" # Default def apply_theme(): dark = st.session_state.dark_mode colors = { "bg": "#0f1620" if dark else "#f5f5f5", "panel_bg": "#1c2330" if dark else "#ffffff", "text": "#e3e8f1" if dark else "#1a1a1a", "accent": "#ff5252", "border": "#2a3240" if dark else "#dddddd", "shadow": "rgba(0,0,0,0.3)" if dark else "rgba(0,0,0,0.1)", } # Map selected language to Ace supported values language = st.session_state.get("language", "python").lower() if language == "c++": language = "c_cpp" elif language == "c#": language = "csharp" elif language == "javascript": language = "javascript" elif language == "python": language = "python" elif language == "java": language = "java" elif language == "c": language = "c" ace_theme = "monokai" if dark else "chrome" # Inject CSS styles st.markdown( f""" """, unsafe_allow_html=True, ) return colors, ace_theme