@envive-ai/react-widgets-v3 0.3.13 → 0.3.15-beta.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.
Files changed (143) hide show
  1. package/dist/CXIntegration/implementations/useHelpScoutUnifiedCXButton.cjs +65 -0
  2. package/dist/CXIntegration/implementations/useHelpScoutUnifiedCXButton.js +64 -0
  3. package/dist/CXIntegration/implementations/useTalkdeskUnifiedCXButton.cjs +64 -0
  4. package/dist/CXIntegration/implementations/useTalkdeskUnifiedCXButton.js +63 -0
  5. package/dist/CXIntegration/types.cjs +2 -0
  6. package/dist/CXIntegration/types.js +2 -0
  7. package/dist/CXIntegration/utils/functions.cjs +4 -0
  8. package/dist/CXIntegration/utils/functions.js +4 -0
  9. package/dist/hocs/withBaseWidget/types.d.cts +3 -3
  10. package/dist/hocs/withBaseWidget/types.d.ts +5 -3
  11. package/dist/hocs/withBaseWidget/withBaseWidget.d.cts +2 -2
  12. package/dist/hocs/withBaseWidget/withBaseWidget.d.ts +2 -2
  13. package/dist/hooks/dist/application/models/api/widgetText.d.cts +8 -0
  14. package/dist/hooks/dist/contexts/hardcopyContext/hardcopyContext.d.cts +12 -0
  15. package/dist/hooks/dist/contexts/types.d.cts +38 -0
  16. package/dist/hooks/dist/contexts/typesV3.d.cts +239 -0
  17. package/dist/hooks/dist/services/amplitudeService/eventNames.d.cts +43 -0
  18. package/dist/hooks/dist/types/customerService.d.cts +21 -0
  19. package/dist/packages/hooks/dist/application/models/api/orgConfigResults.d.ts +1 -0
  20. package/dist/packages/hooks/dist/application/models/api/widgetText.d.ts +8 -0
  21. package/dist/packages/hooks/dist/application/models/frontendConfig.d.ts +1 -0
  22. package/dist/packages/hooks/dist/contexts/amplitudeContext/amplitudeContext.d.ts +2 -0
  23. package/dist/packages/hooks/dist/contexts/amplitudeContext/index.d.ts +2 -0
  24. package/dist/packages/hooks/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.ts +2 -0
  25. package/dist/packages/hooks/dist/contexts/hardcopyContext/hardcopyContext.d.ts +14 -0
  26. package/dist/packages/hooks/dist/contexts/hardcopyContext/index.d.ts +1 -0
  27. package/dist/packages/hooks/dist/contexts/types.d.ts +42 -0
  28. package/dist/packages/hooks/dist/contexts/typesV3.d.ts +239 -0
  29. package/dist/packages/hooks/dist/services/amplitudeService/amplitudeService.d.ts +1 -0
  30. package/dist/packages/hooks/dist/services/amplitudeService/eventNames.d.ts +43 -0
  31. package/dist/packages/hooks/dist/types/customerService.d.ts +21 -0
  32. package/dist/packages/widgets/dist/SearchResults/SearchResults.d.ts +3 -2
  33. package/dist/packages/widgets/dist/SearchZeroState/SearchZeroStateWidget.d.ts +2 -2
  34. package/dist/packages/widgets/dist/SearchZeroState/index.d.ts +2 -1
  35. package/dist/packages/widgets/dist/SearchZeroState/types.d.ts +2 -2
  36. package/dist/packages/widgets/dist/SuggestionBar/SuggestionBar.d.ts +3 -3
  37. package/dist/packages/widgets/dist/SuggestionButtonContainer/index.d.ts +2 -0
  38. package/dist/packages/widgets/dist/SuggestionButtonContainer/types.d.ts +3 -2
  39. package/dist/packages/widgets/dist/packages/hooks/dist/application/models/api/response.d.ts +14 -0
  40. package/dist/packages/widgets/dist/packages/hooks/dist/application/models/api/search.d.ts +15 -0
  41. package/dist/packages/widgets/dist/packages/hooks/dist/application/models/utilityTypes/camelCase.d.ts +73 -0
  42. package/dist/packages/widgets/dist/packages/hooks/dist/application/models/utilityTypes/camelCasedPropertiesDeep.d.ts +61 -0
  43. package/dist/packages/widgets/dist/packages/hooks/dist/application/models/utilityTypes/internal.d.ts +25 -0
  44. package/dist/packages/widgets/dist/packages/hooks/dist/application/models/utilityTypes/splitWords.d.ts +35 -0
  45. package/dist/packages/widgets/dist/packages/hooks/dist/application/models/utilityTypes/trim.d.ts +32 -0
  46. package/dist/packages/widgets/dist/packages/hooks/dist/application/models/utilityTypes/unknownArray.d.ts +32 -0
  47. package/dist/packages/widgets/dist/packages/hooks/dist/application/models/variantInfo/variantInfo.d.ts +1 -0
  48. package/dist/packages/widgets/dist/packages/hooks/dist/atoms/search/searchAPI.d.ts +15 -0
  49. package/dist/packages/widgets/dist/packages/hooks/dist/contexts/hardcopyContext/hardcopyContext.d.ts +1 -0
  50. package/dist/packages/widgets/dist/packages/hooks/dist/contexts/types.d.ts +63 -0
  51. package/dist/packages/widgets/dist/packages/hooks/dist/hooks/Search/useSearch.d.ts +60 -0
  52. package/dist/packages/widgets/dist/packages/hooks/dist/hooks/utils.d.ts +13 -0
  53. package/dist/packages/widgets/dist/packages/hooks/dist/types/OrgInfo.d.ts +1 -0
  54. package/dist/packages/widgets/dist/packages/hooks/dist/types/index.d.ts +1 -0
  55. package/dist/packages/widgets/dist/packages/hooks/dist/types/search-filter-types.d.ts +28 -0
  56. package/dist/packages/widgets/dist/packages/hooks/dist/types/test-types.d.ts +10 -0
  57. package/dist/widgets/ChatPreviewComparisonWidget/ChatPreviewComparisonWidget.d.cts +3 -3
  58. package/dist/widgets/ChatPreviewLoadingWidget/ChatPreviewLoadingWidget.d.cts +3 -3
  59. package/dist/widgets/ChatPreviewLoadingWidget/ChatPreviewLoadingWidget.d.ts +3 -3
  60. package/dist/widgets/ChatPreviewWidget/ChatPreviewWidget.d.cts +3 -3
  61. package/dist/widgets/ChatPreviewWidget/ChatPreviewWidget.d.ts +3 -3
  62. package/dist/widgets/FloatingChatWidget/FloatingChatWidget.cjs +29 -5
  63. package/dist/widgets/FloatingChatWidget/FloatingChatWidget.d.cts +2 -2
  64. package/dist/widgets/FloatingChatWidget/FloatingChatWidget.d.ts +2 -2
  65. package/dist/widgets/FloatingChatWidget/FloatingChatWidget.js +30 -6
  66. package/dist/widgets/FullPageSalesAgentWidget/FullPageSalesAgentWidget.d.cts +2 -2
  67. package/dist/widgets/FullPageSalesAgentWidget/FullPageSalesAgentWidget.d.ts +2 -2
  68. package/dist/widgets/ProductCardWidget/ProductCardWidget.cjs +19 -3
  69. package/dist/widgets/ProductCardWidget/ProductCardWidget.d.cts +2 -2
  70. package/dist/widgets/ProductCardWidget/ProductCardWidget.d.ts +2 -2
  71. package/dist/widgets/ProductCardWidget/ProductCardWidget.js +20 -4
  72. package/dist/widgets/PromptButtonCarouselWithImageWidget/PromptButtonCarouselWithImageWidget.cjs +10 -0
  73. package/dist/widgets/PromptButtonCarouselWithImageWidget/PromptButtonCarouselWithImageWidget.d.cts +3 -3
  74. package/dist/widgets/PromptButtonCarouselWithImageWidget/PromptButtonCarouselWithImageWidget.d.ts +3 -3
  75. package/dist/widgets/PromptButtonCarouselWithImageWidget/PromptButtonCarouselWithImageWidget.js +12 -2
  76. package/dist/widgets/PromptCarouselWidget/PromptCarouselWidget.cjs +15 -10
  77. package/dist/widgets/PromptCarouselWidget/PromptCarouselWidget.d.cts +2 -2
  78. package/dist/widgets/PromptCarouselWidget/PromptCarouselWidget.d.ts +2 -2
  79. package/dist/widgets/PromptCarouselWidget/PromptCarouselWidget.js +16 -11
  80. package/dist/widgets/SocialProofFlowWidget/SocialProofFlowWidget.d.cts +2 -2
  81. package/dist/widgets/SocialProofFlowWidget/SocialProofFlowWidget.d.ts +2 -2
  82. package/dist/widgets/SocialProofWidget/SocialProofWidget.cjs +10 -0
  83. package/dist/widgets/SocialProofWidget/SocialProofWidget.d.cts +3 -3
  84. package/dist/widgets/SocialProofWidget/SocialProofWidget.d.ts +3 -3
  85. package/dist/widgets/SocialProofWidget/SocialProofWidget.js +12 -2
  86. package/dist/widgets/TitledPromptCarouselWidget/TitledPromptCarouselWidget.cjs +11 -0
  87. package/dist/widgets/TitledPromptCarouselWidget/TitledPromptCarouselWidget.d.cts +2 -2
  88. package/dist/widgets/TitledPromptCarouselWidget/TitledPromptCarouselWidget.d.ts +2 -2
  89. package/dist/widgets/TitledPromptCarouselWidget/TitledPromptCarouselWidget.js +12 -1
  90. package/dist/widgets/TypingAnimationFlowWidget/TypingAnimationFlowWidget.d.cts +2 -2
  91. package/dist/widgets/TypingAnimationFlowWidget/TypingAnimationFlowWidget.d.ts +2 -2
  92. package/dist/widgets/TypingAnimationWidget/TypingAnimationWidget.cjs +23 -3
  93. package/dist/widgets/TypingAnimationWidget/TypingAnimationWidget.d.cts +3 -3
  94. package/dist/widgets/TypingAnimationWidget/TypingAnimationWidget.d.ts +3 -3
  95. package/dist/widgets/TypingAnimationWidget/TypingAnimationWidget.js +24 -4
  96. package/dist/widgets/dist/SearchResults/SearchResults.d.cts +3 -2
  97. package/dist/widgets/dist/SearchZeroState/SearchZeroStateWidget.d.cts +2 -2
  98. package/dist/widgets/dist/SearchZeroState/types.d.cts +2 -2
  99. package/dist/widgets/dist/SuggestionBar/SuggestionBar.d.cts +3 -3
  100. package/dist/widgets/dist/SuggestionButtonContainer/types.d.cts +3 -2
  101. package/dist/widgets/dist/packages/hooks/dist/application/models/api/response.d.cts +14 -0
  102. package/dist/widgets/dist/packages/hooks/dist/application/models/api/search.d.cts +15 -0
  103. package/dist/widgets/dist/packages/hooks/dist/application/models/utilityTypes/camelCase.d.cts +73 -0
  104. package/dist/widgets/dist/packages/hooks/dist/application/models/utilityTypes/camelCasedPropertiesDeep.d.cts +61 -0
  105. package/dist/widgets/dist/packages/hooks/dist/application/models/utilityTypes/internal.d.cts +25 -0
  106. package/dist/widgets/dist/packages/hooks/dist/application/models/utilityTypes/splitWords.d.cts +35 -0
  107. package/dist/widgets/dist/packages/hooks/dist/application/models/utilityTypes/trim.d.cts +32 -0
  108. package/dist/widgets/dist/packages/hooks/dist/application/models/utilityTypes/unknownArray.d.cts +32 -0
  109. package/dist/widgets/dist/packages/hooks/dist/atoms/search/searchAPI.d.cts +14 -0
  110. package/dist/widgets/dist/packages/hooks/dist/contexts/types.d.cts +61 -0
  111. package/dist/widgets/dist/packages/hooks/dist/hooks/Search/useSearch.d.cts +60 -0
  112. package/dist/widgets/dist/packages/hooks/dist/hooks/utils.d.cts +12 -0
  113. package/dist/widgets/dist/packages/hooks/dist/types/search-filter-types.d.cts +28 -0
  114. package/dist/widgets/dist/packages/hooks/dist/types/test-types.d.cts +10 -0
  115. package/dist/widgets/utils/functions.cjs +9 -0
  116. package/dist/widgets/utils/functions.js +9 -1
  117. package/dist/widgets-v2/SearchZeroState/index.d.cts +2 -1
  118. package/dist/widgets-v2/SearchZeroState/index.d.ts +2 -1
  119. package/dist/widgets-v2/SuggestionButtonContainer/index.d.ts +1 -0
  120. package/package.json +1 -1
  121. package/src/CXIntegration/implementations/useHelpScoutUnifiedCXButton.ts +108 -0
  122. package/src/CXIntegration/implementations/useTalkdeskUnifiedCXButton.ts +94 -0
  123. package/src/CXIntegration/types.ts +2 -0
  124. package/src/CXIntegration/utils/functions.ts +8 -0
  125. package/src/hocs/withBaseWidget/__tests__/withBaseWidget.test.tsx +15 -3
  126. package/src/widgets/ChatPreviewWidget/__tests__/ChatPreviewWidget.test.tsx +114 -0
  127. package/src/widgets/FloatingChatWidget/FloatingChatWidget.tsx +56 -15
  128. package/src/widgets/FloatingChatWidget/__tests__/FloatingChatWidget.test.tsx +119 -0
  129. package/src/widgets/ProductCardWidget/ProductCardWidget.tsx +15 -3
  130. package/src/widgets/ProductCardWidget/__tests__/ProductCardWidget.test.tsx +144 -0
  131. package/src/widgets/PromptButtonCarouselWithImageWidget/PromptButtonCarouselWithImageWidget.tsx +12 -1
  132. package/src/widgets/PromptButtonCarouselWithImageWidget/__tests__/PromptButtonCarouselWithImageWidget.test.tsx +179 -0
  133. package/src/widgets/PromptCarouselWidget/PromptCarouselWidget.tsx +33 -23
  134. package/src/widgets/PromptCarouselWidget/__tests__/PromptCarouselWidget.test.tsx +150 -0
  135. package/src/widgets/SocialProofWidget/SocialProofWidget.tsx +12 -1
  136. package/src/widgets/SocialProofWidget/__tests__/SocialProofWidget.test.tsx +184 -0
  137. package/src/widgets/TitledPromptCarouselWidget/TitledPromptCarouselWidget.tsx +12 -0
  138. package/src/widgets/TitledPromptCarouselWidget/__tests__/TitledPromptCarouselWidget.test.tsx +150 -0
  139. package/src/widgets/TypingAnimationWidget/TypingAnimationWidget.tsx +19 -2
  140. package/src/widgets/TypingAnimationWidget/__tests__/TypingAnimationWidget.test.tsx +163 -0
  141. package/src/widgets/__tests__/testUtils.tsx +63 -0
  142. package/src/widgets/__tests__/trackEventCanary.test.ts +45 -0
  143. package/src/widgets/utils/functions.ts +16 -0
