Merge version_2 into main #9

Merged
bender merged 2 commits from version_2 into main 2026-03-05 17:08:15 +00:00
2 changed files with 228 additions and 3 deletions

View File

@@ -0,0 +1,225 @@
"use client";
import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider";
import NavbarStyleApple from "@/components/navbar/NavbarStyleApple/NavbarStyleApple";
import HeroBillboardRotatedCarousel from "@/components/sections/hero/HeroBillboardRotatedCarousel";
import MediaAbout from "@/components/sections/about/MediaAbout";
import FeatureBorderGlow from "@/components/sections/feature/featureBorderGlow/FeatureBorderGlow";
import ProductCardFour from "@/components/sections/product/ProductCardFour";
import ContactSplitForm from "@/components/sections/contact/ContactSplitForm";
import FooterCard from "@/components/sections/footer/FooterCard";
import { MapPin, Wifi, Utensils, Waves, Wind, Tv, Instagram, Facebook, Phone, Home, DoorOpen, Sofa, Droplets } from "lucide-react";
import { useParams } from "next/navigation";
// Sample apartment data - in a real app, this would come from a database or API
const apartmentDatabase: Record<string, any> = {
"apt1": {
name: "Largo Sant'Antonio", price: "70 eur/noc", description: "Spacious and fully equipped apartment in the heart of Agrigento", fullDescription: "Our flagship apartment Largo Sant'Antonio offers a perfect blend of comfort and authentic Sicilian charm. Located in the historic center of Agrigento, this apartment is ideal for families and small groups. The fully equipped modern kitchen, comfortable bedrooms, and bright living areas make it the perfect home away from home.", capacity: "5 osób", features: "W pełni wyposażony", gallery: [
"https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772729829229-jo0kwpyi.jpg", "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772728322270-i8b4polo.jpg", "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772728631816-9afwb5o6.jpg", "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772727637321-4bj5mbbw.jpg", "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772727548071-bca1pdj2.jpg", "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772727586302-s4wcrms6.jpg"],
amenities: [
{ icon: Wifi, title: "High-Speed WiFi", description: "Stay connected with fast internet throughout the apartment" },
{ icon: Utensils, title: "Fully Equipped Kitchen", description: "Modern appliances and cookware for your culinary needs" },
{ icon: Waves, title: "Beach Access", description: "Walking distance to beautiful Sicilian beaches" },
{ icon: Wind, title: "Air Conditioning", description: "Stay cool during hot Mediterranean summers" },
{ icon: Tv, title: "Smart TV", description: "Entertainment system with streaming services" },
{ icon: Home, title: "Spacious Living Area", description: "Comfortable common spaces for relaxation" },
],
},
"apt2": {
name: "Porto Empedocle", price: "70 eur/noc", description: "Premium apartment with stunning sea views", fullDescription: "Porto Empedocle is our premium offering, featuring breathtaking views of the Mediterranean Sea. This carefully designed apartment combines modern comfort with traditional Sicilian aesthetics. Perfect for couples or small families seeking a romantic getaway with beach proximity.", capacity: "4 osoby", features: "blisko plaży", gallery: [
"https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772729841141-o33h2wus.jpg", "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772728322270-i8b4polo.jpg", "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772728631816-9afwb5o6.jpg", "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772727637321-4bj5mbbw.jpg", "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772727548071-bca1pdj2.jpg", "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772728337634-ga6soch3.jpg"],
amenities: [
{ icon: Waves, title: "Sea View Balcony", description: "Private balcony overlooking the Mediterranean" },
{ icon: Utensils, title: "Chef's Kitchen", description: "Premium appliances and complete kitchenware" },
{ icon: Wifi, title: "High-Speed WiFi", description: "Fast and reliable internet connection" },
{ icon: Droplets, title: "Luxury Bathroom", description: "Modern bathroom with premium amenities" },
{ icon: Wind, title: "Air Conditioning", description: "Climate control for year-round comfort" },
{ icon: Sofa, title: "Premium Furnishings", description: "Comfortable and stylish furniture" },
],
},
"apt3": {
name: "Via Garibaldi", price: "50 eur/noc", description: "Charming apartment in the heart of Agrigento", fullDescription: "Via Garibaldi offers a budget-friendly option without compromising on comfort. Located in the bustling center of Agrigento, this cozy apartment is surrounded by historic sites, restaurants, and local culture. Ideal for budget-conscious travelers who want to experience authentic Sicilian living.", capacity: "4 osoby", features: "W centrum Agrigento", gallery: [
"https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772729717575-eicb2kqb.jpg", "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772728322270-i8b4polo.jpg", "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772728631816-9afwb5o6.jpg", "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772727637321-4bj5mbbw.jpg", "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772728337634-ga6soch3.jpg", "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772727586302-s4wcrms6.jpg"],
amenities: [
{ icon: Home, title: "Cozy Living Space", description: "Comfortable and well-designed interior" },
{ icon: Utensils, title: "Complete Kitchen", description: "All essentials for home cooking" },
{ icon: Wifi, title: "WiFi Internet", description: "Stay connected during your stay" },
{ icon: Wind, title: "Air Conditioning", description: "Cool comfort in warm weather" },
{ icon: DoorOpen, title: "Central Location", description: "Walking distance to attractions and dining" },
{ icon: Tv, title: "Entertainment", description: "TV with local and international channels" },
],
},
};
const navItems = [
{ name: "Apartamenty", id: "/" },
{ name: "O nas", id: "about" },
{ name: "Oferta", id: "offer" },
{ name: "Atrakcje", id: "attractions" },
{ name: "Kontakt", id: "contact" },
];
const socialLinks = [
{ icon: Instagram, href: "https://instagram.com", ariaLabel: "Instagram" },
{ icon: Facebook, href: "https://facebook.com", ariaLabel: "Facebook" },
{ icon: Phone, href: "tel:+48123456789", ariaLabel: "Phone" },
];
export default function ApartmentPage() {
const params = useParams();
const apartmentId = params.id as string;
const apartment = apartmentDatabase[apartmentId];
if (!apartment) {
return (
<ThemeProvider
defaultButtonVariant="text-stagger"
defaultTextAnimation="reveal-blur"
borderRadius="pill"
contentWidth="smallMedium"
sizing="medium"
background="aurora"
cardStyle="glass-depth"
primaryButtonStyle="primary-glow"
secondaryButtonStyle="solid"
headingFontWeight="light"
>
<div id="nav" data-section="nav">
<NavbarStyleApple brandName="Buongiorno Sicily" navItems={navItems} />
</div>
<div className="flex items-center justify-center min-h-screen">
<p className="text-2xl">Apartment not found</p>
</div>
</ThemeProvider>
);
}
const galleryProducts = apartment.gallery.map((src: string, idx: number) => ({
id: `gallery-${idx}`,
name: `${apartment.name} - Photo ${idx + 1}`,
price: apartment.price,
variant: apartment.features,
imageSrc: src,
imageAlt: `${apartment.name} - Photo ${idx + 1}`,
}));
return (
<ThemeProvider
defaultButtonVariant="text-stagger"
defaultTextAnimation="reveal-blur"
borderRadius="pill"
contentWidth="smallMedium"
sizing="medium"
background="aurora"
cardStyle="glass-depth"
primaryButtonStyle="primary-glow"
secondaryButtonStyle="solid"
headingFontWeight="light"
>
<div id="nav" data-section="nav">
<NavbarStyleApple brandName="Buongiorno Sicily" navItems={navItems} />
</div>
<div id="hero" data-section="hero">
<HeroBillboardRotatedCarousel
title={apartment.name}
description={apartment.fullDescription}
tag="Apartment Details"
tagIcon={MapPin}
tagAnimation="slide-up"
buttons={[
{ text: "Back to Apartments", href: "/" },
{ text: "Book Now", href: "#contact" },
]}
buttonAnimation="slide-up"
carouselItems={apartment.gallery.map((src: string, idx: number) => ({
id: `slide-${idx}`,
imageSrc: src,
imageAlt: `${apartment.name} - Image ${idx + 1}`,
}))}
autoPlay={true}
autoPlayInterval={5000}
background={{ variant: "radial-gradient" }}
/>
</div>
<div id="about" data-section="about">
<MediaAbout
title={apartment.name}
description={apartment.fullDescription}
tag="Details"
tagIcon={Home}
tagAnimation="slide-up"
buttons={[{ text: "View Gallery", href: "#gallery" }]}
imageSrc={apartment.gallery[0]}
imageAlt={apartment.name}
useInvertedBackground={false}
/>
</div>
<div id="gallery" data-section="gallery">
<ProductCardFour
title="Photo Gallery"
description="Explore our apartment through these beautiful photos"
tag="Gallery"
tagIcon={MapPin}
tagAnimation="slide-up"
buttons={[{ text: "Reserve Now", href: "#contact" }]}
textboxLayout="default"
animationType="slide-up"
useInvertedBackground={true}
gridVariant="three-columns-all-equal-width"
carouselMode="buttons"
products={galleryProducts}
/>
</div>
<div id="offer" data-section="offer">
<FeatureBorderGlow
title="Amenities & Features"
description={`Everything you need for a comfortable stay at ${apartment.name}`}
tag="What's Included"
tagIcon={Home}
tagAnimation="slide-up"
textboxLayout="default"
animationType="slide-up"
useInvertedBackground={false}
features={apartment.amenities}
/>
</div>
<div id="contact" data-section="contact">
<ContactSplitForm
title="Make Your Reservation"
description={`Ready to book ${apartment.name}? Contact us today to reserve your dates. Our team will help you with availability, pricing, and any special requests you may have.`}
inputs={[
{
name: "name", type: "text", placeholder: "Your name", required: true,
},
{
name: "email", type: "email", placeholder: "Your email", required: true,
},
]}
textarea={{
name: "message", placeholder: "Tell us your dates and special requests...", rows: 5,
required: true,
}}
useInvertedBackground={true}
imageSrc={apartment.gallery[1] || apartment.gallery[0]}
imageAlt="Booking reservation"
mediaAnimation="slide-up"
mediaPosition="right"
buttonText="Send Booking Request"
/>
</div>
<div id="footer" data-section="footer">
<FooterCard
logoText="Buongiorno Sicily"
copyrightText="© 2025 Buongiorno Sicily. All rights reserved."
socialLinks={socialLinks}
/>
</div>
</ThemeProvider>
);
}

