Package Tracker: a SwiftPieces remix in SwiftUI, inspired by Parcel
A package tracker in six screens, in the SwiftPieces look, light or dark; actions are pills, cards and maps 20, chips 8, and a cardboard orange marks tracking numbers, carriers and switches. Deliveries opens on a two-weight header with glass buttons to settings and +: each package is one row led by its days to go, 0 on the day, then its name, where it left and where it's going, when it lands and the latest status on a quiet line; tabs swap the packages on the way for the delivered ones, which swipe to archive or flag. A delivery pushes in under its own name: the tracking number in orange monospace with its carrier, the days to go and dates as cards, an inset map of its legs with the package on the last one, a status chain, then the history newest first, each event in bold over its place in quiet capitals. The map is a sheet of the whole route with the latest event and a week strip to step through earlier days. Adding is a short sheet: the number pasted from the clipboard, the carrier detected from its shape as option cards, a description, then Add confirms in place. Widgets reuse the same rows small; settings hold the plan, notification switches with quiet hours on a range slider, accounts and appearance. Built from Screen Header, Search Field, Tracking Tabs, Route Row, Swipe Action Row, Elastic Button, Tag, Menu, Stat Grid, Route Map, Status Timeline, Glass Bar, Day Picker, Form Field, Picker, Option Card, Switch, Commit Button, Mini Map, Range Slider, Permission Sheet and Glass Segments.
- Swipe to Delivered, then swipe a package to archive it
- Open the jacket and drag the map along its last leg
- Open the full map and tap the 26th
- Press + and pick the carrier it detected
- Press Add delivery
- Drag the quiet hours on the settings sheet
- 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.
- 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.
- Select: The selection moves between options instead of blinking.
- Type: The field focuses, shows its keyboard type and reacts as you type.
- Toggle: The state changes at once and the control animates to match.
- Menu: Options bloom from the control and dismiss when you choose or tap away.
- Loading: The control shows progress in place, then resolves to success or an error.
- Haptic: A short tap of vibration confirms the moment something happens.