source: Klonkt/src/assets/css/guardian.css@ e84ce32

main
Last change on this file since e84ce32 was 318d0c2, checked in by Robin Genis <roboburr@…>, 7 weeks ago

De Guardian-PWA: /guardian, wards managen, berichtencentrum, eigen push

Een aparte, installeerbare hoek van Klonkt voor guardians (FEP-633c), los
van de site-PWA: eigen manifest met scope /guardian/, eigen boei-icoon,
eigen accent. Ingelogde eigenaren handelen als een van hun eigen actors
(?site=slug bij meerdere sites).

Drie secties: het berichtencentrum (inkomende hulpverzoeken uit
ap_mentions, hulpvraag-eerst), wards (adopteren via handle -> WebFinger ->
dezelfde C2S Offer-pijplijn als de Shaer-apps; pending intrekken; ward
loslaten) en meldingen (web-push-kanaal met alert-typen help + guardian,
hergebruik van de bestaande push-slices en service worker).

Geen inline scripts of styles (CSP): alle logica in
/assets/js/guardian.js, opmaak in /assets/css/guardian.css. UI-teksten
volledig via i18n (nl/en/de); de JSON-state draagt de strings voor de
client.

Changed files:
src/server.js

  • mount /guardian vóór de slug-catch-all

src/routes/posts.js

  • 'guardian' (en paid/push in admin-sites) op de reserved-slug-lijst

src/routes/admin-sites.js

  • idem voor nieuwe sites

src/services/i18n.js

  • guardian.*-teksten in nl/en/de

New file:
src/routes/guardian.js

  • pagina, /api/state, /adopt, /wards/remove, manifest, icon

src/views/pages/guardian.ejs

  • de PWA-pagina, state als application/json-blok

src/assets/js/guardian.js

  • rendering, adopt-flow, push-subscribe (help+guardian), 45s-poll

src/assets/css/guardian.css

  • donker paneel, boei-oranje accent

remarks: emancipatie/verwijdering federeren (FEP 3.2-3.4) doet de
wards/remove-knop nog niet; dat is lokaal loslaten. Volgende stap na
akkoord: beta + demo's.

-robo
Co-Authored-By: Claude Opus 4.8 <noreply@…>

  • Property mode set to 100644
File size: 2.1 KB
Line 
1/* Guardian PWA (FEP-633c): its own calm, dark surface; the buoy orange is
2 the accent. Standalone: this page never inherits the site theme. */
3:root {
4 --bg: #141a24;
5 --card: #1e2632;
6 --ink: #e8ecf2;
7 --sub: #93a0b4;
8 --accent: #ff6b35;
9 --ok: #4caf7d;
10}
11* { box-sizing: border-box; }
12body {
13 margin: 0;
14 background: var(--bg);
15 color: var(--ink);
16 font: 16px/1.5 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
17 padding-bottom: 40px;
18}
19.g-head {
20 display: flex;
21 align-items: center;
22 gap: 10px;
23 padding: 14px 16px;
24 background: var(--card);
25 position: sticky;
26 top: 0;
27}
28.g-head h1 { font-size: 1.15rem; margin: 0; flex: 1; }
29.g-buoy { font-size: 1.5rem; }
30.g-me { color: var(--sub); font-size: .9rem; }
31#site-picker {
32 background: var(--bg); color: var(--ink);
33 border: 1px solid #33405233; border-radius: 8px; padding: 6px 8px;
34}
35main { max-width: 640px; margin: 0 auto; padding: 0 16px; }
36h2 { font-size: 1rem; margin: 26px 0 10px; }
37.g-sub { color: var(--sub); font-size: .85rem; margin: 0 0 10px; }
38.g-empty { color: var(--sub); font-size: .9rem; }
39.g-msg { font-size: .85rem; color: var(--ok); }
40.g-msg.err { color: #ff7a7a; }
41.g-list { display: flex; flex-direction: column; gap: 8px; }
42
43.g-card {
44 background: var(--card);
45 border-radius: 12px;
46 padding: 12px 14px;
47}
48.g-card.help { border-left: 3px solid var(--accent); }
49.g-card .who { font-weight: 600; }
50.g-card .when { color: var(--sub); font-size: .78rem; }
51.g-card .body { margin-top: 6px; font-size: .92rem; overflow-wrap: anywhere; }
52.g-card .body img { max-width: 100%; border-radius: 8px; }
53.g-card .row { display: flex; align-items: center; gap: 10px; }
54.g-card .row .grow { flex: 1; }
55.g-card .pend { color: var(--sub); font-size: .8rem; }
56
57#adopt-form { display: flex; gap: 8px; margin-bottom: 8px; }
58#adopt-form input {
59 flex: 1;
60 background: var(--card); color: var(--ink);
61 border: 1px solid #33405255; border-radius: 10px; padding: 10px 12px;
62}
63button {
64 background: var(--accent); color: #fff; border: 0;
65 border-radius: 10px; padding: 10px 16px; font-weight: 600; cursor: pointer;
66}
67button.quiet { background: #33405255; color: var(--ink); font-weight: 500; }
Note: See TracBrowser for help on using the repository browser.