- Fix highlight() returning SxExpr so syntax-highlighted code renders as DOM elements instead of leaking SX source text into the page - Add Specs section that reads and displays canonical SX spec files from shared/sx/ref/ with syntax highlighting - Add "The Reflexive Web" essay on SX becoming a complete LISP with AI as native participant - Change logo from (<x>) to (<sx>) everywhere - Unify all backgrounds to bg-stone-100, center code blocks - Skip component/style cookie cache in dev mode so .sx edits are visible immediately on refresh without clearing localStorage Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
37 lines
1.9 KiB
Plaintext
37 lines
1.9 KiB
Plaintext
;; Spec viewer components — display canonical SX specification source
|
|
|
|
(defcomp ~spec-core-content (&key spec-files)
|
|
(~doc-page :title "SX Core Specification"
|
|
(p :class "text-stone-600 mb-6"
|
|
"SX is defined in SX. These four files constitute the canonical, self-hosting specification of the language. Each file is both documentation and executable definition — bootstrap compilers read them to generate native implementations.")
|
|
(div :class "space-y-8"
|
|
(map (fn (spec)
|
|
(div :class "space-y-3"
|
|
(div :class "flex items-baseline gap-3"
|
|
(h2 :class "text-2xl font-semibold text-stone-800"
|
|
(a :href (get spec "href")
|
|
:sx-get (get spec "href") :sx-target "#main-panel" :sx-select "#main-panel"
|
|
:sx-swap "outerHTML" :sx-push-url "true"
|
|
:class "text-violet-700 hover:text-violet-900 underline"
|
|
(get spec "title")))
|
|
(span :class "text-sm text-stone-400 font-mono" (get spec "filename")))
|
|
(p :class "text-stone-600" (get spec "desc"))
|
|
(div :class "bg-stone-100 rounded-lg p-5 max-h-72 overflow-y-auto"
|
|
(pre :class "text-xs leading-relaxed whitespace-pre-wrap break-words"
|
|
(code (highlight (get spec "source") "sx"))))))
|
|
spec-files))))
|
|
|
|
(defcomp ~spec-detail-content (&key spec-title spec-desc spec-filename spec-source)
|
|
(~doc-page :title spec-title
|
|
(div :class "flex items-baseline gap-3 mb-4"
|
|
(span :class "text-sm text-stone-400 font-mono" spec-filename)
|
|
(span :class "text-sm text-stone-500" spec-desc))
|
|
(div :class "bg-stone-100 rounded-lg p-5 mx-auto max-w-3xl"
|
|
(pre :class "text-sm leading-relaxed whitespace-pre-wrap break-words"
|
|
(code (highlight spec-source "sx"))))))
|
|
|
|
(defcomp ~spec-not-found (&key slug)
|
|
(~doc-page :title "Spec Not Found"
|
|
(p :class "text-stone-600"
|
|
"No specification found for \"" slug "\". This spec may not exist yet.")))
|