← back to NationalPaperHangers
views/public/papers-list.ejs
64 lines
<%- include('../partials/head', { title }) %>
<%- include('../partials/header') %>
<section class="papers-page" style="max-width:980px;margin:0 auto;padding:48px 24px">
<div style="margin-bottom:32px">
<h1 class="display-sm" style="margin:0 0 10px">Paper threads</h1>
<p class="lede" style="margin:0;max-width:680px">Working installers — not marketing copy — talking about the install quirks of the papers that matter. Drop %, paste type, soak time, what fails in humid environments, what to bring on the second visit.</p>
</div>
<% if (categories && categories.length) { %>
<nav class="papers-cats" aria-label="Filter by category" style="display:flex;gap:8px;flex-wrap:wrap;margin:0 0 24px;padding:0 0 18px;border-bottom:1px solid var(--border,#ddd)">
<a href="/papers" class="<%= !activeCategory ? 'is-current' : '' %>"
style="padding:6px 14px;border:1px solid <%= !activeCategory ? '#0e0e0e' : 'var(--border,#ddd)' %>;border-radius:18px;font-size:13px;color:<%= !activeCategory ? '#fff' : 'inherit' %>;background:<%= !activeCategory ? '#0e0e0e' : 'transparent' %>;text-decoration:none">
All
</a>
<% categories.forEach(function(c){ %>
<a href="/papers?category=<%= encodeURIComponent(c.category) %>"
style="padding:6px 14px;border:1px solid <%= activeCategory === c.category ? '#0e0e0e' : 'var(--border,#ddd)' %>;border-radius:18px;font-size:13px;color:<%= activeCategory === c.category ? '#fff' : 'inherit' %>;background:<%= activeCategory === c.category ? '#0e0e0e' : 'transparent' %>;text-decoration:none;text-transform:capitalize">
<%= c.category %> <span style="opacity:0.6">· <%= c.n %></span>
</a>
<% }); %>
</nav>
<% } %>
<% if (!threads || !threads.length) { %>
<div class="callout">
<p style="margin:0">No threads here yet.<% if (activeCategory) { %> <a href="/papers">See all papers →</a><% } %></p>
</div>
<% } else { %>
<ul style="list-style:none;padding:0;margin:0;display:grid;gap:14px">
<% threads.forEach(function(t){ %>
<li>
<a href="/papers/<%= t.slug %>" style="display:block;padding:20px 22px;border:1px solid var(--border,#ddd);border-radius:8px;text-decoration:none;color:inherit;transition:border-color 0.15s">
<div style="display:flex;justify-content:space-between;align-items:start;gap:16px;flex-wrap:wrap">
<div style="flex:1;min-width:220px">
<div style="font-size:12px;text-transform:uppercase;letter-spacing:0.08em;color:#888"><%= t.brand %></div>
<h2 style="margin:4px 0 0;font-size:20px;letter-spacing:0.01em"><%= t.paper_name %></h2>
<% if (t.description) { %>
<p class="muted" style="margin:8px 0 0;font-size:14px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden"><%= t.description %></p>
<% } %>
</div>
<div style="text-align:right;font-size:13px">
<% if (t.category) { %>
<div class="muted" style="text-transform:capitalize;margin-bottom:4px"><%= t.category %></div>
<% } %>
<% if (t.paste_type) { %>
<div class="muted">paste: <%= t.paste_type %></div>
<% } %>
<div style="margin-top:8px;font-weight:500"><%= t.comment_count %> <%= t.comment_count === 1 ? 'note' : 'notes' %></div>
</div>
</div>
</a>
</li>
<% }); %>
</ul>
<% } %>
<p class="muted" style="margin-top:36px;font-size:13px;line-height:1.6;max-width:680px">
Threads are public-readable. Only verified installer members can post — the goal is craft-quality, signal-rich exchange between practitioners. If a paper you work with isn't here yet, <a href="/login">log in</a> and add it.
</p>
</section>
<%- include('../partials/footer') %>