"use client"; import React from 'react'; import { CharacterInfoCardType } from '@/types'; import useLocaleStore from '@/stores/localeStore'; import Image from 'next/image'; import ParseText from '../parseText'; import useDetailDataStore from '@/stores/detailDataStore'; import { getLocaleName } from '@/helper/getName'; import { useShallow } from 'zustand/react/shallow'; export default function CharacterInfoCard({ character, selectedCharacters, onCharacterToggle }: { character: CharacterInfoCardType, selectedCharacters: CharacterInfoCardType[], onCharacterToggle: (characterId: CharacterInfoCardType) => void }) { const isSelected = selectedCharacters.some((selectedCharacter) => selectedCharacter.avatar_id === character.avatar_id); const { mapAvatar, mapLightCone, baseType, damageType } = useDetailDataStore( useShallow((state) => ({ mapAvatar: state.mapAvatar, mapLightCone: state.mapLightCone, baseType: state.baseType, damageType: state.damageType, })) ); const { locale } = useLocaleStore( useShallow((state) => ({ locale: state.locale })) ); const avatar = mapAvatar?.[character.avatar_id.toString()]; return (
onCharacterToggle(character)} > {/* Character Portrait */}
{avatar && ( <> {getLocaleName(locale, {damageType?.[avatar.DamageType]?.Icon && (
{avatar.DamageType.toLowerCase()}
)} {baseType?.[avatar.BaseType]?.Icon && (
{avatar.BaseType.toLowerCase()}
)} )}
{/* Character Name and Level Badge */}
Lv.{character.level} E{character.rank}
{/* Relics Mini-grid */} {character.relics.length > 0 && (
{character.relics.map((relic, index) => (
Relic
+{relic.level}
))}
)} {/* Light Cone */} {character.lightcone && character.lightcone.item_id !== 0 && (
Lightcone
Lv.{character.lightcone.level} S{character.lightcone.rank}
)}
); };