View File

@@ -37,11 +37,11 @@ const heroCarouselItems = [
const apartmentProducts = [
{
id: "apt1", name: "Largo SantAntonio", price: "od 70 eur/noc", variant: "5 osób • W pełni wyposażony", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772729829229-jo0kwpyi.jpg", imageAlt: "Classic apartment"},
id: "apt1", name: "Largo Sant'Antonio", price: "od 70 eur/noc", variant: "5 osób • W pełni wyposażony", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772729829229-jo0kwpyi.jpg", imageAlt: "Classic apartment", onProductClick: () => window.location.href = '/apartment/apt1'},
{
id: "apt2", name: "Porto Empedocle ", price: "od 70 eur/noc", variant: "4 osoby • blisko plaży", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772729841141-o33h2wus.jpg", imageAlt: "Premium apartment with sea view"},
id: "apt2", name: "Porto Empedocle ", price: "od 70 eur/noc", variant: "4 osoby • blisko plaży", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772729841141-o33h2wus.jpg", imageAlt: "Premium apartment with sea view", onProductClick: () => window.location.href = '/apartment/apt2'},
{
id: "apt3", name: "Via Garibaldi", price: "od 50 eur/noc", variant: "4 osoby • W centrum Agrigento", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772729717575-eicb2kqb.jpg", imageAlt: "Deluxe apartment with terrace"},
id: "apt3", name: "Via Garibaldi", price: "od 50 eur/noc", variant: "4 osoby • W centrum Agrigento", imageSrc: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUmUSVZpEZXvuP6mzJyNvtL19A/uploaded-1772729717575-eicb2kqb.jpg", imageAlt: "Deluxe apartment with terrace", onProductClick: () => window.location.href = '/apartment/apt3'},
];
const features = [