content: page copy refinements + accessory rich data extensions
Some checks are pending
CI/CD / test-and-build (push) Waiting to run
CI/CD / deploy (push) Blocked by required conditions

- about, brands, contact, industries, bu-sunaidah page copy polish
- BuSunaidahSection content updates
- accessories.ts: rich-content interfaces (highlights, featureSections,
  specGroups, paramsImage, footnotes, safetyNotice) + full Dex2-5,
  Dex3-1, Dex1-1, Dex5-1, Z1, D1-T, L2 data sourced from vendor pages

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Najjar\NajjarV02 2026-05-21 17:17:05 +04:00
parent fb41977b18
commit de25d774af
7 changed files with 133 additions and 169 deletions

View File

@ -19,8 +19,8 @@ export default function AboutPage() {
<>
<Navbar />
<main style={{ paddingTop: 'clamp(6rem, 10vw, 8rem)', paddingBottom: 'clamp(4rem, 8vw, 6rem)' }}>
<div className="container-wide" style={{ display: 'flex', flexDirection: 'column', gap: 'clamp(3rem, 6vw, 5rem)' }}>
<main style={{ paddingTop: 'clamp(5rem, 9vw, 7rem)', paddingBottom: 'clamp(3rem, 6vw, 5rem)' }}>
<div className="container-wide" style={{ display: 'flex', flexDirection: 'column', gap: 'clamp(2.5rem, 5vw, 4.25rem)' }}>
<div style={{ display: 'flex', flexDirection: 'column', gap: '1.25rem', maxWidth: 820 }}>
<span className="eyebrow">About · YS Lootah Robotics</span>
<h1 style={{ margin: 0, fontSize: 'clamp(2rem, 5vw, 3.4rem)', fontWeight: 300, lineHeight: 1.05, letterSpacing: '-0.03em' }}>

View File

@ -19,8 +19,8 @@ export default function BrandsPage() {
<>
<Navbar />
<main style={{ paddingTop: 'clamp(6rem, 10vw, 8rem)', paddingBottom: 'clamp(4rem, 8vw, 6rem)' }}>
<div className="container-wide" style={{ display: 'flex', flexDirection: 'column', gap: 'clamp(3rem, 5vw, 5rem)' }}>
<main style={{ paddingTop: 'clamp(5rem, 9vw, 7rem)', paddingBottom: 'clamp(3rem, 6vw, 5rem)' }}>
<div className="container-wide" style={{ display: 'flex', flexDirection: 'column', gap: 'clamp(2.5rem, 5vw, 4.25rem)' }}>
<div style={{ display: 'flex', flexDirection: 'column', gap: '1rem', maxWidth: 760 }}>
<span className="eyebrow">UAE Access · Dubai</span>
<h1 style={{ margin: 0, fontSize: 'clamp(2rem, 5vw, 3.4rem)', fontWeight: 300, lineHeight: 1.05, letterSpacing: '-0.03em' }}>

View File

@ -370,7 +370,7 @@ export default async function BuSunaidahPage() {
<style>{`
.bs-main {
padding-top: clamp(5rem, 9vw, 7rem);
padding-bottom: clamp(2rem, 5vw, 4rem);
padding-bottom: clamp(3rem, 6vw, 5rem);
}
.bs-stack {
display: flex;

View File

@ -14,7 +14,7 @@ export default function ContactPage() {
<>
<Navbar />
<main style={{ paddingTop: 'clamp(6rem, 10vw, 8rem)', paddingBottom: 'clamp(4rem, 8vw, 6rem)' }}>
<main style={{ paddingTop: 'clamp(5rem, 9vw, 7rem)', paddingBottom: 'clamp(3rem, 6vw, 5rem)' }}>
<div className="container-wide" style={{ display: 'grid', gap: 'clamp(2rem, 5vw, 3rem)', gridTemplateColumns: 'repeat(auto-fit, minmax(min(320px, 100%), 1fr))', alignItems: 'flex-start' }}>
<div style={{ display: 'flex', flexDirection: 'column', gap: '1.25rem' }}>
<span className="eyebrow">Contact · Dubai · UAE</span>

View File

@ -148,7 +148,7 @@ export default function IndustriesPage() {
<style>{`
.ind-main {
padding-top: clamp(5rem, 9vw, 7rem);
padding-bottom: clamp(2rem, 5vw, 4rem);
padding-bottom: clamp(3rem, 6vw, 5rem);
}
.ind-stack {
display: flex;

View File

@ -100,144 +100,154 @@ export function BuSunaidahSection() {
pointerEvents: 'none',
}}
/>
<Link
href="/bu-sunaidah/"
aria-label="Open the Bu Sunaidah page"
style={{
position: 'relative',
display: 'block',
{(() => {
const cardStyle = {
position: 'relative' as const,
display: 'block' as const,
width: '100%',
height: '100%',
borderRadius: '1.75rem',
overflow: 'hidden',
overflow: 'hidden' as const,
border: '1px solid rgba(39, 63, 148,0.35)',
background:
'radial-gradient(ellipse 70% 60% at 50% 55%, rgba(222, 224, 240,0.18), transparent 60%), linear-gradient(180deg, rgba(28, 27, 33,0.85), rgba(5,5,5,0.95))',
boxShadow: '0 30px 100px rgba(0,0,0,0.7)',
textDecoration: 'none',
color: 'inherit',
}}
>
{BU_SUNAIDAH_PORTRAIT ? (
<Image
src={BU_SUNAIDAH_PORTRAIT.src}
alt={BU_SUNAIDAH_PORTRAIT.alt}
fill
sizes="(max-width: 768px) 90vw, 460px"
style={{ objectFit: 'cover', objectPosition: 'center' }}
/>
) : (
textDecoration: 'none' as const,
color: 'inherit' as const,
};
const chips = (
<div
style={{
position: 'absolute',
bottom: '1rem',
left: '1rem',
right: '1rem',
display: 'flex',
alignItems: 'center',
justifyContent: 'space-between',
gap: '0.75rem',
pointerEvents: 'none',
}}
>
<span
style={{
padding: '0.4rem 0.75rem',
borderRadius: 999,
background: 'rgba(14, 13, 18,0.7)',
border: '1px solid rgba(39, 63, 148,0.35)',
color: '#DEE0F0',
fontSize: '0.66rem',
letterSpacing: '0.22em',
textTransform: 'uppercase',
fontWeight: 600,
backdropFilter: 'blur(8px)',
}}
>
Emirati-inspired persona
</span>
<span
style={{
padding: '0.35rem 0.65rem',
borderRadius: 999,
background: 'rgba(222, 224, 240,0.18)',
border: '1px solid rgba(222, 224, 240,0.4)',
color: '#FBFBFD',
fontSize: '0.7rem',
letterSpacing: '0.16em',
textTransform: 'uppercase',
fontWeight: 700,
}}
>
Bu Sunaidah
</span>
</div>
);
if (BU_SUNAIDAH_PORTRAIT) {
return (
<Link href="/bu-sunaidah/" aria-label="Open the Bu Sunaidah page" style={cardStyle}>
<Image
src={BU_SUNAIDAH_PORTRAIT.src}
alt={BU_SUNAIDAH_PORTRAIT.alt}
fill
sizes="(max-width: 768px) 90vw, 460px"
style={{ objectFit: 'cover', objectPosition: 'center' }}
/>
{chips}
</Link>
);
}
return (
<a
href={BU_SUNAIDAH_URL}
target="_blank"
rel="noopener noreferrer"
onClick={(e) => e.stopPropagation()}
aria-label="Open @bu.sunaidah on Instagram in a new tab"
style={{
position: 'absolute',
inset: 0,
display: 'flex',
flexDirection: 'column',
alignItems: 'center',
justifyContent: 'center',
gap: '1.1rem',
textDecoration: 'none',
color: '#FBFBFD',
textAlign: 'center',
padding: 'clamp(1.25rem, 4vw, 2rem)',
background:
'radial-gradient(ellipse 60% 60% at 50% 35%, rgba(58, 85, 196, 0.25), transparent 65%)',
}}
style={cardStyle}
>
<span
aria-hidden
style={{
display: 'inline-flex',
position: 'absolute',
inset: 0,
display: 'flex',
flexDirection: 'column',
alignItems: 'center',
justifyContent: 'center',
width: 78,
height: 78,
borderRadius: 22,
color: '#FFFFFF',
border: '1px solid rgba(222, 224, 240, 0.28)',
gap: '1.1rem',
textAlign: 'center',
padding: 'clamp(1.25rem, 4vw, 2rem)',
background:
'radial-gradient(ellipse 60% 60% at 30% 30%, rgba(255, 84, 165, 0.55), transparent 60%), radial-gradient(ellipse 60% 60% at 70% 70%, rgba(255, 165, 84, 0.45), transparent 60%), linear-gradient(135deg, rgba(58, 85, 196, 0.65), rgba(20, 20, 28, 0.85))',
boxShadow: '0 18px 40px rgba(0,0,0,0.55)',
'radial-gradient(ellipse 60% 60% at 50% 35%, rgba(58, 85, 196, 0.25), transparent 65%)',
}}
>
<InstagramGlyph size={34} />
</span>
<span
style={{
fontSize: '0.66rem',
letterSpacing: '0.28em',
textTransform: 'uppercase',
fontWeight: 700,
color: '#8891C7',
}}
>
Portrait coming soon
</span>
<span
style={{
fontSize: '1.05rem',
fontWeight: 500,
letterSpacing: '-0.005em',
lineHeight: 1.4,
maxWidth: 280,
}}
>
View Bu Sunaidah&apos;s latest moments on Instagram
<span
aria-hidden
style={{
display: 'inline-flex',
alignItems: 'center',
justifyContent: 'center',
width: 78,
height: 78,
borderRadius: 22,
color: '#FFFFFF',
border: '1px solid rgba(222, 224, 240, 0.28)',
background:
'radial-gradient(ellipse 60% 60% at 30% 30%, rgba(255, 84, 165, 0.55), transparent 60%), radial-gradient(ellipse 60% 60% at 70% 70%, rgba(255, 165, 84, 0.45), transparent 60%), linear-gradient(135deg, rgba(58, 85, 196, 0.65), rgba(20, 20, 28, 0.85))',
boxShadow: '0 18px 40px rgba(0,0,0,0.55)',
}}
>
<InstagramGlyph size={34} />
</span>
<span
style={{
fontSize: '0.66rem',
letterSpacing: '0.28em',
textTransform: 'uppercase',
fontWeight: 700,
color: '#8891C7',
}}
>
Portrait coming soon
</span>
<span
style={{
fontSize: '1.05rem',
fontWeight: 500,
letterSpacing: '-0.005em',
lineHeight: 1.4,
maxWidth: 280,
color: '#FBFBFD',
}}
>
View Bu Sunaidah&apos;s latest moments on Instagram
</span>
</span>
{chips}
</a>
)}
<div
style={{
position: 'absolute',
bottom: '1rem',
left: '1rem',
right: '1rem',
display: 'flex',
alignItems: 'center',
justifyContent: 'space-between',
gap: '0.75rem',
pointerEvents: 'none',
}}
>
<span
style={{
padding: '0.4rem 0.75rem',
borderRadius: 999,
background: 'rgba(14, 13, 18,0.7)',
border: '1px solid rgba(39, 63, 148,0.35)',
color: '#DEE0F0',
fontSize: '0.66rem',
letterSpacing: '0.22em',
textTransform: 'uppercase',
fontWeight: 600,
backdropFilter: 'blur(8px)',
}}
>
Emirati-inspired persona
</span>
<span
style={{
padding: '0.35rem 0.65rem',
borderRadius: 999,
background: 'rgba(222, 224, 240,0.18)',
border: '1px solid rgba(222, 224, 240,0.4)',
color: '#FBFBFD',
fontSize: '0.7rem',
letterSpacing: '0.16em',
textTransform: 'uppercase',
fontWeight: 700,
}}
>
Bu Sunaidah
</span>
</div>
</Link>
);
})()}
</div>
</div>
</div>

View File

@ -1031,52 +1031,6 @@ export const ACCESSORIES: Accessory[] = [
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: '/images/robots/pudu-d7.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: '/images/robots/pudu-d9.png',
accent: GOLD_BRAND,
officialUrl: 'https://www.pudurobotics.com/en/accessory',
compatibility: ['PUDU T300'],
},
{
id: 'pudu-carpet-vacuuming-assembly',
slug: 'pudu-carpet-vacuuming-assembly',