"use client"; import { getNameChar } from '@/helper'; import useLocaleStore from '@/stores/localeStore'; import { AvatarDetail } from '@/types'; import ParseText from '../parseText'; import Image from 'next/image'; import { useTranslations } from 'next-intl'; import useDetailDataStore from '@/stores/detailDataStore'; import { useShallow } from 'zustand/react/shallow'; import useUserDataStore from '@/stores/userDataStore'; interface CharacterCardProps { data: AvatarDetail } export default function CharacterCard({ data }: CharacterCardProps) { const { locale } = useLocaleStore(useShallow((state) => ({ locale: state.locale }))); const transI18n = useTranslations("DataPage"); const { baseType, damageType } = useDetailDataStore( useShallow((state) => ({ baseType: state.baseType, damageType: state.damageType, })) ) const { avatars } = useUserDataStore( useShallow((state) => ({ avatars: state.avatars })) ) const userAvatar = avatars[data.ID.toString()] const level = userAvatar?.level const rank = userAvatar?.data?.rank ?? 0 const is5Star = data.Rarity === "CombatPowerAvatarRarityType5"; const is4Star = data.Rarity === "CombatPowerAvatarRarityType4"; return (
  • {/* Artwork container with vibrant rarity background */}
    {data.ID.toString()} {/* Level and Eidolons Badge Overlay */} {level && (
    {level} {rank > 0 && ( E{rank} )}
    )} {/* Damage Type Badge */} {damageType?.[data.DamageType]?.Icon && ( {data.DamageType.toLowerCase()} )} {/* Base Type / Path Badge */} {baseType?.[data.BaseType]?.Icon && ( {data.BaseType.toLowerCase()} )}
    {/* Name Label - Clear Full Name Display */}
  • ); }