@@ -0,0 +1,43 @@
1
+ //#region ../hooks/dist/services/amplitudeService/eventNames.d.ts
2
+ //#region src/services/amplitudeService/eventNames.d.ts
3
+ /**
4
+ * Event name enums for Amplitude tracking.
5
+ *
6
+ * NOTE: This file exists separately to avoid circular dependency issues.
7
+ * The amplitudeService imports from ga4ProjectionService, which needs these enums.
8
+ * By keeping the enums in a separate file, ga4ProjectionService can import them
9
+ * without creating a circular dependency with amplitudeService.
10
+ */
11
+ declare enum SpiffyMetricsEventName {
12
+ BundleLoaded = "Bundle Loaded",
13
+ EnvironmentInitialized = "Environment Initialized",
14
+ ChatLiveAgentBtnClick = "Chat Live Agent Btn Click",
15
+ ChatFloatingButtonVisible = "Chat Floating Button Visible",
16
+ ChatComponentVisible = "Chat Component Visible",
17
+ ChatComponentExpanded = "Chat Component Expanded",
18
+ ChatComponentCollapsed = "Chat Component Collapsed",
19
+ ChatUserMessageInput = "Chat User Message Input",
20
+ ChatSuggestionClicked = "Chat Suggestion Clicked",
21
+ ChatAssistantResponse = "Chat Assistant Response",
22
+ ProductCardClicked = "Product Card Clicked",
23
+ ProductReviewCardClicked = "Product Review Card Clicked",
24
+ AddToCartClicked = "Add To Cart Clicked",
25
+ PromptCardClicked = "Prompt Card Clicked",
26
+ SupportedEvent = "Supported Event",
27
+ SearchBackToResponseClicked = "Search Back to Response Clicked",
28
+ PerformanceMetrics = "Performance Metrics",
29
+ SearchBarClicked = "Search Bar Clicked",
30
+ OrderLookupStarted = "Order Lookup Started",
31
+ OrderLookupFormSubmitted = "Order Lookup Form Submitted",
32
+ SearchComponentVisible = "Search Component Visible",
33
+ SearchZeroStateSuggestionClicked = "Search Zero State Suggestion Clicked",
34
+ SearchInputStarted = "Search Input Started",
35
+ SearchQuerySubmitted = "Search Query Submitted",
36
+ SearchResultsViewed = "Search Results Viewed",
37
+ SearchTimeToFirstClick = "Search Time to First Click",
38
+ SearchZeroResultsRate = "Search Zero Results Rate",
39
+ SearchFilterClicked = "Search Filter Clicked",
40
+ SearchSortClicked = "Search Sort Clicked",
41
+ }
42
+ //#endregion
43
+ export { SpiffyMetricsEventName };
@@ -0,0 +1,21 @@
1
+ //#region ../hooks/dist/types/customerService.d.ts
2
+
3
+ //#region src/types/customerService.d.ts
4
+ declare enum CustomerServiceType {
5
+ shopify = "shopify",
6
+ gorgias = "gorgias",
7
+ kustomer = "kustomer",
8
+ groove = "groove",
9
+ tidio = "tidio",
10
+ zowie = "zowie",
11
+ redo = "redo",
12
+ gladly = "gladly",
13
+ richpanel = "richpanel",
14
+ zendesk = "zendesk",
15
+ helpscout = "helpscout",
16
+ talkdesk = "talkdesk",
17
+ eightByEight = "8x8",
18
+ unsupported = "unsupported",
19
+ }
20
+ //#endregion
21
+ export { CustomerServiceType };
@@ -0,0 +1 @@
1
+ import "../frontendConfig.js";
@@ -0,0 +1,8 @@
1
+ //#region ../hooks/dist/application/models/api/widgetText.d.ts
2
+ //#region src/application/models/api/widgetText.d.ts
3
+ type WidgetString = {
4
+ id: string;
5
+ value: string;
6
+ };
7
+ //#endregion
8
+ export { WidgetString };
@@ -0,0 +1 @@
1
+ import "../../contexts/types.js";
@@ -0,0 +1,2 @@
1
+ import "../../services/amplitudeService/amplitudeService.js";
2
+ import React from "react";
@@ -0,0 +1,2 @@
1
+ import { SpiffyMetricsEventName } from "../../services/amplitudeService/eventNames.js";
2
+ import "./amplitudeContext.js";
@@ -0,0 +1,2 @@
1
+ import "../../application/models/api/orgConfigResults.js";
2
+ import React from "react";
@@ -0,0 +1,14 @@
1
+ import "../typesV3.js";
2
+ import { WidgetString } from "../../application/models/api/widgetText.js";
3
+ import "react";
4
+
5
+ //#region ../hooks/dist/contexts/hardcopyContext/hardcopyContext.d.ts
6
+
7
+ type HardcopyResponse = {
8
+ responseId: string;
9
+ language: string;
10
+ rawValues?: Record<string, WidgetString | WidgetString[]>;
11
+ values: Record<string, string | string[]>;
12
+ };
13
+ //#endregion
14
+ export { HardcopyResponse };
@@ -0,0 +1 @@
1
+ import { HardcopyResponse } from "./hardcopyContext.js";
@@ -0,0 +1,42 @@
1
+ import "./typesV3.js";
2
+ import "./hardcopyContext/hardcopyContext.js";
3
+ import "../application/models/api/orgConfigResults.js";
4
+
5
+ //#region ../hooks/dist/contexts/types.d.ts
6
+
7
+ interface AlphabeticFilterSorting {
8
+ type: 'alphabetic';
9
+ }
10
+ interface ProductCountFilterSorting {
11
+ type: 'productCount';
12
+ }
13
+ interface CustomFilterSorting {
14
+ type: 'custom';
15
+ map: Record<string, number>;
16
+ }
17
+ type FilterSorting = AlphabeticFilterSorting | ProductCountFilterSorting | CustomFilterSorting;
18
+ interface BaseFilterConfig {
19
+ filterId: string;
20
+ displayName: string;
21
+ }
22
+ interface DynamicFilterConfig extends BaseFilterConfig {
23
+ type: 'dynamic';
24
+ attribute: string;
25
+ sorting: FilterSorting;
26
+ }
27
+ interface PriceFilterConfig extends BaseFilterConfig {
28
+ type: 'price';
29
+ bucketSize: number;
30
+ }
31
+ type FilterAttribute = DynamicFilterConfig | PriceFilterConfig;
32
+ interface SearchConfig {
33
+ enableGlobalSearch: boolean;
34
+ searchFilterConfig: FilterAttribute[];
35
+ searchOverlayHeading?: string;
36
+ redirectSearchResultsUrl?: string;
37
+ additiveDynamicFilters?: boolean;
38
+ recommendedProducts?: string[];
39
+ recommendedProductsHeading?: string;
40
+ }
41
+ //#endregion
42
+ export { type SearchConfig };
@@ -0,0 +1,239 @@
1
+ import { CustomerServiceType } from "../types/customerService.js";
2
+ import { SearchConfig } from "./types.js";
3
+ import { Theme } from "@envive-ai/react-toolkit-v3/Tokens";
4
+ import { AnimationSpeed, PromptCarouselRows } from "@envive-ai/react-toolkit-v3/PromptCarousel";
5
+ import { FloatingButtonLocation } from "@envive-ai/react-toolkit-v3/FloatingButton";
6
+ import { DynamicLayout, WidgetKind } from "@envive-ai/react-toolkit-v3/SocialProof";
7
+ import { WidgetWrapperVariant } from "@envive-ai/react-toolkit-v3/WidgetWrapper";
8
+ import { ImageGalleryImage, ImageGalleryLayout } from "@envive-ai/react-toolkit-v3/ImageGallery";
9
+ import { PromptButtonVariant } from "@envive-ai/react-toolkit-v3/PromptButton";
10
+ import { SparkleIconColor } from "@envive-ai/react-toolkit-v3/WelcomeMessage";
11
+
12
+ //#region ../hooks/dist/contexts/typesV3.d.ts
13
+
14
+ type ImageAspectRatio = '1/1' | '3/4';
15
+ type ButtonColors = {
16
+ lightButtonBackgroundColor: string;
17
+ lightButtonIconColor: string;
18
+ darkButtonBackgroundColor: string;
19
+ darkButtonIconColor: string;
20
+ };
21
+ type Typography = {
22
+ titleFontFamily: string;
23
+ headerFontFamily: string;
24
+ bodyFontFamily: string;
25
+ fontSize?: {
26
+ t1: string;
27
+ t2: string;
28
+ t3: string;
29
+ h1: string;
30
+ h2: string;
31
+ h3: string;
32
+ b1: string;
33
+ b2: string;
34
+ b3: string;
35
+ b4: string;
36
+ b5: string;
37
+ l1: string;
38
+ l2: string;
39
+ };
40
+ fontWeight?: {
41
+ rg: string;
42
+ md: string;
43
+ sb: string;
44
+ };
45
+ letterSpacing?: {
46
+ '0': string;
47
+ 'wide-1': string;
48
+ };
49
+ lineHeight?: {
50
+ '124': number;
51
+ '120': number;
52
+ '118': number;
53
+ '116': number;
54
+ '114': number;
55
+ '148': number;
56
+ '140': number;
57
+ '128': number;
58
+ '130': number;
59
+ '133': number;
60
+ };
61
+ };
62
+ type LookAndFeelConfig = {
63
+ theme: Theme;
64
+ agentName: string;
65
+ chatHeaderLogoDarkSrc: string;
66
+ chatHeaderLogoLightSrc: string;
67
+ widgetLogoSrc: string;
68
+ hideWidgetLogo: boolean;
69
+ elementRadius: number;
70
+ imageAspectRatio: ImageAspectRatio;
71
+ buttonColors: ButtonColors;
72
+ typography: Typography;
73
+ };
74
+ declare enum ConfigVersionEnum {
75
+ V3 = "v3",
76
+ Deprecated = "deprecated",
77
+ }
78
+ type ConfigVersion = ConfigVersionEnum.V3 | ConfigVersionEnum.Deprecated | undefined;
79
+ type Mode = 'dark' | 'light';
80
+ type ShowOptions = 'always' | 'postInteraction' | 'none';
81
+ type Style = 'attached' | 'detached';
82
+ type FloatingButtonConfig = {
83
+ position: FloatingButtonLocation;
84
+ backgroundColor?: string;
85
+ mode: Mode;
86
+ showOption: ShowOptions;
87
+ iconSVGSrc?: string;
88
+ style: Style;
89
+ };
90
+ type ReferrerPopupTrigger = {
91
+ type: 'referrer';
92
+ referrers: string[];
93
+ };
94
+ type AutomaticPopupTrigger = {
95
+ type: 'automatic';
96
+ };
97
+ type PopupTrigger = ReferrerPopupTrigger | AutomaticPopupTrigger;
98
+ type AutoPopupTrigger = {
99
+ delay: number;
100
+ trigger: PopupTrigger;
101
+ };
102
+ interface AutoPopupConfig {
103
+ triggers: AutoPopupTrigger[];
104
+ }
105
+ type PartialViewConfig = {
106
+ /**
107
+ * When true, only full-screen mode is supported (no partial/draggable middle state).
108
+ * Useful when partial view causes usability issues on mobile.
109
+ * Default: false (undefined and false = partial view enabled).
110
+ */
111
+ disabled?: boolean;
112
+ };
113
+ type FloatingChatConfig = {
114
+ headerBackgroundColor?: string;
115
+ headerMode: Mode;
116
+ welcomeMessageIconColor: SparkleIconColor;
117
+ showVerifiedBuyer: boolean;
118
+ userQueryInputEnabled: boolean;
119
+ showEnviveLogo: boolean;
120
+ ignoreFirstModelResponse?: boolean;
121
+ neverShowSingleProductCards?: boolean;
122
+ welcomeMessageTitle: string;
123
+ welcomeMessageText: string;
124
+ chatFooterTextFieldPlaceholderText: string;
125
+ autoPopupConfig?: AutoPopupConfig;
126
+ partialViewConfig?: PartialViewConfig;
127
+ };
128
+ type CustomerServiceIntegration = {
129
+ enabled: boolean;
130
+ provider: CustomerServiceType;
131
+ suppressMerchantButton?: boolean;
132
+ };
133
+ type SPASettings = {
134
+ enabled: boolean;
135
+ refreshInterval?: number;
136
+ };
137
+ type OrgUIConfigV3 = {
138
+ id?: string;
139
+ version: ConfigVersion;
140
+ shortName: string;
141
+ lookAndFeel: LookAndFeelConfig;
142
+ floatingButton: FloatingButtonConfig;
143
+ floatingChat: FloatingChatConfig;
144
+ merchantOverrideCss?: string;
145
+ customerServiceIntegration?: CustomerServiceIntegration;
146
+ singlePageApplicationSettings?: SPASettings;
147
+ searchConfig?: SearchConfig;
148
+ };
149
+ declare enum WidgetTypeV3 {
150
+ PromptCarouselV3 = "PromptCarouselV3",
151
+ TitledPromptCarouselV3 = "TitledPromptCarouselV3",
152
+ SocialProofV3 = "SocialProofV3",
153
+ TypingAnimationV3 = "TypingAnimationV3",
154
+ ChatPreviewV3 = "ChatPreviewV3",
155
+ ChatPreviewComparisonV3 = "ChatPreviewComparisonV3",
156
+ ChatPreviewLoadingV3 = "ChatPreviewLoadingV3",
157
+ ImagePromptCardV3 = "ImagePromptCardV3",
158
+ PromptButtonCarouselWithImageV3 = "PromptButtonCarouselWithImageV3",
159
+ ImageBannerV3 = "ImageBannerV3",
160
+ SingleImagePromptV3 = "SingleImagePromptV3",
161
+ FloatingChatV3 = "FloatingChatV3",
162
+ FloatingButtonV3 = "FloatingButtonV3",
163
+ ProductCardV3 = "ProductCardV3",
164
+ FullPageSalesAgentV3 = "FullPageSalesAgentV3",
165
+ }
166
+ interface BaseWidgetConfig<T extends WidgetTypeV3> {
167
+ widgetConfigId: string;
168
+ type: T;
169
+ contentId?: string;
170
+ }
171
+ interface PromptCarouselWidgetV3Config extends BaseWidgetConfig<WidgetTypeV3.PromptCarouselV3> {
172
+ promptButtonType?: PromptButtonVariant;
173
+ boldFirstButton?: boolean;
174
+ promptCarouselRows?: PromptCarouselRows;
175
+ animationSpeed?: AnimationSpeed;
176
+ }
177
+ interface TitledPromptCarouselWidgetV3Config extends BaseWidgetConfig<WidgetTypeV3.TitledPromptCarouselV3> {
178
+ promptButtonType?: PromptButtonVariant;
179
+ boldFirstButton?: boolean;
180
+ promptCarouselRows?: PromptCarouselRows;
181
+ animationSpeed?: AnimationSpeed;
182
+ }
183
+ interface SocialProofWidgetV3Config extends BaseWidgetConfig<WidgetTypeV3.SocialProofV3> {
184
+ kind: WidgetKind;
185
+ variant: WidgetWrapperVariant;
186
+ hexCardColor?: string;
187
+ promptCarouselRows: PromptCarouselRows;
188
+ hideImage?: boolean;
189
+ imageGalleryLayout: Exclude<ImageGalleryLayout, 'TWO_SIDE'>;
190
+ hideTextField?: boolean;
191
+ primaryButtonVariant: Exclude<PromptButtonVariant, 'suggestedResponse' | 'ghost'>;
192
+ secondaryButtonVariant: Exclude<PromptButtonVariant, 'suggestedResponse' | 'ghost'>;
193
+ dynamicLayout?: DynamicLayout;
194
+ images?: ImageGalleryImage[];
195
+ }
196
+ interface TypingAnimationWidgetV3Config extends BaseWidgetConfig<WidgetTypeV3.TypingAnimationV3> {
197
+ widgetVariant?: WidgetWrapperVariant;
198
+ cardColor?: string;
199
+ promptButtonType?: PromptButtonVariant;
200
+ promptCarouselRows?: PromptCarouselRows;
201
+ showTextField?: boolean;
202
+ }
203
+ interface ChatPreviewComparisonWidgetV3Config extends BaseWidgetConfig<WidgetTypeV3.ChatPreviewComparisonV3> {
204
+ variant: WidgetWrapperVariant;
205
+ hexCardColor?: string;
206
+ hideImage?: boolean;
207
+ hideTextField?: boolean;
208
+ }
209
+ interface ChatPreviewLoadingWidgetV3Config extends BaseWidgetConfig<WidgetTypeV3.ChatPreviewLoadingV3> {
210
+ variant: WidgetWrapperVariant;
211
+ hexCardColor?: string;
212
+ hideTextField?: boolean;
213
+ }
214
+ interface ChatPreviewWidgetV3Config extends BaseWidgetConfig<WidgetTypeV3.ChatPreviewV3> {
215
+ variant: WidgetWrapperVariant;
216
+ hexCardColor?: string;
217
+ hideTextField?: boolean;
218
+ }
219
+ interface PromptButtonCarouselWithImageWidgetV3Config extends BaseWidgetConfig<WidgetTypeV3.PromptButtonCarouselWithImageV3> {
220
+ promptButtonType?: PromptButtonVariant;
221
+ image?: ImageGalleryImage;
222
+ hideTextField?: boolean;
223
+ isDynamic?: boolean;
224
+ }
225
+ interface FloatingChatWidgetV3Config extends BaseWidgetConfig<WidgetTypeV3.FloatingChatV3> {}
226
+ interface ProductCardWidgetV3Config extends BaseWidgetConfig<WidgetTypeV3.ProductCardV3> {
227
+ promptButtonType?: PromptButtonVariant;
228
+ italicizeHeadline?: boolean;
229
+ fallbackColor?: string;
230
+ imageSrc?: string;
231
+ }
232
+ interface FullPageSalesAgentWidgetV3Config extends BaseWidgetConfig<WidgetTypeV3.FullPageSalesAgentV3> {
233
+ headerContainer?: string;
234
+ autoHeight?: boolean;
235
+ }
236
+ type WidgetConfigV3 = PromptCarouselWidgetV3Config | SocialProofWidgetV3Config | TitledPromptCarouselWidgetV3Config | ChatPreviewComparisonWidgetV3Config | ChatPreviewLoadingWidgetV3Config | TypingAnimationWidgetV3Config | ChatPreviewWidgetV3Config | PromptButtonCarouselWithImageWidgetV3Config | FloatingChatWidgetV3Config | ProductCardWidgetV3Config | FullPageSalesAgentWidgetV3Config;
237
+ //#endregion
238
+ //#endregion
239
+ export { type OrgUIConfigV3, type WidgetConfigV3, WidgetTypeV3 };
@@ -0,0 +1 @@
1
+ import "../../contexts/featureFlagServiceContext/featureFlagServiceContext.js";
@@ -0,0 +1,43 @@
1
+ //#region ../hooks/dist/services/amplitudeService/eventNames.d.ts
2
+ //#region src/services/amplitudeService/eventNames.d.ts
3
+ /**
4
+ * Event name enums for Amplitude tracking.
5
+ *
6
+ * NOTE: This file exists separately to avoid circular dependency issues.
7
+ * The amplitudeService imports from ga4ProjectionService, which needs these enums.
8
+ * By keeping the enums in a separate file, ga4ProjectionService can import them
9
+ * without creating a circular dependency with amplitudeService.
10
+ */
11
+ declare enum SpiffyMetricsEventName {
12
+ BundleLoaded = "Bundle Loaded",
13
+ EnvironmentInitialized = "Environment Initialized",
14
+ ChatLiveAgentBtnClick = "Chat Live Agent Btn Click",
15
+ ChatFloatingButtonVisible = "Chat Floating Button Visible",
16
+ ChatComponentVisible = "Chat Component Visible",
17
+ ChatComponentExpanded = "Chat Component Expanded",
18
+ ChatComponentCollapsed = "Chat Component Collapsed",
19
+ ChatUserMessageInput = "Chat User Message Input",
20
+ ChatSuggestionClicked = "Chat Suggestion Clicked",
21
+ ChatAssistantResponse = "Chat Assistant Response",
22
+ ProductCardClicked = "Product Card Clicked",
23
+ ProductReviewCardClicked = "Product Review Card Clicked",
24
+ AddToCartClicked = "Add To Cart Clicked",
25
+ PromptCardClicked = "Prompt Card Clicked",
26
+ SupportedEvent = "Supported Event",
27
+ SearchBackToResponseClicked = "Search Back to Response Clicked",
28
+ PerformanceMetrics = "Performance Metrics",
29
+ SearchBarClicked = "Search Bar Clicked",
30
+ OrderLookupStarted = "Order Lookup Started",
31
+ OrderLookupFormSubmitted = "Order Lookup Form Submitted",
32
+ SearchComponentVisible = "Search Component Visible",
33
+ SearchZeroStateSuggestionClicked = "Search Zero State Suggestion Clicked",
34
+ SearchInputStarted = "Search Input Started",
35
+ SearchQuerySubmitted = "Search Query Submitted",
36
+ SearchResultsViewed = "Search Results Viewed",
37
+ SearchTimeToFirstClick = "Search Time to First Click",
38
+ SearchZeroResultsRate = "Search Zero Results Rate",
39
+ SearchFilterClicked = "Search Filter Clicked",
40
+ SearchSortClicked = "Search Sort Clicked",
41
+ }
42
+ //#endregion
43
+ export { SpiffyMetricsEventName };
@@ -0,0 +1,21 @@
1
+ //#region ../hooks/dist/types/customerService.d.ts
2
+
3
+ //#region src/types/customerService.d.ts
4
+ declare enum CustomerServiceType {
5
+ shopify = "shopify",
6
+ gorgias = "gorgias",
7
+ kustomer = "kustomer",
8
+ groove = "groove",
9
+ tidio = "tidio",
10
+ zowie = "zowie",
11
+ redo = "redo",
12
+ gladly = "gladly",
13
+ richpanel = "richpanel",
14
+ zendesk = "zendesk",
15
+ helpscout = "helpscout",
16
+ talkdesk = "talkdesk",
17
+ eightByEight = "8x8",
18
+ unsupported = "unsupported",
19
+ }
20
+ //#endregion
21
+ export { CustomerServiceType };
@@ -1,13 +1,14 @@
1
+ import { SearchResultsHocProps } from "../packages/hooks/dist/hooks/Search/useSearch.js";
1
2
  import { SearchResultsEntryPointWidgetConfig } from "./types.js";
