| Next (pinned, every answer screen); Save at the end of Part 1, Done on the last Part 2 question | Extend | Button primary, the proposed large size (DESIGN §6) at 60 tall in this flow | primary, primaryText, ui.radius.button (pill); new layout.largeButton 60 | Disabled = border fill + textMuted label, like Button; semibold label |
| Pick another, Use 3.2 kg | Reuse | Button secondary | surface, borderStrong, primary | 1 px borderStrong outline and primary label (was a 2 px ink outline) |
| Tell sitters more about Max + About 3 min · 14 quick questions | Extend | Button secondary + new hint prop (second line) | fontSize.small, textMuted for the hint | Same outline as secondary |
| Skip, I'm not sure · Finish later · I know the exact weight · Something else · Fix the words · Remove photo · Change · Add · Not now | Reuse | TextButton | primary, fontWeight.semibold | No underline now, 44+ tall |
| Back | Reuse | BackLink | primary | Was an icon-only chevron |
| Top bar with progress | Extend | Top bar, Onboarding variant (DESIGN §6.1: Back + step dots): a progress bar with its label instead of the dots, and an optional right TextButton (Finish later) | track, primary | Fill is primary (was gold, which is under 3:1 on track) |
| Progress bars (top bar, Home reminder) | Reuse | Figma Progress Bar (not in code yet; add to ui/) | track, primary | |
| Question and helper line | Extend | ScreenHeader + size="large": title 28 (already fontSize.title + 4) in fontWeight.bold, subtitle 18, optional Tag above | fontFamily.display, fontWeight.bold; new fontSize.subtitle 18 | Title weight 700 needs Fredoka 700 loaded next to the skin's 600 |
| Answer rows: the questions, breed, age, weight (with hint line and a trailing Tag) | Extend | CheckRow + variant="card" + size="large" (radio) | borderStrong, primary, accent, radius.lg; new layout.largeRow 64, fontSize.large 20 | 1 px borderStrong; checked = 2 px primary + accent (was 2 px and 3 px) |
| Fact rows on the voice review (checkbox, answer, From “quote”) | Reuse | CheckRow card large (the same extension, checkbox) | as above | Same look as the answer rows |
| Dog or Cat | Reuse | RoleCard (Figma Choice Card), description optional | accent, primary, radius.lg | Icon on a round accent tile |
| Foods to avoid (pick several) | Extend | ChoiceChips + size="large" (64 tall, 20 px) | borderStrong, primary, ui.radius.chip; layout.largeRow, fontSize.large | 1 px outline; on = primary fill |
| Suggested (on rows) and the Suggested dot (on chips) | Extend | Tag tone brand + new icon prop; icon-only form for the dot (with an accessibility label) | accent, primary, ui.radius.tag | Was butter and gold; now brand, like other AI and source labels |
| For your sitter's safety | Extend | Tag tone neutral + icon (the same extension) | track, textMuted | Was butter and gold |
| We heard … · From your photo … · photo confirmed with Change | Reuse | Banner info (+ its action: Change, Use 3.2 kg) | accent, border, primary, radius.md | Was butter with an 18 px corner |
| Photo slot | Reuse | MediaPicker (Take photo · Choose from library) + Figma Photo Tile Upload state | borderStrong dashed, radius.lg | In the app the button opens MediaPicker; the demo picks the sample |
| Looks like a Maltese. Right? | Reuse | Card + Tag brand + two Button secondary (Yes, Pick another) | surface, border, radius.lg | Card gets its 1 px border; Yes is secondary now, so Next stays the one filled button |
| You said “…” | Reuse | Card with a Caption eyebrow | surface, border | Not called Quote Card: that name is the price card |
| Name, exact weight (kg), typed words | Extend | TextField + size="large" + unit suffix | borderStrong, primary, radius.md; fontSize.large | 1 px outline, focus = primary border (no glow) |
| Mic button and its states | New | VoiceRecorder | primary, primaryText, accent (halo), motion.base; 88 px is the component's own size | |
| Personality: bars, pentagon option, “Not shared yet” line | New | TraitChart | primary, track, borderStrong, textMuted, fontSize.small | Bars are primary on track; no numbers |
| Max at a glance card | Extend | PetCard + variant="glance": Avatar photo 56, name, “Dog · Maltese · Adult · 3.2 kg”, safety Tags, TraitChart, breed needs | surface, border, radius.lg | Round Avatar like PetCard (was a rounded square) |
| Safety chips on the card | Reuse | Tag warning · neutral (+ icon) · success | warningSurface, warning, track, textMuted, successSurface, success | “Owner isn't sure” is neutral (was butter); “not shared yet” is a line, not a tag |
| Breed needs | Reuse | Card tone mint | blockMint, radius.xl | |
| Request summary, booking on Home | Reuse | Card tone butter (BookingCard in the app) | blockButter | |
| Home reminder (Help Chloe get to know Max) | Extend | Banner info + secondaryAction (Not now) + optional progress; the main action shown as a 44 px Button | accent, border, primary, radius.md | Was a peach block with two big buttons |
| Pet tile on Home, Mochi's compact card | Reuse | PetCard (+ a quiet No personality yet · Add line, or Tag success Profile complete) | | |
| Your answers with Change | Extend | Figma List Row (Lines = 2) + Trailing = Text button | | |
| Max is ready to book | Reuse | EmptyState layout (icon, title, one line) with Button primary + Button secondary with hint | accent | |
| Toast, Home and New request headers | Reuse | Toast, App Bar / Top bar (title in the display face) | | |