Rename all 1,169 components to path-based names with namespace support
Component names now reflect filesystem location using / as path separator and : as namespace separator for shared components: ~sx-header → ~layouts/header ~layout-app-body → ~shared:layout/app-body ~blog-admin-dashboard → ~admin/dashboard 209 files, 4,941 replacements across all services. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
;; then content fills in as each IO resolves at staggered intervals.
|
||||
;;
|
||||
;; The :data expression is an async generator that yields three chunks
|
||||
;; at 1s, 3s, and 5s. Each chunk resolves a different ~suspense slot.
|
||||
;; at 1s, 3s, and 5s. Each chunk resolves a different ~shared:pages/suspense slot.
|
||||
|
||||
;; Color map for stream chunk styling (all string keys for get compatibility)
|
||||
(define stream-colors
|
||||
@@ -21,8 +21,8 @@
|
||||
|
||||
;; 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 ~suspense slot it fills.
|
||||
(defcomp ~streaming-demo-chunk (&key (stream-label :as string) (stream-color :as string) (stream-message :as string) (stream-time :as string))
|
||||
;; each time, and the _stream_id determines which ~shared:pages/suspense slot it fills.
|
||||
(defcomp ~streaming-demo/chunk (&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 :class "flex items-center gap-2"
|
||||
@@ -33,7 +33,7 @@
|
||||
"Resolved at: " (code :class (str "px-1 rounded " (get colors "code")) stream-time)))))
|
||||
|
||||
;; Skeleton placeholder for a stream slot
|
||||
(defcomp ~stream-skeleton ()
|
||||
(defcomp ~streaming-demo/stream-skeleton ()
|
||||
(div :class "rounded-lg border border-stone-200 bg-stone-50 p-5 space-y-3 animate-pulse"
|
||||
(div :class "flex items-center gap-2"
|
||||
(div :class "w-3 h-3 rounded-full bg-stone-300")
|
||||
@@ -42,7 +42,7 @@
|
||||
(div :class "h-4 bg-stone-200 rounded w-1/2")))
|
||||
|
||||
;; Static layout — takes &rest children where the three suspense slots go.
|
||||
(defcomp ~streaming-demo-layout (&rest children)
|
||||
(defcomp ~streaming-demo/layout (&rest children)
|
||||
(div :class "space-y-8"
|
||||
(div :class "border-b border-stone-200 pb-6"
|
||||
(h1 :class "text-2xl font-bold text-stone-900" "Streaming & Suspense Demo")
|
||||
@@ -75,7 +75,7 @@
|
||||
(h2 :class "text-lg font-semibold text-violet-900" "How Multi-Stream Works")
|
||||
(ol :class "list-decimal list-inside text-violet-800 space-y-2 text-sm"
|
||||
(li "Server evaluates " (code ":data") " — gets an " (em "async generator"))
|
||||
(li "HTML shell with three " (code "~suspense") " placeholders sent immediately")
|
||||
(li "HTML shell with three " (code "~shared:pages/suspense") " placeholders sent immediately")
|
||||
(li "Generator yields first chunk after 1s — server sends " (code "__sxResolve(\"stream-fast\", ...)"))
|
||||
(li "Generator yields second chunk after 3s — " (code "__sxResolve(\"stream-medium\", ...)"))
|
||||
(li "Generator yields third chunk after 5s — " (code "__sxResolve(\"stream-slow\", ...)"))
|
||||
@@ -87,7 +87,7 @@
|
||||
(ul :class "list-disc list-inside text-stone-600 space-y-1"
|
||||
(li (code "defpage :stream true") " — opts the page into chunked transfer encoding")
|
||||
(li (code ":data") " helper is an async generator — each " (code "yield") " resolves a different suspense slot")
|
||||
(li "Each yield includes " (code "_stream_id") " matching a " (code "~suspense :id") " in the shell")
|
||||
(li "Each yield includes " (code "_stream_id") " matching a " (code "~shared:pages/suspense :id") " in the shell")
|
||||
(li (code ":content") " expression is re-evaluated with each yield's bindings")
|
||||
(li "Headers stream concurrently — independent of the data generator")
|
||||
(li "Future: SSE/WebSocket for re-resolving slots after initial page load")))))
|
||||
|
||||
Reference in New Issue
Block a user