@total_onion/onion-library 3.2.0 → 3.2.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 (525) hide show
  1. package/.github/workflows/npm-publish.yml +38 -0
  2. package/.prettierrc +22 -0
  3. package/__spec__/copyBlockComponent.spec.js +94 -0
  4. package/__spec__/copyFile.spec.js +78 -0
  5. package/__spec__/copyFileKeeping.spec.js +74 -0
  6. package/__spec__/files/source.txt +1 -0
  7. package/__spec__/update-all-components.spec.js +99 -0
  8. package/__spec__/update-component.spec.js +165 -0
  9. package/assembleAssetList.js +69 -0
  10. package/breakpoints.scss +6 -0
  11. package/build-library.js +4 -0
  12. package/checkBuildAssets.js +17 -0
  13. package/components/block-accent-image-v3/accent-image-v3.js +7 -0
  14. package/components/block-accent-image-v3/accent-image-v3.scss +4 -0
  15. package/components/block-accent-image-v3/accent-image-v3.twig +137 -0
  16. package/components/block-accent-image-v3/group_6890e1233ff2d.json +81 -0
  17. package/components/block-accordion-v3/accordion-v3.js +119 -0
  18. package/components/block-accordion-v3/accordion-v3.scss +197 -0
  19. package/components/block-accordion-v3/accordion-v3.twig +51 -0
  20. package/components/block-accordion-v3/group_6888d2f0b230b.json +458 -0
  21. package/components/block-back-to-top-button-v3/back-to-top-button-v3.js +12 -0
  22. package/components/block-back-to-top-button-v3/back-to-top-button-v3.scss +68 -0
  23. package/components/block-back-to-top-button-v3/back-to-top-button-v3.twig +40 -0
  24. package/components/block-back-to-top-button-v3/group_63e24e04a1e61.json +323 -0
  25. package/components/block-betterreviews-display-v3/betterreviews-display-v3.js +10 -0
  26. package/components/block-betterreviews-display-v3/betterreviews-display-v3.scss +104 -0
  27. package/components/block-betterreviews-display-v3/betterreviews-display-v3.twig +24 -0
  28. package/components/block-betterreviews-display-v3/group_6892880fc1a00.json +182 -0
  29. package/components/block-block-interactions-v3/block-interactions-v3.js +53 -0
  30. package/components/block-block-interactions-v3/block-interactions-v3.scss +32 -0
  31. package/components/block-block-interactions-v3/block-interactions-v3.twig +55 -0
  32. package/components/block-block-interactions-v3/group_687e1575ba23d.json +700 -0
  33. package/components/block-carousel-multi-layout-v3/carousel-multi-layout-v3.js +243 -0
  34. package/components/block-carousel-multi-layout-v3/carousel-multi-layout-v3.scss +156 -0
  35. package/components/block-carousel-multi-layout-v3/carousel-multi-layout-v3.twig +146 -0
  36. package/components/block-carousel-multi-layout-v3/group_686bd42e551d6.json +578 -0
  37. package/components/block-cocktail-recipe-v3/cocktail-recipe-v3.js +127 -0
  38. package/components/block-cocktail-recipe-v3/cocktail-recipe-v3.scss +345 -0
  39. package/components/block-cocktail-recipe-v3/cocktail-recipe-v3.twig +93 -0
  40. package/components/block-cocktail-recipe-v3/group_68fff19fa4dd0.json +202 -0
  41. package/components/block-cover-link-v3/cover-link-v3.js +7 -0
  42. package/components/block-cover-link-v3/cover-link-v3.scss +10 -0
  43. package/components/block-cover-link-v3/cover-link-v3.twig +16 -0
  44. package/components/block-cover-link-v3/group_687192c28b7eb.json +96 -0
  45. package/components/block-divider-v3/divider-v3.js +8 -0
  46. package/components/block-divider-v3/divider-v3.scss +103 -0
  47. package/components/block-divider-v3/divider-v3.twig +45 -0
  48. package/components/block-divider-v3/group_686b919696bfe.json +891 -0
  49. package/components/block-featured-image-gallery-v3/featured-image-gallery-v3.js +44 -0
  50. package/components/block-featured-image-gallery-v3/featured-image-gallery-v3.scss +93 -0
  51. package/components/block-featured-image-gallery-v3/featured-image-gallery-v3.twig +43 -0
  52. package/components/block-featured-image-gallery-v3/group_5f91897095b42.json +88 -0
  53. package/components/block-form-selection-v3/form-selection-v3.js +78 -0
  54. package/components/block-form-selection-v3/form-selection-v3.scss +38 -0
  55. package/components/block-form-selection-v3/form-selection-v3.twig +84 -0
  56. package/components/block-form-selection-v3/group_68752e7949e53.json +351 -0
  57. package/components/block-gradient-layer-v3/gradient-layer-v3.js +7 -0
  58. package/components/block-gradient-layer-v3/gradient-layer-v3.scss +8 -0
  59. package/components/block-gradient-layer-v3/gradient-layer-v3.twig +78 -0
  60. package/components/block-gradient-layer-v3/group_686fdadc85df4.json +206 -0
  61. package/components/block-group-container-v3/group-container-v3.js +7 -0
  62. package/components/block-group-container-v3/group-container-v3.php +14 -0
  63. package/components/block-group-container-v3/group-container-v3.scss +45 -0
  64. package/components/block-group-container-v3/group-container-v3.twig +70 -0
  65. package/components/block-group-container-v3/group_6865578ada499.json +3660 -0
  66. package/components/block-lottie-content-v3/group_687197027216d.json +177 -0
  67. package/components/block-lottie-content-v3/lottie-content-v3.js +25 -0
  68. package/components/block-lottie-content-v3/lottie-content-v3.scss +2 -0
  69. package/components/block-lottie-content-v3/lottie-content-v3.twig +15 -0
  70. package/components/block-market-selector-v3/group_68752075dd831.json +129 -0
  71. package/components/block-market-selector-v3/market-selector-v3.js +7 -0
  72. package/components/block-market-selector-v3/market-selector-v3.scss +120 -0
  73. package/components/block-market-selector-v3/market-selector-v3.twig +40 -0
  74. package/components/block-modal-form-v3/modal-form-v3.js +59 -0
  75. package/components/block-modal-form-v3/modal-form-v3.scss +6 -0
  76. package/components/block-modal-form-v3/modal-form-v3.twig +30 -0
  77. package/components/block-nav-menu-container-v3/group_687e00b45e9a3.json +187 -0
  78. package/components/block-nav-menu-container-v3/nav-menu-container-v3.js +7 -0
  79. package/components/block-nav-menu-container-v3/nav-menu-container-v3.scss +3 -0
  80. package/components/block-nav-menu-container-v3/nav-menu-container-v3.twig +23 -0
  81. package/components/block-post-info-v3/group_6866429531436.json +3112 -0
  82. package/components/block-post-info-v3/post-info-v3/bazaarvoice-inline.twig +13 -0
  83. package/components/block-post-info-v3/post-info-v3/better-reviews.twig +15 -0
  84. package/components/block-post-info-v3/post-info-v3/divider.twig +8 -0
  85. package/components/block-post-info-v3/post-info-v3/drink-description.twig +10 -0
  86. package/components/block-post-info-v3/post-info-v3/global-image.twig +22 -0
  87. package/components/block-post-info-v3/post-info-v3/gradient-layer.twig +78 -0
  88. package/components/block-post-info-v3/post-info-v3/gradient-overlay.twig +10 -0
  89. package/components/block-post-info-v3/post-info-v3/post-author.twig +17 -0
  90. package/components/block-post-info-v3/post-info-v3/post-buy-now.twig +116 -0
  91. package/components/block-post-info-v3/post-info-v3/post-categories.twig +15 -0
  92. package/components/block-post-info-v3/post-info-v3/post-headline.twig +15 -0
  93. package/components/block-post-info-v3/post-info-v3/post-image.twig +47 -0
  94. package/components/block-post-info-v3/post-info-v3/post-info-description.twig +15 -0
  95. package/components/block-post-info-v3/post-info-v3/post-info-subtitle.twig +14 -0
  96. package/components/block-post-info-v3/post-info-v3/post-link.twig +42 -0
  97. package/components/block-post-info-v3/post-info-v3/post-name.twig +12 -0
  98. package/components/block-post-info-v3/post-info-v3/post-publish-date.twig +12 -0
  99. package/components/block-post-info-v3/post-info-v3/post-tags.twig +24 -0
  100. package/components/block-post-info-v3/post-info-v3/post-text-alternative-style.twig +16 -0
  101. package/components/block-post-info-v3/post-info-v3/post-title.twig +15 -0
  102. package/components/block-post-info-v3/post-info-v3/post-video.twig +27 -0
  103. package/components/block-post-info-v3/post-info-v3/reservebar-add-to-cart.twig +32 -0
  104. package/components/block-post-info-v3/post-info-v3/shopify-add-to-cart.twig +31 -0
  105. package/components/block-post-info-v3/post-info-v3/social-networks.twig +33 -0
  106. package/components/block-post-info-v3/post-info-v3/spacer-v3.twig +9 -0
  107. package/components/block-post-info-v3/post-info-v3.js +10 -0
  108. package/components/block-post-info-v3/post-info-v3.scss +210 -0
  109. package/components/block-post-info-v3/post-info-v3.twig +67 -0
  110. package/components/block-product-info-v3/group_68909995b6550.json +3544 -0
  111. package/components/block-product-info-v3/product-info-v3/product-abv.twig +14 -0
  112. package/components/block-product-info-v3/product-info-v3/product-cask-type-label.twig +14 -0
  113. package/components/block-product-info-v3/product-info-v3/product-cask-type.twig +14 -0
  114. package/components/block-product-info-v3/product-info-v3/product-colour-label.twig +14 -0
  115. package/components/block-product-info-v3/product-info-v3/product-colour.twig +14 -0
  116. package/components/block-product-info-v3/product-info-v3/product-description.twig +14 -0
  117. package/components/block-product-info-v3/product-info-v3/product-finish-label.twig +14 -0
  118. package/components/block-product-info-v3/product-info-v3/product-finish.twig +14 -0
  119. package/components/block-product-info-v3/product-info-v3/product-headline.twig +14 -0
  120. package/components/block-product-info-v3/product-info-v3/product-image.twig +43 -0
  121. package/components/block-product-info-v3/product-info-v3/product-name.twig +14 -0
  122. package/components/block-product-info-v3/product-info-v3/product-nose-label.twig +14 -0
  123. package/components/block-product-info-v3/product-info-v3/product-nose.twig +14 -0
  124. package/components/block-product-info-v3/product-info-v3/product-pair-with-label.twig +14 -0
  125. package/components/block-product-info-v3/product-info-v3/product-pair-with.twig +14 -0
  126. package/components/block-product-info-v3/product-info-v3/product-palate-label.twig +14 -0
  127. package/components/block-product-info-v3/product-info-v3/product-palate.twig +14 -0
  128. package/components/block-product-info-v3/product-info-v3/product-taste-label.twig +14 -0
  129. package/components/block-product-info-v3/product-info-v3/product-taste.twig +14 -0
  130. package/components/block-product-info-v3/product-info-v3/product-volume.twig +14 -0
  131. package/components/block-product-info-v3/product-info-v3/spacer-v3.twig +9 -0
  132. package/components/block-product-info-v3/product-info-v3.js +7 -0
  133. package/components/block-product-info-v3/product-info-v3.scss +171 -0
  134. package/components/block-product-info-v3/product-info-v3.twig +43 -0
  135. package/components/block-raw-html-v3/group_686ba68d603a2.json +212 -0
  136. package/components/block-raw-html-v3/raw-html-v3.js +7 -0
  137. package/components/block-raw-html-v3/raw-html-v3.scss +2 -0
  138. package/components/block-raw-html-v3/raw-html-v3.twig +17 -0
  139. package/components/block-responsive-table-v3/group_6617ecc987ddd.json +394 -0
  140. package/components/block-responsive-table-v3/responsive-table-v3.js +7 -0
  141. package/components/block-responsive-table-v3/responsive-table-v3.scss +49 -0
  142. package/components/block-responsive-table-v3/responsive-table-v3.twig +47 -0
  143. package/components/block-scrolling-banner-v3/group_68e67fca1ec80.json +664 -0
  144. package/components/block-scrolling-banner-v3/scrolling-banner-v3.js +144 -0
  145. package/components/block-scrolling-banner-v3/scrolling-banner-v3.scss +104 -0
  146. package/components/block-scrolling-banner-v3/scrolling-banner-v3.twig +72 -0
  147. package/components/block-section-separator-v3/group_6874c8d79b84b.json +576 -0
  148. package/components/block-section-separator-v3/section-separator-v3.js +7 -0
  149. package/components/block-section-separator-v3/section-separator-v3.scss +42 -0
  150. package/components/block-section-separator-v3/section-separator-v3.twig +46 -0
  151. package/components/block-single-column-container-v3/group_6887640458d61.json +481 -0
  152. package/components/block-single-column-container-v3/single-column-container-v3.js +7 -0
  153. package/components/block-single-column-container-v3/single-column-container-v3.scss +14 -0
  154. package/components/block-single-column-container-v3/single-column-container-v3.twig +30 -0
  155. package/components/block-single-responsive-image-v3/group_6867bcf24c2fc.json +128 -0
  156. package/components/block-single-responsive-image-v3/single-responsive-image-v3.js +7 -0
  157. package/components/block-single-responsive-image-v3/single-responsive-image-v3.scss +9 -0
  158. package/components/block-single-responsive-image-v3/single-responsive-image-v3.twig +24 -0
  159. package/components/block-site-copyright-notice-v3/group_66296c3716b4f.json +304 -0
  160. package/components/block-site-copyright-notice-v3/index.html +33 -0
  161. package/components/block-site-copyright-notice-v3/site-copyright-notice-v3.js +58 -0
  162. package/components/block-site-copyright-notice-v3/site-copyright-notice-v3.scss +21 -0
  163. package/components/block-site-copyright-notice-v3/site-copyright-notice-v3.twig +30 -0
  164. package/components/block-site-logo-container-v3/group_687e3b887b508.json +175 -0
  165. package/components/block-site-logo-container-v3/site-logo-container-v3.js +7 -0
  166. package/components/block-site-logo-container-v3/site-logo-container-v3.scss +29 -0
  167. package/components/block-site-logo-container-v3/site-logo-container-v3.twig +40 -0
  168. package/components/block-site-title-and-tagline-v3/site-title-and-tagline-v3.js +7 -0
  169. package/components/block-site-title-and-tagline-v3/site-title-and-tagline-v3.scss +16 -0
  170. package/components/block-site-title-and-tagline-v3/site-title-and-tagline-v3.twig +24 -0
  171. package/components/block-smash-balloon-social-media-v3/smash-balloon-social-media-v3.js +8 -0
  172. package/components/block-smash-balloon-social-media-v3/smash-balloon-social-media-v3.scss +31 -0
  173. package/components/block-smash-balloon-social-media-v3/smash-balloon-social-media-v3.twig +18 -0
  174. package/components/block-social-networks-v3/group_6891d4d7db414.json +146 -0
  175. package/components/block-social-networks-v3/social-networks-v3.js +7 -0
  176. package/components/block-social-networks-v3/social-networks-v3.scss +7 -0
  177. package/components/block-social-networks-v3/social-networks-v3.twig +24 -0
  178. package/components/block-spacer-v3/group_686b8cb48c708.json +131 -0
  179. package/components/block-spacer-v3/spacer-v3.js +8 -0
  180. package/components/block-spacer-v3/spacer-v3.scss +19 -0
  181. package/components/block-spacer-v3/spacer-v3.twig +13 -0
  182. package/components/block-spotify-embed-v3/group_67d04c4c4cf78.json +120 -0
  183. package/components/block-spotify-embed-v3/spotify-embed-v3.js +7 -0
  184. package/components/block-spotify-embed-v3/spotify-embed-v3.scss +11 -0
  185. package/components/block-spotify-embed-v3/spotify-embed-v3.twig +23 -0
  186. package/components/block-standard-content-v3/group_68655756737c9.json +344 -0
  187. package/components/block-standard-content-v3/standard-content-v3.js +39 -0
  188. package/components/block-standard-content-v3/standard-content-v3.scss +11 -0
  189. package/components/block-standard-content-v3/standard-content-v3.twig +46 -0
  190. package/components/block-sticky-buy-cta-v3/group_68b061bb56543.json +172 -0
  191. package/components/block-sticky-buy-cta-v3/sticky-buy-cta-v3.js +7 -0
  192. package/components/block-sticky-buy-cta-v3/sticky-buy-cta-v3.scss +2 -0
  193. package/components/block-sticky-buy-cta-v3/sticky-buy-cta-v3.twig +92 -0
  194. package/components/block-sub-group-container-v3/group_686ceba7d6066.json +2142 -0
  195. package/components/block-sub-group-container-v3/sub-group-container-v3.js +9 -0
  196. package/components/block-sub-group-container-v3/sub-group-container-v3.scss +27 -0
  197. package/components/block-sub-group-container-v3/sub-group-container-v3.twig +59 -0
  198. package/components/block-video-content-v3/group_687190b8d26df.json +169 -0
  199. package/components/block-video-content-v3/video-content-v3.js +12 -0
  200. package/components/block-video-content-v3/video-content-v3.scss +123 -0
  201. package/components/block-video-content-v3/video-content-v3.twig +26 -0
  202. package/components/component-accent-image-v3/accent-image-v3.twig +119 -0
  203. package/components/component-accent-image-v3/group_686cd5547efd2.json +975 -0
  204. package/components/component-accent-text-v3/accent-text-v3-extra.scss +2 -0
  205. package/components/component-accent-text-v3/accent-text-v3.scss +60 -0
  206. package/components/component-accent-text-v3/group_686b91fed8f5f.json +220 -0
  207. package/components/component-accordion-v3/accordion-v3.js +113 -0
  208. package/components/component-accordion-v3/accordion-v3.scss +189 -0
  209. package/components/component-accordion-v3/accordion-v3.twig +39 -0
  210. package/components/component-accordion-v3/group_66ab7edfc6d63.json +535 -0
  211. package/components/component-animations-style-v3/animations-style-v3.twig +5 -0
  212. package/components/component-animations-v3/animations-v3.scss +161 -0
  213. package/components/component-animations-v3/animations-v3.twig +19 -0
  214. package/components/component-animations-v3/group_689f39c37980a.json +499 -0
  215. package/components/component-better-reviews-v3/better-reviews-v3.scss +137 -0
  216. package/components/component-block-padding-v3/block-padding-v3.scss +64 -0
  217. package/components/component-block-padding-v3/block-padding-v3.twig +33 -0
  218. package/components/component-block-padding-v3/group_689f66f3e26df.json +535 -0
  219. package/components/component-block-settings-v3/block-settings-v3.scss +46 -0
  220. package/components/component-block-settings-v3/block-settings-v3.twig +34 -0
  221. package/components/component-block-settings-v3/group_689f649af2ac4.json +983 -0
  222. package/components/component-blockquote-v3/blockquote-v3.scss +54 -0
  223. package/components/component-box-shadow-v3/box-shadow-v3.scss +12 -0
  224. package/components/component-buy-now-button-v3/buy-now-buttons-v3.twig +69 -0
  225. package/components/component-carousel-fields-v3/group_686fd30f4d873.json +3025 -0
  226. package/components/component-child-block-video-fields/group_6852a4f384204.json +536 -0
  227. package/components/component-content-box-settings-v3/content-box-settings-v3.scss +205 -0
  228. package/components/component-content-box-settings-v3/content-box-settings-v3.twig +156 -0
  229. package/components/component-content-box-settings-v3/group_686e6ec702acc.json +1729 -0
  230. package/components/component-content-box-v3/content-box-v3.js +6 -0
  231. package/components/component-content-box-v3/content-box-v3.scss +28 -0
  232. package/components/component-content-box-v3/content-box-v3.twig +23 -0
  233. package/components/component-content-box-v3/group_686b8a4f1fe5d.json +568 -0
  234. package/components/component-content-image-v3/content-image-v3.scss +33 -0
  235. package/components/component-content-image-v3/content-image-v3.twig +77 -0
  236. package/components/component-content-image-v3/group_68722935c428f.json +647 -0
  237. package/components/component-core-body-close-v3/core-body-close-v3.twig +2 -0
  238. package/components/component-core-body-open-v3/core-body-open-v3.twig +32 -0
  239. package/components/component-core-group-container-styles-v3/core-group-container-styles-v3.scss +48 -0
  240. package/components/component-core-head-v3/core-head-v3.twig +62 -0
  241. package/components/component-cta-selection-v3/cta-selection-v3.twig +256 -0
  242. package/components/component-cta-selection-v3/group_686e93eb832a6.json +1117 -0
  243. package/components/component-e-shop-settings-v3/e-shop-settings-v3.twig +114 -0
  244. package/components/component-element-positioning-v3/element-positioning-v3.scss +41 -0
  245. package/components/component-element-positioning-v3/element-positioning-v3.twig +42 -0
  246. package/components/component-element-positioning-v3/group_6882281544263.json +635 -0
  247. package/components/component-endpoints/endpoints.php +32 -0
  248. package/components/component-flex-layout-container-v3/flex-layout-container-v3.scss +38 -0
  249. package/components/component-flex-layout-container-v3/flex-layout-container-v3.twig +28 -0
  250. package/components/component-flex-layout-container-v3/group_6887a026bbc33.json +773 -0
  251. package/components/component-global-content-max-width-v3/global-content-max-width-v3.twig +10 -0
  252. package/components/component-global-content-max-width-v3/group_63c83de4f0a99.json +58 -0
  253. package/components/component-gradient-overlay-v3/gradient-overlay-v3.scss +43 -0
  254. package/components/component-gradient-overlay-v3/gradient-overlay-v3.twig +58 -0
  255. package/components/component-gradient-overlay-v3/group_686fd9ca50b63.json +495 -0
  256. package/components/component-grid-gap-mults-v3/grid-gap-mults-v3.twig +10 -0
  257. package/components/component-grid-gap-mults-v3/group_689221b94ce69.json +220 -0
  258. package/components/component-grid-layout-container-v3/grid-layout-container-v3.scss +154 -0
  259. package/components/component-grid-layout-container-v3/grid-layout-container-v3.twig +88 -0
  260. package/components/component-grid-layout-container-v3/group_6882282e65bf2.json +1525 -0
  261. package/components/component-grid-layout-element-v3/grid-layout-element-v3.scss +47 -0
  262. package/components/component-grid-layout-element-v3/grid-layout-element-v3.twig +23 -0
  263. package/components/component-grid-layout-element-v3/group_68822860bda9f.json +728 -0
  264. package/components/component-nav-menu-v3/group_68da703f710ff.json +432 -0
  265. package/components/component-nav-menu-v3/nav-menu-v3.scss +43 -0
  266. package/components/component-nav-menu-v3/nav-menu-v3.twig +75 -0
  267. package/components/component-responsive-image-v3/group_6867bc53f1da8.json +1515 -0
  268. package/components/component-responsive-image-v3/responsive-image-v3.scss +63 -0
  269. package/components/component-responsive-image-v3/responsive-image-v3.twig +71 -0
  270. package/components/component-responsive-picture-element-v3/responsive-picture-element-v3.twig +35 -0
  271. package/components/component-responsive-show-hide/responsive-show-hide-v3.twig +9 -0
  272. package/components/component-social-media-share-v3/social-media-share-v3-extra.scss +6 -0
  273. package/components/component-social-media-share-v3/social-media-share-v3.scss +131 -0
  274. package/components/component-social-networks-v3/social-networks-v3.scss +73 -0
  275. package/components/component-social-networks-v3/social-networks-v3.twig +43 -0
  276. package/components/component-text-editor-settings-container-classes-v3/text-editor-settings-container-classes-v3.twig +9 -0
  277. package/components/component-text-editor-settings-element-classes-v3/text-editor-settings-element-classes-v3.twig +13 -0
  278. package/components/component-text-editor-settings-v3/group_687a4e2334e37.json +1377 -0
  279. package/components/component-text-editor-settings-variables-v3/text-editor-settings-variables-v3.twig +61 -0
  280. package/components/component-video-component-v3/video-component-v3.twig +90 -0
  281. package/components/component-video-fields-v3/group_6872282f44634.json +1013 -0
  282. package/components/component-video-trigger-button-v3/video-trigger-button-v3.twig +14 -0
  283. package/components/component-wysiwyg-editor-v3/group_6867e153af466.json +127 -0
  284. package/components/component-wysiwyg-editor-v3/wysiwyg-editor-v3.twig +18 -0
  285. package/components/core-block-editor-assets-v3/core-block-editor-assets-v3.php +14 -0
  286. package/components/core-core-block-render-function-v3/core-block-render-function-v3.php +39 -0
  287. package/components/core-core-design-settings-v3/core-design-settings-v3.php +43 -0
  288. package/components/core-core-post-overrides-v3/core-post-overrides-v3.php +21 -0
  289. package/components/core-core-themes/core-themes-v3.php +68 -0
  290. package/components/core-core-typography-v3/core-typography-v3.php +239 -0
  291. package/components/core-globals/globals.php +39 -0
  292. package/components/entrypoint-entry-point-classes-v3/entry-point-classes-v3.twig +12 -0
  293. package/components/entrypoint-entry-point-html-v3/entry-point-html-v3.twig +19 -0
  294. package/components/entrypoint-entry-point-style-v3/entry-point-style-v3.twig +11 -0
  295. package/components/fields-acf-wysiwyg-options-v3/acf-wysiwyg-options-v3.php +221 -0
  296. package/components/fields-animations-v3/animations-v3.scss +127 -0
  297. package/components/fields-archive-pages-v3/group_635e777ce46d4.json +150 -0
  298. package/components/fields-cocktail-info-v3/group_64c29b7f188ca.json +686 -0
  299. package/components/fields-content-container-settings-v3/content-container-settings-v3.scss +213 -0
  300. package/components/fields-content-container-v3/content-container-v3.js +96 -0
  301. package/components/fields-content-container-v3/content-container-v3.scss +31 -0
  302. package/components/fields-core-critical-v3/core-critical-v3.scss +13 -0
  303. package/components/fields-core-css-modules-v3/core-css-modules-v3.scss +13 -0
  304. package/components/fields-core-css-sizing-vars-v3/core-css-sizing-vars-v3.scss +125 -0
  305. package/components/fields-core-cta-v3/core-cta-v3.scss +276 -0
  306. package/components/fields-core-functions-v3/core-functions-v3.scss +30 -0
  307. package/components/fields-core-generic-v3/core-generic-v3.scss +299 -0
  308. package/components/fields-core-mixins-v3/core-mixins-v3.scss +744 -0
  309. package/components/fields-core-root-variables-v3/core-root-variables-v3.scss +47 -0
  310. package/components/fields-core-typography-mixins-v3/core-typography-mixins-v3.scss +1080 -0
  311. package/components/fields-core-typography-v3/core-typography-v3.scss +457 -0
  312. package/components/fields-core-wordpress-block-editor-preview-v3/core-wordpress-block-editor-preview-v3.js +270 -0
  313. package/components/fields-core-wordpress-block-editor-preview-v3/core-wordpress-block-editor-preview-v3.scss +106 -0
  314. package/components/fields-drink-responsibly-notice-v3/group_68751257883ad.json +266 -0
  315. package/components/fields-dynamic-critical-css-v3/group_65abcd463e8d0.json +126 -0
  316. package/components/fields-e-shop-settings-v3/e-shop-settings-v3.twig +87 -0
  317. package/components/fields-e-shop-settings-v3/group_650b24b4e623d.json +803 -0
  318. package/components/fields-global-preload-v3/group_65e0bd35e781b.json +289 -0
  319. package/components/fields-image-management-service-v3/group_677813165b633.json +149 -0
  320. package/components/fields-ingredients-list/group_6900f19dadebf.json +225 -0
  321. package/components/fields-modal-popup-content-v3/group_689876f1ee3fc.json +403 -0
  322. package/components/fields-modal-popup-content-v3/modal-popup-content-v3.twig +18 -0
  323. package/components/fields-post-info-v3/group_6867bbe167dd2.json +1089 -0
  324. package/components/fields-product-info-v3/group_689098dd3a131.json +721 -0
  325. package/components/fields-upload-filesize-limit-v3/group_659d259760a1d.json +56 -0
  326. package/components/fields-video-management-services-v3/group_67b4cac05cb30.json +146 -0
  327. package/components/webc-counter-display/counter-display.css +2 -0
  328. package/components/webc-counter-display/counter-display.html +5 -0
  329. package/components/webc-counter-display/counter-display.js +30 -0
  330. package/components/webc-counter-display/index.html +30 -0
  331. package/components/webc-layout-container/index.html +108 -0
  332. package/components/webc-layout-container/layout-container.css +9 -0
  333. package/components/webc-layout-container/layout-container.html +5 -0
  334. package/components/webc-layout-container/layout-container.js +22 -0
  335. package/components/webc-loadmore-trigger/index.html +30 -0
  336. package/components/webc-loadmore-trigger/loadmore-trigger.css +20 -0
  337. package/components/webc-loadmore-trigger/loadmore-trigger.html +6 -0
  338. package/components/webc-loadmore-trigger/loadmore-trigger.js +34 -0
  339. package/components/webc-post-carousel-display-module/index.html +30 -0
  340. package/components/webc-post-carousel-display-module/post-carousel-display-module.css +36 -0
  341. package/components/webc-post-carousel-display-module/post-carousel-display-module.html +5 -0
  342. package/components/webc-post-carousel-display-module/post-carousel-display-module.js +48 -0
  343. package/components/webc-post-filter-module/dev-content/amber.webp +0 -0
  344. package/components/webc-post-filter-module/dev-content/bluey.webp +0 -0
  345. package/components/webc-post-filter-module/dev-content/chucky-vanille.webp +0 -0
  346. package/components/webc-post-filter-module/dev-content/dev-content.js +347 -0
  347. package/components/webc-post-filter-module/dev-content/dev-contentlocal.js +362 -0
  348. package/components/webc-post-filter-module/dev-content/fat-gigio-basket-life.webp +0 -0
  349. package/components/webc-post-filter-module/dev-content/fat-gigio-kitten.webp +0 -0
  350. package/components/webc-post-filter-module/dev-content/fat-gigio-sleepy.webp +0 -0
  351. package/components/webc-post-filter-module/dev-content/kai-lounging.webp +0 -0
  352. package/components/webc-post-filter-module/dev-content/kai-selfie.webp +0 -0
  353. package/components/webc-post-filter-module/dev-content/kai.webp +0 -0
  354. package/components/webc-post-filter-module/dev-content/lulu-mad.webp +0 -0
  355. package/components/webc-post-filter-module/dev-content/lulu-serious.webp +0 -0
  356. package/components/webc-post-filter-module/dev-content/martha-on-the-mat.webp +0 -0
  357. package/components/webc-post-filter-module/dev-content/max-on-the-mat.webp +0 -0
  358. package/components/webc-post-filter-module/dev-content/mephy-dreams-of-mice.webp +0 -0
  359. package/components/webc-post-filter-module/dev-content/mr-business-doing-work.webp +0 -0
  360. package/components/webc-post-filter-module/dev-content/mr-business-on-top.webp +0 -0
  361. package/components/webc-post-filter-module/dev-content/peanut-keeping-an-eye.webp +0 -0
  362. package/components/webc-post-filter-module/dev-content/pete-at-work.webp +0 -0
  363. package/components/webc-post-filter-module/dev-content/pete-bath.webp +0 -0
  364. package/components/webc-post-filter-module/dev-content/pete-dinosaur.webp +0 -0
  365. package/components/webc-post-filter-module/dev-content/pete-lawn.webp +0 -0
  366. package/components/webc-post-filter-module/dev-content/pete-snacks.webp +0 -0
  367. package/components/webc-post-filter-module/dev-content/ramses-kitten.webp +0 -0
  368. package/components/webc-post-filter-module/dev-content/ramses-school-day.webp +0 -0
  369. package/components/webc-post-filter-module/dev-content/ramses-tired.webp +0 -0
  370. package/components/webc-post-filter-module/dev-content/remy-garden-contemplation.webp +0 -0
  371. package/components/webc-post-filter-module/dev-content/sky-field.webp +0 -0
  372. package/components/webc-post-filter-module/dev-content/sky-luxury-2.webp +0 -0
  373. package/components/webc-post-filter-module/dev-content/sky-luxury.webp +0 -0
  374. package/components/webc-post-filter-module/dev-content/sky-puppy-good-dog.webp +0 -0
  375. package/components/webc-post-filter-module/dev-content/sky-puppy-pose.webp +0 -0
  376. package/components/webc-post-filter-module/dev-content/sky-security.webp +0 -0
  377. package/components/webc-post-filter-module/dev-content/vanille-asleep.webp +0 -0
  378. package/components/webc-post-filter-module/dev-content/vanille-bass.webp +0 -0
  379. package/components/webc-post-filter-module/dev-content/vanille-party.webp +0 -0
  380. package/components/webc-post-filter-module/dev-content/vanille-puppy-eyes.webp +0 -0
  381. package/components/webc-post-filter-module/dev-content/vanille-puppy.webp +0 -0
  382. package/components/webc-post-filter-module/index.html +30 -0
  383. package/components/webc-post-filter-module/post-filter-module.css +59 -0
  384. package/components/webc-post-filter-module/post-filter-module.html +13 -0
  385. package/components/webc-post-filter-module/post-filter-module.js +359 -0
  386. package/components/webc-post-filter-module-no-group/index.html +30 -0
  387. package/components/webc-post-filter-module-no-group/post-filter-module-no-group.css +59 -0
  388. package/components/webc-post-filter-module-no-group/post-filter-module-no-group.html +13 -0
  389. package/components/webc-post-filter-module-no-group/post-filter-module-no-group.js +312 -0
  390. package/components/webc-post-grid-display-module/index.html +30 -0
  391. package/components/webc-post-grid-display-module/post-grid-display-module.css +42 -0
  392. package/components/webc-post-grid-display-module/post-grid-display-module.html +6 -0
  393. package/components/webc-post-grid-display-module/post-grid-display-module.js +48 -0
  394. package/components/webc-ptfg-9000/index.html +108 -0
  395. package/components/webc-ptfg-9000/ptfg-9000.css +14 -0
  396. package/components/webc-ptfg-9000/ptfg-9000.html +1 -0
  397. package/components/webc-ptfg-9000/ptfg-9000.js +42 -0
  398. package/components/webc-responsive-image/index.html +108 -0
  399. package/components/webc-responsive-image/layout-container.css +9 -0
  400. package/components/webc-responsive-image/layout-container.js +22 -0
  401. package/components/webc-responsive-image/responsive-image.html +15 -0
  402. package/components/webc-slot-test/slot-test.html +25 -0
  403. package/components/webc-text-input-trigger/index.html +30 -0
  404. package/components/webc-text-input-trigger/text-input-trigger.css +6 -0
  405. package/components/webc-text-input-trigger/text-input-trigger.html +4 -0
  406. package/components/webc-text-input-trigger/text-input-trigger.js +33 -0
  407. package/components/webc-toggle-trigger/index.html +30 -0
  408. package/components/webc-toggle-trigger/toggle-trigger.css +13 -0
  409. package/components/webc-toggle-trigger/toggle-trigger.html +8 -0
  410. package/components/webc-toggle-trigger/toggle-trigger.js +53 -0
  411. package/createDynamicBlockScss-v3.js +25 -0
  412. package/createJsAssets-v3.js +35 -0
  413. package/createJsAssets.js +31 -0
  414. package/createNewBlock.js +131 -0
  415. package/createNewChildBlock2.js +140 -0
  416. package/createPreviewScss.js +35 -0
  417. package/datalayer-tools.mjs +2 -0
  418. package/duplicateBlock.js +123 -0
  419. package/esbuild.mjs +87 -0
  420. package/exportAllBlocks.js +147 -0
  421. package/exportBlock.js +109 -0
  422. package/exportChildBlock.js +102 -0
  423. package/exportCustomCachesToLibrary.js +76 -0
  424. package/exportEntrypointToLibrary.js +79 -0
  425. package/exportImagesToLibrary.js +68 -0
  426. package/exportSEOExtrasToLibrary.js +76 -0
  427. package/exportToLibrary.js +551 -0
  428. package/importBlock.js +92 -0
  429. package/importChildBlock.js +76 -0
  430. package/install-component.js +204 -0
  431. package/list-components.js +9 -0
  432. package/new-block-templates/template-acf-pattern.js +30 -0
  433. package/new-block-templates/template-block-json.js +37 -0
  434. package/new-block-templates/template-default.js +24 -0
  435. package/new-block-templates/template-js-blank.js +12 -0
  436. package/new-block-templates/template-scss-blank.js +6 -0
  437. package/no-audio.vtt +4 -0
  438. package/onion-loader-dev.js +260 -0
  439. package/onion-loader-local.js +222 -0
  440. package/package.json +1 -9
  441. package/public/.gitkeep +0 -0
  442. package/public/assetList.mjs +3 -0
  443. package/public/block-accent-image-v3/accent-image-v3.css +2 -0
  444. package/public/block-accent-image-v3/accent-image-v3.js +7 -0
  445. package/public/block-accordion-v3/accordion-v3.css +380 -0
  446. package/public/block-accordion-v3/accordion-v3.js +117 -0
  447. package/public/block-back-to-top-button-v3/back-to-top-button-v3.css +64 -0
  448. package/public/block-back-to-top-button-v3/back-to-top-button-v3.js +12 -0
  449. package/public/block-betterreviews-display-v3/betterreviews-display-v3.css +95 -0
  450. package/public/block-betterreviews-display-v3/betterreviews-display-v3.js +7 -0
  451. package/public/block-block-interactions-v3/block-interactions-v3.css +36 -0
  452. package/public/block-block-interactions-v3/block-interactions-v3.js +44 -0
  453. package/public/block-carousel-multi-layout-v3/carousel-multi-layout-v3.css +187 -0
  454. package/public/block-carousel-multi-layout-v3/carousel-multi-layout-v3.js +185 -0
  455. package/public/block-cocktail-recipe-v3/cocktail-recipe-v3.css +268 -0
  456. package/public/block-cocktail-recipe-v3/cocktail-recipe-v3.js +95 -0
  457. package/public/block-cover-link-v3/cover-link-v3.css +8 -0
  458. package/public/block-cover-link-v3/cover-link-v3.js +7 -0
  459. package/public/block-divider-v3/divider-v3.css +74 -0
  460. package/public/block-divider-v3/divider-v3.js +7 -0
  461. package/public/block-featured-image-gallery-v3/featured-image-gallery-v3.css +98 -0
  462. package/public/block-featured-image-gallery-v3/featured-image-gallery-v3.js +44 -0
  463. package/public/block-form-selection-v3/form-selection-v3.css +31 -0
  464. package/public/block-form-selection-v3/form-selection-v3.js +61 -0
  465. package/public/block-gradient-layer-v3/gradient-layer-v3.css +45 -0
  466. package/public/block-gradient-layer-v3/gradient-layer-v3.js +7 -0
  467. package/public/block-group-container-v3/group-container-v3.css +303 -0
  468. package/public/block-group-container-v3/group-container-v3.js +7 -0
  469. package/public/block-lottie-content-v3/lottie-content-v3.css +0 -0
  470. package/public/block-lottie-content-v3/lottie-content-v3.js +25 -0
  471. package/public/block-market-selector-v3/market-selector-v3.css +136 -0
  472. package/public/block-market-selector-v3/market-selector-v3.js +7 -0
  473. package/public/block-modal-form-v3/modal-form-v3.css +0 -0
  474. package/public/block-modal-form-v3/modal-form-v3.js +48 -0
  475. package/public/block-nav-menu-container-v3/nav-menu-container-v3.css +3 -0
  476. package/public/block-nav-menu-container-v3/nav-menu-container-v3.js +7 -0
  477. package/public/block-post-info-v3/post-info-v3.css +1148 -0
  478. package/public/block-post-info-v3/post-info-v3.js +7 -0
  479. package/public/block-post-type-filter-grid-v3/post-type-filter-grid-v3.css +873 -0
  480. package/public/block-post-type-filter-grid-v3/post-type-filter-grid-v3.js +13 -0
  481. package/public/block-product-info-v3/product-info-v3.css +846 -0
  482. package/public/block-product-info-v3/product-info-v3.js +7 -0
  483. package/public/block-raw-html-v3/raw-html-v3.css +0 -0
  484. package/public/block-raw-html-v3/raw-html-v3.js +7 -0
  485. package/public/block-responsive-table-v3/responsive-table-v3.css +50 -0
  486. package/public/block-responsive-table-v3/responsive-table-v3.js +7 -0
  487. package/public/block-scrolling-banner-v3/scrolling-banner-v3.css +93 -0
  488. package/public/block-scrolling-banner-v3/scrolling-banner-v3.js +118 -0
  489. package/public/block-section-separator-v3/section-separator-v3.css +43 -0
  490. package/public/block-section-separator-v3/section-separator-v3.js +7 -0
  491. package/public/block-single-column-container-v3/single-column-container-v3.css +14 -0
  492. package/public/block-single-column-container-v3/single-column-container-v3.js +7 -0
  493. package/public/block-single-responsive-image-v3/single-responsive-image-v3.css +61 -0
  494. package/public/block-single-responsive-image-v3/single-responsive-image-v3.js +7 -0
  495. package/public/block-site-copyright-notice-v3/site-copyright-notice-v3.css +20 -0
  496. package/public/block-site-copyright-notice-v3/site-copyright-notice-v3.js +44 -0
  497. package/public/block-site-logo-container-v3/site-logo-container-v3.css +18 -0
  498. package/public/block-site-logo-container-v3/site-logo-container-v3.js +7 -0
  499. package/public/block-site-title-and-tagline-v3/site-title-and-tagline-v3.css +12 -0
  500. package/public/block-site-title-and-tagline-v3/site-title-and-tagline-v3.js +7 -0
  501. package/public/block-smash-balloon-social-media-v3/smash-balloon-social-media-v3.css +25 -0
  502. package/public/block-smash-balloon-social-media-v3/smash-balloon-social-media-v3.js +8 -0
  503. package/public/block-social-networks-v3/social-networks-v3.css +74 -0
  504. package/public/block-social-networks-v3/social-networks-v3.js +7 -0
  505. package/public/block-spacer-v3/spacer-v3.css +16 -0
  506. package/public/block-spacer-v3/spacer-v3.js +2 -0
  507. package/public/block-spotify-embed-v3/spotify-embed-v3.css +7 -0
  508. package/public/block-spotify-embed-v3/spotify-embed-v3.js +7 -0
  509. package/public/block-standard-content-v3/standard-content-v3.css +423 -0
  510. package/public/block-standard-content-v3/standard-content-v3.js +7 -0
  511. package/public/block-sticky-buy-cta-v3/sticky-buy-cta-v3.css +0 -0
  512. package/public/block-sticky-buy-cta-v3/sticky-buy-cta-v3.js +7 -0
  513. package/public/block-sub-group-container-v3/sub-group-container-v3.css +288 -0
  514. package/public/block-sub-group-container-v3/sub-group-container-v3.js +2 -0
  515. package/public/block-video-content-v3/video-content-v3.css +102 -0
  516. package/public/block-video-content-v3/video-content-v3.js +11 -0
  517. package/public/dynamicBlockScss-v3.css +6392 -0
  518. package/public/dynamicBlockScss-v3.scss +37 -0
  519. package/public/jsAssets.mjs +4 -0
  520. package/public/publicBundleBase.css +4742 -0
  521. package/public/publicBundleBase.scss +11 -0
  522. package/removeBlock.js +124 -0
  523. package/update-all-components.js +96 -0
  524. package/update-component.js +538 -0
  525. package/update-template.js +538 -0
