@pixelated-tech/components 3.13.15 → 3.14.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 (247) hide show
  1. package/dist/components/admin/site-health/google.api.integration.js +5 -4
  2. package/dist/components/admin/site-health/site-health-cloudwatch.integration.js +3 -2
  3. package/dist/components/config/crypto.js +17 -1
  4. package/dist/components/general/cache-manager.js +19 -2
  5. package/dist/components/general/carousel.drag.js +21 -24
  6. package/dist/components/general/intersection-observer.js +4 -0
  7. package/dist/components/general/metadata.functions.js +1 -1
  8. package/dist/components/general/sitemap.js +3 -2
  9. package/dist/components/general/utilities.js +106 -0
  10. package/dist/components/integrations/contentful.delivery.js +16 -16
  11. package/dist/components/integrations/contentful.items.components.js +2 -11
  12. package/dist/components/integrations/flickr.js +7 -4
  13. package/dist/components/integrations/googleplaces.js +144 -0
  14. package/dist/components/integrations/socialcard.js +5 -2
  15. package/dist/components/integrations/wordpress.components.js +2 -1
  16. package/dist/components/shoppingcart/ebay.components.js +5 -5
  17. package/dist/components/shoppingcart/ebay.functions.js +5 -3
  18. package/dist/components/shoppingcart/shipping.to.json +3 -4
  19. package/dist/components/shoppingcart/shoppingcart.components.js +7 -5
  20. package/dist/components/shoppingcart/shoppingcart.css +1 -1
  21. package/dist/components/shoppingcart/shoppingcart.functions.js +5 -14
  22. package/dist/components/sitebuilder/form/formcomponents.js +151 -0
  23. package/dist/components/sitebuilder/form/formutils.js +3 -0
  24. package/dist/components/sitebuilder/page/lib/pageStorageContentful.js +2 -2
  25. package/dist/config/pixelated.config.json.enc +1 -1
  26. package/dist/data/form.json +18 -0
  27. package/dist/index.adminserver.js +1 -3
  28. package/dist/index.js +1 -1
  29. package/dist/index.server.js +1 -0
  30. package/dist/scripts/create-pixelated-app.js +187 -79
  31. package/dist/scripts/create-pixelated-app.json +51 -1
  32. package/dist/scripts/pixelated-eslint-plugin.js +142 -0
  33. package/dist/scripts/release.sh +23 -16
  34. package/dist/scripts/update.sh +47 -8
  35. package/dist/types/components/admin/deploy/deployment.integration.d.ts +1 -0
  36. package/dist/types/components/admin/deploy/deployment.integration.d.ts.map +1 -1
  37. package/dist/types/components/admin/site-health/google.api.integration.d.ts.map +1 -1
  38. package/dist/types/components/admin/site-health/site-health-cloudwatch.integration.d.ts.map +1 -1
  39. package/dist/types/components/config/config.types.d.ts +23 -0
  40. package/dist/types/components/config/config.types.d.ts.map +1 -1
  41. package/dist/types/components/config/crypto.d.ts +1 -0
  42. package/dist/types/components/config/crypto.d.ts.map +1 -1
  43. package/dist/types/components/general/cache-manager.d.ts +16 -2
  44. package/dist/types/components/general/cache-manager.d.ts.map +1 -1
  45. package/dist/types/components/general/carousel.drag.d.ts.map +1 -1
  46. package/dist/types/components/general/intersection-observer.d.ts.map +1 -1
  47. package/dist/types/components/general/sitemap.d.ts.map +1 -1
  48. package/dist/types/components/general/utilities.d.ts +39 -0
  49. package/dist/types/components/general/utilities.d.ts.map +1 -1
  50. package/dist/types/components/integrations/contentful.delivery.d.ts +16 -16
  51. package/dist/types/components/integrations/contentful.items.components.d.ts.map +1 -1
  52. package/dist/types/components/integrations/flickr.d.ts.map +1 -1
  53. package/dist/types/components/integrations/googleplaces.d.ts +61 -0
  54. package/dist/types/components/integrations/googleplaces.d.ts.map +1 -0
  55. package/dist/types/components/integrations/socialcard.d.ts.map +1 -1
  56. package/dist/types/components/integrations/wordpress.components.d.ts.map +1 -1
  57. package/dist/types/components/shoppingcart/ebay.functions.d.ts.map +1 -1
  58. package/dist/types/components/shoppingcart/shoppingcart.components.d.ts.map +1 -1
  59. package/dist/types/components/shoppingcart/shoppingcart.functions.d.ts +2 -2
  60. package/dist/types/components/shoppingcart/shoppingcart.functions.d.ts.map +1 -1
  61. package/dist/types/components/sitebuilder/form/formcomponents.d.ts +22 -0
  62. package/dist/types/components/sitebuilder/form/formcomponents.d.ts.map +1 -1
  63. package/dist/types/components/sitebuilder/form/formutils.d.ts.map +1 -1
  64. package/dist/types/index.adminserver.d.ts +1 -3
  65. package/dist/types/index.d.ts +1 -1
  66. package/dist/types/index.server.d.ts +1 -0
  67. package/dist/types/scripts/create-pixelated-app.d.ts +3 -0
  68. package/dist/types/scripts/create-pixelated-app.d.ts.map +1 -1
  69. package/dist/types/scripts/pixelated-eslint-plugin.d.ts +20 -0
  70. package/dist/types/stories/integrations/contentful.items.stories.d.ts.map +1 -0
  71. package/dist/types/stories/integrations/contentful.stories.d.ts.map +1 -0
  72. package/dist/types/stories/integrations/google.reviews.stories.d.ts.map +1 -0
  73. package/dist/types/stories/integrations/googlesearch.stories.d.ts.map +1 -0
  74. package/dist/types/stories/integrations/gravatar.stories.d.ts.map +1 -0
  75. package/dist/types/stories/integrations/instagram.stories.d.ts.map +1 -0
  76. package/dist/types/stories/integrations/wordpress.stories.d.ts.map +1 -0
  77. package/dist/types/test/test-utils.d.ts +2 -0
  78. package/dist/types/test/test-utils.d.ts.map +1 -1
  79. package/dist/types/tests/404.test.d.ts +2 -0
  80. package/dist/types/tests/404.test.d.ts.map +1 -0
  81. package/dist/types/tests/carousel.drag.test.d.ts +2 -0
  82. package/dist/types/tests/carousel.drag.test.d.ts.map +1 -0
  83. package/dist/types/tests/carouselDrag.test.d.ts +2 -0
  84. package/dist/types/tests/carouselDrag.test.d.ts.map +1 -0
  85. package/dist/types/tests/componentAnalysis.test.d.ts +2 -0
  86. package/dist/types/tests/componentAnalysis.test.d.ts.map +1 -0
  87. package/dist/types/tests/componentDiscovery.test.d.ts +2 -0
  88. package/dist/types/tests/componentDiscovery.test.d.ts.map +1 -0
  89. package/dist/types/tests/componentMap.test.d.ts +2 -0
  90. package/dist/types/tests/componentMap.test.d.ts.map +1 -0
  91. package/dist/types/tests/contentful.items.components.test.d.ts +2 -0
  92. package/dist/types/tests/contentful.items.components.test.d.ts.map +1 -0
  93. package/dist/types/tests/contentful.management.test.d.ts +2 -0
  94. package/dist/types/tests/contentful.management.test.d.ts.map +1 -0
  95. package/dist/types/tests/contentfulManagement.test.d.ts +2 -0
  96. package/dist/types/tests/contentfulManagement.test.d.ts.map +1 -0
  97. package/dist/types/tests/countup.test.d.ts +2 -0
  98. package/dist/types/tests/countup.test.d.ts.map +1 -0
  99. package/dist/types/tests/crypto.test.d.ts +2 -0
  100. package/dist/types/tests/crypto.test.d.ts.map +1 -0
  101. package/dist/types/tests/deployment.integration.test.d.ts +2 -0
  102. package/dist/types/tests/deployment.integration.test.d.ts.map +1 -0
  103. package/dist/types/tests/ebay.components.test.d.ts +2 -0
  104. package/dist/types/tests/ebay.components.test.d.ts.map +1 -0
  105. package/dist/types/tests/ebayComponents.test.d.ts +2 -0
  106. package/dist/types/tests/ebayComponents.test.d.ts.map +1 -0
  107. package/dist/types/tests/flickr.test.d.ts +2 -0
  108. package/dist/types/tests/flickr.test.d.ts.map +1 -0
  109. package/dist/types/tests/formgoogleplacesinput.test.d.ts +2 -0
  110. package/dist/types/tests/formgoogleplacesinput.test.d.ts.map +1 -0
  111. package/dist/types/tests/formutils.test.d.ts +2 -0
  112. package/dist/types/tests/formutils.test.d.ts.map +1 -0
  113. package/dist/types/tests/formvalidator.test.d.ts +2 -0
  114. package/dist/types/tests/formvalidator.test.d.ts.map +1 -0
  115. package/dist/types/tests/gemini-api.client.test.d.ts +2 -0
  116. package/dist/types/tests/gemini-api.client.test.d.ts.map +1 -0
  117. package/dist/types/tests/gemini-api.server.test.d.ts +2 -0
  118. package/dist/types/tests/gemini-api.server.test.d.ts.map +1 -0
  119. package/dist/types/tests/geminiApi.test.d.ts +2 -0
  120. package/dist/types/tests/geminiApi.test.d.ts.map +1 -0
  121. package/dist/types/tests/google.reviews.components.test.d.ts +2 -0
  122. package/dist/types/tests/google.reviews.components.test.d.ts.map +1 -0
  123. package/dist/types/tests/googleanalytics.test.d.ts +2 -0
  124. package/dist/types/tests/googleanalytics.test.d.ts.map +1 -0
  125. package/dist/types/tests/googlemap.test.d.ts +2 -0
  126. package/dist/types/tests/googlemap.test.d.ts.map +1 -0
  127. package/dist/types/tests/gravatar.functions.test.d.ts +2 -0
  128. package/dist/types/tests/gravatar.functions.test.d.ts.map +1 -0
  129. package/dist/types/tests/hubspot.components.test.d.ts +2 -0
  130. package/dist/types/tests/hubspot.components.test.d.ts.map +1 -0
  131. package/dist/types/tests/image-utils.test.d.ts +2 -0
  132. package/dist/types/tests/image-utils.test.d.ts.map +1 -0
  133. package/dist/types/tests/instagram.components.test.d.ts +2 -0
  134. package/dist/types/tests/instagram.components.test.d.ts.map +1 -0
  135. package/dist/types/tests/instagram.functions.test.d.ts +2 -0
  136. package/dist/types/tests/instagram.functions.test.d.ts.map +1 -0
  137. package/dist/types/tests/intersection-observer.test.d.ts +2 -0
  138. package/dist/types/tests/intersection-observer.test.d.ts.map +1 -0
  139. package/dist/types/tests/metadata.functions.test.d.ts +2 -0
  140. package/dist/types/tests/metadata.functions.test.d.ts.map +1 -0
  141. package/dist/types/tests/metadataComponents.test.d.ts +2 -0
  142. package/dist/types/tests/metadataComponents.test.d.ts.map +1 -0
  143. package/dist/types/tests/page-storage.test.d.ts +2 -0
  144. package/dist/types/tests/page-storage.test.d.ts.map +1 -0
  145. package/dist/types/tests/pageStorageContentful.test.d.ts +2 -0
  146. package/dist/types/tests/pageStorageContentful.test.d.ts.map +1 -0
  147. package/dist/types/tests/pageStorageLocal.test.d.ts +2 -0
  148. package/dist/types/tests/pageStorageLocal.test.d.ts.map +1 -0
  149. package/dist/types/tests/pixelated.test.d.ts +2 -0
  150. package/dist/types/tests/pixelated.test.d.ts.map +1 -0
  151. package/dist/types/tests/propTypeIntrospection.test.d.ts +2 -0
  152. package/dist/types/tests/propTypeIntrospection.test.d.ts.map +1 -0
  153. package/dist/types/tests/save-route-example.test.d.ts +2 -0
  154. package/dist/types/tests/save-route-example.test.d.ts.map +1 -0
  155. package/dist/types/tests/saveRouteExample.test.d.ts +2 -0
  156. package/dist/types/tests/saveRouteExample.test.d.ts.map +1 -0
  157. package/dist/types/tests/seoConstants.test.d.ts +2 -0
  158. package/dist/types/tests/seoConstants.test.d.ts.map +1 -0
  159. package/dist/types/tests/site-health-accessibility.test.d.ts +2 -0
  160. package/dist/types/tests/site-health-accessibility.test.d.ts.map +1 -0
  161. package/dist/types/tests/site-health-cloudwatch.integration.test.d.ts +2 -0
  162. package/dist/types/tests/site-health-cloudwatch.integration.test.d.ts.map +1 -0
  163. package/dist/types/tests/site-health-dependency-vulnerabilities.test.d.ts +2 -0
  164. package/dist/types/tests/site-health-dependency-vulnerabilities.test.d.ts.map +1 -0
  165. package/dist/types/tests/site-health-github.test.d.ts +2 -0
  166. package/dist/types/tests/site-health-github.test.d.ts.map +1 -0
  167. package/dist/types/tests/site-health-google-analytics.integration.test.d.ts +2 -0
  168. package/dist/types/tests/site-health-google-analytics.integration.test.d.ts.map +1 -0
  169. package/dist/types/tests/site-health-google-analytics.test.d.ts +2 -0
  170. package/dist/types/tests/site-health-google-analytics.test.d.ts.map +1 -0
  171. package/dist/types/tests/site-health-google-search-console.integration.test.d.ts +2 -0
  172. package/dist/types/tests/site-health-google-search-console.integration.test.d.ts.map +1 -0
  173. package/dist/types/tests/site-health-google-search-console.test.d.ts +2 -0
  174. package/dist/types/tests/site-health-google-search-console.test.d.ts.map +1 -0
  175. package/dist/types/tests/site-health-mock-context.test.d.ts +2 -0
  176. package/dist/types/tests/site-health-mock-context.test.d.ts.map +1 -0
  177. package/dist/types/tests/site-health-on-site-seo.test.d.ts +2 -0
  178. package/dist/types/tests/site-health-on-site-seo.test.d.ts.map +1 -0
  179. package/dist/types/tests/site-health-performance.test.d.ts +2 -0
  180. package/dist/types/tests/site-health-performance.test.d.ts.map +1 -0
  181. package/dist/types/tests/site-health-security.integration.test.d.ts +2 -0
  182. package/dist/types/tests/site-health-security.integration.test.d.ts.map +1 -0
  183. package/dist/types/tests/site-health-security.test.d.ts +2 -0
  184. package/dist/types/tests/site-health-security.test.d.ts.map +1 -0
  185. package/dist/types/tests/site-health-seo.test.d.ts +2 -0
  186. package/dist/types/tests/site-health-seo.test.d.ts.map +1 -0
  187. package/dist/types/tests/site-health-uptime.integration.test.d.ts +2 -0
  188. package/dist/types/tests/site-health-uptime.integration.test.d.ts.map +1 -0
  189. package/dist/types/tests/site-health-uptime.test.d.ts +2 -0
  190. package/dist/types/tests/site-health-uptime.test.d.ts.map +1 -0
  191. package/dist/types/tests/siteHealthGaIntegration.test.d.ts +2 -0
  192. package/dist/types/tests/siteHealthGaIntegration.test.d.ts.map +1 -0
  193. package/dist/types/tests/siteHealthGscIntegration.test.d.ts +2 -0
  194. package/dist/types/tests/siteHealthGscIntegration.test.d.ts.map +1 -0
  195. package/dist/types/tests/spotify.components.test.d.ts +2 -0
  196. package/dist/types/tests/spotify.components.test.d.ts.map +1 -0
  197. package/dist/types/tests/spotify.functions.test.d.ts +2 -0
  198. package/dist/types/tests/spotify.functions.test.d.ts.map +1 -0
  199. package/dist/types/tests/test-utils.d.ts +7 -0
  200. package/dist/types/tests/test-utils.d.ts.map +1 -0
  201. package/dist/types/tests/usePageBuilder.test.d.ts +2 -0
  202. package/dist/types/tests/usePageBuilder.test.d.ts.map +1 -0
  203. package/package.json +48 -41
  204. package/dist/components/admin/site-health/site-health-google-analytics.integration.js +0 -6
  205. package/dist/components/admin/site-health/site-health-google-search-console.integration.js +0 -6
  206. package/dist/components/general/proxy-csp-listener.js +0 -20
  207. package/dist/scripts/create-pixelated-app-template-mapper.js +0 -80
  208. package/dist/types/components/admin/site-health/site-health-google-analytics.integration.d.ts +0 -6
  209. package/dist/types/components/admin/site-health/site-health-google-analytics.integration.d.ts.map +0 -1
  210. package/dist/types/components/admin/site-health/site-health-google-search-console.integration.d.ts +0 -6
  211. package/dist/types/components/admin/site-health/site-health-google-search-console.integration.d.ts.map +0 -1
  212. package/dist/types/components/general/proxy-csp-listener.d.ts +0 -15
  213. package/dist/types/components/general/proxy-csp-listener.d.ts.map +0 -1
  214. package/dist/types/scripts/create-pixelated-app-template-mapper.d.ts +0 -5
  215. package/dist/types/scripts/create-pixelated-app-template-mapper.d.ts.map +0 -1
  216. package/dist/types/stories/general/callout.many.stories.d.ts +0 -7
  217. package/dist/types/stories/general/callout.many.stories.d.ts.map +0 -1
  218. package/dist/types/stories/general/contentful.item.stories.d.ts +0 -12
  219. package/dist/types/stories/general/contentful.item.stories.d.ts.map +0 -1
  220. package/dist/types/stories/general/contentful.items.stories.d.ts.map +0 -1
  221. package/dist/types/stories/general/contentful.stories.d.ts.map +0 -1
  222. package/dist/types/stories/general/global-error.stories.d.ts +0 -26
  223. package/dist/types/stories/general/global-error.stories.d.ts.map +0 -1
  224. package/dist/types/stories/general/google.reviews.stories.d.ts.map +0 -1
  225. package/dist/types/stories/general/googleanalytics.stories.d.ts +0 -14
  226. package/dist/types/stories/general/googleanalytics.stories.d.ts.map +0 -1
  227. package/dist/types/stories/general/googlesearch.stories.d.ts.map +0 -1
  228. package/dist/types/stories/general/gravatar.stories.d.ts.map +0 -1
  229. package/dist/types/stories/general/instagram.stories.d.ts.map +0 -1
  230. package/dist/types/stories/general/loading.stories.d.ts +0 -11
  231. package/dist/types/stories/general/loading.stories.d.ts.map +0 -1
  232. package/dist/types/stories/general/metadata.stories.d.ts +0 -25
  233. package/dist/types/stories/general/metadata.stories.d.ts.map +0 -1
  234. package/dist/types/stories/general/schema.stories.d.ts +0 -62
  235. package/dist/types/stories/general/schema.stories.d.ts.map +0 -1
  236. package/dist/types/stories/general/sitemap.stories.d.ts +0 -8
  237. package/dist/types/stories/general/sitemap.stories.d.ts.map +0 -1
  238. package/dist/types/stories/general/wordpress.stories.d.ts.map +0 -1
  239. package/dist/types/stories/integrations/schema-podcast.stories.d.ts +0 -45
  240. package/dist/types/stories/integrations/schema-podcast.stories.d.ts.map +0 -1
  241. /package/dist/types/stories/{general → integrations}/contentful.items.stories.d.ts +0 -0
  242. /package/dist/types/stories/{general → integrations}/contentful.stories.d.ts +0 -0
  243. /package/dist/types/stories/{general → integrations}/google.reviews.stories.d.ts +0 -0
  244. /package/dist/types/stories/{general → integrations}/googlesearch.stories.d.ts +0 -0
  245. /package/dist/types/stories/{general → integrations}/gravatar.stories.d.ts +0 -0
  246. /package/dist/types/stories/{general → integrations}/instagram.stories.d.ts +0 -0
  247. /package/dist/types/stories/{general → integrations}/wordpress.stories.d.ts +0 -0
