Rematch catalog data to ecommerce source
23099
app/catalog-data.ts
@@ -1,93 +0,0 @@
|
||||
import type { CatalogProduct } from "./catalog-data";
|
||||
|
||||
// The ecommerce image archive groups products by family rather than by the
|
||||
// individual model code used in the PDF catalog. These are the corresponding
|
||||
// family-level main images copied into public/catalog-products/source-main.
|
||||
const SOURCE_MAIN_IMAGES = {
|
||||
"1004": "/catalog-products/source-main/1004-main.png",
|
||||
"258": "/catalog-products/source-main/258-main.jpg",
|
||||
"259": "/catalog-products/source-main/259-main.jpg",
|
||||
"266": "/catalog-products/source-main/266-main.jpg",
|
||||
"267": "/catalog-products/source-main/267-main.jpg",
|
||||
"268": "/catalog-products/source-main/268-main.jpg",
|
||||
"270": "/catalog-products/source-main/270-main.jpg",
|
||||
"271": "/catalog-products/source-main/271-main.jpg",
|
||||
"272": "/catalog-products/source-main/272-main.jpg",
|
||||
"273": "/catalog-products/source-main/273-main.jpg",
|
||||
"274": "/catalog-products/source-main/274-main.jpg",
|
||||
"275": "/catalog-products/source-main/275-main.jpg",
|
||||
"276": "/catalog-products/source-main/276-main.jpg",
|
||||
"308": "/catalog-products/source-main/308-main.png",
|
||||
"309": "/catalog-products/source-main/309-main.png",
|
||||
"310": "/catalog-products/source-main/310-main.png",
|
||||
"311": "/catalog-products/source-main/311-main.png",
|
||||
"313": "/catalog-products/source-main/313-main.png",
|
||||
} as const;
|
||||
|
||||
type SourceImageKey = keyof typeof SOURCE_MAIN_IMAGES;
|
||||
|
||||
function hasWeight(name: string, grams: string) {
|
||||
return new RegExp(`${grams}\\s*(?:g|克)`, "i").test(name);
|
||||
}
|
||||
|
||||
function getGearSeries(name: string) {
|
||||
if (/半金属/.test(name)) return "semi";
|
||||
if (/全金属|金属/.test(name)) return "metal";
|
||||
if (/塑胶|塑料/.test(name)) return "plastic";
|
||||
return null;
|
||||
}
|
||||
|
||||
function getSmallServoImage(name: string): string | null {
|
||||
if (hasWeight(name, "1\\.7")) return SOURCE_MAIN_IMAGES["1004"];
|
||||
|
||||
const gearSeries = getGearSeries(name);
|
||||
if (hasWeight(name, "2") && gearSeries === "plastic") return SOURCE_MAIN_IMAGES["272"];
|
||||
if (hasWeight(name, "3\\.7") && gearSeries === "plastic") return SOURCE_MAIN_IMAGES["271"];
|
||||
|
||||
if (hasWeight(name, "9")) {
|
||||
if (gearSeries === "metal") return SOURCE_MAIN_IMAGES["266"];
|
||||
if (gearSeries === "semi") return SOURCE_MAIN_IMAGES["259"];
|
||||
if (gearSeries === "plastic") return SOURCE_MAIN_IMAGES["258"];
|
||||
}
|
||||
|
||||
if (hasWeight(name, "17")) {
|
||||
if (gearSeries === "metal") return SOURCE_MAIN_IMAGES["274"];
|
||||
if (gearSeries === "plastic") return SOURCE_MAIN_IMAGES["273"];
|
||||
}
|
||||
|
||||
if (hasWeight(name, "25")) {
|
||||
if (gearSeries === "metal") return SOURCE_MAIN_IMAGES["276"];
|
||||
if (gearSeries === "plastic") return SOURCE_MAIN_IMAGES["275"];
|
||||
}
|
||||
|
||||
if (hasWeight(name, "37")) {
|
||||
if (gearSeries === "metal") return SOURCE_MAIN_IMAGES["270"];
|
||||
if (gearSeries === "semi") return SOURCE_MAIN_IMAGES["268"];
|
||||
if (gearSeries === "plastic") return SOURCE_MAIN_IMAGES["267"];
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
function getBrickServoImage(name: string): string | null {
|
||||
if (name.includes("3x3x3")) return SOURCE_MAIN_IMAGES["311"];
|
||||
if (name.includes("3x3x7")) return SOURCE_MAIN_IMAGES["310"];
|
||||
if (name.includes("3x7x5")) return SOURCE_MAIN_IMAGES["309"];
|
||||
if (name.includes("6x6x5")) return SOURCE_MAIN_IMAGES["308"];
|
||||
if (name.includes("11x5x4")) return SOURCE_MAIN_IMAGES["313"];
|
||||
return null;
|
||||
}
|
||||
|
||||
export function getCatalogProductImage(product: CatalogProduct) {
|
||||
if (product.category === "积木舵机") {
|
||||
return getBrickServoImage(product.name) ?? product.image;
|
||||
}
|
||||
|
||||
if (product.category === "标准舵机" || product.category === "异形舵机") {
|
||||
return getSmallServoImage(product.name) ?? product.image;
|
||||
}
|
||||
|
||||
return product.image;
|
||||
}
|
||||
|
||||
export const CATALOG_SOURCE_IMAGE_KEYS: SourceImageKey[] = Object.keys(SOURCE_MAIN_IMAGES) as SourceImageKey[];
|
||||
@@ -242,7 +242,7 @@ select:focus, input:focus, textarea:focus { border-color: var(--blue); box-shado
|
||||
.section-heading > p { max-width: 480px; margin: 0; color: #6e7a8e; line-height: 1.8; font-size: 13px; }
|
||||
.catalog-summary {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(7, 1fr);
|
||||
grid-template-columns: repeat(5, 1fr);
|
||||
gap: 9px;
|
||||
margin-bottom: 22px;
|
||||
}
|
||||
|
||||
@@ -11,17 +11,17 @@ export async function generateMetadata(): Promise<Metadata> {
|
||||
return {
|
||||
metadataBase,
|
||||
title: "高徳乐 AI 舵机选型助手",
|
||||
description: "高徳乐280个产品型号完整目录,支持搜索筛选、AI舵机初选与样品申请。",
|
||||
description: "高徳乐商城536款产品资料,支持产品参数搜索、AI舵机初选与样品申请。",
|
||||
openGraph: {
|
||||
title: "高徳乐 AI 舵机选型助手",
|
||||
description: "280个型号完整目录。3分钟找到适合你的舵机,AI初选,工程师复核。",
|
||||
description: "536款商城产品完整目录。3分钟找到适合你的舵机,AI初选,工程师复核。",
|
||||
images: [{ url: new URL("/og.png", metadataBase).toString(), width: 1200, height: 630 }],
|
||||
type: "website",
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
title: "高徳乐 AI 舵机选型助手",
|
||||
description: "3分钟,找到适合你的舵机。",
|
||||
description: "高徳乐商城产品资料与 AI 舵机选型助手。",
|
||||
images: [new URL("/og.png", metadataBase).toString()],
|
||||
},
|
||||
};
|
||||
|
||||
87
app/page.tsx
@@ -3,15 +3,9 @@
|
||||
import { FormEvent, useMemo, useState } from "react";
|
||||
import {
|
||||
CATALOG_COUNTS,
|
||||
CATALOG_PRODUCTS as RAW_CATALOG_PRODUCTS,
|
||||
CATALOG_PRODUCTS,
|
||||
type CatalogProduct,
|
||||
} from "./catalog-data";
|
||||
import { getCatalogProductImage } from "./catalog-image-map";
|
||||
|
||||
const CATALOG_PRODUCTS = RAW_CATALOG_PRODUCTS.map((product) => ({
|
||||
...product,
|
||||
image: getCatalogProductImage(product),
|
||||
}));
|
||||
|
||||
type Requirements = {
|
||||
application: string;
|
||||
@@ -40,12 +34,10 @@ const APPLICATIONS = [
|
||||
|
||||
const PRIMARY_CATALOG_CATEGORIES = [
|
||||
"标准舵机",
|
||||
"异形舵机",
|
||||
"全金属舵机",
|
||||
"大扭矩舵机",
|
||||
"积木舵机",
|
||||
"舵盘配件",
|
||||
"标准齿轮箱",
|
||||
"翻盖电机",
|
||||
"精密齿轮配件",
|
||||
];
|
||||
|
||||
const CATALOG_FILTER_CATEGORIES = ["全部产品", ...PRIMARY_CATALOG_CATEGORIES, "静音舵机"];
|
||||
@@ -60,6 +52,13 @@ const FEATURED_SPEC_ORDER = [
|
||||
"寿命",
|
||||
"产品尺寸",
|
||||
"外形尺寸",
|
||||
"空载速度",
|
||||
"材质",
|
||||
"模数",
|
||||
"齿数",
|
||||
"孔径",
|
||||
"重量",
|
||||
"参考单价",
|
||||
];
|
||||
|
||||
function getFeaturedSpecs(product: CatalogProduct) {
|
||||
@@ -69,20 +68,32 @@ function getFeaturedSpecs(product: CatalogProduct) {
|
||||
.map((label) => [label, product.specs[label]] as const);
|
||||
}
|
||||
|
||||
const SERVO_CATEGORIES = ["标准舵机", "异形舵机", "全金属舵机", "大扭矩舵机", "积木舵机"];
|
||||
const SERVO_CATEGORIES = ["标准舵机", "积木舵机"];
|
||||
const SILENT_SERVO_CATEGORY = "静音舵机";
|
||||
const CUSTOM_SERVO_CATEGORY = "非标准舵机定制";
|
||||
const TORQUE_MIN = 0.09;
|
||||
const TORQUE_MAX = 920;
|
||||
const TORQUE_PRESETS = [0.1, 1, 5, 20, 100, 300, 920];
|
||||
const TORQUE_MAX = Math.max(
|
||||
TORQUE_MIN,
|
||||
...CATALOG_PRODUCTS.filter((product) => SERVO_CATEGORIES.includes(product.category))
|
||||
.map((product) => product.torqueValue ?? 0),
|
||||
);
|
||||
const TORQUE_PRESETS = [...new Set([
|
||||
0.1,
|
||||
1,
|
||||
5,
|
||||
20,
|
||||
100,
|
||||
300,
|
||||
TORQUE_MAX,
|
||||
].filter((value) => value <= TORQUE_MAX))];
|
||||
|
||||
const APPLICATION_CATEGORY_MAP: Record<string, string[]> = {
|
||||
AI毛绒: ["标准舵机", "异形舵机"],
|
||||
智能玩具: ["标准舵机", "异形舵机", "积木舵机"],
|
||||
AI毛绒: ["标准舵机"],
|
||||
智能玩具: ["标准舵机", "积木舵机"],
|
||||
"教育/积木": ["积木舵机", "标准舵机"],
|
||||
微型机器人: ["标准舵机", "异形舵机", "全金属舵机"],
|
||||
"云台/航模": ["标准舵机", "全金属舵机"],
|
||||
工业设备: ["全金属舵机", "大扭矩舵机", "异形舵机"],
|
||||
微型机器人: ["标准舵机", "积木舵机"],
|
||||
"云台/航模": ["标准舵机"],
|
||||
工业设备: ["标准舵机", "积木舵机"],
|
||||
};
|
||||
|
||||
function parseNumbers(value = "") {
|
||||
@@ -97,7 +108,7 @@ function isSilentServo(product: CatalogProduct) {
|
||||
const SILENT_SERVO_COUNT = CATALOG_PRODUCTS.filter(isSilentServo).length;
|
||||
|
||||
function getCategoryCount(category: string) {
|
||||
return category === SILENT_SERVO_CATEGORY ? SILENT_SERVO_COUNT : CATALOG_COUNTS[category];
|
||||
return category === SILENT_SERVO_CATEGORY ? SILENT_SERVO_COUNT : CATALOG_COUNTS[category] ?? 0;
|
||||
}
|
||||
|
||||
type ProductScale = {
|
||||
@@ -214,10 +225,10 @@ const SELECTOR_PRODUCTS = CATALOG_PRODUCTS.filter((product) =>
|
||||
weight: inferWeight(product),
|
||||
isSilent: isSilentServo(product),
|
||||
gear: classifyGear(product.specs["齿轮材质"]),
|
||||
angle: product.specs["可操作角度"] ?? product.specs["操作角度范围"] ?? "",
|
||||
angle: product.specs["可操作角度"] ?? "",
|
||||
control,
|
||||
speed: product.specs["空载速度"] ?? product.specs["转动速度"] ?? "",
|
||||
size: product.specs["产品尺寸"] ?? product.specs["外形尺寸"] ?? "",
|
||||
speed: product.specs["空载速度"] ?? "",
|
||||
size: product.specs["产品尺寸"] ?? "",
|
||||
};
|
||||
});
|
||||
|
||||
@@ -349,6 +360,8 @@ export default function Home() {
|
||||
product.name,
|
||||
product.code,
|
||||
product.category,
|
||||
product.subCategory,
|
||||
product.sourceCategory,
|
||||
...Object.keys(product.specs),
|
||||
...Object.values(product.specs),
|
||||
]
|
||||
@@ -429,8 +442,8 @@ export default function Home() {
|
||||
<a href="#products" className="text-action">查看能力范围</a>
|
||||
</div>
|
||||
<div className="trust-row">
|
||||
<span><b>280</b> 个产品型号</span>
|
||||
<span><b>0.09–920</b> kgf·cm</span>
|
||||
<span><b>{CATALOG_PRODUCTS.length}</b> 个商城产品</span>
|
||||
<span><b>{formatTorque(TORQUE_MIN)}–{formatTorque(TORQUE_MAX)}</b> kgf·cm</span>
|
||||
<span><b>48h</b> 方案响应</span>
|
||||
</div>
|
||||
</div>
|
||||
@@ -492,7 +505,7 @@ export default function Home() {
|
||||
<div className="question-step">
|
||||
<p className="step-kicker">第二步 · 核心参数</p>
|
||||
<h2>输入舵机的关键技术要求</h2>
|
||||
<p className="step-help">已覆盖243款舵机:0.09–920 kgf·cm,并按官方目录额定电压精确筛选。</p>
|
||||
<p className="step-help">已覆盖{SELECTOR_PRODUCTS.length}款可选舵机:{TORQUE_MIN}–{TORQUE_MAX} kgf·cm,并按商城资料额定电压筛选。</p>
|
||||
<div className="two-fields compact-fields">
|
||||
<label className="select-field">
|
||||
<span>目标产品系列</span>
|
||||
@@ -500,7 +513,7 @@ export default function Home() {
|
||||
value={requirements.category}
|
||||
onChange={(event) => update("category", event.target.value)}
|
||||
>
|
||||
<option value="全部舵机">全部舵机(243款)</option>
|
||||
<option value="全部舵机">全部舵机({SELECTOR_PRODUCTS.length}款)</option>
|
||||
<optgroup label="官方产品系列">
|
||||
{SERVO_CATEGORIES.map((category) => (
|
||||
<option key={category} value={category}>
|
||||
@@ -560,7 +573,11 @@ export default function Home() {
|
||||
value={torqueToSlider(requirements.torque)}
|
||||
onChange={(event) => update("torque", sliderToTorque(Number(event.target.value)))}
|
||||
/>
|
||||
<div className="range-scale"><span>0.09</span><span>1</span><span>10</span><span>100</span><span>920</span></div>
|
||||
<div className="range-scale">
|
||||
{[TORQUE_MIN, 1, 10, 100, TORQUE_MAX]
|
||||
.filter((value, index, values) => value <= TORQUE_MAX && values.indexOf(value) === index)
|
||||
.map((value) => <span key={value}>{formatTorque(value)}</span>)}
|
||||
</div>
|
||||
<div className="torque-presets" aria-label="常用扭矩快捷值">
|
||||
{TORQUE_PRESETS.map((torque) => (
|
||||
<button
|
||||
@@ -820,7 +837,7 @@ export default function Home() {
|
||||
{match.reasons.slice(0, 2).map((reason) => <li key={reason}>✓ {reason}</li>)}
|
||||
</ul>
|
||||
<div className="source-line">
|
||||
<span>官方目录型号</span>
|
||||
<span>商城资料产品</span>
|
||||
<strong>{match.product.category}</strong>
|
||||
<small>价格与交期按用量确认</small>
|
||||
</div>
|
||||
@@ -891,9 +908,9 @@ export default function Home() {
|
||||
<div className="section-heading">
|
||||
<div>
|
||||
<p className="eyebrow"><span /> 官方产品目录 · 2026.06</p>
|
||||
<h2>完整收录280个产品型号</h2>
|
||||
<h2>完整收录{CATALOG_PRODUCTS.length}个商城产品</h2>
|
||||
</div>
|
||||
<p>官方目录按七个主分类收录280款产品;静音舵机作为特色子集筛选,不重复计入产品总数。</p>
|
||||
<p>产品数据、分类、参数与主图均来自高徳乐商城产品资料;舵机选型仅从其中可用于选型的舵机系列中推荐。</p>
|
||||
</div>
|
||||
|
||||
<div className="catalog-summary" aria-label="产品分类统计">
|
||||
@@ -912,7 +929,7 @@ export default function Home() {
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
<p className="catalog-category-note">分类已按官方目录表头及业务规则复核 · 七个主分类合计280款 · 静音舵机11款为标准舵机特色子集</p>
|
||||
<p className="catalog-category-note">商城资料共 {CATALOG_PRODUCTS.length} 款产品,包含舵机、舵盘配件、积木舵机、标准齿轮箱与精密齿轮配件;静音舵机为标准舵机特色子集。</p>
|
||||
|
||||
<div className="catalog-toolbar">
|
||||
<label className="catalog-search">
|
||||
@@ -989,7 +1006,7 @@ export default function Home() {
|
||||
) : (
|
||||
<span className="catalog-placeholder">GAUDELOT</span>
|
||||
)}
|
||||
<small>{product.category}</small>
|
||||
<small>{product.subCategory || product.category}</small>
|
||||
<span className="catalog-zoom-hint">点击查看大图</span>
|
||||
</button>
|
||||
<div className="catalog-card-body">
|
||||
@@ -1032,6 +1049,8 @@ export default function Home() {
|
||||
role="presentation"
|
||||
onMouseDown={() => setSelectedCatalogProduct(null)}
|
||||
>
|
||||
{/* Stop a click inside the dialog from closing the backdrop. */}
|
||||
{/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */}
|
||||
<section
|
||||
className="catalog-modal"
|
||||
role="dialog"
|
||||
@@ -1057,7 +1076,7 @@ export default function Home() {
|
||||
<p className="step-kicker">{selectedCatalogProduct.category}</p>
|
||||
<h2 id="catalog-modal-title">{selectedCatalogProduct.name}</h2>
|
||||
<code>{selectedCatalogProduct.code}</code>
|
||||
<p className="catalog-source-note">官方产品目录第 {selectedCatalogProduct.page} 页</p>
|
||||
<p className="catalog-source-note">商城资料编号 {selectedCatalogProduct.sourceId} · {selectedCatalogProduct.sourceCategory}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div className="catalog-spec-table">
|
||||
|
||||
BIN
public/catalog-products/source-main/1000.jpg
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
public/catalog-products/source-main/1003.jpg
Normal file
|
After Width: | Height: | Size: 129 KiB |
|
Before Width: | Height: | Size: 271 KiB |
BIN
public/catalog-products/source-main/1004.jpg
Normal file
|
After Width: | Height: | Size: 163 KiB |
|
Before Width: | Height: | Size: 186 KiB |
BIN
public/catalog-products/source-main/258.jpg
Normal file
|
After Width: | Height: | Size: 139 KiB |
|
Before Width: | Height: | Size: 173 KiB |
BIN
public/catalog-products/source-main/259.jpg
Normal file
|
After Width: | Height: | Size: 130 KiB |
BIN
public/catalog-products/source-main/260.jpg
Normal file
|
After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 170 KiB |
BIN
public/catalog-products/source-main/266.jpg
Normal file
|
After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 193 KiB |
BIN
public/catalog-products/source-main/267.jpg
Normal file
|
After Width: | Height: | Size: 151 KiB |
|
Before Width: | Height: | Size: 188 KiB |
BIN
public/catalog-products/source-main/268.jpg
Normal file
|
After Width: | Height: | Size: 147 KiB |
|
Before Width: | Height: | Size: 186 KiB |
BIN
public/catalog-products/source-main/270.jpg
Normal file
|
After Width: | Height: | Size: 145 KiB |
|
Before Width: | Height: | Size: 189 KiB |
BIN
public/catalog-products/source-main/271.jpg
Normal file
|
After Width: | Height: | Size: 148 KiB |
|
Before Width: | Height: | Size: 224 KiB |
BIN
public/catalog-products/source-main/272.jpg
Normal file
|
After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 169 KiB |
BIN
public/catalog-products/source-main/273.jpg
Normal file
|
After Width: | Height: | Size: 128 KiB |
|
Before Width: | Height: | Size: 186 KiB |
BIN
public/catalog-products/source-main/274.jpg
Normal file
|
After Width: | Height: | Size: 137 KiB |
|
Before Width: | Height: | Size: 179 KiB |
BIN
public/catalog-products/source-main/275.jpg
Normal file
|
After Width: | Height: | Size: 139 KiB |
|
Before Width: | Height: | Size: 188 KiB |
BIN
public/catalog-products/source-main/276.jpg
Normal file
|
After Width: | Height: | Size: 144 KiB |
|
Before Width: | Height: | Size: 1.5 MiB |
BIN
public/catalog-products/source-main/308.jpg
Normal file
|
After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 1.3 MiB |
BIN
public/catalog-products/source-main/309.jpg
Normal file
|
After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 850 KiB |
BIN
public/catalog-products/source-main/310.jpg
Normal file
|
After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 1.4 MiB |
BIN
public/catalog-products/source-main/311.jpg
Normal file
|
After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 1.7 MiB |
BIN
public/catalog-products/source-main/313.jpg
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
public/catalog-products/source-main/329.jpg
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
public/catalog-products/source-main/330.jpg
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
public/catalog-products/source-main/331.jpg
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
public/catalog-products/source-main/332.jpg
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/catalog-products/source-main/333.jpg
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
public/catalog-products/source-main/334.jpg
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
public/catalog-products/source-main/335.jpg
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
public/catalog-products/source-main/336.jpg
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
public/catalog-products/source-main/337.jpg
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
public/catalog-products/source-main/338.jpg
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
public/catalog-products/source-main/339.jpg
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
public/catalog-products/source-main/340.jpg
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
public/catalog-products/source-main/341.jpg
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
public/catalog-products/source-main/342.jpg
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
public/catalog-products/source-main/343.jpg
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
public/catalog-products/source-main/344.jpg
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
public/catalog-products/source-main/345.jpg
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
public/catalog-products/source-main/346.jpg
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
public/catalog-products/source-main/347.jpg
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/catalog-products/source-main/348.jpg
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
public/catalog-products/source-main/349.jpg
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
public/catalog-products/source-main/350.jpg
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
public/catalog-products/source-main/351.jpg
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
public/catalog-products/source-main/352.jpg
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
public/catalog-products/source-main/353.jpg
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
public/catalog-products/source-main/354.jpg
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/catalog-products/source-main/355.jpg
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
public/catalog-products/source-main/356.jpg
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
public/catalog-products/source-main/358.jpg
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
public/catalog-products/source-main/359.jpg
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
public/catalog-products/source-main/360.jpg
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/catalog-products/source-main/361.jpg
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
public/catalog-products/source-main/362.jpg
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
public/catalog-products/source-main/363.jpg
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
public/catalog-products/source-main/364.jpg
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
public/catalog-products/source-main/365.jpg
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/catalog-products/source-main/366.jpg
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
public/catalog-products/source-main/367.jpg
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
public/catalog-products/source-main/368.jpg
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
public/catalog-products/source-main/369.jpg
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
public/catalog-products/source-main/370.jpg
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
public/catalog-products/source-main/371.jpg
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
public/catalog-products/source-main/372.jpg
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
public/catalog-products/source-main/373.jpg
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
public/catalog-products/source-main/374.jpg
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
public/catalog-products/source-main/375.jpg
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
public/catalog-products/source-main/376.jpg
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
public/catalog-products/source-main/377.jpg
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
public/catalog-products/source-main/378.jpg
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
public/catalog-products/source-main/379.jpg
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
public/catalog-products/source-main/380.jpg
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
public/catalog-products/source-main/381.jpg
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
public/catalog-products/source-main/382.jpg
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
public/catalog-products/source-main/383.jpg
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
public/catalog-products/source-main/384.jpg
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
public/catalog-products/source-main/385.jpg
Normal file
|
After Width: | Height: | Size: 43 KiB |