aboutsummaryrefslogtreecommitdiff
path: root/components/anime/charactersCard.js
diff options
context:
space:
mode:
authorFactiven <[email protected]>2023-09-25 00:44:40 +0700
committerGitHub <[email protected]>2023-09-25 00:44:40 +0700
commit1a85c2571690ba592ac5183d5eadaf9846fe532b (patch)
tree3f3552c00cd49c0eeab5275275cf5cf5666e5027 /components/anime/charactersCard.js
parentDelete .github/workflows/deploy.yml (diff)
downloadmoopa-4.1.0.tar.xz
moopa-4.1.0.zip
Update v4.1.0 (#79)v4.1.0
* Update v4.1.0 * Update pages/_app.js
Diffstat (limited to 'components/anime/charactersCard.js')
-rw-r--r--components/anime/charactersCard.js160
1 files changed, 86 insertions, 74 deletions
diff --git a/components/anime/charactersCard.js b/components/anime/charactersCard.js
index abff2ba..6c9197a 100644
--- a/components/anime/charactersCard.js
+++ b/components/anime/charactersCard.js
@@ -3,79 +3,91 @@ import Image from "next/image";
import { useState } from "react";
export default function Characters({ info }) {
+ const [showAll, setShowAll] = useState(false);
- const [showAll, setShowAll] = useState(false);
-
- return (
- <div>
- <div className="flex items-center justify-between lg:gap-3 px-5 z-40 ">
- <h1 className="font-karla text-[20px] font-bold">Characters</h1>
- {info?.length > 6 && (
- <div className="cursor-pointer font-karla" onClick={() => setShowAll(!showAll)}>
- {showAll ? "show less" : "show more"}
- </div>
- )}
- </div>
- {/* for bigger device */}
- <div className="hidden md:grid w-full grid-cols-1 gap-[10px] md:gap-4 md:grid-cols-3 md:pt-7 md:pb-5 px-3 md:px-5 pt-4">
- {info.slice(0, showAll ? info.length : 6).map((item, index) => {
- return <a key={index} className="md:hover:scale-[1.02] snap-start hover:shadow-lg scale-100 transition-transform duration-200 ease-out w-full cursor-default">
- <div className="text-gray-300 space-x-4 col-span-1 flex w-full h-24 bg-secondary rounded-md overflow-hidden">
- <div className="relative h-full w-20">
- <Image
- draggable={false}
- src={
- item.node.image.large ||
- item.node.image.medium
- }
- width={500}
- height={300}
- alt={
- item.node.name.userPreferred ||
- item.node.name.full ||
- "Character Image"
- }
- className="h-full object-cover"
- />
- </div>
- <div className="py-2 flex flex-col justify-between">
- <p className="font-semibold">{item.node.name.full || item.node.name.userPreferred}</p>
- <p>{item.role}</p>
- </div>
- </div>
- </a>
- })}
- </div>
- {/* for smaller devices */}
- <div className="flex md:hidden h-full w-full select-none overflow-x-scroll overflow-y-hidden scrollbar-hide gap-4 pt-8 pb-4 px-5 z-30">
- {info.slice(0, showAll ? info.length : 6).map((item, index) => {
- return <div key={index} className="flex flex-col gap-3 shrink-0 cursor-pointer">
- <a className="hover:scale-105 hover:shadow-lg duration-300 ease-out group relative">
- <div className="h-[190px] w-[135px] rounded-md z-30">
- <Image
- draggable={false}
- src={
- item.node.image.large ||
- item.node.image.medium
- }
- alt={
- item.node.name.userPreferred ||
- item.node.name.full ||
- "Character Image"
- }
- width={500}
- height={300}
- className="z-20 h-[190px] w-[135px] object-cover rounded-md brightness-90"
- />
- </div>
- </a>
- <a className="w-[135px] lg:w-[185px] line-clamp-2">
- <h1 className="font-karla font-semibold text-[15px]">{item.node.name.full || item.node.name.userPreferred}</h1>
- <h1 className="font-karla float-right italic text-[12px]">~{item.role}</h1>
- </a>
- </div>
- })}
+ return (
+ <div>
+ <div className="flex items-center justify-between lg:gap-3 px-5 z-40 ">
+ <h1 className="font-karla text-[20px] font-bold">Characters</h1>
+ {info?.length > 6 && (
+ <div
+ className="cursor-pointer font-karla"
+ onClick={() => setShowAll(!showAll)}
+ >
+ {showAll ? "show less" : "show more"}
+ </div>
+ )}
+ </div>
+ {/* for bigger device */}
+ <div className="hidden md:grid w-full grid-cols-1 gap-[10px] md:gap-4 md:grid-cols-3 md:pt-7 md:pb-5 px-3 md:px-5 pt-4">
+ {info.slice(0, showAll ? info.length : 6).map((item, index) => {
+ return (
+ <a
+ key={index}
+ className="md:hover:scale-[1.02] snap-start hover:shadow-lg scale-100 transition-transform duration-200 ease-out w-full cursor-default"
+ >
+ <div className="text-gray-300 space-x-4 col-span-1 flex w-full h-24 bg-secondary rounded-md overflow-hidden">
+ <div className="relative h-full w-20">
+ <Image
+ draggable={false}
+ src={item.node.image.large || item.node.image.medium}
+ width={500}
+ height={300}
+ alt={
+ item.node.name.userPreferred ||
+ item.node.name.full ||
+ "Character Image"
+ }
+ className="h-full object-cover"
+ />
+ </div>
+ <div className="py-2 flex flex-col justify-between">
+ <p className="font-semibold">
+ {item.node.name.full || item.node.name.userPreferred}
+ </p>
+ <p>{item.role}</p>
+ </div>
+ </div>
+ </a>
+ );
+ })}
+ </div>
+ {/* for smaller devices */}
+ <div className="flex md:hidden h-full w-full select-none overflow-x-scroll overflow-y-hidden scrollbar-hide gap-4 pt-8 pb-4 px-5 z-30">
+ {info.slice(0, showAll ? info.length : 6).map((item, index) => {
+ return (
+ <div
+ key={index}
+ className="flex flex-col gap-3 shrink-0 cursor-pointer"
+ >
+ <a className="hover:scale-105 hover:shadow-lg duration-300 ease-out group relative">
+ <div className="h-[190px] w-[135px] rounded-md z-30">
+ <Image
+ draggable={false}
+ src={item.node.image.large || item.node.image.medium}
+ alt={
+ item.node.name.userPreferred ||
+ item.node.name.full ||
+ "Character Image"
+ }
+ width={500}
+ height={300}
+ className="z-20 h-[190px] w-[135px] object-cover rounded-md brightness-90"
+ />
+ </div>
+ </a>
+ <a className="w-[135px] lg:w-[185px] line-clamp-2">
+ <h1 className="font-karla font-semibold text-[15px]">
+ {item.node.name.full || item.node.name.userPreferred}
+ </h1>
+ <h1 className="font-karla float-right italic text-[12px]">
+ ~{item.role}
+ </h1>
+ </a>
</div>
- </div>
- );
-} \ No newline at end of file
+ );
+ })}
+ </div>
+ </div>
+ );
+}