Strip personal data from templates so the theme ships clean for any deployer. Collection pages now use generatePageOnEmptyData so empty post types show encouraging placeholders instead of 404s. Navigation is conditional on enabled post types and installed plugins. Sidebar widgets split into individual components with plugin-aware visibility. Slashes page explains required plugins for root-level page creation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
92 lines
3.4 KiB
Plaintext
92 lines
3.4 KiB
Plaintext
---
|
|
layout: layouts/base.njk
|
|
title: Notes
|
|
withSidebar: true
|
|
pagination:
|
|
data: collections.notes
|
|
size: 20
|
|
alias: paginatedNotes
|
|
generatePageOnEmptyData: true
|
|
permalink: "notes/{% if pagination.pageNumber > 0 %}page/{{ pagination.pageNumber + 1 }}/{% endif %}"
|
|
---
|
|
<div class="h-feed">
|
|
<h1 class="text-2xl sm:text-3xl font-bold text-surface-900 dark:text-surface-100 mb-2">Notes</h1>
|
|
<p class="text-surface-600 dark:text-surface-400 mb-6 sm:mb-8">
|
|
Short thoughts, updates, and quick posts.
|
|
<span class="text-sm">({{ collections.notes.length }} total)</span>
|
|
</p>
|
|
|
|
{% if paginatedNotes.length > 0 %}
|
|
<ul class="post-list">
|
|
{% for post in paginatedNotes %}
|
|
<li class="h-entry post-card">
|
|
<div class="post-header">
|
|
<a class="u-url" href="{{ post.url }}">
|
|
<time class="dt-published text-sm text-primary-600 dark:text-primary-400 font-medium" datetime="{{ post.date | isoDate }}">
|
|
{{ post.date | dateDisplay }}
|
|
</time>
|
|
</a>
|
|
{% if post.data.category %}
|
|
<span class="post-categories ml-2">
|
|
{% if post.data.category is string %}
|
|
<span class="p-category">{{ post.data.category }}</span>
|
|
{% else %}
|
|
{% for cat in post.data.category %}
|
|
<span class="p-category">{{ cat }}</span>
|
|
{% endfor %}
|
|
{% endif %}
|
|
</span>
|
|
{% endif %}
|
|
</div>
|
|
<div class="e-content prose dark:prose-invert prose-sm mt-3 max-w-none">
|
|
{{ post.templateContent | safe }}
|
|
</div>
|
|
<div class="post-footer mt-3">
|
|
<a href="{{ post.url }}" class="text-sm text-primary-600 dark:text-primary-400 hover:underline">
|
|
Permalink
|
|
</a>
|
|
</div>
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
|
|
{# Pagination controls #}
|
|
{% if pagination.pages.length > 1 %}
|
|
<nav class="pagination" aria-label="Notes pagination">
|
|
<div class="pagination-info">
|
|
Page {{ pagination.pageNumber + 1 }} of {{ pagination.pages.length }}
|
|
</div>
|
|
<div class="pagination-links">
|
|
{% if pagination.href.previous %}
|
|
<a href="{{ pagination.href.previous }}" class="pagination-link" aria-label="Previous page">
|
|
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"></path></svg>
|
|
Previous
|
|
</a>
|
|
{% else %}
|
|
<span class="pagination-link disabled">
|
|
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"></path></svg>
|
|
Previous
|
|
</span>
|
|
{% endif %}
|
|
|
|
{% if pagination.href.next %}
|
|
<a href="{{ pagination.href.next }}" class="pagination-link" aria-label="Next page">
|
|
Next
|
|
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg>
|
|
</a>
|
|
{% else %}
|
|
<span class="pagination-link disabled">
|
|
Next
|
|
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg>
|
|
</span>
|
|
{% endif %}
|
|
</div>
|
|
</nav>
|
|
{% endif %}
|
|
|
|
{% else %}
|
|
{% set postType = "note" %}
|
|
{% include "components/empty-collection.njk" %}
|
|
{% endif %}
|
|
</div>
|