@forgebuild/hotal-ui 0.23.156 → 0.23.202

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 (47) hide show
  1. package/dist/components/ai-chat-widget.js +75 -0
  2. package/dist/components/availability-calendar.js +7 -0
  3. package/dist/components/booking-card.js +30 -0
  4. package/dist/components/booking-checkout.js +40 -0
  5. package/dist/components/booking-confirmed.js +1 -0
  6. package/dist/components/booking-flow.js +26 -0
  7. package/dist/components/booking-progress-bar.js +1 -0
  8. package/dist/components/booking-summary.js +14 -0
  9. package/dist/components/chunks/ably-5cVT4knS.js +9 -0
  10. package/dist/components/chunks/calendar-B8eNjUm2.js +1 -0
  11. package/dist/components/chunks/client-BDk8LqGN.js +3 -0
  12. package/dist/components/chunks/floating-ui.dom-DY3dGoEq.js +1 -0
  13. package/dist/components/chunks/gsap-DWxn8li7.js +1 -0
  14. package/dist/components/chunks/lib-Bd4dedte.js +1 -0
  15. package/dist/components/chunks/min-DdO-yBwh.js +17 -0
  16. package/dist/components/chunks/preload-helper-Czpn1I53.js +1 -0
  17. package/dist/components/chunks/rolldown-runtime-CbXtAM7H.js +1 -0
  18. package/dist/components/confirmation-card.js +3 -0
  19. package/dist/components/dining-teaser.js +19 -0
  20. package/dist/components/event-contact-form.js +33 -0
  21. package/dist/components/event-inquiries-feed.js +29 -0
  22. package/dist/components/extras-catalogue.js +25 -0
  23. package/dist/components/floor-plan-hero.js +2 -0
  24. package/dist/components/google-reviews.js +31 -0
  25. package/dist/components/instagram-feed.js +16 -0
  26. package/dist/components/island-map.js +1 -0
  27. package/dist/components/live-dining-orders-feed.js +37 -0
  28. package/dist/components/live-golf-bookings-feed.js +18 -0
  29. package/dist/components/live-reservations-feed.js +18 -0
  30. package/dist/components/live-room-bookings-feed.js +18 -0
  31. package/dist/components/live-shop-orders-feed.js +37 -0
  32. package/dist/components/live-spa-bookings-feed.js +55 -0
  33. package/dist/components/menu-section.js +90 -0
  34. package/dist/components/proshop-catalogue.js +20 -0
  35. package/dist/components/reservation-bar.js +5 -0
  36. package/dist/components/reservation-cancel.js +4 -0
  37. package/dist/components/restaurant-order-form.js +9 -0
  38. package/dist/components/room-grid.js +26 -0
  39. package/dist/components/searchable-select.js +20 -0
  40. package/dist/components/service-booking-bar.js +14 -0
  41. package/dist/components/spa-booking-widget.js +198 -0
  42. package/dist/components/stay-search.js +31 -0
  43. package/dist/components/tripadvisor-reviews.js +38 -0
  44. package/dist/components/venue-carousel.js +18 -0
  45. package/dist/hotal-ui.js +5004 -4714
  46. package/dist/index.d.ts +35 -3
  47. package/package.json +6 -2
