{% extends "layouts/ap-reader.njk" %} {% from "heading/macro.njk" import heading with context %} {% from "prose/macro.njk" import prose with context %} {% block readercontent %} {# Explore link #}
🔭 {{ __("activitypub.reader.explore.title") }}
{# Followed tags #} {% if followedTags and followedTags.length > 0 %}
{{ __("activitypub.reader.tagTimeline.following") }}: {% for tag in followedTags %} #{{ tag }} {% endfor %}
{% endif %} {# Fediverse lookup with popular accounts autocomplete #}
{# Popular accounts dropdown #}
{# Tab navigation #} {# New posts banner — polls every 30s, shows count of new items #} {% if items.length > 0 %}
{% endif %} {# Direct messages — conversation threads #} {% if tab == "direct" %} {% if conversations and conversations.length > 0 %}
{% for conv in conversations %} {% include "partials/ap-dm-thread.njk" %} {% endfor %}
{% else %} {{ prose({ text: "No direct messages yet." }) }} {% endif %} {# Timeline items with read tracking #} {% elif items.length > 0 %}
{% for item in items %} {% include "partials/ap-item-card.njk" %} {% endfor %}
{# Pagination (progressive enhancement — visible without JS, hidden when Alpine active) #} {% if before or after %} {% endif %} {# Infinite scroll load-more sentinel #} {% if before %}
{% include "partials/ap-skeleton-card.njk" %} {% include "partials/ap-skeleton-card.njk" %} {% include "partials/ap-skeleton-card.njk" %}

{{ __("activitypub.reader.pagination.noMore") }}

{% endif %} {% else %} {{ prose({ text: __("activitypub.reader.empty") }) }} {% endif %} {% endblock %}