import React, { useState } from 'react'; import { Card, CardHeader, CardTitle, CardContent } from '@/components/ui/card'; import { BarChart, Bar, XAxis, YAxis, Tooltip, ResponsiveContainer, LineChart, Line, RadarChart, PolarGrid, PolarAngleAxis, PolarRadiusAxis, Radar } from 'recharts'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; const Dashboard = () => { const [selectedRole, setSelectedRole] = useState('all'); // Color scheme const colors = { primary: '#d5204d', // Pink secondary: '#ffa600', // Orange tertiary: '#e6d5c6', // Light beige background: '#eee7e2', // Lighter beige text: '#000000' // Black }; const metrics = [ { metric: "Mission Alignment", all: 4.63, staff: 4.67, volunteer: 4.75 }, { metric: "Responsiveness", all: 4.50, staff: 3.67, volunteer: 5.00 }, { metric: "Community Impact", all: 4.75, staff: 4.33, volunteer: 5.00 }, { metric: "Internal Values", all: 3.43, staff: 3.33, volunteer: 3.50 }, { metric: "Volunteer Engagement", all: 4.38, staff: 4.00, volunteer: 4.50 }, { metric: "Stakeholder Engagement", all: 3.13, staff: 3.00, volunteer: 3.25 }, { metric: "External Values", all: 4.63, staff: 4.33, volunteer: 4.75 }, { metric: "Partner Engagement", all: 4.00, staff: 4.33, volunteer: 3.75 } ]; const respondentTypes = [ { role: "Staff", count: 3 }, { role: "Volunteer Case Manager", count: 5 }, { role: "Other", count: 0 } ]; const strengthsWeaknesses = [ { category: "Strengths", items: [ { area: "Community Impact", score: 4.75 }, { area: "Mission Alignment", score: 4.63 }, { area: "External Values", score: 4.63 }, { area: "Responsiveness", score: 4.50 } ] }, { category: "Areas for Growth", items: [ { area: "Stakeholder Engagement", score: 3.13 }, { area: "Internal Values", score: 3.43 }, { area: "Partner Engagement", score: 4.00 } ] } ]; return ( <div className="space-y-4 p-4" style={{ background: colors.background, color: colors.text }}> <Card className="w-full" style={{ background: 'white' }}> <CardHeader> <CardTitle className="text-2xl" style={{ color: colors.primary }}>NYAAF Survey Analysis Dashboard</CardTitle> </CardHeader> <CardContent> <Tabs defaultValue="overview" className="w-full"> <TabsList className="mb-4" style={{ background: colors.tertiary }}> <TabsTrigger value="overview" className="data-[state=active]:bg-white" style={{ color: colors.text }} > Overview </TabsTrigger> <TabsTrigger value="comparison" className="data-[state=active]:bg-white" style={{ color: colors.text }} > Role Comparison </TabsTrigger> <TabsTrigger value="radar" className="data-[state=active]:bg-white" style={{ color: colors.text }} > Radar Analysis </TabsTrigger> </TabsList> <TabsContent value="overview"> <div className="grid gap-4"> <div className="h-80"> <ResponsiveContainer width="100%" height="100%"> <BarChart data={metrics} margin={{ top: 20, right: 30, left: 40, bottom: 60 }}> <XAxis dataKey="metric" angle={-45} textAnchor="end" height={80} stroke={colors.text} /> <YAxis domain={[0, 5]} stroke={colors.text} /> <Tooltip contentStyle={{ background: 'white', border: `1px solid ${colors.tertiary}` }} /> <Bar dataKey="all" fill={colors.primary} name="Overall Score" /> </BarChart> </ResponsiveContainer> </div> <div className="grid grid-cols-1 md:grid-cols-2 gap-4 mt-4"> {strengthsWeaknesses.map((category) => ( <Card key={category.category} style={{ background: colors.tertiary }}> <CardHeader> <CardTitle className="text-lg" style={{ color: colors.primary }}> {category.category} </CardTitle> </CardHeader> <CardContent> <ul className="space-y-2"> {category.items.map((item) => ( <li key={item.area} className="flex justify-between"> <span style={{ color: colors.text }}>{item.area}</span> <span className="font-bold" style={{ color: colors.primary }}> {item.score.toFixed(2)} </span> </li> ))} </ul> </CardContent> </Card> ))} </div> </div> </TabsContent> <TabsContent value="comparison"> <div className="h-80"> <ResponsiveContainer width="100%" height="100%"> <BarChart data={metrics} margin={{ top: 20, right: 30, left: 40, bottom: 60 }}> <XAxis dataKey="metric" angle={-45} textAnchor="end" height={80} stroke={colors.text} /> <YAxis domain={[0, 5]} stroke={colors.text} /> <Tooltip contentStyle={{ background: 'white', border: `1px solid ${colors.tertiary}` }} /> <Bar dataKey="staff" fill={colors.primary} name="Staff" /> <Bar dataKey="volunteer" fill={colors.secondary} name="Volunteers" /> </BarChart> </ResponsiveContainer> </div> </TabsContent> <TabsContent value="radar"> <div className="h-80"> <ResponsiveContainer width="100%" height="100%"> <RadarChart data={metrics}> <PolarGrid stroke={colors.tertiary} /> <PolarAngleAxis dataKey="metric" stroke={colors.text} /> <PolarRadiusAxis domain={[0, 5]} stroke={colors.text} /> <Radar name="Staff" dataKey="staff" stroke={colors.primary} fill={colors.primary} fillOpacity={0.3} /> <Radar name="Volunteers" dataKey="volunteer" stroke={colors.secondary} fill={colors.secondary} fillOpacity={0.3} /> <Tooltip contentStyle={{ background: 'white', border: `1px solid ${colors.tertiary}` }} /> </RadarChart> </ResponsiveContainer> </div> </TabsContent> </Tabs> </CardContent> </Card> <Card style={{ background: 'white' }}> <CardHeader> <CardTitle style={{ color: colors.primary }}>Survey Respondent Breakdown</CardTitle> </CardHeader> <CardContent> <div className="h-40"> <ResponsiveContainer width="100%" height="100%"> <BarChart data={respondentTypes} margin={{ top: 20, right: 30, left: 40, bottom: 20 }}> <XAxis dataKey="role" stroke={colors.text} /> <YAxis stroke={colors.text} /> <Tooltip contentStyle={{ background: 'white', border: `1px solid ${colors.tertiary}` }} /> <Bar dataKey="count" fill={colors.primary} /> </BarChart> </ResponsiveContainer> </div> </CardContent> </Card> </div> ); }; export default Dashboard;