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 }
]
},
{