All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 6m0s
- 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>
66 lines
2.6 KiB
Plaintext
66 lines
2.6 KiB
Plaintext
;; Events entry card components (all events / page summary)
|
|
|
|
(defcomp ~events-entry-title-linked (&key href name)
|
|
(a :href href :class "hover:text-emerald-700"
|
|
(h2 :class "text-lg font-semibold text-stone-900" name)))
|
|
|
|
(defcomp ~events-entry-title-plain (&key name)
|
|
(h2 :class "text-lg font-semibold text-stone-900" name))
|
|
|
|
(defcomp ~events-entry-title-tile-linked (&key href name)
|
|
(a :href href :class "hover:text-emerald-700"
|
|
(h2 :class "text-base font-semibold text-stone-900 line-clamp-2" name)))
|
|
|
|
(defcomp ~events-entry-title-tile-plain (&key name)
|
|
(h2 :class "text-base font-semibold text-stone-900 line-clamp-2" name))
|
|
|
|
(defcomp ~events-entry-page-badge (&key href title)
|
|
(a :href href :class "inline-block px-2 py-0.5 rounded-full text-xs font-medium bg-amber-100 text-amber-800 hover:bg-amber-200" title))
|
|
|
|
(defcomp ~events-entry-cal-badge (&key name)
|
|
(span :class "inline-block px-2 py-0.5 rounded-full text-xs font-medium bg-sky-100 text-sky-700" name))
|
|
|
|
(defcomp ~events-entry-time-linked (&key href date-str)
|
|
(<> (a :href href :class "hover:text-stone-700" date-str) " · "))
|
|
|
|
(defcomp ~events-entry-time-plain (&key date-str)
|
|
(<> (span date-str) " · "))
|
|
|
|
(defcomp ~events-entry-cost (&key cost)
|
|
(div :class "mt-1 text-sm font-medium text-green-600" cost))
|
|
|
|
(defcomp ~events-entry-card (&key title badges time-parts cost widget)
|
|
(article :class "rounded-xl bg-white shadow-sm border border-stone-200 p-4"
|
|
(div :class "flex flex-col sm:flex-row sm:items-start justify-between gap-3"
|
|
(div :class "flex-1 min-w-0"
|
|
title
|
|
(div :class "flex flex-wrap items-center gap-1.5 mt-1" badges)
|
|
(div :class "mt-1 text-sm text-stone-500" time-parts)
|
|
cost)
|
|
widget)))
|
|
|
|
(defcomp ~events-entry-card-tile (&key title badges time cost widget)
|
|
(article :class "rounded-xl bg-white shadow-sm border border-stone-200 overflow-hidden"
|
|
(div :class "p-3"
|
|
title
|
|
(div :class "flex flex-wrap items-center gap-1 mt-1" badges)
|
|
(div :class "mt-1 text-xs text-stone-500" time)
|
|
cost)
|
|
widget))
|
|
|
|
(defcomp ~events-entry-tile-widget-wrapper (&key widget)
|
|
(div :class "border-t border-stone-100 px-3 py-2" widget))
|
|
|
|
(defcomp ~events-entry-widget-wrapper (&key widget)
|
|
(div :class "shrink-0" widget))
|
|
|
|
(defcomp ~events-date-separator (&key date-str)
|
|
(div :class "pt-2 pb-1"
|
|
(h3 :class "text-sm font-semibold text-stone-500 uppercase tracking-wide" date-str)))
|
|
|
|
(defcomp ~events-grid (&key grid-cls cards)
|
|
(div :class grid-cls cards))
|
|
|
|
(defcomp ~events-main-panel-body (&key toggle body)
|
|
(<> toggle body (div :class "pb-8")))
|