refactor: update Hero3DRobotics and RoboticsSplineShowcase components for improved styling and layout
- Adjusted padding, opacity, and transform properties for robot images in Hero3DRobotics. - Updated sizes for images to enhance responsiveness. - Modified floor reflection styles for better visual consistency. - Refactored RoboticsSplineShowcase to use inline styles for layout and design consistency. - Enhanced text styles and button designs for better user experience. - Improved grid layout for better responsiveness across different screen sizes.
This commit is contained in:
parent
461a00384c
commit
d7c343ac7d
@ -2,6 +2,7 @@ import type { Metadata } from 'next';
|
|||||||
import { Navbar } from '@/components/Navbar';
|
import { Navbar } from '@/components/Navbar';
|
||||||
import { FooterAndContact } from '@/components/FooterAndContact';
|
import { FooterAndContact } from '@/components/FooterAndContact';
|
||||||
import { CatalogClient } from './CatalogClient';
|
import { CatalogClient } from './CatalogClient';
|
||||||
|
import { RoboticsSplineShowcase } from '@/components/sections/robotics-spline-showcase';
|
||||||
import { ROBOTS } from '@/data/robots';
|
import { ROBOTS } from '@/data/robots';
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = {
|
||||||
@ -14,17 +15,30 @@ export default function RobotsPage() {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Navbar />
|
<Navbar />
|
||||||
<main style={{ paddingTop: 'clamp(6rem, 10vw, 8rem)', paddingBottom: 'clamp(4rem, 8vw, 6rem)' }}>
|
<main>
|
||||||
<div className="container-wide" style={{ display: 'flex', flexDirection: 'column', gap: '2.5rem' }}>
|
<div style={{ paddingTop: 'clamp(5rem, 8vw, 7rem)' }}>
|
||||||
|
<RoboticsSplineShowcase />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
className="container-wide"
|
||||||
|
style={{
|
||||||
|
display: 'flex',
|
||||||
|
flexDirection: 'column',
|
||||||
|
gap: '2.5rem',
|
||||||
|
paddingTop: 'clamp(3rem, 6vw, 5rem)',
|
||||||
|
paddingBottom: 'clamp(4rem, 8vw, 6rem)',
|
||||||
|
}}
|
||||||
|
>
|
||||||
<div style={{ display: 'flex', flexDirection: 'column', gap: '1rem', maxWidth: 760 }}>
|
<div style={{ display: 'flex', flexDirection: 'column', gap: '1rem', maxWidth: 760 }}>
|
||||||
<span className="eyebrow">Robot Catalog · Dubai · UAE</span>
|
<span className="eyebrow">Catalog · Filter & Browse</span>
|
||||||
<h1 style={{ margin: 0, fontSize: 'clamp(2rem, 5vw, 3.4rem)', fontWeight: 300, lineHeight: 1.05, letterSpacing: '-0.03em' }}>
|
<h2 style={{ margin: 0, fontSize: 'clamp(1.6rem, 3.6vw, 2.4rem)', fontWeight: 400, lineHeight: 1.1, letterSpacing: '-0.02em' }}>
|
||||||
<span className="text-gradient" style={{ fontWeight: 500 }}>
|
<span className="text-gradient" style={{ fontWeight: 500 }}>
|
||||||
Robots ready to deploy across the UAE.
|
{ROBOTS.length}+ models across the UAE portfolio.
|
||||||
</span>
|
</span>
|
||||||
</h1>
|
</h2>
|
||||||
<p style={{ margin: 0, color: '#DEE0F0', fontSize: 'clamp(0.95rem, 2vw, 1.05rem)', lineHeight: 1.7 }}>
|
<p style={{ margin: 0, color: '#DEE0F0', fontSize: 'clamp(0.95rem, 2vw, 1.05rem)', lineHeight: 1.7 }}>
|
||||||
Browse {ROBOTS.length}+ models across our portfolio. Filter by brand or category, then request a price or book a live demo at our Dubai showroom.
|
Filter by brand or category, then request a UAE quotation or book a live demo at our Dubai showroom.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@ -1,61 +1,394 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
const PILLARS = [
|
import { Brain, Bot, Workflow, GraduationCap, Building2, BadgeCheck } from 'lucide-react';
|
||||||
{ title: 'Artificial intelligence', body: 'AI applications tailored for UAE government and private sector clients.' },
|
import type { LucideIcon } from 'lucide-react';
|
||||||
{ title: 'Robotics', body: 'Humanoid, quadruped, service, and delivery robotics deployed across Dubai and the UAE.' },
|
|
||||||
{ title: 'Digital transformation', body: 'Automation systems and smart projects that modernize operations end to end.' },
|
type Pillar = {
|
||||||
{ title: 'Training & enablement', body: 'Coding and robotics training programs that prepare the next generation of talent.' },
|
num: string;
|
||||||
|
title: string;
|
||||||
|
body: string;
|
||||||
|
Icon: LucideIcon;
|
||||||
|
accent: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
const PILLARS: Pillar[] = [
|
||||||
|
{
|
||||||
|
num: '01',
|
||||||
|
title: 'Artificial Intelligence',
|
||||||
|
body: 'AI applications tailored for UAE government and private sector.',
|
||||||
|
Icon: Brain,
|
||||||
|
accent: '#DEE0F0',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
num: '02',
|
||||||
|
title: 'Robotics Deployment',
|
||||||
|
body: 'Humanoid, quadruped, service, and delivery robots across the UAE.',
|
||||||
|
Icon: Bot,
|
||||||
|
accent: '#3a55c4',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
num: '03',
|
||||||
|
title: 'Digital Transformation',
|
||||||
|
body: 'Automation systems and smart projects that modernize operations.',
|
||||||
|
Icon: Workflow,
|
||||||
|
accent: '#BFC3E2',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
num: '04',
|
||||||
|
title: 'Training & Enablement',
|
||||||
|
body: 'Coding and robotics programs preparing the next generation of UAE talent.',
|
||||||
|
Icon: GraduationCap,
|
||||||
|
accent: '#8891C7',
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
export function CompanyStory() {
|
export function CompanyStory() {
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
style={{
|
style={{
|
||||||
display: 'grid',
|
position: 'relative',
|
||||||
gridTemplateColumns: 'repeat(auto-fit, minmax(min(280px, 100%), 1fr))',
|
borderRadius: '2rem',
|
||||||
gap: 'clamp(2rem, 5vw, 3rem)',
|
padding: 'clamp(1.75rem, 4vw, 3rem)',
|
||||||
alignItems: 'flex-start',
|
overflow: 'hidden',
|
||||||
|
background:
|
||||||
|
'radial-gradient(ellipse 60% 80% at 100% 0%, rgba(58,85,196,0.18), transparent 60%), radial-gradient(ellipse 50% 60% at 0% 100%, rgba(222,224,240,0.10), transparent 60%), linear-gradient(135deg, rgba(28,27,33,0.94), rgba(5,5,5,0.98))',
|
||||||
|
border: '1px solid rgba(222,224,240,0.12)',
|
||||||
|
boxShadow: '0 30px 100px rgba(0,0,0,0.7), inset 0 1px 0 rgba(222,224,240,0.06)',
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<div style={{ display: 'flex', flexDirection: 'column', gap: '1rem' }}>
|
{/* blueprint grid background */}
|
||||||
<span className="eyebrow">About YS Lootah Robotics</span>
|
<div
|
||||||
<h2 style={{ margin: 0, fontSize: 'clamp(1.8rem, 4.4vw, 2.8rem)', fontWeight: 300, lineHeight: 1.1, letterSpacing: '-0.03em' }}>
|
aria-hidden
|
||||||
<span className="text-gradient" style={{ fontWeight: 500 }}>
|
style={{
|
||||||
A trusted UAE technology and robotics partner.
|
position: 'absolute',
|
||||||
</span>
|
inset: 0,
|
||||||
</h2>
|
backgroundImage:
|
||||||
<p style={{ margin: 0, color: '#DEE0F0', lineHeight: 1.7, fontSize: '1rem' }}>
|
'linear-gradient(rgba(191,195,226,0.06) 1px, transparent 1px), linear-gradient(90deg, rgba(191,195,226,0.06) 1px, transparent 1px)',
|
||||||
YS Lootah Robotics is part of the <strong style={{ color: '#DEE0F0' }}>Yousuf Saeed Lootah Investment Group</strong>. We help organizations innovate, automate, and deploy intelligent robotic solutions across artificial intelligence, robotics, digital transformation, automation systems, and smart projects — for government and private sector clients alike.
|
backgroundSize: '36px 36px',
|
||||||
</p>
|
maskImage: 'radial-gradient(ellipse 70% 80% at 50% 40%, #000 25%, transparent 80%)',
|
||||||
<p style={{ margin: 0, color: '#DEE0F0', lineHeight: 1.7, fontSize: '1rem' }}>
|
WebkitMaskImage: 'radial-gradient(ellipse 70% 80% at 50% 40%, #000 25%, transparent 80%)',
|
||||||
Beyond hardware, we also run coding and robotics training programs that prepare the UAE's next generation of talent for an automated future.
|
pointerEvents: 'none',
|
||||||
</p>
|
}}
|
||||||
<p style={{ margin: 0, color: '#8891C7', fontSize: '0.82rem', letterSpacing: '0.18em', textTransform: 'uppercase', fontWeight: 600 }}>
|
/>
|
||||||
In Tech We Innovate · In Trust We Lead
|
|
||||||
</p>
|
{/* subtle YS watermark */}
|
||||||
|
<div
|
||||||
|
aria-hidden
|
||||||
|
style={{
|
||||||
|
position: 'absolute',
|
||||||
|
top: '8%',
|
||||||
|
right: '6%',
|
||||||
|
fontSize: 'clamp(8rem, 18vw, 14rem)',
|
||||||
|
fontWeight: 800,
|
||||||
|
color: 'transparent',
|
||||||
|
WebkitTextStroke: '1px rgba(222,224,240,0.06)',
|
||||||
|
letterSpacing: '-0.06em',
|
||||||
|
lineHeight: 1,
|
||||||
|
pointerEvents: 'none',
|
||||||
|
userSelect: 'none',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
YS
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(min(180px, 100%), 1fr))', gap: '1rem' }}>
|
<div
|
||||||
{PILLARS.map((p, i) => (
|
className="cs-grid"
|
||||||
<div
|
style={{
|
||||||
key={p.title}
|
position: 'relative',
|
||||||
className="card"
|
display: 'grid',
|
||||||
|
gap: 'clamp(1.5rem, 3.5vw, 2.5rem)',
|
||||||
|
alignItems: 'stretch',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{/* Left — narrative */}
|
||||||
|
<div style={{ display: 'flex', flexDirection: 'column', gap: '1.25rem', minWidth: 0 }}>
|
||||||
|
<span className="eyebrow">About YS Lootah Robotics</span>
|
||||||
|
|
||||||
|
<h2
|
||||||
style={{
|
style={{
|
||||||
padding: '1.5rem',
|
margin: 0,
|
||||||
display: 'flex',
|
fontSize: 'clamp(1.7rem, 4vw, 2.6rem)',
|
||||||
flexDirection: 'column',
|
fontWeight: 300,
|
||||||
gap: '0.5rem',
|
lineHeight: 1.1,
|
||||||
minHeight: 160,
|
letterSpacing: '-0.03em',
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<span style={{ fontSize: '0.7rem', letterSpacing: '0.22em', textTransform: 'uppercase', color: '#8891C7', fontWeight: 700 }}>
|
<span className="text-gradient" style={{ fontWeight: 500 }}>
|
||||||
0{i + 1}
|
A trusted UAE technology and robotics partner.
|
||||||
</span>
|
</span>
|
||||||
<h3 style={{ margin: 0, fontSize: '1.05rem', fontWeight: 600, color: '#FBFBFD' }}>{p.title}</h3>
|
</h2>
|
||||||
<p style={{ margin: 0, color: '#DEE0F0', lineHeight: 1.55, fontSize: '0.88rem' }}>{p.body}</p>
|
|
||||||
|
<p style={{ margin: 0, color: '#DEE0F0', fontSize: 'clamp(0.92rem, 1.7vw, 1rem)', lineHeight: 1.7, maxWidth: 520 }}>
|
||||||
|
YS Lootah Robotics is part of the{' '}
|
||||||
|
<span style={{ color: '#FBFBFD', fontWeight: 600 }}>Yousuf Saeed Lootah Investment Group</span>.
|
||||||
|
We deliver AI, robotics, digital transformation, smart projects, and training programs to government and private sector clients across the UAE.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{/* Group credibility row */}
|
||||||
|
<div style={{ display: 'flex', flexWrap: 'wrap', gap: '0.5rem', marginTop: '0.25rem' }}>
|
||||||
|
<CredibilityBadge Icon={Building2} text="Yousuf Saeed Lootah Investment Group" />
|
||||||
|
<CredibilityBadge Icon={BadgeCheck} text="Trusted UAE Partner" />
|
||||||
</div>
|
</div>
|
||||||
))}
|
|
||||||
|
{/* Pull-quote card */}
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
marginTop: '0.5rem',
|
||||||
|
padding: '1.25rem 1.25rem 1.25rem 1.5rem',
|
||||||
|
borderRadius: 18,
|
||||||
|
background:
|
||||||
|
'linear-gradient(135deg, rgba(39,63,148,0.18) 0%, rgba(28,27,33,0.7) 60%)',
|
||||||
|
border: '1px solid rgba(222,224,240,0.16)',
|
||||||
|
position: 'relative',
|
||||||
|
overflow: 'hidden',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
aria-hidden
|
||||||
|
style={{
|
||||||
|
position: 'absolute',
|
||||||
|
left: 0,
|
||||||
|
top: 0,
|
||||||
|
bottom: 0,
|
||||||
|
width: 3,
|
||||||
|
background: 'linear-gradient(180deg, #DEE0F0, #3a55c4)',
|
||||||
|
boxShadow: '0 0 16px rgba(58,85,196,0.7)',
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<p
|
||||||
|
style={{
|
||||||
|
margin: 0,
|
||||||
|
fontSize: 'clamp(1rem, 1.8vw, 1.15rem)',
|
||||||
|
fontStyle: 'italic',
|
||||||
|
lineHeight: 1.5,
|
||||||
|
color: '#FBFBFD',
|
||||||
|
fontWeight: 300,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
In Tech We Innovate.
|
||||||
|
<br />
|
||||||
|
<span className="text-gradient-accent" style={{ fontWeight: 600, fontStyle: 'normal' }}>
|
||||||
|
In Trust We Lead.
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
<p
|
||||||
|
style={{
|
||||||
|
margin: '0.6rem 0 0',
|
||||||
|
fontSize: '0.65rem',
|
||||||
|
letterSpacing: '0.28em',
|
||||||
|
textTransform: 'uppercase',
|
||||||
|
color: '#8891C7',
|
||||||
|
fontWeight: 700,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
YS Lootah Robotics · Dubai · UAE
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Right — capability modules */}
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
position: 'relative',
|
||||||
|
display: 'grid',
|
||||||
|
gridTemplateColumns: 'repeat(2, minmax(0, 1fr))',
|
||||||
|
gap: '0.875rem',
|
||||||
|
minWidth: 0,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{/* connector lines */}
|
||||||
|
<div
|
||||||
|
aria-hidden
|
||||||
|
style={{
|
||||||
|
position: 'absolute',
|
||||||
|
top: '50%',
|
||||||
|
left: '8%',
|
||||||
|
right: '8%',
|
||||||
|
height: 1,
|
||||||
|
background:
|
||||||
|
'linear-gradient(90deg, transparent, rgba(58,85,196,0.45), rgba(222,224,240,0.45), transparent)',
|
||||||
|
filter: 'blur(0.3px)',
|
||||||
|
pointerEvents: 'none',
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
aria-hidden
|
||||||
|
style={{
|
||||||
|
position: 'absolute',
|
||||||
|
left: '50%',
|
||||||
|
top: '8%',
|
||||||
|
bottom: '8%',
|
||||||
|
width: 1,
|
||||||
|
background:
|
||||||
|
'linear-gradient(180deg, transparent, rgba(222,224,240,0.4), rgba(58,85,196,0.5), transparent)',
|
||||||
|
filter: 'blur(0.3px)',
|
||||||
|
pointerEvents: 'none',
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
|
||||||
|
{PILLARS.map((p, i) => (
|
||||||
|
<CapabilityTile key={p.num} pillar={p} offset={i % 2 === 1 ? 'down' : 'up'} />
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<style jsx>{`
|
||||||
|
.cs-grid {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
@media (min-width: 1024px) {
|
||||||
|
.cs-grid {
|
||||||
|
grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`}</style>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function CapabilityTile({ pillar, offset }: { pillar: Pillar; offset: 'up' | 'down' }) {
|
||||||
|
const { num, title, body, Icon, accent } = pillar;
|
||||||
|
return (
|
||||||
|
<article
|
||||||
|
className="cap-tile"
|
||||||
|
style={{
|
||||||
|
position: 'relative',
|
||||||
|
display: 'flex',
|
||||||
|
flexDirection: 'column',
|
||||||
|
gap: '0.75rem',
|
||||||
|
padding: '1.25rem',
|
||||||
|
borderRadius: 18,
|
||||||
|
background:
|
||||||
|
'linear-gradient(135deg, rgba(28,27,33,0.78), rgba(8,8,10,0.94))',
|
||||||
|
border: '1px solid rgba(222,224,240,0.10)',
|
||||||
|
color: '#FBFBFD',
|
||||||
|
overflow: 'hidden',
|
||||||
|
minHeight: 200,
|
||||||
|
boxShadow: '0 14px 38px rgba(0,0,0,0.55), inset 0 1px 0 rgba(222,224,240,0.06)',
|
||||||
|
transition: 'transform 0.35s cubic-bezier(0.16,1,0.3,1), box-shadow 0.35s ease, border-color 0.35s ease',
|
||||||
|
transform: offset === 'down' ? 'translateY(8px)' : 'translateY(0)',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{/* gradient border ring */}
|
||||||
|
<div
|
||||||
|
aria-hidden
|
||||||
|
style={{
|
||||||
|
position: 'absolute',
|
||||||
|
inset: 0,
|
||||||
|
borderRadius: 18,
|
||||||
|
padding: 1,
|
||||||
|
background: `linear-gradient(135deg, ${accent}55, transparent 50%, ${accent}33)`,
|
||||||
|
WebkitMask: 'linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0)',
|
||||||
|
WebkitMaskComposite: 'xor',
|
||||||
|
maskComposite: 'exclude',
|
||||||
|
pointerEvents: 'none',
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
{/* hover glow */}
|
||||||
|
<span
|
||||||
|
className="cap-tile-glow"
|
||||||
|
aria-hidden
|
||||||
|
style={{
|
||||||
|
position: 'absolute',
|
||||||
|
inset: '-20%',
|
||||||
|
background: `radial-gradient(circle at 50% 0%, ${accent}33, transparent 60%)`,
|
||||||
|
opacity: 0,
|
||||||
|
transition: 'opacity 0.4s ease',
|
||||||
|
pointerEvents: 'none',
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<div style={{ position: 'relative', display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>
|
||||||
|
<span
|
||||||
|
style={{
|
||||||
|
width: 42,
|
||||||
|
height: 42,
|
||||||
|
borderRadius: 12,
|
||||||
|
display: 'inline-flex',
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'center',
|
||||||
|
background: `${accent}1A`,
|
||||||
|
border: `1px solid ${accent}55`,
|
||||||
|
boxShadow: `0 0 18px ${accent}33`,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Icon size={20} style={{ color: accent }} />
|
||||||
|
</span>
|
||||||
|
<span
|
||||||
|
style={{
|
||||||
|
fontSize: '0.7rem',
|
||||||
|
fontWeight: 800,
|
||||||
|
letterSpacing: '0.18em',
|
||||||
|
color: '#8891C7',
|
||||||
|
padding: '0.25rem 0.55rem',
|
||||||
|
borderRadius: 999,
|
||||||
|
border: '1px solid rgba(136,145,199,0.3)',
|
||||||
|
background: 'rgba(14,13,18,0.6)',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{num}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h3
|
||||||
|
style={{
|
||||||
|
margin: 0,
|
||||||
|
fontSize: 'clamp(1.05rem, 1.8vw, 1.2rem)',
|
||||||
|
fontWeight: 600,
|
||||||
|
letterSpacing: '-0.01em',
|
||||||
|
lineHeight: 1.2,
|
||||||
|
position: 'relative',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{title}
|
||||||
|
</h3>
|
||||||
|
|
||||||
|
<p
|
||||||
|
style={{
|
||||||
|
margin: 0,
|
||||||
|
fontSize: '0.88rem',
|
||||||
|
lineHeight: 1.55,
|
||||||
|
color: '#BFC3E2',
|
||||||
|
position: 'relative',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{body}
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<style jsx>{`
|
||||||
|
.cap-tile:hover {
|
||||||
|
transform: translateY(${offset === 'down' ? '2px' : '-6px'});
|
||||||
|
border-color: ${accent}66;
|
||||||
|
box-shadow: 0 22px 60px rgba(0, 0, 0, 0.7), 0 0 30px ${accent}33;
|
||||||
|
}
|
||||||
|
.cap-tile:hover .cap-tile-glow {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
`}</style>
|
||||||
|
</article>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function CredibilityBadge({ Icon, text }: { Icon: LucideIcon; text: string }) {
|
||||||
|
return (
|
||||||
|
<span
|
||||||
|
style={{
|
||||||
|
display: 'inline-flex',
|
||||||
|
alignItems: 'center',
|
||||||
|
gap: '0.5rem',
|
||||||
|
padding: '0.45rem 0.8rem',
|
||||||
|
borderRadius: 999,
|
||||||
|
background: 'rgba(14,13,18,0.7)',
|
||||||
|
border: '1px solid rgba(222,224,240,0.18)',
|
||||||
|
color: '#DEE0F0',
|
||||||
|
fontSize: '0.7rem',
|
||||||
|
fontWeight: 700,
|
||||||
|
letterSpacing: '0.16em',
|
||||||
|
textTransform: 'uppercase',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Icon size={13} style={{ color: '#DEE0F0' }} />
|
||||||
|
{text}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
'use client';
|
'use client';
|
||||||
|
|
||||||
|
import Image from 'next/image';
|
||||||
import Link from 'next/link';
|
import Link from 'next/link';
|
||||||
import { PremiumButton } from '@/components/ui/PremiumButton';
|
import { PremiumButton } from '@/components/ui/PremiumButton';
|
||||||
|
|
||||||
@ -9,12 +10,12 @@ export function ExclusiveAccessSection() {
|
|||||||
style={{
|
style={{
|
||||||
position: 'relative',
|
position: 'relative',
|
||||||
borderRadius: '2rem',
|
borderRadius: '2rem',
|
||||||
padding: 'clamp(2rem, 5vw, 4rem)',
|
padding: 'clamp(1.75rem, 4vw, 3rem)',
|
||||||
overflow: 'hidden',
|
overflow: 'hidden',
|
||||||
background:
|
background:
|
||||||
'radial-gradient(ellipse 60% 80% at 0% 0%, rgba(222, 224, 240,0.18), transparent 60%), radial-gradient(ellipse 70% 80% at 100% 100%, rgba(136, 145, 199,0.22), transparent 60%), linear-gradient(135deg, rgba(28, 27, 33,0.92), rgba(5,5,5,0.97))',
|
'radial-gradient(ellipse 60% 80% at 0% 0%, rgba(222,224,240,0.18), transparent 60%), radial-gradient(ellipse 70% 80% at 100% 100%, rgba(136,145,199,0.22), transparent 60%), linear-gradient(135deg, rgba(28,27,33,0.92), rgba(5,5,5,0.97))',
|
||||||
border: '1px solid rgba(39, 63, 148,0.32)',
|
border: '1px solid rgba(39,63,148,0.32)',
|
||||||
boxShadow: '0 30px 100px rgba(0,0,0,0.7), inset 0 1px 0 rgba(222, 224, 240,0.06)',
|
boxShadow: '0 30px 100px rgba(0,0,0,0.7), inset 0 1px 0 rgba(222,224,240,0.06)',
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
@ -23,7 +24,7 @@ export function ExclusiveAccessSection() {
|
|||||||
position: 'absolute',
|
position: 'absolute',
|
||||||
inset: 0,
|
inset: 0,
|
||||||
background:
|
background:
|
||||||
'linear-gradient(rgba(39, 63, 148,0.05) 1px, transparent 1px), linear-gradient(90deg, rgba(39, 63, 148,0.05) 1px, transparent 1px)',
|
'linear-gradient(rgba(39,63,148,0.05) 1px, transparent 1px), linear-gradient(90deg, rgba(39,63,148,0.05) 1px, transparent 1px)',
|
||||||
backgroundSize: '48px 48px',
|
backgroundSize: '48px 48px',
|
||||||
maskImage: 'radial-gradient(ellipse 60% 80% at 50% 30%, #000 30%, transparent 80%)',
|
maskImage: 'radial-gradient(ellipse 60% 80% at 50% 30%, #000 30%, transparent 80%)',
|
||||||
WebkitMaskImage: 'radial-gradient(ellipse 60% 80% at 50% 30%, #000 30%, transparent 80%)',
|
WebkitMaskImage: 'radial-gradient(ellipse 60% 80% at 50% 30%, #000 30%, transparent 80%)',
|
||||||
@ -31,8 +32,12 @@ export function ExclusiveAccessSection() {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div style={{ position: 'relative', display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(min(280px, 100%), 1fr))', gap: 'clamp(2rem, 4vw, 3rem)', alignItems: 'center' }}>
|
<div
|
||||||
<div style={{ display: 'flex', flexDirection: 'column', gap: '1.25rem' }}>
|
className="exa-grid"
|
||||||
|
style={{ position: 'relative', display: 'grid', gap: 'clamp(1.5rem, 3.5vw, 2.5rem)', alignItems: 'stretch' }}
|
||||||
|
>
|
||||||
|
{/* Left — copy */}
|
||||||
|
<div style={{ display: 'flex', flexDirection: 'column', gap: '1.25rem', minWidth: 0 }}>
|
||||||
<span
|
<span
|
||||||
style={{
|
style={{
|
||||||
alignSelf: 'flex-start',
|
alignSelf: 'flex-start',
|
||||||
@ -41,8 +46,8 @@ export function ExclusiveAccessSection() {
|
|||||||
gap: '0.6rem',
|
gap: '0.6rem',
|
||||||
padding: '0.5rem 0.9rem',
|
padding: '0.5rem 0.9rem',
|
||||||
borderRadius: 999,
|
borderRadius: 999,
|
||||||
border: '1px solid rgba(39, 63, 148,0.4)',
|
border: '1px solid rgba(39,63,148,0.45)',
|
||||||
background: 'rgba(39, 63, 148,0.08)',
|
background: 'rgba(39,63,148,0.10)',
|
||||||
color: '#DEE0F0',
|
color: '#DEE0F0',
|
||||||
fontSize: '0.7rem',
|
fontSize: '0.7rem',
|
||||||
letterSpacing: '0.24em',
|
letterSpacing: '0.24em',
|
||||||
@ -50,29 +55,29 @@ export function ExclusiveAccessSection() {
|
|||||||
fontWeight: 700,
|
fontWeight: 700,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<span aria-hidden style={{ width: 6, height: 6, borderRadius: 999, background: '#DEE0F0', boxShadow: '0 0 10px rgba(222, 224, 240,0.8)' }} />
|
<span aria-hidden style={{ width: 6, height: 6, borderRadius: 999, background: '#DEE0F0', boxShadow: '0 0 10px rgba(222,224,240,0.8)' }} />
|
||||||
Exclusive UAE Access
|
Exclusive UAE Access
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<h2 style={{ margin: 0, fontSize: 'clamp(1.8rem, 4.4vw, 2.8rem)', lineHeight: 1.1, fontWeight: 300, letterSpacing: '-0.03em' }}>
|
<h2 style={{ margin: 0, fontSize: 'clamp(1.7rem, 4vw, 2.6rem)', lineHeight: 1.1, fontWeight: 300, letterSpacing: '-0.03em' }}>
|
||||||
<span className="text-gradient" style={{ fontWeight: 500 }}>
|
<span className="text-gradient" style={{ fontWeight: 500 }}>
|
||||||
The UAE's dedicated destination for selected Unitree and Pudu Robotics solutions.
|
The UAE's dedicated destination for Unitree and Pudu Robotics.
|
||||||
</span>
|
</span>
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<p style={{ margin: 0, color: '#DEE0F0', fontSize: 'clamp(0.95rem, 2vw, 1.05rem)', lineHeight: 1.7 }}>
|
<p style={{ margin: 0, color: '#DEE0F0', fontSize: 'clamp(0.92rem, 1.8vw, 1rem)', lineHeight: 1.7, maxWidth: 520 }}>
|
||||||
YS Lootah Robotics holds exclusive sales rights in the UAE for selected Unitree and Pudu Robotics solutions. We deliver advanced robots to businesses, venues, and innovators across Dubai and the UAE — from inquiry to live deployment.
|
Selected solutions delivered to UAE businesses, venues, and innovators — from inquiry to live deployment, fully supported in Dubai.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<ul style={{ listStyle: 'none', padding: 0, margin: 0, display: 'flex', flexDirection: 'column', gap: '0.6rem' }}>
|
<ul style={{ listStyle: 'none', padding: 0, margin: 0, display: 'flex', flexDirection: 'column', gap: '0.5rem' }}>
|
||||||
{[
|
{[
|
||||||
'Available exclusively in the UAE through YS Lootah Robotics.',
|
'Exclusive UAE sales territory.',
|
||||||
'Local Dubai team handles sales, demos, configuration, and deployment.',
|
'Local Dubai sales, demo, and deployment team.',
|
||||||
'Curated portfolio across humanoid, quadruped, service, and delivery robots.',
|
'Humanoid, quadruped, service, delivery, cleaning robots.',
|
||||||
'End-to-end procurement, training, and ongoing support.',
|
'End-to-end procurement, training, and ongoing support.',
|
||||||
].map((b) => (
|
].map((b) => (
|
||||||
<li key={b} style={{ display: 'flex', alignItems: 'flex-start', gap: '0.65rem', color: '#FBFBFD', fontSize: '0.95rem', lineHeight: 1.55 }}>
|
<li key={b} style={{ display: 'flex', alignItems: 'flex-start', gap: '0.65rem', color: '#FBFBFD', fontSize: '0.92rem', lineHeight: 1.5 }}>
|
||||||
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="#DEE0F0" strokeWidth="2.2" strokeLinecap="round" strokeLinejoin="round" style={{ flex: 'none', marginTop: 3 }} aria-hidden="true">
|
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#DEE0F0" strokeWidth="2.4" strokeLinecap="round" strokeLinejoin="round" style={{ flex: 'none', marginTop: 4 }} aria-hidden="true">
|
||||||
<path d="M20 6 9 17l-5-5" />
|
<path d="M20 6 9 17l-5-5" />
|
||||||
</svg>
|
</svg>
|
||||||
{b}
|
{b}
|
||||||
@ -80,84 +85,340 @@ export function ExclusiveAccessSection() {
|
|||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div style={{ display: 'flex', flexWrap: 'wrap', gap: '0.75rem', marginTop: '0.5rem' }}>
|
<div style={{ display: 'flex', flexWrap: 'wrap', gap: '0.625rem', marginTop: '0.5rem' }}>
|
||||||
<PremiumButton href="/robots/">Explore exclusive robots</PremiumButton>
|
<PremiumButton href="/robots/">Explore exclusive robots</PremiumButton>
|
||||||
<PremiumButton href="/contact/" variant="ghost">Request UAE quotation</PremiumButton>
|
<PremiumButton href="/contact/" variant="ghost">Request UAE quotation</PremiumButton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(2, 1fr)', gap: '1rem' }}>
|
{/* Right — premium showroom grid */}
|
||||||
<BrandTile name="Unitree" sub="Quadruped · Humanoid" href="/brands/#unitree" accent="#DEE0F0" />
|
<div
|
||||||
<BrandTile name="Pudu Robotics" sub="Service · Delivery · Cleaning" href="/brands/#pudu" accent="#8891C7" />
|
style={{
|
||||||
<Stat value="UAE" label="Exclusive sales territory" />
|
display: 'grid',
|
||||||
<Stat value="Dubai" label="Showroom & demo" />
|
gridTemplateColumns: 'repeat(2, minmax(0, 1fr))',
|
||||||
|
gap: '0.875rem',
|
||||||
|
minWidth: 0,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<BrandShowcaseTile
|
||||||
|
href="/brands/#unitree"
|
||||||
|
brand="Unitree"
|
||||||
|
tag="Quadruped · Humanoid"
|
||||||
|
accent="#DEE0F0"
|
||||||
|
primary={{ src: '/images/robots/unitree-g1.png', alt: 'Unitree G1 humanoid robot' }}
|
||||||
|
secondary={{ src: '/images/robots/unitree-go2.png', alt: 'Unitree Go2 quadruped robot' }}
|
||||||
|
/>
|
||||||
|
<BrandShowcaseTile
|
||||||
|
href="/brands/#pudu"
|
||||||
|
brand="Pudu Robotics"
|
||||||
|
tag="Service · Delivery · Cleaning"
|
||||||
|
accent="#8891C7"
|
||||||
|
primary={{ src: '/images/robots/pudu-bellabot.svg', alt: 'Pudu BellaBot delivery robot' }}
|
||||||
|
secondary={{ src: '/images/robots/pudu-kettybot.svg', alt: 'Pudu KettyBot service robot' }}
|
||||||
|
/>
|
||||||
|
<TerritoryTile />
|
||||||
|
<ShowroomTile />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<style jsx>{`
|
||||||
|
.exa-grid {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
@media (min-width: 1024px) {
|
||||||
|
.exa-grid {
|
||||||
|
grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`}</style>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function BrandTile({ name, sub, href, accent }: { name: string; sub: string; href: string; accent: string }) {
|
function BrandShowcaseTile({
|
||||||
|
href,
|
||||||
|
brand,
|
||||||
|
tag,
|
||||||
|
accent,
|
||||||
|
primary,
|
||||||
|
secondary,
|
||||||
|
}: {
|
||||||
|
href: string;
|
||||||
|
brand: string;
|
||||||
|
tag: string;
|
||||||
|
accent: string;
|
||||||
|
primary: { src: string; alt: string };
|
||||||
|
secondary: { src: string; alt: string };
|
||||||
|
}) {
|
||||||
return (
|
return (
|
||||||
<Link
|
<Link
|
||||||
href={href}
|
href={href}
|
||||||
style={{
|
style={{
|
||||||
|
position: 'relative',
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
flexDirection: 'column',
|
flexDirection: 'column',
|
||||||
justifyContent: 'space-between',
|
gap: '0.5rem',
|
||||||
gap: '0.6rem',
|
padding: '1rem',
|
||||||
padding: '1.25rem',
|
borderRadius: 18,
|
||||||
borderRadius: 16,
|
background:
|
||||||
background: `linear-gradient(135deg, rgba(28, 27, 33,0.85), rgba(5,5,5,0.95))`,
|
`radial-gradient(ellipse 80% 60% at 30% 0%, ${accent}1F, transparent 60%), linear-gradient(135deg, rgba(28,27,33,0.85), rgba(5,5,5,0.96))`,
|
||||||
border: `1px solid ${accent}44`,
|
border: `1px solid ${accent}44`,
|
||||||
color: '#FBFBFD',
|
color: '#FBFBFD',
|
||||||
textDecoration: 'none',
|
textDecoration: 'none',
|
||||||
position: 'relative',
|
|
||||||
overflow: 'hidden',
|
overflow: 'hidden',
|
||||||
minHeight: 130,
|
minHeight: 220,
|
||||||
|
boxShadow: '0 12px 36px rgba(0,0,0,0.55), inset 0 1px 0 rgba(222,224,240,0.06)',
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<span
|
{/* product visual area */}
|
||||||
aria-hidden
|
<div
|
||||||
style={{
|
style={{
|
||||||
position: 'absolute',
|
position: 'relative',
|
||||||
top: '-1rem',
|
flex: 1,
|
||||||
right: '-1rem',
|
minHeight: 130,
|
||||||
width: 80,
|
borderRadius: 12,
|
||||||
height: 80,
|
background:
|
||||||
borderRadius: '50%',
|
`radial-gradient(ellipse 60% 50% at 50% 60%, ${accent}1A 0%, transparent 65%), linear-gradient(180deg, rgba(28,27,33,0.7), rgba(10,10,12,0.95))`,
|
||||||
background: `radial-gradient(circle, ${accent}33, transparent 70%)`,
|
overflow: 'hidden',
|
||||||
pointerEvents: 'none',
|
border: '1px solid rgba(222,224,240,0.08)',
|
||||||
}}
|
}}
|
||||||
/>
|
>
|
||||||
<span style={{ fontSize: '1.05rem', fontWeight: 600, letterSpacing: '-0.01em' }}>{name}</span>
|
<div
|
||||||
<span style={{ fontSize: '0.72rem', color: '#8891C7', letterSpacing: '0.18em', textTransform: 'uppercase' }}>{sub}</span>
|
aria-hidden
|
||||||
<span style={{ fontSize: '0.68rem', color: accent, letterSpacing: '0.22em', textTransform: 'uppercase', fontWeight: 700, marginTop: 'auto' }}>
|
style={{
|
||||||
Available in UAE
|
position: 'absolute',
|
||||||
</span>
|
inset: 0,
|
||||||
|
backgroundImage:
|
||||||
|
'linear-gradient(rgba(191,195,226,0.06) 1px, transparent 1px), linear-gradient(90deg, rgba(191,195,226,0.06) 1px, transparent 1px)',
|
||||||
|
backgroundSize: '24px 24px',
|
||||||
|
maskImage: 'radial-gradient(ellipse 60% 60% at 50% 50%, #000 30%, transparent 80%)',
|
||||||
|
WebkitMaskImage: 'radial-gradient(ellipse 60% 60% at 50% 50%, #000 30%, transparent 80%)',
|
||||||
|
pointerEvents: 'none',
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
aria-hidden
|
||||||
|
style={{
|
||||||
|
position: 'absolute',
|
||||||
|
top: '8%',
|
||||||
|
left: '50%',
|
||||||
|
transform: 'translateX(-50%)',
|
||||||
|
width: '70%',
|
||||||
|
height: '70%',
|
||||||
|
background:
|
||||||
|
'radial-gradient(ellipse 60% 70% at 50% 30%, rgba(58,85,196,0.35) 0%, transparent 65%)',
|
||||||
|
filter: 'blur(8px)',
|
||||||
|
pointerEvents: 'none',
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
|
||||||
|
{/* secondary robot — back-left */}
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
position: 'absolute',
|
||||||
|
left: '6%',
|
||||||
|
bottom: '8%',
|
||||||
|
width: '46%',
|
||||||
|
height: '78%',
|
||||||
|
opacity: 0.7,
|
||||||
|
filter: 'drop-shadow(0 12px 20px rgba(0,0,0,0.6))',
|
||||||
|
transform: 'scale(0.88)',
|
||||||
|
transformOrigin: 'bottom left',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Image
|
||||||
|
src={secondary.src}
|
||||||
|
alt={secondary.alt}
|
||||||
|
fill
|
||||||
|
sizes="220px"
|
||||||
|
style={{ objectFit: 'contain', objectPosition: 'center bottom' }}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* primary robot — front-right, slightly larger */}
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
position: 'absolute',
|
||||||
|
right: '4%',
|
||||||
|
bottom: '6%',
|
||||||
|
width: '62%',
|
||||||
|
height: '90%',
|
||||||
|
filter:
|
||||||
|
'drop-shadow(0 16px 28px rgba(0,0,0,0.75)) drop-shadow(0 0 20px rgba(58,85,196,0.4))',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<Image
|
||||||
|
src={primary.src}
|
||||||
|
alt={primary.alt}
|
||||||
|
fill
|
||||||
|
sizes="280px"
|
||||||
|
style={{ objectFit: 'contain', objectPosition: 'center bottom' }}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<span
|
||||||
|
style={{
|
||||||
|
position: 'absolute',
|
||||||
|
top: '0.5rem',
|
||||||
|
right: '0.5rem',
|
||||||
|
padding: '0.25rem 0.55rem',
|
||||||
|
borderRadius: 999,
|
||||||
|
background: 'rgba(14,13,18,0.7)',
|
||||||
|
border: `1px solid ${accent}55`,
|
||||||
|
color: accent,
|
||||||
|
fontSize: '0.55rem',
|
||||||
|
fontWeight: 700,
|
||||||
|
letterSpacing: '0.22em',
|
||||||
|
textTransform: 'uppercase',
|
||||||
|
backdropFilter: 'blur(6px)',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
UAE
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div style={{ display: 'flex', flexDirection: 'column', gap: 4, padding: '0.25rem 0.25rem 0' }}>
|
||||||
|
<span style={{ fontSize: '0.62rem', color: '#8891C7', letterSpacing: '0.22em', textTransform: 'uppercase', fontWeight: 700 }}>
|
||||||
|
{tag}
|
||||||
|
</span>
|
||||||
|
<span style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', gap: '0.5rem' }}>
|
||||||
|
<span style={{ fontSize: '1rem', fontWeight: 700, letterSpacing: '-0.01em' }}>{brand}</span>
|
||||||
|
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke={accent} strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true">
|
||||||
|
<line x1="5" y1="12" x2="19" y2="12" />
|
||||||
|
<polyline points="12 5 19 12 12 19" />
|
||||||
|
</svg>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
</Link>
|
</Link>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function Stat({ value, label }: { value: string; label: string }) {
|
function TerritoryTile() {
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
style={{
|
style={{
|
||||||
padding: '1.25rem',
|
position: 'relative',
|
||||||
borderRadius: 16,
|
|
||||||
background: 'linear-gradient(135deg, rgba(28, 27, 33,0.7), rgba(5,5,5,0.92))',
|
|
||||||
border: '1px solid rgba(39, 63, 148,0.22)',
|
|
||||||
display: 'flex',
|
display: 'flex',
|
||||||
flexDirection: 'column',
|
flexDirection: 'column',
|
||||||
gap: '0.4rem',
|
justifyContent: 'space-between',
|
||||||
minHeight: 130,
|
padding: '1rem',
|
||||||
justifyContent: 'center',
|
borderRadius: 18,
|
||||||
|
background:
|
||||||
|
'radial-gradient(ellipse 80% 80% at 100% 0%, rgba(58,85,196,0.30), transparent 60%), linear-gradient(135deg, rgba(28,27,33,0.85), rgba(5,5,5,0.96))',
|
||||||
|
border: '1px solid rgba(58,85,196,0.45)',
|
||||||
|
color: '#FBFBFD',
|
||||||
|
overflow: 'hidden',
|
||||||
|
minHeight: 170,
|
||||||
|
boxShadow: '0 12px 36px rgba(0,0,0,0.55), inset 0 1px 0 rgba(222,224,240,0.06)',
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<span className="text-gradient-accent" style={{ fontSize: 'clamp(1.5rem, 2.6vw, 1.9rem)', fontWeight: 700, letterSpacing: '-0.02em' }}>
|
{/* abstract UAE "territory" graphic — ring map style */}
|
||||||
{value}
|
<svg
|
||||||
|
aria-hidden
|
||||||
|
viewBox="0 0 220 140"
|
||||||
|
style={{
|
||||||
|
position: 'absolute',
|
||||||
|
inset: 0,
|
||||||
|
width: '100%',
|
||||||
|
height: '100%',
|
||||||
|
opacity: 0.4,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<defs>
|
||||||
|
<radialGradient id="terr-glow" cx="50%" cy="50%" r="60%">
|
||||||
|
<stop offset="0%" stopColor="#3a55c4" stopOpacity="0.8" />
|
||||||
|
<stop offset="100%" stopColor="#3a55c4" stopOpacity="0" />
|
||||||
|
</radialGradient>
|
||||||
|
</defs>
|
||||||
|
<circle cx="155" cy="55" r="42" fill="url(#terr-glow)" />
|
||||||
|
<circle cx="155" cy="55" r="32" fill="none" stroke="#DEE0F0" strokeOpacity="0.45" strokeDasharray="2 4" />
|
||||||
|
<circle cx="155" cy="55" r="22" fill="none" stroke="#DEE0F0" strokeOpacity="0.65" />
|
||||||
|
<circle cx="155" cy="55" r="3.5" fill="#DEE0F0" />
|
||||||
|
<text x="160" y="44" fontFamily="Inter, sans-serif" fontSize="8" letterSpacing="3" fill="#BFC3E2" textAnchor="start">DXB</text>
|
||||||
|
</svg>
|
||||||
|
<div style={{ position: 'relative', display: 'flex', flexDirection: 'column', gap: 4 }}>
|
||||||
|
<span style={{ fontSize: '0.62rem', color: '#8891C7', letterSpacing: '0.22em', textTransform: 'uppercase', fontWeight: 700 }}>
|
||||||
|
Sales Territory
|
||||||
|
</span>
|
||||||
|
<span className="text-gradient-accent" style={{ fontSize: 'clamp(1.6rem, 2.8vw, 2rem)', fontWeight: 700, letterSpacing: '-0.02em', lineHeight: 1 }}>
|
||||||
|
UAE
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<span style={{ position: 'relative', fontSize: '0.72rem', color: '#DEE0F0', lineHeight: 1.4, marginTop: 'auto' }}>
|
||||||
|
Exclusive sales rights — selected Unitree & Pudu solutions.
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function ShowroomTile() {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
position: 'relative',
|
||||||
|
display: 'flex',
|
||||||
|
flexDirection: 'column',
|
||||||
|
justifyContent: 'space-between',
|
||||||
|
padding: '1rem',
|
||||||
|
borderRadius: 18,
|
||||||
|
background:
|
||||||
|
'radial-gradient(ellipse 80% 80% at 0% 100%, rgba(222,224,240,0.18), transparent 60%), linear-gradient(135deg, rgba(28,27,33,0.85), rgba(5,5,5,0.96))',
|
||||||
|
border: '1px solid rgba(222,224,240,0.22)',
|
||||||
|
color: '#FBFBFD',
|
||||||
|
overflow: 'hidden',
|
||||||
|
minHeight: 170,
|
||||||
|
boxShadow: '0 12px 36px rgba(0,0,0,0.55), inset 0 1px 0 rgba(222,224,240,0.06)',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<svg
|
||||||
|
aria-hidden
|
||||||
|
viewBox="0 0 220 140"
|
||||||
|
style={{ position: 'absolute', inset: 0, width: '100%', height: '100%', opacity: 0.38 }}
|
||||||
|
>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="show-floor" x1="0" y1="1" x2="0" y2="0">
|
||||||
|
<stop offset="0%" stopColor="#3a55c4" stopOpacity="0.6" />
|
||||||
|
<stop offset="100%" stopColor="#3a55c4" stopOpacity="0" />
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
{/* perspective floor */}
|
||||||
|
{[0, 1, 2, 3, 4].map((i) => (
|
||||||
|
<line
|
||||||
|
key={i}
|
||||||
|
x1={20 - i * 5}
|
||||||
|
x2={200 + i * 5}
|
||||||
|
y1={70 + i * 14}
|
||||||
|
y2={70 + i * 14}
|
||||||
|
stroke="#DEE0F0"
|
||||||
|
strokeOpacity={0.35 - i * 0.06}
|
||||||
|
/>
|
||||||
|
))}
|
||||||
|
{[0, 1, 2, 3, 4, 5, 6].map((i) => (
|
||||||
|
<line
|
||||||
|
key={`v-${i}`}
|
||||||
|
x1={30 + i * 27}
|
||||||
|
y1={70}
|
||||||
|
x2={30 + i * 36 - 30}
|
||||||
|
y2={140}
|
||||||
|
stroke="#DEE0F0"
|
||||||
|
strokeOpacity={0.2}
|
||||||
|
/>
|
||||||
|
))}
|
||||||
|
<rect x="60" y="40" width="100" height="55" fill="url(#show-floor)" />
|
||||||
|
<rect x="60" y="40" width="100" height="55" fill="none" stroke="#DEE0F0" strokeOpacity="0.4" />
|
||||||
|
<circle cx="110" cy="68" r="6" fill="#DEE0F0" />
|
||||||
|
</svg>
|
||||||
|
<div style={{ position: 'relative', display: 'flex', flexDirection: 'column', gap: 4 }}>
|
||||||
|
<span style={{ fontSize: '0.62rem', color: '#8891C7', letterSpacing: '0.22em', textTransform: 'uppercase', fontWeight: 700 }}>
|
||||||
|
Showroom & Demo
|
||||||
|
</span>
|
||||||
|
<span className="text-gradient-accent" style={{ fontSize: 'clamp(1.4rem, 2.6vw, 1.85rem)', fontWeight: 700, letterSpacing: '-0.02em', lineHeight: 1 }}>
|
||||||
|
Dubai
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<span style={{ position: 'relative', fontSize: '0.72rem', color: '#DEE0F0', lineHeight: 1.4, marginTop: 'auto' }}>
|
||||||
|
Live demos · City Bay Business Center.
|
||||||
</span>
|
</span>
|
||||||
<span style={{ fontSize: '0.7rem', color: '#8891C7', letterSpacing: '0.22em', textTransform: 'uppercase' }}>{label}</span>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -309,7 +309,7 @@ export function Hero3DRobotics() {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{/* Robot image — main (enlarged ~12%) */}
|
{/* Robot image — main */}
|
||||||
{FEATURED_ROBOTS.map((r, idx) => (
|
{FEATURED_ROBOTS.map((r, idx) => (
|
||||||
<div
|
<div
|
||||||
key={r.id}
|
key={r.id}
|
||||||
@ -319,20 +319,20 @@ export function Hero3DRobotics() {
|
|||||||
display: 'flex',
|
display: 'flex',
|
||||||
alignItems: 'flex-end',
|
alignItems: 'flex-end',
|
||||||
justifyContent: 'center',
|
justifyContent: 'center',
|
||||||
paddingTop: 'clamp(0.75rem, 2.5vw, 1.5rem)',
|
paddingTop: 'clamp(2rem, 5vw, 3rem)',
|
||||||
paddingBottom: '30%',
|
paddingBottom: '36%',
|
||||||
paddingLeft: 'clamp(0.5rem, 2vw, 1rem)',
|
paddingLeft: 'clamp(1rem, 4vw, 2rem)',
|
||||||
paddingRight: 'clamp(0.5rem, 2vw, 1rem)',
|
paddingRight: 'clamp(1rem, 4vw, 2rem)',
|
||||||
opacity: idx === activeIdx ? 1 : 0,
|
opacity: idx === activeIdx ? 1 : 0,
|
||||||
transform:
|
transform:
|
||||||
idx === activeIdx
|
idx === activeIdx
|
||||||
? `translateY(0) translateX(${tilt.ry * 0.45}px) scale(1.12)`
|
? `translateY(0) translateX(${tilt.ry * 0.4}px) scale(1)`
|
||||||
: 'translateY(22px) scale(0.97)',
|
: 'translateY(18px) scale(0.96)',
|
||||||
transformOrigin: 'center bottom',
|
transformOrigin: 'center bottom',
|
||||||
transition: 'opacity 1s ease, transform 0.9s cubic-bezier(0.16,1,0.3,1)',
|
transition: 'opacity 1s ease, transform 0.9s cubic-bezier(0.16,1,0.3,1)',
|
||||||
filter:
|
filter:
|
||||||
idx === activeIdx
|
idx === activeIdx
|
||||||
? 'drop-shadow(0 32px 50px rgba(0,0,0,0.85)) drop-shadow(0 18px 28px rgba(0,0,0,0.6)) drop-shadow(0 0 36px rgba(58,85,196,0.55))'
|
? 'drop-shadow(0 26px 42px rgba(0,0,0,0.78)) drop-shadow(0 14px 22px rgba(0,0,0,0.55)) drop-shadow(0 0 30px rgba(58,85,196,0.45))'
|
||||||
: 'none',
|
: 'none',
|
||||||
willChange: 'transform',
|
willChange: 'transform',
|
||||||
}}
|
}}
|
||||||
@ -343,7 +343,7 @@ export function Hero3DRobotics() {
|
|||||||
src={r.image}
|
src={r.image}
|
||||||
alt={`${r.brandLabel} ${r.name}`}
|
alt={`${r.brandLabel} ${r.name}`}
|
||||||
fill
|
fill
|
||||||
sizes="(max-width: 768px) 90vw, 720px"
|
sizes="(max-width: 768px) 90vw, 620px"
|
||||||
style={{ objectFit: 'contain', objectPosition: 'center bottom' }}
|
style={{ objectFit: 'contain', objectPosition: 'center bottom' }}
|
||||||
priority={idx === 0}
|
priority={idx === 0}
|
||||||
/>
|
/>
|
||||||
@ -367,19 +367,19 @@ export function Hero3DRobotics() {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
{/* Floor reflection (mirror image, faded, blue-tinted) */}
|
{/* Floor reflection (mirror image, faded) */}
|
||||||
{FEATURED_ROBOTS.map((r, idx) => (
|
{FEATURED_ROBOTS.map((r, idx) => (
|
||||||
<div
|
<div
|
||||||
key={`reflect-${r.id}`}
|
key={`reflect-${r.id}`}
|
||||||
aria-hidden
|
aria-hidden
|
||||||
style={{
|
style={{
|
||||||
position: 'absolute',
|
position: 'absolute',
|
||||||
left: 'clamp(0.5rem, 2vw, 1rem)',
|
left: 'clamp(1rem, 4vw, 2rem)',
|
||||||
right: 'clamp(0.5rem, 2vw, 1rem)',
|
right: 'clamp(1rem, 4vw, 2rem)',
|
||||||
bottom: '4%',
|
bottom: '6%',
|
||||||
height: '24%',
|
height: '22%',
|
||||||
opacity: idx === activeIdx ? 0.32 : 0,
|
opacity: idx === activeIdx ? 0.28 : 0,
|
||||||
transform: `scaleY(-1) translateX(${tilt.ry * 0.45}px) scale(1.12)`,
|
transform: `scaleY(-1) translateX(${tilt.ry * 0.4}px)`,
|
||||||
transformOrigin: 'center top',
|
transformOrigin: 'center top',
|
||||||
maskImage:
|
maskImage:
|
||||||
'linear-gradient(to bottom, rgba(0,0,0,0.8), transparent 78%)',
|
'linear-gradient(to bottom, rgba(0,0,0,0.8), transparent 78%)',
|
||||||
@ -387,14 +387,14 @@ export function Hero3DRobotics() {
|
|||||||
'linear-gradient(to bottom, rgba(0,0,0,0.8), transparent 78%)',
|
'linear-gradient(to bottom, rgba(0,0,0,0.8), transparent 78%)',
|
||||||
transition: 'opacity 1s ease, transform 0.9s cubic-bezier(0.16,1,0.3,1)',
|
transition: 'opacity 1s ease, transform 0.9s cubic-bezier(0.16,1,0.3,1)',
|
||||||
pointerEvents: 'none',
|
pointerEvents: 'none',
|
||||||
filter: 'blur(1.4px) hue-rotate(220deg)',
|
filter: 'blur(1.2px)',
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<Image
|
<Image
|
||||||
src={r.image}
|
src={r.image}
|
||||||
alt=""
|
alt=""
|
||||||
fill
|
fill
|
||||||
sizes="(max-width: 768px) 90vw, 720px"
|
sizes="(max-width: 768px) 90vw, 620px"
|
||||||
style={{ objectFit: 'contain', objectPosition: 'center top' }}
|
style={{ objectFit: 'contain', objectPosition: 'center top' }}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -10,100 +10,314 @@ const SPLINE_SCENE = 'https://prod.spline.design/kZDDjO5HuC9GJUM2/scene.splineco
|
|||||||
|
|
||||||
export function RoboticsSplineShowcase() {
|
export function RoboticsSplineShowcase() {
|
||||||
return (
|
return (
|
||||||
<section className="relative overflow-hidden bg-[#221F20] px-4 py-20 text-white sm:px-6 lg:px-8">
|
<section
|
||||||
|
style={{
|
||||||
|
position: 'relative',
|
||||||
|
overflow: 'hidden',
|
||||||
|
background: '#221F20',
|
||||||
|
color: '#FBFBFD',
|
||||||
|
padding: 'clamp(2.5rem, 6vw, 4.5rem) clamp(1rem, 4vw, 2rem)',
|
||||||
|
}}
|
||||||
|
>
|
||||||
<div
|
<div
|
||||||
aria-hidden
|
aria-hidden
|
||||||
className="absolute inset-0 bg-[radial-gradient(circle_at_70%_30%,rgba(39,63,148,0.42),transparent_42%),radial-gradient(circle_at_20%_80%,rgba(222,224,240,0.10),transparent_36%)]"
|
style={{
|
||||||
|
position: 'absolute',
|
||||||
|
inset: 0,
|
||||||
|
background:
|
||||||
|
'radial-gradient(circle at 70% 30%, rgba(39,63,148,0.42), transparent 42%), radial-gradient(circle at 20% 80%, rgba(222,224,240,0.10), transparent 36%)',
|
||||||
|
pointerEvents: 'none',
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
aria-hidden
|
aria-hidden
|
||||||
className="absolute inset-0 bg-[linear-gradient(to_right,rgba(255,255,255,0.045)_1px,transparent_1px),linear-gradient(to_bottom,rgba(255,255,255,0.035)_1px,transparent_1px)] bg-[size:64px_64px] opacity-30"
|
style={{
|
||||||
|
position: 'absolute',
|
||||||
|
inset: 0,
|
||||||
|
backgroundImage:
|
||||||
|
'linear-gradient(to right, rgba(255,255,255,0.045) 1px, transparent 1px), linear-gradient(to bottom, rgba(255,255,255,0.035) 1px, transparent 1px)',
|
||||||
|
backgroundSize: '64px 64px',
|
||||||
|
opacity: 0.3,
|
||||||
|
pointerEvents: 'none',
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div className="relative mx-auto max-w-7xl">
|
<div style={{ position: 'relative', maxWidth: 1320, margin: '0 auto' }}>
|
||||||
<Card className="relative min-h-[680px] overflow-hidden border-[#DEE0F0]/15 bg-[#221F20]/70">
|
<Card style={{ overflow: 'hidden', borderColor: 'rgba(222,224,240,0.15)', background: 'rgba(34,31,32,0.7)' }}>
|
||||||
<Spotlight size={460} />
|
<Spotlight size={460} />
|
||||||
|
|
||||||
<div className="grid min-h-[680px] grid-cols-1 lg:grid-cols-2">
|
<div className="spline-grid">
|
||||||
{/* Left: copy + CTA */}
|
{/* Left: copy + CTAs */}
|
||||||
<div className="relative z-10 flex flex-col justify-center p-6 sm:p-10 lg:p-14">
|
<div
|
||||||
<div className="mb-6 inline-flex w-fit items-center gap-2 rounded-full border border-[#DEE0F0]/25 bg-[#273F94]/20 px-4 py-2 text-[10px] font-bold uppercase tracking-[0.3em] text-[#DEE0F0]">
|
style={{
|
||||||
<span className="h-1.5 w-1.5 rounded-full bg-[#DEE0F0]" />
|
position: 'relative',
|
||||||
Exclusive UAE Access
|
zIndex: 10,
|
||||||
</div>
|
display: 'flex',
|
||||||
|
flexDirection: 'column',
|
||||||
|
justifyContent: 'center',
|
||||||
|
padding: 'clamp(1.5rem, 4vw, 3rem)',
|
||||||
|
minWidth: 0,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<span
|
||||||
|
style={{
|
||||||
|
display: 'inline-flex',
|
||||||
|
width: 'fit-content',
|
||||||
|
alignItems: 'center',
|
||||||
|
gap: '0.5rem',
|
||||||
|
marginBottom: '1.5rem',
|
||||||
|
padding: '0.5rem 1rem',
|
||||||
|
borderRadius: 999,
|
||||||
|
border: '1px solid rgba(222,224,240,0.25)',
|
||||||
|
background: 'rgba(39,63,148,0.20)',
|
||||||
|
fontSize: '0.65rem',
|
||||||
|
fontWeight: 700,
|
||||||
|
letterSpacing: '0.3em',
|
||||||
|
textTransform: 'uppercase',
|
||||||
|
color: '#DEE0F0',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<span style={{ width: 6, height: 6, borderRadius: 999, background: '#DEE0F0' }} />
|
||||||
|
Robotics Catalog · UAE
|
||||||
|
</span>
|
||||||
|
|
||||||
<h2 className="max-w-2xl text-4xl font-semibold leading-[1.02] tracking-[-0.04em] text-white sm:text-5xl lg:text-6xl xl:text-7xl">
|
<h1
|
||||||
Advanced robotics.
|
style={{
|
||||||
<span className="block bg-gradient-to-r from-white via-[#DEE0F0] to-[#8891C7] bg-clip-text text-transparent">
|
margin: 0,
|
||||||
Built for UAE innovation.
|
fontSize: 'clamp(1.9rem, 4.2vw, 3.4rem)',
|
||||||
|
fontWeight: 600,
|
||||||
|
lineHeight: 1.05,
|
||||||
|
letterSpacing: '-0.035em',
|
||||||
|
color: '#FBFBFD',
|
||||||
|
overflowWrap: 'break-word',
|
||||||
|
wordBreak: 'normal',
|
||||||
|
hyphens: 'manual',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Explore Exclusive{' '}
|
||||||
|
<span
|
||||||
|
style={{
|
||||||
|
display: 'inline-block',
|
||||||
|
background:
|
||||||
|
'linear-gradient(110deg, #FBFBFD 0%, #DEE0F0 35%, #BFC3E2 60%, #3a55c4 100%)',
|
||||||
|
WebkitBackgroundClip: 'text',
|
||||||
|
backgroundClip: 'text',
|
||||||
|
WebkitTextFillColor: 'transparent',
|
||||||
|
color: 'transparent',
|
||||||
|
filter: 'drop-shadow(0 4px 18px rgba(58,85,196,0.32))',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Robotics Solutions.
|
||||||
</span>
|
</span>
|
||||||
</h2>
|
</h1>
|
||||||
|
|
||||||
<p className="mt-6 max-w-xl text-base leading-7 text-[#DEE0F0]/78 sm:text-lg sm:leading-8">
|
<p
|
||||||
YS Lootah Robotics is the exclusive UAE sales destination for selected Unitree and Pudu Robotics solutions — helping businesses explore, configure, book demos, and deploy advanced robots across Dubai and the UAE.
|
style={{
|
||||||
|
marginTop: '1.5rem',
|
||||||
|
marginBottom: 0,
|
||||||
|
maxWidth: 560,
|
||||||
|
fontSize: 'clamp(0.95rem, 1.6vw, 1.1rem)',
|
||||||
|
lineHeight: 1.7,
|
||||||
|
color: 'rgba(222,224,240,0.82)',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Browse selected Unitree and Pudu Robotics solutions available exclusively in the UAE through YS Lootah Robotics — humanoid, quadruped, service, delivery, and cleaning robots ready for Dubai businesses.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div className="mt-8 flex flex-col gap-3 sm:flex-row">
|
<div
|
||||||
|
style={{
|
||||||
|
marginTop: '2rem',
|
||||||
|
display: 'flex',
|
||||||
|
flexWrap: 'wrap',
|
||||||
|
gap: '0.625rem',
|
||||||
|
}}
|
||||||
|
>
|
||||||
<Link
|
<Link
|
||||||
href="/robots/"
|
href="/contact/"
|
||||||
className="group inline-flex items-center justify-center rounded-full bg-gradient-to-br from-[#3a55c4] via-[#273F94] to-[#1a2e6e] px-6 py-3 text-xs font-bold uppercase tracking-[0.16em] text-white shadow-[0_18px_45px_rgba(39,63,148,0.45)] transition hover:brightness-110"
|
style={{
|
||||||
|
display: 'inline-flex',
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'center',
|
||||||
|
gap: '0.4rem',
|
||||||
|
padding: '0.85rem 1.5rem',
|
||||||
|
borderRadius: 999,
|
||||||
|
background: 'linear-gradient(135deg, #3a55c4 0%, #273F94 55%, #1a2e6e 100%)',
|
||||||
|
color: '#FBFBFD',
|
||||||
|
fontSize: '0.78rem',
|
||||||
|
fontWeight: 700,
|
||||||
|
letterSpacing: '0.14em',
|
||||||
|
textTransform: 'uppercase',
|
||||||
|
textDecoration: 'none',
|
||||||
|
boxShadow: '0 14px 40px rgba(39,63,148,0.5)',
|
||||||
|
whiteSpace: 'nowrap',
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
Explore robots
|
Request UAE quotation
|
||||||
<ArrowRight className="ml-2 h-4 w-4 transition group-hover:translate-x-1" />
|
<ArrowRight size={14} />
|
||||||
|
</Link>
|
||||||
|
<Link
|
||||||
|
href="/book-demo/"
|
||||||
|
style={{
|
||||||
|
display: 'inline-flex',
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'center',
|
||||||
|
gap: '0.4rem',
|
||||||
|
padding: '0.85rem 1.5rem',
|
||||||
|
borderRadius: 999,
|
||||||
|
border: '1px solid rgba(222,224,240,0.3)',
|
||||||
|
background: 'rgba(255,255,255,0.04)',
|
||||||
|
color: '#DEE0F0',
|
||||||
|
fontSize: '0.78rem',
|
||||||
|
fontWeight: 700,
|
||||||
|
letterSpacing: '0.14em',
|
||||||
|
textTransform: 'uppercase',
|
||||||
|
textDecoration: 'none',
|
||||||
|
backdropFilter: 'blur(12px)',
|
||||||
|
whiteSpace: 'nowrap',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
Book a demo
|
||||||
|
<ArrowRight size={14} />
|
||||||
</Link>
|
</Link>
|
||||||
|
|
||||||
<Link
|
<Link
|
||||||
href="/configure/"
|
href="/configure/"
|
||||||
className="group inline-flex items-center justify-center rounded-full border border-[#DEE0F0]/25 bg-white/[0.04] px-6 py-3 text-xs font-bold uppercase tracking-[0.16em] text-[#DEE0F0] backdrop-blur-xl transition hover:bg-white/[0.08]"
|
style={{
|
||||||
|
display: 'inline-flex',
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'center',
|
||||||
|
gap: '0.4rem',
|
||||||
|
padding: '0.85rem 1.5rem',
|
||||||
|
borderRadius: 999,
|
||||||
|
border: '1px solid rgba(136,145,199,0.5)',
|
||||||
|
background: 'transparent',
|
||||||
|
color: '#BFC3E2',
|
||||||
|
fontSize: '0.78rem',
|
||||||
|
fontWeight: 700,
|
||||||
|
letterSpacing: '0.14em',
|
||||||
|
textTransform: 'uppercase',
|
||||||
|
textDecoration: 'none',
|
||||||
|
whiteSpace: 'nowrap',
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
Configure your solution
|
Configure your solution
|
||||||
<ArrowRight className="ml-2 h-4 w-4 transition group-hover:translate-x-1" />
|
<ArrowRight size={14} />
|
||||||
</Link>
|
</Link>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="mt-10 grid max-w-xl grid-cols-1 gap-3 sm:grid-cols-3">
|
<div
|
||||||
|
style={{
|
||||||
|
marginTop: '2rem',
|
||||||
|
display: 'grid',
|
||||||
|
gridTemplateColumns: 'repeat(auto-fit, minmax(min(150px, 100%), 1fr))',
|
||||||
|
gap: '0.75rem',
|
||||||
|
maxWidth: 560,
|
||||||
|
}}
|
||||||
|
>
|
||||||
{[
|
{[
|
||||||
{ icon: BadgeCheck, label: 'Exclusive UAE', value: 'Access' },
|
{ Icon: BadgeCheck, label: 'Exclusive UAE', value: 'Access' },
|
||||||
{ icon: Cpu, label: 'Unitree + Pudu', value: 'Robotics' },
|
{ Icon: Cpu, label: 'Unitree + Pudu', value: 'Robotics' },
|
||||||
{ icon: MapPin, label: 'Dubai', value: 'Showroom & Demo' },
|
{ Icon: MapPin, label: 'Dubai', value: 'Demo & Sales' },
|
||||||
].map((item) => (
|
].map((item) => (
|
||||||
<div
|
<div
|
||||||
key={item.label}
|
key={item.label}
|
||||||
className="rounded-2xl border border-[#DEE0F0]/12 bg-white/[0.045] p-4 backdrop-blur-xl"
|
style={{
|
||||||
|
padding: '0.875rem 1rem',
|
||||||
|
borderRadius: 16,
|
||||||
|
border: '1px solid rgba(222,224,240,0.12)',
|
||||||
|
background: 'rgba(255,255,255,0.045)',
|
||||||
|
backdropFilter: 'blur(12px)',
|
||||||
|
minWidth: 0,
|
||||||
|
}}
|
||||||
>
|
>
|
||||||
<item.icon className="mb-3 h-5 w-5 text-[#DEE0F0]" />
|
<item.Icon size={18} style={{ color: '#DEE0F0', marginBottom: '0.5rem' }} />
|
||||||
<div className="text-sm font-semibold text-white">{item.label}</div>
|
<div style={{ fontSize: '0.85rem', fontWeight: 600, color: '#FBFBFD' }}>{item.label}</div>
|
||||||
<div className="mt-1 text-xs uppercase tracking-[0.18em] text-[#BFC3E2]/70">
|
<div style={{ marginTop: 4, fontSize: '0.66rem', letterSpacing: '0.2em', textTransform: 'uppercase', color: 'rgba(191,195,226,0.72)' }}>
|
||||||
{item.value}
|
{item.value}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p className="mt-8 text-[11px] font-semibold uppercase tracking-[0.32em] text-[#BFC3E2]">
|
<p
|
||||||
|
style={{
|
||||||
|
marginTop: '1.75rem',
|
||||||
|
marginBottom: 0,
|
||||||
|
fontSize: '0.7rem',
|
||||||
|
fontWeight: 600,
|
||||||
|
letterSpacing: '0.32em',
|
||||||
|
textTransform: 'uppercase',
|
||||||
|
color: '#BFC3E2',
|
||||||
|
}}
|
||||||
|
>
|
||||||
In Tech We Innovate · In Trust We Lead
|
In Tech We Innovate · In Trust We Lead
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Right: Spline 3D scene */}
|
{/* Right: Spline scene */}
|
||||||
<div className="relative min-h-[520px] overflow-hidden lg:min-h-full">
|
<div
|
||||||
|
className="spline-stage"
|
||||||
|
style={{
|
||||||
|
position: 'relative',
|
||||||
|
minHeight: 'clamp(360px, 60vw, 600px)',
|
||||||
|
overflow: 'hidden',
|
||||||
|
}}
|
||||||
|
>
|
||||||
<div
|
<div
|
||||||
aria-hidden
|
aria-hidden
|
||||||
className="absolute inset-6 rounded-[2rem] border border-[#DEE0F0]/15 bg-[#273F94]/10 shadow-[inset_0_0_80px_rgba(222,224,240,0.05)] backdrop-blur-xl"
|
style={{
|
||||||
|
position: 'absolute',
|
||||||
|
inset: '1.25rem',
|
||||||
|
borderRadius: '2rem',
|
||||||
|
border: '1px solid rgba(222,224,240,0.15)',
|
||||||
|
background: 'rgba(39,63,148,0.10)',
|
||||||
|
boxShadow: 'inset 0 0 80px rgba(222,224,240,0.05)',
|
||||||
|
backdropFilter: 'blur(14px)',
|
||||||
|
pointerEvents: 'none',
|
||||||
|
}}
|
||||||
/>
|
/>
|
||||||
<div className="absolute left-8 top-8 z-10 rounded-full border border-[#DEE0F0]/20 bg-[#221F20]/70 px-4 py-2 text-[10px] font-bold uppercase tracking-[0.24em] text-[#DEE0F0] backdrop-blur">
|
<div
|
||||||
|
style={{
|
||||||
|
position: 'absolute',
|
||||||
|
left: '1.75rem',
|
||||||
|
top: '1.75rem',
|
||||||
|
zIndex: 10,
|
||||||
|
padding: '0.5rem 0.9rem',
|
||||||
|
borderRadius: 999,
|
||||||
|
border: '1px solid rgba(222,224,240,0.22)',
|
||||||
|
background: 'rgba(34,31,32,0.72)',
|
||||||
|
color: '#DEE0F0',
|
||||||
|
fontSize: '0.6rem',
|
||||||
|
fontWeight: 700,
|
||||||
|
letterSpacing: '0.26em',
|
||||||
|
textTransform: 'uppercase',
|
||||||
|
backdropFilter: 'blur(8px)',
|
||||||
|
}}
|
||||||
|
>
|
||||||
Interactive Robot Scene
|
Interactive Robot Scene
|
||||||
</div>
|
</div>
|
||||||
<div className="absolute bottom-8 right-8 z-10 rounded-2xl border border-[#DEE0F0]/15 bg-[#221F20]/75 px-5 py-4 backdrop-blur-xl">
|
<div
|
||||||
<div className="text-[10px] uppercase tracking-[0.22em] text-[#BFC3E2]/70">
|
style={{
|
||||||
|
position: 'absolute',
|
||||||
|
right: '1.75rem',
|
||||||
|
bottom: '1.75rem',
|
||||||
|
zIndex: 10,
|
||||||
|
padding: '0.85rem 1.1rem',
|
||||||
|
borderRadius: 16,
|
||||||
|
border: '1px solid rgba(222,224,240,0.15)',
|
||||||
|
background: 'rgba(34,31,32,0.78)',
|
||||||
|
backdropFilter: 'blur(12px)',
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<div style={{ fontSize: '0.62rem', letterSpacing: '0.22em', textTransform: 'uppercase', color: 'rgba(191,195,226,0.7)' }}>
|
||||||
YS Lootah Robotics
|
YS Lootah Robotics
|
||||||
</div>
|
</div>
|
||||||
<div className="mt-1 text-sm font-semibold text-white">In Tech We Innovate</div>
|
<div style={{ marginTop: 4, fontSize: '0.88rem', fontWeight: 600, color: '#FBFBFD' }}>
|
||||||
|
In Tech We Innovate
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<SplineScene scene={SPLINE_SCENE} className="relative z-[2] h-full w-full" />
|
<SplineScene scene={SPLINE_SCENE} className="relative z-[2] h-full w-full" />
|
||||||
|
|
||||||
{/* Replacement note (visible only in dev) */}
|
|
||||||
<span className="sr-only">
|
<span className="sr-only">
|
||||||
Interactive 3D scene — placeholder Spline reference robot for development. Replace
|
Interactive 3D scene — placeholder Spline reference robot for development. Replace
|
||||||
with approved YS Lootah Robotics custom Spline scene when available.
|
with approved YS Lootah Robotics custom Spline scene when available.
|
||||||
@ -112,6 +326,26 @@ export function RoboticsSplineShowcase() {
|
|||||||
</div>
|
</div>
|
||||||
</Card>
|
</Card>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<style jsx>{`
|
||||||
|
.spline-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
min-height: 600px;
|
||||||
|
}
|
||||||
|
.spline-stage {
|
||||||
|
min-height: clamp(360px, 65vw, 520px);
|
||||||
|
}
|
||||||
|
@media (min-width: 1100px) {
|
||||||
|
.spline-grid {
|
||||||
|
grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
|
||||||
|
min-height: 680px;
|
||||||
|
}
|
||||||
|
.spline-stage {
|
||||||
|
min-height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`}</style>
|
||||||
</section>
|
</section>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user