Brand and design · Hi-fi screens · Hi-fi screens
Hi-fi: S26 Profile · This week's quests
Contract, a board per state (default, loading, empty, error, offline), tokens and strings.
Generated by
botgumi-design indexfrom../../screens.json. Edit that file, not this page.
Stage: hifi · Key: profile/weekly-quests · Data-binding map: bindings.md
Drawn in the gallery: Profile. Each board is the committed HTML in screens/, drawn on the example data in docs/api/examples/.
Contract
- default: Week boundaries in user tz, counting rules, XP per quest.
Flows: none named.
Reads and calls:
GET /v1/weekly-quests
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 | weekly-quests.json (zh-Hans · en) |
| loading | no board of its own: From states.md (Profile): skeleton stats | |
| empty | no board of its own: From states.md (Profile): weekly quests none → section hidden | |
| error | no board of its own: From states.md (Profile): inline Retry · fatal: generic error | |
| offline | no board of its own: From states.md (Profile): cached /me |
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.bgCanvas |
.device, .navbar, .screen |
color.bgInverseRaised |
.bar, .icon-btn |
color.bgSunken |
.bar, .icon-btn |
color.bgSurface |
.card |
color.reward |
.xp-badge |
color.statusInfoSoft |
.banner--info |
color.textOnInverse |
.icon-btn |
color.textOnReward |
.xp-badge |
color.textPrimary |
.banner--info, .bar, .device, .home-indicator … |
color.textSecondary |
.c-secondary |
color.textTertiary |
.c-tertiary |
radius.card |
.card |
radius.md |
.card--md |
radius.pill |
.bar, .xp-badge |
radius.sm |
.banner |
space.gutter |
.navbar, .pad |
space.s5 |
.card |
space.s6 |
.screen |
space.safeBottom |
.screen |
space.safeTop |
.device, .screen |
space.sizeCtaHeight |
.screen |
space.sizeHitMin |
.icon-btn |
space.sizeNavbarHeight |
.navbar |
space.sizeTabbarHeight |
.screen |
typography.footnote |
.t-footnote |
typography.headline |
.t-headline |
typography.subheadline |
.t-subhead |
Strings
app.name, common.back, common.date_range, common.xp_plus, complete.weekly.title, feedback.confidence.low, home.level.xp, notif.daily.title, paywall.projection.bucket.range, paywall.projection.score, profile.weekly.title, record.indicator.recording, weekly.nav, weekly.note, weekly.range, weekly.reset, weekly.rule.compress_3, weekly.rule.follow_advice_3, weekly.rule.retell_5
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, --font-family-numeric, --font-family-text, --font-weight-regular, --font-weight-semibold.