Updated
Foodie
Eleven screens for one food delivery app, from a Home with Delivery and Pickup to a courier you can follow on a map, in light and dark. Every control is an instance of an Appetite UI component, so one token change moves every screen.
Updated
Preview
Eleven screens follow one order from the first search to a delivery on its way: Home, Category, Restaurant, Dish, Cart, Cart empty, Checkout and Tracking, then Orders, Favorites and Account. Each screen is drawn in Light and in Dark.






















| Screen | What it shows | Built from |
|---|---|---|
| Home | A Delivery and Pickup switch, the address, a search field, cuisines, a promo card and nearby restaurants | Segmented Control, Search, Quick Action Button, Section Header, Vertical Card, Horizontal Card, Navigation |
| Category | Restaurants for one cuisine with the delivery time on each photo | Top Bar, Chip, Vertical Card, Badge / Overlay, Navigation |
| Restaurant | A storefront photo, rating, menu tabs and dish rows with an add button | Button / Overlay, Badge / Overlay, Rating / Score, Tabs, Button |
| Dish | One dish with a size choice, extras and an Add to cart bar | List, Radio, Toggle, Button / Overlay, Button |
| Cart | Items with steppers, a price breakdown and a Go to checkout bar | Top Bar, Stepper, Price Row, List, Button |
| Cart empty | The state of a cart with nothing in it | Top Bar, Empty State |
| Checkout | Address, time, payment, tip and the total | Top Bar, List, Price Row, Button |
| Tracking | A map, the arrival time, a delivery timeline and the courier | Top Bar, Avatar, Button, Lucide icons |
| Orders | The order in progress with its steps, and past orders | Section Header, Progress Steps, Badge, Button, List, Navigation |
| Favorites | Saved restaurants with rating, time and a heart | Top Bar, Rating / Score, Button |
| Account | The account rows and a Log out button | Top Bar, Avatar, List, Button, Navigation |
What does a food delivery flow need from a component library?
Browsing that starts from a cuisine, a card that carries a photo and a delivery time, a menu that scrolls, a basket with quantities, and a delivery you can follow.
A delivery app needs a mode switch, a search field, cards for restaurants, tabs for a menu, steppers for quantities, rows that show a price and a way to show progress. Here they are Segmented Control, Search, Vertical Card, Tabs, Stepper, Price Row and Progress Steps, so the whole order flow draws on the library as it ships.
| Need | Component | Where it appears |
|---|---|---|
| Switch between delivery and pickup | Segmented Control | Home |
| Find food | Search, Quick Action Button, Chip | Home, Category |
| Browse restaurants | Vertical Card, Horizontal Card, Badge / Overlay, Rating / Score | Home, Category, Restaurant, Favorites |
| Read a menu | Tabs, Button | Restaurant |
| Choose a size and extras | List with Radio and Toggle | Dish |
| Build a basket | Stepper, Price Row, List | Cart |
| Pay | Price Row, List, Button | Checkout |
| Follow the delivery | Progress Steps, Avatar, Button | Orders, Tracking |
| Show an empty cart | Empty State | Cart empty |
| Move around the app | Navigation, Top Bar | Four screens carry the tab bar, eight a top bar |
The Tracking screen draws its delivery timeline by hand in the look of Progress Steps, with a check for each finished step, a ring for the current one and a gray dot for the next. The Orders screen uses the component itself for the same four steps, so the two screens show one state, horizontal on Orders and vertical on Tracking.
On iOS the minimum touch target is 44 pt. The frames pin Platform to ios-md, where platform/min-touch-target reads 44, so that is the size a tap target on these screens starts from. Android would read 48.
How do the Foodie screens read as a delivery app?
Foodie is drawn as a delivery app, and its photo controls are components.
Home opens on Delivery and Pickup, the address, cuisines and a promo card, Category shows the delivery time on each photo, Restaurant has menu tabs and add buttons, and Orders leads with the order in progress.
What are the Foodie screens built from?
Every instance on the eleven light frames, counted once, by the component it comes from. The dark row holds the same instances, so each number is per row.
305 instances sit on the frames. 118 of them are placed directly as Appetite UI components from 22 component sets, and 5 are Lucide icons. Another 182 sit inside those. Placed counts an instance that is not inside another instance, nested counts one that is, and a component is counted by its set name, so every Button variant is a Button. An icon is any instance named in lowercase.
| Component | Placed | Where it appears |
|---|---|---|
| Button | 21 | Home 2, Restaurant 5, Dish 1, Cart 1, Checkout 1, Tracking 2, Orders 2, Favorites 6, Account 1 |
| List | 20 | Dish 5, Cart 2, Checkout 4, Orders 4, Account 5 |
| iOS / Status bar | 11 | Every screen |
| Vertical Card | 9 | Home 3, Category 6 |
| Top Bar | 8 | Every screen except Home, Restaurant and Dish |
| Price Row | 7 | Cart 3, Checkout 4 |
| Rating / Score | 7 | Restaurant 1, Favorites 6 |
| Quick Action Button | 6 | Home, the cuisines |
| Button / Overlay | 4 | Restaurant 2, Dish 2, the buttons on the photo |
| Navigation | 4 | Home, Category, Orders, Account |
| Chip | 4 | Category |
| Section Header | 4 | Home 2, Orders 2 |
| Horizontal Card | 2 | Home |
| Stepper | 2 | Cart |
| Avatar | 2 | Tracking, Account |
| Segmented Control | 1 | Home |
| Search | 1 | Home |
| Tabs | 1 | Restaurant |
| Badge / Overlay | 1 | Restaurant, the opening hours |
| Badge | 1 | Orders, On the way |
| Progress Steps | 1 | Orders |
| Empty State | 1 | Cart empty |
| Lucide icons | 5 | Home 1 (chevron-down), Tracking 4 (bike, check three times) |
Of the nested instances, 121 are icons inside other components, 33 are helper parts of larger components, and 28 are Badge / Overlay, Button, Radio and Toggle instances inside cards, rows and bars.
| Part | Nested | Inside |
|---|---|---|
| Navigation labels | 16 | Navigation, four labels on each of four bars |
| Card images | 11 | Vertical Card and Horizontal Card, one in each of the eleven cards |
| Tab and segment selectors | 6 | Tabs on Restaurant, four selectors, and Segmented Control on Home, two |
| Component | Nested | Inside |
|---|---|---|
| Button | 14 | Larger components such as Top Bar and Stepper |
| Badge / Overlay | 9 | The delivery time on the photo of each card on Home and Category |
| Toggle | 3 | The three extras rows of Dish |
| Radio | 2 | The Regular and Large rows of Dish |
Not everything is an instance. 31 shapes are drawn by hand: 8 sit behind the tab bar on four screens, and 12 sit on Tracking, which draws its delivery timeline itself. The other 11 are spread across Home, Restaurant, Dish, Cart, Checkout and Orders.
Counted on October 2, 2026 with a Plugin API script over the eleven light frames of the Foodie page in the Appetite UI Figma file. Hidden layers count, and one instance is hidden. No third party asset is placed on these screens.
Which tokens do the Foodie screens use?
No solid fill or stroke on these frames is a raw color. Each one resolves through a variable, which makes the dark row a mode switch.
The eleven light frames hold 683 solid fills and strokes bound to 31 different variables, and none is unbound. Photographs and six gradients are the only paints that are not a solid color. Every frame sets its modes explicitly, Color Tokens = Light or Dark and Platform = ios-md, so a frame dropped into another file arrives in the theme it was drawn in, and a rebrand at Color Tokens moves all eleven screens.
| Token | Where it lands | Paints |
|---|---|---|
text/strong-950 | Titles, restaurant and dish names, prices | 117 |
text/sub-700 | Descriptions and secondary lines | 86 |
text/soft-500 | Captions and meta lines | 39 |
bg/white-0 | The screen and its cards | 77 |
fg/strong-950 | Primary icons | 53 |
border/soft-100 | Row hairlines and card outlines | 48 |
brand/base | Primary buttons, the active tab and the selected radio | 43 |
static/static-white-0 | Text and icons over photographs | 58 |
colors/yellow/400 | The rating star, a Foundations primitive | 18 |
state/error/base-500 | The heart on Favorites | 6 |
| Style | Uses | Screens |
|---|---|---|
sm/default | 86 | 10 |
base/emphasized | 66 | 8 |
xs/default | 29 | 3 |
xs/emphasized | 29 | 5 |
lg/emphasized | 17 | 7 |
sm/emphasized | 12 | 4 |
xl/emphasized | 10 | 9 |
2xl/emphasized | 10 | 4 |
base/default | 2 | 2 |
dropShadow/xs | 19 | 8 |
dropShadow/sm | 15 | 4 |
dropShadow/lg | 5 | 4 |
backdropBlur/md | 14 | 4 |
| Collection | Modes | What it drives here |
|---|---|---|
Color Tokens | Light, Dark | Every paint above, pinned on each frame |
Platform | ios-md, ios-lg, android, ios-duo-outer, ios-duo-inner | Frame width, radius, inset and the 44 pt touch target, pinned to ios-md |
Foundations | Default | The primitive ramps every other collection points at |
Typography | Default | The 9 text styles above |
Platform Bridge | Brand, System | Not pinned on the frames, so the default mode applies |
Motion | Default | Not used on these screens |