From 7b326f879d39819176538846e6601abbc2e9dc81 Mon Sep 17 00:00:00 2001 From: Jennie Robinson Faber Date: Wed, 29 Apr 2026 12:26:51 +0100 Subject: [PATCH] feat(dashboard): one-line note for active members awaiting Slack invite MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- app/pages/member/dashboard.vue | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/app/pages/member/dashboard.vue b/app/pages/member/dashboard.vue index eeba869..26c0ad9 100644 --- a/app/pages/member/dashboard.vue +++ b/app/pages/member/dashboard.vue @@ -38,6 +38,10 @@ ${{ memberData?.contributionAmount ?? 0 }} CAD/mo +

+ Slack workspace access is part of your membership. Your invitation + typically arrives within 2–3 weeks of joining. +

@@ -224,6 +228,10 @@ const { isActive, statusConfig, isPendingPayment, canPeerSupport } = const route = useRoute(); const isNewSignup = computed(() => route.query.welcome === "1"); +const showSlackComingNote = computed( + () => + memberData.value?.status === "active" && !memberData.value?.slackInvited, +); const welcomeTitle = computed(() => { const name = memberData.value?.name || ""; return isNewSignup.value @@ -468,6 +476,13 @@ useHead({ margin-top: 8px; } +.slack-coming-note { + margin-top: 12px; + font-size: 12px; + color: var(--text-dim); + line-height: 1.65; +} + .content-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));