import Link from 'next/link'; import { Section } from '@/components/Section'; import { bookingCatalog, formatPoundsFromCents, quoteStay } from '@/lib/booking'; import { featuredProperties, locationHighlights, site, testimonials, } from '@/lib/site'; const ctaPoints = [ 'Featured stays and clear summaries', 'Location-led content for quick orientation', 'A direct contact route for questions before booking', ]; const bookingFields = [ { label: 'Arrival', value: 'Choose a date' }, { label: 'Departure', value: 'Choose a date' }, { label: 'Guests', value: '2 adults' }, { label: 'Area', value: 'Coastal or rural' }, ]; const demoQuote = quoteStay(bookingCatalog[0]!, { arrivalDate: '2026-07-10', departureDate: '2026-07-14', adults: 2, children: 1, pets: 0, }); export default function HomePage() { return ( <>

Public website slice

{site.tagline}

{site.description}

Explore featured stays Contact the team

Availability checks

Published properties are filtered by search terms, guest count, pet rules, minimum stay, and any blocked or already-booked date ranges.

Pricing rules

The quote core applies seasonal pricing, weekend overrides, guest supplements, and a 30-minute hold window for the booking start step.

{featuredProperties.map((property) => (

{property.area}

{property.name}

{property.priceFrom}

{property.summary}

Sleeps
{property.sleeps}
Bedrooms
{property.bedrooms}
Bathrooms
{property.bathrooms}
    {property.tags.map((tag) => (
  • {tag}
  • ))}
))}

What the site should do

Guests should understand the style of stay, the practical details, and the next step without having to hunt through the UI.

  • Present the booking business clearly
  • Reduce uncertainty before the enquiry step
  • Keep public content editable as the site grows

How this slice is framed

The public website now has a real homepage, contact page, and editable content-page route so the next tickets can add richer booking behavior.

Read the About page
{locationHighlights.map((item) => (

{item.title}

{item.body}

))}
{testimonials.map((testimonial) => (

{testimonial.quote}

))}

Available pages

  • About
  • Local area guide
  • FAQs
  • Terms and conditions
  • Privacy policy

What comes next

The next tickets can now focus on the property listing and property detail pages while the public content layer and booking core stay reusable.

Enquire through the contact page

Contact details

{site.contact.email}

{site.contact.phone} • {site.contact.area}

Open contact page
); }