@behio/storefront-sdk 2.28.0 → 2.30.0

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.
package/dist/react.d.mts CHANGED
@@ -360,9 +360,16 @@ interface NewsletterSubscribeInput {
360
360
  }
361
361
  interface NewsletterSubscribeResult {
362
362
  success: boolean;
363
+ /** Confirm the email before the subscription becomes active. */
364
+ confirmationRequired?: boolean;
363
365
  /** True when this email was already an active subscriber. */
364
366
  alreadySubscribed: boolean;
365
367
  }
368
+ interface NewsletterConfirmResult {
369
+ success: boolean;
370
+ /** The actual code is delivered by email, never returned to the browser. */
371
+ welcomeDiscountIssued: boolean;
372
+ }
366
373
  interface NewsletterUnsubscribeResult {
367
374
  success: boolean;
368
375
  }
@@ -2546,7 +2553,35 @@ interface StorefrontFaqQuery {
2546
2553
  locale?: string;
2547
2554
  }
2548
2555
  /** Public definition of a form (`GET /forms/{slug}`). */
2556
+ interface StorefrontFormPlacement {
2557
+ key: string;
2558
+ mode: "inline" | "popup";
2559
+ enabled: boolean;
2560
+ delaySeconds: number;
2561
+ dismissDays: number;
2562
+ devices: "all" | "mobile" | "desktop";
2563
+ /** Exact path or prefix ending in *. No regex. */
2564
+ includePaths: string[];
2565
+ excludePaths: string[];
2566
+ }
2567
+ interface StorefrontFormPresentation {
2568
+ purpose: "general" | "newsletter";
2569
+ content: {
2570
+ eyebrow: string;
2571
+ heading: string;
2572
+ body: string;
2573
+ imageUrl: string;
2574
+ imageAlt: string;
2575
+ dismissLabel: string;
2576
+ backgroundColor: string;
2577
+ accentColor: string;
2578
+ };
2579
+ placements: StorefrontFormPlacement[];
2580
+ }
2549
2581
  interface StorefrontForm {
2582
+ /** Published content version. Requires the managed Forms API. */
2583
+ revision: number;
2584
+ presentation: StorefrontFormPresentation;
2550
2585
  slug: string;
2551
2586
  name: string;
2552
2587
  description: string | null;
@@ -2554,6 +2589,8 @@ interface StorefrontForm {
2554
2589
  settings: StorefrontFormSettings;
2555
2590
  }
2556
2591
  interface StorefrontFormSubmitInput {
2592
+ revision?: number;
2593
+ placement?: string;
2557
2594
  /** `{fieldKey: value}`; unknown keys are dropped server-side. */
2558
2595
  data: Record<string, unknown>;
2559
2596
  locale?: string;
@@ -2581,6 +2618,8 @@ interface StorefrontFormFile {
2581
2618
  type: string;
2582
2619
  }
2583
2620
  interface StorefrontFormSubmitResult {
2621
+ confirmationRequired?: boolean;
2622
+ alreadySubscribed?: boolean;
2584
2623
  ok: boolean;
2585
2624
  /** Id of the stored submission (null when the form does not store responses). */
2586
2625
  id: string | null;
@@ -4453,6 +4492,10 @@ declare class BookingsModule {
4453
4492
  declare class FormsModule {
4454
4493
  private client;
4455
4494
  constructor(client: BehioStorefront);
4495
+ /** Only active, published placements. Internal delivery/CRM settings never leave the server. */
4496
+ placements(): Promise<SdkResult<{
4497
+ items: StorefrontForm[];
4498
+ }>>;
4456
4499
  /** Public definition of one form (fields + settings). 404 for an unknown or inactive slug. */
4457
4500
  get(slug: string): Promise<SdkResult<StorefrontForm>>;
4458
4501
  /**
@@ -4661,6 +4704,7 @@ declare class NewsletterModule {
4661
4704
  private client;
4662
4705
  constructor(client: BehioStorefront);
4663
4706
  subscribe(input: NewsletterSubscribeInput): Promise<SdkResult<NewsletterSubscribeResult>>;
4707
+ confirm(token: string): Promise<SdkResult<NewsletterConfirmResult>>;
4664
4708
  unsubscribe(email: string): Promise<SdkResult<NewsletterUnsubscribeResult>>;
4665
4709
  }
4666
4710
 
@@ -5377,6 +5421,8 @@ declare function useAnalyticsEvents(): {
5377
5421
  declare function useNewsletterSubscribe(): _tanstack_react_query.UseMutationResult<NewsletterSubscribeResult, Error, NewsletterSubscribeInput, unknown>;
5378
5422
  /** Unsubscribe an email from the shop newsletter (idempotent). */
5379
5423
  declare function useNewsletterUnsubscribe(): _tanstack_react_query.UseMutationResult<NewsletterUnsubscribeResult, Error, string, unknown>;
5424
+ /** Explicit confirmation only. Never call on page load or link prefetch. */
5425
+ declare function useNewsletterConfirm(): _tanstack_react_query.UseMutationResult<NewsletterConfirmResult, Error, string, unknown>;
5380
5426
 
5381
5427
  interface UseOrdersOptions {
5382
5428
  page?: number;
@@ -5544,6 +5590,15 @@ declare function useSiteFormSubmit(slug: string): {
5544
5590
  error: SdkError | null;
5545
5591
  reset: () => void;
5546
5592
  };
5593
+ /** SSR initial data avoids fetching first-render configuration in an effect. */
5594
+ declare function useFormPlacements(options?: {
5595
+ initialData?: {
5596
+ items: StorefrontForm[];
5597
+ };
5598
+ enabled?: boolean;
5599
+ }): _tanstack_react_query.UseQueryResult<NoInfer<{
5600
+ items: StorefrontForm[];
5601
+ }>, Error>;
5547
5602
 
5548
5603
  interface UseBookingsOptions {
5549
5604
  enabled?: boolean;
@@ -6326,7 +6381,7 @@ declare function formatPrice(amount: number, currency: string, locale?: string,
6326
6381
  * Consent stays the script layer's job: this helper never loads anything, it
6327
6382
  * only talks to runtimes that already exist on the page.
6328
6383
  */
6329
- type EcommerceEventName = "view_item" | "view_item_list" | "select_item" | "add_to_cart" | "remove_from_cart" | "view_cart" | "add_to_wishlist" | "view_promotion" | "select_promotion" | "begin_checkout" | "add_payment_info" | "add_shipping_info" | "search" | "generate_lead" | "purchase" | "variant_selected" | "newsletter_signup";
6384
+ type EcommerceEventName = "view_item" | "view_item_list" | "select_item" | "add_to_cart" | "remove_from_cart" | "view_cart" | "add_to_wishlist" | "view_promotion" | "select_promotion" | "begin_checkout" | "add_payment_info" | "add_shipping_info" | "search" | "generate_lead" | "purchase" | "variant_selected" | "newsletter_signup" | "newsletter_request" | "form_popup_view";
6330
6385
  type EcommerceItem = {
6331
6386
  item_id: string;
6332
6387
  item_name: string;
@@ -6414,4 +6469,19 @@ declare function revokeAnalyticsConsent(client: BehioStorefront): Promise<SdkRes
6414
6469
  success: boolean;
6415
6470
  }>>;
6416
6471
 
6417
- export { type ActivePromotion, type AddToCartInput, type AnalyticsEventInput, type AuthTokens, BehioAnalyticsTracker, BehioApiError, BehioProvider, type BehioProviderProps, type Blog, type BlogPostDetail, type BlogPostListItem, type BlogPostsPage, type BlogPostsQuery, type BlogSettings, type BlogTag, type Booking, type BookingCategory, type BookingConfig, type BookingCreateInput, type BookingCreated, type BookingLocale, type BookingLocation, type BookingManageSlotsQuery, type BookingService, type BookingSlot, type BookingSlots, type BookingSlotsQuery, type BookingStaff, type BookingStatus, type Bundle, type BundleItem, type Cart, type CartDiscount, type CartItem, type Category, type CategoryDetail, type CheckoutAddress, type CheckoutInput, type CheckoutPaymentMethod, type CookieConsent, type CookieConsentInput, type CrossSellItem, CurrencySwitcher, type CurrencySwitcherProps, type CurrencySwitcherRenderProps, type CustomerAddress, type CustomerProfile, type EcommerceEventName, type EcommerceItem, type EcommercePayload, type Facet, type FacetRange, type FacetValue, type FacetsResponse, type FilterField, type FulfillmentStatus, type GiftCardBalance, type LoginInput, type MessageResponse, type OrderDetail, type OrderItem, type OrderListItem, type OrderStatus, type Page, type PageAttachment, type PageDetail, type PaginatedResponse, type PaymentInstrument, type PaymentStatus, type PaymentSwift, type PersonalOffer, type ProductDetail, type ProductLabel, type ProductListItem, type ProductParameter, type ProductParameterGroup, type ProductParametersResponse, type ProductPrice, type ProductReview, type ProductReviewsResponse, type ProductVariant, type ProductsQuery, type QuoteRequest, type RegisterInput, type ReturnRequest, RichText, type RichTextProps, type ShopInfo, type ShopSeo, type SiteFormField, type SiteFormFieldOption, type SiteFormFieldType, type StorageAdapter, type StorefrontForm, type StorefrontFormFieldError, type StorefrontFormFieldErrorCode, type StorefrontFormSettings, type StorefrontFormSubmitInput, type StorefrontFormSubmitResult, StorefrontScripts, type StorefrontScriptsProps, type SubmitQuoteInput, type SubmitReturnInput, type SubmitReviewInput, type SubmitWithdrawalInput, type UseAddressAutocompleteOptions, type UseAddressAutocompleteReturn, type UseAddressesOptions, type UseBlogPostOptions, type UseBlogPostsOptions, type UseBlogsOptions, type UseBookingsOptions, type UseCartCountOptions, type UseCartOptions, type UseCategoriesOptions, type UseCategoryOptions, type UseCertificateVerificationOptions, type UseCollectionOptions, type UseCourseCertificatesOptions, type UseCourseOptions, type UseCoursesOptions, type UseCurrencyResult, type UseCustomerOptions, type UseFacetsOptions, type UseFaqOptions, type UseFeaturedOptions, type UseFiltersOptions, type UseLabelsOptions, type UseLessonCommentsOptions, type UseLessonNoteOptions, type UseLessonQuizOptions, type UseLessonTutorOptions, type UseLoyaltyOptions, type UseMenuOptions, type UseOrderOptions, type UseOrdersOptions, type UsePageOptions, type UsePagesOptions, type UsePaymentMethodsOptions, type UsePersonalOffersOptions, type UseProductOptions, type UseProductParametersOptions, type UseProductsOptions, type UseSearchOptions, type UseShippingMethodsOptions, type UseShippingQuoteOptions, type UseShopInfoOptions, type UseShopScriptsOptions, type UseShopSeoOptions, type UseSiteFormOptions, type UseSubscriptionsOptions, type UseVisitorMessagesOptions, type VisitorMessage, type WishlistItem, type WithdrawalAcknowledgement, type WithdrawalWindow, cookieStorage, createMemoryStorage, detectStorage, formatPrice, generateVisitorId, getStoredVisitorId, grantAnalyticsConsent, localStorageAdapter, memoryStorage, revokeAnalyticsConsent, trackEcommerceEvent, useAddressAutocomplete, useAddresses, useAnalyticsEvents, useAuth, useBehio, useBehioClient, useBlogPost, useBlogPosts, useBlogs, useBookingConfig, useBookingSlots, useBundle, useBundles, useCancelBooking, useCart, useCartCount, useCategories, useCategory, useCertificateVerification, useCheckout, useCheckoutPreview, useCollection, useCollectionItem, useCookieConsent, useCourse, useCourseCertificates, useCourses, useCreateBooking, useCrossSell, useCurrency, useCustomer, useFacets, useFaqGroup, useFaqGroups, useFeatured, useFilters, useGiftCardBalance, useIsInWishlist, useLabels, useLessonComments, useLessonNote, useLessonQuiz, useLessonTutor, useLookupReturnableOrder, useLoyalty, useManagedBooking, useManagedBookingSlots, useMenu, useNewsletterSubscribe, useNewsletterUnsubscribe, useNotifyWhenAvailable, useOrder, useOrderAccess, useOrders, usePage, usePages, usePaymentMethods, usePersonalOffers, usePickupPoints, useProduct, useProductGroup, useProductParameters, useProductPromotions, useProductReviews, useProducts, useQuoteStatus, useRescheduleBooking, useReturnStatus, useSearch, useShippingMethods, useShippingQuote, useShopInfo, useShopScripts, useShopSeo, useSiteForm, useSiteFormSubmit, useSubmitQuote, useSubmitReturn, useSubmitReview, useSubmitWithdrawal, useSubscriptions, useVisitorMessages, useWishlist };
6472
+ type FormPopupOffer = {
6473
+ form: StorefrontForm;
6474
+ placement: StorefrontFormPlacement;
6475
+ };
6476
+ /** One host in the shared shell. Preview never mounts it; no subscription occurs on a timer. */
6477
+ declare function useFormPopup({ forms, locales, pathname }: {
6478
+ forms: StorefrontForm[];
6479
+ locales: string[];
6480
+ pathname: string;
6481
+ }): {
6482
+ active: FormPopupOffer | null;
6483
+ dialog: react.RefObject<HTMLDialogElement | null>;
6484
+ dismiss: () => void;
6485
+ };
6486
+
6487
+ export { type ActivePromotion, type AddToCartInput, type AnalyticsEventInput, type AuthTokens, BehioAnalyticsTracker, BehioApiError, BehioProvider, type BehioProviderProps, type Blog, type BlogPostDetail, type BlogPostListItem, type BlogPostsPage, type BlogPostsQuery, type BlogSettings, type BlogTag, type Booking, type BookingCategory, type BookingConfig, type BookingCreateInput, type BookingCreated, type BookingLocale, type BookingLocation, type BookingManageSlotsQuery, type BookingService, type BookingSlot, type BookingSlots, type BookingSlotsQuery, type BookingStaff, type BookingStatus, type Bundle, type BundleItem, type Cart, type CartDiscount, type CartItem, type Category, type CategoryDetail, type CheckoutAddress, type CheckoutInput, type CheckoutPaymentMethod, type CookieConsent, type CookieConsentInput, type CrossSellItem, CurrencySwitcher, type CurrencySwitcherProps, type CurrencySwitcherRenderProps, type CustomerAddress, type CustomerProfile, type EcommerceEventName, type EcommerceItem, type EcommercePayload, type Facet, type FacetRange, type FacetValue, type FacetsResponse, type FilterField, type FormPopupOffer, type FulfillmentStatus, type GiftCardBalance, type LoginInput, type MessageResponse, type OrderDetail, type OrderItem, type OrderListItem, type OrderStatus, type Page, type PageAttachment, type PageDetail, type PaginatedResponse, type PaymentInstrument, type PaymentStatus, type PaymentSwift, type PersonalOffer, type ProductDetail, type ProductLabel, type ProductListItem, type ProductParameter, type ProductParameterGroup, type ProductParametersResponse, type ProductPrice, type ProductReview, type ProductReviewsResponse, type ProductVariant, type ProductsQuery, type QuoteRequest, type RegisterInput, type ReturnRequest, RichText, type RichTextProps, type ShopInfo, type ShopSeo, type SiteFormField, type SiteFormFieldOption, type SiteFormFieldType, type StorageAdapter, type StorefrontForm, type StorefrontFormFieldError, type StorefrontFormFieldErrorCode, type StorefrontFormSettings, type StorefrontFormSubmitInput, type StorefrontFormSubmitResult, StorefrontScripts, type StorefrontScriptsProps, type SubmitQuoteInput, type SubmitReturnInput, type SubmitReviewInput, type SubmitWithdrawalInput, type UseAddressAutocompleteOptions, type UseAddressAutocompleteReturn, type UseAddressesOptions, type UseBlogPostOptions, type UseBlogPostsOptions, type UseBlogsOptions, type UseBookingsOptions, type UseCartCountOptions, type UseCartOptions, type UseCategoriesOptions, type UseCategoryOptions, type UseCertificateVerificationOptions, type UseCollectionOptions, type UseCourseCertificatesOptions, type UseCourseOptions, type UseCoursesOptions, type UseCurrencyResult, type UseCustomerOptions, type UseFacetsOptions, type UseFaqOptions, type UseFeaturedOptions, type UseFiltersOptions, type UseLabelsOptions, type UseLessonCommentsOptions, type UseLessonNoteOptions, type UseLessonQuizOptions, type UseLessonTutorOptions, type UseLoyaltyOptions, type UseMenuOptions, type UseOrderOptions, type UseOrdersOptions, type UsePageOptions, type UsePagesOptions, type UsePaymentMethodsOptions, type UsePersonalOffersOptions, type UseProductOptions, type UseProductParametersOptions, type UseProductsOptions, type UseSearchOptions, type UseShippingMethodsOptions, type UseShippingQuoteOptions, type UseShopInfoOptions, type UseShopScriptsOptions, type UseShopSeoOptions, type UseSiteFormOptions, type UseSubscriptionsOptions, type UseVisitorMessagesOptions, type VisitorMessage, type WishlistItem, type WithdrawalAcknowledgement, type WithdrawalWindow, cookieStorage, createMemoryStorage, detectStorage, formatPrice, generateVisitorId, getStoredVisitorId, grantAnalyticsConsent, localStorageAdapter, memoryStorage, revokeAnalyticsConsent, trackEcommerceEvent, useAddressAutocomplete, useAddresses, useAnalyticsEvents, useAuth, useBehio, useBehioClient, useBlogPost, useBlogPosts, useBlogs, useBookingConfig, useBookingSlots, useBundle, useBundles, useCancelBooking, useCart, useCartCount, useCategories, useCategory, useCertificateVerification, useCheckout, useCheckoutPreview, useCollection, useCollectionItem, useCookieConsent, useCourse, useCourseCertificates, useCourses, useCreateBooking, useCrossSell, useCurrency, useCustomer, useFacets, useFaqGroup, useFaqGroups, useFeatured, useFilters, useFormPlacements, useFormPopup, useGiftCardBalance, useIsInWishlist, useLabels, useLessonComments, useLessonNote, useLessonQuiz, useLessonTutor, useLookupReturnableOrder, useLoyalty, useManagedBooking, useManagedBookingSlots, useMenu, useNewsletterConfirm, useNewsletterSubscribe, useNewsletterUnsubscribe, useNotifyWhenAvailable, useOrder, useOrderAccess, useOrders, usePage, usePages, usePaymentMethods, usePersonalOffers, usePickupPoints, useProduct, useProductGroup, useProductParameters, useProductPromotions, useProductReviews, useProducts, useQuoteStatus, useRescheduleBooking, useReturnStatus, useSearch, useShippingMethods, useShippingQuote, useShopInfo, useShopScripts, useShopSeo, useSiteForm, useSiteFormSubmit, useSubmitQuote, useSubmitReturn, useSubmitReview, useSubmitWithdrawal, useSubscriptions, useVisitorMessages, useWishlist };
package/dist/react.d.ts CHANGED
@@ -360,9 +360,16 @@ interface NewsletterSubscribeInput {
360
360
  }
361
361
  interface NewsletterSubscribeResult {
362
362
  success: boolean;
363
+ /** Confirm the email before the subscription becomes active. */
364
+ confirmationRequired?: boolean;
363
365
  /** True when this email was already an active subscriber. */
364
366
  alreadySubscribed: boolean;
365
367
  }
368
+ interface NewsletterConfirmResult {
369
+ success: boolean;
370
+ /** The actual code is delivered by email, never returned to the browser. */
371
+ welcomeDiscountIssued: boolean;
372
+ }
366
373
  interface NewsletterUnsubscribeResult {
367
374
  success: boolean;
368
375
  }
@@ -2546,7 +2553,35 @@ interface StorefrontFaqQuery {
2546
2553
  locale?: string;
2547
2554
  }
2548
2555
  /** Public definition of a form (`GET /forms/{slug}`). */
2556
+ interface StorefrontFormPlacement {
2557
+ key: string;
2558
+ mode: "inline" | "popup";
2559
+ enabled: boolean;
2560
+ delaySeconds: number;
2561
+ dismissDays: number;
2562
+ devices: "all" | "mobile" | "desktop";
2563
+ /** Exact path or prefix ending in *. No regex. */
2564
+ includePaths: string[];
2565
+ excludePaths: string[];
2566
+ }
2567
+ interface StorefrontFormPresentation {
2568
+ purpose: "general" | "newsletter";
2569
+ content: {
2570
+ eyebrow: string;
2571
+ heading: string;
2572
+ body: string;
2573
+ imageUrl: string;
2574
+ imageAlt: string;
2575
+ dismissLabel: string;
2576
+ backgroundColor: string;
2577
+ accentColor: string;
2578
+ };
2579
+ placements: StorefrontFormPlacement[];
2580
+ }
2549
2581
  interface StorefrontForm {
2582
+ /** Published content version. Requires the managed Forms API. */
2583
+ revision: number;
2584
+ presentation: StorefrontFormPresentation;
2550
2585
  slug: string;
2551
2586
  name: string;
2552
2587
  description: string | null;
@@ -2554,6 +2589,8 @@ interface StorefrontForm {
2554
2589
  settings: StorefrontFormSettings;
2555
2590
  }
2556
2591
  interface StorefrontFormSubmitInput {
2592
+ revision?: number;
2593
+ placement?: string;
2557
2594
  /** `{fieldKey: value}`; unknown keys are dropped server-side. */
2558
2595
  data: Record<string, unknown>;
2559
2596
  locale?: string;
@@ -2581,6 +2618,8 @@ interface StorefrontFormFile {
2581
2618
  type: string;
2582
2619
  }
2583
2620
  interface StorefrontFormSubmitResult {
2621
+ confirmationRequired?: boolean;
2622
+ alreadySubscribed?: boolean;
2584
2623
  ok: boolean;
2585
2624
  /** Id of the stored submission (null when the form does not store responses). */
2586
2625
  id: string | null;
@@ -4453,6 +4492,10 @@ declare class BookingsModule {
4453
4492
  declare class FormsModule {
4454
4493
  private client;
4455
4494
  constructor(client: BehioStorefront);
4495
+ /** Only active, published placements. Internal delivery/CRM settings never leave the server. */
4496
+ placements(): Promise<SdkResult<{
4497
+ items: StorefrontForm[];
4498
+ }>>;
4456
4499
  /** Public definition of one form (fields + settings). 404 for an unknown or inactive slug. */
4457
4500
  get(slug: string): Promise<SdkResult<StorefrontForm>>;
4458
4501
  /**
@@ -4661,6 +4704,7 @@ declare class NewsletterModule {
4661
4704
  private client;
4662
4705
  constructor(client: BehioStorefront);
4663
4706
  subscribe(input: NewsletterSubscribeInput): Promise<SdkResult<NewsletterSubscribeResult>>;
4707
+ confirm(token: string): Promise<SdkResult<NewsletterConfirmResult>>;
4664
4708
  unsubscribe(email: string): Promise<SdkResult<NewsletterUnsubscribeResult>>;
4665
4709
  }
4666
4710
 
@@ -5377,6 +5421,8 @@ declare function useAnalyticsEvents(): {
5377
5421
  declare function useNewsletterSubscribe(): _tanstack_react_query.UseMutationResult<NewsletterSubscribeResult, Error, NewsletterSubscribeInput, unknown>;
5378
5422
  /** Unsubscribe an email from the shop newsletter (idempotent). */
5379
5423
  declare function useNewsletterUnsubscribe(): _tanstack_react_query.UseMutationResult<NewsletterUnsubscribeResult, Error, string, unknown>;
5424
+ /** Explicit confirmation only. Never call on page load or link prefetch. */
5425
+ declare function useNewsletterConfirm(): _tanstack_react_query.UseMutationResult<NewsletterConfirmResult, Error, string, unknown>;
5380
5426
 
5381
5427
  interface UseOrdersOptions {
5382
5428
  page?: number;
@@ -5544,6 +5590,15 @@ declare function useSiteFormSubmit(slug: string): {
5544
5590
  error: SdkError | null;
5545
5591
  reset: () => void;
5546
5592
  };
5593
+ /** SSR initial data avoids fetching first-render configuration in an effect. */
5594
+ declare function useFormPlacements(options?: {
5595
+ initialData?: {
5596
+ items: StorefrontForm[];
5597
+ };
5598
+ enabled?: boolean;
5599
+ }): _tanstack_react_query.UseQueryResult<NoInfer<{
5600
+ items: StorefrontForm[];
5601
+ }>, Error>;
5547
5602
 
5548
5603
  interface UseBookingsOptions {
5549
5604
  enabled?: boolean;
@@ -6326,7 +6381,7 @@ declare function formatPrice(amount: number, currency: string, locale?: string,
6326
6381
  * Consent stays the script layer's job: this helper never loads anything, it
6327
6382
  * only talks to runtimes that already exist on the page.
6328
6383
  */
6329
- type EcommerceEventName = "view_item" | "view_item_list" | "select_item" | "add_to_cart" | "remove_from_cart" | "view_cart" | "add_to_wishlist" | "view_promotion" | "select_promotion" | "begin_checkout" | "add_payment_info" | "add_shipping_info" | "search" | "generate_lead" | "purchase" | "variant_selected" | "newsletter_signup";
6384
+ type EcommerceEventName = "view_item" | "view_item_list" | "select_item" | "add_to_cart" | "remove_from_cart" | "view_cart" | "add_to_wishlist" | "view_promotion" | "select_promotion" | "begin_checkout" | "add_payment_info" | "add_shipping_info" | "search" | "generate_lead" | "purchase" | "variant_selected" | "newsletter_signup" | "newsletter_request" | "form_popup_view";
6330
6385
  type EcommerceItem = {
6331
6386
  item_id: string;
6332
6387
  item_name: string;
@@ -6414,4 +6469,19 @@ declare function revokeAnalyticsConsent(client: BehioStorefront): Promise<SdkRes
6414
6469
  success: boolean;
6415
6470
  }>>;
6416
6471
 
6417
- export { type ActivePromotion, type AddToCartInput, type AnalyticsEventInput, type AuthTokens, BehioAnalyticsTracker, BehioApiError, BehioProvider, type BehioProviderProps, type Blog, type BlogPostDetail, type BlogPostListItem, type BlogPostsPage, type BlogPostsQuery, type BlogSettings, type BlogTag, type Booking, type BookingCategory, type BookingConfig, type BookingCreateInput, type BookingCreated, type BookingLocale, type BookingLocation, type BookingManageSlotsQuery, type BookingService, type BookingSlot, type BookingSlots, type BookingSlotsQuery, type BookingStaff, type BookingStatus, type Bundle, type BundleItem, type Cart, type CartDiscount, type CartItem, type Category, type CategoryDetail, type CheckoutAddress, type CheckoutInput, type CheckoutPaymentMethod, type CookieConsent, type CookieConsentInput, type CrossSellItem, CurrencySwitcher, type CurrencySwitcherProps, type CurrencySwitcherRenderProps, type CustomerAddress, type CustomerProfile, type EcommerceEventName, type EcommerceItem, type EcommercePayload, type Facet, type FacetRange, type FacetValue, type FacetsResponse, type FilterField, type FulfillmentStatus, type GiftCardBalance, type LoginInput, type MessageResponse, type OrderDetail, type OrderItem, type OrderListItem, type OrderStatus, type Page, type PageAttachment, type PageDetail, type PaginatedResponse, type PaymentInstrument, type PaymentStatus, type PaymentSwift, type PersonalOffer, type ProductDetail, type ProductLabel, type ProductListItem, type ProductParameter, type ProductParameterGroup, type ProductParametersResponse, type ProductPrice, type ProductReview, type ProductReviewsResponse, type ProductVariant, type ProductsQuery, type QuoteRequest, type RegisterInput, type ReturnRequest, RichText, type RichTextProps, type ShopInfo, type ShopSeo, type SiteFormField, type SiteFormFieldOption, type SiteFormFieldType, type StorageAdapter, type StorefrontForm, type StorefrontFormFieldError, type StorefrontFormFieldErrorCode, type StorefrontFormSettings, type StorefrontFormSubmitInput, type StorefrontFormSubmitResult, StorefrontScripts, type StorefrontScriptsProps, type SubmitQuoteInput, type SubmitReturnInput, type SubmitReviewInput, type SubmitWithdrawalInput, type UseAddressAutocompleteOptions, type UseAddressAutocompleteReturn, type UseAddressesOptions, type UseBlogPostOptions, type UseBlogPostsOptions, type UseBlogsOptions, type UseBookingsOptions, type UseCartCountOptions, type UseCartOptions, type UseCategoriesOptions, type UseCategoryOptions, type UseCertificateVerificationOptions, type UseCollectionOptions, type UseCourseCertificatesOptions, type UseCourseOptions, type UseCoursesOptions, type UseCurrencyResult, type UseCustomerOptions, type UseFacetsOptions, type UseFaqOptions, type UseFeaturedOptions, type UseFiltersOptions, type UseLabelsOptions, type UseLessonCommentsOptions, type UseLessonNoteOptions, type UseLessonQuizOptions, type UseLessonTutorOptions, type UseLoyaltyOptions, type UseMenuOptions, type UseOrderOptions, type UseOrdersOptions, type UsePageOptions, type UsePagesOptions, type UsePaymentMethodsOptions, type UsePersonalOffersOptions, type UseProductOptions, type UseProductParametersOptions, type UseProductsOptions, type UseSearchOptions, type UseShippingMethodsOptions, type UseShippingQuoteOptions, type UseShopInfoOptions, type UseShopScriptsOptions, type UseShopSeoOptions, type UseSiteFormOptions, type UseSubscriptionsOptions, type UseVisitorMessagesOptions, type VisitorMessage, type WishlistItem, type WithdrawalAcknowledgement, type WithdrawalWindow, cookieStorage, createMemoryStorage, detectStorage, formatPrice, generateVisitorId, getStoredVisitorId, grantAnalyticsConsent, localStorageAdapter, memoryStorage, revokeAnalyticsConsent, trackEcommerceEvent, useAddressAutocomplete, useAddresses, useAnalyticsEvents, useAuth, useBehio, useBehioClient, useBlogPost, useBlogPosts, useBlogs, useBookingConfig, useBookingSlots, useBundle, useBundles, useCancelBooking, useCart, useCartCount, useCategories, useCategory, useCertificateVerification, useCheckout, useCheckoutPreview, useCollection, useCollectionItem, useCookieConsent, useCourse, useCourseCertificates, useCourses, useCreateBooking, useCrossSell, useCurrency, useCustomer, useFacets, useFaqGroup, useFaqGroups, useFeatured, useFilters, useGiftCardBalance, useIsInWishlist, useLabels, useLessonComments, useLessonNote, useLessonQuiz, useLessonTutor, useLookupReturnableOrder, useLoyalty, useManagedBooking, useManagedBookingSlots, useMenu, useNewsletterSubscribe, useNewsletterUnsubscribe, useNotifyWhenAvailable, useOrder, useOrderAccess, useOrders, usePage, usePages, usePaymentMethods, usePersonalOffers, usePickupPoints, useProduct, useProductGroup, useProductParameters, useProductPromotions, useProductReviews, useProducts, useQuoteStatus, useRescheduleBooking, useReturnStatus, useSearch, useShippingMethods, useShippingQuote, useShopInfo, useShopScripts, useShopSeo, useSiteForm, useSiteFormSubmit, useSubmitQuote, useSubmitReturn, useSubmitReview, useSubmitWithdrawal, useSubscriptions, useVisitorMessages, useWishlist };
6472
+ type FormPopupOffer = {
6473
+ form: StorefrontForm;
6474
+ placement: StorefrontFormPlacement;
6475
+ };
6476
+ /** One host in the shared shell. Preview never mounts it; no subscription occurs on a timer. */
6477
+ declare function useFormPopup({ forms, locales, pathname }: {
6478
+ forms: StorefrontForm[];
6479
+ locales: string[];
6480
+ pathname: string;
6481
+ }): {
6482
+ active: FormPopupOffer | null;
6483
+ dialog: react.RefObject<HTMLDialogElement | null>;
6484
+ dismiss: () => void;
6485
+ };
6486
+
6487
+ export { type ActivePromotion, type AddToCartInput, type AnalyticsEventInput, type AuthTokens, BehioAnalyticsTracker, BehioApiError, BehioProvider, type BehioProviderProps, type Blog, type BlogPostDetail, type BlogPostListItem, type BlogPostsPage, type BlogPostsQuery, type BlogSettings, type BlogTag, type Booking, type BookingCategory, type BookingConfig, type BookingCreateInput, type BookingCreated, type BookingLocale, type BookingLocation, type BookingManageSlotsQuery, type BookingService, type BookingSlot, type BookingSlots, type BookingSlotsQuery, type BookingStaff, type BookingStatus, type Bundle, type BundleItem, type Cart, type CartDiscount, type CartItem, type Category, type CategoryDetail, type CheckoutAddress, type CheckoutInput, type CheckoutPaymentMethod, type CookieConsent, type CookieConsentInput, type CrossSellItem, CurrencySwitcher, type CurrencySwitcherProps, type CurrencySwitcherRenderProps, type CustomerAddress, type CustomerProfile, type EcommerceEventName, type EcommerceItem, type EcommercePayload, type Facet, type FacetRange, type FacetValue, type FacetsResponse, type FilterField, type FormPopupOffer, type FulfillmentStatus, type GiftCardBalance, type LoginInput, type MessageResponse, type OrderDetail, type OrderItem, type OrderListItem, type OrderStatus, type Page, type PageAttachment, type PageDetail, type PaginatedResponse, type PaymentInstrument, type PaymentStatus, type PaymentSwift, type PersonalOffer, type ProductDetail, type ProductLabel, type ProductListItem, type ProductParameter, type ProductParameterGroup, type ProductParametersResponse, type ProductPrice, type ProductReview, type ProductReviewsResponse, type ProductVariant, type ProductsQuery, type QuoteRequest, type RegisterInput, type ReturnRequest, RichText, type RichTextProps, type ShopInfo, type ShopSeo, type SiteFormField, type SiteFormFieldOption, type SiteFormFieldType, type StorageAdapter, type StorefrontForm, type StorefrontFormFieldError, type StorefrontFormFieldErrorCode, type StorefrontFormSettings, type StorefrontFormSubmitInput, type StorefrontFormSubmitResult, StorefrontScripts, type StorefrontScriptsProps, type SubmitQuoteInput, type SubmitReturnInput, type SubmitReviewInput, type SubmitWithdrawalInput, type UseAddressAutocompleteOptions, type UseAddressAutocompleteReturn, type UseAddressesOptions, type UseBlogPostOptions, type UseBlogPostsOptions, type UseBlogsOptions, type UseBookingsOptions, type UseCartCountOptions, type UseCartOptions, type UseCategoriesOptions, type UseCategoryOptions, type UseCertificateVerificationOptions, type UseCollectionOptions, type UseCourseCertificatesOptions, type UseCourseOptions, type UseCoursesOptions, type UseCurrencyResult, type UseCustomerOptions, type UseFacetsOptions, type UseFaqOptions, type UseFeaturedOptions, type UseFiltersOptions, type UseLabelsOptions, type UseLessonCommentsOptions, type UseLessonNoteOptions, type UseLessonQuizOptions, type UseLessonTutorOptions, type UseLoyaltyOptions, type UseMenuOptions, type UseOrderOptions, type UseOrdersOptions, type UsePageOptions, type UsePagesOptions, type UsePaymentMethodsOptions, type UsePersonalOffersOptions, type UseProductOptions, type UseProductParametersOptions, type UseProductsOptions, type UseSearchOptions, type UseShippingMethodsOptions, type UseShippingQuoteOptions, type UseShopInfoOptions, type UseShopScriptsOptions, type UseShopSeoOptions, type UseSiteFormOptions, type UseSubscriptionsOptions, type UseVisitorMessagesOptions, type VisitorMessage, type WishlistItem, type WithdrawalAcknowledgement, type WithdrawalWindow, cookieStorage, createMemoryStorage, detectStorage, formatPrice, generateVisitorId, getStoredVisitorId, grantAnalyticsConsent, localStorageAdapter, memoryStorage, revokeAnalyticsConsent, trackEcommerceEvent, useAddressAutocomplete, useAddresses, useAnalyticsEvents, useAuth, useBehio, useBehioClient, useBlogPost, useBlogPosts, useBlogs, useBookingConfig, useBookingSlots, useBundle, useBundles, useCancelBooking, useCart, useCartCount, useCategories, useCategory, useCertificateVerification, useCheckout, useCheckoutPreview, useCollection, useCollectionItem, useCookieConsent, useCourse, useCourseCertificates, useCourses, useCreateBooking, useCrossSell, useCurrency, useCustomer, useFacets, useFaqGroup, useFaqGroups, useFeatured, useFilters, useFormPlacements, useFormPopup, useGiftCardBalance, useIsInWishlist, useLabels, useLessonComments, useLessonNote, useLessonQuiz, useLessonTutor, useLookupReturnableOrder, useLoyalty, useManagedBooking, useManagedBookingSlots, useMenu, useNewsletterConfirm, useNewsletterSubscribe, useNewsletterUnsubscribe, useNotifyWhenAvailable, useOrder, useOrderAccess, useOrders, usePage, usePages, usePaymentMethods, usePersonalOffers, usePickupPoints, useProduct, useProductGroup, useProductParameters, useProductPromotions, useProductReviews, useProducts, useQuoteStatus, useRescheduleBooking, useReturnStatus, useSearch, useShippingMethods, useShippingQuote, useShopInfo, useShopScripts, useShopSeo, useSiteForm, useSiteFormSubmit, useSubmitQuote, useSubmitReturn, useSubmitReview, useSubmitWithdrawal, useSubscriptions, useVisitorMessages, useWishlist };