Seth commited on
Commit
1cf1f8f
·
1 Parent(s): 257d77d
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
- {/* Banner */}
56
- <div className="relative w-full bg-gradient-to-r from-violet-700 to-indigo-800">
57
  {bannerUrl ? (
58
  <img
59
  src={bannerUrl}
60
  alt=""
61
- className="w-full h-36 sm:h-44 md:h-52 object-cover"
62
  />
63
- ) : (
64
- <div className="w-full h-36 sm:h-44 md:h-52 bg-gradient-to-r from-violet-700 to-indigo-800" />
65
- )}
66
  {logoUrl ? (
67
- <div className="absolute left-4 sm:left-8 bottom-0 translate-y-1/2">
68
  <img
69
  src={logoUrl}
70
  alt="Logo"
71
- className="h-14 sm:h-16 w-auto max-w-[10rem] object-contain bg-white rounded-lg p-2 shadow-md border border-slate-100"
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 py-6 sm:py-8 items-start',
84
- preview
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="rounded-2xl border border-slate-200 bg-slate-50/80 p-5 sm:p-6 shadow-sm">
121
- <h2 className="text-xl font-bold text-slate-900">{c.form_heading}</h2>
122
- {c.form_subtext ? (
123
- <p className="mt-2 text-sm text-slate-600 leading-relaxed">{c.form_subtext}</p>
124
- ) : null}
125
- <div className="mt-5 min-h-[280px] rounded-xl overflow-hidden bg-white border border-slate-100">
126
- {iframeSrc ? (
127
- <iframe
128
- src={iframeSrc}
129
- title={c.form_heading}
130
- className="w-full border-0"
131
- style={{ minHeight: '320px', height: '360px' }}
132
- loading="lazy"
133
- />
134
- ) : (
135
- <div className="flex items-center justify-center h-72 text-sm text-slate-400 px-4 text-center">
136
- Select a CTA form to show the booking area
137
- </div>
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>