2
3
  import * as react_jsx_runtime0 from "react/jsx-runtime";
3
- import { SearchResultsHocProps } from "@envive-ai/react-hooks/hooks/Search";
4
4
 
5
5
  //#region ../widgets/dist/SearchResults/SearchResults.d.ts
6
+
6
7
  //#region src/SearchResults/SearchResults.d.ts
7
8
  interface SearchResultsProps extends SearchResultsHocProps {
8
9
  widgetConfig: SearchResultsEntryPointWidgetConfig;
9
10
  }
10
- declare const SearchResults: (props: Omit<SearchResultsProps, string | number | symbol>) => react_jsx_runtime0.JSX.Element;
11
+ declare const SearchResults: (props: Omit<SearchResultsProps, keyof SearchResultsHocProps>) => react_jsx_runtime0.JSX.Element;
11
12
  //#endregion
12
13
 
13
14
  //#endregion
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime2 from "react/jsx-runtime";
1
+ import * as react_jsx_runtime3 from "react/jsx-runtime";
2
2
 
3
3
  //#region ../widgets/dist/SearchZeroState/SearchZeroStateWidget.d.ts
4
4
  //#region src/SearchZeroState/SearchZeroStateWidget.d.ts
@@ -11,7 +11,7 @@ declare const SearchZeroStateWidget: ({
11
11
  initialIsOpen,
12
12
  widgetConfigId,
13
13
  entryPointRef
14
- }: SearchZeroStateWidgetProps) => react_jsx_runtime2.JSX.Element;
14
+ }: SearchZeroStateWidgetProps) => react_jsx_runtime3.JSX.Element;
15
15
  //#endregion
