Skip to content

Coach item โ€” teaser_card

Block type: teaser_card ยท Domain: coach-content

Coach items[] discriminator 'teaser_card'. Visual teaser/promotion card with either a navigation target or a non-navigating action. Exactly one of target or action MUST be set.

Rules

  • Requires exactly one of: target / action

Fields

Field Type Required Allowed values Notes
id string no minLength 1
title string yes minLength 1
subtitle string yes minLength 1
icon enum yes self_improvement, air, headphones, lightbulb_outline, nightlight_round, psychology, insights_outlined Icon name resolved via _kTeaserIcons map in lib/data/coach_json.dart. Unknown icon strings render with help_outline at runtime; the schema enumerates the closed authored set so editors can pick from a known list.
target string no Route to navigate to when the card is tapped. Route-existence is enforced by the hook's ALLOWED_NAVIGATE_ROUTES check; this schema only pins the shape (free-text route). Exactly one of target or action MUST be set. โ€” minLength 1
action string no Action keyword. Closed set: 'complete', 'noop', 'check-in:open', or 'navigate:'. Route-existence for navigate:* is enforced by the hook's ALLOWED_NAVIGATE_ROUTES check. Exactly one of target or action MUST be set. โ€” minLength 1

Example

{
  "type": "teaser_card",
  "title": "Try a calming sound",
  "subtitle": "A 3-minute rain loop",
  "icon": "headphones",
  "action": "navigate:/sounds/rain"
}