Skip to content

Booking

Eleven screens for one stays app, from a capsule search and a price map to dates, guests, payment and a trip list, 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. One trip
  4. Components
  5. Tokens

Preview

Eleven screens follow one stay from search to a confirmed trip: Explore, Results, Filters, Listing, Dates, Guests, Review and pay and Confirmed, then Trips, Trips empty and Profile. Each screen is drawn in Light and in Dark.

Booking, 11 screens393 x 852 each, Light and Dark
Booking app Explore screen: a Start your search capsule with a filter button, Stays and Experiences tabs, Popular in Lapland and Weekends by the sea rows of cabin cards with a favorite heart, rating and price per night, and a floating tab barBooking app Explore screen in dark mode: a Start your search capsule with a filter button, Stays and Experiences tabs, Popular in Lapland and Weekends by the sea rows of cabin cards with a favorite heart, rating and price per night, and a floating tab bar
Explore
Booking app Results screen: Ruka, Finland with 12 to 17 Feb and 3 guests above Filters, Price, Cabin and Sauna chips, a map with six price pins from $120 to $240 and the $180 pin selected, and a sheet that opens on 24 cabins and a Lakeside cabin cardBooking app Results screen in dark mode: Ruka, Finland with 12 to 17 Feb and 3 guests above Filters, Price, Cabin and Sauna chips, a map with six price pins from $120 to $240 and the $180 pin selected, and a sheet that opens on 24 cabins and a Lakeside cabin card
Results
Booking app Filters screen: a Price range slider from $60 to $320 under a price histogram, Any type, Room and Whole place chips, a Bedrooms stepper set to 2, Amenities rows with switches, and Clear all and Show 24 stays buttonsBooking app Filters screen in dark mode: a Price range slider from $60 to $320 under a price histogram, Any type, Room and Whole place chips, a Bedrooms stepper set to 2, Amenities rows with switches, and Clear all and Show 24 stays buttons
Filters
Booking app Listing screen: a full-bleed cabin photo with back and favorite buttons and a 1 of 24 count, Lakeside cabin in Ruka rated 4.92 from 128 reviews with a Superhost badge, host Maren, a map, amenities, and a bar with $180 night and a Reserve buttonBooking app Listing screen in dark mode: a full-bleed cabin photo with back and favorite buttons and a 1 of 24 count, Lakeside cabin in Ruka rated 4.92 from 128 reviews with a Superhost badge, host Maren, a map, amenities, and a bar with $180 night and a Reserve button
Listing
Booking app Dates screen: a Dates and Flexible switch, a February 2026 calendar with 12 to 17 selected as one range, Flexible dates chips from Exact dates to plus or minus 7 days, and a Save button beside 12 to 17 February, 5 nightsBooking app Dates screen in dark mode: a Dates and Flexible switch, a February 2026 calendar with 12 to 17 selected as one range, Flexible dates chips from Exact dates to plus or minus 7 days, and a Save button beside 12 to 17 February, 5 nights
Dates
Booking app Guests screen: steppers for Adults 2, Children 1, Infants 0 and Pets 0, a note that the place fits up to 4 guests, and a Continue button beside 3 guests, 1 childBooking app Guests screen in dark mode: steppers for Adults 2, Children 1, Infants 0 and Pets 0, a note that the place fits up to 4 guests, and a Continue button beside 3 guests, 1 child
Guests
Booking app Review and pay screen: the Lakeside cabin stay for 12 to 17 February, a price breakdown of $900, $45 and $68 that totals $1,013, a Visa ending 4242 row, the cancellation policy, and a Confirm and pay buttonBooking app Review and pay screen in dark mode: the Lakeside cabin stay for 12 to 17 February, a price breakdown of $900, $45 and $68 that totals $1,013, a Visa ending 4242 row, the cancellation policy, and a Confirm and pay button
Review and pay
Booking app Confirmed screen: a green check, Booking confirmed with a reference number, a trip summary card, three next-step rows and View trip and Message Maren buttonsBooking app Confirmed screen in dark mode: a green check, Booking confirmed with a reference number, a trip summary card, three next-step rows and View trip and Message Maren buttons
Confirmed
Booking app Trips screen: an Upcoming card for Lakeside cabin with an In 3 weeks label, and Later this year rows for Harbor loft with a Pay balance label and Coastal house with a Confirmed label, above a floating tab barBooking app Trips screen in dark mode: an Upcoming card for Lakeside cabin with an In 3 weeks label, and Later this year rows for Harbor loft with a Pay balance label and Coastal house with a Confirmed label, above a floating tab bar
Trips
Booking app Trips screen with no bookings: a suitcase icon, No trips booked yet, one line of guidance and a Start searching button above a floating tab barBooking app Trips screen in dark mode with no bookings: a suitcase icon, No trips booked yet, one line of guidance and a Start searching button above a floating tab bar
Trips empty
Booking app Profile screen: Leila Okonkwo with her photo, four rows for Personal information, Payments and payouts, Notifications and Login and security, and a Log out button above a floating tab barBooking app Profile screen in dark mode: Leila Okonkwo with her photo, four rows for Personal information, Payments and payouts, Notifications and Login and security, and a Log out button above a floating tab bar
Profile
Screens, screen, what it shows, built from
ScreenWhat it showsBuilt from
ExploreA capsule search, Stays and Experiences tabs and two rows of stay cardsSearch, Tabs, Section Header, Vertical Card, Navigation
ResultsA map with price pins and a sheet of resultsTop Bar, Chip, Vertical Card, Navigation
FiltersPrice range, place type, bedrooms and amenitiesTop Bar, Range Slider, Chip, Stepper, List, Button
ListingOne stay: photo, rating, host, map, amenities and a Reserve barBadge, Badge / Overlay, Button / Overlay, Rating / Score, Avatar, Button
DatesA range on a calendar and flexible date chipsTop Bar, Segmented Control, Date Picker, Chip, Button
GuestsFour counters and a capacity noteTop Bar, Stepper, Button
Review and payThe stay, a price breakdown, the card and the cancellation termsTop Bar, Price Row, List, Button
ConfirmedA confirmation, a reference and the next three stepsButton, Lucide icons
TripsAn upcoming trip as a large card and later trips as rowsTop Bar, Section Header, Vertical Card, Horizontal Card, Navigation
Trips emptyThe state of a traveler with no bookingsTop Bar, Empty State, Navigation
ProfileThe account rows and a Log out buttonTop Bar, Avatar, List, Button, Navigation

