feat: add AccessoriesShowcase component and accessories data
Some checks are pending
CI/CD / test-and-build (push) Waiting to run
CI/CD / deploy (push) Blocked by required conditions

- Implemented the AccessoriesShowcase component for displaying various robotic accessories with filtering options.
- Created a new data file for accessories, including types, groups, and detailed information for each accessory.
- Introduced FilterChip and AccessoryCard components for better UI representation of accessories.
This commit is contained in:
Najjar\NajjarV02 2026-05-21 15:45:45 +04:00
parent 37fab3fcaf
commit d8502292bc
32 changed files with 1767 additions and 147 deletions

View File

@ -0,0 +1,96 @@
# Industries — Asset Sources & Usage
This file tracks the provenance and usage status of every image used in the `/industries/` directory.
## Usage status legend
| Status | Meaning |
| --- | --- |
| `approved` | Asset has explicit approval for distributor/partner marketing use |
| `public-promotional` | Public promotional asset from brand site, referenced as distributor/partner |
| `needs-approval` | Used pending formal confirmation from the brand |
| `placeholder` | Temporary visual; replace before public launch |
| `internal` | YS Lootah-owned visual (shoot, render, or licensed asset) |
> **Rule:** Always store assets locally inside this repository. Do **not** hotlink to a brand's CDN in production.
---
## Unitree (`/industries/unitree/`)
Reference page: https://www.unitree.com/industry/electricity
| Local file | Source URL | Purpose | Status |
| --- | --- | --- | --- |
| `unitree/terrain.jpg` | unitree.com/images/1155fcb4d7204146af8de1154c8160d4_2880x1470.jpg | Quadruped on complex terrain (security gallery + hero) | needs-approval |
| `unitree/thermal.jpg` | unitree.com/images/f1759ae434c54f40965188fe44b919e1_2884x1469.jpg | Thermography + LiDAR detection (security/malls gallery) | needs-approval |
| `unitree/endurance.jpg` | unitree.com/images/63d3e469087142c3b890b7e3397fc907_2886x1470.jpg | Extended patrol endurance (security gallery) | needs-approval |
| `unitree/substation.jpg` | unitree.com/images/6377486efe1c4b0885825f97abe3524e_702x1060.jpg | Substation inspection (security gallery) | needs-approval |
| `unitree/pipeline.jpg` | unitree.com/images/007d98363d09414082b73b52cc24f12d_702x1060.jpg | Pipeline patrol (security gallery) | needs-approval |
| `unitree/mine.jpg` | unitree.com/images/c749cad89f7a4a449ea4118c0a1d609c_702x1060.jpg | Mine/tunnel inspection (security gallery) | needs-approval |
| `unitree/patrol-system.png` | unitree.com/images/06a6612a9c2047b4a908a40782485e6a_2764x1410.png | Intelligent patrol system overview (warehouses gallery + hero) | needs-approval |
| `unitree/digital-twin.jpg` | unitree.com/images/e1e9affa29c04dda932228098397d32f_2716x1226.jpg | Digital twin platform (warehouses gallery) | needs-approval |
| `unitree/ai-patrol.jpg` | unitree.com/images/9ae8ba1d8cb74a00af01dba0e8b3b124_2716x1226.jpg | Self-planned AI patrols (warehouses gallery) | needs-approval |
| `unitree/analytics.jpg` | unitree.com/images/a9f775f5468b4b85ba37f1e1ec4ed1ae_2716x1226.jpg | Large-scale inference analytics (warehouses gallery) | needs-approval |
| `unitree/modular.jpg` | unitree.com/images/a107e9efc41c4c9fafec76b507e995a4_940x570.jpg | Modular sensor and payload (warehouses + education gallery) | needs-approval |
| `unitree/cloud.jpg` | unitree.com/images/87850395f5274ce4ae47f236e896a994_940x570.jpg | Cloud fleet management (warehouses gallery) | needs-approval |
## Pudu (`/industries/pudu/`)
Reference page: https://www.pudurobotics.com/en/case-studies
Source images: product/press renders distributed via Pudu official channels and used here in the YS Lootah Robotics distributor/partner context.
| Local file | Source | Purpose | Status |
| --- | --- | --- | --- |
| `pudu/bellabot.png` | Pudu product render (BellaBot) | restaurants gallery, hospitality gallery | public-promotional |
| `pudu/bellabot-pro.png` | Pudu product render (BellaBot Pro) | restaurants gallery | public-promotional |
| `pudu/kettybot.png` | Pudu product render (KettyBot Pro) | restaurants, malls, healthcare, hospitality, hotels gallery | public-promotional |
| `pudu/kettybot-black.webp` | Pudu product render (KettyBot, black finish) | restaurants gallery | public-promotional |
| `pudu/holabot.png` | Pudu product render (HolaBot / FlashBot delivery family) | hotels, healthcare gallery | public-promotional |
| `pudu/cc1.png` | Pudu product render (PUDU CC1) | hotels, malls, healthcare, hospitality gallery | public-promotional |
| `pudu/d9-disinfect.png` | Pudu product render (PUDU D9) | healthcare gallery | public-promotional |
| `pudu/pudubot2.png` | Pudu product render (PuduBot 2) | hotels gallery | public-promotional |
> Pudu case-study landing page is client-rendered; individual case URLs are not exposed in the public sitemap. Customer references in copy are written generically (no named hotels, restaurants, or hospitals) until partnership-specific case studies are formally provided.
## Industry cards (`/industries/cards/`)
Used by the Industries grid (`IndustryUseCases` component) and the home-page Industries section.
| Local file | Source | Status |
| --- | --- | --- |
| `cards/hospitality.webp` | YS Lootah library | internal |
| `cards/restaurants-cafes.webp` | YS Lootah library | internal |
| `cards/hotels-resorts.webp` | YS Lootah library | internal |
| `cards/shopping-malls.webp` | YS Lootah library | internal |
| `cards/healthcare.webp` | YS Lootah library | internal |
| `cards/education.jpg` | YS Lootah library | internal |
| `cards/security-surveillance.jpg` | YS Lootah library | internal |
| `cards/warehouses-logistics.webp` | YS Lootah library | internal |
## Industry page heroes (`/industries/pages/`)
Used by the `[slug]` detail page hero. May reuse internal library or brand reference visuals.
| Local file | Source | Status |
| --- | --- | --- |
| `pages/hospitality-hero.webp` | YS Lootah library | internal |
| `pages/restaurants-cafes-hero.webp` | YS Lootah library | internal |
| `pages/hotels-resorts-hero.webp` | YS Lootah library | internal |
| `pages/shopping-malls-hero.webp` | YS Lootah library | internal |
| `pages/healthcare-hero.webp` | YS Lootah library | internal |
| `pages/education-hero.jpg` | YS Lootah library | internal |
| `pages/security-surveillance-hero.jpg` | Unitree (terrain reference, copy of `unitree/terrain.jpg`) | needs-approval |
| `pages/warehouses-logistics-hero.png` | Unitree (patrol-system reference, copy of `unitree/patrol-system.png`) | needs-approval |
---
## TODO before public launch
1. Replace every `needs-approval` asset with either:
- Written approval from Unitree's partner/distributor team, or
- Original YS Lootah photography / commissioned renders.
2. Convert remaining `.jpg` / `.png` heroes to `.webp` once final assets are locked.
3. Audit alt text for accuracy after any image swap.
4. Keep this file in sync with `src/data/industries.ts` and `src/data/industry-pages.ts`.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 403 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 611 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 532 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

