Files
leadradar/frontend/app.py
T

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()