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
;
}
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 ? : 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 ? : null}
;
})}
;
}