Refactor code structure for improved readability and maintainability; removed redundant code blocks and optimized function calls.
CI/CD / test-and-build (push) Waiting to run
CI/CD / deploy (push) Blocked by required conditions

This commit is contained in:
Najjar\NajjarV02
2026-05-20 18:03:42 +04:00
parent bfe589be27
commit 729ab71c2c
65 changed files with 217 additions and 216 deletions
+3 -3
View File
@@ -10,9 +10,9 @@ import { FounderSection } from '@/components/robotics/FounderSection';
import { ServicesGrid } from '@/components/robotics/ServicesGrid';
export const metadata: Metadata = {
title: 'About YS Lootah Robotics — Exclusive UAE Access to Unitree & Pudu',
title: 'About YS Lootah Robotics Exclusive UAE Access to Unitree & Pudu',
description:
'YS Lootah Robotics is part of the Yousuf Saeed Lootah Investment Group — a trusted UAE robotics partner delivering AI, automation, and intelligent robotics across Dubai and the UAE.',
'YS Lootah Robotics is part of the Yousuf Saeed Lootah Investment Group a trusted UAE robotics partner delivering AI, automation, and intelligent robotics across Dubai and the UAE.',
};
export default function AboutPage() {
@@ -28,7 +28,7 @@ export default function AboutPage() {
<span className="text-gradient" style={{ fontWeight: 500 }}>In Tech We Innovate. In Trust We Lead.</span>
</h1>
<p style={{ margin: 0, color: '#DEE0F0', fontSize: 'clamp(0.95rem, 2vw, 1.05rem)', lineHeight: 1.7 }}>
YS Lootah Robotics is part of the Yousuf Saeed Lootah Investment Group — a trusted UAE technology and robotics partner helping businesses innovate, automate, and deploy intelligent robotic solutions. The UAE&apos;s dedicated destination for selected Unitree and Pudu Robotics solutions.
YS Lootah Robotics is part of the Yousuf Saeed Lootah Investment Group a trusted UAE technology and robotics partner helping businesses innovate, automate, and deploy intelligent robotic solutions. The UAE&apos;s dedicated destination for selected Unitree and Pudu Robotics solutions.
</p>
</div>
+1 -1
View File
@@ -56,7 +56,7 @@ export default function AdminLoginPage() {
Admin Login
</h1>
<p style={{ fontSize: '0.8rem', color: '#8891C7', margin: 0 }}>
Lootah Robotics — G1 Configurator
Lootah Robotics G1 Configurator
</p>
</div>
+2 -2
View File
@@ -108,7 +108,7 @@ export default function AdminPage() {
}
}
} else {
// DB is empty — push local items to server so they persist for all users
// DB is empty push local items to server so they persist for all users
if (localItems.length > 0) {
await fetch('/api/admin/pricing/', {
method: 'POST',
@@ -631,7 +631,7 @@ export default function AdminPage() {
{/* GLB file picker */}
<div style={{ marginTop: '0.625rem' }}>
<label style={labelStyle}>3D Model — .glb file (optional)</label>
<label style={labelStyle}>3D Model .glb file (optional)</label>
<label style={{
display: 'flex',
alignItems: 'center',
+1 -1
View File
@@ -19,7 +19,7 @@ async function verifyAdmin() {
// GET /api/admin/pricing/ → all pricing items from DB
export async function GET() {
// Public endpoint — no auth required so the storefront can read prices
// Public endpoint no auth required so the storefront can read prices
const items = await prisma.pricingItem.findMany({ orderBy: { sortOrder: 'asc' } });
return NextResponse.json({ items });
}
+1 -1
View File
@@ -52,7 +52,7 @@ export async function POST(request: Request) {
return NextResponse.json({ error: 'Only .glb files are allowed' }, { status: 400 });
}
// Sanitize the item ID — convert underscores to hyphens, keep lowercase letters, digits, hyphens
// Sanitize the item ID convert underscores to hyphens, keep lowercase letters, digits, hyphens
const safeId = itemId.toLowerCase().replace(/_/g, '-').replace(/[^a-z0-9-]/g, '');
if (!safeId) {
return NextResponse.json({ error: 'Invalid itemId' }, { status: 400 });
+1 -1
View File
@@ -33,7 +33,7 @@ export async function POST(request: Request) {
stripeStatus = pi.status;
stripeMetadata = (pi.metadata ?? {}) as Record<string, string>;
} catch {
// Stripe unreachable — save with client-submitted data
// Stripe unreachable save with client-submitted data
}
const m = stripeMetadata;
+3 -3
View File
@@ -4,9 +4,9 @@ import { FooterAndContact } from '@/components/FooterAndContact';
import { InquiryForm } from '@/components/robotics/InquiryForm';
export const metadata: Metadata = {
title: 'Book a Robotics Demo in Dubai — YS Lootah Robotics',
title: 'Book a Robotics Demo in Dubai YS Lootah Robotics',
description:
'Book a live robot demo at our Dubai showroom or at your venue. See selected Unitree and Pudu Robotics solutions in action — available exclusively in the UAE through YS Lootah Robotics.',
'Book a live robot demo at our Dubai showroom or at your venue. See selected Unitree and Pudu Robotics solutions in action available exclusively in the UAE through YS Lootah Robotics.',
};
export default function BookDemoPage() {
@@ -28,7 +28,7 @@ export default function BookDemoPage() {
<ul style={{ listStyle: 'none', padding: 0, margin: 0, display: 'flex', flexDirection: 'column', gap: '0.75rem' }}>
{[
'Choose a humanoid, quadruped, or service robot to see live',
'Designed around your industry — restaurant, mall, hotel, security, etc.',
'Designed around your industry restaurant, mall, hotel, security, etc.',
'Walk through configuration and deployment options',
'Get UAE-specific pricing and availability',
].map((b) => (
+5 -5
View File
@@ -7,9 +7,9 @@ import { MotionSection } from '@/components/ui/MotionSection';
import { DemoCTA } from '@/components/robotics/DemoCTA';
export const metadata: Metadata = {
title: 'Robotics Brands — Unitree & Pudu | Exclusive UAE Access via YS Lootah Robotics',
title: 'Robotics Brands Unitree & Pudu | Exclusive UAE Access via YS Lootah Robotics',
description:
'Selected Unitree and Pudu Robotics solutions — available exclusively in the UAE through YS Lootah Robotics. Humanoid, quadruped, service, delivery, and cleaning robots.',
'Selected Unitree and Pudu Robotics solutions available exclusively in the UAE through YS Lootah Robotics. Humanoid, quadruped, service, delivery, and cleaning robots.',
};
const ORDER: RobotBrand[] = ['unitree', 'pudu'];
@@ -25,11 +25,11 @@ export default function BrandsPage() {
<span className="eyebrow">Exclusive UAE Access · Dubai</span>
<h1 style={{ margin: 0, fontSize: 'clamp(2rem, 5vw, 3.4rem)', fontWeight: 300, lineHeight: 1.05, letterSpacing: '-0.03em' }}>
<span className="text-gradient" style={{ fontWeight: 500 }}>
Selected Unitree and Pudu solutions — exclusively in the UAE.
Selected Unitree and Pudu solutions exclusively in the UAE.
</span>
</h1>
<p style={{ margin: 0, color: '#DEE0F0', fontSize: 'clamp(0.95rem, 2vw, 1.05rem)', lineHeight: 1.7 }}>
YS Lootah Robotics holds exclusive UAE sales rights for selected Unitree and Pudu Robotics solutions — with on-the-ground sales, demo, and deployment support across Dubai and the UAE.
YS Lootah Robotics holds exclusive UAE sales rights for selected Unitree and Pudu Robotics solutions with on-the-ground sales, demo, and deployment support across Dubai and the UAE.
</p>
<p style={{ margin: 0, color: '#6a73a5', fontSize: '0.82rem', lineHeight: 1.6 }}>
Brand names and product trademarks are property of their respective owners. Available exclusively in the UAE through YS Lootah Robotics.
@@ -84,7 +84,7 @@ export default function BrandsPage() {
<DemoCTA
title="Not sure which brand fits?"
description="Tell us about your venue, timeline, and use case. We will recommend a brand and model — and book a live demo at our Dubai showroom."
description="Tell us about your venue, timeline, and use case. We will recommend a brand and model and book a live demo at our Dubai showroom."
/>
</div>
</main>
+1 -1
View File
@@ -35,7 +35,7 @@ export default function ConfigurePage() {
<span className="text-gradient" style={{ fontWeight: 500 }}>Configure your robot.</span>
</h1>
<p style={{ margin: 0, color: '#8891C7', fontSize: 'clamp(0.85rem, 1.6vw, 0.95rem)', lineHeight: 1.6, maxWidth: 720 }}>
Choose persona, attire, colors, and accessories — visualize your Unitree G1 humanoid before you request a quotation from YS Lootah Robotics.
Choose persona, attire, colors, and accessories visualize your Unitree G1 humanoid before you request a quotation from YS Lootah Robotics.
</p>
</div>
</header>
+2 -2
View File
@@ -4,9 +4,9 @@ import { FooterAndContact } from '@/components/FooterAndContact';
import { InquiryForm } from '@/components/robotics/InquiryForm';
export const metadata: Metadata = {
title: 'Contact YS Lootah Robotics Dubai — Robotics Sales & Demo Inquiries',
title: 'Contact YS Lootah Robotics Dubai Robotics Sales & Demo Inquiries',
description:
'Dubai robotics sales, support, and demo inquiries. Contact YS Lootah Robotics — the exclusive UAE destination for selected Unitree and Pudu Robotics solutions — by phone, email, or WhatsApp.',
'Dubai robotics sales, support, and demo inquiries. Contact YS Lootah Robotics the exclusive UAE destination for selected Unitree and Pudu Robotics solutions by phone, email, or WhatsApp.',
};
export default function ContactPage() {
+1 -1
View File
@@ -1,7 +1,7 @@
@import "tailwindcss";
@theme {
/* === Luxury robotics — Graphite + Royal Blue + Silver === */
/* === Luxury robotics Graphite + Royal Blue + Silver === */
--color-bg: #0a0a0c;
--color-bg-2: #16151a;
--color-bg-3: #1c1b21;
+3 -3
View File
@@ -6,7 +6,7 @@ import { DemoCTA } from '@/components/robotics/DemoCTA';
import { MotionSection } from '@/components/ui/MotionSection';
export const metadata: Metadata = {
title: 'Robotics for UAE Industries — YS Lootah Robotics Dubai',
title: 'Robotics for UAE Industries YS Lootah Robotics Dubai',
description:
'Robotics solutions for hospitality, restaurants, hotels, healthcare, education, security, warehouses, smart buildings, and government across the UAE.',
};
@@ -26,7 +26,7 @@ export default function IndustriesPage() {
</span>
</h1>
<p style={{ margin: 0, color: '#DEE0F0', fontSize: 'clamp(0.95rem, 2vw, 1.05rem)', lineHeight: 1.7 }}>
We deploy humanoid, quadruped, and service robots across industries that are reshaping how the UAE operates — every venue is matched to the right robot.
We deploy humanoid, quadruped, and service robots across industries that are reshaping how the UAE operates every venue is matched to the right robot.
</p>
</div>
@@ -36,7 +36,7 @@ export default function IndustriesPage() {
<DemoCTA
title="Don't see your industry?"
description="If your venue is unusual, complex, or one-of-a-kind — that's exactly when we like to talk. Let's design the robotics fit."
description="If your venue is unusual, complex, or one-of-a-kind that's exactly when we like to talk. Let's design the robotics fit."
/>
</div>
</main>
+3 -3
View File
@@ -6,7 +6,7 @@ import "./globals.css";
export const metadata: Metadata = {
metadataBase: new URL('https://yslootahrobotics.com'),
title: {
default: 'YS Lootah Robotics — Exclusive UAE Access to Unitree & Pudu Robotics',
default: 'YS Lootah Robotics Exclusive UAE Access to Unitree & Pudu Robotics',
template: '%s | YS Lootah Robotics',
},
description:
@@ -28,7 +28,7 @@ export const metadata: Metadata = {
],
openGraph: {
type: 'website',
title: 'YS Lootah Robotics — Exclusive UAE Access to Unitree & Pudu Robotics',
title: 'YS Lootah Robotics Exclusive UAE Access to Unitree & Pudu Robotics',
description:
'Advanced robotics. Exclusive UAE access. Selected Unitree and Pudu solutions available through YS Lootah Robotics in Dubai.',
locale: 'en_AE',
@@ -36,7 +36,7 @@ export const metadata: Metadata = {
},
twitter: {
card: 'summary_large_image',
title: 'YS Lootah Robotics — Exclusive UAE Access to Unitree & Pudu Robotics',
title: 'YS Lootah Robotics Exclusive UAE Access to Unitree & Pudu Robotics',
description:
'The UAE’s dedicated destination for Unitree and Pudu Robotics sales, demo inquiries, and business deployment.',
},
+10 -10
View File
@@ -20,7 +20,7 @@ import { MotionSection } from '@/components/ui/MotionSection';
import { FEATURED_ROBOTS } from '@/data/robots';
export const metadata: Metadata = {
title: 'YS Lootah Robotics — Exclusive UAE Access to Unitree & Pudu Robotics',
title: 'YS Lootah Robotics Exclusive UAE Access to Unitree & Pudu Robotics',
description:
'YS Lootah Robotics is the exclusive UAE sales destination for selected Unitree and Pudu Robotics solutions. Explore, configure, book demos, and deploy advanced robots across Dubai and the UAE.',
keywords: [
@@ -65,30 +65,30 @@ export default function HomePage() {
<div className="container-wide" style={{ display: 'flex', flexDirection: 'column', gap: '2rem' }}>
<SectionHeading
eyebrow="Featured robotics brands"
title="Unitree & Pudu — available exclusively in the UAE."
description="We hold exclusive UAE sales rights for selected Unitree and Pudu Robotics solutions — curated for proven performance in the field and full local support across Dubai."
title="Unitree & Pudu available exclusively in the UAE."
description="We hold exclusive UAE sales rights for selected Unitree and Pudu Robotics solutions curated for proven performance in the field and full local support across Dubai."
/>
<BrandShowcase />
</div>
</MotionSection>
<MotionSection style={{ padding: 'clamp(3rem, 6vw, 5rem) 0' }} id="why">
<MotionSection style={{ padding: 'clamp(3rem, 6vw, 5rem) 0 clamp(1.5rem, 3vw, 2.5rem)' }} id="why">
<div className="container-wide" style={{ display: 'flex', flexDirection: 'column', gap: '2rem' }}>
<SectionHeading
eyebrow="Why YS Lootah Robotics"
title="A premium robotics partner — not a marketplace."
title="A premium robotics partner not a marketplace."
description="From inquiry to live deployment, we manage your robotics program end to end with a UAE-based team and exclusive access to Unitree and Pudu portfolios."
/>
<BentoGrid />
</div>
</MotionSection>
<MotionSection style={{ padding: 'clamp(3rem, 6vw, 5rem) 0' }} id="categories">
<MotionSection style={{ padding: 'clamp(1.5rem, 3vw, 2.5rem) 0 clamp(3rem, 6vw, 5rem)' }} id="categories">
<div className="container-wide" style={{ display: 'flex', flexDirection: 'column', gap: '2rem' }}>
<SectionHeading
eyebrow="Robot categories"
title="From quadruped patrol to humanoid concierge."
description="Find the right robot for your business — humanoid for events and education, quadruped for inspection and security, service and delivery for hospitality."
description="Find the right robot for your business humanoid for events and education, quadruped for inspection and security, service and delivery for hospitality."
/>
<RobotCategoryGrid />
</div>
@@ -126,7 +126,7 @@ export default function HomePage() {
<SectionHeading
eyebrow="Our solutions"
title="Intelligent robotics across the full lifecycle."
description="From autonomous robotics and intelligent automation to motion programming, SDKs, and remote diagnostics — a complete robotics partner for UAE businesses."
description="From autonomous robotics and intelligent automation to motion programming, SDKs, and remote diagnostics a complete robotics partner for UAE businesses."
/>
<ServicesGrid />
</div>
@@ -149,7 +149,7 @@ export default function HomePage() {
<SectionHeading
eyebrow="How we work"
title="From inquiry to live deployment."
description="Three steps from your first message to a robot running in your venue — fully supported by our Dubai team."
description="Three steps from your first message to a robot running in your venue fully supported by our Dubai team."
/>
<HowItWorks />
</div>
@@ -160,7 +160,7 @@ export default function HomePage() {
<SectionHeading
eyebrow="Industries served"
title="Robotics solutions for UAE businesses."
description="From restaurants to security operators to government innovation programs — we deliver robotics fits for the venue."
description="From restaurants to security operators to government innovation programs we deliver robotics fits for the venue."
/>
<IndustryUseCases limit={8} />
</div>
+5 -5
View File
@@ -21,10 +21,10 @@ export function generateStaticParams() {
export async function generateMetadata({ params }: { params: Promise<Params> }): Promise<Metadata> {
const { slug } = await params;
const robot = getRobotBySlug(slug);
if (!robot) return { title: 'Robot not found — YS Lootah Robotics' };
if (!robot) return { title: 'Robot not found YS Lootah Robotics' };
return {
title: `${robot.brandLabel} ${robot.name} — Available in Dubai | YS Lootah Robotics`,
description: `${robot.shortDescription} Available through YS Lootah Robotics in Dubai — request a price or book a live demo.`,
title: `${robot.brandLabel} ${robot.name} Available in Dubai | YS Lootah Robotics`,
description: `${robot.shortDescription} Available through YS Lootah Robotics in Dubai request a price or book a live demo.`,
keywords: [robot.brandLabel, robot.name, 'Dubai', 'UAE', CATEGORY_LABELS[robot.category], 'robotics'],
};
}
@@ -167,7 +167,7 @@ export default async function RobotDetailPage({ params }: { params: Promise<Para
<span className="eyebrow">Talk to an advisor</span>
<h3 style={{ margin: 0, fontSize: '1.25rem', fontWeight: 600 }}>Prefer a quick conversation?</h3>
<p style={{ margin: 0, color: '#DEE0F0', lineHeight: 1.7 }}>
Call our Dubai team or message us on WhatsApp — we will share availability and demo slots for {robot.name}.
Call our Dubai team or message us on WhatsApp we will share availability and demo slots for {robot.name}.
</p>
<a className="btn btn-ghost" href="tel:+971559482728">Call +971 55 948 2728</a>
<a className="btn btn-outline" href="https://wa.me/971559482728" target="_blank" rel="noopener noreferrer">WhatsApp us</a>
@@ -179,7 +179,7 @@ export default async function RobotDetailPage({ params }: { params: Promise<Para
<MotionSection>
<ConfigureCTA
title={`Configure ${robot.name} for your business.`}
description="Choose persona, attire, color, and accessories — visualize your deployment before requesting a quotation."
description="Choose persona, attire, color, and accessories visualize your deployment before requesting a quotation."
/>
</MotionSection>
+2 -2
View File
@@ -6,9 +6,9 @@ import { RoboticsSplineShowcase } from '@/components/sections/robotics-spline-sh
import { ROBOTS } from '@/data/robots';
export const metadata: Metadata = {
title: 'Robots Catalog — YS Lootah Robotics Dubai',
title: 'Robots Catalog YS Lootah Robotics Dubai',
description:
'Explore selected humanoid, quadruped, service, delivery, hospitality, and cleaning robots from Unitree and Pudu — available exclusively in the UAE through YS Lootah Robotics.',
'Explore selected humanoid, quadruped, service, delivery, hospitality, and cleaning robots from Unitree and Pudu available exclusively in the UAE through YS Lootah Robotics.',
};
export default function RobotsPage() {