Build a Rate · 01Compose · opt-in

Add-on builder (opt-in)

The simplest compositional model. Pick a room, then opt into refundability, breakfast, parking, and payment. Total updates live so cause-and-effect is obvious.

Hotel PDPRooms & Ratesimplied context · 764 px
Build your rate · opt-in
Pick a room, then add the options you want. Total grows from the base.
Step 1 · Room type
Step 2 · Add options
Your rate
In policy
$219/ night
base $219
No options selected · base rate only
State breakdown · 4 states
State 01 / 04Empty · King picked
base only
Build your rate · opt-in
Pick a room, then add the options you want. Total grows from the base.
Step 1 · Room type
Step 2 · Add options
Your rate
In policy
$219/ night
base $219
No options selected · base rate only
State 02 / 04+ Refundable
+$15
Build your rate · opt-in
Pick a room, then add the options you want. Total grows from the base.
Step 1 · Room type
Step 2 · Add options
Your rate
In policy
$234/ night
base $219 · +$15 options
Free cancellation
State 03 / 04+ Refundable + Breakfast
+$35
Build your rate · opt-in
Pick a room, then add the options you want. Total grows from the base.
Step 1 · Room type
Step 2 · Add options
Your rate
In policy
$254/ night
base $219 · +$35 options
Free cancellationIncludes breakfast
State 04 / 04All add-ons
fully loaded
Build your rate · opt-in
Pick a room, then add the options you want. Total grows from the base.
Step 1 · Room type
Step 2 · Add options
Your rate
In policy
$258/ night
base $219 · +$39 options
Egencia Business rateFree cancellationIncludes breakfastIncludes parkingPay onlinePaid by my company
Design review · breakdown
What this is
A 3-room picker followed by a list of opt-in toggles for refundability, breakfast, parking, payment, and corporate rate. The right side shows live total, deltas, derived chips, and policy.
Why it works
Lowest cognitive load: the user starts at the cheapest valid rate and only pays for what they want. Every interaction is one toggle with a visible price delta.
Best use case
Price-sensitive bookers, repeat agents who know the exact options they need, and audiences that distrust pre-bundled premium defaults.
Tradeoffs / risks
Anchors low — users may under-select valuable options like refundability. Long option lists can feel like work; relies on good helper text for restricted combinations.
UX notes · scannability · normalization · booking confidence · provider transparency
Default bias: opt-in. Strong for transparency (every option carries its delta) but weaker for upsell. Disabled states with helpers carry the policy/availability story.
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: 11 of 14
- Section: builder
- Name: Add-on builder (opt-in)
- Tagline: Compose · opt-in
- One-line summary: Start from a base room and add options one by one. Price grows from the base as the user opts in.

# Framing
The simplest compositional model. Pick a room, then opt into refundability, breakfast, parking, and payment. Total updates live so cause-and-effect is obvious.

# What this is
A 3-room picker followed by a list of opt-in toggles for refundability, breakfast, parking, payment, and corporate rate. The right side shows live total, deltas, derived chips, and policy.

# Why it works
Lowest cognitive load: the user starts at the cheapest valid rate and only pays for what they want. Every interaction is one toggle with a visible price delta.

# Best use case
Price-sensitive bookers, repeat agents who know the exact options they need, and audiences that distrust pre-bundled premium defaults.

# Tradeoffs / risks
Anchors low — users may under-select valuable options like refundability. Long option lists can feel like work; relies on good helper text for restricted combinations.

# UX notes (scannability · normalization · booking confidence · provider transparency)
Default bias: opt-in. Strong for transparency (every option carries its delta) but weaker for upsell. Disabled states with helpers carry the policy/availability story.

# 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.