visual redesign: landing, dashboard overview, session calendar (2.3.1)

- Redesign landing page hero with split layout, features section, and in-app session/result demos
- Add fixed sidebar scroll isolation (app-shell overflow lock pattern)
- Redesign leagues index cards with initial badge, podium leader chips, and action links
- Redesign league dashboard: color-coded nav tiles, cash/stats overview strip, session history heatmap calendar
- Dashboard cash stats use real cash only (excludes rollovers and carry-ins)
- Session history calendar: JS-driven full-year grid, year navigation, hover tooltips, full-width responsive layout
- Bump leaderboard tile color from gold to blue (distinct from ledger orange)
- Bump version to 2.3.1
This commit is contained in:
SowinskiBraeden committed 2026-06-26 21:24:00 -07:00
1 parent 56c9a1084c
commit a5cb488b91
22 files changed
+2975 -597

No files matched your search

+63 -22
View File
@@ -1,30 +1,71 @@
{% extends "base.html" %}
{% block title %}Create Account · myboker.org{% endblock %}
{% block page_class %}page--auth{% endblock %}
{% block content %}
<div class="form-shell narrow">
<form class="panel form-card" method="post">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
<div>
<p class="eyebrow">Owner account</p>
<h1 style="font-size:28px;margin-bottom:8px;">Create account</h1>
<p class="muted-text" style="margin-bottom:8px;">Accounts are for league owners and managers.</p>
<div class="auth-split">
<div class="auth-split__form-col">
<div class="auth-split__form-inner">
<a class="auth-split__brand" href="{{ url_for('public.home') }}">
<div class="auth-split__brand-mark"></div>
<span class="auth-split__brand-name">myboker<span class="auth-split__brand-tld">.org</span></span>
</a>
<h1 class="auth-split__title">Start your league.</h1>
<p class="auth-split__sub">Create an account to manage leagues, players, and sessions.</p>
<form method="post">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
<div class="auth-field">
<label for="email">Email</label>
<input id="email" type="email" name="email" autocomplete="email"
value="{{ form.email or '' }}" placeholder="you@example.com" required>
</div>
<div class="auth-field">
<label for="password">Password</label>
<input id="password" type="password" name="password"
autocomplete="new-password" placeholder="At least 8 characters" minlength="8" required>
</div>
<div class="auth-field">
<label for="confirm_password">Confirm password</label>
<input id="confirm_password" type="password" name="confirm_password"
autocomplete="new-password" placeholder="Repeat your password" minlength="8" required>
</div>
<button class="btn btn--primary auth-submit" type="submit">Create account →</button>
</form>
<p class="auth-alt">Already have an account? <a href="{{ url_for('account.login') }}">Sign in</a></p>
</div>
<label>
<span>Email</span>
<input type="email" name="email" autocomplete="email" value="{{ form.email or '' }}" required>
</label>
<label>
<span>Password</span>
<input type="password" name="password" autocomplete="new-password" minlength="8" required>
</label>
<label>
<span>Confirm password</span>
<input type="password" name="confirm_password" autocomplete="new-password" minlength="8" required>
</label>
<button class="btn btn--primary" type="submit">Create account</button>
<a class="btn btn--ghost" href="{{ url_for('account.login') }}">Login instead</a>
</form>
</div>
<div class="auth-split__visual" aria-hidden="true">
<div class="auth-visual__body">
<div class="auth-visual__icon">
<svg width="26" height="26" viewBox="0 0 26 26" fill="none">
<rect x="3" y="5" width="20" height="16" rx="3" stroke="rgba(155,140,240,.65)" stroke-width="1.4" fill="none"/>
<path d="M3 10h20" stroke="rgba(155,140,240,.45)" stroke-width="1.2"/>
<path d="M8 15h4M8 18h6" stroke="rgba(155,140,240,.55)" stroke-width="1.2" stroke-linecap="round"/>
</svg>
</div>
<p class="auth-visual__title">Free to start.</p>
<p class="auth-visual__sub">No credit card, no monthly fees, no payment processor taking a cut of your buy-ins.</p>
<div class="auth-visual__preview">
<div class="auth-visual__preview-kicker">What you get</div>
<div class="auth-visual__preview-row">
<span>Multiple leagues</span>
<strong style="color:var(--pos);"></strong>
</div>
<div class="auth-visual__preview-row">
<span>Full ledger history</span>
<strong style="color:var(--pos);"></strong>
</div>
<div class="auth-visual__preview-row">
<span>Platform fee</span>
<strong style="color:var(--muted);">$0</strong>
</div>
</div>
</div>
</div>
</div>
{% endblock %}