You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
5.6 KiB
93 lines
5.6 KiB
{# Shared author "header" + about (no article list). Expects: author, npub, profile_*; show_nip05: true on full /p/ profile only #} |
|
{% set author_pic = null %} |
|
{% if author.picture is defined and author.picture %} |
|
{% set author_pic = author.picture %} |
|
{% elseif author.image is defined and author.image %} |
|
{% set author_pic = author.image %} |
|
{% endif %} |
|
{% set author_label = author.display_name|default(author.name|default(npub|shortenNpub)) %} |
|
|
|
{% if author_pic %} |
|
<div class="author-profile__avatar"> |
|
<img src="{{ author_pic }}" alt="{{ author_label }}" loading="lazy" decoding="async" onerror="this.parentElement.remove()" /> |
|
</div> |
|
{% endif %} |
|
|
|
{% set header_tag = header_tag|default('h1') %} |
|
<{{ header_tag }} class="author-profile__title"><twig:Atoms:NameOrNpub :author="author" :npub="npub"></twig:Atoms:NameOrNpub></{{ header_tag }}> |
|
|
|
<div class="author-profile__header-meta"> |
|
{% if profile_websites is not empty %} |
|
<div class="author-profile__section author-profile__section--label-value" aria-label="Websites"> |
|
<span class="author-profile__section-type">Website</span> |
|
<ul class="author-profile__value-stack"> |
|
{% for row in profile_websites %} |
|
<li class="author-profile__value-stack-line"> |
|
<a class="author-profile__identity-link author-profile__meta-value" href="{{ row.href|e('html_attr') }}" target="_blank" rel="nofollow noopener noreferrer">{{ row.label|e }}</a> |
|
</li> |
|
{% endfor %} |
|
</ul> |
|
</div> |
|
{% endif %} |
|
{% if show_nip05|default(false) and profile_nip05 is not empty %} |
|
<div class="author-profile__section author-profile__section--label-value" aria-label="NIP-05"> |
|
<span class="author-profile__section-type">NIP-05</span> |
|
<ul class="author-profile__value-stack"> |
|
{% for row in profile_nip05 %} |
|
<li class="author-profile__value-stack-line"> |
|
<span class="author-profile__nip05-value"> |
|
<a class="author-profile__identity-link author-profile__nip05-link" href="{{ row.href|e('html_attr') }}" target="_blank" rel="nofollow noopener noreferrer" title="Open /.well-known/nostr.json for this name">{{ row.label|e }}</a> |
|
{% if row.verified|default(false) %} |
|
<span class="author-profile__nip05-verified" title="This identifier matches the pubkey in /.well-known/nostr.json" aria-label="Verified NIP-05">✓</span> |
|
{% endif %} |
|
</span> |
|
</li> |
|
{% endfor %} |
|
</ul> |
|
</div> |
|
{% endif %} |
|
{% if profile_payment_links is not empty %} |
|
{# Group payment rows by display_type_label so each type (Lightning, Monero, …) appears once. #} |
|
{% set payment_groups = {} %} |
|
{% for row in profile_payment_links %} |
|
{% set k = row.display_type_label|default('')|trim %} |
|
{% set payment_groups = payment_groups|merge({(k): (payment_groups[k] is defined ? payment_groups[k] : [])|merge([row])}) %} |
|
{% endfor %} |
|
<div class="author-profile__section author-profile__section--label-value" aria-label="Payment"> |
|
<span class="author-profile__section-type">Payment</span> |
|
<ul class="author-profile__payments-nested"> |
|
{% for type_key, rows in payment_groups %} |
|
<li class="author-profile__payment-group"> |
|
<span class="author-profile__payment-type"{% if type_key == '' %} aria-hidden="true"{% endif %}>{{ type_key|e }}</span> |
|
<ul class="author-profile__payment-group-values"> |
|
{% for row in rows %} |
|
<li class="author-profile__payment-group-value"> |
|
<div |
|
class="author-profile__payment-value" |
|
data-controller="copy-text" |
|
data-copy-text-text-value="{{ row.href|e('html_attr') }}" |
|
> |
|
<span class="author-profile__payment-addr author-profile__meta-value" title="{{ row.href|e('html_attr') }}">{{ row.label|e }}</span> |
|
<button |
|
type="button" |
|
class="author-profile__copy-btn btn btn-secondary btn-sm" |
|
data-copy-text-target="button" |
|
data-action="click->copy-text#copy" |
|
title="Copy full payment address / URI for your wallet" |
|
>Copy</button> |
|
</div> |
|
</li> |
|
{% endfor %} |
|
</ul> |
|
</li> |
|
{% endfor %} |
|
</ul> |
|
</div> |
|
{% endif %} |
|
</div> |
|
|
|
<div class="author-profile__about"> |
|
{% if author.about is defined %} |
|
{{ author.about|markdown_to_html|mentionify|linkify }} |
|
{% endif %} |
|
</div>
|
|
|