keystone-design-bootstrap 1.0.57 → 1.0.59

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 (48) hide show
  1. package/dist/blog-post-vWzW8yFb.d.ts +50 -0
  2. package/dist/contexts/index.d.ts +13 -0
  3. package/dist/design_system/elements/index.d.ts +383 -0
  4. package/dist/design_system/logo/keystone-logo.d.ts +6 -0
  5. package/dist/design_system/sections/index.d.ts +232 -0
  6. package/dist/design_system/sections/index.js +25 -37
  7. package/dist/design_system/sections/index.js.map +1 -1
  8. package/dist/index.d.ts +69 -0
  9. package/dist/index.js +25 -37
  10. package/dist/index.js.map +1 -1
  11. package/dist/lib/component-registry.d.ts +13 -0
  12. package/dist/lib/hooks/index.d.ts +83 -0
  13. package/dist/lib/server-api.d.ts +44 -0
  14. package/dist/package-CB1tENyG.d.ts +148 -0
  15. package/dist/photos-CmBdWiuZ.d.ts +27 -0
  16. package/dist/themes/index.d.ts +16 -0
  17. package/dist/types/index.d.ts +312 -0
  18. package/dist/utils/cx.d.ts +15 -0
  19. package/dist/utils/gradient-placeholder.d.ts +8 -0
  20. package/dist/utils/is-react-component.d.ts +21 -0
  21. package/dist/utils/markdown-toc.d.ts +14 -0
  22. package/dist/utils/phone-helpers.d.ts +24 -0
  23. package/dist/utils/photo-helpers.d.ts +38 -0
  24. package/dist/website-photos-Cl1YqAno.d.ts +21 -0
  25. package/package.json +1 -1
  26. package/src/design_system/portal/PortalPage.tsx +107 -91
  27. package/src/design_system/portal/PortalTabTracker.tsx +24 -0
  28. package/src/design_system/sections/contact-section-form.aman.tsx +2 -2
  29. package/src/design_system/sections/contact-section-form.balance.tsx +2 -2
  30. package/src/design_system/sections/contact-section-form.barelux.tsx +2 -2
  31. package/src/design_system/sections/contact-section-form.tsx +2 -2
  32. package/src/design_system/sections/header-navigation.aman.tsx +1 -4
  33. package/src/design_system/sections/header-navigation.balance.tsx +1 -4
  34. package/src/design_system/sections/header-navigation.barelux.tsx +1 -4
  35. package/src/design_system/sections/header-navigation.tsx +1 -8
  36. package/src/index.ts +1 -1
  37. package/src/lib/cta-urls.ts +15 -38
  38. package/src/next/layouts/root-layout.tsx +6 -7
  39. package/src/next/routes/consumer-auth.ts +2 -4
  40. package/src/tracking/MetaPixelTracker.tsx +17 -12
  41. package/src/tracking/firePixelEvent.ts +26 -0
  42. package/src/tracking/index.ts +2 -6
  43. package/src/types/api/company-information.ts +2 -0
  44. package/src/tracking/BookingCtaTracker.tsx +0 -32
  45. package/src/tracking/ViewContentTracker.tsx +0 -21
  46. package/src/tracking/trackInitiateCheckout.ts +0 -16
  47. package/src/tracking/trackMetaLead.ts +0 -14
  48. package/src/tracking/trackViewContent.ts +0 -19
