Concept · 03Room-first decision

Featured room with expandable rates

Splits the booking decision into two steps: pick the room, then pick the rate. Best when the room itself (not the rate) is the meaningful unit of choice.

Hotel PDPRooms & Ratesimplied context · 764 px
Featured room · expandable rates
[ room visual
placeholder ]
King Room
1 King Bed · Sleeps 2 · 32 m²
from
$214
7 rate options
City viewAir conditioningWorkspaceFree Wi-Fi+4 amenities
Available rates · 3 of 7Sorted by price
Flexible · Bed & Breakfast· City view
Egencia Business rateFree cancellationIncludes breakfastIncludes wifiPay at hotel+1
$251
per night
Best Available Rate· City view
Egencia Business rateNegotiatedFree cancellationIncludes wifiPay online+1
$239
per night
Advance Purchase 21d· Standard view
Cancellation feeIncludes wifiPay online
$214
per night
State breakdown · 2 states
State 01 / 02Rate panel collapsed
Featured room · expandable rates
[ room visual
placeholder ]
King Room
1 King Bed · Sleeps 2 · 32 m²
from
$214
7 rate options
City viewAir conditioningWorkspaceFree Wi-Fi+4 amenities
Available rates · 3 of 7Sorted by price
Flexible · Bed & Breakfast· City view
Egencia Business rateFree cancellationIncludes breakfastIncludes wifiPay at hotel+1
$251
per night
Best Available Rate· City view
Egencia Business rateNegotiatedFree cancellationIncludes wifiPay online+1
$239
per night
Advance Purchase 21d· Standard view
Cancellation feeIncludes wifiPay online
$214
per night
State 02 / 02Rate panel expanded
Featured room · expandable rates
[ room visual
placeholder ]
King Room
1 King Bed · Sleeps 2 · 32 m²
from
$214
7 rate options
City viewAir conditioningWorkspaceFree Wi-Fi+4 amenities
Available rates · 3 of 7Sorted by price
Flexible · Bed & Breakfast· City view
Egencia Business rateFree cancellationIncludes breakfastIncludes wifiPay at hotel+1
$251
per night
Best Available Rate· City view
Egencia Business rateNegotiatedFree cancellationIncludes wifiPay online+1
$239
per night
Advance Purchase 21d· Standard view
Cancellation feeIncludes wifiPay online
$214
per night
Design review · breakdown
What this is
Room type is shown as a strong summary card (bed, size, amenities, from-price). A separate panel below holds the rate list with its own expand control.
Why it works
Splits the decision into two clean steps: 'is this the room I want?' then 'which rate?'. Strong for users who lead with room shopping, not rate shopping.
Best use case
Leisure-leaning bookings or higher-consideration trips where room characteristics drive the choice. Also useful when room descriptions vary meaningfully.
Tradeoffs / risks
More UI weight per room type — can feel heavy if there are many room types. The two-zone pattern can hide rate count from first glance.
UX notes · scannability · normalization · booking confidence · provider transparency
Normalization expressed implicitly via the consolidated room summary (one card per normalized type). Rate detail lives in the panel below. Booking confidence supported by the prominent Reserve CTA on the summary card.
Hand off · Claude Code prompt

Paste this into Claude Code to regenerate this concept as a standalone interactive wireframe component.

You are building one self-contained, fully interactive wireframe-style React
component that demonstrates a single hotel "Room Normalizer" concept.

# Concept
- Number: 3 of 14
- Section: normalizer
- Name: Featured room with expandable rates
- Tagline: Room-first decision
- One-line summary: Strong room summary card with bed, size and amenities; rates revealed in a separate panel below.

# Framing
Splits the booking decision into two steps: pick the room, then pick the rate. Best when the room itself (not the rate) is the meaningful unit of choice.

# What this is
Room type is shown as a strong summary card (bed, size, amenities, from-price). A separate panel below holds the rate list with its own expand control.

# Why it works
Splits the decision into two clean steps: 'is this the room I want?' then 'which rate?'. Strong for users who lead with room shopping, not rate shopping.

# Best use case
Leisure-leaning bookings or higher-consideration trips where room characteristics drive the choice. Also useful when room descriptions vary meaningfully.

# Tradeoffs / risks
More UI weight per room type — can feel heavy if there are many room types. The two-zone pattern can hide rate count from first glance.

# UX notes (scannability · normalization · booking confidence · provider transparency)
Normalization expressed implicitly via the consolidated room summary (one card per normalized type). Rate detail lives in the panel below. Booking confidence supported by the prominent Reserve CTA on the summary card.

# Visual + interaction requirements
- Wireframe fidelity: monochrome, system UI, no brand color. Use Tailwind
  utility classes only. No images. Use simple borders, muted backgrounds,
  and mono labels for meta text (uppercase, tracking-widest, text-[10px]).
- Canvas width: 764px, centered. Internal content respects that frame.
- Context: this lives inside a hotel PDP "Rooms & Rates" section. Assume
  3 normalized room types (King, Queen, Double Queen) with 5–8 bookable
  rates each. Invent realistic mock data inline — rate label, bed, meals
  (room only / breakfast included), cancellation (free until N / non-refundable),
  payment (pay now / pay at hotel), price per night.
- Fully interactive: every control the concept implies must work in-browser
  with React state only — no backend, no router. Examples: accordions expand,
  tabs filter, sort headers sort, "Show N more" reveals rows, builder toggles
  recompute price live, sticky CTAs update with selection.
- Accessibility: real <button> elements, keyboard focus rings, aria-expanded
  on disclosure controls, aria-pressed on toggles.

# Deliverable
- A single default-exported React component file using TypeScript + Tailwind.
- No external UI library. Inline any small primitives you need.
- Include the mock data inline at the top of the file.
- File should run as-is when dropped into a Vite + React + Tailwind project.

Build only this concept. Do not generate the other 13.