// Shared vendor data — single source of truth for all pages // In production this would come from PostgreSQL + OpenSearch export interface Vendor { id: string name: string category: string district: string priceMin: number priceMax: number rating: number reviews: number description: string features: string[] image: string tag: string availability: { date: string; type: 'available' | 'booked' | 'blocked' }[] packages: { id: string; name: string; price: number; guests: string; desc: string }[] } export const vendorData: Vendor[] = [ { id: 'v1', name: 'The Grand Atrium', category: 'Venues', district: 'Colombo 7', priceMin: 350000, priceMax: 800000, rating: 4.9, reviews: 127, description: 'An exquisite colonial-era ballroom with soaring ceilings, crystal chandeliers, and manicured gardens. Perfect for grand celebrations up to 500 guests.', features: ['Indoor & Outdoor', 'Bridal Suite', 'Valet Parking', 'Catering Kitchen', 'AV Equipment', 'Wheelchair Access', 'Garden Ceremony', 'Rain Backup'], image: '🏛️', tag: 'Premium', availability: [ { date: '2026-12-14', type: 'available' }, { date: '2026-12-21', type: 'available' }, { date: '2027-01-04', type: 'booked' }, { date: '2027-01-11', type: 'available' }, { date: '2027-01-18', type: 'blocked' }, { date: '2027-01-25', type: 'available' }, ], packages: [ { id: 'p1', name: 'Ceremony Only', price: 350000, guests: 'Up to 200', desc: '4-hour ceremony with garden access' }, { id: 'p2', name: 'Full Day', price: 550000, guests: 'Up to 350', desc: '10-hour access including rehearsal dinner' }, { id: 'p3', name: 'Grand Celebration', price: 800000, guests: 'Up to 500', desc: 'Full venue with garden, bridal suite, and next-day brunch' }, ], }, { id: 'v2', name: 'Lens & Light Studio', category: 'Photographers', district: 'Colombo 3', priceMin: 85000, priceMax: 250000, rating: 4.8, reviews: 94, description: 'Award-winning wedding photography team specializing in candid moments and cinematic storytelling. Two photographers per event, 400+ edited images delivered within 30 days.', features: ['2 Photographers', 'Drone Coverage', 'Same-Day Previews', 'Online Gallery', 'Photo Album', 'RAW Files Available'], image: '📸', tag: 'Top Rated', availability: [ { date: '2026-12-14', type: 'available' }, { date: '2026-12-21', type: 'booked' }, { date: '2027-01-04', type: 'available' }, { date: '2027-01-11', type: 'available' }, ], packages: [ { id: 'p4', name: 'Ceremony Coverage', price: 85000, guests: 'N/A', desc: '4-hour ceremony coverage, 200+ edited images, online gallery' }, { id: 'p5', name: 'Full Day', price: 150000, guests: 'N/A', desc: '10-hour coverage, 400+ edited images, USB drive, photo album' }, { id: 'p6', name: 'Premium', price: 250000, guests: 'N/A', desc: 'Full day + pre-wedding shoot, drone, premium album, RAW files' }, ], }, { id: 'v3', name: 'Bloom & Petal', category: 'Florists', district: 'Colombo 5', priceMin: 50000, priceMax: 200000, rating: 4.9, reviews: 68, description: 'Luxury floral design studio creating breathtaking arrangements from locally sourced and imported blooms. Specializing in romantic, garden-inspired aesthetics.', features: ['Bridal Bouquet', 'Bridesmaids Bouquets', 'Ceremony Arch', 'Table Centerpieces', 'Aisle Decor', 'Setup & Teardown'], image: '💐', tag: 'Popular', availability: [ { date: '2026-12-14', type: 'available' }, { date: '2026-12-21', type: 'available' }, { date: '2027-01-04', type: 'available' }, { date: '2027-01-11', type: 'available' }, ], packages: [ { id: 'p7', name: 'Essential', price: 50000, guests: 'Up to 100', desc: 'Bridal bouquet, 5 table centerpieces, basic ceremony decor' }, { id: 'p8', name: 'Classic', price: 120000, guests: 'Up to 200', desc: 'Bridal + bridesmaids bouquets, ceremony arch, 15 centerpieces, aisle decor' }, { id: 'p9', name: 'Luxury', price: 200000, guests: 'Up to 400', desc: 'Full venue floral design, premium imported blooms, chandelier installation' }, ], }, { id: 'v4', name: 'Silver Spoon Catering', category: 'Catering', district: 'Colombo 4', priceMin: 150000, priceMax: 500000, rating: 4.7, reviews: 112, description: 'Fine dining catering with customizable menus spanning Sri Lankan, Western, Indian, and fusion cuisines. Farm-to-table ingredients, professional waitstaff, and full bar service.', features: ['Custom Menu', 'Live Stations', 'Full Bar Service', 'Dietary Options', 'Waitstaff Included', 'Tasting Session'], image: '🍽️', tag: 'Best Value', availability: [ { date: '2026-12-14', type: 'booked' }, { date: '2026-12-21', type: 'available' }, { date: '2027-01-04', type: 'available' }, { date: '2027-01-11', type: 'available' }, ], packages: [ { id: 'p10', name: 'Silver', price: 150000, guests: 'Up to 100', desc: '3-course plated dinner, 2 live stations, soft bar' }, { id: 'p11', name: 'Gold', price: 300000, guests: 'Up to 250', desc: '5-course dinner, 4 live stations, full bar, champagne toast' }, { id: 'p12', name: 'Platinum', price: 500000, guests: 'Up to 500', desc: '7-course dinner, 6 live stations, premium bar, caviar service' }, ], }, { id: 'v5', name: 'Melody Makers', category: 'Music & DJ', district: 'Colombo 6', priceMin: 45000, priceMax: 150000, rating: 4.6, reviews: 45, description: 'Professional DJ and live band services for weddings. Extensive music library spanning all genres. MC services, dance floor lighting, and premium sound system included.', features: ['DJ + MC', 'Live Band Option', 'Dance Floor', 'Lighting Rig', 'Wireless Mics', 'Song Requests'], image: '🎵', tag: '', availability: [ { date: '2026-12-14', type: 'available' }, { date: '2026-12-21', type: 'available' }, { date: '2027-01-04', type: 'available' }, { date: '2027-01-11', type: 'available' }, ], packages: [ { id: 'p13', name: 'DJ Package', price: 45000, guests: 'N/A', desc: '4-hour DJ set, basic sound system, MC services' }, { id: 'p14', name: 'Band + DJ', price: 95000, guests: 'N/A', desc: '3-piece band + DJ, premium sound, dance floor lighting' }, { id: 'p15', name: 'Full Production', price: 150000, guests: 'N/A', desc: '5-piece band + DJ + percussionist, full lighting rig, fog machine' }, ], }, { id: 'v6', name: 'Elegance Bridal', category: 'Bridal Wear', district: 'Colombo 7', priceMin: 80000, priceMax: 350000, rating: 4.8, reviews: 56, description: 'Luxury bridal atelier offering bespoke wedding gowns, bridesmaid dresses, and groomswear. In-house alterations, fabric sourcing from Italy and India, and personal stylist included.', features: ['Bespoke Design', 'In-House Tailoring', 'Fabric Sourcing', 'Groomswear', 'Bridesmaids', 'Trial Fittings'], image: '👗', tag: '', availability: [ { date: '2026-12-14', type: 'available' }, { date: '2026-12-21', type: 'available' }, ], packages: [ { id: 'p16', name: 'Bridal Gown', price: 80000, guests: 'N/A', desc: 'Custom-designed bridal gown with 3 fitting sessions' }, { id: 'p17', name: 'Bridal Suite', price: 200000, guests: 'N/A', desc: 'Bridal gown + groomswear + 3 bridesmaid dresses' }, { id: 'p18', name: 'Complete Collection', price: 350000, guests: 'N/A', desc: 'Full wedding party attire, rehearsal dinner dress, going-away outfit' }, ], }, { id: 'v7', name: 'Dream Decor', category: 'Decorators', district: 'Kandy', priceMin: 60000, priceMax: 300000, rating: 4.7, reviews: 72, description: 'Full-service wedding decorators creating magical atmospheres. Specializing in floral arches, fabric draping, lighting design, and themed installations.', features: ['Ceremony Arch', 'Table Styling', 'Lighting Design', 'Fabric Draping', 'Theme Design', 'Setup & Teardown'], image: '✨', tag: '', availability: [ { date: '2026-12-14', type: 'available' }, { date: '2026-12-21', type: 'available' }, ], packages: [ { id: 'p19', name: 'Essential Decor', price: 60000, guests: 'Up to 100', desc: 'Ceremony arch, basic table styling, chair covers' }, { id: 'p20', name: 'Classic', price: 150000, guests: 'Up to 250', desc: 'Full venue decor, lighting design, fabric draping, centerpieces' }, { id: 'p21', name: 'Grand Design', price: 300000, guests: 'Up to 500', desc: 'Themed installation, premium florals, ceiling treatment, chandeliers' }, ], }, { id: 'v8', name: 'Sunset Gardens', category: 'Venues', district: 'Galle', priceMin: 280000, priceMax: 650000, rating: 4.9, reviews: 88, description: 'Beachfront wedding venue with panoramic Indian Ocean views. Open-air pavilion, manicured tropical gardens, and a sunset ceremony deck. Capacity up to 300 guests.', features: ['Beachfront', 'Sunset Deck', 'Open Pavilion', 'Bridal Suite', 'Parking', 'Rain Backup', 'Catering Kitchen'], image: '🌅', tag: 'Premium', availability: [ { date: '2026-12-14', type: 'booked' }, { date: '2026-12-21', type: 'booked' }, { date: '2027-01-04', type: 'available' }, { date: '2027-01-11', type: 'available' }, ], packages: [ { id: 'p22', name: 'Sunset Ceremony', price: 280000, guests: 'Up to 150', desc: '4-hour sunset ceremony on the deck, garden access' }, { id: 'p23', name: 'Full Day', price: 450000, guests: 'Up to 300', desc: '10-hour access including pavilion, garden, and beach deck' }, { id: 'p24', name: 'Weekend Package', price: 650000, guests: 'Up to 300', desc: 'Full day + welcome dinner night before, accommodation included' }, ], }, ] export function getVendor(id: string): Vendor | undefined { return vendorData.find(v => v.id === id) } export function getVendorsByCategory(cat: string): Vendor[] { if (cat === 'All') return vendorData return vendorData.filter(v => v.category === cat) } export function getVendorsByDistrict(district: string): Vendor[] { if (district === 'All Districts') return vendorData return vendorData.filter(v => v.district === district) } export const categories = ['All', 'Venues', 'Photographers', 'Florists', 'Catering', 'Music & DJ', 'Bridal Wear', 'Decorators'] export const districts = ['All Districts', 'Colombo 1-7', 'Colombo 3', 'Colombo 4', 'Colombo 5', 'Colombo 6', 'Colombo 7', 'Kandy', 'Galle', 'Negombo', 'Battaramulla'] export function searchVendors(q: string, cat: string, dist: string): Vendor[] { return vendorData.filter(v => { if (cat !== 'All' && v.category !== cat) return false if (dist !== 'All Districts' && v.district !== dist) return false if (q && !v.name.toLowerCase().includes(q.toLowerCase())) return false return true }) } export function sortVendors(vendors: Vendor[], sortBy: string): Vendor[] { switch (sortBy) { case 'Rating': return [...vendors].sort((a, b) => b.rating - a.rating) case 'Price: Low–High': return [...vendors].sort((a, b) => a.priceMin - b.priceMin) case 'Price: High–Low': return [...vendors].sort((a, b) => b.priceMax - a.priceMax) case 'Most Reviewed': return [...vendors].sort((a, b) => b.reviews - a.reviews) default: return vendors } }