(defcomp ()
  (~docs/page :title "The htmx/React Hybrid"  (~docs/section :title "Two good ideas" :id "ideas"    (p (~tw :tokens "text-stone-600")      "htmx: the server should render HTML. The client should swap it in. No client-side routing. No virtual DOM. No state management.")    (p (~tw :tokens "text-stone-600")      "React: UI should be composed from reusable components with parameters. Components encapsulate structure, style, and behavior.")    (p (~tw :tokens "text-stone-600")      "sx tries to combine both: server-rendered s-expressions with hypermedia attributes AND a component model with caching and composition."))  (~docs/section :title "What sx keeps from htmx" :id "from-htmx"    (ul (~tw :tokens "space-y-2 text-stone-600")      (li "Server generates the UI — no client-side data fetching or state")      (li "Hypermedia attributes (sx-get, sx-target, sx-swap) on any element")      (li "Partial page updates via swap/OOB — no full page reloads")      (li "Works with standard HTTP — no WebSocket or custom protocol required")))  (~docs/section :title "What sx adds from React" :id "from-react"    (ul (~tw :tokens "space-y-2 text-stone-600")      (li "defcomp — named, parameterized, composable components")      (li "Client-side rendering — server sends source, client renders DOM")      (li "Component caching — definitions cached in localStorage across navigations")      (li "On-demand CSS — only ship the rules that are used")))  (~docs/section :title "What sx gives up" :id "gives-up"    (ul (~tw :tokens "space-y-2 text-stone-600")      (li "No HTML output — sx sends s-expressions, not HTML. JS required.")      (li "Custom parser — the client needs sx.js to understand responses")      (li "Niche — no ecosystem, no community, no third-party support")      (li "Learning curve — s-expression syntax is unfamiliar to most web developers")))))
