@wix/web5-core 1.56.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 (947) hide show
  1. package/README.md +8 -0
  2. package/dist/cjs/client/clientBundleOverride.js +48 -0
  3. package/dist/cjs/client/clientBundleOverride.js.map +1 -0
  4. package/dist/cjs/client/devEnvironment.js +4 -0
  5. package/dist/cjs/client/devEnvironment.js.map +1 -0
  6. package/dist/cjs/client/loadClientBundle.js +85 -0
  7. package/dist/cjs/client/loadClientBundle.js.map +1 -0
  8. package/dist/cjs/client/wixAuthFetch.js +73 -0
  9. package/dist/cjs/client/wixAuthFetch.js.map +1 -0
  10. package/dist/cjs/clients.js +15 -0
  11. package/dist/cjs/clients.js.map +1 -0
  12. package/dist/cjs/color/colorUtils.js +126 -0
  13. package/dist/cjs/color/colorUtils.js.map +1 -0
  14. package/dist/cjs/component/componentDefinitions/CalloutSectionDefinition.js +67 -0
  15. package/dist/cjs/component/componentDefinitions/CalloutSectionDefinition.js.map +1 -0
  16. package/dist/cjs/component/componentDefinitions/ComparisonSectionDefinition.js +141 -0
  17. package/dist/cjs/component/componentDefinitions/ComparisonSectionDefinition.js.map +1 -0
  18. package/dist/cjs/component/componentDefinitions/CtaBannerSectionDefinition.js +85 -0
  19. package/dist/cjs/component/componentDefinitions/CtaBannerSectionDefinition.js.map +1 -0
  20. package/dist/cjs/component/componentDefinitions/EntitySectionDefinition.js +171 -0
  21. package/dist/cjs/component/componentDefinitions/EntitySectionDefinition.js.map +1 -0
  22. package/dist/cjs/component/componentDefinitions/ErrorSectionDefinition.js +81 -0
  23. package/dist/cjs/component/componentDefinitions/ErrorSectionDefinition.js.map +1 -0
  24. package/dist/cjs/component/componentDefinitions/FallbackSectionDefinition.js +29 -0
  25. package/dist/cjs/component/componentDefinitions/FallbackSectionDefinition.js.map +1 -0
  26. package/dist/cjs/component/componentDefinitions/FeatureCardsSectionDefinition.js +119 -0
  27. package/dist/cjs/component/componentDefinitions/FeatureCardsSectionDefinition.js.map +1 -0
  28. package/dist/cjs/component/componentDefinitions/FeatureSection9PlusDefinition.js +75 -0
  29. package/dist/cjs/component/componentDefinitions/FeatureSection9PlusDefinition.js.map +1 -0
  30. package/dist/cjs/component/componentDefinitions/HeroEntitySectionDefinition.js +124 -0
  31. package/dist/cjs/component/componentDefinitions/HeroEntitySectionDefinition.js.map +1 -0
  32. package/dist/cjs/component/componentDefinitions/HeroSectionDefinition.js +209 -0
  33. package/dist/cjs/component/componentDefinitions/HeroSectionDefinition.js.map +1 -0
  34. package/dist/cjs/component/componentDefinitions/HtmlCommentSectionDefinition.js +19 -0
  35. package/dist/cjs/component/componentDefinitions/HtmlCommentSectionDefinition.js.map +1 -0
  36. package/dist/cjs/component/componentDefinitions/KpiSectionDefinition.js +114 -0
  37. package/dist/cjs/component/componentDefinitions/KpiSectionDefinition.js.map +1 -0
  38. package/dist/cjs/component/componentDefinitions/NextStepsSectionDefinition.js +136 -0
  39. package/dist/cjs/component/componentDefinitions/NextStepsSectionDefinition.js.map +1 -0
  40. package/dist/cjs/component/componentDefinitions/SearchSectionDefinition.js +18 -0
  41. package/dist/cjs/component/componentDefinitions/SearchSectionDefinition.js.map +1 -0
  42. package/dist/cjs/component/componentDefinitions/SkipNodesSectionDefinition.js +20 -0
  43. package/dist/cjs/component/componentDefinitions/SkipNodesSectionDefinition.js.map +1 -0
  44. package/dist/cjs/component/componentDefinitions/TextBlockSectionDefinition.js +65 -0
  45. package/dist/cjs/component/componentDefinitions/TextBlockSectionDefinition.js.map +1 -0
  46. package/dist/cjs/component/componentDefinitions/index.js +48 -0
  47. package/dist/cjs/component/componentDefinitions/index.js.map +1 -0
  48. package/dist/cjs/component/componentDefinitions/listItemsSectionDefinition.js +86 -0
  49. package/dist/cjs/component/componentDefinitions/listItemsSectionDefinition.js.map +1 -0
  50. package/dist/cjs/component/componentDefinitions/parse-utils.js +434 -0
  51. package/dist/cjs/component/componentDefinitions/parse-utils.js.map +1 -0
  52. package/dist/cjs/component/componentDefinitions/specHelpers.js +36 -0
  53. package/dist/cjs/component/componentDefinitions/specHelpers.js.map +1 -0
  54. package/dist/cjs/component/componentParser.js +365 -0
  55. package/dist/cjs/component/componentParser.js.map +1 -0
  56. package/dist/cjs/component/diagnosticTypes.js +30 -0
  57. package/dist/cjs/component/diagnosticTypes.js.map +1 -0
  58. package/dist/cjs/component/parser-types.js +4 -0
  59. package/dist/cjs/component/parser-types.js.map +1 -0
  60. package/dist/cjs/component/section-definition.js +4 -0
  61. package/dist/cjs/component/section-definition.js.map +1 -0
  62. package/dist/cjs/component/types.js +4 -0
  63. package/dist/cjs/component/types.js.map +1 -0
  64. package/dist/cjs/components/placement/PlacementPayloadContext.js +29 -0
  65. package/dist/cjs/components/placement/PlacementPayloadContext.js.map +1 -0
  66. package/dist/cjs/components/placement/PlacementResponseRenderer.css +269 -0
  67. package/dist/cjs/components/placement/PlacementResponseRenderer.js +259 -0
  68. package/dist/cjs/components/placement/PlacementResponseRenderer.js.map +1 -0
  69. package/dist/cjs/components/placement/buildPlacementDependencies.js +214 -0
  70. package/dist/cjs/components/placement/buildPlacementDependencies.js.map +1 -0
  71. package/dist/cjs/components/ui/BottomContainer.js +26 -0
  72. package/dist/cjs/components/ui/BottomContainer.js.map +1 -0
  73. package/dist/cjs/components/ui/CalloutBlock.js +156 -0
  74. package/dist/cjs/components/ui/CalloutBlock.js.map +1 -0
  75. package/dist/cjs/components/ui/Disclaimer.css +35 -0
  76. package/dist/cjs/components/ui/Disclaimer.js +56 -0
  77. package/dist/cjs/components/ui/Disclaimer.js.map +1 -0
  78. package/dist/cjs/components/ui/FeedbackBar.css +267 -0
  79. package/dist/cjs/components/ui/FeedbackBar.js +417 -0
  80. package/dist/cjs/components/ui/FeedbackBar.js.map +1 -0
  81. package/dist/cjs/components/ui/Loader.js +73 -0
  82. package/dist/cjs/components/ui/Loader.js.map +1 -0
  83. package/dist/cjs/components/ui/MarkdownText.js +419 -0
  84. package/dist/cjs/components/ui/MarkdownText.js.map +1 -0
  85. package/dist/cjs/components/ui/OptimizedImage.js +414 -0
  86. package/dist/cjs/components/ui/OptimizedImage.js.map +1 -0
  87. package/dist/cjs/components/ui/PlacementLoader.css +101 -0
  88. package/dist/cjs/components/ui/PlacementLoader.js +62 -0
  89. package/dist/cjs/components/ui/PlacementLoader.js.map +1 -0
  90. package/dist/cjs/components/ui/PromptEntryEmptyState.css +172 -0
  91. package/dist/cjs/components/ui/PromptEntryEmptyState.js +96 -0
  92. package/dist/cjs/components/ui/PromptEntryEmptyState.js.map +1 -0
  93. package/dist/cjs/components/ui/SearchSection.css +538 -0
  94. package/dist/cjs/components/ui/SearchSection.js +550 -0
  95. package/dist/cjs/components/ui/SearchSection.js.map +1 -0
  96. package/dist/cjs/components/ui/SectionSkeleton.css +109 -0
  97. package/dist/cjs/components/ui/SectionSkeleton.js +190 -0
  98. package/dist/cjs/components/ui/SectionSkeleton.js.map +1 -0
  99. package/dist/cjs/components/ui/SmartIcon.js +122 -0
  100. package/dist/cjs/components/ui/SmartIcon.js.map +1 -0
  101. package/dist/cjs/components/ui/UnifiedLink.js +169 -0
  102. package/dist/cjs/components/ui/UnifiedLink.js.map +1 -0
  103. package/dist/cjs/components/ui/UserQuery.js +348 -0
  104. package/dist/cjs/components/ui/UserQuery.js.map +1 -0
  105. package/dist/cjs/components/ui/icons/ArrowTopRightIcon.js +37 -0
  106. package/dist/cjs/components/ui/icons/ArrowTopRightIcon.js.map +1 -0
  107. package/dist/cjs/components/ui/icons/ArrowUpIcon.js +61 -0
  108. package/dist/cjs/components/ui/icons/ArrowUpIcon.js.map +1 -0
  109. package/dist/cjs/components/ui/icons/CheckIcon.js +37 -0
  110. package/dist/cjs/components/ui/icons/CheckIcon.js.map +1 -0
  111. package/dist/cjs/components/ui/icons/CommentIcon.js +34 -0
  112. package/dist/cjs/components/ui/icons/CommentIcon.js.map +1 -0
  113. package/dist/cjs/components/ui/icons/PlusIcon.js +51 -0
  114. package/dist/cjs/components/ui/icons/PlusIcon.js.map +1 -0
  115. package/dist/cjs/components/ui/icons/RedoIcon.js +51 -0
  116. package/dist/cjs/components/ui/icons/RedoIcon.js.map +1 -0
  117. package/dist/cjs/components/ui/icons/ShareIcon.js +81 -0
  118. package/dist/cjs/components/ui/icons/ShareIcon.js.map +1 -0
  119. package/dist/cjs/components/ui/icons/UndoIcon.js +51 -0
  120. package/dist/cjs/components/ui/icons/UndoIcon.js.map +1 -0
  121. package/dist/cjs/components/ui/table.js +159 -0
  122. package/dist/cjs/components/ui/table.js.map +1 -0
  123. package/dist/cjs/context/ChipsContext.js +12 -0
  124. package/dist/cjs/context/ChipsContext.js.map +1 -0
  125. package/dist/cjs/context/ComponentDependenciesContext.js +32 -0
  126. package/dist/cjs/context/ComponentDependenciesContext.js.map +1 -0
  127. package/dist/cjs/entity/defaultExtractor.js +117 -0
  128. package/dist/cjs/entity/defaultExtractor.js.map +1 -0
  129. package/dist/cjs/entity/enrichEntitiesFromPayload.js +39 -0
  130. package/dist/cjs/entity/enrichEntitiesFromPayload.js.map +1 -0
  131. package/dist/cjs/entity/fetchEntityListData.js +78 -0
  132. package/dist/cjs/entity/fetchEntityListData.js.map +1 -0
  133. package/dist/cjs/entity/index.js +41 -0
  134. package/dist/cjs/entity/index.js.map +1 -0
  135. package/dist/cjs/entity/types.js +4 -0
  136. package/dist/cjs/entity/types.js.map +1 -0
  137. package/dist/cjs/errors/conversationErrorTypes.js +56 -0
  138. package/dist/cjs/errors/conversationErrorTypes.js.map +1 -0
  139. package/dist/cjs/errors/errorTemplates.js +86 -0
  140. package/dist/cjs/errors/errorTemplates.js.map +1 -0
  141. package/dist/cjs/errors/index.js +13 -0
  142. package/dist/cjs/errors/index.js.map +1 -0
  143. package/dist/cjs/external-types.d.js +2 -0
  144. package/dist/cjs/external-types.d.js.map +1 -0
  145. package/dist/cjs/featureToggles/FeatureToggleContext.js +44 -0
  146. package/dist/cjs/featureToggles/FeatureToggleContext.js.map +1 -0
  147. package/dist/cjs/hooks/useConversation.js +10 -0
  148. package/dist/cjs/hooks/useConversation.js.map +1 -0
  149. package/dist/cjs/hooks/useDebugImageContext.js +10 -0
  150. package/dist/cjs/hooks/useDebugImageContext.js.map +1 -0
  151. package/dist/cjs/hooks/useEntityTransforms.js +10 -0
  152. package/dist/cjs/hooks/useEntityTransforms.js.map +1 -0
  153. package/dist/cjs/hooks/useMarkdownUtils.js +10 -0
  154. package/dist/cjs/hooks/useMarkdownUtils.js.map +1 -0
  155. package/dist/cjs/hooks/useResolveGenericEntityData.js +10 -0
  156. package/dist/cjs/hooks/useResolveGenericEntityData.js.map +1 -0
  157. package/dist/cjs/hooks/useResolveSearchSpringEntityData.js +146 -0
  158. package/dist/cjs/hooks/useResolveSearchSpringEntityData.js.map +1 -0
  159. package/dist/cjs/hooks/useResolveShopifyEntityData.js +190 -0
  160. package/dist/cjs/hooks/useResolveShopifyEntityData.js.map +1 -0
  161. package/dist/cjs/hooks/useResolvedImageSources.js +160 -0
  162. package/dist/cjs/hooks/useResolvedImageSources.js.map +1 -0
  163. package/dist/cjs/hooks/useWeb5Link.js +10 -0
  164. package/dist/cjs/hooks/useWeb5Link.js.map +1 -0
  165. package/dist/cjs/image/contextualImageTypes.js +4 -0
  166. package/dist/cjs/image/contextualImageTypes.js.map +1 -0
  167. package/dist/cjs/image/imageSearchFilterTypes.js +19 -0
  168. package/dist/cjs/image/imageSearchFilterTypes.js.map +1 -0
  169. package/dist/cjs/image/imageSearchFilters.js +22 -0
  170. package/dist/cjs/image/imageSearchFilters.js.map +1 -0
  171. package/dist/cjs/index.js +285 -0
  172. package/dist/cjs/index.js.map +1 -0
  173. package/dist/cjs/lib/utils.js +33 -0
  174. package/dist/cjs/lib/utils.js.map +1 -0
  175. package/dist/cjs/markdownBlocks.js +645 -0
  176. package/dist/cjs/markdownBlocks.js.map +1 -0
  177. package/dist/cjs/match/astToParts.js +374 -0
  178. package/dist/cjs/match/astToParts.js.map +1 -0
  179. package/dist/cjs/match/extractProps.js +654 -0
  180. package/dist/cjs/match/extractProps.js.map +1 -0
  181. package/dist/cjs/match/index.js +11 -0
  182. package/dist/cjs/match/index.js.map +1 -0
  183. package/dist/cjs/match/matchAllSections.js +34 -0
  184. package/dist/cjs/match/matchAllSections.js.map +1 -0
  185. package/dist/cjs/match/matchMarkdown.js +39 -0
  186. package/dist/cjs/match/matchMarkdown.js.map +1 -0
  187. package/dist/cjs/parts/parts.js +183 -0
  188. package/dist/cjs/parts/parts.js.map +1 -0
  189. package/dist/cjs/patternAnalyzer/conflictDetector.js +103 -0
  190. package/dist/cjs/patternAnalyzer/conflictDetector.js.map +1 -0
  191. package/dist/cjs/patternAnalyzer/index.js +40 -0
  192. package/dist/cjs/patternAnalyzer/index.js.map +1 -0
  193. package/dist/cjs/patternAnalyzer/markdownGenerator.js +347 -0
  194. package/dist/cjs/patternAnalyzer/markdownGenerator.js.map +1 -0
  195. package/dist/cjs/patternAnalyzer/mergeDetector.js +505 -0
  196. package/dist/cjs/patternAnalyzer/mergeDetector.js.map +1 -0
  197. package/dist/cjs/patternAnalyzer/parserValidator.js +56 -0
  198. package/dist/cjs/patternAnalyzer/parserValidator.js.map +1 -0
  199. package/dist/cjs/patternAnalyzer/patternWriter.js +106 -0
  200. package/dist/cjs/patternAnalyzer/patternWriter.js.map +1 -0
  201. package/dist/cjs/patternAnalyzer/run.js +140 -0
  202. package/dist/cjs/patternAnalyzer/run.js.map +1 -0
  203. package/dist/cjs/patternAnalyzer/types.js +4 -0
  204. package/dist/cjs/patternAnalyzer/types.js.map +1 -0
  205. package/dist/cjs/patternValidator/ERROR_MESSAGES.md +110 -0
  206. package/dist/cjs/patternValidator/README.md +757 -0
  207. package/dist/cjs/patternValidator/automaton.js +349 -0
  208. package/dist/cjs/patternValidator/automaton.js.map +1 -0
  209. package/dist/cjs/patternValidator/index.js +196 -0
  210. package/dist/cjs/patternValidator/index.js.map +1 -0
  211. package/dist/cjs/patternValidator/lexer.js +218 -0
  212. package/dist/cjs/patternValidator/lexer.js.map +1 -0
  213. package/dist/cjs/patternValidator/matcher.js +722 -0
  214. package/dist/cjs/patternValidator/matcher.js.map +1 -0
  215. package/dist/cjs/patternValidator/parser.js +533 -0
  216. package/dist/cjs/patternValidator/parser.js.map +1 -0
  217. package/dist/cjs/patternValidator/types.js +4 -0
  218. package/dist/cjs/patternValidator/types.js.map +1 -0
  219. package/dist/cjs/patternValidator/validator.test.js +1277 -0
  220. package/dist/cjs/patternValidator/validator.test.js.map +1 -0
  221. package/dist/cjs/registry/ComponentRegistry.js +438 -0
  222. package/dist/cjs/registry/ComponentRegistry.js.map +1 -0
  223. package/dist/cjs/registry/Intent.js +19 -0
  224. package/dist/cjs/registry/Intent.js.map +1 -0
  225. package/dist/cjs/registry/index.js +9 -0
  226. package/dist/cjs/registry/index.js.map +1 -0
  227. package/dist/cjs/registry/types.js +4 -0
  228. package/dist/cjs/registry/types.js.map +1 -0
  229. package/dist/cjs/services/cart/addToCart.js +147 -0
  230. package/dist/cjs/services/cart/addToCart.js.map +1 -0
  231. package/dist/cjs/services/cart/index.js +7 -0
  232. package/dist/cjs/services/cart/index.js.map +1 -0
  233. package/dist/cjs/services/searchspring/index.js +10 -0
  234. package/dist/cjs/services/searchspring/index.js.map +1 -0
  235. package/dist/cjs/services/searchspring/searchSpringClient.js +49 -0
  236. package/dist/cjs/services/searchspring/searchSpringClient.js.map +1 -0
  237. package/dist/cjs/services/searchspring/transformSSProduct.js +70 -0
  238. package/dist/cjs/services/searchspring/transformSSProduct.js.map +1 -0
  239. package/dist/cjs/services/searchspring/types.js +4 -0
  240. package/dist/cjs/services/searchspring/types.js.map +1 -0
  241. package/dist/cjs/services/shopify/globals.d.js +4 -0
  242. package/dist/cjs/services/shopify/globals.d.js.map +1 -0
  243. package/dist/cjs/services/shopify/index.js +22 -0
  244. package/dist/cjs/services/shopify/index.js.map +1 -0
  245. package/dist/cjs/services/shopify/queries.js +214 -0
  246. package/dist/cjs/services/shopify/queries.js.map +1 -0
  247. package/dist/cjs/services/shopify/resolveStoreDomain.js +28 -0
  248. package/dist/cjs/services/shopify/resolveStoreDomain.js.map +1 -0
  249. package/dist/cjs/services/shopify/shopifyEntityResolver.js +109 -0
  250. package/dist/cjs/services/shopify/shopifyEntityResolver.js.map +1 -0
  251. package/dist/cjs/services/shopify/shopifyStorefrontClient.js +58 -0
  252. package/dist/cjs/services/shopify/shopifyStorefrontClient.js.map +1 -0
  253. package/dist/cjs/services/shopify/transformShopifyEntity.js +137 -0
  254. package/dist/cjs/services/shopify/transformShopifyEntity.js.map +1 -0
  255. package/dist/cjs/services/shopify/types.js +4 -0
  256. package/dist/cjs/services/shopify/types.js.map +1 -0
  257. package/dist/cjs/styles/base-tokens.css +152 -0
  258. package/dist/cjs/styles/base-utilities.css +424 -0
  259. package/dist/cjs/styles/components.css +6 -0
  260. package/dist/cjs/styles/prompt-input-tokens.css +136 -0
  261. package/dist/cjs/styles/tailwind-theme.css +138 -0
  262. package/dist/cjs/test-types.d.js +2 -0
  263. package/dist/cjs/test-types.d.js.map +1 -0
  264. package/dist/cjs/testUtils.js +25 -0
  265. package/dist/cjs/testUtils.js.map +1 -0
  266. package/dist/cjs/types/answerUpdatedEvent.js +20 -0
  267. package/dist/cjs/types/answerUpdatedEvent.js.map +1 -0
  268. package/dist/cjs/types/blog.js +4 -0
  269. package/dist/cjs/types/blog.js.map +1 -0
  270. package/dist/cjs/types/callout.js +6 -0
  271. package/dist/cjs/types/callout.js.map +1 -0
  272. package/dist/cjs/types/dependencies.js +4 -0
  273. package/dist/cjs/types/dependencies.js.map +1 -0
  274. package/dist/cjs/types/entity.js +4 -0
  275. package/dist/cjs/types/entity.js.map +1 -0
  276. package/dist/cjs/types/link-types.js +62 -0
  277. package/dist/cjs/types/link-types.js.map +1 -0
  278. package/dist/cjs/types/page-section.js +4 -0
  279. package/dist/cjs/types/page-section.js.map +1 -0
  280. package/dist/cjs/types/placement.js +4 -0
  281. package/dist/cjs/types/placement.js.map +1 -0
  282. package/dist/cjs/types/redirectEvent.js +27 -0
  283. package/dist/cjs/types/redirectEvent.js.map +1 -0
  284. package/dist/cjs/types/userQueryEvent.js +19 -0
  285. package/dist/cjs/types/userQueryEvent.js.map +1 -0
  286. package/dist/cjs/utils/analyticsEvents.js +91 -0
  287. package/dist/cjs/utils/analyticsEvents.js.map +1 -0
  288. package/dist/cjs/utils/componentTracking.js +90 -0
  289. package/dist/cjs/utils/componentTracking.js.map +1 -0
  290. package/dist/cjs/utils/contentKeywordMatcher.js +56 -0
  291. package/dist/cjs/utils/contentKeywordMatcher.js.map +1 -0
  292. package/dist/cjs/utils/conversationApi.js +52 -0
  293. package/dist/cjs/utils/conversationApi.js.map +1 -0
  294. package/dist/cjs/utils/conversationMode.js +23 -0
  295. package/dist/cjs/utils/conversationMode.js.map +1 -0
  296. package/dist/cjs/utils/diagnosticsCollector.js +58 -0
  297. package/dist/cjs/utils/diagnosticsCollector.js.map +1 -0
  298. package/dist/cjs/utils/entityLinkParser.js +256 -0
  299. package/dist/cjs/utils/entityLinkParser.js.map +1 -0
  300. package/dist/cjs/utils/htmlCommentParser.js +122 -0
  301. package/dist/cjs/utils/htmlCommentParser.js.map +1 -0
  302. package/dist/cjs/utils/image-utils.js +49 -0
  303. package/dist/cjs/utils/image-utils.js.map +1 -0
  304. package/dist/cjs/utils/intentExtractor.js +47 -0
  305. package/dist/cjs/utils/intentExtractor.js.map +1 -0
  306. package/dist/cjs/utils/markdownPreprocessor.js +268 -0
  307. package/dist/cjs/utils/markdownPreprocessor.js.map +1 -0
  308. package/dist/cjs/utils/navigationStack.js +35 -0
  309. package/dist/cjs/utils/navigationStack.js.map +1 -0
  310. package/dist/cjs/utils/nodeMatchers.js +43 -0
  311. package/dist/cjs/utils/nodeMatchers.js.map +1 -0
  312. package/dist/cjs/utils/propsExtractor.js +66 -0
  313. package/dist/cjs/utils/propsExtractor.js.map +1 -0
  314. package/dist/cjs/utils/sessionManager.js +161 -0
  315. package/dist/cjs/utils/sessionManager.js.map +1 -0
  316. package/dist/cjs/utils/unifiedMarkdownParser.js +44 -0
  317. package/dist/cjs/utils/unifiedMarkdownParser.js.map +1 -0
  318. package/dist/cjs/utils/web5LinkValidator.js +56 -0
  319. package/dist/cjs/utils/web5LinkValidator.js.map +1 -0
  320. package/dist/cjs/utils/web5LinkValidator.test.js +115 -0
  321. package/dist/cjs/utils/web5LinkValidator.test.js.map +1 -0
  322. package/dist/esm/client/clientBundleOverride.js +43 -0
  323. package/dist/esm/client/clientBundleOverride.js.map +1 -0
  324. package/dist/esm/client/devEnvironment.js +2 -0
  325. package/dist/esm/client/devEnvironment.js.map +1 -0
  326. package/dist/esm/client/loadClientBundle.js +82 -0
  327. package/dist/esm/client/loadClientBundle.js.map +1 -0
  328. package/dist/esm/client/wixAuthFetch.js +68 -0
  329. package/dist/esm/client/wixAuthFetch.js.map +1 -0
  330. package/dist/esm/clients.js +11 -0
  331. package/dist/esm/clients.js.map +1 -0
  332. package/dist/esm/color/colorUtils.js +118 -0
  333. package/dist/esm/color/colorUtils.js.map +1 -0
  334. package/dist/esm/component/componentDefinitions/CalloutSectionDefinition.js +61 -0
  335. package/dist/esm/component/componentDefinitions/CalloutSectionDefinition.js.map +1 -0
  336. package/dist/esm/component/componentDefinitions/ComparisonSectionDefinition.js +135 -0
  337. package/dist/esm/component/componentDefinitions/ComparisonSectionDefinition.js.map +1 -0
  338. package/dist/esm/component/componentDefinitions/CtaBannerSectionDefinition.js +79 -0
  339. package/dist/esm/component/componentDefinitions/CtaBannerSectionDefinition.js.map +1 -0
  340. package/dist/esm/component/componentDefinitions/EntitySectionDefinition.js +165 -0
  341. package/dist/esm/component/componentDefinitions/EntitySectionDefinition.js.map +1 -0
  342. package/dist/esm/component/componentDefinitions/ErrorSectionDefinition.js +75 -0
  343. package/dist/esm/component/componentDefinitions/ErrorSectionDefinition.js.map +1 -0
  344. package/dist/esm/component/componentDefinitions/FallbackSectionDefinition.js +23 -0
  345. package/dist/esm/component/componentDefinitions/FallbackSectionDefinition.js.map +1 -0
  346. package/dist/esm/component/componentDefinitions/FeatureCardsSectionDefinition.js +113 -0
  347. package/dist/esm/component/componentDefinitions/FeatureCardsSectionDefinition.js.map +1 -0
  348. package/dist/esm/component/componentDefinitions/FeatureSection9PlusDefinition.js +69 -0
  349. package/dist/esm/component/componentDefinitions/FeatureSection9PlusDefinition.js.map +1 -0
  350. package/dist/esm/component/componentDefinitions/HeroEntitySectionDefinition.js +119 -0
  351. package/dist/esm/component/componentDefinitions/HeroEntitySectionDefinition.js.map +1 -0
  352. package/dist/esm/component/componentDefinitions/HeroSectionDefinition.js +203 -0
  353. package/dist/esm/component/componentDefinitions/HeroSectionDefinition.js.map +1 -0
  354. package/dist/esm/component/componentDefinitions/HtmlCommentSectionDefinition.js +13 -0
  355. package/dist/esm/component/componentDefinitions/HtmlCommentSectionDefinition.js.map +1 -0
  356. package/dist/esm/component/componentDefinitions/KpiSectionDefinition.js +108 -0
  357. package/dist/esm/component/componentDefinitions/KpiSectionDefinition.js.map +1 -0
  358. package/dist/esm/component/componentDefinitions/NextStepsSectionDefinition.js +130 -0
  359. package/dist/esm/component/componentDefinitions/NextStepsSectionDefinition.js.map +1 -0
  360. package/dist/esm/component/componentDefinitions/SearchSectionDefinition.js +12 -0
  361. package/dist/esm/component/componentDefinitions/SearchSectionDefinition.js.map +1 -0
  362. package/dist/esm/component/componentDefinitions/SkipNodesSectionDefinition.js +14 -0
  363. package/dist/esm/component/componentDefinitions/SkipNodesSectionDefinition.js.map +1 -0
  364. package/dist/esm/component/componentDefinitions/TextBlockSectionDefinition.js +59 -0
  365. package/dist/esm/component/componentDefinitions/TextBlockSectionDefinition.js.map +1 -0
  366. package/dist/esm/component/componentDefinitions/index.js +45 -0
  367. package/dist/esm/component/componentDefinitions/index.js.map +1 -0
  368. package/dist/esm/component/componentDefinitions/listItemsSectionDefinition.js +80 -0
  369. package/dist/esm/component/componentDefinitions/listItemsSectionDefinition.js.map +1 -0
  370. package/dist/esm/component/componentDefinitions/parse-utils.js +412 -0
  371. package/dist/esm/component/componentDefinitions/parse-utils.js.map +1 -0
  372. package/dist/esm/component/componentDefinitions/specHelpers.js +31 -0
  373. package/dist/esm/component/componentDefinitions/specHelpers.js.map +1 -0
  374. package/dist/esm/component/componentParser.js +358 -0
  375. package/dist/esm/component/componentParser.js.map +1 -0
  376. package/dist/esm/component/diagnosticTypes.js +26 -0
  377. package/dist/esm/component/diagnosticTypes.js.map +1 -0
  378. package/dist/esm/component/parser-types.js +2 -0
  379. package/dist/esm/component/parser-types.js.map +1 -0
  380. package/dist/esm/component/section-definition.js +2 -0
  381. package/dist/esm/component/section-definition.js.map +1 -0
  382. package/dist/esm/component/types.js +2 -0
  383. package/dist/esm/component/types.js.map +1 -0
  384. package/dist/esm/components/placement/PlacementPayloadContext.js +24 -0
  385. package/dist/esm/components/placement/PlacementPayloadContext.js.map +1 -0
  386. package/dist/esm/components/placement/PlacementResponseRenderer.css +269 -0
  387. package/dist/esm/components/placement/PlacementResponseRenderer.js +173 -0
  388. package/dist/esm/components/placement/PlacementResponseRenderer.js.map +1 -0
  389. package/dist/esm/components/placement/buildPlacementDependencies.js +212 -0
  390. package/dist/esm/components/placement/buildPlacementDependencies.js.map +1 -0
  391. package/dist/esm/components/ui/BottomContainer.js +14 -0
  392. package/dist/esm/components/ui/BottomContainer.js.map +1 -0
  393. package/dist/esm/components/ui/CalloutBlock.js +118 -0
  394. package/dist/esm/components/ui/CalloutBlock.js.map +1 -0
  395. package/dist/esm/components/ui/Disclaimer.css +35 -0
  396. package/dist/esm/components/ui/Disclaimer.js +32 -0
  397. package/dist/esm/components/ui/Disclaimer.js.map +1 -0
  398. package/dist/esm/components/ui/FeedbackBar.css +267 -0
  399. package/dist/esm/components/ui/FeedbackBar.js +221 -0
  400. package/dist/esm/components/ui/FeedbackBar.js.map +1 -0
  401. package/dist/esm/components/ui/Loader.js +43 -0
  402. package/dist/esm/components/ui/Loader.js.map +1 -0
  403. package/dist/esm/components/ui/MarkdownText.js +283 -0
  404. package/dist/esm/components/ui/MarkdownText.js.map +1 -0
  405. package/dist/esm/components/ui/OptimizedImage.js +354 -0
  406. package/dist/esm/components/ui/OptimizedImage.js.map +1 -0
  407. package/dist/esm/components/ui/PlacementLoader.css +101 -0
  408. package/dist/esm/components/ui/PlacementLoader.js +28 -0
  409. package/dist/esm/components/ui/PlacementLoader.js.map +1 -0
  410. package/dist/esm/components/ui/PromptEntryEmptyState.css +172 -0
  411. package/dist/esm/components/ui/PromptEntryEmptyState.js +36 -0
  412. package/dist/esm/components/ui/PromptEntryEmptyState.js.map +1 -0
  413. package/dist/esm/components/ui/SearchSection.css +538 -0
  414. package/dist/esm/components/ui/SearchSection.js +317 -0
  415. package/dist/esm/components/ui/SearchSection.js.map +1 -0
  416. package/dist/esm/components/ui/SectionSkeleton.css +109 -0
  417. package/dist/esm/components/ui/SectionSkeleton.js +100 -0
  418. package/dist/esm/components/ui/SectionSkeleton.js.map +1 -0
  419. package/dist/esm/components/ui/SmartIcon.js +91 -0
  420. package/dist/esm/components/ui/SmartIcon.js.map +1 -0
  421. package/dist/esm/components/ui/UnifiedLink.js +105 -0
  422. package/dist/esm/components/ui/UnifiedLink.js.map +1 -0
  423. package/dist/esm/components/ui/UserQuery.js +167 -0
  424. package/dist/esm/components/ui/UserQuery.js.map +1 -0
  425. package/dist/esm/components/ui/icons/ArrowTopRightIcon.js +17 -0
  426. package/dist/esm/components/ui/icons/ArrowTopRightIcon.js.map +1 -0
  427. package/dist/esm/components/ui/icons/ArrowUpIcon.js +29 -0
  428. package/dist/esm/components/ui/icons/ArrowUpIcon.js.map +1 -0
  429. package/dist/esm/components/ui/icons/CheckIcon.js +17 -0
  430. package/dist/esm/components/ui/icons/CheckIcon.js.map +1 -0
  431. package/dist/esm/components/ui/icons/CommentIcon.js +15 -0
  432. package/dist/esm/components/ui/icons/CommentIcon.js.map +1 -0
  433. package/dist/esm/components/ui/icons/PlusIcon.js +25 -0
  434. package/dist/esm/components/ui/icons/PlusIcon.js.map +1 -0
  435. package/dist/esm/components/ui/icons/RedoIcon.js +25 -0
  436. package/dist/esm/components/ui/icons/RedoIcon.js.map +1 -0
  437. package/dist/esm/components/ui/icons/ShareIcon.js +37 -0
  438. package/dist/esm/components/ui/icons/ShareIcon.js.map +1 -0
  439. package/dist/esm/components/ui/icons/UndoIcon.js +25 -0
  440. package/dist/esm/components/ui/icons/UndoIcon.js.map +1 -0
  441. package/dist/esm/components/ui/table.js +92 -0
  442. package/dist/esm/components/ui/table.js.map +1 -0
  443. package/dist/esm/context/ChipsContext.js +7 -0
  444. package/dist/esm/context/ChipsContext.js.map +1 -0
  445. package/dist/esm/context/ComponentDependenciesContext.js +19 -0
  446. package/dist/esm/context/ComponentDependenciesContext.js.map +1 -0
  447. package/dist/esm/entity/defaultExtractor.js +111 -0
  448. package/dist/esm/entity/defaultExtractor.js.map +1 -0
  449. package/dist/esm/entity/enrichEntitiesFromPayload.js +35 -0
  450. package/dist/esm/entity/enrichEntitiesFromPayload.js.map +1 -0
  451. package/dist/esm/entity/fetchEntityListData.js +76 -0
  452. package/dist/esm/entity/fetchEntityListData.js.map +1 -0
  453. package/dist/esm/entity/index.js +29 -0
  454. package/dist/esm/entity/index.js.map +1 -0
  455. package/dist/esm/entity/types.js +2 -0
  456. package/dist/esm/entity/types.js.map +1 -0
  457. package/dist/esm/errors/conversationErrorTypes.js +50 -0
  458. package/dist/esm/errors/conversationErrorTypes.js.map +1 -0
  459. package/dist/esm/errors/errorTemplates.js +81 -0
  460. package/dist/esm/errors/errorTemplates.js.map +1 -0
  461. package/dist/esm/errors/index.js +3 -0
  462. package/dist/esm/errors/index.js.map +1 -0
  463. package/dist/esm/external-types.d.js +2 -0
  464. package/dist/esm/external-types.d.js.map +1 -0
  465. package/dist/esm/featureToggles/FeatureToggleContext.js +30 -0
  466. package/dist/esm/featureToggles/FeatureToggleContext.js.map +1 -0
  467. package/dist/esm/hooks/useConversation.js +6 -0
  468. package/dist/esm/hooks/useConversation.js.map +1 -0
  469. package/dist/esm/hooks/useDebugImageContext.js +6 -0
  470. package/dist/esm/hooks/useDebugImageContext.js.map +1 -0
  471. package/dist/esm/hooks/useEntityTransforms.js +6 -0
  472. package/dist/esm/hooks/useEntityTransforms.js.map +1 -0
  473. package/dist/esm/hooks/useMarkdownUtils.js +6 -0
  474. package/dist/esm/hooks/useMarkdownUtils.js.map +1 -0
  475. package/dist/esm/hooks/useResolveGenericEntityData.js +6 -0
  476. package/dist/esm/hooks/useResolveGenericEntityData.js.map +1 -0
  477. package/dist/esm/hooks/useResolveSearchSpringEntityData.js +146 -0
  478. package/dist/esm/hooks/useResolveSearchSpringEntityData.js.map +1 -0
  479. package/dist/esm/hooks/useResolveShopifyEntityData.js +191 -0
  480. package/dist/esm/hooks/useResolveShopifyEntityData.js.map +1 -0
  481. package/dist/esm/hooks/useResolvedImageSources.js +169 -0
  482. package/dist/esm/hooks/useResolvedImageSources.js.map +1 -0
  483. package/dist/esm/hooks/useWeb5Link.js +6 -0
  484. package/dist/esm/hooks/useWeb5Link.js.map +1 -0
  485. package/dist/esm/image/contextualImageTypes.js +2 -0
  486. package/dist/esm/image/contextualImageTypes.js.map +1 -0
  487. package/dist/esm/image/imageSearchFilterTypes.js +15 -0
  488. package/dist/esm/image/imageSearchFilterTypes.js.map +1 -0
  489. package/dist/esm/image/imageSearchFilters.js +18 -0
  490. package/dist/esm/image/imageSearchFilters.js.map +1 -0
  491. package/dist/esm/index.js +152 -0
  492. package/dist/esm/index.js.map +1 -0
  493. package/dist/esm/lib/utils.js +33 -0
  494. package/dist/esm/lib/utils.js.map +1 -0
  495. package/dist/esm/markdownBlocks.js +641 -0
  496. package/dist/esm/markdownBlocks.js.map +1 -0
  497. package/dist/esm/match/astToParts.js +371 -0
  498. package/dist/esm/match/astToParts.js.map +1 -0
  499. package/dist/esm/match/extractProps.js +634 -0
  500. package/dist/esm/match/extractProps.js.map +1 -0
  501. package/dist/esm/match/index.js +4 -0
  502. package/dist/esm/match/index.js.map +1 -0
  503. package/dist/esm/match/matchAllSections.js +31 -0
  504. package/dist/esm/match/matchAllSections.js.map +1 -0
  505. package/dist/esm/match/matchMarkdown.js +36 -0
  506. package/dist/esm/match/matchMarkdown.js.map +1 -0
  507. package/dist/esm/parts/parts.js +171 -0
  508. package/dist/esm/parts/parts.js.map +1 -0
  509. package/dist/esm/patternAnalyzer/conflictDetector.js +99 -0
  510. package/dist/esm/patternAnalyzer/conflictDetector.js.map +1 -0
  511. package/dist/esm/patternAnalyzer/index.js +36 -0
  512. package/dist/esm/patternAnalyzer/index.js.map +1 -0
  513. package/dist/esm/patternAnalyzer/markdownGenerator.js +344 -0
  514. package/dist/esm/patternAnalyzer/markdownGenerator.js.map +1 -0
  515. package/dist/esm/patternAnalyzer/mergeDetector.js +504 -0
  516. package/dist/esm/patternAnalyzer/mergeDetector.js.map +1 -0
  517. package/dist/esm/patternAnalyzer/parserValidator.js +52 -0
  518. package/dist/esm/patternAnalyzer/parserValidator.js.map +1 -0
  519. package/dist/esm/patternAnalyzer/patternWriter.js +102 -0
  520. package/dist/esm/patternAnalyzer/patternWriter.js.map +1 -0
  521. package/dist/esm/patternAnalyzer/run.js +138 -0
  522. package/dist/esm/patternAnalyzer/run.js.map +1 -0
  523. package/dist/esm/patternAnalyzer/types.js +2 -0
  524. package/dist/esm/patternAnalyzer/types.js.map +1 -0
  525. package/dist/esm/patternValidator/ERROR_MESSAGES.md +110 -0
  526. package/dist/esm/patternValidator/README.md +757 -0
  527. package/dist/esm/patternValidator/automaton.js +345 -0
  528. package/dist/esm/patternValidator/automaton.js.map +1 -0
  529. package/dist/esm/patternValidator/index.js +190 -0
  530. package/dist/esm/patternValidator/index.js.map +1 -0
  531. package/dist/esm/patternValidator/lexer.js +214 -0
  532. package/dist/esm/patternValidator/lexer.js.map +1 -0
  533. package/dist/esm/patternValidator/matcher.js +717 -0
  534. package/dist/esm/patternValidator/matcher.js.map +1 -0
  535. package/dist/esm/patternValidator/parser.js +531 -0
  536. package/dist/esm/patternValidator/parser.js.map +1 -0
  537. package/dist/esm/patternValidator/types.js +2 -0
  538. package/dist/esm/patternValidator/types.js.map +1 -0
  539. package/dist/esm/patternValidator/validator.test.js +1275 -0
  540. package/dist/esm/patternValidator/validator.test.js.map +1 -0
  541. package/dist/esm/registry/ComponentRegistry.js +435 -0
  542. package/dist/esm/registry/ComponentRegistry.js.map +1 -0
  543. package/dist/esm/registry/Intent.js +15 -0
  544. package/dist/esm/registry/Intent.js.map +1 -0
  545. package/dist/esm/registry/index.js +3 -0
  546. package/dist/esm/registry/index.js.map +1 -0
  547. package/dist/esm/registry/types.js +2 -0
  548. package/dist/esm/registry/types.js.map +1 -0
  549. package/dist/esm/services/cart/addToCart.js +146 -0
  550. package/dist/esm/services/cart/addToCart.js.map +1 -0
  551. package/dist/esm/services/cart/index.js +2 -0
  552. package/dist/esm/services/cart/index.js.map +1 -0
  553. package/dist/esm/services/searchspring/index.js +3 -0
  554. package/dist/esm/services/searchspring/index.js.map +1 -0
  555. package/dist/esm/services/searchspring/searchSpringClient.js +44 -0
  556. package/dist/esm/services/searchspring/searchSpringClient.js.map +1 -0
  557. package/dist/esm/services/searchspring/transformSSProduct.js +66 -0
  558. package/dist/esm/services/searchspring/transformSSProduct.js.map +1 -0
  559. package/dist/esm/services/searchspring/types.js +2 -0
  560. package/dist/esm/services/searchspring/types.js.map +1 -0
  561. package/dist/esm/services/shopify/globals.d.js +7 -0
  562. package/dist/esm/services/shopify/globals.d.js.map +1 -0
  563. package/dist/esm/services/shopify/index.js +6 -0
  564. package/dist/esm/services/shopify/index.js.map +1 -0
  565. package/dist/esm/services/shopify/queries.js +210 -0
  566. package/dist/esm/services/shopify/queries.js.map +1 -0
  567. package/dist/esm/services/shopify/resolveStoreDomain.js +25 -0
  568. package/dist/esm/services/shopify/resolveStoreDomain.js.map +1 -0
  569. package/dist/esm/services/shopify/shopifyEntityResolver.js +105 -0
  570. package/dist/esm/services/shopify/shopifyEntityResolver.js.map +1 -0
  571. package/dist/esm/services/shopify/shopifyStorefrontClient.js +52 -0
  572. package/dist/esm/services/shopify/shopifyStorefrontClient.js.map +1 -0
  573. package/dist/esm/services/shopify/transformShopifyEntity.js +130 -0
  574. package/dist/esm/services/shopify/transformShopifyEntity.js.map +1 -0
  575. package/dist/esm/services/shopify/types.js +2 -0
  576. package/dist/esm/services/shopify/types.js.map +1 -0
  577. package/dist/esm/styles/base-tokens.css +152 -0
  578. package/dist/esm/styles/base-utilities.css +424 -0
  579. package/dist/esm/styles/components.css +6 -0
  580. package/dist/esm/styles/prompt-input-tokens.css +136 -0
  581. package/dist/esm/styles/tailwind-theme.css +138 -0
  582. package/dist/esm/test-types.d.js +2 -0
  583. package/dist/esm/test-types.d.js.map +1 -0
  584. package/dist/esm/testUtils.js +20 -0
  585. package/dist/esm/testUtils.js.map +1 -0
  586. package/dist/esm/types/answerUpdatedEvent.js +16 -0
  587. package/dist/esm/types/answerUpdatedEvent.js.map +1 -0
  588. package/dist/esm/types/blog.js +2 -0
  589. package/dist/esm/types/blog.js.map +1 -0
  590. package/dist/esm/types/callout.js +2 -0
  591. package/dist/esm/types/callout.js.map +1 -0
  592. package/dist/esm/types/dependencies.js +2 -0
  593. package/dist/esm/types/dependencies.js.map +1 -0
  594. package/dist/esm/types/entity.js +2 -0
  595. package/dist/esm/types/entity.js.map +1 -0
  596. package/dist/esm/types/link-types.js +52 -0
  597. package/dist/esm/types/link-types.js.map +1 -0
  598. package/dist/esm/types/page-section.js +2 -0
  599. package/dist/esm/types/page-section.js.map +1 -0
  600. package/dist/esm/types/placement.js +2 -0
  601. package/dist/esm/types/placement.js.map +1 -0
  602. package/dist/esm/types/redirectEvent.js +23 -0
  603. package/dist/esm/types/redirectEvent.js.map +1 -0
  604. package/dist/esm/types/userQueryEvent.js +15 -0
  605. package/dist/esm/types/userQueryEvent.js.map +1 -0
  606. package/dist/esm/utils/analyticsEvents.js +84 -0
  607. package/dist/esm/utils/analyticsEvents.js.map +1 -0
  608. package/dist/esm/utils/componentTracking.js +84 -0
  609. package/dist/esm/utils/componentTracking.js.map +1 -0
  610. package/dist/esm/utils/contentKeywordMatcher.js +50 -0
  611. package/dist/esm/utils/contentKeywordMatcher.js.map +1 -0
  612. package/dist/esm/utils/conversationApi.js +45 -0
  613. package/dist/esm/utils/conversationApi.js.map +1 -0
  614. package/dist/esm/utils/conversationMode.js +18 -0
  615. package/dist/esm/utils/conversationMode.js.map +1 -0
  616. package/dist/esm/utils/diagnosticsCollector.js +52 -0
  617. package/dist/esm/utils/diagnosticsCollector.js.map +1 -0
  618. package/dist/esm/utils/entityLinkParser.js +246 -0
  619. package/dist/esm/utils/entityLinkParser.js.map +1 -0
  620. package/dist/esm/utils/htmlCommentParser.js +117 -0
  621. package/dist/esm/utils/htmlCommentParser.js.map +1 -0
  622. package/dist/esm/utils/image-utils.js +45 -0
  623. package/dist/esm/utils/image-utils.js.map +1 -0
  624. package/dist/esm/utils/intentExtractor.js +45 -0
  625. package/dist/esm/utils/intentExtractor.js.map +1 -0
  626. package/dist/esm/utils/markdownPreprocessor.js +257 -0
  627. package/dist/esm/utils/markdownPreprocessor.js.map +1 -0
  628. package/dist/esm/utils/navigationStack.js +27 -0
  629. package/dist/esm/utils/navigationStack.js.map +1 -0
  630. package/dist/esm/utils/nodeMatchers.js +38 -0
  631. package/dist/esm/utils/nodeMatchers.js.map +1 -0
  632. package/dist/esm/utils/propsExtractor.js +58 -0
  633. package/dist/esm/utils/propsExtractor.js.map +1 -0
  634. package/dist/esm/utils/sessionManager.js +151 -0
  635. package/dist/esm/utils/sessionManager.js.map +1 -0
  636. package/dist/esm/utils/unifiedMarkdownParser.js +36 -0
  637. package/dist/esm/utils/unifiedMarkdownParser.js.map +1 -0
  638. package/dist/esm/utils/web5LinkValidator.js +52 -0
  639. package/dist/esm/utils/web5LinkValidator.js.map +1 -0
  640. package/dist/esm/utils/web5LinkValidator.test.js +113 -0
  641. package/dist/esm/utils/web5LinkValidator.test.js.map +1 -0
  642. package/dist/types/client/clientBundleOverride.d.ts +26 -0
  643. package/dist/types/client/clientBundleOverride.d.ts.map +1 -0
  644. package/dist/types/client/devEnvironment.d.ts +24 -0
  645. package/dist/types/client/devEnvironment.d.ts.map +1 -0
  646. package/dist/types/client/loadClientBundle.d.ts +27 -0
  647. package/dist/types/client/loadClientBundle.d.ts.map +1 -0
  648. package/dist/types/client/wixAuthFetch.d.ts +12 -0
  649. package/dist/types/client/wixAuthFetch.d.ts.map +1 -0
  650. package/dist/types/clients.d.ts +10 -0
  651. package/dist/types/clients.d.ts.map +1 -0
  652. package/dist/types/color/colorUtils.d.ts +9 -0
  653. package/dist/types/color/colorUtils.d.ts.map +1 -0
  654. package/dist/types/component/componentDefinitions/CalloutSectionDefinition.d.ts +11 -0
  655. package/dist/types/component/componentDefinitions/CalloutSectionDefinition.d.ts.map +1 -0
  656. package/dist/types/component/componentDefinitions/ComparisonSectionDefinition.d.ts +11 -0
  657. package/dist/types/component/componentDefinitions/ComparisonSectionDefinition.d.ts.map +1 -0
  658. package/dist/types/component/componentDefinitions/CtaBannerSectionDefinition.d.ts +11 -0
  659. package/dist/types/component/componentDefinitions/CtaBannerSectionDefinition.d.ts.map +1 -0
  660. package/dist/types/component/componentDefinitions/EntitySectionDefinition.d.ts +11 -0
  661. package/dist/types/component/componentDefinitions/EntitySectionDefinition.d.ts.map +1 -0
  662. package/dist/types/component/componentDefinitions/ErrorSectionDefinition.d.ts +12 -0
  663. package/dist/types/component/componentDefinitions/ErrorSectionDefinition.d.ts.map +1 -0
  664. package/dist/types/component/componentDefinitions/FallbackSectionDefinition.d.ts +16 -0
  665. package/dist/types/component/componentDefinitions/FallbackSectionDefinition.d.ts.map +1 -0
  666. package/dist/types/component/componentDefinitions/FeatureCardsSectionDefinition.d.ts +11 -0
  667. package/dist/types/component/componentDefinitions/FeatureCardsSectionDefinition.d.ts.map +1 -0
  668. package/dist/types/component/componentDefinitions/FeatureSection9PlusDefinition.d.ts +11 -0
  669. package/dist/types/component/componentDefinitions/FeatureSection9PlusDefinition.d.ts.map +1 -0
  670. package/dist/types/component/componentDefinitions/HeroEntitySectionDefinition.d.ts +23 -0
  671. package/dist/types/component/componentDefinitions/HeroEntitySectionDefinition.d.ts.map +1 -0
  672. package/dist/types/component/componentDefinitions/HeroSectionDefinition.d.ts +12 -0
  673. package/dist/types/component/componentDefinitions/HeroSectionDefinition.d.ts.map +1 -0
  674. package/dist/types/component/componentDefinitions/HtmlCommentSectionDefinition.d.ts +11 -0
  675. package/dist/types/component/componentDefinitions/HtmlCommentSectionDefinition.d.ts.map +1 -0
  676. package/dist/types/component/componentDefinitions/KpiSectionDefinition.d.ts +11 -0
  677. package/dist/types/component/componentDefinitions/KpiSectionDefinition.d.ts.map +1 -0
  678. package/dist/types/component/componentDefinitions/NextStepsSectionDefinition.d.ts +11 -0
  679. package/dist/types/component/componentDefinitions/NextStepsSectionDefinition.d.ts.map +1 -0
  680. package/dist/types/component/componentDefinitions/SearchSectionDefinition.d.ts +10 -0
  681. package/dist/types/component/componentDefinitions/SearchSectionDefinition.d.ts.map +1 -0
  682. package/dist/types/component/componentDefinitions/SkipNodesSectionDefinition.d.ts +12 -0
  683. package/dist/types/component/componentDefinitions/SkipNodesSectionDefinition.d.ts.map +1 -0
  684. package/dist/types/component/componentDefinitions/TextBlockSectionDefinition.d.ts +11 -0
  685. package/dist/types/component/componentDefinitions/TextBlockSectionDefinition.d.ts.map +1 -0
  686. package/dist/types/component/componentDefinitions/index.d.ts +26 -0
  687. package/dist/types/component/componentDefinitions/index.d.ts.map +1 -0
  688. package/dist/types/component/componentDefinitions/listItemsSectionDefinition.d.ts +11 -0
  689. package/dist/types/component/componentDefinitions/listItemsSectionDefinition.d.ts.map +1 -0
  690. package/dist/types/component/componentDefinitions/parse-utils.d.ts +88 -0
  691. package/dist/types/component/componentDefinitions/parse-utils.d.ts.map +1 -0
  692. package/dist/types/component/componentDefinitions/specHelpers.d.ts +16 -0
  693. package/dist/types/component/componentDefinitions/specHelpers.d.ts.map +1 -0
  694. package/dist/types/component/componentParser.d.ts +63 -0
  695. package/dist/types/component/componentParser.d.ts.map +1 -0
  696. package/dist/types/component/diagnosticTypes.d.ts +23 -0
  697. package/dist/types/component/diagnosticTypes.d.ts.map +1 -0
  698. package/dist/types/component/parser-types.d.ts +71 -0
  699. package/dist/types/component/parser-types.d.ts.map +1 -0
  700. package/dist/types/component/section-definition.d.ts +32 -0
  701. package/dist/types/component/section-definition.d.ts.map +1 -0
  702. package/dist/types/component/types.d.ts +315 -0
  703. package/dist/types/component/types.d.ts.map +1 -0
  704. package/dist/types/components/placement/PlacementPayloadContext.d.ts +20 -0
  705. package/dist/types/components/placement/PlacementPayloadContext.d.ts.map +1 -0
  706. package/dist/types/components/placement/PlacementResponseRenderer.d.ts +106 -0
  707. package/dist/types/components/placement/PlacementResponseRenderer.d.ts.map +1 -0
  708. package/dist/types/components/placement/buildPlacementDependencies.d.ts +44 -0
  709. package/dist/types/components/placement/buildPlacementDependencies.d.ts.map +1 -0
  710. package/dist/types/components/ui/BottomContainer.d.ts +9 -0
  711. package/dist/types/components/ui/BottomContainer.d.ts.map +1 -0
  712. package/dist/types/components/ui/CalloutBlock.d.ts +9 -0
  713. package/dist/types/components/ui/CalloutBlock.d.ts.map +1 -0
  714. package/dist/types/components/ui/Disclaimer.d.ts +21 -0
  715. package/dist/types/components/ui/Disclaimer.d.ts.map +1 -0
  716. package/dist/types/components/ui/FeedbackBar.d.ts +41 -0
  717. package/dist/types/components/ui/FeedbackBar.d.ts.map +1 -0
  718. package/dist/types/components/ui/Loader.d.ts +9 -0
  719. package/dist/types/components/ui/Loader.d.ts.map +1 -0
  720. package/dist/types/components/ui/MarkdownText.d.ts +9 -0
  721. package/dist/types/components/ui/MarkdownText.d.ts.map +1 -0
  722. package/dist/types/components/ui/OptimizedImage.d.ts +59 -0
  723. package/dist/types/components/ui/OptimizedImage.d.ts.map +1 -0
  724. package/dist/types/components/ui/PlacementLoader.d.ts +15 -0
  725. package/dist/types/components/ui/PlacementLoader.d.ts.map +1 -0
  726. package/dist/types/components/ui/PromptEntryEmptyState.d.ts +21 -0
  727. package/dist/types/components/ui/PromptEntryEmptyState.d.ts.map +1 -0
  728. package/dist/types/components/ui/SearchSection.d.ts +37 -0
  729. package/dist/types/components/ui/SearchSection.d.ts.map +1 -0
  730. package/dist/types/components/ui/SectionSkeleton.d.ts +27 -0
  731. package/dist/types/components/ui/SectionSkeleton.d.ts.map +1 -0
  732. package/dist/types/components/ui/SmartIcon.d.ts +19 -0
  733. package/dist/types/components/ui/SmartIcon.d.ts.map +1 -0
  734. package/dist/types/components/ui/UnifiedLink.d.ts +22 -0
  735. package/dist/types/components/ui/UnifiedLink.d.ts.map +1 -0
  736. package/dist/types/components/ui/UserQuery.d.ts +33 -0
  737. package/dist/types/components/ui/UserQuery.d.ts.map +1 -0
  738. package/dist/types/components/ui/icons/ArrowTopRightIcon.d.ts +3 -0
  739. package/dist/types/components/ui/icons/ArrowTopRightIcon.d.ts.map +1 -0
  740. package/dist/types/components/ui/icons/ArrowUpIcon.d.ts +3 -0
  741. package/dist/types/components/ui/icons/ArrowUpIcon.d.ts.map +1 -0
  742. package/dist/types/components/ui/icons/CheckIcon.d.ts +3 -0
  743. package/dist/types/components/ui/icons/CheckIcon.d.ts.map +1 -0
  744. package/dist/types/components/ui/icons/CommentIcon.d.ts +3 -0
  745. package/dist/types/components/ui/icons/CommentIcon.d.ts.map +1 -0
  746. package/dist/types/components/ui/icons/PlusIcon.d.ts +3 -0
  747. package/dist/types/components/ui/icons/PlusIcon.d.ts.map +1 -0
  748. package/dist/types/components/ui/icons/RedoIcon.d.ts +3 -0
  749. package/dist/types/components/ui/icons/RedoIcon.d.ts.map +1 -0
  750. package/dist/types/components/ui/icons/ShareIcon.d.ts +3 -0
  751. package/dist/types/components/ui/icons/ShareIcon.d.ts.map +1 -0
  752. package/dist/types/components/ui/icons/UndoIcon.d.ts +3 -0
  753. package/dist/types/components/ui/icons/UndoIcon.d.ts.map +1 -0
  754. package/dist/types/components/ui/table.d.ts +11 -0
  755. package/dist/types/components/ui/table.d.ts.map +1 -0
  756. package/dist/types/context/ChipsContext.d.ts +8 -0
  757. package/dist/types/context/ChipsContext.d.ts.map +1 -0
  758. package/dist/types/context/ComponentDependenciesContext.d.ts +8 -0
  759. package/dist/types/context/ComponentDependenciesContext.d.ts.map +1 -0
  760. package/dist/types/entity/defaultExtractor.d.ts +14 -0
  761. package/dist/types/entity/defaultExtractor.d.ts.map +1 -0
  762. package/dist/types/entity/enrichEntitiesFromPayload.d.ts +27 -0
  763. package/dist/types/entity/enrichEntitiesFromPayload.d.ts.map +1 -0
  764. package/dist/types/entity/fetchEntityListData.d.ts +20 -0
  765. package/dist/types/entity/fetchEntityListData.d.ts.map +1 -0
  766. package/dist/types/entity/index.d.ts +16 -0
  767. package/dist/types/entity/index.d.ts.map +1 -0
  768. package/dist/types/entity/types.d.ts +13 -0
  769. package/dist/types/entity/types.d.ts.map +1 -0
  770. package/dist/types/errors/conversationErrorTypes.d.ts +20 -0
  771. package/dist/types/errors/conversationErrorTypes.d.ts.map +1 -0
  772. package/dist/types/errors/errorTemplates.d.ts +27 -0
  773. package/dist/types/errors/errorTemplates.d.ts.map +1 -0
  774. package/dist/types/errors/index.d.ts +3 -0
  775. package/dist/types/errors/index.d.ts.map +1 -0
  776. package/dist/types/featureToggles/FeatureToggleContext.d.ts +18 -0
  777. package/dist/types/featureToggles/FeatureToggleContext.d.ts.map +1 -0
  778. package/dist/types/hooks/useConversation.d.ts +3 -0
  779. package/dist/types/hooks/useConversation.d.ts.map +1 -0
  780. package/dist/types/hooks/useDebugImageContext.d.ts +2 -0
  781. package/dist/types/hooks/useDebugImageContext.d.ts.map +1 -0
  782. package/dist/types/hooks/useEntityTransforms.d.ts +3 -0
  783. package/dist/types/hooks/useEntityTransforms.d.ts.map +1 -0
  784. package/dist/types/hooks/useMarkdownUtils.d.ts +3 -0
  785. package/dist/types/hooks/useMarkdownUtils.d.ts.map +1 -0
  786. package/dist/types/hooks/useResolveGenericEntityData.d.ts +11 -0
  787. package/dist/types/hooks/useResolveGenericEntityData.d.ts.map +1 -0
  788. package/dist/types/hooks/useResolveSearchSpringEntityData.d.ts +20 -0
  789. package/dist/types/hooks/useResolveSearchSpringEntityData.d.ts.map +1 -0
  790. package/dist/types/hooks/useResolveShopifyEntityData.d.ts +21 -0
  791. package/dist/types/hooks/useResolveShopifyEntityData.d.ts.map +1 -0
  792. package/dist/types/hooks/useResolvedImageSources.d.ts +6 -0
  793. package/dist/types/hooks/useResolvedImageSources.d.ts.map +1 -0
  794. package/dist/types/hooks/useWeb5Link.d.ts +3 -0
  795. package/dist/types/hooks/useWeb5Link.d.ts.map +1 -0
  796. package/dist/types/image/contextualImageTypes.d.ts +17 -0
  797. package/dist/types/image/contextualImageTypes.d.ts.map +1 -0
  798. package/dist/types/image/imageSearchFilterTypes.d.ts +14 -0
  799. package/dist/types/image/imageSearchFilterTypes.d.ts.map +1 -0
  800. package/dist/types/image/imageSearchFilters.d.ts +16 -0
  801. package/dist/types/image/imageSearchFilters.d.ts.map +1 -0
  802. package/dist/types/index.d.ts +88 -0
  803. package/dist/types/index.d.ts.map +1 -0
  804. package/dist/types/lib/utils.d.ts +3 -0
  805. package/dist/types/lib/utils.d.ts.map +1 -0
  806. package/dist/types/markdownBlocks.d.ts +44 -0
  807. package/dist/types/markdownBlocks.d.ts.map +1 -0
  808. package/dist/types/match/astToParts.d.ts +15 -0
  809. package/dist/types/match/astToParts.d.ts.map +1 -0
  810. package/dist/types/match/extractProps.d.ts +207 -0
  811. package/dist/types/match/extractProps.d.ts.map +1 -0
  812. package/dist/types/match/index.d.ts +4 -0
  813. package/dist/types/match/index.d.ts.map +1 -0
  814. package/dist/types/match/matchAllSections.d.ts +15 -0
  815. package/dist/types/match/matchAllSections.d.ts.map +1 -0
  816. package/dist/types/match/matchMarkdown.d.ts +25 -0
  817. package/dist/types/match/matchMarkdown.d.ts.map +1 -0
  818. package/dist/types/parts/parts.d.ts +144 -0
  819. package/dist/types/parts/parts.d.ts.map +1 -0
  820. package/dist/types/patternAnalyzer/conflictDetector.d.ts +19 -0
  821. package/dist/types/patternAnalyzer/conflictDetector.d.ts.map +1 -0
  822. package/dist/types/patternAnalyzer/index.d.ts +10 -0
  823. package/dist/types/patternAnalyzer/index.d.ts.map +1 -0
  824. package/dist/types/patternAnalyzer/markdownGenerator.d.ts +9 -0
  825. package/dist/types/patternAnalyzer/markdownGenerator.d.ts.map +1 -0
  826. package/dist/types/patternAnalyzer/mergeDetector.d.ts +14 -0
  827. package/dist/types/patternAnalyzer/mergeDetector.d.ts.map +1 -0
  828. package/dist/types/patternAnalyzer/parserValidator.d.ts +13 -0
  829. package/dist/types/patternAnalyzer/parserValidator.d.ts.map +1 -0
  830. package/dist/types/patternAnalyzer/patternWriter.d.ts +8 -0
  831. package/dist/types/patternAnalyzer/patternWriter.d.ts.map +1 -0
  832. package/dist/types/patternAnalyzer/run.d.ts +2 -0
  833. package/dist/types/patternAnalyzer/run.d.ts.map +1 -0
  834. package/dist/types/patternAnalyzer/types.d.ts +59 -0
  835. package/dist/types/patternAnalyzer/types.d.ts.map +1 -0
  836. package/dist/types/patternValidator/automaton.d.ts +3 -0
  837. package/dist/types/patternValidator/automaton.d.ts.map +1 -0
  838. package/dist/types/patternValidator/index.d.ts +48 -0
  839. package/dist/types/patternValidator/index.d.ts.map +1 -0
  840. package/dist/types/patternValidator/lexer.d.ts +3 -0
  841. package/dist/types/patternValidator/lexer.d.ts.map +1 -0
  842. package/dist/types/patternValidator/matcher.d.ts +14 -0
  843. package/dist/types/patternValidator/matcher.d.ts.map +1 -0
  844. package/dist/types/patternValidator/parser.d.ts +14 -0
  845. package/dist/types/patternValidator/parser.d.ts.map +1 -0
  846. package/dist/types/patternValidator/types.d.ts +125 -0
  847. package/dist/types/patternValidator/types.d.ts.map +1 -0
  848. package/dist/types/patternValidator/validator.test.d.ts +2 -0
  849. package/dist/types/patternValidator/validator.test.d.ts.map +1 -0
  850. package/dist/types/registry/ComponentRegistry.d.ts +64 -0
  851. package/dist/types/registry/ComponentRegistry.d.ts.map +1 -0
  852. package/dist/types/registry/Intent.d.ts +12 -0
  853. package/dist/types/registry/Intent.d.ts.map +1 -0
  854. package/dist/types/registry/index.d.ts +4 -0
  855. package/dist/types/registry/index.d.ts.map +1 -0
  856. package/dist/types/registry/types.d.ts +99 -0
  857. package/dist/types/registry/types.d.ts.map +1 -0
  858. package/dist/types/services/cart/addToCart.d.ts +26 -0
  859. package/dist/types/services/cart/addToCart.d.ts.map +1 -0
  860. package/dist/types/services/cart/index.d.ts +2 -0
  861. package/dist/types/services/cart/index.d.ts.map +1 -0
  862. package/dist/types/services/searchspring/index.d.ts +4 -0
  863. package/dist/types/services/searchspring/index.d.ts.map +1 -0
  864. package/dist/types/services/searchspring/searchSpringClient.d.ts +13 -0
  865. package/dist/types/services/searchspring/searchSpringClient.d.ts.map +1 -0
  866. package/dist/types/services/searchspring/transformSSProduct.d.ts +7 -0
  867. package/dist/types/services/searchspring/transformSSProduct.d.ts.map +1 -0
  868. package/dist/types/services/searchspring/types.d.ts +48 -0
  869. package/dist/types/services/searchspring/types.d.ts.map +1 -0
  870. package/dist/types/services/shopify/index.d.ts +7 -0
  871. package/dist/types/services/shopify/index.d.ts.map +1 -0
  872. package/dist/types/services/shopify/queries.d.ts +13 -0
  873. package/dist/types/services/shopify/queries.d.ts.map +1 -0
  874. package/dist/types/services/shopify/resolveStoreDomain.d.ts +14 -0
  875. package/dist/types/services/shopify/resolveStoreDomain.d.ts.map +1 -0
  876. package/dist/types/services/shopify/shopifyEntityResolver.d.ts +21 -0
  877. package/dist/types/services/shopify/shopifyEntityResolver.d.ts.map +1 -0
  878. package/dist/types/services/shopify/shopifyStorefrontClient.d.ts +19 -0
  879. package/dist/types/services/shopify/shopifyStorefrontClient.d.ts.map +1 -0
  880. package/dist/types/services/shopify/transformShopifyEntity.d.ts +11 -0
  881. package/dist/types/services/shopify/transformShopifyEntity.d.ts.map +1 -0
  882. package/dist/types/services/shopify/types.d.ts +109 -0
  883. package/dist/types/services/shopify/types.d.ts.map +1 -0
  884. package/dist/types/testUtils.d.ts +7 -0
  885. package/dist/types/testUtils.d.ts.map +1 -0
  886. package/dist/types/types/answerUpdatedEvent.d.ts +29 -0
  887. package/dist/types/types/answerUpdatedEvent.d.ts.map +1 -0
  888. package/dist/types/types/blog.d.ts +22 -0
  889. package/dist/types/types/blog.d.ts.map +1 -0
  890. package/dist/types/types/callout.d.ts +7 -0
  891. package/dist/types/types/callout.d.ts.map +1 -0
  892. package/dist/types/types/dependencies.d.ts +191 -0
  893. package/dist/types/types/dependencies.d.ts.map +1 -0
  894. package/dist/types/types/entity.d.ts +38 -0
  895. package/dist/types/types/entity.d.ts.map +1 -0
  896. package/dist/types/types/link-types.d.ts +38 -0
  897. package/dist/types/types/link-types.d.ts.map +1 -0
  898. package/dist/types/types/page-section.d.ts +27 -0
  899. package/dist/types/types/page-section.d.ts.map +1 -0
  900. package/dist/types/types/placement.d.ts +94 -0
  901. package/dist/types/types/placement.d.ts.map +1 -0
  902. package/dist/types/types/redirectEvent.d.ts +42 -0
  903. package/dist/types/types/redirectEvent.d.ts.map +1 -0
  904. package/dist/types/types/userQueryEvent.d.ts +24 -0
  905. package/dist/types/types/userQueryEvent.d.ts.map +1 -0
  906. package/dist/types/utils/analyticsEvents.d.ts +24 -0
  907. package/dist/types/utils/analyticsEvents.d.ts.map +1 -0
  908. package/dist/types/utils/componentTracking.d.ts +55 -0
  909. package/dist/types/utils/componentTracking.d.ts.map +1 -0
  910. package/dist/types/utils/contentKeywordMatcher.d.ts +14 -0
  911. package/dist/types/utils/contentKeywordMatcher.d.ts.map +1 -0
  912. package/dist/types/utils/conversationApi.d.ts +26 -0
  913. package/dist/types/utils/conversationApi.d.ts.map +1 -0
  914. package/dist/types/utils/conversationMode.d.ts +16 -0
  915. package/dist/types/utils/conversationMode.d.ts.map +1 -0
  916. package/dist/types/utils/diagnosticsCollector.d.ts +33 -0
  917. package/dist/types/utils/diagnosticsCollector.d.ts.map +1 -0
  918. package/dist/types/utils/entityLinkParser.d.ts +97 -0
  919. package/dist/types/utils/entityLinkParser.d.ts.map +1 -0
  920. package/dist/types/utils/htmlCommentParser.d.ts +13 -0
  921. package/dist/types/utils/htmlCommentParser.d.ts.map +1 -0
  922. package/dist/types/utils/image-utils.d.ts +10 -0
  923. package/dist/types/utils/image-utils.d.ts.map +1 -0
  924. package/dist/types/utils/intentExtractor.d.ts +11 -0
  925. package/dist/types/utils/intentExtractor.d.ts.map +1 -0
  926. package/dist/types/utils/markdownPreprocessor.d.ts +95 -0
  927. package/dist/types/utils/markdownPreprocessor.d.ts.map +1 -0
  928. package/dist/types/utils/navigationStack.d.ts +6 -0
  929. package/dist/types/utils/navigationStack.d.ts.map +1 -0
  930. package/dist/types/utils/nodeMatchers.d.ts +10 -0
  931. package/dist/types/utils/nodeMatchers.d.ts.map +1 -0
  932. package/dist/types/utils/propsExtractor.d.ts +51 -0
  933. package/dist/types/utils/propsExtractor.d.ts.map +1 -0
  934. package/dist/types/utils/sessionManager.d.ts +57 -0
  935. package/dist/types/utils/sessionManager.d.ts.map +1 -0
  936. package/dist/types/utils/unifiedMarkdownParser.d.ts +9 -0
  937. package/dist/types/utils/unifiedMarkdownParser.d.ts.map +1 -0
  938. package/dist/types/utils/web5LinkValidator.d.ts +14 -0
  939. package/dist/types/utils/web5LinkValidator.d.ts.map +1 -0
  940. package/dist/types/utils/web5LinkValidator.test.d.ts +2 -0
  941. package/dist/types/utils/web5LinkValidator.test.d.ts.map +1 -0
  942. package/package.json +103 -0
  943. package/src/styles/base-tokens.css +152 -0
  944. package/src/styles/base-utilities.css +424 -0
  945. package/src/styles/components.css +6 -0
  946. package/src/styles/prompt-input-tokens.css +136 -0
  947. package/src/styles/tailwind-theme.css +138 -0
