Refactor code structure for improved readability and maintainability; removed redundant code blocks and optimized function calls.
This commit is contained in:
@@ -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'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's dedicated destination for selected Unitree and Pudu Robotics solutions.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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 });
|
||||
}
|
||||
|
||||
@@ -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 });
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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) => (
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
@@ -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
@@ -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
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user