;; Affinity demo — Phase 7a render boundary annotations.
;;
;; Demonstrates :affinity annotations on defcomp and how they influence
;; the server/client render boundary decision. Components declare where
;; they prefer to render; the runtime combines this with IO analysis.
;; --- Demo components with different affinities ---
(defcomp (&key (label :as string?))
  (div (~tw :tokens "rounded border border-stone-200 bg-white p-4")
    (div (~tw :tokens "flex items-center gap-2 mb-2")
      (span (~tw :tokens "inline-block w-2 h-2 rounded-full bg-stone-400"))
      (span (~tw :tokens "text-sm font-mono text-stone-500") ":affinity :auto"))
    (p (~tw :tokens "text-stone-800") (or label "Pure component — no IO calls. Auto-detected as client-renderable."))))
