@pixelated-tech/components 3.13.16 → 3.14.1

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 (266) 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/admin/site-health/site-health-dependency-vulnerabilities.js +1 -3
  4. package/dist/components/config/crypto.js +17 -1
  5. package/dist/components/general/404.js +1 -1
  6. package/dist/components/general/cache-manager.js +19 -2
  7. package/dist/components/general/callout.js +1 -1
  8. package/dist/components/general/carousel.drag.js +21 -24
  9. package/dist/components/general/carousel.js +3 -3
  10. package/dist/components/general/countup.js +1 -1
  11. package/dist/components/general/intersection-observer.js +4 -0
  12. package/dist/components/general/metadata.functions.js +2 -2
  13. package/dist/components/general/proxy-handler.js +2 -2
  14. package/dist/components/general/semantic.js +3 -6
  15. package/dist/components/general/sitemap.js +2 -1
  16. package/dist/components/general/smartimage.js +2 -4
  17. package/dist/components/general/styleguide.js +1 -1
  18. package/dist/components/general/tiles.js +2 -2
  19. package/dist/components/general/timeline.js +1 -1
  20. package/dist/components/general/utilities.js +68 -0
  21. package/dist/components/integrations/contentful.delivery.js +16 -16
  22. package/dist/components/integrations/contentful.items.components.js +2 -11
  23. package/dist/components/integrations/flickr.js +7 -4
  24. package/dist/components/integrations/google.reviews.components.js +3 -0
  25. package/dist/components/integrations/googleplaces.js +144 -0
  26. package/dist/components/integrations/socialcard.js +5 -2
  27. package/dist/components/integrations/wordpress.components.js +2 -1
  28. package/dist/components/shoppingcart/ebay.components.js +5 -5
  29. package/dist/components/shoppingcart/ebay.functions.js +5 -3
  30. package/dist/components/shoppingcart/paypal.js +1 -1
  31. package/dist/components/shoppingcart/shipping.to.json +3 -4
  32. package/dist/components/shoppingcart/shoppingcart.components.js +7 -5
  33. package/dist/components/shoppingcart/shoppingcart.css +1 -1
  34. package/dist/components/shoppingcart/shoppingcart.functions.js +5 -14
  35. package/dist/components/sitebuilder/config/ConfigEngine.js +2 -2
  36. package/dist/components/sitebuilder/config/google-fonts.js +3 -3
  37. package/dist/components/sitebuilder/form/formcomponents.js +151 -0
  38. package/dist/components/sitebuilder/form/formutils.js +3 -0
  39. package/dist/components/sitebuilder/page/lib/pageStorageContentful.js +2 -2
  40. package/dist/config/pixelated.config.json.enc +1 -1
  41. package/dist/data/form.json +18 -0
  42. package/dist/index.adminserver.js +1 -3
  43. package/dist/index.js +1 -1
  44. package/dist/index.server.js +1 -0
  45. package/dist/scripts/create-pixelated-app.js +187 -79
  46. package/dist/scripts/create-pixelated-app.json +56 -1
  47. package/dist/scripts/pixelated-eslint-plugin.js +142 -0
  48. package/dist/scripts/release.sh +14 -1
  49. package/dist/scripts/update.sh +2 -0
  50. package/dist/types/components/admin/deploy/deployment.integration.d.ts +1 -0
  51. package/dist/types/components/admin/deploy/deployment.integration.d.ts.map +1 -1
  52. package/dist/types/components/admin/site-health/google.api.integration.d.ts.map +1 -1
  53. package/dist/types/components/admin/site-health/site-health-cloudwatch.integration.d.ts.map +1 -1
  54. package/dist/types/components/config/config.types.d.ts +24 -0
  55. package/dist/types/components/config/config.types.d.ts.map +1 -1
  56. package/dist/types/components/config/crypto.d.ts +1 -0
  57. package/dist/types/components/config/crypto.d.ts.map +1 -1
  58. package/dist/types/components/general/404.d.ts.map +1 -1
  59. package/dist/types/components/general/cache-manager.d.ts +16 -2
  60. package/dist/types/components/general/cache-manager.d.ts.map +1 -1
  61. package/dist/types/components/general/callout.d.ts.map +1 -1
  62. package/dist/types/components/general/carousel.drag.d.ts.map +1 -1
  63. package/dist/types/components/general/intersection-observer.d.ts.map +1 -1
  64. package/dist/types/components/general/sitemap.d.ts.map +1 -1
  65. package/dist/types/components/general/smartimage.d.ts.map +1 -1
  66. package/dist/types/components/general/utilities.d.ts +37 -0
  67. package/dist/types/components/general/utilities.d.ts.map +1 -1
  68. package/dist/types/components/integrations/contentful.delivery.d.ts +16 -16
  69. package/dist/types/components/integrations/contentful.items.components.d.ts.map +1 -1
  70. package/dist/types/components/integrations/flickr.d.ts.map +1 -1
  71. package/dist/types/components/integrations/google.reviews.components.d.ts.map +1 -1
  72. package/dist/types/components/integrations/googleplaces.d.ts +61 -0
  73. package/dist/types/components/integrations/googleplaces.d.ts.map +1 -0
  74. package/dist/types/components/integrations/socialcard.d.ts.map +1 -1
  75. package/dist/types/components/integrations/wordpress.components.d.ts.map +1 -1
  76. package/dist/types/components/shoppingcart/ebay.functions.d.ts.map +1 -1
  77. package/dist/types/components/shoppingcart/shoppingcart.components.d.ts.map +1 -1
  78. package/dist/types/components/shoppingcart/shoppingcart.functions.d.ts +2 -2
  79. package/dist/types/components/shoppingcart/shoppingcart.functions.d.ts.map +1 -1
  80. package/dist/types/components/sitebuilder/form/formcomponents.d.ts +22 -0
  81. package/dist/types/components/sitebuilder/form/formcomponents.d.ts.map +1 -1
  82. package/dist/types/components/sitebuilder/form/formutils.d.ts.map +1 -1
  83. package/dist/types/index.adminserver.d.ts +1 -3
  84. package/dist/types/index.d.ts +1 -1
  85. package/dist/types/index.server.d.ts +1 -0
  86. package/dist/types/scripts/create-pixelated-app.d.ts +3 -0
  87. package/dist/types/scripts/create-pixelated-app.d.ts.map +1 -1
  88. package/dist/types/scripts/pixelated-eslint-plugin.d.ts +20 -0
  89. package/dist/types/stories/integrations/contentful.items.stories.d.ts.map +1 -0
  90. package/dist/types/stories/integrations/contentful.stories.d.ts.map +1 -0
  91. package/dist/types/stories/integrations/google.reviews.stories.d.ts.map +1 -0
  92. package/dist/types/stories/integrations/googlesearch.stories.d.ts.map +1 -0
  93. package/dist/types/stories/integrations/gravatar.stories.d.ts.map +1 -0
  94. package/dist/types/stories/integrations/instagram.stories.d.ts.map +1 -0
  95. package/dist/types/stories/integrations/wordpress.stories.d.ts.map +1 -0
  96. package/dist/types/test/test-utils.d.ts +2 -0
  97. package/dist/types/test/test-utils.d.ts.map +1 -1
  98. package/dist/types/tests/404.test.d.ts +2 -0
  99. package/dist/types/tests/404.test.d.ts.map +1 -0
  100. package/dist/types/tests/carousel.drag.test.d.ts +2 -0
  101. package/dist/types/tests/carousel.drag.test.d.ts.map +1 -0
  102. package/dist/types/tests/carouselDrag.test.d.ts +2 -0
  103. package/dist/types/tests/carouselDrag.test.d.ts.map +1 -0
  104. package/dist/types/tests/componentAnalysis.test.d.ts +2 -0
  105. package/dist/types/tests/componentAnalysis.test.d.ts.map +1 -0
  106. package/dist/types/tests/componentDiscovery.test.d.ts +2 -0
  107. package/dist/types/tests/componentDiscovery.test.d.ts.map +1 -0
  108. package/dist/types/tests/componentMap.test.d.ts +2 -0
  109. package/dist/types/tests/componentMap.test.d.ts.map +1 -0
  110. package/dist/types/tests/contentful.items.components.test.d.ts +2 -0
  111. package/dist/types/tests/contentful.items.components.test.d.ts.map +1 -0
  112. package/dist/types/tests/contentful.management.test.d.ts +2 -0
  113. package/dist/types/tests/contentful.management.test.d.ts.map +1 -0
  114. package/dist/types/tests/contentfulManagement.test.d.ts +2 -0
  115. package/dist/types/tests/contentfulManagement.test.d.ts.map +1 -0
  116. package/dist/types/tests/countup.test.d.ts +2 -0
  117. package/dist/types/tests/countup.test.d.ts.map +1 -0
  118. package/dist/types/tests/crypto.test.d.ts +2 -0
  119. package/dist/types/tests/crypto.test.d.ts.map +1 -0
  120. package/dist/types/tests/deployment.integration.test.d.ts +2 -0
  121. package/dist/types/tests/deployment.integration.test.d.ts.map +1 -0
  122. package/dist/types/tests/ebay.components.test.d.ts +2 -0
  123. package/dist/types/tests/ebay.components.test.d.ts.map +1 -0
  124. package/dist/types/tests/ebayComponents.test.d.ts +2 -0
  125. package/dist/types/tests/ebayComponents.test.d.ts.map +1 -0
  126. package/dist/types/tests/flickr.test.d.ts +2 -0
  127. package/dist/types/tests/flickr.test.d.ts.map +1 -0
  128. package/dist/types/tests/formgoogleplacesinput.test.d.ts +2 -0
  129. package/dist/types/tests/formgoogleplacesinput.test.d.ts.map +1 -0
  130. package/dist/types/tests/formutils.test.d.ts +2 -0
  131. package/dist/types/tests/formutils.test.d.ts.map +1 -0
  132. package/dist/types/tests/formvalidator.test.d.ts +2 -0
  133. package/dist/types/tests/formvalidator.test.d.ts.map +1 -0
  134. package/dist/types/tests/gemini-api.client.test.d.ts +2 -0
  135. package/dist/types/tests/gemini-api.client.test.d.ts.map +1 -0
  136. package/dist/types/tests/gemini-api.server.test.d.ts +2 -0
  137. package/dist/types/tests/gemini-api.server.test.d.ts.map +1 -0
  138. package/dist/types/tests/geminiApi.test.d.ts +2 -0
  139. package/dist/types/tests/geminiApi.test.d.ts.map +1 -0
  140. package/dist/types/tests/google.reviews.components.test.d.ts +2 -0
  141. package/dist/types/tests/google.reviews.components.test.d.ts.map +1 -0
  142. package/dist/types/tests/googleanalytics.test.d.ts +2 -0
  143. package/dist/types/tests/googleanalytics.test.d.ts.map +1 -0
  144. package/dist/types/tests/googlemap.test.d.ts +2 -0
  145. package/dist/types/tests/googlemap.test.d.ts.map +1 -0
  146. package/dist/types/tests/gravatar.functions.test.d.ts +2 -0
  147. package/dist/types/tests/gravatar.functions.test.d.ts.map +1 -0
  148. package/dist/types/tests/hubspot.components.test.d.ts +2 -0
  149. package/dist/types/tests/hubspot.components.test.d.ts.map +1 -0
  150. package/dist/types/tests/image-utils.test.d.ts +2 -0
  151. package/dist/types/tests/image-utils.test.d.ts.map +1 -0
  152. package/dist/types/tests/instagram.components.test.d.ts +2 -0
  153. package/dist/types/tests/instagram.components.test.d.ts.map +1 -0
  154. package/dist/types/tests/instagram.functions.test.d.ts +2 -0
  155. package/dist/types/tests/instagram.functions.test.d.ts.map +1 -0
  156. package/dist/types/tests/intersection-observer.test.d.ts +2 -0
  157. package/dist/types/tests/intersection-observer.test.d.ts.map +1 -0
  158. package/dist/types/tests/metadata.functions.test.d.ts +2 -0
  159. package/dist/types/tests/metadata.functions.test.d.ts.map +1 -0
  160. package/dist/types/tests/metadataComponents.test.d.ts +2 -0
  161. package/dist/types/tests/metadataComponents.test.d.ts.map +1 -0
  162. package/dist/types/tests/page-storage.test.d.ts +2 -0
  163. package/dist/types/tests/page-storage.test.d.ts.map +1 -0
  164. package/dist/types/tests/pageStorageContentful.test.d.ts +2 -0
  165. package/dist/types/tests/pageStorageContentful.test.d.ts.map +1 -0
  166. package/dist/types/tests/pageStorageLocal.test.d.ts +2 -0
  167. package/dist/types/tests/pageStorageLocal.test.d.ts.map +1 -0
  168. package/dist/types/tests/pixelated.test.d.ts +2 -0
  169. package/dist/types/tests/pixelated.test.d.ts.map +1 -0
  170. package/dist/types/tests/propTypeIntrospection.test.d.ts +2 -0
  171. package/dist/types/tests/propTypeIntrospection.test.d.ts.map +1 -0
  172. package/dist/types/tests/save-route-example.test.d.ts +2 -0
  173. package/dist/types/tests/save-route-example.test.d.ts.map +1 -0
  174. package/dist/types/tests/saveRouteExample.test.d.ts +2 -0
  175. package/dist/types/tests/saveRouteExample.test.d.ts.map +1 -0
  176. package/dist/types/tests/seoConstants.test.d.ts +2 -0
  177. package/dist/types/tests/seoConstants.test.d.ts.map +1 -0
  178. package/dist/types/tests/site-health-accessibility.test.d.ts +2 -0
  179. package/dist/types/tests/site-health-accessibility.test.d.ts.map +1 -0
  180. package/dist/types/tests/site-health-cloudwatch.integration.test.d.ts +2 -0
  181. package/dist/types/tests/site-health-cloudwatch.integration.test.d.ts.map +1 -0
  182. package/dist/types/tests/site-health-dependency-vulnerabilities.test.d.ts +2 -0
  183. package/dist/types/tests/site-health-dependency-vulnerabilities.test.d.ts.map +1 -0
  184. package/dist/types/tests/site-health-github.test.d.ts +2 -0
  185. package/dist/types/tests/site-health-github.test.d.ts.map +1 -0
  186. package/dist/types/tests/site-health-google-analytics.integration.test.d.ts +2 -0
  187. package/dist/types/tests/site-health-google-analytics.integration.test.d.ts.map +1 -0
  188. package/dist/types/tests/site-health-google-analytics.test.d.ts +2 -0
  189. package/dist/types/tests/site-health-google-analytics.test.d.ts.map +1 -0
  190. package/dist/types/tests/site-health-google-search-console.integration.test.d.ts +2 -0
  191. package/dist/types/tests/site-health-google-search-console.integration.test.d.ts.map +1 -0
  192. package/dist/types/tests/site-health-google-search-console.test.d.ts +2 -0
  193. package/dist/types/tests/site-health-google-search-console.test.d.ts.map +1 -0
  194. package/dist/types/tests/site-health-mock-context.test.d.ts +2 -0
  195. package/dist/types/tests/site-health-mock-context.test.d.ts.map +1 -0
  196. package/dist/types/tests/site-health-on-site-seo.test.d.ts +2 -0
  197. package/dist/types/tests/site-health-on-site-seo.test.d.ts.map +1 -0
  198. package/dist/types/tests/site-health-performance.test.d.ts +2 -0
  199. package/dist/types/tests/site-health-performance.test.d.ts.map +1 -0
  200. package/dist/types/tests/site-health-security.integration.test.d.ts +2 -0
  201. package/dist/types/tests/site-health-security.integration.test.d.ts.map +1 -0
  202. package/dist/types/tests/site-health-security.test.d.ts +2 -0
  203. package/dist/types/tests/site-health-security.test.d.ts.map +1 -0
  204. package/dist/types/tests/site-health-seo.test.d.ts +2 -0
  205. package/dist/types/tests/site-health-seo.test.d.ts.map +1 -0
  206. package/dist/types/tests/site-health-uptime.integration.test.d.ts +2 -0
  207. package/dist/types/tests/site-health-uptime.integration.test.d.ts.map +1 -0
  208. package/dist/types/tests/site-health-uptime.test.d.ts +2 -0
  209. package/dist/types/tests/site-health-uptime.test.d.ts.map +1 -0
  210. package/dist/types/tests/siteHealthGaIntegration.test.d.ts +2 -0
  211. package/dist/types/tests/siteHealthGaIntegration.test.d.ts.map +1 -0
  212. package/dist/types/tests/siteHealthGscIntegration.test.d.ts +2 -0
  213. package/dist/types/tests/siteHealthGscIntegration.test.d.ts.map +1 -0
  214. package/dist/types/tests/spotify.components.test.d.ts +2 -0
  215. package/dist/types/tests/spotify.components.test.d.ts.map +1 -0
  216. package/dist/types/tests/spotify.functions.test.d.ts +2 -0
  217. package/dist/types/tests/spotify.functions.test.d.ts.map +1 -0
  218. package/dist/types/tests/test-utils.d.ts +7 -0
  219. package/dist/types/tests/test-utils.d.ts.map +1 -0
  220. package/dist/types/tests/usePageBuilder.test.d.ts +2 -0
  221. package/dist/types/tests/usePageBuilder.test.d.ts.map +1 -0
  222. package/package.json +34 -30
  223. package/dist/components/admin/site-health/site-health-google-analytics.integration.js +0 -6
  224. package/dist/components/admin/site-health/site-health-google-search-console.integration.js +0 -6
  225. package/dist/components/general/proxy-csp-listener.js +0 -20
  226. package/dist/scripts/create-pixelated-app-template-mapper.js +0 -80
  227. package/dist/types/components/admin/site-health/site-health-google-analytics.integration.d.ts +0 -6
  228. package/dist/types/components/admin/site-health/site-health-google-analytics.integration.d.ts.map +0 -1
  229. package/dist/types/components/admin/site-health/site-health-google-search-console.integration.d.ts +0 -6
  230. package/dist/types/components/admin/site-health/site-health-google-search-console.integration.d.ts.map +0 -1
  231. package/dist/types/components/general/proxy-csp-listener.d.ts +0 -15
  232. package/dist/types/components/general/proxy-csp-listener.d.ts.map +0 -1
  233. package/dist/types/scripts/create-pixelated-app-template-mapper.d.ts +0 -5
  234. package/dist/types/scripts/create-pixelated-app-template-mapper.d.ts.map +0 -1
  235. package/dist/types/stories/general/callout.many.stories.d.ts +0 -7
  236. package/dist/types/stories/general/callout.many.stories.d.ts.map +0 -1
  237. package/dist/types/stories/general/contentful.item.stories.d.ts +0 -12
  238. package/dist/types/stories/general/contentful.item.stories.d.ts.map +0 -1
  239. package/dist/types/stories/general/contentful.items.stories.d.ts.map +0 -1
  240. package/dist/types/stories/general/contentful.stories.d.ts.map +0 -1
  241. package/dist/types/stories/general/global-error.stories.d.ts +0 -26
  242. package/dist/types/stories/general/global-error.stories.d.ts.map +0 -1
  243. package/dist/types/stories/general/google.reviews.stories.d.ts.map +0 -1
  244. package/dist/types/stories/general/googleanalytics.stories.d.ts +0 -14
  245. package/dist/types/stories/general/googleanalytics.stories.d.ts.map +0 -1
  246. package/dist/types/stories/general/googlesearch.stories.d.ts.map +0 -1
  247. package/dist/types/stories/general/gravatar.stories.d.ts.map +0 -1
  248. package/dist/types/stories/general/instagram.stories.d.ts.map +0 -1
  249. package/dist/types/stories/general/loading.stories.d.ts +0 -11
  250. package/dist/types/stories/general/loading.stories.d.ts.map +0 -1
  251. package/dist/types/stories/general/metadata.stories.d.ts +0 -25
  252. package/dist/types/stories/general/metadata.stories.d.ts.map +0 -1
  253. package/dist/types/stories/general/schema.stories.d.ts +0 -62
  254. package/dist/types/stories/general/schema.stories.d.ts.map +0 -1
  255. package/dist/types/stories/general/sitemap.stories.d.ts +0 -8
  256. package/dist/types/stories/general/sitemap.stories.d.ts.map +0 -1
  257. package/dist/types/stories/general/wordpress.stories.d.ts.map +0 -1
  258. package/dist/types/stories/integrations/schema-podcast.stories.d.ts +0 -45
  259. package/dist/types/stories/integrations/schema-podcast.stories.d.ts.map +0 -1
  260. /package/dist/types/stories/{general → integrations}/contentful.items.stories.d.ts +0 -0
  261. /package/dist/types/stories/{general → integrations}/contentful.stories.d.ts +0 -0
  262. /package/dist/types/stories/{general → integrations}/google.reviews.stories.d.ts +0 -0
  263. /package/dist/types/stories/{general → integrations}/googlesearch.stories.d.ts +0 -0
  264. /package/dist/types/stories/{general → integrations}/gravatar.stories.d.ts +0 -0
  265. /package/dist/types/stories/{general → integrations}/instagram.stories.d.ts +0 -0
  266. /package/dist/types/stories/{general → integrations}/wordpress.stories.d.ts +0 -0
