Files
Poker/public/table.html
T
agomizi1cmandClaude Opus 5.5 b2c91062f1 Initial commit: private Texas Hold'em ring game site (lobby + table stub)
- 6-digit access key gate with long-lived HttpOnly cookie, brute-force limits
- Lobby with saved player name and live table list
- Table creation (name, starting stack, blinds, blind timer)
- Table play screen stub (seats, button/SB/BB, phase, blinds, timer)
- Security hardening: strict CSP, origin checks, host pinning, input sanitizing

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 16:51:15 +09:00

82 lines
3.1 KiB
HTML

<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
<meta name="theme-color" content="#24493b">
<meta name="robots" content="noindex, nofollow">
<title>テーブル - Hold'em Night</title>
<link rel="stylesheet" href="/assets/style.css">
</head>
<body class="table-page">
<div class="conn-lost" id="conn-lost" hidden>接続が切れました。再接続中…</div>
<main class="wrap" id="main" hidden>
<div class="table-header">
<button class="icon-btn leave" id="leave" aria-label="退席する" title="退席する">⏏</button>
<h1 id="table-name"></h1>
<button class="icon-btn" id="share" aria-label="サイトのリンクをコピー" title="サイトのリンクをコピー">🔗</button>
</div>
<div class="host-controls" id="host-controls" hidden>
<button class="btn btn-green" id="start">START ▶</button>
<button class="btn btn-dark" id="next-phase" title="プレイ未実装のため手動でフェーズを進めます">次へ(仮)</button>
<button class="btn btn-dark" id="pause">一時停止</button>
</div>
<div class="host-spacer" id="host-spacer"></div>
<div class="level-bar">
<span class="lv" id="level"></span>
<span class="blinds" id="blinds"></span>
<span class="timer" id="timer"></span>
</div>
<div class="level-sub">
<span id="next-blinds"></span>
<span id="stack-info"></span>
</div>
<div class="felt-area" id="felt-area">
<div class="felt">
<div class="pot-label">POT</div>
<div class="pot" id="pot">$0</div>
<div class="phase" id="phase">WAITING</div>
<div class="hand-no" id="hand-no"></div>
</div>
<div id="seats"></div>
</div>
<div class="spectator-note" id="spectator-note" hidden>満席のため観戦中です</div>
</main>
<div class="action-bar" id="action-bar" hidden>
<div class="inner">
<div class="my-stack"><span class="wallet">👛</span><span id="my-stack">$0</span></div>
<div class="actions">
<button class="btn" disabled>Fold</button>
<button class="btn" disabled>Check</button>
<button class="btn" disabled>Raise</button>
</div>
</div>
</div>
<div class="center-message" id="not-found" hidden>
<h2>テーブルが見つかりません</h2>
<p>終了したか、URLが間違っている可能性があります。</p>
<a class="btn btn-blue" href="/">ロビーへ戻る</a>
</div>
<div class="modal-backdrop" id="name-modal" hidden>
<form class="modal" id="name-form">
<h2>名前を入力</h2>
<p class="hint">テーブルで表示される名前です</p>
<input id="name-input" type="text" maxlength="12" placeholder="例: とらのすけ" class="mt-12" autocomplete="nickname">
<button class="btn btn-orange btn-block mt-12" type="submit">参加する</button>
</form>
</div>
<script src="/socket.io/socket.io.js"></script>
<script src="/assets/common.js"></script>
<script src="/assets/table.js"></script>
</body>
</html>