Self-Care Pet: a SwiftPieces remix in SwiftUI, inspired by Finch
A self-care pet in seven screens across three tabs on a floating dock, in the SwiftPieces look, light or dark; actions are pills, cards 28, tiles 20, and the companion's scenes stand on pastel cards like pages of a storybook. Home opens on Biscuit, a round azure companion that fills up with the day's energy and talks to you in a bubble, over today's goals grouped by part of the day, each worth five energy and ticked off with a check. A heart opens the morning check-in: five faces, the words that fit, what's shaping your mood and a first aid row for low days; checking in confirms in place. Once the energy fills, Biscuit sets off: the adventure is a lilac scene with a ring of time until it's back, its route as glass stops and what it found on the way. Friends puts you and a goal buddy side by side, a violet check for you and a sky one for them, with encouragement that answers as a toast and good vibes to send. Progress counts goals kept in each area of self-care with their trends over a month of moods, and leads to the streak: the line rises in word by word over a glowing 30 with the week ticked and the repairs you have left. A sheet adds a goal. Built from Screen Header, Mascot, Chat Bubble, Plan Row, Elastic Button, Mood Faces, Icon Toggles, Filter Rail, Commit Button, Text Reveal, Timer Dial, Step Trail, Media Row, Fan Stack, Toast, Swipe Action Row, Live Stat, Mood Line, Glow Number, Day Picker, Stat Grid, Form Field and Glass Segments.
- Tap Biscuit, then tick off Brush teeth
- Tap the heart and check in as Good
- Peek at the route to Mossy Hollow
- On Friends, send Juno some encouragement
- Open the 30-day streak from Progress
- Press + and add a goal
- Tabs: Each tab keeps its own place, so switching back returns you where you were.
- Push: The next screen slides in from the trailing edge; back slides it away.
- Sheet: The sheet rises over the screen, rests at its detents and follows your drag to dismiss.
- Tap: A tap acts on release, so dragging off cancels it.
- Select: The selection moves between options instead of blinking.
- Swipe: It follows your finger, then commits or springs home based on distance and speed.
- Drag: It tracks 1:1 under your finger and settles with a spring when released.
- Loading: The control shows progress in place, then resolves to success or an error.
- Spring: Motion overshoots slightly and settles, the way physical things do.
- Haptic: A short tap of vibration confirms the moment something happens.