From 340b739bf2460db1974e5c64553add43cf361136 Mon Sep 17 00:00:00 2001 From: Jennie Robinson Faber Date: Thu, 9 Apr 2026 22:31:30 +0100 Subject: [PATCH] feat(onboarding): show onboarding progress on admin member detail --- app/pages/admin/members/[id].vue | 65 ++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/app/pages/admin/members/[id].vue b/app/pages/admin/members/[id].vue index ff3777b..111b949 100644 --- a/app/pages/admin/members/[id].vue +++ b/app/pages/admin/members/[id].vue @@ -127,6 +127,49 @@ + +
+ +
+
+
Profile Tags
+
+ {{ hasProfileTags ? '✓ Complete' : '— Incomplete' }} +
+
+
+
Event Page Visited
+
+ {{ member.onboarding?.eventPageVisited ? '✓ Complete' : '— Incomplete' }} +
+
+
+
Ecology Engaged
+
+ {{ hasEcologyEngaged ? '✓ Complete' : '— Incomplete' }} +
+
+
+
Wiki Clicked
+
+ {{ member.onboarding?.wikiClicked ? '✓ Complete' : '— Incomplete' }} +
+
+
+
Completed
+
+ {{ member.onboarding?.completedAt ? formatDate(member.onboarding.completedAt) : 'In progress' }} +
+
+
+
Slack status
+
+ {{ member.slackInviteStatus || 'none' }} +
+
+
+
+
@@ -304,6 +347,28 @@ function statusClass(status) { return "status-dim"; } +// Onboarding computed states +const hasProfileTags = computed(() => { + const m = member.value + if (!m) return false + return m.craftTags?.length > 0 && m.communityEcology?.topics?.length > 0 +}) + +const hasEcologyEngaged = computed(() => { + const m = member.value + if (!m) return false + return m.onboarding?.ecologyPageVisited && m.communityEcology?.topics?.some( + t => ['help', 'interested', 'seeking'].includes(t.state) + ) +}) + +const slackStatusClass = computed(() => { + const status = member.value?.slackInviteStatus + if (status === 'joined') return 'status-ok' + if (status === 'invited') return 'status-dim' + return 'status-dim' +}) + // Activity log const activityEntries = ref([]) const activityLoading = ref(false)