Vue 3 + TypeScript + Vite + Tailwind CSS v4 multi-step lead capture form with config-driven white-labeling, externalized content (content.json), and "starting at" pricing estimates. Mobile-first with camera photo upload. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
109 lines
3.5 KiB
JSON
109 lines
3.5 KiB
JSON
{
|
|
"app": {
|
|
"titleSuffix": "Service Request"
|
|
},
|
|
"steps": {
|
|
"equipment": "Equipment",
|
|
"photos": "Photos",
|
|
"schedule": "Schedule",
|
|
"contact": "Contact",
|
|
"review": "Review"
|
|
},
|
|
"navigation": {
|
|
"back": "Back",
|
|
"continue": "Continue",
|
|
"submit": "Submit Request"
|
|
},
|
|
"equipment": {
|
|
"title": "Equipment Details",
|
|
"subtitle": "Tell us about the equipment that needs service.",
|
|
"equipmentTypeLabel": "Equipment Type",
|
|
"equipmentTypePlaceholder": "Select equipment type...",
|
|
"makeLabel": "Make / Brand",
|
|
"makePlaceholder": "e.g., Honda, Toro, Husqvarna",
|
|
"modelLabel": "Model",
|
|
"modelPlaceholder": "e.g., HRX217, Recycler 22",
|
|
"serviceLabel": "Service Needed",
|
|
"servicePlaceholder": "Select a service...",
|
|
"problemLabel": "Describe the Problem",
|
|
"problemOptional": "(optional)",
|
|
"problemPlaceholder": "What's going on with your equipment? Any symptoms, noises, or issues?"
|
|
},
|
|
"photos": {
|
|
"title": "Photos",
|
|
"subtitle": "Add photos of your equipment to help us assess the job.",
|
|
"optional": "(optional)",
|
|
"uploadPrompt": "Tap to take a photo or upload",
|
|
"uploadHint": "JPG, PNG up to 10MB each",
|
|
"photoAlt": "Photo"
|
|
},
|
|
"schedule": {
|
|
"title": "Schedule Preference",
|
|
"subtitle": "When would you like to bring in or have your equipment picked up?",
|
|
"pickupLabel": "Pickup or Drop-off?",
|
|
"optionDropoff": "I'll drop it off",
|
|
"optionPickup": "Please pick it up",
|
|
"optionEither": "Either works",
|
|
"earliestDateLabel": "Earliest Date",
|
|
"latestDateLabel": "Latest Date",
|
|
"notesLabel": "Schedule Notes",
|
|
"notesOptional": "(optional)",
|
|
"notesPlaceholder": "e.g., Mornings work best, gate code is 1234, etc."
|
|
},
|
|
"contact": {
|
|
"title": "Contact Information",
|
|
"subtitle": "How can we reach you about your service request?",
|
|
"firstNameLabel": "First Name",
|
|
"firstNamePlaceholder": "John",
|
|
"lastNameLabel": "Last Name",
|
|
"lastNamePlaceholder": "Smith",
|
|
"phoneLabel": "Phone",
|
|
"phonePlaceholder": "(555) 123-4567",
|
|
"emailLabel": "Email",
|
|
"emailPlaceholder": "john@example.com",
|
|
"addressLabel": "Street Address",
|
|
"addressPlaceholder": "123 Main St",
|
|
"cityLabel": "City",
|
|
"cityPlaceholder": "Anytown",
|
|
"stateLabel": "State",
|
|
"statePlaceholder": "OH",
|
|
"zipLabel": "ZIP",
|
|
"zipPlaceholder": "12345"
|
|
},
|
|
"pricing": {
|
|
"startingAt": "Starting at",
|
|
"quoteUponInspection": "Quote upon inspection"
|
|
},
|
|
"review": {
|
|
"title": "Review Your Request",
|
|
"subtitle": "Please confirm the details below are correct.",
|
|
"equipmentSection": "Equipment",
|
|
"typeLabel": "Type",
|
|
"makeLabel": "Make",
|
|
"modelLabel": "Model",
|
|
"serviceLabel": "Service",
|
|
"estimatedPriceLabel": "Estimated Price",
|
|
"photosSection": "Photos",
|
|
"scheduleSection": "Schedule",
|
|
"preferenceLabel": "Preference",
|
|
"dateRangeLabel": "Date Range",
|
|
"contactSection": "Contact",
|
|
"nameLabel": "Name",
|
|
"phoneLabel": "Phone",
|
|
"emailLabel": "Email",
|
|
"addressLabel": "Address",
|
|
"pickupLabels": {
|
|
"pickup": "Pickup requested",
|
|
"dropoff": "Drop-off",
|
|
"either": "Pickup or drop-off"
|
|
},
|
|
"emptyValue": "—"
|
|
},
|
|
"success": {
|
|
"title": "Request Submitted!",
|
|
"message": "Thank you! We've received your service request and will be in touch soon to confirm your appointment.",
|
|
"callPrompt": "Questions? Call us at",
|
|
"submitAnother": "Submit Another Request"
|
|
}
|
|
}
|