@@ -178,8 +178,8 @@ export function EbayListItem(props) {
178
178
  const itemURL = "./store/" + thisItem.legacyItemId;
179
179
  const itemURLTarget = "_self"; /* "_blank" */
180
180
  const itemImage = (props.cloudinaryProductEnv)
181
- ? getImg({ url: thisItem.thumbnailImages[0].imageUrl, product_env: props.cloudinaryProductEnv })
182
- : thisItem.thumbnailImages[0].imageUrl;
181
+ ? getImg({ url: thisItem.thumbnailImages?.[0]?.imageUrl || thisItem.image?.imageUrl || '', product_env: props.cloudinaryProductEnv })
182
+ : thisItem.thumbnailImages?.[0]?.imageUrl || thisItem.image?.imageUrl || '';
183
183
  const shoppingCartItem = getShoppingCartItem({ thisItem: thisItem, cloudinaryProductEnv: props.cloudinaryProductEnv, apiProps: apiProps });
184
184
  // CHANGE EBAY URL TO LOCAL EBAY ITEM DETAIL URL
185
185
  shoppingCartItem.itemURL = itemURL;
@@ -189,7 +189,7 @@ export function EbayListItem(props) {
189
189
  ? _jsx("a", { href: itemURL, target: itemURLTarget, rel: "noopener noreferrer", children: itemImageComponent })
190
190
  : (itemImageComponent) }), _jsxs("div", { className: "ebay-item-body grid-s5-e13", children: [_jsx("div", { className: "ebay-item-header", children: itemURL
191
191
  ? _jsx(EbayItemHeader, { url: itemURL, target: itemURLTarget, title: thisItem.title })
192
- : _jsx(EbayItemHeader, { title: thisItem.title }) }), _jsxs("div", { className: "ebay-item-details grid12", children: [_jsxs("div", { children: [_jsx("b", { children: "Item ID: " }), thisItem.legacyItemId] }), _jsxs("div", { children: [_jsx("b", { children: "Quantity: " }), thisItem.categories[0].categoryId == apiProps.itemCategory ? 1 : 10] }), _jsxs("div", { children: [_jsx("b", { children: "Condition: " }), thisItem.condition] }), _jsxs("div", { children: [_jsx("b", { children: "Seller: " }), thisItem.seller.username, " (", thisItem.seller.feedbackScore, ")", _jsx("br", {}), thisItem.seller.feedbackPercentage, "% positive"] }), _jsxs("div", { children: [_jsx("b", { children: "Buying Options: " }), thisItem.buyingOptions[0]] }), _jsxs("div", { children: [_jsx("b", { children: "Location: " }), thisItem.itemLocation.postalCode + ", " + thisItem.itemLocation.country] }), _jsxs("div", { children: [_jsx("b", { children: "Listing Date: " }), thisItem.itemCreationDate] })] }), _jsx("div", { className: "ebay-item-price", children: itemURL
192
+ : _jsx(EbayItemHeader, { title: thisItem.title }) }), _jsxs("div", { className: "ebay-item-details grid12", children: [_jsxs("div", { children: [_jsx("b", { children: "Item ID: " }), thisItem.legacyItemId] }), _jsxs("div", { children: [_jsx("b", { children: "Quantity: " }), thisItem.categories?.[0]?.categoryId == apiProps.itemCategory ? 1 : 10] }), _jsxs("div", { children: [_jsx("b", { children: "Condition: " }), thisItem.condition] }), _jsxs("div", { children: [_jsx("b", { children: "Seller: " }), thisItem.seller?.username, " (", thisItem.seller?.feedbackScore, ")", _jsx("br", {}), thisItem.seller?.feedbackPercentage, "% positive"] }), _jsxs("div", { children: [_jsx("b", { children: "Buying Options: " }), thisItem.buyingOptions?.[0]] }), _jsxs("div", { children: [_jsx("b", { children: "Location: " }), thisItem.itemLocation?.postalCode + ", " + thisItem.itemLocation?.country] }), _jsxs("div", { children: [_jsx("b", { children: "Listing Date: " }), thisItem.itemCreationDate] })] }), _jsx("div", { className: "ebay-item-price", children: itemURL
193
193
  ? _jsxs("a", { href: itemURL, target: itemURLTarget, rel: "noreferrer", children: ["$", thisItem.price.value + " " + thisItem.price.currency] })
194
194
  : "$" + thisItem.price.value + " " + thisItem.price.currency }), _jsx("br", {}), _jsxs("div", { className: "ebay-item-add-to-cart", children: [_jsx(ViewItemDetails, { href: "/store", itemID: thisItem.legacyItemId }), _jsx(AddToCartButton, { handler: addToShoppingCart, item: shoppingCartItem, itemID: thisItem.legacyItemId })] })] })] }));
