File size: 3,781 Bytes
4893387
7a538d9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8095e4f
7a538d9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8095e4f
7a538d9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width,initial-scale=1" />
  <title>Promptly β€” Web Client</title>
  <link rel="stylesheet" href="styles.css" />
  <link rel="manifest" href="manifest.json" />
  <meta name="theme-color" content="#0b1220" />
</head>
<body>
  <div id="root" class="theme-dark">
    <!-- Top bar -->
    <header class="topbar glass">
      <div class="brand">
        <div class="logo">⚑</div>
        <div class="titles">
          <div class="title">Promptly</div>
          <div class="subtitle">https://promptly-az40.onrender.com</div>
        </div>
      </div>
      <div class="actions">
        <button id="themeToggle" class="icon-btn" title="Toggle theme">πŸŒ—</button>
        <div id="status" class="status disconnected">Disconnected</div>
      </div>
    </header>

    <!-- Login overlay -->
    <div id="loginOverlay" class="overlay">
      <div class="login-card glass">
        <div class="login-header">
          <div class="login-logo">⚑</div>
          <h2>Welcome to Promptly</h2>
          <p class="muted">Sign in to connect to the realtime chat</p>
        </div>

        <form id="loginForm" class="login-form" autocomplete="off">
          <label class="field">
            <span>Username</span>
            <input id="loginUsername" type="text" required maxlength="32" placeholder="Your username" />
          </label>
          <label class="field">
            <span>Password</span>
            <input id="loginPassword" type="password" required maxlength="64" placeholder="Your password" />
          </label>

          <div class="login-row">
            <button id="loginSubmit" class="btn primary" type="submit">Sign in</button>
            <button id="loginGuest" class="btn ghost" type="button">Continue as Guest</button>
          </div>

          <div class="login-foot muted">Secure connection over WSS Β· Supports Android file picker Β· No typed /send</div>
        </form>
      </div>
    </div>

    <!-- Main content -->
    <main class="main">
      <aside class="side glass">
        <div class="panel">
          <div class="panel-head">
            <div>
              <div class="mono small">WS URI:</div>
              <div class="mono">https://promptly-az40.onrender.com</div>
            </div>
          </div>

          <div class="panel-body">
            <div class="quick-title">Quick</div>
            <div class="muted small">Use the file button to upload. Files appear inline & downloadable.</div>
            <div class="rows">
              <div class="row"><strong>Mode:</strong> <span id="modeText">Handshake</span></div>
              <div class="row"><strong>Users:</strong> <span id="onlineCount">0</span></div>
            </div>
            <div class="controls-vertical">
              <button id="connectBtn" class="btn">Connect</button>
              <button id="disconnectBtn" class="btn ghost" disabled>Disconnect</button>
            </div>
          </div>
        </div>
      </aside>

      <section class="chat glass">
        <div id="messages" class="messages" aria-live="polite"></div>

        <div class="composer">
          <input id="input" class="input" placeholder="Type a message or use file button..." />
          <input id="filePicker" type="file" style="display:none" />
          <button id="fileBtn" class="icon-btn" title="Upload file">πŸ“</button>
          <button id="sendBtn" class="btn primary">Send</button>
        </div>
      </section>
    </main>

    <footer class="footer glass muted">
      Client UI β€” glass login β†’ chat. File upload via picker. Images preview + download. Dark / Light.
    </footer>
  </div>

  <script src="app.js"></script>
</body>
</html>