Eliminate Python s-expression string building across account, orders, federation, and cart services. Visual rendering logic now lives entirely in .sx defcomp components; Python files contain only data serialization, header/layout wiring, and thin wrappers that call defcomps. Phase 0: Shared DRY extraction — auth/orders header defcomps, format-decimal/ pluralize/escape/route-prefix primitives. Phase 1: Account — dashboard, newsletters, login/device/check-email content. Phase 2: Orders — order list, detail, filter, checkout return assembled defcomps. Phase 3: Federation — social nav, post cards, timeline, search, actors, notifications, compose, profile assembled defcomps. Phase 4: Cart — overview, page cart items/calendar/tickets/summary, admin, payments assembled defcomps; orders rendering reuses Phase 2 shared defcomps. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
32 lines
1.6 KiB
Plaintext
32 lines
1.6 KiB
Plaintext
;; Cart payments components
|
|
|
|
(defcomp ~cart-payments-panel (&key update-url csrf merchant-code placeholder input-cls sumup-configured checkout-prefix)
|
|
(section :class "p-4 max-w-lg mx-auto"
|
|
(~sumup-settings-form :update-url update-url :csrf csrf :merchant-code merchant-code
|
|
:placeholder placeholder :input-cls input-cls :sumup-configured sumup-configured
|
|
:checkout-prefix checkout-prefix :sx-select "#payments-panel")))
|
|
|
|
;; Assembled cart admin overview content
|
|
(defcomp ~cart-admin-content ()
|
|
(let* ((payments-href (url-for "defpage_cart_payments")))
|
|
(div :id "main-panel"
|
|
(div :class "flex items-center justify-between p-3 border-b"
|
|
(span :class "font-medium" (i :class "fa fa-credit-card text-purple-600 mr-1") " Payments")
|
|
(a :href payments-href :class "text-sm underline" "configure")))))
|
|
|
|
;; Assembled cart payments content
|
|
(defcomp ~cart-payments-content (&key page-config)
|
|
(let* ((sumup-configured (and page-config (get page-config "sumup_api_key")))
|
|
(merchant-code (or (get page-config "sumup_merchant_code") ""))
|
|
(checkout-prefix (or (get page-config "sumup_checkout_prefix") ""))
|
|
(placeholder (if sumup-configured "--------" "sup_sk_..."))
|
|
(input-cls "w-full px-3 py-1.5 text-sm border border-stone-300 rounded focus:ring-purple-500 focus:border-purple-500"))
|
|
(~cart-payments-panel
|
|
:update-url (url-for "page_admin.update_sumup")
|
|
:csrf (csrf-token)
|
|
:merchant-code merchant-code
|
|
:placeholder placeholder
|
|
:input-cls input-cls
|
|
:sumup-configured sumup-configured
|
|
:checkout-prefix checkout-prefix)))
|