feat(signup): community guidelines agreement and policies routes

Introduces /community-guidelines and /policies/{privacy,terms,[slug]} pages,
swaps the signup/invite checkbox from agreedToTerms to agreedToGuidelines,
adds Member.agreement.acceptedAt, and stamps the field when a Helcim
customer is created.
This commit is contained in:
Jennie Robinson Faber 2026-04-18 17:06:10 +01:00
parent e0d11e47f4
commit c5e901ed24
13 changed files with 1292 additions and 54 deletions

View file

@ -32,7 +32,7 @@
class="form-input"
type="text"
required
/>
>
</div>
<div class="form-group">
<label class="form-label" for="accept-email">Email</label>
@ -42,7 +42,7 @@
class="form-input"
type="email"
disabled
/>
>
<p class="field-note">Email cannot be changed. Contact us if you need to use a different email.</p>
</div>
<div class="form-group">
@ -53,7 +53,7 @@
class="form-input"
type="text"
placeholder="e.g. they/them, she/her"
/>
>
</div>
<div class="form-group">
<label class="form-label" for="accept-location">City / Region</label>
@ -63,7 +63,7 @@
class="form-input"
type="text"
placeholder="e.g. Vancouver, BC"
/>
>
</div>
<div class="form-group full-width">
@ -77,7 +77,7 @@
type="radio"
name="circle"
value="community"
/>
>
<label for="circle-community">
<span class="circle-label-name" style="color: var(--c-community);">Community</span>
<span class="circle-label-desc">Learning about co-ops</span>
@ -90,7 +90,7 @@
type="radio"
name="circle"
value="founder"
/>
>
<label for="circle-founder">
<span class="circle-label-name" style="color: var(--c-founder);">Founder</span>
<span class="circle-label-desc">Building your studio</span>
@ -103,7 +103,7 @@
type="radio"
name="circle"
value="practitioner"
/>
>
<label for="circle-practitioner">
<span class="circle-label-name" style="color: var(--c-practitioner);">Practitioner</span>
<span class="circle-label-desc">Leading and mentoring</span>
@ -120,7 +120,7 @@
class="form-input"
rows="3"
placeholder="2-3 sentences about what you're looking for"
></textarea>
/>
</div>
<div class="form-group full-width">
@ -142,14 +142,12 @@
<div class="form-group full-width">
<label class="checkbox-label">
<input
v-model="form.agreedToGuidelines"
type="checkbox"
v-model="form.agreedToTerms"
/>
>
<span>
I've read and agree to the
<NuxtLink to="/agreement" target="_blank">Member Agreement</NuxtLink>
and
<NuxtLink to="/guidelines" target="_blank">Code of Conduct</NuxtLink>
I agree to the Ghost Guild
<NuxtLink to="/community-guidelines" target="_blank">Community Guidelines</NuxtLink>.
</span>
</label>
</div>
@ -221,11 +219,11 @@ const form = reactive({
circle: "community",
motivation: "",
contributionTier: "15",
agreedToTerms: false,
agreedToGuidelines: false,
});
const isFormValid = computed(() => {
return form.name && form.circle && form.contributionTier && form.agreedToTerms;
return form.name && form.circle && form.contributionTier && form.agreedToGuidelines;
});
const needsPayment = computed(() => {
@ -283,7 +281,7 @@ const handleAccept = async () => {
circle: form.circle,
motivation: form.motivation || undefined,
contributionTier: form.contributionTier,
agreedToTerms: form.agreedToTerms,
agreedToGuidelines: form.agreedToGuidelines,
token: token.value,
},
});