89 lines
3.1 KiB
Python
89 lines
3.1 KiB
Python
import os
|
|
import streamlit as st
|
|
|
|
st.set_page_config(
|
|
page_title="LeadRadar - Prospecção Ativa & Funil CRM",
|
|
page_icon="📡",
|
|
layout="wide",
|
|
initial_sidebar_state="expanded"
|
|
)
|
|
|
|
# Carregar CSS customizado Dark Tech Slate
|
|
css_path = os.path.join(os.path.dirname(__file__), 'styles', 'style.css')
|
|
if os.path.exists(css_path):
|
|
with open(css_path, 'r', encoding='utf-8') as f:
|
|
st.markdown(f"<style>{f.read()}</style>", unsafe_allow_html=True)
|
|
|
|
from api_client import APIClient
|
|
from views.login_view import render_login_view
|
|
from views.radar_busca import render_radar_busca_view
|
|
from views.crm_kanban import render_crm_kanban_view
|
|
from views.analytical_table import render_analytical_table_view
|
|
from views.admin_users import render_admin_users_view
|
|
from views.profile import render_profile_view
|
|
|
|
def main():
|
|
api_client = APIClient()
|
|
|
|
# Verificar se o usuário está autenticado
|
|
if not st.session_state.get('access_token'):
|
|
render_login_view(api_client)
|
|
return
|
|
|
|
user_info = st.session_state.get('user', {})
|
|
is_admin = user_info.get('role') == 'admin'
|
|
|
|
# Barra Lateral (Sidebar Navigation)
|
|
with st.sidebar:
|
|
st.markdown(
|
|
f"""
|
|
<div style="text-align: center; margin-bottom: 20px;">
|
|
<h2 style="color: #58A6FF; margin-bottom: 0;">📡 LeadRadar</h2>
|
|
<small style="color: #8B949E;">Prospecção & Mini-CRM</small>
|
|
</div>
|
|
""", unsafe_allow_html=True
|
|
)
|
|
|
|
st.markdown(
|
|
f"""
|
|
<div style="background-color: #161B22; border: 1px solid #30363D; border-radius: 8px; padding: 10px; margin-bottom: 20px;">
|
|
<div style="font-weight: 600; color: #E6EDF3;">{user_info.get('nome', 'Usuário')}</div>
|
|
<div style="font-size: 0.8rem; color: #8B949E;">{user_info.get('email', '')}</div>
|
|
<span class="lead-badge" style="margin-top: 6px;">{user_info.get('role', 'user').upper()}</span>
|
|
</div>
|
|
""", unsafe_allow_html=True
|
|
)
|
|
|
|
nav_options = [
|
|
"📡 Radar de Busca",
|
|
"📌 Funil CRM (Kanban)",
|
|
"📊 Tabela Analítica"
|
|
]
|
|
|
|
if is_admin:
|
|
nav_options.append("🛡️ Usuários (Admin)")
|
|
|
|
nav_options.append("👤 Meu Perfil")
|
|
|
|
selected_page = st.radio("Navegação Principal", nav_options, index=0)
|
|
|
|
st.markdown("---")
|
|
if st.button("🚪 Sair (Logout)", use_container_width=True):
|
|
api_client.logout()
|
|
st.rerun()
|
|
|
|
# Renderização da Página Selecionada
|
|
if selected_page == "📡 Radar de Busca":
|
|
render_radar_busca_view(api_client)
|
|
elif selected_page == "📌 Funil CRM (Kanban)":
|
|
render_crm_kanban_view(api_client)
|
|
elif selected_page == "📊 Tabela Analítica":
|
|
render_analytical_table_view(api_client)
|
|
elif selected_page == "🛡️ Usuários (Admin)":
|
|
render_admin_users_view(api_client)
|
|
elif selected_page == "👤 Meu Perfil":
|
|
render_profile_view(api_client)
|
|
|
|
if __name__ == '__main__':
|
|
main()
|