Spaces:
Build error
Build error
File size: 11,340 Bytes
0ebda10 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 | // 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
}
} |