Skip to content

Commit dd56646

Browse files
committed
Polish eGate media and badges
1 parent b4c1b55 commit dd56646

1 file changed

Lines changed: 89 additions & 27 deletions

File tree

src/pages/EGate.jsx

Lines changed: 89 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const featureList = [
1414
{
1515
title: 'Connectivity controls',
1616
body: 'Shut down Wi-Fi, hotspots, Bluetooth sharing, and MMS when zero side channels are allowed.',
17-
icon: 'fa-solid fa-wifi-slash',
17+
icon: 'fa-solid fa-tower-broadcast',
1818
},
1919
{
2020
title: 'Web filtering',
@@ -51,6 +51,12 @@ const faqs = [
5151
},
5252
];
5353

54+
const slowVideoPlayback = (event) => {
55+
if (event?.currentTarget) {
56+
event.currentTarget.playbackRate = 0.8;
57+
}
58+
};
59+
5460
export default function EGate() {
5561
return (
5662
<div className="bg-black">
@@ -115,20 +121,10 @@ function Hero() {
115121
Learn more <i className="fa-solid fa-arrow-up-right-from-square text-xs" />
116122
</a>
117123
</div>
118-
<div className="flex flex-wrap gap-8 rounded-3xl border border-white/10 bg-white/5 px-6 py-4 text-sm text-slate-200 sm:text-base">
119-
<div>
120-
<p className="text-2xl font-semibold text-white">0</p>
121-
<p className="text-xs uppercase tracking-[0.3em] text-slate-400">Escalations</p>
122-
</div>
123-
<div>
124-
<p className="text-2xl font-semibold text-white">97%</p>
125-
<p className="text-xs uppercase tracking-[0.3em] text-slate-400">Satisfaction</p>
126-
</div>
127-
<div>
128-
<p className="text-2xl font-semibold text-white">Q4 build</p>
129-
<p className="text-xs uppercase tracking-[0.3em] text-slate-400">Pixel 8a</p>
130-
</div>
131-
</div>
124+
<p className="rounded-3xl border border-white/10 bg-white/5 px-6 py-4 text-sm text-slate-200 sm:text-base">
125+
Built and maintained by <span className="font-semibold text-white">Offline Software Solutions</span> so our kosher deployments always
126+
inherit the hardened stack from the original .io launch.
127+
</p>
132128
</div>
133129
<div className="flex justify-center lg:justify-end">
134130
<PhoneMock />
@@ -167,12 +163,14 @@ function PhoneMock() {
167163
<foreignObject x="45" y="60" width="190" height="270" clipPath="url(#egate-phone-screen)">
168164
<video
169165
src="/img/qinf21.mp4"
170-
className="h-full w-full rounded-3xl object-contain"
166+
className="h-full w-full rounded-3xl object-contain bg-black"
171167
autoPlay
172168
loop
173169
muted
174170
playsInline
175171
aria-label="eGate demo"
172+
onLoadedData={slowVideoPlayback}
173+
style={{ transform: 'scale(0.92)' }}
176174
/>
177175
</foreignObject>
178176
<rect x="120" y="25" width="40" height="6" rx="3" fill="#555555" />
@@ -217,15 +215,19 @@ function Highlights() {
217215
</p>
218216
</div>
219217
<div className="relative mx-auto flex w-full max-w-sm flex-1 items-center justify-center px-8 pb-10 pt-8 lg:max-w-full">
220-
<div className="h-[22rem] w-full max-w-md rounded-[2rem] border border-white/10 bg-gradient-to-b from-slate-900 to-black p-4 shadow-2xl">
221-
<video
222-
src="/img/qinf21.mp4"
223-
className="h-full w-full rounded-[1.5rem] object-cover"
224-
autoPlay
225-
loop
226-
muted
227-
playsInline
228-
/>
218+
<div className="h-[22rem] w-full max-w-md rounded-[2rem] border border-white/10 bg-gradient-to-b from-slate-950 to-slate-900 p-4 shadow-2xl">
219+
<div className="flex h-full w-full items-center justify-center rounded-[1.5rem] bg-black/70 p-4">
220+
<video
221+
src="/img/qinf21.mp4"
222+
className="h-full w-full rounded-2xl object-contain"
223+
autoPlay
224+
loop
225+
muted
226+
playsInline
227+
onLoadedData={slowVideoPlayback}
228+
style={{ transform: 'scale(0.92)' }}
229+
/>
230+
</div>
229231
</div>
230232
</div>
231233
</CardChrome>
@@ -238,7 +240,7 @@ function Highlights() {
238240
<p className="mt-3 text-sm text-slate-300">Locked by credentials you control—no unauthorized toggles.</p>
239241
</div>
240242
<div className="flex flex-1 items-center justify-center px-8 pb-10 pt-6">
241-
<img src="/img/home/pwd.png" alt="Password UI" className="h-40 w-auto object-contain" />
243+
<PasswordBadge />
242244
</div>
243245
</CardChrome>
244246
</article>
@@ -250,7 +252,7 @@ function Highlights() {
250252
<p className="mt-3 text-sm text-slate-300">Rapid release cadence keeps policies and tooling modern.</p>
251253
</div>
252254
<div className="flex flex-1 items-center justify-center px-8 pb-10 pt-6">
253-
<img src="/img/home/lines.png" alt="Update timeline" className="w-full max-w-xs object-contain" />
255+
<ProgressiveGraphic />
254256
</div>
255257
</CardChrome>
256258
</article>
@@ -284,6 +286,66 @@ function CardChrome({ children, className = '' }) {
284286
);
285287
}
286288

289+
function PasswordBadge() {
290+
return (
291+
<div className="relative w-full max-w-xs rounded-[1.75rem] border border-white/10 bg-gradient-to-br from-slate-950 via-slate-900 to-sky-900 p-6 text-center text-white shadow-xl">
292+
<div className="mx-auto flex h-16 w-16 items-center justify-center rounded-2xl bg-sky-500/20 text-3xl text-sky-200">
293+
<i className="fa-solid fa-lock"></i>
294+
</div>
295+
<p className="mt-4 text-lg font-semibold">Password enforced</p>
296+
<p className="mt-1 text-xs uppercase tracking-[0.4em] text-slate-400">offline key</p>
297+
<div className="mt-5 space-y-2 text-left text-xs text-slate-200/80">
298+
<p className="flex items-center gap-2">
299+
<span className="h-1.5 w-1.5 rounded-full bg-emerald-400" />
300+
Local device PIN protection
301+
</p>
302+
<p className="flex items-center gap-2">
303+
<span className="h-1.5 w-1.5 rounded-full bg-sky-400" />
304+
Admin-only override portal
305+
</p>
306+
<p className="flex items-center gap-2">
307+
<span className="h-1.5 w-1.5 rounded-full bg-indigo-400" />
308+
Logged policy revisions
309+
</p>
310+
</div>
311+
</div>
312+
);
313+
}
314+
315+
function ProgressiveGraphic() {
316+
return (
317+
<svg viewBox="0 0 320 200" className="w-full max-w-xs" role="img">
318+
<defs>
319+
<linearGradient id="egate-pulse" x1="0%" y1="0%" x2="100%" y2="0%">
320+
<stop offset="0%" stopColor="#38bdf8" />
321+
<stop offset="50%" stopColor="#6366f1" />
322+
<stop offset="100%" stopColor="#f472b6" />
323+
</linearGradient>
324+
</defs>
325+
<rect width="320" height="200" rx="28" fill="url(#egate-pulse)" opacity="0.15" />
326+
<g fill="none" strokeWidth="3" strokeLinecap="round">
327+
<path
328+
d="M20 130 Q 60 40, 100 90 T 180 80 T 260 30"
329+
stroke="url(#egate-pulse)"
330+
opacity="0.8"
331+
/>
332+
<path d="M20 150 Q 60 70, 120 120 T 200 90 T 300 120" stroke="#1d4ed8" opacity="0.4" />
333+
</g>
334+
<g fill="white" opacity="0.9">
335+
<circle cx="100" cy="90" r="6" />
336+
<circle cx="180" cy="80" r="6" />
337+
<circle cx="260" cy="30" r="6" />
338+
</g>
339+
<text x="24" y="40" fill="white" fontSize="16" fontWeight="600">
340+
Progressive timeline
341+
</text>
342+
<text x="24" y="64" fill="#cbd5f5" fontSize="12">
343+
Weekly policy drops
344+
</text>
345+
</svg>
346+
);
347+
}
348+
287349
function FaqSection() {
288350
return (
289351
<section className="bg-slate-950/80 py-20">

0 commit comments

Comments
 (0)