import type { Metadata } from "next";
import Link from "next/link";
import {
  deleteProjectAction,
  moveProjectAction,
  toggleProjectAction,
} from "@/app/admin/actions";
import { DeleteButton } from "@/components/admin/DeleteButton";
import { MoveButtons } from "@/components/admin/MoveButtons";
import { getAllProjects } from "@/lib/cms";

export const metadata: Metadata = {
  title: "Portfolio projects",
  robots: { index: false, follow: false },
};

export default async function AdminProjectsPage({
  searchParams,
}: {
  searchParams: Promise<{ saved?: string; deleted?: string }>;
}) {
  const [{ saved, deleted }, projects] = await Promise.all([
    searchParams,
    getAllProjects(),
  ]);

  return (
    <div className="space-y-8">
      <header className="flex flex-wrap items-end justify-between gap-4">
        <div>
          <p className="text-sm font-semibold uppercase tracking-[0.14em] text-coral">
            Content
          </p>
          <h1 className="display-2 mt-2">Portfolio projects</h1>
          <p className="mt-2 text-ink-soft">
            Case studies with story, scope, gallery and palette.
          </p>
        </div>
        <Link href="/admin/projects/new" className="btn btn-teal">
          New project
        </Link>
      </header>

      {saved ? (
        <p className="rounded-2xl border border-teal/30 bg-teal-soft px-5 py-3 text-sm font-medium text-teal-dark">
          Saved “{saved}” — the website has been refreshed.
        </p>
      ) : null}
      {deleted ? (
        <p className="rounded-2xl border border-coral/30 bg-coral-soft px-5 py-3 text-sm font-medium text-coral-dark">
          Project deleted.
        </p>
      ) : null}

      <div className="space-y-4">
        {projects.map((p, i) => (
          <article
            key={p.id}
            className="card-soft flex flex-wrap items-center gap-x-6 gap-y-4 p-5"
          >
            <MoveButtons
              action={moveProjectAction}
              id={p.id}
              position={i}
              count={projects.length}
            />
            <div className="min-w-0 flex-1">
              <div className="flex flex-wrap items-center gap-3">
                <Link
                  href={`/admin/projects/${p.id}/edit`}
                  className="font-display text-xl font-semibold text-ink transition-colors hover:text-teal"
                >
                  {p.title}
                </Link>
                <span
                  className={`rounded-full px-2.5 py-1 text-[0.68rem] font-bold uppercase tracking-wide ${
                    p.published
                      ? "bg-teal-soft text-teal-dark"
                      : "bg-amber-soft text-amber-dark"
                  }`}
                >
                  {p.published ? "Published" : "Hidden"}
                </span>
                <span className="rounded-full bg-mint px-2.5 py-1 text-[0.68rem] font-semibold text-ink-mute">
                  {p.category}
                </span>
              </div>
              <p className="mt-1 line-clamp-1 text-sm text-ink-soft">{p.summary}</p>
              <p className="mt-0.5 text-xs text-ink-mute">
                /portfolio/{p.slug} · {p.location} · {p.year} · {p.rooms.length} photos
              </p>
            </div>

            <div className="flex flex-wrap items-center gap-2">
              <form action={toggleProjectAction}>
                <input type="hidden" name="id" value={p.id} />
                <button
                  type="submit"
                  className="rounded-full border border-linen px-3.5 py-1.5 text-xs font-semibold text-ink-soft transition-colors hover:border-teal hover:text-teal"
                >
                  {p.published ? "Hide" : "Publish"}
                </button>
              </form>
              <Link
                href={`/admin/projects/${p.id}/edit`}
                className="rounded-full bg-teal px-3.5 py-1.5 text-xs font-semibold text-white transition-colors hover:bg-teal-dark"
              >
                Edit
              </Link>
              {p.published ? (
                <Link
                  href={`/portfolio/${p.slug}`}
                  className="rounded-full px-3.5 py-1.5 text-xs font-semibold text-ink-soft transition-colors hover:bg-mint"
                >
                  View
                </Link>
              ) : null}
              <DeleteButton
                action={deleteProjectAction}
                id={p.id}
                label="Delete"
                confirm={`Delete “${p.title}”? This cannot be undone.`}
              />
            </div>
          </article>
        ))}

        {projects.length === 0 ? (
          <div className="card-soft p-10 text-center">
            <p className="text-ink-soft">No projects yet.</p>
            <Link href="/admin/projects/new" className="btn btn-teal mt-6">
              Add your first project
            </Link>
          </div>
        ) : null}
      </div>
    </div>
  );
}
