diff --git a/designsafe/apps/workspace/templates/designsafe/apps/workspace/app_card.html b/designsafe/apps/workspace/templates/designsafe/apps/workspace/app_card.html
index 1e1e6f3bde..e31df8ea1f 100644
--- a/designsafe/apps/workspace/templates/designsafe/apps/workspace/app_card.html
+++ b/designsafe/apps/workspace/templates/designsafe/apps/workspace/app_card.html
@@ -1,5 +1,5 @@
-
- {{app.label}}
+
+ {{app.label}}
{{app.description}}
diff --git a/designsafe/apps/workspace/templates/designsafe/apps/workspace/app_listing_plugin.html b/designsafe/apps/workspace/templates/designsafe/apps/workspace/app_listing_plugin.html
index 6d0a96afb7..69ffb3ce88 100644
--- a/designsafe/apps/workspace/templates/designsafe/apps/workspace/app_listing_plugin.html
+++ b/designsafe/apps/workspace/templates/designsafe/apps/workspace/app_listing_plugin.html
@@ -1,5 +1,5 @@
{{instance.app_category}}
-
+
{% for app in listing %}
{% include "designsafe/apps/workspace/app_card.html" with app=app %}
{% endfor %}
diff --git a/designsafe/apps/workspace/templates/designsafe/apps/workspace/app_variant_plugin.html b/designsafe/apps/workspace/templates/designsafe/apps/workspace/app_variant_plugin.html
index ac7a2bf29d..f9786ba005 100644
--- a/designsafe/apps/workspace/templates/designsafe/apps/workspace/app_variant_plugin.html
+++ b/designsafe/apps/workspace/templates/designsafe/apps/workspace/app_variant_plugin.html
@@ -1,15 +1,10 @@
-
- Select a Version
+
+ Select a Version
{% for variant in listing %}
-
+ {{variant.label}}
+ Get Started
{{variant.description}}
- {% if listing.count > forloop.counter %}
-
- {% endif %}
{% endfor %}
diff --git a/designsafe/apps/workspace/templates/designsafe/apps/workspace/related_apps_plugin.html b/designsafe/apps/workspace/templates/designsafe/apps/workspace/related_apps_plugin.html
index 8776b428b8..8e1c778649 100644
--- a/designsafe/apps/workspace/templates/designsafe/apps/workspace/related_apps_plugin.html
+++ b/designsafe/apps/workspace/templates/designsafe/apps/workspace/related_apps_plugin.html
@@ -1,5 +1,5 @@
Related Applications
-
+
{% for app in listing %}
{% include "designsafe/apps/workspace/app_card.html" with app=app %}
{% endfor %}
diff --git a/designsafe/static/styles/app-card.css b/designsafe/static/styles/app-card.css
index b95a9cf0cb..9c2e91cabf 100644
--- a/designsafe/static/styles/app-card.css
+++ b/designsafe/static/styles/app-card.css
@@ -5,16 +5,9 @@
-/* Card */
-/* To stretch card to fill column height */
-[class^="col-"] .c-app-card {
- height: 100%;
- min-height: 230px;
-}
-
/* Title */
.c-app-card__title {
- margin-top: 0.5em;
+ margin-top: 1em;
margin-bottom: 0;
}
.c-app-card__title > .icon::before {
@@ -23,7 +16,7 @@
/* Description */
.c-app-card__desc {
- padding-inline: 1rem;
+ padding-inline: 1.5rem;
margin-block: 1.5rem;
}
@@ -89,3 +82,7 @@ a.c-app-card:active {
.c-app-card__flags > *:has(strong) {
background-color: #ECE4BF;
}
+
+.c-app-card__repo {
+ font-style: italic;
+}
diff --git a/designsafe/static/styles/app-grid.css b/designsafe/static/styles/app-grid.css
new file mode 100644
index 0000000000..fcf4eeb76f
--- /dev/null
+++ b/designsafe/static/styles/app-grid.css
@@ -0,0 +1,12 @@
+.o-app-grid {
+ display: grid;
+ gap: 30px; /* mimics Bootstrap's gap */
+ grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
+ justify-content: flex-start;
+
+ margin-bottom: 40px;
+}
+.o-app-grid > * {
+ min-height: 230px;
+ max-width: 350px;
+}
diff --git a/designsafe/static/styles/app-page.css b/designsafe/static/styles/app-page.css
index ff83869aed..039c62188d 100644
--- a/designsafe/static/styles/app-page.css
+++ b/designsafe/static/styles/app-page.css
@@ -1,4 +1,5 @@
@import url("./app-card.css");
+@import url("./app-grid.css");
@import url("./app-version-list.css");
/* To make width of page content line up with width of header. */
@@ -11,22 +12,35 @@
color: var(--ds-accent-color, #47a59d);
}
.s-app-page h2 {
- font-size: 2.0rem;
+ font-size: 2.5rem;
+ font-weight: 500; /* e.g. "medium" */
text-transform: none;
margin-bottom: 30px;
}
-.s-app-page h2:not(.s-version-list *) {
+.s-app-page h2:not(.s-app-version-list *) {
color: var(--ds-accent-color, #47a59d);
margin-top: 40px;
padding-bottom: 16px;
border-bottom: 2px solid var(--ds-accent-color, #47a59d);
}
-.s-app-page h3:not(.s-version-list *):not(.c-app-card__title) {
+.s-app-page h3:not(.s-app-version-list *):not(.c-app-card__title) {
+ font-size: 1.8rem;
margin-top: 40px; /* double Bootstrap h3 margin-top */
}
-p:where(.s-app-page *) {
+.s-app-page p {
line-height: 1.8;
}
+
+/* Add more space between Bootstrap columns */
+/* HACK: Overwrite Bootstrap grid */
+.s-app-page [class*="col-"] {
+ padding-left: 30px;
+ padding-right: 30px;
+}
+.s-app-page .row {
+ margin-left: -30px;
+ margin-right: -30px;
+}
diff --git a/designsafe/static/styles/app-version-list.css b/designsafe/static/styles/app-version-list.css
index ff60910bfa..93f4b82220 100644
--- a/designsafe/static/styles/app-version-list.css
+++ b/designsafe/static/styles/app-version-list.css
@@ -1,27 +1,38 @@
-.s-version-list {
+/* FAQ: Relies on markup, so CMS can replicate the design */
+
+/* Container */
+.s-app-version-list {
background-color: #F4F4F4;
padding: 20px;
}
-.s-version-list > h2 {
+
+/* List Title */
+.s-app-version-list > h2 {
color: inherit;
margin-top: unset;
padding-bottom: unset;
border-bottom: unset;
}
-.s-version-list > article {
- padding-top: 30px;
+
+/* Version Content Layout */
+.s-app-version-list > article {
display: grid;
grid-template-areas:
"name link"
"desc desc";
}
-.s-version-list > article:not(:last-of-type) {
+
+/* Space & Lines Between Versions */
+.s-app-version-list > article:not(:last-of-type) {
padding-bottom: 15px;
}
-.s-version-list > *:not(:first-of-type) {
+.s-app-version-list > article:not(:first-of-type) {
+ padding-top: 30px;
border-top: 1px solid #333333;
}
-.s-version-list > * > h3 {
+
+/* Version Label */
+.s-app-version-list > article > h3 {
grid-area: name;
font-size: 1.6rem;
font-weight: 500; /* e.g. "medium", Core-Styles `var(--medium)` */
@@ -31,22 +42,26 @@
display: grid;
align-content: center;
}
+
+/* Version Link */
+.s-app-version-list > article > a,
+/* To support manual content via CMS */
/* FAQ: CMS forces a button or link on its own line to be in a paragraph */
-.s-version-list > * > p:has(
- a:only-child,
- button:only-child
-) {
+.s-app-version-list > * > p:has(a:only-child) {
grid-area: link;
justify-self: end;
}
-.s-version-list > * > p:not(:has(
- a:only-child,
- button:only-child
-)) {
+.s-app-version-list > article > a {
+ margin-bottom: 10px; /* mimics Bootstrap `p { margin: 0 0 10px; }` */
+}
+.s-app-version-list > * > p:only-of-type,
+/* To support manual content via CMS */
+/* FAQ: CMS forces a button or link on its own line to be in a paragraph */
+.s-app-version-list > * > p:not(:has(a:only-child)) {
grid-area: desc;
}
/* Bootstrap */
-.s-version-list .btn {
+.s-app-version-list .btn {
padding-inline: 24px; /* double Bootstrap .btn padding */
}
diff --git a/designsafe/templates/base.j2 b/designsafe/templates/base.j2
index 7d64b1f8eb..664eaf05f5 100644
--- a/designsafe/templates/base.j2
+++ b/designsafe/templates/base.j2
@@ -35,7 +35,6 @@
-
{% block styles %}{% endblock %}
{% render_block "css" %}
diff --git a/designsafe/templates/cms_page_for_app.html b/designsafe/templates/cms_page_for_app.html
index 73c5b42b00..5dead1dcf0 100644
--- a/designsafe/templates/cms_page_for_app.html
+++ b/designsafe/templates/cms_page_for_app.html
@@ -1,6 +1,9 @@
{% extends "cms_page.html" %}
{% load cms_tags static sekizai_tags %}
{% block page_class %}s-app-page{% endblock page_class %}
-{% addtoblock "css" %}
-
-{% endaddtoblock %}
+
+{% block styles %}
+ {% addtoblock "css" %}
+
+ {% endaddtoblock %}
+{% endblock %}