source: Klonkt/src/views/pages/type.ejs@ e67828e

main
Last change on this file since e67828e was 4885eab, checked in by roboburr <roboburr@…>, 3 months ago

feat(i18n phase 6): remaining public + other pages translated (NL/EN/DE)

post-edit, account, newsletter, download, press kit /pers, fan-gate, link-in-bio,
my-site, password-reset (2), artists directory, auth-login Google error map,
user/hub-home/circle-feed+post/viewer-blocked/home/favourites/changelog/404/
type/tag/archive/prutter (inbox+conversation). embed-player skipped (no t
in that standalone route). 1026 view-keys cross-checked → 0 missing.

Co-Authored-By: Claude <noreply@…>

  • Property mode set to 100644
File size: 3.1 KB
Line 
1<div class="container type-page">
2 <header class="type-page-header">
3 <p class="type-eyebrow"><%= t('ptype.eyebrow') %></p>
4 <h1><%= type.charAt(0).toUpperCase() + type.slice(1) %></h1>
5 <p class="type-meta"><%= posts.length === 1 ? t('ptype.count_one', { n: posts.length }) : t('ptype.count_many', { n: posts.length }) %></p>
6 </header>
7
8 <% if (!posts.length) { %>
9 <p class="type-empty"><%= t('ptype.empty') %></p>
10 <% } else { %>
11 <ol class="type-results">
12 <% posts.forEach(function(p) { %>
13 <li class="type-result">
14 <% if (p.cover_image_url) { %>
15 <a href="/<%= p.slug %>" class="type-result-cover"
16 hx-get="/<%= p.slug %>?partial=1" hx-target="#pcms-main" hx-swap="innerHTML"
17 hx-push-url="/<%= p.slug %>" hx-indicator="#pcms-loading">
18 <img src="<%= p.cover_image_url %>" alt="">
19 </a>
20 <% } %>
21 <div class="type-result-body">
22 <h2 class="type-result-title">
23 <a href="/<%= p.slug %>"
24 hx-get="/<%= p.slug %>?partial=1" hx-target="#pcms-main" hx-swap="innerHTML"
25 hx-push-url="/<%= p.slug %>" hx-indicator="#pcms-loading">
26 <%= p.title || t('ptype.untitled') %>
27 </a>
28 </h2>
29 <p class="type-result-meta">
30 <%= p.author_username %><% if (p.published_at) { %> &middot; <%= formatDate(p.published_at) %><% } %>
31 </p>
32 <% if (p.excerpt) { %>
33 <p class="type-result-excerpt"><%= p.excerpt %></p>
34 <% } %>
35 </div>
36 </li>
37 <% }); %>
38 </ol>
39 <% } %>
40</div>
41
42<style>
43.type-page { max-width: 720px; margin: 3rem auto; padding: 0 1rem; }
44.type-page-header { margin-bottom: 1.5rem; }
45.type-eyebrow { color: var(--ink-muted, var(--ink-soft)); font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.06em; margin: 0; }
46.type-page h1 { font-family: var(--font-display, serif); font-size: 2.25rem; margin: 0.1rem 0 0.25rem; color: var(--accent); }
47.type-meta { color: var(--ink-muted, var(--ink-soft)); font-size: 0.9rem; margin: 0; }
48.type-empty { color: var(--ink-muted, var(--ink-soft)); text-align: center; margin: 3rem 0; }
49
50.type-results { list-style: none; padding: 0; margin: 0; }
51.type-result { display: flex; gap: 1rem; padding: 1rem 0; border-bottom: 1px solid var(--rule); }
52.type-result:last-child { border-bottom: 0; }
53.type-result-cover { flex-shrink: 0; width: 96px; height: 96px; border-radius: 6px; overflow: hidden; background: var(--paper-2); }
54.type-result-cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
55.type-result-body { flex: 1; min-width: 0; }
56.type-result-title { font-family: var(--font-display, serif); font-size: 1.2rem; margin: 0 0 0.25rem; }
57.type-result-title a { color: var(--ink); text-decoration: none; }
58.type-result-title a:hover { color: var(--accent); }
59.type-result-meta { color: var(--ink-muted, var(--ink-soft)); font-size: 0.85rem; margin: 0 0 0.4rem; }
60.type-result-excerpt { color: var(--ink-soft); margin: 0; line-height: 1.5; }
61</style>
Note: See TracBrowser for help on using the repository browser.