diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-08-11 12:40:13 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-08-11 12:40:13 +0200 |
| commit | edde9e441fb6b84e9d56215d6e2a8d9338b8f962 (patch) | |
| tree | be09d4cc1a64e9ccc488ca9fcc1e23b6a133a8f5 /packages/meshbay-hub/src/meshbay_hub/static/style.css | |
| parent | ccb2b85051b88578c7d739ff46385e50a65591a6 (diff) | |
| download | meshbay-edde9e441fb6b84e9d56215d6e2a8d9338b8f962.tar.gz | |
feat(hub): Phase 10.5–10.8, 10.10 — notifications, settings, search, version
- 10.5: Notification model + CRUD API (list, mark read, mark all read)
Triggered on: group invite, role change, suspend/unsuspend
- 10.6: SettingsPage shows role, per-group notification mute (localStorage)
- 10.7: GET /v1/groups?q= search filter (ilike on name)
- 10.8: NotificationFeed on home page + bell with unread badge in navbar
- 10.10: GET /v1/hub/version endpoint for client update checks
- 8 new tests (test_notifications.py), 155 total
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'packages/meshbay-hub/src/meshbay_hub/static/style.css')
| -rw-r--r-- | packages/meshbay-hub/src/meshbay_hub/static/style.css | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/packages/meshbay-hub/src/meshbay_hub/static/style.css b/packages/meshbay-hub/src/meshbay_hub/static/style.css index b1b1a7e..3aea648 100644 --- a/packages/meshbay-hub/src/meshbay_hub/static/style.css +++ b/packages/meshbay-hub/src/meshbay_hub/static/style.css @@ -1003,3 +1003,67 @@ button:disabled { opacity: 0.5; cursor: not-allowed; } .th-type, .td-type { display: none; } .th-date, .td-date { display: none; } } + +/* ── Notification bell ───────────────────────────────────────────────────── */ + +.nav-notif { + position: relative; + color: var(--text); + text-decoration: none; + font-size: 1.1rem; + margin-right: 4px; +} +.notif-badge { + position: absolute; + top: -6px; + right: -8px; + background: var(--danger); + color: #fff; + font-size: 0.65rem; + padding: 1px 5px; + border-radius: 10px; + font-weight: 700; +} + +/* ── Notification feed ───────────────────────────────────────────────────── */ + +.notif-feed { + margin-bottom: 24px; +} +.notif-feed h3 { + margin: 0 0 8px; + font-size: 1rem; +} +.notif-item { + display: flex; + align-items: center; + gap: 8px; + padding: 8px 12px; + border-radius: var(--radius); + background: var(--bg-surface); + margin-bottom: 4px; + cursor: pointer; + border: 1px solid var(--border); +} +.notif-item:hover { + background: var(--bg-raised); +} +.notif-unread { + border-left: 3px solid var(--primary); + font-weight: 600; +} +.notif-kind { + font-size: 0.75rem; + color: var(--text-secondary); + text-transform: uppercase; + white-space: nowrap; +} +.notif-text { + flex: 1; + font-size: 0.9rem; +} +.notif-time { + font-size: 0.75rem; + color: var(--text-secondary); + white-space: nowrap; +} |