import { ArrowUpRight, CalendarDays, FolderKanban } from "lucide-react";
import Link from "next/link";

import { MotionFade } from "@/components/motion-fade";
import { pickText, portfolioItems, resolveLocale } from "@/lib/site-data";

type PortfolioPageProps = {
  params: {
    locale: string;
  };
};

export default function PortfolioPage({ params: { locale } }: PortfolioPageProps) {
  const localeKey = resolveLocale(locale);

  const copy =
    localeKey === "de"
      ? {
          title: "Portfolio",
          intro: "Eine Auswahl von Projekten mit Fokus auf Klarheit und Ergebnis.",
          open: "Projekt oeffnen",
        }
      : {
          title: "Portfolio",
          intro: "Selected projects with a focus on clarity and outcomes.",
          open: "Open project",
        };

  return (
    <div className="mx-auto flex w-full max-w-6xl flex-col gap-8 px-4 py-10 sm:px-6 lg:px-8 lg:py-14">
      <MotionFade>
        <section className="rounded-3xl border border-zinc-200 bg-white p-6 dark:border-zinc-800 dark:bg-zinc-950 lg:p-10">
          <div className="flex items-center gap-3">
            <FolderKanban className="h-5 w-5 text-zinc-700 dark:text-zinc-200" />
            <h1 className="text-3xl font-semibold text-zinc-900 dark:text-zinc-100 sm:text-4xl">
              {copy.title}
            </h1>
          </div>
          <p className="mt-4 max-w-3xl text-base text-zinc-600 dark:text-zinc-300 sm:text-lg">
            {copy.intro}
          </p>
        </section>
      </MotionFade>

      <section className="grid gap-4 md:grid-cols-2">
        {portfolioItems.map((item, index) => (
          <MotionFade key={item.slug} delay={index * 0.05}>
            <Link
              href={`/${localeKey}/portfolio/${item.slug}`}
              className="group block rounded-2xl border border-zinc-200 bg-white p-5 transition hover:border-zinc-400 dark:border-zinc-800 dark:bg-zinc-950 dark:hover:border-zinc-600"
            >
              <div className="flex items-center justify-between gap-3">
                <p className="text-sm text-zinc-500 dark:text-zinc-400">
                  {pickText(item.category, localeKey)}
                </p>
                <p className="inline-flex items-center gap-1 text-xs text-zinc-500 dark:text-zinc-400">
                  <CalendarDays className="h-3.5 w-3.5" />
                  {item.year}
                </p>
              </div>
              <h2 className="mt-3 text-xl font-semibold text-zinc-900 dark:text-zinc-100">
                {pickText(item.title, localeKey)}
              </h2>
              <p className="mt-2 text-sm text-zinc-600 dark:text-zinc-300">
                {pickText(item.summary, localeKey)}
              </p>
              <p className="mt-4 inline-flex items-center gap-2 text-sm font-medium text-zinc-700 group-hover:text-zinc-900 dark:text-zinc-200 dark:group-hover:text-white">
                {copy.open}
                <ArrowUpRight className="h-4 w-4" />
              </p>
            </Link>
          </MotionFade>
        ))}
      </section>
    </div>
  );
}