16
16
 
17
17
  //#endregion
@@ -1,3 +1,4 @@
1
- import { SearchEntryPointWidgetConfig, SearchInputVariant, SearchZeroStateProps } from "./types.js";
1
+ import { SearchEntryPointWidgetConfig, SearchInputVariant } from "../packages/hooks/dist/contexts/types.js";
2
+ import { SearchZeroStateProps } from "./types.js";
2
3
  import { SearchZeroState } from "./SearchZeroState.js";
3
4
  import { SearchZeroStateWidget } from "./SearchZeroStateWidget.js";
@@ -1,4 +1,4 @@
1
- import { SearchEntryPointWidgetConfig, SearchInputVariant } from "@envive-ai/react-hooks/contexts/types";
1
+ import { SearchEntryPointWidgetConfig } from "../packages/hooks/dist/contexts/types.js";
2
2
 
3
3
  //#region ../widgets/dist/SearchZeroState/types.d.ts
4
4
  //#region src/SearchZeroState/types.d.ts
@@ -10,4 +10,4 @@ interface SearchZeroStateProps {
10
10
  //#endregion
11
11
 
12
12
  //#endregion
13
- export { type SearchEntryPointWidgetConfig, type SearchInputVariant, SearchZeroStateProps };
13
+ export { SearchZeroStateProps };
@@ -1,6 +1,6 @@
1
+ import { SuggestionButtonVariant } from "../packages/hooks/dist/contexts/types.js";
1
2
  import { SuggestionBarLocationForMetrics } from "./types.js";
2
- import * as react_jsx_runtime3 from "react/jsx-runtime";
3
- import { SuggestionButtonVariant } from "@envive-ai/react-hooks/contexts/types";
3
+ import * as react_jsx_runtime2 from "react/jsx-runtime";
4
4
  import { Message } from "postcss";
5
5
 
6
6
  //#region ../widgets/dist/SuggestionBar/SuggestionBar.d.ts
@@ -30,7 +30,7 @@ declare function SuggestionBar({
30
30
  buttonBorderRadius,
31
31
  handleReply,
32
32
  dataTestId
33
- }: Readonly<SuggestionBarProps>): react_jsx_runtime3.JSX.Element;
33
+ }: Readonly<SuggestionBarProps>): react_jsx_runtime2.JSX.Element;
34
34
  //#endregion