View File

@ -140,8 +140,8 @@ export default async function IndustryDetailPage({ params }: { params: Promise<P
{/* Right visual: industry hero image */}
<aside className="ip-hero-visual">
<Image
src={industry.image}
alt={industry.imageAlt}
src={content.heroImage?.src ?? industry.image}
alt={content.heroImage?.alt ?? industry.imageAlt}
fill
sizes="(max-width: 920px) 100vw, 520px"
className="ip-hero-visual-img"

View File

@ -2,13 +2,15 @@ import type { Metadata } from 'next';
import { Navbar } from '@/components/Navbar';
import { FooterAndContact } from '@/components/FooterAndContact';
import { CatalogClient } from './CatalogClient';
import { AccessoriesShowcase } from '@/components/robotics/AccessoriesShowcase';
import { RoboticsSplineShowcase } from '@/components/sections/robotics-spline-showcase';
import { ROBOTS } from '@/data/robots';
import { ACCESSORIES } from '@/data/accessories';
export const metadata: Metadata = {
title: 'Robots Catalog YS Lootah Robotics Dubai',
description:
'Explore selected humanoid, quadruped, service, delivery, hospitality, and cleaning robots from Unitree and Pudu available in the UAE through YS Lootah Robotics.',
'Explore selected humanoid, quadruped, industrial, service, delivery, hospitality, and cleaning robots — plus dexterous hands, arms, sensors, and accessories — from Unitree and Pudu available in the UAE through YS Lootah Robotics.',
};
export default function RobotsPage() {
@ -25,7 +27,7 @@ export default function RobotsPage() {
style={{
display: 'flex',
flexDirection: 'column',
gap: '2.5rem',
gap: 'clamp(2.5rem, 5vw, 4rem)',
paddingTop: 'clamp(3rem, 6vw, 5rem)',
paddingBottom: 'clamp(4rem, 8vw, 6rem)',
}}
@ -34,7 +36,7 @@ export default function RobotsPage() {
<span className="eyebrow">Catalog · Filter & Browse</span>
<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 }}>
{ROBOTS.length}+ models across the UAE portfolio.
{ROBOTS.length} robots across the UAE portfolio.
</span>
</h2>
<p style={{ margin: 0, color: '#DEE0F0', fontSize: 'clamp(0.95rem, 2vw, 1.05rem)', lineHeight: 1.7 }}>
@ -43,6 +45,21 @@ export default function RobotsPage() {
</div>
<CatalogClient />
<section id="accessories" style={{ display: 'flex', flexDirection: 'column', gap: '1.5rem', scrollMarginTop: 'clamp(80px, 12vh, 120px)' }}>
<div style={{ display: 'flex', flexDirection: 'column', gap: '0.85rem', maxWidth: 760 }}>
<span className="eyebrow">Add-ons · Accessories</span>
<h2 style={{ margin: 0, fontSize: 'clamp(1.5rem, 3.4vw, 2.2rem)', fontWeight: 400, lineHeight: 1.1, letterSpacing: '-0.02em' }}>
<span className="text-gradient" style={{ fontWeight: 500 }}>
{ACCESSORIES.length} accessories dexterous hands, arms, sensors, IoT modules.
</span>
</h2>
<p style={{ margin: 0, color: '#DEE0F0', fontSize: 'clamp(0.92rem, 2vw, 1.02rem)', lineHeight: 1.65 }}>
Robot platforms get their full capability from accessories. Browse Unitree dexterous hands and arms, perception sensors, and Pudu dispatch, docking, modular attachments, and building IoT modules.
</p>
</div>
<AccessoriesShowcase />
</section>
</div>
</main>
<FooterAndContact />

View File

@ -0,0 +1,223 @@
'use client';
import { useMemo, useState } from 'react';
import Image from 'next/image';
import { ACCESSORIES, GROUP_LABELS, type AccessoryGroup, type Accessory } from '@/data/accessories';
type Filter = AccessoryGroup | 'all';
export function AccessoriesShowcase() {
const groups = useMemo(() => {
const set = new Set<AccessoryGroup>();
ACCESSORIES.forEach((a) => set.add(a.group));
return Array.from(set);
}, []);
const [filter, setFilter] = useState<Filter>('all');
const list = useMemo(() => {
if (filter === 'all') return ACCESSORIES;
return ACCESSORIES.filter((a) => a.group === filter);
}, [filter]);
return (
<div style={{ display: 'flex', flexDirection: 'column', gap: '1.25rem' }}>
<div style={{ display: 'flex', flexWrap: 'wrap', gap: '0.4rem' }}>
<FilterChip active={filter === 'all'} onClick={() => setFilter('all')}>
All ({ACCESSORIES.length})
</FilterChip>
{groups.map((g) => (
<FilterChip key={g} active={filter === g} onClick={() => setFilter(g)}>
{GROUP_LABELS[g]} ({ACCESSORIES.filter((a) => a.group === g).length})
</FilterChip>
))}
</div>
<div
style={{
display: 'grid',
gap: '1rem',
gridTemplateColumns: 'repeat(auto-fit, minmax(min(260px, 100%), 1fr))',
}}
>
{list.map((accessory) => (
<AccessoryCard key={accessory.id} accessory={accessory} />
))}
</div>
</div>
);
}
function FilterChip({
active,
onClick,
children,
}: {
active: boolean;
onClick: () => void;
children: React.ReactNode;
}) {
return (
<button
type="button"
onClick={onClick}
style={{
padding: '0.5rem 0.85rem',
borderRadius: 999,
border: active ? '1px solid rgba(74,102,216,0.55)' : '1px solid rgba(222,224,240,0.12)',
background: active ? 'rgba(58,85,196,0.18)' : 'rgba(20,19,26,0.7)',
color: active ? '#FFFFFF' : '#DEE0F0',
fontSize: '0.72rem',
fontWeight: 600,
letterSpacing: '0.12em',
textTransform: 'uppercase',
cursor: 'pointer',
transition: 'all 0.25s ease',
}}
>
{children}
</button>
);
}
function AccessoryCard({ accessory }: { accessory: Accessory }) {
const accent = accessory.accent;
return (
<a
href={accessory.officialUrl}
target={accessory.officialUrl?.startsWith('http') ? '_blank' : undefined}
rel="noopener noreferrer"
style={{ textDecoration: 'none', color: 'inherit' }}
>
<article
className="acc-card"
style={{
position: 'relative',
display: 'flex',
flexDirection: 'column',
height: '100%',
borderRadius: 18,
overflow: 'hidden',
border: '1px solid rgba(222,224,240,0.10)',
background:
`radial-gradient(ellipse 80% 60% at 100% 0%, ${accent}1A, transparent 60%), linear-gradient(180deg, rgba(22,21,30,0.92), rgba(10,10,14,0.96))`,
boxShadow: '0 1px 0 rgba(222,224,240,0.04) inset, 0 14px 28px rgba(0,0,0,0.36)',
transition: 'transform 0.4s cubic-bezier(0.16,1,0.3,1), border-color 0.4s, box-shadow 0.4s',
}}
>
<div
style={{
position: 'relative',
aspectRatio: '16 / 11',
background: '#0a0a0e',
borderBottom: '1px solid rgba(222,224,240,0.06)',
overflow: 'hidden',
}}
>
<Image
src={accessory.image}
alt={`${accessory.name} product image`}
fill
sizes="(max-width: 600px) 100vw, (max-width: 1100px) 50vw, 25vw"
style={{ objectFit: 'contain', objectPosition: 'center', padding: '0.6rem' }}
/>
<span
aria-hidden
style={{
position: 'absolute',
inset: 0,
background: `radial-gradient(ellipse 60% 70% at 50% 40%, ${accent}26, transparent 65%)`,
pointerEvents: 'none',
}}
/>
<span
style={{
position: 'absolute',
top: '0.55rem',
left: '0.55rem',
padding: '0.22rem 0.55rem',
borderRadius: 999,
fontSize: '0.55rem',
fontWeight: 800,
letterSpacing: '0.22em',
textTransform: 'uppercase',
color: accent,
background: 'rgba(10,10,14,0.7)',
border: `1px solid ${accent}55`,
backdropFilter: 'blur(8px)',
WebkitBackdropFilter: 'blur(8px)',
}}
>
{accessory.brandLabel}
</span>
<span
style={{
position: 'absolute',
top: '0.55rem',
right: '0.55rem',
padding: '0.22rem 0.55rem',
borderRadius: 999,
fontSize: '0.55rem',
fontWeight: 800,
letterSpacing: '0.18em',
textTransform: 'uppercase',
color: '#DEE0F0',
background: 'rgba(10,10,14,0.7)',
border: '1px solid rgba(222,224,240,0.14)',
backdropFilter: 'blur(8px)',
WebkitBackdropFilter: 'blur(8px)',
}}
>
{GROUP_LABELS[accessory.group]}
</span>
</div>
<div style={{ display: 'flex', flexDirection: 'column', gap: '0.55rem', padding: '1rem 1.1rem 1.1rem', flex: 1 }}>
<h3 style={{ margin: 0, fontSize: '1.02rem', fontWeight: 600, letterSpacing: '-0.005em', color: '#FFFFFF' }}>
{accessory.name}
</h3>
<p style={{ margin: 0, fontSize: '0.84rem', color: '#C9CCDE', lineHeight: 1.55, flex: 1 }}>
{accessory.tagline}
</p>
{accessory.compatibility && accessory.compatibility.length > 0 && (
<div style={{ paddingTop: '0.55rem', borderTop: '1px solid rgba(222,224,240,0.06)' }}>
<span style={{ display: 'block', fontSize: '0.55rem', fontWeight: 800, letterSpacing: '0.24em', textTransform: 'uppercase', color: '#8891C7', marginBottom: '0.35rem' }}>
Compatible with
</span>
<ul style={{ listStyle: 'none', margin: 0, padding: 0, display: 'flex', flexWrap: 'wrap', gap: '0.25rem' }}>
{accessory.compatibility.slice(0, 4).map((c) => (
<li
key={c}
style={{
fontSize: '0.66rem',
fontWeight: 600,
padding: '0.18rem 0.5rem',
borderRadius: 999,
border: '1px solid rgba(222,224,240,0.10)',
background: 'rgba(20,19,26,0.7)',
color: '#DEE0F0',
}}
>
{c}
</li>
))}
</ul>
</div>
)}
</div>
</article>
<style jsx>{`
:global(.acc-card:hover),
:global(.acc-card:focus-visible) {
transform: translateY(-3px);
border-color: ${accent}66 !important;
box-shadow:
0 1px 0 rgba(222,224,240,0.08) inset,
0 24px 52px rgba(0,0,0,0.55),
0 0 28px ${accent}33 !important;
}
`}</style>
</a>
);
}

619
src/data/accessories.ts Normal file
View File

@ -0,0 +1,619 @@
export type AccessoryBrand = 'unitree' | 'pudu';
export type AccessoryGroup =
| 'dexterous-hand'
| 'robotic-arm'
| 'sensor'
| 'dispatch'
| 'docking'
| 'attachment'
| 'iot-integration';
export interface Accessory {
id: string;
slug: string;
brand: AccessoryBrand;
brandLabel: string;
name: string;
tagline: string;
group: AccessoryGroup;
description: string;
features: string[];
image: string;
accent: string;
officialUrl?: string;
compatibility?: string[];
}
export const GROUP_LABELS: Record<AccessoryGroup, string> = {
'dexterous-hand': 'Dexterous Hands',
'robotic-arm': 'Robotic Arms',
sensor: 'Perception & Sensors',
dispatch: 'Dispatch & Calling',
docking: 'Docking & Charging',
attachment: 'Modular Attachments',
'iot-integration': 'IoT & Building Integration',
};
const GOLD_CHAMPAGNE = '#DEE0F0';
const GOLD_BRAND = '#273F94';
const GOLD_BRONZE = '#8891C7';
export const ACCESSORIES: Accessory[] = [
// ============ UNITREE DEXTEROUS HANDS ============
{
id: 'unitree-dex2-5',
slug: 'unitree-dex2-5',
brand: 'unitree',
brandLabel: 'Unitree',
name: 'Dex2-5 Dexterous Hand',
tagline: 'Tendon-driven 5-finger hand with 100,000+ fatigue cycles tested.',
group: 'dexterous-hand',
description:
'A 5-finger, 10-DOF tendon-driven dexterous hand for G1 and R1 humanoids. Gear-tendon drive with hidden internal wiring, 365 g lightweight design, and full perceptual feedback at 1 kHz.',
features: [
'10 DOF total (2 actuated), 5 fingers',
'365 g, 151×70×63 mm',
'0.5 s full fist clench',
'100,000+ fatigue cycles tested',
'Survived 100+ drop tests',
'1000 Hz sensor / comm rate',
],
image: 'https://www.unitree.com/images/dex2-5.png',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.unitree.com/Dex2-5',
compatibility: ['Unitree G1', 'Unitree R1'],
},
{
id: 'unitree-dex5-1',
slug: 'unitree-dex5-1',
brand: 'unitree',
brandLabel: 'Unitree',
name: 'Dex5-1 Dexterous Hand',
tagline: 'High-DOF dexterous hand with 94 tactile sensors for RL workflows.',
group: 'dexterous-hand',
description:
'A 20-DOF (16 actuated) dexterous hand with 94 tactile sensors and backdrivable joints designed for reinforcement-learning workflows. ±22° four-finger lateral swing and operation from 20 °C to 60 °C.',
features: [
'20 DOF (16 active + 4)',
'94 tactile sensors',
'1100 g, 20 °C to 60 °C',
'3.5 kg palm-down / 4.5 kg palm-side load',
'±22° four-finger lateral swing',
'Backdrivable, low-damping reducers',
],
image: 'https://www.unitree.com/images/bb5449be5095404897027b344537f602_2560x1920.gif',
accent: GOLD_BRAND,
officialUrl: 'https://www.unitree.com/Dex5-1',
compatibility: ['Unitree G1', 'Unitree H1', 'Unitree H2', 'Research arms'],
},
{
id: 'unitree-dex3-1',
slug: 'unitree-dex3-1',
brand: 'unitree',
brandLabel: 'Unitree',
name: 'Dex3-1 Dexterous Hand',
tagline: 'Power-control 3-finger hand with hybrid force/position control.',
group: 'dexterous-hand',
description:
'A 3-finger, 7-DOF dexterous hand with 33 tactile pressure sensors and hybrid force/position control. Designed to pair with the G1 humanoid for general-purpose manipulation.',
features: [
'7 DOF, 3 fingers',
'33 tactile pressure sensors',
'±2 mm fingertip repeatability',
'500 g payload',
'1258 V operating voltage',
'1 kHz communication rate',
],
image: 'https://www.unitree.com/images/4eff56e5733d4fdbb8276bf6c65daa74_1920x1080.png',
accent: GOLD_BRONZE,
officialUrl: 'https://www.unitree.com/Dex3-1',
compatibility: ['Unitree G1'],
},
{
id: 'unitree-dex1-1',
slug: 'unitree-dex1-1',
brand: 'unitree',
brandLabel: 'Unitree',
name: 'Dex1-1 Embodied AI Gripper',
tagline: 'Two-finger embodied-AI gripper with optional 1080p camera.',
group: 'dexterous-hand',
description:
'A two-finger gripper with 90 mm stroke, 0.1 mm resolution, and 5120 N adjustable force. Available in Standard and Advanced (with 1080p camera) variants, compatible with G1, H2, R1, or standalone use.',
features: [
'90 mm stroke, 5120 N adjustable force',
'0.1 mm fingertip resolution',
'0.24 s full-stroke close',
'20 kg form-fit grasp payload',
'6 Mbps RS485 communication',
'Advanced version includes 1080p camera',
],
image: 'https://www.unitree.com/images/b98699988c4249a89dd246f406ffaa2d_694x750.png',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.unitree.com/Dex1-1',
compatibility: ['Unitree G1', 'Unitree H2', 'Unitree R1', 'Standalone'],
},
// ============ UNITREE ROBOTIC ARMS ============
{
id: 'unitree-z1',
slug: 'unitree-z1',
brand: 'unitree',
brandLabel: 'Unitree',
name: 'Z1 6-Axis Manipulator',
tagline: 'Onboard 6-axis manipulator for mobile robotics platforms.',
group: 'robotic-arm',
description:
'Z1 Air (4.3 kg) and Z1 Pro (4.5 kg) 6-axis robotic arms for mobile robots in logistics, retail, and research. 740 mm reach, 23 kg payload, ~0.1 mm repeatability. Designed for AlienGo and B1 mounting.',
features: [
'6-axis, 740 mm reach',
'4.3 kg (Air) / 4.5 kg (Pro)',
'23 kg payload',
'~0.1 mm repeatability',
'Joint force control + collision detection',
'Position + force control modes',
],
image: 'https://oss-global-cdn.unitree.com/static/z1.png',
accent: GOLD_BRAND,
officialUrl: 'https://www.unitree.com/z1',
compatibility: ['Unitree AlienGo', 'Unitree B1', 'Mobile platforms'],
},
{
id: 'unitree-d1-t',
slug: 'unitree-d1-t',
brand: 'unitree',
brandLabel: 'Unitree',
name: 'D1-T Teleoperation Arm',
tagline: 'Teleoperation robot arm for embodied-AI data collection.',
group: 'robotic-arm',
description:
'Dual-arm or quad-arm teleoperation kit with 2.37 kg ultra-light aluminum design. Bus servos featuring position/velocity/force control for embodied-AI data collection. 7-DOF (6-axis + gripper), 670 mm reach, 500 g payload.',
features: [
'7-DOF arm (6-axis + gripper)',
'2.37 kg, 670 mm reach, 500 g payload',
'Ultra-precision force-controlled servos',
'Dual-arm / Quad-arm configurations',
'Camera & mobile-chassis ready',
'24 V (2.5 A standard / 5 A max)',
],
image: 'https://oss-global-cdn.unitree.com/static/d1t.png',
accent: GOLD_BRONZE,
officialUrl: 'https://www.unitree.com/D1-T',
compatibility: ['Embodied AI research', 'Data collection'],
},
// ============ UNITREE PERCEPTION & SENSORS ============
{
id: 'unitree-l2',
slug: 'unitree-l2',
brand: 'unitree',
brandLabel: 'Unitree',
name: '4D LiDAR L2',
tagline: '4D LiDAR with built-in IMU and open-source SLAM (POINT-LIO).',
group: 'sensor',
description:
'A 4D LiDAR sensor with built-in 6-axis IMU and open POINT-LIO SLAM stack. 360°×96° ultra-wide field of view at 64,000 pts/s with 2 cm accuracy. 230 g compact form, 30 m range at 90% reflectivity.',
features: [
'360°×96° ultra-wide FOV',
'64,000 pts/s, 2 cm accuracy',
'30 m @ 90% reflectivity',
'Built-in 6-axis IMU',
'230 g compact form',
'Open POINT-LIO SLAM stack',
],
image: 'https://oss-global-cdn.unitree.com/static/l2.png',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.unitree.com/L2',
compatibility: ['Unitree Go2', 'Unitree quadrupeds', 'Third-party robots'],
},
// ============ PUDU DISPATCH ============
{
id: 'pudu-pager',
slug: 'pudu-pager',
brand: 'pudu',
brandLabel: 'Pudu',
name: 'PUDU Pager',
tagline: 'Restaurant table pager that triggers delivery cycles.',
group: 'dispatch',
description:
'A compact table-side pager that calls BellaBot, KettyBot, HolaBot, and PuduBot to specific tables on demand. Wireless, long battery life, and integrates with the Pudu Link cloud platform.',
features: [
'Wireless table-side calling',
'Long battery life',
'Pudu Link cloud integration',
'Multi-robot fleet support',
'Multiple device pairing',
'Customizable call zones',
],
image: 'https://cdn.pudutech.com/nav_product_1_18f2507db0.png',
accent: GOLD_BRONZE,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['BellaBot', 'BellaBot Pro', 'KettyBot', 'HolaBot', 'PuduBot 2'],
},
{
id: 'pudu-4g-watch',
slug: 'pudu-4g-watch',
brand: 'pudu',
brandLabel: 'Pudu',
name: '4G Watch',
tagline: 'Wrist-worn 4G dispatcher for managing service robots from anywhere.',
group: 'dispatch',
description:
'A wearable 4G watch for staff to dispatch and manage service robots from anywhere on the property. Real-time fleet status, table-to-robot routing, and call/cancel actions on-wrist.',
features: [
'Wrist-worn dispatch control',
'4G connectivity',
'Real-time fleet status',
'Call / cancel actions',
'Multi-robot management',
'Pudu Link integration',
],
image: 'https://cdn.pudutech.com/nav_product_1_18f2507db0.png',
accent: GOLD_BRAND,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['All Pudu service robots'],
},
// ============ PUDU DOCKING & CHARGING ============
{
id: 'pudu-docking-station',
slug: 'pudu-docking-station',
brand: 'pudu',
brandLabel: 'Pudu',
name: 'Docking & Charging Station',
tagline: 'Auto-charging dock for continuous robot operation.',
group: 'docking',
description:
'Auto-charging station for continuous robot operation. Product-specific variants for CC1, T300, FlashBot Max, BellaBot Pro, and other Pudu platforms.',
features: [
'Auto-docking and charging',
'Product-specific variants',
'Fleet-ready multi-robot support',
'Indoor and semi-outdoor models',
'Status indicators',
'Pudu Link cloud integration',
],
image: 'https://cdn.pudutech.com/nav_product_0dd9c73f5a.png',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['CC1', 'T300', 'FlashBot Max', 'BellaBot Pro', 'PuduBot 2'],
},
{
id: 'pudu-self-cleaning-dock',
slug: 'pudu-self-cleaning-dock',
brand: 'pudu',
brandLabel: 'Pudu',
name: 'Self-Cleaning Docking Station',
tagline: 'Heavy-duty CC1 dock with self-cleaning water station.',
group: 'docking',
description:
'A heavy-duty dock for CC1 with metallic structure and a self-cleaning water station. Automatic refill, wastewater drain, and detergent dosing for fully autonomous cleaning cycles.',
features: [
'Self-cleaning water station',
'Metallic heavy-duty frame',
'Automatic refill + drain',
'Detergent dosing',
'Indoor commercial environments',
'Fleet-ready',
],
image: 'https://cdn.pudutech.com/nav_product_cc1_Pro_7de75f36ae.png',
accent: GOLD_BRONZE,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['CC1', 'CC1 Pro'],
},
{
id: 'pudu-mobile-water-station',
slug: 'pudu-mobile-water-station',
brand: 'pudu',
brandLabel: 'Pudu',
name: 'Mobile Water Station',
tagline: 'Portable water + detergent station for cleaning robots.',
group: 'docking',
description:
'A portable water and detergent station for CC1 / SH1 cleaning robots. Easy refill anywhere on site, with on-board detergent dosing for flexible cleaning programs.',
features: [
'Portable water + detergent',
'On-site refill anywhere',
'On-board detergent dosing',
'Compatible with CC1 / SH1',
'Modular tank',
'Cleaning-ready operation',
],
image: 'https://cdn.pudutech.com/nav_product_cc1_8baf7f1424.png',
accent: GOLD_BRAND,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['CC1', 'SH1'],
},
// ============ PUDU MODULAR ATTACHMENTS ============
{
id: 'pudu-protection-case',
slug: 'pudu-protection-case',
brand: 'pudu',
brandLabel: 'Pudu',
name: 'Protection Case',
tagline: 'Snap-on protective covers for delivery robots.',
group: 'attachment',
description:
'Snap-on protective covers for BellaBot Pro, KettyBot Pro, T300, and FlashBot Max. Protects exteriors during high-traffic operation while preserving cameras and sensors.',
features: [
'Snap-on covers',
'Product-specific fit',
'Easy install / removal',
'Preserves sensors',
'Available colors',
'Heavy-traffic ready',
],
image: 'https://cdn.pudutech.com/nav_product_bellabot_f807eb57b5.png',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['BellaBot Pro', 'KettyBot Pro', 'T300', 'FlashBot Max'],
},
{
id: 'pudu-retractable-tray-baffle',
slug: 'pudu-retractable-tray-baffle',
brand: 'pudu',
brandLabel: 'Pudu',
name: 'Retractable Tray Baffle',
tagline: 'Retractable side rails preventing dish slippage on trays.',
group: 'attachment',
description:
'Retractable side rails for BellaBot Pro / KettyBot Pro trays. Keeps dishes, glassware, and parcels stable during high-speed delivery and turns.',
features: [
'Retractable side rails',
'Dish + glass stability',
'Easy retract for unloading',
'Compatible with multi-tray setups',
'High-traffic delivery ready',
'Quick install',
],
image: 'https://cdn.pudutech.com/nav_product_bella_pro_816bfa936e.png',
accent: GOLD_BRONZE,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['BellaBot Pro', 'KettyBot Pro'],
},
{
id: 'pudu-tray',
slug: 'pudu-tray',
brand: 'pudu',
brandLabel: 'Pudu',
name: 'Modular Tray',
tagline: 'Spare modular tray for delivery robots — configurable 37 levels.',
group: 'attachment',
description:
'Spare modular trays for Pudu delivery robots. Configurable from 3 to 7 levels with infrared tray sensors and adjustable heights for trays, dishes, and parcels.',
features: [
'Configurable 37 level stack',
'Infrared tray sensors',
'Adjustable height',
'Heavy-load support',
'Quick swap',
'Multiple finishes',
],
image: 'https://cdn.pudutech.com/nav_product_pudubot2_478d35cdae.png',
accent: GOLD_BRAND,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['BellaBot', 'BellaBot Pro', 'KettyBot Pro', 'PuduBot 2'],
},
{
id: 'pudu-conveyor-single-layer',
slug: 'pudu-conveyor-single-layer',
brand: 'pudu',
brandLabel: 'Pudu',
name: 'T300 Conveyor — Single Layer',
tagline: 'Single-level conveyor attachment for T300 AMR.',
group: 'attachment',
description:
'Single-level conveyor attachment for the T300 industrial AMR. Enables in-line pickup and dropoff for manufacturing material handling, light goods transport, and back-of-house logistics.',
features: [
'Single-level conveyor',
'In-line pickup / drop',
'Manufacturing material handling',
'Quick attach',
'Heavy-duty rollers',
'Conveyor IoT integration',
],
image: 'https://cdn.pudutech.com/nav_T600_09c8d0b9bb.png',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['PUDU T300'],
},
{
id: 'pudu-towing-device',
slug: 'pudu-towing-device',
brand: 'pudu',
brandLabel: 'Pudu',
name: 'T300 Towing Device',
tagline: 'Towing attachment converting T300 to a tow tractor.',
group: 'attachment',
description:
'T300 towing attachment for hauling trailers, carts, and totes. Modular hitch with safe coupling, ideal for warehouse train operations and back-of-house logistics.',
features: [
'Modular hitch',
'Trailer / cart towing',
'Safe coupling sensors',
'Warehouse train ops',
'Tool-less install',
'IoT route planning',
],
image: 'https://cdn.pudutech.com/nav_PUDU_D7_114b122fa9.png',
accent: GOLD_BRONZE,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['PUDU T300'],
},
{
id: 'pudu-lifting-rack',
slug: 'pudu-lifting-rack',
brand: 'pudu',
brandLabel: 'Pudu',
name: 'T300 Lifting Rack',
tagline: 'Lifting platform attachment for shelf pick-and-place.',
group: 'attachment',
description:
'T300 lifting-platform attachment for shelf pick-and-place operations. Modular adjustable rack heights for parts kitting, restocking, and just-in-time material flows.',
features: [
'Powered lift platform',
'Adjustable rack heights',
'Shelf pick-and-place',
'Just-in-time material flow',
'Safe motion sensors',
'Tool-less install',
],
image: 'https://cdn.pudutech.com/nav_pudu_d9_baa71e3b5b.png',
accent: GOLD_BRAND,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['PUDU T300'],
},
{
id: 'pudu-carpet-vacuuming-assembly',
slug: 'pudu-carpet-vacuuming-assembly',
brand: 'pudu',
brandLabel: 'Pudu',
name: 'Carpet Vacuuming Assembly',
tagline: 'CC1 attachment switching from hard-floor to carpet vacuum.',
group: 'attachment',
description:
'A CC1 attachment that converts the platform from hard-floor cleaning to dedicated carpet vacuuming. Quick swap for mixed-surface venues like hotels, offices, and lounges.',
features: [
'Carpet vacuum head',
'Quick swap kit',
'Mixed-surface support',
'Suction optimized for carpet fibers',
'Easy filter access',
'Hotel / office ready',
],
image: 'https://cdn.pudutech.com/CC_1pro_PC_0e0fd8a3d4.webp',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['CC1', 'CC1 Pro'],
},
{
id: 'pudu-reflective-post',
slug: 'pudu-reflective-post',
brand: 'pudu',
brandLabel: 'Pudu',
name: 'Reflective Post',
tagline: 'Floor markers and reflectors for SLAM positioning support.',
group: 'attachment',
description:
'Reflective posts and floor markers that assist SLAM positioning in challenging environments. Ideal for venues where visual texture or LiDAR returns are weak.',
features: [
'SLAM-assist reflectors',
'Floor markers',
'Weak-texture environment support',
'Quick install',
'Long-life reflective surface',
'Indoor / semi-outdoor use',
],
image: 'https://cdn.pudutech.com/nav_00c28dafe0.png',
accent: GOLD_BRONZE,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['All Pudu service + delivery robots'],
},
{
id: 'pudu-flashbot-vending-machine',
slug: 'pudu-flashbot-vending-machine',
brand: 'pudu',
brandLabel: 'Pudu',
name: 'FlashBot Vending Compartment',
tagline: 'Hotel mini-bar / vending compartment compatible with FlashBot.',
group: 'attachment',
description:
'A vending compartment kit compatible with FlashBot and FlashBot Max. Stocks snacks, drinks, amenities, or hotel mini-bar items for in-room or in-corridor delivery on demand.',
features: [
'Mini-bar style compartments',
'In-room / corridor delivery',
'Secure access',
'Stock management via Pudu Link',
'Multi-compartment layout',
'Compatible with FlashBot family',
],
image: 'https://cdn.pudutech.com/nav_flashbot_new_e3c621b5fd.png',
accent: GOLD_BRAND,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['FlashBot', 'FlashBot Max'],
},
// ============ PUDU IoT & BUILDING INTEGRATION ============
{
id: 'pudu-elevator-control-module',
slug: 'pudu-elevator-control-module',
brand: 'pudu',
brandLabel: 'Pudu',
name: 'Elevator Control Module',
tagline: 'IoT module enabling robots to call and operate elevators autonomously.',
group: 'iot-integration',
description:
'A hardware module enabling Pudu delivery robots to call and operate elevators without elevator-side modifications. Supports major elevator brands and integrates cleanly with building systems.',
features: [
'Cloud + hardware elevator control',
'No elevator modification required',
'Major elevator brand support',
'Multi-floor autonomous routing',
'Secure access integration',
'Pudu Link cloud',
],
image: 'https://cdn.pudutech.com/nav_product_BG_1_Pro_1_b196fdb002.png',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['FlashBot', 'FlashBot Max', 'PuduBot 2', 'SwiftBot'],
},
{
id: 'pudu-gate-control-module',
slug: 'pudu-gate-control-module',
brand: 'pudu',
brandLabel: 'Pudu',
name: 'Turnstile & Automatic Door Control',
tagline: 'IoT module for autonomous turnstile and automatic-door passage.',
group: 'iot-integration',
description:
'IoT module enabling Pudu robots to pass autonomously through turnstiles and automatic doors. Supports access control integration for secure premises and multi-zone routing.',
features: [
'Turnstile autonomous passage',
'Automatic door integration',
'Access control linkage',
'Multi-zone routing',
'Secure facility ready',
'Pudu Link cloud',
],
image: 'https://cdn.pudutech.com/nav_product_flashbot_arm_58961abf05.png',
accent: GOLD_BRAND,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['FlashBot', 'FlashBot Max', 'SwiftBot', 'PuduBot 2'],
},
{
id: 'pudu-telephone-system',
slug: 'pudu-telephone-system',
brand: 'pudu',
brandLabel: 'Pudu',
name: 'Telephone Integration',
tagline: 'Voice intercom linking guest phones to robot dispatch.',
group: 'iot-integration',
description:
'A telephone system integration linking guest or customer phones to robot dispatch. Voice intercom on the robot enables direct conversations during delivery or reception.',
features: [
'Voice intercom on robot',
'Guest phone integration',
'Direct conversation during delivery',
'PBX-friendly setup',
'Hospitality + corporate ready',
'Pudu Link cloud',
],
image: 'https://cdn.pudutech.com/nav_product_kettybotpro_64d5202d1a.png',
accent: GOLD_BRONZE,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['FlashBot', 'FlashBot Max', 'SwiftBot'],
},
];
export function getAccessoryBySlug(slug: string): Accessory | undefined {
return ACCESSORIES.find((a) => a.slug === slug);
}
export function getAccessoriesByGroup(group: AccessoryGroup): Accessory[] {
return ACCESSORIES.filter((a) => a.group === group);
}
export function getAccessoriesByBrand(brand: AccessoryBrand): Accessory[] {
return ACCESSORIES.filter((a) => a.brand === brand);
}

View File

@ -25,8 +25,8 @@ export const INDUSTRIES: Industry[] = [
matchCategories: ['hospitality', 'service', 'delivery'],
accent: '#DEE0F0',
icon: 'hotel',
image: '/industries/hospitality.webp',
imageAlt: 'Pudu service robot in a hospitality venue',
image: '/industries/cards/hospitality.webp',
imageAlt: 'Service robot delivering in a UAE hospitality venue',
},
{
id: 'restaurants',
@ -38,8 +38,8 @@ export const INDUSTRIES: Industry[] = [
matchCategories: ['delivery', 'service', 'hospitality'],
accent: '#8891C7',
icon: 'utensils',
image: '/industries/restaurants-cafes.webp',
imageAlt: 'Pudu food delivery robot in a restaurant environment',
image: '/industries/cards/restaurants-cafes.webp',
imageAlt: 'Tray-runner delivery robot serving a UAE restaurant floor',
},
{
id: 'hotels',
@ -51,8 +51,8 @@ export const INDUSTRIES: Industry[] = [
matchCategories: ['delivery', 'hospitality', 'service'],
accent: '#273F94',
icon: 'hotel',
image: '/industries/hotels-resorts.webp',
imageAlt: 'Pudu delivery robot serving hotel guests',
image: '/industries/cards/hotels-resorts.webp',
imageAlt: 'Multi-floor delivery robot serving hotel guests in the UAE',
},
{
id: 'malls',
@ -64,8 +64,8 @@ export const INDUSTRIES: Industry[] = [
matchCategories: ['cleaning', 'service', 'humanoid'],
accent: '#DEE0F0',
icon: 'shopping-bag',
image: '/industries/shopping-malls.webp',
imageAlt: 'Pudu service robot in a high-traffic retail environment',
image: '/industries/cards/shopping-malls.webp',
imageAlt: 'Service robot operating in a high-traffic UAE retail environment',
},
{
id: 'healthcare',
@ -77,8 +77,8 @@ export const INDUSTRIES: Industry[] = [
matchCategories: ['delivery', 'service'],
accent: '#273F94',
icon: 'heart-pulse',
image: '/industries/healthcare.webp',
imageAlt: 'Pudu delivery robot for healthcare and care facilities',
image: '/industries/cards/healthcare.webp',
imageAlt: 'Autonomous delivery robot for UAE healthcare and care facilities',
},
{
id: 'education',
@ -90,8 +90,8 @@ export const INDUSTRIES: Industry[] = [
matchCategories: ['humanoid', 'service'],
accent: '#8891C7',
icon: 'graduation-cap',
image: '/industries/education.jpg',
imageAlt: 'Unitree humanoid robot for education and STEM research',
image: '/industries/cards/education.jpg',
imageAlt: 'Humanoid research robot in a UAE STEM lab',
},
{
id: 'security',
@ -103,8 +103,8 @@ export const INDUSTRIES: Industry[] = [
matchCategories: ['quadruped', 'commercial'],
accent: '#DEE0F0',
icon: 'shield',
image: '/industries/security-surveillance.jpg',
imageAlt: 'Unitree quadruped robot on autonomous security patrol',
image: '/industries/cards/security-surveillance.jpg',
imageAlt: 'Quadruped robot on autonomous security patrol at a UAE facility',
},
{
id: 'warehouses',
@ -116,8 +116,8 @@ export const INDUSTRIES: Industry[] = [
matchCategories: ['quadruped', 'delivery', 'commercial'],
accent: '#273F94',
icon: 'warehouse',
image: '/industries/warehouses-logistics.webp',
imageAlt: 'Pudu industrial delivery robot for warehouses and logistics',
image: '/industries/cards/warehouses-logistics.webp',
imageAlt: 'Industrial robot for UAE warehouses and logistics operations',
},
{
id: 'events',

View File

@ -43,6 +43,7 @@ export type IndustryPageContent = {
heroTitle: string;
heroSubtitle: string;
heroTags?: string[];
heroImage?: { src: string; alt: string };
proofPoints?: ProofPoint[];
gallery?: GalleryImage[];
problemPoints: string[];
@ -63,10 +64,14 @@ export const INDUSTRY_PAGES: Record<string, IndustryPageContent> = {
heroSubtitle:
'Deploy service, delivery, cleaning, and concierge robots across UAE hospitality venues — from lounges and clubs to high-end hotels.',
heroTags: ['Service', 'Delivery', 'Cleaning', 'Concierge'],
heroImage: {
src: '/industries/pages/hospitality-hero.webp',
alt: 'Service robot in a premium UAE hospitality venue',
},
proofPoints: [
{ value: 'Pudu+Unitree', label: 'Brand mix' },
{ value: '60+', label: 'Countries deployed' },
{ value: 'Multi-zone', label: 'Route planning' },
{ value: 'Auto-dock', label: 'Charging cycles' },
{ value: 'Premium', label: 'Brand moments' },
],
gallery: [
@ -146,11 +151,15 @@ export const INDUSTRY_PAGES: Record<string, IndustryPageContent> = {
heroSubtitle:
'Delivery and greeting robots that support peak service, reduce walking distance, and elevate the dining experience in UAE F&B venues.',
heroTags: ['F&B service', 'Greeter', 'Multi-tray delivery', 'Promo runs'],
heroImage: {
src: '/industries/pages/restaurants-cafes-hero.webp',
alt: 'Tray-runner robot serving a UAE restaurant floor',
},
proofPoints: [
{ value: '40kg', label: 'Tray payload' },
{ value: '4-tier', label: 'BellaBot shelves' },
{ value: '24/7', label: 'Service-ready' },
{ value: '2,000+', label: 'Global venues' },
{ value: 'Peak-hour', label: 'Service support' },
{ value: 'Greet+Deliver', label: 'Hybrid roles' },
],
gallery: [
{ src: '/images/robots/pudu-bellabot.png', alt: 'Pudu BellaBot multi-tray delivery robot', caption: 'BellaBot Pro — multi-tray food delivery.', credit: 'Pudu' },
@ -224,6 +233,10 @@ export const INDUSTRY_PAGES: Record<string, IndustryPageContent> = {
heroSubtitle:
'Multi-floor delivery, cleaning, and humanoid moments designed for premium UAE hospitality operations.',
heroTags: ['Multi-floor', 'Room service', 'Concierge', 'Cleaning'],
heroImage: {
src: '/industries/pages/hotels-resorts-hero.webp',
alt: 'Multi-floor delivery robot serving a UAE hotel suite',
},
proofPoints: [
{ value: 'Multi-floor', label: 'Lift-aware nav' },
{ value: 'Pudu+Unitree', label: 'Brand mix' },
@ -302,8 +315,12 @@ export const INDUSTRY_PAGES: Record<string, IndustryPageContent> = {
heroSubtitle:
'Cleaning, service, security, and activation robots tuned for UAE malls, retail flagships, and large public venues.',
heroTags: ['Cleaning', 'Wayfinding', 'Activations', 'Night patrol'],
heroImage: {
src: '/industries/pages/shopping-malls-hero.webp',
alt: 'Service robot operating in a UAE shopping mall concourse',
},
proofPoints: [
{ value: '1,800m²/h', label: 'Cleaning throughput' },
{ value: 'Large-floor', label: 'Cleaning coverage' },
{ value: 'Thermal+LiDAR', label: 'Patrol sensors' },
{ value: 'Ad-screen', label: 'On-robot media' },
{ value: 'Overnight', label: 'Auto-cycles' },
@ -386,6 +403,10 @@ export const INDUSTRY_PAGES: Record<string, IndustryPageContent> = {
heroSubtitle:
'Transport supplies, meals, and medication around UAE clinics and hospitals — so clinicians can focus on patient care.',
heroTags: ['Internal delivery', 'Cleaning', 'Disinfection', 'Wayfinding'],
heroImage: {
src: '/industries/pages/healthcare-hero.webp',
alt: 'Delivery robot in a UAE hospital corridor',
},
proofPoints: [
{ value: 'Multi-floor', label: 'Lift integration' },
{ value: 'Contactless', label: 'Handoff' },
@ -464,6 +485,10 @@ export const INDUSTRY_PAGES: Record<string, IndustryPageContent> = {
heroSubtitle:
'Humanoid and quadruped robots that bring AI, programming, and modern robotics into UAE schools, universities, and innovation labs.',
heroTags: ['STEM labs', 'Robotics clubs', 'Innovation programs', 'Research'],
heroImage: {
src: '/industries/pages/education-hero.jpg',
alt: 'Humanoid research robot in a UAE STEM lab',
},
proofPoints: [
{ value: 'Open SDK', label: 'Programmable' },
{ value: 'Humanoid', label: 'G1 / H1' },
@ -567,8 +592,12 @@ export const INDUSTRY_PAGES: Record<string, IndustryPageContent> = {
security: {
heroTitle: 'Autonomous patrol and inspection robots.',
heroSubtitle:
'Quadruped robots with infrared thermography, LiDAR, and AI vision that patrol, inspect, and monitor critical UAE facilities — 24/7 with zero downtime.',
heroTags: ['Patrol', 'Thermal imaging', 'LiDAR + AI vision', '24/7'],
'Quadruped robots with thermal imaging, LiDAR, and AI vision that walk routine patrol and inspection routes across critical UAE facilities — consistently and on schedule.',
heroTags: ['Patrol', 'Thermal imaging', 'LiDAR + AI vision', 'Continuous'],
heroImage: {
src: '/industries/pages/security-surveillance-hero.jpg',
alt: 'Quadruped robot on autonomous patrol in a UAE industrial site',
},
proofPoints: [
{ value: '90%', label: 'Complex terrain covered' },
{ value: '40kg', label: 'Sustained payload' },
@ -678,6 +707,10 @@ export const INDUSTRY_PAGES: Record<string, IndustryPageContent> = {
heroSubtitle:
'Inspection, transport, and monitoring robots that scale repetitive work across UAE logistics sites and industrial facilities — thermal vision, LiDAR, and AI route planning.',
heroTags: ['Aisle inspection', 'Thermal + LiDAR', 'AI patrols', 'Cloud fleet'],
heroImage: {
src: '/industries/pages/warehouses-logistics-hero.png',
alt: 'Industrial inspection robot in a UAE warehouse facility',
},
proofPoints: [
{ value: '90%', label: 'Terrain coverage' },
{ value: '40cm', label: 'Obstacle clearance' },

File diff suppressed because it is too large Load Diff