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
  }
}