feat(onboarding): show onboarding progress on admin member detail
This commit is contained in:
parent
3797ff7925
commit
340b739bf2
1 changed files with 65 additions and 0 deletions
|
|
@ -127,6 +127,49 @@
|
|||
</dl>
|
||||
</section>
|
||||
|
||||
<!-- Onboarding -->
|
||||
<section class="detail-section">
|
||||
<div class="section-label">Onboarding</div>
|
||||
<dl class="meta-list">
|
||||
<div class="meta-row">
|
||||
<dt>Profile Tags</dt>
|
||||
<dd :class="hasProfileTags ? 'status-ok' : 'status-dim'">
|
||||
{{ hasProfileTags ? '✓ Complete' : '— Incomplete' }}
|
||||
</dd>
|
||||
</div>
|
||||
<div class="meta-row">
|
||||
<dt>Event Page Visited</dt>
|
||||
<dd :class="member.onboarding?.eventPageVisited ? 'status-ok' : 'status-dim'">
|
||||
{{ member.onboarding?.eventPageVisited ? '✓ Complete' : '— Incomplete' }}
|
||||
</dd>
|
||||
</div>
|
||||
<div class="meta-row">
|
||||
<dt>Ecology Engaged</dt>
|
||||
<dd :class="hasEcologyEngaged ? 'status-ok' : 'status-dim'">
|
||||
{{ hasEcologyEngaged ? '✓ Complete' : '— Incomplete' }}
|
||||
</dd>
|
||||
</div>
|
||||
<div class="meta-row">
|
||||
<dt>Wiki Clicked</dt>
|
||||
<dd :class="member.onboarding?.wikiClicked ? 'status-ok' : 'status-dim'">
|
||||
{{ member.onboarding?.wikiClicked ? '✓ Complete' : '— Incomplete' }}
|
||||
</dd>
|
||||
</div>
|
||||
<div class="meta-row">
|
||||
<dt>Completed</dt>
|
||||
<dd :class="member.onboarding?.completedAt ? 'status-ok' : 'status-dim'">
|
||||
{{ member.onboarding?.completedAt ? formatDate(member.onboarding.completedAt) : 'In progress' }}
|
||||
</dd>
|
||||
</div>
|
||||
<div class="meta-row">
|
||||
<dt>Slack status</dt>
|
||||
<dd :class="slackStatusClass">
|
||||
{{ member.slackInviteStatus || 'none' }}
|
||||
</dd>
|
||||
</div>
|
||||
</dl>
|
||||
</section>
|
||||
|
||||
<!-- Notification preferences -->
|
||||
<section class="detail-section">
|
||||
<div class="section-label">Notification preferences</div>
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue