@wix/headless-bookings 0.0.10 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/cjs/dist/api/index.d.ts +10 -1
  2. package/cjs/dist/api/index.js +10 -1
  3. package/cjs/dist/api/query-services/index.d.ts +78 -0
  4. package/cjs/dist/api/query-services/index.js +137 -0
  5. package/cjs/dist/react/core/location/Location.d.ts +44 -0
  6. package/cjs/dist/react/core/location/Location.js +78 -0
  7. package/cjs/dist/react/core/service/Service.d.ts +160 -17
  8. package/cjs/dist/react/core/service/Service.js +211 -13
  9. package/cjs/dist/react/core/service-list/ServiceList.d.ts +75 -0
  10. package/cjs/dist/react/core/service-list/ServiceList.js +58 -0
  11. package/cjs/dist/react/index.d.ts +2 -0
  12. package/cjs/dist/react/index.js +2 -0
  13. package/cjs/dist/react/location/Location.d.ts +77 -0
  14. package/cjs/dist/react/location/Location.js +89 -0
  15. package/cjs/dist/react/service/Service.d.ts +1036 -31
  16. package/cjs/dist/react/service/Service.js +1060 -47
  17. package/cjs/dist/react/service-list/ServiceList.d.ts +185 -0
  18. package/cjs/dist/react/service-list/ServiceList.js +184 -0
  19. package/cjs/dist/services/index.d.ts +2 -1
  20. package/cjs/dist/services/index.js +2 -1
  21. package/cjs/dist/services/service/service.d.ts +71 -18
  22. package/cjs/dist/services/service/service.js +186 -50
  23. package/cjs/dist/services/service-list/service-list.d.ts +157 -0
  24. package/cjs/dist/services/service-list/service-list.js +274 -0
  25. package/cjs/dist/utils/dateAndTime.d.ts +2 -0
  26. package/cjs/dist/utils/dateAndTime.js +18 -0
  27. package/cjs/dist/utils/money.d.ts +21 -0
  28. package/cjs/dist/utils/money.js +34 -0
  29. package/dist/api/index.d.ts +10 -1
  30. package/dist/api/index.js +10 -1
  31. package/dist/api/query-services/index.d.ts +78 -0
  32. package/dist/api/query-services/index.js +137 -0
  33. package/dist/react/core/location/Location.d.ts +44 -0
  34. package/dist/react/core/location/Location.js +78 -0
  35. package/dist/react/core/service/Service.d.ts +160 -17
  36. package/dist/react/core/service/Service.js +211 -13
  37. package/dist/react/core/service-list/ServiceList.d.ts +75 -0
  38. package/dist/react/core/service-list/ServiceList.js +58 -0
  39. package/dist/react/index.d.ts +2 -0
  40. package/dist/react/index.js +2 -0
  41. package/dist/react/location/Location.d.ts +77 -0
  42. package/dist/react/location/Location.js +89 -0
  43. package/dist/react/service/Service.d.ts +1036 -31
  44. package/dist/react/service/Service.js +1060 -47
  45. package/dist/react/service-list/ServiceList.d.ts +185 -0
  46. package/dist/react/service-list/ServiceList.js +184 -0
  47. package/dist/services/index.d.ts +2 -1
  48. package/dist/services/index.js +2 -1
  49. package/dist/services/service/service.d.ts +71 -18
  50. package/dist/services/service/service.js +186 -50
  51. package/dist/services/service-list/service-list.d.ts +157 -0
  52. package/dist/services/service-list/service-list.js +274 -0
  53. package/dist/utils/dateAndTime.d.ts +2 -0
  54. package/dist/utils/dateAndTime.js +18 -0
  55. package/dist/utils/money.d.ts +21 -0
  56. package/dist/utils/money.js +34 -0
  57. package/package.json +2 -2
  58. package/cjs/dist/api/query-service/index.d.ts +0 -23
  59. package/cjs/dist/api/query-service/index.js +0 -41
  60. package/dist/api/query-service/index.d.ts +0 -23
  61. package/dist/api/query-service/index.js +0 -41
@@ -4,13 +4,18 @@
4
4
  */
5
5
  import React from 'react';
6
6
  import { AsChildChildren } from '@wix/headless-utils/react';
7
- import type { services } from '@wix/bookings';
7
+ import { MoneyData } from '@wix/headless-components/react';
8
+ import { services } from '@wix/bookings';
8
9
  /**
9
10
  * Props for Service.Root component
10
11
  */
11
12
  export interface ServiceRootProps {
12
- children: React.ReactNode;
13
+ children?: React.ReactNode | AsChildChildren<{
14
+ selected: boolean;
15
+ bookable: boolean;
16
+ }>;
13
17
  service: services.Service;
18
+ appId?: string;
14
19
  asChild?: boolean;
15
20
  className?: string;
16
21
  }
