@aranova/tracking-react 1.16.1 → 1.18.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/README.md CHANGED
@@ -221,6 +221,22 @@ Development logs each contract violation, `debug` throws, production sends anywa
221
221
  (tagged `invalid_shape`) rather than dropped. Full guide:
222
222
  [docs/tracking-package/lead-forms.md](../../docs/tracking-package/lead-forms.md).
223
223
 
224
+ Optional questions after the submit (patient type, timing, how they heard) attach to that same
225
+ lead. Keep the handle `submit()` returns and pass it to `addDetails()` from the thank-you screen.
226
+ That screen is a `<section>` with buttons, never a second `<form>`: a form logs its own
227
+ `form_start` (a form never submitted, in the funnel) and submits on Enter.
228
+
229
+ ```tsx
230
+ const { submission } = leadForms.submit({ formId: "booking-form", kind: "booking", fields });
231
+ setSubmission(submission); // then render the post-submit <section>
232
+
233
+ // "Add to my request" button's onClick: every role is optional here, nothing is owed.
234
+ leadForms.addDetails(submission, {
235
+ fields: { patient_type: answers.patientType, note: answers.note, email: answers.email },
236
+ extra: [{ key: "heard_from", label: "How did you hear about us?", value: answers.heardFrom }],
237
+ }); // { sent: false, reason: "no_fields" } when every answer is blank
238
+ ```
239
+
224
240
  ## Phone Fields
225
241
 
226
242
  Bundled `libphonenumber-js`: parse/format utils + a React input. Display is configurable; the
@@ -1,4 +1,4 @@
1
- import { p as LeadFormKind, r as LeadFormRole, o as LEAD_FORM_ROLE_SPECS, n as LEAD_FORM_ROLES, J as JsonValue, b as TrackingEnvironment, k as FormSubmitMetadata } from './phone-utils-CYr6AmEP.js';
1
+ import { p as LeadFormKind, r as LeadFormRole, o as LEAD_FORM_ROLE_SPECS, n as LEAD_FORM_ROLES, J as JsonValue, b as TrackingEnvironment, k as FormSubmitMetadata } from './phone-utils-BlWj8oxq.js';
2
2
 
