Seth commited on
Commit ·
1cf1f8f
1
Parent(s): 257d77d
update
Browse files
frontend/src/components/landing/LandingPageTemplate.jsx
CHANGED
|
@@ -44,6 +44,11 @@ export default function LandingPageTemplate({
|
|
| 44 |
|
| 45 |
const iframeSrc = ctaFormPublicId ? `/embed/cta/${ctaFormPublicId}` : null;
|
| 46 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 47 |
return (
|
| 48 |
<div
|
| 49 |
className={cn(
|
|
@@ -52,42 +57,37 @@ export default function LandingPageTemplate({
|
|
| 52 |
className
|
| 53 |
)}
|
| 54 |
>
|
| 55 |
-
{/*
|
| 56 |
-
<div className="relative w-full bg-gradient-to-
|
| 57 |
{bannerUrl ? (
|
| 58 |
<img
|
| 59 |
src={bannerUrl}
|
| 60 |
alt=""
|
| 61 |
-
className="
|
| 62 |
/>
|
| 63 |
-
) :
|
| 64 |
-
|
| 65 |
-
|
| 66 |
{logoUrl ? (
|
| 67 |
-
<div className="absolute left-4 sm:left-8
|
| 68 |
<img
|
| 69 |
src={logoUrl}
|
| 70 |
alt="Logo"
|
| 71 |
-
className="h-
|
| 72 |
/>
|
| 73 |
</div>
|
| 74 |
) : null}
|
| 75 |
</div>
|
| 76 |
|
| 77 |
-
<div className={cn(
|
| 78 |
-
logoUrl ? 'pt-12 sm:pt-14' : 'pt-8',
|
| 79 |
-
preview ? 'max-w-none px-3 sm:px-4' : 'max-w-6xl mx-auto px-4 sm:px-6 lg:px-8'
|
| 80 |
-
)}>
|
| 81 |
<div
|
| 82 |
className={cn(
|
| 83 |
-
'grid gap-8
|
| 84 |
-
|
| 85 |
-
? 'md:grid-cols-[1fr_minmax(240px,300px)] md:gap-8'
|
| 86 |
-
: 'lg:grid-cols-[1fr_minmax(280px,360px)] lg:gap-12 py-8 lg:py-12'
|
| 87 |
)}
|
| 88 |
>
|
| 89 |
{/* Left: hero + benefits */}
|
| 90 |
-
<div className="space-y-8">
|
| 91 |
<div>
|
| 92 |
<h1 className="text-2xl sm:text-3xl lg:text-4xl font-bold text-slate-900 leading-tight tracking-tight">
|
| 93 |
{c.headline}
|
|
@@ -116,26 +116,30 @@ export default function LandingPageTemplate({
|
|
| 116 |
</div>
|
| 117 |
</div>
|
| 118 |
|
| 119 |
-
{/* Right: form card */}
|
| 120 |
-
<div className="
|
| 121 |
-
<
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
|
| 135 |
-
|
| 136 |
-
|
| 137 |
-
|
| 138 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 139 |
</div>
|
| 140 |
</div>
|
| 141 |
</div>
|
|
|
|
| 44 |
|
| 45 |
const iframeSrc = ctaFormPublicId ? `/embed/cta/${ctaFormPublicId}` : null;
|
| 46 |
|
| 47 |
+
const contentMax = preview ? 'max-w-none px-3 sm:px-4' : 'max-w-6xl mx-auto px-4 sm:px-6 lg:px-8';
|
| 48 |
+
const twoCol = preview
|
| 49 |
+
? 'md:grid-cols-[1fr_minmax(260px,320px)]'
|
| 50 |
+
: 'lg:grid-cols-[1fr_minmax(300px,380px)]';
|
| 51 |
+
|
| 52 |
return (
|
| 53 |
<div
|
| 54 |
className={cn(
|
|
|
|
| 57 |
className
|
| 58 |
)}
|
| 59 |
>
|
| 60 |
+
{/* Hero banner ~40% viewport height */}
|
| 61 |
+
<div className="relative w-full min-h-[40vh] min-h-[40dvh] bg-gradient-to-br from-violet-700 via-violet-800 to-indigo-900">
|
| 62 |
{bannerUrl ? (
|
| 63 |
<img
|
| 64 |
src={bannerUrl}
|
| 65 |
alt=""
|
| 66 |
+
className="absolute inset-0 h-full w-full object-cover"
|
| 67 |
/>
|
| 68 |
+
) : null}
|
| 69 |
+
<div className="absolute inset-0 bg-gradient-to-b from-black/10 via-transparent to-black/20 pointer-events-none" />
|
| 70 |
+
|
| 71 |
{logoUrl ? (
|
| 72 |
+
<div className="absolute top-5 left-4 sm:top-6 sm:left-6 lg:top-8 lg:left-8 z-10">
|
| 73 |
<img
|
| 74 |
src={logoUrl}
|
| 75 |
alt="Logo"
|
| 76 |
+
className="h-[4.5rem] sm:h-24 lg:h-28 w-auto max-w-[11rem] sm:max-w-[13rem] object-contain bg-white/95 rounded-xl p-2.5 sm:p-3 shadow-lg border border-white/80"
|
| 77 |
/>
|
| 78 |
</div>
|
| 79 |
) : null}
|
| 80 |
</div>
|
| 81 |
|
| 82 |
+
<div className={cn('relative', contentMax)}>
|
|
|
|
|
|
|
|
|
|
| 83 |
<div
|
| 84 |
className={cn(
|
| 85 |
+
'grid gap-8 lg:gap-10 items-start pb-8 sm:pb-10 pt-6 sm:pt-8',
|
| 86 |
+
twoCol
|
|
|
|
|
|
|
| 87 |
)}
|
| 88 |
>
|
| 89 |
{/* Left: hero + benefits */}
|
| 90 |
+
<div className="space-y-8 min-w-0">
|
| 91 |
<div>
|
| 92 |
<h1 className="text-2xl sm:text-3xl lg:text-4xl font-bold text-slate-900 leading-tight tracking-tight">
|
| 93 |
{c.headline}
|
|
|
|
| 116 |
</div>
|
| 117 |
</div>
|
| 118 |
|
| 119 |
+
{/* Right: form card — overlaps banner */}
|
| 120 |
+
<div className="relative z-20 -mt-24 sm:-mt-28 md:-mt-32 lg:-mt-36">
|
| 121 |
+
<div className="rounded-2xl border border-slate-200/90 bg-white p-5 sm:p-6 shadow-xl shadow-slate-300/40">
|
| 122 |
+
<h2 className="text-xl font-bold text-slate-900">{c.form_heading}</h2>
|
| 123 |
+
{c.form_subtext ? (
|
| 124 |
+
<p className="mt-2 text-sm text-slate-600 leading-relaxed">
|
| 125 |
+
{c.form_subtext}
|
| 126 |
+
</p>
|
| 127 |
+
) : null}
|
| 128 |
+
<div className="mt-5 min-h-[280px] rounded-xl overflow-hidden bg-white border border-slate-100">
|
| 129 |
+
{iframeSrc ? (
|
| 130 |
+
<iframe
|
| 131 |
+
src={iframeSrc}
|
| 132 |
+
title={c.form_heading}
|
| 133 |
+
className="w-full border-0"
|
| 134 |
+
style={{ minHeight: '320px', height: '360px' }}
|
| 135 |
+
loading="lazy"
|
| 136 |
+
/>
|
| 137 |
+
) : (
|
| 138 |
+
<div className="flex items-center justify-center h-72 text-sm text-slate-400 px-4 text-center">
|
| 139 |
+
Select a CTA form to show the booking area
|
| 140 |
+
</div>
|
| 141 |
+
)}
|
| 142 |
+
</div>
|
| 143 |
</div>
|
| 144 |
</div>
|
| 145 |
</div>
|