From 7d648c4313ba11d6b1cf3fd04ec58c5e2459d5bd Mon Sep 17 00:00:00 2001 From: mnerv <24420859+mnerv@users.noreply.github.com> Date: Mon, 20 Apr 2026 01:32:23 +0200 Subject: [PATCH] Fix part hover preview and localStorage quota on cart creation --- src/components/ItemCard.tsx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/components/ItemCard.tsx b/src/components/ItemCard.tsx index fa5174f..09dd212 100644 --- a/src/components/ItemCard.tsx +++ b/src/components/ItemCard.tsx @@ -1,6 +1,6 @@ -import { useState } from 'react' +import { useEffect, useState } from 'react' import type { Product, Drone, CompleteDrone, KitBuild } from '../types' -import { useResolvedImage, resolveImageSync } from '../utils/imageCache' +import { useResolvedImage, resolveImageSync, resolveImage } from '../utils/imageCache' function fmt(amount: number, currency: string) { return new Intl.NumberFormat('en', { style: 'currency', currency }).format(amount) @@ -26,6 +26,14 @@ export function ItemCard({ item, onEdit, onRemove }: Props) { const [hoverImg, setHoverImg] = useState(null) const [mousePos, setMousePos] = useState({ x: 0, y: 0 }) + // Preload part images into memCache so resolveImageSync works on hover + useEffect(() => { + if (!isKit) return + for (const p of (item as KitBuild).parts) { + if (p.image) resolveImage(p.image) + } + }, [item]) + const priceLabel = isKit ? kitTotal(item as KitBuild) : isDrone