Skip to content

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.

On this page
  1. Preview
  2. What the flow needs
  3. Delivery app
  4. Components
  5. Tokens

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.

Foodie, 11 screens393 x 852 each, Light and Dark
Foodie app Home screen: a Delivery and Pickup switch with a notification button, the address Prinsengracht 512, Amsterdam, a Dishes or restaurants search field, a row of cuisine buttons from Pizza to Ramen, a blue Free delivery all week promo card with an Order now button, and Fastest near you restaurant cards with delivery times above a floating tab barFoodie app Home screen in dark mode: a Delivery and Pickup switch with a notification button, the address Prinsengracht 512, Amsterdam, a Dishes or restaurants search field, a row of cuisine buttons from Pizza to Ramen, a blue Free delivery all week promo card with an Order now button, and Fastest near you restaurant cards with delivery times above a floating tab bar
Home
Foodie app Category screen: Salad with Sort, Fastest, Top rated and Free delivery chips, the line 18 places deliver salads to you, and restaurant cards for Green Bowl with a 15 to 25 min label on the photo, a favorite heart, a 4.9 rating and 1.2 km Free deliveryFoodie app Category screen in dark mode: Salad with Sort, Fastest, Top rated and Free delivery chips, the line 18 places deliver salads to you, and restaurant cards for Green Bowl with a 15 to 25 min label on the photo, a favorite heart, a 4.9 rating and 1.2 km Free delivery
Category
Foodie app Restaurant screen: the Ramen Kitchen storefront photo with back and favorite buttons and an Open until 22:00 label, a 4.9 rating from 320 ratings, Popular, Ramen, Sushi and Drinks tabs, dish rows with a price and a blue add button on each photo, and a View cart bar with 2 items and $32.90Foodie app Restaurant screen in dark mode: the Ramen Kitchen storefront photo with back and favorite buttons and an Open until 22:00 label, a 4.9 rating from 320 ratings, Popular, Ramen, Sushi and Drinks tabs, dish rows with a price and a blue add button on each photo, and a View cart bar with 2 items and $32.90
Restaurant
Foodie app Dish screen: a sheet over a bowl of shoyu ramen with a close and a favorite button, the description and the price $12.90, a Choose a size choice between Regular and Large, Add extras switches for Extra egg and Chili oil, and an Add to cart barFoodie app Dish screen in dark mode: a sheet over a bowl of shoyu ramen with a close and a favorite button, the description and the price $12.90, a Choose a size choice between Regular and Large, Add extras switches for Extra egg and Chili oil, and an Add to cart bar
Dish
Foodie app Cart screen: Your order from Ramen Kitchen arriving 19:20 to 19:35, Shoyu ramen and Sushi set items with quantity steppers, a subtotal of $32.90 and a service fee of $1.49, Add a promo code and Add cutlery rows, and a Go to checkout bar with $34.39Foodie app Cart screen in dark mode: Your order from Ramen Kitchen arriving 19:20 to 19:35, Shoyu ramen and Sushi set items with quantity steppers, a subtotal of $32.90 and a service fee of $1.49, Add a promo code and Add cutlery rows, and a Go to checkout bar with $34.39
Cart
Foodie app Cart screen with nothing in it: a shopping bag icon, Your cart is empty, one line explaining that nothing is ordered until you confirm, and a Browse restaurants buttonFoodie app Cart screen in dark mode with nothing in it: a shopping bag icon, Your cart is empty, one line explaining that nothing is ordered until you confirm, and a Browse restaurants button
Cart empty
Foodie app Checkout screen: rows for the address Prinsengracht 512, Amsterdam, As soon as possible 19:20 to 19:35, Visa ending 4242 and Add a tip, a price breakdown that totals $34.39, and a Place order barFoodie app Checkout screen in dark mode: rows for the address Prinsengracht 512, Amsterdam, As soon as possible 19:20 to 19:35, Visa ending 4242 and Add a tip, a price breakdown that totals $34.39, and a Place order bar
Checkout
Foodie app Tracking screen: Order AP 4192 with a map and a route, Arriving in 12 minutes, a four step timeline that stops at Idris picked up your order, courier Idris with chat and call buttons, and the order lines Shoyu ramen and Sushi setFoodie app Tracking screen in dark mode: Order AP 4192 with a map and a route, Arriving in 12 minutes, a four step timeline that stops at Idris picked up your order, courier Idris with chat and call buttons, and the order lines Shoyu ramen and Sushi set
Tracking
Foodie app Orders screen: an In progress card for Ramen Kitchen with an On the way label, Arriving at 19:20, a four step progress line on step 3, a Track order button, and Past orders for Green Bowl, Forno Vecchio and Poke House above a floating tab barFoodie app Orders screen in dark mode: an In progress card for Ramen Kitchen with an On the way label, Arriving at 19:20, a four step progress line on step 3, a Track order button, and Past orders for Green Bowl, Forno Vecchio and Poke House above a floating tab bar
Orders
Foodie app Favorites screen: 6 places saved as rows with a restaurant photo, name, rating, delivery time and a red heart buttonFoodie app Favorites screen in dark mode: 6 places saved as rows with a restaurant photo, name, rating, delivery time and a red heart button
Favorites
Foodie app Account screen: Matteo Ribeiro with his photo, rows for Favorites, Addresses, Payment methods, Notifications and Help, and a Log out button above a floating tab barFoodie app Account screen in dark mode: Matteo Ribeiro with his photo, rows for Favorites, Addresses, Payment methods, Notifications and Help, and a Log out button above a floating tab bar
Account
Screens, screen, what it shows, built from
ScreenWhat it showsBuilt from
HomeA Delivery and Pickup switch, the address, a search field, cuisines, a promo card and nearby restaurantsSegmented Control, Search, Quick Action Button, Section Header, Vertical Card, Horizontal Card, Navigation
CategoryRestaurants for one cuisine with the delivery time on each photoTop Bar, Chip, Vertical Card, Badge / Overlay, Navigation
RestaurantA storefront photo, rating, menu tabs and dish rows with an add buttonButton / Overlay, Badge / Overlay, Rating / Score, Tabs, Button
DishOne dish with a size choice, extras and an Add to cart barList, Radio, Toggle, Button / Overlay, Button
CartItems with steppers, a price breakdown and a Go to checkout barTop Bar, Stepper, Price Row, List, Button
Cart emptyThe state of a cart with nothing in itTop Bar, Empty State
CheckoutAddress, time, payment, tip and the totalTop Bar, List, Price Row, Button
TrackingA map, the arrival time, a delivery timeline and the courierTop Bar, Avatar, Button, Lucide icons
OrdersThe order in progress with its steps, and past ordersSection Header, Progress Steps, Badge, Button, List, Navigation
FavoritesSaved restaurants with rating, time and a heartTop Bar, Rating / Score, Button
AccountThe account rows and a Log out buttonTop 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.

