Three issues fixed:
- async_eval_slot_to_sx (and async_eval_to_sx) was calling serialize()
on plain strings returned by page helpers, quoting them as literals
instead of treating them as sx source. Added str check to wrap
directly in SxExpr.
- _render_to_sx_with_env passed layout kwargs only as env free
variables, but _aser_component defaults all declared params to NIL
regardless of env. Now builds the AST with extra_env entries as
keyword args so they bind through normal param mechanism.
- _nav_items_sx returned plain str; changed to SxExpr so nav fragments
serialize unquoted when passed as layout kwargs.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>