@total_onion/onion-library 1.0.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 (719) hide show
  1. package/.github/workflows/npm-publish.yml +34 -0
  2. package/.prettierrc +22 -0
  3. package/README.md +33 -0
  4. package/__spec__/copyBlockComponent.spec.js +94 -0
  5. package/__spec__/copyFile.spec.js +78 -0
  6. package/__spec__/copyFileKeeping.spec.js +74 -0
  7. package/__spec__/files/source.txt +1 -0
  8. package/__spec__/update-all-components.spec.js +99 -0
  9. package/__spec__/update-component.spec.js +165 -0
  10. package/components/admin-filter-pages-by-block/filter-pages-by-block.php +81 -0
  11. package/components/admin-resizable-editor-sidebar/resizable-editor-sidebar.php +224 -0
  12. package/components/block-animated-sections/animated-sections-extra.scss +631 -0
  13. package/components/block-animated-sections/animated-sections.js +1642 -0
  14. package/components/block-animated-sections/animated-sections.php +14 -0
  15. package/components/block-animated-sections/animated-sections.scss +470 -0
  16. package/components/block-animated-sections/animated-sections.twig +324 -0
  17. package/components/block-animated-sections/group_63f350c04d418.json +4122 -0
  18. package/components/block-back-to-top-button/back-to-top-button-extra.scss +6 -0
  19. package/components/block-back-to-top-button/back-to-top-button.js +12 -0
  20. package/components/block-back-to-top-button/back-to-top-button.php +14 -0
  21. package/components/block-back-to-top-button/back-to-top-button.scss +71 -0
  22. package/components/block-back-to-top-button/back-to-top-button.twig +40 -0
  23. package/components/block-back-to-top-button/group_63e24e04a1e61.json +315 -0
  24. package/components/block-bambuser-display/bambuser-display-extra.scss +6 -0
  25. package/components/block-bambuser-display/bambuser-display.js +43 -0
  26. package/components/block-bambuser-display/bambuser-display.php +14 -0
  27. package/components/block-bambuser-display/bambuser-display.scss +7 -0
  28. package/components/block-bambuser-display/bambuser-display.twig +43 -0
  29. package/components/block-bambuser-display/group_671658042eba7.json +489 -0
  30. package/components/block-bazaarvoice-display/bazaarvoice-display-extra.scss +5 -0
  31. package/components/block-bazaarvoice-display/bazaarvoice-display.js +7 -0
  32. package/components/block-bazaarvoice-display/bazaarvoice-display.php +14 -0
  33. package/components/block-bazaarvoice-display/bazaarvoice-display.scss +42 -0
  34. package/components/block-bazaarvoice-display/bazaarvoice-display.twig +38 -0
  35. package/components/block-bazaarvoice-display/group_64f744285585d.json +382 -0
  36. package/components/block-better-reviews/better-reviews-extra.scss +5 -0
  37. package/components/block-betterreviews-display/betterreviews-display-extra.scss +309 -0
  38. package/components/block-betterreviews-display/betterreviews-display.js +8 -0
  39. package/components/block-betterreviews-display/betterreviews-display.php +14 -0
  40. package/components/block-betterreviews-display/betterreviews-display.scss +25 -0
  41. package/components/block-betterreviews-display/betterreviews-display.twig +31 -0
  42. package/components/block-betterreviews-display/group_651c206555d43.json +331 -0
  43. package/components/block-breadcrumb-display/breadcrumb-display-extra.scss +6 -0
  44. package/components/block-breadcrumb-display/breadcrumb-display.js +8 -0
  45. package/components/block-breadcrumb-display/breadcrumb-display.php +14 -0
  46. package/components/block-breadcrumb-display/breadcrumb-display.scss +17 -0
  47. package/components/block-breadcrumb-display/breadcrumb-display.twig +50 -0
  48. package/components/block-breadcrumb-display/group_652aea92326b9.json +211 -0
  49. package/components/block-card-carousel-v2/card-carousel-v2.js +138 -0
  50. package/components/block-card-carousel-v2/card-carousel-v2.php +17 -0
  51. package/components/block-card-carousel-v2/card-carousel-v2.scss +408 -0
  52. package/components/block-card-carousel-v2/card-carousel-v2.twig +145 -0
  53. package/components/block-card-carousel-v2/group_64f46e5ea695b.json +1171 -0
  54. package/components/block-carousel-multi-layout-v2/carousel-multi-layout-v2-extra.js +1 -0
  55. package/components/block-carousel-multi-layout-v2/carousel-multi-layout-v2-extra.scss +5 -0
  56. package/components/block-carousel-multi-layout-v2/carousel-multi-layout-v2.js +223 -0
  57. package/components/block-carousel-multi-layout-v2/carousel-multi-layout-v2.php +17 -0
  58. package/components/block-carousel-multi-layout-v2/carousel-multi-layout-v2.scss +155 -0
  59. package/components/block-carousel-multi-layout-v2/carousel-multi-layout-v2.twig +137 -0
  60. package/components/block-carousel-multi-layout-v2/group_63f1ff16340b1.json +687 -0
  61. package/components/block-carousel-thumbnail-gallery/carousel-thumbnail-gallery-extra.scss +6 -0
  62. package/components/block-carousel-thumbnail-gallery/carousel-thumbnail-gallery.js +89 -0
  63. package/components/block-carousel-thumbnail-gallery/carousel-thumbnail-gallery.php +17 -0
  64. package/components/block-carousel-thumbnail-gallery/carousel-thumbnail-gallery.scss +87 -0
  65. package/components/block-carousel-thumbnail-gallery/carousel-thumbnail-gallery.twig +70 -0
  66. package/components/block-carousel-thumbnail-gallery/group_63dfd38732f6c.json +605 -0
  67. package/components/block-collection-carousel/collection-carousel-extra.scss +5 -0
  68. package/components/block-collection-carousel/collection-carousel.js +132 -0
  69. package/components/block-collection-carousel/collection-carousel.php +14 -0
  70. package/components/block-collection-carousel/collection-carousel.scss +59 -0
  71. package/components/block-collection-carousel/collection-carousel.twig +87 -0
  72. package/components/block-collection-carousel/group_645b93da4e5d5.json +225 -0
  73. package/components/block-current-post-info/current-post-info-extra.js +1 -0
  74. package/components/block-current-post-info/current-post-info-extra.scss +6 -0
  75. package/components/block-current-post-info/current-post-info.js +11 -0
  76. package/components/block-current-post-info/current-post-info.php +17 -0
  77. package/components/block-current-post-info/current-post-info.scss +173 -0
  78. package/components/block-current-post-info/current-post-info.twig +44 -0
  79. package/components/block-current-post-info/group_681f29c027d42.json +2535 -0
  80. package/components/block-debrain-label-shop/debrain-label-shop.js +7 -0
  81. package/components/block-debrain-label-shop/debrain-label-shop.php +73 -0
  82. package/components/block-debrain-label-shop/debrain-label-shop.scss +4 -0
  83. package/components/block-debrain-label-shop/debrain-label-shop.twig +116 -0
  84. package/components/block-debrain-label-shop/group_63935b63f198c.json +1613 -0
  85. package/components/block-debrain-wtb/debrain-wtb-extra.scss +6 -0
  86. package/components/block-debrain-wtb/debrain-wtb.js +8 -0
  87. package/components/block-debrain-wtb/debrain-wtb.php +14 -0
  88. package/components/block-debrain-wtb/debrain-wtb.scss +7 -0
  89. package/components/block-debrain-wtb/debrain-wtb.twig +18 -0
  90. package/components/block-debrain-wtb/group_66349f620692e.json +73 -0
  91. package/components/block-divider/divider-extra.scss +5 -0
  92. package/components/block-divider/divider.js +8 -0
  93. package/components/block-divider/divider.php +14 -0
  94. package/components/block-divider/divider.scss +86 -0
  95. package/components/block-divider/divider.twig +48 -0
  96. package/components/block-divider/group_63a4486b818b1.json +888 -0
  97. package/components/block-event-details-banner/event-details-banner-extra.scss +15 -0
  98. package/components/block-event-details-banner/event-details-banner.js +9 -0
  99. package/components/block-event-details-banner/event-details-banner.php +14 -0
  100. package/components/block-event-details-banner/event-details-banner.scss +216 -0
  101. package/components/block-event-details-banner/event-details-banner.twig +78 -0
  102. package/components/block-event-details-banner/group_63d934fc2895a.json +736 -0
  103. package/components/block-floating-links/floating-links-extra.scss +4 -0
  104. package/components/block-floating-links/floating-links.js +8 -0
  105. package/components/block-floating-links/floating-links.php +14 -0
  106. package/components/block-floating-links/floating-links.scss +73 -0
  107. package/components/block-floating-links/floating-links.twig +25 -0
  108. package/components/block-floating-links/group_63d7ab19e9b15.json +531 -0
  109. package/components/block-gradient-layer/gradient-layer-extra.scss +6 -0
  110. package/components/block-gradient-layer/gradient-layer.js +7 -0
  111. package/components/block-gradient-layer/gradient-layer.php +14 -0
  112. package/components/block-gradient-layer/gradient-layer.scss +11 -0
  113. package/components/block-gradient-layer/gradient-layer.twig +17 -0
  114. package/components/block-gradient-layer/group_6787dab17f83e.json +215 -0
  115. package/components/block-group-container/group-container-extra.scss +2 -0
  116. package/components/block-group-container/group-container.js +8 -0
  117. package/components/block-group-container/group-container.php +14 -0
  118. package/components/block-group-container/group-container.scss +34 -0
  119. package/components/block-group-container/group-container.twig +49 -0
  120. package/components/block-group-container/group_644ce9a48943b.json +5097 -0
  121. package/components/block-iframe-container/group_645d4a0c3e5ca.json +459 -0
  122. package/components/block-iframe-container/iframe-container-extra.scss +2 -0
  123. package/components/block-iframe-container/iframe-container.js +31 -0
  124. package/components/block-iframe-container/iframe-container.php +14 -0
  125. package/components/block-iframe-container/iframe-container.scss +26 -0
  126. package/components/block-iframe-container/iframe-container.twig +23 -0
  127. package/components/block-list-builder/group_640ebbadc584f.json +739 -0
  128. package/components/block-list-builder/list-builder-extra.scss +6 -0
  129. package/components/block-list-builder/list-builder.js +7 -0
  130. package/components/block-list-builder/list-builder.php +14 -0
  131. package/components/block-list-builder/list-builder.scss +62 -0
  132. package/components/block-list-builder/list-builder.twig +47 -0
  133. package/components/block-map-container/group_670fe49f73f13.json +406 -0
  134. package/components/block-map-container/map-container-extra.scss +2 -0
  135. package/components/block-map-container/map-container.js +230 -0
  136. package/components/block-map-container/map-container.php +14 -0
  137. package/components/block-map-container/map-container.scss +70 -0
  138. package/components/block-map-container/map-container.twig +35 -0
  139. package/components/block-menu-presentation/group_63d7ea144187d.json +489 -0
  140. package/components/block-menu-presentation/menu-presentation-extra.scss +2 -0
  141. package/components/block-menu-presentation/menu-presentation.js +11 -0
  142. package/components/block-menu-presentation/menu-presentation.php +14 -0
  143. package/components/block-menu-presentation/menu-presentation.scss +111 -0
  144. package/components/block-menu-presentation/menu-presentation.twig +60 -0
  145. package/components/block-mikmak-wtb/group_6674604cd3920.json +54 -0
  146. package/components/block-mikmak-wtb/mikmak-wtb-extra.scss +6 -0
  147. package/components/block-mikmak-wtb/mikmak-wtb.js +7 -0
  148. package/components/block-mikmak-wtb/mikmak-wtb.php +14 -0
  149. package/components/block-mikmak-wtb/mikmak-wtb.scss +7 -0
  150. package/components/block-mikmak-wtb/mikmak-wtb.twig +19 -0
  151. package/components/block-nav-menu-container/group_65d29435959e5.json +185 -0
  152. package/components/block-nav-menu-container/nav-menu-container-extra.scss +6 -0
  153. package/components/block-nav-menu-container/nav-menu-container.js +21 -0
  154. package/components/block-nav-menu-container/nav-menu-container.php +14 -0
  155. package/components/block-nav-menu-container/nav-menu-container.scss +13 -0
  156. package/components/block-nav-menu-container/nav-menu-container.twig +19 -0
  157. package/components/block-post-info/group_64ef2bc27ec59.json +13315 -0
  158. package/components/block-post-info/post-info/article-description.twig +7 -0
  159. package/components/block-post-info/post-info/bazaarvoice-inline.twig +10 -0
  160. package/components/block-post-info/post-info/better-reviews.twig +13 -0
  161. package/components/block-post-info/post-info/buy-now.twig +79 -0
  162. package/components/block-post-info/post-info/cocktail-glass-type.twig +21 -0
  163. package/components/block-post-info/post-info/cocktail-ingredients-description.twig +7 -0
  164. package/components/block-post-info/post-info/cocktail-ingredients-title.twig +7 -0
  165. package/components/block-post-info/post-info/cocktail-instructions-description.twig +7 -0
  166. package/components/block-post-info/post-info/cocktail-instructions-title.twig +7 -0
  167. package/components/block-post-info/post-info/cocktail-prep-time.twig +26 -0
  168. package/components/block-post-info/post-info/cocktail-recipe-ingredients.twig +132 -0
  169. package/components/block-post-info/post-info/cocktail-recipe-instructions.twig +19 -0
  170. package/components/block-post-info/post-info/cocktail-skill-level.twig +26 -0
  171. package/components/block-post-info/post-info/cocktail-taste.twig +26 -0
  172. package/components/block-post-info/post-info/cocktail-tasting-notes.twig +5 -0
  173. package/components/block-post-info/post-info/divider.twig +3 -0
  174. package/components/block-post-info/post-info/drink-description.twig +7 -0
  175. package/components/block-post-info/post-info/global-image.twig +23 -0
  176. package/components/block-post-info/post-info/gradient-overlay.twig +6 -0
  177. package/components/block-post-info/post-info/person-email.twig +10 -0
  178. package/components/block-post-info/post-info/person-name.twig +7 -0
  179. package/components/block-post-info/post-info/person-questionaire.twig +15 -0
  180. package/components/block-post-info/post-info/person-rating.twig +24 -0
  181. package/components/block-post-info/post-info/post-author.twig +7 -0
  182. package/components/block-post-info/post-info/post-categories.twig +6 -0
  183. package/components/block-post-info/post-info/post-headline.twig +6 -0
  184. package/components/block-post-info/post-info/post-image.twig +47 -0
  185. package/components/block-post-info/post-info/post-info-description.twig +5 -0
  186. package/components/block-post-info/post-info/post-info-subtitle.twig +5 -0
  187. package/components/block-post-info/post-info/post-link.twig +40 -0
  188. package/components/block-post-info/post-info/post-name.twig +5 -0
  189. package/components/block-post-info/post-info/post-publish-date.twig +7 -0
  190. package/components/block-post-info/post-info/post-tags.twig +16 -0
  191. package/components/block-post-info/post-info/post-text-alternative-style.twig +5 -0
  192. package/components/block-post-info/post-info/post-title.twig +5 -0
  193. package/components/block-post-info/post-info/product-abv.twig +7 -0
  194. package/components/block-post-info/post-info/product-age-statement.twig +8 -0
  195. package/components/block-post-info/post-info/product-cask-type.twig +7 -0
  196. package/components/block-post-info/post-info/product-country.twig +7 -0
  197. package/components/block-post-info/post-info/product-details-brand.twig +5 -0
  198. package/components/block-post-info/post-info/product-details-description.twig +5 -0
  199. package/components/block-post-info/post-info/product-details-name.twig +5 -0
  200. package/components/block-post-info/post-info/product-details-price.twig +5 -0
  201. package/components/block-post-info/post-info/product-finish.twig +7 -0
  202. package/components/block-post-info/post-info/product-history.twig +7 -0
  203. package/components/block-post-info/post-info/product-logo.twig +3 -0
  204. package/components/block-post-info/post-info/product-name.twig +5 -0
  205. package/components/block-post-info/post-info/product-nose.twig +7 -0
  206. package/components/block-post-info/post-info/product-price.twig +5 -0
  207. package/components/block-post-info/post-info/product-taste.twig +7 -0
  208. package/components/block-post-info/post-info/product-whisky-type.twig +7 -0
  209. package/components/block-post-info/post-info/reservebar-add-to-cart.twig +28 -0
  210. package/components/block-post-info/post-info/shopify-add-to-cart.twig +31 -0
  211. package/components/block-post-info/post-info/social-media-item.twig +34 -0
  212. package/components/block-post-info/post-info/spacer-v2.twig +5 -0
  213. package/components/block-post-info/post-info/treat-recipe-ingredients.twig +83 -0
  214. package/components/block-post-info/post-info-extra.js +1 -0
  215. package/components/block-post-info/post-info-extra.scss +14 -0
  216. package/components/block-post-info/post-info.js +11 -0
  217. package/components/block-post-info/post-info.php +17 -0
  218. package/components/block-post-info/post-info.scss +174 -0
  219. package/components/block-post-info/post-info.twig +51 -0
  220. package/components/block-post-type-filter-grid-v2/group_64690c62487bc.json +4359 -0
  221. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/better-reviews-widget.vue +15 -0
  222. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/buy-now-widget.vue +72 -0
  223. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/cocktail-category.vue +54 -0
  224. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/cocktail-tasting-notes.vue +15 -0
  225. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/divider-widget.vue +11 -0
  226. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/drink-tastes.vue +26 -0
  227. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/featured-post-component.vue +61 -0
  228. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/global-image-widget.vue +23 -0
  229. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/media-widget.vue +23 -0
  230. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/person-email-widget.vue +20 -0
  231. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/person-name-widget.vue +15 -0
  232. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/person-questionaire-widget.vue +17 -0
  233. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/person-rating-widget.vue +25 -0
  234. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-author-widget.vue +15 -0
  235. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-category-widget.vue +20 -0
  236. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-component.vue +130 -0
  237. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-headline-widget.vue +16 -0
  238. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-image-widget.vue +60 -0
  239. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-info-description.vue +14 -0
  240. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-info-subtitle.vue +14 -0
  241. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-link-widget.vue +44 -0
  242. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-publish-widget.vue +44 -0
  243. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-tags-widget.vue +20 -0
  244. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-text-alternative-style.vue +18 -0
  245. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/post-title-widget.vue +20 -0
  246. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/pre-render-posts-html.twig +17 -0
  247. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-abv.vue +18 -0
  248. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-age-statement.vue +17 -0
  249. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-bazaarvoice.vue +15 -0
  250. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-brand.vue +16 -0
  251. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-cask-type.vue +16 -0
  252. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-country.vue +14 -0
  253. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-description.vue +15 -0
  254. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-details-name.vue +18 -0
  255. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-details-price.vue +15 -0
  256. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-finish.vue +15 -0
  257. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-history.vue +16 -0
  258. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-link.vue +15 -0
  259. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-logo-widget.vue +22 -0
  260. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-name.vue +17 -0
  261. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-nose.vue +16 -0
  262. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-price.vue +15 -0
  263. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-slug.vue +14 -0
  264. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-taste.vue +16 -0
  265. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/product-whisky-type.vue +25 -0
  266. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/ptfg-posts.twig +404 -0
  267. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/ptfg-utils.vue +38 -0
  268. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/shopify-add-to-cart.vue +31 -0
  269. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/social-media-item.vue +58 -0
  270. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/spacer-widget.vue +13 -0
  271. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2/text-search.vue +10 -0
  272. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2-extra.scss +6 -0
  273. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2.js +15 -0
  274. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2.php +48 -0
  275. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2.scss +989 -0
  276. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2.twig +148 -0
  277. package/components/block-post-type-filter-grid-v2/post-type-filter-grid-v2.vue +888 -0
  278. package/components/block-post-type-scroller/group_65de1e6cda9fd.json +405 -0
  279. package/components/block-post-type-scroller/post-type-scroller-extra.scss +6 -0
  280. package/components/block-post-type-scroller/post-type-scroller.js +15 -0
  281. package/components/block-post-type-scroller/post-type-scroller.php +14 -0
  282. package/components/block-post-type-scroller/post-type-scroller.scss +4 -0
  283. package/components/block-post-type-scroller/post-type-scroller.twig +14 -0
  284. package/components/block-responsive-image/responsive-image.js +14 -0
  285. package/components/block-responsive-image/responsive-image.scss +3 -0
  286. package/components/block-responsive-table/group_6617ecc987ddd.json +461 -0
  287. package/components/block-responsive-table/responsive-table-extra.scss +6 -0
  288. package/components/block-responsive-table/responsive-table.js +7 -0
  289. package/components/block-responsive-table/responsive-table.php +14 -0
  290. package/components/block-responsive-table/responsive-table.scss +51 -0
  291. package/components/block-responsive-table/responsive-table.twig +45 -0
  292. package/components/block-section-separator/group_63e635d6a198a.json +576 -0
  293. package/components/block-section-separator/section-separator.js +8 -0
  294. package/components/block-section-separator/section-separator.php +14 -0
  295. package/components/block-section-separator/section-separator.scss +38 -0
  296. package/components/block-section-separator/section-separator.twig +46 -0
  297. package/components/block-single-column-container/group_656858f72acd7.json +1065 -0
  298. package/components/block-single-column-container/single-column-container-extra.scss +6 -0
  299. package/components/block-single-column-container/single-column-container.js +8 -0
  300. package/components/block-single-column-container/single-column-container.php +14 -0
  301. package/components/block-single-column-container/single-column-container.scss +20 -0
  302. package/components/block-single-column-container/single-column-container.twig +31 -0
  303. package/components/block-single-content-box/group_65b776f4d75a3.json +1734 -0
  304. package/components/block-single-content-box/single-content-box-extra.scss +7 -0
  305. package/components/block-single-content-box/single-content-box.js +15 -0
  306. package/components/block-single-content-box/single-content-box.php +14 -0
  307. package/components/block-single-content-box/single-content-box.scss +13 -0
  308. package/components/block-single-content-box/single-content-box.twig +21 -0
  309. package/components/block-single-lottie/group_65ccfe68d38cb.json +232 -0
  310. package/components/block-single-lottie/single-lottie-extra.scss +6 -0
  311. package/components/block-single-lottie/single-lottie.js +10 -0
  312. package/components/block-single-lottie/single-lottie.php +14 -0
  313. package/components/block-single-lottie/single-lottie.scss +10 -0
  314. package/components/block-single-lottie/single-lottie.twig +16 -0
  315. package/components/block-single-responsive-image/group_65a6674d41afa.json +354 -0
  316. package/components/block-single-responsive-image/single-responsive-image-extra.scss +7 -0
  317. package/components/block-single-responsive-image/single-responsive-image.js +7 -0
  318. package/components/block-single-responsive-image/single-responsive-image.php +14 -0
  319. package/components/block-single-responsive-image/single-responsive-image.scss +9 -0
  320. package/components/block-single-responsive-image/single-responsive-image.twig +17 -0
  321. package/components/block-single-video/group_65afa6aedbeac.json +280 -0
  322. package/components/block-single-video/single-video-extra.js +1 -0
  323. package/components/block-single-video/single-video-extra.scss +6 -0
  324. package/components/block-single-video/single-video.js +12 -0
  325. package/components/block-single-video/single-video.php +14 -0
  326. package/components/block-single-video/single-video.scss +36 -0
  327. package/components/block-single-video/single-video.twig +21 -0
  328. package/components/block-site-copyright-notice/group_66296c3716b4f.json +287 -0
  329. package/components/block-site-copyright-notice/site-copyright-notice-extra.scss +5 -0
  330. package/components/block-site-copyright-notice/site-copyright-notice.js +7 -0
  331. package/components/block-site-copyright-notice/site-copyright-notice.php +14 -0
  332. package/components/block-site-copyright-notice/site-copyright-notice.scss +32 -0
  333. package/components/block-site-copyright-notice/site-copyright-notice.twig +26 -0
  334. package/components/block-site-logo-container/group_65dda9cbda1a0.json +182 -0
  335. package/components/block-site-logo-container/site-logo-container-extra.scss +6 -0
  336. package/components/block-site-logo-container/site-logo-container.js +7 -0
  337. package/components/block-site-logo-container/site-logo-container.php +14 -0
  338. package/components/block-site-logo-container/site-logo-container.scss +30 -0
  339. package/components/block-site-logo-container/site-logo-container.twig +42 -0
  340. package/components/block-site-title-and-tagline/group_65d258a4d4ee1.json +393 -0
  341. package/components/block-site-title-and-tagline/site-title-and-tagline-extra.scss +5 -0
  342. package/components/block-site-title-and-tagline/site-title-and-tagline.js +7 -0
  343. package/components/block-site-title-and-tagline/site-title-and-tagline.php +14 -0
  344. package/components/block-site-title-and-tagline/site-title-and-tagline.scss +19 -0
  345. package/components/block-site-title-and-tagline/site-title-and-tagline.twig +24 -0
  346. package/components/block-slide-in-panel/group_644e7531c41b6.json +533 -0
  347. package/components/block-slide-in-panel/slide-in-panel-extra.scss +9 -0
  348. package/components/block-slide-in-panel/slide-in-panel.js +23 -0
  349. package/components/block-slide-in-panel/slide-in-panel.php +14 -0
  350. package/components/block-slide-in-panel/slide-in-panel.scss +40 -0
  351. package/components/block-slide-in-panel/slide-in-panel.twig +33 -0
  352. package/components/block-spacer-v2/group_64060dc280525.json +139 -0
  353. package/components/block-spacer-v2/spacer-v2.js +8 -0
  354. package/components/block-spacer-v2/spacer-v2.php +14 -0
  355. package/components/block-spacer-v2/spacer-v2.scss +20 -0
  356. package/components/block-spacer-v2/spacer-v2.twig +13 -0
  357. package/components/block-standard-content-v2/group_63a06c993ad35.json +2718 -0
  358. package/components/block-standard-content-v2/standard-content-v2-extra.js +1 -0
  359. package/components/block-standard-content-v2/standard-content-v2-extra.scss +21 -0
  360. package/components/block-standard-content-v2/standard-content-v2.js +51 -0
  361. package/components/block-standard-content-v2/standard-content-v2.php +17 -0
  362. package/components/block-standard-content-v2/standard-content-v2.scss +25 -0
  363. package/components/block-standard-content-v2/standard-content-v2.twig +20 -0
  364. package/components/block-sticky-link/group_63d78d7f41d23.json +134 -0
  365. package/components/block-sticky-link/sticky-link-extra.scss +1 -0
  366. package/components/block-sticky-link/sticky-link.js +8 -0
  367. package/components/block-sticky-link/sticky-link.php +14 -0
  368. package/components/block-sticky-link/sticky-link.scss +41 -0
  369. package/components/block-sticky-link/sticky-link.twig +25 -0
  370. package/components/block-sub-group-container/group_65de580781a2b.json +1524 -0
  371. package/components/block-sub-group-container/sub-group-container-extra.scss +2 -0
  372. package/components/block-sub-group-container/sub-group-container.js +9 -0
  373. package/components/block-sub-group-container/sub-group-container.php +14 -0
  374. package/components/block-sub-group-container/sub-group-container.scss +26 -0
  375. package/components/block-sub-group-container/sub-group-container.twig +42 -0
  376. package/components/block-sub-tabbed-content/group_6629506ec3a1e.json +1091 -0
  377. package/components/block-sub-tabbed-content/sub-tabbed-content-extra.scss +2 -0
  378. package/components/block-sub-tabbed-content/sub-tabbed-content.js +38 -0
  379. package/components/block-sub-tabbed-content/sub-tabbed-content.php +14 -0
  380. package/components/block-sub-tabbed-content/sub-tabbed-content.scss +74 -0
  381. package/components/block-sub-tabbed-content/sub-tabbed-content.twig +50 -0
  382. package/components/block-tabbed-content-v2/group_6471dffc728cf.json +1270 -0
  383. package/components/block-tabbed-content-v2/tabbed-content-v2-extra.scss +1 -0
  384. package/components/block-tabbed-content-v2/tabbed-content-v2.js +38 -0
  385. package/components/block-tabbed-content-v2/tabbed-content-v2.php +14 -0
  386. package/components/block-tabbed-content-v2/tabbed-content-v2.scss +73 -0
  387. package/components/block-tabbed-content-v2/tabbed-content-v2.twig +58 -0
  388. package/components/block-theme-switcher/group_674e319102e49.json +167 -0
  389. package/components/block-theme-switcher/theme-switcher-extra.scss +6 -0
  390. package/components/block-theme-switcher/theme-switcher.js +17 -0
  391. package/components/block-theme-switcher/theme-switcher.php +14 -0
  392. package/components/block-theme-switcher/theme-switcher.scss +7 -0
  393. package/components/block-theme-switcher/theme-switcher.twig +29 -0
  394. package/components/cache-cta-styles/cache-cta-styles.php +54 -0
  395. package/components/cache-custom-cache-config/custom-cache-config.php +8 -0
  396. package/components/cache-custom-cache-config/group_66f3e16f8c024.json +79 -0
  397. package/components/cache-global-settings/cache-global-settings.php +36 -0
  398. package/components/cache-market-settings/cache-market-settings.php +39 -0
  399. package/components/cache-themes/cache-themes.php +53 -0
  400. package/components/cache-typography/cache-typography.php +53 -0
  401. package/components/component-accent-image/accent-image.twig +75 -0
  402. package/components/component-accent-image/group_6265189d8a694.json +890 -0
  403. package/components/component-accent-image-v2/accent-image-v2.twig +114 -0
  404. package/components/component-accent-image-v2/group_6595613d07b2d.json +951 -0
  405. package/components/component-accent-text/accent-text-extra.scss +6 -0
  406. package/components/component-accent-text/accent-text.scss +61 -0
  407. package/components/component-accent-text/accent-text.twig +11 -0
  408. package/components/component-accent-text/group_63e10c602d136.json +220 -0
  409. package/components/component-accordion-v2/accordion-v2-extra.scss +6 -0
  410. package/components/component-accordion-v2/accordion-v2.js +113 -0
  411. package/components/component-accordion-v2/accordion-v2.scss +172 -0
  412. package/components/component-accordion-v2/accordion-v2.twig +38 -0
  413. package/components/component-accordion-v2/group_65086e92b21c1.json +516 -0
  414. package/components/component-accordion-v3/accordion-v3.js +113 -0
  415. package/components/component-accordion-v3/accordion-v3.scss +183 -0
  416. package/components/component-accordion-v3/accordion-v3.twig +39 -0
  417. package/components/component-accordion-v3/group_66ab7edfc6d63.json +535 -0
  418. package/components/component-acf-wysiwyg-options/acf-wysiwyg-options.php +221 -0
  419. package/components/component-animations/animations.scss +117 -0
  420. package/components/component-animations/animations.twig +18 -0
  421. package/components/component-animations/group_659e9c280bdda.json +458 -0
  422. package/components/component-animations-style/animations-style.twig +5 -0
  423. package/components/component-athena-body-close/athena-body-close.twig +1 -0
  424. package/components/component-athena-body-open/athena-body-open.twig +32 -0
  425. package/components/component-athena-head/athena-head.twig +4 -0
  426. package/components/component-better-reviews/better-reviews-extra.scss +5 -0
  427. package/components/component-better-reviews/better-reviews.scss +356 -0
  428. package/components/component-better-reviews/better-reviews.twig +6 -0
  429. package/components/component-better-reviews-display-settings/group_671f47cc17aa9.json +91 -0
  430. package/components/component-block-padding/block-padding.scss +62 -0
  431. package/components/component-block-padding/block-padding.twig +53 -0
  432. package/components/component-block-padding/group_638f4148bc10b.json +889 -0
  433. package/components/component-block-settings/block-settings.scss +42 -0
  434. package/components/component-block-settings/block-settings.twig +31 -0
  435. package/components/component-block-settings/group_65a45ada4e128.json +699 -0
  436. package/components/component-blockquote/blockquote.scss +64 -0
  437. package/components/component-blockquote/blockquote.twig +55 -0
  438. package/components/component-blockquote/group_659d2bbc948e1.json +280 -0
  439. package/components/component-box-shadow/box-shadow.scss +9 -0
  440. package/components/component-box-shadow/box-shadow.twig +7 -0
  441. package/components/component-box-shadow/group_666ed2bece4c3.json +210 -0
  442. package/components/component-buy-now-button/buy-now-button.js +15 -0
  443. package/components/component-buy-now-button/buy-now-button.twig +97 -0
  444. package/components/component-buy-now-button/group_658430fa58bf1.json +717 -0
  445. package/components/component-carousel-standard/group_6282c52bf38d7.json +2844 -0
  446. package/components/component-child-pattern-settings/group_670b7ac92563c.json +76 -0
  447. package/components/component-classic-nav-items-center/classic-nav-items-center.js +58 -0
  448. package/components/component-classic-nav-items-center/classic-nav-items-center.scss +811 -0
  449. package/components/component-classic-nav-items-center/classic-nav-items-center.twig +144 -0
  450. package/components/component-classic-nav-items-center/group_66a2b63ae5cad.json +277 -0
  451. package/components/component-code-block/code-block.scss +10 -0
  452. package/components/component-code-block/code-block.twig +7 -0
  453. package/components/component-code-block/group_657eeb3aeb09e.json +58 -0
  454. package/components/component-competition-selection/competition-selection.twig +5 -0
  455. package/components/component-content-container/content-container.js +92 -0
  456. package/components/component-content-container/content-container.scss +57 -0
  457. package/components/component-content-container/content-container.twig +34 -0
  458. package/components/component-content-container/group_65e3707a7a50f.json +89 -0
  459. package/components/component-content-container-settings/content-container-settings.scss +213 -0
  460. package/components/component-content-container-settings/content-container-settings.twig +156 -0
  461. package/components/component-content-container-settings/group_65b58da6d24b8.json +2495 -0
  462. package/components/component-content-image-v2/content-image-v2.scss +33 -0
  463. package/components/component-content-image-v2/content-image-v2.twig +85 -0
  464. package/components/component-content-image-v2/group_63d7ba80aeac7.json +647 -0
  465. package/components/component-content-tooltip/content-tooltip-extra.scss +6 -0
  466. package/components/component-content-tooltip/content-tooltip.js +44 -0
  467. package/components/component-content-tooltip/content-tooltip.scss +41 -0
  468. package/components/component-countdown/countdown-extra.scss +6 -0
  469. package/components/component-countdown/countdown.js +58 -0
  470. package/components/component-countdown/countdown.scss +15 -0
  471. package/components/component-countdown/countdown.twig +16 -0
  472. package/components/component-countdown/group_6520a0c1ae809.json +334 -0
  473. package/components/component-cover-link/cover-link.scss +11 -0
  474. package/components/component-cover-link/cover-link.twig +4 -0
  475. package/components/component-cover-link/group_65ca55f45368c.json +103 -0
  476. package/components/component-cta-selection/cta-selection.twig +313 -0
  477. package/components/component-cta-selection/group_64b24a4e10761.json +1262 -0
  478. package/components/component-eager-loading/eager-loading.twig +4 -0
  479. package/components/component-eager-loading/group_654bee047f2f0.json +55 -0
  480. package/components/component-element-positioning/element-positioning.scss +21 -0
  481. package/components/component-element-positioning/element-positioning.twig +34 -0
  482. package/components/component-element-positioning/group_65b0e17675b81.json +471 -0
  483. package/components/component-form-selection/form-selection-extra.scss +6 -0
  484. package/components/component-form-selection/form-selection.js +18 -0
  485. package/components/component-form-selection/form-selection.scss +41 -0
  486. package/components/component-form-selection/form-selection.twig +23 -0
  487. package/components/component-form-selection/group_63f4889ebf085.json +161 -0
  488. package/components/component-global-content-max-width/global-content-max-width.twig +11 -0
  489. package/components/component-global-content-max-width/group_63c83de4f0a99.json +55 -0
  490. package/components/component-global-image/group_65b7c7e412941.json +256 -0
  491. package/components/component-gradient-overlay/gradient-overlay.scss +46 -0
  492. package/components/component-gradient-overlay/gradient-overlay.twig +58 -0
  493. package/components/component-gradient-overlay/group_65995d4f1a4b5.json +467 -0
  494. package/components/component-grid-layout-container/grid-layout-container.scss +61 -0
  495. package/components/component-grid-layout-container/grid-layout-container.twig +38 -0
  496. package/components/component-grid-layout-container/group_6504a88c17463.json +886 -0
  497. package/components/component-grid-layout-element/grid-layout-element.scss +27 -0
  498. package/components/component-grid-layout-element/grid-layout-element.twig +39 -0
  499. package/components/component-grid-layout-element/group_6504a81a0623c.json +705 -0
  500. package/components/component-inline-raw-svg/group_6714e19ec95cc.json +55 -0
  501. package/components/component-lottie-animations/group_65cb36d6cb82e.json +250 -0
  502. package/components/component-lottie-animations/lottie-animations-extra.scss +2 -0
  503. package/components/component-lottie-animations/lottie-animations.js +25 -0
  504. package/components/component-lottie-animations/lottie-animations.scss +13 -0
  505. package/components/component-lottie-animations/lottie-animations.twig +8 -0
  506. package/components/component-market-selector/group_66a7b8ec15615.json +53 -0
  507. package/components/component-market-selector/market-selector-extra.scss +2 -0
  508. package/components/component-market-selector/market-selector.js +71 -0
  509. package/components/component-market-selector/market-selector.scss +247 -0
  510. package/components/component-market-selector/market-selector.twig +16 -0
  511. package/components/component-nav-menu/group_64b814182a570.json +432 -0
  512. package/components/component-nav-menu/nav-menu.scss +44 -0
  513. package/components/component-nav-menu/nav-menu.twig +76 -0
  514. package/components/component-nav-menu-slide-in-panel/group_65db1f6c9cba8.json +172 -0
  515. package/components/component-nav-menu-slide-in-panel/nav-menu-slide-in-panel-extra.scss +7 -0
  516. package/components/component-nav-menu-slide-in-panel/nav-menu-slide-in-panel.js +176 -0
  517. package/components/component-nav-menu-slide-in-panel/nav-menu-slide-in-panel.scss +638 -0
  518. package/components/component-nav-menu-slide-in-panel/nav-menu-slide-in-panel.twig +95 -0
  519. package/components/component-page-properties/page-properties.twig +27 -0
  520. package/components/component-parallax-animations/parallax-animations.js +40 -0
  521. package/components/component-post-author/group_67a1430a08630.json +482 -0
  522. package/components/component-post-author/post-author-extra.scss +6 -0
  523. package/components/component-post-author/post-author.scss +46 -0
  524. package/components/component-post-author/post-author.twig +80 -0
  525. package/components/component-post-image/group_65b375fc0d10d.json +460 -0
  526. package/components/component-post-tags/group_67090920e08e5.json +100 -0
  527. package/components/component-responsive-image/group_6258aff982b23.json +2415 -0
  528. package/components/component-responsive-image/responsive-image.scss +61 -0
  529. package/components/component-responsive-image/responsive-image.twig +138 -0
  530. package/components/component-responsive-show-hide/group_645a741c8da2e.json +108 -0
  531. package/components/component-responsive-show-hide/responsive-show-hide.twig +9 -0
  532. package/components/component-responsive-video/responsive-video.scss +8 -0
  533. package/components/component-scrolling-banner/group_626472bf26f5c.json +501 -0
  534. package/components/component-scrolling-banner/scrolling-banner-extra.scss +5 -0
  535. package/components/component-scrolling-banner/scrolling-banner.js +118 -0
  536. package/components/component-scrolling-banner/scrolling-banner.scss +98 -0
  537. package/components/component-scrolling-banner/scrolling-banner.twig +31 -0
  538. package/components/component-scrolling-posts/group_65de1ebc8e0bc.json +404 -0
  539. package/components/component-scrolling-posts/scrolling-posts.js +16 -0
  540. package/components/component-scrolling-posts/scrolling-posts.scss +52 -0
  541. package/components/component-scrolling-posts/scrolling-posts.twig +76 -0
  542. package/components/component-shopify/shop-shopify.js +390 -0
  543. package/components/component-shopify/shop.js +104 -0
  544. package/components/component-shopify/shopify.scss +250 -0
  545. package/components/component-single-image/single-image.twig +7 -0
  546. package/components/component-social-media-share/group_6807bb08ab942.json +596 -0
  547. package/components/component-social-media-share/social-media-share-extra.scss +6 -0
  548. package/components/component-social-media-share/social-media-share.js +69 -0
  549. package/components/component-social-media-share/social-media-share.scss +128 -0
  550. package/components/component-social-media-share/social-media-share.twig +213 -0
  551. package/components/component-social-networks/group_668c110442111.json +467 -0
  552. package/components/component-social-networks/social-networks.scss +65 -0
  553. package/components/component-social-networks/social-networks.twig +38 -0
  554. package/components/component-spotify-embed/group_67d04c4c4cf78.json +123 -0
  555. package/components/component-spotify-embed/spotify-embed-extra.scss +5 -0
  556. package/components/component-spotify-embed/spotify-embed.js +7 -0
  557. package/components/component-spotify-embed/spotify-embed.scss +17 -0
  558. package/components/component-spotify-embed/spotify-embed.twig +4 -0
  559. package/components/component-standard-content-box/group_62a5ca6aa81d7.json +973 -0
  560. package/components/component-standard-content-box/standard-content-box.twig +64 -0
  561. package/components/component-standard-content-box-v2/group_6580636e7794b.json +136 -0
  562. package/components/component-standard-content-box-v2/standard-content-box-v2.twig +89 -0
  563. package/components/component-text-editor-settings/group_657305390de77.json +1236 -0
  564. package/components/component-truncated-text/group_677bd1bc69968.json +379 -0
  565. package/components/component-truncated-text/truncated-text-extra.scss +6 -0
  566. package/components/component-truncated-text/truncated-text.js +76 -0
  567. package/components/component-truncated-text/truncated-text.scss +42 -0
  568. package/components/component-truncated-text/truncated-text.twig +31 -0
  569. package/components/component-typography-style-select/group_6511f390d8357.json +83 -0
  570. package/components/component-video-standard/group_6258a8ba5e629.json +887 -0
  571. package/components/controller-password-protected/password-protected.css +46 -0
  572. package/components/controller-password-protected/password-protected.php +14 -0
  573. package/components/controller-password-protected/password-protected.twig +9 -0
  574. package/components/entrypoint-data-attribute/entry-point-data-attribute.twig +6 -0
  575. package/components/entrypoint-entry-point-classes/entry-point-classes.twig +13 -0
  576. package/components/entrypoint-entry-point-html/entry-point-html.twig +36 -0
  577. package/components/entrypoint-entry-point-style/entry-point-style.twig +14 -0
  578. package/components/entrypoint-preview-info/entry-point-preview-info.twig +7 -0
  579. package/components/fields-add-manage-patterns/add-manage-patterns-menu-link.php +13 -0
  580. package/components/fields-add-svg-support/add-svg-support.php +50 -0
  581. package/components/fields-allowed-block-types/allowed-block-types.php +34 -0
  582. package/components/fields-animations-style/animations-style.twig +2 -0
  583. package/components/fields-archive-pages/group_635e777ce46d4.json +135 -0
  584. package/components/fields-background-image-body/background-image-body.twig +16 -0
  585. package/components/fields-background-image-footer/background-image-footer.twig +8 -0
  586. package/components/fields-background-image-main/background-image-main.twig +8 -0
  587. package/components/fields-background-video-body/background-video-body.twig +14 -0
  588. package/components/fields-bazaarvoice-review/bazaarvoice-review.scss +10 -0
  589. package/components/fields-block-categories/block-categories.php +18 -0
  590. package/components/fields-block-editor-assets/block-editor-assets.php +17 -0
  591. package/components/fields-blockquote/blockquote.scss +64 -0
  592. package/components/fields-blockquote/blockquote.twig +55 -0
  593. package/components/fields-blocks-post-type-public/blocks-post-type-public.php +18 -0
  594. package/components/fields-box-shadow/box-shadow.scss +9 -0
  595. package/components/fields-check-file-type/check-file-type.php +13 -0
  596. package/components/fields-cloudflare-configuration/cloudflare-configuration.php +72 -0
  597. package/components/fields-cocktail-info/group_64c29b7f188ca.json +1461 -0
  598. package/components/fields-content-image-v2/content-image-v2.scss +30 -0
  599. package/components/fields-content-image-v2/content-image-v2.twig +73 -0
  600. package/components/fields-core-acf-wysiwyg-toolbars/core-acf-wysiwyg-toolbars.php +38 -0
  601. package/components/fields-core-athena-block-render-function/core-athena-block-render-function.php +50 -0
  602. package/components/fields-core-colour-data-config/core-colour-data-config.js +2 -0
  603. package/components/fields-core-colour-data-config/core-colour-data-config.php +60 -0
  604. package/components/fields-core-critical/core-critical.scss +6 -0
  605. package/components/fields-core-critical-css/core-critical-css.php +6 -0
  606. package/components/fields-core-css-modules/core-css-modules.scss +12 -0
  607. package/components/fields-core-css-sizing-vars/core-css-sizing-vars.scss +156 -0
  608. package/components/fields-core-cta/core-cta.php +240 -0
  609. package/components/fields-core-cta/core-cta.scss +280 -0
  610. package/components/fields-core-design-settings/core-design-settings.twig +6 -0
  611. package/components/fields-core-design-system/core-design-system.php +44 -0
  612. package/components/fields-core-editor-cta-style-select/core-editor-cta-style-select.js +16 -0
  613. package/components/fields-core-editor-cta-style-select/core-editor-cta-style-select.php +18 -0
  614. package/components/fields-core-editor-theme-select/core-editor-theme-select.js +16 -0
  615. package/components/fields-core-editor-theme-select/core-editor-theme-select.php +19 -0
  616. package/components/fields-core-font-modifiers/core-font-modifiers.php +46 -0
  617. package/components/fields-core-font-modifiers/group_65abf0fc06efd.json +489 -0
  618. package/components/fields-core-functions/core-functions.scss +111 -0
  619. package/components/fields-core-generic/core-generic.scss +132 -0
  620. package/components/fields-core-gradient-designer/core-gradient-designer.scss +92 -0
  621. package/components/fields-core-mixins/core-mixins.scss +1076 -0
  622. package/components/fields-core-root-variables/core-root-variables.scss +48 -0
  623. package/components/fields-core-themes/core-themes.php +65 -0
  624. package/components/fields-core-typography/core-typography.php +194 -0
  625. package/components/fields-core-typography/core-typography.scss +384 -0
  626. package/components/fields-core-wordpress-block-editor-preview/core-wordpress-block-editor-preview.js +121 -0
  627. package/components/fields-core-wordpress-block-editor-preview/core-wordpress-block-editor-preview.scss +101 -0
  628. package/components/fields-cover-link/cover-link.scss +11 -0
  629. package/components/fields-cover-link/cover-link.twig +4 -0
  630. package/components/fields-cta-icon-map/cta-icon-map.php +11 -0
  631. package/components/fields-cta-icons/group_677ed96c3c64f.json +677 -0
  632. package/components/fields-cta-styles/group_65abe1a526214.json +3238 -0
  633. package/components/fields-cta-styles-ui-page/ui_options_page_66000817bcbaf.json +22 -0
  634. package/components/fields-data-enables/data-enables.twig +21 -0
  635. package/components/fields-debrain-label-shop/group_63dd19dc3ba18.json +271 -0
  636. package/components/fields-default-theme/group_663c9818d16ea.json +79 -0
  637. package/components/fields-design-system/group_63e7fd39c8e35.json +966 -0
  638. package/components/fields-dynamic-critical-css/dynamic-critical-css.php +113 -0
  639. package/components/fields-dynamic-critical-css/group_65abcd463e8d0.json +126 -0
  640. package/components/fields-dynamic-image-preload/group_665f1f240337a.json +56 -0
  641. package/components/fields-e-shop-settings/e-shop-settings.twig +69 -0
  642. package/components/fields-e-shop-settings/group_650b24b4e623d.json +702 -0
  643. package/components/fields-get-asset-uri/get-asset-uri.php +36 -0
  644. package/components/fields-get-pattern/get-pattern.php +639 -0
  645. package/components/fields-get-raw-svg/get_raw_svg.php +24 -0
  646. package/components/fields-get-svg-icon-content/get-svg-icon-content.php +10 -0
  647. package/components/fields-global-images/group_6519888a76006.json +121 -0
  648. package/components/fields-global-preload/global-preload.twig +18 -0
  649. package/components/fields-global-preload/group_65e0bd35e781b.json +289 -0
  650. package/components/fields-global-settings/ui_options_page_65d2558ee2392.json +22 -0
  651. package/components/fields-grid-gap-mults/grid-gap-mults.twig +10 -0
  652. package/components/fields-header-and-footer-patterns/group_67224e439992d.json +107 -0
  653. package/components/fields-image-management-service/group_677813165b633.json +149 -0
  654. package/components/fields-image-sizes/image-sizes.php +24 -0
  655. package/components/fields-imagekit-configuration/imagekit-configuration.php +250 -0
  656. package/components/fields-inline-css-file/inline-css-file.php +24 -0
  657. package/components/fields-library-images/blue-brick.svg +19 -0
  658. package/components/fields-library-images/brick.svg +19 -0
  659. package/components/fields-library-images/chevron-library.svg +3 -0
  660. package/components/fields-library-images/green-brick.svg +19 -0
  661. package/components/fields-market-settings-ui-page/ui_options_page_65d4926a854a9.json +22 -0
  662. package/components/fields-noscript/noscript.twig +11 -0
  663. package/components/fields-notes/group_66573c9838918.json +55 -0
  664. package/components/fields-pantheon-page-cache-config/pantheon-page-cache-config.php +61 -0
  665. package/components/fields-people/group_6525b74551434.json +179 -0
  666. package/components/fields-post-info/group_64c29bf97fba2.json +963 -0
  667. package/components/fields-preload/preload.twig +2 -0
  668. package/components/fields-product-info/group_64c29a6750b1c.json +501 -0
  669. package/components/fields-registers-menus/registers-menus.php +18 -0
  670. package/components/fields-reservebar-popup/reservebar-popup.js +44 -0
  671. package/components/fields-reservebar-popup/reservebar-popup.scss +33 -0
  672. package/components/fields-site-copyright-notice/group_66317dcfcb01a.json +78 -0
  673. package/components/fields-site-logos/group_67b50a5b01f1d.json +120 -0
  674. package/components/fields-site-menus/site-menus.php +19 -0
  675. package/components/fields-text-style/group_6509a986674f1.json +328 -0
  676. package/components/fields-text-style/text-style.twig +14 -0
  677. package/components/fields-theme-attribute/core-theme-attribute.twig +15 -0
  678. package/components/fields-theme-font-select/group_64e627319dd51.json +68 -0
  679. package/components/fields-themes/group_65ac3c7583bdf.json +1086 -0
  680. package/components/fields-themes-ui-page/ui_options_page_660007a245fa0.json +22 -0
  681. package/components/fields-twig-filters-functions/twig-filters-functions.php +321 -0
  682. package/components/fields-typography-settings/group_657438bf04b09.json +5668 -0
  683. package/components/fields-typography-ui-page/ui_options_page_65ff1174bed38.json +22 -0
  684. package/components/fields-upload-file-size-limit/upload-file-size-limit.php +36 -0
  685. package/components/fields-upload-filesize-limit/group_659d259760a1d.json +56 -0
  686. package/components/fields-video-management-services/group_67b4cac05cb30.json +144 -0
  687. package/components/fields-wysiwyg-add-content-tooltip/wysiwyg-add-content-tooltip.php +45 -0
  688. package/components/security-password-protected/password-protected.php +25 -0
  689. package/createJsAssets.js +31 -0
  690. package/createNewBlock.js +163 -0
  691. package/createNewChildBlock.js +76 -0
  692. package/duplicateBlock.js +215 -0
  693. package/esbuild.mjs +18 -0
  694. package/exportAllBlocks.js +121 -0
  695. package/exportBlock.js +109 -0
  696. package/exportChildBlock.js +102 -0
  697. package/exportCustomCachesToLibrary.js +73 -0
  698. package/exportEntrypointToLibrary.js +62 -0
  699. package/exportImagesToLibrary.js +68 -0
  700. package/exportSEOExtrasToLibrary.js +73 -0
  701. package/exportToLibrary.js +437 -0
  702. package/fields.json +4 -0
  703. package/importBlock.js +90 -0
  704. package/importChildBlock.js +76 -0
  705. package/index.js +0 -0
  706. package/install-component.js +206 -0
  707. package/list-components.js +9 -0
  708. package/new-block-templates/template-acf-pattern.js +25 -0
  709. package/new-block-templates/template-acf.js +19 -0
  710. package/new-block-templates/template-cypress.js +9 -0
  711. package/new-block-templates/template-default.js +31 -0
  712. package/new-block-templates/template-swiper.js +127 -0
  713. package/new-block-templates/template-vue.js +59 -0
  714. package/package.json +32 -0
  715. package/public/.gitkeep +0 -0
  716. package/public/block-back-to-top-button/back-to-top-button.js +15 -0
  717. package/public/block-divider/divider.js +10 -0
  718. package/update-all-components.js +134 -0
  719. package/update-component.js +543 -0
