Component names now reflect filesystem location using / as path separator and : as namespace separator for shared components: ~sx-header → ~layouts/header ~layout-app-body → ~shared:layout/app-body ~blog-admin-dashboard → ~admin/dashboard 209 files, 4,941 replacements across all services. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
69 lines
3.0 KiB
Plaintext
69 lines
3.0 KiB
Plaintext
;; Market price display components
|
|
|
|
(defcomp ~prices/special (&key (price :as string))
|
|
(div :class "text-lg font-semibold text-emerald-700" price))
|
|
|
|
(defcomp ~prices/regular-strike (&key (price :as string))
|
|
(div :class "text-sm line-through text-stone-500" price))
|
|
|
|
(defcomp ~prices/regular (&key (price :as string))
|
|
(div :class "mt-1 text-lg font-semibold" price))
|
|
|
|
(defcomp ~prices/line (&key (inner :as list))
|
|
(div :class "mt-1 flex items-baseline gap-2 justify-center" inner))
|
|
|
|
(defcomp ~prices/header-price-special-label ()
|
|
(div :class "text-md font-bold text-emerald-700" "Special price"))
|
|
|
|
(defcomp ~prices/header-price-special (&key (price :as string))
|
|
(div :class "text-xl font-semibold text-emerald-700" price))
|
|
|
|
(defcomp ~prices/header-price-strike (&key (price :as string))
|
|
(div :class "text-base text-md line-through text-stone-500" price))
|
|
|
|
(defcomp ~prices/header-price-regular-label ()
|
|
(div :class "hidden md:block text-xl font-bold" "Our price"))
|
|
|
|
(defcomp ~prices/header-price-regular (&key (price :as string))
|
|
(div :class "text-xl font-semibold" price))
|
|
|
|
(defcomp ~prices/header-rrp (&key (rrp :as string))
|
|
(div :class "text-base text-stone-400" (span "rrp:") " " (span rrp)))
|
|
|
|
(defcomp ~prices/row (&key (inner :as list))
|
|
(div :class "flex flex-row items-center justify-between md:gap-2 md:px-2" inner))
|
|
|
|
|
|
;; ---------------------------------------------------------------------------
|
|
;; Composition: prices header + cart button from data
|
|
;; ---------------------------------------------------------------------------
|
|
|
|
(defcomp ~prices/header-from-data (&key (cart-id :as string) (cart-action :as string) (csrf :as string) (quantity :as number?)
|
|
(cart-href :as string)
|
|
(sp-val :as number?) (sp-str :as string?) (rp-val :as number?) (rp-str :as string?) (rrp-str :as string?))
|
|
(~prices/row :inner
|
|
(<>
|
|
(if quantity
|
|
(~cart/add-quantity :cart-id cart-id :action cart-action :csrf csrf
|
|
:minus-val (str (- quantity 1)) :plus-val (str (+ quantity 1))
|
|
:quantity (str quantity) :cart-href cart-href)
|
|
(~cart/add-empty :cart-id cart-id :action cart-action :csrf csrf))
|
|
(when sp-val
|
|
(<> (~prices/header-price-special-label)
|
|
(~prices/header-price-special :price sp-str)
|
|
(when rp-val (~prices/header-price-strike :price rp-str))))
|
|
(when (and (not sp-val) rp-val)
|
|
(<> (~prices/header-price-regular-label)
|
|
(~prices/header-price-regular :price rp-str)))
|
|
(when rrp-str (~prices/header-rrp :rrp rrp-str)))))
|
|
|
|
;; Card price line from data (used in product cards)
|
|
(defcomp ~prices/card-price-from-data (&key (sp-val :as number?) (sp-str :as string?) (rp-val :as number?) (rp-str :as string?))
|
|
(~prices/line :inner
|
|
(<>
|
|
(when sp-val
|
|
(<> (~prices/special :price sp-str)
|
|
(when rp-val (~prices/regular-strike :price rp-str))))
|
|
(when (and (not sp-val) rp-val)
|
|
(~prices/regular :price rp-str)))))
|