@@ -0,0 +1,105 @@
1
+ import { PRODUCT_BY_HANDLE_QUERY, PRODUCT_BY_ID_QUERY, COLLECTION_BY_HANDLE_QUERY, COLLECTION_BY_ID_QUERY, ARTICLE_BY_HANDLE_QUERY } from './queries.js';
2
+ /**
3
+ * Check if an entityId looks like a numeric Shopify ID (not a handle).
4
+ * Handles are URL slugs (e.g. "classic-cotton-tee"), IDs are numeric (e.g. "10260081213719").
5
+ */
6
+ function isNumericId(entityId) {
7
+ return /^\d+$/.test(entityId);
8
+ }
9
+
10
+ /** Build a Shopify global ID from a numeric ID and resource type */
11
+ function toGlobalId(type, numericId) {
12
+ const capitalType = type.charAt(0).toUpperCase() + type.slice(1);
13
+ return `gid://shopify/${capitalType}/${numericId}`;
14
+ }
15
+
16
+ /**
17
+ * Resolve a single Shopify entity by type and ID.
18
+ *
19
+ * The entityId can be either a **handle** (URL slug like "classic-cotton-tee")
20
+ * or a **numeric ID** (like "10260081213719"). The resolver tries the handle
21
+ * query first; if the entityId is numeric and the handle query returns null,
22
+ * it falls back to querying by global ID.
23
+ *
24
+ * - product: entityId = handle or numeric ID
25
+ * - collection: entityId = handle or numeric ID
26
+ * - article: entityId = "blogHandle/articleHandle" or just "articleHandle"
27
+ * (falls back to config.defaultBlogHandle when no blog prefix)
28
+ *
29
+ * Returns null if the entity is not found or on error.
30
+ */
31
+ export async function resolveShopifyEntity(client, entityType, entityId, config) {
32
+ try {
33
+ switch (entityType.toLowerCase()) {
34
+ case 'product':
35
+ {
36
+ // Try by handle first
37
+ const byHandle = await client.query(PRODUCT_BY_HANDLE_QUERY, {
38
+ handle: entityId
39
+ });
40
+ if (byHandle.productByHandle) {
41
+ return byHandle.productByHandle;
42
+ }
43
+ // Fall back to global ID if it looks numeric
44
+ if (isNumericId(entityId)) {
45
+ const byId = await client.query(PRODUCT_BY_ID_QUERY, {
46
+ id: toGlobalId('Product', entityId)
47
+ });
48
+ return byId.product ?? null;
49
+ }
50
+ return null;
51
+ }
52
+ case 'collection':
53
+ {
54
+ const byHandle = await client.query(COLLECTION_BY_HANDLE_QUERY, {
55
+ handle: entityId
56
+ });
57
+ if (byHandle.collectionByHandle) {
58
+ return byHandle.collectionByHandle;
59
+ }
60
+ if (isNumericId(entityId)) {
61
+ const byId = await client.query(COLLECTION_BY_ID_QUERY, {
62
+ id: toGlobalId('Collection', entityId)
63
+ });
64
+ return byId.collection ?? null;
65
+ }
66
+ return null;
67
+ }
68
+ case 'article':
69
+ {
70
+ var _data$blog;
71
+ const {
72
+ blogHandle,
73
+ articleHandle
74
+ } = parseArticleEntityId(entityId, config == null ? void 0 : config.defaultBlogHandle);
75
+ if (!blogHandle || !articleHandle) {
76
+ return null;
77
+ }
78
+ const data = await client.query(ARTICLE_BY_HANDLE_QUERY, {
79
+ blogHandle,
80
+ articleHandle
81
+ });
82
+ return ((_data$blog = data.blog) == null ? void 0 : _data$blog.articleByHandle) ?? null;
83
+ }
84
+ default:
85
+ return null;
86
+ }
87
+ } catch (error) {
88
+ console.warn(`[shopify] Failed to resolve ${entityType}/${entityId}:`, error instanceof Error ? error.message : error);
89
+ return null;
90
+ }
91
+ }
92
+ function parseArticleEntityId(entityId, defaultBlogHandle) {
93
+ const slashIndex = entityId.indexOf('/');
94
+ if (slashIndex !== -1) {
95
+ return {
96
+ blogHandle: entityId.slice(0, slashIndex),
97
+ articleHandle: entityId.slice(slashIndex + 1)
98
+ };
99
+ }
100
+ return {
101
+ blogHandle: defaultBlogHandle,
102
+ articleHandle: entityId || undefined
103
+ };
104
+ }
105
+ //# sourceMappingURL=shopifyEntityResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PRODUCT_BY_HANDLE_QUERY","PRODUCT_BY_ID_QUERY","COLLECTION_BY_HANDLE_QUERY","COLLECTION_BY_ID_QUERY","ARTICLE_BY_HANDLE_QUERY","isNumericId","entityId","test","toGlobalId","type","numericId","capitalType","charAt","toUpperCase","slice","resolveShopifyEntity","client","entityType","config","toLowerCase","byHandle","query","handle","productByHandle","byId","id","product","collectionByHandle","collection","_data$blog","blogHandle","articleHandle","parseArticleEntityId","defaultBlogHandle","data","blog","articleByHandle","error","console","warn","Error","message","slashIndex","indexOf","undefined"],"sources":["../../../../src/services/shopify/shopifyEntityResolver.ts"],"sourcesContent":["import type { ShopifyStorefrontClient } from './shopifyStorefrontClient';\nimport type {\n ShopifyStorefrontConfig,\n ShopifyProduct,\n ShopifyCollection,\n ShopifyArticle,\n ProductByHandleResponse,\n CollectionByHandleResponse,\n ArticleByHandleResponse,\n} from './types';\nimport {\n PRODUCT_BY_HANDLE_QUERY,\n PRODUCT_BY_ID_QUERY,\n COLLECTION_BY_HANDLE_QUERY,\n COLLECTION_BY_ID_QUERY,\n ARTICLE_BY_HANDLE_QUERY,\n} from './queries';\n\ntype ShopifyEntity = ShopifyProduct | ShopifyCollection | ShopifyArticle;\n\n/**\n * Check if an entityId looks like a numeric Shopify ID (not a handle).\n * Handles are URL slugs (e.g. \"classic-cotton-tee\"), IDs are numeric (e.g. \"10260081213719\").\n */\nfunction isNumericId(entityId: string): boolean {\n return /^\\d+$/.test(entityId);\n}\n\n/** Build a Shopify global ID from a numeric ID and resource type */\nfunction toGlobalId(type: string, numericId: string): string {\n const capitalType = type.charAt(0).toUpperCase() + type.slice(1);\n return `gid://shopify/${capitalType}/${numericId}`;\n}\n\n/**\n * Resolve a single Shopify entity by type and ID.\n *\n * The entityId can be either a **handle** (URL slug like \"classic-cotton-tee\")\n * or a **numeric ID** (like \"10260081213719\"). The resolver tries the handle\n * query first; if the entityId is numeric and the handle query returns null,\n * it falls back to querying by global ID.\n *\n * - product: entityId = handle or numeric ID\n * - collection: entityId = handle or numeric ID\n * - article: entityId = \"blogHandle/articleHandle\" or just \"articleHandle\"\n * (falls back to config.defaultBlogHandle when no blog prefix)\n *\n * Returns null if the entity is not found or on error.\n */\nexport async function resolveShopifyEntity(\n client: ShopifyStorefrontClient,\n entityType: string,\n entityId: string,\n config?: ShopifyStorefrontConfig,\n): Promise<ShopifyEntity | null> {\n try {\n switch (entityType.toLowerCase()) {\n case 'product': {\n // Try by handle first\n const byHandle = await client.query<ProductByHandleResponse>(\n PRODUCT_BY_HANDLE_QUERY,\n { handle: entityId },\n );\n if (byHandle.productByHandle) {\n return byHandle.productByHandle;\n }\n // Fall back to global ID if it looks numeric\n if (isNumericId(entityId)) {\n const byId = await client.query<{ product: ShopifyProduct | null }>(\n PRODUCT_BY_ID_QUERY,\n { id: toGlobalId('Product', entityId) },\n );\n return byId.product ?? null;\n }\n return null;\n }\n\n case 'collection': {\n const byHandle = await client.query<CollectionByHandleResponse>(\n COLLECTION_BY_HANDLE_QUERY,\n { handle: entityId },\n );\n if (byHandle.collectionByHandle) {\n return byHandle.collectionByHandle;\n }\n if (isNumericId(entityId)) {\n const byId = await client.query<{\n collection: ShopifyCollection | null;\n }>(COLLECTION_BY_ID_QUERY, {\n id: toGlobalId('Collection', entityId),\n });\n return byId.collection ?? null;\n }\n return null;\n }\n\n case 'article': {\n const { blogHandle, articleHandle } = parseArticleEntityId(\n entityId,\n config?.defaultBlogHandle,\n );\n if (!blogHandle || !articleHandle) {\n return null;\n }\n const data = await client.query<ArticleByHandleResponse>(\n ARTICLE_BY_HANDLE_QUERY,\n { blogHandle, articleHandle },\n );\n return data.blog?.articleByHandle ?? null;\n }\n\n default:\n return null;\n }\n } catch (error) {\n console.warn(\n `[shopify] Failed to resolve ${entityType}/${entityId}:`,\n error instanceof Error ? error.message : error,\n );\n return null;\n }\n}\n\nfunction parseArticleEntityId(\n entityId: string,\n defaultBlogHandle?: string,\n): { blogHandle: string | undefined; articleHandle: string | undefined } {\n const slashIndex = entityId.indexOf('/');\n if (slashIndex !== -1) {\n return {\n blogHandle: entityId.slice(0, slashIndex),\n articleHandle: entityId.slice(slashIndex + 1),\n };\n }\n return {\n blogHandle: defaultBlogHandle,\n articleHandle: entityId || undefined,\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,52 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ const DEFAULT_API_VERSION = '2025-01';
3
+
4
+ /**
5
+ * Lightweight GraphQL client for the Shopify Storefront API.
6
+ *
7
+ * Uses native fetch — no external dependencies.
8
+ *
9
+ * When a `storefrontAccessToken` is provided, it's sent via
10
+ * the `X-Shopify-Storefront-Access-Token` header (required for
11
+ * cross-origin / localhost / headless access).
12
+ *
13
+ * Tokenless access (no token) only works from the store's own domain.
14
+ */
15
+ export class ShopifyStorefrontClient {
16
+ constructor(config) {
17
+ _defineProperty(this, "endpoint", void 0);
18
+ _defineProperty(this, "accessToken", void 0);
19
+ const domain = config.storeDomain.replace(/\/$/, '');
20
+ const version = config.apiVersion || DEFAULT_API_VERSION;
21
+ const protocol = domain.startsWith('http') ? '' : 'https://';
22
+ this.endpoint = `${protocol}${domain}/api/${version}/graphql.json`;
23
+ this.accessToken = config.storefrontAccessToken;
24
+ }
25
+ async query(graphql, variables) {
26
+ var _json$errors;
27
+ const headers = {
28
+ 'Content-Type': 'application/json'
29
+ };
30
+ if (this.accessToken) {
31
+ headers['X-Shopify-Storefront-Access-Token'] = this.accessToken;
32
+ }
33
+ const res = await fetch(this.endpoint, {
34
+ method: 'POST',
35
+ headers,
36
+ body: JSON.stringify({
37
+ query: graphql,
38
+ variables
39
+ })
40
+ });
41
+ if (!res.ok) {
42
+ throw new Error(`Shopify Storefront API error: ${res.status} ${res.statusText}`);
43
+ }
44
+ const json = await res.json();
45
+ if ((_json$errors = json.errors) != null && _json$errors.length) {
46
+ const messages = json.errors.map(e => e.message);
47
+ throw new Error(`Shopify GraphQL errors: ${messages.join('; ')}`);
48
+ }
49
+ return json.data;
50
+ }
51
+ }
52
+ //# sourceMappingURL=shopifyStorefrontClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_API_VERSION","ShopifyStorefrontClient","constructor","config","_defineProperty","domain","storeDomain","replace","version","apiVersion","protocol","startsWith","endpoint","accessToken","storefrontAccessToken","query","graphql","variables","_json$errors","headers","res","fetch","method","body","JSON","stringify","ok","Error","status","statusText","json","errors","length","messages","map","e","message","join","data"],"sources":["../../../../src/services/shopify/shopifyStorefrontClient.ts"],"sourcesContent":["import type { ShopifyStorefrontConfig } from './types';\n\nconst DEFAULT_API_VERSION = '2025-01';\n\n/**\n * Lightweight GraphQL client for the Shopify Storefront API.\n *\n * Uses native fetch — no external dependencies.\n *\n * When a `storefrontAccessToken` is provided, it's sent via\n * the `X-Shopify-Storefront-Access-Token` header (required for\n * cross-origin / localhost / headless access).\n *\n * Tokenless access (no token) only works from the store's own domain.\n */\nexport class ShopifyStorefrontClient {\n private readonly endpoint: string;\n private readonly accessToken: string | undefined;\n\n constructor(config: ShopifyStorefrontConfig) {\n const domain = config.storeDomain.replace(/\\/$/, '');\n const version = config.apiVersion || DEFAULT_API_VERSION;\n const protocol = domain.startsWith('http') ? '' : 'https://';\n this.endpoint = `${protocol}${domain}/api/${version}/graphql.json`;\n this.accessToken = config.storefrontAccessToken;\n }\n\n async query<T>(\n graphql: string,\n variables?: Record<string, unknown>,\n ): Promise<T> {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n };\n if (this.accessToken) {\n headers['X-Shopify-Storefront-Access-Token'] = this.accessToken;\n }\n\n const res = await fetch(this.endpoint, {\n method: 'POST',\n headers,\n body: JSON.stringify({ query: graphql, variables }),\n });\n\n if (!res.ok) {\n throw new Error(\n `Shopify Storefront API error: ${res.status} ${res.statusText}`,\n );\n }\n\n const json = await res.json();\n\n if (json.errors?.length) {\n const messages = json.errors.map((e: { message: string }) => e.message);\n throw new Error(`Shopify GraphQL errors: ${messages.join('; ')}`);\n }\n\n return json.data as T;\n }\n}\n"],"mappings":";AAEA,MAAMA,mBAAmB,GAAG,SAAS;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,uBAAuB,CAAC;EAInCC,WAAWA,CAACC,MAA+B,EAAE;IAAAC,eAAA;IAAAA,eAAA;IAC3C,MAAMC,MAAM,GAAGF,MAAM,CAACG,WAAW,CAACC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IACpD,MAAMC,OAAO,GAAGL,MAAM,CAACM,UAAU,IAAIT,mBAAmB;IACxD,MAAMU,QAAQ,GAAGL,MAAM,CAACM,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,UAAU;IAC5D,IAAI,CAACC,QAAQ,GAAG,GAAGF,QAAQ,GAAGL,MAAM,QAAQG,OAAO,eAAe;IAClE,IAAI,CAACK,WAAW,GAAGV,MAAM,CAACW,qBAAqB;EACjD;EAEA,MAAMC,KAAKA,CACTC,OAAe,EACfC,SAAmC,EACvB;IAAA,IAAAC,YAAA;IACZ,MAAMC,OAA+B,GAAG;MACtC,cAAc,EAAE;IAClB,CAAC;IACD,IAAI,IAAI,CAACN,WAAW,EAAE;MACpBM,OAAO,CAAC,mCAAmC,CAAC,GAAG,IAAI,CAACN,WAAW;IACjE;IAEA,MAAMO,GAAG,GAAG,MAAMC,KAAK,CAAC,IAAI,CAACT,QAAQ,EAAE;MACrCU,MAAM,EAAE,MAAM;MACdH,OAAO;MACPI,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;QAAEV,KAAK,EAAEC,OAAO;QAAEC;MAAU,CAAC;IACpD,CAAC,CAAC;IAEF,IAAI,CAACG,GAAG,CAACM,EAAE,EAAE;MACX,MAAM,IAAIC,KAAK,CACb,iCAAiCP,GAAG,CAACQ,MAAM,IAAIR,GAAG,CAACS,UAAU,EAC/D,CAAC;IACH;IAEA,MAAMC,IAAI,GAAG,MAAMV,GAAG,CAACU,IAAI,CAAC,CAAC;IAE7B,KAAAZ,YAAA,GAAIY,IAAI,CAACC,MAAM,aAAXb,YAAA,CAAac,MAAM,EAAE;MACvB,MAAMC,QAAQ,GAAGH,IAAI,CAACC,MAAM,CAACG,GAAG,CAAEC,CAAsB,IAAKA,CAAC,CAACC,OAAO,CAAC;MACvE,MAAM,IAAIT,KAAK,CAAC,2BAA2BM,QAAQ,CAACI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACnE;IAEA,OAAOP,IAAI,CAACQ,IAAI;EAClB;AACF","ignoreList":[]}
@@ -0,0 +1,130 @@
1
+ function formatShopifyDate(isoDate) {
2
+ const date = new Date(isoDate);
3
+ if (isNaN(date.getTime())) {
4
+ return undefined;
5
+ }
6
+ const day = date.getDate();
7
+ const month = date.toLocaleString('en-US', {
8
+ month: 'short'
9
+ });
10
+ const year = date.getFullYear();
11
+ return `${day} ${month} ${year}`;
12
+ }
13
+ function formatPrice(money) {
14
+ const amount = parseFloat(money.amount);
15
+ const formatted = amount.toFixed(2);
16
+ return `${formatted} ${money.currencyCode}`;
17
+ }
18
+ function extractSizes(product) {
19
+ const sizes = product.variants.edges.flatMap(e => e.node.selectedOptions.filter(o => o.name.toLowerCase() === 'size').map(o => o.value));
20
+ const unique = [...new Set(sizes)];
21
+ return unique.length > 0 ? unique : undefined;
22
+ }
23
+
24
+ /**
25
+ * Extract variant ID → size label mapping for add-to-cart.
26
+ * Shopify global IDs look like "gid://shopify/ProductVariant/12345" —
27
+ * we extract just the numeric part for the Ajax API.
28
+ */
29
+ function extractVariants(product) {
30
+ const variants = product.variants.edges.map(e => {
31
+ const sizeOption = e.node.selectedOptions.find(o => o.name.toLowerCase() === 'size');
32
+ const numericId = e.node.id.replace(/^gid:\/\/shopify\/ProductVariant\//, '');
33
+ return {
34
+ label: (sizeOption == null ? void 0 : sizeOption.value) || e.node.title,
35
+ variantId: numericId,
36
+ available: e.node.availableForSale,
37
+ selectedOptions: e.node.selectedOptions.map(o => ({
38
+ name: o.name,
39
+ value: o.value
40
+ })),
41
+ price: formatPrice(e.node.price),
42
+ compareAtPrice: e.node.compareAtPrice ? formatPrice(e.node.compareAtPrice) : undefined
43
+ };
44
+ });
45
+ return variants.length > 0 ? variants : undefined;
46
+ }
47
+ function getSecondaryImage(product) {
48
+ const images = product.images.edges.map(e => e.node.url);
49
+ return images.length > 1 ? images[1] : undefined;
50
+ }
51
+ function getAllImages(product) {
52
+ const images = product.images.edges.map(e => e.node.url);
53
+ return images.length > 0 ? images : undefined;
54
+ }
55
+ function getCompareAtPrice(product) {
56
+ var _product$compareAtPri;
57
+ const compare = (_product$compareAtPri = product.compareAtPriceRange) == null ? void 0 : _product$compareAtPri.minVariantPrice;
58
+ if (!compare) {
59
+ return undefined;
60
+ }
61
+ const min = product.priceRange.minVariantPrice;
62
+ if (parseFloat(compare.amount) <= parseFloat(min.amount)) {
63
+ return undefined;
64
+ }
65
+ return formatPrice(compare);
66
+ }
67
+ export function transformShopifyProduct(product) {
68
+ var _product$featuredImag, _product$options;
69
+ return {
70
+ url: product.onlineStoreUrl || '',
71
+ title: product.title,
72
+ type: 'product',
73
+ description: product.description,
74
+ imageUrl: (_product$featuredImag = product.featuredImage) == null ? void 0 : _product$featuredImag.url,
75
+ secondaryImageUrl: getSecondaryImage(product),
76
+ vendor: product.vendor,
77
+ price: formatPrice(product.priceRange.minVariantPrice),
78
+ compareAtPrice: getCompareAtPrice(product),
79
+ sizes: extractSizes(product),
80
+ variants: extractVariants(product),
81
+ allImages: getAllImages(product),
82
+ options: (_product$options = product.options) != null && _product$options.length ? product.options : undefined,
83
+ tags: product.tags.length ? product.tags : undefined
84
+ };
85
+ }
86
+ export function transformShopifyCollection(collection) {
87
+ var _collection$image;
88
+ return {
89
+ url: collection.onlineStoreUrl || '',
90
+ title: collection.title,
91
+ type: 'collection',
92
+ description: collection.description,
93
+ imageUrl: (_collection$image = collection.image) == null ? void 0 : _collection$image.url
94
+ };
95
+ }
96
+ export function transformShopifyArticle(article) {
97
+ var _article$image, _article$authorV;
98
+ return {
99
+ url: article.onlineStoreUrl || '',
100
+ title: article.title,
101
+ type: 'article',
102
+ description: article.excerpt || undefined,
103
+ imageUrl: (_article$image = article.image) == null ? void 0 : _article$image.url,
104
+ publishDate: formatShopifyDate(article.publishedAt),
105
+ author: ((_article$authorV = article.authorV2) == null ? void 0 : _article$authorV.name) || undefined,
106
+ tags: article.tags.length ? article.tags : undefined
107
+ };
108
+ }
109
+
110
+ /**
111
+ * Transform any resolved Shopify entity to the standard EntityItemData shape.
112
+ * Detects the entity type by checking for type-specific fields.
113
+ */
114
+ export function transformShopifyEntityToItemData(entity, entityType) {
115
+ switch (entityType.toLowerCase()) {
116
+ case 'product':
117
+ return transformShopifyProduct(entity);
118
+ case 'collection':
119
+ return transformShopifyCollection(entity);
120
+ case 'article':
121
+ return transformShopifyArticle(entity);
122
+ default:
123
+ return {
124
+ url: '',
125
+ title: entity.title || '',
126
+ type: entityType
127
+ };
128
+ }
129
+ }
130
+ //# sourceMappingURL=transformShopifyEntity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["formatShopifyDate","isoDate","date","Date","isNaN","getTime","undefined","day","getDate","month","toLocaleString","year","getFullYear","formatPrice","money","amount","parseFloat","formatted","toFixed","currencyCode","extractSizes","product","sizes","variants","edges","flatMap","e","node","selectedOptions","filter","o","name","toLowerCase","map","value","unique","Set","length","extractVariants","sizeOption","find","numericId","id","replace","label","title","variantId","available","availableForSale","price","compareAtPrice","getSecondaryImage","images","url","getAllImages","getCompareAtPrice","_product$compareAtPri","compare","compareAtPriceRange","minVariantPrice","min","priceRange","transformShopifyProduct","_product$featuredImag","_product$options","onlineStoreUrl","type","description","imageUrl","featuredImage","secondaryImageUrl","vendor","allImages","options","tags","transformShopifyCollection","collection","_collection$image","image","transformShopifyArticle","article","_article$image","_article$authorV","excerpt","publishDate","publishedAt","author","authorV2","transformShopifyEntityToItemData","entity","entityType"],"sources":["../../../../src/services/shopify/transformShopifyEntity.ts"],"sourcesContent":["import type { EntityItemData } from '../../component/types';\nimport type {\n ShopifyProduct,\n ShopifyCollection,\n ShopifyArticle,\n} from './types';\n\nfunction formatShopifyDate(isoDate: string): string | undefined {\n const date = new Date(isoDate);\n if (isNaN(date.getTime())) {\n return undefined;\n }\n const day = date.getDate();\n const month = date.toLocaleString('en-US', { month: 'short' });\n const year = date.getFullYear();\n return `${day} ${month} ${year}`;\n}\n\nfunction formatPrice(\n money: ShopifyProduct['priceRange']['minVariantPrice'],\n): string {\n const amount = parseFloat(money.amount);\n const formatted = amount.toFixed(2);\n return `${formatted} ${money.currencyCode}`;\n}\n\nfunction extractSizes(product: ShopifyProduct): string[] | undefined {\n const sizes = product.variants.edges.flatMap((e) =>\n e.node.selectedOptions\n .filter((o) => o.name.toLowerCase() === 'size')\n .map((o) => o.value),\n );\n const unique = [...new Set(sizes)];\n return unique.length > 0 ? unique : undefined;\n}\n\n/**\n * Extract variant ID → size label mapping for add-to-cart.\n * Shopify global IDs look like \"gid://shopify/ProductVariant/12345\" —\n * we extract just the numeric part for the Ajax API.\n */\nfunction extractVariants(product: ShopifyProduct): EntityItemData['variants'] {\n const variants = product.variants.edges.map((e) => {\n const sizeOption = e.node.selectedOptions.find(\n (o) => o.name.toLowerCase() === 'size',\n );\n const numericId = e.node.id.replace(\n /^gid:\\/\\/shopify\\/ProductVariant\\//,\n '',\n );\n return {\n label: sizeOption?.value || e.node.title,\n variantId: numericId,\n available: e.node.availableForSale,\n selectedOptions: e.node.selectedOptions.map((o) => ({\n name: o.name,\n value: o.value,\n })),\n price: formatPrice(e.node.price),\n compareAtPrice: e.node.compareAtPrice\n ? formatPrice(e.node.compareAtPrice)\n : undefined,\n };\n });\n return variants.length > 0 ? variants : undefined;\n}\n\nfunction getSecondaryImage(product: ShopifyProduct): string | undefined {\n const images = product.images.edges.map((e) => e.node.url);\n return images.length > 1 ? images[1] : undefined;\n}\n\nfunction getAllImages(product: ShopifyProduct): string[] | undefined {\n const images = product.images.edges.map((e) => e.node.url);\n return images.length > 0 ? images : undefined;\n}\n\nfunction getCompareAtPrice(product: ShopifyProduct): string | undefined {\n const compare = product.compareAtPriceRange?.minVariantPrice;\n if (!compare) {\n return undefined;\n }\n const min = product.priceRange.minVariantPrice;\n if (parseFloat(compare.amount) <= parseFloat(min.amount)) {\n return undefined;\n }\n return formatPrice(compare);\n}\n\nexport function transformShopifyProduct(\n product: ShopifyProduct,\n): EntityItemData {\n return {\n url: product.onlineStoreUrl || '',\n title: product.title,\n type: 'product',\n description: product.description,\n imageUrl: product.featuredImage?.url,\n secondaryImageUrl: getSecondaryImage(product),\n vendor: product.vendor,\n price: formatPrice(product.priceRange.minVariantPrice),\n compareAtPrice: getCompareAtPrice(product),\n sizes: extractSizes(product),\n variants: extractVariants(product),\n allImages: getAllImages(product),\n options: product.options?.length ? product.options : undefined,\n tags: product.tags.length ? product.tags : undefined,\n };\n}\n\nexport function transformShopifyCollection(\n collection: ShopifyCollection,\n): EntityItemData {\n return {\n url: collection.onlineStoreUrl || '',\n title: collection.title,\n type: 'collection',\n description: collection.description,\n imageUrl: collection.image?.url,\n };\n}\n\nexport function transformShopifyArticle(\n article: ShopifyArticle,\n): EntityItemData {\n return {\n url: article.onlineStoreUrl || '',\n title: article.title,\n type: 'article',\n description: article.excerpt || undefined,\n imageUrl: article.image?.url,\n publishDate: formatShopifyDate(article.publishedAt),\n author: article.authorV2?.name || undefined,\n tags: article.tags.length ? article.tags : undefined,\n };\n}\n\n/**\n * Transform any resolved Shopify entity to the standard EntityItemData shape.\n * Detects the entity type by checking for type-specific fields.\n */\nexport function transformShopifyEntityToItemData(\n entity: ShopifyProduct | ShopifyCollection | ShopifyArticle,\n entityType: string,\n): EntityItemData {\n switch (entityType.toLowerCase()) {\n case 'product':\n return transformShopifyProduct(entity as ShopifyProduct);\n case 'collection':\n return transformShopifyCollection(entity as ShopifyCollection);\n case 'article':\n return transformShopifyArticle(entity as ShopifyArticle);\n default:\n return {\n url: '',\n title: (entity as { title?: string }).title || '',\n type: entityType,\n };\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../../../src/services/shopify/types.ts"],"sourcesContent":["/**\n * Configuration for connecting to a Shopify Storefront API instance.\n */\nexport interface ShopifyStorefrontConfig {\n /** The Shopify store domain, e.g. \"my-store.myshopify.com\" */\n storeDomain: string;\n /**\n * Public Storefront Access Token.\n * Required when calling from outside the store's own domain (e.g. localhost, headless apps).\n * Tokenless access only works from the store's own origin.\n *\n * Get one from: Shopify Admin → Settings → Apps → Develop apps → Storefront API access token,\n * or via the Headless channel.\n */\n storefrontAccessToken?: string;\n /** Storefront API version, e.g. \"2025-01\". Defaults to \"2025-01\". */\n apiVersion?: string;\n /** Default blog handle used when an article entityId has no blog prefix */\n defaultBlogHandle?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Storefront API GraphQL response shapes\n// ---------------------------------------------------------------------------\n\nexport interface ShopifyImage {\n url: string;\n altText: string | null;\n}\n\nexport interface ShopifyMoneyV2 {\n amount: string;\n currencyCode: string;\n}\n\nexport interface ShopifyVariantOption {\n name: string;\n value: string;\n}\n\nexport interface ShopifyVariant {\n id: string;\n title: string;\n availableForSale: boolean;\n selectedOptions: ShopifyVariantOption[];\n price: ShopifyMoneyV2;\n compareAtPrice: ShopifyMoneyV2 | null;\n image: ShopifyImage | null;\n}\n\nexport interface ShopifyProduct {\n id: string;\n title: string;\n handle: string;\n description: string;\n descriptionHtml: string;\n featuredImage: ShopifyImage | null;\n images: { edges: { node: ShopifyImage }[] };\n onlineStoreUrl: string | null;\n tags: string[];\n vendor: string;\n productType: string;\n priceRange: {\n minVariantPrice: ShopifyMoneyV2;\n maxVariantPrice: ShopifyMoneyV2;\n };\n compareAtPriceRange: {\n minVariantPrice: ShopifyMoneyV2;\n };\n options: { name: string; values: string[] }[];\n variants: { edges: { node: ShopifyVariant }[] };\n}\n\nexport interface ShopifyCollection {\n id: string;\n title: string;\n handle: string;\n description: string;\n descriptionHtml: string;\n image: ShopifyImage | null;\n onlineStoreUrl: string | null;\n}\n\nexport interface ShopifyArticle {\n id: string;\n title: string;\n handle: string;\n excerpt: string | null;\n contentHtml: string;\n image: ShopifyImage | null;\n authorV2: { name: string } | null;\n publishedAt: string;\n tags: string[];\n onlineStoreUrl: string | null;\n}\n\n// ---------------------------------------------------------------------------\n// GraphQL response wrappers\n// ---------------------------------------------------------------------------\n\nexport interface ProductByHandleResponse {\n productByHandle: ShopifyProduct | null;\n}\n\nexport interface CollectionByHandleResponse {\n collectionByHandle: ShopifyCollection | null;\n}\n\nexport interface ArticleByHandleResponse {\n blog: { articleByHandle: ShopifyArticle | null } | null;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,152 @@
1
+ /*
2
+ * Base design tokens — shared defaults for all client packages.
3
+ * Each client overrides these in their own globals.css :root block.
4
+ */
5
+ @import './prompt-input-tokens.css';
6
+
7
+ :root {
8
+ /* Color tokens — HSL triplets */
9
+ --background: 0 0% 100%;
10
+ --foreground: 0 0% 3.9%;
11
+ --card: 0 0% 100%;
12
+ --card-foreground: 0 0% 3.9%;
13
+ --popover: 0 0% 100%;
14
+ --popover-foreground: 0 0% 3.9%;
15
+ --primary: 0 0% 9%;
16
+ --primary-foreground: 0 0% 98%;
17
+ --secondary: 0 0% 96.1%;
18
+ --secondary-foreground: 0 0% 9%;
19
+ --muted: 0 0% 96.1%;
20
+ --muted-foreground: 0 0% 45.1%;
21
+ --accent: 0 0% 96.1%;
22
+ --accent-foreground: 0 0% 9%;
23
+ --destructive: 0 84.2% 60.2%;
24
+ --destructive-foreground: 0 0% 98%;
25
+ --border: 0 0% 89.8%;
26
+ --input: 0 0% 89.8%;
27
+ --ring: 0 0% 3.9%;
28
+
29
+ /* Chart colors */
30
+ --chart-1: 180 60% 65%;
31
+ --chart-2: 120 50% 60%;
32
+ --chart-3: 40 50% 70%;
33
+ --chart-4: 200 70% 60%;
34
+ --chart-5: 320 60% 70%;
35
+
36
+ /* Sidebar colors */
37
+ --sidebar: 0 0% 100%;
38
+ --sidebar-foreground: 0 0% 3.9%;
39
+ --sidebar-primary: 0 0% 9%;
40
+ --sidebar-primary-foreground: 0 0% 98%;
41
+ --sidebar-accent: 0 0% 96.1%;
42
+ --sidebar-accent-foreground: 0 0% 9%;
43
+ --sidebar-border: 0 0% 89.8%;
44
+ --sidebar-ring: 0 0% 3.9%;
45
+
46
+ /* Typography tokens */
47
+ --font-sans: ui-sans-serif, system-ui, sans-serif;
48
+ --font-serif: serif;
49
+ --font-mono: ui-monospace, monospace;
50
+ /* Display font — used for headings and callouts. Defaults to the body font
51
+ * so non-overriding clients render identically; clients (e.g. circana) can
52
+ * set this to a distinct family. */
53
+ --font-display: var(--font-sans);
54
+
55
+ /* Spacing & shape tokens */
56
+ --radius: 0.5rem;
57
+ --tracking-normal: -0.02em;
58
+ --spacing: 0.25rem;
59
+
60
+ /* Shadow tokens */
61
+ --shadow-2xs: 0px 1px 2px 0px hsl(0 0% 0% / 0.03);
62
+ --shadow-xs: 0px 1px 3px 0px hsl(0 0% 0% / 0.04);
63
+ --shadow-sm: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 1px 2px -1px hsl(0 0% 0% / 0.1);
64
+ --shadow: 0px 1px 3px 0px hsl(0 0% 0% / 0.1), 0px 1px 2px -1px hsl(0 0% 0% / 0.1);
65
+ --shadow-md: 0px 4px 6px -1px hsl(0 0% 0% / 0.1), 0px 2px 4px -2px hsl(0 0% 0% / 0.1);
66
+ --shadow-lg: 0px 10px 15px -3px hsl(0 0% 0% / 0.1), 0px 4px 6px -4px hsl(0 0% 0% / 0.1);
67
+ --shadow-xl: 0px 20px 25px -5px hsl(0 0% 0% / 0.1), 0px 8px 10px -6px hsl(0 0% 0% / 0.1);
68
+ --shadow-2xl: 0px 25px 50px -12px hsl(0 0% 0% / 0.25);
69
+
70
+ /* Component-level typography tokens */
71
+ --heading-lg-color: hsl(var(--foreground));
72
+ --heading-lg-gradient-from: hsl(var(--primary));
73
+ --heading-lg-gradient-to: hsl(var(--primary));
74
+ --heading-h3-color: hsl(var(--primary));
75
+ --heading-feature-color: hsl(var(--primary));
76
+ --section-description-color: hsl(var(--muted-foreground));
77
+ --section-description-font-size: 20px;
78
+ --section-description-line-height: 30px;
79
+ --section-description-font-size-tablet: 24px;
80
+ --section-description-line-height-tablet: 36px;
81
+ --markdown-content-color: hsl(var(--muted-foreground));
82
+ --card-title-color: hsl(var(--primary));
83
+ --card-title-gradient-color: hsl(var(--primary));
84
+ --description-text-color: hsl(var(--foreground));
85
+ --body-text-color: hsl(var(--foreground));
86
+ --body-text-font-size: 18px;
87
+ --body-text-line-height: 28px;
88
+ --body-small-text-color: hsl(var(--foreground));
89
+ --body-small-text-font-size: 15px;
90
+ --body-small-text-line-height: 24px;
91
+ --hero-content-color: #FFF;
92
+ --hero-button-active-color: hsl(var(--primary));
93
+ --solution-label-color: hsl(var(--muted-foreground));
94
+ --view-solution-link-color: hsl(var(--primary));
95
+
96
+ /* Semantic text & border colors */
97
+ --text-muted: hsl(var(--muted-foreground));
98
+ --text-accent: hsl(var(--primary));
99
+ --text-accent-hover: hsl(var(--primary));
100
+ --accent-border: hsl(var(--primary));
101
+ --border-subtle: hsl(var(--border));
102
+
103
+ /* Section spacing tokens (responsive) */
104
+ --section-padding-y-mobile: 4rem;
105
+ --section-padding-y-tablet: 6rem;
106
+ --section-padding-y-desktop: 6rem;
107
+ --section-padding-x-mobile: 1.5rem;
108
+ --section-padding-x-desktop: 5rem;
109
+
110
+ /* Callout tokens */
111
+ --callout-icon-color: var(--body-text-color);
112
+ --callout-text-color: var(--body-text-color);
113
+ --callout-icon-size: 0.55em;
114
+ --callout-stream-delay: 0s;
115
+ --callout-star-duration: 2000;
116
+ --callout-star-delay: 400;
117
+
118
+ /* Prose defaults */
119
+ --tw-prose-body: hsl(var(--foreground));
120
+
121
+ }
122
+
123
+ .dark {
124
+ --background: 0 0% 3.9%;
125
+ --foreground: 0 0% 98%;
126
+ --card: 0 0% 3.9%;
127
+ --card-foreground: 0 0% 98%;
128
+ --popover: 0 0% 3.9%;
129
+ --popover-foreground: 0 0% 98%;
130
+ --primary: 0 0% 98%;
131
+ --primary-foreground: 0 0% 9%;
132
+ --secondary: 0 0% 14.9%;
133
+ --secondary-foreground: 0 0% 98%;
134
+ --muted: 0 0% 14.9%;
135
+ --muted-foreground: 0 0% 63.9%;
136
+ --accent: 0 0% 14.9%;
137
+ --accent-foreground: 0 0% 98%;
138
+ --destructive: 0 62.8% 30.6%;
139
+ --destructive-foreground: 0 0% 98%;
140
+ --border: 0 0% 14.9%;
141
+ --input: 0 0% 14.9%;
142
+ --ring: 0 0% 83.1%;
143
+
144
+ --sidebar: 0 0% 3.9%;
145
+ --sidebar-foreground: 0 0% 98%;
146
+ --sidebar-primary: 0 0% 98%;
147
+ --sidebar-primary-foreground: 0 0% 9%;
148
+ --sidebar-accent: 0 0% 14.9%;
149
+ --sidebar-accent-foreground: 0 0% 98%;
150
+ --sidebar-border: 0 0% 14.9%;
151
+ --sidebar-ring: 0 0% 83.1%;
152
+ }