Cards.jsx 1.5 KB
Newer Older
wyuer's avatar
wyuer committed
1 2 3
/* eslint-disable import/no-anonymous-default-export */
/* eslint-disable react/display-name */

wuhao's avatar
wuhao committed
4
import React, { memo } from "react";
wyuer's avatar
wyuer committed
5
import { Card, CardBody, CardFooter, Image } from "@nextui-org/react";
wuhao's avatar
wuhao committed
6
import prisma from "@/lib/prisma";
wuhao's avatar
wuhao committed
7 8
import { getFetch } from "@/lib/doFetch";
import { difftime } from "@/lib/time";
wuhao's avatar
wuhao committed
9
import { useRouter } from "next/navigation";
wyuer's avatar
wyuer committed
10

wuhao's avatar
wuhao committed
11
export default memo(({ list }) => {
wuhao's avatar
wuhao committed
12
  const router = useRouter();
wyuer's avatar
wyuer committed
13 14

  return (
wyuer's avatar
wyuer committed
15
    <div className="gap-2 flex flex-wrap">
wuhao's avatar
wuhao committed
16
      {list?.map?.((item, index) => (
wyuer's avatar
wyuer committed
17 18
        <Card
          shadow="sm"
wyuer's avatar
wyuer committed
19
          className="w-[220px]"
wyuer's avatar
wyuer committed
20 21
          key={index}
          isPressable
wuhao's avatar
wuhao committed
22
          onPress={() => {
wuhao's avatar
wuhao committed
23
            router.push("/detail/" + item.id);
wuhao's avatar
wuhao committed
24
          }}
wyuer's avatar
wyuer committed
25 26 27
        >
          <CardBody className="overflow-visible p-0">
            <Image
wuhao's avatar
wuhao committed
28
              isZoomed
wyuer's avatar
wyuer committed
29 30 31
              shadow="sm"
              radius="lg"
              width="100%"
wuhao's avatar
wuhao committed
32
              alt={item.name}
wyuer's avatar
wyuer committed
33
              className="w-full object-cover h-[180px]"
wuhao's avatar
wuhao committed
34
              src={item.poster}
wyuer's avatar
wyuer committed
35
              fallbackSrc="/folder.png"
wyuer's avatar
wyuer committed
36 37 38
            />
          </CardBody>
          <CardFooter className="text-small justify-between">
wuhao's avatar
wuhao committed
39 40
            <b>{item.name}</b>
            <p className="text-default-500">{difftime(item.createdAt)}</p>
wyuer's avatar
wyuer committed
41 42 43
          </CardFooter>
        </Card>
      ))}
wuhao's avatar
wuhao committed
44
      {list?.length === 0 && (
wyuer's avatar
wyuer committed
45 46 47 48 49 50 51
        <Image
          alt="empty"
          isZoomed
          className="object-cover"
          src="/empty.png"
          width={240}
        />
wuhao's avatar
wuhao committed
52
      )}
wyuer's avatar
wyuer committed
53 54
    </div>
  );
wuhao's avatar
wuhao committed
55
});