+
+ onFiles(e.target.files)}
+ />
+
+ JPG/PNG/WEBP/GIF, до 10 МБ
+
+
+ {images.length === 0 ? (
+
Изображений нет.
+ ) : (
+
+ {images.map((img, i) => (
+
+
+ {img.isMain && (
+
основное
+ )}
+
+ {!img.isMain && (
+
+ )}
+
+
+
+ ))}
+
+ )}
+
+ {lightboxIdx !== null && images[lightboxIdx] && (
+
+
+ {images.length > 1 && (
+ <>
+
+
+ >
+ )}
+

e.stopPropagation()}
+ />
+
+ {lightboxIdx + 1} / {images.length}
+
+
+ )}
+
+ )
+}
diff --git a/src/food-market.web/src/pages/ProductEditPage.tsx b/src/food-market.web/src/pages/ProductEditPage.tsx
index 48bef5e..973f876 100644
--- a/src/food-market.web/src/pages/ProductEditPage.tsx
+++ b/src/food-market.web/src/pages/ProductEditPage.tsx
@@ -10,6 +10,7 @@ import {
} from '@/lib/useLookups'
import { useOrgSettings } from '@/lib/useOrgSettings'
import { BarcodeType, Packaging, type Product } from '@/lib/types'
+import { ProductImageGallery } from '@/components/ProductImageGallery'
interface PriceRow { id?: string; priceTypeId: string; amount: number; currencyId: string }
interface BarcodeRow { id?: string; code: string; type: BarcodeType; isPrimary: boolean }
@@ -269,9 +270,6 @@ export function ProductEditPage() {
{suppliers.data?.map((c) =>