export type WeightInputMode = 'net' | 'tare' export function readWeightInputMode(cfg: Record | undefined | null): WeightInputMode { const v = String(cfg?.weightInputMode ?? cfg?.WeightInputMode ?? 'net') .trim() .toLowerCase() return v === 'tare' ? 'tare' : 'net' } /** Label display: numeric value + template unit (e.g. 500 + g → 500g). */ export function formatWeightDisplay(rawValue: string, unit: string): string { const raw = String(rawValue ?? '').trim() const u = String(unit ?? '').trim() if (!raw) return '' if (u && !raw.endsWith(u)) return `${raw}${u}` return raw } export function weightInputPlaceholder(mode: WeightInputMode): string { return mode === 'tare' ? 'Enter weight or read from scale' : 'Net weight' } export const WEIGHT_INPUT_MODE_OPTIONS: Array<{ value: WeightInputMode; label: string; /** Template editor: temporarily disable until tare flow is ready. */ disabled?: boolean; }> = [ { value: 'net', label: 'Net weight' }, { value: 'tare', label: 'Tare weight', disabled: true }, ]