import { Button } from "@/components/ui/button";
import { ArrowRight } from "lucide-react";
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar";
import { Badge } from "@/components/ui/badge";
import { Separator } from "@/components/ui/separator";
import { Calendar, Clock, User } from "lucide-react";
import { typographicText } from "@/lib/typography";
import { PlusSigns } from "../icons/plus-signs";

const BlogPosts = ({
  posts,
  collection = "",
}: {
  posts: any[];
  collection?: string;
}) => {
  // Get the first post as the featured post
  const featuredPost = posts[0];
  const remainingPosts = posts.slice(1);
  const slugFor = (post: any) => post.id.replace(/\/index$/, "");
  const hrefFor = (post: any) =>
    collection ? `/${collection}/${slugFor(post)}/` : `/${slugFor(post)}/`;

  const PostVisual = ({
    post,
    featured = false,
  }: {
    post: any;
    featured?: boolean;
  }) => {
    const displayTitle = typographicText(post.data.title);

    if (post.data.image) {
      return (
        <img
          src={post.data.image}
          alt={displayTitle}
          className="aspect-video w-full rounded-lg object-cover transition-transform group-hover:scale-[1.02]"
        />
      );
    }

    return (
      <div className="bg-accent/70 text-accent-foreground flex aspect-video w-full items-center justify-center rounded-lg border px-6 text-center">
        <span
          className={
            featured ? "font-fraunces text-2xl" : "font-fraunces text-lg"
          }
        >
          {displayTitle}
        </span>
      </div>
    );
  };

  if (!featuredPost) {
    return (
      <div className="text-muted-foreground container max-w-3xl py-16">
        No posts yet.
      </div>
    );
  }

  return (
    <div className="relative py-10 md:py-16 lg:py-20">
      <div className="absolute -inset-40 z-[-1] [mask-image:radial-gradient(circle_at_center,black_0%,black_20%,transparent_75%)]">
        <PlusSigns className="text-foreground/[0.05] h-full w-full" />
      </div>

      {/* Featured Post */}
      <section className="mt-8">
        <div className="container max-w-6xl">
          <a
            href={hrefFor(featuredPost)}
            className="bg-card group relative mb-16 overflow-hidden rounded-xl border shadow-md"
          >
            <div className="flex flex-col gap-6 lg:flex-row">
              <div className="lg:w-1/2">
                <div className="p-2 lg:p-4">
                  <PostVisual post={featuredPost} featured />
                </div>
              </div>
              <div className="flex flex-col justify-center p-4 pb-8 lg:w-1/2 lg:pr-8">
                <Badge variant="outline" className="mb-3 w-fit">
                  Featured Post
                </Badge>
                <h2 className="blog-card-title-featured mb-3 group-hover:underline">
                  {typographicText(featuredPost.data.title)}
                </h2>
                <p className="text-muted-foreground mb-4 line-clamp-3 text-base">
                  {typographicText(featuredPost.data.description)}
                </p>

                <div className="mb-6 flex gap-4">
                  <div className="text-muted-foreground flex items-center text-sm">
                    <Calendar className="mr-1 h-4 w-4" />
                    {new Date(featuredPost.data.pubDate).toLocaleDateString(
                      "en-US",
                      {
                        month: "long",
                        day: "numeric",
                        year: "numeric",
                      },
                    )}
                  </div>
                  <div className="text-muted-foreground flex items-center text-sm">
                    <Clock className="mr-1 h-4 w-4" />5 min read
                  </div>
                </div>
              </div>
            </div>
          </a>
        </div>
      </section>

      {/* Regular Posts Grid */}
      <section className="mt-8">
        <div className="container max-w-6xl">
          <h2 className="mb-8 text-xl font-semibold md:text-2xl">
            Recent Articles
          </h2>
          <div className="grid gap-6 md:grid-cols-2 lg:grid-cols-3">
            {remainingPosts.map((post) => (
              <a
                key={post.id}
                className="bg-card group rounded-xl border shadow-sm transition-all hover:shadow-md"
                href={hrefFor(post)}
              >
                <div className="p-2">
                  <PostVisual post={post} />
                </div>
                <div className="px-4 pb-5 pt-2">
                  <h2 className="mb-2 text-xl font-semibold group-hover:underline">
                    {typographicText(post.data.title)}
                  </h2>
                  <p className="text-muted-foreground line-clamp-2 text-sm">
                    {typographicText(post.data.description)}
                  </p>

                  <div className="text-muted-foreground mt-3 flex items-center gap-3 text-xs">
                    <div className="flex items-center gap-1">
                      <Calendar className="h-3.5 w-3.5" />
                      <span>
                        {new Date(post.data.pubDate).toLocaleDateString(
                          "en-US",
                          {
                            month: "short",
                            day: "numeric",
                            year: "numeric",
                          },
                        )}
                      </span>
                    </div>
                    <div className="flex items-center gap-1">
                      <Clock className="h-3.5 w-3.5" />
                      <span>5 min read</span>
                    </div>
                  </div>
                </div>
              </a>
            ))}
          </div>
        </div>
      </section>
    </div>
  );
};

export { BlogPosts };