What does a stays booking flow need from a component library?

A search that sits above a feed, cards that carry a photo and a price, controls for narrowing, picking dates and counting guests, and a short path to pay.

A stays app needs a search field, a card for one stay, chips to narrow the list, a calendar that selects a range, counters for guests and a row that shows a price. Here the search is Search, the card is Vertical Card, the calendar is Date Picker and the counters are Stepper, so a stays flow draws on the library as it ships. The price pins on the Results map are Chip instances, one per pin.

Needs, need, component, where it appears
NeedComponentWhere it appears
Start a searchSearch, TabsExplore
Browse staysVertical Card, Horizontal Card, Section HeaderExplore, Results, Trips
Mark a place on a mapChipResults, six price pins
Narrow the resultsChip, Range Slider, Stepper, ListFilters
Pick a range of datesDate Picker, Segmented Control, ChipDates
Count guestsStepperGuests, and bedrooms on Filters
Show a price and a totalPrice Row, ListReview and pay
Pay and confirmButtonListing, Review and pay, Confirmed
Hold a trip list and its empty stateHorizontal Card, Empty StateTrips, Trips empty
Move around the appNavigation, Top BarFive screens carry the tab bar, eight a top bar

The tab bar floats over the content on its five screens, and a short fade behind it keeps scrolled content from showing next to the bar. Dates is the screen to open for the calendar: its range is the Range Start, Range Middle and Range End states of the Date Picker day cell (see Picker).

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 Booking screens follow one stay?