@@ -0,0 +1,140 @@
1
+ import 'dotenv/config';
2
+ import fs from 'node:fs';
3
+ import {globSync} from 'glob';
4
+ import {exec} from 'node:child_process';
5
+ import path from 'node:path';
6
+ import {fileURLToPath} from 'node:url';
7
+ import yaml from 'js-yaml';
8
+ import axios from 'axios';
9
+ import acfTemplate from './new-block-templates/template-acf-pattern.js';
10
+ import acfTemplateScss from './new-block-templates/template-scss-blank.js';
11
+ import acfTemplateJs from './new-block-templates/template-js-blank.js';
12
+
13
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
14
+ const themePath = process.env.THEME_PATH || 'web/wp-content/themes/global-theme';
15
+
16
+ const yamlData = yaml.load(fs.readFileSync('../../../../.lando.yml', 'utf8'));
17
+ const siteName = yamlData.config.site;
18
+ const parentURL = process.env.DESIGN_MULTIDEV
19
+ ? `${process.env.DESIGN_MULTIDEV}/wp-admin/admin-ajax.php`
20
+ : `http://${siteName}.lndo.site/wp-admin/admin-ajax.php`;
21
+
22
+ const srcPathJs = path.join(__dirname, 'components');
23
+ const srcPathScss = path.join(__dirname, 'components');
24
+
25
+ let projectName = 'Global Theme';
26
+ const projectJson = JSON.parse(fs.readFileSync('./package.json', 'utf8'));
27
+ if (projectJson) {
28
+ projectName = projectJson.name;
29
+ if (projectName.slice(0, 3) === 'the') {
30
+ const prefix =
31
+ projectName.slice(0, 3).charAt(0).toUpperCase() +
32
+ projectName.slice(0, 3).slice(1);
33
+ projectName = `${prefix} ${
34
+ projectName.slice(3).charAt(0).toUpperCase() +
35
+ projectName.slice(3).slice(1)
36
+ }`;
37
+ } else {
38
+ projectName = `${
39
+ projectName.charAt(0).toUpperCase() + projectName.slice(1)
40
+ }`;
41
+ }
42
+ }
43
+
44
+ const dynamicEntryPoints = globSync(`${themePath}/assets/js/blocks/*.js`).map(
45
+ (filePath) => {
46
+ const assetKey = filePath
47
+ .replace('assets/js/blocks/', '')
48
+ .replace('.js', '');
49
+ return assetKey;
50
+ }
51
+ );
52
+ const newBlockName = process.argv[2]?.toLowerCase();
53
+ const patternID = process.argv[3];
54
+
55
+ if (!newBlockName) {
56
+ console.log('Did you forget to give the new block a name?');
57
+ process.exit(1);
58
+ }
59
+ if (!patternID) {
60
+ console.log('Did you forget to supply the pattern ID?');
61
+ process.exit(1);
62
+ }
63
+
64
+ fs.writeFileSync(
65
+ `${themePath}/inc/acf-blocks/${newBlockName}.php`,
66
+ acfTemplate(newBlockName, projectName)
67
+ );
68
+
69
+ const blockName = 'group-container-v3';
70
+
71
+ const fullPath = path.join(srcPathJs, `block-${blockName}`, `${blockName}.js`);
72
+
73
+ const jsdir = 'Assets/js/blocks/';
74
+ const scssdir = 'Assets/scss/blocks/';
75
+
76
+ if (!fs.existsSync(`${jsdir}/${newBlockName}.js`)) {
77
+ fs.writeFileSync(
78
+ `${jsdir}/${newBlockName}.js`,
79
+ acfTemplateJs(newBlockName)
80
+ );
81
+ console.log(`👑👑\x1b[32m Successfully created the js file! 👑👑`);
82
+ }
83
+
84
+ if (!fs.existsSync(`${scssdir}/${newBlockName}.scss`)) {
85
+ fs.writeFileSync(
86
+ `${scssdir}/${newBlockName}.scss`,
87
+ acfTemplateScss(newBlockName)
88
+ );
89
+ console.log(`👑👑\x1b[32m Successfully created the scss file! 👑👑`);
90
+ }
91
+
92
+ const data = new FormData();
93
+ data.append('action', 'get_pattern_block');
94
+ data.append('postID', patternID);
95
+
96
+ const headers = {
97
+ headers: {
98
+ 'user-agent':
99
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'
100
+ }
101
+ };
102
+
103
+ axios.post(parentURL, data, headers).then(function (response) {
104
+ fs.writeFileSync(
105
+ `${themePath}/views/blocks/${newBlockName}.twig`,
106
+ response.data.html
107
+ );
108
+ fs.readFile(
109
+ `${themePath}/views/blocks/${newBlockName}.twig`,
110
+ 'utf-8',
111
+ (err, contents) => {
112
+ if (err) throw err;
113
+ const regEx = RegExp(
114
+ String.raw`(${blockName.replaceAll(/( |-)/g, '')})`,
115
+ 'gi'
116
+ );
117
+
118
+ const replaced = contents
119
+ .replaceAll(
120
+ regEx,
121
+ `${newBlockName.toLowerCase().replaceAll(/( |-)/g, '')}`
122
+ )
123
+ .replace(/(?<!sub-)group-container-v3/g, `${newBlockName}`);
124
+ fs.writeFile(
125
+ `${themePath}/views/blocks/${newBlockName}.twig`,
126
+ replaced,
127
+ 'utf-8',
128
+ function (err) {
129
+ if (err) throw err;
130
+ console.log(
131
+ `👑👑\x1b[32m Successfully did searcha and replace on the twig file! 👑👑`
132
+ );
133
+ console.log(
134
+ `👑 👑 👑 Hurrah! You made a new child block called ${newBlockName} 👑 👑 👑`
135
+ );
136
+ }
137
+ );
138
+ }
139
+ );
140
+ });
@@ -0,0 +1,35 @@
1
+ import 'dotenv/config';
2
+ import fs from 'node:fs';
3
+ import {globSync} from 'glob';
4
+ import path from 'node:path';
5
+
6
+ const themePath = process.env.THEME_PATH || 'web/wp-content/themes/global-theme';
7
+
8
+ // Create the directory path for the target file
9
+ const scssModulePath = path.join(themePath, 'assets/scss/modules');
10
+ const scssFilePath = path.join(scssModulePath, 'dynamicBlocksPreview.scss');
11
+
12
+ // Create directories if they don't exist
13
+ fs.mkdirSync(scssModulePath, {recursive: true});
14
+
15
+ // Write the initial content to the target file
16
+ fs.writeFileSync(
17
+ scssFilePath,
18
+ '// This file is auto-generated. To include assets for the lazyloader, just add your .scss file to Assets/scss/blocks/ and it will be included here.\n'
19
+ );
20
+
21
+ const dynamicEntryPoints = globSync(
22
+ `${themePath}/assets/scss/blocks/*.scss`
23
+ ).map((filePath) => {
24
+ const assetPath = filePath.replace(
25
+ 'assets/scss/blocks/',
26
+ 'Assets/scss/blocks/'
27
+ );
28
+ return assetPath;
29
+ });
30
+
31
+ const stream = fs.createWriteStream(scssFilePath, {flags: 'a'});
32
+ dynamicEntryPoints.forEach((entry) => {
33
+ stream.write(`@use '${entry}';\n`);
34
+ });
35
+ stream.end();
@@ -0,0 +1,2 @@
1
+ //This Module is WIP
2
+ export function exampleFunction() {}
@@ -0,0 +1,123 @@
1
+ import 'dotenv/config';
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+ import {globSync} from 'glob';
5
+ import yargs from 'yargs/yargs';
6
+ const templateOptions = yargs(process.argv.slice(2)).argv._;
7
+ const themePath =
8
+ process.env.THEME_PATH || 'web/wp-content/themes/global-theme';
9
+ const srcPathJs = `${themePath}/assets/js/blocks`;
10
+ const srcPathScss = `${themePath}/assets/scss/blocks`;
11
+ const srcPathTwig = `${themePath}/views/blocks`;
12
+ const srcPathBlockJson = `${themePath}/inc/acf-blocks`;
13
+ const newName = templateOptions[1];
14
+
15
+ const exisitingBlockNames = [
16
+ ...globSync(`${themePath}/assets/js/blocks/*.js`).map((p) =>
17
+ path.basename(p, '.js')
18
+ ),
19
+ ...globSync(`${themePath}/inc/acf-blocks/*/block.json`).map((p) =>
20
+ path.basename(path.dirname(p))
21
+ )
22
+ ];
23
+
24
+ const blockName = templateOptions[0];
25
+
26
+ if (!blockName) {
27
+ console.log(
28
+ "\x1b[33m 🤔🤔 Hmmm...You dont't seem to have chosen a block to duplicate. 🤔🤔 \x1b[0m"
29
+ );
30
+ process.exit(1);
31
+ }
32
+ if (!newName) {
33
+ console.log(
34
+ '\x1b[33m 🤓🤓 Nearly there! Unfortunately you forgot to choose a new name for your duplicate block. 🤓🤓 \x1b[0m'
35
+ );
36
+ process.exit(1);
37
+ }
38
+
39
+ if (blockName === newName) {
40
+ console.log(
41
+ '\x1b[33m Oh no! 😱😱😱 Your new block name cannot be the same as the original block name! \x1b[0m'
42
+ );
43
+ process.exit(1);
44
+ }
45
+
46
+ if (exisitingBlockNames.includes(blockName)) {
47
+ if (fs.existsSync(`${srcPathJs}/${blockName}.js`)) {
48
+ const contents = fs.readFileSync(
49
+ `${srcPathJs}/${blockName}.js`,
50
+ 'utf-8'
51
+ );
52
+ const regEx = RegExp(
53
+ String.raw`(${blockName.replaceAll(/( |-)/g, '')})`,
54
+ 'gi'
55
+ );
56
+ const replaced = contents
57
+ .replaceAll(
58
+ regEx,
59
+ `${newName.toLowerCase().replaceAll(/( |-)/g, '')}`
60
+ )
61
+ .replaceAll(`blocks/${blockName}`, `blocks/${newName}`);
62
+ fs.writeFileSync(`${srcPathJs}/${newName}.js`, replaced, 'utf-8');
63
+ console.log(`👑👑\x1b[32m Successfully duplicated the js file! 👑👑`);
64
+ }
65
+ if (fs.existsSync(`${srcPathScss}/${blockName}.scss`)) {
66
+ const contents = fs.readFileSync(
67
+ `${srcPathScss}/${blockName}.scss`,
68
+ 'utf-8'
69
+ );
70
+ const replaced = contents.replaceAll(`${blockName}`, `${newName}`);
71
+ fs.writeFileSync(`${srcPathScss}/${newName}.scss`, replaced, 'utf-8');
72
+ console.log(`👑👑\x1b[32m Successfully duplicated the scss file! 👑👑`);
73
+ }
74
+ if (fs.existsSync(`${srcPathScss}/${blockName}-inline.scss`)) {
75
+ const contents = fs.readFileSync(
76
+ `${srcPathScss}/${blockName}-inline.scss`,
77
+ 'utf-8'
78
+ );
79
+ const replaced = contents.replaceAll(`${blockName}`, `${newName}`);
80
+ fs.writeFileSync(
81
+ `${srcPathScss}/${newName}-inline.scss`,
82
+ replaced,
83
+ 'utf-8'
84
+ );
85
+ console.log(
86
+ `👑👑\x1b[32m Successfully duplicated the inline scss file! 👑👑`
87
+ );
88
+ }
89
+ if (fs.existsSync(`${srcPathTwig}/${blockName}.twig`)) {
90
+ const contents = fs.readFileSync(
91
+ `${srcPathTwig}/${blockName}.twig`,
92
+ 'utf-8'
93
+ );
94
+ const replaced = contents.replaceAll(blockName, newName);
95
+ fs.writeFileSync(`${srcPathTwig}/${newName}.twig`, replaced, 'utf-8');
96
+ console.log(`👑👑\x1b[32m Successfully duplicated the twig file! 👑👑`);
97
+ }
98
+ if (fs.existsSync(`${srcPathBlockJson}/${blockName}/block.json`)) {
99
+ const contents = fs.readFileSync(
100
+ `${srcPathBlockJson}/${blockName}/block.json`,
101
+ 'utf-8'
102
+ );
103
+ const data = JSON.parse(contents);
104
+ data.name = `acf/${newName}`;
105
+ data.title = newName
106
+ .split('-')
107
+ .map((w) => w.charAt(0).toUpperCase() + w.slice(1))
108
+ .join(' ');
109
+ if (data.description) {
110
+ data.description = data.description.replaceAll(blockName, newName);
111
+ }
112
+ fs.mkdirSync(`${srcPathBlockJson}/${newName}`, {recursive: true});
113
+ fs.writeFileSync(
114
+ `${srcPathBlockJson}/${newName}/block.json`,
115
+ JSON.stringify(data, null, '\t'),
116
+ 'utf-8'
117
+ );
118
+ console.log(
119
+ `👑👑\x1b[32m Successfully duplicated the block.json file! 👑👑`
120
+ );
121
+ }
122
+ console.log(`\x1b[32m 🎉 Block '${newName}' created successfully! \x1b[0m`);
123
+ }
package/esbuild.mjs ADDED
@@ -0,0 +1,87 @@
1
+ import * as esbuild from "esbuild";
2
+ import { sassPlugin } from "esbuild-sass-plugin";
3
+ import assets from "./public/assetList.mjs";
4
+ import postcss from "postcss";
5
+ import autoprefixer from "autoprefixer";
6
+ import postcssPresetEnv from "postcss-preset-env";
7
+
8
+ const scssSources = assets.filter((a) => a.endsWith(".scss"));
9
+ const cssSources = assets.filter((a) => a.endsWith(".css"));
10
+ const jsSources = assets.filter((a) => /\.(?:js|mjs)$/.test(a));
11
+
12
+ function flattenPath(p) {
13
+ return p
14
+ .replace(/^\.\//, "")
15
+ .replace(/^public\//, "")
16
+ .replace(/^components\//, "");
17
+ }
18
+
19
+ const scssEntries = scssSources.reduce((acc, src) => {
20
+ acc[flattenPath(src).replace(/\.scss$/i, "")] = src;
21
+ return acc;
22
+ }, {});
23
+ const cssEntries = cssSources.reduce((acc, src) => {
24
+ acc[flattenPath(src).replace(/\.css$/i, "")] = src;
25
+ return acc;
26
+ }, {});
27
+ const jsEntries = jsSources.reduce((acc, src) => {
28
+ acc[flattenPath(src).replace(/\.(?:js|mjs)$/i, "")] = src;
29
+ return acc;
30
+ }, {});
31
+
32
+ await esbuild.build({
33
+ entryPoints: ["./public/publicBundleBase.scss"],
34
+ plugins: [
35
+ sassPlugin({
36
+ async transform(source) {
37
+ const { css } = await postcss([
38
+ autoprefixer,
39
+ postcssPresetEnv({ stage: 3 }),
40
+ ]).process(source);
41
+ return css;
42
+ },
43
+ }),
44
+ ],
45
+ bundle: false,
46
+ outdir: "./public",
47
+ });
48
+
49
+ await esbuild.build({
50
+ entryPoints: scssEntries,
51
+ plugins: [
52
+ sassPlugin({
53
+ async transform(source) {
54
+ const { css } = await postcss([
55
+ autoprefixer,
56
+ postcssPresetEnv({ stage: 3, from: "css" }),
57
+ ]).process(source);
58
+ return css;
59
+ },
60
+ }),
61
+ ],
62
+ bundle: false,
63
+ outdir: "./public",
64
+ });
65
+
66
+ await esbuild.build({
67
+ entryPoints: cssEntries,
68
+ plugins: [
69
+ sassPlugin({
70
+ async transform(source) {
71
+ const { css } = await postcss([
72
+ autoprefixer,
73
+ postcssPresetEnv({ stage: 3 }),
74
+ ]).process(source);
75
+ return css;
76
+ },
77
+ }),
78
+ ],
79
+ bundle: false,
80
+ outdir: "./public",
81
+ });
82
+
83
+ await esbuild.build({
84
+ entryPoints: jsEntries,
85
+ bundle: false,
86
+ outdir: "./public",
87
+ });
@@ -0,0 +1,147 @@
1
+ import 'dotenv/config';
2
+ import fs from 'node:fs';
3
+ import {globSync} from 'glob';
4
+ import yargs from 'yargs/yargs';
5
+ import path from 'node:path';
6
+ import {fileURLToPath} from 'node:url';
7
+ import compressing from 'compressing';
8
+
9
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
10
+ const templateOptions = yargs(process.argv.slice(2)).argv._;
11
+ const themePath =
12
+ process.env.THEME_PATH || 'web/wp-content/themes/global-theme';
13
+ const srcPathJs = `${themePath}/assets/js/blocks/`;
14
+ const srcPathScss = `${themePath}/assets/scss/blocks/`;
15
+ const srcPathTwig = `${themePath}/views/blocks/`;
16
+ const srcPathPhp = `${themePath}/inc/acf-blocks/`;
17
+ const srcPathVue = `${themePath}/assets/vue/blocks/`;
18
+ const destPath = path.join(__dirname, '../../../exported-blocks/');
19
+ const component_list_file = path.join(
20
+ __dirname,
21
+ '../../../project-components-list.json'
22
+ );
23
+ const destinationProject = templateOptions[0];
24
+ let blocks = [];
25
+
26
+ try {
27
+ blocks = JSON.parse(fs.readFileSync(component_list_file, 'utf8'));
28
+ } catch (e) {
29
+ console.error('Component list file error : ' + e);
30
+ process.exit(1);
31
+ }
32
+
33
+ const dynamicEntryPointsJs = globSync(`${themePath}/assets/js/blocks/*.js`).map(
34
+ (path) => {
35
+ const assetKey = path
36
+ .replace('assets/js/blocks/', '')
37
+ .replace('.js', '');
38
+ return assetKey;
39
+ }
40
+ );
41
+
42
+ const compressDone = (name) => {
43
+ if (!destinationProject) {
44
+ return;
45
+ }
46
+ fs.rmSync(`../../../exported-blocks/${name}`, {recursive: true});
47
+ if (fs.existsSync(`../${destinationProject}/exported-blocks/`)) {
48
+ fs.copyFileSync(
49
+ path.join(__dirname, `../../../exported-blocks/${name}.zip`),
50
+ path.join(
51
+ __dirname,
52
+ `.../../.././${destinationProject}/exported-blocks/${name}.zip`
53
+ )
54
+ );
55
+ } else {
56
+ console.log('the destination does not exist!');
57
+ }
58
+ };
59
+
60
+ function copyBlockJson(name) {
61
+ const existingAcfFiles = globSync(`${themePath}/acf-json/*.json`).map(
62
+ (path) => {
63
+ const assetKey = path.replace('assets/js/blocks/', '');
64
+ return assetKey;
65
+ }
66
+ );
67
+
68
+ existingAcfFiles.forEach((file, index) => {
69
+ let rawdata = fs.readFileSync(file);
70
+ let blockData = JSON.parse(rawdata);
71
+ const title = blockData.title
72
+ .replace('Block: ', '')
73
+ .replace(' - Library', '')
74
+ .replaceAll(' ', '-')
75
+ .toLowerCase();
76
+ if (title === name) {
77
+ const fileName = existingAcfFiles[index].replace(
78
+ `${themePath}/acf-json/`,
79
+ ''
80
+ );
81
+ fs.copyFileSync(
82
+ existingAcfFiles[index],
83
+ path.join(
84
+ __dirname,
85
+ `../../../exported-blocks/${name}/${fileName}`
86
+ )
87
+ );
88
+ return;
89
+ }
90
+ });
91
+ }
92
+
93
+ const handleError = (err) => console.error(err);
94
+ // const blockName = templateOptions[0];
95
+
96
+ blocks.block.forEach((blockName) => {
97
+ if (dynamicEntryPointsJs.includes(blockName)) {
98
+ const dir = path.join(
99
+ __dirname,
100
+ `../../../exported-blocks/${blockName}/`
101
+ );
102
+
103
+ if (!fs.existsSync(dir)) {
104
+ fs.mkdirSync(dir, {recursive: true});
105
+ fs.copyFileSync(
106
+ `${srcPathJs}${blockName}.js`,
107
+ `${dir}${blockName}.js`
108
+ );
109
+ fs.copyFileSync(
110
+ `${srcPathScss}${blockName}.scss`,
111
+ `${dir}${blockName}.scss`
112
+ );
113
+ fs.copyFileSync(
114
+ `${srcPathTwig}${blockName}.twig`,
115
+ `${dir}${blockName}.twig`
116
+ );
117
+ fs.copyFileSync(
118
+ `${srcPathPhp}${blockName}.php`,
119
+ `${dir}${blockName}.php`
120
+ );
121
+ if (fs.existsSync(`${srcPathVue}${blockName}.vue`)) {
122
+ fs.copyFileSync(
123
+ `${srcPathVue}${blockName}.vue`,
124
+ `${dir}${blockName}.vue`
125
+ );
126
+ }
127
+ copyBlockJson(blockName);
128
+ compressing.zip
129
+ .compressDir(
130
+ path.join(
131
+ __dirname,
132
+ `../../../exported-blocks/${blockName}`
133
+ ),
134
+ path.join(
135
+ __dirname,
136
+ `../../../exported-blocks/${blockName}.zip`
137
+ )
138
+ )
139
+ .then(compressDone(blockName))
140
+ .catch(handleError);
141
+ } else {
142
+ console.log(
143
+ `Did not export as there was a zip file called ${blockName} already present in exported-blocks folder`
144
+ );
145
+ }
146
+ }
147
+ });
package/exportBlock.js ADDED
@@ -0,0 +1,109 @@
1
+ import 'dotenv/config';
2
+ import fs from 'node:fs';
3
+ import {globSync} from 'glob';
4
+ import yargs from 'yargs/yargs';
5
+ import compressing from 'compressing';
6
+ const templateOptions = yargs(process.argv.slice(2)).argv._;
7
+ const themePath =
8
+ process.env.THEME_PATH || 'web/wp-content/themes/global-theme';
9
+ console.log('🚀 ~ themePath:', themePath);
10
+ const srcPathJs = `${themePath}/assets/js/blocks/`;
11
+ const srcPathScss = `${themePath}/assets/scss/blocks/`;
12
+ const srcPathTwig = `${themePath}/views/blocks/`;
13
+ const srcPathPhp = `${themePath}/inc/acf-blocks/`;
14
+ const srcPathVue = `${themePath}/assets/vue/blocks/`;
15
+ const destPath = '../../../../exported-blocks/';
16
+ const destinationProject = templateOptions[1];
17
+
18
+ const dynamicEntryPointsJs = globSync(`${themePath}/assets/js/blocks/*.js`).map(
19
+ (path) => {
20
+ const assetKey = path
21
+ .replace('assets/js/blocks/', '')
22
+ .replace('.js', '');
23
+ return assetKey;
24
+ }
25
+ );
26
+
27
+ const compressDone = () => {
28
+ fs.rmSync(`../../../../exported-blocks/${blockName}`, {recursive: true});
29
+ if (!destinationProject) {
30
+ return;
31
+ }
32
+ if (fs.existsSync(`../${destinationProject}/exported-blocks/`)) {
33
+ fs.copyFileSync(
34
+ `../../../../exported-blocks/${blockName}.zip`,
35
+ `.../../../.././${destinationProject}/exported-blocks/${blockName}.zip`
36
+ );
37
+ } else {
38
+ console.log('the destination does not exist!');
39
+ }
40
+ };
41
+
42
+ function copyBlockJson(name) {
43
+ const existingAcfFiles = globSync(`${themePath}/acf-json/*.json`).map(
44
+ (path) => {
45
+ const assetKey = path.replace('assets/js/blocks/', '');
46
+ return assetKey;
47
+ }
48
+ );
49
+
50
+ existingAcfFiles.forEach((file, index) => {
51
+ let rawdata = fs.readFileSync(file);
52
+ let blockData = JSON.parse(rawdata);
53
+ const title = blockData.title
54
+ .replace('Block: ', '')
55
+ .replace(' - Library', '')
56
+ .replaceAll(' ', '-')
57
+ .toLowerCase();
58
+ if (title === blockName) {
59
+ const fileName = existingAcfFiles[index].replace(`acf-json/`, '');
60
+ fs.copyFileSync(
61
+ existingAcfFiles[index],
62
+ `../../../../exported-blocks/${blockName}/${fileName}`
63
+ );
64
+ return;
65
+ }
66
+ });
67
+ }
68
+
69
+ const handleError = (err) => console.error(err);
70
+ const blockName = templateOptions[0];
71
+
72
+ if (dynamicEntryPointsJs.includes(blockName)) {
73
+ const dir = `${destPath}${blockName}/`;
74
+
75
+ if (!fs.existsSync(dir)) {
76
+ fs.mkdirSync(dir);
77
+ fs.copyFileSync(`${srcPathJs}${blockName}.js`, `${dir}${blockName}.js`);
78
+ fs.copyFileSync(
79
+ `${srcPathScss}${blockName}.scss`,
80
+ `${dir}${blockName}.scss`
81
+ );
82
+ fs.copyFileSync(
83
+ `${srcPathTwig}${blockName}.twig`,
84
+ `${dir}${blockName}.twig`
85
+ );
86
+ fs.copyFileSync(
87
+ `${srcPathPhp}${blockName}.php`,
88
+ `${dir}${blockName}.php`
89
+ );
90
+ if (fs.existsSync(`${srcPathVue}${blockName}.vue`)) {
91
+ fs.copyFileSync(
92
+ `${srcPathVue}${blockName}.vue`,
93
+ `${dir}${blockName}.vue`
94
+ );
95
+ }
96
+ copyBlockJson(blockName);
97
+ compressing.zip
98
+ .compressDir(
99
+ `../../../../exported-blocks/${blockName}`,
100
+ `../../../../exported-blocks/${blockName}.zip`
101
+ )
102
+ .then(compressDone)
103
+ .catch(handleError);
104
+ } else {
105
+ console.log(
106
+ `Did not export as there was a zip file called ${blockName} already present in exported-blocks folder`
107
+ );
108
+ }
109
+ }