@@ -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:f5acd15a1c2ad9b70597c5cf:f5b05491e993840f9a4966148ba78627:13eadc864008b51c8b4b279b9eefd183d16af6cea44c38b4aa5dbe927a001ef4f108b3f5a74fed1a13c86649f1b25adc4e18cfdad3ed322f3c4fe8f55efbde59941f31aa1de85aa2b25aae4bfe48f6ead0b659366278aa88c69137ab9e224aa09757be7ae44a2f7659fb7954df2c8a250fbe2dbf8b5591e2382b2a7937a3c49898476fe412022e9679feaae15f1b67ca3baa44b08122877a541d81ff6588cb50ecc16fc0785f34856c2e06809bd88f1b571ffd92c968b1e1fb18fceca98a1f32a5ccdb7f653b8274579a24ccee99d911a46e5da66109bcfb7461fbd3a5af92b705a471958dc87305e32480913d2eae98f3b8a1ce129b2b4c4eaa6e5c89466e91293207952e4de97a39deecc4011a0b32ca6e92b5b1161e9090af75f02e5b8a43c05569433aef7210d202329a897fd8ca227d843c3eeaa12464006e18b3b69c0a1e1e6878d49f5f0e3bda91dd31a9281ee41eb253be56bf05f679e0b7e252e1a7b1d06c0baa0c6ef16b2a9d70473e0941c4c821fbc3fe3c432f1125fa3b9893d61bf8566f235c0bb9685da0ff33bcca5870c9b7ed466e3bd2116d3e705222344057a4a13fe8ee99f40588a02de5bb67e9c43c012fa5808446e356f74ea8c42d65f9fb7bddcfafd3f56f3d17101eb9b3c06957bdc76ec5ce07cbcf53fb8ace5d5a3d4f18db650d6aaab38424fe008d323f0b1bedef33a0a8086c1d325a32a4c581989512892c1ed801222d25938fad3cf5eebd7c6fc115e9b8dcf7fc2188849b7ef038ed834a6ab2a50c510d47cc9ff4d36c4cb8abfcb25601aff8e378c6b10bedaea7e14be1d2662ee3aeeda97523995e6d42f0531b473e6aa0bb363af3f3bd507a5d683dcad2ef2826f7c570a72aeddeab1e1efda823b27f78ad5da590640122e6fba89caa6a8c9d9aed22d0a1c087a2922e115feb44f2f715a161308fa208390fa0b17a457d47943b3bbf9362662147371b303bf7ddd0ad09b56dc7ee1291aeec7687bafe88bc394fd5eaaf5e2ce5926172c6dbbcfa402d85dbdf14da2a818e3cff84605205b3a9b907cf9b62d4d3f37dad0e0c2846ad20209366b7230db8283ce83ac80f1fb8796b1385f5bda68b2f93c3d64f970f12fc3a054b8c44f74a42167f09337bc9624cf89cb136d57bdc5e5a55a45ee672854845943498c49d273fbfb171efe142d84453404d15e3f967270b10a9395b43928a34f719467a848a972ae747aa3fb30c3b4bfff41fb8c68d84808075b59218c68661df6db584e70f3cc0031f7b99974cfe5d9d7ca958efe3602d09b2ae528d958a9b898a2c3525ee9a26cd48bab64828b3e69c962268a49cc152bac4425a0fab758c303ea467a8cbc571692b18dff2e071e0c6d99b681e4511e5d217fd3f3e3b455794297d4b2a0d338807c742729b475e3acc6f7854cb66aaa763f840d91be86b40486bc6bcd3758130bfa02f7ef1f08c8bde1b8301e707f7370a71c46593739fe70fd3ae9e5441df33558aac04a95bed54e47e4cd4ff1b7d8d03086cee14a45ea5117019afe15a6a7bcc866139987036f9a09ab12a058131c274250951c7c530bcf8e4a2e2dad370f92276aadbc4f15cc48460ba72665035e231260687680590918878c14324b47d37017cc9f253e5080c8f24317c6437648d8d0ff691bacb80508364a5e3e4f46699027377fdb650eef9331d6d5448da63fca6e30789de7b18c3ff44626f621216b83109d14a661a98d4d3164e6d70891790e164c79a50fcd20c1a7144eb3e8902a46562391e89eac46a977170a11285381f7141fd1a57ad7d47e3ccfdb7f39ef0fdc0fdef9d1e651bc051319eda410b890e4d1808de41203e0331331cf110cd77ff6e8f2e37f58ca33e79913789f69d0ae5487edbc6c8befd60266c8f15170125afdaca8e4e02d8d5055540b3f4966470e5dbb3032799fd78d2db708ff34d0671236a3296befb86273cefb0b1c538b600f7128359ead6521e68d5bca46a5cbe4aa17c2e85a55d7c4c0be8a47137db064c3436f0a571b8759387ab67175296ca9db5f7ff1c91ba2e711015dd18305953a2b6d35aef11d2410887742c874291fba6f59bd423e470f3737af63de945034d13c2e99c9cda396697a62f555df62fe108541e5945c474fd8cf2b09433582f240b23e9811050427a491c1f3d6ec517a8da0c534ef1e82eeb6768dab11cd72271dda7c7c8a195c8159b6949eddd6ddec07b98b8c801a2a8bc9d33044c9e758cd8f0cdf03163ca596a28411a6890b065b8d01181375586a908355d489fce7f8389688f5bd680227e39927e0a18e73592ffb660bbf47a2100f4e23e4add399c1fef82f35d87f2fc78ad567defb74c045e2373c5a79ee6932271177410359509a43635df1bb65a121da9a5822920bd36be8a4cfd47cec21247996064585d8e36c61cf06b41a2d0568762417133fc78e74dae161fbcc93472532c3cd67608b1a45ac5474667faf31e451fd35d7f997e8f45e8634b71788529ce0f829ea0c2e131e1922f8598c89ce24063a6b016317b956c7df3e5bdc0d53db01b70b92445d9db0911123e2e7ab17fdb101a39be21d30c410e116e7f75350f4f4d9c68fa3f0ba031e6a0c4614d778ff010884b687028420ec8548d1ad16a7571f45ba3e6f7610995eacd6ab9140521eb4b3d56a5320b9f58774e9144519e310f8bad7a6668dada8ae96247a93539846ab0c74507768d367958caf5d90dffd23b6b03da6b04bb88207f749a2ca7a505b96c6f334f6f2bdd35e1d293cdcac8dc71b9819e9dfbc7519347de68a4cdeb65beb6d2ab98d9ae7f2218a18c76d6041654ee8d9b538b404f5404a3eb0d37640c7bb092cb9fb37a50efb5a4afc971dac518d1672e29128bacc572b4eb67b82258afed1aa824dda2fa012512d42d663fd1e4d9b313eef138a0b280f9ee58515773ab97a5e2f34ec8efa3ded652854fc9b004f3d89f0fb6bfcca19cef5908fc5d347b956293000ea290c927da01b65d31bbe79f85993602cf77b7f9ea064fe2591a8381e6c85c84fdb1b0653113b62ed23ac91d74cca0cf5c37c1999bf1c5f2f24191484c8be09f2a8e5d5bebf3415069d5b3200bba5d7fd06182798fa2d2cec88e2ecc4ce8277ba007017f56290d351723768416bea212d930db5e0c2d59bbc979769784ce882288ecff26697567123a7570b5f5b7d759a84d27f22bd7e2fa76fbb34431b4973a1aa8f870d719056352767b7c593ec1dbd0a2c311c6e5bb4b7115252df638dbbdb02216b1c5a9affc1167bd57153957d8968058a4b16e54703fbfd8e142c9037a3ea452c80d033f3e343395c8fbab29a96d3796ae520f97fe095a8b1f4fbca9a72f2cea4833fcdc308fac8412d0d015ff4baa037cd8694bd5cb5ca32584a98eccd85e847a4efc32f3f827786589c38b491d7ae5d5afead669d8f3e90d9e9fa6c3fe2bbb6f3494c85cca743aef4b4682754a672eabcfe671d03e8a242fd28a147c96e89883f1791de74c8fb08b7b24b03494a8bb36ee7961e2669ec74830bc205331fdc448d44706a993db925be4df34fa9a5e055773930609cd9fabaa36cf52bd5569173e8444a9d5370ab4053e5adf1a78682b1e444c3799fb1a09239404c9bc410d75a6ab3bd31aeb02376a9bce00b99ab6530797745ec14898430a19903d36824a8d4b3b12e7272f3e0440220d1f6e2ec2a58cb1d36f2c51abc6afe32229bdcc23593a49ae5655f3619f592585922dd9465ee6bcc6801c1fa8081a9d52011c2626f654287850862c750eaa4ffecfaf5aeae4ae173fb085ae269a44de5ea5e595c3fb2ddbc06b7a403cd6c52f999f64b7782b7d932f8340e9a41d0353d7c49636d16f03d6a9c56d461bf07ff8184ac61b0f6416c5c091c8c4e8cd057ed73161b96ad9d23fb50209a578226c7a0e79fbb5e4bc5b136fe37665d3746cf0c343629459d8cccbbe28097d6168d94f4895b702a77366dfe31379ffb9a61c841c9b09fb0257dd162519279057bdd44b39c995410a41c1dbef376005fc07cd3f172fa27c2ebfbb9ca10dc8854936b9c61b2966d351c0c8d873612d706bbeefe8d788176f6c2779890b9bfdc05576eacd1ca1f2f7603d0fe2282d10dcae2ce886e5d4adadab4a97127a626db5372720c9be33a2c670eed1dc46496065569f030d17daac5003a124a32053c03ffe4a69689e18451a8614cdf8dce27f610b0110b1ba115d8255e620a8f617d88c483e1ba5d46ddb3cab1b2290bc3896d7c6c2faf71c25d4cd5808ac9720e1432bfe6f134d14eb0697c194c5fc3c0ad6cdd164a3504c60d4a72252e1053bc69bbc0292bc93aa50aa5c31e694c2e7c50280540b64df800243fcaee6a70874eb3635931bbf3f9fe301577c4e52a4e7599e358b75984029028a6e791f5a934d4fa8404f0b7b89da5b252cc5e123b10e37d8b1625be2020698d9766d7f94a1421822b27982770549355f91f45fa5686b02e67645f7b75af3b34dcbcf42dd7fd39f32d2822b1a1c934a356b79c8bdec020b7336f1cb34dfe990768b95da771ca7948d52d37205bf012ef4ae1d7dee2b48530907cd924aac6d44bcc2a77177f0743396bb84d9bba6b036465a9e49565efeecc79ae793ebcec3ca8d7b148182918f5e71f305dfa387841fe47b0f3c891fb2d3d0373f4f1a45c51e574ceaa0f433f1b70a900097fbb00077e183d98da74201bb3fbee97c4f0a4e4892773391a33135bf43d78b48a86749bfb27fc82e068c008f53dbba9d948c9045f4159778a83c67acf84f5d4213607b349258b6448dc3fa8634be0eacddef4f96bbf3b93103dbd4672b89b07314c2614bfa6eeab30d417f3ee36cf6ff29331a504b5bde23e28b419b32b5492c98bb7b0d3a3ebfa055230a3c518d8648a371f4e36a6e3dc96adea09b9b9ec536d264e402d2af74073a44aed65c578b67aea227965b1be367f0116fc51f40f61311c49328e9d7843b1553cb7f5e5f0af2ea5bb6c90a5dc0748cdf8f35c79015e8e734596c81f468e16001b02ad9b81c643b74dd289bead40d687f47c7befcc7fd4f4f73edb2c13ea1d78035cfa9c759d3b189e05a90d276feddf53747f7e55595e7f706af78a7e1db0eaed7a44575f5b3d43b21162ac26e1f47a7954aab77f3a8436941d05d5dbeea386c5ffb3122e9e311c5d4d8f3d0d9133e027bf321220f245a789493e7e340d97d0657da3b6091f389d58265ce7d562cdcdece89d89d5aa6ee05e0768dfbc66517210755fc998450b52dfba14bb1979177210f75d8214d1dd0d853bde2f03dbd6e20b0abb9ea9ec21f7d10624744c63cd4f2fe44db1e6f3ef727c5d18c00c5150d23e7b0c82aba9a8e86ba8fb2eaa3d6db6215718cd31e6df6918c48e5637f91eaf3534e610ba2c309aabf2e08ee776b4ba0e6082328bd28e72adc9c88e802218d4f191bea53f3367f482bc317797de99dec32fa9d3c2cc4fe2504ea51493604b14508806a3fd6491cc5edca57392bdbaadd12565d0941c817806d5f137f2f2a03c925b3248e952b051ae5944c2c24fc671a675cb7f92b5a65446ee32d7c34be3b850ae5d8292c565bf3b291841cf7f680094b653e5eba5f273b0fa8eca16ebc622bd28f957b2fdff3a3dd1551016ac4ad8bcb95ebf3934af61528a09d743aadd75229eb29500b8fdf80aa6149d14933d069e60b536729620866e54d06b7f1ebec27feee263f7ea8690dec42ca71477ed364dd77b5298986f6d437ec261b5c7421aa2fe62cf88a9608a5ee8a9ae6ca21b9af780d6ad006c385ffc2b4265e96d952a176ab7be7e9ea400402886db2b9240d03ead2000dedda11002c948bcbd9acb3452247
@@ -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';
@@ -49,7 +49,6 @@ import { promisify } from 'util';
49
49
  import readline from 'readline/promises';
