perf: convert all images to webp, update references
CI/CD / test-and-build (push) Waiting to run
CI/CD / deploy (push) Blocked by required conditions

- 77 jpg/png/gif → webp (kept 7 where webp larger)
- public/ assets: 23.3 MB → ~12 MB (~50% smaller)
- 110 image references updated across data files + components
- scripts/convert-to-webp.mjs + scripts/fix-image-refs.mjs added

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Najjar\NajjarV02
2026-05-21 17:26:39 +04:00
co-authored by Claude Opus 4.7
parent de25d774af
commit dda358b59d
165 changed files with 254 additions and 110 deletions
+1 -1
View File
@@ -116,7 +116,7 @@ export default async function BuSunaidahPage() {
{BU_SUNAIDAH_REEL == null ? (
<div className="bs-reel-placeholder">
<Image
src="/images/robots/unitree-g1.png"
src="/images/robots/unitree-g1.webp"
alt="Bu Sunaidah persona — reel preview"
fill
sizes="(max-width: 900px) 100vw, 980px"
+2 -2
View File
@@ -18,8 +18,8 @@ export const metadata: Metadata = {
const HERO_COLLAGE: { src: string; alt: string }[] = [
{ src: '/industries/cards/hospitality.webp', alt: 'Service robot in a luxury hospitality lobby' },
{ src: '/industries/cards/security-surveillance.jpg', alt: 'Quadruped robot on security patrol' },
{ src: '/images/robots/unitree-h1.jpg', alt: 'Humanoid robot engaging with students in a classroom' },
{ src: '/industries/cards/security-surveillance.webp', alt: 'Quadruped robot on security patrol' },
{ src: '/images/robots/unitree-h1.webp', alt: 'Humanoid robot engaging with students in a classroom' },
{ src: '/industries/cards/healthcare.webp', alt: 'Delivery robot moving through a hospital corridor' },
];
+1 -1
View File
@@ -56,7 +56,7 @@ export function FooterAndContact() {
<div className="ft-logo-row">
<span className="ft-logo">
<Image
src="/images/brands/ys-lootah-robotics-logo.png"
src="/images/brands/ys-lootah-robotics-logo.webp"
alt="YS Lootah Robotics logo"
fill
sizes="46px"
+1 -1
View File
@@ -91,7 +91,7 @@ export function Navbar() {
}}
>
<Image
src="/images/brands/ys-lootah-robotics-logo.png"
src="/images/brands/ys-lootah-robotics-logo.webp"
alt="YS Lootah Robotics logo"
fill
sizes="40px"
+4 -4
View File
@@ -19,16 +19,16 @@ const BRAND_VISUALS: Record<RobotBrand, BrandVisual> = {
description:
'Quadruped and humanoid robotics platforms available in the UAE through YS Lootah Robotics.',
chips: ['Quadruped', 'Humanoid', 'Inspection', 'Research'],
primary: { src: '/images/robots/unitree-g1.png', alt: 'Unitree G1 humanoid robot' },
secondary: { src: '/images/robots/unitree-go2.png', alt: 'Unitree Go2 quadruped robot' },
primary: { src: '/images/robots/unitree-g1.webp', alt: 'Unitree G1 humanoid robot' },
secondary: { src: '/images/robots/unitree-go2.webp', alt: 'Unitree Go2 quadruped robot' },
},
pudu: {
logo: { src: '/brands/pudu-logo.svg', alt: 'Pudu Robotics logo', width: 121, height: 32 },
description:
'Service, delivery, cleaning, and hospitality robotics available in the UAE through YS Lootah Robotics.',
chips: ['Service', 'Delivery', 'Cleaning', 'Hospitality'],
primary: { src: '/images/robots/pudu-bellabot.png', alt: 'Pudu BellaBot multi-tray delivery robot' },
secondary: { src: '/images/robots/pudu-kettybot.png', alt: 'Pudu KettyBot Pro service robot with built-in advertising display' },
primary: { src: '/images/robots/pudu-bellabot.webp', alt: 'Pudu BellaBot multi-tray delivery robot' },
secondary: { src: '/images/robots/pudu-kettybot.webp', alt: 'Pudu KettyBot Pro service robot with built-in advertising display' },
},
};
@@ -105,16 +105,16 @@ export function ExclusiveAccessSection() {
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' }}
primary={{ src: '/images/robots/unitree-g1.webp', alt: 'Unitree G1 humanoid robot' }}
secondary={{ src: '/images/robots/unitree-go2.webp', alt: 'Unitree Go2 quadruped robot' }}
/>
<BrandShowcaseTile
href="/brands/#pudu"
brand="Pudu Robotics"
tag="Service · Delivery · Cleaning"
accent="#8891C7"
primary={{ src: '/images/robots/pudu-bellabot.png', alt: 'Pudu BellaBot multi-tray delivery robot' }}
secondary={{ src: '/images/robots/pudu-kettybot.png', alt: 'Pudu KettyBot Pro service robot with built-in advertising display' }}
primary={{ src: '/images/robots/pudu-bellabot.webp', alt: 'Pudu BellaBot multi-tray delivery robot' }}
secondary={{ src: '/images/robots/pudu-kettybot.webp', alt: 'Pudu KettyBot Pro service robot with built-in advertising display' }}
/>
<TerritoryTile />
<ShowroomTile />
@@ -14,10 +14,10 @@ const ease = [0.16, 1, 0.3, 1] as const;
/* unique exhibit visuals per slug — transparent renders for clean dark integration */
const FEATURED_IMG: Record<string, string> = {
'unitree-g1': '/images/robots/unitree-g1.png',
'unitree-go2': '/images/robots/featured-go2.png',
'pudu-bellabot': '/images/robots/featured-bellabot-pro.png',
'pudu-kettybot': '/images/robots/pudu-kettybot.png',
'unitree-g1': '/images/robots/unitree-g1.webp',
'unitree-go2': '/images/robots/featured-go2.webp',
'pudu-bellabot': '/images/robots/featured-bellabot-pro.webp',
'pudu-kettybot': '/images/robots/pudu-kettybot.webp',
};
const exhibitImg = (slug: string, fallback: string) => FEATURED_IMG[slug] ?? fallback;
@@ -15,21 +15,21 @@ const SHOWROOM_ROBOTS = [
{
name: 'Unitree G1',
slug: 'unitree-g1',
image: '/images/robots/unitree-g1.png',
image: '/images/robots/unitree-g1.webp',
category: 'Humanoid',
accent: '#DEE0F0',
},
{
name: 'Unitree Go2',
slug: 'unitree-go2',
image: '/images/robots/unitree-go2.png',
image: '/images/robots/unitree-go2.webp',
category: 'Quadruped',
accent: '#D7DBEA',
},
{
name: 'Pudu BellaBot',
slug: 'pudu-bellabot',
image: '/images/robots/pudu-bellabot.png',
image: '/images/robots/pudu-bellabot.webp',
category: 'Delivery',
accent: '#8891C7',
},
+21 -21
View File
@@ -93,7 +93,7 @@ export const ACCESSORIES: Accessory[] = [
'Survived 100+ drop tests',
'1000 Hz sensor / comm rate',
],
image: '/images/accessories/unitree-dex2-5.jpg',
image: '/images/accessories/unitree-dex2-5.webp',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.unitree.com/Dex2-5',
compatibility: ['Unitree G1', 'Unitree R1'],
@@ -182,7 +182,7 @@ export const ACCESSORIES: Accessory[] = [
'Low-damping, small-clearance reducers',
'1000 Hz comm + sensor rate',
],
image: '/images/accessories/unitree-dex5-1.png',
image: '/images/accessories/unitree-dex5-1.webp',
accent: GOLD_BRAND,
officialUrl: 'https://www.unitree.com/Dex5-1',
compatibility: ['Unitree G1', 'Unitree H1', 'Unitree H2', 'Research arms'],
@@ -286,7 +286,7 @@ export const ACCESSORIES: Accessory[] = [
],
},
],
paramsImage: '/images/accessories/unitree-dex5-1/params.png',
paramsImage: '/images/accessories/unitree-dex5-1/params.webp',
footnotes: [
'Size refers to dexterous hand in flat state.',
'Pressure data represents force from a vertically-applied 1 cm diameter cylinder; varies by application scenario.',
@@ -429,7 +429,7 @@ export const ACCESSORIES: Accessory[] = [
'6 Mbps RS485 communication',
'Advanced version includes 1080p camera',
],
image: '/images/accessories/unitree-dex1-1.png',
image: '/images/accessories/unitree-dex1-1.webp',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.unitree.com/Dex1-1',
compatibility: ['Unitree G1', 'Unitree H2', 'Unitree R1', 'Standalone'],
@@ -490,7 +490,7 @@ export const ACCESSORIES: Accessory[] = [
],
},
],
paramsImage: '/images/accessories/unitree-dex1-1/diagram.png',
paramsImage: '/images/accessories/unitree-dex1-1/diagram.webp',
footnotes: [
'The gripper width is 78 mm when half-open, 120 mm when fully open, and 124.5 mm when fully closed (with side rails extended).',
'Listed values for speed, gripping force, and full-stroke closing time are measured under varying conditions (24 V – 60 V) by adjusting motor stiffness, damping, and torque. Values may vary depending on the application.',
@@ -524,7 +524,7 @@ export const ACCESSORIES: Accessory[] = [
'Harmonic reducer joint motors',
'Ethernet interface, Ubuntu OS',
],
image: '/images/accessories/unitree-z1.png',
image: '/images/accessories/unitree-z1.webp',
accent: GOLD_BRAND,
officialUrl: 'https://www.unitree.com/z1',
compatibility: ['Unitree AlienGo', 'Unitree B1', 'Mobile platforms'],
@@ -636,7 +636,7 @@ export const ACCESSORIES: Accessory[] = [
'24 V @ 2.5 A standard / 5 A max',
'RJ45 + Type-C debug interface',
],
image: '/images/accessories/unitree-d1-t.jpg',
image: '/images/accessories/unitree-d1-t.webp',
accent: GOLD_BRONZE,
officialUrl: 'https://www.unitree.com/D1-T',
compatibility: ['Embodied AI research', 'Data collection'],
@@ -838,7 +838,7 @@ export const ACCESSORIES: Accessory[] = [
'Multiple device pairing',
'Customizable call zones',
],
image: '/images/accessories/pudu-pager.png',
image: '/images/accessories/pudu-pager.webp',
accent: GOLD_BRONZE,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['BellaBot', 'BellaBot Pro', 'KettyBot', 'HolaBot', 'PuduBot 2'],
@@ -861,7 +861,7 @@ export const ACCESSORIES: Accessory[] = [
'Multi-robot management',
'Pudu Link integration',
],
image: '/images/accessories/pudu-pager.png',
image: '/images/accessories/pudu-pager.webp',
accent: GOLD_BRAND,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['All Pudu service robots'],
@@ -886,7 +886,7 @@ export const ACCESSORIES: Accessory[] = [
'Status indicators',
'Pudu Link cloud integration',
],
image: '/images/robots/pudu-sh1.png',
image: '/images/robots/pudu-sh1.webp',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['CC1', 'T300', 'FlashBot Max', 'BellaBot Pro', 'PuduBot 2'],
@@ -909,7 +909,7 @@ export const ACCESSORIES: Accessory[] = [
'Indoor commercial environments',
'Fleet-ready',
],
image: '/images/accessories/pudu-self-cleaning-dock.png',
image: '/images/accessories/pudu-self-cleaning-dock.webp',
accent: GOLD_BRONZE,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['CC1', 'CC1 Pro'],
@@ -932,7 +932,7 @@ export const ACCESSORIES: Accessory[] = [
'Modular tank',
'Cleaning-ready operation',
],
image: '/images/accessories/pudu-mobile-water-station.png',
image: '/images/accessories/pudu-mobile-water-station.webp',
accent: GOLD_BRAND,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['CC1', 'SH1'],
@@ -957,7 +957,7 @@ export const ACCESSORIES: Accessory[] = [
'Available colors',
'Heavy-traffic ready',
],
image: '/images/accessories/pudu-protection-case.png',
image: '/images/accessories/pudu-protection-case.webp',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['BellaBot Pro', 'KettyBot Pro', 'T300', 'FlashBot Max'],
@@ -980,7 +980,7 @@ export const ACCESSORIES: Accessory[] = [
'High-traffic delivery ready',
'Quick install',
],
image: '/images/accessories/pudu-retractable-tray-baffle.png',
image: '/images/accessories/pudu-retractable-tray-baffle.webp',
accent: GOLD_BRONZE,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['BellaBot Pro', 'KettyBot Pro'],
@@ -1003,7 +1003,7 @@ export const ACCESSORIES: Accessory[] = [
'Quick swap',
'Multiple finishes',
],
image: '/images/robots/pudu-pudubot2.png',
image: '/images/robots/pudu-pudubot2.webp',
accent: GOLD_BRAND,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['BellaBot', 'BellaBot Pro', 'KettyBot Pro', 'PuduBot 2'],
@@ -1026,7 +1026,7 @@ export const ACCESSORIES: Accessory[] = [
'Heavy-duty rollers',
'Conveyor IoT integration',
],
image: '/images/accessories/pudu-conveyor-single-layer.png',
image: '/images/accessories/pudu-conveyor-single-layer.webp',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['PUDU T300'],
@@ -1072,7 +1072,7 @@ export const ACCESSORIES: Accessory[] = [
'Long-life reflective surface',
'Indoor / semi-outdoor use',
],
image: '/images/accessories/pudu-reflective-post.png',
image: '/images/accessories/pudu-reflective-post.webp',
accent: GOLD_BRONZE,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['All Pudu service + delivery robots'],
@@ -1095,7 +1095,7 @@ export const ACCESSORIES: Accessory[] = [
'Multi-compartment layout',
'Compatible with FlashBot family',
],
image: '/images/robots/pudu-flashbot-max.png',
image: '/images/robots/pudu-flashbot-max.webp',
accent: GOLD_BRAND,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['FlashBot', 'FlashBot Max'],
@@ -1120,7 +1120,7 @@ export const ACCESSORIES: Accessory[] = [
'Secure access integration',
'Pudu Link cloud',
],
image: '/images/accessories/pudu-elevator-control-module.png',
image: '/images/accessories/pudu-elevator-control-module.webp',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['FlashBot', 'FlashBot Max', 'PuduBot 2', 'SwiftBot'],
@@ -1143,7 +1143,7 @@ export const ACCESSORIES: Accessory[] = [
'Secure facility ready',
'Pudu Link cloud',
],
image: '/images/accessories/pudu-gate-control-module.png',
image: '/images/accessories/pudu-gate-control-module.webp',
accent: GOLD_BRAND,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['FlashBot', 'FlashBot Max', 'SwiftBot', 'PuduBot 2'],
@@ -1166,7 +1166,7 @@ export const ACCESSORIES: Accessory[] = [
'Hospitality + corporate ready',
'Pudu Link cloud',
],
image: '/images/robots/pudu-kettybot.png',
image: '/images/robots/pudu-kettybot.webp',
accent: GOLD_BRONZE,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['FlashBot', 'FlashBot Max', 'SwiftBot'],
+3 -3
View File
@@ -90,7 +90,7 @@ export const INDUSTRIES: Industry[] = [
matchCategories: ['humanoid', 'service'],
accent: '#8891C7',
icon: 'graduation-cap',
image: '/images/robots/unitree-h1.jpg',
image: '/images/robots/unitree-h1.webp',
imageAlt: 'Humanoid research robot in a UAE STEM lab',
},
{
@@ -103,7 +103,7 @@ export const INDUSTRIES: Industry[] = [
matchCategories: ['quadruped', 'commercial'],
accent: '#DEE0F0',
icon: 'shield',
image: '/industries/cards/security-surveillance.jpg',
image: '/industries/cards/security-surveillance.webp',
imageAlt: 'Quadruped robot on autonomous security patrol at a UAE facility',
},
{
@@ -155,7 +155,7 @@ export const INDUSTRIES: Industry[] = [
matchCategories: ['humanoid', 'quadruped', 'service'],
accent: '#273F94',
icon: 'landmark',
image: '/industries/unitree/utility-room.jpg',
image: '/industries/unitree/utility-room.webp',
imageAlt: 'Quadruped robots deployed for UAE civic and emergency services',
},
];
+41 -41
View File
@@ -75,10 +75,10 @@ export const INDUSTRY_PAGES: Record<string, IndustryPageContent> = {
{ value: 'Premium', label: 'Brand moments' },
],
gallery: [
{ src: '/images/robots/pudu-bellabot.png', alt: 'BellaBot service-floor delivery', caption: 'BellaBot Pro — service-floor delivery.', credit: 'Pudu' },
{ src: '/images/robots/pudu-kettybot.png', alt: 'KettyBot front-of-house greeter', caption: 'KettyBot Pro — front-of-house greeter.', credit: 'Pudu' },
{ src: '/images/robots/pudu-cc1.png', alt: 'PUDU CC1 lobby cleaning', caption: 'PUDU CC1 — overnight lobby cleaning.', credit: 'Pudu' },
{ src: '/images/robots/unitree-g1.png', alt: 'Unitree G1 humanoid concierge', caption: 'Unitree G1 — humanoid concierge moments.', credit: 'Unitree' },
{ src: '/images/robots/pudu-bellabot.webp', alt: 'BellaBot service-floor delivery', caption: 'BellaBot Pro — service-floor delivery.', credit: 'Pudu' },
{ src: '/images/robots/pudu-kettybot.webp', alt: 'KettyBot front-of-house greeter', caption: 'KettyBot Pro — front-of-house greeter.', credit: 'Pudu' },
{ src: '/images/robots/pudu-cc1.webp', alt: 'PUDU CC1 lobby cleaning', caption: 'PUDU CC1 — overnight lobby cleaning.', credit: 'Pudu' },
{ src: '/images/robots/unitree-g1.webp', alt: 'Unitree G1 humanoid concierge', caption: 'Unitree G1 — humanoid concierge moments.', credit: 'Unitree' },
],
problemPoints: [
'Guest service teams are stretched thin during peak hours and events.',
@@ -162,9 +162,9 @@ export const INDUSTRY_PAGES: Record<string, IndustryPageContent> = {
{ 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' },
{ src: '/images/robots/featured-bellabot-pro.png', alt: 'BellaBot Pro on restaurant floor', caption: 'Designed for restaurant peak service.', credit: 'Pudu' },
{ src: '/images/robots/pudu-kettybot.png', alt: 'Pudu KettyBot greeter robot', caption: 'KettyBot Pro — greeter with ad display.', credit: 'Pudu' },
{ src: '/images/robots/pudu-bellabot.webp', alt: 'Pudu BellaBot multi-tray delivery robot', caption: 'BellaBot Pro — multi-tray food delivery.', credit: 'Pudu' },
{ src: '/images/robots/featured-bellabot-pro.webp', alt: 'BellaBot Pro on restaurant floor', caption: 'Designed for restaurant peak service.', credit: 'Pudu' },
{ src: '/images/robots/pudu-kettybot.webp', alt: 'Pudu KettyBot greeter robot', caption: 'KettyBot Pro — greeter with ad display.', credit: 'Pudu' },
{ src: '/images/robots/featured-kettybot-black.webp', alt: 'KettyBot in black', caption: 'KettyBot Pro — premium black finish.', credit: 'Pudu' },
],
problemPoints: [
@@ -244,10 +244,10 @@ export const INDUSTRY_PAGES: Record<string, IndustryPageContent> = {
{ value: 'Premium', label: 'Guest moments' },
],
gallery: [
{ src: '/images/robots/pudu-holabot.png', alt: 'Pudu HolaBot multi-floor delivery', caption: 'HolaBot / FlashBot — multi-floor delivery.', credit: 'Pudu' },
{ src: '/images/robots/pudu-cc1.png', alt: 'PUDU CC1 cleaning scrubber', caption: 'PUDU CC1 — commercial cleaning scrubber.', credit: 'Pudu' },
{ src: '/images/robots/pudu-pudubot2.png', alt: 'PuduBot 2 indoor delivery', caption: 'PuduBot 2 — indoor logistics platform.', credit: 'Pudu' },
{ src: '/images/robots/unitree-g1.png', alt: 'Unitree G1 humanoid for concierge moments', caption: 'Unitree G1 — humanoid concierge moments.', credit: 'Unitree' },
{ src: '/images/robots/pudu-holabot.webp', alt: 'Pudu HolaBot multi-floor delivery', caption: 'HolaBot / FlashBot — multi-floor delivery.', credit: 'Pudu' },
{ src: '/images/robots/pudu-cc1.webp', alt: 'PUDU CC1 cleaning scrubber', caption: 'PUDU CC1 — commercial cleaning scrubber.', credit: 'Pudu' },
{ src: '/images/robots/pudu-pudubot2.webp', alt: 'PuduBot 2 indoor delivery', caption: 'PuduBot 2 — indoor logistics platform.', credit: 'Pudu' },
{ src: '/images/robots/unitree-g1.webp', alt: 'Unitree G1 humanoid for concierge moments', caption: 'Unitree G1 — humanoid concierge moments.', credit: 'Unitree' },
],
problemPoints: [
'Room service and back-of-house logistics consume operational hours.',
@@ -326,9 +326,9 @@ export const INDUSTRY_PAGES: Record<string, IndustryPageContent> = {
{ value: 'Overnight', label: 'Auto-cycles' },
],
gallery: [
{ src: '/images/robots/pudu-cc1.png', alt: 'PUDU CC1 auto-scrubber', caption: 'PUDU CC1 — auto-scrubber for large floors.', credit: 'Pudu' },
{ src: '/images/robots/pudu-kettybot.png', alt: 'KettyBot wayfinding and ad display', caption: 'KettyBot Pro — wayfinding and promo runs.', credit: 'Pudu' },
{ src: '/images/robots/unitree-go2.png', alt: 'Unitree Go2 night patrol', caption: 'Unitree Go2 — night patrol across decks.', credit: 'Unitree' },
{ src: '/images/robots/pudu-cc1.webp', alt: 'PUDU CC1 auto-scrubber', caption: 'PUDU CC1 — auto-scrubber for large floors.', credit: 'Pudu' },
{ src: '/images/robots/pudu-kettybot.webp', alt: 'KettyBot wayfinding and ad display', caption: 'KettyBot Pro — wayfinding and promo runs.', credit: 'Pudu' },
{ src: '/images/robots/unitree-go2.webp', alt: 'Unitree Go2 night patrol', caption: 'Unitree Go2 — night patrol across decks.', credit: 'Unitree' },
{ src: '/industries/unitree/thermal.jpg', alt: 'Thermal + LiDAR patrol sensors', caption: 'Thermal + LiDAR sensors for after-hours rounds.', credit: 'Unitree' },
],
problemPoints: [
@@ -414,10 +414,10 @@ export const INDUSTRY_PAGES: Record<string, IndustryPageContent> = {
{ value: '24/7', label: 'Continuous ops' },
],
gallery: [
{ src: '/images/robots/pudu-holabot.png', alt: 'Pudu HolaBot hospital delivery', caption: 'HolaBot / FlashBot — medication and meal delivery.', credit: 'Pudu' },
{ src: '/images/robots/pudu-cc1.png', alt: 'PUDU CC1 cleaning between cycles', caption: 'PUDU CC1 — between-cycle floor cleaning.', credit: 'Pudu' },
{ src: '/images/robots/pudu-d9.png', alt: 'PUDU D9 disinfection robot', caption: 'PUDU D9 — UV-C disinfection.', credit: 'Pudu' },
{ src: '/images/robots/pudu-kettybot.png', alt: 'KettyBot visitor reception', caption: 'KettyBot Pro — visitor reception.', credit: 'Pudu' },
{ src: '/images/robots/pudu-holabot.webp', alt: 'Pudu HolaBot hospital delivery', caption: 'HolaBot / FlashBot — medication and meal delivery.', credit: 'Pudu' },
{ src: '/images/robots/pudu-cc1.webp', alt: 'PUDU CC1 cleaning between cycles', caption: 'PUDU CC1 — between-cycle floor cleaning.', credit: 'Pudu' },
{ src: '/images/robots/pudu-d9.webp', alt: 'PUDU D9 disinfection robot', caption: 'PUDU D9 — UV-C disinfection.', credit: 'Pudu' },
{ src: '/images/robots/pudu-kettybot.webp', alt: 'KettyBot visitor reception', caption: 'KettyBot Pro — visitor reception.', credit: 'Pudu' },
],
problemPoints: [
'Clinical staff lose hours to non-clinical transport tasks.',
@@ -486,7 +486,7 @@ export const INDUSTRY_PAGES: Record<string, IndustryPageContent> = {
'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: '/images/robots/unitree-h1.jpg',
src: '/images/robots/unitree-h1.webp',
alt: 'Humanoid research robot in a UAE STEM lab',
},
proofPoints: [
@@ -496,10 +496,10 @@ export const INDUSTRY_PAGES: Record<string, IndustryPageContent> = {
{ value: 'K-12 → PhD', label: 'Curriculum range' },
],
gallery: [
{ src: '/images/robots/unitree-g1.png', alt: 'Unitree G1 humanoid in STEM lab', caption: 'Unitree G1 — humanoid platform for AI and HRI labs.', credit: 'Unitree' },
{ src: '/images/robots/unitree-go2.png', alt: 'Unitree Go2 quadruped for STEM', caption: 'Unitree Go2 / Go2 EDU — programmable quadruped.', credit: 'Unitree' },
{ src: '/images/robots/unitree-b2.png', alt: 'Unitree B2 research platform', caption: 'Unitree B2 — advanced research projects.', credit: 'Unitree' },
{ src: '/industries/unitree/modular.jpg', alt: 'Modular sensor and payload kits', caption: 'Modular sensor and payload options for course work.', credit: 'Unitree' },
{ src: '/images/robots/unitree-g1.webp', alt: 'Unitree G1 humanoid in STEM lab', caption: 'Unitree G1 — humanoid platform for AI and HRI labs.', credit: 'Unitree' },
{ src: '/images/robots/unitree-go2.webp', alt: 'Unitree Go2 quadruped for STEM', caption: 'Unitree Go2 / Go2 EDU — programmable quadruped.', credit: 'Unitree' },
{ src: '/images/robots/unitree-b2.webp', alt: 'Unitree B2 research platform', caption: 'Unitree B2 — advanced research projects.', credit: 'Unitree' },
{ src: '/industries/unitree/modular.webp', alt: 'Modular sensor and payload kits', caption: 'Modular sensor and payload options for course work.', credit: 'Unitree' },
],
problemPoints: [
'Schools need hands-on robotics and AI learning tools.',
@@ -595,7 +595,7 @@ export const INDUSTRY_PAGES: Record<string, IndustryPageContent> = {
'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/unitree/terrain.jpg',
src: '/industries/unitree/terrain.webp',
alt: 'Quadruped robot on autonomous patrol in a UAE industrial site',
},
proofPoints: [
@@ -605,15 +605,15 @@ export const INDUSTRY_PAGES: Record<string, IndustryPageContent> = {
{ value: '4–6h', label: 'Patrol endurance' },
],
gallery: [
{ src: '/industries/unitree/terrain.jpg', alt: 'Quadruped robot on mixed industrial terrain', caption: 'Stairs, gullies, and uneven ground handled on one platform.', credit: 'Unitree' },
{ src: '/industries/unitree/terrain.webp', alt: 'Quadruped robot on mixed industrial terrain', caption: 'Stairs, gullies, and uneven ground handled on one platform.', credit: 'Unitree' },
{ src: '/industries/unitree/thermal.jpg', alt: 'Thermal imaging and laser-radar detection', caption: 'Thermal, laser-radar, and AI imaging for routine monitoring.', credit: 'Unitree' },
{ src: '/industries/unitree/substation.jpg', alt: 'Power substation patrol', caption: 'Substation patrol — switchgear and transformer scans.', credit: 'Unitree' },
{ src: '/industries/unitree/pipeline.jpg', alt: 'Pipeline corridor patrol', caption: 'Pipeline and refinery corridor inspection rounds.', credit: 'Unitree' },
{ src: '/industries/unitree/industrial-park.jpg', alt: 'Industrial park perimeter coverage', caption: 'Industrial park and large-compound perimeter coverage.', credit: 'Unitree' },
{ src: '/industries/unitree/utility-room.jpg', alt: 'Utility plant room inspection', caption: 'Utility and plant-room routine checks.', credit: 'Unitree' },
{ src: '/industries/unitree/substation.webp', alt: 'Power substation patrol', caption: 'Substation patrol — switchgear and transformer scans.', credit: 'Unitree' },
{ src: '/industries/unitree/pipeline.webp', alt: 'Pipeline corridor patrol', caption: 'Pipeline and refinery corridor inspection rounds.', credit: 'Unitree' },
{ src: '/industries/unitree/industrial-park.webp', alt: 'Industrial park perimeter coverage', caption: 'Industrial park and large-compound perimeter coverage.', credit: 'Unitree' },
{ src: '/industries/unitree/utility-room.webp', alt: 'Utility plant room inspection', caption: 'Utility and plant-room routine checks.', credit: 'Unitree' },
{ src: '/industries/unitree/mine.jpg', alt: 'Tunnel inspection', caption: 'Tunnel and confined-zone inspection.', credit: 'Unitree' },
{ src: '/industries/unitree/terrain-night.jpg', alt: 'Quadruped robot on night patrol', caption: 'After-hours rounds with consistent route timing.', credit: 'Unitree' },
{ src: '/industries/unitree/b2-render.png', alt: 'Unitree B2 industrial quadruped render', caption: 'B2 — industrial-grade quadruped platform.', credit: 'Unitree' },
{ src: '/industries/unitree/terrain-night.webp', alt: 'Quadruped robot on night patrol', caption: 'After-hours rounds with consistent route timing.', credit: 'Unitree' },
{ src: '/industries/unitree/b2-render.webp', alt: 'Unitree B2 industrial quadruped render', caption: 'B2 — industrial-grade quadruped platform.', credit: 'Unitree' },
],
problemPoints: [
'Manual patrols are repetitive, costly, and uneven across shifts.',
@@ -711,7 +711,7 @@ export const INDUSTRY_PAGES: Record<string, IndustryPageContent> = {
'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/unitree/patrol-system.png',
src: '/industries/unitree/patrol-system.webp',
alt: 'Industrial inspection robot in a UAE warehouse facility',
},
proofPoints: [
@@ -721,15 +721,15 @@ export const INDUSTRY_PAGES: Record<string, IndustryPageContent> = {
{ value: 'Scheduled', label: 'Auto run cycles' },
],
gallery: [
{ src: '/industries/unitree/patrol-system.png', alt: 'Patrol system overview', caption: 'End-to-end patrol and inspection platform.', credit: 'Unitree' },
{ src: '/industries/unitree/ai-patrol.jpg', alt: 'AI-planned facility patrols', caption: 'AI route planning across facility zones.', credit: 'Unitree' },
{ src: '/industries/unitree/digital-twin.jpg', alt: 'Digital twin facility view', caption: 'Digital twin view of facility and fleet status.', credit: 'Unitree' },
{ src: '/industries/unitree/analytics.jpg', alt: 'Inference and anomaly analytics dashboard', caption: 'Anomaly analytics on live patrol data.', credit: 'Unitree' },
{ src: '/industries/unitree/flight-path.jpg', alt: '3D auto-generated route path', caption: '3D route planning for repeatable rounds.', credit: 'Unitree' },
{ src: '/industries/unitree/sensor-overview.png', alt: 'Modular sensor and payload diagram', caption: 'Modular sensor and payload options.', credit: 'Unitree' },
{ src: '/industries/unitree/cloud.jpg', alt: 'Cloud-connected fleet management', caption: 'Cloud platform for fleet operations.', credit: 'Unitree' },
{ src: '/industries/unitree/cost-efficiency.jpg', alt: 'Long-term operational cost view', caption: 'Lower long-term cost across cycles.', credit: 'Unitree' },
{ src: '/industries/unitree/go2-render.png', alt: 'Unitree Go2 quadruped render', caption: 'Go2 — agile inspection platform.', credit: 'Unitree' },
{ src: '/industries/unitree/patrol-system.webp', alt: 'Patrol system overview', caption: 'End-to-end patrol and inspection platform.', credit: 'Unitree' },
{ src: '/industries/unitree/ai-patrol.webp', alt: 'AI-planned facility patrols', caption: 'AI route planning across facility zones.', credit: 'Unitree' },
{ src: '/industries/unitree/digital-twin.webp', alt: 'Digital twin facility view', caption: 'Digital twin view of facility and fleet status.', credit: 'Unitree' },
{ src: '/industries/unitree/analytics.webp', alt: 'Inference and anomaly analytics dashboard', caption: 'Anomaly analytics on live patrol data.', credit: 'Unitree' },
{ src: '/industries/unitree/flight-path.webp', alt: '3D auto-generated route path', caption: '3D route planning for repeatable rounds.', credit: 'Unitree' },
{ src: '/industries/unitree/sensor-overview.webp', alt: 'Modular sensor and payload diagram', caption: 'Modular sensor and payload options.', credit: 'Unitree' },
{ src: '/industries/unitree/cloud.webp', alt: 'Cloud-connected fleet management', caption: 'Cloud platform for fleet operations.', credit: 'Unitree' },
{ src: '/industries/unitree/cost-efficiency.webp', alt: 'Long-term operational cost view', caption: 'Lower long-term cost across cycles.', credit: 'Unitree' },
{ src: '/industries/unitree/go2-render.webp', alt: 'Unitree Go2 quadruped render', caption: 'Go2 — agile inspection platform.', credit: 'Unitree' },
],
problemPoints: [
'Inventory and inspection routes scale poorly with human hours.',
+25 -25
View File
@@ -110,7 +110,7 @@ export const ROBOTS: Robot[] = [
SPEC_CONSULT,
SPEC_PLACEHOLDER,
],
image: '/images/robots/unitree-g1.png',
image: '/images/robots/unitree-g1.webp',
imageType: 'photo',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.unitree.com/g1',
@@ -149,7 +149,7 @@ export const ROBOTS: Robot[] = [
{ label: 'Top Speed', value: '3.3 m/s' },
SPEC_CONSULT,
],
image: '/images/robots/unitree-h1.jpg',
image: '/images/robots/unitree-h1.webp',
imageType: 'photo',
accent: GOLD_BRAND,
officialUrl: 'https://www.unitree.com/h1',
@@ -182,7 +182,7 @@ export const ROBOTS: Robot[] = [
{ label: 'Joints', value: '31 DOF' },
SPEC_CONSULT,
],
image: '/images/robots/unitree-h2.png',
image: '/images/robots/unitree-h2.webp',
imageType: 'photo',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.unitree.com/H2',
@@ -215,7 +215,7 @@ export const ROBOTS: Robot[] = [
{ label: 'Height', value: '≤123 cm' },
SPEC_CONSULT,
],
image: '/images/robots/unitree-r1.png',
image: '/images/robots/unitree-r1.webp',
imageType: 'photo',
accent: GOLD_BRONZE,
officialUrl: 'https://www.unitree.com/R1',
@@ -255,7 +255,7 @@ export const ROBOTS: Robot[] = [
{ label: 'Payload Options', value: 'Cameras, LiDAR, sensors' },
SPEC_CONSULT,
],
image: '/images/robots/unitree-go2.png',
image: '/images/robots/unitree-go2.webp',
imageType: 'photo',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.unitree.com/go2',
@@ -321,7 +321,7 @@ export const ROBOTS: Robot[] = [
{ label: 'Top Speed', value: '5 m/s' },
SPEC_CONSULT,
],
image: '/images/robots/unitree-as2.png',
image: '/images/robots/unitree-as2.webp',
imageType: 'photo',
accent: GOLD_BRONZE,
officialUrl: 'https://www.unitree.com/As2',
@@ -354,7 +354,7 @@ export const ROBOTS: Robot[] = [
{ label: 'Payload', value: '3–5 kg' },
SPEC_CONSULT,
],
image: '/images/robots/unitree-go1.png',
image: '/images/robots/unitree-go1.webp',
imageType: 'photo',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.unitree.com/go1',
@@ -387,7 +387,7 @@ export const ROBOTS: Robot[] = [
{ label: 'Payload', value: '5 kg' },
SPEC_CONSULT,
],
image: '/images/robots/unitree-a1.png',
image: '/images/robots/unitree-a1.webp',
imageType: 'photo',
accent: GOLD_BRONZE,
officialUrl: 'https://www.unitree.com/a1',
@@ -427,7 +427,7 @@ export const ROBOTS: Robot[] = [
{ label: 'Top Speed', value: '6 m/s' },
{ label: 'Payload', value: '40+ kg' },
],
image: '/images/robots/unitree-b2.png',
image: '/images/robots/unitree-b2.webp',
imageType: 'photo',
accent: GOLD_BRAND,
officialUrl: 'https://www.unitree.com/b2',
@@ -460,7 +460,7 @@ export const ROBOTS: Robot[] = [
{ label: 'Payload', value: '40 kg' },
{ label: 'IP Rating', value: 'IP67' },
],
image: '/images/robots/unitree-b2-w.jpg',
image: '/images/robots/unitree-b2-w.webp',
imageType: 'photo',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.unitree.com/b2-w',
@@ -493,7 +493,7 @@ export const ROBOTS: Robot[] = [
{ label: 'Battery', value: 'Hot-swappable dual' },
SPEC_CONSULT,
],
image: '/images/robots/unitree-a2.png',
image: '/images/robots/unitree-a2.webp',
imageType: 'photo',
accent: GOLD_BRONZE,
officialUrl: 'https://www.unitree.com/A2',
@@ -526,7 +526,7 @@ export const ROBOTS: Robot[] = [
{ label: 'Battery', value: 'Hot-swappable dual' },
SPEC_CONSULT,
],
image: '/images/robots/unitree-a2-w.jpg',
image: '/images/robots/unitree-a2-w.webp',
imageType: 'photo',
accent: GOLD_BRAND,
officialUrl: 'https://www.unitree.com/A2-W',
@@ -559,7 +559,7 @@ export const ROBOTS: Robot[] = [
{ label: 'Battery', value: '932 Wh' },
{ label: 'IP Rating', value: 'IP68' },
],
image: '/images/robots/unitree-b1.png',
image: '/images/robots/unitree-b1.webp',
imageType: 'photo',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.unitree.com/b1',
@@ -592,7 +592,7 @@ export const ROBOTS: Robot[] = [
{ label: 'I/O', value: 'Ethernet / USB 3.0 / RS485' },
SPEC_CONSULT,
],
image: '/images/robots/unitree-aliengo.png',
image: '/images/robots/unitree-aliengo.webp',
imageType: 'photo',
accent: GOLD_BRONZE,
officialUrl: 'https://www.unitree.com/aliengo',
@@ -627,7 +627,7 @@ export const ROBOTS: Robot[] = [
{ label: 'Displays', value: '18.5" + 10.1"' },
SPEC_CONSULT,
],
image: '/images/robots/featured-bellabot-pro.png',
image: '/images/robots/featured-bellabot-pro.webp',
imageType: 'photo',
accent: GOLD_BRONZE,
officialUrl: 'https://www.pudurobotics.com/en/products/bellabotpro',
@@ -660,7 +660,7 @@ export const ROBOTS: Robot[] = [
SPEC_CONSULT,
SPEC_PLACEHOLDER,
],
image: '/images/robots/pudu-bellabot.png',
image: '/images/robots/pudu-bellabot.webp',
imageType: 'photo',
accent: GOLD_BRONZE,
officialUrl: 'https://www.pudurobotics.com/en/products/bellabot',
@@ -726,7 +726,7 @@ export const ROBOTS: Robot[] = [
SPEC_CONSULT,
SPEC_PLACEHOLDER,
],
image: '/images/robots/pudu-kettybot.png',
image: '/images/robots/pudu-kettybot.webp',
imageType: 'photo',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.pudurobotics.com/en/products/kettybot',
@@ -759,7 +759,7 @@ export const ROBOTS: Robot[] = [
{ label: 'IP Rating', value: 'IPX5 cabin' },
SPEC_CONSULT,
],
image: '/images/robots/pudu-holabot.png',
image: '/images/robots/pudu-holabot.webp',
imageType: 'photo',
accent: GOLD_BRONZE,
officialUrl: 'https://www.pudurobotics.com/en/products/holabot',
@@ -825,7 +825,7 @@ export const ROBOTS: Robot[] = [
{ label: 'Trays', value: 'Up to 7' },
{ label: 'Runtime', value: '24 h' },
],
image: '/images/robots/pudu-pudubot2.png',
image: '/images/robots/pudu-pudubot2.webp',
imageType: 'photo',
accent: GOLD_BRAND,
officialUrl: 'https://www.pudurobotics.com/en/products/pudubot',
@@ -858,7 +858,7 @@ export const ROBOTS: Robot[] = [
SPEC_CONSULT,
SPEC_PLACEHOLDER,
],
image: '/images/robots/pudu-flashbot-max.png',
image: '/images/robots/pudu-flashbot-max.webp',
imageType: 'photo',
accent: GOLD_BRONZE,
officialUrl: 'https://www.pudurobotics.com/en/products/flashbot-new',
@@ -891,7 +891,7 @@ export const ROBOTS: Robot[] = [
SPEC_CONSULT,
SPEC_PLACEHOLDER,
],
image: '/images/robots/pudu-flashbot.png',
image: '/images/robots/pudu-flashbot.webp',
imageType: 'photo',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.pudurobotics.com/en/products/flashbot',
@@ -926,7 +926,7 @@ export const ROBOTS: Robot[] = [
{ label: 'Safety', value: 'ISO 3691-4' },
SPEC_CONSULT,
],
image: '/images/robots/pudu-t300.png',
image: '/images/robots/pudu-t300.webp',
imageType: 'photo',
accent: GOLD_BRAND,
officialUrl: 'https://www.pudurobotics.com/en/products/pudut300',
@@ -961,7 +961,7 @@ export const ROBOTS: Robot[] = [
SPEC_CONSULT,
SPEC_PLACEHOLDER,
],
image: '/images/robots/pudu-cc1.png',
image: '/images/robots/pudu-cc1.webp',
imageType: 'photo',
accent: GOLD_BRONZE,
officialUrl: 'https://www.pudurobotics.com/en/products/puduCC1',
@@ -994,7 +994,7 @@ export const ROBOTS: Robot[] = [
{ label: 'Suction', value: '20,000 Pa' },
SPEC_CONSULT,
],
image: '/images/robots/pudu-sh1.png',
image: '/images/robots/pudu-sh1.webp',
imageType: 'photo',
accent: GOLD_CHAMPAGNE,
officialUrl: 'https://www.pudurobotics.com/en/products/puduSH1',
@@ -1027,7 +1027,7 @@ export const ROBOTS: Robot[] = [
{ label: 'Runtime', value: '4–8 h' },
SPEC_CONSULT,
],
image: '/images/robots/pudu-mt1.png',
image: '/images/robots/pudu-mt1.webp',
imageType: 'photo',
accent: GOLD_BRAND,
officialUrl: 'https://www.pudurobotics.com/en/products/mt1',