const { Button, IconButton, Icon, Badge, Tag, Rating, MetadataRow, PriceDisplay, PhotoFrame, Modal, TextInput, Textarea, Alert, Tabs, Breadcrumbs } = window.VE; function PackageDetailScreen({ pkg, onPlanTrip, onToast }) { const D = window.VE_DATA; const p = pkg || D.packages[0]; const [enquiry, setEnquiry] = React.useState(false); const [sent, setSent] = React.useState(false); const photos = [p.photo, 'coast', 'food', 'market', 'horizon']; const hotels = [ { name: 'The Quiet House', place: 'Seminyak · 2 nights', photo: 'cafe', note: 'Garden rooms, breakfast until eleven.' }, { name: 'Valley Lodge', place: 'Ubud · 2 nights', photo: 'cliffs', note: 'Open-sided rooms above the river.' }, { name: 'Sandbar Villas', place: 'Nusa Dua · 1 night', photo: 'ocean', note: 'A last morning on the water.' } ]; return (
{p.title}
{p.nights} nights

{p.title}

A week paced for two: two nights by the water, two in the hills, and a last morning with nothing planned. Every stay is one we have slept in.

What is included

    {p.inclusions.concat(['Daily breakfast', 'Airport pickup', 'Local specialist on call', 'All entry tickets']).map((i) => (
  • {i}
  • ))}

Flights are quoted separately so you can use miles or a preferred airline.

Day by day

    {D.itinerary.slice(0, p.days).map((day, i) => (
  1. {day.day} {day.title} {day.body}
  2. ))}

Where you stay

{hotels.map((h) => (
{h.name} {h.place} {h.note}
))}

Activities you can add

{['Sunrise trek', 'Cooking class', 'Private boat day', 'Spa afternoon', 'Photography walk', 'Diving course'].map((a) => {a})}

Enquire about this package

We will reply with dates, room options and a full quote.

{sent ? A specialist will reply from veloriaescape@gmail.com within a few hours. : null}