Replace Python sx_call loops with data-driven SX defcomps using map

Move rendering logic from Python for-loops building sx_call strings into
SX defcomp components that use map/lambda over data dicts. Python now
serializes display data into plain dicts and passes them via a single
sx_call; the SX layer handles iteration and conditional rendering.

Covers orders (rows, items, calendar, tickets), federation (timeline,
search, actors, profile activities), and blog (cards, pages, filters,
snippets, menu items, tag groups, page search, nav OOB).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-05 16:03:29 +00:00
parent 0c9dbd6657
commit c1ad6fd8d4
12 changed files with 608 additions and 452 deletions

View File

@@ -47,6 +47,17 @@
(h2 :class "text-base sm:text-lg font-semibold" "Event tickets in this order")
(ul :class "divide-y divide-stone-200 rounded-2xl border border-stone-200 bg-white/80" items)))
;; Data-driven ticket items (replaces Python loop)
(defcomp ~checkout-return-tickets-from-data (&key tickets)
(~checkout-return-tickets
:items (<> (map (lambda (tk)
(~checkout-return-ticket
:name (get tk "name") :pill (get tk "pill")
:state (get tk "state") :type-name (get tk "type_name")
:date-str (get tk "date_str") :code (get tk "code")
:price (get tk "price")))
(or tickets (list))))))
(defcomp ~checkout-return-content (&key summary items calendar tickets status-message)
(div :class "max-w-full px-1 py-1"
(when summary