"use client";

import Link from "next/link";
import { formatHeroDate } from "@/lib/formatDate";
import { ROUTES } from "@/lib/routes";
import type { NewsroomItem } from "@/types/newsroom";

interface NewsroomHeroProps {
  latestRecords?: NewsroomItem[];
  latestRecord?: NewsroomItem | null;
  onSeeMoreClick?: () => void;
}

export function NewsroomHero({
  latestRecords = [],
  latestRecord,
  onSeeMoreClick,
}: NewsroomHeroProps) {
  // Use latestRecords array, or fallback to single latestRecord if provided
  const records =
    latestRecords.length > 0
      ? latestRecords.slice(0, 3)
      : latestRecord
        ? [latestRecord]
        : [];

  const handleSeeMore = () => {
    if (onSeeMoreClick) {
      onSeeMoreClick();
    } else {
      const el = document.getElementById("explore-topics");
      if (el) {
        el.scrollIntoView({ behavior: "smooth" });
      }
    }
  };

  return (
    <section className="relative mb-12 w-full">
      {/* 1. Header: Title */}
      <div className="mb-6 w-full">
        <h1 className="text-3xl font-normal tracking-tight text-[#0d2440] sm:text-4xl lg:text-[44px] leading-tight">
          Sterling Protection{" "}
          <span className="font-semibold text-accent">Newsroom</span>
        </h1>
      </div>

      {/* 2. Main 2-Column Hero Grid */}
      <div className="grid grid-cols-1 items-start gap-8 lg:grid-cols-12 lg:gap-10">
        {/* Left Side: Static Image + Byline & Description below */}
        <div className="flex flex-col lg:col-span-7">
          <div className="relative w-full overflow-hidden rounded-xl border border-gray-100 bg-[#111827] shadow-sm">
            {/* eslint-disable-next-line @next/next/no-img-element */}
            <img
              src="/images/newsroom/newsroo-hero.png"
              alt="Sterling Protection Newsroom"
              className="h-auto w-full object-cover rounded-xl"
              loading="eager"
            />
          </div>

          <div className="mt-2 sm:mt-3">
            <p className="text-xs sm:text-[13px] font-semibold tracking-wider text-[#64748b] uppercase">
              BY STERLING’S RESEARCH &amp; ANALYSIS TEAM
            </p>
            <h2 className="mt-2.5 text-lg sm:text-xl lg:text-[24px] font-semibold leading-snug tracking-tight text-[#0d2440]">
              News, official announcements and expert analysis on global security, private protection, travel risks and emerging developments shaping the world.
            </h2>
          </div>
        </div>

        {/* Right Side: The Latest 3 Articles */}
        <div className="flex flex-col lg:col-span-5">
          <div>
            {/* "THE LATEST" Header */}
            <div className="mb-4 flex items-center gap-2 border-b border-gray-200 pb-2.5">
              <span
                className="inline-block h-2 w-2 shrink-0 bg-[#0284c7] sm:h-2.5 sm:w-2.5"
                aria-hidden="true"
              />
              <h2 className="text-xs font-bold tracking-wider text-[#1e293b] uppercase sm:text-sm">
                THE LATEST
              </h2>
            </div>

            {/* List of Last Three Articles */}
            {records.length > 0 ? (
              <div className="divide-y divide-gray-200">
                {records.map((item, idx) => {
                  const articleLink = item.sl
                    ? ROUTES.newsroomArticle(item.sl)
                    : ROUTES.newsroomArticle(item._id);
                  const formattedDate = formatHeroDate(item?.d?.toString() || item?.createdAt?.toString());
                  const categoryName =
                    item.cat_name ||
                    (Array.isArray(item.cat) ? item.cat[0] : item.cat) ||
                    (item.st ? item.t : "NEWSROOM");
                  const articleTitle =
                    item.cat_name
                      ? item.t
                      : (item.st || item.t);

                  return (
                    <article
                      key={item._id || idx}
                      className="py-4.5 first:pt-1 last:pb-2"
                    >
                      {/* First line: Category/Top tag on left, "createdAt" beside that on right */}
                      <div className="flex items-center justify-between gap-3 text-xs sm:text-sm">
                        <Link
                          href={articleLink}
                          className="font-bold tracking-wider text-gray-900 uppercase truncate max-w-[68%] hover:text-accent transition-colors"
                        >
                          {categoryName}
                        </Link>
                        {formattedDate && (
                          <time
                            dateTime={item.d || item.createdAt}
                            className="text-gray-500 shrink-0 whitespace-nowrap text-[11px] sm:text-xs"
                          >
                            {formattedDate}
                          </time>
                        )}
                      </div>

                      {/* After that: Article title */}
                      {articleTitle && (
                        <h3 className="mt-3 text-sm sm:mt-3.5 sm:text-[14.5px] font-normal leading-snug text-gray-800">
                          <Link
                            href={articleLink}
                            className="hover:text-accent transition-colors line-clamp-4"
                          >
                            {articleTitle}
                          </Link>
                        </h3>
                      )}
                    </article>
                  );
                })}
              </div>
            ) : (
              <div className="py-8 text-center text-sm text-gray-400">
                No recent stories available.
              </div>
            )}
          </div>

          {/* See more Link */}
          <div className=" pt-3 flex justify-end">
            {onSeeMoreClick ? (
              <button
                type="button"
                onClick={onSeeMoreClick}
                className="inline-flex cursor-pointer items-center gap-1.5 text-sm font-medium text-accent hover:underline group"
              >
                <span>See more</span>
                <span className="transition-transform duration-200 group-hover:translate-x-1">
                  →
                </span>
              </button>
            ) : (
              <Link
                href={ROUTES.newsfeed}
                className="inline-flex cursor-pointer items-center gap-1.5 text-sm font-medium text-accent hover:underline group"
              >
                <span>See more</span>
                <span className="transition-transform duration-200 group-hover:translate-x-1">
                  →
                </span>
              </Link>
            )}
          </div>
        </div>
      </div>
    </section>
  );
}
