from dotenv import load_dotenv from streamlit_extras.stylable_container import stylable_container from app.ui.til_feedback import feedback_main from app.ui.course_learn_suggest_expectations import course_suggester_main import math import streamlit as st import subprocess import streamlit_router as sr load_dotenv() subprocess.run(["playwright", "install", "chromium"]) st.set_page_config(page_title='Growthy AI Workflows', page_icon='📰',layout="wide") def load_css(file_name): with open(file_name) as f: return f.read() def common_sidebar(): st.sidebar.markdown("# Sidebar Navigation") st.sidebar.markdown("---") st.sidebar.markdown("### Pages") st.sidebar.button("Home", on_click=lambda: router.redirect(*router.build("show_main_page"))) st.sidebar.button("TIL Feedback", on_click=lambda: router.redirect(*router.build("feedback_main_wrapper"))) st.sidebar.button("Course Suggester", on_click=lambda: router.redirect(*router.build("course_builder_main_wrapper"))) def show_main_page(): page_bg_img = ''' ''' st.markdown(page_bg_img, unsafe_allow_html=True) css = load_css("app/ui/main.css") st.markdown(f"", unsafe_allow_html=True) st.markdown('
Welcome to Growthy AI Workflows!
', unsafe_allow_html=True) st.markdown("---") card_info = [ {"title": "TIL Feedback", "description": "Provide your valuable feedback.", "key": "feedback_main_wrapper", "image": "📝"}, {"title": "Course Builder", "description": "Get suggestions for building courses", "key": "course_builder_main_wrapper", "image": "📚"}, ] num_cols = 3 num_rows = math.ceil(len(card_info) / num_cols) col1, col2, col3 = st.columns([1,8,1]) with col2: for row in range(num_rows): cols = st.columns(num_cols,gap="large") for col in range(num_cols): index = row * num_cols + col if index < len(card_info): card = card_info[index] with cols[col]: with st.container(height=280,border=False): with stylable_container( key="inside_container_with_border", css_styles=""" { background-color: #e9eaec; border-radius: 10px; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.1); # padding:10px; display: flex; flex-direction: row; flex-wrap: wrap; align-items: center; justify-content: center; border: 1px solid #C0C0C0; text-align: center; margin-bottom: 10px; } """, ): st.markdown( f"""
{card['image']}
""", unsafe_allow_html=True ) st.markdown( f"""
{card["title"]}

{card["description"]}

""", unsafe_allow_html=True ) if st.button("Explore", key=card["key"]): router.redirect(*router.build(f"{card['key']}")) st.markdown( """ """, unsafe_allow_html=True ) def feedback_main_wrapper(): common_sidebar() feedback_main() def course_builder_main_wrapper(): common_sidebar() course_suggester_main() router = sr.StreamlitRouter() router.register(show_main_page, '/') router.register(feedback_main_wrapper, '/feedback', methods=['GET']) router.register(course_builder_main_wrapper, '/course_builder') router.serve()