feat(dashboard): one-line note for active members awaiting Slack invite

Renders only when status==='active' && !slackInvited. Hidden for
pending_payment, suspended, cancelled, guest, and any member already
flagged as invited. Lives inside the existing ClientOnly tree at the
top of the dashboard so it never SSRs.

Plain inline text in the welcome region — no banner, no callout. The
2–3 week window is admin-side workflow; the copy avoids cohort/wave
language.
This commit is contained in:
Jennie Robinson Faber 2026-04-29 12:26:51 +01:00
parent c2999810c6
commit 7b326f879d

View file

@ -38,6 +38,10 @@
<CircleBadge :circle="memberData?.circle || 'community'" /> <CircleBadge :circle="memberData?.circle || 'community'" />
<span>${{ memberData?.contributionAmount ?? 0 }} CAD/mo</span> <span>${{ memberData?.contributionAmount ?? 0 }} CAD/mo</span>
</div> </div>
<p v-if="showSlackComingNote" class="slack-coming-note">
Slack workspace access is part of your membership. Your invitation
typically arrives within 2&ndash;3 weeks of joining.
</p>
</PageHeader> </PageHeader>
<!-- Upcoming Events + Quick Actions --> <!-- Upcoming Events + Quick Actions -->
@ -224,6 +228,10 @@ const { isActive, statusConfig, isPendingPayment, canPeerSupport } =
const route = useRoute(); const route = useRoute();
const isNewSignup = computed(() => route.query.welcome === "1"); const isNewSignup = computed(() => route.query.welcome === "1");
const showSlackComingNote = computed(
() =>
memberData.value?.status === "active" && !memberData.value?.slackInvited,
);
const welcomeTitle = computed(() => { const welcomeTitle = computed(() => {
const name = memberData.value?.name || ""; const name = memberData.value?.name || "";
return isNewSignup.value return isNewSignup.value
@ -468,6 +476,13 @@ useHead({
margin-top: 8px; margin-top: 8px;
} }
.slack-coming-note {
margin-top: 12px;
font-size: 12px;
color: var(--text-dim);
line-height: 1.65;
}
.content-row { .content-row {
display: grid; display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-columns: repeat(2, minmax(0, 1fr));