Files
chat_grid/client/index.html

124 lines
6.0 KiB
HTML
Raw Normal View History

2026-02-20 08:16:43 -05:00
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Chat Grid</title>
</head>
<body>
<main class="app">
2026-03-09 01:21:02 -04:00
<h1 id="gridTitle">Chat Grid</h1>
<div id="connectionStatus" role="status" aria-live="polite" aria-atomic="true"></div>
<section id="loginView" class="auth-panel">
<h2>Login</h2>
<div class="auth-row">
<label for="authUsername">Username</label>
<input id="authUsername" type="text" maxlength="32" autocomplete="username" />
</div>
<div class="auth-row">
<label for="authPassword">Password</label>
<input id="authPassword" type="password" maxlength="64" autocomplete="current-password" />
</div>
</section>
<section id="registerView" class="auth-panel hidden">
<h2>Register</h2>
<div class="auth-row">
<label for="registerUsername">Username</label>
<input id="registerUsername" type="text" maxlength="32" autocomplete="username" />
</div>
<div class="auth-row">
<label for="registerPassword">Password</label>
<input id="registerPassword" type="password" maxlength="64" autocomplete="new-password" />
</div>
<div class="auth-row">
<label for="registerPasswordConfirm">Confirm Password</label>
<input id="registerPasswordConfirm" type="password" maxlength="64" autocomplete="new-password" />
</div>
<div class="auth-row">
<label for="registerEmail">Email (optional)</label>
<input id="registerEmail" type="email" maxlength="320" autocomplete="email" />
</div>
<p id="authPolicyHintRegister" class="auth-hint"></p>
</section>
<section id="authSessionView" class="auth-panel hidden">
<h2>Logged In</h2>
<p id="authSessionText" class="auth-hint"></p>
</section>
2026-02-20 08:16:43 -05:00
<div class="controls" id="button-container">
<button id="connectButton">Connect</button>
<span id="authModeSeparator" aria-hidden="true">or</span>
<button id="showRegisterButton" type="button">Register</button>
<button id="logoutButton" class="hidden">Log out</button>
2026-02-24 22:45:15 -05:00
<button id="settingsButton">Audio setup</button>
2026-02-20 08:16:43 -05:00
<button id="disconnectButton" class="hidden">Disconnect</button>
<button id="focusGridButton" class="hidden" aria-controls="gameCanvas">Chat Grid</button>
</div>
<div id="deviceSummary">
<p id="audioInputCurrent" class="hidden"></p>
<p id="audioOutputCurrent" class="hidden"></p>
</div>
<div id="status" role="region" aria-live="polite"></div>
<canvas
id="gameCanvas"
width="600"
height="600"
tabindex="0"
class="hidden"
aria-label="Chat Grid, press question mark for help."
2026-02-20 08:16:43 -05:00
></canvas>
<footer id="appFooter">
2026-03-08 22:18:18 -04:00
<section id="helpSection" class="updates-section hidden">
<h2>Help</h2>
<button id="helpToggle" type="button" aria-expanded="false" aria-controls="instructions">Show help</button>
<div id="instructions" class="hidden" hidden></div>
</section>
<section id="updatesSection" class="updates-section">
<h2>Latest Updates</h2>
<button id="updatesToggle" type="button" aria-expanded="false" aria-controls="updatesPanel">
Show updates
</button>
<div id="updatesPanel" class="hidden" hidden></div>
</section>
2026-03-08 23:17:35 -04:00
<small id="appVersion">Another AI experiment with Jage. Version</small>
<small id="appGithubLinkWrap">
<a id="appGithubLink" href="https://www.github.com/jage9/chat_grid">Chat Grid on Github</a>
</small>
</footer>
2026-02-20 08:16:43 -05:00
<div id="settingsModal" class="hidden" role="dialog" aria-modal="true" aria-labelledby="modalTitle">
<div class="modal-content">
<h2 id="modalTitle">Audio Settings</h2>
<label for="audioInputSelect">Microphone (Input)</label>
<select id="audioInputSelect"></select>
<label for="audioOutputSelect">Speakers (Output)</label>
<select id="audioOutputSelect"></select>
<button id="closeSettingsButton">Close</button>
</div>
</div>
2026-03-12 12:59:24 +01:00
<div id="mobileControls" class="mobile-controls" data-expanded="false" aria-label="Mobile game controls">
<button id="mobileControlsToggle" type="button" class="mobile-toggle-btn"
aria-expanded="false" aria-controls="mobileControlsBody">&#9776; Controls</button>
<div id="mobileControlsBody" class="mobile-controls-body">
<div class="dpad" role="group" aria-label="Movement">
<button id="dpadUp" type="button" class="dpad-btn dpad-up" aria-label="Move up">&#9650;</button>
<button id="dpadLeft" type="button" class="dpad-btn dpad-left" aria-label="Move left">&#9664;</button>
<div class="dpad-center" aria-hidden="true"></div>
<button id="dpadRight" type="button" class="dpad-btn dpad-right" aria-label="Move right">&#9654;</button>
<button id="dpadDown" type="button" class="dpad-btn dpad-down" aria-label="Move down">&#9660;</button>
</div>
<div class="mobile-actions" role="group" aria-label="Actions">
<button id="mobileBtnChat" type="button" class="mobile-action-btn">Chat</button>
<button id="mobileBtnUse" type="button" class="mobile-action-btn">Use</button>
<button id="mobileBtnLocateUser" type="button" class="mobile-action-btn">Find User</button>
<button id="mobileBtnLocateItem" type="button" class="mobile-action-btn">Find Item</button>
<button id="mobileBtnCommands" type="button" class="mobile-action-btn mobile-action-btn--wide">Commands</button>
</div>
</div>
</div>
2026-02-20 08:16:43 -05:00
</main>
<script src="%BASE_URL%version.js"></script>
<script type="module" src="/src/main.ts"></script>
</body>
</html>