"""Shared HTMX full-page-vs-fragment response helper (Chapter 04). Every blueprint serving a dashboard tab (Ch08/09/10) uses this instead of duplicating the `if request.headers.get("HX-Request")` check, so the convention is identical everywhere. """ from __future__ import annotations from flask import Request, render_template def is_htmx(request: Request) -> bool: """True if this request was triggered by an hx-* attribute.""" return request.headers.get("HX-Request", "").lower() == "true" def render_htmx_aware(request: Request, *, full_template: str, partial_template: str, **ctx): """Render `full_template` on first load, `partial_template` on HTMX swaps.""" template = partial_template if is_htmx(request) else full_template return render_template(template, **ctx)