"use client"; import { motion } from "framer-motion"; import { cn } from "@/lib/utils"; import type { ArrayElementState } from "@/lib/visualizations/types"; interface ArrayElementProps { element: ArrayElementState; size?: "sm" | "md" | "lg"; showIndex?: boolean; className?: string; } const SIZE_CLASSES = { sm: "w-10 h-10 text-sm", md: "w-14 h-14 text-base", lg: "w-18 h-18 text-lg", } as const; const STATE_CLASSES = { normal: "bg-[var(--muted)] border-[var(--border)] text-[var(--foreground)]", highlighted: "bg-[var(--primary)]/20 border-[var(--primary)] text-[var(--primary)]", dimmed: "bg-[var(--muted)]/50 border-[var(--border)]/50 text-[var(--muted-foreground)] opacity-30", success: "bg-green-500/20 border-green-500 text-green-500", comparing: "bg-amber-500/20 border-amber-500 text-amber-500", } as const; export function ArrayElement({ element, size = "md", showIndex = true, className, }: ArrayElementProps) { return (
{element.value} {showIndex && ( {element.index} )}
); }