110 lines
3 KiB
JavaScript
110 lines
3 KiB
JavaScript
// Server-side contribution config
|
|
// Copy of the client-side config for server use
|
|
|
|
// Central configuration for Ghost Guild Contribution Levels and Helcim Plans
|
|
export const CONTRIBUTION_TIERS = {
|
|
FREE: {
|
|
value: "0",
|
|
amount: 0,
|
|
label: "$0 - I need support right now",
|
|
tier: "free",
|
|
helcimPlanId: null, // No Helcim plan needed for free tier
|
|
features: ["Access to basic resources", "Community forum access"],
|
|
},
|
|
SUPPORTER: {
|
|
value: "5",
|
|
amount: 5,
|
|
label: "$5 - I can contribute a little",
|
|
tier: "supporter",
|
|
helcimPlanId: 20162,
|
|
features: [
|
|
"All Free Membership benefits",
|
|
"Priority community support",
|
|
"Early access to events",
|
|
],
|
|
},
|
|
MEMBER: {
|
|
value: "15",
|
|
amount: 15,
|
|
label: "$15 - I can sustain the community",
|
|
tier: "member",
|
|
helcimPlanId: 21596,
|
|
features: [
|
|
"All Supporter benefits",
|
|
"Access to premium workshops",
|
|
"Monthly 1-on-1 sessions",
|
|
"Advanced resource library",
|
|
],
|
|
},
|
|
ADVOCATE: {
|
|
value: "30",
|
|
amount: 30,
|
|
label: "$30 - I can support others too",
|
|
tier: "advocate",
|
|
helcimPlanId: 21597,
|
|
features: [
|
|
"All Member benefits",
|
|
"Weekly group mentoring",
|
|
"Access to exclusive events",
|
|
"Direct messaging with experts",
|
|
],
|
|
},
|
|
CHAMPION: {
|
|
value: "50",
|
|
amount: 50,
|
|
label: "$50 - I want to sponsor multiple members",
|
|
tier: "champion",
|
|
helcimPlanId: 21598,
|
|
features: [
|
|
"All Advocate benefits",
|
|
"Personal mentoring sessions",
|
|
"VIP event access",
|
|
"Custom project support",
|
|
"Annual strategy session",
|
|
],
|
|
},
|
|
};
|
|
|
|
// Get all contribution options as an array (useful for forms)
|
|
export const getContributionOptions = () => {
|
|
return Object.values(CONTRIBUTION_TIERS);
|
|
};
|
|
|
|
// Get valid contribution values for validation
|
|
export const getValidContributionValues = () => {
|
|
return Object.values(CONTRIBUTION_TIERS).map((tier) => tier.value);
|
|
};
|
|
|
|
// Get contribution tier by value
|
|
export const getContributionTierByValue = (value) => {
|
|
return Object.values(CONTRIBUTION_TIERS).find((tier) => tier.value === value);
|
|
};
|
|
|
|
// Get Helcim plan ID for a contribution tier
|
|
export const getHelcimPlanId = (contributionValue) => {
|
|
const tier = getContributionTierByValue(contributionValue);
|
|
return tier?.helcimPlanId || null;
|
|
};
|
|
|
|
// Check if a contribution tier requires payment
|
|
export const requiresPayment = (contributionValue) => {
|
|
const tier = getContributionTierByValue(contributionValue);
|
|
return tier?.amount > 0;
|
|
};
|
|
|
|
// Check if a contribution value is valid
|
|
export const isValidContributionValue = (value) => {
|
|
return getValidContributionValues().includes(value);
|
|
};
|
|
|
|
// Get contribution tier by Helcim plan ID
|
|
export const getContributionTierByHelcimPlan = (helcimPlanId) => {
|
|
return Object.values(CONTRIBUTION_TIERS).find(
|
|
(tier) => tier.helcimPlanId === helcimPlanId,
|
|
);
|
|
};
|
|
|
|
// Get paid tiers only (excluding free tier)
|
|
export const getPaidContributionTiers = () => {
|
|
return Object.values(CONTRIBUTION_TIERS).filter((tier) => tier.amount > 0);
|
|
};
|