diff --git a/src/app/admin/settings/page.tsx b/src/app/admin/settings/page.tsx index 694f853..3fbce8e 100644 --- a/src/app/admin/settings/page.tsx +++ b/src/app/admin/settings/page.tsx @@ -1,7 +1,7 @@ 'use client'; import { useState } from 'react'; -import { Settings, Upload, Image, Globe, Mail, MessageSquare, Phone, MapPin, Link2, Clock, Save, FileText, Camera, Palette, Ruler, Sun, Moon, Monitor, Smartphone, Tablet, Package, Wrench, FileCheck, BadgeDollarSign, CreditCard, Plus, X, DollarSign, Zap } from 'lucide-react'; +import { Settings, Upload, Image, Globe, Mail, MessageSquare, Phone, MapPin, Link2, Clock, Save, FileText, Camera, Palette, Ruler, Sun, Moon, Monitor, Smartphone, Tablet, Package, Wrench, FileCheck, BadgeDollarSign, CreditCard, Plus, X, DollarSign, Zap, Users } from 'lucide-react'; interface CompanySettings { name: string; @@ -151,6 +151,21 @@ interface CompanySettings { status: string; description: string; }[]; + riderRequest: { + id: string; + tier: string; + name: string; + minRiders: number; + maxRiders: number; + monthlySubscription: number; + dailySubscription: number; + deposit: number; + commissionPercent: number; + dailyRideTarget: number; + weeklyHoliday: number; + status: string; + description: string; + }[]; }; } @@ -536,12 +551,59 @@ const initialSettings: CompanySettings = { description: 'Premium swap station for large operators', } ], + riderRequest: [ + { + id: 'rider_1', + tier: 'Premium', + name: 'Premium Rider Plan', + minRiders: 10, + maxRiders: 50, + monthlySubscription: 3000, + dailySubscription: 150, + deposit: 5000, + commissionPercent: 70, + dailyRideTarget: 15, + weeklyHoliday: 1, + status: 'active', + description: 'Premium rider plan for high volume operators', + }, + { + id: 'rider_2', + tier: 'Standard', + name: 'Standard Rider Plan', + minRiders: 5, + maxRiders: 20, + monthlySubscription: 1500, + dailySubscription: 80, + deposit: 3000, + commissionPercent: 60, + dailyRideTarget: 10, + weeklyHoliday: 1, + status: 'active', + description: 'Standard rider plan for medium operators', + }, + { + id: 'rider_3', + tier: 'Economy', + name: 'Economy Rider Plan', + minRiders: 1, + maxRiders: 10, + monthlySubscription: 500, + dailySubscription: 30, + deposit: 1000, + commissionPercent: 50, + dailyRideTarget: 5, + weeklyHoliday: 0, + status: 'active', + description: 'Economy rider plan for small operators', + } + ], }, }; export default function CompanySettingsPage() { const [settings, setSettings] = useState(initialSettings); - const [activeTab, setActiveTab] = useState<'general' | 'branding' | 'social' | 'integration' | 'landing' | 'kyc' | 'parts' | 'rental' | 'plans' | 'investment' | 'swapstation'>('general'); + const [activeTab, setActiveTab] = useState<'general' | 'branding' | 'social' | 'integration' | 'landing' | 'kyc' | 'parts' | 'rental' | 'plans' | 'investment' | 'swapstation' | 'riderrequest'>('general'); const [activeMasterTab, setActiveMasterTab] = useState<'investor' | 'merchant' | 'swapstation' | 'rental'>('investor'); const [saved, setSaved] = useState(false); const [activePlanTab, setActivePlanTab] = useState<'singleRent' | 'rentToOwn' | 'shareEv'>('singleRent'); @@ -626,10 +688,47 @@ export default function CompanySettingsPage() { setSettings({ ...settings, plans: { ...settings.plans, swapStation: updatedPlans } }); setActiveSwapTab(updatedPlans.length - 1); setAddSwapStationPlan(false); - setNewSwapName(''); +setNewSwapName(''); + } + }; + const [activeRiderTab, setActiveRiderTab] = useState(0); + const [addRiderPlan, setAddRiderPlan] = useState(false); + const [newRiderName, setNewRiderName] = useState(''); + const [newRiderTier, setNewRiderTier] = useState('Standard'); + const [newRiderStatus, setNewRiderStatus] = useState('active'); + const [newRiderMin, setNewRiderMin] = useState(1); + const [newRiderMax, setNewRiderMax] = useState(10); + const [newRiderMonthly, setNewRiderMonthly] = useState(500); + const [newRiderDaily, setNewRiderDaily] = useState(30); + const [newRiderDeposit, setNewRiderDeposit] = useState(1000); + const [newRiderCommission, setNewRiderCommission] = useState(50); + const [newRiderTarget, setNewRiderTarget] = useState(5); + const [newRiderHoliday, setNewRiderHoliday] = useState(0); + const [newRiderDesc, setNewRiderDesc] = useState(''); + const createRiderPlan = () => { + if (newRiderName.trim() && typeof window !== 'undefined') { + const newPlan = { + id: 'rider_' + Date.now(), + name: newRiderName, + tier: newRiderTier, + minRiders: newRiderMin, + maxRiders: newRiderMax, + monthlySubscription: newRiderMonthly, + dailySubscription: newRiderDaily, + deposit: newRiderDeposit, + commissionPercent: newRiderCommission, + dailyRideTarget: newRiderTarget, + weeklyHoliday: newRiderHoliday, + status: newRiderStatus, + description: newRiderDesc + }; + const updatedPlans = [...settings.plans.riderRequest, newPlan]; + setSettings({ ...settings, plans: { ...settings.plans, riderRequest: updatedPlans } }); + setActiveRiderTab(updatedPlans.length - 1); + setAddRiderPlan(false); + setNewRiderName(''); } }; - const handleSave = () => { setSaved(true); setTimeout(() => setSaved(false), 2000); @@ -647,6 +746,7 @@ export default function CompanySettingsPage() { { id: 'plans', label: 'Plan Selection', icon: Package }, { id: 'investment', label: 'Investment Plan', icon: DollarSign }, { id: 'swapstation', label: 'Swap Station Plan', icon: Zap }, + { id: 'riderrequest', label: 'Rider Request Plan', icon: Users }, ]; return ( @@ -2292,6 +2392,182 @@ export default function CompanySettingsPage() { ))} )} + + {(activeTab as string) === 'riderrequest' && ( +
+
+

Rider Request Plans

+
+ +
+
+

Rider Request Plans ({settings.plans.riderRequest.length})

+

Manage rider request plans for operators

+
+ +
+ + {addRiderPlan && ( +
+
+
+

New Rider Request Plan

+

Fill in the details below

+
+ +
+
+
+
+ + setNewRiderName(e.target.value)} placeholder="e.g., Premium Rider Plan" className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm mt-1" /> +
+
+ + +
+
+ + +
+
+ + setNewRiderMin(parseInt(e.target.value))} className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm mt-1" /> +
+
+ + setNewRiderMax(parseInt(e.target.value))} className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm mt-1" /> +
+
+ + setNewRiderMonthly(parseInt(e.target.value))} className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm mt-1" /> +
+
+ + setNewRiderDaily(parseInt(e.target.value))} className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm mt-1" /> +
+
+ + setNewRiderDeposit(parseInt(e.target.value))} className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm mt-1" /> +
+
+ + setNewRiderCommission(parseInt(e.target.value))} className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm mt-1" /> +
+
+ + setNewRiderTarget(parseInt(e.target.value))} className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm mt-1" /> +
+
+ + setNewRiderHoliday(parseInt(e.target.value))} className="w-full px-3 py-2 border border-slate-200 rounded-lg text-sm mt-1" /> +
+
+
+ +