diff --git a/client/src/components/StepAccessControl.jsx b/client/src/components/StepAccessControl.jsx index 9450c40..b403ffe 100644 --- a/client/src/components/StepAccessControl.jsx +++ b/client/src/components/StepAccessControl.jsx @@ -64,7 +64,7 @@ export default function StepAccessControl({ {isRemote ? ( 'Varies by buttons' ) : ( - 'C$' + ac.price.toLocaleString('en-CA') + 'C$' + ac.price.toLocaleString('en-CA', { minimumFractionDigits: 2, maximumFractionDigits: 2 }) )} @@ -110,7 +110,7 @@ export default function StepAccessControl({ {opt.id}-Button
- C${opt.price.toLocaleString('en-CA')} + C${opt.price.toLocaleString('en-CA', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}
); @@ -171,7 +171,7 @@ export default function StepAccessControl({ onClick={onNext} className="px-6 py-2.5 bg-blue-600 text-white rounded-lg font-medium hover:bg-blue-700 transition-colors" > - Generate Quote + Continue diff --git a/client/src/components/StepGroundLoops.jsx b/client/src/components/StepGroundLoops.jsx index f95a7f8..2182b31 100644 --- a/client/src/components/StepGroundLoops.jsx +++ b/client/src/components/StepGroundLoops.jsx @@ -97,7 +97,7 @@ export default function StepGroundLoops({ {s.additionalCost > 0 && (
- +C${s.additionalCost.toLocaleString('en-CA')} + +C${s.additionalCost.toLocaleString('en-CA', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}
)} @@ -144,7 +144,7 @@ export default function StepGroundLoops({ {t.description}
- C${t.price.toLocaleString('en-CA')} + C${t.price.toLocaleString('en-CA', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}
- Includes 1 Loop Detector (+C${(detectors?.[0]?.price ?? 250).toLocaleString('en-CA')}) + Includes 1 Loop Detector (+C${(detectors?.[0]?.price ?? 250).toLocaleString('en-CA', { minimumFractionDigits: 2, maximumFractionDigits: 2 })})
{s.additionalCost > 0 && (
- +C${s.additionalCost.toLocaleString('en-CA')} + +C${s.additionalCost.toLocaleString('en-CA', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}
)} {s.additionalCost === 0 && ( diff --git a/client/src/components/StepOperator.jsx b/client/src/components/StepOperator.jsx index d8ff208..81b1867 100644 --- a/client/src/components/StepOperator.jsx +++ b/client/src/components/StepOperator.jsx @@ -74,7 +74,7 @@ export default function StepOperator({
- C{op.basePrice.toLocaleString('en-CA')} + C${op.basePrice.toLocaleString('en-CA', { minimumFractionDigits: 2, maximumFractionDigits: 2 })} base
@@ -121,7 +121,7 @@ export default function StepOperator({
{opt.name}
- C${opt.price.toLocaleString('en-CA')} + C${opt.price.toLocaleString('en-CA', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}
@@ -157,7 +157,7 @@ export default function StepOperator({
- C${part.unitPrice.toLocaleString('en-CA')} + C${part.unitPrice.toLocaleString('en-CA', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}
- {selectedOp?.optionalParts?.length > 0 + {selectedOp?.armOptions?.length > 0 && !armChoice + ? 'Please select an arm length' + : selectedOp?.optionalParts?.length > 0 ? `${optionalParts.length} optional add-on${optionalParts.length !== 1 ? 's' : ''} selected` : 'Operator selected'}
diff --git a/client/src/components/Wizard.jsx b/client/src/components/Wizard.jsx index bb9a112..a60aa49 100644 --- a/client/src/components/Wizard.jsx +++ b/client/src/components/Wizard.jsx @@ -25,7 +25,7 @@ const initialState = { function reducer(state, action) { switch (action.type) { case 'SELECT_OPERATOR': - return { ...state, operator: action.payload, armChoice: null, optionalParts: [], step: 2 }; + return { ...state, operator: action.payload, armChoice: null, optionalParts: [] }; case 'SET_ARM_CHOICE': return { ...state, armChoice: action.payload }; case 'TOGGLE_OPTIONAL_PART': { @@ -102,7 +102,7 @@ function reducer(state, action) { }, }; case 'GO_TO_STEP': - return { ...state, step: Math.min(action.payload, 5) }; + return { ...state, step: Math.max(1, Math.min(action.payload, 5)) }; case 'RESET': return { ...initialState }; default: diff --git a/server/data/pricing.json b/server/data/pricing.json index db8cf53..f9b3d03 100644 --- a/server/data/pricing.json +++ b/server/data/pricing.json @@ -20,6 +20,9 @@ { "id": "mounting-post", "name": "Mounting Post", "qty": 1, "unitPrice": 85 }, { "id": "prep-cost", "name": "In House Prep Cost", "qty": 1, "unitPrice": 150 }, { "id": "shipping", "name": "Shipping Cost", "qty": 1, "unitPrice": 200 } + ], + "optionalParts": [ + { "id": "add-secondary-arm", "name": "Additional Secondary Arm Kit (LA500)", "qty": 1, "unitPrice": 485 } ] }, {