Files
rose-ash/sx/sx/streaming-demo/chunk.sx
giles 4f02f82f4e HS parser: fix number+comparison keyword collision, eval-hs uses hs-compile
Parser: skip unit suffix when next ident is a comparison keyword
(starts, ends, contains, matches, is, does, in, precedes, follows).
Fixes "123 starts with '12'" returning "123starts" instead of true.

eval-hs: use hs-compile directly instead of hs-to-sx-from-source with
"return " prefix, which was causing the parser to consume the comparison
as a string suffix.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 11:29:01 +00:00

13 lines
912 B
Plaintext

;; Generic streamed content chunk — rendered once per yield from the
;; async generator. The :content expression receives different bindings
;; each time, and the _stream_id determines which ~shared:pages/suspense slot it fills.
(defcomp (&key (stream-label :as string) (stream-color :as string) (stream-message :as string) (stream-time :as string))
(let ((colors (get stream-colors stream-color)))
(div :class (str "rounded-lg border p-5 space-y-3 " (get colors "border") " " (get colors "bg"))
(div (~tw :tokens "flex items-center gap-2")
(div :class (str "w-3 h-3 rounded-full " (get colors "dot")))
(h2 :class (str "text-lg font-semibold " (get colors "title")) stream-label))
(p :class (get colors "text") stream-message)
(p :class (str "text-sm " (get colors "sub"))
"Resolved at: " (code :class (str "px-1 rounded " (get colors "code")) stream-time)))))