;; Miscellaneous shared components for Phase 3 conversion (defcomp ~error-inline (&key message) (div :class "text-red-600 text-sm" (raw! message))) (defcomp ~notification-badge (&key count) (span :class "bg-red-500 text-white text-xs rounded-full px-1.5 py-0.5" (raw! count))) (defcomp ~cache-cleared (&key time-str) (span :class "text-green-600 font-bold" "Cache cleared at " (raw! time-str))) (defcomp ~error-list (&key items-html) (ul :class "list-disc pl-5 space-y-1 text-sm text-red-600" (raw! items-html))) (defcomp ~error-list-item (&key message) (li (raw! message))) (defcomp ~fragment-error (&key service) (p :class "text-sm text-red-600" "Service " (b (raw! service)) " is unavailable.")) (defcomp ~htmx-sentinel (&key id hx-get hx-trigger hx-swap class extra-attrs) (div :id id :hx-get hx-get :hx-trigger hx-trigger :hx-swap hx-swap :class class)) (defcomp ~nav-group-link (&key href hx-select nav-class label) (div :class "relative nav-group" (a :href href :hx-get href :hx-target "#main-panel" :hx-select hx-select :hx-swap "outerHTML" :hx-push-url "true" :class nav-class (raw! label))))