The PetFolio Redesign/ folder contains a complete React-based design mockup with 7 screens. The Flutter codebase already has the design system tokens (colors, typography, wave headers, PetAvatar, pill buttons, PfCard) fully aligned. The implementation focuses on applying the redesign language to key screens that haven't been fully updated yet.
AppColors— exact same palette as design file (tangerine, poppy, mint, sunny, lilac, sky)AppTheme— Nunito + Fraunces fonts, correct dark-mode surfacesPetAvatarwith rainbow ring (conic gradient), species discPrimaryPillButtonwith 3D shadow effect (translateY on press)WaveHeader+PfSectionTitle+PfCard— match design exactly_FloatingNav— floating pill nav with colored tabs, already correct
Reusable coloured stat tile (used on Home and future screens):
- Icon + big number + small label
- Soft background color, no border, mild inner highlight shadow
- Matches
StatTilefromhome.jsx
- Add
PfGreetingWaveHeadervariant: a colored wave header that accepts an eyebrow string, a display headline (Fraunces), and an inline floating card widget that peeks out the bottom of the wave area. This matches the home screen hero pattern fromhome.jsx.
- Export new
PfStatTileandPfGreetingWaveHeader
Replace the current AppHeader + flat layout with the full redesign:
- Wave hero header — species-color background, "Good morning, [user]" eyebrow in white, Fraunces display headline "[PetName] is feeling cuddly today", pet switcher button (glassmorphic pill) top-left, bell + settings icons top-right.
- Floating pet card — white card peeking out of wave: PetAvatar (ring=true), name/breed/age, streak flame chip. Overlaps the wave bottom.
- Quick stats trio — 3-column grid: Day streak (sunny-soft), XP earned (lilac-soft), Care logs (mint-soft). Each is a
PfStatTile. - Today's quests preview —
PfSectionTitle+PfCardcontaining 3DailyQuestRowitems (linked to real care tasks fromcareDashboardProvider). "See all →" navigates to/care. - Recent moments — 3-up photo grid (
PlaceholderImg-style containers, or real photos if available). - Recent achievements — horizontal scroll of badge tiles (from
petAwardsProvider).
The current tab-bar layout (Overview / Health / Care / Awards) is preserved but moved below a condensed version of the hero.
The care screen already exists but the header section needs a significant visual upgrade:
- Streak hero — 110×110 radial gradient circle with bouncing animation, big fire emoji + streak number + "DAY STREAK" label. Pulse ring animation around it.
- XP / Level bar — Level number + "Caretaker" label, XP progress bar with multi-color gradient (sunny→tangerine→poppy), "N XP to Lv 8" subtitle.
- Task rows — Replace existing task cards with
PfTaskRow: colored icon box, label with WEEKLY chip, time + due indicator, "+N XP" chip, circle check button. On check: XP burst float-up animation. - Weekly chart — Colored bar chart (7 bars, one per day, today highlighted with paw emoji above it). Already in a
PfCard. - Trophy room — 4-column grid of
BadgeTiles (locked ones greyed +filter: grayscale).
The onboarding screen already exists (73KB). Align it more closely with the design:
- Step 0 (Hello): Conic gradient paw-print logo circle, Fraunces "Hi! I'm PetFolio." headline, warm body copy, "Start the tail-wag" pill button, ghost "I already have an account" link.
- Species step: 3×2 grid of species cards. Selected card shows species color bg + white text + scale-up + color shadow.
- Name step: Large styled text input, quick-name chips (Mochi, Biscuit, etc.).
- Age step: Bone-slider (already in design, needs a custom Flutter slider with bone-shaped thumb).
- Personality step: Wrap chip grid. Selected = species color.
- Progress dots: Pill-style progress indicators.
- Floating paw decorations: Animated paw icons in background.
Already 50KB with a solid implementation. Align with design:
- Header: "Pawsfeed" Fraunces title, pack member count, search + send icon buttons.
- Story bar: Horizontal scroll with
PetAvatar(ring=true)per pet. "Your story" add button with dashed orange ring. - Post cards: Match
PostCardfrom design — avatar + name + location·time in header, full-width photo placeholder, text, reaction stack visualizer (paw/heart/bone circles), action row (React / Comment / Share / Save) with long-press reaction picker.
Align swipe card visuals with the design:
- Swipe cards — Gradient card background using species colors, large emoji in center, name/age/breed overlay with gradient, trait chips (glassmorphic pills), distance badge (top-right).
- Like/Nope stamps — WOOF YES / NEXT overlays on drag direction.
- Action buttons — 5 round action buttons (×, ⭐, 🐾 primary, 🦴, ↺) with 3D shadow effect.
- Mutual match overlay — Radial gradient bg, confetti, two avatars + paw connector, "Pawfect Match!" headline, "Send a tail wag 🐾" button.
pf_stat_tile.dart— new shared widget (no deps)wave_header.dart— addPfGreetingWaveHeaderwidgets.dart— export updatespet_profile_screen.dart— redesign Home screen header + stat tiles + quest preview + badgescare_screen.dart— redesign header (streak hero + XP bar)onboarding_screen.dart— refine species grid + bone slider + personality chipssocial_screen.dart— refine post cards + story bar + reaction pickermatching_screen.dart— refine swipe cards + action buttons
flutter analyze— no new errors- Visual inspection of each modified screen in the running app
- Confirm dark mode still works across all updated screens
- Confirm existing providers (
careDashboardProvider,petListProvider,careStreakRealtimeProvider) are still wired correctly
Important
The design URL (https://api.anthropic.com/v1/design/h/pAKpm5a-SwYHglqZ2fz7ew) returned 404. Implementation is based on the local PetFolio Redesign/ folder which contains the complete design mockup.
Note
The onboarding bone-slider requires a custom Flutter SliderTheme to render a bone-shaped thumb. A simpler pill-shaped thumb with bone icon can be used as a Flutter-idiomatic approximation.
Note
Reaction burst animations (floating paw/heart/treat/star emojis) will use Flutter's AnimationController + SlideTransition + FadeTransition. This is a best-effort approximation of the CSS pf-float-up keyframe.