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

Hi-fi: S25 Profile · Me · anonymous user

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

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

Stage: hifi · Key: profile/profile · 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

  • normal: Stats from GET /v1/me (same source as home → no 12 vs 13 mismatch); weekly quests; languages row; SIWA card for anonymous users.

Flows: none named.

Reads and calls:

  • GET /v1/me
  • 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
normal zh-Hans · en me.json (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.

normal

Tokens used

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

Token Where
color.bgCanvas .device, .large, .navbar, .screen …
color.bgInverse .btn--ink, .card--ink
color.bgInverseRaised .bar, .card--ink, .icon-btn
color.bgSunken .bar, .btn, .icon-btn, .state-illo
color.bgSurface .card, .list
color.lineHairline .btn--sm, .list-row, .tabbar
color.lineInverse inline
color.reward .card--ink, .xp-badge
color.textDisabled .btn
color.textOnInverse .btn--ink, .card--ink, .icon-btn
color.textOnInverseSecondary .c-on-inverse-2
color.textOnReward .xp-badge
color.textPrimary .bar, .device, .home-indicator, .icon-btn …
color.textSecondary .c-secondary, .state-illo
color.textTertiary .c-tertiary, .chev, .list-row, .tabbar
color.topicViolet .topic-violet
radius.button .btn
radius.card .card
radius.md .card--md, .list
radius.pill .bar, .btn--sm, .xp-badge
radius.sm .topic-tile
space.gutter .large, .navbar, .pad, .section-head
space.s3 .section-head
space.s5 .card
space.s6 .has-tabbar, .screen
space.safeBottom .has-tabbar, .screen, .tabbar
space.safeTop .device, .screen
space.section .section-head
space.sizeCtaHeight .btn, .screen
space.sizeHitMin .icon-btn
space.sizeNavbarHeight .navbar
space.sizeTabbarHeight .has-tabbar, .screen, .tabbar
typography.callout .t-callout
typography.caption1 .t-caption
typography.footnote .t-footnote
typography.headline .t-headline
typography.largeTitle .t-large-title
typography.subheadline .t-subhead
typography.title2 .t-title2
typography.title3 .t-title3

Strings

app.name, band.clear, common.date_range, common.xp_plus, complete.stat.ability, complete.stat.streak, complete.weekly.title, complete.xp.level, feedback.confidence.low, growth.title, home.level.xp, lang.en, notif.daily.title, paywall.expired.stat.ability, paywall.expired.stat.sessions, paywall.period.year, paywall.plan.annual, paywall.privacy, paywall.projection.bucket.range, paywall.projection.score, privacy.nav, profile.account.title, profile.languages, profile.privacy, profile.reminder, profile.settings, profile.settings.a11y, profile.siwa.body, profile.siwa.cta, profile.siwa.title, profile.stat.ability, profile.stat.sessions, profile.stat.streak, profile.sub.name, profile.sub.trial, profile.weekly.title, settings.nav, settings.reminders, settings.section.language, siwa.sheet.cta, tab.growth, tab.home, tab.library, tab.nav.a11y, weekly.nav

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-reading, --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-tight.