195
195
  }
@@ -253,7 +253,7 @@ export function EbayItemDetail(props) {
253
253
  const thisItem = { ...item };
254
254
  if (debug)
255
255
  console.log(thisItem);
256
- const images = thisItem.additionalImages.map((thisImage) => ({ image: (props.cloudinaryProductEnv)
256
+ const images = (thisItem.additionalImages || []).map((thisImage) => ({ image: (props.cloudinaryProductEnv)
257
257
  ? getImg({ url: thisImage.imageUrl, product_env: props.cloudinaryProductEnv })
258
258
  : thisImage.imageUrl }));
259
259
  const itemURL = undefined;
@@ -262,7 +262,7 @@ export function EbayItemDetail(props) {
262
262
  shoppingCartItem.itemURL = itemURL;
263
263
  return (_jsx(_Fragment, { children: _jsxs("div", { className: "ebay-item row-12col", children: [_jsx("div", { className: "ebay-item-header grid-s1-e13", children: itemURL
264
264
  ? _jsx(EbayItemHeader, { url: itemURL, title: thisItem.title })
265
- : _jsx(EbayItemHeader, { title: thisItem.title }) }), _jsx("br", {}), _jsx("div", { className: "ebay-item-photo-carousel grid-s1-e7", children: _jsx(Carousel, { cards: images, draggable: true, imgFit: "contain" }) }), _jsxs("div", { className: "grid-s7-e13", children: [_jsx("div", { className: "ebay-item-details grid12", children: _jsx("div", { dangerouslySetInnerHTML: { __html: thisItem.description.replace(/(<br\s*\/?>\s*){2,}/gi, '') } }) }), _jsx("br", {}), _jsxs("div", { className: "ebay-item-details grid12", children: [_jsxs("div", { children: [_jsx("b", { children: "Item ID: " }), thisItem.legacyItemId] }), _jsxs("div", { children: [_jsx("b", { children: "Quantity: " }), thisItem.categoryId == apiProps.itemCategory ? 1 : 10] }), _jsxs("div", { children: [_jsx("b", { children: "Category: " }), thisItem.categoryPath] }), _jsxs("div", { children: [_jsx("b", { children: "Condition: " }), thisItem.condition] }), _jsxs("div", { children: [_jsx("b", { children: "Seller: " }), thisItem.seller.username, " (", thisItem.seller.feedbackScore, ")", _jsx("br", {}), thisItem.seller.feedbackPercentage, "% positive"] }), _jsxs("div", { children: [_jsx("b", { children: "Buying Options: " }), thisItem.buyingOptions[0]] }), _jsxs("div", { children: [_jsx("b", { children: "Location: " }), thisItem.itemLocation.city + ", " + thisItem.itemLocation.stateOrProvince] }), _jsxs("div", { children: [_jsx("b", { children: "Listing Date: " }), thisItem.itemCreationDate] }), _jsx("br", {})] }), _jsx("div", { className: "ebay-item-price", children: itemURL
265
+ : _jsx(EbayItemHeader, { title: thisItem.title }) }), _jsx("br", {}), _jsx("div", { className: "ebay-item-photo-carousel grid-s1-e7", children: _jsx(Carousel, { cards: images, draggable: true, imgFit: "contain" }) }), _jsxs("div", { className: "grid-s7-e13", children: [_jsx("div", { className: "ebay-item-details grid12", children: _jsx("div", { dangerouslySetInnerHTML: { __html: thisItem.description?.replace(/(<br\s*\/?>\s*){2,}/gi, '') || '' } }) }), _jsx("br", {}), _jsxs("div", { className: "ebay-item-details grid12", children: [_jsxs("div", { children: [_jsx("b", { children: "Item ID: " }), thisItem.legacyItemId] }), _jsxs("div", { children: [_jsx("b", { children: "Quantity: " }), thisItem.categoryId == apiProps.itemCategory ? 1 : 10] }), _jsxs("div", { children: [_jsx("b", { children: "Category: " }), thisItem.categoryPath] }), _jsxs("div", { children: [_jsx("b", { children: "Condition: " }), thisItem.condition] }), _jsxs("div", { children: [_jsx("b", { children: "Seller: " }), thisItem.seller?.username, " (", thisItem.seller?.feedbackScore, ")", _jsx("br", {}), thisItem.seller?.feedbackPercentage, "% positive"] }), _jsxs("div", { children: [_jsx("b", { children: "Buying Options: " }), thisItem.buyingOptions?.[0]] }), _jsxs("div", { children: [_jsx("b", { children: "Location: " }), thisItem.itemLocation?.city + ", " + thisItem.itemLocation?.stateOrProvince] }), _jsxs("div", { children: [_jsx("b", { children: "Listing Date: " }), thisItem.itemCreationDate] }), _jsx("br", {})] }), _jsx("div", { className: "ebay-item-price", children: itemURL
266
266
  ? _jsxs("a", { href: itemURL, target: itemURLTarget, rel: "noreferrer", children: ["$", thisItem.price.value + " " + thisItem.price.currency] })
267
267
  : "$" + thisItem.price.value + " " + thisItem.price.currency }), _jsx("br", {}), _jsx("div", { className: "ebay-item-add-to-cart", children: _jsx(AddToCartButton, { handler: addToShoppingCart, item: shoppingCartItem, itemID: thisItem.legacyItemId }) })] })] }) }));
268
268
  }
@@ -1,11 +1,13 @@
1
1
  import PropTypes from "prop-types";
2
2
  import { getCloudinaryRemoteFetchURL as getImg } from "../integrations/cloudinary";
3
3
  import { CacheManager } from "../general/cache-manager";
4
+ import { getDomain } from "../general/utilities";
4
5
  const debug = false;
5
- // Initialize eBay Cache (Session storage, 1 hour TTL)
6
+ // Initialize eBay Cache (Session storage, 1 hour TTL) — isolated per domain
6
7
  const ebayCache = new CacheManager({
7
8
  mode: 'session',
8
- prefix: 'ebay_',
9
+ domain: getDomain(),
10
+ namespace: 'ebay',
9
11
  ttl: 60 * 60 * 1000
10
12
  });
11
13
  /* ===== EBAY BROWSE API DOCUMENTATION =====
@@ -86,7 +88,7 @@ export function getShoppingCartItem(props) {
86
88
  ? thisItem.thumbnailImages[0].imageUrl
87
89
  : (thisItem.image && props.cloudinaryProductEnv)
88
90
  ? getImg({ url: thisItem.image.imageUrl, product_env: props.cloudinaryProductEnv })
89
- : thisItem.image.imageUrl,
91
+ : thisItem.image?.imageUrl || '',
90
92
  itemID: thisItem.legacyItemId,
91
93
  itemURL: thisItem.itemWebUrl,
92
94
  itemTitle: thisItem.title,
@@ -16,19 +16,18 @@
16
16
  "tooltip" : "Please enter your First and Last Name"
17
17
  }
18
18
  },{
19
- "component" : "FormInput",
19
+ "component" : "FormGooglePlacesInput",
20
20
  "props" : {
21
- "type" : "text",
22
21
  "id" : "street1",
23
22
  "name" : "street1",
24
23
  "defaultValue" : null,
25
- "placeholder": "Street Address",
24
+ "placeholder": "Street Address (start typing)",
26
25
  "autoComplete" : "street-address",
27
26
  "size" : "40",
28
27
  "display" : "horizontal",
29
28
  "required": true,
30
29
  "label" : "Street Address : ",
31
- "tooltip" : "Please enter your Street Address"
30
+ "tooltip" : "Start typing your street address and select from suggestions"
32
31
  }
33
32
  },{
34
33
  "component" : "FormInput",
@@ -79,7 +79,8 @@ export function ShoppingCart(props) {
79
79
  useEffect(() => {
80
80
  // UPDATE DISCOUNT CODES ON EACH PAGE LOAD
81
81
  (async () => {
82
- setDiscountCodes(await getRemoteDiscountCodes());
82
+ const contentfulConfig = config?.contentful;
83
+ setDiscountCodes(await getRemoteDiscountCodes(contentfulConfig));
83
84
  })();
84
85
  // UPDATE SHOPPINGCART AND SHIPPINGDATA STATES IF LOCALSTORAGE CHANGES
85
86
  function handleStorageChange() {
@@ -146,10 +147,11 @@ export function ShoppingCart(props) {
146
147
  }
147
148
  if (progressStep === "ThankYou") {
148
149
  // ========== SENDMAIL ==========
150
+ const cartConfig = config?.shoppingcart;
149
151
  const json = {
150
- 'to': 'brian@pixelvivid.com',
151
- 'from': 'brian@pixelvivid.com',
152
- 'subject': 'PixelVivid Purchase',
152
+ 'to': cartConfig?.orderTo,
153
+ 'from': cartConfig?.orderFrom,
154
+ 'subject': cartConfig?.orderSubject,
153
155
  'orderData': JSON.stringify(orderData, null, 2),
154
156
  };
155
157
  const sendMailResponse = emailJSON(json);
@@ -157,7 +159,7 @@ export function ShoppingCart(props) {
157
159
  console.log("SendMail Response:", sendMailResponse);
158
160
  // ========== THANK YOU ==========
159
161
  const pmt = orderData.purchase_units[0].payments.captures[0];
160
- return (_jsxs("div", { className: "pix-cart", children: [_jsx(CalloutHeader, { title: "Shopping Cart : " }), _jsx("br", {}), _jsx("div", { id: "paypal-button-container", className: "paypal-button-container" }), _jsxs("div", { children: [_jsx("h3", { children: "Thank you for your payment!" }), "Payment ID : ", pmt.id, " ", _jsx("br", {}), "Status : ", pmt.status, " ", _jsx("br", {}), "Amount : $", pmt.amount.value + " " + pmt.amount.currency_code, " ", _jsx("br", {}), "Created : ", pmt.create_time, " ", _jsx("br", {})] })] }));
162
+ return (_jsxs("div", { className: "pix-cart", children: [_jsx(CalloutHeader, { title: "Shopping Cart : " }), _jsx("br", {}), _jsx("div", { id: "paypal-button-container", className: "paypal-button-container" }), _jsxs("div", { children: [_jsx("h3", { children: "Thank you for your payment!" }), "Payment ID : ", pmt.id, " ", _jsx("br", {}), "Status : ", pmt.status, " ", _jsx("br", {}), "Amount : $", pmt.amount.value + " " + (config?.shoppingcart?.currency || pmt.amount.currency_code), " ", _jsx("br", {}), "Created : ", pmt.create_time, " ", _jsx("br", {})] })] }));
161
163
  }
162
164
  else if (progressStep === "Checkout") {
163
165
  // ========== CHECKOUT ==========
@@ -92,7 +92,7 @@
92
92
  .pix-cart-button,
93
93
  .pix-cart .pix-cart-button,
94
94
  #pix-cart-button.pix-cart-button {
95
- font-size: 1.1em;
95
+ /* font-size: 1.1em; */
96
96
  font-family: Verdana, Geneva, sans-serif;
97
97
  color: #000;
98
98
  padding: 5px;
@@ -1,24 +1,15 @@
1
1
  import { getContentfulDiscountCodes } from "../integrations/contentful.delivery";
2
2
  import { CacheManager } from "../general/cache-manager";
3
+ import { getDomain } from "../general/utilities";
3
4
  // Migration-time verbose tracing per user request — remove after verification
4
5
  const debug = false;
5
- // Use CacheManager but preserve existing localStorage keys by using empty prefix
6
- const cartCache = new CacheManager({ mode: 'local', prefix: '' });
6
+ // Use CacheManager with domain + namespace to prevent multi-tenant cache collisions
7
+ const cartCache = new CacheManager({ mode: 'local', domain: getDomain(), namespace: 'checkout' });
7
8
  /* ========== LOCALSTORAGE KEYS ========== */
8
9
  export const shoppingCartKey = "pixelvividCart";
9
10
  export const shippingInfoKey = "pixelvividCartShipping";
10
11
  export const discountCodesKey = "pixelvividDiscountCodes";
11
12
  export const checkoutInfoKey = "pixelvividCartCheckout";
12
- // const sbPayPalApiKey = "AT10GG2ZHoApTtEw7dJoU6XRDYkf3wEvK2k_-eZ9GOvOK-REphG8yKCyZCqFi95OrxKgrdctlfWxayHG";
13
- // const sbPayPalSecret = "EDUrdPonwcNYZwO5j7hNmFSmF-13zptaCndUnO0-Vr_j0GYEW4m-Tfar9IaukHwm0ixL5fUojOOFtZVk";
14
- // const payPalApiKey = "AeWRwYpsrfslATCndF6xjL4GLcqA1UxQZLC5vxQE-FTvPezXfLbCJO_uAFk5zoXUKRFnP-zJ_73yEkBE";
15
- // const payPalSecret = "EBvYvynRXZCI6RbK4rg2NiENNG4N8tbgl8qAmpxB6f9nUkZjXMODxXJZ91JycP439kPrQcnB7uRKp0-F";
16
- const apiProps = {
17
- base_url: "https://cdn.contentful.com",
18
- space_id: "soi9w77t7027",
19
- environment: "master",
20
- delivery_access_token: "muY9LfpCt4qoXosDsnRkkoH3DAVVuUFEuB0WRKRdBUM",
21
- };
22
13
  /* ========== ARRAYS ========== */
23
14
  const shippingOptions = [
24
15
  {
@@ -209,7 +200,7 @@ export function getShippingCost() {
209
200
  return (option && option.price) ? formatAsHundredths(Number(option.price)) : 0;
210
201
  }
211
202
  /* ========== DISCOUNT CODE FUNCTIONS ========== */
212
- export async function validateDiscountCode(field) {
203
+ export async function validateDiscountCode(field, apiProps) {
213
204
  try {
214
205
  const codeList = await getContentfulDiscountCodes({ apiProps: apiProps, contentType: "discountCodes" });
215
206
  if (!codeList) {
@@ -240,7 +231,7 @@ export async function validateDiscountCode(field) {
240
231
  throw error; // Or return false;
241
232
  }
242
233
  }
243
- export async function getRemoteDiscountCodes() {
234
+ export async function getRemoteDiscountCodes(apiProps) {
244
235
  if (debug)
245
236
  console.log("Getting Contentful Discount Codes");
246
237
  try {
@@ -5,6 +5,7 @@ import PropTypes from "prop-types";
5
5
  import { validateField } from "./formvalidator";
6
6
  import { useFormValidation } from "./formvalidator";
7
7
  import * as FVF from "./formfieldvalidations";
8
+ import { usePixelatedConfig } from "../../config/config.client";
8
9
  import "./form.css";
9
10
  /*
10
11
  InferProps to generate Types
@@ -168,6 +169,156 @@ function FormTooltip(props) {
168
169
  let clickHandler = toggleTooltip;
169
170
  return (_jsx(_Fragment, { children: _jsxs("div", { id: mode + "-" + props.id, className: `tooltip-container ${props.className || ''}`, children: [_jsx("span", { className: "tooltip-icon tooltip-icon-" + mode, ...mouseEvents, onClick: clickHandler, onKeyDown: handleKeyDown, "aria-label": "Show more info", "aria-expanded": showTooltip, "aria-describedby": showTooltip ? `${props.id}-tooltip` : undefined, tabIndex: 0, role: "button", children: icon }), showTooltip && _jsx("div", { className: "tooltip-text", role: "tooltip", id: `${props.id}-tooltip`, children: content })] }) }));
170
171
  }
172
+ /**
173
+ * FormGooglePlacesInput — Address input with Google Places autocomplete and address component parsing.
174
+ *
175
+ * @param {string} [props.id] - Input id attribute (required).
176
+ * @param {string} [props.name] - Input name attribute.
177
+ * @param {string} [props.defaultValue] - Default value for uncontrolled inputs.
178
+ * @param {string} [props.placeholder] - Placeholder text.
179
+ * @param {string} [props.autoComplete] - Autocomplete hint.
180
+ * @param {string} [props.size] - Size attribute for text input.
181
+ * @param {string} [props.maxLength] - Maximum characters allowed.
182
+ * @param {string} [props.required] - Required flag.
183
+ * @param {string} [props.display] - Display style (inline/block) for layout purposes.
184
+ * @param {string} [props.label] - Label text associated with the input.
185
+ * @param {string} [props.tooltip] - Tooltip/help text for the input.
186
+ * @param {string} [props.className] - CSS class names applied to the input container.
187
+ * @param {string} [props.validate] - Named validation rule to run for this input.
188
+ * @param {function} [props.onChange] - Change handler invoked when place is selected.
189
+ * @param {function} [props.onAddressParsed] - Callback invoked with parsed address components when place is selected.
190
+ */
191
+ FormGooglePlacesInput.propTypes = {
192
+ id: PropTypes.string.isRequired,
193
+ name: PropTypes.string,
194
+ defaultValue: PropTypes.string,
195
+ placeholder: PropTypes.string,
196
+ autoComplete: PropTypes.string,
197
+ size: PropTypes.string,
198
+ maxLength: PropTypes.string,
199
+ required: PropTypes.string,
200
+ disabled: PropTypes.string,
201
+ display: PropTypes.string,
202
+ label: PropTypes.string,
203
+ tooltip: PropTypes.string,
204
+ className: PropTypes.string,
205
+ validate: PropTypes.string,
206
+ onChange: PropTypes.func,
207
+ onAddressParsed: PropTypes.func,
208
+ };
209
+ export function FormGooglePlacesInput(props) {
210
+ const [inputValue, setInputValue] = React.useState(props.defaultValue || '');
211
+ const [predictions, setPredictions] = React.useState([]);
212
+ const [showPredictions, setShowPredictions] = React.useState(false);
213
+ const [isLoading, setIsLoading] = React.useState(false);
214
+ const { formValidate, inputProps } = useFormComponent(props);
215
+ const config = usePixelatedConfig();
216
+ const debounceTimer = React.useRef(null);
217
+ const inputRef = React.useRef(null);
218
+ // Debounced fetch predictions
219
+ const fetchPredictions = React.useCallback(async (input) => {
220
+ if (!input || input.length < 2) {
221
+ setPredictions([]);
222
+ setShowPredictions(false);
223
+ return;
224
+ }
225
+ setIsLoading(true);
226
+ try {
227
+ const { getGooglePlacesService } = await import('../../integrations/googleplaces');
228
+ const service = getGooglePlacesService(config);
229
+ const results = await service.getPlacePredictions(input, config);
230
+ setPredictions(results);
231
+ setShowPredictions(true);
232
+ }
233
+ catch (error) {
234
+ console.error('Error fetching predictions:', error);
235
+ setPredictions([]);
236
+ }
237
+ finally {
238
+ setIsLoading(false);
239
+ }
240
+ }, [config]);
241
+ // Handle input change with debounce
242
+ const handleInputChange = (e) => {
243
+ const value = e.target.value;
244
+ setInputValue(value);
245
+ // Call parent onChange
246
+ if (props.onChange) {
247
+ props.onChange(value);
248
+ }
249
+ // Clear previous timer
250
+ if (debounceTimer.current) {
251
+ clearTimeout(debounceTimer.current);
252
+ }
253
+ // Set new debounced fetch
254
+ debounceTimer.current = setTimeout(() => fetchPredictions(value), config?.googlePlaces?.debounceDelay || 300);
255
+ };
256
+ // Handle place selection
257
+ const handleSelectPlace = React.useCallback(async (prediction) => {
258
+ setInputValue(prediction.fullText);
259
+ setShowPredictions(false);
260
+ try {
261
+ const { getGooglePlacesService } = await import('../../integrations/googleplaces');
262
+ const service = getGooglePlacesService(config);
263
+ const details = await service.getPlaceDetails(prediction.placeId, config);
264
+ if (details && service.isValidCountry(details, config?.googlePlaces?.countryRestrictions)) {
265
+ // Auto-fill address components
266
+ if (props.onAddressParsed) {
267
+ props.onAddressParsed({
268
+ street1: details.street1,
269
+ city: details.city,
270
+ state: details.state,
271
+ zip: details.zip,
272
+ country: details.country,
273
+ });
274
+ }
275
+ // Update form fields if available
276
+ const form = (inputRef.current?.closest('form') || document.getElementById('address_to'));
277
+ if (form) {
278
+ if (details.city) {
279
+ const cityElement = form.elements.namedItem('city');
280
+ if (cityElement)
281
+ cityElement.value = details.city;
282
+ }
283
+ if (details.state) {
284
+ const stateElement = form.elements.namedItem('state');
285
+ if (stateElement)
286
+ stateElement.value = details.state;
287
+ }
288
+ if (details.zip) {
289
+ const zipElement = form.elements.namedItem('zip');
290
+ if (zipElement)
291
+ zipElement.value = details.zip;
292
+ }
293
+ if (details.country) {
294
+ const countryElement = form.elements.namedItem('country');
295
+ if (countryElement)
296
+ countryElement.value = details.country;
297
+ }
298
+ }
299
+ }
300
+ else {
301
+ console.warn('Selected address is not in allowed countries');
302
+ }
303
+ }
304
+ catch (error) {
305
+ console.error('Error fetching place details:', error);
306
+ }
307
+ }, [config, props]);
308
+ // Close predictions on blur
309
+ const handleBlur = () => {
310
+ setTimeout(() => setShowPredictions(false), 200);
311
+ };
312
+ // Cleanup timer on unmount
313
+ React.useEffect(() => {
314
+ return () => {
315
+ if (debounceTimer.current) {
316
+ clearTimeout(debounceTimer.current);
317
+ }
318
+ };
319
+ }, []);
320
+ return (_jsxs("div", { className: `form-google-places-input ${props.className || ''}`, children: [_jsx(FormLabel, { id: props.id, label: props.label }, "label-" + props.id), props.tooltip ? _jsx(FormTooltip, { id: props.id, text: [props.tooltip] }) : "", props.display === "vertical" ? formValidate : "", _jsxs("div", { className: "google-places-container", children: [_jsx("input", { ref: inputRef, ...inputProps, role: "combobox", type: "text", value: inputValue, onChange: handleInputChange, onBlur: handleBlur, placeholder: props.placeholder || "Start typing an address...", autoComplete: "off", "aria-autocomplete": "list", "aria-controls": `${props.id}-predictions`, "aria-expanded": showPredictions, defaultValue: undefined }), isLoading && _jsx("div", { className: "google-places-loading", children: "Loading..." }), showPredictions && predictions.length > 0 && (_jsx("ul", { id: `${props.id}-predictions`, className: "google-places-predictions", role: "listbox", children: predictions.map((pred, idx) => (_jsx("li", { role: "option", "aria-selected": false, children: _jsxs("button", { type: "button", onClick: () => handleSelectPlace(pred), className: "prediction-item", children: [_jsx("strong", { children: pred.mainText }), pred.secondaryText && _jsx("small", { children: pred.secondaryText })] }) }, idx))) }))] })] }));
321
+ }
171
322
  /**
172
323
  * FormInput — Generic input field used by the FormEngine. Supports standard input attributes and validation hooks.
173
324
  *
@@ -3,6 +3,9 @@ const debug = false;
3
3
  * Maps input type to form component name
4
4
  */
5
5
  export function mapTypeToComponent(myType) {
6
+ if (!myType) {
7
+ throw new Error('Field type is required');
8
+ }
6
9
  if (debug)
7
10
  console.log("Mapping Type Field to Component");
8
11
  let myComponent = (["button"].includes(myType)) ? 'FormButton' :
@@ -18,7 +18,7 @@ function validatePageName(name) {
18
18
  export async function listContentfulPages(config) {
19
19
  // Map management-style config to delivery apiProps for the CDN-based read helper
20
20
  const apiProps = {
21
- base_url: 'https://cdn.contentful.com',
21
+ base_url: config.base_url || 'https://cdn.contentful.com',
22
22
  space_id: config.space_id,
23
23
  environment: config.environment || 'master',
24
24
  delivery_access_token: config.delivery_access_token,
@@ -45,7 +45,7 @@ export async function loadContentfulPage(name, config) {
45
45
  }
46
46
  // Use delivery API for reads
47
47
  const apiProps = {
48
- base_url: 'https://cdn.contentful.com',
48
+ base_url: config.base_url || 'https://cdn.contentful.com',
49
49
  space_id: config.space_id,
50
50
  environment: config.environment || 'master',
51
51
  delivery_access_token: config.delivery_access_token,
@@ -1 +1 @@
1
- pxl:v1:590f524a9966e0f969841749:da14349dd76ec380b70d3ac154613b7c:9d7d3e6dc55ff1bf6f8cbda9624c814a429318a8ed8d56448ba69bd2f35b743e6b933dcc1202d2152daadd720a6362fd6c187be4776a6225d608394a8e1f1fe7953d2430bc62927a42f4b2c375aef33108ba5877b8a518210e5aca84f35d61bda9d48fb0a5da86e29d4ae37e2e517d7f0602579618b21b5e42e274459119ef87cd060426bda6cff1328db9931f0c246ac18c54596a5225ac505f84e42facb4649701b079c8043d2a6690fa610f40beb03a79a3e98102dfec969989694ebf17a87daddb4e7788403a0a5353867ee2898c5a7e353cc01e8f5b2d7bf238b20e7d3bb2dc99dfea785c452f328423388fd92ab93968f43dc8419bea7ac1568918439fc09380839ee17f086e29694a9ba6c48d11eebd920a2e7dbcf0294e7c6fd0a5c344af6b188e72a2ecbc57bdeb1f8a932018a696c83b582abcf4e526b25593256e5346f136f011c14307bfcca156ae4a7c1079302617b1d7d1a181ab439fc1d7eb0a213cfa267746c9850b554b35d52bc5afef69cdf9d4271fa09b945b853b9c33f1823f1fe9f28119e73a716e237097b02b61ea2432da4e8e73fc77df6e07878a8cea07dfa16f0303936a45617701ed0af778a7334671e43cd3ccae519ee56895f5f142a5eaf66623a010a7af606c52ca200a088d239c671eb7937e05eb1fa9b2658ca0701a3111d13995b8dd125cb127e99106387d08e5e0b9d8c3905d8dc805b3675dc246b530bbb286ac90e3a397bec7b7e5285ae2cc5ea617d3e6a96237aab8307e4c717f5118c1f36059dbb90eaa704b8496c4d8150054457618ba63079d516c33f402e84d3eaced2cc98e6504d800198f3a383ce7afb08ce2be9ccdb189ee93dcda91ca8c3c2d6e0150187831f9b748e962b05e3fd352db41ab05e242349e4b7daa9acb35bed96095ac5954f7b227fda6d75cb932fbfc9f01eb133e9a9e66228eba4b7a09c28827a5219aecaa35ca5289045f2c2c4f70a6f0a6dc4ba7cfec7064938093fabbbdd9d4908a7b09e7201764958ee6ef0ee73a9761643997e45f40911593e3f71503c977bbda0b326d456ce39a1b4963f1c2f10fd0f201f8ed6229712f2df580e49fe47942209ca47b7546a437cd8ecd462c64111b7f09af60e4efb7d614b1faf9465b53c69b3ce379fca42c586aa1c5582ef23733fdf5daacdad5c63773329615f2cbcebdccef165f05df8de2e18e9bdd8ecd7967586b9552dcac2cab158970be111b3e316c7a34a7822e1886bd1326dda01f8877b457530491cf3469eb80e6a4cd9174577d5c1d450784ae913aeab43bf803adc41f0fce674165a3a37f4764a10a9247af8cc198b8b1d5f1795dc9fd941ddce7f6ee11f07640683a7c3e424824cec7c7d39b70d248c34373f6c9ce3e8b01e2d78f0d78dcde93a80846eef03a844471f9c934dfc0041542199c3afb67de3fa34a5d3c08a71e62608be3ae7f8058475141b19feb865d41cf8b97ed6071a7d67a97779ba4b9268fb1e1bdc93e0d77338e1fabbbd7919e51d851efd66f8d6b34c56d9f96bb486fcb70beb637fc265261d241cb768c60bfbb58588ec8abdbf612b39a63874100c3d362c2831853f8845a343046e3ead46432eb369e18e260e1a38c52892722d0742118e043990630dd972c853f3dd425daa84b517818e6bfc694804300788399aec8fcfd19b35435234e878376a90c16647e3f8caffa15662acaa188245b6e828b7c9b20bef22e6eb76156f700c93c371f27fa4d728a73606f23fa161abeeb7701cd33b1cb333dd36e3519dbe04511fed8c95266dad465563f945e9294dea3a12cd1138f433a6117db658702409dda125d0ee19c472c55f6f91d9c748e241ca1163ded7a5be52fa343d40fdfd21ec386086ab922b6cac0f80766eb040e76d4a5e13affae0144ee0c79e9bc1fd829ab23cf9e8143cd205f82889a6af9a6f649b26cf09497e3feeff226e4173ff13b85b6855d710f6cc709aaafb641c880e75dc2f58ab818678bb89fdfd6758022267eaa4e28aa382bd78bf11ae36776c870a1738e4e5e96f72e5dff7aa7df2d129665427dc008ca6dfe25c831445eee228126166b7da76f824f0ae0a236dcb93c4872c441a59dbbe7b3d725f39c92dde2a99c6f4517de166628f9468a6c7a078c2f73f96619285bad34a02fbec384b255050f9837a8a0abad1801eb5fa1d088d675270d44839d41779275d111f5212d9cefe1dfa7d6e86540ff446371e826170c1d9e51c77818dc7a3999734432e22125f1a7d5a225756a3de52c229c502d6839d6562fa8997d1470ecab7655742f08767521dc7a5e16de78fc98fbcbb5db52466e30bfe37afc2d4daf9df86452cc672334723528100e9d929203fb6927ef79c14a0fc3c7edb9bec300b4b2d36f44f7c40de33c5ee14423091b1d6bd34b28af0819e61ddac56f777784b2b58c8729c063443fad18d84e346e57c8a3240c6b0005c79f758232b73683070adbf13092cfc5a76a681ed178db58525be91b879051f6b0dc18efa614c6683410a1e997d846cdf511f21aedae4aab02a3e16ec8d396a3d6e007fc85ca71ae2178d80e27ceb53cbaf0bc7f48600d7c284f89551050cb9169cae5ab66f305605e7c011dd3e919d0e912bec7356d07e411bfcbc26dfa0195015a2cbbe430eb628fd3124ed720958b15104b3c18edb30fed8e512437b2d86e28fdf0b1626e1bd01ffb5305909ebcea80d78f54eb6cace7339d3b73a95e2e38c422d35125aaffd8864813606aff6aafa5ac8de3beea4127f45ae63d1e71a74ace0ca85432f311b681f57fa535573e5ba0c7067ab45737493e214523c251f7d003c0e55df7a2088abe96a687ab6d3bacaa2f7205c0c493adc1d043909ae6bcb7f9282a4486161d09f171992ef9b0241be0ea320d435c8c3a8373e58348a2e3d75f801d97da1a44eeac68a221aa33f6e46cf2c98ad6c77d74f62eac404ee74e98f6bd307f01ce36d7d0fcad51cadf7dac920c2229abaac4a8fb6e546e69600064ba5ee69be3277f9de62953c8e981eec7338dfb7ae0de5cd442d4421c58a909f007b489e4da25f2922f86cb436a1c90e3d7509323a20cd0c64949f468b52792d236fb79ea0bc8a33875c66abbf1e0a3c6488dd5d67f540fbd2cd2f3f2291e5c5be210623fa3140a89c3659d166d5b616bcf46d256ae5ac2128a00c35c5e319c2490cb0090e2535f867546d94e47696164eeab7285f520dcaf633aebde438a0a6f25645f55070e15ab856ae77d1d72d73f23e80ff34f9fb881d8e8e4c1491c4100a8c9a5e2b856b032a6c0f9049e8d04b8333125a9b8e6bdeb1e8554cfb242f6b5fceec8007cc63dfa3d244a966d2ea4059b1c1491d6005648b4d82b056d3fea6da1e68bcf03cb9d109bb21ad61b77390635ea8e498a91dcb764d350e62b65001eb863c6895d535e196a3c0463b45b9c55426ca43c510c0c1a464399d63294885d9ec95e3fb758f33b38114d50cde72daf6a8085e1ad7ebfb69fb80e7ef6ff20369b807ccb429e0fe5ef557ec1acbb84438513d8973a67f56e885ccbc7b6f94a453856d7b0a72f476053f26cc2d78ead090fbd66e41a613ec275bbd7255c03906bef20b1a55993d6acc00cfa656ec15227f8218de8e2c4aa97fa6fe8408fbde9965d076735c655f2553f18c5d20dc0bbabbf88e1ef64c09336132e0c38c62e01edb7c18891164576ae5f766a288724c6b865e52bed434a1fff7e03ca099ce720894b0cf7a7f93083ed3e262d0095b3fd7ec4fcdec20c35bd38c301fc69c18bde25ee4441fca50b99d9cba1ef381548722c25446698dc305a8eda8892273d8cfa9435f9a018fa5efdad74ddb28303b9e3643b93612b3c0f41a6f1b95274690157410cd995e6d4fe74467e4719edbcb8063cdaec170085feb65ab9e5346e8ade9cb0902ba7aff569d37b4e86a88ed8d429eca5c696464c3830535959f403f01e5ef5bc2d620fc32dab7ad9325c89bad74db0698b61a3da39c78e161465e2ec6e65916eb4aa221a5df16465f0f37449a1b8878c0cc2eb2f0968af6416260e664bf309628451e27b6734b577db64e74334e9d2600615bbdea4a5f59cbc87eeed19c53443c5541522b64982a5e985f6b7a4cbf0dd60f03e1fa781ec4107523ddf8c393a8870808fa9888f77f6077135c05d316b4655d5fac6ac9da18c56e767d12afb34825509758a3041337b91245b761c9e779030891673e329b8e32544baaa51be16d29791e322fa72563f04ad95832abd292df3138aa6c66cdec9e56fbacb8ff853cad0a2caa941f70521ca796dc86a8c1aac9d699cb1dc08d45cfd1f166c46ee94668a41dfafbfdf57e224b98be2005504a557bf61dff9dad96318ad37d951ee450cf835cd98015626d0f1ebd25d4b9813751316ee0945f8edde1d844271c09970a2a2286d68b8837de2e214fe08c156e7579720747b1848b7f50070c0697df4be8de5c6f151e36de6da23cb18b71e38cfc950c7570679dbb2a68126734ae13049e3a8bc4ec0fccd06b019fae0bdb9bf82097dade0e139e63011bd14fcc5076ce1641c938158872306eeb83feee519d97c29bb3c90b2fbc353dbb91ef870cb2372b9d90db22795e228487e402b0f849c6fe7f315079c547cd1aef0c3c9d29dc854ef5dfe468af4fdaced7fa38e1cf358ddbc2d8a454e87d96c7a60448239166d5cef115c8437af463a0d72f2fd896297a43b518def96df0f7e7a986128748f52d79c11ee35aa1752835c73feeda582536c91f99e33bf280794f37a963d1dbc2a2779c1e4439707068194ed4a2bdfcb62a690c07f5d62a8209517490d366d1115475e2a164356d18c854879cc29f37edbe5a3f3f9610d0146fbd6f945e4e85489dbe3c96c295a9a45ae2321a0237fa7375385a6cdcebc532c5efae051fbc4e371cca5e2ddb3a70ee8ed424eb1d07ec451df72214f9e48d3b717e3b0b64f5fe0c1d90191fe5503182c4bd7dc5d84ee6cb18cb3ebbe69cdfd6fa3ce75c1d457ae5a07fea8b09feb91bbafb0992d2f67f456ca31e76bedea32a5d2ef4fb7eba165e59e388a931c7610f02c68b77fc9cd865daedef1935c753cb9cab794a43ad77cfc35e352cd885e5d4a48b9dbc97214c3389f83428a25fc30680b8eadcfcdcaaaccb2cbd9be87c7a31f0d55fdff8fe1055eb6a5c4b4bb049b4a5e14dbe4520d0fb5a9
1
+ pxl:v1:d9f7082732565c79e26db1ad:691120e2aaef983caef85075e6f16125:37e5626ae9ee7b8f7dde29f147f751b6e9614b452df29d9199764b08ddba69713524a6eac0affd00c9e5579b7afc215d9588c2dca2e27174ceb2fb454a4690b6acd4671b94e49ce86c0ac125c700e964e3c73b916bc3c4b8fcfa2ed2eb242dceff34019dfff76870cd85d8ccfe8071b4b8ba94367ef0d516f94d1278a0222fe9688c5f04ae8af8f0d12c93c9aef8ead92badbf1dd594a6925c409823032ea0b0b0d102d4dab5fb1bcc78ca3e1252edd09176f89dab929d810f484480d1c1ce8332527281f6a99ef1f27366e48fee6b48456686731e2b4824f9812acc037a638b3d9df0d6b689cec0b6909939c03fec04ec10cfa975b305d4d85f1bfb212096aff5a0901e2a23ef58a01f5d462437d85b3992f402b71f6cd81bc2805ebe1b4dd41e9792d11e651a5c982b1590eabe6644f3fb90f654647bd67fad196851e9b9241b8b154c82fa85f21a400165afc753ed37e1a07897d1c95427ad7df45db371cddc33575a39dde870900803addb30ed3fc439f2e6d3a614bcbcba2a9ea4bcb6d12521f10b475bb65e3055d089da8342d0045838a86a7f2d6cfc25855bba313d2bfc8c2b56f188ec5e5c9d93d925d914b7fce1dd01ed284f5375a0852f78b9b2bbeae6efa7ccce60004629536a6c1cb43f3dcf8356d5a91091b43a1a40191394b9263bbd64e6d429e7597c60d2c9e3776d33b54a0a99f8e4261165cb0ab60b3f78260ab687976d311466e2b779e700302c9a28782e74a46f202af58cf940f30ead55908922c9f0babc5495737733681263fc309abdddc663271e976fef79b465ac880e86164b4c2dec803d6a90ca09ad4d3e69c70a5c6e6d1b256b4ecba04dab8480af77661573c706e7e315937654a10e30f3d3664a258b045be1e3498cfcbe42ca94b87753ae48ec015833f2fb1e0929015876ac5c8a65387a12842a7c0b0939de44188422e8f93e8b132c7de2743e98b3a47b01b25613a52b65aabbadf1a4d162c4140104f7a81734a2674dec23974a3e014317ca8a92cd3038c3c9ba2fdc9aebbfe135fc156664d6deab89a0dce2330576ece9aea54257f3dda3db7bfbfacda4a8ce78da3a7214870064a03b907494a022dbe4ef2494e2c51729d895a58572ab75949970a057ef3bd55e80fb2a19e910bf04ad925b1e61edc63afc7bc911a99562242bb94e3de9854b6a9541fc0f4c96e6d8725035c04a9b4fd0676bed608bb02ed05a2851eff743a6d1a7e67347174860a32bee08d152fb56a82bfcfeb8bc5be56a1868485de4812847dba0795ea4751c68097625fd51e7febcdcc82db8da234fb87b2c711ff55182ccf5e1057a7d80944ea6987e461f4a162496ec9e62a6c805076ed715353983efab831a11b6fda78674c47533ca0c25f4d5f0c851e5f9f1603d588ad1f12956ee82714e4bf45ac0315641ba980fe9dba88c9877abdbdd39c294e255946711dcc550d990044166fc27e41e9afed8005c03e7f5c68a6bb4a5df9f54a4470405f031cdf1f1756063990bd1f7488e0e8863edf7f5625c33df5bf0ffd82a5e8af4ae437ab59b07531d158c55070c3c6b7b7077972dc7d8b037a936fd0a4fa787209932d9cc5d36af6e8c0350bc1bf6429f37d458da35701d57b5b0852be5ccc4590ed0946f7fd9acfdc59f6bda9a904db53d9892ea8d3f95cfb0d45f564ecc46e106ed1751c9efb0310e23a5201f5e0742719257f98bf7b039d1634aa8edb6a967987dc18ef7a0be647aa2eb73f09798ce884373faa77abff3ec3bd623f4bf56b90e718daa65f161ee52eb8aa44bc9b3c037785476595ed26d4db2ad5462a573480ea12bf0046d0c67cc08cae74123826f5c10c219a62963433a6dd2a263091bb16f4115a012a4eb03b01dee1dc0421befa5e333cc260f6cab3b9e67e38e1e2727aaea9f612cb999199baa149ec3bfe588d272188a9e9e0c9082a31b2449463287ba77e84b25f0c17f450d08f4327d00c8244e993d356a885c1d66d3c2d63e61cf6d59e5c464fc7455dbfbf12176afb3a79969a13f402a7f3da0d887f2ce141a289370439fb2aa377db0ddef8fc15a482235831d6596e5f3371a5010d4da078a1e9ce39f4798ff1bb4392fc982dab95dacb85d40eef96b83eeb9231ec01a93c727bf6391f9972d243447dee682b8e503d300d68901ea483e6cf6644b3fd1323ce18e42a0bd3709b98e2b8437f99efe8b28aa4643d81f0d087075a1afac4874616c97eb0913714cade7346c83d2802fbed902692f131633909bbdf2efe5abcf6f27a469d47e01b1ce5e0478024aaa745cee7cde26ca917e318b0d2b8fe3d4e87719f85ed161ff897c28334aabfc67c42d3236da84717083f7b2a75e04ed78da10aa89e57d887b7221ed7a76b58039f520295ec16a7226057ce21bc1c0c87a762352e0fc5db7805a65dd114b727ed6bf13300893b5db63465dac299074354b1fe0b6bef2f06c13859c1d3feb1df4739ae13fc3242463c53be3c552a4d77fde9aa83e0e3501a9e8b0f0ed15ffaf4bf45522865ddf9a6d4e63c68782207c2f562b1fdf203c35e9f2e912f5eee7e7d986609d8f21ef6fb8b322bed829865178fca07aa7b8d503715abc64e804b00e7d308434e1fa4fd4fdad7a8804932b3443d7d33197c33584065fc96de93690228c515fe5a1bb3e4a61461e47b995c6411d610effd952438d305a684c97c6750686a447e7a35cd7d469773c66182f25800f5c97431dd2a10bcfad8c69a91a6cf55b526e60b21043e80dd2be1118505330f1cdd28aa8cba1ece94ee3faac1bff587a0f51a330b3179bf5454c1b564d7b6b797086a6c42df0c155ca9531e472556a5a8633b95d0350e23355be5999e210d1b17253721f8e95b0e42a1d50b054da3b9436503144c68d999faf519194193ded9612655508b358e609eed3626a20e8da46e9136ceb6b0e22ccc44ff8e8785c6d1b954398a756fc18c20aab6d34c6fbe23f4c744673bd282f9bc7582f63091ae78b9275cf441e677fe4e70f543c977013087d65932bd184f7a89f7652e14689e13ebf32792beb08c96ceb03964af26236e82ae04862faed9ff74b880ba68fb837f6b34639032a94665a151d66a5111037fb57426c91371881be33da230b0af2a656a3a88c85f40a588bafa63e386fa7787e9cd1dbdbdfabee9b60e2ca73a1efa8ef17d4797729b106d4d4633a6407400c6c54442f36e15213c3e9748f0167944a83aee4a211ecda81a2e690c99f9b74d1686ad9bc2f43c118fc0f4636d9333ce52bddd1e39e9578362e5a10ca593b8ef2fd35d88f4aaa4d6ebb3fdfc41f89c0b7d73dffa5fd42b83f8db30871a6c2c0370f557d8c7319c5eff2fe0c178ba0ae9ca142f41707ac1d4a356589cf905290c780b300e8e32182a654d44803436f4dcfd7b0374bf4952fe249e4e4c115a9ac82dc60cf8159afd8afb4edc78314aed900ec11aeb75b03f31fecd6e5548cec1cd0748449d8d94a418f7d245c449ebf990cbcf47bda4ce0e1498106619e797d57d09a473c17290465768b2012d64f5ee99da0d43052321b2e502dc2112fa2a3c29a65fd1aed6ad17466519f5d9b17fcf9df0dec4cca3ac3297a437ed4be1f15ee3aa2ad0a54b5e0f236067bb06024402b0c002aab1a56981b0c68577fed0a8a0dca5f61c06042ee53de283138b4eadaa9b867a7686b6399a045351adb59a67b12474c40042597b47db668a3c7c932071798af9bbfc7b3f0dac5fdf92d5060f7d527fe98540cdb2c0fe81f0501ba5bd659d4f0cd4fb53f73905c410b24ebf418be04a9753ced57bba0836474f10c563b2aa0b72c766ff1af623f3bc82d518804ddf398012f9ed34146591f8cf8e1660ecd6c9e54fa0b696b4b2c85469802246c34067c9c8a8ce63c04d44bcdb037dd645f67b3bc34c5043a1eb23a5427270cb47cf2461142ed506eeb8bc5d42a2b95e5d7b17ef9d310b22117a1c1fe55a24be803a75c8f67087a563d2d91018835e09410c9cc15e0d37f7ea766613cc605b0e393a52c71fbbb00bf62978e43d0ce48b0c950902948bc84f7ca7ba8c74639265471a62f80de05cad9dd8b7f1ca2fcd3adb586dc752fa4baf397468dab055a1326c2b9f2a213033c986f8d06108d160a2be02fd0c42c1d5335c6c258e7a8764f93350939910a438295d9002daa1ebc43027e0f001e37c07f89e107b5406b224ab36d1c95201bb0de3a53f0150ea43f85cff1bdf659e8fd6165d96da2bf7b7a1c012bf92b530eeec3c09789ecae2700f7b56e0ec7a2b22d227e9f053290d6bd5996d02bcd15917af8aaa59c264d0b97f38ce64d28edaacec36bfb31842df8a70567e6f53d66d0b3cc420cd353bbb6347d9622848f71e45cca7df70b5935470cc86cb83c652e068b01fceed1d83a6e82d78a15b878ed5d88c627ee479e984c81fe343e4f24c1adbdd900ad2ef809df7b3804703aea1d39e09a54f28d3fc05b1f286a55f27668d0aa2d95a46ca22c5ad332d27f1d73b813636579c1e46bdc8ffe35f2f2caf7574bd3a44aa857be23aa7ce36a5cf2d6db7154112277ab418f1d0ed2fdb5315dc075d6615ac696a7324dcce6e899bbd5ab8b34967794306a3ab9c2b572ac53bed51843852febbfbb009404ec79f078b3cecfec0005ee7dc6b72fb84510e1224b5d5614e54af6118f40b6783af1a52ee863e2c123cf27e269e0b120893af2b84fb63782906d1e9b34771cf63360923857cc60b465780c0ccda7415405638d9112997c66e69089b063d73959f854e6b8b7fb9beb531d8530dd2b0640a0e89534ce30b5b4331812ed1a40790022b2d9f38f1ed6dd0847b7d48ced3fe02864faf14c12689f041015b801b17397fa114a10772f62cbbebc9f191e0f6d1a3056d4ca20bf2f3f38d0142d9f60f83983b01fef35ba6af4a07eaf752fbdca5cf77baf5a332df3af9cb222c6a63fa884ead633ab0eb871d9aa7e895dc12c87bde84e73b381c35b4839a4f97763c6ad5c4f6c8b7bdb06ba15d529ab4b16216a5464861aeb4893e02f5b4607155e6681c2551d64847d9ebbff8f613d3c4e56b7aa794d74174b88a3b6377204e10ff79039a83147d8413336d5c1f02f97d7c89d4ec5270667ff07e8136556e3aed608af5903424c504de9748b106e246ff3378f79c794155ec1b0782f2214d9bcfafebb9f4ff20215fabc98a74705d957d312310c31aafc18f16f525678515453289c19d2fc95c904b97eef8f0964f95222e09c4149c20fa7aa27a78a9759e6d1fb8a6c722702c43301fc884db336f83c3b39ee860dba2e97e49076833b253ae99d9bafc9785181836ed52ded1d124081eaf84b77c19463f092056af3341b17b7b4292905a7cc4b6b69b3cad25cd8025f13a395e1b9737f0d469f4b01f310b211b669cd1396c72aa42f951f44ed24b4b1d5a87529a152fa81fb73eb77111ce49546708c19ab5388a5b14a6cdc4b591730eede8c144c1ba6740887b3e49bdaa25a36f284bede3efb8e27fae5a0829216b6f949943aa254ce3f6ccef5e2dfbb76ff3a620d9e60f26d71534c34069c211faec97a6ea7d4976062de19f36ef17513edd6ad04865677100e9046897cfd7f0189ea6d42d801b1290ac9858f46d5664f711431541bc1cdbfd160e32fe7773903246fec474d9039312a196e0b50534b9e263594bf558e69ce9bad479b82100c99ff77d55c984753bb611c50d552f8952bea307b52f8221d24f6c41b74e3d63dfe2ab65ce4ae93418a59ebee96accbc7fa46bec62f79a5e020c7d899
@@ -370,6 +370,24 @@
370
370
  "tooltip" : "Add tags by typing and pressing Enter or comma"
371
371
  }
372
372
  },
373
+ {
374
+ "component" : "FormHoneypot",
375
+ "props" : {
376
+ "id" : "winnie",
377
+ "name" : "website"
378
+ }
379
+ },
380
+ {
381
+ "component" : "FormGooglePlacesInput",
382
+ "props" : {
383
+ "id" : "delivery_address",
384
+ "name" : "delivery_address",
385
+ "placeholder" : "Enter delivery address",
386
+ "label" : "Delivery Address (Google Places) : ",
387
+ "tooltip" : "Start typing to see address suggestions from Google Places",
388
+ "display" : "horizontal"
389
+ }
390
+ },
373
391
  {
374
392
  "component" : "FormButton",
375
393
  "props" : {
@@ -8,9 +8,6 @@ export * from './components/admin/site-health/site-health-axe-core.integration';
8
8
  export * from './components/admin/site-health/site-health-cloudwatch.integration';
9
9
  export * from './components/admin/site-health/site-health-core-web-vitals.integration';
10
10
  export * from './components/admin/site-health/site-health-github.integration';
11
- export * from './components/admin/site-health/site-health-google-analytics.integration';
12
- export * from './components/general/cache-manager';
13
- export * from './components/admin/site-health/site-health-google-search-console.integration';
14
11
  export * from './components/admin/site-health/site-health-indicators';
15
12
  export * from './components/admin/site-health/site-health-on-site-seo.integration';
16
13
  export * from './components/admin/site-health/site-health-security.integration';
@@ -18,4 +15,5 @@ export * from './components/admin/site-health/site-health-types';
18
15
  export * from './components/admin/site-health/site-health-uptime.integration';
19
16
  export * from './components/admin/site-health/site-health-utils';
20
17
  export * from './components/admin/sites/sites.integration';
18
+ export * from './components/general/cache-manager';
21
19
  export * from './components/integrations/contentful.management';
package/dist/index.js CHANGED
@@ -24,7 +24,6 @@ export * from './components/general/menu-simple';
24
24
  export * from './components/general/metadata.components';
25
25
  export * from './components/general/metadata.functions';
26
26
  export * from './components/general/microinteractions';
27
- export * from './components/general/proxy-csp-listener';
28
27
  export * from './components/general/modal';
29
28
  export * from './components/general/nerdjoke';
30
29
  export * from './components/general/recipe';
@@ -53,6 +52,7 @@ export * from './components/integrations/flickr';
53
52
  export * from './components/integrations/gemini-api.client';
54
53
  export * from './components/integrations/google.reviews.components';
55
54
  export * from './components/integrations/google.reviews.functions';
55
+ export * from './components/integrations/googleplaces';
56
56
  export * from './components/integrations/googleanalytics';
57
57
  export * from './components/integrations/googlemap';
58
58
  export * from './components/integrations/googlesearch';
@@ -21,6 +21,7 @@ export * from './components/integrations/contentful.delivery';
21
21
  export * from './components/integrations/contentful.management';
22
22
  export * from './components/integrations/flickr';
23
23
  export * from './components/integrations/gemini-api.server';
24
+ export * from './components/integrations/googleplaces';
24
25
  export * from './components/integrations/googlemap';
25
26
  export * from './components/integrations/google.reviews.functions';
26
27
  export * from './components/integrations/gravatar.functions';