Needs, need, component, where it appears
NeedComponentWhere it appears
Switch between delivery and pickupSegmented ControlHome
Find foodSearch, Quick Action Button, ChipHome, Category
Browse restaurantsVertical Card, Horizontal Card, Badge / Overlay, Rating / ScoreHome, Category, Restaurant, Favorites
Read a menuTabs, ButtonRestaurant
Choose a size and extrasList with Radio and ToggleDish
Build a basketStepper, Price Row, ListCart
PayPrice Row, List, ButtonCheckout
Follow the deliveryProgress Steps, Avatar, ButtonOrders, Tracking
Show an empty cartEmpty StateCart empty
Move around the appNavigation, Top BarFour 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.

What it is built from, component, placed, where it appears
ComponentPlacedWhere it appears
Button21Home 2, Restaurant 5, Dish 1, Cart 1, Checkout 1, Tracking 2, Orders 2, Favorites 6, Account 1
List20Dish 5, Cart 2, Checkout 4, Orders 4, Account 5
iOS / Status bar11Every screen
Vertical Card9Home 3, Category 6
Top Bar8Every screen except Home, Restaurant and Dish
Price Row7Cart 3, Checkout 4
Rating / Score7Restaurant 1, Favorites 6
Quick Action Button6Home, the cuisines
Button / Overlay4Restaurant 2, Dish 2, the buttons on the photo
Navigation4Home, Category, Orders, Account
Chip4Category
Section Header4Home 2, Orders 2
Horizontal Card2Home
Stepper2Cart
Avatar2Tracking, Account
Segmented Control1Home
Search1Home
Tabs1Restaurant
Badge / Overlay1Restaurant, the opening hours
Badge1Orders, On the way
Progress Steps1Orders
Empty State1Cart empty
Lucide icons5Home 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.

Helper parts, part, nested, inside
PartNestedInside
Navigation labels16Navigation, four labels on each of four bars
Card images11Vertical Card and Horizontal Card, one in each of the eleven cards
Tab and segment selectors6Tabs on Restaurant, four selectors, and Segmented Control on Home, two
Nested components, component, nested, inside
ComponentNestedInside
Button14Larger components such as Top Bar and Stepper
Badge / Overlay9The delivery time on the photo of each card on Home and Category
Toggle3The three extras rows of Dish
Radio2The 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.

Tokens, token, where it lands, paints
TokenWhere it landsPaints
text/strong-950Titles, restaurant and dish names, prices117
text/sub-700Descriptions and secondary lines86
text/soft-500Captions and meta lines39
bg/white-0The screen and its cards77
fg/strong-950Primary icons53
border/soft-100Row hairlines and card outlines48
brand/basePrimary buttons, the active tab and the selected radio43
static/static-white-0Text and icons over photographs58
colors/yellow/400The rating star, a Foundations primitive18
state/error/base-500The heart on Favorites6
Text and effect styles, style, uses, screens
StyleUsesScreens
sm/default8610
base/emphasized668
xs/default293
xs/emphasized295
lg/emphasized177
sm/emphasized124
xl/emphasized109
2xl/emphasized104
base/default22
dropShadow/xs198
dropShadow/sm154
dropShadow/lg54
backdropBlur/md144
Collections, collection, modes, what it drives here
CollectionModesWhat it drives here
Color TokensLight, DarkEvery paint above, pinned on each frame
Platformios-md, ios-lg, android, ios-duo-outer, ios-duo-innerFrame width, radius, inset and the 44 pt touch target, pinned to ios-md
FoundationsDefaultThe primitive ramps every other collection points at
TypographyDefaultThe 9 text styles above
Platform BridgeBrand, SystemNot pinned on the frames, so the default mode applies
MotionDefaultNot used on these screens