+ {stepIndex === 0 ? (
+ <>
+
+
+ name="ownershipType"
+ value={form.ownershipType}
+ options={(
+ Object.entries(OWNERSHIP_LABELS) as [OwnershipType, string][]
+ ).map(([value, label]) => ({ value, label }))}
+ onChange={(ownershipType) => updateForm({ ownershipType })}
+ />
+
+
+
+ name="buildingAgeBand"
+ value={form.buildingAgeBand}
+ options={(
+ Object.entries(BUILDING_AGE_LABELS) as [BuildingAgeBand, string][]
+ ).map(([value, label]) => ({ value, label }))}
+ onChange={(buildingAgeBand) => updateForm({ buildingAgeBand })}
+ />
+
+ >
+ ) : null}
+
+ {stepIndex === 1 ? (
+ <>
+
+ updateForm({ hasGas })}
+ />
+
+
+
+ name="floodRiskZone"
+ value={form.floodRiskZone ?? ""}
+ options={[
+ { value: "", label: "Not sure / not assessed" },
+ ...(
+ Object.entries(FLOOD_RISK_LABELS) as [FloodRiskZone, string][]
+ ).map(([value, label]) => ({ value, label })),
+ ]}
+ onChange={(floodRiskZone) =>
+ updateForm({
+ floodRiskZone: floodRiskZone === "" ? null : floodRiskZone,
+ })
+ }
+ />
+
+ >
+ ) : null}
+
+ {stepIndex === 2 ? (
+
+ updateForm({ hasCateringKitchen })}
+ />
+ updateForm({ hasGrounds })}
+ />
+ updateForm({ hasSleeping })}
+ />
+
+ ) : null}
+
+ {stepIndex === 3 ? (
+
+ updateForm({ hasVehicles })}
+ />
+ updateForm({ hasPlantMachinery })}
+ />
+ updateForm({ hasThirdPartyUsers })}
+ />
+
+ ) : null}
+
+ {stepIndex === 4 ? (
+
+
+
Your answers
+
+
+ Ownership:{" "}
+ {form.ownershipType
+ ? OWNERSHIP_LABELS[form.ownershipType]
+ : "—"}
+
+
+ Building age:{" "}
+ {form.buildingAgeBand
+ ? BUILDING_AGE_LABELS[form.buildingAgeBand]
+ : "—"}
+
+ Gas on site: {form.hasGas ? "Yes" : "No"}
+
+ Flood risk:{" "}
+ {form.floodRiskZone ? FLOOD_RISK_LABELS[form.floodRiskZone] : "Not set"}
+
+ Kitchen: {form.hasCateringKitchen ? "Yes" : "No"}
+ Grounds: {form.hasGrounds ? "Yes" : "No"}
+ Sleeping: {form.hasSleeping ? "Yes" : "No"}
+ Vehicles: {form.hasVehicles ? "Yes" : "No"}
+ Plant/machinery: {form.hasPlantMachinery ? "Yes" : "No"}
+ Third-party hire: {form.hasThirdPartyUsers ? "Yes" : "No"}
+
+
+
+
+
+ {previewSections.length} audit sections will apply
+
+
+ Based on your profile, we'll include the relevant sections
+ from the Scout Association September 2025 audit template.
+
+
+ {previewSections.map((sectionId) => (
+
+ {sectionTitleById[sectionId] ?? sectionId}
+
+ ))}
+
+
+
+ {saved ? (
+
+ Profile saved. {savedSections.length} audit sections will apply to
+ your next audit.
+
+ ) : null}
+
+ ) : null}
+
+ {error ? (
+
+ {error}
+
+ ) : null}
+
+
+ Back
+
+
+ {stepIndex === PROFILE_STEPS.length - 1 && saved ? (
+ {
+ setForm(EMPTY_PROFILE_FORM);
+ setStepIndex(0);
+ setSaved(false);
+ setSavedSections([]);
+ }}
+ >
+ Start again
+
+ ) : null}
+
+ {isSaving
+ ? "Saving…"
+ : stepIndex === PROFILE_STEPS.length - 1
+ ? saved
+ ? "Saved"
+ : "Save profile"
+ : "Continue"}
+
+
+