$product one item from ProductService's localized array shape * @return array{name: ?string, price: ?string, image: ?string, href: string, variantId: ?int, hasCustomFields: bool} */ public static function fromIndexed(array $product): array { return [ 'name' => $product['name'], 'price' => $product['price'], 'image' => $product['media'][0]['url'] ?? null, 'href' => route('product.show', ['id' => $product['id']]), // The card's quick "Add to cart" always adds this variant, same // default Modules\Core\Catalog\Services\ProductService:: // variantSummaries() and product/show.blade.php both use — no // picker at listing-grid scope, unlike the product page's own // color swatches. 'variantId' => $product['variants'][0]['id'] ?? null, // A product with custom fields (photo upload, engraving text…) // can't be quick-added from a card — the card links to the // product page instead, even when every field is optional. 'hasCustomFields' => ! empty($product['custom_fields']), ]; } }