import React, { useState } from 'react'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Button } from '@/components/ui/button'; import { Input } from '@/components/ui/input'; import { Label } from '@/components/ui/label'; import { Textarea } from '@/components/ui/textarea'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Badge } from '@/components/ui/badge'; import { Plus, Trash2, AlertCircle } from 'lucide-react'; interface BudgetItem { id: string; description: string; amount: number; category: string; justification: string; } interface Milestone { id: string; title: string; deliverables: string; amount: number; deadline: string; } export const FundingProposal: React.FC = () => { const [proposalTitle, setProposalTitle] = useState(''); const [proposalDescription, setProposalDescription] = useState(''); const [category, setCategory] = useState(''); const [budgetItems, setBudgetItems] = useState([ { id: '1', description: '', amount: 0, category: '', justification: '' } ]); const [milestones, setMilestones] = useState([ { id: '1', title: '', deliverables: '', amount: 0, deadline: '' } ]); const addBudgetItem = () => { setBudgetItems([...budgetItems, { id: Date.now().toString(), description: '', amount: 0, category: '', justification: '' }]); }; const removeBudgetItem = (id: string) => { setBudgetItems(budgetItems.filter(item => item.id !== id)); }; const updateBudgetItem = (id: string, field: keyof BudgetItem, value: string | number) => { setBudgetItems(budgetItems.map(item => item.id === id ? { ...item, [field]: value } : item )); }; const addMilestone = () => { setMilestones([...milestones, { id: Date.now().toString(), title: '', deliverables: '', amount: 0, deadline: '' }]); }; const removeMilestone = (id: string) => { setMilestones(milestones.filter(m => m.id !== id)); }; const updateMilestone = (id: string, field: keyof Milestone, value: string | number) => { setMilestones(milestones.map(m => m.id === id ? { ...m, [field]: value } : m )); }; const totalBudget = budgetItems.reduce((sum, item) => sum + (item.amount || 0), 0); const totalMilestoneAmount = milestones.reduce((sum, m) => sum + (m.amount || 0), 0); return (
{/* Proposal Header */} Create Funding Proposal Submit a detailed budget request for treasury funding
setProposalTitle(e.target.value)} />