import React from 'react';

const ledgerEntries = [
  { date: '2026-05-07', type: 'consume', amount: '-1', text: 'Luftfüllung', user: 'Anna' },
  { date: '2026-05-03', type: 'consume', amount: '-1', text: 'Self-Service bestätigt', user: 'Markus' },
  { date: '2026-05-01', type: 'topup + bonus', amount: '+13', text: 'Karte angelegt', user: 'Anna' },
];

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',
    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 InfoCard({ title, children }) {
  return (
    <section className="rounded-2xl border border-slate-200 bg-white p-5 shadow-sm">
      <h2 className="text-lg font-bold text-slate-900">{title}</h2>
      <div className="mt-4">{children}</div>
    </section>
  );
}

function Detail({ label, value }) {
  return (
    <div>
      <p className="text-xs font-semibold uppercase tracking-wide text-slate-500">{label}</p>
      <p className="mt-1 text-sm font-medium text-slate-900">{value}</p>
    </div>
  );
}

export default function FA03FuellkarteAboVerwalten() {
  const balance = 8;
  const total = 13;
  const percent = Math.round((balance / total) * 100);

  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 xl:flex-row xl:items-center xl:justify-between">
            <div>
              <p className="text-sm font-semibold uppercase tracking-wide text-sky-700">UC03 · FA-03</p>
              <h1 className="mt-1 text-3xl font-bold">10+3 Bonuskarte Luft</h1>
              <p className="mt-2 text-sm text-slate-600">Maria Keller · Füllkonto verwalten · Status, Guthaben, Self-Service und Historie</p>
              <div className="mt-3 flex flex-wrap gap-2">
                <Badge tone="green">aktiv</Badge>
                <Badge tone="blue">Self-Service aktiv</Badge>
                <Badge tone="blue">Bestätigung nötig</Badge>
              </div>
            </div>
            <div className="flex flex-wrap gap-2">
              <button className="rounded-xl bg-sky-700 px-4 py-2 text-sm font-semibold text-white shadow-sm">Füllung buchen</button>
              <button className="rounded-xl border border-slate-300 bg-white px-4 py-2 text-sm font-semibold text-slate-800 shadow-sm">Historie</button>
              <button className="rounded-xl border border-slate-300 bg-white px-4 py-2 text-sm font-semibold text-slate-800 shadow-sm">QR-Code</button>
              <button className="rounded-xl border border-red-200 bg-red-50 px-4 py-2 text-sm font-semibold text-red-800 shadow-sm">Sperren</button>
            </div>
          </div>
        </header>

        <div className="grid gap-5 lg:grid-cols-3">
          <InfoCard title="Stammdaten">
            <div className="grid gap-4 sm:grid-cols-2">
              <Detail label="Kunde" value="Maria Keller" />
              <Detail label="Modell" value="Bonuskarte" />
              <Detail label="Produktvorlage" value="10+3 Bonuskarte Luft" />
              <Detail label="Gasbereich" value="Luft" />
              <Detail label="Einheit" value="Füllungen" />
              <Detail label="Gültigkeit" value="ab 2026-05-07" />
            </div>
          </InfoCard>

          <InfoCard title="Guthaben">
            <div>
              <div className="flex items-end gap-2">
                <span className="text-4xl font-bold">{balance}</span>
                <span className="pb-1 text-lg font-semibold text-slate-500">/ {total}</span>
              </div>
              <p className="mt-1 text-sm text-slate-500">Restguthaben Füllungen</p>
              <div className="mt-4 h-3 overflow-hidden rounded-full bg-slate-200">
                <div className="h-full rounded-full bg-sky-600" style={{ width: `${percent}%` }} />
              </div>
              <div className="mt-4 grid gap-3 sm:grid-cols-3">
                <Detail label="bezahlt" value="10" />
                <Detail label="Bonus" value="3" />
                <Detail label="Start" value="13" />
              </div>
            </div>
          </InfoCard>

          <InfoCard title="Self-Service">
            <div className="space-y-3">
              <Badge tone="green">digitale Karte aktiv</Badge>
              <Badge tone="blue">Mitarbeiterbestätigung erforderlich</Badge>
              <div className="rounded-xl border border-slate-200 bg-slate-50 p-4">
                <p className="text-sm font-semibold">QR-Code / Abrufcode</p>
                <p className="mt-1 text-xs text-slate-500">Darf keine ungeschützte direkte Buchung ermöglichen.</p>
                <div className="mt-3 flex gap-2">
                  <button className="rounded-lg border border-slate-300 px-3 py-1 text-xs font-semibold">Anzeigen</button>
                  <button className="rounded-lg border border-slate-300 px-3 py-1 text-xs font-semibold">Erneuern</button>
                </div>
              </div>
            </div>
          </InfoCard>
        </div>

        <div className="grid gap-5 lg:grid-cols-3">
          <section className="rounded-2xl border border-slate-200 bg-white p-5 shadow-sm lg:col-span-2">
            <div className="flex items-center justify-between">
              <h2 className="text-lg font-bold">Letzte Ledger-Buchungen</h2>
              <button className="rounded-xl border border-slate-300 px-3 py-2 text-sm font-semibold text-slate-700">FA-09 öffnen</button>
            </div>
            <div className="mt-4 divide-y divide-slate-100">
              {ledgerEntries.map((entry) => (
                <div key={`${entry.date}-${entry.text}`} className="grid gap-2 py-3 sm:grid-cols-[120px_130px_80px_1fr_100px]">
                  <span className="text-sm text-slate-600">{entry.date}</span>
                  <span className="text-sm font-semibold">{entry.type}</span>
                  <span className="text-sm font-semibold text-slate-900">{entry.amount}</span>
                  <span className="text-sm text-slate-700">{entry.text}</span>
                  <span className="text-sm text-slate-500">{entry.user}</span>
                </div>
              ))}
            </div>
          </section>

          <InfoCard title="Zahlung">
            <div className="space-y-4">
              <Badge tone="green">bezahlt</Badge>
              <Detail label="bezahlt am" value="2026-05-07" />
              <Detail label="Zahlungsart" value="Bar" />
              <Detail label="bestätigt durch" value="Anna" />
              <p className="rounded-xl border border-slate-200 bg-slate-50 p-3 text-xs text-slate-500">
                Nur informativer Hinweis. Keine Rechnungs-, Steuer- oder Kassenlogik in V1.
              </p>
            </div>
          </InfoCard>
        </div>

        <footer className="rounded-2xl border border-slate-200 bg-white p-5 shadow-sm">
          <div className="flex flex-col gap-4 lg:flex-row lg:items-center lg:justify-between">
            <p className="text-sm text-slate-600">
              Guthaben wird nicht direkt geändert. Änderungen erfolgen über Ledger-Buchungen, Storno oder Korrektur.
            </p>
            <div className="flex flex-wrap gap-2">
              <button className="rounded-xl bg-sky-700 px-4 py-2 text-sm font-semibold text-white">Füllung buchen</button>
              <button className="rounded-xl border border-slate-300 px-4 py-2 text-sm font-semibold text-slate-700">Kundehistorie</button>
              <button className="rounded-xl border border-slate-300 px-4 py-2 text-sm font-semibold text-slate-700">Korrektur / Storno</button>
              <button className="rounded-xl border border-red-200 bg-red-50 px-4 py-2 text-sm font-semibold text-red-800">Sperren</button>
            </div>
          </div>
        </footer>
      </div>
    </div>
  );
}
