'use client'; import { useState } from 'react'; import { PartnerConfig } from '@/lib/types/settings'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Switch } from '@/components/ui/switch'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Checkbox } from '@/components/ui/checkbox'; import { updateSystemSetting } from '@/lib/actions/settings'; import { toast } from 'sonner'; import { Handshake, Banknote, FileCheck } from 'lucide-react'; interface PartnerGovernanceProps { config: PartnerConfig; onUpdate: (data: PartnerConfig) => void; } export function PartnerGovernanceTab({ config, onUpdate }: PartnerGovernanceProps) { const [loading, setLoading] = useState(false); const [state, setState] = useState(config); const handleSave = async () => { setLoading(true); try { const res = await updateSystemSetting('partner', state); if (res.success && res.updatedSettings.partner) { toast.success('Partner governance rules updated'); onUpdate(res.updatedSettings.partner); } } catch (error) { toast.error('Failed to update partner settings'); } finally { setLoading(false); } }; const toggleKycDoc = (doc: 'pan' | 'gst' | 'aadhaar' | 'cheque') => { const current = state.allowedKycDocs; const updated = current.includes(doc) ? current.filter(d => d !== doc) : [...current, doc]; setState({ ...state, allowedKycDocs: updated }); }; return (
{/* Onboarding Rules */} Onboarding & Approval Set rules for new organizer accounts and events.

Block payouts until verified.

setState({ ...state, requireKyc: c })} />

Admins must approve live events.

setState({ ...state, manualEventApproval: c })} />
{/* Commission Model */} Commission & Payouts Define the default revenue share model.
setState({ ...state, defaultCommissionPercent: Number(e.target.value) })} />
setState({ ...state, minPayoutAmount: Number(e.target.value) })} />
{/* KYC Requirements */} KYC Requirements Select documents required for organizer verification.
{['pan', 'gst', 'aadhaar', 'cheque'].map((doc) => (
toggleKycDoc(doc as any)} />
))}
); }