import React from 'react';

const metrics = [
  { label: 'überfällig', value: 7, tone: 'red' },
  { label: 'gesperrt', value: 3, tone: 'red' },
  { label: 'heute fällig', value: 2, tone: 'orange' },
  { label: 'bald fällig', value: 18, tone: 'yellow' },
  { label: 'in Prüfung', value: 5, tone: 'blue' },
  { label: 'unbekannt', value: 4, tone: 'gray' },
  { label: 'gesamt', value: 126, tone: 'green' },
];

const criticalItems = [
  'DT-1004 · Stahlflasche 12 l · Maria Keller · seit 12 Tagen überfällig',
  'DT-1011 · Aluflasche 11 l · gesperrt · Prüfung abgelaufen',
  'DT-1032 · Stahlflasche 15 l · heute + Sperrhinweis prüfen',
];

const upcomingItems = [
  'DT-1088 · Flasche 10 l · fällig in 6 Tagen',
  'DT-1120 · Flasche 12 l · fällig in 14 Tagen',
  'DT-1174 · Flasche 7 l · fällig in 28 Tagen',
];

function Badge({ children, tone = 'gray' }) {
  const tones = {
    green: 'bg-green-100 text-green-800 border-green-200',
    blue: 'bg-blue-100 text-blue-800 border-blue-200',
    yellow: 'bg-yellow-100 text-yellow-800 border-yellow-200',
    orange: 'bg-orange-100 text-orange-800 border-orange-200',
    red: 'bg-red-100 text-red-800 border-red-200',
    gray: 'bg-slate-100 text-slate-700 border-slate-200',
  };
  return <span className={`inline-flex rounded-full border px-3 py-1 text-xs font-semibold ${tones[tone]}`}>{children}</span>;
}

function MetricCard({ label, value, tone }) {
  const tones = {
    green: 'border-green-200 bg-green-50 text-green-900',
    blue: 'border-blue-200 bg-blue-50 text-blue-900',
    yellow: 'border-yellow-200 bg-yellow-50 text-yellow-900',
    orange: 'border-orange-200 bg-orange-50 text-orange-900',
    red: 'border-red-200 bg-red-50 text-red-900',
    gray: 'border-slate-200 bg-slate-50 text-slate-900',
  };
  return (
    <div className={`rounded-2xl border p-4 ${tones[tone]}`}>
      <p className="text-3xl font-bold">{value}</p>
      <p className="mt-1 text-sm font-semibold">{label}</p>
    </div>
  );
}

function Panel({ title, badge, badgeTone, items, action }) {
  return (
    <section className="rounded-2xl border border-slate-200 bg-white p-5 shadow-sm">
      <div className="flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between">
        <h2 className="text-lg font-bold">{title}</h2>
        <Badge tone={badgeTone}>{badge}</Badge>
      </div>
      <div className="mt-4 divide-y divide-slate-100">
        {items.map((item) => (
          <p key={item} className="py-3 text-sm text-slate-700">{item}</p>
        ))}
      </div>
      <div className="mt-4 flex justify-end">
        <button className="rounded-xl bg-sky-700 px-4 py-2 text-sm font-semibold text-white">{action}</button>
      </div>
    </section>
  );
}

export default function FR01FristenDashboardUebersicht() {
  return (
    <div className="min-h-screen bg-slate-50 p-6 text-slate-900">
      <div className="mx-auto max-w-7xl space-y-5">
        <header className="rounded-2xl border border-sky-200 bg-sky-50 p-6 shadow-sm">
          <div className="flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between">
            <div>
              <p className="text-sm font-semibold uppercase tracking-wide text-sky-700">UC05 · FR-01</p>
              <h1 className="mt-1 text-3xl font-bold">Fristen-Dashboard Übersicht</h1>
              <p className="mt-2 max-w-3xl text-sm text-slate-600">
                Zentrale Übersicht für fällige, überfällige, gesperrte und laufende Fristen.
              </p>
            </div>
            <div className="flex flex-wrap gap-2">
              <button className="rounded-xl border border-slate-300 bg-white px-4 py-2 text-sm font-semibold text-slate-800">FR-02 Liste</button>
              <button className="rounded-xl border border-slate-300 bg-white px-4 py-2 text-sm font-semibold text-slate-800">FR-07 Vorschau</button>
              <button className="rounded-xl bg-sky-700 px-4 py-2 text-sm font-semibold text-white">Export</button>
            </div>
          </div>
        </header>

        <section className="rounded-2xl border border-slate-200 bg-white p-5 shadow-sm">
          <h2 className="text-lg font-bold">Auswertung</h2>
          <div className="mt-4 grid gap-3 lg:grid-cols-5">
            {['nächste 30 Tage', 'alle Typen', 'alle Kunden'].map((label) => (
              <div key={label} className="rounded-xl border border-slate-300 bg-slate-50 px-3 py-2 text-sm font-semibold text-slate-700">{label}</div>
            ))}
            <div className="lg:col-span-2 flex flex-wrap gap-2">
              <Badge tone="green">Tenant-Isolation OK</Badge>
              <Badge tone="gray">Stand: 2026-05-07 09:30</Badge>
            </div>
          </div>
        </section>

        <section className="rounded-2xl border border-slate-200 bg-white p-5 shadow-sm">
          <h2 className="text-lg font-bold">Kennzahlen</h2>
          <div className="mt-4 grid gap-4 sm:grid-cols-2 lg:grid-cols-7">
            {metrics.map((metric) => <MetricCard key={metric.label} {...metric} />)}
          </div>
        </section>

        <div className="grid gap-5 lg:grid-cols-2">
          <Panel title="Priorität: kritisch" badge="überfällig / gesperrt" badgeTone="red" items={criticalItems} action="FR-04 öffnen" />
          <Panel title="Planung: nächste Fristen" badge="nächste 30 Tage" badgeTone="yellow" items={upcomingItems} action="FR-05 öffnen" />
        </div>

        <section className="rounded-2xl border border-slate-200 bg-white p-5 shadow-sm">
          <h2 className="text-lg font-bold">Schnellaktionen</h2>
          <div className="mt-4 flex flex-wrap gap-2">
            <button className="rounded-xl border border-slate-300 px-4 py-2 text-sm font-semibold text-slate-700">FR-02 Liste</button>
            <button className="rounded-xl border border-slate-300 px-4 py-2 text-sm font-semibold text-slate-700">FR-06 Prozesse</button>
            <button className="rounded-xl border border-slate-300 px-4 py-2 text-sm font-semibold text-slate-700">FR-07 Vorschau</button>
            <button className="rounded-xl border border-slate-300 px-4 py-2 text-sm font-semibold text-slate-700">FR-08 Export</button>
          </div>
          <p className="mt-4 text-sm text-slate-500">FR-01 ist read-only und verändert keine Fristgrundlagen.</p>
        </section>
      </div>
    </div>
  );
}