package/dist/index.d.ts CHANGED
@@ -193,7 +193,15 @@ export interface EventInquiry {
193
193
  email: string;
194
194
  phone?: string | null;
195
195
  restaurant_id?: string | null;
196
- event_date: string;
196
+ /** Null on enquiries that aren't about a specific date -- the feed drops
197
+ * the date row rather than printing one. */
198
+ event_date?: string | null;
199
+ /** When the guest last wrote -- null until they reply to the opening
200
+ * message. The card's "Received" prefers this over created_at. */
201
+ last_inbound_at?: string | null;
202
+ /** Set when an AI-drafted reply is waiting for approval -- the card shows
203
+ * an "AI draft" badge, and reads as waiting rather than answered. */
204
+ pending_ai_draft_id?: string | null;
197
205
  guests?: number | null;
198
206
  event_type?: string | null;
199
207
  format?: string | null;
@@ -384,7 +392,12 @@ export interface SpaTreatment {
384
392
  id: string;
385
393
  name: string;
386
394
  durationMins: number;
387
- price: number;
395
+ /** null = only bookable at the regulars' rate (memberPrice). */
396
+ price: number | null;
397
+ /** The regulars' rate, charged on dates the widget's memberUntil covers. */
398
+ memberPrice?: number | null;
399
+ /** The regulars' booking length, when it differs from durationMins. */
400
+ memberDurationMins?: number | null;
388
401
  }
389
402
 
390
403
  export interface SpaTherapist {
@@ -446,6 +459,9 @@ export interface SpaBookingWidgetStrings {
446
459
  notWiredError: string;
447
460
  genericSubmitError: string;
448
461
  successMessage: string;
462
+ memberRateLabel: string;
463
+ membersOnlyLabel: string;
464
+ membersOnlyHint: string;
449
465
  }
450
466
 
451
467
  export interface SpaBookingWidgetElement extends HTMLElement {
@@ -490,6 +506,12 @@ export interface SpaBookingWidgetElement extends HTMLElement {
490
506
  initialName?: string;
491
507
  initialEmail?: string;
492
508
  initialPhone?: string;
509
+ /** Last appointment date (YYYY-MM-DD) the visitor gets the regulars' rate
510
+ * (memberPrice) for, set by a host that has identified the visitor.
511
+ * Unset = not a regular: regulars-only treatments are disabled. Display
512
+ * only -- the backend decides the price charged. Changing it refetches
513
+ * the open month. */
514
+ memberUntil?: string;
493
515
  strings?: Partial<SpaBookingWidgetStrings>;
494
516
  fetchTreatments?: () => Promise<SpaTreatment[]>;
495
517
  /** Optional therapist list for the datetime step's "Therapist" filter.
@@ -665,7 +687,6 @@ export interface LiveSpaBooking {
665
687
  duration_minutes: number;
666
688
  price?: string | number | null;
667
689
  status: string;
668
- payment_status?: string | null;
669
690
  created_at: string;
670
691
  }
671
692
 
@@ -706,6 +727,9 @@ export interface LiveSpaBookingsFeedElement extends HTMLElement {
706
727
  * payload is SpaBookingPayload plus appointmentId, which this
707
728
  * component injects itself (the booking being edited's id). */
708
729
  submitBooking?: (payload: SpaBookingPayload & { appointmentId: string }) => Promise<SpaBookingResult>;
730
+ /** Handed to the sheet's <spa-booking-widget> as its `strings`, e.g.
731
+ * { therapistFilterLabel: 'Expert', anyTherapistLabel: 'Any expert' }. */
732
+ widgetStrings?: Partial<SpaBookingWidgetStrings>;
709
733
  }
710
734
 
711
735
  export interface GolfShopItem {
@@ -1467,6 +1491,14 @@ export interface AiChatWidgetElement extends HTMLElement {
1467
1491
  greeting?: string;
1468
1492
  /** Shown in the error message so a visitor can call instead. Omit to leave it out. */
1469
1493
  phone?: string;
1494
+ /** Sweeps a light band across the launcher on hover. Default false. */
1495
+ ctaShimmer?: boolean;
1496
+ /** 'icon' shows a speech bubble in a circle instead of the wording. */
1497
+ launcher?: 'label' | 'icon';
1498
+ /** Whether the panel is open. Set it to open the chat from your own CTA --
1499
+ * including a static launcher you render yourself, so this element can stay
1500
+ * unloaded until a visitor asks for it. Reflects their own open/close too. */
1501
+ open?: boolean;
1470
1502
  }
1471
1503
 
1472
1504
  /** One purchasable combination within a variant group -- a real, distinct
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forgebuild/hotal-ui",
3
- "version": "0.23.156",
3
+ "version": "0.23.202",
4
4
  "description": "Reusable Svelte UI components for booking and reservation experiences.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -14,6 +14,10 @@
14
14
  ".": {
15
15
  "types": "./dist/index.d.ts",
16
16
  "import": "./dist/hotal-ui.js"
17
+ },
18
+ "./*": {
19
+ "types": "./dist/index.d.ts",
20
+ "import": "./dist/components/*.js"
17
21
  }
18
22
  },
19
23
  "publishConfig": {
@@ -40,7 +44,7 @@
40
44
  },
41
45
  "scripts": {
42
46
  "dev": "vite",
43
- "build": "vite build && node scripts/copy-types.mjs",
47
+ "build": "vite build && vite build --config vite.components.config.ts && node scripts/copy-types.mjs",
44
48
  "prepublishOnly": "npm run build",
45
49
  "preview": "vite preview",
46
50
  "check": "svelte-check --tsconfig ./tsconfig.app.json && tsc -p tsconfig.node.json"