| 1 | <div class="container cirkel-hero">
|
|---|
| 2 | <span class="cirkel-badge" aria-hidden="true">
|
|---|
| 3 | <svg viewBox="0 0 64 64" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round">
|
|---|
| 4 | <line x1="32" y1="16" x2="17" y2="45"/>
|
|---|
| 5 | <line x1="32" y1="16" x2="47" y2="45"/>
|
|---|
| 6 | <line x1="17" y1="45" x2="47" y2="45"/>
|
|---|
| 7 | <circle cx="32" cy="16" r="8" fill="currentColor" fill-opacity=".16"/>
|
|---|
| 8 | <circle cx="17" cy="45" r="8" fill="currentColor" fill-opacity=".16"/>
|
|---|
| 9 | <circle cx="47" cy="45" r="8" fill="currentColor" fill-opacity=".16"/>
|
|---|
| 10 | </svg>
|
|---|
| 11 | </span>
|
|---|
| 12 | <h1>Cirkel</h1>
|
|---|
| 13 | <p class="cirkel-sub">Wat er speelt bij de andere sites in mijn cirkel.</p>
|
|---|
| 14 | <% if (typeof sites !== 'undefined' && sites && sites.length) { %>
|
|---|
| 15 | <% if (sites.length <= 5) { %>
|
|---|
| 16 | <div class="cirkel-members">
|
|---|
| 17 | <% sites.forEach(function(s){ %>
|
|---|
| 18 | <% if (s.url) { %><a class="cirkel-member" href="<%= s.url %>" target="_blank" rel="noopener" title="<%= s.name %>"><% } else { %><span class="cirkel-member" title="<%= s.name %>"><% } %>
|
|---|
| 19 | <span class="cirkel-avatar"<% if (s.avatar) { %> style="background-image:url('<%= s.avatar %>')"<% } %>><% if (!s.avatar) { %><%= (s.name || '?').charAt(0).toUpperCase() %><% } %></span>
|
|---|
| 20 | <span class="cirkel-member-name"><%= s.name %></span>
|
|---|
| 21 | <% if (s.url) { %></a><% } else { %></span><% } %>
|
|---|
| 22 | <% }); %>
|
|---|
| 23 | </div>
|
|---|
| 24 | <% } else { %>
|
|---|
| 25 | <%# Meer dan 5: geen chips (zou een muur worden) — alleen het aantal. %>
|
|---|
| 26 | <span class="cirkel-count"><%= sites.length %> sites in je cirkel</span>
|
|---|
| 27 | <% } %>
|
|---|
| 28 | <% } %>
|
|---|
| 29 | </div>
|
|---|
| 30 |
|
|---|
| 31 | <% if (!posts.length) { %>
|
|---|
| 32 | <div class="container">
|
|---|
| 33 | <p class="cirkel-empty">Nog niets in je cirkel. Voeg sites toe via
|
|---|
| 34 | <a href="/admin/circle">Beheer › Cirkel</a> en ververs ze.</p>
|
|---|
| 35 | </div>
|
|---|
| 36 | <% } else { %>
|
|---|
| 37 |
|
|---|
| 38 | <%# Dezelfde view als de hoofdpagina: timeline (post-card) + grid (post-tile),
|
|---|
| 39 | gewisseld door de view-switcher via body[data-feed-view]. De remote-posts
|
|---|
| 40 | zijn in circle.js naar het lokale post-shape gevormd (met external_url,
|
|---|
| 41 | zodat de kaarten naar de bron-site linken). %>
|
|---|
| 42 |
|
|---|
| 43 | <!-- ===== TIMELINE (standaard) ===== -->
|
|---|
| 44 | <div class="container feed-timeline">
|
|---|
| 45 | <ul class="post-list feed-timeline-list">
|
|---|
| 46 | <% posts.forEach(function(post){ %>
|
|---|
| 47 | <%- include('../partials/post-card', { post: post }) %>
|
|---|
| 48 | <% }); %>
|
|---|
| 49 | </ul>
|
|---|
| 50 | </div>
|
|---|
| 51 |
|
|---|
| 52 | <!-- ===== GRID (body[data-feed-view="grid"]) ===== -->
|
|---|
| 53 | <section class="feed-grid container" aria-label="Grid-weergave">
|
|---|
| 54 | <div class="grid-tiles">
|
|---|
| 55 | <% posts.forEach(function(post){ %>
|
|---|
| 56 | <%- include('../partials/post-tile', { post: post }) %>
|
|---|
| 57 | <% }); %>
|
|---|
| 58 | </div>
|
|---|
| 59 | </section>
|
|---|
| 60 |
|
|---|
| 61 | <% } %>
|
|---|
| 62 |
|
|---|
| 63 | <style>
|
|---|
| 64 | .cirkel-hero { text-align: center; max-width: 640px; margin: 2.5rem auto 2rem; }
|
|---|
| 65 | .cirkel-badge { display: block; width: 60px; height: 60px; margin: 0 auto .6rem; color: var(--accent); }
|
|---|
| 66 | .cirkel-badge svg { width: 100%; height: 100%; }
|
|---|
| 67 | .cirkel-hero h1 { font-family: var(--font-display, serif); font-size: 2.4rem; margin: 0 0 .3rem; }
|
|---|
| 68 | .cirkel-sub { color: var(--ink-muted); margin: 0 0 1.25rem; font-size: 1.02rem; }
|
|---|
| 69 | .cirkel-members { display: flex; flex-wrap: wrap; gap: .55rem; justify-content: center; }
|
|---|
| 70 | .cirkel-member { display: inline-flex; align-items: center; gap: .45rem;
|
|---|
| 71 | padding: .28rem .8rem .28rem .3rem; border: 1px solid var(--rule); border-radius: 999px;
|
|---|
| 72 | text-decoration: none; color: var(--ink); background: var(--paper-2);
|
|---|
| 73 | transition: border-color .15s, transform .15s; }
|
|---|
| 74 | .cirkel-member:hover { border-color: var(--accent); transform: translateY(-1px); }
|
|---|
| 75 | .cirkel-avatar { width: 30px; height: 30px; border-radius: 50%; flex-shrink: 0;
|
|---|
| 76 | background-size: cover; background-position: center; background-color: var(--accent);
|
|---|
| 77 | color: #fff; display: inline-flex; align-items: center; justify-content: center;
|
|---|
| 78 | font-weight: 700; font-size: .82rem; }
|
|---|
| 79 | .cirkel-member-name { font-size: .9rem; font-weight: 600; }
|
|---|
| 80 | .cirkel-count { display: inline-block; color: var(--ink-muted); font-size: .92rem; font-weight: 600;
|
|---|
| 81 | padding: .35rem 1rem; border: 1px solid var(--rule); border-radius: 999px; background: var(--paper-2); }
|
|---|
| 82 | .cirkel-empty { color: var(--ink-muted); text-align: center; margin: 2rem auto; }
|
|---|
| 83 | .cirkel-empty a { color: var(--accent); }
|
|---|
| 84 | </style>
|
|---|