From 8aa42db71fe228498d265a89eaba2c683a63879b Mon Sep 17 00:00:00 2001 From: Tobias Kunze Date: Thu, 11 Sep 2025 13:20:13 +0200 Subject: [PATCH] Extract card layout into reusable CSS classes --- .../organizations/service_detail.html | 27 +++++----- .../frontend/organizations/services.html | 45 ++++++++-------- src/servala/static/css/servala.css | 52 ++++++++++++++++++- 3 files changed, 85 insertions(+), 39 deletions(-) diff --git a/src/servala/frontend/templates/frontend/organizations/service_detail.html b/src/servala/frontend/templates/frontend/organizations/service_detail.html index d9ca433..55cf31e 100644 --- a/src/servala/frontend/templates/frontend/organizations/service_detail.html +++ b/src/servala/frontend/templates/frontend/organizations/service_detail.html @@ -46,28 +46,27 @@ {% endif %} -
+
{% for offering in service.offerings.all %}
-
+ -
+
{% for service in services %}
-
+
-
@@ -60,7 +57,7 @@
-

{% translate "No services found." %}

+

{% translate "No services found." %}

diff --git a/src/servala/static/css/servala.css b/src/servala/static/css/servala.css index 4b905a5..9a59b8f 100644 --- a/src/servala/static/css/servala.css +++ b/src/servala/static/css/servala.css @@ -175,7 +175,57 @@ a.btn-keycloak { padding-right: 28px; } -/* Service cards equal height styling */ +/* Card layout utilities - reusable for any card grid */ +.card-grid { + display: flex; + flex-wrap: wrap; +} + +.card-grid > * { + display: flex; + align-items: stretch; +} + +.card-grid .card { + width: 100%; + display: flex; + flex-direction: column; +} + +.card-grid .card-content { + flex-grow: 1; +} + +.card-grid .card-body { + flex-grow: 1; +} + +/* Card header with logo styling */ +.card-header-with-logo { + display: flex; + align-items: center; +} + +.card-header-with-logo img { + max-width: 48px; + max-height: 48px; + margin-right: 1rem; +} + +.card-header-with-logo .card-header-content { + display: flex; + flex-direction: column; +} + +.card-header-with-logo .card-header-content h4 { + margin-bottom: 0; +} + +.card-header-with-logo .card-header-content .text-muted { + font-size: 0.875rem; +} + +/* Backwards compatibility - keep existing service-cards-container class */ .service-cards-container > * { display: flex; align-items: stretch;