Patterns
Stop-sheet alerts and step-free status
Service alerts and step-free status on the stop sheet.
Train service alerts and step-free status in a train station’s stop sheet, extending the Alert component.
Stop sheet only.Train service alerts and station accessibility appear only in a train station’s stop sheet. Home has no advisory banner, and stop cards, route lists, map markers, bus stop sheets, and other surfaces remain unchanged.
Alert affordance and detail
| Area | Behavior |
|---|---|
| Glyph | The filled warning triangle leads the metadata row under the station title. It uses the orange Alert token and sits in a minimum 44 × 44pt button target, before the accessibility button. |
| Shown | Show one glyph when at least one live train alert applies to the station through CTA’s systemwide, route, or station scope. Active and planned alerts both qualify. |
| Hidden | Show no glyph when no alert applies or alert data is absent, and never show it on bus stop sheets or outside the stop sheet. Do not reserve empty space. |
| Accessibility | The button label is count-aware: “1 train service alert” or “n train service alerts.” The triangle itself is decorative inside the labelled button. |
| Action | Tapping the glyph opens the current native system alert titled Train service alerts. Each item reads “<kind> train alert: <headline>” followed by its description, with blank lines between items. Kind is currently Active or Planned, with the generic Train alert fallback for unknown status. |
| Dismissal | The system alert has one Close button. Native alert focus, dismissal, and Dynamic Type behavior apply. |
Accessibility button
| Area | Behavior |
|---|---|
| Presentation | The figure.roll symbol in a 44 × 44pt button in the metadata row, after the alert glyph. Good when CTA reports step-free access, Warn when it reports none, Muted when status is unknown or not yet loaded. Label Accessibility information. |
| Action | Opens a centered system alert titled Accessibility. The message is one sentence: “Step-free access is available at <station>.”, “CTA currently reports no step-free access at <station>.” or “Accessibility information is currently unavailable for <station>.” One Close button; native alert focus, dismissal and Dynamic Type apply. |
| Scope | Train station sheets only. Bus stop sheets show no button. |
Data and lifetime
| Data | Source and storage |
|---|---|
| Train alerts | Live GET /api/v1/alerts?route_type=train data, matched against CTA systemwide, route, and station scopes. |
| Step-free status | The live CTA station accessibility field supplied with stop data and aggregated for the selected station. |
| Persistence | Neither source is persisted. Keep both in memory only; do not add a SwiftData field, schema migration, or offline claim. A later refresh replaces live station metadata, while an alert refresh failure may retain the last good alert set for the session. |