source: Klonkt/src/views/partials/shared-styles.ejs@ da4387b

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

fix(nav): stale page class after htmx nav + Agenda-active white

  • PAGE_CLASSES (htmx body-class sync) was missing on-shows/on-downloads/feature- and feed-classes → old class lingered ("on-shows ... on-home") → Timeline/Grid stayed grey on the feed after visiting calendar/downloads. Now all page classes stripped + set correctly.
  • .vs-agenda.is-active now white pill (var(--ink)/var(--paper)) instead of dark.

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

  • Property mode set to 100644
File size: 9.3 KB
RevLine 
[7bc636b]1<style>
2/* ─────────────────────────────────────────────────
3 View switcher (timeline ↔ grid + grid-cols picker)
4 ───────────────────────────────────────────────── */
5.view-switcher-wrap {
6 border-bottom: 1px solid var(--rule);
7 background: var(--paper);
[dc4c067]8 /* Geen extra margin-top: de pill wordt zo gecentreerd tussen de profielkop-
9 streep (boven) en de eigen border (onder). De gelijke lucht boven/onder de
10 pill komt uit de symmetrische container-padding hieronder. De margin-bottom
11 (1.5rem in style.css) blijft lucht naar de feed. */
12 margin-top: 0;
[7bc636b]13}
14.view-switcher-wrap .container {
15 display: flex; align-items: center; justify-content: center; gap: 0.75rem;
[dc4c067]16 /* Symmetrische padding → even veel lucht boven als onder de pill (≈8px),
17 gecentreerd tussen de twee lijnen. */
18 padding: 0.5rem 1rem;
[7bc636b]19 max-width: 1200px; margin: 0 auto;
20 flex-wrap: wrap;
21}
22.view-switcher {
23 display: inline-flex;
24 background: var(--paper-2);
25 border: 1px solid var(--rule);
26 border-radius: 999px;
27 padding: 0.15rem;
28}
29.view-switch-btn {
30 display: inline-flex; align-items: center; gap: 0.35rem;
31 padding: 0.35rem 0.85rem;
32 border: 0; background: transparent; color: var(--ink-muted, var(--ink-soft));
33 cursor: pointer; border-radius: 999px;
34 font-size: 0.85rem; font-family: inherit;
35 transition: background 120ms, color 120ms;
36}
37.view-switch-btn:hover { color: var(--ink); }
38.view-switch-btn[aria-selected="true"] { background: var(--paper); color: var(--ink); box-shadow: 0 1px 2px rgba(0,0,0,.06); }
39
[d7b5a6c]40/* Agenda-link (evenementen) als eerste item IN de Tijdlijn/Grid-pill —
41 exact dezelfde maatvoering als .view-switch-btn, maar het is een nav-link. */
[cf7c2d9]42.vs-agenda {
[d7b5a6c]43 display: inline-flex; align-items: center; gap: 0.35rem;
[cf7c2d9]44 padding: 0.35rem 0.85rem;
[d7b5a6c]45 border-radius: 999px;
46 color: var(--ink-muted, var(--ink-soft));
47 text-decoration: none;
48 font-size: 0.85rem; font-family: inherit;
49 transition: background 120ms, color 120ms;
[cf7c2d9]50}
[d7b5a6c]51.vs-agenda:hover { color: var(--ink); }
[da4387b]52/* Agenda actief op de agendapagina = wit pilletje (zelfde look als de andere
53 actieve pill-knoppen: lichte achtergrond, donkere tekst). */
54.vs-agenda.is-active { background: var(--ink); color: var(--paper); }
[cf7c2d9]55
[7bc636b]56.grid-cols-picker {
57 display: none; /* desktop-only, see media query */
58 gap: 0.2rem;
59}
60.grid-cols-btn {
61 width: 28px; height: 28px;
62 border: 1px solid var(--rule);
63 background: var(--paper-2);
64 color: var(--ink-muted, var(--ink-soft));
65 border-radius: 4px;
66 font-size: 0.8rem; font-weight: 600;
67 cursor: pointer;
68 font-variant-numeric: tabular-nums;
69}
70.grid-cols-btn:hover { color: var(--ink); border-color: var(--accent); }
71.grid-cols-btn.is-active { background: var(--accent); color: white; border-color: var(--accent); }
72
73/* Show grid-cols picker only on grid view + desktop */
74@media (min-width: 720px) {
75 body[data-feed-view="grid"] .grid-cols-picker { display: inline-flex; }
76}
77
78/* Switcher is hidden only on admin pages — admin has a dedicated layout
79 and its own back-button flow where Tijdlijn/Grid is irrelevant. On
80 every other page (home, post, tag, archive, search, account) it stays
81 visible so the user keeps a consistent return-to-feed control. */
82.on-admin .view-switcher-wrap { display: none; }
83
[af5407f]84/* Op een losse post is er geen feed om te schakelen, dus geen knop hoort "actief"
85 (gekleurd) te ogen. De actieve staat zit in style.css op body[data-feed-view]
86 / body[data-grid-cols] (background:var(--ink)); we overrulen die SPECIFIEKER
87 via body.on-post zodat de knoppen neutraal/grijs worden — maar wél klikbaar
88 blijven (de klik-handler navigeert dan naar de feed in die weergave). De
89 body-class wisselt client-side bij HTMX-nav, dus dit werkt ook zonder reload. */
90body.on-post[data-feed-view="timeline"] .view-switch-btn[data-view="timeline"],
91body.on-post[data-feed-view="grid"] .view-switch-btn[data-view="grid"],
92body.on-post[data-grid-cols="2"] .grid-cols-btn[data-cols="2"],
93body.on-post[data-grid-cols="3"] .grid-cols-btn[data-cols="3"],
[d219d56]94body.on-post[data-grid-cols="4"] .grid-cols-btn[data-cols="4"],
[b200738]95/* Op de agenda- én downloads-pagina is er geen actieve feed-weergave → Tijdlijn/
96 Grid (+cols) grijs. (Agenda blijft via .vs-agenda.is-active wél gemarkeerd.) */
[d219d56]97body.on-shows[data-feed-view="timeline"] .view-switch-btn[data-view="timeline"],
98body.on-shows[data-feed-view="grid"] .view-switch-btn[data-view="grid"],
99body.on-shows[data-grid-cols="2"] .grid-cols-btn[data-cols="2"],
100body.on-shows[data-grid-cols="3"] .grid-cols-btn[data-cols="3"],
[b200738]101body.on-shows[data-grid-cols="4"] .grid-cols-btn[data-cols="4"],
102body.on-downloads[data-feed-view="timeline"] .view-switch-btn[data-view="timeline"],
103body.on-downloads[data-feed-view="grid"] .view-switch-btn[data-view="grid"],
104body.on-downloads[data-grid-cols="2"] .grid-cols-btn[data-cols="2"],
105body.on-downloads[data-grid-cols="3"] .grid-cols-btn[data-cols="3"],
106body.on-downloads[data-grid-cols="4"] .grid-cols-btn[data-cols="4"] {
[af5407f]107 background: transparent;
108 color: var(--ink-muted, var(--ink-soft));
109 border-color: var(--rule);
[11a6871]110}
[b200738]111/* Solo/Cirkel ook neutraal op agenda/downloads (base-regel gebruikt !important). */
112body.on-shows .view-switcher-wrap .feed-scope-btn.is-active,
113body.on-downloads .view-switcher-wrap .feed-scope-btn.is-active {
114 background: transparent !important;
115 color: var(--ink-muted, var(--ink-soft)) !important;
116}
[11a6871]117
[7bc636b]118/* Spacing between switcher-bar and the page content below.
119 .feed-timeline (used on home + archive + post-list pages) gets a top
120 margin so the first post doesn't collide with the switcher's border.
121 .feed-grid already has its own top spacing from grid-tile padding. */
122.view-switcher-wrap + #pcms-main .feed-timeline,
123.view-switcher-wrap + #pcms-main .container:first-child {
124 margin-top: 1.5rem;
125}
126
127/* Feed layout switching is in the v9 style.css (style.css):
128 .feed-timeline always rendered, .feed-grid hidden unless on-home + grid-mode. */
129
130/* ─────────────────────────────────────────────────
131 PWA install button (lives in topnav, hidden by default)
132 ───────────────────────────────────────────────── */
133#pwa-install-btn { color: var(--accent); }
134#pwa-install-btn:hover { background: var(--paper-2); }
135
136/* Shared button + form styles (used across pages) */
137.btn {
138 display: inline-flex;
139 align-items: center;
140 gap: 0.4rem;
141 padding: 0.55rem 1rem;
142 border: 1px solid var(--rule);
143 background: var(--paper-2);
144 color: var(--ink);
145 font-family: var(--font-ui, system-ui), sans-serif;
146 font-size: 0.9rem;
147 font-weight: 500;
148 text-decoration: none;
149 border-radius: 5px;
150 cursor: pointer;
151 transition: background 150ms, border-color 150ms;
152}
153.btn:hover { border-color: var(--accent); }
154.btn-primary { background: var(--accent); color: white; border-color: var(--accent); }
155.btn-primary:hover { opacity: 0.92; border-color: var(--accent); }
156.btn-success { background: #16a34a; color: white; border-color: #16a34a; }
157.btn-danger { background: #dc2626; color: white; border-color: #dc2626; }
158
159.alert { padding: 0.75rem 1rem; border-radius: 5px; margin-bottom: 1rem; }
160.alert-error { background: #fee2e2; color: #991b1b; border: 1px solid #fecaca; }
161.alert-success { background: #d1fae5; color: #065f46; border: 1px solid #a7f3d0; }
162
163.auth-page { max-width: 420px; margin: 3rem auto; padding: 0 1rem; }
164.auth-page h1 { font-family: var(--font-display, serif); text-align: center; margin: 0 0 1.5rem; }
165.auth-form { display: flex; flex-direction: column; gap: 1rem; }
166.auth-form label { display: flex; flex-direction: column; gap: 0.3rem; }
167.auth-form label > span { font-size: 0.85rem; font-weight: 600; color: var(--ink-soft); }
168.auth-form input { padding: 0.6rem 0.75rem; border: 1px solid var(--rule); border-radius: 4px; background: var(--paper); color: var(--ink); font-size: 1rem; }
169.auth-form .btn { justify-content: center; padding: 0.7rem; font-size: 1rem; margin-top: 0.5rem; }
170.auth-link { text-align: center; color: var(--ink-muted); font-size: 0.9rem; margin: 1rem 0 0; }
171.auth-link a { color: var(--accent); }
[c80e78b]172.auth-google { align-items: stretch; }
173.auth-intro { text-align: center; color: var(--ink-muted); font-size: 0.95rem; margin: 0 0 1rem; }
174.btn-google {
[e2a8e31]175 display: flex; justify-content: center; gap: 0.6rem; padding: 0.7rem; font-size: 1rem;
[c80e78b]176 background: #fff; color: #1f1f1f; border: 1px solid #dadce0;
177}
178.btn-google:hover { background: #f7f8f8; border-color: #dadce0; }
179.btn-google .g-icon { flex-shrink: 0; }
[9e27d64]180.auth-divider { display: flex; align-items: center; gap: 0.75rem; margin: 1.25rem 0; color: var(--ink-muted); font-size: 0.85rem; }
181.auth-divider::before, .auth-divider::after { content: ''; flex: 1; height: 1px; background: var(--rule); }
[7bc636b]182
183/* HTMX loading indicator */
184.pcms-loading {
185 display: none;
186 position: fixed;
187 top: 60px;
188 right: 1rem;
189 width: 24px;
190 height: 24px;
191 border: 3px solid var(--paper-2);
192 border-top-color: var(--accent);
193 border-radius: 50%;
194 animation: spin 0.8s linear infinite;
195 z-index: 1000;
196}
197.htmx-request .pcms-loading { display: block; }
198@keyframes spin { to { transform: rotate(360deg); } }
199</style>
Note: See TracBrowser for help on using the repository browser.