@@ -0,0 +1,34 @@
1
+ # This workflow will run tests using node and then publish a package to NPM when a release is created
2
+ # For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages
3
+
4
+ name: Node.js Package
5
+
6
+ on:
7
+ release:
8
+ types: [created]
9
+ branches:
10
+ - master
11
+
12
+ jobs:
13
+ build:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v2
17
+ - uses: actions/setup-node@v2
18
+ with:
19
+ node-version: 16
20
+ - run: npm ci
21
+
22
+ publish-npm:
23
+ needs: build
24
+ runs-on: ubuntu-latest
25
+ steps:
26
+ - uses: actions/checkout@v2
27
+ - uses: actions/setup-node@v2
28
+ with:
29
+ node-version: 16
30
+ registry-url: https://registry.npmjs.org/
31
+ - run: npm ci
32
+ - run: npm publish
33
+ env:
34
+ NODE_AUTH_TOKEN: ${{secrets.npm_token}}
package/.prettierrc ADDED
@@ -0,0 +1,22 @@
1
+ {
2
+ "useTabs": true,
3
+ "overrides": [
4
+ {
5
+ "files": "*.test.js",
6
+ "options": {
7
+ "semi": true
8
+ }
9
+ },
10
+ {
11
+ "files": ["*.js", "*.css", "*.scss"],
12
+ "options": {
13
+ "useTabs": true,
14
+ "semi": true,
15
+ "singleQuote": true,
16
+ "trailingComma": "none",
17
+ "tabWidth": 4,
18
+ "bracketSpacing": false
19
+ }
20
+ }
21
+ ]
22
+ }
package/README.md ADDED
@@ -0,0 +1,33 @@
1
+ # cbl-component-library
2
+
3
+ Front end components for gcms sites
4
+
5
+ ## Installation
6
+
7
+ Install with npm or yarn..
8
+
9
+ `npm install --save-dev @pernod-ricard-global-cms/cbl-component-library`
10
+
11
+ `yarn add -D @pernod-ricard-global-cms/cbl-component-library`
12
+
13
+ If you don't have the scripts already in your package.json you can add these and use them to install and update components.
14
+
15
+ `"install-component": "node ./node_modules/@pernod-ricard-global-cms/cbl-component-library/install-component.js", "upgrade-component": "node ./node_modules/@pernod-ricard-global-cms/cbl-component-library/upgrade-component.js", "list-components": "node ./node_modules/@pernod-ricard-global-cms/cbl-component-library/list-components.js",`
16
+
17
+ eg you can list the available components with
18
+
19
+ `yarn list-components`
20
+
21
+ and then you can install and component with
22
+
23
+ `yarn install-component <name-of-component>`
24
+
25
+ ## Run unit tests
26
+
27
+ Go to the folder
28
+
29
+ `yarn install`
30
+
31
+ then, to run unit tests,
32
+
33
+ `yarn test`
@@ -0,0 +1,94 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+ const { promisify } = require('util');
4
+
5
+ // Import the function to be tested
6
+ const updateComponent = require('../update-component');
7
+
8
+ // Promisify the fs functions used in the copyBlockComponent function
9
+ const readdirPromisified = promisify(fs.readdir);
10
+ const accessPromisified = promisify(fs.access);
11
+
12
+ // Create a utility function to remove the file (used after each test)
13
+ const removeFile = async (filePath) => {
14
+ try {
15
+ await fs.promises.unlink(filePath);
16
+ } catch (err) {
17
+ // If the file doesn't exist, ignore the error
18
+ if (err.code !== 'ENOENT') {
19
+ console.error('Error removing the file:', err);
20
+ }
21
+ }
22
+ };
23
+
24
+ xdescribe('copyBlockComponent function', () => {
25
+ const libraryPath = 'testFiles/library'; // Assuming the libraryPath is defined for the tests
26
+ const componentName = 'TestComponent';
27
+
28
+ // Before each test, create the source directory with some test files
29
+ beforeEach(async () => {
30
+ try {
31
+ const sourceDir = path.join(libraryPath, 'components', componentName);
32
+ await fs.promises.mkdir(sourceDir, { recursive: true });
33
+ await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.php'), 'Test PHP content');
34
+ await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.js'), 'Test JS content');
35
+ await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.scss'), 'Test SCSS content');
36
+ await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.json'), 'Test JSON content');
37
+ await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.twig'), 'Test Twig content');
38
+ await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.vue'), 'Test Vue content');
39
+ await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.extra'), 'Test Extra content');
40
+ await fs.promises.writeFile(path.join(sourceDir, 'TestComponent.spec'), 'Test Spec content');
41
+ } catch (err) {
42
+ console.error('Error creating the source directory:', err);
43
+ }
44
+ });
45
+
46
+ // After each test, remove the source and destination files
47
+ afterEach(async () => {
48
+ try {
49
+ const sourceDir = path.join(libraryPath, 'components', componentName);
50
+ await fs.promises.rmdir(sourceDir, { recursive: true });
51
+ await removeFile('./inc/acf-blocks/TestComponent.php');
52
+ await removeFile('./assets/js/blocks/TestComponent.js');
53
+ await removeFile('./assets/scss/blocks/TestComponent.scss');
54
+ await removeFile('./acf-json/TestComponent.json');
55
+ await removeFile('./views/blocks/TestComponent.twig');
56
+ await removeFile('./assets/vue/blocks/TestComponent.vue');
57
+ await removeFile('./assets/scss/blocks/TestComponent/TestComponent.extra');
58
+ } catch (err) {
59
+ console.error('Error cleaning up the test files:', err);
60
+ }
61
+ });
62
+
63
+ it('should copy files from source to destination based on the file types', async () => {
64
+ // Call the function to be tested
65
+ await updateComponent.copyBlockComponent(componentName);
66
+
67
+ // Assert that the destination files exist for each file type
68
+ const destinationFiles = [
69
+ './inc/acf-blocks/TestComponent.php',
70
+ './assets/js/blocks/TestComponent.js',
71
+ './assets/scss/blocks/TestComponent.scss',
72
+ './acf-json/TestComponent.json',
73
+ './views/blocks/TestComponent.twig',
74
+ './assets/vue/blocks/TestComponent.vue',
75
+ './assets/scss/blocks/TestComponent/TestComponent.extra',
76
+ ];
77
+
78
+ for (const filePath of destinationFiles) {
79
+ const fileExists = await accessPromisified(filePath)
80
+ .then(() => true)
81
+ .catch(() => false);
82
+ expect(fileExists).toBe(true);
83
+ }
84
+
85
+ // Assert that the destination files contain the same content as the source files
86
+ const sourceDir = path.join(libraryPath, 'components', componentName);
87
+ const fileTypes = ['php', 'js', 'scss', 'json', 'twig', 'vue', 'extra'];
88
+ for (const fileType of fileTypes) {
89
+ const sourceContent = await fs.promises.readFile(path.join(sourceDir, `TestComponent.${fileType}`), 'utf-8');
90
+ const destinationContent = await fs.promises.readFile(path.join(`./${fileType === 'extra' ? 'assets/scss/blocks/TestComponent' : fileType}s/TestComponent.${fileType}`), 'utf-8');
91
+ expect(destinationContent).toBe(sourceContent);
92
+ }
93
+ });
94
+ });
@@ -0,0 +1,78 @@
1
+ 'use strict';
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const updateComponent = require('../update-component');
6
+
7
+
8
+ describe('copyFile function', () => {
9
+ const sourceFilePath = './__spec__/files/source.txt';
10
+ const destinationFilePath = './__spec__/files/destination.txt';
11
+
12
+ // Helper function to delete a file if it exists
13
+ const deleteFileIfExists = (filePath) => {
14
+ if (fs.existsSync(filePath)) {
15
+ fs.unlinkSync(destinationFilePath);
16
+ }
17
+ };
18
+
19
+ beforeEach(() => {
20
+ deleteFileIfExists(destinationFilePath);
21
+ jest.resetModules();
22
+ jest.clearAllMocks();
23
+ });
24
+ afterEach(() => {
25
+ deleteFileIfExists(destinationFilePath);
26
+ });
27
+
28
+
29
+ // Test case 1: Ensure the file is copied when destination does not exists
30
+ test('copies file if it does not exist', async () => {
31
+ await updateComponent.copyFile(sourceFilePath, destinationFilePath);
32
+
33
+ // Wait for a short delay to allow the asynchronous operation to complete
34
+ await new Promise((resolve) => setTimeout(resolve, 150)); // Adjust the delay time as needed
35
+
36
+ expect(fs.existsSync(destinationFilePath)).toBe(true);
37
+ });
38
+
39
+ // Test case 2: Ensure the file is copied even if the destination exists
40
+ test('overwrite file when destination file already exists', async () => {
41
+ // Create a dummy destination file to simulate an existing file
42
+ fs.writeFileSync(destinationFilePath, 'Dummy content Newer');
43
+
44
+ await updateComponent.copyFile(sourceFilePath, destinationFilePath);
45
+ // Wait for a short delay to allow the asynchronous operation to complete
46
+ await new Promise((resolve) => setTimeout(resolve, 50)); // Adjust the delay time as needed
47
+
48
+ // Assert that the destination file still exists after the function call
49
+ expect(fs.existsSync(destinationFilePath)).toBe(true);
50
+
51
+ // get file content
52
+ const destinationContent = fs.readFileSync(destinationFilePath, 'utf8');
53
+
54
+ // content should be
55
+ expect(destinationContent).toBe('Dummy content');
56
+ });
57
+
58
+ // Test case 3: Ensure the function handles errors properly
59
+ test('handles errors when copying the file', async () => {
60
+ // Create a dummy destination file to simulate an existing file
61
+ // fs.writeFileSync(destinationFilePath, 'Dummy content');
62
+ const sourceFilePath = './__spec__/nonexistent_source.txt';
63
+
64
+ // Ensure that console.error is called with the error message
65
+ const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
66
+
67
+ await updateComponent.copyFileKeeping(sourceFilePath, destinationFilePath);
68
+ // Wait for a short delay to allow the asynchronous operation to complete
69
+ await new Promise((resolve) => setTimeout(resolve, 50)); // Adjust the delay time as needed
70
+
71
+ // Assert that console.error was called with the expected error message
72
+ expect(consoleErrorSpy).toHaveBeenCalled();
73
+
74
+ // Restore the original console.error function
75
+ consoleErrorSpy.mockRestore();
76
+ });
77
+
78
+ });
@@ -0,0 +1,74 @@
1
+ 'use strict';
2
+
3
+ const fs = require('fs');
4
+ // const path = require('path');
5
+ const updateComponent = require('../update-component');
6
+
7
+ describe('copyFileKeeping', () => {
8
+ const sourceFilePath = './__spec__/files/source.txt';
9
+ const destinationFilePath = './__spec__/files/destination.txt';
10
+
11
+ // Helper function to delete a file if it exists
12
+ const deleteFileIfExists = (filePath) => {
13
+ if (fs.existsSync(filePath)) {
14
+ fs.unlinkSync(destinationFilePath);
15
+ }
16
+ };
17
+
18
+ beforeEach(() => {
19
+ deleteFileIfExists(destinationFilePath);
20
+ jest.resetModules();
21
+ jest.clearAllMocks();
22
+ });
23
+ afterEach(() => {
24
+ deleteFileIfExists(destinationFilePath);
25
+ });
26
+
27
+ // Test case 1: Ensure the file is copied when destination does not exists
28
+ test('copies file if it does not exist', async () => {
29
+ await updateComponent.copyFileKeeping(sourceFilePath, destinationFilePath);
30
+
31
+ // Wait for a short delay to allow the asynchronous operation to complete
32
+ await new Promise((resolve) => setTimeout(resolve, 50)); // Adjust the delay time as needed
33
+
34
+ expect(fs.existsSync(destinationFilePath)).toBe(true);
35
+ });
36
+
37
+ // Test case 2: Ensure the file is NOT copied when destination exists
38
+ test('copies file when destination file already exists', async () => {
39
+ // Create a dummy destination file to simulate an existing file
40
+ fs.writeFileSync(destinationFilePath, 'Dummy content Newer');
41
+
42
+ await updateComponent.copyFileKeeping(sourceFilePath, destinationFilePath);
43
+ // Wait for a short delay to allow the asynchronous operation to complete
44
+ await new Promise((resolve) => setTimeout(resolve, 50)); // Adjust the delay time as needed
45
+
46
+ // Assert that the destination file still exists after the function call
47
+ expect(fs.existsSync(destinationFilePath)).toBe(true);
48
+
49
+ // get file content
50
+ const destinationContent = fs.readFileSync(destinationFilePath, 'utf8');
51
+
52
+ expect(destinationContent).toBe('Dummy content Newer');
53
+ });
54
+
55
+ // Test case 3: Ensure the function handles errors properly
56
+ test('handles errors when copying the file', async () => {
57
+ // Create a dummy destination file to simulate an existing file
58
+ // fs.writeFileSync(destinationFilePath, 'Dummy content');
59
+ const sourceFilePath = './__spec__/nonexistent_source.txt';
60
+
61
+ // Ensure that console.error is called with the error message
62
+ const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
63
+
64
+ await updateComponent.copyFileKeeping(sourceFilePath, destinationFilePath);
65
+ // Wait for a short delay to allow the asynchronous operation to complete
66
+ await new Promise((resolve) => setTimeout(resolve, 50)); // Adjust the delay time as needed
67
+
68
+ // Assert that console.error was called with the expected error message
69
+ expect(consoleErrorSpy).toHaveBeenCalled();
70
+
71
+ // Restore the original console.error function
72
+ consoleErrorSpy.mockRestore();
73
+ });
74
+ });
@@ -0,0 +1 @@
1
+ Dummy content
@@ -0,0 +1,99 @@
1
+ 'use strict';
2
+
3
+ const glob = require('glob');
4
+ const fs = jest.mock('fs');
5
+ const updateAllComponents = require('../update-all-components');
6
+
7
+ describe('getComponentsList', () => {
8
+ afterEach(() => {
9
+ jest.resetModules(); // Reset all mocked modules after each test
10
+ });
11
+
12
+ it('returns the correct components list when project-components-list.json is found', () => {
13
+ const projectComponentsList = {
14
+ "block": [
15
+ "accordion",
16
+ "standard-content-v2"
17
+ ],
18
+ "fields": [
19
+ "video-standard",
20
+ "responsive-show-hide"
21
+ ],
22
+ "admin": [
23
+ "filter-pages-by-block",
24
+ "resizable-editor-sidebar"
25
+ ]
26
+ };
27
+
28
+ jest.mock('fs', () => ({
29
+ existsSync: jest.fn().mockReturnValue(true),
30
+ readFileSync: jest
31
+ .fn()
32
+ .mockReturnValue(JSON.stringify(projectComponentsList)),
33
+ }));
34
+
35
+ const result = updateAllComponents.getComponentsList();
36
+
37
+ // random order
38
+ result.map(m => expect([
39
+ "block-accordion",
40
+ "block-standard-content-v2",
41
+
42
+ "admin-core-mixins",
43
+ "admin-core-design-system",
44
+ "admin-core-generic",
45
+ "admin-core-critical",
46
+ "admin-core-functions",
47
+
48
+ "admin-filter-pages-by-block",
49
+ "admin-resizable-editor-sidebar",
50
+ "fields-video-standard",
51
+ "fields-responsive-show-hide",
52
+
53
+ "admin-core-cta",
54
+ "admin-core-root-variables",
55
+ "admin-core-css-sizing-vars",
56
+ "admin-core-colour-data-config",
57
+ "admin-core-wordpress-block-editor-preview",
58
+ "admin-core-editor-cta-style-select",
59
+ "admin-core-gradient-designer",
60
+ "admin-core-typography",
61
+ ]).toContain(m));
62
+ });
63
+
64
+ it('returns the correct components list when project-components-list.json is not found', () => {
65
+ jest.mock('fs', () => ({
66
+ existsSync: jest.fn().mockReturnValue(false), // Simulate 'project-components-list.json' not existing
67
+ }));
68
+
69
+ jest.mock('glob', () => ({
70
+ // mock components in the filesystem
71
+ sync: jest.fn().mockReturnValue([
72
+ `./node_modules/@pernod-ricard-global-cms/cbl-component-library/components/component1`,
73
+ `./node_modules/@pernod-ricard-global-cms/cbl-component-library/components/component2`,
74
+ ]),
75
+ }));
76
+ const result = updateAllComponents.getComponentsList();
77
+
78
+ // random order
79
+ result.map(m => expect([
80
+ "admin-core-mixins",
81
+ "admin-core-design-system",
82
+ "admin-core-generic",
83
+ "admin-core-critical",
84
+ "admin-core-functions",
85
+
86
+ "component1",
87
+ "component2",
88
+
89
+ "admin-core-cta",
90
+ "admin-core-root-variables",
91
+ "admin-core-css-sizing-vars",
92
+ "admin-core-colour-data-config",
93
+ "admin-core-wordpress-block-editor-preview",
94
+ "admin-core-editor-cta-style-select",
95
+ "admin-core-gradient-designer",
96
+ "admin-core-typography",
97
+ ]).toContain(m));
98
+ });
99
+ });
@@ -0,0 +1,165 @@
1
+ 'use strict';
2
+
3
+ // const glob = require('glob');
4
+ const fs = require('fs');
5
+ // const fse = require("fs-extra");
6
+
7
+ // const path = require('path');
8
+ const updateComponent = require('../update-component');
9
+
10
+ jest.mock('fs');
11
+
12
+ describe('getExtension', () => {
13
+ test('Check getExtension js', () => {
14
+ const result = updateComponent.getExtension('testing.js')
15
+ expect(result).toBe('js');
16
+ });
17
+
18
+ test('Check getExtension spec.js', () => {
19
+ const result = updateComponent.getExtension('testing.spec.js')
20
+ expect(result).toBe('js');
21
+ });
22
+ });
23
+
24
+ describe('getFileType function', () => {
25
+ it('should return "extra" for filenames ending with "-extra.scss"', () => {
26
+ const result = updateComponent.getFileType('styles-extra.scss');
27
+ expect(result).toBe('extra');
28
+ });
29
+
30
+ it('should return "spec" for filenames ending with "spec.js"', () => {
31
+ const result = updateComponent.getFileType('test.spec.js');
32
+ expect(result).toBe('spec');
33
+ });
34
+
35
+ it('should return the correct file extension for other filenames', () => {
36
+ const result = updateComponent.getFileType('script.js');
37
+ expect(result).toBe('js');
38
+ });
39
+
40
+ it('should return an empty string for filenames without extensions', () => {
41
+ const result = updateComponent.getFileType('README');
42
+ expect(result).toBe('');
43
+ });
44
+ });
45
+
46
+ describe('checkFolder function', () => {
47
+ beforeEach(() => {
48
+ jest.resetModules();
49
+ jest.clearAllMocks();
50
+ });
51
+
52
+ it('should return true for an existing directory', () => {
53
+ // Mocking fs.existsSync to return true
54
+ fs.existsSync.mockReturnValue(true);
55
+ // Mocking fs.statSync to return an object with isDirectory function returning true
56
+ fs.statSync.mockReturnValue({ isDirectory: () => true });
57
+
58
+ const result = updateComponent.checkFolder('/path/to/existing/folder');
59
+ expect(result).toBe(true);
60
+ // Ensure that the fs.existsSync function was called with the correct argument
61
+ expect(fs.existsSync).toHaveBeenCalledWith('/path/to/existing/folder');
62
+ // Ensure that the fs.statSync function was called with the correct argument
63
+ expect(fs.statSync).toHaveBeenCalledWith('/path/to/existing/folder');
64
+ });
65
+
66
+ it('should return false for a non-existing directory', () => {
67
+ // Mocking fs.existsSync to return false
68
+ fs.existsSync.mockReturnValue(false);
69
+
70
+ const result = updateComponent.checkFolder('/path/to/non_existing/folder');
71
+ expect(result).toBe(false);
72
+ // Ensure that the fs.existsSync function was called with the correct argument
73
+ expect(fs.existsSync).toHaveBeenCalledWith('/path/to/non_existing/folder');
74
+ // Ensure that the fs.statSync function was not called (since the folder does not exist)
75
+ expect(fs.statSync).not.toHaveBeenCalled();
76
+ });
77
+
78
+ it('should return false for an existing file (not a directory)', () => {
79
+ // Mocking fs.existsSync to return true
80
+ fs.existsSync.mockReturnValue(true);
81
+ // Mocking fs.statSync to return an object with isDirectory function returning false
82
+ fs.statSync.mockReturnValue({ isDirectory: () => false });
83
+
84
+ const result = updateComponent.checkFolder('/path/to/existing/file');
85
+ expect(result).toBe(false);
86
+ // Ensure that the fs.existsSync function was called with the correct argument
87
+ expect(fs.existsSync).toHaveBeenCalledWith('/path/to/existing/file');
88
+ // Ensure that the fs.statSync function was called with the correct argument
89
+ expect(fs.statSync).toHaveBeenCalledWith('/path/to/existing/file');
90
+ });
91
+ });
92
+
93
+ describe('getProjectName function', () => {
94
+ beforeEach(() => {
95
+ jest.resetModules();
96
+ });
97
+
98
+ test('should return the project name from package.json', () => {
99
+ const projectName = 'Your Project Name';
100
+ const packageJson = {
101
+ name: projectName
102
+ };
103
+ fs.readFileSync.mockReturnValue(JSON.stringify(packageJson));
104
+ const result = updateComponent.getProjectName();
105
+ expect(result).toBe(projectName);
106
+ });
107
+
108
+ test('should capitalize the project name if it does not start with "the"', () => {
109
+ const projectName = 'your project name';
110
+ const packageJson = {
111
+ name: projectName
112
+ };
113
+ fs.readFileSync.mockReturnValue(JSON.stringify(packageJson));
114
+ const result = updateComponent.getProjectName();
115
+ expect(result).toBe('Your project name');
116
+ });
117
+
118
+ test('should capitalize and prepend "The" to the project name if it starts with "the"', () => {
119
+ const projectName = 'theglenlivet';
120
+ const packageJson = {
121
+ name: projectName
122
+ };
123
+ fs.readFileSync.mockReturnValue(JSON.stringify(packageJson));
124
+ const result = updateComponent.getProjectName();
125
+ expect(result).toBe('The Glenlivet');
126
+ });
127
+
128
+ test('should return default project name if package.json is not found', () => {
129
+ fs.readFileSync.mockImplementation(() => {
130
+ throw new Error('File not found');
131
+ });
132
+ // Ensure that console.error is called with the error message
133
+ const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
134
+
135
+ const result = updateComponent.getProjectName();
136
+ expect(result).toBe('Global Theme');
137
+ // Assert that console.error was called with the expected error message
138
+ expect(consoleErrorSpy).toHaveBeenCalled();
139
+ });
140
+ });
141
+
142
+ describe('getFileType function', () => {
143
+ it('should return "extra" for filenames ending with "-extra.scss"', () => {
144
+ const filename = 'style-extra.scss';
145
+ expect(updateComponent.getFileType(filename)).toBe('extra');
146
+ });
147
+
148
+ it('should return "spec" for filenames ending with "spec.js"', () => {
149
+ const filename = 'test.spec.js';
150
+ expect(updateComponent.getFileType(filename)).toBe('spec');
151
+ });
152
+
153
+ it('should call getExtension for other filenames', () => {
154
+ const addSpy = jest.spyOn(updateComponent, 'getExtension');
155
+ // console.log(addSpy)
156
+ // return
157
+ const filename = 'example.txt';
158
+ const result = updateComponent.getFileType(filename);
159
+ // expect(addSpy).toHaveBeenCalledWith(filename);
160
+ expect(result).toBe('txt');
161
+
162
+ // Don't forget to restore the original 'add' function after the test
163
+ addSpy.mockRestore();
164
+ });
165
+ });
@@ -0,0 +1,81 @@
1
+ <?php
2
+ // Do not edit this file outside of the component library as otherwise your changes will be lost with future updates.
3
+
4
+ /**
5
+ * Adds a dropdown to the admin panel for filtering pages by blocks used on the page.
6
+ *
7
+ * @package Global Theme
8
+ */
9
+
10
+ /**
11
+ * Register 'block' as a query variable.
12
+ *
13
+ * @param array $vars The existing query variables.
14
+ * @return array The modified query variables.
15
+ */
16
+ function register_search_block_query_var( $vars ) {
17
+ $vars[] = 'block';
18
+ return $vars;
19
+ }
20
+ add_filter( 'query_vars', 'register_search_block_query_var' );
21
+
22
+ /**
23
+ * Add a block types filter dropdown to the admin post list table.
24
+ *
25
+ * @param string $post_type The current post type.
26
+ */
27
+ function add_block_types_filter_dropdown( $post_type ) {
28
+ // Check if block editor is used for the post type
29
+ if ( ! use_block_editor_for_post_type( $post_type ) ) {
30
+ return;
31
+ }
32
+
33
+ // Get all registered block types
34
+ $block_types = \WP_Block_Type_Registry::get_instance()->get_all_registered();
35
+
36
+ $options = array_reduce(
37
+ $block_types,
38
+ function ( $options, $block_type ) {
39
+ // Generate option value based on block type name
40
+ $val = '<!-- wp:' . str_replace( 'core/', '', $block_type->name ) . ' ';
41
+
42
+ // Generate option HTML with selected attribute if it matches the current block query
43
+ $option_html = sprintf(
44
+ '<option value="%s" %s>%s</option>',
45
+ esc_attr( $val ),
46
+ selected( get_query_var( 'block' ), $val, false ),
47
+ esc_html( $block_type->title ? $block_type->title : $block_type->name )
48
+ );
49
+
50
+ // Append the option HTML to the options string
51
+ return $options . $option_html;
52
+ },
53
+ ''
54
+ );
55
+
56
+ // Output the block filter dropdown
57
+ echo '<select name="block"><option value="">' . esc_html( __( 'All Block Types', 'Global Theme' ) ) . '</option>' . wp_kses( $options, array( 'option' => array( 'value' => array() ) ) ) . '</select>';
58
+ }
59
+ add_action( 'restrict_manage_posts', 'add_block_types_filter_dropdown' );
60
+
61
+ /**
62
+ * Modify the main query before it runs.
63
+ *
64
+ * @param WP_Query $query The WP_Query instance.
65
+ */
66
+ function modify_search_query_for_block( $query ) {
67
+ // Check if we're in the admin area, main query, and performing a search
68
+ if ( is_admin() && $query->is_main_query() && $query->is_search() ) {
69
+ // Get the block query variable and URL decode.
70
+ $block_query_input = urldecode( get_query_var( 'block' ) );
71
+ // Sanitize block query input.
72
+ $block_query = str_replace( '&lt;', '<', sanitize_text_field( $block_query_input ) );
73
+
74
+ // Check if the block query variable contains a block pattern
75
+ if ( strpos( $block_query, '<!-- wp:' ) !== false ) {
76
+ // Modify the search query to search for the block pattern in the post content
77
+ $query->set( 's', $block_query );
78
+ }
79
+ }
80
+ }
81
+ add_action( 'pre_get_posts', 'modify_search_query_for_block' );