| Equipment | Cost ($) | Setup (h) | # boards | Per board | |
|---|---|---|---|---|---|
| patch({ equipment: s.equipment.map((x) => x.id === e.id ? { ...x, name: ev.target.value } : x) })} className="h-8 min-w-36" /> | +{numInput(e.cost, (n) => patch({ equipment: s.equipment.map((x) => x.id === e.id ? { ...x, cost: n } : x) }))} | +{numInput(e.setupHrs, (n) => patch({ equipment: s.equipment.map((x) => x.id === e.id ? { ...x, setupHrs: n } : x) }))} | +{numInput(e.boards, (n) => patch({ equipment: s.equipment.map((x) => x.id === e.id ? { ...x, boards: n } : x) }))} | +{money(e.boards > 0 ? e.cost / e.boards : 0)} | ++ |
Per board: {money(r.operations)}
+| Material | Order ($) | Ship ($) | # boards | Order (m) | Unload (m) | Per board | |
|---|---|---|---|---|---|---|---|
| up({ name: e.target.value })} className="h-8 min-w-36" /> | +{numInput(m.orderCost, (n) => up({ orderCost: n }))} | +{numInput(m.shipping, (n) => up({ shipping: n }))} | +{numInput(m.boards, (n) => up({ boards: n }))} | +{numInput(m.orderMin, (n) => up({ orderMin: n }))} | +{numInput(m.unloadMin, (n) => up({ unloadMin: n }))} | +{money(per)} | ++ |
| Process | Time (m) | # boards | Per board | |
|---|---|---|---|---|
| up({ name: e.target.value })} className="h-8 min-w-36" /> | +{numInput(p.minutes, (n) => up({ minutes: n }))} | +{numInput(p.boards, (n) => up({ boards: n }))} | +{money(per)} | ++ |
| Packaging | Time/board (m) | Materials/board ($) | Per board | |
|---|---|---|---|---|
| up({ name: e.target.value })} className="h-8 min-w-36" /> | +{numInput(p.minutesPerBoard, (n) => up({ minutesPerBoard: n }))} | +{numInput(p.materialsPerBoard, (n) => up({ materialsPerBoard: n }))} | +{money(per)} | ++ |
Selling price · no packaging
+{money(r.priceNoPack)}
+Selling price · with packaging
+{money(r.priceWithPack)}
+Does not include shipping to the buyer.
+{t('diyUi.calc.intro')}
+{t('diyUi.tagline')}
- {/* Category chips */} - - {/* Resource sections */} {DIY_CATEGORIES.map((cat) => { const cards = DIY_CARDS.filter((c) => c.category === cat.id);