import Image from "next/image"; import { Badge } from "@/components/ui/badge"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { elementBackgroundColor } from "@/lib/catalog/element"; import { characterRarityGradientClass, rarityGradientClass } from "@/lib/catalog/rarity"; import type { CommissionRequest } from "@/lib/commission/request"; import { cn } from "@/lib/utils"; type Item = { key: string; name: string; imageUrl: string; rarity?: number | null; element?: string | null }; type Catalog = { characters: Item[]; weapons: Item[]; artifacts: Item[] }; function ItemImage({ item, size = "small", character = false }: { item: Item; size?: "small" | "large"; character?: boolean }) { return
{item.name}
; } function CommissionTeamCard({ team, index, catalog }: { team: CommissionRequest["teams"][number]; index: number; catalog: Catalog }) { const characters = new Map(catalog.characters.map((item) => [item.key, item])); const weapons = new Map(catalog.weapons.map((item) => [item.key, item])); const artifacts = new Map(catalog.artifacts.map((item) => [item.key, item])); return
ทีม {index + 1}฿100 {team.members.map((member, memberIndex) => { const character = characters.get(member.characterKey); const weapon = weapons.get(member.weaponKey); const artifact = artifacts.get(member.artifactKey); return
{character ? :
}
{weapon ? :
} {artifact ? :
}
C{member.constellation ?? "0"} R{member.refinement ?? "1"}

{character?.name ?? member.characterKey}

; })}
; } export function CommissionRequestSummary({ request, catalog, amountBaht }: { request: CommissionRequest; catalog: Catalog; amountBaht: number; }) { const characters = new Map(catalog.characters.map((item) => [item.key, item])); const weapons = new Map(catalog.weapons.map((item) => [item.key, item])); const comparisonTotal = request.weapons.reduce((sum, set) => sum + set.weaponKeys.length * 20, 0) + request.constellations.reduce((sum, set) => sum + set.levels.length * 20, 0); return
{request.teams.length === 0 && amountBaht > comparisonTotal ? ค่าบริการพื้นฐาน฿100 : null} {request.teams.map((team, index) => )} {request.weapons.map((set, index) => { const character = characters.get(set.characterKey); return เปรียบเทียบอาวุธ {index + 1}฿{set.weaponKeys.length * 20}
{set.weaponKeys.map((key) => { const weapon = weapons.get(key); return weapon ?
R{set.refinements?.[key] ?? "1"}

{weapon.name}

:

{key}

; })}
{character ?

{character.name}

: null}
; })} {request.constellations.map((set, index) => { const character = characters.get(set.characterKey); return เปรียบเทียบกลุ่มดาว {index + 1}฿{set.levels.length * 20}
{set.levels.map((level) => C{level})}
{character ?

{character.name}

: null}
; })}
; }