Booking is drawn as a stays app, and its screens share one trip.

Explore opens on a capsule search with Stays and Experiences tabs and rows of cards, Results is a map with price pins and a sheet, and Trips leads with one large card for the next stay. The whole flow reads 12 to 17 February for 3 guests, from the Results header to the Review and pay total, so the screens agree with each other.

What are the Booking 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.

287 instances sit on the frames. 95 of them are placed directly as Appetite UI components from 22 component sets, and 7 are Lucide icons. Another 185 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
Chip17Results 10 (four filters, six price pins), Filters 3, Dates 4
iOS / Status bar11Every screen
Button9Listing 1, Filters 2, Dates 1, Guests 1, Review and pay 1, Confirmed 2, Profile 1
Top Bar8Every screen except Explore, Listing and Confirmed
Vertical Card8Explore 6, Results 1, Trips 1
List8Filters 3, Review and pay 1, Profile 4
Navigation5Explore, Results, Trips, Trips empty, Profile
Stepper5Guests 4, Filters 1
Section Header4Explore 2, Trips 2
Price Row4Review and pay
Horizontal Card3Trips
Avatar2Listing, Profile
Button / Overlay2Listing, the back and favorite buttons on the photo
Badge1Listing, Superhost
Badge / Overlay1Listing, the photo count
Rating / Score1Listing
Search1Explore
Tabs1Explore
Segmented Control1Dates
Date Picker1Dates
Range Slider1Filters
Empty State1Trips empty
Lucide icons7Listing 3 (wifi, waves, flame), Confirmed 4 (circle-check-big, clock, map-pin, shield-check)

Of the nested instances, 76 are icons inside other components, 78 are helper parts of larger components, and 31 are Buttons, Badges, Toggles and Compact Buttons inside bars, steppers, cards and rows.

Helper parts, part, nested, inside
PartNestedInside
Date Picker day cells35Date Picker on Dates, five weeks of seven
Navigation labels20Navigation, four labels on each of five bars
Card images11Vertical Card and Horizontal Card, one in each of the eleven cards
Date Picker day labels7Date Picker on Dates, Monday to Sunday
Tab and segment selectors4Tabs on Explore, two, and Segmented Control on Dates, two
Date Picker month selector1Date Picker on Dates
Nested components, component, nested, inside
ComponentNestedInside
Button19Larger components such as Top Bar and Stepper
Badge7Cards and rows
Toggle3The three amenity rows of Filters
Compact Button2Stepper

Not everything is an instance. 51 shapes are drawn by hand. Ten sit behind the tab bar on five screens, 27 are the bars of the price histogram behind the Range Slider on Filters, and the other 14 sit on Listing, Guests and Review and pay.

Counted on October 2, 2026 with a Plugin API script over the eleven light frames of the Booking page in the Appetite UI Figma file. Hidden layers count. No third party asset is placed on these screens.

Which tokens do the Booking 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 679 solid fills and strokes bound to 37 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. The dark frames bind the same variables and differ only in the Color Tokens mode they pin, so a rebrand at Color Tokens moves all eleven screens.

Tokens, token, where it lands, paints
TokenWhere it landsPaints
text/sub-700Descriptions and secondary lines92
text/strong-950Titles, stay names and prices86
bg/white-0The screen and its cards77
brand/basePrimary buttons, the active tab and the selected date63
border/soft-100Row hairlines and card outlines52
fg/strong-950Primary icons51
text/soft-500Captions and meta lines46
static/static-white-0Text and icons over photographs38
brand/alpha-10The band between the two ends of the selected date range6
colors/yellow/400The rating star, a Foundations primitive8
Text and effect styles, style, uses, screens
StyleUsesScreens
sm/default589
base/emphasized539
sm/emphasized474
xs/default295
xs/emphasized296
lg/emphasized196
xl/emphasized77
2xl/emphasized64
base/default11
dropShadow/xs228
dropShadow/sm104
dropShadow/lg65
dropShadow/md61
dropShadow/2xl22
backdropBlur/md31
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