From 869d1cec852c3a2427e490b50ea6aa8d02a01e19 Mon Sep 17 00:00:00 2001 From: Tobias Kunze Date: Thu, 11 Sep 2025 13:16:12 +0200 Subject: [PATCH 1/2] Make card list layout consistent --- .../service_instance_detail.html | 2 +- .../frontend/organizations/services.html | 44 ++++++++++--------- src/servala/static/css/servala.css | 18 +++----- 3 files changed, 31 insertions(+), 33 deletions(-) diff --git a/src/servala/frontend/templates/frontend/organizations/service_instance_detail.html b/src/servala/frontend/templates/frontend/organizations/service_instance_detail.html index a12efcf..148ecbb 100644 --- a/src/servala/frontend/templates/frontend/organizations/service_instance_detail.html +++ b/src/servala/frontend/templates/frontend/organizations/service_instance_detail.html @@ -22,7 +22,7 @@ {% endblock page_title_extra %} {% block content %}
-
+
diff --git a/src/servala/frontend/templates/frontend/organizations/services.html b/src/servala/frontend/templates/frontend/organizations/services.html index 2227e86..673f844 100644 --- a/src/servala/frontend/templates/frontend/organizations/services.html +++ b/src/servala/frontend/templates/frontend/organizations/services.html @@ -16,10 +16,10 @@
-
+
{% for service in services %} -
-
+
+
{% if service.logo %} {{ service.category }}
-
- {% if service.description %}

{{ service.description|urlize }}

{% endif %} +
+
+ {% if service.description %}

{{ service.description|urlize }}

{% endif %} +
-
{% empty %}
+

{% translate "No services found." %}

+
{% endfor %} diff --git a/src/servala/static/css/servala.css b/src/servala/static/css/servala.css index 2390b97..4b905a5 100644 --- a/src/servala/static/css/servala.css +++ b/src/servala/static/css/servala.css @@ -176,21 +176,15 @@ a.btn-keycloak { } /* Service cards equal height styling */ +.service-cards-container > * { + display: flex; + align-items: stretch; +} .service-cards-container .card { - height: 100%; - display: flex; - flex-direction: column; + width: 100%; } - -.service-cards-container .card-body { +.service-cards-container .card-content { flex-grow: 1; - display: flex; - flex-direction: column; - justify-content: flex-start; -} - -.service-cards-container .card-footer { - margin-top: auto; } /* CRD Form mandatory field styling */ -- 2.49.1 From 8aa42db71fe228498d265a89eaba2c683a63879b Mon Sep 17 00:00:00 2001 From: Tobias Kunze Date: Thu, 11 Sep 2025 13:20:13 +0200 Subject: [PATCH 2/2] 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; -- 2.49.1