Files
rose-ash/sx/sx/examples.sx
giles d40a9c6796 sx-tools: WASM kernel updates, TW/CSSX rework, content refresh, new debugging tools
Build tooling: updated OCaml bootstrapper, compile-modules, bundle.sh, sx-build-all.
WASM browser: rebuilt sx_browser.bc.js/wasm, sx-platform-2.js, .sxbc bytecode files.
CSSX/Tailwind: reworked cssx.sx templates and tw-layout, added tw-type support.
Content: refreshed essays, plans, geography, reactive islands, docs, demos, handlers.
New tools: bisect_sxbc.sh, test-spa.js, render-trace.sx, morph playwright spec.
Tests: added test-match.sx, test-examples.sx, updated test-tw.sx and web tests.

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

111 lines
4.4 KiB
Plaintext

(defcomp
~examples/page-content
(&key
(title :as string)
(description :as string)
(demo-description :as string?)
demo
(sx-code :as string)
(sx-lang :as string?)
(handler-names :as list)
(handler-lang :as string?)
(comp-placeholder-id :as string?)
(wire-placeholder-id :as string?)
(wire-note :as string?)
(comp-heading :as string?)
(handler-heading :as string?))
(~docs/page
:title title
(p (~tw :tokens "text-stone-600 mb-6") description)
(error-boundary
(~examples/card
:title "Demo"
:description demo-description
(~examples/demo demo)))
(h3 (~tw :tokens "text-lg font-semibold text-stone-700 mt-8 mb-3") "S-expression")
(error-boundary
(~examples/source
:src-code (highlight sx-code (if sx-lang sx-lang "lisp"))))
(when
comp-placeholder-id
(<>
(h3
(~tw :tokens "text-lg font-semibold text-stone-700 mt-8 mb-3")
(if comp-heading comp-heading "Component"))
(error-boundary (~docs/placeholder :id comp-placeholder-id))))
(h3
(~tw :tokens "text-lg font-semibold text-stone-700 mt-8 mb-3")
(if handler-heading handler-heading "Server handler"))
(error-boundary
(~examples/source
:src-code (highlight
(join "\n\n" (map handler-source handler-names))
(if handler-lang handler-lang "sx"))))
(div
(~tw :tokens "flex items-center justify-between mt-6")
(h3 (~tw :tokens "text-lg font-semibold text-stone-700") "Wire response")
(~docs/clear-cache-btn))
(when wire-note (p (~tw :tokens "text-stone-500 text-sm mb-2") wire-note))
(when
wire-placeholder-id
(error-boundary (~docs/placeholder :id wire-placeholder-id)))))
(defcomp
~examples/reference-index-content
()
(~docs/page
:title "Reference"
(p
(~tw :tokens "text-stone-600 mb-6")
"Complete reference for the sx client library.")
(div
(~tw :tokens "grid gap-4 sm:grid-cols-2")
(a
:href "/sx/(geography.(hypermedia.(reference.attributes)))"
:sx-get "/sx/(geography.(hypermedia.(reference.attributes)))"
:sx-target "#sx-content"
:sx-select "#sx-content"
:sx-swap "outerHTML"
:sx-push-url "true"
(~tw :tokens "block p-5 rounded-lg border border-stone-200 hover:border-violet-300 hover:shadow-sm transition-all no-underline")
(h3 (~tw :tokens "text-lg font-semibold text-violet-700 mb-1") "Attributes")
(p
(~tw :tokens "text-stone-600 text-sm")
"All sx attributes — request verbs, behavior modifiers, and sx-unique features."))
(a
:href "/sx/(geography.(hypermedia.(reference.headers)))"
:sx-get "/sx/(geography.(hypermedia.(reference.headers)))"
:sx-target "#sx-content"
:sx-select "#sx-content"
:sx-swap "outerHTML"
:sx-push-url "true"
(~tw :tokens "block p-5 rounded-lg border border-stone-200 hover:border-violet-300 hover:shadow-sm transition-all no-underline")
(h3 (~tw :tokens "text-lg font-semibold text-violet-700 mb-1") "Headers")
(p
(~tw :tokens "text-stone-600 text-sm")
"Custom HTTP headers used to coordinate between the sx client and server."))
(a
:href "/sx/(geography.(hypermedia.(reference.events)))"
:sx-get "/sx/(geography.(hypermedia.(reference.events)))"
:sx-target "#sx-content"
:sx-select "#sx-content"
:sx-swap "outerHTML"
:sx-push-url "true"
(~tw :tokens "block p-5 rounded-lg border border-stone-200 hover:border-violet-300 hover:shadow-sm transition-all no-underline")
(h3 (~tw :tokens "text-lg font-semibold text-violet-700 mb-1") "Events")
(p
(~tw :tokens "text-stone-600 text-sm")
"DOM events fired during the sx request lifecycle."))
(a
:href "/sx/(geography.(hypermedia.(reference.js-api)))"
:sx-get "/sx/(geography.(hypermedia.(reference.js-api)))"
:sx-target "#sx-content"
:sx-select "#sx-content"
:sx-swap "outerHTML"
:sx-push-url "true"
(~tw :tokens "block p-5 rounded-lg border border-stone-200 hover:border-violet-300 hover:shadow-sm transition-all no-underline")
(h3 (~tw :tokens "text-lg font-semibold text-violet-700 mb-1") "JS API")
(p
(~tw :tokens "text-stone-600 text-sm")
"JavaScript functions for parsing, evaluating, and rendering s-expressions.")))))