Spaces:
Build error
Build error
Create sidebar.py
Browse files- src/components/sidebar.py +40 -0
src/components/sidebar.py
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import streamlit as st
|
| 2 |
+
from datetime import datetime
|
| 3 |
+
|
| 4 |
+
class Sidebar:
|
| 5 |
+
@staticmethod
|
| 6 |
+
def display():
|
| 7 |
+
with st.sidebar:
|
| 8 |
+
st.subheader("👤 User Profile")
|
| 9 |
+
|
| 10 |
+
# User login/profile
|
| 11 |
+
if 'username' not in st.session_state:
|
| 12 |
+
with st.form("login_form"):
|
| 13 |
+
username = st.text_input("Enter your nickname")
|
| 14 |
+
if st.form_submit_button("Start Learning"):
|
| 15 |
+
if username:
|
| 16 |
+
st.session_state.username = username
|
| 17 |
+
st.rerun()
|
| 18 |
+
else:
|
| 19 |
+
st.write(f"Welcome, {st.session_state.username}! 👋")
|
| 20 |
+
if st.button("Sign Out"):
|
| 21 |
+
for key in ['username', 'messages', 'user_progress']:
|
| 22 |
+
if key in st.session_state:
|
| 23 |
+
del st.session_state[key]
|
| 24 |
+
st.rerun()
|
| 25 |
+
|
| 26 |
+
# Progress section
|
| 27 |
+
if 'username' in st.session_state:
|
| 28 |
+
st.subheader("📊 Your Progress")
|
| 29 |
+
completed = len(st.session_state.user_progress['completed_modules'])
|
| 30 |
+
st.progress(completed / 8, f"Completed {completed}/8 modules")
|
| 31 |
+
|
| 32 |
+
# Learning streak
|
| 33 |
+
if st.session_state.user_progress.get('learning_streak', 0) > 0:
|
| 34 |
+
st.write(f"🔥 Learning Streak: {st.session_state.user_progress['learning_streak']} days")
|
| 35 |
+
|
| 36 |
+
# Achievements section
|
| 37 |
+
if st.session_state.user_progress.get('achievements', []):
|
| 38 |
+
st.subheader("🏆 Achievements")
|
| 39 |
+
for achievement in st.session_state.user_progress['achievements']:
|
| 40 |
+
st.success(f"{achievement['name']} - {achievement['date']}")
|