35
35
  //#endregion
36
36
  export { SuggestionBar };
@@ -0,0 +1,2 @@
1
+ import { SuggestionButtonContainerProps } from "./types.js";
2
+ import { SuggestionButtonContainer } from "./SuggestionButtonContainer.js";
@@ -1,5 +1,6 @@
1
- import { SuggestionButtonVariant } from "@envive-ai/react-hooks/contexts/types";
2
- import { TestProps } from "@envive-ai/react-hooks/types";
1
+ import { TestProps } from "../packages/hooks/dist/types/test-types.js";
2
+ import { SuggestionButtonVariant } from "../packages/hooks/dist/contexts/types.js";
3
+ import "../packages/hooks/dist/types/index.js";
3
4
 
4
5
  //#region ../widgets/dist/SuggestionButtonContainer/types.d.ts
5
6
  //#region src/SuggestionButtonContainer/types.d.ts
@@ -0,0 +1,14 @@
1
+ import { CamelCasedPropertiesDeep } from "../utilityTypes/camelCasedPropertiesDeep.js";
2
+ import { ResponseCategory, SearchResponseProduct } from "@spiffy-ai/commerce-api-client";
3
+
4
+ //#region ../widgets/dist/packages/hooks/dist/application/models/api/response.d.ts
5
+
6
+ //#region ../hooks/dist/application/models/api/response.d.ts
7
+ interface SearchResponseProductAttributes {
8
+ category: ResponseCategory.Product;
9
+ attributes: CamelCasedPropertiesDeep<SearchResponseProduct>;
10
+ }
11
+ //#endregion
12
+
13
+ //#endregion
14
+ export { SearchResponseProductAttributes };
@@ -0,0 +1,15 @@
1
+ import { SearchResponseProduct } from "@spiffy-ai/commerce-api-client";
2
+
3
+ //#region ../widgets/dist/packages/hooks/dist/application/models/api/search.d.ts
4
+
5
+ //#region ../hooks/dist/application/models/api/search.d.ts
6
+ interface SearchResult {
7
+ products: SearchResponseProduct[];
8
+ filters: string[];
9
+ generatedQuery?: string;
10
+ totalProductCount: number;
11
+ searchResponseId: string;
12
+ }
13
+ //#endregion
14
+ //#endregion
15
+ export { SearchResult };
@@ -0,0 +1,73 @@
1
+ import { SplitWords } from "./splitWords.js";
2
+
3
+ //#region ../widgets/dist/packages/hooks/dist/application/models/utilityTypes/camelCase.d.ts
4
+
5
+ //#region ../hooks/dist/application/models/utilityTypes/camelCase.d.ts
6
+ //#region src/application/models/utilityTypes/camelCase.d.ts
7
+ /**
8
+ * CamelCase options.
9
+ *
10
+ * @see {@link CamelCase}
11
+ */
12
+ type CamelCaseOptions = {
13
+ /**
14
+ * Whether to preserved consecutive uppercase letter.
15
+ *
16
+ * @default true
17
+ */
18
+ preserveConsecutiveUppercase?: boolean;
19
+ };
20
+ /**
21
+ * Convert an array of words to camel-case.
22
+ */
23
+ type CamelCaseFromArray<Words extends string[], Options extends CamelCaseOptions, OutputString extends string = ''> = Words extends [infer FirstWord extends string, ...infer RemainingWords extends string[]] ? Options['preserveConsecutiveUppercase'] extends true ? `${Capitalize<FirstWord>}${CamelCaseFromArray<RemainingWords, Options>}` : `${Capitalize<Lowercase<FirstWord>>}${CamelCaseFromArray<RemainingWords, Options>}` : OutputString;
24
+ /**
25
+ * Convert a string literal to camel-case.
26
+ *
27
+ * This can be useful when, for example, converting some kebab-cased command-line flags or a snake-cased database result.
28
+ *
29
+ * By default, consecutive uppercase letter are preserved. See {@link CamelCaseOptions.preserveConsecutiveUppercase preserveConsecutiveUppercase} option to change this behaviour.
30
+ *
31
+ * @example
32
+ * ```
33
+ * import type {CamelCase} from 'type-fest';
34
+ *
35
+ * // Simple
36
+ *
37
+ * const someVariable: CamelCase<'foo-bar'> = 'fooBar';
38
+ *
39
+ * // Advanced
40
+ *
41
+ * type CamelCasedProperties<T> = {
42
+ * [K in keyof T as CamelCase<K>]: T[K]
43
+ * };
44
+ *
45
+ * interface RawOptions {
46
+ * 'dry-run': boolean;
47
+ * 'full_family_name': string;
48
+ * foo: number;
49
+ * BAR: string;
50
+ * QUZ_QUX: number;
51
+ * 'OTHER-FIELD': boolean;
52
+ * }
53
+ *
54
+ * const dbResult: CamelCasedProperties<RawOptions> = {
55
+ * dryRun: true,
56
+ * fullFamilyName: 'bar.js',
57
+ * foo: 123,
58
+ * bar: 'foo',
59
+ * quzQux: 6,
60
+ * otherField: false
61
+ * };
62
+ * ```
63
+ *
64
+ * @category Change case
65
+ * @category Template literal
66
+ */
67
+ type CamelCase<Type, Options extends CamelCaseOptions = {
68
+ preserveConsecutiveUppercase: true;
69
+ }> = Type extends string ? string extends Type ? Type : Uncapitalize<CamelCaseFromArray<SplitWords<Type extends Uppercase<Type> ? Lowercase<Type> : Type>, Options>> : Type;
70
+ //#endregion
71
+ //#endregion
72
+ //#endregion
73
+ export { CamelCase, CamelCaseOptions };