3
3
  interface ServiceFiring {
4
4
  send_to: string;
@@ -105,6 +105,12 @@ interface BookingRulesConfig {
105
105
  vehicle_deferred: boolean;
106
106
  /** Empty when the shop hides the drop-off question. */
107
107
  drop_off_options: string[];
108
+ /**
109
+ * `YYYY-MM-DD` shop dates → live bookings that day (synced appointments, pending requests,
110
+ * website bookings not yet synced), today to the end of the window; days with none are left
111
+ * out. Empty from an API older than the counts. The site decides when a day is full.
112
+ */
113
+ booked_counts: Record<string, number>;
108
114
  }
109
115
  /** One service choice on the site's booking form; the shop system's ids stay server-side. */
110
116
  interface BookingOptionConfig {
@@ -345,6 +351,8 @@ interface BookingRules {
345
351
  vehicleDeferred: boolean;
346
352
  /** `waitForIt` / `dropOff`; empty when the shop hides the question. */
347
353
  dropOffOptions: string[];
354
+ /** `YYYY-MM-DD` shop dates → live bookings already held that day; days with none absent. */
355
+ bookedCounts: Record<string, number>;
348
356
  }
349
357
  interface BookingIntegration {
350
358
  provider: BookingProvider;
@@ -388,6 +396,11 @@ interface BookableDay {
388
396
  morning: number[];
389
397
  /** Start hours from noon on. */
390
398
  afternoon: number[];
399
+ /**
400
+ * Live bookings the shop already holds that day (0 when none). Never filters a day out:
401
+ * a site with a daily cap marks the day full itself.
402
+ */
403
+ booked: number;
391
404
  }
392
405
  /** Today's date in `timeZone` as `YYYY-MM-DD`; the server judges notice by the same date. */
393
406
  declare function shopToday(timeZone: string, now?: Date): string;
@@ -514,6 +527,18 @@ type LeadFormFields<C extends LeadFormContracts, K extends LeadFormKind> = {
514
527
  } & {
515
528
  [R in AddOnRole]?: boolean | Blank;
516
529
  } & AllGroups<KindOf<C, K>, KindOf<C, K>["requiresAny"]>;
530
+ /** Who the lead is never changes after the submit; an email it lacked is the one exception. */
531
+ type DetailsRole = Exclude<RegistryRole, Exclude<{
532
+ [R in RegistryRole]: Specs[R] extends {
533
+ contactIdentity: true;
534
+ } ? R : never;
535
+ }[RegistryRole], "email">>;
536
+ /** Every non-identity role of one kind, all optional: details add to a sent lead, so none is owed. */
537
+ type LeadFormDetailsFields<C extends LeadFormContracts, K extends LeadFormKind> = {
538
+ [R in DetailsRole]?: LeadFormValue<KindOf<C, K>, R> | Blank;
539
+ } & {
540
+ [R in AddOnRole]?: boolean | Blank;
541
+ };
517
542
  interface LeadFormExtraField {
518
543
  key: string;
519
544
  label: string;
@@ -528,6 +553,23 @@ interface LeadFormSubmitInput<C extends LeadFormContracts, K extends LeadFormKin
528
553
  extra?: LeadFormExtraField[];
529
554
  action?: string | null;
530
555
  }
556
+ /** Names the lead one `submit()` sent, so `addDetails()` can add to it. */
557
+ interface LeadFormSubmission<K extends LeadFormKind = LeadFormKind> {
558
+ submissionId: string;
559
+ formId: string;
560
+ kind: K;
561
+ }
562
+ interface LeadFormDetailsInput<C extends LeadFormContracts, K extends LeadFormKind> {
563
+ fields: LeadFormDetailsFields<C, K>;
564
+ extra?: LeadFormExtraField[];
565
+ }
566
+ /** `no_fields`: every answer was blank, so nothing was sent. */
567
+ type LeadFormDetailsResult = {
568
+ sent: true;
569
+ } | {
570
+ sent: false;
571
+ reason: "no_fields";
572
+ };
531
573
  /** Anything that can send a `form_submit`: `useTracking()` with `form_submit` registered. */
532
574
  interface LeadFormTracking {
533
575
  trackEvent(eventType: "form_submit", metadata: FormSubmitMetadata): void;
@@ -541,8 +583,12 @@ interface LeadFormSubmitOptions {
541
583
  trackingConfig?: TrackingConfigReference;
542
584
  }
543
585
  interface LeadFormSubmitter<C extends LeadFormContracts> {
544
- /** Send one typed `form_submit`; returns the metadata sent, violations included. */
545
- submit<K extends LeadFormKind>(input: LeadFormSubmitInput<C, K>): FormSubmitMetadata;
586
+ /** Send one typed `form_submit`; returns the metadata sent, violations included, and its handle. */
587
+ submit<K extends LeadFormKind>(input: LeadFormSubmitInput<C, K>): FormSubmitMetadata & {
588
+ submission: LeadFormSubmission<K>;
589
+ };
590
+ /** Add optional answers to a sent lead as one `form_details`; never a second lead. */
591
+ addDetails<K extends LeadFormKind>(submission: LeadFormSubmission<K>, input: LeadFormDetailsInput<C, K>): LeadFormDetailsResult;
546
592
  }
547
593
  /**
548
594
  * Bind a tracking client to the site's generated contracts (`ARANOVA_LEAD_FORMS`).
@@ -550,7 +596,8 @@ interface LeadFormSubmitter<C extends LeadFormContracts> {
550
596
  * @example
551
597
  * ```ts
552
598
  * const leadForms = createLeadFormSubmit(useTracking(), ARANOVA_LEAD_FORMS);
553
- * leadForms.submit({ formId: "booking-form", kind: "booking", fields: { given_name, phone } });
599
+ * const { submission } = leadForms.submit({ formId: "booking-form", kind: "booking", fields });
600
+ * leadForms.addDetails(submission, { fields: { note } });
554
601
  * ```
555
602
  */
556
603
  declare function createLeadFormSubmit<C extends LeadFormContracts>(tracking: LeadFormTracking, contracts: C, options?: LeadFormSubmitOptions): LeadFormSubmitter<C>;
@@ -748,4 +795,4 @@ interface SalesBookingsClient {
748
795
  /** A fresh per-submit key. Keep it for retries of the same submit; mint a new one after. */
749
796
  declare const newBookingAttemptKey: typeof uuidV4;
750
797
 
751
- export { type LeadFormKindDecl as A, type BookableDay as B, type ConversionConfig as C, type LeadFormRequirementDecl as D, type LeadFormSubmitInput as E, type FormSubmitField as F, type LeadFormSubmitOptions as G, type LeadFormSubmitter as H, type LeadFormTimeWindow as I, type LeadFormTracking as J, type LeadFormValue as K, type LeadFormAddress as L, bookableSlots as M, buildBookingHandoffUrl as N, getBookingIntegration as O, getTrackingConfigRuntime as P, groupBookingOptions as Q, newBookingAttemptKey as R, type SalesBookingsClient as S, type TrackingConfigReference as T, resolveConversionConfig as U, resolveTrackingConfigUrl as V, shopToday as W, slotFields as X, timeWindow as Y, createLeadFormSubmit as Z, TrackingConfigRuntime as _, type BookingDetailsFailure as a, type BookingDetailsInput as b, type BookingDetailsOptions as c, type BookingDetailsOutcome as d, type BookingDetailsStatus as e, type BookingDropOff as f, type BookingFormSubmit as g, type BookingHandoffPrefill as h, type BookingInput as i, type BookingInputFor as j, type BookingIntegration as k, type BookingMode as l, type BookingOption as m, type BookingOptionGroup as n, type BookingOptionKey as o, type BookingOutcome as p, type BookingProvider as q, type BookingRules as r, type BookingServiceKey as s, type BookingSimulation as t, type BookingSubmitOptions as u, type BookingVehicle as v, type ConversionConfigStore as w, type LeadFormContracts as x, type LeadFormExtraField as y, type LeadFormFields as z };
798
+ export { slotFields as $, type LeadFormDetailsResult as A, type BookableDay as B, type ConversionConfig as C, type LeadFormExtraField as D, type LeadFormFields as E, type FormSubmitField as F, type LeadFormKindDecl as G, type LeadFormRequirementDecl as H, type LeadFormSubmission as I, type LeadFormSubmitInput as J, type LeadFormSubmitOptions as K, type LeadFormAddress as L, type LeadFormSubmitter as M, type LeadFormTimeWindow as N, type LeadFormTracking as O, type LeadFormValue as P, bookableSlots as Q, buildBookingHandoffUrl as R, type SalesBookingsClient as S, type TrackingConfigReference as T, getBookingIntegration as U, getTrackingConfigRuntime as V, groupBookingOptions as W, newBookingAttemptKey as X, resolveConversionConfig as Y, resolveTrackingConfigUrl as Z, shopToday as _, type BookingDetailsFailure as a, timeWindow as a0, createLeadFormSubmit as a1, TrackingConfigRuntime as a2, type BookingDetailsInput as b, type BookingDetailsOptions as c, type BookingDetailsOutcome as d, type BookingDetailsStatus as e, type BookingDropOff as f, type BookingFormSubmit as g, type BookingHandoffPrefill as h, type BookingInput as i, type BookingInputFor as j, type BookingIntegration as k, type BookingMode as l, type BookingOption as m, type BookingOptionGroup as n, type BookingOptionKey as o, type BookingOutcome as p, type BookingProvider as q, type BookingRules as r, type BookingServiceKey as s, type BookingSimulation as t, type BookingSubmitOptions as u, type BookingVehicle as v, type ConversionConfigStore as w, type LeadFormContracts as x, type LeadFormDetailsFields as y, type LeadFormDetailsInput as z };
@@ -1,4 +1,4 @@
1
- import { p as LeadFormKind, r as LeadFormRole, o as LEAD_FORM_ROLE_SPECS, n as LEAD_FORM_ROLES, J as JsonValue, b as TrackingEnvironment, k as FormSubmitMetadata } from './phone-utils-CYr6AmEP.mjs';
1
+ import { p as LeadFormKind, r as LeadFormRole, o as LEAD_FORM_ROLE_SPECS, n as LEAD_FORM_ROLES, J as JsonValue, b as TrackingEnvironment, k as FormSubmitMetadata } from './phone-utils-BlWj8oxq.mjs';
2
2
 
3
3
  interface ServiceFiring {
4
4
  send_to: string;
@@ -105,6 +105,12 @@ interface BookingRulesConfig {
105
105
  vehicle_deferred: boolean;
106
106
  /** Empty when the shop hides the drop-off question. */
107
107
  drop_off_options: string[];
108
+ /**
109
+ * `YYYY-MM-DD` shop dates → live bookings that day (synced appointments, pending requests,
110
+ * website bookings not yet synced), today to the end of the window; days with none are left
111
+ * out. Empty from an API older than the counts. The site decides when a day is full.
112
+ */
113
+ booked_counts: Record<string, number>;
108
114
  }
109
115
  /** One service choice on the site's booking form; the shop system's ids stay server-side. */
110
116
  interface BookingOptionConfig {
@@ -345,6 +351,8 @@ interface BookingRules {
345
351
  vehicleDeferred: boolean;
346
352
  /** `waitForIt` / `dropOff`; empty when the shop hides the question. */
347
353
  dropOffOptions: string[];
354
+ /** `YYYY-MM-DD` shop dates → live bookings already held that day; days with none absent. */
355
+ bookedCounts: Record<string, number>;
348
356
  }
349
357
  interface BookingIntegration {
350
358
  provider: BookingProvider;
@@ -388,6 +396,11 @@ interface BookableDay {
388
396
  morning: number[];
389
397
  /** Start hours from noon on. */
390
398
  afternoon: number[];
399
+ /**
400
+ * Live bookings the shop already holds that day (0 when none). Never filters a day out:
401
+ * a site with a daily cap marks the day full itself.
402
+ */
403
+ booked: number;
391
404
  }
392
405
  /** Today's date in `timeZone` as `YYYY-MM-DD`; the server judges notice by the same date. */
393
406
  declare function shopToday(timeZone: string, now?: Date): string;
@@ -514,6 +527,18 @@ type LeadFormFields<C extends LeadFormContracts, K extends LeadFormKind> = {
514
527
  } & {
515
528
  [R in AddOnRole]?: boolean | Blank;
516
529
  } & AllGroups<KindOf<C, K>, KindOf<C, K>["requiresAny"]>;
530
+ /** Who the lead is never changes after the submit; an email it lacked is the one exception. */
531
+ type DetailsRole = Exclude<RegistryRole, Exclude<{
532
+ [R in RegistryRole]: Specs[R] extends {
533
+ contactIdentity: true;
534
+ } ? R : never;
535
+ }[RegistryRole], "email">>;
536
+ /** Every non-identity role of one kind, all optional: details add to a sent lead, so none is owed. */
537
+ type LeadFormDetailsFields<C extends LeadFormContracts, K extends LeadFormKind> = {
538
+ [R in DetailsRole]?: LeadFormValue<KindOf<C, K>, R> | Blank;
539
+ } & {
540
+ [R in AddOnRole]?: boolean | Blank;
541
+ };
517
542
  interface LeadFormExtraField {
518
543
  key: string;
519
544
  label: string;
@@ -528,6 +553,23 @@ interface LeadFormSubmitInput<C extends LeadFormContracts, K extends LeadFormKin
528
553
  extra?: LeadFormExtraField[];
529
554
  action?: string | null;
530
555
  }
556
+ /** Names the lead one `submit()` sent, so `addDetails()` can add to it. */
557
+ interface LeadFormSubmission<K extends LeadFormKind = LeadFormKind> {
558
+ submissionId: string;
559
+ formId: string;
560
+ kind: K;
561
+ }
562
+ interface LeadFormDetailsInput<C extends LeadFormContracts, K extends LeadFormKind> {
563
+ fields: LeadFormDetailsFields<C, K>;
564
+ extra?: LeadFormExtraField[];
565
+ }
566
+ /** `no_fields`: every answer was blank, so nothing was sent. */
567
+ type LeadFormDetailsResult = {
568
+ sent: true;
569
+ } | {
570
+ sent: false;
571
+ reason: "no_fields";
572
+ };
531
573
  /** Anything that can send a `form_submit`: `useTracking()` with `form_submit` registered. */
532
574
  interface LeadFormTracking {
533
575
  trackEvent(eventType: "form_submit", metadata: FormSubmitMetadata): void;
@@ -541,8 +583,12 @@ interface LeadFormSubmitOptions {
541
583
  trackingConfig?: TrackingConfigReference;
542
584
  }
543
585
  interface LeadFormSubmitter<C extends LeadFormContracts> {
544
- /** Send one typed `form_submit`; returns the metadata sent, violations included. */
545
- submit<K extends LeadFormKind>(input: LeadFormSubmitInput<C, K>): FormSubmitMetadata;
586
+ /** Send one typed `form_submit`; returns the metadata sent, violations included, and its handle. */
587
+ submit<K extends LeadFormKind>(input: LeadFormSubmitInput<C, K>): FormSubmitMetadata & {
588
+ submission: LeadFormSubmission<K>;
589
+ };
590
+ /** Add optional answers to a sent lead as one `form_details`; never a second lead. */
591
+ addDetails<K extends LeadFormKind>(submission: LeadFormSubmission<K>, input: LeadFormDetailsInput<C, K>): LeadFormDetailsResult;
546
592
  }
547
593
  /**
548
594
  * Bind a tracking client to the site's generated contracts (`ARANOVA_LEAD_FORMS`).
@@ -550,7 +596,8 @@ interface LeadFormSubmitter<C extends LeadFormContracts> {
550
596
  * @example
551
597
  * ```ts
552
598
  * const leadForms = createLeadFormSubmit(useTracking(), ARANOVA_LEAD_FORMS);
553
- * leadForms.submit({ formId: "booking-form", kind: "booking", fields: { given_name, phone } });
599
+ * const { submission } = leadForms.submit({ formId: "booking-form", kind: "booking", fields });
600
+ * leadForms.addDetails(submission, { fields: { note } });
554
601
  * ```
555
602
  */
556
603
  declare function createLeadFormSubmit<C extends LeadFormContracts>(tracking: LeadFormTracking, contracts: C, options?: LeadFormSubmitOptions): LeadFormSubmitter<C>;
@@ -748,4 +795,4 @@ interface SalesBookingsClient {
748
795
  /** A fresh per-submit key. Keep it for retries of the same submit; mint a new one after. */
749
796
  declare const newBookingAttemptKey: typeof uuidV4;
750
797
 
751
- export { type LeadFormKindDecl as A, type BookableDay as B, type ConversionConfig as C, type LeadFormRequirementDecl as D, type LeadFormSubmitInput as E, type FormSubmitField as F, type LeadFormSubmitOptions as G, type LeadFormSubmitter as H, type LeadFormTimeWindow as I, type LeadFormTracking as J, type LeadFormValue as K, type LeadFormAddress as L, bookableSlots as M, buildBookingHandoffUrl as N, getBookingIntegration as O, getTrackingConfigRuntime as P, groupBookingOptions as Q, newBookingAttemptKey as R, type SalesBookingsClient as S, type TrackingConfigReference as T, resolveConversionConfig as U, resolveTrackingConfigUrl as V, shopToday as W, slotFields as X, timeWindow as Y, createLeadFormSubmit as Z, TrackingConfigRuntime as _, type BookingDetailsFailure as a, type BookingDetailsInput as b, type BookingDetailsOptions as c, type BookingDetailsOutcome as d, type BookingDetailsStatus as e, type BookingDropOff as f, type BookingFormSubmit as g, type BookingHandoffPrefill as h, type BookingInput as i, type BookingInputFor as j, type BookingIntegration as k, type BookingMode as l, type BookingOption as m, type BookingOptionGroup as n, type BookingOptionKey as o, type BookingOutcome as p, type BookingProvider as q, type BookingRules as r, type BookingServiceKey as s, type BookingSimulation as t, type BookingSubmitOptions as u, type BookingVehicle as v, type ConversionConfigStore as w, type LeadFormContracts as x, type LeadFormExtraField as y, type LeadFormFields as z };
798
+ export { slotFields as $, type LeadFormDetailsResult as A, type BookableDay as B, type ConversionConfig as C, type LeadFormExtraField as D, type LeadFormFields as E, type FormSubmitField as F, type LeadFormKindDecl as G, type LeadFormRequirementDecl as H, type LeadFormSubmission as I, type LeadFormSubmitInput as J, type LeadFormSubmitOptions as K, type LeadFormAddress as L, type LeadFormSubmitter as M, type LeadFormTimeWindow as N, type LeadFormTracking as O, type LeadFormValue as P, bookableSlots as Q, buildBookingHandoffUrl as R, type SalesBookingsClient as S, type TrackingConfigReference as T, getBookingIntegration as U, getTrackingConfigRuntime as V, groupBookingOptions as W, newBookingAttemptKey as X, resolveConversionConfig as Y, resolveTrackingConfigUrl as Z, shopToday as _, type BookingDetailsFailure as a, timeWindow as a0, createLeadFormSubmit as a1, TrackingConfigRuntime as a2, type BookingDetailsInput as b, type BookingDetailsOptions as c, type BookingDetailsOutcome as d, type BookingDetailsStatus as e, type BookingDropOff as f, type BookingFormSubmit as g, type BookingHandoffPrefill as h, type BookingInput as i, type BookingInputFor as j, type BookingIntegration as k, type BookingMode as l, type BookingOption as m, type BookingOptionGroup as n, type BookingOptionKey as o, type BookingOutcome as p, type BookingProvider as q, type BookingRules as r, type BookingServiceKey as s, type BookingSimulation as t, type BookingSubmitOptions as u, type BookingVehicle as v, type ConversionConfigStore as w, type LeadFormContracts as x, type LeadFormDetailsFields as y, type LeadFormDetailsInput as z };
package/dist/client.d.mts CHANGED
@@ -1,9 +1,9 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, CSSProperties, InputHTMLAttributes, ChangeEvent, FocusEvent, AnchorHTMLAttributes } from 'react';
3
- import { G as GtagEnvironmentMap, M as MetaPixelEnvironmentMap, h as ConsentState, f as ConsentChoiceState, g as ConsentSource, T as TrackingParams, b as TrackingEnvironment, u as PhoneConfig, P as ParsedPhone, v as PhoneDisplayFormat } from './phone-utils-CYr6AmEP.mjs';
4
- import { T as TrackingConfigReference, C as ConversionConfig, h as BookingHandoffPrefill, i as BookingInput, p as BookingOutcome, b as BookingDetailsInput, d as BookingDetailsOutcome, k as BookingIntegration, B as BookableDay, x as LeadFormContracts, S as SalesBookingsClient, g as BookingFormSubmit, t as BookingSimulation, j as BookingInputFor } from './bookings-DFz3BUiP.mjs';
5
- export { Z as createLeadFormSubmit } from './bookings-DFz3BUiP.mjs';
6
- import { L as TriggerRegistryConfig, O as TypedTrackingClient } from './ingest-typed-BO6Arbw-.mjs';
3
+ import { G as GtagEnvironmentMap, M as MetaPixelEnvironmentMap, h as ConsentState, f as ConsentChoiceState, g as ConsentSource, T as TrackingParams, b as TrackingEnvironment, u as PhoneConfig, P as ParsedPhone, v as PhoneDisplayFormat } from './phone-utils-BlWj8oxq.mjs';
4
+ import { T as TrackingConfigReference, C as ConversionConfig, h as BookingHandoffPrefill, i as BookingInput, p as BookingOutcome, b as BookingDetailsInput, d as BookingDetailsOutcome, k as BookingIntegration, B as BookableDay, x as LeadFormContracts, S as SalesBookingsClient, g as BookingFormSubmit, t as BookingSimulation, j as BookingInputFor } from './bookings-CVvpj_8K.mjs';
5
+ export { a1 as createLeadFormSubmit } from './bookings-CVvpj_8K.mjs';
6
+ import { O as TriggerRegistryConfig, U as TypedTrackingClient } from './ingest-typed-CoCjTqJs.mjs';
7
7
  import { CountryCode } from 'libphonenumber-js';
8
8
  import 'zod/mini';
9
9
  import 'zod/v4/core';
package/dist/client.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, CSSProperties, InputHTMLAttributes, ChangeEvent, FocusEvent, AnchorHTMLAttributes } from 'react';
3
- import { G as GtagEnvironmentMap, M as MetaPixelEnvironmentMap, h as ConsentState, f as ConsentChoiceState, g as ConsentSource, T as TrackingParams, b as TrackingEnvironment, u as PhoneConfig, P as ParsedPhone, v as PhoneDisplayFormat } from './phone-utils-CYr6AmEP.js';
4
- import { T as TrackingConfigReference, C as ConversionConfig, h as BookingHandoffPrefill, i as BookingInput, p as BookingOutcome, b as BookingDetailsInput, d as BookingDetailsOutcome, k as BookingIntegration, B as BookableDay, x as LeadFormContracts, S as SalesBookingsClient, g as BookingFormSubmit, t as BookingSimulation, j as BookingInputFor } from './bookings-CkfA5XOM.js';
5
- export { Z as createLeadFormSubmit } from './bookings-CkfA5XOM.js';
6
- import { L as TriggerRegistryConfig, O as TypedTrackingClient } from './ingest-typed-D7I4aQ7p.js';
3
+ import { G as GtagEnvironmentMap, M as MetaPixelEnvironmentMap, h as ConsentState, f as ConsentChoiceState, g as ConsentSource, T as TrackingParams, b as TrackingEnvironment, u as PhoneConfig, P as ParsedPhone, v as PhoneDisplayFormat } from './phone-utils-BlWj8oxq.js';
4
+ import { T as TrackingConfigReference, C as ConversionConfig, h as BookingHandoffPrefill, i as BookingInput, p as BookingOutcome, b as BookingDetailsInput, d as BookingDetailsOutcome, k as BookingIntegration, B as BookableDay, x as LeadFormContracts, S as SalesBookingsClient, g as BookingFormSubmit, t as BookingSimulation, j as BookingInputFor } from './bookings-CCGpXhYE.js';
5
+ export { a1 as createLeadFormSubmit } from './bookings-CCGpXhYE.js';
6
+ import { O as TriggerRegistryConfig, U as TypedTrackingClient } from './ingest-typed-C3XAjHlH.js';
7
7
  import { CountryCode } from 'libphonenumber-js';
8
8
  import 'zod/mini';
9
9
  import 'zod/v4/core';