162 lines
5.2 KiB
HTML
162 lines
5.2 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<title>BridgeSwarm – Advanced Chat</title>
|
||
<link rel="stylesheet" href="style.css">
|
||
</head>
|
||
<body>
|
||
<div class="app-container">
|
||
<aside class="sidebar">
|
||
<div class="sidebar-header">
|
||
<h2>Advanced Chat</h2>
|
||
</div>
|
||
|
||
<div class="user-profile">
|
||
<div class="avatar" id="avatar">?</div>
|
||
<div class="user-info">
|
||
<input type="text" id="nickname" placeholder="Nickname" maxlength="20">
|
||
<div class="public-key" id="publicKey" title="Click to copy">Your ID: (join to generate)</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="rooms-section">
|
||
<div class="section-header">
|
||
<h3>Rooms</h3>
|
||
<button class="btn-icon" id="btnCreateRoom" title="Create Room">+</button>
|
||
</div>
|
||
<ul class="room-list" id="roomList">
|
||
<li class="room active" data-room="lobby">
|
||
<span class="room-icon">#</span>
|
||
<span class="room-name">lobby</span>
|
||
<span class="room-count" id="room-lobby-count">0</span>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="users-section">
|
||
<div class="section-header">
|
||
<h3>Online Users <span id="userCount">(0)</span></h3>
|
||
</div>
|
||
<ul class="user-list" id="userList"></ul>
|
||
</div>
|
||
</aside>
|
||
|
||
<main class="chat-area">
|
||
<div class="chat-header">
|
||
<div class="chat-info">
|
||
<h2 id="currentRoom">#lobby</h2>
|
||
<span class="room-topic" id="roomTopic">General discussion</span>
|
||
</div>
|
||
<div class="chat-actions">
|
||
<button class="btn-icon" id="btnToggleEmoji" title="Emoji">😊</button>
|
||
<button class="btn-icon" id="btnSendFile" title="Send File">📎</button>
|
||
<button class="btn-icon" id="btnClearChat" title="Clear Chat">🗑️</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="messages" id="messages"></div>
|
||
|
||
<div class="typing-indicator" id="typingIndicator">
|
||
<span id="typingUsers"></span> is typing...
|
||
</div>
|
||
|
||
<div class="compose-area">
|
||
<div class="compose-tools">
|
||
<button class="btn-tool" id="btnBold" title="Bold"><strong>B</strong></button>
|
||
<button class="btn-tool" id="btnItalic" title="Italic"><em>I</em></button>
|
||
<button class="btn-tool" id="btnCode" title="Code"></></button>
|
||
<button class="btn-tool" id="btnEmoji2" title="Emoji">😀</button>
|
||
</div>
|
||
<div class="compose-input">
|
||
<textarea id="messageInput" placeholder="Type a message..." rows="1"></textarea>
|
||
<button class="btn-send" id="btnSend">Send</button>
|
||
</div>
|
||
</div>
|
||
</main>
|
||
|
||
<aside class="right-sidebar">
|
||
<div class="sidebar-section">
|
||
<h3>Room Info</h3>
|
||
<div class="info-item">
|
||
<span class="label">Members:</span>
|
||
<span id="memberCount">0</span>
|
||
</div>
|
||
<div class="info-item">
|
||
<span class="label">Messages:</span>
|
||
<span id="messageCount">0</span>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="sidebar-section">
|
||
<h3>Shared Files</h3>
|
||
<ul class="file-list" id="fileList"></ul>
|
||
</div>
|
||
|
||
<div class="sidebar-section">
|
||
<h3>Settings</h3>
|
||
<div class="setting-item">
|
||
<label>
|
||
<input type="checkbox" id="chkNotifications">
|
||
Notifications
|
||
</label>
|
||
</div>
|
||
<div class="setting-item">
|
||
<label>
|
||
<input type="checkbox" id="chkSounds" checked>
|
||
Sounds
|
||
</label>
|
||
</div>
|
||
<div class="setting-item">
|
||
<label>
|
||
<input type="checkbox" id="chkAutoScroll" checked>
|
||
Auto-scroll
|
||
</label>
|
||
</div>
|
||
</div>
|
||
</aside>
|
||
</div>
|
||
|
||
<div class="modal" id="createRoomModal">
|
||
<div class="modal-content">
|
||
<h3>Create New Room</h3>
|
||
<input type="text" id="newRoomName" placeholder="Room name" maxlength="30">
|
||
<input type="text" id="newRoomTopic" placeholder="Room topic (optional)">
|
||
<div class="modal-actions">
|
||
<button class="btn secondary" id="btnCancelCreate">Cancel</button>
|
||
<button class="btn primary" id="btnConfirmCreate">Create</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="modal" id="joinModal">
|
||
<div class="modal-content">
|
||
<h3>Join Chat</h3>
|
||
<div class="form-group">
|
||
<label>Topic/Address</label>
|
||
<input type="text" id="joinTopic" placeholder="e.g. bridge-swarm-advanced" value="bridge-swarm-advanced-v1">
|
||
</div>
|
||
<div class="form-group">
|
||
<label>Your Nickname</label>
|
||
<input type="text" id="joinNickname" placeholder="Enter your nickname" maxlength="20">
|
||
</div>
|
||
<div class="modal-actions">
|
||
<button class="btn primary" id="btnJoinChat">Join</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="toast-container" id="toastContainer"></div>
|
||
|
||
<div class="status-bar">
|
||
<span class="status" id="status">Disconnected</span>
|
||
<span class="connection-status" id="connectionStatus">●</span>
|
||
</div>
|
||
|
||
<input type="file" id="fileInput" hidden>
|
||
|
||
<script src="app.js"></script>
|
||
</body>
|
||
</html>
|