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:
1 parent
56c9a1084c
commit
a5cb488b91
22 files changed
+2975
-597
No files matched your search
@@ -0,0 +1,87 @@
|
||||
<aside class="sidebar">
|
||||
<div class="sidebar__header">
|
||||
<div class="sidebar__badge">{{ league.name[0]|upper }}</div>
|
||||
<div class="sidebar__meta">
|
||||
<span class="sidebar__league-name">{{ league.name }}</span>
|
||||
{% if is_owner is defined and is_owner %}
|
||||
<span class="sidebar__role">Owner</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<nav class="sidebar__nav" aria-label="League navigation">
|
||||
<a class="sidebar__link {{ 'is-active' if request.endpoint == 'leagues.dashboard' }}"
|
||||
href="{{ url_for('leagues.dashboard', league_ref=league.url_ref) }}">
|
||||
<svg viewBox="0 0 16 16" fill="none" aria-hidden="true">
|
||||
<rect x="1" y="1" width="6" height="6" rx="1.5" stroke="currentColor" stroke-width="1.4"/>
|
||||
<rect x="9" y="1" width="6" height="6" rx="1.5" stroke="currentColor" stroke-width="1.4"/>
|
||||
<rect x="1" y="9" width="6" height="6" rx="1.5" stroke="currentColor" stroke-width="1.4"/>
|
||||
<rect x="9" y="9" width="6" height="6" rx="1.5" stroke="currentColor" stroke-width="1.4"/>
|
||||
</svg>
|
||||
<span>Overview</span>
|
||||
</a>
|
||||
|
||||
<a class="sidebar__link {{ 'is-active' if request.endpoint in ('leagues.sessions', 'leagues.session_detail', 'leagues.session_view') }}"
|
||||
href="{{ url_for('leagues.sessions', league_ref=league.url_ref) }}">
|
||||
<svg viewBox="0 0 16 16" fill="none" aria-hidden="true">
|
||||
<rect x="1" y="3" width="14" height="12" rx="2" stroke="currentColor" stroke-width="1.4"/>
|
||||
<path d="M5 1v4M11 1v4M1 7h14" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/>
|
||||
</svg>
|
||||
<span>Sessions</span>
|
||||
</a>
|
||||
|
||||
<a class="sidebar__link {{ 'is-active' if request.endpoint in ('leagues.players', 'leagues.player_detail') }}"
|
||||
href="{{ url_for('leagues.players', league_ref=league.url_ref) }}">
|
||||
<svg viewBox="0 0 16 16" fill="none" aria-hidden="true">
|
||||
<circle cx="6" cy="5.5" r="2.5" stroke="currentColor" stroke-width="1.4"/>
|
||||
<path d="M1 14c0-2.761 2.239-5 5-5" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/>
|
||||
<circle cx="11.5" cy="5.5" r="2" stroke="currentColor" stroke-width="1.3"/>
|
||||
<path d="M9 14c0-1.657 1.119-3.084 2.5-3.084S14 12.343 14 14" stroke="currentColor" stroke-width="1.3" stroke-linecap="round"/>
|
||||
</svg>
|
||||
<span>Players</span>
|
||||
</a>
|
||||
|
||||
<a class="sidebar__link {{ 'is-active' if request.endpoint == 'leagues.leaderboard' }}"
|
||||
href="{{ url_for('leagues.leaderboard', league_ref=league.url_ref) }}">
|
||||
<svg viewBox="0 0 16 16" fill="none" aria-hidden="true">
|
||||
<rect x="1" y="9" width="4" height="6" rx="1" stroke="currentColor" stroke-width="1.4"/>
|
||||
<rect x="6" y="5" width="4" height="10" rx="1" stroke="currentColor" stroke-width="1.4"/>
|
||||
<rect x="11" y="1" width="4" height="14" rx="1" stroke="currentColor" stroke-width="1.4"/>
|
||||
</svg>
|
||||
<span>Leaderboard</span>
|
||||
</a>
|
||||
|
||||
{% if is_logged_in %}
|
||||
<a class="sidebar__link {{ 'is-active' if request.endpoint == 'leagues.ledger' }}"
|
||||
href="{{ url_for('leagues.ledger', league_ref=league.url_ref) }}">
|
||||
<svg viewBox="0 0 16 16" fill="none" aria-hidden="true">
|
||||
<rect x="2" y="1" width="12" height="14" rx="2" stroke="currentColor" stroke-width="1.4"/>
|
||||
<path d="M5 5h6M5 8h6M5 11h3" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/>
|
||||
</svg>
|
||||
<span>Ledger</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
{% if is_owner is defined and is_owner %}
|
||||
<a class="sidebar__link {{ 'is-active' if request.endpoint == 'leagues.league_settings' }}"
|
||||
href="{{ url_for('leagues.league_settings', league_ref=league.url_ref) }}">
|
||||
<svg viewBox="0 0 16 16" fill="none" aria-hidden="true">
|
||||
<circle cx="8" cy="8" r="2.5" stroke="currentColor" stroke-width="1.4"/>
|
||||
<path d="M8 1v2M8 13v2M1 8h2M13 8h2M2.93 2.93l1.41 1.41M11.66 11.66l1.41 1.41M2.93 13.07l1.41-1.41M11.66 4.34l1.41-1.41" stroke="currentColor" stroke-width="1.4" stroke-linecap="round"/>
|
||||
</svg>
|
||||
<span>Settings</span>
|
||||
</a>
|
||||
{% endif %}
|
||||
</nav>
|
||||
|
||||
<div class="sidebar__footer">
|
||||
{% if is_logged_in %}
|
||||
<a class="sidebar__back" href="{{ url_for('leagues.index') }}">
|
||||
<svg viewBox="0 0 12 12" fill="none" aria-hidden="true">
|
||||
<path d="M7 2L3 6l4 4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
All leagues
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</aside>
|
||||
Reference in new issue
Block a user