- Server sends sexp source text, client (sexp.js) renders everything - SexpExpr marker class for nested sexp composition in serialize() - sexp_page() HTML shell with data-mount="body" for full page loads - sexp_response() returns text/sexp for OOB/partial responses - ~app-body layout component replaces ~app-layout (no raw!) - ~rich-text is the only component using raw! (for CMS HTML content) - Fragment endpoints return text/sexp, auto-wrapped in SexpExpr - All _*_html() helpers converted to _*_sexp() returning sexp source - Head auto-hoist: sexp.js moves meta/title/link/script[ld+json] from rendered body to document.head automatically - Unknown components render warning box instead of crashing page - Component kwargs preserve AST for lazy rendering (fixes <> in kwargs) - Fix unterminated paren in events/sexp/tickets.sexpr Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
35 lines
1.2 KiB
Plaintext
35 lines
1.2 KiB
Plaintext
;; Market price display components
|
|
|
|
(defcomp ~market-price-special (&key price)
|
|
(div :class "text-lg font-semibold text-emerald-700" price))
|
|
|
|
(defcomp ~market-price-regular-strike (&key price)
|
|
(div :class "text-sm line-through text-stone-500" price))
|
|
|
|
(defcomp ~market-price-regular (&key price)
|
|
(div :class "mt-1 text-lg font-semibold" price))
|
|
|
|
(defcomp ~market-price-line (&key inner)
|
|
(div :class "mt-1 flex items-baseline gap-2 justify-center" inner))
|
|
|
|
(defcomp ~market-header-price-special-label ()
|
|
(div :class "text-md font-bold text-emerald-700" "Special price"))
|
|
|
|
(defcomp ~market-header-price-special (&key price)
|
|
(div :class "text-xl font-semibold text-emerald-700" price))
|
|
|
|
(defcomp ~market-header-price-strike (&key price)
|
|
(div :class "text-base text-md line-through text-stone-500" price))
|
|
|
|
(defcomp ~market-header-price-regular-label ()
|
|
(div :class "hidden md:block text-xl font-bold" "Our price"))
|
|
|
|
(defcomp ~market-header-price-regular (&key price)
|
|
(div :class "text-xl font-semibold" price))
|
|
|
|
(defcomp ~market-header-rrp (&key rrp)
|
|
(div :class "text-base text-stone-400" (span "rrp:") " " (span rrp)))
|
|
|
|
(defcomp ~market-prices-row (&key inner)
|
|
(div :class "flex flex-row items-center justify-between md:gap-2 md:px-2" inner))
|