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

Regal Exclusive Offers

+

+ Special packages and seasonal deals crafted for our valued guests +

+
+ {items.map((item) => { + const d = item.data as { title?: string; description?: string; price?: string; duration?: string; valid_until?: string; image?: string } + return ( + + {d.image && ( +
+ {d.title +
+ )} + + {d.title} + + +

{d.description}

+ {d.price &&

R {d.price}

} + {d.duration &&

Duration: {d.duration}

} + {d.valid_until && ( +

Valid until: {new Date(d.valid_until).toLocaleDateString("en-ZA", { year: "numeric", month: "long", day: "numeric" })}

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