// pages.jsx — Home, Work, CaseStudy, Services, About, Clients, Contact const { CATEGORIES, PROJECTS, SERVICES, PILLARS, VALUE_PROPS } = window.SNOOPY_DATA; // ============================================================ // HOME // ============================================================ function HomePage({ navigate, openEnquire }) { const featured = ["ep-07", "ac-02", "cb-01", "rd-02"].map(id => PROJECTS.find(p => p.id === id)); const heroProject = PROJECTS.find(p => p.id === "ep-07"); return (
{/* HERO */}
360 Creative Production House · Dubai

Dream Big.
We Deliver.

Creative + technical event production, custom builds and retail — design, in-house fabrication and delivery under one roof. We fill in the blanks of your creative needs.

{/* trust strip */}
Open for briefs
Al Quoz Industrial Area 3, Dubai
+971 50 649 6600
{/* hero project preview card */}
Latest · {heroProject.year}
Event Production

{heroProject.title}

{/* floating tag */}
In-house build
{/* marquee */}
{Array.from({ length: 2 }).map((_, i) => ( Event production Activations Custom builds Retail display Signage Art installations ))}
{/* VALUE PROPS BAND */}
{VALUE_PROPS.map((v, i) => (
0{i+1}

{v.title}

{v.body}

))}
{/* SERVICES */}
{SERVICES.map((s, i) => (
navigate("services")}>
0{i+1}

{s.title}

{s.blurb.split(".")[0]}.

))}
{/* FEATURED WORK */}
{featured.map((p) => ( navigate("case-study", { id: p.id })} /> ))}
{/* PILLARS — Why choose us */}
{PILLARS.map((p, i) => (
{p.num}

{p.title}

{p.body}

))}
{/* CTA */}

Have something to build?

Tell us the brief. We'll come back with a route, a budget guide and a delivery plan within one business day.

Call
); } // ============================================================ // WORK CARD (shared) // ============================================================ function WorkCard({ project, onClick }) { const cat = CATEGORIES.find(c => c.id === project.category); return ( { e.preventDefault(); onClick(); }} href="#" aria-label={`${project.title} — ${cat.label}`}>
{cat.label}

{project.title}

{project.location} · {project.year}
); } // ============================================================ // WORK HUB (filterable portfolio) // ============================================================ function WorkPage({ navigate, initialFilter }) { const [filter, setFilter] = React.useState(initialFilter || "all"); const counts = React.useMemo(() => { const c = { all: PROJECTS.length }; CATEGORIES.forEach(cat => { c[cat.id] = PROJECTS.filter(p => p.category === cat.id).length; }); return c; }, []); const filtered = filter === "all" ? PROJECTS : PROJECTS.filter(p => p.category === filter); return (
Selected work

Things we've built.

Generic project titles below — per client rights process, real names and outcomes are released after permission, photographer credit and people-consent are confirmed.

{CATEGORIES.map(c => ( ))}
{filtered.map((p) => ( navigate("case-study", { id: p.id })} /> ))}
{filtered.length === 0 && (
No projects in this category yet.
)}
); } // ============================================================ // CASE STUDY (project detail) // ============================================================ function CaseStudyPage({ navigate, projectId, openLightbox, openEnquire }) { const project = PROJECTS.find(p => p.id === projectId) || PROJECTS[0]; const cat = CATEGORIES.find(c => c.id === project.category); // build a gallery from same-category projects (visual continuity) const sameCat = PROJECTS.filter(p => p.category === project.category && p.id !== project.id); const gallery = sameCat.slice(0, 5).map(p => p.img); while (gallery.length < 5) gallery.push(project.img); const next = PROJECTS[(PROJECTS.findIndex(p => p.id === project.id) + 1) % PROJECTS.length]; return (
{/* breadcrumb */}
{e.preventDefault(); navigate("work");}}>Work / {e.preventDefault(); navigate("work", { filter: project.category });}}>{cat.label} / {project.title}
{/* hero */}
{cat.label}

{project.title}

{project.summary}

{/* meta */}
Category
{cat.label}
Client
PENDING
Location
{project.location}
Year
{project.year}
{/* hero image */}
openLightbox(project.img)} />
{/* scope + phases */}
Scope of work

Brief → design → build → live delivery.

    {project.scope.map(s => (
  • {s}
  • ))}
i
Measurable outcomes (footfall, dwell, content reach) appear here only when shared and confirmed by the client.
01

Brief & concept

Workshops with the brand to land the story, the moment and the must-haves. Sketches and renders, then sign-off.

02

Design & engineering

Production drawings, materials, structural and rigging engineering. Risk and method statements in parallel.

03

In-house fabrication

Built in our Al Quoz workshop. Carpentry, scenic, signage, finishing — all in-house, all to spec.

04

Install & live

Load-in, AV install, rigging, stage management and the live show. Then load-out and reset for the next one.

