Annotates ~500 defcomp params across 62 files: market (5), blog (7), cart (5), events (3), federation (4), account (3), orders (2), shared templates (11), sx docs (14), plus remaining spec fn params (z3, test-framework, adapter-dom, adapter-async, engine, eval). Total annotations in codebase: 1043. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
46 lines
2.6 KiB
Plaintext
46 lines
2.6 KiB
Plaintext
(defcomp ~post-card (&key (title :as string) (slug :as string) (href :as string) (feature-image :as string?)
|
|
(excerpt :as string?) (status :as string?) (published-at :as string?) (updated-at :as string?)
|
|
(publish-requested :as boolean?) (hx-select :as string?) like widgets at-bar)
|
|
(article :class "border-b pb-6 last:border-b-0 relative"
|
|
(when like like)
|
|
(a :href href
|
|
:sx-get href
|
|
:sx-target "#main-panel"
|
|
:sx-select hx-select
|
|
:sx-swap "outerHTML"
|
|
:sx-push-url "true"
|
|
:class "block rounded-xl bg-white shadow hover:shadow-md transition overflow-hidden"
|
|
(header :class "mb-2 text-center"
|
|
(h2 :class "text-4xl font-bold text-stone-900" title)
|
|
(cond
|
|
(= status "draft")
|
|
(begin
|
|
(div :class "flex justify-center gap-2 mt-1"
|
|
(span :class "inline-block px-2 py-0.5 rounded-full text-xs font-semibold bg-amber-100 text-amber-800" "Draft")
|
|
(when publish-requested
|
|
(span :class "inline-block px-2 py-0.5 rounded-full text-xs font-semibold bg-blue-100 text-blue-800" "Publish requested")))
|
|
(when updated-at
|
|
(p :class "text-sm text-stone-500" (str "Updated: " updated-at))))
|
|
published-at
|
|
(p :class "text-sm text-stone-500" (str "Published: " published-at))))
|
|
(when feature-image
|
|
(div :class "mb-4"
|
|
(img :src feature-image :alt "" :class "rounded-lg w-full object-cover")))
|
|
(when excerpt
|
|
(p :class "text-stone-700 text-lg leading-relaxed text-center" excerpt)))
|
|
(when widgets widgets)
|
|
(when at-bar at-bar)))
|
|
|
|
(defcomp ~order-summary-card (&key (order-id :as string) (created-at :as string?) (description :as string?)
|
|
(status :as string?) (currency :as string?) (total-amount :as string?))
|
|
(div :class "rounded-2xl border border-stone-200 bg-white/80 p-4 sm:p-6 space-y-2 text-xs sm:text-sm text-stone-800"
|
|
(p (span :class "font-medium" "Order ID:") " " (span :class "font-mono" (str "#" order-id)))
|
|
(p (span :class "font-medium" "Created:") " " (or created-at "\u2014"))
|
|
(p (span :class "font-medium" "Description:") " " (or description "\u2013"))
|
|
(p (span :class "font-medium" "Status:") " " (~status-pill :status (or status "pending") :size "[11px]"))
|
|
(p (span :class "font-medium" "Currency:") " " (or currency "GBP"))
|
|
(p (span :class "font-medium" "Total:") " "
|
|
(if total-amount
|
|
(str (or currency "GBP") " " total-amount)
|
|
"\u2013"))))
|