Spaces:
Build error
Build error
Upload src/lib/vendors.ts
Browse files- src/lib/vendors.ts +185 -0
src/lib/vendors.ts
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
// Shared vendor data — single source of truth for all pages
|
| 2 |
+
// In production this would come from PostgreSQL + OpenSearch
|
| 3 |
+
|
| 4 |
+
export interface Vendor {
|
| 5 |
+
id: string
|
| 6 |
+
name: string
|
| 7 |
+
category: string
|
| 8 |
+
district: string
|
| 9 |
+
priceMin: number
|
| 10 |
+
priceMax: number
|
| 11 |
+
rating: number
|
| 12 |
+
reviews: number
|
| 13 |
+
description: string
|
| 14 |
+
features: string[]
|
| 15 |
+
image: string
|
| 16 |
+
tag: string
|
| 17 |
+
availability: { date: string; type: 'available' | 'booked' | 'blocked' }[]
|
| 18 |
+
packages: { id: string; name: string; price: number; guests: string; desc: string }[]
|
| 19 |
+
}
|
| 20 |
+
|
| 21 |
+
export const vendorData: Vendor[] = [
|
| 22 |
+
{
|
| 23 |
+
id: 'v1', name: 'The Grand Atrium', category: 'Venues', district: 'Colombo 7',
|
| 24 |
+
priceMin: 350000, priceMax: 800000, rating: 4.9, reviews: 127,
|
| 25 |
+
description: 'An exquisite colonial-era ballroom with soaring ceilings, crystal chandeliers, and manicured gardens. Perfect for grand celebrations up to 500 guests.',
|
| 26 |
+
features: ['Indoor & Outdoor', 'Bridal Suite', 'Valet Parking', 'Catering Kitchen', 'AV Equipment', 'Wheelchair Access', 'Garden Ceremony', 'Rain Backup'],
|
| 27 |
+
image: '🏛️', tag: 'Premium',
|
| 28 |
+
availability: [
|
| 29 |
+
{ date: '2026-12-14', type: 'available' }, { date: '2026-12-21', type: 'available' },
|
| 30 |
+
{ date: '2027-01-04', type: 'booked' }, { date: '2027-01-11', type: 'available' },
|
| 31 |
+
{ date: '2027-01-18', type: 'blocked' }, { date: '2027-01-25', type: 'available' },
|
| 32 |
+
],
|
| 33 |
+
packages: [
|
| 34 |
+
{ id: 'p1', name: 'Ceremony Only', price: 350000, guests: 'Up to 200', desc: '4-hour ceremony with garden access' },
|
| 35 |
+
{ id: 'p2', name: 'Full Day', price: 550000, guests: 'Up to 350', desc: '10-hour access including rehearsal dinner' },
|
| 36 |
+
{ id: 'p3', name: 'Grand Celebration', price: 800000, guests: 'Up to 500', desc: 'Full venue with garden, bridal suite, and next-day brunch' },
|
| 37 |
+
],
|
| 38 |
+
},
|
| 39 |
+
{
|
| 40 |
+
id: 'v2', name: 'Lens & Light Studio', category: 'Photographers', district: 'Colombo 3',
|
| 41 |
+
priceMin: 85000, priceMax: 250000, rating: 4.8, reviews: 94,
|
| 42 |
+
description: 'Award-winning wedding photography team specializing in candid moments and cinematic storytelling. Two photographers per event, 400+ edited images delivered within 30 days.',
|
| 43 |
+
features: ['2 Photographers', 'Drone Coverage', 'Same-Day Previews', 'Online Gallery', 'Photo Album', 'RAW Files Available'],
|
| 44 |
+
image: '📸', tag: 'Top Rated',
|
| 45 |
+
availability: [
|
| 46 |
+
{ date: '2026-12-14', type: 'available' }, { date: '2026-12-21', type: 'booked' },
|
| 47 |
+
{ date: '2027-01-04', type: 'available' }, { date: '2027-01-11', type: 'available' },
|
| 48 |
+
],
|
| 49 |
+
packages: [
|
| 50 |
+
{ id: 'p4', name: 'Ceremony Coverage', price: 85000, guests: 'N/A', desc: '4-hour ceremony coverage, 200+ edited images, online gallery' },
|
| 51 |
+
{ id: 'p5', name: 'Full Day', price: 150000, guests: 'N/A', desc: '10-hour coverage, 400+ edited images, USB drive, photo album' },
|
| 52 |
+
{ id: 'p6', name: 'Premium', price: 250000, guests: 'N/A', desc: 'Full day + pre-wedding shoot, drone, premium album, RAW files' },
|
| 53 |
+
],
|
| 54 |
+
},
|
| 55 |
+
{
|
| 56 |
+
id: 'v3', name: 'Bloom & Petal', category: 'Florists', district: 'Colombo 5',
|
| 57 |
+
priceMin: 50000, priceMax: 200000, rating: 4.9, reviews: 68,
|
| 58 |
+
description: 'Luxury floral design studio creating breathtaking arrangements from locally sourced and imported blooms. Specializing in romantic, garden-inspired aesthetics.',
|
| 59 |
+
features: ['Bridal Bouquet', 'Bridesmaids Bouquets', 'Ceremony Arch', 'Table Centerpieces', 'Aisle Decor', 'Setup & Teardown'],
|
| 60 |
+
image: '💐', tag: 'Popular',
|
| 61 |
+
availability: [
|
| 62 |
+
{ date: '2026-12-14', type: 'available' }, { date: '2026-12-21', type: 'available' },
|
| 63 |
+
{ date: '2027-01-04', type: 'available' }, { date: '2027-01-11', type: 'available' },
|
| 64 |
+
],
|
| 65 |
+
packages: [
|
| 66 |
+
{ id: 'p7', name: 'Essential', price: 50000, guests: 'Up to 100', desc: 'Bridal bouquet, 5 table centerpieces, basic ceremony decor' },
|
| 67 |
+
{ id: 'p8', name: 'Classic', price: 120000, guests: 'Up to 200', desc: 'Bridal + bridesmaids bouquets, ceremony arch, 15 centerpieces, aisle decor' },
|
| 68 |
+
{ id: 'p9', name: 'Luxury', price: 200000, guests: 'Up to 400', desc: 'Full venue floral design, premium imported blooms, chandelier installation' },
|
| 69 |
+
],
|
| 70 |
+
},
|
| 71 |
+
{
|
| 72 |
+
id: 'v4', name: 'Silver Spoon Catering', category: 'Catering', district: 'Colombo 4',
|
| 73 |
+
priceMin: 150000, priceMax: 500000, rating: 4.7, reviews: 112,
|
| 74 |
+
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.',
|
| 75 |
+
features: ['Custom Menu', 'Live Stations', 'Full Bar Service', 'Dietary Options', 'Waitstaff Included', 'Tasting Session'],
|
| 76 |
+
image: '🍽️', tag: 'Best Value',
|
| 77 |
+
availability: [
|
| 78 |
+
{ date: '2026-12-14', type: 'booked' }, { date: '2026-12-21', type: 'available' },
|
| 79 |
+
{ date: '2027-01-04', type: 'available' }, { date: '2027-01-11', type: 'available' },
|
| 80 |
+
],
|
| 81 |
+
packages: [
|
| 82 |
+
{ id: 'p10', name: 'Silver', price: 150000, guests: 'Up to 100', desc: '3-course plated dinner, 2 live stations, soft bar' },
|
| 83 |
+
{ id: 'p11', name: 'Gold', price: 300000, guests: 'Up to 250', desc: '5-course dinner, 4 live stations, full bar, champagne toast' },
|
| 84 |
+
{ id: 'p12', name: 'Platinum', price: 500000, guests: 'Up to 500', desc: '7-course dinner, 6 live stations, premium bar, caviar service' },
|
| 85 |
+
],
|
| 86 |
+
},
|
| 87 |
+
{
|
| 88 |
+
id: 'v5', name: 'Melody Makers', category: 'Music & DJ', district: 'Colombo 6',
|
| 89 |
+
priceMin: 45000, priceMax: 150000, rating: 4.6, reviews: 45,
|
| 90 |
+
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.',
|
| 91 |
+
features: ['DJ + MC', 'Live Band Option', 'Dance Floor', 'Lighting Rig', 'Wireless Mics', 'Song Requests'],
|
| 92 |
+
image: '🎵', tag: '',
|
| 93 |
+
availability: [
|
| 94 |
+
{ date: '2026-12-14', type: 'available' }, { date: '2026-12-21', type: 'available' },
|
| 95 |
+
{ date: '2027-01-04', type: 'available' }, { date: '2027-01-11', type: 'available' },
|
| 96 |
+
],
|
| 97 |
+
packages: [
|
| 98 |
+
{ id: 'p13', name: 'DJ Package', price: 45000, guests: 'N/A', desc: '4-hour DJ set, basic sound system, MC services' },
|
| 99 |
+
{ id: 'p14', name: 'Band + DJ', price: 95000, guests: 'N/A', desc: '3-piece band + DJ, premium sound, dance floor lighting' },
|
| 100 |
+
{ id: 'p15', name: 'Full Production', price: 150000, guests: 'N/A', desc: '5-piece band + DJ + percussionist, full lighting rig, fog machine' },
|
| 101 |
+
],
|
| 102 |
+
},
|
| 103 |
+
{
|
| 104 |
+
id: 'v6', name: 'Elegance Bridal', category: 'Bridal Wear', district: 'Colombo 7',
|
| 105 |
+
priceMin: 80000, priceMax: 350000, rating: 4.8, reviews: 56,
|
| 106 |
+
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.',
|
| 107 |
+
features: ['Bespoke Design', 'In-House Tailoring', 'Fabric Sourcing', 'Groomswear', 'Bridesmaids', 'Trial Fittings'],
|
| 108 |
+
image: '👗', tag: '',
|
| 109 |
+
availability: [
|
| 110 |
+
{ date: '2026-12-14', type: 'available' }, { date: '2026-12-21', type: 'available' },
|
| 111 |
+
],
|
| 112 |
+
packages: [
|
| 113 |
+
{ id: 'p16', name: 'Bridal Gown', price: 80000, guests: 'N/A', desc: 'Custom-designed bridal gown with 3 fitting sessions' },
|
| 114 |
+
{ id: 'p17', name: 'Bridal Suite', price: 200000, guests: 'N/A', desc: 'Bridal gown + groomswear + 3 bridesmaid dresses' },
|
| 115 |
+
{ id: 'p18', name: 'Complete Collection', price: 350000, guests: 'N/A', desc: 'Full wedding party attire, rehearsal dinner dress, going-away outfit' },
|
| 116 |
+
],
|
| 117 |
+
},
|
| 118 |
+
{
|
| 119 |
+
id: 'v7', name: 'Dream Decor', category: 'Decorators', district: 'Kandy',
|
| 120 |
+
priceMin: 60000, priceMax: 300000, rating: 4.7, reviews: 72,
|
| 121 |
+
description: 'Full-service wedding decorators creating magical atmospheres. Specializing in floral arches, fabric draping, lighting design, and themed installations.',
|
| 122 |
+
features: ['Ceremony Arch', 'Table Styling', 'Lighting Design', 'Fabric Draping', 'Theme Design', 'Setup & Teardown'],
|
| 123 |
+
image: '✨', tag: '',
|
| 124 |
+
availability: [
|
| 125 |
+
{ date: '2026-12-14', type: 'available' }, { date: '2026-12-21', type: 'available' },
|
| 126 |
+
],
|
| 127 |
+
packages: [
|
| 128 |
+
{ id: 'p19', name: 'Essential Decor', price: 60000, guests: 'Up to 100', desc: 'Ceremony arch, basic table styling, chair covers' },
|
| 129 |
+
{ id: 'p20', name: 'Classic', price: 150000, guests: 'Up to 250', desc: 'Full venue decor, lighting design, fabric draping, centerpieces' },
|
| 130 |
+
{ id: 'p21', name: 'Grand Design', price: 300000, guests: 'Up to 500', desc: 'Themed installation, premium florals, ceiling treatment, chandeliers' },
|
| 131 |
+
],
|
| 132 |
+
},
|
| 133 |
+
{
|
| 134 |
+
id: 'v8', name: 'Sunset Gardens', category: 'Venues', district: 'Galle',
|
| 135 |
+
priceMin: 280000, priceMax: 650000, rating: 4.9, reviews: 88,
|
| 136 |
+
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.',
|
| 137 |
+
features: ['Beachfront', 'Sunset Deck', 'Open Pavilion', 'Bridal Suite', 'Parking', 'Rain Backup', 'Catering Kitchen'],
|
| 138 |
+
image: '🌅', tag: 'Premium',
|
| 139 |
+
availability: [
|
| 140 |
+
{ date: '2026-12-14', type: 'booked' }, { date: '2026-12-21', type: 'booked' },
|
| 141 |
+
{ date: '2027-01-04', type: 'available' }, { date: '2027-01-11', type: 'available' },
|
| 142 |
+
],
|
| 143 |
+
packages: [
|
| 144 |
+
{ id: 'p22', name: 'Sunset Ceremony', price: 280000, guests: 'Up to 150', desc: '4-hour sunset ceremony on the deck, garden access' },
|
| 145 |
+
{ id: 'p23', name: 'Full Day', price: 450000, guests: 'Up to 300', desc: '10-hour access including pavilion, garden, and beach deck' },
|
| 146 |
+
{ id: 'p24', name: 'Weekend Package', price: 650000, guests: 'Up to 300', desc: 'Full day + welcome dinner night before, accommodation included' },
|
| 147 |
+
],
|
| 148 |
+
},
|
| 149 |
+
]
|
| 150 |
+
|
| 151 |
+
export function getVendor(id: string): Vendor | undefined {
|
| 152 |
+
return vendorData.find(v => v.id === id)
|
| 153 |
+
}
|
| 154 |
+
|
| 155 |
+
export function getVendorsByCategory(cat: string): Vendor[] {
|
| 156 |
+
if (cat === 'All') return vendorData
|
| 157 |
+
return vendorData.filter(v => v.category === cat)
|
| 158 |
+
}
|
| 159 |
+
|
| 160 |
+
export function getVendorsByDistrict(district: string): Vendor[] {
|
| 161 |
+
if (district === 'All Districts') return vendorData
|
| 162 |
+
return vendorData.filter(v => v.district === district)
|
| 163 |
+
}
|
| 164 |
+
|
| 165 |
+
export const categories = ['All', 'Venues', 'Photographers', 'Florists', 'Catering', 'Music & DJ', 'Bridal Wear', 'Decorators']
|
| 166 |
+
export const districts = ['All Districts', 'Colombo 1-7', 'Colombo 3', 'Colombo 4', 'Colombo 5', 'Colombo 6', 'Colombo 7', 'Kandy', 'Galle', 'Negombo', 'Battaramulla']
|
| 167 |
+
|
| 168 |
+
export function searchVendors(q: string, cat: string, dist: string): Vendor[] {
|
| 169 |
+
return vendorData.filter(v => {
|
| 170 |
+
if (cat !== 'All' && v.category !== cat) return false
|
| 171 |
+
if (dist !== 'All Districts' && v.district !== dist) return false
|
| 172 |
+
if (q && !v.name.toLowerCase().includes(q.toLowerCase())) return false
|
| 173 |
+
return true
|
| 174 |
+
})
|
| 175 |
+
}
|
| 176 |
+
|
| 177 |
+
export function sortVendors(vendors: Vendor[], sortBy: string): Vendor[] {
|
| 178 |
+
switch (sortBy) {
|
| 179 |
+
case 'Rating': return [...vendors].sort((a, b) => b.rating - a.rating)
|
| 180 |
+
case 'Price: Low–High': return [...vendors].sort((a, b) => a.priceMin - b.priceMin)
|
| 181 |
+
case 'Price: High–Low': return [...vendors].sort((a, b) => b.priceMax - a.priceMax)
|
| 182 |
+
case 'Most Reviewed': return [...vendors].sort((a, b) => b.reviews - a.reviews)
|
| 183 |
+
default: return vendors
|
| 184 |
+
}
|
| 185 |
+
}
|