import Card from '@/components/ui/card/card';
import { cn } from '@/lib/utils';
import Text from 'components/ui/text';
interface BlurbSectionProps {
  blurbs: any;
  title: string;
  mobileLayout: string;
  desktopLayout: string;
  imageFormat: 'square' | 'portrait' | 'landscape';
}

const BlurbSection = ({
  title,
  mobileLayout,
  desktopLayout,
  blurbs,
  imageFormat
}: BlurbSectionProps) => {
  const gridLayout =
    desktopLayout === '2-column'
      ? 'lg:grid-cols-2'
      : desktopLayout === '3-column'
      ? 'lg:grid-cols-3'
      : 'lg:grid-cols-4';

  return (
    <div>
      {title ? (
        <Text className="mb-4 px-4 lg:mb-6 lg:px-8 2xl:mb-8 2xl:px-16" variant="sectionHeading">
          {title}
        </Text>
      ) : (
        <Text
          className="mb-4 px-4 italic lg:mb-6 lg:px-8 2xl:mb-8 2xl:px-16"
          variant="sectionHeading"
        >
          No title provided yet
        </Text>
      )}
      <div
        className={cn(
          'w-full gap-4 px-4 lg:px-8 2xl:px-16',
          {
            ['grid grid-cols-1']: mobileLayout !== 'horizontal',
            ['flex snap-x snap-proximity overflow-x-auto lg:grid lg:overflow-visible']:
              mobileLayout === 'horizontal'
          },
          `${gridLayout}`
        )}
      >
        {blurbs.map((blurb: object | any, index: number) => {
          return (
            <div
              key={index}
              className={`${
                mobileLayout === 'horizontal' && 'w-5/12 shrink-0 snap-center lg:w-full'
              }`}
            >
              <Card
                title={blurb?.title}
                link={blurb?.link}
                image={blurb?.image}
                text={blurb?.text}
                imageFormat={imageFormat}
              />
            </div>
          );
        })}
      </div>
    </div>
  );
};

export default BlurbSection;