Brand and design · Hi-fi screens · Hi-fi screens

Hi-fi: S14 Plan · 14-day plan

Contract, a board per state (default, loading, empty, error, offline), tokens and strings.

Generated by botgumi-design index from ../../screens.json. Edit that file, not this page.

Stage: hifi · Key: plan/plan · Data-binding map: bindings.md

Drawn in the gallery: Plan. Each board is the committed HTML in screens/, drawn on the example data in docs/api/examples/.

Contract

  • default: Generated from the diagnostic; each day has a theme micro-skill (titles localized by the API). Advisory — the loop never changes.

Flows: F1 First launch → diagnostic → paywall → first real session.

Reads and calls:

  • GET /v1/plan
  • GET /v1/attempts/{diagnostic attempt} (structure note)

Local state:

  • none

Boards

One row per state. A state without boards of its own says what shows it.

State Board Example data
default zh-Hans · en me.json (zh-Hans · en), onboarding-answers.json (zh-Hans · en), plan.json (zh-Hans · en), article-long.json (zh-Hans · en), article-product.json (zh-Hans · en)
loading no board of its own: From states.md (Plan): spinner (plan job may lag the diagnostic)
empty no board of its own: From states.md (Plan): —
error no board of its own: From states.md (Plan): 404 "no plan yet" → poll 3× then Retry · fatal: generic error
offline no board of its own: From states.md (Plan): cached plan

The boards

Each state as drawn (393 × 852), one board per locale. Open a board on its own for its spec panel.

default

Tokens used

By path in ../../system/tokens.source.json.

Token Where
color.accentPrimary .btn--primary
color.accentPrimaryPressed .btn--primary
color.bgCanvas .device, .dock, .navbar, .screen
color.bgInverse .card--ink, .tag--ink
color.bgInverseRaised .card--ink, inline
color.bgSunken .btn, .tag
color.bgSurface .card, .list
color.lineHairline .list-row
color.reward .card--ink, .tag--reward
color.textDisabled .btn
color.textOnAccent .btn--primary
color.textOnInverse .card--ink, .tag--ink
color.textOnInverseSecondary .c-on-inverse-2
color.textOnReward .tag--reward
color.textPrimary .device, .home-indicator, .statusbar
color.textSecondary .tag
color.textTertiary .c-tertiary, .list-row, inline
radius.button .btn
radius.card .card
radius.md .list
radius.xs .tag
space.gutter .dock, .group-label, .navbar, .pad
space.s2 .group-label
space.s5 .card
space.s6 .group-label, .screen
space.safeBottom .dock, .has-dock, .screen
space.safeTop .device, .screen
space.sizeCtaHeight .btn, .has-dock, .screen
space.sizeNavbarHeight .navbar
space.sizeTabbarHeight .screen
typography.callout .t-callout
typography.caption1 .t-caption
typography.footnote .t-footnote
typography.headline .t-headline
typography.subheadline .t-subhead
typography.title1 .t-title1
typography.title2 .t-title2

Strings

app.name, common.continue, common.today, diag.result.nav, dimension.structure, lang.en, micro.conclusion_first, micro.cut_fillers, micro.drop_repeats, micro.keep_constraints, micro.name_the_claim, micro.one_example, micro.three_points, notif.daily.title, onboarding.commitment.days.a11y, paywall.calendar.legend.retest, paywall.calendar.legend.today, paywall.calendar.retest, paywall.expired.stat.focus, paywall.eyebrow, paywall.k.a11y_value, paywall.k.value, paywall.projection.score, plan.baseline, plan.eyebrow, plan.focus_label, plan.note, plan.reason, plan.reminder, plan.retest, plan.review, plan.title, plan.week, plan.weekly_days, read.tag.daily, resume.cta

Notes for the app tracks

Motion, haptics, Dynamic Type and VoiceOver: engagement.md, tokens.md §6–7 and ios-handoff.md. Open a board with ?theme=dark&dt=1.35&binds=1 to see dark mode, the largest tested type size and every bound element.

Tracking-plan events: no tracking plan page exists yet; ADR-001 D12 names the events.

Tokens with no group in system/tokens.source.json yet (they stay in tokens.css): --dt, --elevation-1, --elevation-2, --font-family-numeric, --font-family-text, --font-weight-bold, --font-weight-heavy, --font-weight-medium, --font-weight-regular, --font-weight-semibold, --motion-duration-fast, --motion-duration-instant, --motion-ease-standard, --type-tracking-caps, --type-tracking-tight.