- Extract shared components (empty-state, delete-btn, sentinel, crud-*, view-toggle, img-or-placeholder, avatar, sumup-settings-form, auth forms, order tables/detail/checkout) - Migrate all Python sx_call() callers to use shared components directly - Remove 55+ thin wrapper defcomps from domain .sx files - Remove trivial passthrough wrappers (blog-header-label, market-card-text, etc) - Unify duplicate auth flows (account + federation) into shared/sx/templates/auth.sx - Unify duplicate order views (cart + orders) into shared/sx/templates/orders.sx - Disable static file caching in dev (SEND_FILE_MAX_AGE_DEFAULT=0) - Add SX response validation and debug headers Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
42 lines
1.9 KiB
Plaintext
42 lines
1.9 KiB
Plaintext
;; Cart overview components
|
|
|
|
(defcomp ~cart-badge (&key icon text)
|
|
(span :class "inline-flex items-center gap-1 px-2 py-0.5 rounded-full bg-stone-100"
|
|
(i :class icon :aria-hidden "true") text))
|
|
|
|
(defcomp ~cart-badges-wrap (&key badges)
|
|
(div :class "mt-1 flex flex-wrap gap-2 text-xs text-stone-600"
|
|
badges))
|
|
|
|
(defcomp ~cart-group-card-img (&key src alt)
|
|
(img :src src :alt alt :class "h-16 w-16 rounded-xl object-cover border border-stone-200 flex-shrink-0"))
|
|
|
|
(defcomp ~cart-mp-subtitle (&key title)
|
|
(p :class "text-xs text-stone-500 truncate" title))
|
|
|
|
(defcomp ~cart-group-card (&key href img display-title subtitle badges total)
|
|
(a :href href :class "block rounded-2xl border border-stone-200 bg-white shadow-sm hover:shadow-md hover:border-stone-300 transition p-4 sm:p-5"
|
|
(div :class "flex items-start gap-4"
|
|
img
|
|
(div :class "flex-1 min-w-0"
|
|
(h3 :class "text-base sm:text-lg font-semibold text-stone-900 truncate" display-title)
|
|
subtitle badges)
|
|
(div :class "text-right flex-shrink-0"
|
|
(div :class "text-lg font-bold text-stone-900" total)
|
|
(div :class "mt-1 text-xs text-emerald-700 font-medium" "View cart \u2192")))))
|
|
|
|
(defcomp ~cart-orphan-card (&key badges total)
|
|
(div :class "rounded-2xl border border-dashed border-amber-300 bg-amber-50/60 p-4 sm:p-5"
|
|
(div :class "flex items-start gap-4"
|
|
(div :class "h-16 w-16 rounded-xl bg-amber-100 flex items-center justify-center flex-shrink-0"
|
|
(i :class "fa fa-shopping-cart text-amber-500 text-xl" :aria-hidden "true"))
|
|
(div :class "flex-1 min-w-0"
|
|
(h3 :class "text-base sm:text-lg font-semibold text-stone-900" "Other items")
|
|
badges)
|
|
(div :class "text-right flex-shrink-0"
|
|
(div :class "text-lg font-bold text-stone-900" total)))))
|
|
|
|
(defcomp ~cart-overview-panel (&key cards)
|
|
(div :class "max-w-full px-3 py-3 space-y-3"
|
|
(div :class "space-y-4" cards)))
|