"use client"; import { Avatar, Card, Button } from "flowbite-react"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { Chip } from "../Chip/Chip"; export const ProfileUser = (props: { isOnline: boolean; avatar: string; login: string; status: string; socials: { isPrivate: boolean; hasSocials: boolean; socials: { name: string; nickname: any; icon: string; urlPrefix?: string | undefined; }[]; }; chips: { hasChips: boolean; isMyProfile: boolean; isVerified: boolean; isSponsor: boolean; isBlocked: boolean; roles?: { id: number; name: string; color: string; }[]; }; rating: number; }) => { const router = useRouter(); return ( <Card className="h-fit"> {props.chips.hasChips && ( <div className="flex gap-1 overflow-x-auto scrollbar-thin"> {props.chips.isMyProfile && ( <Chip bg_color="bg-blue-500" name="Мой профиль" /> )} {props.chips.isVerified && ( <Chip bg_color="bg-green-500" name="Верифицирован" /> )} {props.chips.isSponsor && ( <Chip bg_color="bg-yellow-500" name="Спонсор Anixart" /> )} {props.chips.isBlocked && ( <Chip bg_color="bg-red-500" name="Заблокирован" /> )} {props.chips.roles && props.chips.roles.length > 0 && props.chips.roles.map((role: any) => ( <Chip key={role.id} bg_color={`bg-[var(--role-color)]`} name={role.name} style={ { "--role-color": `#${role.color}`, } as React.CSSProperties } /> ))} </div> )} <Avatar alt="" img={props.avatar} rounded={true} size={"lg"} className="relative flex-col items-center justify-center sm:justify-start sm:flex-row" bordered={true} color={props.isOnline ? "success" : "light"} > <div className="space-y-1 text-2xl font-medium whitespace-pre-wrap dark:text-white"> <div className="text-center sm:text-left"> {props.login}{" "} <span className={`border rounded-md px-2 py-1 text-sm ${ props.rating > 0 ? "border-green-500 text-green-500" : "border-red-500 text-red-500" }`} > {props.rating} </span> </div> <div className="text-sm text-gray-500 whitespace-pre-wrap sm:text-md dark:text-gray-400 "> {props.status} </div> </div> </Avatar> {props.socials.hasSocials && !props.socials.isPrivate && ( <div className="flex items-center gap-1 overflow-x-auto scrollbar-thin"> {props.socials.socials .filter((social: any) => { if (social.nickname == "") { return false; } return true; }) .map((social: any) => { if (social.name == "discord" && social.nickname != "") return ( <Button color="light" key={social.name} onClick={() => { window.navigator.clipboard.writeText(social.nickname); alert("Скопировано!"); }} > <div className="flex items-center justify-center gap-2"> <span className={`iconify h-4 w-4 sm:h-6 sm:w-6 ${social.icon} dark:fill-white`} ></span> {social.nickname} </div> </Button> ); return ( <Link key={social.name} href={`${social.urlPrefix}${social.nickname}`} target="_blank" > <Button color="light"> <div className="flex items-center justify-center gap-2"> <span className={`iconify h-4 w-4 sm:h-6 sm:w-6 ${social.icon} dark:fill-white`} ></span> {social.nickname} </div> </Button> </Link> ); })} </div> )} </Card> ); };