From 64bcd608b5d9768ee178ceaa57e1a68541a87ce0 Mon Sep 17 00:00:00 2001 From: Vula Builder Date: Wed, 5 Aug 2026 18:14:39 +0000 Subject: [PATCH] Deploy --- .../sections/SpecialOffersSection.tsx | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/components/sections/SpecialOffersSection.tsx diff --git a/src/components/sections/SpecialOffersSection.tsx b/src/components/sections/SpecialOffersSection.tsx new file mode 100644 index 0000000..31a9dfc --- /dev/null +++ b/src/components/sections/SpecialOffersSection.tsx @@ -0,0 +1,66 @@ +'use client' +import Link from 'next/link' +import Image from 'next/image' +import Button from '@/components/ui/Button' +import { Card, CardContent } from '@/components/ui/Card' +import { useVulaContent } from '@/hooks/useVulaContent' +import { ArrowRight } from 'lucide-react' + +export default function SpecialOffersSection() { + const { items, loading } = useVulaContent('campaigns') + + if (loading) { + return
+ } + + if (items.length === 0) return null + + return ( +
+
+
+
+

Current client incentives

+

Clear fees, limited windows.

+

Fixed-fee packages and introductory consultations, published when available.

+
+
+

Every campaign is vetted by a practising attorney before it reaches this page.

+
+
+ +
+ {items.slice(0, 3).map((item) => { + const d = item.data as { title?: string; headline?: string; body?: string; cta_text?: string; image?: string } + return ( + + + {d.image ? ( +
+ {d.headline +
+ ) : ( +
+ Campaign +
+ )} +
+ {d.title ?

{d.title}

: null} + {d.headline ?

{d.headline}

: null} + {d.body ?

{d.body}

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