root = Card([header, statusCard, deliveryDate, reportProblemBtn])
header = CardHeader("Delivery Tracking", "Track your package in real time")
statusCard = Card([statusTitle, currentLocation, progressSteps], "sunk")
statusTitle = Heading("Current Status", "h3")
currentLocation = TextContent("📦 Package is at **Local Distribution Center, Springfield** — Out for delivery")
progressSteps = Steps([step1, step2, step3, step4])
step1 = StepsItem("Order placed", "May 15, 2024 • 10:30 AM")
step2 = StepsItem("Picked up", "May 16, 2024 • 8:15 AM")
step3 = StepsItem("In transit", "May 17, 2024 • 2:45 PM")
step4 = StepsItem("Out for delivery", "May 18, 2024 • 7:00 AM")
deliveryDate = Callout("info", "Estimated Delivery", "Today by 8:00 PM")
reportProblemBtn = Button("Report a Problem", null, "secondary")
reportDialog = DialogBlock("Report a Problem", "Describe the issue with your delivery", [problemForm], "default")
problemForm = Form("delivery-issue", formButtons, [issueTypeField, descriptionField, contactField])
issueTypeField = FormControl("Issue type", issueSelect)
issueSelect = Select("issue_type", [issueLate, issueDamaged, issueMissing, issueWrongAddress, issueOther], "Select an issue")
issueLate = SelectItem("late", "Package is late")
issueDamaged = SelectItem("damaged", "Package appears damaged")
issueMissing = SelectItem("missing", "Package not delivered")
issueWrongAddress = SelectItem("wrong_address", "Delivered to wrong address")
issueOther = SelectItem("other", "Other issue")
descriptionField = FormControl("Details", descriptionInput, "Please provide details about the problem")
descriptionInput = TextArea("description", "Describe what happened...", 4)
contactField = FormControl("Contact preference", contactRadio)
contactRadio = RadioGroup("contact_method", [contactEmail, contactPhone, contactApp])
contactEmail = RadioItem("Email", "We'll email you at your registered address", "email")
contactPhone = RadioItem("Phone", "Call me at my registered number", "phone")
contactApp = RadioItem("In-app", "Notify me in the app only", "app")
formButtons = Buttons([submitBtn, cancelBtn])
submitBtn = Button("Submit Report", null, "primary")
cancelBtn = Button("Cancel", null, "tertiary")