imeshuek commited on
Commit
0ebda10
·
verified ·
1 Parent(s): 4c8616e

Upload src/lib/vendors.ts

Browse files
Files changed (1) hide show
  1. 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
+ }