@salesmind-ai/design-system 0.1.7 → 0.1.9
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/audit-CiyPkxk1.d.cts +194 -0
- package/dist/audit-CiyPkxk1.d.ts +194 -0
- package/dist/core/index.cjs +1 -1
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.css.map +1 -1
- package/dist/core/index.d.cts +5 -4
- package/dist/core/index.d.ts +5 -4
- package/dist/core/index.js +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/index.cjs +426 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +66 -21
- package/dist/index.css.map +1 -1
- package/dist/index.d.cts +30 -2
- package/dist/index.d.ts +30 -2
- package/dist/index.js +405 -14
- package/dist/index.js.map +1 -1
- package/dist/marketing/index.cjs +136 -12
- package/dist/marketing/index.cjs.map +1 -1
- package/dist/marketing/index.css +26 -1
- package/dist/marketing/index.css.map +1 -1
- package/dist/marketing/index.js +138 -14
- package/dist/marketing/index.js.map +1 -1
- package/dist/report/index.cjs +1 -1
- package/dist/report/index.cjs.map +1 -1
- package/dist/report/index.css.map +1 -1
- package/dist/report/index.js +1 -1
- package/dist/report/index.js.map +1 -1
- package/dist/styles/styles.css +7 -4
- package/dist/web/index.cjs +427 -10
- package/dist/web/index.cjs.map +1 -1
- package/dist/web/index.css.map +1 -1
- package/dist/web/index.d.cts +28 -2
- package/dist/web/index.d.ts +28 -2
- package/dist/web/index.js +405 -12
- package/dist/web/index.js.map +1 -1
- package/package.json +14 -12
package/dist/index.d.cts
CHANGED
|
@@ -4,9 +4,10 @@ export { Accordion, AccordionContent, AccordionContentProps, AccordionItem, Acco
|
|
|
4
4
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
5
5
|
import { S as SectionShellProps } from './index-B64suAAc.cjs';
|
|
6
6
|
export { A as AgitationPoint, a as AnnouncementBar, b as AnnouncementBarProps, c as ArchitectureConnection, d as ArchitectureDiagram, e as ArchitectureDiagramProps, f as ArchitectureNode, g as ArchitectureNodeType, h as ArticleCard, i as ArticleCardProps, j as ArticleLayout, k as ArticleLayoutProps, l as Author, m as AuthorBio, n as AuthorBioProps, o as AuthorLink, B as BeforeAfterBlock, p as BeforeAfterBlockProps, q as BeforeAfterItem, r as BeforeAfterSide, s as BookingEmbed, t as BookingEmbedProps, u as BrowserFrame, v as BrowserFrameProps, C as CTASection, w as CTASectionProps, x as CardMetric, y as CaseStudyCard, z as CaseStudyCardProps, D as CaseStudyMetric, E as CaseStudySection, F as CaseStudySectionProps, G as ComparisonColumn, H as ComparisonRow, I as ComparisonTable, J as ComparisonTableProps, K as CompetitorDiff, L as CompetitorDiffItem, M as CompetitorDiffProps, N as ComplianceGrid, O as ComplianceGridProps, P as ComplianceItem, Q as ComplianceStatus, R as ExitIntentOverlay, T as ExitIntentOverlayProps, U as FeatureItem, V as FeatureSection, W as FeatureSectionProps, X as GuaranteeHighlight, Y as GuaranteeHighlightProps, Z as HeroSection, _ as HeroSectionProps, $ as ICPFilter, a0 as ICPFilterItem, a1 as ICPFilterProps, a2 as IntegrationEntry, a3 as IntegrationShowcase, a4 as IntegrationShowcaseProps, a5 as IntentCTA, a6 as IntentCTAProps, a7 as IntentStage, a8 as IntentTriggerType, a9 as LeadCaptureForm, aa as LeadCaptureFormProps, ab as LogoItem, ac as ManifestoAttribution, ad as ManifestoBlock, ae as ManifestoBlockProps, af as Media, ag as MetricCounter, ah as MetricCounterProps, ai as MotionContainer, aj as MotionContainerProps, ak as MotionText, al as MotionTextProps, am as ObjectionFAQ, an as ObjectionFAQProps, ao as ObjectionItem, ap as Platform, aq as PlatformBadge, ar as PlatformBadgeProps, as as PricingCard, at as PricingCardProps, au as PricingFeature, av as PricingSection, aw as PricingSectionProps, ax as PricingToggle, ay as PricingToggleProps, az as ProblemAgitation, aA as ProblemAgitationProps, aB as ProcessTimeline, aC as ProcessTimelineProps, aD as ROICalculator, aE as ROICalculatorProps, aF as ROIComparisonItem, aG as RelatedContent, aH as RelatedContentProps, aI as SectionHeader, aJ as SectionHeaderProps, aK as SectionShell, aL as SecurityBlock, aM as SecurityBlockProps, aN as SecurityCertification, aO as SegmentSwitch, aP as SegmentSwitchProps, aQ as SocialProof, aR as SocialProofCard, aS as SocialProofCardProps, aT as SocialProofCarousel, aU as SocialProofCarouselProps, aV as SocialProofFeatured, aW as SocialProofFeaturedProps, aX as SocialProofGrid, aY as SocialProofGridProps, aZ as SocialProofLogos, a_ as SocialProofLogosProps, a$ as StakeholderContent, b0 as StakeholderDefinition, b1 as StakeholderTabs, b2 as StakeholderTabsProps, b3 as StatItem, b4 as StatsSection, b5 as StatsSectionProps, b6 as StickyActionBar, b7 as StickyActionBarProps, b8 as TOCItem, b9 as TableOfContents, ba as TableOfContentsProps, bb as TimelineStep, bc as ValueAnchor, bd as ValueAnchorInput, be as ValueAnchorOutput, bf as ValueAnchorProps, bg as VerticalVideoGrid, bh as VerticalVideoGridProps, bi as VideoEmbed, bj as VideoEmbedProps } from './index-B64suAAc.cjs';
|
|
7
|
+
import { U as UtmParams } from './audit-CiyPkxk1.cjs';
|
|
8
|
+
export { F as FirstTouchAttribution, a as UTM_CAMPAIGNS, b as UTM_CONTENTS, c as UTM_MEDIUMS_ALL, d as UTM_MEDIUMS_APP, e as UTM_MEDIUMS_MESSAGING, f as UTM_MEDIUMS_WEB, g as UTM_SOURCES, h as UTM_SOURCES_REQUIRING_SELLER, i as UTM_TERMS, j as UrlClassification, k as UtmAuditEntry, l as UtmBlockedError, m as UtmCampaign, n as UtmComplianceResult, o as UtmComplianceStatus, p as UtmConfidence, q as UtmContent, r as UtmMedium, s as UtmMediumAppPage, t as UtmMediumMessaging, u as UtmMediumWebPage, v as UtmOverrides, w as UtmSource, x as UtmSourceRequiringSeller, y as UtmTerm, z as buildBlockedError, A as buildUtmUrl, B as classifyAndEnforce, C as classifyUrl, D as createAuditEntry, E as isUtmExempt, G as isValidUtmParams, H as parseUtmParams, I as requiresSellerAttribution, J as requiresUtm, K as toFirstTouchAttribution, L as validateCompliance, M as validateUtmField } from './audit-CiyPkxk1.cjs';
|
|
7
9
|
export { FormattedDate, FormattedMessage, FormattedNumber, MessageDescriptor, defineMessages } from 'react-intl';
|
|
8
10
|
export { B as BarChart, d as BarChartProps, e as BarConfig, g as CaveatBlock, h as CaveatBlockProps, i as Chart, j as ChartContainer, k as ChartContainerProps, m as ChartDimension, p as ChartMeasure, r as ChartProps, s as ChartSwitchControl, t as ChartSwitchControlProps, E as ConfidenceIndicator, F as ConfidenceIndicatorProps, H as DataCoverageBadge, J as DataCoverageBadgeProps, K as DataStateIndicator, L as DataStateIndicatorProps, N as EvidenceGroup, O as EvidenceGroupProps, P as ExecutiveThesis, Q as ExecutiveThesisProps, S as ExportFormat, T as ExportMenu, U as ExportMenuProps, V as ExportOption, X as FunnelChart, Y as FunnelChartProps, Z as FunnelStage, $ as HeatmapCell, a0 as HeatmapChart, a1 as HeatmapChartProps, a3 as InsightBlock, a4 as InsightBlockProps, a5 as KeyMetric, a6 as KeyMetricProps, a7 as LineChart, a8 as LineChartProps, a9 as LineConfig, aa as MBTIDimensions, ab as MBTIRadar, ac as MBTIRadarProps, ae as MBTITypeCount, af as MBTITypeGrid, ag as MBTITypeGridProps, ah as MethodologyNote, ai as MethodologyNoteLabels, aj as MethodologyNoteProps, ak as PieChart, al as PieChartDataItem, am as PieChartProps, ao as ReportShell, ap as ReportShellProps, aq as Select, ar as SelectContent, as as SelectContentProps, at as SelectGroup, au as SelectGroupProps, av as SelectItem, aw as SelectItemProps, ax as SelectProps, ay as SelectSeparator, az as SelectTrigger, aA as SelectTriggerProps, aD as TrendIndicator, aE as TrendIndicatorProps } from './ExportMenu-hEe5MhLq.cjs';
|
|
9
|
-
import '@base-ui/react';
|
|
10
11
|
import '@base-ui/react/dialog';
|
|
11
12
|
import '@base-ui/react/tooltip';
|
|
12
13
|
import '@base-ui/react/menu';
|
|
@@ -451,6 +452,14 @@ interface OutboundLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
|
451
452
|
preserveExistingUTM?: boolean;
|
|
452
453
|
openInNewTab?: boolean;
|
|
453
454
|
disableTracking?: boolean;
|
|
455
|
+
/**
|
|
456
|
+
* Governed UTM parameters. When provided, the link uses the UTM governance
|
|
457
|
+
* system (buildUtmUrl) instead of the legacy appendUTMs approach.
|
|
458
|
+
*
|
|
459
|
+
* Preferred for all new code. Existing usages without utmParams continue
|
|
460
|
+
* to work via the legacy path.
|
|
461
|
+
*/
|
|
462
|
+
utmParams?: UtmParams;
|
|
454
463
|
children: React__default.ReactNode;
|
|
455
464
|
}
|
|
456
465
|
interface OutboundClickEventDetail {
|
|
@@ -464,7 +473,26 @@ interface OutboundClickEventDetail {
|
|
|
464
473
|
}
|
|
465
474
|
declare const OutboundLink: React__default.ForwardRefExoticComponent<OutboundLinkProps & React__default.RefAttributes<HTMLAnchorElement>>;
|
|
466
475
|
|
|
476
|
+
/**
|
|
477
|
+
* Check if a URL is exempt from UTM tagging.
|
|
478
|
+
* Uses both legacy patterns and governed URL classification.
|
|
479
|
+
*/
|
|
467
480
|
declare const isExemptUrl: (urlStr: string) => boolean;
|
|
481
|
+
/**
|
|
482
|
+
* Append governed UTM parameters to a URL using `buildUtmUrl`.
|
|
483
|
+
* Preferred over the legacy `appendUTMs` function.
|
|
484
|
+
*/
|
|
485
|
+
declare const appendGovernedUTMs: (href: string, params: UtmParams, preserveExisting?: boolean) => string;
|
|
486
|
+
/**
|
|
487
|
+
* @deprecated Prefer `appendGovernedUTMs` with governed `UtmParams`.
|
|
488
|
+
*
|
|
489
|
+
* Legacy UTM append function. Uses non-governed defaults:
|
|
490
|
+
* - utm_source = 'salesmind' (not in governed enum)
|
|
491
|
+
* - utm_medium = 'outbound_link' (snake_case, not in governed enum)
|
|
492
|
+
*
|
|
493
|
+
* Retained for backward compatibility. Consumers should migrate to
|
|
494
|
+
* the `utmParams` prop on OutboundLink.
|
|
495
|
+
*/
|
|
468
496
|
declare const appendUTMs: (href: string, context: string, pageSlug: string, options: {
|
|
469
497
|
mediumOverride?: string;
|
|
470
498
|
campaignOverride?: string;
|
|
@@ -1298,4 +1326,4 @@ interface FunnelScalingSenderProps {
|
|
|
1298
1326
|
}
|
|
1299
1327
|
declare const FunnelScalingSender: React__default.FC<FunnelScalingSenderProps>;
|
|
1300
1328
|
|
|
1301
|
-
export { type AnalysisProgress, type BehavioralSignals, ChangeEmail, type ChangeEmailLabels, type ChangeEmailProps, ColorPicker, type ColorPickerProps, CursorSpotlight, type CursorSpotlightProps, DataHighlight, type DataHighlightProps, DataTable, DataTableBody, DataTableCell, DataTableHead, DataTableHeader, type DataTableProps, DataTableRow, type EcosystemConnection, EcosystemDiagram, type EcosystemDiagramProps, type EcosystemLayer, type EngagementTip, type EnterpriseSLA, type EnterpriseSignalCategory, type EnterpriseSignalItem, type EnterpriseSignalStatus, EnterpriseSignaling, type EnterpriseSignalingProps, type EraSentiment, type EvolutionEra, EvolutionTimeline, type EvolutionTimelineProps, FloatingTabBar, type FloatingTabBarProps, type FooterCTA, type FooterLink, type FooterSection, type FooterTrustBadge, ForgotPassword, type ForgotPasswordLabels, type ForgotPasswordProps, FunnelScalingSender, type FunnelScalingSenderProps, InsightCallout, type InsightCalloutProps, IntelligenceBlock, type IntelligenceBlockProps, type IntelligenceCapability, type IntelligenceMetric, type LeadProfile, type LeadProfileState, LeadProfileView, type LeadProfileViewProps, LocaleDropdown, type LocaleDropdownProps, type LocaleOption, Login, type LoginLabels, type LoginProps, LongFormLayout, type LongFormLayoutProps, type MBTIScore, MDXOutboundLink, type NavItem, NavPlacement, Navbar, NavbarActions, NavbarBrand, type NavbarBrandProps, NavbarContent, NavbarItem, type NavbarItemProps, NavbarMegaMenu, NavbarMegaMenuItem, type NavbarMegaMenuItemProps, type NavbarMegaMenuProps, NavbarMegaMenuSection, type NavbarMegaMenuSectionProps, NavbarMobileActions, NavbarMobileNavItem, type NavbarMobileNavItemProps, NavbarMobileSeparator, type NavbarProps, NavbarSearchTrigger, type NavbarSearchTriggerProps, NavbarV2, NavbarV2Actions, NavbarV2Brand, type NavbarV2BrandProps, type NavbarV2Props, NavbarV2Tab, NavbarV2TabMenu, type NavbarV2TabMenuProps, type NavbarV2TabProps, NavbarV2Tabs, type OutboundClickEventDetail, OutboundLink, type OutboundLinkProps, type PartnerBenefit, type PartnerCalcInput, type PartnerCalcOutput, type PartnerDifferentiator, PartnerValueProp, type PartnerValuePropProps, ReadingProgress, type ReadingProgressProps, RevenueAutomationLoop, type RevenueAutomationLoopProps, SectionShellProps, type SeriesEdition, Shell, type ShellProps, Sidebar, SidebarItem, type SidebarItemProps, type SidebarProps, SidebarSection, type SidebarSectionProps, Signup, type SignupLabels, type SignupProps, SiteFooter, type SiteFooterProps, SpotlightCard, type SpotlightCardProps, StarRating, type StarRatingProps, TabItem, type TabItemProps, ThemeSelector, type ThemeSelectorProps, VersionedSeriesNavigator, type VersionedSeriesNavigatorProps, VersionedUpgradeAlert, type VersionedUpgradeAlertProps, VideoLightbox, type VideoLightboxProps, VoidBackground, type VoidBackgroundProps, appendUTMs, isExemptUrl };
|
|
1329
|
+
export { type AnalysisProgress, type BehavioralSignals, ChangeEmail, type ChangeEmailLabels, type ChangeEmailProps, ColorPicker, type ColorPickerProps, CursorSpotlight, type CursorSpotlightProps, DataHighlight, type DataHighlightProps, DataTable, DataTableBody, DataTableCell, DataTableHead, DataTableHeader, type DataTableProps, DataTableRow, type EcosystemConnection, EcosystemDiagram, type EcosystemDiagramProps, type EcosystemLayer, type EngagementTip, type EnterpriseSLA, type EnterpriseSignalCategory, type EnterpriseSignalItem, type EnterpriseSignalStatus, EnterpriseSignaling, type EnterpriseSignalingProps, type EraSentiment, type EvolutionEra, EvolutionTimeline, type EvolutionTimelineProps, FloatingTabBar, type FloatingTabBarProps, type FooterCTA, type FooterLink, type FooterSection, type FooterTrustBadge, ForgotPassword, type ForgotPasswordLabels, type ForgotPasswordProps, FunnelScalingSender, type FunnelScalingSenderProps, InsightCallout, type InsightCalloutProps, IntelligenceBlock, type IntelligenceBlockProps, type IntelligenceCapability, type IntelligenceMetric, type LeadProfile, type LeadProfileState, LeadProfileView, type LeadProfileViewProps, LocaleDropdown, type LocaleDropdownProps, type LocaleOption, Login, type LoginLabels, type LoginProps, LongFormLayout, type LongFormLayoutProps, type MBTIScore, MDXOutboundLink, type NavItem, NavPlacement, Navbar, NavbarActions, NavbarBrand, type NavbarBrandProps, NavbarContent, NavbarItem, type NavbarItemProps, NavbarMegaMenu, NavbarMegaMenuItem, type NavbarMegaMenuItemProps, type NavbarMegaMenuProps, NavbarMegaMenuSection, type NavbarMegaMenuSectionProps, NavbarMobileActions, NavbarMobileNavItem, type NavbarMobileNavItemProps, NavbarMobileSeparator, type NavbarProps, NavbarSearchTrigger, type NavbarSearchTriggerProps, NavbarV2, NavbarV2Actions, NavbarV2Brand, type NavbarV2BrandProps, type NavbarV2Props, NavbarV2Tab, NavbarV2TabMenu, type NavbarV2TabMenuProps, type NavbarV2TabProps, NavbarV2Tabs, type OutboundClickEventDetail, OutboundLink, type OutboundLinkProps, type PartnerBenefit, type PartnerCalcInput, type PartnerCalcOutput, type PartnerDifferentiator, PartnerValueProp, type PartnerValuePropProps, ReadingProgress, type ReadingProgressProps, RevenueAutomationLoop, type RevenueAutomationLoopProps, SectionShellProps, type SeriesEdition, Shell, type ShellProps, Sidebar, SidebarItem, type SidebarItemProps, type SidebarProps, SidebarSection, type SidebarSectionProps, Signup, type SignupLabels, type SignupProps, SiteFooter, type SiteFooterProps, SpotlightCard, type SpotlightCardProps, StarRating, type StarRatingProps, TabItem, type TabItemProps, ThemeSelector, type ThemeSelectorProps, UtmParams, VersionedSeriesNavigator, type VersionedSeriesNavigatorProps, VersionedUpgradeAlert, type VersionedUpgradeAlertProps, VideoLightbox, type VideoLightboxProps, VoidBackground, type VoidBackgroundProps, appendGovernedUTMs, appendUTMs, isExemptUrl };
|
package/dist/index.d.ts
CHANGED
|
@@ -4,9 +4,10 @@ export { Accordion, AccordionContent, AccordionContentProps, AccordionItem, Acco
|
|
|
4
4
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
5
5
|
import { S as SectionShellProps } from './index-B64suAAc.js';
|
|
6
6
|
export { A as AgitationPoint, a as AnnouncementBar, b as AnnouncementBarProps, c as ArchitectureConnection, d as ArchitectureDiagram, e as ArchitectureDiagramProps, f as ArchitectureNode, g as ArchitectureNodeType, h as ArticleCard, i as ArticleCardProps, j as ArticleLayout, k as ArticleLayoutProps, l as Author, m as AuthorBio, n as AuthorBioProps, o as AuthorLink, B as BeforeAfterBlock, p as BeforeAfterBlockProps, q as BeforeAfterItem, r as BeforeAfterSide, s as BookingEmbed, t as BookingEmbedProps, u as BrowserFrame, v as BrowserFrameProps, C as CTASection, w as CTASectionProps, x as CardMetric, y as CaseStudyCard, z as CaseStudyCardProps, D as CaseStudyMetric, E as CaseStudySection, F as CaseStudySectionProps, G as ComparisonColumn, H as ComparisonRow, I as ComparisonTable, J as ComparisonTableProps, K as CompetitorDiff, L as CompetitorDiffItem, M as CompetitorDiffProps, N as ComplianceGrid, O as ComplianceGridProps, P as ComplianceItem, Q as ComplianceStatus, R as ExitIntentOverlay, T as ExitIntentOverlayProps, U as FeatureItem, V as FeatureSection, W as FeatureSectionProps, X as GuaranteeHighlight, Y as GuaranteeHighlightProps, Z as HeroSection, _ as HeroSectionProps, $ as ICPFilter, a0 as ICPFilterItem, a1 as ICPFilterProps, a2 as IntegrationEntry, a3 as IntegrationShowcase, a4 as IntegrationShowcaseProps, a5 as IntentCTA, a6 as IntentCTAProps, a7 as IntentStage, a8 as IntentTriggerType, a9 as LeadCaptureForm, aa as LeadCaptureFormProps, ab as LogoItem, ac as ManifestoAttribution, ad as ManifestoBlock, ae as ManifestoBlockProps, af as Media, ag as MetricCounter, ah as MetricCounterProps, ai as MotionContainer, aj as MotionContainerProps, ak as MotionText, al as MotionTextProps, am as ObjectionFAQ, an as ObjectionFAQProps, ao as ObjectionItem, ap as Platform, aq as PlatformBadge, ar as PlatformBadgeProps, as as PricingCard, at as PricingCardProps, au as PricingFeature, av as PricingSection, aw as PricingSectionProps, ax as PricingToggle, ay as PricingToggleProps, az as ProblemAgitation, aA as ProblemAgitationProps, aB as ProcessTimeline, aC as ProcessTimelineProps, aD as ROICalculator, aE as ROICalculatorProps, aF as ROIComparisonItem, aG as RelatedContent, aH as RelatedContentProps, aI as SectionHeader, aJ as SectionHeaderProps, aK as SectionShell, aL as SecurityBlock, aM as SecurityBlockProps, aN as SecurityCertification, aO as SegmentSwitch, aP as SegmentSwitchProps, aQ as SocialProof, aR as SocialProofCard, aS as SocialProofCardProps, aT as SocialProofCarousel, aU as SocialProofCarouselProps, aV as SocialProofFeatured, aW as SocialProofFeaturedProps, aX as SocialProofGrid, aY as SocialProofGridProps, aZ as SocialProofLogos, a_ as SocialProofLogosProps, a$ as StakeholderContent, b0 as StakeholderDefinition, b1 as StakeholderTabs, b2 as StakeholderTabsProps, b3 as StatItem, b4 as StatsSection, b5 as StatsSectionProps, b6 as StickyActionBar, b7 as StickyActionBarProps, b8 as TOCItem, b9 as TableOfContents, ba as TableOfContentsProps, bb as TimelineStep, bc as ValueAnchor, bd as ValueAnchorInput, be as ValueAnchorOutput, bf as ValueAnchorProps, bg as VerticalVideoGrid, bh as VerticalVideoGridProps, bi as VideoEmbed, bj as VideoEmbedProps } from './index-B64suAAc.js';
|
|
7
|
+
import { U as UtmParams } from './audit-CiyPkxk1.js';
|
|
8
|
+
export { F as FirstTouchAttribution, a as UTM_CAMPAIGNS, b as UTM_CONTENTS, c as UTM_MEDIUMS_ALL, d as UTM_MEDIUMS_APP, e as UTM_MEDIUMS_MESSAGING, f as UTM_MEDIUMS_WEB, g as UTM_SOURCES, h as UTM_SOURCES_REQUIRING_SELLER, i as UTM_TERMS, j as UrlClassification, k as UtmAuditEntry, l as UtmBlockedError, m as UtmCampaign, n as UtmComplianceResult, o as UtmComplianceStatus, p as UtmConfidence, q as UtmContent, r as UtmMedium, s as UtmMediumAppPage, t as UtmMediumMessaging, u as UtmMediumWebPage, v as UtmOverrides, w as UtmSource, x as UtmSourceRequiringSeller, y as UtmTerm, z as buildBlockedError, A as buildUtmUrl, B as classifyAndEnforce, C as classifyUrl, D as createAuditEntry, E as isUtmExempt, G as isValidUtmParams, H as parseUtmParams, I as requiresSellerAttribution, J as requiresUtm, K as toFirstTouchAttribution, L as validateCompliance, M as validateUtmField } from './audit-CiyPkxk1.js';
|
|
7
9
|
export { FormattedDate, FormattedMessage, FormattedNumber, MessageDescriptor, defineMessages } from 'react-intl';
|
|
8
10
|
export { B as BarChart, d as BarChartProps, e as BarConfig, g as CaveatBlock, h as CaveatBlockProps, i as Chart, j as ChartContainer, k as ChartContainerProps, m as ChartDimension, p as ChartMeasure, r as ChartProps, s as ChartSwitchControl, t as ChartSwitchControlProps, E as ConfidenceIndicator, F as ConfidenceIndicatorProps, H as DataCoverageBadge, J as DataCoverageBadgeProps, K as DataStateIndicator, L as DataStateIndicatorProps, N as EvidenceGroup, O as EvidenceGroupProps, P as ExecutiveThesis, Q as ExecutiveThesisProps, S as ExportFormat, T as ExportMenu, U as ExportMenuProps, V as ExportOption, X as FunnelChart, Y as FunnelChartProps, Z as FunnelStage, $ as HeatmapCell, a0 as HeatmapChart, a1 as HeatmapChartProps, a3 as InsightBlock, a4 as InsightBlockProps, a5 as KeyMetric, a6 as KeyMetricProps, a7 as LineChart, a8 as LineChartProps, a9 as LineConfig, aa as MBTIDimensions, ab as MBTIRadar, ac as MBTIRadarProps, ae as MBTITypeCount, af as MBTITypeGrid, ag as MBTITypeGridProps, ah as MethodologyNote, ai as MethodologyNoteLabels, aj as MethodologyNoteProps, ak as PieChart, al as PieChartDataItem, am as PieChartProps, ao as ReportShell, ap as ReportShellProps, aq as Select, ar as SelectContent, as as SelectContentProps, at as SelectGroup, au as SelectGroupProps, av as SelectItem, aw as SelectItemProps, ax as SelectProps, ay as SelectSeparator, az as SelectTrigger, aA as SelectTriggerProps, aD as TrendIndicator, aE as TrendIndicatorProps } from './ExportMenu-hEe5MhLq.js';
|
|
9
|
-
import '@base-ui/react';
|
|
10
11
|
import '@base-ui/react/dialog';
|
|
11
12
|
import '@base-ui/react/tooltip';
|
|
12
13
|
import '@base-ui/react/menu';
|
|
@@ -451,6 +452,14 @@ interface OutboundLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
|
451
452
|
preserveExistingUTM?: boolean;
|
|
452
453
|
openInNewTab?: boolean;
|
|
453
454
|
disableTracking?: boolean;
|
|
455
|
+
/**
|
|
456
|
+
* Governed UTM parameters. When provided, the link uses the UTM governance
|
|
457
|
+
* system (buildUtmUrl) instead of the legacy appendUTMs approach.
|
|
458
|
+
*
|
|
459
|
+
* Preferred for all new code. Existing usages without utmParams continue
|
|
460
|
+
* to work via the legacy path.
|
|
461
|
+
*/
|
|
462
|
+
utmParams?: UtmParams;
|
|
454
463
|
children: React__default.ReactNode;
|
|
455
464
|
}
|
|
456
465
|
interface OutboundClickEventDetail {
|
|
@@ -464,7 +473,26 @@ interface OutboundClickEventDetail {
|
|
|
464
473
|
}
|
|
465
474
|
declare const OutboundLink: React__default.ForwardRefExoticComponent<OutboundLinkProps & React__default.RefAttributes<HTMLAnchorElement>>;
|
|
466
475
|
|
|
476
|
+
/**
|
|
477
|
+
* Check if a URL is exempt from UTM tagging.
|
|
478
|
+
* Uses both legacy patterns and governed URL classification.
|
|
479
|
+
*/
|
|
467
480
|
declare const isExemptUrl: (urlStr: string) => boolean;
|
|
481
|
+
/**
|
|
482
|
+
* Append governed UTM parameters to a URL using `buildUtmUrl`.
|
|
483
|
+
* Preferred over the legacy `appendUTMs` function.
|
|
484
|
+
*/
|
|
485
|
+
declare const appendGovernedUTMs: (href: string, params: UtmParams, preserveExisting?: boolean) => string;
|
|
486
|
+
/**
|
|
487
|
+
* @deprecated Prefer `appendGovernedUTMs` with governed `UtmParams`.
|
|
488
|
+
*
|
|
489
|
+
* Legacy UTM append function. Uses non-governed defaults:
|
|
490
|
+
* - utm_source = 'salesmind' (not in governed enum)
|
|
491
|
+
* - utm_medium = 'outbound_link' (snake_case, not in governed enum)
|
|
492
|
+
*
|
|
493
|
+
* Retained for backward compatibility. Consumers should migrate to
|
|
494
|
+
* the `utmParams` prop on OutboundLink.
|
|
495
|
+
*/
|
|
468
496
|
declare const appendUTMs: (href: string, context: string, pageSlug: string, options: {
|
|
469
497
|
mediumOverride?: string;
|
|
470
498
|
campaignOverride?: string;
|
|
@@ -1298,4 +1326,4 @@ interface FunnelScalingSenderProps {
|
|
|
1298
1326
|
}
|
|
1299
1327
|
declare const FunnelScalingSender: React__default.FC<FunnelScalingSenderProps>;
|
|
1300
1328
|
|
|
1301
|
-
export { type AnalysisProgress, type BehavioralSignals, ChangeEmail, type ChangeEmailLabels, type ChangeEmailProps, ColorPicker, type ColorPickerProps, CursorSpotlight, type CursorSpotlightProps, DataHighlight, type DataHighlightProps, DataTable, DataTableBody, DataTableCell, DataTableHead, DataTableHeader, type DataTableProps, DataTableRow, type EcosystemConnection, EcosystemDiagram, type EcosystemDiagramProps, type EcosystemLayer, type EngagementTip, type EnterpriseSLA, type EnterpriseSignalCategory, type EnterpriseSignalItem, type EnterpriseSignalStatus, EnterpriseSignaling, type EnterpriseSignalingProps, type EraSentiment, type EvolutionEra, EvolutionTimeline, type EvolutionTimelineProps, FloatingTabBar, type FloatingTabBarProps, type FooterCTA, type FooterLink, type FooterSection, type FooterTrustBadge, ForgotPassword, type ForgotPasswordLabels, type ForgotPasswordProps, FunnelScalingSender, type FunnelScalingSenderProps, InsightCallout, type InsightCalloutProps, IntelligenceBlock, type IntelligenceBlockProps, type IntelligenceCapability, type IntelligenceMetric, type LeadProfile, type LeadProfileState, LeadProfileView, type LeadProfileViewProps, LocaleDropdown, type LocaleDropdownProps, type LocaleOption, Login, type LoginLabels, type LoginProps, LongFormLayout, type LongFormLayoutProps, type MBTIScore, MDXOutboundLink, type NavItem, NavPlacement, Navbar, NavbarActions, NavbarBrand, type NavbarBrandProps, NavbarContent, NavbarItem, type NavbarItemProps, NavbarMegaMenu, NavbarMegaMenuItem, type NavbarMegaMenuItemProps, type NavbarMegaMenuProps, NavbarMegaMenuSection, type NavbarMegaMenuSectionProps, NavbarMobileActions, NavbarMobileNavItem, type NavbarMobileNavItemProps, NavbarMobileSeparator, type NavbarProps, NavbarSearchTrigger, type NavbarSearchTriggerProps, NavbarV2, NavbarV2Actions, NavbarV2Brand, type NavbarV2BrandProps, type NavbarV2Props, NavbarV2Tab, NavbarV2TabMenu, type NavbarV2TabMenuProps, type NavbarV2TabProps, NavbarV2Tabs, type OutboundClickEventDetail, OutboundLink, type OutboundLinkProps, type PartnerBenefit, type PartnerCalcInput, type PartnerCalcOutput, type PartnerDifferentiator, PartnerValueProp, type PartnerValuePropProps, ReadingProgress, type ReadingProgressProps, RevenueAutomationLoop, type RevenueAutomationLoopProps, SectionShellProps, type SeriesEdition, Shell, type ShellProps, Sidebar, SidebarItem, type SidebarItemProps, type SidebarProps, SidebarSection, type SidebarSectionProps, Signup, type SignupLabels, type SignupProps, SiteFooter, type SiteFooterProps, SpotlightCard, type SpotlightCardProps, StarRating, type StarRatingProps, TabItem, type TabItemProps, ThemeSelector, type ThemeSelectorProps, VersionedSeriesNavigator, type VersionedSeriesNavigatorProps, VersionedUpgradeAlert, type VersionedUpgradeAlertProps, VideoLightbox, type VideoLightboxProps, VoidBackground, type VoidBackgroundProps, appendUTMs, isExemptUrl };
|
|
1329
|
+
export { type AnalysisProgress, type BehavioralSignals, ChangeEmail, type ChangeEmailLabels, type ChangeEmailProps, ColorPicker, type ColorPickerProps, CursorSpotlight, type CursorSpotlightProps, DataHighlight, type DataHighlightProps, DataTable, DataTableBody, DataTableCell, DataTableHead, DataTableHeader, type DataTableProps, DataTableRow, type EcosystemConnection, EcosystemDiagram, type EcosystemDiagramProps, type EcosystemLayer, type EngagementTip, type EnterpriseSLA, type EnterpriseSignalCategory, type EnterpriseSignalItem, type EnterpriseSignalStatus, EnterpriseSignaling, type EnterpriseSignalingProps, type EraSentiment, type EvolutionEra, EvolutionTimeline, type EvolutionTimelineProps, FloatingTabBar, type FloatingTabBarProps, type FooterCTA, type FooterLink, type FooterSection, type FooterTrustBadge, ForgotPassword, type ForgotPasswordLabels, type ForgotPasswordProps, FunnelScalingSender, type FunnelScalingSenderProps, InsightCallout, type InsightCalloutProps, IntelligenceBlock, type IntelligenceBlockProps, type IntelligenceCapability, type IntelligenceMetric, type LeadProfile, type LeadProfileState, LeadProfileView, type LeadProfileViewProps, LocaleDropdown, type LocaleDropdownProps, type LocaleOption, Login, type LoginLabels, type LoginProps, LongFormLayout, type LongFormLayoutProps, type MBTIScore, MDXOutboundLink, type NavItem, NavPlacement, Navbar, NavbarActions, NavbarBrand, type NavbarBrandProps, NavbarContent, NavbarItem, type NavbarItemProps, NavbarMegaMenu, NavbarMegaMenuItem, type NavbarMegaMenuItemProps, type NavbarMegaMenuProps, NavbarMegaMenuSection, type NavbarMegaMenuSectionProps, NavbarMobileActions, NavbarMobileNavItem, type NavbarMobileNavItemProps, NavbarMobileSeparator, type NavbarProps, NavbarSearchTrigger, type NavbarSearchTriggerProps, NavbarV2, NavbarV2Actions, NavbarV2Brand, type NavbarV2BrandProps, type NavbarV2Props, NavbarV2Tab, NavbarV2TabMenu, type NavbarV2TabMenuProps, type NavbarV2TabProps, NavbarV2Tabs, type OutboundClickEventDetail, OutboundLink, type OutboundLinkProps, type PartnerBenefit, type PartnerCalcInput, type PartnerCalcOutput, type PartnerDifferentiator, PartnerValueProp, type PartnerValuePropProps, ReadingProgress, type ReadingProgressProps, RevenueAutomationLoop, type RevenueAutomationLoopProps, SectionShellProps, type SeriesEdition, Shell, type ShellProps, Sidebar, SidebarItem, type SidebarItemProps, type SidebarProps, SidebarSection, type SidebarSectionProps, Signup, type SignupLabels, type SignupProps, SiteFooter, type SiteFooterProps, SpotlightCard, type SpotlightCardProps, StarRating, type StarRatingProps, TabItem, type TabItemProps, ThemeSelector, type ThemeSelectorProps, UtmParams, VersionedSeriesNavigator, type VersionedSeriesNavigatorProps, VersionedUpgradeAlert, type VersionedUpgradeAlertProps, VideoLightbox, type VideoLightboxProps, VoidBackground, type VoidBackgroundProps, appendGovernedUTMs, appendUTMs, isExemptUrl };
|
package/dist/index.js
CHANGED
|
@@ -10,7 +10,7 @@ import { Tooltip as Tooltip$1 } from '@base-ui/react/tooltip';
|
|
|
10
10
|
import ReactDOM, { createPortal } from 'react-dom';
|
|
11
11
|
import { AnimatePresence, motion, useInView, useReducedMotion } from 'framer-motion';
|
|
12
12
|
import { Tabs as Tabs$1 } from '@base-ui/react/tabs';
|
|
13
|
-
import { ArrowRight, X, Check, Clock, Sun, Moon } from 'lucide-react';
|
|
13
|
+
import { ArrowRight, X, Check, FileText, Clock, Sun, Moon } from 'lucide-react';
|
|
14
14
|
import { defineMessages, useIntl, IntlProvider } from 'react-intl';
|
|
15
15
|
export { FormattedDate, FormattedMessage, FormattedNumber, defineMessages } from 'react-intl';
|
|
16
16
|
import { Menu } from '@base-ui/react/menu';
|
|
@@ -4043,23 +4043,146 @@ var PlatformBadge = forwardRef(
|
|
|
4043
4043
|
}
|
|
4044
4044
|
);
|
|
4045
4045
|
PlatformBadge.displayName = "PlatformBadge";
|
|
4046
|
+
var UtmContext = createContext(null);
|
|
4047
|
+
|
|
4048
|
+
// src/web/utm/useUtmDefaults.ts
|
|
4049
|
+
function useUtmDefaults() {
|
|
4050
|
+
return useContext(UtmContext);
|
|
4051
|
+
}
|
|
4052
|
+
|
|
4053
|
+
// src/web/utm/builders.ts
|
|
4054
|
+
var PLACEHOLDER_ORIGIN = "https://__placeholder__.internal";
|
|
4055
|
+
function buildUtmUrl(baseUrl, params) {
|
|
4056
|
+
const isRelative = baseUrl.startsWith("/");
|
|
4057
|
+
let url;
|
|
4058
|
+
try {
|
|
4059
|
+
url = isRelative ? new URL(baseUrl, PLACEHOLDER_ORIGIN) : new URL(baseUrl);
|
|
4060
|
+
} catch {
|
|
4061
|
+
return baseUrl;
|
|
4062
|
+
}
|
|
4063
|
+
const existingParams = [];
|
|
4064
|
+
url.searchParams.forEach((value, key) => {
|
|
4065
|
+
existingParams.push([key, value]);
|
|
4066
|
+
});
|
|
4067
|
+
for (const [key] of existingParams) {
|
|
4068
|
+
url.searchParams.delete(key);
|
|
4069
|
+
}
|
|
4070
|
+
for (const [key, value] of existingParams) {
|
|
4071
|
+
if (!key.startsWith("utm_")) {
|
|
4072
|
+
url.searchParams.set(key, value);
|
|
4073
|
+
}
|
|
4074
|
+
}
|
|
4075
|
+
url.searchParams.set("utm_source", params.source);
|
|
4076
|
+
url.searchParams.set("utm_medium", params.medium);
|
|
4077
|
+
url.searchParams.set("utm_campaign", params.campaign);
|
|
4078
|
+
if (params.term !== void 0) {
|
|
4079
|
+
url.searchParams.set("utm_term", params.term);
|
|
4080
|
+
}
|
|
4081
|
+
if (params.content !== void 0) {
|
|
4082
|
+
url.searchParams.set("utm_content", params.content);
|
|
4083
|
+
}
|
|
4084
|
+
if (isRelative) {
|
|
4085
|
+
return url.href.replace(PLACEHOLDER_ORIGIN, "");
|
|
4086
|
+
}
|
|
4087
|
+
return url.href;
|
|
4088
|
+
}
|
|
4089
|
+
|
|
4090
|
+
// src/web/utm/classifiers.ts
|
|
4091
|
+
var INTERNAL_PATTERNS = [
|
|
4092
|
+
/^\/(?!\/)/,
|
|
4093
|
+
// Relative paths
|
|
4094
|
+
/^https?:\/\/(www\.)?sales-mind\.ai/i,
|
|
4095
|
+
// Marketing site
|
|
4096
|
+
/^https?:\/\/app\.sales-mind\.ai/i,
|
|
4097
|
+
// Web app
|
|
4098
|
+
/^https?:\/\/apps\.sales-mind\.ai/i,
|
|
4099
|
+
// Web app (legacy)
|
|
4100
|
+
/^https?:\/\/meet\.sales-mind\.ai/i,
|
|
4101
|
+
// Booking
|
|
4102
|
+
/^https?:\/\/docs\.sales-mind\.ai/i
|
|
4103
|
+
// Docs
|
|
4104
|
+
];
|
|
4105
|
+
var SYSTEM_PATTERNS = [
|
|
4106
|
+
/^https?:\/\/.*\/api\//i,
|
|
4107
|
+
// API endpoints
|
|
4108
|
+
/^https?:\/\/.*\/webhook/i,
|
|
4109
|
+
// Webhooks
|
|
4110
|
+
/^https?:\/\/.*\/oauth/i,
|
|
4111
|
+
// OAuth callbacks
|
|
4112
|
+
/^https?:\/\/.*\/callback/i,
|
|
4113
|
+
// Callbacks
|
|
4114
|
+
/^https?:\/\/.*\.supabase\.(co|com)/i,
|
|
4115
|
+
// Supabase
|
|
4116
|
+
/^https?:\/\/.*\.firebaseapp\.com/i,
|
|
4117
|
+
// Firebase
|
|
4118
|
+
/^https?:\/\/.*\.cloudfunctions\.net/i
|
|
4119
|
+
// Cloud Functions
|
|
4120
|
+
];
|
|
4121
|
+
var ASSET_PATTERNS = [
|
|
4122
|
+
/\.(css|js|mjs|map|woff2?|ttf|eot|svg|png|jpe?g|gif|webp|avif|ico|pdf)(\?.*)?$/i
|
|
4123
|
+
];
|
|
4124
|
+
var CONVERSION_PATTERNS = [
|
|
4125
|
+
/^https?:\/\/(www\.)?calendly\.com/i,
|
|
4126
|
+
/^https?:\/\/(checkout\.)?stripe\.com/i,
|
|
4127
|
+
/^https?:\/\/buy\.stripe\.com/i,
|
|
4128
|
+
/^https?:\/\/chromewebstore\.google\.com/i,
|
|
4129
|
+
/^https?:\/\/meet\.sales-mind\.ai/i
|
|
4130
|
+
];
|
|
4131
|
+
var PROTOCOL_EXEMPT = [
|
|
4132
|
+
/^mailto:/i,
|
|
4133
|
+
/^tel:/i,
|
|
4134
|
+
/^#/,
|
|
4135
|
+
/^javascript:/i
|
|
4136
|
+
];
|
|
4137
|
+
function classifyUrl(url) {
|
|
4138
|
+
if (PROTOCOL_EXEMPT.some((p) => p.test(url))) return "protocol";
|
|
4139
|
+
if (ASSET_PATTERNS.some((p) => p.test(url))) return "asset";
|
|
4140
|
+
if (SYSTEM_PATTERNS.some((p) => p.test(url))) return "system";
|
|
4141
|
+
if (CONVERSION_PATTERNS.some((p) => p.test(url))) return "conversion";
|
|
4142
|
+
if (INTERNAL_PATTERNS.some((p) => p.test(url))) return "internal";
|
|
4143
|
+
return "external";
|
|
4144
|
+
}
|
|
4145
|
+
function requiresUtm(url) {
|
|
4146
|
+
const classification = classifyUrl(url);
|
|
4147
|
+
return classification === "external" || classification === "conversion";
|
|
4148
|
+
}
|
|
4149
|
+
function isUtmExempt(url) {
|
|
4150
|
+
const classification = classifyUrl(url);
|
|
4151
|
+
return classification === "protocol" || classification === "asset" || classification === "system" || classification === "internal";
|
|
4152
|
+
}
|
|
4046
4153
|
|
|
4047
4154
|
// src/components/OutboundLink/outbound-link-utils.ts
|
|
4048
|
-
var
|
|
4155
|
+
var LEGACY_UTM_SOURCE = "salesmind";
|
|
4049
4156
|
var EXEMPT_PATTERNS = [
|
|
4050
4157
|
/^https?:\/\/(www\.)?(stripe\.com|checkout\.stripe\.com|paypal\.com)/i,
|
|
4051
4158
|
/^https?:\/\/(www\.)?github\.com\/login\/oauth/i
|
|
4052
4159
|
];
|
|
4053
4160
|
var isExemptUrl = (urlStr) => {
|
|
4054
4161
|
if (urlStr.startsWith("mailto:") || urlStr.startsWith("tel:")) return true;
|
|
4162
|
+
const classification = classifyUrl(urlStr);
|
|
4163
|
+
if (classification === "system" || classification === "protocol" || classification === "asset") {
|
|
4164
|
+
return true;
|
|
4165
|
+
}
|
|
4055
4166
|
return EXEMPT_PATTERNS.some((pattern) => pattern.test(urlStr));
|
|
4056
4167
|
};
|
|
4168
|
+
var appendGovernedUTMs = (href, params, preserveExisting = true) => {
|
|
4169
|
+
try {
|
|
4170
|
+
const url = new URL(href);
|
|
4171
|
+
if (preserveExisting) {
|
|
4172
|
+
const hasAll = url.searchParams.has("utm_source") && url.searchParams.has("utm_medium") && url.searchParams.has("utm_campaign");
|
|
4173
|
+
if (hasAll) return href;
|
|
4174
|
+
}
|
|
4175
|
+
return buildUtmUrl(href, params);
|
|
4176
|
+
} catch {
|
|
4177
|
+
return href;
|
|
4178
|
+
}
|
|
4179
|
+
};
|
|
4057
4180
|
var appendUTMs = (href, context, pageSlug, options) => {
|
|
4058
4181
|
try {
|
|
4059
4182
|
const url = new URL(href);
|
|
4060
4183
|
const { mediumOverride = "outbound_link", campaignOverride, preserveExisting = true } = options;
|
|
4061
4184
|
const utms = {
|
|
4062
|
-
utm_source:
|
|
4185
|
+
utm_source: LEGACY_UTM_SOURCE,
|
|
4063
4186
|
utm_medium: mediumOverride,
|
|
4064
4187
|
utm_campaign: campaignOverride || pageSlug,
|
|
4065
4188
|
utm_content: context
|
|
@@ -4086,10 +4209,13 @@ var OutboundLink = forwardRef(
|
|
|
4086
4209
|
preserveExistingUTM = true,
|
|
4087
4210
|
openInNewTab = true,
|
|
4088
4211
|
disableTracking = false,
|
|
4212
|
+
utmParams,
|
|
4089
4213
|
onClick,
|
|
4090
4214
|
children,
|
|
4091
4215
|
...props
|
|
4092
4216
|
}, ref) => {
|
|
4217
|
+
const contextParams = useUtmDefaults();
|
|
4218
|
+
const resolvedUtmParams = utmParams ?? contextParams;
|
|
4093
4219
|
let hostname = "";
|
|
4094
4220
|
try {
|
|
4095
4221
|
const url = new URL(href);
|
|
@@ -4114,16 +4240,20 @@ var OutboundLink = forwardRef(
|
|
|
4114
4240
|
}
|
|
4115
4241
|
const isExempt = isExemptUrl(href) || disableTracking;
|
|
4116
4242
|
if (isExternal && !isExempt) {
|
|
4117
|
-
|
|
4118
|
-
|
|
4119
|
-
|
|
4120
|
-
|
|
4121
|
-
|
|
4122
|
-
|
|
4243
|
+
if (resolvedUtmParams) {
|
|
4244
|
+
setFinalHref(appendGovernedUTMs(href, resolvedUtmParams, preserveExistingUTM));
|
|
4245
|
+
} else {
|
|
4246
|
+
const pageSlug = window.location.pathname.replace(/^\/|\/$/g, "") || "home";
|
|
4247
|
+
setFinalHref(appendUTMs(href, context, pageSlug, {
|
|
4248
|
+
mediumOverride: currentMedium,
|
|
4249
|
+
campaignOverride,
|
|
4250
|
+
preserveExisting: preserveExistingUTM
|
|
4251
|
+
}));
|
|
4252
|
+
}
|
|
4123
4253
|
} else {
|
|
4124
4254
|
setFinalHref(href);
|
|
4125
4255
|
}
|
|
4126
|
-
}, [href, context, mediumOverride, campaignOverride, preserveExistingUTM, disableTracking]);
|
|
4256
|
+
}, [href, context, mediumOverride, campaignOverride, preserveExistingUTM, disableTracking, resolvedUtmParams]);
|
|
4127
4257
|
const handleClick = (e) => {
|
|
4128
4258
|
if (typeof window === "undefined" || disableTracking) {
|
|
4129
4259
|
onClick?.(e);
|
|
@@ -5897,7 +6027,7 @@ var ArticleCard = forwardRef(
|
|
|
5897
6027
|
onClick: handleClick,
|
|
5898
6028
|
...props,
|
|
5899
6029
|
children: [
|
|
5900
|
-
imageUrl
|
|
6030
|
+
imageUrl ? /* @__PURE__ */ jsxs("div", { className: "ds-article-card__image-wrapper", children: [
|
|
5901
6031
|
/* @__PURE__ */ jsx(
|
|
5902
6032
|
"img",
|
|
5903
6033
|
{
|
|
@@ -5908,9 +6038,11 @@ var ArticleCard = forwardRef(
|
|
|
5908
6038
|
}
|
|
5909
6039
|
),
|
|
5910
6040
|
category && /* @__PURE__ */ jsx("span", { className: "ds-article-card__category-badge", children: category })
|
|
6041
|
+
] }) : /* @__PURE__ */ jsxs("div", { className: "ds-article-card__placeholder", children: [
|
|
6042
|
+
/* @__PURE__ */ jsx(FileText, { className: "ds-article-card__placeholder-icon", "aria-hidden": "true" }),
|
|
6043
|
+
category && /* @__PURE__ */ jsx("span", { className: "ds-article-card__category-badge", children: category })
|
|
5911
6044
|
] }),
|
|
5912
6045
|
/* @__PURE__ */ jsxs("div", { className: "ds-article-card__content", children: [
|
|
5913
|
-
!imageUrl && category && /* @__PURE__ */ jsx("span", { className: "ds-article-card__category-text", children: category }),
|
|
5914
6046
|
/* @__PURE__ */ jsx("h3", { className: "ds-article-card__title", children: title }),
|
|
5915
6047
|
/* @__PURE__ */ jsx("p", { className: "ds-article-card__excerpt", children: excerpt }),
|
|
5916
6048
|
/* @__PURE__ */ jsxs("div", { className: "ds-article-card__meta", children: [
|
|
@@ -16685,6 +16817,265 @@ function JsonIcon() {
|
|
|
16685
16817
|
);
|
|
16686
16818
|
}
|
|
16687
16819
|
|
|
16688
|
-
|
|
16689
|
-
|
|
16820
|
+
// src/web/utm/constants.ts
|
|
16821
|
+
var UTM_SOURCES = [
|
|
16822
|
+
"linkedin",
|
|
16823
|
+
"whatsapp",
|
|
16824
|
+
"intercom",
|
|
16825
|
+
"email",
|
|
16826
|
+
"website",
|
|
16827
|
+
"app",
|
|
16828
|
+
"chromeStore",
|
|
16829
|
+
"stripe",
|
|
16830
|
+
"direct"
|
|
16831
|
+
];
|
|
16832
|
+
var UTM_MEDIUMS_MESSAGING = [
|
|
16833
|
+
"dm",
|
|
16834
|
+
"group",
|
|
16835
|
+
"email",
|
|
16836
|
+
"inAppChat",
|
|
16837
|
+
"organicPost",
|
|
16838
|
+
"paidAd",
|
|
16839
|
+
"qrCode",
|
|
16840
|
+
"redirect",
|
|
16841
|
+
"storeListing"
|
|
16842
|
+
];
|
|
16843
|
+
var UTM_MEDIUMS_APP = [
|
|
16844
|
+
"appHome",
|
|
16845
|
+
"appDashboard",
|
|
16846
|
+
"appInbox",
|
|
16847
|
+
"appContacts",
|
|
16848
|
+
"appCampaigns",
|
|
16849
|
+
"appSettings",
|
|
16850
|
+
"appBilling",
|
|
16851
|
+
"appCheckout",
|
|
16852
|
+
"appOnboarding",
|
|
16853
|
+
"appSupport",
|
|
16854
|
+
"appCalendar"
|
|
16855
|
+
];
|
|
16856
|
+
var UTM_MEDIUMS_WEB = [
|
|
16857
|
+
"webHome",
|
|
16858
|
+
"webDemo",
|
|
16859
|
+
"webPricing",
|
|
16860
|
+
"webFeatures",
|
|
16861
|
+
"webUseCase",
|
|
16862
|
+
"webSolution",
|
|
16863
|
+
"webIndustry",
|
|
16864
|
+
"webIntegrations",
|
|
16865
|
+
"webBlog",
|
|
16866
|
+
"webBlogPost",
|
|
16867
|
+
"webLanding",
|
|
16868
|
+
"webComparison",
|
|
16869
|
+
"webCaseStudy",
|
|
16870
|
+
"webAbout",
|
|
16871
|
+
"webContact",
|
|
16872
|
+
"webCareers",
|
|
16873
|
+
"webLegal",
|
|
16874
|
+
"webDocs",
|
|
16875
|
+
"webAffiliate"
|
|
16876
|
+
];
|
|
16877
|
+
var UTM_MEDIUMS_ALL = [
|
|
16878
|
+
...UTM_MEDIUMS_MESSAGING,
|
|
16879
|
+
...UTM_MEDIUMS_APP,
|
|
16880
|
+
...UTM_MEDIUMS_WEB
|
|
16881
|
+
];
|
|
16882
|
+
var UTM_CAMPAIGNS = [
|
|
16883
|
+
"discoveryCall",
|
|
16884
|
+
"demo",
|
|
16885
|
+
"trial",
|
|
16886
|
+
"onboarding",
|
|
16887
|
+
"upgrade",
|
|
16888
|
+
"renewal",
|
|
16889
|
+
"retention",
|
|
16890
|
+
"accountSupport",
|
|
16891
|
+
"supportCall",
|
|
16892
|
+
"partnerCall",
|
|
16893
|
+
"hiring",
|
|
16894
|
+
"interviewCall"
|
|
16895
|
+
];
|
|
16896
|
+
var UTM_TERMS = [
|
|
16897
|
+
"julienGadea",
|
|
16898
|
+
"bramSmith",
|
|
16899
|
+
"florentDupont",
|
|
16900
|
+
"sawLin",
|
|
16901
|
+
"evaSupport",
|
|
16902
|
+
"team",
|
|
16903
|
+
"auto"
|
|
16904
|
+
];
|
|
16905
|
+
var UTM_CONTENTS = [
|
|
16906
|
+
"ctaPrimary",
|
|
16907
|
+
"ctaSecondary",
|
|
16908
|
+
"ctaHeader",
|
|
16909
|
+
"ctaFooter",
|
|
16910
|
+
"ctaInline",
|
|
16911
|
+
"buttonPrimary",
|
|
16912
|
+
"buttonSecondary",
|
|
16913
|
+
"banner",
|
|
16914
|
+
"popup",
|
|
16915
|
+
"variantA",
|
|
16916
|
+
"variantB",
|
|
16917
|
+
"variantC"
|
|
16918
|
+
];
|
|
16919
|
+
var UTM_SOURCES_REQUIRING_SELLER = [
|
|
16920
|
+
"linkedin",
|
|
16921
|
+
"whatsapp",
|
|
16922
|
+
"intercom",
|
|
16923
|
+
"email"
|
|
16924
|
+
];
|
|
16925
|
+
|
|
16926
|
+
// src/web/utm/validators.ts
|
|
16927
|
+
function validateUtmField(field, value) {
|
|
16928
|
+
switch (field) {
|
|
16929
|
+
case "source":
|
|
16930
|
+
return UTM_SOURCES.includes(value);
|
|
16931
|
+
case "medium":
|
|
16932
|
+
return UTM_MEDIUMS_ALL.includes(value);
|
|
16933
|
+
case "campaign":
|
|
16934
|
+
return UTM_CAMPAIGNS.includes(value);
|
|
16935
|
+
case "term":
|
|
16936
|
+
return UTM_TERMS.includes(value);
|
|
16937
|
+
case "content":
|
|
16938
|
+
return UTM_CONTENTS.includes(value);
|
|
16939
|
+
default:
|
|
16940
|
+
return false;
|
|
16941
|
+
}
|
|
16942
|
+
}
|
|
16943
|
+
function isValidUtmParams(params) {
|
|
16944
|
+
if (!params.source || !params.medium || !params.campaign) {
|
|
16945
|
+
return false;
|
|
16946
|
+
}
|
|
16947
|
+
if (!validateUtmField("source", params.source)) return false;
|
|
16948
|
+
if (!validateUtmField("medium", params.medium)) return false;
|
|
16949
|
+
if (!validateUtmField("campaign", params.campaign)) return false;
|
|
16950
|
+
if (params.term !== void 0 && !validateUtmField("term", params.term)) return false;
|
|
16951
|
+
if (params.content !== void 0 && !validateUtmField("content", params.content)) return false;
|
|
16952
|
+
return true;
|
|
16953
|
+
}
|
|
16954
|
+
function validateCompliance(url, params) {
|
|
16955
|
+
const errors = [];
|
|
16956
|
+
const classification = classifyUrl(url);
|
|
16957
|
+
const needsUtm = requiresUtm(url);
|
|
16958
|
+
if (!needsUtm) {
|
|
16959
|
+
return {
|
|
16960
|
+
status: "compliant",
|
|
16961
|
+
url,
|
|
16962
|
+
params: params ?? null,
|
|
16963
|
+
errors: []
|
|
16964
|
+
};
|
|
16965
|
+
}
|
|
16966
|
+
if (!params) {
|
|
16967
|
+
return {
|
|
16968
|
+
status: "blocked",
|
|
16969
|
+
url,
|
|
16970
|
+
params: null,
|
|
16971
|
+
errors: [`URL classified as '${classification}' requires UTM parameters but none provided`]
|
|
16972
|
+
};
|
|
16973
|
+
}
|
|
16974
|
+
if (!params.source) errors.push("Missing required field: utm_source");
|
|
16975
|
+
if (!params.medium) errors.push("Missing required field: utm_medium");
|
|
16976
|
+
if (!params.campaign) errors.push("Missing required field: utm_campaign");
|
|
16977
|
+
if (params.source && !validateUtmField("source", params.source)) {
|
|
16978
|
+
errors.push(`Invalid utm_source: '${params.source}'. Must be one of: ${UTM_SOURCES.join(", ")}`);
|
|
16979
|
+
}
|
|
16980
|
+
if (params.medium && !validateUtmField("medium", params.medium)) {
|
|
16981
|
+
errors.push(`Invalid utm_medium: '${params.medium}'. Must be one of governed enum values`);
|
|
16982
|
+
}
|
|
16983
|
+
if (params.campaign && !validateUtmField("campaign", params.campaign)) {
|
|
16984
|
+
errors.push(`Invalid utm_campaign: '${params.campaign}'. Must be one of: ${UTM_CAMPAIGNS.join(", ")}`);
|
|
16985
|
+
}
|
|
16986
|
+
if (params.term !== void 0 && params.term && !validateUtmField("term", params.term)) {
|
|
16987
|
+
errors.push(`Invalid utm_term: '${params.term}'. Must be one of: ${UTM_TERMS.join(", ")}`);
|
|
16988
|
+
}
|
|
16989
|
+
if (params.content !== void 0 && params.content && !validateUtmField("content", params.content)) {
|
|
16990
|
+
errors.push(`Invalid utm_content: '${params.content}'. Must be one of: ${UTM_CONTENTS.join(", ")}`);
|
|
16991
|
+
}
|
|
16992
|
+
const allValues = [];
|
|
16993
|
+
if (params.source) allValues.push(params.source);
|
|
16994
|
+
if (params.medium) allValues.push(params.medium);
|
|
16995
|
+
if (params.campaign) allValues.push(params.campaign);
|
|
16996
|
+
if (params.term) allValues.push(params.term);
|
|
16997
|
+
if (params.content) allValues.push(params.content);
|
|
16998
|
+
for (const value of allValues) {
|
|
16999
|
+
if (/\s/.test(value)) errors.push(`Value '${value}' contains spaces`);
|
|
17000
|
+
if (/_/.test(value)) errors.push(`Value '${value}' contains underscores`);
|
|
17001
|
+
if (/-/.test(value)) errors.push(`Value '${value}' contains hyphens`);
|
|
17002
|
+
if (/[^\x20-\x7E]/.test(value)) errors.push(`Value '${value}' contains non-ASCII characters`);
|
|
17003
|
+
if (value === value.toUpperCase() && value.length > 1) errors.push(`Value '${value}' is ALL CAPS`);
|
|
17004
|
+
}
|
|
17005
|
+
const status = errors.length === 0 ? "compliant" : "blocked";
|
|
17006
|
+
return { status, url, params, errors };
|
|
17007
|
+
}
|
|
17008
|
+
function classifyAndEnforce(url, params) {
|
|
17009
|
+
return validateCompliance(url, params);
|
|
17010
|
+
}
|
|
17011
|
+
function buildBlockedError(reason, url) {
|
|
17012
|
+
return {
|
|
17013
|
+
status: "UTM_COMPLIANCE_BLOCKED",
|
|
17014
|
+
reason,
|
|
17015
|
+
requiredFix: reason,
|
|
17016
|
+
correctedExample: url ?? null
|
|
17017
|
+
};
|
|
17018
|
+
}
|
|
17019
|
+
|
|
17020
|
+
// src/web/utm/attribution.ts
|
|
17021
|
+
function parseUtmParams(search) {
|
|
17022
|
+
if (!search) return {};
|
|
17023
|
+
const params = new URLSearchParams(search);
|
|
17024
|
+
const result = {};
|
|
17025
|
+
const source = params.get("utm_source");
|
|
17026
|
+
if (source && UTM_SOURCES.includes(source)) {
|
|
17027
|
+
result.source = source;
|
|
17028
|
+
}
|
|
17029
|
+
const medium = params.get("utm_medium");
|
|
17030
|
+
if (medium) {
|
|
17031
|
+
result.medium = medium;
|
|
17032
|
+
}
|
|
17033
|
+
const campaign = params.get("utm_campaign");
|
|
17034
|
+
if (campaign && UTM_CAMPAIGNS.includes(campaign)) {
|
|
17035
|
+
result.campaign = campaign;
|
|
17036
|
+
}
|
|
17037
|
+
const term = params.get("utm_term");
|
|
17038
|
+
if (term && UTM_TERMS.includes(term)) {
|
|
17039
|
+
result.term = term;
|
|
17040
|
+
}
|
|
17041
|
+
const content = params.get("utm_content");
|
|
17042
|
+
if (content && UTM_CONTENTS.includes(content)) {
|
|
17043
|
+
result.content = content;
|
|
17044
|
+
}
|
|
17045
|
+
return result;
|
|
17046
|
+
}
|
|
17047
|
+
function toFirstTouchAttribution(params) {
|
|
17048
|
+
return {
|
|
17049
|
+
firstTouchSource: params.source,
|
|
17050
|
+
firstTouchMedium: params.medium,
|
|
17051
|
+
firstTouchCampaign: params.campaign,
|
|
17052
|
+
firstTouchSeller: params.term ?? null
|
|
17053
|
+
};
|
|
17054
|
+
}
|
|
17055
|
+
function requiresSellerAttribution(source) {
|
|
17056
|
+
return UTM_SOURCES_REQUIRING_SELLER.includes(source);
|
|
17057
|
+
}
|
|
17058
|
+
|
|
17059
|
+
// src/web/utm/audit.ts
|
|
17060
|
+
function createAuditEntry(url, params, generatorContext, confidence) {
|
|
17061
|
+
const utmParts = [];
|
|
17062
|
+
if (params) {
|
|
17063
|
+
if (params.source) utmParts.push(`utm_source=${params.source}`);
|
|
17064
|
+
if (params.medium) utmParts.push(`utm_medium=${params.medium}`);
|
|
17065
|
+
if (params.campaign) utmParts.push(`utm_campaign=${params.campaign}`);
|
|
17066
|
+
if (params.term) utmParts.push(`utm_term=${params.term}`);
|
|
17067
|
+
if (params.content) utmParts.push(`utm_content=${params.content}`);
|
|
17068
|
+
}
|
|
17069
|
+
return {
|
|
17070
|
+
url,
|
|
17071
|
+
utmString: utmParts.join("&"),
|
|
17072
|
+
generatorContext,
|
|
17073
|
+
sellerAttribution: params?.term ?? null,
|
|
17074
|
+
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
17075
|
+
confidence
|
|
17076
|
+
};
|
|
17077
|
+
}
|
|
17078
|
+
|
|
17079
|
+
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, Alert, AnnouncementBar, AppearancePanel, AppearanceProvider, ArchitectureDiagram, ArticleCard, ArticleLayout, AspectRatio, AuthorBio, Avatar, AvatarFallback, AvatarImage, BREAKPOINTS, Badge, BarChart, BeforeAfterBlock, BookingEmbed, Box, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BrowserFrame, Button, ButtonGroup, COLORS, CONTAINER_SIZE_MAP, CTASection, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, CaseStudyCard, CaseStudySection, CaveatBlock, ChangeEmail, Chart, ChartContainer, ChartSwitchControl, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, ColorPicker, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, ComparisonTable, CompetitorDiff, ComplianceGrid, ConfidenceIndicator, Container, ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuLabel, ContextMenuSeparator, ContextMenuTrigger, CursorSpotlight, DISTANCE, DSIntlProvider, DURATION, DataCoverageBadge, DataHighlight, DataStateIndicator, DataTable, DataTableBody, DataTableCell, DataTableHead, DataTableHeader, DataTableRow, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, EASING, EcosystemDiagram, EmptyState, EnterpriseSignaling, EvidenceGroup, EvolutionTimeline, ExecutiveThesis, ExitIntentOverlay, ExportMenu, FONT_FAMILY, FONT_SIZE, FONT_WEIGHT, FeatureSection, FloatingTabBar, ForgotPassword, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, FunnelChart, FunnelScalingSender, Grid, GuaranteeHighlight, Heading, HeatmapChart, HeroSection, HoverCard, HoverCardContent, HoverCardTrigger, ICPFilter, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InsightBlock, InsightCallout, IntegrationShowcase, IntelligenceBlock, IntentCTA, KeyMetric, LINE_HEIGHT, Label, LeadCaptureForm, LeadProfileView, LineChart, LocaleDropdown, Login, LongFormLayout, MBTIRadar, MBTITypeGrid, MDXOutboundLink, MEDIA_QUERIES, MOTION, ManifestoBlock, MethodologyNote, MetricCounter, MotionContainer, MotionText, Navbar, NavbarActions, NavbarBrand, NavbarContent, NavbarItem, NavbarMegaMenu, NavbarMegaMenuItem, NavbarMegaMenuSection, NavbarMobileActions, NavbarMobileNavItem, NavbarMobileSeparator, NavbarSearchTrigger, NavbarV2, NavbarV2Actions, NavbarV2Brand, NavbarV2Tab, NavbarV2TabMenu, NavbarV2Tabs, ObjectionFAQ, OutboundLink, Pagination, PaginationContent, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, PartnerValueProp, PieChart, PlatformBadge, Popover, PopoverClose, PopoverContent, PopoverTrigger, PricingCard, PricingSection, PricingToggle, ProblemAgitation, ProcessTimeline, Progress, Prose, RADIUS, ROICalculator, Radio, RadioGroup, ReadingProgress, RelatedContent, ReportShell, RevenueAutomationLoop, SHADOWS, SPACING, ScrollArea, ScrollBar, Section, SectionHeader, SectionShell, SecurityBlock, SegmentSwitch, Select, SelectContent, SelectGroup, SelectItem, SelectSeparator, SelectTrigger, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Shell, Sidebar, SidebarItem, SidebarSection, Signup, SiteFooter, Skeleton, Slider, SocialProof, SocialProofCard, SocialProofCarousel, SocialProofFeatured, SocialProofGrid, SocialProofLogos, SpotlightCard, Stack, StakeholderTabs, StarRating, StatsSection, StatusBadge, StickyActionBar, Switch, TRANSITION, TabItem, TableOfContents, Tabs, TabsContent, TabsList, TabsTrigger, Text, TextArea, TextField, ThemeSelector, ToastContext, ToastItem, ToastProvider, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipRoot, TooltipTrigger, TrendIndicator, UTM_CAMPAIGNS, UTM_CONTENTS, UTM_MEDIUMS_ALL, UTM_MEDIUMS_APP, UTM_MEDIUMS_MESSAGING, UTM_MEDIUMS_WEB, UTM_SOURCES, UTM_SOURCES_REQUIRING_SELLER, UTM_TERMS, VARIANTS, ValueAnchor, VersionedSeriesNavigator, VersionedUpgradeAlert, VerticalVideoGrid, VideoEmbed, VideoLightbox, VisuallyHidden, VoidBackground, Z_INDEX, alertMessages, allMessages, appearanceMessages, appendGovernedUTMs, appendUTMs, authMessages, buildBlockedError, buildUtmUrl, calendarMessages, carouselMessages, classifyAndEnforce, classifyUrl, commonMessages, createAuditEntry, dialogMessages, extractSpacingStyles, formMessages, hexToRgb, initializeAppearance, isExemptUrl, isUtmExempt, isValidUtmParams, methodologyMessages, navigationMessages, paginationMessages, parseUtmParams, prefersReducedMotion, reportMessages, requiresSellerAttribution, requiresUtm, resolveSpacing, toFirstTouchAttribution, toastMessages, useAppearance, useDateFormat, useFormField, useIsRTL, useLocale, useMessage, useNumberFormat, useRelativeTime, useTextDirection, useToast, validateCompliance, validateUtmField };
|
|
17080
|
+
//# sourceMappingURL=out.js.map
|
|
16690
17081
|
//# sourceMappingURL=index.js.map
|