feat(topbar): unread/queue badges + Approvals tab
App.tsx polls every 60s when authed + tenant known: - chatApi.listThreads + listMessages -> count threads with last message from someone else after our localStorage read mark - api.workItems filtered by tenant -> queue count Badge UI: - Chat tab shows amber unread pill (99+ cap) - Approvals tab (new in topbar) shows navy queue-count pill Also promotes Approvals to a first-class topbar tab (was landing-chip only). 60s poll is identical to existing live-tick cadence so this adds no extra polling load.
This commit is contained in:
@@ -2225,3 +2225,15 @@ select.studio-input { background: var(--bp-paper); }
|
||||
.wizard-body { padding: 0 12px 12px; }
|
||||
.wizard-preview { position: static; max-height: none; }
|
||||
}
|
||||
|
||||
.tab-badge {
|
||||
display: inline-flex; align-items: center; justify-content: center;
|
||||
margin-left: 4px;
|
||||
min-width: 18px; padding: 0 5px; height: 16px;
|
||||
background: var(--bp-navy); color: var(--bp-paper);
|
||||
font-family: var(--bp-mono); font-size: 9px; font-weight: 700; line-height: 1;
|
||||
}
|
||||
.tab-badge-amber { background: var(--bp-amber); color: var(--bp-paper); }
|
||||
@media (max-width: 700px) {
|
||||
.tab-badge { min-width: 14px; height: 12px; font-size: 8px; padding: 0 3px; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user