Implement config-driven session type and length steps (issue #4)
Deploy to Dev / Deploy & Smoke Test (push) Successful in 18s

- site.json: add booking section with sessionTypes, pricing, venmoUsername
- Step 2: session type cards rendered from siteConfig.booking.sessionTypes;
  "Other" option reveals a free-text field; validated before advancing
- Step 3: two large length cards with duration badge + price from config;
  falls back to $75/$150 defaults if config missing
- selectOption shows/hides "Other" field; stores sessionTypeOther in state
- populateSummary uses config labels and shows price in length summary row
- submitBooking sends "other: <description>" for custom session types

Closes #4

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-07-07 23:00:39 -06:00
parent f5a2b1ab4f
commit 07224ba1e7
2 changed files with 124 additions and 45 deletions
+14
View File
@@ -57,6 +57,20 @@
"description": "Enter your gallery code to view and download your photos",
"placeholder": "Enter your gallery code"
},
"booking": {
"venmoUsername": "LisiLouPhoto",
"sessionTypes": [
{ "id": "senior", "label": "Senior Portrait", "description": "Celebrate your milestone" },
{ "id": "couple", "label": "Couple", "description": "Engagement & couples" },
{ "id": "family", "label": "Family", "description": "Family portraits" },
{ "id": "individual", "label": "Individual", "description": "Personal portrait session" },
{ "id": "newborn", "label": "Newborn", "description": "Newborn & maternity" }
],
"pricing": {
"mini": 75,
"full": 150
}
},
"theme": {
"primaryColor": "#8B7355",
"accentColor": "#D4C5B5",