import { m, Variants } from "framer-motion";
import Head from "next/head";
import Image from "next/image";
import { ReactElement } from "react";
import HomeLayout from "../layouts/HomeLayout";
import { homeMain } from "../layouts/NavTemplates";

function Team() {
  return (
    <>
      <Head>
        <title>Team - InvestBot</title>
      </Head>
      <div className="flex min-h-screen flex-col items-center justify-center py-2">
        <m.div
          className="grid w-[90vw] grid-cols-1 py-2 sm:grid-cols-2 md:grid-cols-4 lg:w-[75vw]"
          variants={containerVariants}
          initial="initial"
          animate="animate"
        >
          <m.div
            className="col-span-1 flex w-full items-center justify-center bg-gradient-to-r from-purple-400 to-pink-600 bg-clip-text pt-[200px] pb-[100px] font-plusJakarta text-transparent sm:col-span-2 md:col-span-4"
            variants={headerVariants}
          >
            <m.h1 className="text-6xl">people</m.h1>
          </m.div>
          {/* Person 1 */}
          <PersonLeftCard name="ModulatingForce" img="/img/team/force.webp" />
          <PersonRightCard>TBW</PersonRightCard>

          {/* Person 2 */}
          <PersonLeftCard name="Second Sock" img="/img/team/sock.webp" />
          <PersonRightCard>TBW</PersonRightCard>
          {/* Person 3 */}
          <PersonLeftCard name="Ente" img="/img/team/ente.webp" />
          <PersonRightCard>TBW</PersonRightCard>
          {/* Person 4 */}
          <PersonLeftCard name="notohh" img="/img/team/oh.webp" />
          <PersonRightCard>TBW</PersonRightCard>
          {/* Person 5 */}
          <PersonLeftCard name="3zachm" img="/img/team/zach.webp" />
          <PersonRightCard>TBW</PersonRightCard>
        </m.div>
      </div>
    </>
  );
}

const PersonLeftCard = (props: { name: string; img: string }) => {
  return (
    <m.div
      className="mb-5 flex flex-col items-center justify-center"
      variants={leftCardVariants}
    >
      <Image
        className="rounded-full p-3"
        src={props.img}
        width={200}
        height={200}
        alt={"Picture of " + props.name}
      />
      <m.h1 className="font-plusJakarta text-2xl font-semibold">
        {props.name}
      </m.h1>
    </m.div>
  );
};

// takes in children
const PersonRightCard = (props: { children: React.ReactNode }) => {
  return (
    <m.div
      variants={rightCardVariants}
      className="mb-5 flex flex-col items-center justify-center"
    >
      {props.children}
    </m.div>
  );
};

const containerVariants: Variants = {
  initial: {
    opacity: 1,
  },
  animate: {
    opacity: 1,
    transition: {
      duration: 2,
      delayChildren: 0.5,
      staggerChildren: 0.25,
      type: "spring",
      bounce: 0.5,
      stiffness: 80,
    },
  },
};

const leftCardVariants: Variants = {
  initial: {
    opacity: 0,
    x: 100,
  },
  animate: {
    opacity: 1,
    x: 0,
  },
};

const rightCardVariants: Variants = {
  initial: {
    opacity: 0,
    x: -100,
  },
  animate: {
    opacity: 1,
    x: 0,
  },
};

const headerVariants: Variants = {
  initial: {
    opacity: 0,
    y: 100,
  },
  animate: {
    opacity: 1,
    y: 0,
    transition: {
      delay: 0.5,
      duration: 1.0,
      type: "spring",
      bounce: 0.5,
      stiffness: 80,
    },
  },
};

Team.getLayout = function getLayout(page: ReactElement) {
  return <HomeLayout navOptions={homeMain}>{page}</HomeLayout>;
};

export default Team;