@pixelated-tech/components 3.13.16 → 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 +2 -1
  9. package/dist/components/general/utilities.js +68 -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 +14 -1
  34. package/dist/scripts/update.sh +2 -0
  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 +37 -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 +19 -16
  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
@@ -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:944e61c3a894b694470bac88:f6779781197b20e03d028b7ef7b9e0d1:7d4f34021a97d9ddc6abc9eafd6fc8ab3331521a2d2778d03e3fd73b7a43e7d876b4abe146b08a1f6434ad5eca758902efc9fdee70d2a714d03ceeca56ccc927882baf25169bcbec791f9d556c461e175c4fc7476b413a933a5b2456dc02cbe1844b628fee57147b9e323db61c157f3719e1b9dadfa8d0fbaf182b147f7fecab03490ddc56e244511d043d56222c51ef0978bd0e0f97a226c7f9e4e5db26d502a8409474646b8af27b6b3951b448881d456d650b1620cccfcf20b2d6291d929c1d0501fb2c7285d57f161d7b8ba6bdeed2a86f3e2973faa4a2ba7ee0acad5591c19421377cdc3db453566d8ee351957298bf5bbfe5e8b65f3b92bb87edb9f81867e682b7fb939750771abfb78554b8dae1835bf2601f0e853154bc8c1ad4dd13f1d8cd62aa51970e00a99793ad9e211110e1616513be5d767938cb6e25c779fa759fb00fbd420abe655f22639048abcc6a64971fd17045e4910d9970c5b1283df77ec3a791b334f73b969c0c11e042cf951912cbe75fe575ad89fa8aa07a5a5e8ddc82037791eec89cde965fcbb34ad942f6f6e83ad6b945c1b19d67f3552a11d5234b4d146bb6548ddcce1028cc403e3931bf2690edb6ca664b529f147546ba2472714e7da565cd65b605fa8c63670f8273d6cdccd6d68cd3aaed2b31537e68e03fa9a714e25abaa5495063791550473b0e302591249af671d34fca96bb570580341c4bbe354eac0d49c884d597b768e3dd0ac613eb4de1918043076423a0659467d6a27cbd1e9b36af0af4ebdf8ab66f0525b864cdecc7ffd051b14292399abff2ea947d43f67ea52f918c97f456cf551a772562ffdc3c1a69e51d47662add62b98f96c293deb611900e15cb4cd32c542b4dcd3fb74b86b860107461fc513292a862e1baf8d4d886cc8a38de5250ee0df338910086eda61ed71b20dbbc2ea2215f4de83cd0909b2018782c454165b61734d6a62097aa86c833ea83ddb0202201f8d3f6db442aa5b9fc8f511e33733cdc4105bac41a089f79f477b6d16eab14e2017214553bf024c8a12779ac8f2ab18a771c6fda2a32e4497cb9ad9aa85cd1d9d3d4d0904492cf15b9fce1fad21821976b996b1046a6c2a47af2f1b011fe7fe98f5c21fe16566405baa865a859416dd0fea83309acdfb48be864cddfb0567a4a04e6b921d88b23542fd0eca913ef5ea41448c743e033bb6c8bd7ee68cf610c8c118b2e62b06d74a8ebd84f494b3e18000260c087d7dba662862657d03115da55700c992163e8ac4ac0677ccd4ddb013910e64bb0ec26c4d0b10fc2fc0f32f54b7f98d9bf9f2df9778713cfae5a1af74380f5c089f42c2a76385f979fa899249e42e4552817e1333f10d2864a194e6069edd843077b607a9ae27e3b4ec6cd1a9d46905b3c82dbd15804f37629d5fc833f78f007b58f20561766c062a3e9f919560b6e385fa2a04014af8d576ebe020d6bf3909dde72174346bba7cad0f419289caf4b5a78ccb46b505c78c275ceac24c9288e290c3b78861525bd1c366f19dfd60b6dade33e1d89e2ccb8c0d4153939daea7deb0eb618f7d9080b9b92572fbf7989169248b96c9e8c796d197cbb33a29e277488c2d0f29003c30ceaceb4f18bdf7ce5af3841ba41d6a2387361ce318d944591429141ff1571f800065ca70a118384dd5ed7bdc1998e77f130e6f6962ed957baf8e842db91dbea612c444cb3e4de3c05c1cddfa4003a4415ec994390c02d07f4fb3759b3dccaa518e866293aeda8aafcf12257ab5fd04f32af299d07dfe94d8a9f2620cdfb7da421a91e4c19f072c3eb154f09d90631b3b7923f1a8b188ce76a11b6a9fcdc925bc4d13105c0e917c31ef33ce23092ceb95c3f675df2cff9ff1dc2ee011a096fbde4815135cc1a937266ab75f3e763e4d2f115de29ffa1bf613ae7d450719e1608f3f401bb7a613be93175893f7f6add200fb43e186b7e7946d02cc4472e408448ec89461711bacba747304c8d0b5836db2ac307f46d4f5b18c43f7188b2afcfaab16d2c55acf6209984745ac341b27ba2ee816f30ebbe1b6585deabc553e6368b8bb9e82952372385ce7e8198b76a750bd45b1371bbf7daa94c057e5c6d1855d6bdb404c1c56b0f2ceed9e9d90f80793b2b994d4d5ee1f8c330d93613f2ea8cbe5cf54065a3d8f990f61d0f366bacf02f8f14a45dc809c2fd07f7afdc9eda7e8dc4114491f303abccc22a352ef9ce6d3fe496c979757e2166da62535c71cf37b9dfe855c38dc4c7221c99c0863558dbff39793e9e5ec93a59d279b29c4b4361f22186cad0d70c7aee82b717eca7dbfeafbfae4ad88d8f1f3ff720974ad3fde16165b323557c901521cf36a7c177beab3fce4473aaf4b9f73276ff2ac9a8bce40419ad8d7657531ea593f7d50d459bd15dd8c180f4cdca9fcd255010386bbebadd07edf6598b2ba597d541ae8b822c2f37c296f42e651684c62b90beff18795eb0636102bdfb59b282f4596b9479c44dbaf4f6e3a5f3f97cf819c580d697317f78e4b97f1188879221e7bcdfebe98d6622304ed58067c8d3092d4b9fcc4e6c7ab511865054efaa2a3158995f6c9552bd9092d7a13b6df9ef0d1aba0458323a06fde15f0f0ace038620e017bc4d9f7b39a4d437b58cf09f96ba19b3238eec550e4ce3938a368b765ddf99c5188e06295611166db68057d9d40037c4951eb244e5ca44cea74a0961177056fb3daf789c7bd00ad4975f1aa5acfe0007216e7b89793891191cd2b269c334f8b03d6420f0f05741e43d3c1f73d79c2ba3665f7dee1940569747bddf7951071496164542bc4e4a06f1a5a524b52a20904dc5138959dbe9dfe80cd373dc85fc38ecfa01ae274dd7b237355773f852336b420a5c7014211762c9c3e0d8178fc3de2756387e601636af9abc1e502baeda567d863257461f8131d58f2b8c6dfc5e9dd4ef9c0311ae24e98ff7323905cdf5b0041396e25b00284a7335867ac8a3effcf1963a1f98d11445bc6529fa1ef790bb5654300a95a042eb912c8d3baee66af768bf5f168bf373fd535ea6b24aed2d8fb6e99be1fcf07dc03e2b065a2b2b63ec4164d33603f252b2500b1104f761387fa5768c9441cf96dc7ddcffa130480aba07b816a4123ef9e13e13c4c02d6418264d178a1f059d919703ced2d0e85046c649f249baf5cf69333f720168ab9015cfe2c8959ef5df19d982a22d58c97768d0519db911dbb62f1b7d0aea0035dd1618be2ba6a0c31d0f64bbe139fb3c847c28051bd10994db9f645dbec726858e1b93fdb351a1e7f826a2f336c76fac898023e6608792e9507cbbf8f5c700dac02faccf15cc76e4edfc6dbfb1a94a44006a7d75aca791fa60729191072ea6ddbfecf63ae1efc5b60c5172b6f358d97eb337dc0cfdb4749754b24c56760a59e63fcd1ffac6f067a593bb3fdd25981b40abfaf1349d486d5baa3469ba7723b9d5f795ccad47e8f742a3520cc27a27e410be3fadbd29a9aed21f38b8687c41e5b61f27c8720a44721942ccfe8115921746ebd3967d1959d6c318e79e3bf6242cbde0b2bcf6f9ee9bcc416f7f2de108950740c7a15353ab4f9beda7ffd34e835a3a96480f50753384303f72ec5086ee068e19a1b92f6f9a440b31df44574a25e1fb3d646941e3ffbc61efbdadbd60b0790f251fe76e3d4a4c36d56e573ca4ed9a3f273fecb5673fbef83bb0aeb4b84b06eea730bc70f8531400570ba1f5852710b5622b13691bce5b75bf52973b81d997f925f5947e1e3ff5dc8a1689f4914726ae5d8399c5e9bd4397cc2a538ad609a4db37ac1de7dfc729c9d68d5921bb1bcf4e26e46763d5184fee8cba8260c96d8c8e6919164ea6a5956010bb70a42975000e4a4310f57e5bcc9b5ae37d4379d0e429c7ca85b95af872dc53ff7c0051ccfa403a96ccea339ae7f93463d18a3e25fd4fa2431b0e42a1a7a8fd9fe0e16063d8bad5fe5ce6dd4d77f4273822f3d1701d5a2df96117739867277d987ca9acfc1cec6ac423c92577efc8ed64b59e19908b7b6516d2171e75f92ffac643a660c9462b66dcc5e495f0734d18c7ed551d60fbb94582c9854bf7f64be60552d50454587c474f55bef32dce91e32e438b652e4fe510ae64b9edc3aad012ce3a246fc660356b6d08f479114d767515b6287599257332af996a7f1e2d3f802899beded1b2ce4cef4fb82360905dccf7c36d5cdd81c2fc3ad9e2824ace66169aaaff65412b3a2b50e9268063a6224d4218b6a148429466223fdb6be4f9d4e0cb5af5d49d968db89f5978e2e3b36426652d7a21e5b37a46f706168a4d6efe7446cb479af9a77b67cc960917c03c5a8e9409608d73de415daad4f5cbc826795251502a3a2c5015f2e6432ff6e9a56fe357a027e354389ff5e94ba86400a509b374a504385dbed27be82eeee376b45226717c4731f77d2955cf9127dfa3e96676a4eea53f3feadc5dc72c8c6a44636d208eec756680a0b3e77fd68a67600761bb7fb40e32182b9540c4f166bc141cbc65e3d6d33895c1e5dddddbfe758fb574f851aa92fd24a5704cea302c5e250af273cd5ec567dc3de4101bbb20532881bf519b4d4f806cacc7b3b541d2c3b2a8e4707e175120d34d6f4bd9d25a9b7106abcf1fdad303081cbb9a19543b0e3d279fdc92c0fe9d6fdab1d6c031c85cb3c8ff58282c63bc629b03096aef20b62966ea977e93cdcf81a64c04e3a1bcbd7ed6c5c11a891a58d38ef11141d5c0bff17870e1196c9dfc6f996f3e092dfbf1d13b815731846033c6f0dc8f69f079c296b02dbf4fcbdea3a8d8b44569cd4861aa26903b7bbb83893125e3b67936c3e25978c2238a9adb7b7f560be5e946fe4f780efda5cc474f10854016fdeed26d22cae0d66dcf7c0a3271f6d3dff102700b46089cd151b169415482eabe33eea7c4e7be28a137503f51a22982c0673bcf3c990c4af558adcee7d6c4277d4266b90a1acc2d31fb48b8e6004af095507c4fe609ed96c5e215b7bd3f3faeb8240705e72bda4ce846b1a715c63ce9861b52cbae58e57488614ef6eb3f5b1e7eea3b6567d38fa2e7f70407a107e8d9a718197092943c46668e0110f14ba001dd47d3f1cbd3a7c928b47e8dde47467e0e7682dcd520bf747bb038acfc1a96cb6593af32bba76656167f7496e91fac8feb8c9f1293ec4853969d6197
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';