source: Klonkt/src/views/pages/circle-feed.ejs@ 050aa02

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

style(circles): cleaner icon (thin lines, fine nodes) + subtle accent glow

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

  • Property mode set to 100644
File size: 4.7 KB
Line 
1<div class="container cirkel-hero">
2 <span class="cirkel-badge" aria-hidden="true">
3 <svg viewBox="0 0 100 100" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round">
4 <defs>
5 <marker id="cf-a" viewBox="0 0 10 10" refX="6" refY="5" markerWidth="3.4" markerHeight="3.4" orient="auto-start-reverse"><path d="M2.5 2.5 L7 5 L2.5 7.5" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/></marker>
6 </defs>
7 <circle cx="50" cy="50" r="46" stroke-width="2" opacity="0.45"/>
8 <line x1="31.9" y1="42.7" x2="58.1" y2="28.3" stroke-width="2.2" marker-start="url(#cf-a)" marker-end="url(#cf-a)"/>
9 <line x1="66" y1="33" x2="66" y2="63" stroke-width="2.2" marker-end="url(#cf-a)"/>
10 <line x1="31.7" y1="51.6" x2="58.3" y2="67.4" stroke-width="2.2" marker-end="url(#cf-a)"/>
11 <circle cx="24" cy="47" r="6.5" stroke-width="2.2"/>
12 <circle cx="66" cy="24" r="6.5" stroke-width="2.2"/>
13 <circle cx="66" cy="72" r="6.5" stroke-width="2.2"/>
14 </svg>
15 </span>
16 <h1><%= t('cfeed.title') %></h1>
17 <p class="cirkel-sub"><%= t('cfeed.sub') %></p>
18 <% if (typeof sites !== 'undefined' && sites && sites.length) { %>
19 <% if (sites.length <= 5) { %>
20 <div class="cirkel-members">
21 <% sites.forEach(function(s){ %>
22 <% 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 %>"><% } %>
23 <span class="cirkel-avatar"<% if (s.avatar) { %> style="background-image:url('<%= s.avatar %>')"<% } %>><% if (!s.avatar) { %><%= (s.name || '?').charAt(0).toUpperCase() %><% } %></span>
24 <span class="cirkel-member-name"><%= s.name %></span>
25 <% if (s.url) { %></a><% } else { %></span><% } %>
26 <% }); %>
27 </div>
28 <% } else { %>
29 <%# Meer dan 5: geen chips (zou een muur worden) — alleen het aantal. %>
30 <span class="cirkel-count"><%= t('cfeed.count', { n: sites.length }) %></span>
31 <% } %>
32 <% } %>
33</div>
34
35<% if (!posts.length) { %>
36 <div class="container">
37 <p class="cirkel-empty"><%= t('cfeed.empty') %></p>
38 </div>
39<% } else { %>
40
41 <%# Dezelfde view als de hoofdpagina: timeline (post-card) + grid (post-tile),
42 gewisseld door de view-switcher via body[data-feed-view]. De remote-posts
43 zijn in circle.js naar het lokale post-shape gevormd (met external_url,
44 zodat de kaarten naar de bron-site linken). %>
45
46 <!-- ===== TIMELINE (standaard) ===== -->
47 <div class="container feed-timeline">
48 <ul class="post-list feed-timeline-list">
49 <% posts.forEach(function(post){ %>
50 <%- include('../partials/post-card', { post: post }) %>
51 <% }); %>
52 </ul>
53 </div>
54
55 <!-- ===== GRID (body[data-feed-view="grid"]) ===== -->
56 <section class="feed-grid container" aria-label="<%= t('cfeed.grid_view') %>">
57 <div class="grid-tiles">
58 <% posts.forEach(function(post){ %>
59 <%- include('../partials/post-tile', { post: post }) %>
60 <% }); %>
61 </div>
62 </section>
63
64<% } %>
65
66<style>
67.cirkel-hero { text-align: center; max-width: 640px; margin: 2.5rem auto 2rem; }
68.cirkel-badge { display: block; width: 100px; height: 100px; margin: 0 auto .7rem; color: var(--accent);
69 filter: drop-shadow(0 0 6px color-mix(in srgb, var(--accent) 65%, transparent)) drop-shadow(0 0 1px var(--accent)); }
70.cirkel-badge svg { width: 100%; height: 100%; }
71.cirkel-hero h1 { font-family: var(--font-display, serif); font-size: 2.4rem; margin: 0 0 .3rem; }
72.cirkel-sub { color: var(--ink-muted); margin: 0 0 1.25rem; font-size: 1.02rem; }
73.cirkel-members { display: flex; flex-wrap: wrap; gap: .55rem; justify-content: center; }
74.cirkel-member { display: inline-flex; align-items: center; gap: .45rem;
75 padding: .28rem .8rem .28rem .3rem; border: 1px solid var(--rule); border-radius: 999px;
76 text-decoration: none; color: var(--ink); background: var(--paper-2);
77 transition: border-color .15s, transform .15s; }
78.cirkel-member:hover { border-color: var(--accent); transform: translateY(-1px); }
79.cirkel-avatar { width: 30px; height: 30px; border-radius: 50%; flex-shrink: 0;
80 background-size: cover; background-position: center; background-color: var(--accent);
81 color: #fff; display: inline-flex; align-items: center; justify-content: center;
82 font-weight: 700; font-size: .82rem; }
83.cirkel-member-name { font-size: .9rem; font-weight: 600; }
84.cirkel-count { display: inline-block; color: var(--ink-muted); font-size: .92rem; font-weight: 600;
85 padding: .35rem 1rem; border: 1px solid var(--rule); border-radius: 999px; background: var(--paper-2); }
86.cirkel-empty { color: var(--ink-muted); text-align: center; margin: 2rem auto; }
87.cirkel-empty a { color: var(--accent); }
88</style>
Note: See TracBrowser for help on using the repository browser.