May 4, 2026

Shop Other Packages, Redone

Shop Other Packages: From Dropdown to Grid

The package picker on /bookings/{id} used to be a Choices.js multi-select where you searched for products, picked items, and they rendered as cards in a separate zone below -- a two-step flow with no way to see what was on offer without searching first.

It's now an inline card grid, categorized into shopper-friendly buckets:

  • Beverage
  • Dining
  • Internet
  • Spa
  • Photo
  • Cabanas & Beach
  • Decorations & Gifts
  • Entertainment
  • Laundry
  • Shore Excursions
  • Other

The catalog is the picker. A live search box filters across all sections. Each card shows the personalized price, savings vs shipboard, and a bell icon for one-click price-drop alerts -- click the bell, the alert is toggled, no round-trip through a separate "manage watches" surface.

Bell clicks update optimistically and revert on error.

A note on categorization: the new mapping overrides RC's own categorization, which is famously quirky. RC files the Unlimited Dining Package under "celebrations." Spa treatments are scattered across multiple endpoints. The new picker uses a name-pattern match first and only falls back to RC's category as a last resort.

Picker: Watching Strip + Collapsed Sections

Same picker, second iteration the same day.

  • Watching strip pinned at the top. One chip per active alert across the sailing, regardless of whether the underlying product has a card in the picker grid below. So Deluxe Beverage / Unlimited Dining / VOOM (the canonicals most people actually watch) finally show up as "watching" even though they're hidden from the grid -- they're either already purchased or have no personalized data on this sailing. Click a chip to unwatch.
  • Sections are collapsed by default. Headers show "(N) · K watching · from $X" so you can scan category cost and watch coverage without expanding. Sections containing a watched product auto-expand on initial render. Live search auto-expands any section with matching results.
  • Watched cards are easy to spot. Thick gold left border, warm background tint, "Watching" pill in the corner, bell goes grey→amber. The faint border on the first iteration was too easy to miss.

Bell clicks and chip clicks share state-sync helpers, so toggling either surface updates everything bound to that product (chip, card border, watching pill, bell, section count).

Instant Offers: Ship-Class Filter

The monthly Instant Offers table at /instant-offers/{month} now has a ship-class filter so you can narrow to a specific class (Quantum, Oasis, Icon, etc.) without paging through everything.