50
50
  import { stdin as input, stdout as output } from 'process';
51
51
  import { fileURLToPath } from 'url';
52
- import { loadManifest, findTemplateForSlug, pruneTemplateDirs, printAvailableTemplates } from './create-pixelated-app-template-mapper.js';
53
52
  import { AmplifyClient, CreateAppCommand, CreateBranchCommand, UpdateAppCommand, UpdateBranchCommand } from '@aws-sdk/client-amplify';
54
53
 
55
54
  const __filename = fileURLToPath(import.meta.url);
@@ -70,6 +69,51 @@ async function exists(p) {
70
69
  }
71
70
  }
72
71
 
72
+ // Template manifest utilities
73
+ export async function loadManifest(baseDir = path.resolve(__dirname)) {
74
+ const manifestPath = path.resolve(baseDir, 'create-pixelated-app.json');
75
+ try {
76
+ if (await exists(manifestPath)) {
77
+ const txt = await fs.readFile(manifestPath, 'utf8');
78
+ return JSON.parse(txt);
79
+ }
80
+ } catch (e) {
81
+ // ignore parse/read errors
82
+ }
83
+ return null;
84
+ }
85
+
86
+ export function findTemplateForSlug(manifest, slug) {
87
+ if (!manifest || !Array.isArray(manifest.templates)) return null;
88
+ slug = (slug || '').toLowerCase();
89
+ for (const t of manifest.templates) {
90
+ // Skip templates that have action: "ignore" (metadata routes in Admin section)
91
+ if (t.action === 'ignore') continue;
92
+ if (!t.aliases || !Array.isArray(t.aliases)) continue;
93
+ for (let a of t.aliases) {
94
+ a = a.toLowerCase().replace(/\s+/g, '-').replace(/[^a-z0-9-]/g, '');
95
+ if (a === slug) return t;
96
+ }
97
+ // also fuzzy match (e.g., 'about-us' -> 'about')
98
+ for (let a of t.aliases) {
99
+ a = a.toLowerCase().replace(/\s+/g, '-').replace(/[^a-z0-9-]/g, '');
100
+ if (slug === a || slug.startsWith(a + '-') || slug.endsWith('-' + a) || slug.includes('-' + a + '-')) return t;
101
+ }
102
+ }
103
+ return null;
104
+ }
105
+
106
+ export function printAvailableTemplates(manifest) {
107
+ if (!manifest || !Array.isArray(manifest.templates) || manifest.templates.length === 0) return;
108
+ console.log('\nAvailable templates:');
109
+ for (const t of manifest.templates) {
110
+ // Skip templates in Admin section (marked with action: "ignore")
111
+ if (t.action === 'ignore') continue;
112
+ const aliases = Array.isArray(t.aliases) ? t.aliases.join(', ') : '';
113
+ console.log(` - ${t.name}${aliases ? ': ' + aliases : ''}`);
114
+ }
115
+ }
116
+
73
117
  async function countFiles(src) {
74
118
  let total = 0;
75
119
  async function walk(p) {
@@ -245,7 +289,8 @@ export async function createAndPushRemote(destPath, siteName, defaultOwner) {
245
289
  const tmpDir = path.join(destPath, '.px-scripts');
246
290
  const tmpFile = path.join(tmpDir, 'get_github_token.ts');
247
291
  await fs.mkdir(tmpDir, { recursive: true });
248
- const tmpContent = `import('./src/components/config/config').then(m => {
292
+ const configModulePath = path.resolve(destPath, 'src', 'components', 'config', 'config');
293
+ const tmpContent = `import('${configModulePath}').then(m => {
249
294
  const cfg = m.getFullPixelatedConfig();
250
295
  // Only print the github object (or null) as JSON to stdout
251
296
  console.log(JSON.stringify(cfg?.github || null));
@@ -550,121 +595,184 @@ async function main() {
550
595
  }
551
596
 
552
597
 
553
- // Pages prompt: show available templates and ask which pages to create (comma-separated)
554
- console.log(`\nStep ${stepNumber++}: Page Creation`);
598
+ // Pages selection: ask which pages user wants (from template or custom new pages)
599
+ console.log(`\nStep ${stepNumber++}: Page Selection`);
555
600
  console.log('================================================================================\n');
556
601
  if (manifest && Array.isArray(manifest.templates) && manifest.templates.length) {
557
602
  printAvailableTemplates(manifest);
558
603
  }
559
- const pagesInput = (await rl.question('Pages to create (comma-separated, e.g. about,contact) [leave blank to skip]: ')).trim();
560
- let pagesToCreate = [];
561
- let existingPages = ['humans.txt', 'styleguide'];
604
+ const pagesInput = (await rl.question('Pages you want (comma-separated, e.g. about,contact,custom-legal) [leave blank to skip]: ')).trim();
605
+ let wantedPages = [];
562
606
  if (pagesInput) {
563
607
  const raw = pagesInput.split(',').map(s => s.trim()).filter(Boolean);
564
- // sanitize and normalize
565
608
  const seen = new Set();
566
- for (const r of raw) {
567
- const lower = r.toLowerCase();
568
- if (lower === 'home' || lower === 'index') {
569
- existingPages.push('home');
570
- continue;
571
- }
572
- let slug = r.trim().toLowerCase().replace(/\s+/g, '-').replace(/[^a-z0-9-]/g, '');
573
- if (!slug) continue;
574
- if (seen.has(slug)) continue;
609
+
610
+ // Normalize each input
611
+ for (const userInput of raw) {
612
+ const slug = userInput.toLowerCase().replace(/\s+/g, '-').replace(/[^a-z0-9-]/g, '');
613
+ if (!slug || seen.has(slug)) continue;
575
614
  seen.add(slug);
615
+
616
+ // Check if it's a template page
576
617
  const matchedTemplate = findTemplateForSlug(manifest, slug);
577
- pagesToCreate.push({ slug, displayName: r.trim(), template: matchedTemplate });
618
+ const isTemplate = !!matchedTemplate;
619
+
620
+ wantedPages.push({
621
+ slug,
622
+ displayName: userInput.trim(),
623
+ isTemplate,
624
+ matchedTemplate
625
+ });
578
626
  }
579
627
 
580
- console.log('\nSummary of pages:');
581
- if (existingPages.length) console.log(` - Existing (skipped): ${existingPages.join(', ')}`);
582
- if (pagesToCreate.length) {
583
- console.log(' - To be created:');
584
- for (const p of pagesToCreate) {
585
- if (p.template) {
586
- console.log(` - ${p.slug} (mapped to template: ${p.template.name})`);
587
- } else {
588
- console.log(` - ${p.slug} (no template match)`);
628
+ if (wantedPages.length) {
629
+ console.log('\nSummary of pages:');
630
+ const templatePages = wantedPages.filter(p => p.isTemplate);
631
+ const customPages = wantedPages.filter(p => !p.isTemplate);
632
+
633
+ if (templatePages.length) {
634
+ console.log(' - Template pages:');
635
+ for (const p of templatePages) {
636
+ console.log(` - ${p.slug} (from template: ${p.matchedTemplate.name})`);
637
+ }
638
+ }
639
+ if (customPages.length) {
640
+ console.log(' - Custom pages (new):');
641
+ for (const p of customPages) {
642
+ console.log(` - ${p.slug}`);
589
643
  }
590
644
  }
591
645
  }
592
- const proceedPages = (await rl.question('Proceed to create these pages? (Y/n): ')) || 'y';
646
+
647
+ const proceedPages = (await rl.question('Proceed with these pages? (Y/n): ')) || 'y';
593
648
  if (proceedPages.toLowerCase() === 'y' || proceedPages.toLowerCase() === 'yes') {
594
- // perform creation
595
- const templatePagesHome = path.join(templatePath, 'src', 'app', '(pages)', '(home)');
596
649
  const siteRoutesFile = path.join(destPath, 'src', 'app', 'data', 'routes.json');
597
650
  let routesJson = null;
651
+
598
652
  try {
599
653
  routesJson = JSON.parse(await fs.readFile(siteRoutesFile, 'utf8'));
600
- // Ensure siteInfo exists and set its name to the root display name
601
654
  routesJson.siteInfo = routesJson.siteInfo || {};
602
655
  routesJson.siteInfo.name = rootDisplayName;
603
656
  } catch (e) {
604
- console.warn('⚠️ Could not read routes.json, routes will not be updated.');
657
+ console.error(' Failed to read routes.json:', e?.message || e);
658
+ process.exit(1);
605
659
  }
606
660
 
607
- for (const p of pagesToCreate) {
608
- const targetDir = path.join(destPath, 'src', 'app', '(pages)', p.slug);
609
- console.log(`Creating page ${p.slug} -> ${targetDir}`);
610
- let copyResult = null;
611
- if (p.template && p.template.src) {
612
- copyResult = await copyTemplateForPage(templatePath, p.template.src, templatePagesHome, targetDir);
613
- if (copyResult.used === 'template') {
614
- console.log(` - Copied template ${p.template.name} from ${copyResult.src}`);
615
- } else {
616
- console.warn(`⚠️ Template source ${path.join(templatePath, 'src', 'app', '(pages)', path.basename(p.template.src))} not found; using default page template instead.`);
661
+ const templatePagesHome = path.join(templatePath, 'src', 'app', '(pages)', '(home)');
662
+ const pagesDir = path.join(destPath, 'src', 'app', '(pages)');
663
+ const wantedSlugs = new Set(wantedPages.map(p => p.slug));
664
+
665
+ // Process wanted pages: rename templates or create custom pages
666
+ for (const p of wantedPages) {
667
+ if (p.isTemplate) {
668
+ // Get the actual template folder name (e.g., "about")
669
+ const templateFolderName = path.basename(p.matchedTemplate.src);
670
+ const oldPath = path.join(pagesDir, templateFolderName);
671
+ const newPath = path.join(pagesDir, p.slug);
672
+
673
+ // Rename if user requested a different name
674
+ if (templateFolderName !== p.slug) {
675
+ try {
676
+ await fs.rename(oldPath, newPath);
677
+ console.log(`Renamed ${templateFolderName} → ${p.slug}`);
678
+
679
+ // Update component name in page.tsx
680
+ const pageFile = path.join(newPath, 'page.tsx');
681
+ let content = await fs.readFile(pageFile, 'utf8');
682
+ const compName = p.displayName.replace(/[^a-zA-Z0-9]+/g, ' ').split(/\s+/).map(s => s.charAt(0).toUpperCase() + s.slice(1)).join('') + 'Page';
683
+ content = content.replace(/export default function\s+\w+\s*\(/, `export default function ${compName}(`);
684
+ await fs.writeFile(pageFile, content, 'utf8');
685
+ console.log(` - Updated component name to ${compName}`);
686
+
687
+ // Update route path in routes.json
688
+ const route = routesJson.routes.find(r => r.path === `/${templateFolderName}`);
689
+ if (route) {
690
+ route.path = `/${p.slug}`;
691
+ route.name = p.displayName.split(/\s+/).map(s => s.charAt(0).toUpperCase() + s.slice(1)).join(' ');
692
+ console.log(` - Updated route path to /${p.slug}`);
693
+ }
694
+ } catch (e) {
695
+ console.error(`❌ Failed to rename ${templateFolderName} to ${p.slug}:`, e?.message || e);
696
+ process.exit(1);
697
+ }
617
698
  }
618
699
  } else {
619
- await copyRecursive(templatePagesHome, targetDir);
620
- }
621
- // rename component in page.tsx
622
- const pageFile = path.join(targetDir, 'page.tsx');
623
- try {
624
- let content = await fs.readFile(pageFile, 'utf8');
625
- const compName = p.displayName.replace(/[^a-zA-Z0-9]+/g,' ').split(/\s+/).map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join('') + 'Page';
626
- content = content.replace(/export default function\s+\w+\s*\(/, `export default function ${compName}(`);
627
- await fs.writeFile(pageFile, content, 'utf8');
628
- console.log(` - Updated component name to ${compName} in ${path.relative(destPath, pageFile)}`);
629
- } catch (e) {
630
- console.warn(`⚠️ Failed to update component name for ${p.slug}:`, e?.message || e);
631
- }
632
-
633
- // update routes.json
634
- if (routesJson && Array.isArray(routesJson.routes)) {
635
- // Skip if route path already exists
636
- const candidatePath = `/${p.slug}`;
637
- if (!routesJson.routes.some(r => r.path === candidatePath)) {
638
- routesJson.routes.push({
639
- "name": p.displayName.split(/\s+/).map(s=>s.charAt(0).toUpperCase()+s.slice(1)).join(' '),
640
- "path": candidatePath,
700
+ // Create custom page from default template
701
+ try {
702
+ const targetDir = path.join(pagesDir, p.slug);
703
+ await copyRecursive(templatePagesHome, targetDir);
704
+ console.log(`Created custom page ${p.slug}`);
705
+
706
+ // Update component name in page.tsx
707
+ const pageFile = path.join(targetDir, 'page.tsx');
708
+ let content = await fs.readFile(pageFile, 'utf8');
709
+ const compName = p.displayName.replace(/[^a-zA-Z0-9]+/g, ' ').split(/\s+/).map(s => s.charAt(0).toUpperCase() + s.slice(1)).join('') + 'Page';
710
+ content = content.replace(/export default function\s+\w+\s*\(/, `export default function ${compName}(`);
711
+ await fs.writeFile(pageFile, content, 'utf8');
712
+ console.log(` - Updated component name to ${compName}`);
713
+
714
+ // Add route entry
715
+ const newRoute = {
716
+ "name": p.displayName.split(/\s+/).map(s => s.charAt(0).toUpperCase() + s.slice(1)).join(' '),
717
+ "path": `/${p.slug}`,
641
718
  "title": `${rootDisplayName} - ${p.displayName}`,
642
719
  "description": "",
643
720
  "keywords": ""
644
- });
645
- } else {
646
- console.log(` - Route ${candidatePath} already exists; skipping route add.`);
721
+ };
722
+ routesJson.routes.push(newRoute);
723
+ console.log(` - Added route /${p.slug}`);
724
+ } catch (e) {
725
+ console.error(`❌ Failed to create custom page ${p.slug}:`, e?.message || e);
726
+ process.exit(1);
647
727
  }
648
728
  }
649
729
  }
650
730
 
651
- if (manifest) {
652
- const removed = await pruneTemplateDirs(manifest, destPath, pagesToCreate.map(p=>p.slug));
653
- for (const r of removed) {
654
- console.log(`Removed unused template page ${r} from new site...`);
731
+ // Delete unwanted template pages
732
+ // The Admin section (an object with nested routes for metadata pages) is in routesJson.routes
733
+ // but doesn't have folders in the (pages) directory, so it's never encountered by fs.readdir().
734
+ // We can safely delete page folders without worrying about removing the Admin section.
735
+ try {
736
+ const existingFolders = await fs.readdir(pagesDir);
737
+ const foldersToDelete = [];
738
+
739
+ for (const folderName of existingFolders) {
740
+ if (!wantedSlugs.has(folderName)) {
741
+ const folderTemplate = findTemplateForSlug(manifest, folderName);
742
+ if (folderTemplate) {
743
+ foldersToDelete.push(folderName);
744
+ }
745
+ }
746
+ }
747
+
748
+ // Delete unwanted folders and their routes
749
+ for (const folderName of foldersToDelete) {
750
+ try {
751
+ const folderPath = path.join(pagesDir, folderName);
752
+ await fs.rm(folderPath, { recursive: true });
753
+ console.log(`Deleted template page ${folderName}`);
754
+
755
+ // Remove the corresponding route from routes.json
756
+ routesJson.routes = routesJson.routes.filter(r => r.path !== `/${folderName}`);
757
+ } catch (e) {
758
+ console.warn(`⚠️ Failed to delete ${folderName}:`, e?.message || e);
759
+ }
655
760
  }
761
+ } catch (e) {
762
+ // readdir might fail if pages dir doesn't exist, but that's OK
763
+ console.warn(`⚠️ Could not read pages directory for cleanup:`, e?.message || e);
656
764
  }
657
765
 
658
- if (routesJson) {
659
- try {
660
- await fs.writeFile(siteRoutesFile, JSON.stringify(routesJson, null, '\t'), 'utf8');
661
- console.log('✅ routes.json updated.');
662
- } catch (e) {
663
- console.warn('⚠️ Failed to write routes.json:', e?.message || e);
664
- }
766
+ // Write final routes.json
767
+ try {
768
+ await fs.writeFile(siteRoutesFile, JSON.stringify(routesJson, null, '\t'), 'utf8');
769
+ console.log('✅ routes.json updated.');
770
+ } catch (e) {
771
+ console.error('Failed to write routes.json:', e?.message || e);
772
+ process.exit(1);
665
773
  }
666
774
  } else {
667
- console.log('Skipping page creation.');
775
+ console.log('Skipping page selection.');
668
776
  }
669
777
  }
670
778
 
@@ -10,6 +10,11 @@
10
10
  "aliases": ["blog", "blog-posts", "news", "updates", "articles"],
11
11
  "src": "../../pixelated-template/src/app/(pages)/blog"
12
12
  },
13
+ {
14
+ "name": "Blog Calendar",
15
+ "aliases": ["blogcalendar", "blog-calendar", "calendar", "event-calendar", "events"],
16
+ "src": "../../pixelated-template/src/app/(pages)/blogcalendar"
17
+ },
13
18
  {
14
19
  "name": "Contact",
15
20
  "aliases": ["contact", "contact-us", "contact-us-page", "contactus", "support", "get-in-touch", "reach-out", "get-in-touch"],
@@ -22,10 +27,40 @@
22
27
  "src": "../../pixelated-template/src/app/(pages)/faqs",
23
28
  "associated_files": ["src/app/data/faqs.json"]
24
29
  },
30
+ {
31
+ "name": "Global Error",
32
+ "aliases": ["global-error", "globalerror", "error-boundary"],
33
+ "action": "ignore"
34
+ },
25
35
  {
26
36
  "name": "Humans.txt",
27
37
  "aliases": ["humans", "humans-txt", "humans.txt", "humansfile", "humansfile.txt", "humanstext"],
28
- "src": "../../pixelated-template/src/app/(pages)/humans"
38
+ "action": "ignore"
39
+ },
40
+ {
41
+ "name": "Loading",
42
+ "aliases": ["loading", "skeleton", "loader"],
43
+ "action": "ignore"
44
+ },
45
+ {
46
+ "name": "Manifest",
47
+ "aliases": ["manifest", "manifest.json", "manifest-json", "webmanifest"],
48
+ "action": "ignore"
49
+ },
50
+ {
51
+ "name": "Not Found",
52
+ "aliases": ["not-found", "notfound", "404", "error-404"],
53
+ "action": "ignore"
54
+ },
55
+ {
56
+ "name": "Partners",
57
+ "aliases": ["partners", "partner", "affiliates", "integration-partners", "integrations", "collaborators"],
58
+ "src": "../../pixelated-template/src/app/(pages)/partners"
59
+ },
60
+ {
61
+ "name": "Podcast",
62
+ "aliases": ["podcast", "podcasts", "audio", "episodes", "show"],
63
+ "src": "../../pixelated-template/src/app/(pages)/podcast"
29
64
  },
30
65
  {
31
66
  "name": "Projects",
@@ -33,15 +68,35 @@
33
68
  "our-projects", "our-project", "case-studies", "examples", "showcase", "samples"],
34
69
  "src": "../../pixelated-template/src/app/(pages)/projects"
35
70
  },
71
+ {
72
+ "name": "Robots",
73
+ "aliases": ["robots", "robots.txt", "robots-txt"],
74
+ "action": "ignore"
75
+ },
76
+ {
77
+ "name": "Security.txt",
78
+ "aliases": ["security", "security.txt", "securitytxt", "security-txt", "well-known", "securityfile", "securityfile.txt", "wellknown"],
79
+ "action": "ignore"
80
+ },
36
81
  {
37
82
  "name": "Services",
38
83
  "aliases": ["services", "service", "our-services", "services-page", "offerings", "solutions", "products"],
39
84
  "src": "../../pixelated-template/src/app/(pages)/services"
40
85
  },
86
+ {
87
+ "name": "Sitemap",
88
+ "aliases": ["sitemap", "sitemap.xml", "sitemap-xml"],
89
+ "action": "ignore"
90
+ },
41
91
  {
42
92
  "name": "Style Guide",
43
93
  "aliases": ["styleguide", "style-guide", "design-system", "ui-kit", "pattern-library"],
44
94
  "src": "../../pixelated-template/src/app/(pages)/styleguide"
95
+ },
96
+ {
97
+ "name": "Updates",
98
+ "aliases": ["updates", "update", "changelog"],
99
+ "src": "../../pixelated-template/src/app/(pages)/updates"
45
100
  }
46
101
  ]
47
102
  }