Spaces:
Build error
Build error
| // 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 | |
| } | |
| } |