From f2a1e46aaf4c4f233b2085e5a854b86febed897b Mon Sep 17 00:00:00 2001 From: Vula Builder Date: Tue, 23 Jun 2026 08:38:51 +0000 Subject: [PATCH] Deploy --- .../sections/ExclusivePromotionsSection.tsx | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/components/sections/ExclusivePromotionsSection.tsx diff --git a/src/components/sections/ExclusivePromotionsSection.tsx b/src/components/sections/ExclusivePromotionsSection.tsx new file mode 100644 index 0000000..62b14bd --- /dev/null +++ b/src/components/sections/ExclusivePromotionsSection.tsx @@ -0,0 +1,68 @@ +'use client' + +import { useEmDashContent } from '@/hooks/useEmDashContent' +import Image from 'next/image' +import Button from '@/components/ui/Button' +import { Card, CardContent, CardHeader, CardTitle, CardFooter } from '@/components/ui/Card' +import { Tag } from 'lucide-react' + +export default function ExclusivePromotionsSection() { + const { items, loading } = useEmDashContent('promotions') + + if (loading) { + return ( +
+
+
+ ) + } + + if (items.length === 0) return null + + return ( +
+
+

Exclusive Promotions

+

+ Limited‑time offers crafted for your royal stay +

+
+ {items.map((item) => { + const d = item.data as { title?: string; description?: string; price?: number; image?: string } + if (!d.image) return null + const priceDisplay = d.price ? `R${(d.price / 100).toFixed(2)}` : null + return ( + +
+ {d.title +
+ +
+ + Special Offer +
+ {d.title && {d.title}} +
+ + {d.description &&

{d.description}

} + {priceDisplay &&

{priceDisplay}

} +
+ + + +
+ ) + })} +
+
+
+ ) +} \ No newline at end of file