/* ===================================================================== GRUG GROUP — content SECTIONS Loaded after grug-core.jsx. Reads helpers from window.GRUG. ===================================================================== */ const { useState, useEffect, useRef } = React; const { R, useReveal, useScrolled, useCountUp, SectionIndex, Ico } = window.GRUG; /* ============ HERO — rotating render showcase ============ */ const HERO_SLIDES = [ { imgKey: 'favoriteAlpine' }, { imgKey: 'ryzrSkyline' }, { imgKey: 'clientHelipad' }, { imgKey: 'bjSunset' }, { imgKey: 'ghostCity' }, { imgKey: 'clientStealthSunset' }, { imgKey: 'bjAlps' }, { imgKey: 'clientVtolNyc' }, { imgKey: 'clientNasa' }, ]; const Hero = () => { const [idx, setIdx] = useState(0); useEffect(() => { const id = setInterval(() => setIdx(i => (i + 1) % HERO_SLIDES.length), 5200); return () => clearInterval(id); }, []); return (
{HERO_SLIDES.map((s, i) => (
))}
Aerospace Design · Aviation Solutions · Since 2017

From ideation to concept ready.

A design studio for the future of flight. We help aerospace clients shape ideas into investor-ready concepts — and the brand stories that surround them.

REEL
{String(idx+1).padStart(2,'0')} / {String(HERO_SLIDES.length).padStart(2,'0')}
); }; /* ============ MARQUEE ============ */ const Marquee = () => { const items = ['Aerospace Design', 'Aviation Solutions', 'Concept Development', 'Industrial Design', 'Visualization', 'Brand Identity', 'Consulting']; const doubled = [...items, ...items]; return ( ); }; /* ============ STATS ============ */ const Stats = () => { const items = [ { val: 9, suffix: '', label: 'Years operating' }, { val: 30, suffix: '+', label: 'Concepts delivered' }, { val: 29, suffix: '+', label: 'Years experience' }, ]; return (
{items.map((s, i) => )}
); }; const StatCell = ({ val, suffix, label, delay }) => { const [ref, n] = useCountUp(val); return (
{n.toLocaleString()}{suffix}
{label}
); }; /* ============ CAPABILITIES ============ */ const CAPS = [ { num: '01', icon: 'pencil', imgKey: 'doggyHero', title: 'Concept Design', body: 'The shape of an idea. We work with you to define mission, form, and feel — and translate it into a coherent design language.' }, { num: '02', icon: 'design', imgKey: 'bjTopdown', title: 'Industrial Design', body: 'Exterior surfaces, line work, materiality, and detail. Our concepts are designed to look the way they should perform.' }, { num: '03', icon: 'render', imgKey: 'bjAlps', title: 'Visualization', body: 'Photoreal renders, cinematic film, animated walkthroughs — the materials that get your concept funded, signed, and remembered.' }, { num: '04', icon: 'cabin', imgKey: 'clientVtolNyc', title: 'Cabin & Interior', body: 'Interior architecture, passenger experience, layout studies. The inside of the story is as important as the silhouette.' }, { num: '05', icon: 'strategy', imgKey: 'clientHelipad', title: 'Aviation Consulting', body: 'Strategy, partner introductions, supplier sourcing, and go-to-market support drawn from a decade in aerospace networks.' }, ]; const Capabilities = ({ heading = true }) => { const head = useReveal(); const [active, setActive] = useState(0); const hoveredRef = useRef(false); useEffect(() => { const id = setInterval(() => { if (!hoveredRef.current) setActive(a => (a + 1) % CAPS.length); }, 3600); return () => clearInterval(id); }, []); const cap = CAPS[active]; return (
{heading && (
What we do

A studio for aerospace design and aviation solutions.

We partner with aviation companies, agencies, and entrepreneurs to take ideas from the first sketch to a concept ready to present, pitch, or build.

)}
{ hoveredRef.current = true; }} onMouseLeave={() => { hoveredRef.current = false; }}> {CAPS.map((c, i) => ( ))}
{CAPS.map((c, i) => (
))}
{cap.num} · {cap.title.toUpperCase()}
{cap.num} / {String(CAPS.length).padStart(2,'0')}
); }; /* ============ SERVICES ============ */ const Services = () => { const head = useReveal(); const groups = [ { eb: 'TECHNICAL & ENGINEERING', items: [ { t: 'Concept Design', d: 'Concept aircraft ready for preliminary design phase — geometry, weights and balance, performance envelope, propulsion sizing, mass budget.' }, { t: 'Primary Technical Calculations', d: 'Aerodynamic estimates, propulsion architecture, structural pre-sizing, and mission-profile analysis.' }, { t: 'Aircraft Records Review', d: 'Continuous Maintenance Program (CMP) analysis, airworthiness compliance review, certification audits.' }, { t: 'Technical Proposals', d: 'Government funding submissions — AFWERX, xTech, SBIR/STTR, defense R&D programs.' }, ]}, { eb: 'DEAL-MAKING & DOCUMENTATION', items: [ { t: 'Aircraft Brochures', d: 'Investor-grade product brochures from concept page to full technical specification.' }, { t: 'Commercial Proposals', d: 'Pitch decks, opportunity briefs, and one-pagers for boardroom and broker channels.' }, { t: 'Aviation Contracts', d: 'Letters of Intent (LOI), Purchase Agreements (PA), broker contracts, NDAs, and supplier MoUs.' }, { t: 'Project Management', d: 'End-to-end oversight, partner coordination, and supplier sourcing through delivery.' }, ]}, { eb: 'VISUALIZATION & PRESENTATION', items: [ { t: 'Photoreal Renders', d: 'Press-quality stills for decks, brochures, websites, and editorial placements.' }, { t: 'Cinematic Video', d: 'Animated walkthroughs, hero film, and motion reels for launches and investor rooms.' }, { t: 'VR Experiences (Oculus)', d: 'Immersive cabin and exterior walkthroughs delivered as standalone Oculus builds.' }, { t: 'Brand & Identity', d: 'Aircraft naming, livery, marks, and the supporting site and pitch materials.' }, ]}, ]; return (
What we deliver

Twelve services. One studio.

From technical pre-sizing to VR walkthroughs and the contracts that close the deal — a complete aerospace design partner under one roof.

{groups.map((g, gi) => )}
); }; const ServiceColumn = ({ eb, items, delay }) => { const ref = useReveal(); return (
{eb}
); }; /* ============ CLIENTS ============ */ const Clients = () => { const ref = useReveal(); const clients = [ { name: 'JETX', sub: 'CO-VENTURE · ORLANDO, FL', logo: 'logoJetxReal' }, { name: 'NALWA AERO', sub: 'INDIA', logo: 'logoNalwa' }, { name: 'MATRIX AVIATION', sub: 'AVIATION BROKER · FT. LAUDERDALE', logo: 'logoMatrix' }, ]; return (
Trusted by
{clients.map(c => (
{c.name}
{c.sub}
))}
); }; /* ============ AWARDS ============ */ const Awards = () => { const ref = useReveal(); const awards = [ { logo: 'awardXtech', name: 'U.S. ARMY xTECH', year: '2023', detail: '1st Place · Autonomy Competition' }, { logo: 'awardAfwerx', name: 'AFWERX', year: '2024', detail: 'HSVTOL Showcase Participant' }, { logo: 'awardSbirAf', name: 'SBIR · STTR', year: '2024', detail: 'U.S. Air Force · U.S. Space Force' }, { logo: 'awardArmySbir', name: 'U.S. ARMY SBIR', year: '2025', detail: 'Phase I Award' }, ]; return (
Recognized by

Backed by the Department of Defense.

Selected, awarded, and showcased across the U.S. military innovation pipeline — alongside our co-venture partner JETX in Orlando, Florida.

{awards.map((a, i) => (
{a.name}
{a.name}
{a.detail}
))}
); }; /* ============ VOICES ============ */ const Voices = () => { const ref = useReveal(); const [idx, setIdx] = useState(0); const voices = [ { q: 'GRUG turned an ambition into a concept we could put on a stage. The Speedster came back with proportions we never could have briefed for in words.', who: 'Project Lead', where: 'RYZR Mobility · 2026' }, { q: 'Most studios send back a render. GRUG sent back a brand. The deck closed our seed round in the first three rooms.', who: 'Founder & CEO', where: 'Nalwa Aero · India' }, { q: 'Working with Nelson is closer to working with an aerospace partner than a vendor. He shows up to the regulator meetings.', who: 'Co-Founder', where: 'JETX · Orlando' }, { q: 'A concept package we could hand to engineering on a Monday and to investors on a Tuesday without changing a single page.', who: 'Head of Strategy', where: 'Aviation Broker · FL' }, ]; useEffect(() => { const id = setInterval(() => setIdx(i => (i + 1) % voices.length), 6800); return () => clearInterval(id); }, [voices.length]); const v = voices[idx]; return (
CLIENT VOICES
{String(idx + 1).padStart(2, '0')} / {String(voices.length).padStart(2, '0')}
{v.q}
{v.who}
{v.where}
{voices.map((_, i) => (
); }; /* ============ SHOWREEL ============ */ const REEL_CLIPS = [ { key: 'reelVideo', label: 'Aircraft Animation', tag: 'CINEMATIC · 01' }, { key: 'reelVideo2', label: 'Concept Motion', tag: 'CINEMATIC · 02' }, { key: 'reelVideo3', label: 'Visualization', tag: 'CINEMATIC · 03' }, { key: 'reelVideo4', label: 'Aircraft Designs', tag: 'CINEMATIC · 04' }, { key: 'reelVideo5', label: 'Scene Study', tag: 'CINEMATIC · 05' }, ]; const Showreel = () => { const ref = useReveal(); const vidRef = useRef(null); const [muted, setMuted] = useState(true); const [active, setActive] = useState(0); const clip = REEL_CLIPS[active]; useEffect(() => { const el = vidRef.current; if (!el) return; const io = new IntersectionObserver(entries => { entries.forEach(e => { if (e.isIntersecting) { el.play().catch(() => {}); } else { el.pause(); } }); }, { threshold: 0.25 }); io.observe(el); return () => io.disconnect(); }, []); useEffect(() => { const el = vidRef.current; if (!el) return; el.load(); el.play().catch(() => {}); }, [active]); const onEnded = () => setActive(a => (a + 1) % REEL_CLIPS.length); return (
Reel

A studio in motion.

Cinematic film, photoreal motion, and animated walkthroughs — the materials that put a concept in the air long before it flies.

); }; /* ============ PORTFOLIO ============ */ const Project = ({ tag, title, kind, imgKey, onOpen, fit, href, featured }) => { const ref = useReveal(); const className = `grug-project reveal ${featured ? 'is-featured' : ''}`; const inner = ( <>
{href ? '→' : '↗'}
{tag}
{title}
{kind}
{featured &&
Read case study →
}
{featured &&
CASE STUDY · 2026
} ); if (href) return {inner}; return ; }; const Lightbox = ({ projects, idx, onClose, onPrev, onNext }) => { const isOpen = idx != null; useEffect(() => { if (!isOpen) return; const onKey = (e) => { if (e.key === 'Escape') onClose(); else if (e.key === 'ArrowLeft') onPrev(); else if (e.key === 'ArrowRight') onNext(); }; document.addEventListener('keydown', onKey); const prev = document.body.style.overflow; document.body.style.overflow = 'hidden'; return () => { document.removeEventListener('keydown', onKey); document.body.style.overflow = prev; }; }, [isOpen, onClose, onPrev, onNext]); if (!isOpen) return null; const p = projects[idx]; return (
e.stopPropagation()}> {p.title}
{p.tag}
{p.title}
{p.kind}
{String(idx + 1).padStart(2,'0')} / {String(projects.length).padStart(2,'0')}
); }; const PORTFOLIO_PROJECTS = [ { tag: 'RYZR MOBILITY · 2026', title: 'Designing the future of flight.', kind: 'Our studio’s mobility visions.', imgKey: 'ryzrSkyline', featured: true, href: 'RYZR Speedster.html' }, { tag: 'GRUG STUDIO · 2024', title: 'Sculpting speed.', kind: 'Bizjet form study.', imgKey: 'favoriteAlpine' }, { tag: 'BONNIE WHISTLER', title: 'Reimagining the companion.', kind: 'Consumer product design.', imgKey: 'doggyHero' }, { tag: 'NALWA SAVERA · INDIA', title: 'Crafting the cabin.', kind: 'Interior architecture.', imgKey: 'nalwaCabin' }, { tag: 'NALWA SAVERA · INDIA', title: 'Shaping urban flight.', kind: 'eVTOL form language.', imgKey: 'nalwaMountains' }, { tag: 'GRUG STUDIO', title: 'Drawing the supersonic line.', kind: 'Silhouette study.', imgKey: 'bjSunset' }, { tag: 'NALWA SAVERA · INDIA', title: 'Designing the flight deck.', kind: 'Cockpit & HMI.', imgKey: 'nalwaCockpit' }, { tag: 'URBAN MOBILITY', title: 'Refining the air taxi.', kind: 'eVTOL proportion study.', imgKey: 'extraEvtol' }, { tag: 'PRIVATE CLIENT', title: 'Styling private flight.', kind: 'Tilt-rotor form.', imgKey: 'clientVtolNyc' }, { tag: 'NALWA SAVERA · INDIA', title: 'Sculpting the fuselage.', kind: 'Surface study.', imgKey: 'nalwaCruise' }, { tag: 'GRUG STUDIO', title: 'Designing electric flight.', kind: 'Multirotor form.', imgKey: 'ghostCity' }, { tag: 'GRUG STUDIO', title: 'Engineering the cargo drone.', kind: 'Logistics form factor.', imgKey: 'ghostCargo' }, { tag: 'JETX · CO-VENTURE', title: 'Proving the concept.', kind: 'Hover demonstrator.', imgKey: 'clientJetx' }, { tag: 'NALWA SAVERA · INDIA', title: 'Perfecting the profile.', kind: 'eVTOL exterior.', imgKey: 'nalwaExterior' }, { tag: 'GRUG STUDIO', title: 'Shaping the coastal flyer.', kind: 'eVTOL exterior study.', imgKey: 'clientHelipad' }, { tag: 'BONNIE WHISTLER', title: 'Detailing the form.', kind: 'Industrial close-up.', imgKey: 'doggyDetail' }, { tag: 'GRUG STUDIO', title: 'Studied in white.', kind: 'Form & surface study.', imgKey: 'bjWhite' }, { tag: 'U.S. AIR FORCE', title: 'Designing for defense.', kind: 'Stealth form package.', imgKey: 'clientStealthFleet' }, { tag: 'CLASSIFIED', title: 'Challenging the unseen.', kind: 'Stealth silhouette.', imgKey: 'clientStealthSunset' }, { tag: 'NASA · CONCEPT', title: 'Exploring new forms.', kind: 'Mission UAV design.', imgKey: 'extraNasa' }, { tag: 'NAVAL · CONCEPT', title: 'Designing for the carrier.', kind: 'Maritime eVTOL form.', imgKey: 'clientNavy' }, { tag: 'CLASSIFIED', title: 'Cutting through the sky.', kind: 'Stealth profile study.', imgKey: 'clientStealthClouds' }, { tag: 'VELTRO · CO-VENTURE', title: 'Shaping the commute.', kind: 'Quad-tilt air taxi.', imgKey: 'clientVeltro' }, { tag: 'SPACE · EXPLORATION', title: 'Designing for endurance.', kind: 'Long-range UAV form.', imgKey: 'clientNasa' }, ]; const PORTFOLIO_PATTERN = ['full','three','two','three','full','three','two','three','full','three','two']; const Portfolio = ({ heading = true, limit = null }) => { const head = useReveal(); const [openIdx, setOpenIdx] = useState(null); const projects = PORTFOLIO_PROJECTS; const pattern = limit ? ['full','three','two'] : PORTFOLIO_PATTERN; const rows = []; let cursor = 0; pattern.forEach((kind) => { const n = kind === 'full' ? 1 : kind === 'two' ? 2 : 3; const slice = projects.slice(cursor, cursor + n).map((p, i) => ({ ...p, _absIdx: cursor + i })); cursor += n; if (slice.length) rows.push({ kind, items: slice }); }); return (
{heading && (
Selected work

A selection of our work.

Concepts and visualizations developed for our clients and for our own studio explorations.

)}
{rows.map((row, ri) => (
{row.items.map((p) => setOpenIdx(p._absIdx)} />)}
))}
{limit && (
View all {projects.length} projects
)} setOpenIdx(null)} onPrev={() => setOpenIdx((idx) => (idx + projects.length - 1) % projects.length)} onNext={() => setOpenIdx((idx) => (idx + 1) % projects.length)} />
); }; /* ============ PROTOTYPE ============ */ const Prototype = () => { const head = useReveal(); const centerRef = useReveal(); const detailRef = useReveal(); const flightRef = useReveal(); const details = [ { n: '01', k: 'PROPULSION', t: 'Twin ducted fans.', b: 'High-efficiency EDF modules paired with custom inlet ducts — printed, balanced, bench-tested.', imgKey: 'protoTwinFans' }, { n: '02', k: 'ACTUATION', t: 'Servo-driven gimbal.', b: 'Carbon-arm pivot that swings the nozzle through its full thrust-vector envelope.', imgKey: 'protoHinge' }, { n: '03', k: 'NOZZLE', t: 'Printed thrust nozzle.', b: 'Flow visualization confirms attached jet through the convergent exit — no separation, no roar.', imgKey: 'protoNozzleFlow' }, { n: '04', k: 'VECTORING', t: 'Deflector vane.', b: 'Auxiliary aerosurface that translates thrust into pitch authority during slow-flight regimes.', imgKey: 'protoVane' }, ]; return (
From render to runway

Our concepts are designed to fly, not just to render.

The work doesn't stop at a beautiful image. We design surfaces that fabricate, proportions that balance, and propulsion that survives the test bench. Below — one of our concepts, built and airborne with our client partners.

CAPABILITY · 01

Fluidic thrust vectoring, from sketch to hardware.

A printed, instrumented multirotor demonstrator built around a custom EDF-and-nozzle propulsion stack. Every component drawn, machined, or printed in-studio — then flown.

Multi-rotor airframe — full assembly with ducted fans, ESCs, and avionics
AIRFRAME · V2 · STUDIO BUILD
EXPLODED · TOP-DOWNThree ducted-fan units · printed thermoplastic frame · field-replaceable avionics tray.
Head-on view of nozzle exit with flow-visualization smoke
FLOW VIS · SMOKE TUNNEL
HEAD-ON · EXIT PLANESmoke confirms attached, axisymmetric flow through the printed convergent nozzle.
CAPABILITY · 02

Four assemblies. One propulsion stack.

{details.map((d) => (
{d.n} · {d.k}
{d.t}
{d.b}
))}
CLIENT BUILT · 03

Nalwa Savera eVTOL — concept to flying prototype.

Concept design and visualization by GRUG GROUP. Engineering, fabrication, and flight test by our partner Nalwa Aero (India). The frames below are the production hardware — an octacopter with tilting rotors — airborne.

NALWA SAVERA · IN HOVER
NALWA SAVERA · IN GROUND EFFECT
CLIENT PROTOTYPE · NALWA SAVERAOctacopter with tilting rotors — hover trials near the engineering campus.
NALWA SAVERA · STATIC
CLIENT PROTOTYPE · NALWA SAVERAFull airframe at rest — eight tilting-rotor units on the ring frame, central pod.
NALWA SAVERA · IN FLIGHT
STAGE
Flight-test
CONFIG
Octacopter · tilt-rotor
FABRICATION
FDM · in-house
DESIGN BY
GRUG GROUP
); }; /* ============ SPOTLIGHT ============ */ const Spotlight = () => { const ref = useReveal(); return (
Featured work

Every concept, fully documented.

Beyond renders — we deliver full design boards, technical views, and presentation materials your team can use the moment we hand them over.

SUPERSONIC BJ · DESIGN BOARD
); }; /* ============ PROCESS ============ */ const Process = () => { const [visible, setVisible] = useState(false); const ref = useRef(null); useEffect(() => { const el = ref.current; if (!el) return; const io = new IntersectionObserver(entries => { entries.forEach(e => { if (e.isIntersecting) { setVisible(true); io.unobserve(el); } }); }, { threshold: 0.3 }); io.observe(el); return () => io.disconnect(); }, []); const steps = [ { n: '01', t: 'Discover', b: 'We sit down with you, understand the mission, the audience, and the ambition. No assumptions.' }, { n: '02', t: 'Design', b: 'Form, surface, identity. We move from rough silhouettes to a final visual language.' }, { n: '03', t: 'Visualize', b: 'Renders, film, and presentation materials — built to win pitches and investor rooms.' }, { n: '04', t: 'Hand-off', b: 'A complete concept package, ready for the next step — partner outreach, engineering, or production.' }, ]; const headRef = useReveal(); return (
How we work

From a sketch to a story.

{steps.map(s => (
{s.n}
{s.t}

{s.b}

))}
); }; /* ============ LEADERSHIP ============ */ const Leadership = () => { const ref = useReveal(); const leads = [ { name: 'Nelson J.', last: 'Salas', role: 'FOUNDER · LEAD DESIGNER', photo: 'teamNelson', bio: [ 'Twenty-nine years moving aircraft from sketch to certification — and the founder behind every line GRUG has drawn since 2017.', 'Nelson\u2019s practice sits at the intersection of aerospace engineering and industrial design. He has led concept work on more than ten eVTOL platforms, presented at the AFWERX HSVTOL Showcase, and took first place in the 2023 U.S. Army xTech Autonomy Competition — backed by over $500K in U.S. Department of Defense contracts.', 'Clients from India to Orlando work with him because he stays in the room. The first whiteboard session, the regulator pre-brief, the final hand-off — same person draws the silhouette and signs the engineering memo.', ], stats: [{ k: 'Experience', v: '29+ years' }, { k: 'eVTOL', v: '10+ concepts' }, { k: 'Programs', v: 'AFWERX · xTech' }, { k: 'Contracts', v: '$500K+ DoD' }], tags: ['GRUG GROUP', 'JETX', 'NALWA AERO', 'MATRIX AVIATION'], }, { name: 'Urupagua', last: 'Urquiola', role: 'CO-FOUNDER · LEGAL & OPERATIONS', photo: 'teamUrupagua', bio: [ 'Co-founder and legal counsel for GRUG Group since 2017. Directs corporate operations, international contracts, and partner agreements across the studio\u2019s defense, space, and commercial mobility engagements.', 'The reason every deal closes clean.', ], stats: [{ k: 'Co-Founder', v: 'Since 2017' }, { k: 'Practice', v: 'Aviation Law' }, { k: 'Scope', v: 'International' }, { k: 'Operations', v: 'Studio Ops' }], tags: ['LEGAL', 'CONTRACTS', 'COMPLIANCE', 'INVESTOR RELATIONS'], }, ]; return (
Leadership

The team behind every project.

A two-partner studio. Every project led personally, from the first conversation to the final delivery.

{leads.map((p, i) => )}
); }; const LeaderCard = ({ name, last, role, photo, bio, stats, tags, idx }) => { const ref = useReveal(); return (
{`${name}
{role}

{name}{last}.

{(Array.isArray(bio) ? bio : [bio]).map((para, i) =>

{para}

)}
{stats.map(s =>
{s.k}
{s.v}
)}
{tags.map(t => {t})}
); }; /* ============ STORY — About narrative ============ */ const Story = () => { const ref = useReveal(); const pillars = [ { k: 'VISION', t: 'A design partner for the future of flight.', b: 'We believe the next era of aviation will be defined as much by how aircraft look and tell their story as by how they fly. We exist to give that story form.' }, { k: 'MISSION', t: 'Ideas to investor-ready, end to end.', b: 'From the first sketch to the brochure, the render, and the contract — we carry a concept the whole distance, so our clients can walk into any room ready.' }, { k: 'FOCUS', t: 'Advanced air mobility & next-gen aviation.', b: 'eVTOL, supersonic, defense, and space — wherever flight is being reinvented, we help shape the concepts that get it funded and built.' }, ]; return (
Our story

Founded in 2017 to design the future of flight.

GRUG GROUP is an aerospace design studio and aviation solutions company based in Fort Lauderdale, Florida. We partner with aviation companies, agencies, and entrepreneurs worldwide — turning ambitions into concept-ready aircraft and the brand stories that surround them.

{pillars.map((p, i) => ( ))}
); }; const StoryCard = ({ k, t, b, delay }) => { const ref = useReveal(); return (
{k}

{t}

{b}

); }; /* ============ CTA ============ */ const CTA = () => { const ref = useReveal(); return (
START A PROJECT

Have something
you want to design?

Tell us about your idea. We'll come back with a scoped brief, a rough timeline, and a fixed quote — within five business days.

Start a project
); }; /* ============ CONTACT ============ */ const Contact = () => { const ref = useReveal(); const [sent, setSent] = useState(false); const [form, setForm] = useState({ name: '', email: '', company: '', type: 'Project inquiry', message: '' }); const onSubmit = (e) => { e.preventDefault(); const subject = encodeURIComponent(`[${form.type}] from ${form.name || 'website'}`); const body = encodeURIComponent( `Name: ${form.name}\nEmail: ${form.email}\nCompany: ${form.company}\nInquiry: ${form.type}\n\n${form.message}` ); window.location.href = `mailto:info@gruggroup.com?subject=${subject}&body=${body}`; setSent(true); }; const set = (k) => (e) => setForm(f => ({ ...f, [k]: e.target.value })); const channels = [ { k: 'GENERAL', v: 'info@gruggroup.com', href: 'mailto:info@gruggroup.com' }, { k: 'PARTNERSHIPS',v: 'Co-ventures & suppliers', href: 'mailto:info@gruggroup.com?subject=Partnership%20inquiry' }, { k: 'MEDIA', v: 'Press & editorial', href: 'mailto:info@gruggroup.com?subject=Media%20inquiry' }, { k: 'WHATSAPP', v: 'Message us directly', href: 'https://wa.link/33zwnl' }, ]; const inquiryTypes = ['Project inquiry', 'Partnership', 'Media / press', 'Other']; return (
Get in touch

Tell us about
your idea.

We work with aviation companies, agencies, and entrepreneurs worldwide. Send us the brief — we'll come back with a scoped proposal, timeline, and fixed quote within five business days.

{channels.map(c => (
{c.k}
{c.v}
))}
HEADQUARTERS
Fort Lauderdale, Florida · USA
OPERATING SINCE
2017
{window.GRUG.SOCIALS.map(s => ( {s.svg} ))}
{sent ? (

Your email is ready to send.

We opened your mail app with the message pre-filled. If it didn't open, write us directly at info@gruggroup.com.

) : (
{inquiryTypes.map(t => ( ))}