@@ -0,0 +1,232 @@
1
+ import { S as Service, F as FormDefinition, P as Package, C as CompanyInformation } from '../../package-CB1tENyG.js';
2
+ import * as React from 'react';
3
+ import React__default, { ComponentProps, ReactNode, FC } from 'react';
4
+ export { Theme } from '../../themes/index.js';
5
+ import { B as BlogPost, a as BlogPostAuthor, d as BlogPostTag } from '../../blog-post-vWzW8yFb.js';
6
+ import { BadgeGroup } from '../elements/index.js';
7
+ import { W as WebsitePhotos } from '../../website-photos-Cl1YqAno.js';
8
+ import '../../photos-CmBdWiuZ.js';
9
+ import 'react-aria-components';
10
+ import 'embla-carousel-react';
11
+
12
+ interface PolicyDocumentSectionProps {
13
+ /** Page title (e.g. "Terms of Service" or "Privacy Policy") */
14
+ title: string;
15
+ /** Optional effective date string (e.g. "January 1, 2025") */
16
+ effectiveDate?: string;
17
+ /** Full markdown content for the policy (supports placeholders replaced before passing in) */
18
+ content: string;
19
+ /** Optional additional class name for the container */
20
+ className?: string;
21
+ }
22
+
23
+ interface ServiceDetailContentProps {
24
+ service?: Service | null;
25
+ /** Label above the title (e.g. "Why Balance Aesthetics") */
26
+ sectionLabel?: string;
27
+ /** CTA button text */
28
+ ctaText?: string;
29
+ /** CTA button href */
30
+ ctaHref?: string;
31
+ /** Fallback summary when service.summary is empty */
32
+ defaultSummary?: string;
33
+ }
34
+
35
+ declare const getBlogPostData: (article: BlogPost) => {
36
+ author: BlogPostAuthor | null;
37
+ authorName: string;
38
+ authorHref: string;
39
+ authorAvatarUrl: string | null;
40
+ tag: BlogPostTag | null;
41
+ tagName: string;
42
+ tagHref: string;
43
+ href: string;
44
+ title: string;
45
+ publishedAt: string;
46
+ summary: string;
47
+ };
48
+ declare const BlogCardVertical: ({ article, imageClassName }: {
49
+ article: BlogPost;
50
+ imageClassName?: string;
51
+ }) => React.JSX.Element;
52
+ declare const BlogCardVerticalBadge: ({ article, badgeTheme, imageClassName, }: {
53
+ article: BlogPost;
54
+ badgeTheme?: ComponentProps<typeof BadgeGroup>["theme"];
55
+ imageClassName?: string;
56
+ }) => React.JSX.Element;
57
+ declare const BlogCardVerticalCompact: ({ article, imageClassName, titleClassName, className, }: {
58
+ article: BlogPost;
59
+ imageClassName?: string;
60
+ titleClassName?: string;
61
+ className?: string;
62
+ }) => React.JSX.Element;
63
+ declare const BlogCardVerticalMinimal: ({ article, imageClassName, className }: {
64
+ article: BlogPost;
65
+ imageClassName?: string;
66
+ className?: string;
67
+ }) => React.JSX.Element;
68
+ declare const BlogCardHorizontal: ({ article, imageClassName }: {
69
+ article: BlogPost;
70
+ imageClassName?: string;
71
+ }) => React.JSX.Element;
72
+ declare const BlogCardHorizontalBadge: ({ article }: {
73
+ article: BlogPost;
74
+ }) => React.JSX.Element;
75
+ declare const BlogCardHorizontalCompact: ({ article, imageClassName }: {
76
+ article: BlogPost;
77
+ imageClassName?: string;
78
+ }) => React.JSX.Element;
79
+ declare const BlogCardHorizontalMinimal: ({ article }: {
80
+ article: BlogPost;
81
+ }) => React.JSX.Element;
82
+ declare const BlogCardFullWidthVertical: ({ article }: {
83
+ article: BlogPost;
84
+ }) => React.JSX.Element;
85
+ declare const BlogCardFullWidthVerticalAlt: ({ article }: {
86
+ article: BlogPost;
87
+ }) => React.JSX.Element;
88
+ declare const BlogCardFullWidthVerticalCompact: ({ article }: {
89
+ article: BlogPost;
90
+ }) => React.JSX.Element;
91
+ declare const BlogCardFullWidthVerticalMinimal: ({ article }: {
92
+ article: BlogPost;
93
+ }) => React.JSX.Element;
94
+ declare const BlogCardFullWidthHorizontal: ({ article }: {
95
+ article: BlogPost;
96
+ }) => React.JSX.Element;
97
+ declare const BlogCardFullWidthHorizontalAlt: ({ article }: {
98
+ article: BlogPost;
99
+ }) => React.JSX.Element;
100
+ declare const BlogCardFullWidthHorizontalCompact: ({ article }: {
101
+ article: BlogPost;
102
+ }) => React.JSX.Element;
103
+ declare const BlogCardFullWidthHorizontalMinimal: ({ article }: {
104
+ article: BlogPost;
105
+ }) => React.JSX.Element;
106
+
107
+ interface FeatureTabProps {
108
+ title: string;
109
+ subtitle: string;
110
+ footer?: ReactNode;
111
+ isCurrent?: boolean;
112
+ }
113
+ declare const FeatureTabVertical: ({ title, subtitle, footer, isCurrent }: FeatureTabProps) => React.JSX.Element;
114
+ declare const FeatureTabHorizontal: ({ title, subtitle, footer, isCurrent }: FeatureTabProps) => React.JSX.Element;
115
+
116
+ interface TextCentered {
117
+ title: string;
118
+ subtitle: string;
119
+ footer?: ReactNode;
120
+ }
121
+ declare const FeatureTextCentered: ({ title, subtitle, footer }: TextCentered) => React.JSX.Element;
122
+ declare const FeatureTextLeft: ({ title, subtitle, footer }: TextCentered) => React.JSX.Element;
123
+ interface FeatureTextIcon extends TextCentered {
124
+ icon: FC<{
125
+ className?: string;
126
+ }>;
127
+ }
128
+ declare const FeatureTextIconTopCentered: ({ icon: Icon, title, subtitle, footer }: FeatureTextIcon) => React.JSX.Element;
129
+ declare const FeatureTextIconTopLeft: ({ icon: Icon, title, subtitle, footer }: FeatureTextIcon) => React.JSX.Element;
130
+ declare const FeatureTextIconLeft: ({ icon: Icon, title, subtitle, footer }: FeatureTextIcon) => React.JSX.Element;
131
+ declare const FeatureTextFeaturedIconTopCentered: ({ color, theme, icon, title, subtitle, footer, }: FeatureTextIcon & {
132
+ color?: "brand" | "gray" | "success" | "warning" | "error";
133
+ theme?: "light" | "gradient" | "dark" | "outline" | "modern";
134
+ }) => React.JSX.Element;
135
+ declare const FeatureTextFeaturedIconTopLeft: ({ icon, title, subtitle, footer }: FeatureTextIcon) => React.JSX.Element;
136
+ declare const FeatureTextFeaturedIconLeft: ({ icon, title, subtitle, footer }: FeatureTextIcon) => React.JSX.Element;
137
+ declare const FeatureTextFeaturedIconBox: ({ icon, title, subtitle, footer }: FeatureTextIcon) => React.JSX.Element;
138
+ interface FeatureTextIntegrationIcon extends TextCentered {
139
+ imgUrl: string;
140
+ }
141
+ declare const FeatureTextIntegrationIconTopCentered: ({ imgUrl, title, subtitle, footer }: FeatureTextIntegrationIcon) => React.JSX.Element;
142
+ declare const FeatureTextIntegrationIconTopLeft: ({ imgUrl, title, subtitle, footer }: FeatureTextIntegrationIcon) => React.JSX.Element;
143
+ declare const FeatureTextIntegrationIconLeft: ({ imgUrl, title, subtitle, footer }: FeatureTextIntegrationIcon) => React.JSX.Element;
144
+ declare const FeatureTextIntegrationIconBox: ({ imgUrl, title, subtitle, footer }: FeatureTextIntegrationIcon) => React.JSX.Element;
145
+ declare const FeatureTextIconCard: ({ icon: Icon, title, subtitle, footer }: FeatureTextIcon) => React.JSX.Element;
146
+ declare const FeatureTextFeaturedIconCard: ({ icon, title, subtitle, footer }: FeatureTextIcon) => React.JSX.Element;
147
+ declare const FeatureTextLeftBrand: ({ title, subtitle, footer }: TextCentered) => React.JSX.Element;
148
+ declare const FeatureTextFeaturedIconTopCenteredBrand: ({ icon, title, subtitle, footer }: FeatureTextIcon) => React.JSX.Element;
149
+ declare const FeatureTextFeaturedIconTopLeftBrand: ({ icon, title, subtitle, footer }: FeatureTextIcon) => React.JSX.Element;
150
+
151
+ interface JobApplicationFormProps {
152
+ jobSlug: string;
153
+ /** Form fields are rendered from this definition (required). */
154
+ formDefinition: FormDefinition | null | undefined;
155
+ inline?: boolean;
156
+ }
157
+ declare const JobApplicationForm: ({ jobSlug, formDefinition, inline }: JobApplicationFormProps) => React__default.JSX.Element | null;
158
+
159
+ interface EmailSignupSectionProps {
160
+ title?: string;
161
+ subtitle?: string;
162
+ buttonText?: string;
163
+ successMessage?: string;
164
+ /** Override the form definition (falls back to context). */
165
+ formDefinition?: FormDefinition | null;
166
+ }
167
+ declare const EmailSignupSection: ({ title, subtitle, buttonText, successMessage, formDefinition, }: EmailSignupSectionProps) => React__default.JSX.Element | null;
168
+
169
+ /** Package with category names and first-service description fallback (derived from services). */
170
+ interface PackageForMenu extends Package {
171
+ category_names?: string[];
172
+ first_service_description_markdown?: string | null;
173
+ }
174
+ interface ServiceMenuSectionProps {
175
+ title?: string;
176
+ subtitle?: string;
177
+ packages?: Package[] | null;
178
+ /** Services (used to derive service items for the third row). */
179
+ services?: Service[] | null;
180
+ websitePhotos?: WebsitePhotos | null;
181
+ companyInformation?: CompanyInformation | null;
182
+ viewAllHref?: string;
183
+ /** Label for the View All button (e.g. "View All"). */
184
+ viewAllText?: string;
185
+ /** Customer-friendly label for the third row (individual service items). Default "Treatments". */
186
+ servicesRowTitle?: string;
187
+ /** 'section' = compact header + carousel (e.g. home). 'page' = hero + grid (e.g. /service-menu). */
188
+ variant?: 'section' | 'page';
189
+ }
190
+ /**
191
+ * Service Menu: packages and treatments (service items). Specials appear as card badges and in modals.
192
+ */
193
+ declare function ServiceMenuSection({ title, subtitle, packages, services, websitePhotos, companyInformation, viewAllHref, viewAllText, servicesRowTitle, variant, }: ServiceMenuSectionProps): React__default.JSX.Element | null;
194
+
195
+ declare const HeroHome: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
196
+ declare const ServicesHome: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
197
+ declare const AboutHome: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
198
+ declare const TestimonialsHome: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
199
+ declare const TestimonialsGrid: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
200
+ declare const FAQHome: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
201
+ declare const BlogSection: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
202
+ declare const ContactSection: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
203
+ declare const FooterHome: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
204
+ declare const HeaderNavigation: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
205
+ declare const GenericHeaderComponent: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
206
+ declare const StatisticsSection: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
207
+ declare const ValuesSection: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
208
+ declare const TeamGrid: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
209
+ declare const LocationGrid: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
210
+ declare const LocationDetailsSection: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
211
+ declare const ServicesGrid: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
212
+ declare const SocialMediaGrid: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
213
+ declare const JobGallery: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
214
+ declare const BlogHome: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
215
+ declare const BlogGallery: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
216
+ declare const BlogPostSection: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
217
+ declare const ContactHome: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
218
+ declare const FAQGrid: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
219
+ declare const FAQHero: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
220
+
221
+ declare const GenericTextHero: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
222
+ declare const LocationDetailHero: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
223
+ declare const ServiceDetailHero: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
224
+ declare const ServiceDetailContent: ({ service, sectionLabel, ctaText, ctaHref, defaultSummary, }: ServiceDetailContentProps) => React__default.JSX.Element | null;
225
+ declare const JobDetailHero: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
226
+ declare const JobDetailSection: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
227
+ declare const PolicyDocumentSection: ({ title, effectiveDate, content, className, }: PolicyDocumentSectionProps) => React__default.JSX.Element;
228
+ declare const SocialMediaHero: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
229
+ declare const TestimonialsHero: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
230
+ declare const HomeHeroComponent: (props: Record<string, unknown>) => React__default.ReactElement<Record<string, unknown>, string | React__default.JSXElementConstructor<any>>;
231
+
232
+ export { AboutHome, BlogCardFullWidthHorizontal, BlogCardFullWidthHorizontalAlt, BlogCardFullWidthHorizontalCompact, BlogCardFullWidthHorizontalMinimal, BlogCardFullWidthVertical, BlogCardFullWidthVerticalAlt, BlogCardFullWidthVerticalCompact, BlogCardFullWidthVerticalMinimal, BlogCardHorizontal, BlogCardHorizontalBadge, BlogCardHorizontalCompact, BlogCardHorizontalMinimal, BlogCardVertical, BlogCardVerticalBadge, BlogCardVerticalCompact, BlogCardVerticalMinimal, BlogGallery, BlogHome, BlogPostSection, BlogSection, ContactHome, ContactSection, EmailSignupSection, type EmailSignupSectionProps, FAQGrid, FAQHero, FAQHome, FeatureTabHorizontal, FeatureTabVertical, FeatureTextCentered, FeatureTextFeaturedIconBox, FeatureTextFeaturedIconCard, FeatureTextFeaturedIconLeft, FeatureTextFeaturedIconTopCentered, FeatureTextFeaturedIconTopCenteredBrand, FeatureTextFeaturedIconTopLeft, FeatureTextFeaturedIconTopLeftBrand, FeatureTextIconCard, FeatureTextIconLeft, FeatureTextIconTopCentered, FeatureTextIconTopLeft, FeatureTextIntegrationIconBox, FeatureTextIntegrationIconLeft, FeatureTextIntegrationIconTopCentered, FeatureTextIntegrationIconTopLeft, FeatureTextLeft, FeatureTextLeftBrand, FooterHome, GenericHeaderComponent, GenericTextHero, HeaderNavigation, HeroHome, HomeHeroComponent, JobApplicationForm, JobDetailHero, JobDetailSection, JobGallery, LocationDetailHero, LocationDetailsSection, LocationGrid, type PackageForMenu, PolicyDocumentSection, ServiceDetailContent, ServiceDetailHero, ServiceMenuSection, type ServiceMenuSectionProps, ServicesGrid, ServicesHome, SocialMediaGrid, SocialMediaHero, StatisticsSection, TeamGrid, TestimonialsGrid, TestimonialsHero, TestimonialsHome, ValuesSection, getBlogPostData };
@@ -6171,16 +6171,19 @@ function DynamicFormFields({ form, jobSlug, privacyPolicyUrl, termsOfServiceUrl
6171
6171
  }), jobSlug ? /* @__PURE__ */ React18.createElement("input", { type: "hidden", name: "jobSlug", value: jobSlug }) : null, showPrivacyCheckbox && /* @__PURE__ */ React18.createElement(PrivacyCheckbox2, null));
