All checks were successful
Deploy FluentGerman.ai / deploy (push) Successful in 51s
78 lines
3.3 KiB
HTML
78 lines
3.3 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta name="description" content="FluentGerman.ai — Chat with your personal German tutor">
|
|
<title>FluentGerman.ai — Chat</title>
|
|
<link rel="stylesheet" href="/css/style.css">
|
|
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
|
|
<script src="https://cdn.jsdelivr.net/npm/dompurify@3/dist/purify.min.js"></script>
|
|
</head>
|
|
|
|
<body>
|
|
<!-- Navbar -->
|
|
<nav class="navbar">
|
|
<div class="logo">FluentGerman.ai</div>
|
|
<div class="navbar-right">
|
|
<span class="navbar-user" id="user-name"></span>
|
|
<button class="btn btn-sm btn-secondary" id="logout-btn">Logout</button>
|
|
</div>
|
|
</nav>
|
|
|
|
<!-- Chat -->
|
|
<div class="chat-container">
|
|
<div class="chat-messages" id="chat-messages">
|
|
<!-- Welcome section -->
|
|
<div class="welcome-section" id="welcome-section">
|
|
<div class="welcome-row">
|
|
<div class="avatar-container" id="avatar-container">
|
|
<div class="avatar-ring"></div>
|
|
<img class="avatar-img" id="avatar-img" src="" alt="Tutor avatar">
|
|
<div class="avatar-pulse"></div>
|
|
</div>
|
|
<div class="welcome-text">
|
|
<h2 class="welcome-greeting" id="welcome-greeting">Hallo! 👋</h2>
|
|
<p class="welcome-subtitle" id="welcome-subtitle">Your personal AI German tutor</p>
|
|
<p class="welcome-meta" id="welcome-meta"></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="chat-input-bar">
|
|
<!-- Voice toggle -->
|
|
<label class="voice-toggle" title="Toggle voice mode">
|
|
<input type="checkbox" id="voice-toggle-input">
|
|
<span class="voice-toggle-slider"></span>
|
|
<svg class="voice-toggle-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
<path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z" />
|
|
<path d="M19 10v2a7 7 0 0 1-14 0v-2" />
|
|
<line x1="12" y1="19" x2="12" y2="23" />
|
|
<line x1="8" y1="23" x2="16" y2="23" />
|
|
</svg>
|
|
</label>
|
|
|
|
<input type="text" id="chat-input" placeholder="Type your message..." autocomplete="off">
|
|
<button class="btn btn-primary" id="send-btn">Send</button>
|
|
|
|
<!-- Mic button (visible only when voice mode ON) -->
|
|
<button class="mic-btn hidden" id="mic-btn" title="Hold to speak">
|
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
|
stroke-linejoin="round">
|
|
<path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z" />
|
|
<path d="M19 10v2a7 7 0 0 1-14 0v-2" />
|
|
<line x1="12" y1="19" x2="12" y2="23" />
|
|
<line x1="8" y1="23" x2="16" y2="23" />
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="/js/api.js"></script>
|
|
<script src="/js/voice.js"></script>
|
|
<script src="/js/chat.js"></script>
|
|
</body>
|
|
|
|
</html> |