{note.text}
+ )} + + {days.length === 0 && ( +Nothing has happened here yet.
+ )} + + {days.map((day) => ( +{scopeNote}
+ )} +- You are not in any Team. Teams come from the game — join a guild in-game and it will - appear here after the next sync. -
- )} - -- {reason.detail} -
-- {rosterSummary({ members: team.memberCount, linked: team.linkedCount })} -
-- This Team is no longer active. - {data.successor && ( - <> - {' '}It is now{' '} - {data.successor.name}. - > - )} -
- )} - -- {rosterSummary({ members: data.memberCount, linked: data.linkedCount })} - {data.onlineCount > 0 && ` · ${data.onlineCount} online`} -
- {note && ( -- {note.text} -
- )} - -- View the full roster → -
- - {/* The module's spot, under the counts. Core's online number above is - the durable floor refreshed at the reconcile interval; a module - holding a live presence feed renders the current one here, without - core acquiring an SSE stack for it (§3.3). Unfilled on bare core, - and a failure inside it is contained to this section. */} -The activity feed could not be loaded.
- )} - - {!feed.loading && !feed.error && days.length === 0 && ( -Nothing has happened here yet.
- )} - - {days.map((day) => ( -{scopeNote}
- )} -- ← Back to the Team -
- - {(team.loading || roster.loading) &&- {rosterSummary({ members: members.length, linked })} -
- {note && ( -- {note.text} -
- )} - - {emptyReason &&{emptyReason}
} - - {members.length > 0 && ( -| Name | -Rank | -Status | -- |
|---|---|---|---|
| - {member.displayName} - {member.isLeader && ( - Leader - )} - {/* Muted text alone would read as a rendering glitch; the - chip is what makes the gap in the header line legible. */} - {!member.linked && ( - - not linked - - )} - | -{member.rankLabel || '—'} | -- {member.online ? 'Online' : 'Offline'} - | - {/* The module's trailing cell. Nothing on bare core. - §3.4 declares this slot's props as `{ memberKey, userId, - displayName }`, and two of those cannot be supplied: - §3.2 withholds the member key and the user id from every - public roster response, so they are not in the payload - this component was rendered from. Publishing them to - reach the slot would put a game-internal identifier and - a site account id on a public page for every visitor, - module installed or not — the doc's two sections - contradict each other and §3.2 is the one that is a - security rule. The slot gets what core can honestly - give it. */} -
- |
-
- {note.text} -
- )} - - {total > 0 && ( - setQuery(e.target.value)} - placeholder="Search by name or abbreviation" - aria-label="Search Teams" - style={{ - width: '100%', - padding: '10px 14px', - marginBottom: 20, - borderRadius: 8, - border: '1px solid var(--line)', - background: 'rgba(0,0,0,0.25)', - color: 'var(--head)', - fontFamily: 'var(--sans)', - }} - /> - )} - - {total === 0 && ( -- {data.configured - ? 'No Teams yet.' - : 'This site has no Teams — no installed module supplies them.'} -
- )} - - {total > 0 && teams.length === 0 && ( -No Team matches “{query}”.
- )} - -