@@ -95,6 +100,647 @@ export interface DescriptionProps {
95
100
  * ```
96
101
  */
97
102
  export declare const Description: React.ForwardRefExoticComponent<DescriptionProps & React.RefAttributes<HTMLElement>>;
103
+ /**
104
+ * Props for Service Price component
105
+ */
106
+ export interface PriceProps {
107
+ asChild?: boolean;
108
+ children?: AsChildChildren<{
109
+ servicePayment: services.Payment | undefined;
110
+ rateType: services.Payment['rateType'] | undefined;
111
+ money: MoneyData | null;
112
+ minPrice: MoneyData | null;
113
+ maxPrice: MoneyData | null;
114
+ priceDescription: string | null;
115
+ hasAddOns: boolean;
116
+ hasPricingPlans: boolean;
117
+ }>;
118
+ className?: string;
119
+ }
120
+ /**
121
+ * Displays the service price using the Money component with customizable rendering.
122
+ * Renders different defaults based on rate type:
123
+ * - FIXED: Shows formatted price (e.g., '$50.00')
124
+ * - VARIED: Shows price range (e.g., '$30.00 - $50.00')
125
+ * - CUSTOM: Shows custom description text
126
+ * - NO_FEE: Shows zero price (e.g., '$0.00')
127
+ *
128
+ * @component
129
+ * @example
130
+ * ```tsx
131
+ * // Default usage - renders based on rate type
132
+ * <Service.Price className="text-3xl font-bold" />
133
+ *
134
+ * // Custom rendering with full price data
135
+ * <Service.Price asChild>
136
+ * {({ rateType, money, minPrice, maxPrice, priceDescription, hasAddOns, hasPricingPlans }) => (
137
+ * <div>
138
+ * {rateType === 'FIXED' && money && <Money money={money} />}
139
+ * {rateType === 'VARIED' && minPrice && maxPrice && (
140
+ * <span><Money money={minPrice} /> - <Money money={maxPrice} /></span>
141
+ * )}
142
+ * {rateType === 'CUSTOM' && priceDescription && <span>{priceDescription}</span>}
143
+ * {rateType === 'NO_FEE' && money && <Money money={money} />}
144
+ * {hasPricingPlans && <span>Pricing plans available</span>}
145
+ * </div>
146
+ * )}
147
+ * </Service.Price>
148
+ * ```
149
+ */
150
+ export declare const Price: React.ForwardRefExoticComponent<PriceProps & React.RefAttributes<HTMLElement>>;
151
+ /**
152
+ * Props for Service Tagline component
153
+ */
154
+ export interface TaglineProps {
155
+ asChild?: boolean;
156
+ children?: AsChildChildren<{
157
+ tagline: string;
158
+ }>;
159
+ className?: string;
160
+ }
161
+ /**
162
+ * Displays the service tagline with customizable rendering.
163
+ *
164
+ * @component
165
+ * @example
166
+ * ```tsx
167
+ * // Default usage
168
+ * <Service.Tagline className="text-lg text-secondary-foreground" />
169
+ * ```
170
+ *
171
+ * @example
172
+ * ```tsx
173
+ * // asChild with primitive element
174
+ * <Service.Tagline asChild>
175
+ * <p className="italic text-secondary-foreground" />
176
+ * </Service.Tagline>
177
+ * ```
178
+ *
179
+ * @example
180
+ * ```tsx
181
+ * // asChild with custom component accessing tagline data
182
+ * <Service.Tagline asChild>
183
+ * {React.forwardRef(({tagline, ...props}, ref) => (
184
+ * <blockquote ref={ref} {...props} className="border-l-4 pl-4">
185
+ * "{tagline}"
186
+ * </blockquote>
187
+ * ))}
188
+ * </Service.Tagline>
189
+ * ```
190
+ */
191
+ export declare const Tagline: React.ForwardRefExoticComponent<TaglineProps & React.RefAttributes<HTMLElement>>;
192
+ /**
193
+ * Props for Service DurationInMinutes component
194
+ */
195
+ export interface DurationInMinutesProps {
196
+ asChild?: boolean;
197
+ children?: AsChildChildren<{
198
+ duration: number;
199
+ }>;
200
+ className?: string;
201
+ }
202
+ /**
203
+ * Displays the service duration in minutes (raw number) with customizable rendering.
204
+ * Returns the duration as a numeric value representing minutes.
205
+ *
206
+ * @component
207
+ * @example
208
+ * ```tsx
209
+ * // Default usage - displays raw minutes
210
+ * <Service.DurationInMinutes className="text-base text-secondary-foreground" />
211
+ * ```
212
+ *
213
+ * @example
214
+ * ```tsx
215
+ * // asChild with primitive element
216
+ * <Service.DurationInMinutes asChild>
217
+ * <span className="font-semibold" />
218
+ * </Service.DurationInMinutes>
219
+ * ```
220
+ *
221
+ * @example
222
+ * ```tsx
223
+ * // asChild with custom component to format duration
224
+ * <Service.DurationInMinutes asChild>
225
+ * {React.forwardRef(({duration, ...props}, ref) => (
226
+ * <span ref={ref} {...props}>
227
+ * {duration} minutes
228
+ * </span>
229
+ * ))}
230
+ * </Service.DurationInMinutes>
231
+ * ```
232
+ */
233
+ export declare const DurationInMinutes: React.ForwardRefExoticComponent<DurationInMinutesProps & React.RefAttributes<HTMLElement>>;
234
+ /**
235
+ * Props for Service Type component
236
+ */
237
+ export interface TypeProps {
238
+ asChild?: boolean;
239
+ children?: AsChildChildren<{
240
+ type: string;
241
+ }>;
242
+ className?: string;
243
+ }
244
+ /**
245
+ * Displays the service type (APPOINTMENT, CLASS, COURSE, etc.) with customizable rendering.
246
+ *
247
+ * @component
248
+ * @example
249
+ * ```tsx
250
+ * // Default usage
251
+ * <Service.Type className="text-sm text-secondary-foreground uppercase" />
252
+ * ```
253
+ *
254
+ * @example
255
+ * ```tsx
256
+ * // asChild with badge styling
257
+ * <Service.Type asChild>
258
+ * <span className="px-2 py-1 bg-secondary text-secondary-foreground rounded-full text-xs" />
259
+ * </Service.Type>
260
+ * ```
261
+ *
262
+ * @example
263
+ * ```tsx
264
+ * // asChild with custom component to format type
265
+ * <Service.Type asChild>
266
+ * {React.forwardRef(({type, ...props}, ref) => {
267
+ * const label = {
268
+ * APPOINTMENT: '1-on-1',
269
+ * CLASS: 'Group Class',
270
+ * COURSE: 'Course',
271
+ * }[type] || type;
272
+ * return <span ref={ref} {...props}>{label}</span>;
273
+ * })}
274
+ * </Service.Type>
275
+ * ```
276
+ */
277
+ export declare const Type: React.ForwardRefExoticComponent<TypeProps & React.RefAttributes<HTMLElement>>;
278
+ /**
279
+ * Props for Service Category component
280
+ */
281
+ export interface CategoryProps {
282
+ asChild?: boolean;
283
+ children?: AsChildChildren<{
284
+ category: {
285
+ name?: string;
286
+ _id?: string;
287
+ };
288
+ }>;
289
+ className?: string;
290
+ }
291
+ /**
292
+ * Displays the service category with customizable rendering.
293
+ *
294
+ * @component
295
+ * @example
296
+ * ```tsx
297
+ * // Default usage
298
+ * <Service.Category className="text-sm text-secondary-foreground" />
299
+ * ```
300
+ *
301
+ * @example
302
+ * ```tsx
303
+ * // asChild with link styling
304
+ * <Service.Category asChild>
305
+ * <a href="#" className="text-primary hover:underline" />
306
+ * </Service.Category>
307
+ * ```
308
+ *
309
+ * @example
310
+ * ```tsx
311
+ * // asChild with custom component accessing category data
312
+ * <Service.Category asChild>
313
+ * {React.forwardRef(({category, ...props}, ref) => (
314
+ * <a
315
+ * ref={ref}
316
+ * {...props}
317
+ * href={`/category/${category._id}`}
318
+ * className="text-primary hover:underline"
319
+ * >
320
+ * {category.name}
321
+ * </a>
322
+ * ))}
323
+ * </Service.Category>
324
+ * ```
325
+ */
326
+ export declare const Category: React.ForwardRefExoticComponent<CategoryProps & React.RefAttributes<HTMLElement>>;
327
+ /**
328
+ * Type for location
329
+ */
330
+ type LocationType = NonNullable<services.Service['locations']>[number] & {
331
+ id: string;
332
+ };
333
+ /**
334
+ * Props for Service Locations component (Container Level)
335
+ */
336
+ export interface LocationsProps {
337
+ asChild?: boolean;
338
+ children?: React.ReactNode;
339
+ className?: string;
340
+ }
341
+ /**
342
+ * Container for service locations list (Container Level).
343
+ * Follows the 3-level List/Options/Repeater pattern.
344
+ * Provides context and doesn't render when there are no locations.
345
+ *
346
+ * @component
347
+ * @example
348
+ * ```tsx
349
+ * // Basic usage with 3-level pattern
350
+ * <Service.Locations>
351
+ * <Service.Locations.List emptyState={<div>No locations available</div>}>
352
+ * <Service.Locations.LocationRepeater>
353
+ * {({ location }) => (
354
+ * <div>
355
+ * <span>{location.name}</span>
356
+ * <Address.Root address={location.address}>
357
+ * <Address.Formatted />
358
+ * </Address.Root>
359
+ * </div>
360
+ * )}
361
+ * </Service.Locations.LocationRepeater>
362
+ * </Service.Locations.List>
363
+ * </Service.Locations>
364
+ *
365
+ * // With asChild pattern for custom container
366
+ * <Service.Locations asChild>
367
+ * <ul className="locations-list">
368
+ * <Service.Locations.List>
369
+ * <Service.Locations.LocationRepeater>
370
+ * {({ location }) => <li>{location.name}</li>}
371
+ * </Service.Locations.LocationRepeater>
372
+ * </Service.Locations.List>
373
+ * </ul>
374
+ * </Service.Locations>
375
+ * ```
376
+ */
377
+ declare const LocationsBase: React.ForwardRefExoticComponent<LocationsProps & React.RefAttributes<HTMLElement>>;
378
+ /**
379
+ * Props for Service Locations.List component (List Container Level)
380
+ */
381
+ export interface LocationsListProps {
382
+ children?: React.ReactNode;
383
+ emptyState?: React.ReactNode;
384
+ className?: string;
385
+ }
386
+ /**
387
+ * List container for locations with empty state support (List Container Level).
388
+ * Renders emptyState when no locations, otherwise renders children.
389
+ *
390
+ * @component
391
+ * @example
392
+ * ```tsx
393
+ * <Service.Locations.List emptyState={<div>No locations available</div>}>
394
+ * <Service.Locations.LocationRepeater />
395
+ * </Service.Locations.List>
396
+ * ```
397
+ */
398
+ export declare const LocationsList: React.ForwardRefExoticComponent<LocationsListProps & React.RefAttributes<HTMLElement>>;
399
+ /**
400
+ * Render props for LocationRepeater asChild pattern
401
+ */
402
+ export interface LocationRepeaterRenderProps {
403
+ items: LocationType[];
404
+ itemWrapper: (props: {
405
+ item: LocationType;
406
+ index: number;
407
+ children: React.ReactNode;
408
+ }) => React.ReactNode;
409
+ }
410
+ /**
411
+ * Props for Service Locations.LocationRepeater component
412
+ */
413
+ export interface LocationRepeaterProps {
414
+ children?: React.ReactNode | ((props: LocationRepeaterRenderProps) => React.ReactNode);
415
+ asChild?: boolean;
416
+ }
417
+ /**
418
+ * Repeater component that renders Location.Root for each location.
419
+ * Supports asChild pattern for custom rendering.
420
+ *
421
+ * @component
422
+ * @example
423
+ * ```tsx
424
+ * // Standard usage - renders Location.Root for each location
425
+ * <Service.Locations.LocationRepeater>
426
+ * <span className="location-badge">📍</span>
427
+ * </Service.Locations.LocationRepeater>
428
+ *
429
+ * // AsChild usage with custom numbered list
430
+ * <Service.Locations.LocationRepeater asChild>
431
+ * {({ items, itemWrapper }) => (
432
+ * <ol>
433
+ * {items.map((item, index) => (
434
+ * <li key={item.id}>
435
+ * {index + 1}. {itemWrapper({ item, index, children: null })}
436
+ * </li>
437
+ * ))}
438
+ * </ol>
439
+ * )}
440
+ * </Service.Locations.LocationRepeater>
441
+ * ```
442
+ */
443
+ export declare const LocationRepeater: React.ForwardRefExoticComponent<LocationRepeaterProps & React.RefAttributes<HTMLElement>>;
444
+ /**
445
+ * Type for staff member
446
+ */
447
+ type StaffMemberType = {
448
+ name?: string;
449
+ _id?: string;
450
+ id: string;
451
+ };
452
+ /**
453
+ * Props for Service StaffMembers component (Container Level)
454
+ */
455
+ export interface StaffMembersProps {
456
+ asChild?: boolean;
457
+ children?: React.ReactNode;
458
+ className?: string;
459
+ }
460
+ /**
461
+ * Container for service staff members list (Container Level).
462
+ * Follows the 3-level List/Options/Repeater pattern.
463
+ * Provides context and doesn't render when there are no staff members.
464
+ *
465
+ * @component
466
+ * @example
467
+ * ```tsx
468
+ * // Basic usage with 3-level pattern
469
+ * <Service.StaffMembers>
470
+ * <Service.StaffMembers.List emptyState={<div>No staff assigned</div>}>
471
+ * <Service.StaffMembers.StaffMemberRepeater>
472
+ * {({ staffMember }) => (
473
+ * <div className="staff-card">
474
+ * <img src={staffMember.mainMedia?.image} alt={staffMember.name} />
475
+ * <span>{staffMember.name}</span>
476
+ * </div>
477
+ * )}
478
+ * </Service.StaffMembers.StaffMemberRepeater>
479
+ * </Service.StaffMembers.List>
480
+ * </Service.StaffMembers>
481
+ *
482
+ * // With asChild pattern for custom container
483
+ * <Service.StaffMembers asChild>
484
+ * <ul className="staff-list">
485
+ * <Service.StaffMembers.List>
486
+ * <Service.StaffMembers.StaffMemberRepeater>
487
+ * {({ staffMember }) => <li>{staffMember.name}</li>}
488
+ * </Service.StaffMembers.StaffMemberRepeater>
489
+ * </Service.StaffMembers.List>
490
+ * </ul>
491
+ * </Service.StaffMembers>
492
+ * ```
493
+ */
494
+ export declare const StaffMembersBase: React.ForwardRefExoticComponent<StaffMembersProps & React.RefAttributes<HTMLElement>>;
495
+ /**
496
+ * Props for Service StaffMembers.List component (List Container Level)
497
+ */
498
+ export interface StaffMembersListProps {
499
+ children?: React.ReactNode;
500
+ emptyState?: React.ReactNode;
501
+ className?: string;
502
+ }
503
+ /**
504
+ * List container for staff members with empty state support (List Container Level).
505
+ * Renders emptyState when no staff members, otherwise renders children.
506
+ *
507
+ * @component
508
+ * @example
509
+ * ```tsx
510
+ * <Service.StaffMembers.List emptyState={<div>No staff assigned</div>}>
511
+ * <Service.StaffMembers.StaffMemberRepeater />
512
+ * </Service.StaffMembers.List>
513
+ * ```
514
+ */
515
+ export declare const StaffMembersList: React.ForwardRefExoticComponent<StaffMembersListProps & React.RefAttributes<HTMLElement>>;
516
+ /**
517
+ * Render props for StaffMemberRepeater asChild pattern
518
+ */
519
+ export interface StaffMemberRepeaterRenderProps {
520
+ items: StaffMemberType[];
521
+ itemWrapper: (props: {
522
+ item: StaffMemberType;
523
+ index: number;
524
+ children: React.ReactNode;
525
+ }) => React.ReactNode;
526
+ }
527
+ /**
528
+ * Props for Service StaffMembers.StaffMemberRepeater component
529
+ */
530
+ export interface StaffMemberRepeaterProps {
531
+ children?: React.ReactNode | ((props: StaffMemberRepeaterRenderProps) => React.ReactNode);
532
+ asChild?: boolean;
533
+ }
534
+ /**
535
+ * Repeater component that renders staff member name for each staff member.
536
+ * Supports asChild pattern for custom rendering.
537
+ *
538
+ * @component
539
+ * @example
540
+ * ```tsx
541
+ * // Standard usage - renders staff member names
542
+ * <Service.StaffMembers.StaffMemberRepeater>
543
+ * <span className="staff-badge">👤</span>
544
+ * </Service.StaffMembers.StaffMemberRepeater>
545
+ *
546
+ * // AsChild usage with custom numbered list
547
+ * <Service.StaffMembers.StaffMemberRepeater asChild>
548
+ * {({ items, itemWrapper }) => (
549
+ * <ol>
550
+ * {items.map((item, index) => (
551
+ * <li key={item.id}>
552
+ * {index + 1}. {itemWrapper({ item, index, children: null })}
553
+ * </li>
554
+ * ))}
555
+ * </ol>
556
+ * )}
557
+ * </Service.StaffMembers.StaffMemberRepeater>
558
+ * ```
559
+ */
560
+ export declare const StaffMemberRepeater: React.ForwardRefExoticComponent<StaffMemberRepeaterProps & React.RefAttributes<HTMLElement>>;
561
+ /**
562
+ * Props for Service MainMedia component
563
+ */
564
+ export interface MainMediaProps {
565
+ asChild?: boolean;
566
+ children?: AsChildChildren<{
567
+ media: {
568
+ image?: string;
569
+ };
570
+ }>;
571
+ className?: string;
572
+ }
573
+ /**
574
+ * Displays the service main media image using WixMediaImage.
575
+ *
576
+ * @component
577
+ * @example
578
+ * ```tsx
579
+ * // Default usage
580
+ * <Service.MainMedia className="w-full h-64 object-cover rounded-lg" />
581
+ * ```
582
+ *
583
+ * @example
584
+ * ```tsx
585
+ * // asChild with primitive img element
586
+ * <Service.MainMedia asChild>
587
+ * <img className="w-full h-64 object-cover shadow-lg" />
588
+ * </Service.MainMedia>
589
+ * ```
590
+ *
591
+ * @example
592
+ * ```tsx
593
+ * // asChild with custom component accessing media data
594
+ * <Service.MainMedia asChild>
595
+ * {React.forwardRef(({media, ...props}, ref) => (
596
+ * <div ref={ref} {...props} className="relative aspect-video">
597
+ * <WixMediaImage media={media} className="w-full h-full object-cover" />
598
+ * <div className="absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black/50 p-4">
599
+ * <Service.Name className="text-primary-foreground" />
600
+ * </div>
601
+ * </div>
602
+ * ))}
603
+ * </Service.MainMedia>
604
+ * ```
605
+ */
606
+ export declare const MainMedia: React.ForwardRefExoticComponent<MainMediaProps & React.RefAttributes<HTMLImageElement>>;
607
+ /**
608
+ * Props for Service CoverMedia component
609
+ */
610
+ export interface CoverMediaProps {
611
+ asChild?: boolean;
612
+ children?: AsChildChildren<{
613
+ media: {
614
+ image?: string;
615
+ };
616
+ }>;
617
+ className?: string;
618
+ }
619
+ /**
620
+ * Displays the service cover media image using WixMediaImage.
621
+ * The cover media is typically used as a hero/banner image.
622
+ *
623
+ * @component
624
+ * @example
625
+ * ```tsx
626
+ * // Default usage
627
+ * <Service.CoverMedia className="w-full h-96 object-cover" />
628
+ * ```
629
+ *
630
+ * @example
631
+ * ```tsx
632
+ * // asChild as a background image container
633
+ * <Service.CoverMedia asChild>
634
+ * <div className="w-full h-96 bg-cover bg-center" />
635
+ * </Service.CoverMedia>
636
+ * ```
637
+ *
638
+ * @example
639
+ * ```tsx
640
+ * // asChild with custom component accessing media data
641
+ * <Service.CoverMedia asChild>
642
+ * {React.forwardRef(({media, ...props}, ref) => (
643
+ * <header ref={ref} {...props} className="relative h-96">
644
+ * <WixMediaImage media={media} className="w-full h-full object-cover" />
645
+ * <div className="absolute inset-0 bg-black/40 flex items-center justify-center">
646
+ * <h1 className="text-4xl font-bold text-primary-foreground">
647
+ * <Service.Name />
648
+ * </h1>
649
+ * </div>
650
+ * </header>
651
+ * ))}
652
+ * </Service.CoverMedia>
653
+ * ```
654
+ */
655
+ export declare const CoverMedia: React.ForwardRefExoticComponent<CoverMediaProps & React.RefAttributes<HTMLImageElement>>;
656
+ /**
657
+ * Props for Service MediaItems component
658
+ */
659
+ export interface MediaItemsProps {
660
+ children: React.ReactNode;
661
+ infinite?: boolean;
662
+ autoPlay?: {
663
+ direction?: 'forward' | 'backward';
664
+ intervalMs?: number;
665
+ };
666
+ }
667
+ /**
668
+ * Container for service media items gallery.
669
+ * Renders a MediaGallery.Root with the service media items.
670
+ * Supports autoPlay and infinite scroll options for carousel behavior.
671
+ *
672
+ * @component
673
+ * @example
674
+ * ```tsx
675
+ * // Basic usage with MediaGallery components
676
+ * <Service.MediaItems>
677
+ * <MediaGallery.Thumbnails>
678
+ * <MediaGallery.ThumbnailRepeater>
679
+ * {({ mediaItem, isActive }) => (
680
+ * <img
681
+ * src={mediaItem.url}
682
+ * alt={mediaItem.altText}
683
+ * className={isActive ? 'active' : ''}
684
+ * />
685
+ * )}
686
+ * </MediaGallery.ThumbnailRepeater>
687
+ * </MediaGallery.Thumbnails>
688
+ * </Service.MediaItems>
689
+ *
690
+ * // With autoPlay carousel
691
+ * <Service.MediaItems
692
+ * autoPlay={{ direction: 'forward', intervalMs: 3000 }}
693
+ * infinite
694
+ * >
695
+ * <MediaGallery.MainImage />
696
+ * <MediaGallery.Actions.Previous />
697
+ * <MediaGallery.Actions.Next />
698
+ * </Service.MediaItems>
699
+ *
700
+ * // Full gallery with thumbnails and navigation
701
+ * <Service.MediaItems infinite>
702
+ * <div className="gallery-container">
703
+ * <MediaGallery.MainImage className="main-image" />
704
+ * <div className="controls">
705
+ * <MediaGallery.Actions.Previous>Prev</MediaGallery.Actions.Previous>
706
+ * <MediaGallery.Actions.Next>Next</MediaGallery.Actions.Next>
707
+ * </div>
708
+ * <MediaGallery.Thumbnails className="thumbnails" />
709
+ * </div>
710
+ * </Service.MediaItems>
711
+ * ```
712
+ */
713
+ export declare const MediaItems: React.ForwardRefExoticComponent<MediaItemsProps & React.RefAttributes<HTMLDivElement>>;
714
+ /**
715
+ * Props for Service Raw component
716
+ */
717
+ export interface RawProps {
718
+ asChild?: boolean;
719
+ children?: AsChildChildren<{
720
+ service: services.Service;
721
+ isLoading: boolean;
722
+ error: string | null;
723
+ }>;
724
+ className?: string;
725
+ }
726
+ /**
727
+ * Provides direct access to service object. Should be used only in rare cases.
728
+ *
729
+ * @component
730
+ * @example
731
+ * ```tsx
732
+ * <Service.Raw>
733
+ * {({ service, isLoading, error }) => (
734
+ * <div>
735
+ * {isLoading && <div>Loading...</div>}
736
+ * {error && <div>Error: {error}</div>}
737
+ * {service && <pre>{JSON.stringify(service, null, 2)}</pre>}
738
+ * </div>
739
+ * )}
740
+ * </Service.Raw>
741
+ * ```
742
+ */
743
+ export declare const Raw: React.ForwardRefExoticComponent<RawProps & React.RefAttributes<HTMLElement>>;
98
744
  /**
99
745
  * Actions namespace with individual action components
100
746
  */
@@ -104,10 +750,15 @@ export declare namespace Actions {
104
750
  */
105
751
  interface SelectProps {
106
752
  asChild?: boolean;
107
- children?: React.ReactNode;
753
+ children?: React.ReactNode | ((props: {
754
+ bookable: boolean;
755
+ selected: boolean;
756
+ requiresAvailability: boolean;
757
+ onClick: () => void;
758
+ service: services.Service;
759
+ }) => React.ReactNode);
108
760
  className?: string;
109
761
  label?: string;
110
- onClicked?: (event: React.MouseEvent<HTMLButtonElement>, service: services.Service) => void;
111
762
  }
112
763
  /**
113
764
  * Select action component - replaces selection with only this service.
@@ -123,14 +774,13 @@ export declare namespace Actions {
123
774
  * <Button variant="primary">Select Service</Button>
124
775
  * </Service.Actions.Select>
125
776
  *
126
- * // With onClicked callback for navigation
127
- * <Service.Actions.Select
128
- * asChild
129
- * onClicked={(event, service) => {
130
- * router.push(`/booking/time-slots/${service._id}`);
131
- * }}
132
- * >
133
- * <Button variant="primary">Select Service</Button>
777
+ * // Using render prop pattern to access bookable state
778
+ * <Service.Actions.Select>
779
+ * {({ bookable, selected, onClick }) => (
780
+ * <button onClick={onClick} disabled={!bookable}>
781
+ * {selected ? 'Selected' : 'Select Service'}
782
+ * </button>
783
+ * )}
134
784
  * </Service.Actions.Select>
135
785
  * ```
136
786
  */
@@ -140,10 +790,15 @@ export declare namespace Actions {
140
790
  */
141
791
  interface AddProps {
142
792
  asChild?: boolean;
143
- children?: React.ReactNode;
793
+ children?: React.ReactNode | ((props: {
794
+ bookable: boolean;
795
+ selected: boolean;
796
+ requiresAvailability: boolean;
797
+ onClick: () => void;
798
+ service: services.Service;
799
+ }) => React.ReactNode);
144
800
  className?: string;
145
801
  label?: string;
146
- onClicked?: (event: React.MouseEvent<HTMLButtonElement>, service: services.Service) => void;
147
802
  }
148
803
  /**
149
804
  * Add action component - adds service to selection array.
@@ -159,13 +814,14 @@ export declare namespace Actions {
159
814
  * <Button variant="secondary">Add Service</Button>
160
815
  * </Service.Actions.Add>
161
816
  *
162
- * // With onClicked callback for tracking
163
- * <Service.Actions.Add
164
- * label="Add to Cart"
165
- * onClicked={(event, service) => {
166
- * analytics.track('service_added', { serviceId: service._id });
167
- * }}
168
- * />
817
+ * // Using render prop pattern to access bookable state
818
+ * <Service.Actions.Add>
819
+ * {({ bookable, selected, onClick }) => (
820
+ * <button onClick={onClick} disabled={!bookable}>
821
+ * {selected ? 'Added' : 'Add to Booking'}
822
+ * </button>
823
+ * )}
824
+ * </Service.Actions.Add>
169
825
  * ```
170
826
  */
171
827
  const Add: React.ForwardRefExoticComponent<AddProps & React.RefAttributes<HTMLButtonElement>>;
@@ -174,10 +830,15 @@ export declare namespace Actions {
174
830
  */
175
831
  interface RemoveProps {
176
832
  asChild?: boolean;
177
- children?: React.ReactNode;
833
+ children?: React.ReactNode | ((props: {
834
+ bookable: boolean;
835
+ selected: boolean;
836
+ requiresAvailability: boolean;
837
+ onClick: () => void;
838
+ service: services.Service;
839
+ }) => React.ReactNode);
178
840
  className?: string;
179
841
  label?: string;
180
- onClicked?: (event: React.MouseEvent<HTMLButtonElement>, service: services.Service) => void;
181
842
  }
182
843
  /**
183
844
  * Remove action component - removes service from selection array.
@@ -193,16 +854,360 @@ export declare namespace Actions {
193
854
  * <Button variant="destructive">Remove Service</Button>
194
855
  * </Service.Actions.Remove>
195
856
  *
196
- * // With onClicked callback for notifications
197
- * <Service.Actions.Remove
198
- * asChild
199
- * onClicked={(event, service) => {
200
- * toast.success(`${service.name} removed from selection`);
201
- * }}
202
- * >
203
- * <IconButton icon="trash" />
857
+ * // Using render prop pattern to access bookable state
858
+ * <Service.Actions.Remove>
859
+ * {({ bookable, selected, onClick }) => (
860
+ * <button onClick={onClick} disabled={!bookable}>
861
+ * Remove Service
862
+ * </button>
863
+ * )}
204
864
  * </Service.Actions.Remove>
205
865
  * ```
206
866
  */
207
867
  const Remove: React.ForwardRefExoticComponent<RemoveProps & React.RefAttributes<HTMLButtonElement>>;
208
868
  }
869
+ /**
870
+ * Props for Service.Policy.LatestCancellationInMinutes component
871
+ */
872
+ export interface PolicyLatestCancellationInMinutesProps {
873
+ asChild?: boolean;
874
+ children?: AsChildChildren<{
875
+ cancellationPolicyEnabled: boolean;
876
+ limitLatestCancellationEnabled: boolean;
877
+ latestCancellationInMinutes: number | undefined;
878
+ }>;
879
+ className?: string;
880
+ }
881
+ /**
882
+ * Displays latestCancellationInMinutes as a raw number.
883
+ * Headless component - contains zero formatting logic.
884
+ *
885
+ * Maps to: bookingPolicy.cancellationPolicy.latestCancellationInMinutes
886
+ *
887
+ * @component
888
+ * @example
889
+ * ```tsx
890
+ * // Default usage - displays raw number only (or null if disabled/undefined)
891
+ * <Service.Policy.LatestCancellationInMinutes className="text-foreground" />
892
+ * // Renders: <span>30</span> or null
893
+ * ```
894
+ *
895
+ * @example
896
+ * ```tsx
897
+ * // Consumer adds formatting logic via asChild
898
+ * <Service.Policy.LatestCancellationInMinutes asChild>
899
+ * {({ cancellationPolicyEnabled, limitLatestCancellationEnabled, latestCancellationInMinutes }) => (
900
+ * cancellationPolicyEnabled ? (
901
+ * <div className="policy-card">
902
+ * {limitLatestCancellationEnabled
903
+ * ? `Cancel up to ${latestCancellationInMinutes} minutes before`
904
+ * : 'Free cancellation anytime'
905
+ * }
906
+ * </div>
907
+ * ) : null
908
+ * )}
909
+ * </Service.Policy.LatestCancellationInMinutes>
910
+ * ```
911
+ */
912
+ export declare const PolicyLatestCancellationInMinutes: React.ForwardRefExoticComponent<PolicyLatestCancellationInMinutesProps & React.RefAttributes<HTMLElement>>;
913
+ /**
914
+ * Props for Service.Policy.LatestBookingInMinutes component
915
+ */
916
+ export interface PolicyLatestBookingInMinutesProps {
917
+ asChild?: boolean;
918
+ children?: AsChildChildren<{
919
+ latestBookingPolicyEnabled: boolean;
920
+ latestBookingInMinutes: number | undefined;
921
+ }>;
922
+ className?: string;
923
+ }
924
+ /**
925
+ * Displays latestBookingInMinutes as a raw number.
926
+ * Headless component - contains zero formatting logic.
927
+ *
928
+ * Maps to: bookingPolicy.limitLateBookingPolicy.latestBookingInMinutes
929
+ *
930
+ * @component
931
+ * @example
932
+ * ```tsx
933
+ * // Default usage
934
+ * <Service.Policy.LatestBookingInMinutes className="text-foreground" />
935
+ * ```
936
+ */
937
+ export declare const PolicyLatestBookingInMinutes: React.ForwardRefExoticComponent<PolicyLatestBookingInMinutesProps & React.RefAttributes<HTMLElement>>;
938
+ /**
939
+ * Props for Service.Policy.EarliestBookingInMinutes component
940
+ */
941
+ export interface PolicyEarliestBookingInMinutesProps {
942
+ asChild?: boolean;
943
+ children?: AsChildChildren<{
944
+ earliestBookingPolicyEnabled: boolean;
945
+ earliestBookingInMinutes: number | undefined;
946
+ }>;
947
+ className?: string;
948
+ }
949
+ /**
950
+ * Displays earliestBookingInMinutes as a raw number.
951
+ * Headless component - contains zero formatting logic.
952
+ *
953
+ * Maps to: bookingPolicy.limitEarlyBookingPolicy.earliestBookingInMinutes
954
+ *
955
+ * @component
956
+ * @example
957
+ * ```tsx
958
+ * // Default usage
959
+ * <Service.Policy.EarliestBookingInMinutes className="text-foreground" />
960
+ * ```
961
+ */
962
+ export declare const PolicyEarliestBookingInMinutes: React.ForwardRefExoticComponent<PolicyEarliestBookingInMinutesProps & React.RefAttributes<HTMLElement>>;
963
+ /**
964
+ * Props for Service.Policy.LatestRescheduleInMinutes component
965
+ */
966
+ export interface PolicyLatestRescheduleInMinutesProps {
967
+ asChild?: boolean;
968
+ children?: AsChildChildren<{
969
+ reschedulePolicyEnabled: boolean;
970
+ limitLatestRescheduleEnabled: boolean;
971
+ latestRescheduleInMinutes: number | undefined;
972
+ }>;
973
+ className?: string;
974
+ }
975
+ /**
976
+ * Displays latestRescheduleInMinutes as a raw number.
977
+ * Headless component - contains zero formatting logic.
978
+ *
979
+ * Maps to: bookingPolicy.reschedulePolicy.latestRescheduleInMinutes
980
+ *
981
+ * @component
982
+ * @example
983
+ * ```tsx
984
+ * // Default usage
985
+ * <Service.Policy.LatestRescheduleInMinutes className="text-foreground" />
986
+ * ```
987
+ */
988
+ export declare const PolicyLatestRescheduleInMinutes: React.ForwardRefExoticComponent<PolicyLatestRescheduleInMinutesProps & React.RefAttributes<HTMLElement>>;
989
+ /**
990
+ * Props for Service.Policy.WaitlistCapacity component
991
+ */
992
+ export interface PolicyWaitlistCapacityProps {
993
+ asChild?: boolean;
994
+ children?: AsChildChildren<{
995
+ waitlistPolicyEnabled: boolean;
996
+ waitlistCapacity: number | undefined;
997
+ }>;
998
+ className?: string;
999
+ }
1000
+ /**
1001
+ * Displays waitlist capacity as a raw number.
1002
+ * Headless component - contains zero formatting logic.
1003
+ *
1004
+ * Maps to: bookingPolicy.waitlistPolicy.capacity
1005
+ *
1006
+ * @component
1007
+ * @example
1008
+ * ```tsx
1009
+ * // Default usage
1010
+ * <Service.Policy.WaitlistCapacity className="text-foreground" />
1011
+ * ```
1012
+ */
1013
+ export declare const PolicyWaitlistCapacity: React.ForwardRefExoticComponent<PolicyWaitlistCapacityProps & React.RefAttributes<HTMLElement>>;
1014
+ /**
1015
+ * Props for Service.Policy.BookAfterStartEnabled component
1016
+ */
1017
+ export interface PolicyBookAfterStartEnabledProps {
1018
+ asChild?: boolean;
1019
+ children?: AsChildChildren<{
1020
+ bookAfterStartEnabled: boolean;
1021
+ }>;
1022
+ className?: string;
1023
+ }
1024
+ /**
1025
+ * Displays whether booking after start is enabled.
1026
+ * Headless component - contains zero formatting logic.
1027
+ *
1028
+ * Maps to: bookingPolicy.bookAfterStartPolicy.enabled
1029
+ *
1030
+ * @component
1031
+ * @example
1032
+ * ```tsx
1033
+ * // Default usage
1034
+ * <Service.Policy.BookAfterStartEnabled className="text-foreground" />
1035
+ * ```
1036
+ */
1037
+ export declare const PolicyBookAfterStartEnabled: React.ForwardRefExoticComponent<PolicyBookAfterStartEnabledProps & React.RefAttributes<HTMLElement>>;
1038
+ /**
1039
+ * Props for Service.Policy.MaxParticipantsPerBooking component
1040
+ */
1041
+ export interface PolicyMaxParticipantsPerBookingProps {
1042
+ asChild?: boolean;
1043
+ children?: AsChildChildren<{
1044
+ maxParticipantsPerBooking: number | undefined;
1045
+ }>;
1046
+ className?: string;
1047
+ }
1048
+ /**
1049
+ * Displays maximum participants per booking as a raw number.
1050
+ * Headless component - contains zero formatting logic.
1051
+ *
1052
+ * Maps to: bookingPolicy.participantsPolicy.maxParticipantsPerBooking
1053
+ *
1054
+ * @component
1055
+ * @example
1056
+ * ```tsx
1057
+ * // Default usage
1058
+ * <Service.Policy.MaxParticipantsPerBooking className="text-foreground" />
1059
+ * ```
1060
+ */
1061
+ export declare const PolicyMaxParticipantsPerBooking: React.ForwardRefExoticComponent<PolicyMaxParticipantsPerBookingProps & React.RefAttributes<HTMLElement>>;
1062
+ /**
1063
+ * Policy namespace containing all policy sub-components
1064
+ */
1065
+ export declare namespace Policy {
1066
+ const LatestCancellationInMinutes: React.ForwardRefExoticComponent<PolicyLatestCancellationInMinutesProps & React.RefAttributes<HTMLElement>>;
1067
+ const LatestBookingInMinutes: React.ForwardRefExoticComponent<PolicyLatestBookingInMinutesProps & React.RefAttributes<HTMLElement>>;
1068
+ const EarliestBookingInMinutes: React.ForwardRefExoticComponent<PolicyEarliestBookingInMinutesProps & React.RefAttributes<HTMLElement>>;
1069
+ const LatestRescheduleInMinutes: React.ForwardRefExoticComponent<PolicyLatestRescheduleInMinutesProps & React.RefAttributes<HTMLElement>>;
1070
+ const WaitlistCapacity: React.ForwardRefExoticComponent<PolicyWaitlistCapacityProps & React.RefAttributes<HTMLElement>>;
1071
+ const BookAfterStartEnabled: React.ForwardRefExoticComponent<PolicyBookAfterStartEnabledProps & React.RefAttributes<HTMLElement>>;
1072
+ const MaxParticipantsPerBooking: React.ForwardRefExoticComponent<PolicyMaxParticipantsPerBookingProps & React.RefAttributes<HTMLElement>>;
1073
+ }
1074
+ /**
1075
+ * Props for Service.Schedule.FirstSessionStart component
1076
+ */
1077
+ export interface ScheduleFirstSessionStartProps {
1078
+ asChild?: boolean;
1079
+ children?: AsChildChildren<{
1080
+ firstSessionStart: Date | undefined;
1081
+ }>;
1082
+ className?: string;
1083
+ }
1084
+ /**
1085
+ * Displays the first session start date as a raw Date value.
1086
+ * Headless component - contains zero formatting logic.
1087
+ *
1088
+ * @component
1089
+ * @example
1090
+ * ```tsx
1091
+ * // Default usage - displays ISO string
1092
+ * <Service.Schedule.FirstSessionStart className="text-foreground" />
1093
+ *
1094
+ * // With custom formatting
1095
+ * <Service.Schedule.FirstSessionStart asChild>
1096
+ * {({ firstSessionStart }) => (
1097
+ * firstSessionStart ? (
1098
+ * <span>Starts: {formatDate(firstSessionStart)}</span>
1099
+ * ) : null
1100
+ * )}
1101
+ * </Service.Schedule.FirstSessionStart>
1102
+ * ```
1103
+ */
1104
+ export declare const ScheduleFirstSessionStart: React.ForwardRefExoticComponent<ScheduleFirstSessionStartProps & React.RefAttributes<HTMLElement>>;
1105
+ /**
1106
+ * Props for Service.Schedule.LastSessionEnd component
1107
+ */
1108
+ export interface ScheduleLastSessionEndProps {
1109
+ asChild?: boolean;
1110
+ children?: AsChildChildren<{
1111
+ lastSessionEnd: Date | undefined;
1112
+ }>;
1113
+ className?: string;
1114
+ }
1115
+ /**
1116
+ * Displays the last session end date as a raw Date value.
1117
+ * Headless component - contains zero formatting logic.
1118
+ *
1119
+ * @component
1120
+ * @example
1121
+ * ```tsx
1122
+ * // Default usage - displays ISO string
1123
+ * <Service.Schedule.LastSessionEnd className="text-foreground" />
1124
+ *
1125
+ * // With custom formatting
1126
+ * <Service.Schedule.LastSessionEnd asChild>
1127
+ * {({ lastSessionEnd }) => (
1128
+ * lastSessionEnd ? (
1129
+ * <span>Ends: {formatDate(lastSessionEnd)}</span>
1130
+ * ) : null
1131
+ * )}
1132
+ * </Service.Schedule.LastSessionEnd>
1133
+ * ```
1134
+ */
1135
+ export declare const ScheduleLastSessionEnd: React.ForwardRefExoticComponent<ScheduleLastSessionEndProps & React.RefAttributes<HTMLElement>>;
1136
+ /**
1137
+ * Props for Service.Schedule.SessionDuration component
1138
+ */
1139
+ export interface ScheduleSessionDurationProps {
1140
+ asChild?: boolean;
1141
+ children?: AsChildChildren<{
1142
+ sessionDuration: number | undefined;
1143
+ }>;
1144
+ className?: string;
1145
+ }
1146
+ /**
1147
+ * Displays the session duration in minutes as a raw number.
1148
+ * Headless component - contains zero formatting logic.
1149
+ *
1150
+ * @component
1151
+ * @example
1152
+ * ```tsx
1153
+ * // Default usage - displays raw minutes
1154
+ * <Service.Schedule.SessionDuration className="text-foreground" />
1155
+ *
1156
+ * // With custom formatting
1157
+ * <Service.Schedule.SessionDuration asChild>
1158
+ * {({ sessionDuration }) => (
1159
+ * sessionDuration ? (
1160
+ * <span>{formatDuration(sessionDuration)}</span>
1161
+ * ) : null
1162
+ * )}
1163
+ * </Service.Schedule.SessionDuration>
1164
+ * ```
1165
+ */
1166
+ export declare const ScheduleSessionDuration: React.ForwardRefExoticComponent<ScheduleSessionDurationProps & React.RefAttributes<HTMLElement>>;
1167
+ /**
1168
+ * Schedule namespace containing all schedule sub-components
1169
+ */
1170
+ export declare namespace Schedule {
1171
+ const FirstSessionStart: React.ForwardRefExoticComponent<ScheduleFirstSessionStartProps & React.RefAttributes<HTMLElement>>;
1172
+ const LastSessionEnd: React.ForwardRefExoticComponent<ScheduleLastSessionEndProps & React.RefAttributes<HTMLElement>>;
1173
+ const SessionDuration: React.ForwardRefExoticComponent<ScheduleSessionDurationProps & React.RefAttributes<HTMLElement>>;
1174
+ }
1175
+ /**
1176
+ * Props for Service DefaultCapacity component
1177
+ */
1178
+ export interface DefaultCapacityProps {
1179
+ asChild?: boolean;
1180
+ children?: AsChildChildren<{
1181
+ defaultCapacity: number;
1182
+ isClassOrCourse: boolean;
1183
+ }>;
1184
+ className?: string;
1185
+ }
1186
+ /**
1187
+ * Displays the service default capacity with customizable rendering.
1188
+ * Only renders for CLASS or COURSE service types.
1189
+ *
1190
+ * @component
1191
+ * @example
1192
+ * ```tsx
1193
+ * // Default usage
1194
+ * <Service.DefaultCapacity className="text-sm" />
1195
+ *
1196
+ * // asChild with custom component
1197
+ * <Service.DefaultCapacity asChild>
1198
+ * {({ defaultCapacity, isClassOrCourse }) => isClassOrCourse ? (
1199
+ * <span>Max participants: {defaultCapacity}</span>
1200
+ * ) : null}
1201
+ * </Service.DefaultCapacity>
1202
+ * ```
1203
+ */
1204
+ export declare const DefaultCapacity: React.ForwardRefExoticComponent<DefaultCapacityProps & React.RefAttributes<HTMLElement>>;
1205
+ export declare const Locations: typeof LocationsBase & {
1206
+ List: typeof LocationsList;
1207
+ LocationRepeater: typeof LocationRepeater;
1208
+ };
1209
+ export declare const StaffMembers: typeof StaffMembersBase & {
1210
+ List: typeof StaffMembersList;
1211
+ StaffMemberRepeater: typeof StaffMemberRepeater;
1212
+ };
1213
+ export {};