{#
base.html — Application shell template.
Active page convention (AR-8, architecture.md):
EVERY render_template() call in every blueprint MUST pass active_page=''.
Blueprint names to use:
'dashboard', 'transactions', 'budgets', 'bills',
'paydown', 'import_pdf', 'analytics', 'settings'
The nav uses this variable to set aria-current="page" on the active link.
Enforced by: tests/test_blueprints/test_base_template.py
Flash message categories (AR-14):
'success' → flash-success (green)
'error' → flash-error (red)
'warning' → flash-warning (amber)
'info' → flash (blue, base class only — no modifier)
Use ONLY these 4 categories. Any other value will render unstyled.
#}
{% block title %}Financials{% endblock %}
{# Primer CSS — local copy. File is downloaded in Story 2.3 (static/vendor/primer/primer.css).
This link is correct; the file will not exist until Story 2.3. Tests still pass. #}
{# Domain semantic tokens — stub file present; fully implemented in Story 2.3 #}
{# App-specific styles — stub file present; fully implemented in Story 2.3 #}
{# Skip to main content — WCAG 2.1 AA keyboard accessibility #}
Skip to main content
{# ── Sidebar Navigation (240px fixed) ──────────────────────────────────── #}
{# Story 2.3 will add Primer ActionList classes once vendor CSS is available #}
{# ── Main Content Area ──────────────────────────────────────────────────── #}
{# Flash messages — AR-14: only use success / error / warning / info #}
{% with messages = get_flashed_messages(with_categories=True) %}
{% if messages %}
{% for category, message in messages %}
{# JS utilities — stubs present; fully implemented in Story 2.4 #}
{# Global JS variable so inline scripts can prefix API calls correctly
when the app is served under a sub-path (e.g. /financials). #}
{% block scripts %}{% endblock %}