This commit is contained in:
+23
-6
@@ -65,7 +65,8 @@ h1 { max-width: 650px; margin: 0; font-size: clamp(30px, 4vw, 45px); font-style:
|
|||||||
.prose a { color: var(--teal); text-decoration: underline; text-underline-offset: 3px; }
|
.prose a { color: var(--teal); text-decoration: underline; text-underline-offset: 3px; }
|
||||||
.button-link { display: inline-block; margin-top: 20px; font: 500 11px var(--mono); text-transform: uppercase; letter-spacing: .1em; }
|
.button-link { display: inline-block; margin-top: 20px; font: 500 11px var(--mono); text-transform: uppercase; letter-spacing: .1em; }
|
||||||
|
|
||||||
.blog-post-layout {
|
.blog-post-layout,
|
||||||
|
.article-post-layout {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: minmax(0, 640px) minmax(230px, 280px);
|
grid-template-columns: minmax(0, 640px) minmax(230px, 280px);
|
||||||
grid-template-areas:
|
grid-template-areas:
|
||||||
@@ -75,10 +76,14 @@ h1 { max-width: 650px; margin: 0; font-size: clamp(30px, 4vw, 45px); font-style:
|
|||||||
align-items: start;
|
align-items: start;
|
||||||
padding-block: 68px 90px;
|
padding-block: 68px 90px;
|
||||||
}
|
}
|
||||||
.blog-entry-header { grid-area: header; }
|
.blog-entry-header,
|
||||||
.blog-entry-header h1 { font-style: normal; }
|
.article-entry-header { grid-area: header; }
|
||||||
.blog-entry-header .dek { margin-bottom: 0; }
|
.blog-entry-header h1,
|
||||||
.blog-entry-body { grid-area: body; width: 100%; }
|
.article-entry-header h1 { font-style: normal; }
|
||||||
|
.blog-entry-header .dek,
|
||||||
|
.article-entry-header .dek { margin-bottom: 0; }
|
||||||
|
.blog-entry-body,
|
||||||
|
.article-entry-body { grid-area: body; width: 100%; }
|
||||||
.post-info {
|
.post-info {
|
||||||
grid-area: info;
|
grid-area: info;
|
||||||
border: 1px solid var(--rule);
|
border: 1px solid var(--rule);
|
||||||
@@ -112,6 +117,17 @@ h1 { max-width: 650px; margin: 0; font-size: clamp(30px, 4vw, 45px); font-style:
|
|||||||
letter-spacing: .08em;
|
letter-spacing: .08em;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
}
|
}
|
||||||
|
.article-info .post-info-title { color: var(--teal); }
|
||||||
|
.publication-links { display: grid; gap: 9px; margin: 0; padding: 0; list-style: none; }
|
||||||
|
.publication-links a {
|
||||||
|
display: block;
|
||||||
|
color: var(--teal);
|
||||||
|
font: 500 10px/1.5 var(--mono);
|
||||||
|
overflow-wrap: anywhere;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.publication-links a:hover,
|
||||||
|
.publication-links a:focus-visible { text-decoration: underline; text-underline-offset: 3px; }
|
||||||
|
|
||||||
.site-footer { border-top: 1px solid var(--rule); color: var(--muted); font-size: 9px; }
|
.site-footer { border-top: 1px solid var(--rule); color: var(--muted); font-size: 9px; }
|
||||||
.footer-inner { min-height: 105px; display: flex; justify-content: space-between; align-items: center; gap: 24px; }
|
.footer-inner { min-height: 105px; display: flex; justify-content: space-between; align-items: center; gap: 24px; }
|
||||||
@@ -127,7 +143,8 @@ h1 { max-width: 650px; margin: 0; font-size: clamp(30px, 4vw, 45px); font-style:
|
|||||||
.hero, .hero.compact { padding-block: 44px; }
|
.hero, .hero.compact { padding-block: 44px; }
|
||||||
h1 { font-size: 30px; }
|
h1 { font-size: 30px; }
|
||||||
.card-grid { grid-template-columns: 1fr; }
|
.card-grid { grid-template-columns: 1fr; }
|
||||||
.blog-post-layout {
|
.blog-post-layout,
|
||||||
|
.article-post-layout {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
grid-template-areas:
|
grid-template-areas:
|
||||||
"header"
|
"header"
|
||||||
|
|||||||
@@ -10,6 +10,10 @@ type = string
|
|||||||
label = Date
|
label = Date
|
||||||
type = date
|
type = date
|
||||||
|
|
||||||
|
[fields.updated]
|
||||||
|
label = Updated
|
||||||
|
type = date
|
||||||
|
|
||||||
[fields.author]
|
[fields.author]
|
||||||
label = Author
|
label = Author
|
||||||
type = string
|
type = string
|
||||||
@@ -35,3 +39,8 @@ type = markdown
|
|||||||
[fields.external_url]
|
[fields.external_url]
|
||||||
label = External URL
|
label = External URL
|
||||||
type = url
|
type = url
|
||||||
|
|
||||||
|
[fields.published_urls]
|
||||||
|
label = Published URLs
|
||||||
|
type = strings
|
||||||
|
description = Add one complete URL per line.
|
||||||
|
|||||||
@@ -33,6 +33,71 @@
|
|||||||
{% if this.external_url %}<p><a class="button-link" href="{{ this.external_url }}">Visit project →</a></p>{% endif %}
|
{% if this.external_url %}<p><a class="button-link" href="{{ this.external_url }}">Visit project →</a></p>{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
|
{% elif this.parent._id == 'articles' %}
|
||||||
|
{% set article_word_count = this.body|striptags|wordcount %}
|
||||||
|
{% set article_reading_minutes = (article_word_count + 199) // 200 %}
|
||||||
|
<article class="article-post-layout shell">
|
||||||
|
<header class="article-entry-header">
|
||||||
|
<p class="eyebrow">{{ this.kicker }}</p>
|
||||||
|
<h1>{{ this.title }}</h1>
|
||||||
|
<p class="dek">{{ this.summary }}</p>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<aside class="post-info article-info" aria-label="Article information">
|
||||||
|
<p class="post-info-title">Article information</p>
|
||||||
|
<dl>
|
||||||
|
{% if this.author %}
|
||||||
|
<div class="post-info-row">
|
||||||
|
<dt>Author</dt>
|
||||||
|
<dd>{{ this.author }}</dd>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
<div class="post-info-row">
|
||||||
|
<dt>Published</dt>
|
||||||
|
<dd><time datetime="{{ this.date }}">{{ this.date|dateformat('long') }}</time></dd>
|
||||||
|
</div>
|
||||||
|
{% if this.updated %}
|
||||||
|
<div class="post-info-row">
|
||||||
|
<dt>Updated</dt>
|
||||||
|
<dd><time datetime="{{ this.updated }}">{{ this.updated|dateformat('long') }}</time></dd>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
<div class="post-info-row">
|
||||||
|
<dt>Reading time</dt>
|
||||||
|
<dd>{{ article_reading_minutes }} min</dd>
|
||||||
|
</div>
|
||||||
|
{% if this.tags %}
|
||||||
|
<div class="post-info-row">
|
||||||
|
<dt>Topics</dt>
|
||||||
|
<dd class="post-tags">
|
||||||
|
{% for tag in this.tags %}<span>{{ tag }}</span>{% endfor %}
|
||||||
|
</dd>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% if this.published_urls %}
|
||||||
|
<div class="post-info-row">
|
||||||
|
<dt>Published online</dt>
|
||||||
|
<dd>
|
||||||
|
<ul class="publication-links">
|
||||||
|
{% for published_url in this.published_urls %}
|
||||||
|
<li>
|
||||||
|
<a href="{{ published_url }}" title="{{ published_url }}" aria-label="Open published article at {{ published_url }}">
|
||||||
|
{% if published_url|length > 40 %}{{ published_url[:25] }}…{{ published_url[-14:] }}{% else %}{{ published_url }}{% endif %}
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</dd>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
</dl>
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
<div class="article-entry-body prose">
|
||||||
|
{{ this.body }}
|
||||||
|
{% if this.external_url %}<p><a class="button-link" href="{{ this.external_url }}">Visit project →</a></p>{% endif %}
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
{% else %}
|
{% else %}
|
||||||
<article>
|
<article>
|
||||||
<header class="hero compact entry-hero">
|
<header class="hero compact entry-hero">
|
||||||
|
|||||||
Reference in New Issue
Block a user