Update:- Membership Plan- Donation- Member detail for Member Directory

This commit is contained in:
Koncept Kit
2025-12-11 19:29:00 +07:00
parent da211b6e38
commit 59f50f3fac
21 changed files with 1851 additions and 197 deletions

View File

@@ -108,11 +108,22 @@ const AdminPlans = () => {
monthly: 'Monthly',
quarterly: 'Quarterly',
yearly: 'Yearly',
lifetime: 'Lifetime'
lifetime: 'Lifetime',
custom: 'Custom Billing Cycle'
};
return labels[cycle] || cycle;
};
const formatCustomCycleDates = (plan) => {
if (!plan.custom_cycle_enabled) return null;
const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
const startMonth = months[plan.custom_cycle_start_month - 1];
const endMonth = months[plan.custom_cycle_end_month - 1];
return `${startMonth} ${plan.custom_cycle_start_day} - ${endMonth} ${plan.custom_cycle_end_day}`;
};
return (
<>
<div className="mb-8">
@@ -212,7 +223,7 @@ const AdminPlans = () => {
}`}
>
{/* Header with badges */}
<div className="flex justify-between items-start mb-4">
<div className="flex flex-wrap gap-2 mb-4">
<Badge
className={`${
plan.active
@@ -228,6 +239,16 @@ const AdminPlans = () => {
{plan.subscriber_count}
</Badge>
)}
{plan.custom_cycle_enabled && (
<Badge className="bg-[#664fa3] text-white">
Custom Dates
</Badge>
)}
{plan.allow_donation && (
<Badge className="bg-[#ff9e77] text-white">
Donations Enabled
</Badge>
)}
</div>
{/* Plan Name */}
@@ -244,25 +265,23 @@ const AdminPlans = () => {
{/* Price */}
<div className="mb-4">
<div className="text-3xl font-bold text-[#ff9e77]" style={{ fontFamily: "'Inter', sans-serif" }}>
{formatPrice(plan.price_cents)}
<div className="flex items-baseline gap-2">
<div className="text-3xl font-bold text-[#ff9e77]" style={{ fontFamily: "'Inter', sans-serif" }}>
{formatPrice(plan.minimum_price_cents || plan.price_cents)}
</div>
{plan.suggested_price_cents && plan.suggested_price_cents > plan.minimum_price_cents && (
<div className="text-lg text-[#664fa3]" style={{ fontFamily: "'Nunito Sans', sans-serif" }}>
(Suggested: {formatPrice(plan.suggested_price_cents)})
</div>
)}
</div>
<p className="text-sm text-[#664fa3]" style={{ fontFamily: "'Nunito Sans', sans-serif" }}>
{getBillingCycleLabel(plan.billing_cycle)}
</p>
</div>
{/* Stripe Integration Status */}
<div className="mb-6">
{plan.stripe_price_id ? (
<Badge className="bg-[#81B29A] text-white text-xs">
<DollarSign className="h-3 w-3 mr-1" />
Stripe Integrated
</Badge>
) : (
<Badge className="bg-[#DDD8EB] text-[#422268] text-xs">
Manual/Test Plan
</Badge>
{plan.custom_cycle_enabled && (
<p className="text-xs text-[#664fa3] font-mono mt-1">
{formatCustomCycleDates(plan)}
</p>
)}
</div>