Build [v1.9.19]

This commit is contained in:
Daniel Bedeleanu
2026-04-14 20:44:01 +03:00
parent fcb187974e
commit 00ee4cf9c5
38 changed files with 2059 additions and 157 deletions

View File

@@ -73,8 +73,12 @@ export default function AIOnboarding({ onCancel, onComplete, categories, invento
type: extractedData.type ? String(extractedData.type) : null,
part_number: extractedData.part_number ? String(extractedData.part_number) : null,
color: extractedData.color ? String(extractedData.color) : null,
specs: String(extractedData.specs || ""),
barcode: String(extractedData.barcode || extractedData.part_number || extractedData.serial_number || `AI-${Date.now()}`),
description: String(extractedData.description || ""),
connector: extractedData.connector ? String(extractedData.connector) : null,
size: extractedData.size ? String(extractedData.size) : null,
ocr_text: extractedData.ocr_text ? String(extractedData.ocr_text) : null,
specs: String(extractedData.specs || ""), // Keep specs as extra data if needed
barcode: String(extractedData.barcode || extractedData.part_number || `AI-${Date.now()}`),
quantity: parseFloat(String(extractedData.quantity || 1)),
min_quantity: 1.0,
box_label: extractedData.box_label ? String(extractedData.box_label) : null,
@@ -273,12 +277,46 @@ export default function AIOnboarding({ onCancel, onComplete, categories, invento
</div>
<div className="bg-slate-900/80 p-5 rounded-[1.5rem] border border-slate-800 focus-within:border-primary/50 transition-colors group">
<label className="text-xs text-slate-500 font-bold mb-1 block group-focus-within:text-primary transition-colors">Technical Specifications</label>
<label className="text-xs text-slate-500 font-bold mb-1 block group-focus-within:text-primary transition-colors">Description</label>
<textarea
value={extractedData.specs || ''}
onChange={(e) => setExtractedData({...extractedData, specs: e.target.value})}
className="bg-transparent w-full text-sm leading-relaxed outline-none resize-none h-20 text-slate-300"
placeholder="Technical details..."
value={extractedData.description || ''}
onChange={(e) => setExtractedData({...extractedData, description: e.target.value})}
className="bg-transparent w-full text-sm leading-relaxed outline-none resize-none h-16 text-slate-300"
placeholder="Product description..."
/>
</div>
<div className="grid grid-cols-2 gap-4">
<div className="bg-slate-900/80 p-5 rounded-[1.5rem] border border-slate-800 focus-within:border-primary/50 transition-colors group">
<label className="text-xs text-slate-500 font-bold mb-1 block group-focus-within:text-primary transition-colors">Connector</label>
<input
value={extractedData.connector || ''}
onChange={(e) => setExtractedData({...extractedData, connector: e.target.value})}
className="bg-transparent w-full font-bold outline-none text-slate-200"
placeholder="e.g. LC/UPC"
/>
</div>
<div className="bg-slate-900/80 p-5 rounded-[1.5rem] border border-slate-800 focus-within:border-primary/50 transition-colors group">
<label className="text-xs text-slate-500 font-bold mb-1 block group-focus-within:text-primary transition-colors">Size / Length</label>
<input
value={extractedData.size || ''}
onChange={(e) => setExtractedData({...extractedData, size: e.target.value})}
className="bg-transparent w-full font-bold outline-none text-slate-200"
placeholder="e.g. 5m / 10G"
/>
</div>
</div>
<div className="bg-slate-900 border-2 border-primary/20 p-5 rounded-[1.5rem] shadow-lg">
<div className="flex items-center gap-2 mb-2 text-primary">
<Sparkles size={14} />
<label className="text-xs font-black uppercase tracking-tighter">AI OCR Matching Key</label>
</div>
<textarea
value={extractedData.ocr_text || ''}
onChange={(e) => setExtractedData({...extractedData, ocr_text: e.target.value})}
className="bg-transparent w-full text-[10px] font-mono leading-tight outline-none resize-none h-12 text-slate-400"
placeholder="Heuristic string for local matching..."
/>
</div>