fix(card): reduce internal spacing and bump footer button size

Refactor card to use flex column with gap-based spacing instead of
per-section padding, tightening the space between header, body, and
footer from size-6 to size-3. Add .card-footer .btn override to
render buttons at font-base size.
This commit is contained in:
Florian Schroedl
2026-03-03 17:08:29 +01:00
parent e4ee7b750e
commit 0dd8a9c8bf
4 changed files with 69 additions and 49 deletions

View File

@@ -3,9 +3,8 @@
(defn accordion-class-list
"Generate a vector of CSS class strings for an accordion item."
[{:keys [open]}]
(cond-> ["accordion"]
open (conj "accordion--open")))
[_opts]
["accordion"])
(defn accordion-classes
"Generate CSS class string for an accordion."
@@ -13,40 +12,40 @@
(str/join " " (accordion-class-list opts)))
(defn accordion
"Render an accordion (collapsible) item.
"Render an accordion (collapsible) item using native <details>/<summary>.
Props:
:title - trigger text
:open - boolean, whether expanded
:open - boolean, whether initially expanded
:class - additional CSS classes
:attrs - additional HTML attributes"
[{:keys [title open class attrs] :as _props} & children]
#?(:squint
(let [classes (cond-> (accordion-classes {:open open})
(let [classes (cond-> (accordion-classes {})
class (str " " class))
base-attrs (merge {:class classes} attrs)]
(into [:div base-attrs
[:div {:class "accordion-trigger"} title]]
(when open
[[:div {:class "accordion-content"}
(into [:div] children)]])))
base-attrs (cond-> (merge {:class classes} attrs)
open (assoc :open true))]
(into [:details base-attrs
[:summary {:class "accordion-trigger"} title]
[:div {:class "accordion-content"}]]
children))
:cljs
(let [cls (accordion-class-list {:open open})
(let [cls (accordion-class-list {})
classes (cond-> cls class (conj class))
base-attrs (merge {:class classes} attrs)]
(into [:div base-attrs
[:div {:class ["accordion-trigger"]} title]]
(when open
[[:div {:class ["accordion-content"]}
(into [:div] children)]])))
base-attrs (cond-> (merge {:class classes} attrs)
open (assoc :open true))]
(into [:details base-attrs
[:summary {:class ["accordion-trigger"]} title]
[:div {:class ["accordion-content"]}]]
children))
:clj
(let [classes (cond-> (accordion-classes {:open open})
(let [classes (cond-> (accordion-classes {})
class (str " " class))
base-attrs (merge {:class classes} attrs)]
(into [:div base-attrs
[:div {:class "accordion-trigger"} title]]
(when open
[[:div {:class "accordion-content"}
(into [:div] children)]])))))
base-attrs (cond-> (merge {:class classes} attrs)
open (assoc :open true))]
(into [:details base-attrs
[:summary {:class "accordion-trigger"} title]
[:div {:class "accordion-content"}]]
children))))