- Add askama.toml for template configuration (ui/ directory) - Add Suite app documentation with flow diagrams (SVG) - App launcher, chat flow, drive flow, tasks flow - Individual app docs: chat, drive, tasks, mail, etc. - Add HTML templates for Suite apps - Base template with header and app launcher - Auth login page - Chat, Drive, Mail, Meet, Tasks templates - Partial templates for messages, sessions, notifications - Add Extensions type to AppState for type-erased storage - Add mTLS module for service-to-service authentication - Update web handlers to use new template paths (suite/) - Fix auth module to avoid axum-extra TypedHeader dependency
25 lines
871 B
HTML
25 lines
871 B
HTML
{% for message in messages %}
|
|
<div class="message {% if message.is_user %}user{% else %}bot{% endif %}" id="msg-{{ message.id }}">
|
|
<div class="message-avatar">
|
|
{% if message.is_user %}
|
|
<span class="avatar-user">U</span>
|
|
{% else %}
|
|
<span class="avatar-bot">🤖</span>
|
|
{% endif %}
|
|
</div>
|
|
<div class="message-content">
|
|
<div class="message-header">
|
|
<span class="message-sender">{{ message.sender }}</span>
|
|
<span class="message-time">{{ message.timestamp }}</span>
|
|
</div>
|
|
<div class="message-body">{{ message.content }}</div>
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
{% if messages.is_empty() %}
|
|
<div class="empty-messages">
|
|
<div class="empty-icon">💬</div>
|
|
<p>Start a conversation</p>
|
|
<p class="empty-hint">Type a message below or use voice input</p>
|
|
</div>
|
|
{% endif %}
|