{% extends 'superuser/base_superuser.html' %} {% block title %}Superuser Console | ChatLab{% endblock %} {% block dashboard_active %}active{% endblock %} {% block custom_styles %} /* ---- STAT CARDS ---- */ .su-stat-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-bottom: 20px; } @media (max-width: 900px) { .su-stat-grid { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 480px) { .su-stat-grid { grid-template-columns: 1fr 1fr; } } .su-stat-card { background: var(--bg-card); border: 1px solid var(--border-color); border-radius: 12px; padding: 18px 20px; display: flex; flex-direction: column; gap: 6px; box-shadow: 0 1px 3px rgba(0,0,0,0.05); transition: box-shadow 0.2s; } .su-stat-card:hover { box-shadow: 0 4px 14px rgba(0,0,0,0.09); } .su-stat-icon { width: 36px; height: 36px; border-radius: 10px; display: flex; align-items: center; justify-content: center; margin-bottom: 4px; } .su-stat-value { font-size: 28px; font-weight: 800; color: var(--text-primary); line-height: 1.1; } .su-stat-label { font-size: 12.5px; color: var(--text-muted); font-weight: 500; } .su-stat-sub { font-size: 11.5px; color: var(--text-muted); margin-top: 2px; } /* ---- CHARTS GRID ---- */ .su-charts-grid { display: grid; grid-template-columns: 2fr 1fr; gap: 16px; margin-bottom: 20px; } @media (max-width: 800px) { .su-charts-grid { grid-template-columns: 1fr; } } .su-chart-card { background: var(--bg-card); border: 1px solid var(--border-color); border-radius: 12px; padding: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.05); } .su-chart-title { font-size: 14px; font-weight: 700; color: var(--text-primary); margin-bottom: 16px; } .su-chart-subtitle { font-size: 11.5px; color: var(--text-muted); font-weight: 400; margin-left: 8px; } /* ---- TODAY MINI STATS ---- */ .su-today-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-bottom: 20px; } @media (max-width: 600px) { .su-today-row { grid-template-columns: 1fr; } } .su-today-card { background: var(--bg-card); border: 1px solid var(--border-color); border-radius: 12px; padding: 14px 18px; display: flex; align-items: center; gap: 14px; box-shadow: 0 1px 3px rgba(0,0,0,0.04); } .su-today-dot { width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0; } /* ---- SECTION HEADER ---- */ .su-section-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; } .su-section-title { font-size: 15px; font-weight: 700; color: var(--text-primary); } /* ---- TABLE STYLES ---- */ .su-table-wrap { background: var(--bg-card); border: 1px solid var(--border-color); border-radius: 12px; overflow: hidden; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.05); } .su-table-head { padding: 14px 18px; border-bottom: 1px solid var(--border-color); display: flex; justify-content: space-between; align-items: center; } .custom-table th { background: #f7f8fa; font-size: 11.5px; text-transform: uppercase; letter-spacing: 0.04em; } /* ---- BADGE ---- */ .badge-gemini { background: rgba(49, 162, 76, 0.1); color: var(--success-green); border: 1px solid rgba(49,162,76,0.2); } .badge-openai { background: rgba(99, 102, 241, 0.1); color: var(--web-indigo); border: 1px solid rgba(99,102,241,0.2); } {% endblock %} {% block workspace %}
ChatLab metrics, tenant companies, and chatbot profiles.
| Company | Chatbot | Provider | Model | API Key | Admin | Created | Actions |
|---|---|---|---|---|---|---|---|
| {{ company.name }} | {{ company.chatbot_name }} | {% if company.ai_provider == 'gemini' %} Gemini {% else %} OpenAI {% endif %} | {{ company.model_name }} | {% if company.api_key %} ✓ Set {% else %} Not set {% endif %} | {% if company.users.count %} {{ company.users.count }} user(s) {% else %} No admin {% endif %} | {{ company.created_at|date:"M d, Y" }} |
| Name | Phone | Page URL | Submitted | Action |
|---|---|---|---|---|
| {{ lead.name }} | {{ lead.phone }} | {% if lead.page_url %} {{ lead.page_url|truncatechars:40 }} {% else %} — {% endif %} | {{ lead.created_at|date:"M d, Y h:i A" }} |