'use client'; import React, { useState } from 'react'; import Image from 'next/image'; interface GalleryItem { id: number; title: string; category: string; desc: string; image: string; tag: string; } const portfolioItems: GalleryItem[] = [ { id: 1, title: 'Titus & Alayna Tuscan Wedding Arch', category: 'Weddings', desc: 'Tuscan yellow centerpiece arch flanked by crisp white panels, organic lemon-white balloon clouds, and white floral arrangements.', image: '/images/portfolio_titus_alayna_wedding.jpg', tag: 'Weddings & Engagements', }, { id: 2, title: 'Emelda Luxury Black, Gold & Crimson Birthday', category: 'Birthdays', desc: 'Black marble backdrop with gold script lettering, surrounded by a dramatic organic garland of chrome gold, crimson red, and onyx black balloons.', image: '/images/portfolio_emelda_luxury_black_gold.jpg', tag: 'Milestone Celebrations', }, { id: 3, title: 'Berry Sweet Baby Shower Triple Arch', category: 'Baby Showers', desc: 'Triple custom arched panels with hand-illustrated strawberry & blueberry motifs, framed in organic strawberry red, navy blue, and pastel pink balloons.', image: '/images/portfolio_berry_sweet_baby.jpg', tag: 'Baby Showers', }, { id: 4, title: 'Amina’s "Berry First Birthday" Backdrop', category: 'Birthdays', desc: 'Custom arched backdrop with 3D strawberry foil balloons and an organic balloon cascade in cherry red, blush pink, and white.', image: '/images/portfolio_amina_berry_first_birthday.png', tag: '1st Birthdays', }, { id: 5, title: 'Sage Green, Blush & Chrome Gold Birthday Arch', category: 'Birthdays', desc: 'Elegant white arch with 3D gold "Happy Birthday" lettering, accented with faux eucalyptus greenery, silk roses, and chrome gold spheres.', image: '/images/portfolio_sage_gold_birthday.jpg', tag: 'Adult Birthdays', }, { id: 6, title: 'Class of 2026 Tropical Brights Graduation', category: 'Themed', desc: 'Vibrant tropical color palette of hot pink, neon orange, bright turquoise, and lime green with monstera palm leaves on a lavender backdrop.', image: '/images/portfolio_tropical_class_2026.jpg', tag: 'Graduations', }, { id: 7, title: 'Lavender Moon Arch & Giant Mosaic Letter "J"', category: 'Specialty', desc: 'Gold crescent moon hoop with deep navy and lilac balloons, paired with sheer lilac drape backdrops and a towering custom balloon mosaic "J".', image: '/images/portfolio_lavender_moon_arch.jpg', tag: 'Custom Mosaic Letters', }, { id: 8, title: 'Patriotic Memorial Day Celebration Arch', category: 'Themed', desc: 'Grand red, white, royal blue, and chrome gold balloon arch featuring metallic 3D starburst foils for a high-impact holiday installation.', image: '/images/portfolio_memorial_day_arch.jpg', tag: 'Community Events', }, { id: 9, title: '"Pop, Fizz, Fun!" Citrus Beverage Station', category: 'Specialty', desc: 'Vibrant orange and pearl white organic balloon wave framing an arched drink station with custom floral typography and rustic wooden beverage crates.', image: '/images/portfolio_pop_fizz_orange.jpg', tag: 'Drink & Treat Stations', }, ]; export default function PortfolioGallery() { const [selectedCategory, setSelectedCategory] = useState('All'); const [activeModalImage, setActiveModalImage] = useState(null); const categories = ['All', 'Weddings', 'Birthdays', 'Baby Showers', 'Themed', 'Specialty']; const filteredItems = selectedCategory === 'All' ? portfolioItems : portfolioItems.filter(item => item.category === selectedCategory); return (
{/* Heading */}
Real Client Installations

Featured Event Portfolio

Every event is a custom masterpiece. Browse through our real balloon garlands, custom backdrops, and bespoke styling.

{/* Filter Pills */}
{categories.map((cat) => ( ))}
{/* Gallery Grid */}
{filteredItems.map((item) => (
setActiveModalImage(item)} className="glass-panel" style={{ borderRadius: '16px', overflow: 'hidden', cursor: 'pointer', transition: 'transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease', border: '1px solid rgba(212, 175, 55, 0.2)', }} onMouseEnter={(e) => { e.currentTarget.style.transform = 'translateY(-6px)'; e.currentTarget.style.borderColor = 'var(--color-gold)'; e.currentTarget.style.boxShadow = '0 12px 30px rgba(212, 175, 55, 0.25)'; }} onMouseLeave={(e) => { e.currentTarget.style.transform = 'translateY(0)'; e.currentTarget.style.borderColor = 'rgba(212, 175, 55, 0.2)'; e.currentTarget.style.boxShadow = '0 8px 32px rgba(0, 0, 0, 0.6)'; }} > {/* Image Container */}
{item.title}
{item.tag}
{/* Caption */}

{item.title}

{item.desc}

Click to view full photo
))}
{/* Full-Screen Image Lightbox Modal */} {activeModalImage && (
setActiveModalImage(null)} style={{ position: 'fixed', top: 0, left: 0, width: '100%', height: '100%', backgroundColor: 'rgba(0, 0, 0, 0.92)', backdropFilter: 'blur(12px)', zIndex: 9999, display: 'flex', alignItems: 'center', justifyContent: 'center', padding: '24px', }} >
e.stopPropagation()} style={{ position: 'relative', maxWidth: '900px', width: '100%', maxHeight: '90vh', background: '#0F0F0F', border: '2px solid var(--color-gold)', borderRadius: '16px', overflow: 'hidden', boxShadow: '0 0 40px rgba(212, 175, 55, 0.4)', display: 'flex', flexDirection: 'column', }} >
{activeModalImage.title}
{activeModalImage.tag}

{activeModalImage.title}

{activeModalImage.desc}

)}
); }