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,29 +3,37 @@
[ui.accordion :as accordion]))
(deftest accordion-class-list-test
(testing "closed accordion"
(testing "always returns base class"
(is (= ["accordion"] (accordion/accordion-class-list {})))
(is (= ["accordion"] (accordion/accordion-class-list {:open false}))))
(testing "open accordion"
(is (= ["accordion" "accordion--open"] (accordion/accordion-class-list {:open true})))))
(is (= ["accordion"] (accordion/accordion-class-list {:open true})))))
(deftest accordion-classes-test
(testing "space-joined output"
(is (= "accordion" (accordion/accordion-classes {})))
(is (= "accordion accordion--open" (accordion/accordion-classes {:open true})))))
(is (= "accordion" (accordion/accordion-classes {:open true})))))
(deftest accordion-component-test
(testing "closed accordion renders trigger only"
(testing "closed accordion uses details/summary"
(let [result (accordion/accordion {:title "Question?"} "Answer.")]
(is (= :div (first result)))
(is (= :details (first result)))
(is (= "accordion" (get-in result [1 :class])))
;; trigger is present
(is (= "accordion-trigger" (get-in result [2 1 :class])))))
(testing "open accordion includes content"
(let [result (accordion/accordion {:title "Q?" :open true} "A.")]
(is (= "accordion accordion--open" (get-in result [1 :class])))
;; should contain accordion-content div
(is (nil? (get-in result [1 :open])))
;; summary trigger is present
(is (= :summary (get-in result [2 0])))
(is (= "accordion-trigger" (get-in result [2 1 :class])))
;; content div is always present
(is (some #(and (vector? %) (= "accordion-content" (get-in % [1 :class])))
(rest (rest result)))))))
(rest (rest result))))))
(testing "open accordion has open attribute"
(let [result (accordion/accordion {:title "Q?" :open true} "A.")]
(is (= :details (first result)))
(is (true? (get-in result [1 :open])))))
(testing "children are inside content div"
(let [result (accordion/accordion {:title "T"} "Child1" "Child2")]
;; find the content div
(let [content-div (first (filter #(and (vector? %)
(= "accordion-content" (get-in % [1 :class])))
(rest (rest result))))]
(is (some? content-div))))))