* Let marketing_navbar take an optional banner
Add an optional `banner` argument to the shared marketing_navbar() so a
site can supply its own top banner; it defaults to the current hosting
banner, leaving docs/blog unchanged. Split logo+nav into a memoized
_navbar_header(), and keep the default-banner path memoized via
_default_marketing_navbar() so pages using the default lose no per-page
deduplication.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* Extract navbar wrapper class into a constant
Addresses review feedback: the wrapper class_name was duplicated across
_default_marketing_navbar and the custom-banner branch. Hoist it into
_NAVBAR_WRAPPER_CLASS so the two cannot drift.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Palash Awasthi <palash@reflex.dev>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>