import {
    Bar,
    BarChart,
    CartesianGrid,
    ResponsiveContainer,
    Tooltip,
    XAxis,
    YAxis,
    Area,
    AreaChart,
    Radar,
    RadarChart,
    PolarGrid,
    PolarAngleAxis,
    PolarRadiusAxis,
    PieChart,
    Pie,
    Cell,
    LineChart,
    Line,
} from 'recharts';

const attendanceData = [
    { name: 'Jan', presents: 110, absents: 5 },
    { name: 'Fév', presents: 112, absents: 3 },
    { name: 'Mar', presents: 111, absents: 8 },
    { name: 'Avr', presents: 115, absents: 2 },
    { name: 'Mai', presents: 116, absents: 4 },
    { name: 'Juin', presents: 118, absents: 1 },
];

export function EmployeeAttendanceChart() {
    return (
        <div className="h-[250px] w-full">
            <ResponsiveContainer width="100%" height="100%">
                <BarChart data={attendanceData} margin={{ top: 10, right: 10, left: -20, bottom: 0 }}>
                    <CartesianGrid strokeDasharray="3 3" vertical={false} stroke="var(--border)" />
                    <XAxis dataKey="name" axisLine={false} tickLine={false} tick={{ fill: 'var(--muted-foreground)', fontSize: 12 }} dy={10} />
                    <YAxis axisLine={false} tickLine={false} tick={{ fill: 'var(--muted-foreground)', fontSize: 12 }} />
                    <Tooltip cursor={{ fill: 'var(--muted)', opacity: 0.2 }} contentStyle={{ backgroundColor: 'var(--card)', borderRadius: '8px', border: '1px solid var(--border)', boxShadow: '0 4px 6px -1px rgb(0 0 0 / 0.1)', color: 'var(--foreground)' }} />
                    <Bar dataKey="presents" name="Présents" fill="var(--chart-1)" radius={[4, 4, 0, 0]} />
                    <Bar dataKey="absents" name="Absents" fill="var(--chart-4)" radius={[4, 4, 0, 0]} />
                </BarChart>
            </ResponsiveContainer>
        </div>
    );
}

const payrollData = [
    { name: 'Jan', amount: 42000 },
    { name: 'Fév', amount: 43500 },
    { name: 'Mar', amount: 43000 },
    { name: 'Avr', amount: 45000 },
    { name: 'Mai', amount: 46200 },
    { name: 'Juin', amount: 47000 },
];

export function PayrollEvolutionChart() {
    return (
        <div className="h-[250px] w-full">
            <ResponsiveContainer width="100%" height="100%">
                <AreaChart data={payrollData} margin={{ top: 10, right: 10, left: -20, bottom: 0 }}>
                    <defs>
                        <linearGradient id="colorAmount" x1="0" y1="0" x2="0" y2="1">
                            <stop offset="5%" stopColor="var(--primary)" stopOpacity={0.3} />
                            <stop offset="95%" stopColor="var(--primary)" stopOpacity={0} />
                        </linearGradient>
                    </defs>
                    <CartesianGrid strokeDasharray="3 3" vertical={false} stroke="var(--border)" />
                    <XAxis dataKey="name" axisLine={false} tickLine={false} tick={{ fill: 'var(--muted-foreground)', fontSize: 12 }} dy={10} />
                    <YAxis axisLine={false} tickLine={false} tick={{ fill: 'var(--muted-foreground)', fontSize: 12 }} tickFormatter={(value) => `${value / 1000}k`} />
                    <Tooltip contentStyle={{ backgroundColor: 'var(--card)', borderRadius: '8px', border: '1px solid var(--border)', boxShadow: '0 4px 6px -1px rgb(0 0 0 / 0.1)', color: 'var(--foreground)' }} formatter={(value: number) => [`${value.toLocaleString()}`, 'Masse Salariale']} />
                    <Area type="monotone" dataKey="amount" stroke="var(--primary)" strokeWidth={2} fillOpacity={1} fill="url(#colorAmount)" />
                </AreaChart>
            </ResponsiveContainer>
        </div>
    );
}