{/* gallery */}
openLightbox(gallery[0])}>
openLightbox(gallery[1])}>
openLightbox(gallery[2])}>
openLightbox(gallery[3])}>
openLightbox(gallery[4])}>
Rights flag — {project.flag}. Per editorial process, branded photographs are only published after written client usage permission, photographer credit and people-consent are confirmed.
{/* CTA + next */}
Something similar?

Tell us what you're building.

Even rough briefs welcome — we'll come back with a route, a budget guide and a delivery plan.

+971 50 649 6600
{e.preventDefault(); navigate("case-study", { id: next.id });}} href="#next">
Next project ↗
{next.title}
); } // ============================================================ // SERVICES // ============================================================ function ServicesPage({ navigate, openEnquire, setEnquireService }) { const [active, setActive] = React.useState(SERVICES[0].id); const s = SERVICES.find(x => x.id === active); const samples = PROJECTS.filter(p => p.category === active).slice(0, 4); return (
Capabilities

Design. Build. Deliver.

One house — six capabilities. From the first concept sketch through fabrication in our Al Quoz workshop to live install and load-out.

{/* Tab rail */}
{SERVICES.map((sv, i) => ( ))}
{/* Content */}

{s.title}

{s.blurb}

What's included
{s.capabilities.map(c => (
{c}
))}
Recent {s.title.toLowerCase()}
{samples.map(p => ( navigate("case-study", { id: p.id })} /> ))}

Brief us on a {s.title.toLowerCase()} project.

We'll come back with a route and a budget guide within one business day.

); } // ============================================================ // ABOUT // ============================================================ function AboutPage({ navigate, openEnquire }) { return (
About

We are a 360 creative production house.

Snoopy Productions specialises in immersive event experiences, custom-build solutions and seamless retail productions — on all levels. Concept, design, in-house fabrication and live delivery, under one roof in Dubai.

{/* Story */}
Our story

Emerging from a dynamic mix of creative thinkers and changemakers, Snoopy Productions was founded to redefine the face of creative production. We bring a unique perspective and an eagerness to explore uncharted territories, disrupt traditional norms, and set new benchmarks in the industry.

i
Founding year and exact tenure are intentionally unstated here — to be confirmed by the client before publishing a number.
{/* Vision & Mission */}
Vision

Setting high standards for immersive and creative production. We stay at the forefront of innovation by redefining experiential storytelling.

Mission

We elevate the narratives of retail spaces, brands, and individual clients. We craft captivating, imaginative experiential environments that inspire a 'wow' effect — transforming unique visions into unforgettable realities.

{/* Pillars */}
{PILLARS.map(p => (
{p.num}

{p.title}

{p.body}

))}
{/* Workshop / process */}
{[ { n: "01", t: "Brief", d: "Workshop the story, must-haves and the moments that matter." }, { n: "02", t: "Design", d: "Sketches, renders, production drawings. Sign-off before we cut." }, { n: "03", t: "Build", d: "Fabricated in our Al Quoz workshop. Carpentry, scenic, signage." }, { n: "04", t: "Live", d: "Install, AV, rigging, stage management — and the load-out after." }, ].map(p => (
{p.n}

{p.t}

{p.d}

))}
{/* CTA */}

Want to come by the workshop?

Walk-throughs are welcome by appointment — best way to see the level of build.

); } // ============================================================ // CLIENTS // ============================================================ function ClientsPage({ navigate, openEnquire }) { return (
Clients

Trusted by brands
across the region.

From challenger brands to global names, we've delivered experiences, builds and retail moments for clients across the UAE and GCC.

!
Logo wall pending permission. Per our editorial process, third-party client logos are only displayed after written usage permission is on file. Below: placeholder tiles + a request flow.
{Array.from({ length: 18 }).map((_, i) => (
CLIENT {String(i+1).padStart(2, "0")}
))}
Become a partner

Working with brands, agencies and suppliers.

Marketing teams, retailers, agencies and trusted suppliers — let's talk about how we can build together.

); } // ============================================================ // CONTACT // ============================================================ function ContactPage({ openEnquire }) { const [form, setForm] = React.useState({ name: "", email: "", subject: "general", message: "" }); const [sent, setSent] = React.useState(false); return (
Contact

Let's build something.

Tell us about your project — a few sentences are enough to start a conversation.

{/* Left: details */}
Studio

Al Quoz Industrial Area 3

Dubai, United Arab Emirates

Exact unit / street to be confirmed — and a Google Maps embed will appear here once the address is geocoded.
Call / WhatsApp*
+971 50 649 6600
*WhatsApp pending confirmation as a monitored business line.
Email
hello@snoopyeverything.com
Live inbound — to be confirmed (vs Team@snoopyproductions.com).
Hours

To be confirmed by the studio — opening hours and working week not yet published.

{/* Right: quick form */}
{sent ? (

Got it.

We'll reply within one business day.

) : ( <>

Quick message

Or use the full brief form for a project-scoped enquiry.

setForm({...form,name:e.target.value})} />
setForm({...form,email:e.target.value})} />