"use client"; import { CircleSlash, Lock } from "lucide-react"; import type { HSL } from "@/lib/character/color-utils"; import { NONE_VARIANT_ID, PIECE_SLOT_COUNT } from "@/lib/character/presets"; import { cn } from "@/lib/utils"; import type { LayerVariant } from "@/lib/character/presets"; import { TintedSpriteIcon } from "./tinted-sprite-icon"; type CharacterPieceSelectorProps = { variants: LayerVariant[]; lockedVariantIds?: ReadonlySet; activeId: string; color: HSL; skinColor?: HSL; onSelect: (variantId: string) => void; onLockedSelect?: (variantId: string) => void; }; export function CharacterPieceSelector({ variants, lockedVariantIds, activeId, color, skinColor, onSelect, onLockedSelect, }: CharacterPieceSelectorProps) { const slots = Array.from({ length: PIECE_SLOT_COUNT }, (_, index) => variants[index] ?? null, ); return (
{slots.map((variant, index) => { if (!variant) { return (
); } if (variant.id === NONE_VARIANT_ID) { return ( ); } const locked = lockedVariantIds?.has(variant.id) ?? false; return ( ); })}
); }