const performanceData = [
    { subject: 'Leadership', A: 120, B: 110, fullMark: 150 },
    { subject: 'Technique', A: 98, B: 130, fullMark: 150 },
    { subject: 'Communication', A: 86, B: 130, fullMark: 150 },
    { subject: 'Travail d\'équipe', A: 99, B: 100, fullMark: 150 },
    { subject: 'Ponctualité', A: 85, B: 90, fullMark: 150 },
    { subject: 'Autonomie', A: 65, B: 85, fullMark: 150 },
];

export function PerformanceRadarChart() {
    return (
        <div className="h-[250px] w-full">
            <ResponsiveContainer width="100%" height="100%">
                <RadarChart cx="50%" cy="50%" outerRadius="80%" data={performanceData}>
                    <PolarGrid stroke="var(--border)" />
                    <PolarAngleAxis dataKey="subject" tick={{ fill: 'var(--muted-foreground)', fontSize: 11 }} />
                    <PolarRadiusAxis angle={30} domain={[0, 150]} tick={false} axisLine={false} />
                    <Tooltip contentStyle={{ backgroundColor: 'var(--card)', borderRadius: '8px', border: '1px solid var(--border)', color: 'var(--foreground)' }} />
                    <Radar name="Objectifs" dataKey="B" stroke="var(--chart-3)" fill="var(--chart-3)" fillOpacity={0.4} />
                    <Radar name="Réalisé" dataKey="A" stroke="var(--chart-1)" fill="var(--chart-1)" fillOpacity={0.6} />
                </RadarChart>
            </ResponsiveContainer>
        </div>
    );
}

const turnoverData = [
    { name: 'Départs', value: 4 },
    { name: 'Arrivées', value: 12 },
    { name: 'Stables', value: 115 },
];
const COLORS = ['var(--chart-4)', 'var(--chart-3)', 'var(--chart-1)'];

export function TurnoverPieChart() {
    return (
        <div className="h-[200px] w-full relative">
            <ResponsiveContainer width="100%" height="100%">
                <PieChart>
                    <Pie
                        data={turnoverData}
                        cx="50%"
                        cy="50%"
                        innerRadius={60}
                        outerRadius={80}
                        paddingAngle={5}
                        dataKey="value"
                        stroke="none"
                    >
                        {turnoverData.map((entry, index) => (
                            <Cell key={`cell-${index}`} fill={COLORS[index % COLORS.length]} />
                        ))}
                    </Pie>
                    <Tooltip contentStyle={{ backgroundColor: 'var(--card)', borderRadius: '8px', border: '1px solid var(--border)', color: 'var(--foreground)' }} />
                </PieChart>
            </ResponsiveContainer>
            <div className="absolute inset-0 flex flex-col items-center justify-center pointer-events-none">
                <span className="text-2xl font-bold">3.4%</span>
                <span className="text-xs text-muted-foreground">Taux</span>
            </div>
        </div>
    );
}

const recruitmentData = [
    { name: 'Candidatures', count: 145 },
    { name: 'Entretiens', count: 42 },
    { name: 'Offres', count: 15 },
    { name: 'Embauches', count: 12 },
];

export function RecruitmentFunnelChart() {
    return (
        <div className="h-[250px] w-full">
            <ResponsiveContainer width="100%" height="100%">
                <BarChart layout="vertical" data={recruitmentData} margin={{ top: 10, right: 10, left: 20, bottom: 0 }}>
                    <CartesianGrid strokeDasharray="3 3" horizontal={false} stroke="var(--border)" />
                    <XAxis type="number" axisLine={false} tickLine={false} tick={{ fill: 'var(--muted-foreground)', fontSize: 12 }} />
                    <YAxis dataKey="name" type="category" axisLine={false} tickLine={false} tick={{ fill: 'var(--foreground)', fontSize: 12 }} />
                    <Tooltip cursor={{ fill: 'var(--muted)', opacity: 0.2 }} contentStyle={{ backgroundColor: 'var(--card)', borderRadius: '8px', border: '1px solid var(--border)', color: 'var(--foreground)' }} />
                    <Bar dataKey="count" name="Candidats" fill="var(--chart-2)" radius={[0, 4, 4, 0]} barSize={20} />
                </BarChart>
            </ResponsiveContainer>
        </div>
    );
}
