diff --git a/src/components/admin/ActivityTab.astro b/src/components/admin/ActivityTab.astro deleted file mode 100644 index d4e7fa3..0000000 --- a/src/components/admin/ActivityTab.astro +++ /dev/null @@ -1,44 +0,0 @@ ---- -import type { ActivityRow } from '../../lib/db'; -import { fmtDateTime } from '../../lib/markdown'; - -interface Props { - rows: ActivityRow[]; -} - -const { rows } = Astro.props; ---- -
- The raw activity feed — what powers the ticker on /pulse. Read-only debug view. - Showing up to 200 most-recent events; the ticker takes the last 12 within 7 days. -
- - {rows.length === 0 ? ( -No activity recorded yet.
- ) : ( -| When | -Actor | -Kind | -Subject | -
|---|---|---|---|
| {fmtDateTime(r.created_at)} | -{r.actor_name} ({r.actor_role}) | -{r.kind} | -{r.subject_type} #{r.subject_id} | -
No dispatches yet.
- ) : ( -| Title | -Kind | -Author | -Status | -Published | -Actions | -
|---|---|---|---|---|---|
| {d.title} | -{dispatchKindLabel(d.kind)} | -{d.author_name} | -{STATUS_LABEL[d.status]} | -{d.published_at ? fmtDateTime(d.published_at) : '—'} | -- Edit - {d.status === 'draft' && ( - - )} - {d.status === 'published' && ( - - )} - - | -
{fmtDateTime(viewing.starts_at)} · {viewing.location}
-No events yet.
- ) : ( -| Title | -Kind | -When | -Location | -Actions | -
|---|---|---|---|---|
| {ev.title} | -{KIND_LABEL[ev.kind]} | -{fmtDateTime(ev.starts_at)} | -{ev.location || '—'} | -- RSVPs - Edit - - | -
{viewing.question}
- {viewing.context &&{viewing.context}
} -Open {fmtDateTime(viewing.opens_at)} → {fmtDateTime(viewing.closes_at)} · {viewing.votes_total} vote{viewing.votes_total === 1 ? '' : 's'}
-No pulses yet.
- ) : ( -| Question | -Status | -Opens / Closes | -Actions | -
|---|---|---|---|
| {p.question} | -{STATUS_LABEL[p.status]} | -{fmtDateTime(p.opens_at)} → {fmtDateTime(p.closes_at)} |
- - Results - Edit - {p.status === 'draft' && ( - - )} - {p.status === 'open' && ( - - )} - - | -
Nothing here yet.
- ) : ( -| Title | -Target | -Attributed | -Order | -Actions | -
|---|---|---|---|---|
| {item.title} | -{item.target ?? '—'} | -{item.attributed.length === 0 ? '—' : item.attributed.map(a => a.name.split(' ')[0]).join(', ')} | -{item.display_order} | -- {idx > 0 && ( - - )} - {idx < grouped[status].length - 1 && ( - - )} - Edit - - | -
- Role transitions and deactivation live in the participants table. - A member-number is allocated the first time a user becomes CAB and is never reused. -
-Admin
-- {MSGS[actionMsg] ?? ''} -
- )} - - {formError && ( -{formError}
- )} - - - {tab === 'invitations' && ( -{formError}
- )} - - {newInviteToken && ( -Copy this link and send it personally. It expires in 14 days and is single-use.
-{newInviteToken}
-
- No outstanding invites.
- ) : ( -| Name | -Organisation | -Role | -Expires | -Action | -|
|---|---|---|---|---|---|
| {invite.name} | -{invite.email} | -{invite.organisation} | -{invite.role} | -{fmtDate(invite.expires_at)} | -- - | -
| Name | -Organisation | -Role | -Last seen | -Actions | -|
|---|---|---|---|---|---|
| {u.name} | -{u.email} | -{u.organisation} | -- {u.id !== user.id ? ( - - ) : ( - {u.role} - )} - | -- {u.last_seen_at ? fmtDate(u.last_seen_at) : 'Never'} - | -- Edit - {u.id !== user.id && ( - - )} - | -
- Users who clicked "I want to join" on the home page. Use this to prioritise - follow-up and generate invite links. -
- {joinRequests.length === 0 ? ( -No join requests yet.
- ) : ( -| Name | -Organisation | -Requested | -|
|---|---|---|---|
| {jr.user_name} | -{jr.user_email} | -{jr.user_organisation} | -{fmtDate(jr.created_at)} | -