'use client'; import { useState, useEffect } from 'react'; import type { Hotel } from '@/lib/hotel-utils'; import { getHotelImageUrl } from '@/lib/hotel-utils'; import PriceDisplay from '@/components/ui/PriceDisplay'; interface HotelDetailsProps { product: Hotel; onAddToCart: () => void; addedToCart: boolean; } const PriceTotalDisplay = ({ productId, nights }: { productId: string; nights: number }) => { const [price, setPrice] = useState(null); useEffect(() => { const fetchPrice = async () => { try { const sessionRes = await fetch('/api/session'); const sessionData = await sessionRes.json(); const params = new URLSearchParams({ productId, sessionId: sessionData.sessionId || '', experimentId: sessionData.experimentId || '', }); const res = await fetch(`/api/pricing?${params.toString()}`); const data = await res.json(); setPrice(data.price); } catch (err) { console.error('failed to fetch price for total:', err); } }; fetchPrice(); }, [productId]); if (!price) return Loading...; return ( ${(price * nights).toFixed(2)} ); }; export default function HotelDetails({ product, onAddToCart, addedToCart }: HotelDetailsProps) { return (
{product.name} { e.currentTarget.style.display = 'none'; if (e.currentTarget.nextElementSibling) { (e.currentTarget.nextElementSibling as HTMLElement).style.display = 'flex'; } }} />
Hotel Image

{product.name}

Check-in

{product.checkIn}

Check-out

{product.checkOut}

Amenities

{product.amenities.map(a => ( {a.replaceAll('_', ' ')} ))}

Price per night

); }