6172
6172
  }
6173
6173
 
6174
- // src/tracking/trackMetaLead.ts
6175
- function trackMetaLead(eventId) {
6176
- if (typeof window === "undefined" || !eventId) return;
6174
+ // src/tracking/firePixelEvent.ts
6175
+ function firePixelEvent(event, params) {
6176
+ if (typeof window === "undefined") return;
6177
6177
  const fbq = window.fbq;
6178
6178
  if (!fbq) {
6179
- console.debug("[MetaPixel] Lead skipped \u2014 fbq not loaded", { eventId });
6179
+ console.debug("[MetaPixel] skipped \u2014 fbq not loaded", { event });
6180
6180
  return;
6181
6181
  }
6182
- console.debug("[MetaPixel] Lead", { eventId });
6183
- fbq("track", "Lead", {}, { eventID: eventId });
6182
+ const normalized = {};
6183
+ if (params == null ? void 0 : params.contentName) normalized.content_name = params.contentName;
6184
+ if (params == null ? void 0 : params.contentCategory) normalized.content_category = params.contentCategory;
6185
+ console.debug("[MetaPixel]", event, normalized);
6186
+ fbq("track", event, Object.keys(normalized).length > 0 ? normalized : void 0);
6184
6187
  }
6185
6188
 
6186
6189
  // src/next/contexts/form-definitions.tsx
@@ -6237,7 +6240,7 @@ var ContactSectionForm = ({
6237
6240
  setStatusMessage(result.message || successMessage);
6238
6241
  (_a = formRef.current) == null ? void 0 : _a.reset();
6239
6242
  onSuccess == null ? void 0 : onSuccess();
6240
- trackMetaLead(result.eventId);
6243
+ firePixelEvent("Lead");
6241
6244
  setTimeout(() => setSubmitStatus("idle"), 5e3);
6242
6245
  } else {
6243
6246
  setSubmitStatus("error");
@@ -6454,17 +6457,14 @@ var CONTACT_PATH = "/contact";
6454
6457
  function isExternalCtaUrl(href) {
6455
6458
  return href.startsWith("http://") || href.startsWith("https://");
6456
6459
  }
6457
- function resolveCtaUrls(companyInformation, _ctaButton, overrides) {
6458
- var _a;
6459
- const externalUrl = ((_a = companyInformation == null ? void 0 : companyInformation.external_management_url) == null ? void 0 : _a.trim()) || null;
6460
- const hasSecondary = !!externalUrl;
6461
- const primaryHref = (overrides == null ? void 0 : overrides.primaryHrefOverride) !== void 0 && overrides.primaryHrefOverride !== null ? overrides.primaryHrefOverride : externalUrl || CONTACT_PATH;
6462
- const secondaryHref = (overrides == null ? void 0 : overrides.secondaryHrefOverride) !== void 0 && overrides.secondaryHrefOverride !== null ? overrides.secondaryHrefOverride : CONTACT_PATH;
6463
- return {
6464
- primaryHref,
6465
- secondaryHref,
6466
- hasSecondary
6467
- };
6460
+ function resolveCtaUrls(companyInformation) {
6461
+ var _a, _b, _c;
6462
+ const portalUrl = ((_a = companyInformation == null ? void 0 : companyInformation.portal_url) == null ? void 0 : _a.trim()) || null;
6463
+ const externalUrl = ((_b = companyInformation == null ? void 0 : companyInformation.external_management_url) == null ? void 0 : _b.trim()) || null;
6464
+ const primaryHref = (_c = portalUrl != null ? portalUrl : externalUrl) != null ? _c : CONTACT_PATH;
6465
+ const secondaryHref = CONTACT_PATH;
6466
+ const hasSecondary = primaryHref !== CONTACT_PATH;
6467
+ return { primaryHref, secondaryHref, hasSecondary };
6468
6468
  }
6469
6469
 
6470
6470
  // src/design_system/sections/header-navigation.tsx
@@ -6513,10 +6513,7 @@ function HeaderNavigation({
6513
6513
  const logoImage = logoImageOverride || getLogoUrl(websitePhotos) || ((_b = props == null ? void 0 : props.logo) == null ? void 0 : _b.image);
6514
6514
  const logoText = logoTextOverride || (companyInformation == null ? void 0 : companyInformation.company_name) || ((_c = props == null ? void 0 : props.logo) == null ? void 0 : _c.text) || "";
6515
6515
  const cta_button = props == null ? void 0 : props.cta_button;
6516
- const ctaUrls = resolveCtaUrls(companyInformation, cta_button, {
6517
- primaryHrefOverride: props == null ? void 0 : props.primaryHrefOverride,
6518
- secondaryHrefOverride: props == null ? void 0 : props.secondaryHrefOverride
6519
- });
6516
+ const ctaUrls = resolveCtaUrls(companyInformation);
6520
6517
  const logo = {
6521
6518
  text: logoText || "",
6522
6519
  href: ((_d = props == null ? void 0 : props.logo) == null ? void 0 : _d.href) || "/",
@@ -8538,10 +8535,7 @@ function HeaderNavigation2({
8538
8535
  const logoUrl = logoImageOverride || getLogoUrl(websitePhotos) || ((_a = props == null ? void 0 : props.logo) == null ? void 0 : _a.image);
8539
8536
  const companyName = logoTextOverride || (companyInformation == null ? void 0 : companyInformation.company_name) || ((_b = props == null ? void 0 : props.logo) == null ? void 0 : _b.text) || "";
8540
8537
  const navigation = navigationOverride || ((_c = config == null ? void 0 : config.navigation) == null ? void 0 : _c.header) || [];
8541
- const ctaUrls = resolveCtaUrls(companyInformation, props == null ? void 0 : props.cta_button, {
8542
- primaryHrefOverride: props == null ? void 0 : props.primaryHrefOverride,
8543
- secondaryHrefOverride: props == null ? void 0 : props.secondaryHrefOverride
8544
- });
8538
+ const ctaUrls = resolveCtaUrls(companyInformation);
8545
8539
  const cancelCloseTimeout = useCallback5(() => {
8546
8540
  if (closeTimeoutRef.current) {
8547
8541
  clearTimeout(closeTimeoutRef.current);
@@ -9007,7 +9001,7 @@ var ContactSectionForm2 = ({
9007
9001
  setStatusMessage(result.message || successMessage);
9008
9002
  (_a = formRef.current) == null ? void 0 : _a.reset();
9009
9003
  onSuccess == null ? void 0 : onSuccess();
9010
- trackMetaLead(result.eventId);
9004
+ firePixelEvent("Lead");
9011
9005
  setTimeout(() => setSubmitStatus("idle"), 5e3);
9012
9006
  } else {
9013
9007
  setSubmitStatus("error");
@@ -17622,10 +17616,7 @@ function HeaderNavigation3({
17622
17616
  const logoUrl = logoImageOverride || getLogoUrl(websitePhotos) || ((_a = props == null ? void 0 : props.logo) == null ? void 0 : _a.image);
17623
17617
  const companyName = logoTextOverride || (companyInformation == null ? void 0 : companyInformation.company_name) || ((_b = props == null ? void 0 : props.logo) == null ? void 0 : _b.text) || "";
17624
17618
  const navigation = navigationOverride || ((_c = config == null ? void 0 : config.navigation) == null ? void 0 : _c.header) || [];
17625
- const ctaUrls = resolveCtaUrls(companyInformation, props == null ? void 0 : props.cta_button, {
17626
- primaryHrefOverride: props == null ? void 0 : props.primaryHrefOverride,
17627
- secondaryHrefOverride: props == null ? void 0 : props.secondaryHrefOverride
17628
- });
17619
+ const ctaUrls = resolveCtaUrls(companyInformation);
17629
17620
  const cancelCloseTimeout = useCallback8(() => {
17630
17621
  if (closeTimeoutRef.current) {
17631
17622
  clearTimeout(closeTimeoutRef.current);
@@ -18211,7 +18202,7 @@ var ContactSectionForm3 = ({
18211
18202
  setStatusMessage(result.message || successMessage);
18212
18203
  (_a = formRef.current) == null ? void 0 : _a.reset();
18213
18204
  onSuccess == null ? void 0 : onSuccess();
18214
- trackMetaLead(result.eventId);
18205
+ firePixelEvent("Lead");
18215
18206
  setTimeout(() => setSubmitStatus("idle"), 5e3);
18216
18207
  } else {
18217
18208
  setSubmitStatus("error");
@@ -18414,10 +18405,7 @@ function HeaderNavigation4({
18414
18405
  const logoUrl = logoImageOverride || getLogoUrl(websitePhotos) || ((_a = props == null ? void 0 : props.logo) == null ? void 0 : _a.image);
18415
18406
  const companyName = logoTextOverride || (companyInformation == null ? void 0 : companyInformation.company_name) || ((_b = props == null ? void 0 : props.logo) == null ? void 0 : _b.text) || "";
18416
18407
  const navigation = navigationOverride || ((_c = config == null ? void 0 : config.navigation) == null ? void 0 : _c.header) || [];
18417
- const ctaUrls = resolveCtaUrls(companyInformation, props == null ? void 0 : props.cta_button, {
18418
- primaryHrefOverride: props == null ? void 0 : props.primaryHrefOverride,
18419
- secondaryHrefOverride: props == null ? void 0 : props.secondaryHrefOverride
18420
- });
18408
+ const ctaUrls = resolveCtaUrls(companyInformation);
18421
18409
  const cancelCloseTimeout = useCallback9(() => {
18422
18410
  if (closeTimeoutRef.current) {
18423
18411
  clearTimeout(closeTimeoutRef.current);
@@ -18707,7 +18695,7 @@ var ContactSectionForm4 = ({
18707
18695
  setStatusMessage(result.message || successMessage);
18708
18696
  (_a = formRef.current) == null ? void 0 : _a.reset();
18709
18697
  onSuccess == null ? void 0 : onSuccess();
18710
- trackMetaLead(result.eventId);
18698
+ firePixelEvent("Lead");
18711
18699
  setTimeout(() => setSubmitStatus("idle"), 5e3);
18712
18700
  } else {
18713
18701
  setSubmitStatus("error");